이 페이지에서는 Cloud Build에서 빌드된 컨테이너 이미지만 배포하도록 Binary Authorization을 구성하여 소프트웨어 공급망을 보호하는 방법을 설명합니다.
이 배포 제어를 구성하려면 Binary Authorization 정책에 built-by-cloud-build
증명자를 요구합니다. Cloud Build는 이미지를 생성하는 빌드를 실행할 때 프로젝트에 built-by-cloud-build
증명자를 자동으로 만듭니다. 이미지가 성공적으로 빌드되면 Cloud Build가 자동으로 이미지에 대해 서명하고 증명을 만듭니다. 배포 시에 Binary Authorization은 built-by-cloud-build
증명자를 사용하여 증명을 확인합니다. 확인된 이미지를 배포할 수 있습니다.
확인에 실패한 이미지는 배포가 허용되지 않으며 실패는 Cloud 감사 로그에 기록됩니다.
Cloud Build에서 기록한 메타데이터와 Binary Authorization을 사용하는 방법을 설명하는 엔드 투 엔드 가이드는 서명된 출처 및 Binary Authorization 사용을 참조하세요.
시작하기 전에
이 기능을 사용하려면 먼저 다음을 수행해야 합니다.
- 플랫폼에 Binary Authorization을 설정합니다.
Cloud Build를 설정하고 이미지를 빌드합니다.
정책 구성
이 섹션에서는 built-by-cloud-build
증명자를 요구하도록 Binary Authorization 정책을 구성합니다.
Cloud Build에서 빌드한 이미지만 배포하도록 허용하려면 다음 단계를 수행합니다.
콘솔
Google Cloud 콘솔의 Binary Authorization 페이지로 이동합니다.
정책 탭에서 정책 수정을 클릭합니다.
정책 수정 대화상자에서 다음 모든 증명자가 승인한 이미지만 허용을 선택합니다.
증명자 추가를 클릭합니다.
증명자 추가 대화상자에서 다음을 수행합니다.
- 프로젝트 및 증명자 이름으로 추가를 선택하고 다음 단계를 수행합니다.
- 프로젝트 이름 필드에 Cloud Build를 실행할 프로젝트를 입력합니다.
- 증명자 이름 필드를 클릭하고
built-by-cloud-build
증명자를 사용할 수 있는지 확인합니다. built-by-cloud-build
를 클릭합니다.
또는 증명자 리소스 ID로 추가를 선택합니다. 증명자 리소스 ID에 다음을 입력합니다.
projects/PROJECT_ID/attestors/built-by-cloud-build
PROJECT_ID
를 Cloud Build를 실행하는 프로젝트로 바꿉니다.
- 프로젝트 및 증명자 이름으로 추가를 선택하고 다음 단계를 수행합니다.
증명자 1개 추가를 클릭합니다.
정책 저장을 클릭합니다.
gcloud
다음 명령어를 사용하여 기존 정책을 파일로 내보냅니다.
gcloud container binauthz policy export > /tmp/policy.yaml
정책 파일을 수정합니다.
다음 규칙 중 하나를 수정합니다.
defaultAdmissionRule
clusterAdmissionRules
istioServiceIdentityAdmissionRules
kubernetesServiceAccountAdmissionRules
아직 규칙이 없으면
requireAttestationsBy
블록을 규칙에 추가합니다.requireAttestationsBy
블록에 다음을 추가합니다.projects/PROJECT_ID/attestors/built-by-cloud-build
PROJECT_ID
를 Cloud Build를 실행하는 프로젝트로 바꿉니다.정책 파일을 저장합니다.
정책 파일을 가져옵니다.
gcloud container binauthz policy import /tmp/policy.yaml
다음은
built-by-cloud-build-attestor
에 대한 참조가 포함된 정책 파일 예시입니다.defaultAdmissionRule: evaluationMode: REQUIRE_ATTESTATION enforcementMode: ENFORCED_BLOCK_AND_AUDIT_LOG requireAttestationsBy: - projects/PROJECT_ID/attestors/built-by-cloud-build name: projects/PROJECT_ID/policy
PROJECT_ID
를 Cloud Build를 실행하는 프로젝트 ID로 바꿉니다.
다음 단계
- 이미지 배포를 허용하지 않고 테스트 실행 모드를 사용하여 정책 위반을 로깅할 수 있습니다.
- Google Kubernetes Engine (GKE) 또는 Cloud Run에서 허용되지 않는 이미지의 감사 로그 이벤트를 확인합니다.