Share feedback
Answers are generated based on the documentation.

SecretsUsedInArgOrEnv

出力

Potentially sensitive data should not be used in the ARG or ENV commands

(訳: 潜在的に漏洩リスクのある機密情報は ARG や ENV コマンド内に用いるべきではありません)

内容説明

実行プロセスに対して機密情報を受け渡す場合に、ローカル環境であれば環境変数を通じて実現するのは普通に行われることです。 しかし Dockerfile 内の ENVARG に機密情報を設定するのは安全ではありません。 なぜならこの情報は最終イメージに残り続けるからです。 本ルールは ENVARG のキーとして機密情報が含まれているという危険を警告するものです。

ARGENV に代わりとしては、シークレットマウントを用いるべきです。 これはビルド時の機密情報を受け渡す際に、セキュアな方法により実現するものです。 そして最終イメージやメタデータ内にその情報を残しません。 詳しくは 機密情報のビルド を参照してください。

❌ 不可: AWS 機密情報に ARG を用いています。

ARG AWS_ACCESS_KEY_ID
ARG AWS_SECRET_ACCESS_KEY
RUN aws s3 cp s3://my-bucket/file .

✅ Good: using secret mounts with environment variables.

RUN --mount=type=secret,id=aws_key_id,env=AWS_ACCESS_KEY_ID \
    --mount=type=secret,id=aws_secret_key,env=AWS_SECRET_ACCESS_KEY \
    aws s3 cp s3://my-bucket/file .

上の機密情報を用いてビルドするには以下のようにします。

$ docker buildx build \
    --secret id=aws_key_id,env=AWS_ACCESS_KEY_ID \
    --secret id=aws_secret_key,env=AWS_SECRET_ACCESS_KEY .