주요 개념

이 페이지에는 Binary Authorization과 연관된 주요 개념 정보가 포함되어 있습니다.

정책

Binary Authorization에서 정책이란 Google Kubernetes Engine(GKE)으로의 컨테이너 이미지 배포를 제어하는 규칙 집합입니다. 정책은 다음으로 구성되어 있습니다.

다음 중 하나를 사용하여 정책을 구성할 수 있습니다.

  • Google Cloud Console
  • gcloud 명령어

gcloud 명령어를 사용할 경우 정책을 프로젝트로 다시 가져오기 전에 YAML 형식으로 정책의 정의를 내보내고 수정합니다. YAML 형식에는 Binary Authorization 스토리지에 저장된 정책의 내부 구조가 반영됩니다. 이 형식에 대한 자세한 내용은 정책 YAML 참조를 참조하세요.

각 Google Cloud 프로젝트는 정확히 하나의 정책을 포함할 수 있습니다. 단일 프로젝트 구성에서 이 정책은 GKE로의 배포를 제어합니다. 이 경우 배포 파이프라인의 모든 리소스는 동일한 프로젝트에 속합니다. 다중 프로젝트 구성의 경우 단일 정책을 통해 한 프로젝트의 Container Registry에서 다른 프로젝트에서 실행 중인 GKE 클러스터로의 이미지 배포를 제어할 수 있습니다.

자세한 내용은 명령줄 인터페이스 (GKE)를 사용하여 정책 구성Cloud Console(GKE)을 사용하여 정책 구성을 참조하세요.

규칙

규칙은 이미지를 배포하기 전에 통과해야 하는 제약조건을 정의하는 정책의 일부입니다. 대부분의 경우 규칙에는 디지털 서명된 증명이 1개 이상 필요합니다. 각 필수 증명에 대한 서명이 확인되면 필요한 모든 내부 프로세스가 완료되었다는 의미이므로 이미지를 배포할 수 있습니다. 또한 규칙을 통해 특정 Container Registry 경로에서 특정 GKE 클러스터로의 모든 배포를 허용하거나 거부할 수 있습니다.

규칙은 정책을 구성할 때 정의합니다. 정책에는 기본 규칙이 하나만 있어야 하고, 클러스터별 규칙은 개수 제한이 없습니다.

기본 규칙

각 정책에는 기본 규칙이 있습니다. 이 규칙은 클러스터별 규칙과 일치하지 않는 모든 배포 요청에 적용됩니다. 정책에 클러스터별 규칙이 없으면 기본 규칙이 항상 적용됩니다. 정책 YAML 파일에서 기본 규칙은 defaultAdmissionRule 노드에 지정되어 있습니다.

클러스터별 규칙

정책에 한 개 이상의 클러스터별 규칙이 있을 수도 있습니다. 이 유형의 규칙은 특정 GKE 클러스터에 배포할 이미지에만 적용됩니다. 정책 YAML 파일에서 각 클러스터별 규칙은 clusterAdmissionRule 노드에 지정되어 있습니다.

평가 모드

각 규칙에는 Binary Authorization에서 규칙에 적용하는 제약조건 유형을 지정하는 평가 모드가 있습니다. 규칙의 평가 모드는 정책 YAML 파일의 evaluationMode 속성을 사용하여 지정됩니다.

세 가지 평가 모드가 있습니다.

  • 모든 이미지 허용: 모든 이미지의 배포를 허용합니다.
  • 모든 이미지 거부: 모든 이미지의 배포를 허용하지 않습니다.
  • 증명 필요: 배포 전에 서명자가 이미지 다이제스트를 디지털 서명하고 증명을 만들어야 합니다. 배포 시 Binary Authorization 시행자는 연결된 이미지를 배포하기 전에 증명자를 사용하여 증명의 서명을 확인합니다.

시행 모드

각 규칙에는 시행 모드도 있습니다. 이 모드는 이미지가 규칙을 준수하지 않을 경우 GKE에서 취해야 하는 조치를 지정합니다. 규칙에는 다음과 같은 시행 모드가 있을 수 있습니다.

  • 차단 및 감사 로그: 규칙을 준수하지 않는 이미지의 배포를 차단하고 이미지가 배포되지 않은 이유를 설명하는 메시지를 감사 로그에 기록합니다.

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

대부분의 프로덕션 규칙은 차단 및 감사 로그 시행 모드를 사용합니다. 테스트 실행: 감사 로그 전용은 사용자 환경에서 정책이 적용되기 전에 해당 정책을 테스트하는 데 주로 사용됩니다.

규칙의 시행 모드는 정책 YAML 파일의 enforcementMode 속성을 사용하여 지정됩니다.

Cloud Logging에 기록된 메시지에 대한 자세한 내용은 감사 로그 보기를 참조하세요.

지속적 검증

지속적 검증(CV)은 지속적인 정책 준수를 위해 pod 실행과 연관된 이미지를 주기적으로 확인하는 Binary Authorization 기능입니다.

CV에 대해 자세히 알아보세요.

예외 이미지

예외 이미지는 정책 규칙에서 제외되는 이미지입니다. Binary Authorization에서는 항상 예외 이미지를 배포할 수 있습니다. 각 프로젝트에는 레지스트리 경로에서 지정된 예외 이미지의 허용 목록이 있습니다. gcr.io/google_containers/*k8s.gcr.io/* 경로와 추가 경로의 이미지에는 GKE가 기본 정책을 활성화한 상태에서 클러스터를 성공적으로 시작하는 데 필요한 리소스가 포함되어 있으므로 기본적으로 제외됩니다.

예외 이미지의 허용 목록은 정책 YAML 파일의 admissionWhitelistPatterns 속성을 사용하여 지정됩니다.

허용 목록 패턴

레지스트리 위치가 지정된 경로와 일치하는 모든 이미지를 허용하려면 다음을 실행하세요.

gcr.io/example-project/*

레지스트리 위치가 지정된 경로의 하위 디렉터리(예: gcr.io/example-project/my-directory/helloworld)인 모든 이미지를 허용하려면 다음을 실행하세요.

gcr.io/example-project/**

특정 이미지를 허용하려면 다음 안내를 따르세요.

gcr.io/example-project/helloworld

태그를 기준으로 특정 버전의 이미지를 허용하려면 다음을 실행하세요.

gcr.io/example-project/helloworld:latest
gcr.io/example-project/helloworld:my-tag

이미지의 모든 버전/태그를 허용하려면 다음 안내를 따르세요.

gcr.io/example-project/helloworld*

다이제스트를 기준으로 특정 이미지 버전을 허용하려면 다음을 실행하세요.

gcr.io/example-project/helloworld@sha256:77b0b75136b9bd0fd36fb50f4c92ae0dbdbbe164ab67885e736fa4374e0cbb8c

컨테이너 이미지 다이제스트 사용에 대해 자세히 알아보기

Cloud Console에서 명령줄 도구를 사용하거나 REST API를 사용하여 예외 이미지를 관리하는 방법 알아보기

Google이 관리하는 시스템 이미지

Google이 관리하는 모든 시스템 이미지 신뢰를 설정하면 Binary Authorization이 추가 정책 평가에서 Google이 관리하는 시스템 이미지 목록을 제외합니다. 이 설정을 사용하면 GKE에 필요한 이미지가 정책 시행으로 차단되지 않습니다. 시스템 정책은 사용자 정책 평가 이전 그리고 평가가 수행될 때 평가됩니다.

이 설정은 정책 YAML 파일에서 globalPolicyEvaluationMode 속성을 사용하여 사용 설정 또는 사용 중지할 수 있습니다. 다음 명령어를 사용하여 시스템 정책의 콘텐츠를 확인할 수 있습니다.

gcloud container binauthz policy export-system-policy

증명

증명은 이미지를 인증하는 디지털 문서입니다. 배포 중에 Binary Authorization은 이미지 배포를 허용하기 전 증명을 확인합니다.

증명을 만드는 프로세스는 '이미지 서명'이라고도 합니다. 증명은 이미지가 빌드된 후에 생성됩니다. 이러한 각 이미지에는 전역적으로 고유한 다이제스트가 있습니다. 서명자는 키 쌍의 비공개 키를 사용하여 이미지 다이제스트를 서명하고 이 서명을 사용하여 증명을 만듭니다. 배포 시 Binary Authorization 시행자는 증명공개 키를 사용하여 증명의 서명을 확인합니다. 일반적으로 각 증명자는 단 하나의 서명자에만 속해야 합니다.

증명은 특정한 필수 프로세스를 성공적으로 실행하여 연결된 이미지가 빌드되었음을 나타냅니다. 예를 들어 서명자가 품질 보증(QA) 팀을 대표하는 경우 증명은 이미지가 스테이징 환경에서 필요한 모든 엔드 투 엔드 테스트를 통과했음을 나타낼 수 있습니다.

Binary Authorization에서 증명을 사용 설정하려면 정책의 evaluationModeREQUIRE_ATTESTATION로 설정되어 있어야 합니다.

일반적인 사용 사례는 Binary Authorization 개요를 참조하세요.

증명자 및 증명을 만들고 사용하는 방법을 알아보세요.

서명자

서명자는 사람이거나 비공개 키로 고유한 이미지 설명자를 서명하여 증명을 만드는 자동화된 프로세스입니다. 증명은 연결된 이미지가 배포되기 전에 증명에 저장된 해당하는 공개 키로 배포 시에 검증됩니다.

증명자 및 증명을 만들고 사용하는 방법을 알아보세요.

증명자

증명자는 Binary Authorization이 이미지 배포 시에 증명 확인을 위해 사용하는 Google Cloud 리소스입니다. 증명자에는 서명자가 이미지 다이제스트를 서명하고 증명을 만드는 데 사용한 비공개 키에 해당하는 공개 키가 포함됩니다. Binary Authorization 시행자는 배포 시 증명자를 사용하여 배포 전에 함께 생성된 확인 가능한 증명으로 배포할 수 있는 이미지를 제한할 수 있습니다.

증명자는 공개 키 및 비공개 키 쌍을 관리하는 보안 운영 담당자가 관리하는 경우가 많지만 서명자는 일반적으로 배포 가능한 이미지를 생성하고 비공개 키로 서명하며 배포를 시도하기 전에 증명을 만드는 소프트웨어 엔지니어, DevOps QA 또는 규정 준수 담당자입니다.

증명자에는 다음이 포함됩니다.

증명 필요 규칙이 포함된 정책을 설정할 때 이미지의 배포 준비가 되었는지 확인하는 데 필요한 사용자 또는 프로세스의 증명자를 추가해야 합니다. Google Cloud Console, gcloud 인터페이스 또는 Binary Authorization REST API를 사용하여 증명자를 추가할 수 있습니다.

증명자 및 증명을 만들고 사용하는 방법을 알아보세요.

암호화 키

정책에 증명 필요 규칙이 포함된 경우 Binary Authorization은 배포 시에 디지털 서명을 사용하여 이미지를 확인합니다.

키 쌍이 생성됩니다. 비공개 키서명자가 이미지 설명자를 서명하는 데 사용됩니다. 이렇게 하면 증명이 생성됩니다.

그런 다음 증명자가 생성되어 정책에 저장됩니다. 서명에 사용되는 비공개 키에 해당하는 공개 키가 업로드되고 증명자에 연결됩니다.

배포 시 GKE에서 Binary Authorization 시행자를 호출하여 디지털 서명된 각 이미지의 배포를 허용하기 위해 정책의 증명자를 사용해 연결된 증명의 유효성을 검증합니다.

Binary Authorization은 다음 두 가지 유형의 키를 지원합니다.

PKIX 키는 로컬, 외부 또는 Cloud Key Management Service에 저장될 수 있습니다.

컨테이너 분석 메모

Binary Authorization은 컨테이너 분석을 사용하여 승인 프로세스에 사용된 신뢰할 수 있는 메타데이터를 저장합니다. 생성된 증명자마다 컨테이너 분석 메모를 하나씩 만들어야 합니다. 각 증명은 이 메모의 어커런스로 저장됩니다.

Binary Authorization은 증명자가 이미지를 확인하도록 요구하는 규칙을 평가할 때 컨테이너 분석 스토리지를 검사하여 필요한 증명이 있는지 확인합니다.