빌드 정책 사용

빌드 정책 사용 (Using build policies)

빌드 정책을 실제 빌드에 적용하는 방법을 다뤄요.

출처: 문서

본문

사전 요구사항 (Prerequisites)

Docker Desktop을 사용한다면 이러한 업데이트를 포함하는 버전인지 확인하세요.

정책 개발 워크플로 (Policy development workflow)

정책 작성은 반복적인 과정이에요:

  • 기본적인 deny-all(모두 거부) 정책으로 시작한다.
  • 디버그 로깅으로 빌드해 Dockerfile이 사용하는 입력을 확인한다.
  • 디버그 출력에 기반해 특정 소스를 허용하는 규칙을 추가한다.
  • 테스트하고 다듬는다.

Dockerfile의 입력 보기 (Viewing inputs from your Dockerfile)

Dockerfile이 참조하는 입력(이미지, Git 저장소, HTTP 다운로드)을 보려면 디버그 로깅으로 빌드해요:

$ docker buildx build --progress=plain --policy log-level=debug .

이미지 소스에 대한 예시 출력:

#1 0.010 checking policy for source docker-image://alpine:3.19 (linux/arm64)
#1 0.011 policy input: {
#1 0.011   "env": {
#1 0.011     "filename": "."
#1 0.011   },
#1 0.011   "image": {
#1 0.011     "ref": "docker.io/library/alpine:3.19",
#1 0.011     "host": "docker.io",
#1 0.011     "repo": "alpine",
#1 0.011     "tag": "3.19",
...

이 디버그 출력에서 정책이 검사할 수 있는 정확한 입력 구조를 알 수 있어요.

정책 적용 (Applying policies)

정책 파일을 Dockerfile 옆에 두면 자동으로 로드돼요. 구성 옵션과 수동 정책 로딩은 Advanced: Policy configuration 섹션을 참고해요.

Bake를 쓸 때는 policy 속성으로 정책을 지정할 수 있어요:

target "default" {
  dockerfile = "Dockerfile"
  policy = ["extra.rego"]
}

더 알아보기 (Learn more)