정책으로 빌드 입력 검증하기
정책으로 빌드 입력 검증하기 (Validating build inputs with policies)
Docker로 빌드하는 것은 종종 원격 자원을 다운로드하는 것을 포함해요. Docker 이미지, Git 저장소, 원격 파일 같은 외부 의존성을 빌드 입력(build inputs)이라고 불러요.
출처: 문서
본문
예를 들어:
- 레지스트리에서 이미지 pull
- 소스 코드 저장소 clone
- HTTPS로 서버에서 파일 fetch
Dockerfile 명령으로 원격 자원을 빌드로 가져올 때 SHA256 체크섬을 검증할 수 있어요:
ADD --checksum=sha256:c0ff3312345… https://example.com/archive.tar.gz /
Dockerfile이 기대하는 체크섬과 파일이 일치하지 않으면 빌드는 실패해요.
하지만 체크섬은 단지 내용이 일치하는지만 알려줘요. 내용이 어디서 왔는지, 어떻게 만들어졌는지는 알려주지 않아요. 체크섬으로 "이미지는 서명되어야 한다"나 "의존성은 승인된 소스에서만 와야 한다" 같은 제약을 강제할 수 없어요.
빌드 정책(Build policies)은 이 문제를 해결해요. 모든 빌드 입력을 검증하는 규칙을 정의할 수 있게 해 주며, 전체 빌드 과정에 걸쳐 provenance 자격 증명, 승인된 레지스트리, 서명된 Git 태그 같은 요구사항을 강제해요.
사전 요구사항 (Prerequisites)
정책을 사용하려면 이것을 지원하는 Buildx 버전과 Rego 정책 엔진 지원이 필요해요. 정책은 Rego 언어로 작성돼요.
정책 만들기와 적용 (Creating and applying policies)
정책 파일을 작성하고 --policy 옵션으로 빌드에 적용할 수 있어요. 자세한 내용은 Intro와 Usage 문서를 참고해요.