CLI를 사용하여 정책 구성

이 페이지에서는 gcloud 명령어를 사용하여 명령줄에서 Binary Authorization 정책을 구성하는 방법을 자세하게 안내합니다. 또는 Google Cloud Console이나 REST API를 사용하여 이러한 작업을 수행해도 됩니다. 이 단계는 Binary Authorization 설정의 일부입니다.

개요

정책은 1개 이상의 컨테이너 이미지 배포를 제어하는 규칙 집합입니다.

명령줄에서 정책을 구성할 때 텍스트 편집기에서 YAML 형식으로 정책을 직접 수정합니다. YAML 형식에는 Binary Authorization에 저장된 정책의 내부 구조가 반영됩니다. 이 형식에 대한 자세한 내용은 정책 YAML 참조를 참조하세요.

정책을 구성하려면 다음을 수행해야 합니다.

  • 정책 YAML 파일 내보내기
  • 예외 이미지 추가(선택사항)
  • 기본 규칙 설정
  • 클러스터별 규칙 추가(선택사항)
  • 정책 YAML 파일 가져오기

대부분의 경우 실제 정책을 통해 모든 필수 증명자가 컨테이너 이미지를 배포할 준비가 되었는지 확인합니다. 이 경우 정책을 구성할 때 증명자를 만들어야 합니다.

기본 프로젝트 설정

아직 기본 Google Cloud 프로젝트를 설정하지 않은 경우 설정합니다.

PROJECT_ID=PROJECT_ID
gcloud config set project ${PROJECT_ID}

정책 YAML 파일 내보내기

정책 YAML 파일을 로컬 시스템으로 내보냅니다.

gcloud container binauthz policy export  > /tmp/policy.yaml

기본적으로 파일에 포함되는 내용은 다음과 같습니다.

admissionWhitelistPatterns:
- namePattern: gcr.io/google_containers/*
- namePattern: gcr.io/google-containers/*
- namePattern: k8s.gcr.io/*
- namePattern: gke.gcr.io/*
- namePattern: gcr.io/stackdriver-agents/*
globalPolicyEvaluationMode: ENABLE
defaultAdmissionRule:
  evaluationMode: ALWAYS_ALLOW
  enforcementMode: ENFORCED_BLOCK_AND_AUDIT_LOG
name: projects/PROJECT_ID/policy

예외 이미지 관리

예외 이미지는 정책 규칙에서 제외되는 컨테이너 이미지입니다. Binary Authorization에서는 항상 예외 이미지를 배포할 수 있습니다.

각 정책에는 레지스트리 경로에서 지정된 예외 이미지의 허용 목록이 있을 수 있습니다. 이 경로는 Container Registry 또는 다른 컨테이너 이미지 레지스트리의 위치일 수 있습니다. 사용 설정된 경우 이 허용 목록은 전역 정책 평가 모드에서 제외된 이미지에 추가됩니다.

예외 이미지를 추가하려면 policy.yaml 파일의 admissionWhitelistPatterns 목록 아래에 namePattern 노드를 추가합니다.

admissionWhitelistPatterns:
- namePattern: MATCHING_PATTERN

여기서 MATCHING_PATTERN은 정확하게 일치하는 레지스트리 내 단일 이미지 또는 와일드카드 기호(*)를 사용하여 패턴과 일치하는 이미지에 대한 경로입니다.

전역 정책 평가 모드

전역 정책 평가 모드의 정책 설정을 사용하면 사용자로 구성한 정책을 평가하기 전에 Binary Authorization에서 전역 정책을 평가할 수 있습니다. 전역 정책은 Google에서 제공하며 Google이 관리하는 시스템 이미지 목록을 추가 정책 평가에서 제외합니다. 이 설정을 사용하면 Google Kubernetes Engine(GKE)에 필요한 이미지가 정책 시행으로 차단되지 않습니다. 전역 정책은 사용자 정책 이전에, 그리고 사용자 정책에 추가하여 평가됩니다.

다음 명령어를 사용하여 전역 정책의 콘텐츠를 볼 수 있습니다.

gcloud container binauthz policy export --project=binauthz-global-policy

전역 정책 평가 모드를 사용하면 admissionWhitelistPatterns 목록에서 Google이 관리하는 시스템 이미지의 경로를 명시적으로 지정할 필요가 없습니다.

admissionWhitelistPatterns:
- namePattern: gcr.io/google_containers/*
- namePattern: gcr.io/google-containers/*
- namePattern: k8s.gcr.io/*
- namePattern: gke.gcr.io/*
- namePattern: gcr.io/stackdriver-agents/*

전역 정책 평가 모드를 사용 설정하려면 policy.yaml 파일에 다음 줄을 추가합니다.

globalPolicyEvaluationMode: ENABLE

전역 정책 평가 모드를 사용 중지하려면 다음을 추가합니다.

globalPolicyEvaluationMode: DISABLE

기본 규칙 설정

규칙은 컨테이너 이미지를 배포하기 전에 전달해야 하는 제약조건을 정의하는 정책의 일부입니다. 기본 규칙은 모든 비예외 컨테이너 이미지에 적용되는 제약조건을 정의합니다. 단, 자체 클러스터별 예외가 포함된 컨테이너 이미지는 제외됩니다. 모든 정책에는 기본 규칙이 있어야 합니다.

기본 규칙은 정책 YAML 파일의 defaultAdmissionRule 노드에 정의되어 있습니다. 이 규칙에 대한 자세한 내용은 정책 YAML 참조의 ADMISSION_RULE을 참조하세요. 기본 규칙의 예시는 정책 예시를 참조하세요.

기본 규칙을 설정하려면 필요에 따라 policy.yaml 파일에서 defaultAdmissionRule 노드를 수정하세요.

defaultAdmissionRule:
  evaluationMode: EVAL_MODE
  enforcementMode: ENFORCEMENT_MODE
  requireAttestationsBy:
  - ATTESTOR
  - ...

각 항목의 의미는 다음과 같습니다.

  • EVAL_MODE는 컨테이너 이미지의 배포를 허용하기 전에 Binary Authorization에서 평가하는 제약조건의 유형을 지정합니다.
  • ENFORCEMENT_MODE는 컨테이너 이미지가 규칙에 정의되어 있는 제약조건을 준수하지 않을 경우 취해야 하는 조치를 지정합니다.
  • ATTESTOR는 컨테이너 이미지를 배포하기 전에 이를 서명해야 하는 증명(필요한 경우)을 지정합니다. 증명자에는 projects/PROJECT_ID/attestors/ATTESTOR_NAME 형식으로 된 정규화된 경로를 사용하세요.

규칙을 통해 모든 필수 증명자가 컨테이너 이미지를 서명했는지 확인한 경우 이 단계를 완료하기 전에 증명자를 만들어야 합니다.

클러스터별 규칙 설정(선택사항)

클러스터에는 1개 이상의 클러스터별 규칙이 있을 수도 있습니다. 이 유형의 규칙은 특정 GKE 클러스터에 배포할 컨테이너 이미지에만 적용됩니다. 클러스터별 규칙은 정책의 선택적 부분입니다.

클러스터별 규칙은 정책 YAML 파일의 clusterAdmissionRules 노드에 정의되어 있습니다. 이 규칙에 대한 자세한 내용은 정책 YAML 참조의 ADMISSION_RULE을 참조하세요. 예시를 보려면 정책 예시에서 클러스터별 규칙 사용을 참조하세요.

클러스터별 규칙을 추가하려면 다음 안내를 따르세요.

policy.yaml 파일에 clusterAdmissionRules 노드를 추가합니다.

clusterAdmissionRules:
  CLUSTER_SPECIFIER:
    evaluationMode: EVAL_MODE
    enforcementMode: ENFORCEMENT_MODE
    requireAttestationsBy:
    - ATTESTOR
    - ...

여기서 CLUSTER_SPECIFIERlocation.name 형식으로 된 규칙이 적용되는 클러스터의 리소스 ID이며 다른 속성은 위의 기본 규칙 설정에 설명되어 있습니다. 클러스터별 규칙의 예시는 정책 예시를 참조하세요.

규칙을 통해 모든 필수 증명자가 컨테이너 이미지를 서명했는지 확인한 경우 이 단계를 완료하기 전에 증명자를 만들어야 합니다.

정책 YAML 파일 가져오기

마지막 단계는 정책 YAML 파일을 Binary Authorization으로 다시 가져오는 것입니다.

파일을 가져오려면 다음을 입력하세요.

gcloud container binauthz policy import /tmp/policy.yaml

다음 단계