あなたはDocker画像を構築していますか?ここでは、Docker画像に敏感な情報を漏らすことを避ける方法があります


This tip is part of a complete 10 Docker image security best practices you should adopt. Thanks for reading and to who worked with me on it.


場合によっては、Dockerイメージ内のアプリケーションを構築するときに、プライベートなリポジトリからコードをプルするSSHプライベートキーなどの秘密を必要とするか、プライベートパッケージをインストールするトークンが必要です.
あなたがDocker中間の容器にそれらをコピーするならば、彼らが後で彼らを削除するとしても、彼らが加えられる層にキャッシュされます.これらのトークンとキーはDockerfileの外に保管しなければなりません.

多段階ビルドの使用
多段構築のためのDockerサポートを活用することによって、後に配置される中間のイメージ層の秘密を取って、管理して、敏感なデータがイメージ・ビルドに達するようにしません.
次の例のように、中間層に秘密を追加するコードを使用します
FROM: ubuntu as intermediate

WORKDIR /app
COPY secret/key /tmp/
RUN scp -i /tmp/key build@acme/files .

FROM ubuntu
WORKDIR /app
COPY --from=intermediate /app .

Docker秘密コマンドの使用
以下のようにキャッシュしないで機密ファイルをマウントするための秘密を管理するためのdockerのアルファ機能を使用します.
# syntax = docker/dockerfile:1.0-experimental
FROM alpine

# shows secret from default secret location
RUN --mount=type=secret,id=mysecret cat /run/secrets/mysecre

# shows secret from custom secret location
RUN --mount=type=secret,id=mysecret,dst=/foobar cat /foobar

再帰コピーに注意してください
ビルドされているイメージにファイルをコピーするときにも、気をつけなければなりません.
たとえば、次のコマンドは、ビルドコンテキストフォルダー全体を再帰的にDockerイメージにコピーします.
COPY . .
あなたのフォルダに敏感なファイルがある場合は、削除するか、.dockerignoreを使用して無視してください.
private.key
appsettings.json
オリジナルのブログ記事は、以下を参照してくださいスニペットのような高解像度印刷可能なPDFが含まれています.Check it out