ARG 또는 ENV에 사용된 비밀
ARG 또는 ENV에 사용된 비밀 (SecretsUsedInArgOrEnv)
빌드 체크 규칙 중 하나로, ARG나 ENV 지시어에 잠재적으로 민감한 데이터를 넣은 경우를 알려줘요. 이 값들은 최종 이미지에 남기 때문에 보안상 위험해요. 대신 시크릿 마운트를 사용해야 합니다.
출처: 문서
본문
로컬 개발 중에는 실행 중인 프로세스에 환경 변수로 시크릿을 전달하는 게 흔하지만, Dockerfile에서 ENV나 ARG로 시크릿을 설정하는 것은 그 값이 최종 이미지에 남기 때문에 안전하지 않아요. 이 규칙은 ENV와 ARG 키가 민감한 데이터를 담고 있음을 나타내는 위반을 보고합니다.
ARG나 ENV 대신 시크릿 마운트를 사용해야 해요. 시크릿 마운트는 빌드에 시크릿을 안전한 방식으로 노출하고, 최종 이미지나 그 메타데이터에 남기지 않아요. 빌드 시크릿을 참고하세요.
출력 메시지
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 .
더 알아보기
- 빌드 체크 개요: 기타 빌드 체크 규칙을 살펴봐요.
- 구식 키=값 형식 (LegacyKeyValueFormat): ARG/ENV 형식 관련 규칙을 확인해요.