ARG 또는 ENV에 사용된 비밀

ARG 또는 ENV에 사용된 비밀 (SecretsUsedInArgOrEnv)

빌드 체크 규칙 중 하나로, ARGENV 지시어에 잠재적으로 민감한 데이터를 넣은 경우를 알려줘요. 이 값들은 최종 이미지에 남기 때문에 보안상 위험해요. 대신 시크릿 마운트를 사용해야 합니다.

출처: 문서

본문

로컬 개발 중에는 실행 중인 프로세스에 환경 변수로 시크릿을 전달하는 게 흔하지만, Dockerfile에서 ENVARG로 시크릿을 설정하는 것은 그 값이 최종 이미지에 남기 때문에 안전하지 않아요. 이 규칙은 ENVARG 키가 민감한 데이터를 담고 있음을 나타내는 위반을 보고합니다.

ARGENV 대신 시크릿 마운트를 사용해야 해요. 시크릿 마운트는 빌드에 시크릿을 안전한 방식으로 노출하고, 최종 이미지나 그 메타데이터에 남기지 않아요. 빌드 시크릿을 참고하세요.

출력 메시지

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

예시

❌ 나쁜 예: ARG로 AWS 자격 증명을 전달해요.

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

✅ 좋은 예: 환경 변수와 함께 시크릿 마운트를 사용해요.

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 .

더 알아보기