Cloud Build에서 빌드한 이미지만 배포

이 페이지에서는 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 사용을 참조하세요.

시작하기 전에

이 기능을 사용하려면 먼저 다음을 수행해야 합니다.

정책 구성

이 섹션에서는 built-by-cloud-build 증명자를 요구하도록 Binary Authorization 정책을 구성합니다.

Cloud Build에서 빌드한 이미지만 배포하도록 허용하려면 다음 단계를 수행합니다.

콘솔

  1. Google Cloud 콘솔의 Binary Authorization 페이지로 이동합니다.

    Binary Authorization으로 이동

  2. 정책 탭에서 정책 수정을 클릭합니다.

  3. 정책 수정 대화상자에서 다음 모든 증명자가 승인한 이미지만 허용을 선택합니다.

  4. 증명자 추가를 클릭합니다.

  5. 증명자 추가 대화상자에서 다음을 수행합니다.

    1. 프로젝트 및 증명자 이름으로 추가를 선택하고 다음 단계를 수행합니다.
      1. 프로젝트 이름 필드에 Cloud Build를 실행할 프로젝트를 입력합니다.
      2. 증명자 이름 필드를 클릭하고 built-by-cloud-build 증명자를 사용할 수 있는지 확인합니다.
      3. built-by-cloud-build를 클릭합니다.
    2. 또는 증명자 리소스 ID로 추가를 선택합니다. 증명자 리소스 ID에 다음을 입력합니다.

      projects/PROJECT_ID/attestors/built-by-cloud-build
      

      PROJECT_ID를 Cloud Build를 실행하는 프로젝트로 바꿉니다.

  6. 증명자 1개 추가를 클릭합니다.

  7. 정책 저장을 클릭합니다.

gcloud

  1. 다음 명령어를 사용하여 기존 정책을 파일로 내보냅니다.

    gcloud container binauthz policy export > /tmp/policy.yaml
    
  2. 정책 파일을 수정합니다.

  3. 다음 규칙 중 하나를 수정합니다.

    • defaultAdmissionRule
    • clusterAdmissionRules
    • istioServiceIdentityAdmissionRules
    • kubernetesServiceAccountAdmissionRules
  4. 아직 규칙이 없으면 requireAttestationsBy 블록을 규칙에 추가합니다.

  5. requireAttestationsBy 블록에 다음을 추가합니다.

    projects/PROJECT_ID/attestors/built-by-cloud-build
    

    PROJECT_ID를 Cloud Build를 실행하는 프로젝트로 바꿉니다.

  6. 정책 파일을 저장합니다.

  7. 정책 파일을 가져옵니다.

    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로 바꿉니다.

다음 단계