정책 예시

이 페이지에는 YAML 형식으로 지정된 Binary Authorization의 예시 정책이 나와 있습니다. Binary Authorization에서 정책을 구성하는 방법은 Google Cloud CLI를 사용하여 정책 구성 또는 Google Cloud Console을 사용하여 정책 구성을 참조하세요.

배포 모두 허용

다음 예시는 제약조건 없이 모든 컨테이너 이미지가 배포되도록 허용하는 방법을 보여줍니다.

name: projects/example-project/policy
defaultAdmissionRule:
  evaluationMode: ALWAYS_ALLOW
  enforcementMode: ENFORCED_BLOCK_AND_AUDIT_LOG

여기에서 기본 규칙evaluationModeALWAYS_ALLOW이므로 Binary Authorization은 모든 컨테이너 이미지의 배포를 허용합니다. enforcementMode의 기본값은 ENFORCED_BLOCK_AND_AUDIT_LOG로 설정되어 있지만 모든 배포가 허용되므로 이 작업은 절대 수행되지 않습니다.

(거의) 모든 배포 차단

다음 예시는 모든 컨테이너 이미지가 배포되지 않도록 차단하고 Google이 관리하는 시스템 이미지를 허용하는 방법을 보여줍니다. 대부분의 Google Kubernetes Engine(GKE) 클러스터가 성공적으로 시작되려면 이러한 컨테이너 이미지가 필요합니다.

name: projects/example-project/policy
globalPolicyEvaluationMode: ENABLE
defaultAdmissionRule:
  evaluationMode: ALWAYS_DENY
  enforcementMode: ENFORCED_BLOCK_AND_AUDIT_LOG

여기서는 GKE에 필요한 이미지가 정책 시행으로 차단되지 않도록 globalPolicyEvaluationMode가 사용 설정됩니다. 기본 규칙evaluationModeALWAYS_DENY이므로 Binary Authorization은 모든 컨테이너 이미지의 배포를 거부합니다. enforcementModeENFORCED_BLOCK_AND_AUDIT_LOG로 설정되어 있으므로 Binary Authorization이 배포를 차단하고 감사 로그에 기록합니다.

배포 전에 증명자 서명 필요

다음 예시는 컨테이너 이미지를 배포하기 전에 증명자가 릴리스를 승인하도록 요구하는 방법을 보여줍니다. 모든 증명자가 서명하지 않으면 배포가 차단됩니다.

name: projects/example-project/policy
globalPolicyEvaluationMode: ENABLE
defaultAdmissionRule:
  evaluationMode: REQUIRE_ATTESTATION
  enforcementMode: ENFORCED_BLOCK_AND_AUDIT_LOG
  requireAttestationsBy:
  - projects/example-project/attestors/secure-build

여기에서 기본 규칙의 evaluationModeREQUIRE_ATTESTATION이므로 Binary Authorization은 requireAttestationsBy에서 필요한 증명자가 승인한 이미지만 배포하도록 허용합니다.

테스트 실행 모드에서 배포 허용

테스트 실행 모드는 정책을 준수하지 않는 이미지를 배포하도록 허용하지만 정책 위반 및 배포에 대한 세부정보를 감사 로그에 기록하는 정책의 시행 모드입니다. 테스트 실행 모드를 사용하면 프로덕션 환경에서 정책이 적용되기 전에 테스트할 수 있습니다.

다음 예시는 정책을 준수하지 않는 모든 이미지가 테스트 실행 모드에서 배포되도록 허용하는 방법을 보여줍니다.

name: projects/example-project/policy
globalPolicyEvaluationMode: ENABLE
defaultAdmissionRule:
  evaluationMode: REQUIRE_ATTESTATION
  enforcementMode: DRYRUN_AUDIT_LOG_ONLY
  requireAttestationsBy:
  - projects/example-project/attestors/secure-build

여기에서 기본 규칙의 enforcementModeDRYRUN_AUDIT_LOG_ONLY이며 이 경우 지정된 증명자가 배포를 승인하지 않은 이미지의 배포를 허용하지만 정책을 준수하지 않은 배포에 대한 정보를 감사 로그에 기록합니다.

클러스터별 규칙 사용

다음 예시는 지정된 증명자가 승인한 컨테이너 이미지만 배포하도록 허용하는 클러스터별 규칙을 보여줍니다.

name: projects/example-project/policy
globalPolicyEvaluationMode: ENABLE
defaultAdmissionRule:
  evaluationMode: ALWAYS_DENY
  enforcementMode: ENFORCED_BLOCK_AND_AUDIT_LOG
clusterAdmissionRules:
  us-east1-a.prod-cluster:
    evaluationMode: REQUIRE_ATTESTATION
    enforcementMode: ENFORCED_BLOCK_AND_AUDIT_LOG
    requireAttestationsBy:
    - projects/example-project/attestors/secure-build
    - projects/example-project/attestors/prod-qualified

여기에서 클러스터별 규칙은 us-east1-a.prod-cluster에 배포된 컨테이너 이미지에만 적용됩니다. 이 규칙에 따라 이미지를 배포하려면 먼저 두 증명자의 증명이 필요합니다.

예외 이미지 추가

다음 예시는 Container Registry 또는 다른 레지스트리의 추가 경로를 정책에서 예외로 처리된 이미지 목록에 추가하는 방법을 보여줍니다.

name: projects/example-project/policy
globalPolicyEvaluationMode: ENABLE
admissionWhitelistPatterns:
- namePattern: gcr.io/example-project-1/*
- namePattern: gcr.io/example-project-2/my-app
defaultAdmissionRule:
  evaluationMode: ALWAYS_DENY
  enforcementMode: ENFORCED_BLOCK_AND_AUDIT_LOG

여기에서 추가 예외 이미지를 연결하는 패턴은 gcr.io/example-project-1/*gcr.io/example-project-2/my-app입니다.