이 페이지에는 YAML 형식에 지정된 대로 Binary Authorization 정책을 구성하기 위한 참조 정보가 포함되어 있습니다. 명령줄 인터페이스를 사용하여 정책을 구성할 때 이 사양을 준수하는 YAML 형식의 파일을 수정합니다. YAML 형식의 정책 예시는 정책 예시를 참조하세요.
정책 YAML 파일에는 다음 형식이 사용됩니다.
name: projects/<PROJECT_ID>/policy
admissionWhitelistPatterns:
- namePattern: <MATCHING_PATTERN>
- ...
globalPolicyEvaluationMode: <GLOBAL_EVAL_MODE>
defaultAdmissionRule:
<ADMISSION_RULE>
clusterAdmissionRules:
<CLUSTER_SPECIFIER>:
<ADMISSION_RULE>
...
노드
YAML 형식에는 다음과 같은 최상위 노드가 있습니다.
노드 | 설명 | 필수 |
---|---|---|
name |
정책의 이름입니다. | 예 |
admissionWhitelistPatterns |
항상 배포할 수 있는 컨테이너 이미지를 지정합니다. | 아니요 |
globalPolicyEvaluationMode |
Google 소유 시스템 이미지를 제외하는 시스템 정책을 적용할지 여부를 지정합니다. | 아니요 |
defaultAdmissionRule |
특정 규칙이 적용되지 않을 때 사용하는 규칙입니다. | 예 |
clusterAdmissionRules |
특정 클러스터에 적용되는 규칙을 지정합니다. | 아니요 |
name
name
노드에는 다음과 같은 형식의 정책 이름이 포함됩니다.
name: projects/PROJECT_ID/policy
여기서 PROJECT_ID는 정책이 정의된 Google Cloud 프로젝트의 이름입니다.
예를 들면 다음과 같습니다.
name: projects/example-project/policy
admissionWhitelistPatterns
admissionWhitelistPatterns
는 정책 시행에서 제외되는 컨테이너 이미지의 허용 목록을 지정합니다. Container Registry, Artifact Registry, 다른 레지스트리 또는 namePattern
하위 노드에 있는 로컬 참조의 이미지 경로를 지정합니다.
admissionWhitelistPatterns: - namePattern: MATCHING_PATTERN - ...
MATCHING_PATTERN을 단일 이미지 경로 또는 와일드 카드 기호(*
, **
) 중 하나가 포함된 일치 패턴으로 바꿉니다.
와일드 카드는 패턴 끝에서만 유효합니다. 예를 들어 gcr.io/my-project/nginx*
는 유효한 패턴이지만 gcr.io/my-project/n*x
는 그렇지 않습니다. *
와일드 카드만 지정된 디렉터리의 이미지와 일치합니다. 예를 들어 gcr.io/my-project/nginx*
는 gcr.io/my-project/nginx:latest
와 일치하지만 gcr.io/my-project/nginx-images/nginx
와는 일치하지 않습니다. **
와일드 카드는 하위 디렉터리의 이미지와 일치합니다. 예를 들어 gcr.io/my-project/nginx**
경로는 gcr.io/my-project/nginx-1.14.2/image:latest
와 일치합니다.
다음 예시는 일반적으로 사용되는 Google Kubernetes Engine(GKE) 이미지, gcr.io/example-project/helloworld
에 있는 이미지, 이미지에 대한 로컬 참조가 포함된 레지스트리를 정책의 예외 이미지 목록에 추가합니다.
admissionWhitelistPatterns: - namePattern: gcr.io/google-containers/* - namePattern: k8s.gcr.io/** - namePattern: gke.gcr.io/** - namePattern: gcr.io/gke-release/asm/* - namePattern: gcr.io/stackdriver-agents/* - namePattern: gcr.io/example-project/helloworld - namePattern: loc-ref
허용 목록 패턴
레지스트리 위치가 지정된 경로와 일치하는 모든 컨테이너 이미지를 허용하려면 다음을 실행하세요.
admissionWhitelistPatterns: ... - namePattern: gcr.io/example-project/*
특정 이미지를 허용하려면 다음 안내를 따르세요.
admissionWhitelistPatterns: ... - namePattern: gcr.io/example-project/helloworld
현재 태그가 지정된 버전을 허용하려면 다음을 실행하세요.
admissionWhitelistPatterns: ... - namePattern: gcr.io/example-project/helloworld:latest - namePattern: gcr.io/example-project/helloworld:my-tag - namePattern: gcr.io/example-project/helloworld:v1.*
다이제스트를 기준으로 특정 이미지 버전을 허용하려면 다음을 실행하세요.
admissionWhitelistPatterns: ... - namePattern: gcr.io/example-project/helloworld@sha256:77b0b75136b9bd0fd36fb50f4c92ae0dbdbbe164ab67885e736fa4374e0cbb8c
지정된 경로의 하위 디렉터리에 있는 이미지를 허용 목록에 포함하려면 다음 안내를 따르세요.
admissionWhitelistPatterns: ... - namePattern: gcr.io/example-project/**
globalPolicyEvaluationMode
시스템 정책 평가 모드의 정책 설정을 사용하면 구성한 정책을 평가하기 전에 Binary Authorization에서 시스템 정책을 평가할 수 있습니다. 시스템 정책은 Google에서 제공하며 Google이 관리하는 시스템 이미지 목록을 추가 정책 평가에서 제외합니다. 이 설정을 사용하면 GKE에 필요한 이미지가 정책 시행으로 차단되지 않습니다. 시스템 정책은 admissionWhitelistPatterns
를 포함하여 사용자 정책 평가 이전 그리고 평가가 수행될 때 평가됩니다.
Google이 관리하는 모든 시스템 이미지를 허용하려면 globalPolicyEvaluationMode
속성을 ENABLE
로 설정합니다.
globalPolicyEvaluationMode: ENABLE
시스템 정책 평가 모드를 사용 중지하려면 다음 안내를 따르세요.
globalPolicyEvaluationMode: DISABLE
defaultAdmissionRule
defaultAdmissionRule
은 정책의 기본 규칙을 지정합니다. 기본 규칙은 모든 비예외 컨테이너 이미지에 적용되는 제약조건을 정의합니다. 단, 자체 클러스터별 예외가 포함된 컨테이너 이미지는 제외됩니다. ADMISSION_RULE 모음을 사용하여 기본 규칙을 지정합니다.
defaultAdmissionRule: ADMISSION_RULE
다음 예시는 지정된 증명자가 승인한 컨테이너 이미지만 배포하도록 허용하는 기본 규칙을 보여줍니다. 일부 필수 증명자가 이미지를 승인하지 않은 경우 Binary Authorization은 배포를 차단하고 감사 로그에 기록합니다.
defaultAdmissionRule: evaluationMode: REQUIRE_ATTESTATION enforcementMode: ENFORCED_BLOCK_AND_AUDIT_LOG requireAttestationsBy: - projects/example-project/attestors/secure-build
clusterAdmissionRules
clusterAdmissionRules
은 정책의 클러스터 관련 규칙을 선언합니다.
이러한 규칙의 제약조건은 지정된 클러스터에만 적용됩니다. Binary Authorization에서 클러스터별 규칙을 배포에 적용하는 경우 기본 규칙은 사용되지 않습니다. 기본 규칙과 마찬가지로 ADMISSION_RULE 모음을 사용하여 클러스터별 규칙을 지정합니다.
clusterAdmissionRules: CLUSTER_SPECIFIER: ADMISSION_RULE
여기서 CLUSTER_SPECIFIER는 location.name
형식으로 규칙이 적용되는 클러스터의 리소스 ID입니다(예: us-east1-a.prod-cluster
).
다음 예시는 지정된 증명자가 승인한 컨테이너 이미지만 배포하도록 허용하는 클러스터별 규칙을 보여줍니다.
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
노드 컬렉션
ADMISSION_RULE
ADMISSION_RULE
은 규칙에 대한 제약조건을 다음 형식으로 지정하는 노드 모음입니다.
evaluationMode: EVAL_MODE enforcementMode: ENFORCEMENT_MODE requireAttestationsBy: - ATTESTOR - ...
defaultAdmissionRule
및 clusterAdmissionRule
모두 이 모음을 참조합니다.
evaluationMode
evaluationMode
는 컨테이너 이미지 배포 여부를 평가하기 위해 Binary Authorization에서 수행하는 작업을 지정합니다. 사용할 수 있는 값은 다음과 같습니다.
ALWAYS_ALLOW
: 이 규칙에서 평가한 이미지의 배포를 항상 허용합니다.ALWAYS_DENY
: 이 규칙에서 평가한 이미지의 배포를 항상 거부합니다.REQUIRE_ATTESTATION
: 배포 전 출시를 승인하기 위해 1개 이상의 증명자가 필요합니다.
evaluationMode
가 REQUIRE_ATTESTATION
인 경우 requireAttestationsBy
의 필수 증명자에 대한 참조를 제공해야 합니다.
enforcementMode
enforcementMode
는 컨테이너 이미지가 규칙에 정의된 제약조건을 준수하지 않는 경우 Binary Authorization에서 수행하는 작업을 지정합니다. 사용할 수 있는 값은 다음과 같습니다.
ENFORCED_BLOCK_AND_AUDIT_LOG
: 배포를 차단하고 감사 로그에 기록합니다.DRYRUN_AUDIT_LOG_ONLY
: 규칙을 준수하지 않는 이미지의 배포를 허용하지만 위반 관련 세부정보를 감사 로그에 기록합니다.
대부분의 프로덕션 규칙은 ENFORCED_BLOCK_AND_AUDIT_LOG
시행 모드를 사용합니다.
DRYRUN_AUDIT_LOG_ONLY
는 사용자 환경에 정책이 적용되기 전에 해당 정책을 테스트하는 데 주로 사용됩니다.
requireAttestationsBy
requireAttestationsBy
는 컨테이너 이미지를 배포하기 전에 출시를 승인해야 하는 1개 이상의 증명자를 지정합니다. 이는 REQUIRE_ATTESTATION
규칙에만 필요합니다. 이 노드의 형식은 다음과 같습니다.
requireAttestationsBy: - projects/PROJECT_ID/attestors/ATTESTOR_NAME - ...
여기서 PROJECT_ID는 증명자가 정의된 프로젝트의 이름이고 ATTESTOR_NAME은 출시를 서명해야 하는 증명자의 이름입니다.
다음 예시에서는 증명자를 지정하는 방법을 보여줍니다.
requireAttestationsBy: - projects/example-project/attestors/secure-build - projects/example-project/attestors/prod-qualified