Binary Authorization 정책 시행 설정

베어메탈용 GKE의 Binary Authorization은 Binary Authorization의 호스팅된 배포 시 시행을 온프레미스 클러스터로 확장하는 Google Cloud 기능입니다. 베어메탈용 GKE에서 Binary Authorization의 기본 사용 사례는 워크로드를 보호하는 것이지만 Binary Authorization은 모든 클러스터 유형에서 작동합니다. 이 가이드의 단계에 따라 Google Cloud 프로젝트에 구성된 Binary Authorization 정책의 시행 규칙을 클러스터에 적용합니다. Binary Authorization 정책 및 규칙에 대한 자세한 내용은 Binary Authorization 개요를 참조하세요.

기본 요건

클러스터에 Binary Authorization 정책 시행을 사용 설정하려면 먼저 다음 기본 요건 기준을 충족해야 합니다.

  • Fleet을 사용하여 클러스터 등록: bmctl로 만든 클러스터는 클러스터 구성 파일의 gkeConnect.projectID 필드에서 지정하는 Google Cloud 프로젝트에 등록됩니다. 이 프로젝트를 Fleet 호스트 프로젝트라고 합니다. 사용 사례, 권장사항, 예시 등 Fleet에 대한 자세한 내용은 Fleet 관리 문서를 참조하세요.

  • Google Cloud 프로젝트에서 Binary Authorization API 사용 설정: Fleet 호스트 프로젝트에서 Binary Authorization 서비스를 사용 설정합니다.

  • Binary Authorization 정책 평가자 역할을 Fleet 호스트 프로젝트에 추가: Binary Authorization 정책 평가자(roles/binaryauthorization.policyEvaluator) 역할을 Fleet 호스트 프로젝트의 Kubernetes 서비스 계정에 부여하려면 다음 명령어를 실행합니다.

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member="serviceAccount:PROJECT_ID.svc.id.goog[binauthz-system/binauthz-agent]" \
        --role="roles/binaryauthorization.policyEvaluator"
    

    클러스터가 프록시 서버 뒤에서 실행되는 경우 프록시 서버가 Binary Authorization API(binaryauthorization.googleapis.com)에 대한 연결을 허용하는지 확인합니다. 이 API는 클러스터에 배포된 이미지에 대해 정책 기반 배포 검증 및 제어를 제공합니다. 프록시 구성 사용에 대한 자세한 내용은 프록시 뒤에 설치를 참조하세요.

기본 요건이 충족되면 새 클러스터를 만들거나 기존 클러스터를 업데이트할 때 Binary Authorization 정책을 사용 설정(또는 사용 중지)할 수 있습니다.

클러스터를 만드는 중에 Binary Authorization 정책 사용 설정

bmctl 또는 gcloud CLI를 사용하여 Binary Authorization 정책 시행을 사용 설정할 수 있습니다.

bmctl

bmctl을 사용하여 클러스터를 만들 때 Binary Authorization을 사용 설정하려면 다음 안내를 따르세요.

  1. 클러스터를 만들기 전에 다음 예시와 같이 클러스터 구성 파일에 spec.binaryAuthorization.evaluationMode를 추가합니다.

    ...
    ---
    apiVersion: baremetal.cluster.gke.io/v1
    kind: Cluster
    metadata:
      name: user-basic
      namespace: cluster-user-basic
    spec:
      type: user
      ...
      binaryAuthorization:
        evaluationMode: "PROJECT_SINGLETON_POLICY_ENFORCE"
    

    evaluationMode에 허용되는 값은 다음과 같습니다.

    • PROJECT_SINGLETON_POLICY_ENFORCE: 프로젝트 싱글톤 정책이라고도 부르는 Binary Authorization 정책에 지정된 규칙을 Google Cloud 프로젝트에 적용하여 클러스터 컨테이너 이미지 배포를 제어합니다.

    • DISABLE: 클러스터에서 Binary Authorization의 사용을 중지합니다. 이 설정이 기본 설정입니다. binaryAuthorization을 생략하면 해당 기능이 중지됩니다.

  2. 클러스터 구성 파일에서 필요한 사항을 변경한 후 bmctl create cluster 명령어를 실행합니다.

클러스터 만들기에 대한 자세한 내용은 클러스터 만들기 개요를 참조하세요.

gcloud CLI

  • 사용자 클러스터를 만들고 Binary Authorization을 사용 설정하려면 gcloud container bare-metal clusters create 명령어를 실행할 때 --binauthz-evaluation-mode=PROJECT_SINGLETON_POLICY_ENFORCE 플래그를 추가합니다.

    이렇게 하면 프로젝트 싱글톤 정책으로도 알려진 Binary Authorization 정책에 지정된 규칙을 적용하는 사용자 클러스터가 생성됩니다. 이 정책은 Google Cloud 프로젝트와 연결되어 있으며, 컨테이너 이미지 배포를 제어하는 규칙을 지정합니다. gcloud CLI를 사용하여 사용자 클러스터를 만드는 방법에 대한 자세한 내용은 GKE On-Prem API 클라이언트를 사용하여 사용자 클러스터 만들기를 참조하세요. Binary Authorization 정책 및 규칙에 대한 자세한 내용은 Binary Authorization 개요를 참조하세요.

기존 클러스터에 Binary Authorization 정책 사용 설정 또는 사용 중지

기존 버전 1.16 이상의 클러스터가 있는 경우 bmctl 또는 gcloud CLI를 사용하여 언제든지 Binary Authorization을 사용 설정하거나 사용 중지할 수 있습니다.

bmctl

  • 사용 설정하려면 다음 안내를 따르세요.

    1. 클러스터 구성 파일을 수정하여 binaryAuthorization 필드를 추가합니다.

      ...
      ---
      apiVersion: baremetal.cluster.gke.io/v1
      kind: Cluster
      metadata:
        name: user-basic
        namespace: cluster-user-basic
      spec:
        type: user
        ...
        binaryAuthorization:
          evaluationMode: "PROJECT_SINGLETON_POLICY_ENFORCE"
      
    2. 클러스터를 업데이트합니다.

      bmctl update cluster -c CLUSTER_NAME --admin-kubeconfig=CLUSTER_KUBECONFIG
      

      다음을 바꿉니다.

      • CLUSTER_NAME: 업데이트할 클러스터의 이름입니다.
      • CLUSTER_KUBECONFIG: 클러스터 kubeconfig 파일의 경로입니다.
    3. binauthz-system 네임스페이스에 binauthz-module-deployment라는 배포가 준비될 때까지 기다립니다.

      배포가 준비되면 Binary Authorization은 프로젝트 싱글톤 정책이라고도 부르는 Binary Authorization 정책에 지정된 규칙을 적용합니다. 이 정책은 Google Cloud 프로젝트와 연결되어 있으며, 컨테이너 이미지 배포를 제어하는 규칙을 지정합니다. bmctl을 사용하여 클러스터를 업데이트하는 방법에 대한 자세한 내용은 클러스터 업데이트를 참조하세요. Binary Authorization 정책 및 규칙에 대한 자세한 내용은 Binary Authorization 개요를 참조하세요.

  • 사용 중지하려면 다음 안내를 따르세요.

    evaluationModeDISABLED로 설정하거나 클러스터 사양에서 binaryAuthorization 섹션을 삭제하여 이 기능을 해제할 수 있습니다. 변경한 후에는 binauthz-system 네임스페이스에서 binauthz-module-deployment라는 배포가 삭제될 때까지 몇 분 정도 기다립니다.

gcloud CLI

  • 기존 클러스터에 Binary Authorization을 사용 설정하려면 gcloud container bare-metal clusters update 명령어를 실행할 때 --binauthz-evaluation-mode=PROJECT_SINGLETON_POLICY_ENFORCE 플래그를 추가합니다.

    이렇게 하면 Binary Authorization이 프로젝트 싱글톤 정책이라고도 부르는 Binary Authorization 정책에 지정된 규칙을 시행하도록 사용자 클러스터를 업데이트합니다. 이 정책은 Google Cloud 프로젝트와 연결되어 있으며, 컨테이너 이미지 배포를 제어하는 규칙을 지정합니다. gcloud CLI를 사용하여 사용자 클러스터를 업데이트하는 방법에 대한 자세한 내용은 gcloud CLI 참조에서 gcloud container bare-metal clusters update를 참조하세요. Binary Authorization 정책 및 규칙에 대한 자세한 내용은 Binary Authorization 개요를 참조하세요.

  • 기존 클러스터에서 Binary Authorization을 사용 중지하려면 --binauthz-evaluation-mode=DISABLED 플래그와 함께 gcloud container bare-metal clusters update 명령어를 실행합니다.

문제 해결

기본 요건을 모두 완료하지 않은 경우 문제가 조기에 나타나지 않을 수 있습니다. Binary Authorization이 포드 생성 요청에 응답하지 못하면 ReplicaSet의 status.conditions를 확인합니다. 다음과 같은 메시지는 Binary Authorization 구성에 문제가 있음을 나타냅니다.

failed to validate Binary Authorization policy

(1) Ensure the Binary Authorization API is enabled for your Google Cloud project:
    gcloud services enable binaryauthorization.googleapis.com --project=PROJECT_ID
(2) Ensure an IAM policy binding is in place granting binaryauthorization.policyEvaluator role to the binauthz-system/binauthz-agent Kubernetes service account:
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member="serviceAccount:PROJECT_ID.svc.id.goog[binauthz-system/binauthz-agent]" \
        --role=roles/binaryauthorization.policyEvaluator