빌드 정책 사용
빌드 정책 사용 (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"]
}