Binary Authorization 정책 시행 설정

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

기본 요건

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

  • Fleet을 사용하여 클러스터 등록: gkectl로 만든 클러스터는 클러스터 구성 파일의 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 정책 사용 설정

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

gkectl

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

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

    ...
    binaryAuthorization:
      evaluationMode: "project_singleton_policy_enforce"
    ...
    

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

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

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

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

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

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

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

gkectl

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

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

      ...
      binaryAuthorization:
        evaluationMode: "project_singleton_policy_enforce"
      
    2. 클러스터를 업데이트합니다.

      gkectl update cluster \
        --kubeconfig ADMIN_CLUSTER_KUBECONFIG \
        --config USER_CLUSTER_CONFIG_FILE \
        --force

      다음을 바꿉니다.

      • ADMIN_CLUSTER_KUBECONFIG: 관리자 클러스터 kubeconfig 파일의 경로입니다.
      • USER_CLUSTER_CONFIG_FILE: 사용자 클러스터 구성 파일의 경로입니다.
    3. binauthz-system 네임스페이스에 binauthz-module-deployment라는 배포가 준비될 때까지 기다립니다.

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

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

    1. 클러스터 구성 파일을 수정하고 binaryAuthorization 섹션을 삭제하거나 evaluationModedisabled로 설정합니다.

      ...
      binaryAuthorization:
        evaluationMode: "disabled"
      
    2. 클러스터를 업데이트합니다.

      gkectl update cluster \
        --kubeconfig ADMIN_CLUSTER_KUBECONFIG \
        --config USER_CLUSTER_CONFIG_FILE \
        --force

    변경 후 binauthz-system 네임스페이스에 binauthz-module-deployment라는 배포가 삭제될 때까지 몇 분 정도 기다립니다.

문제 해결

모든 기본 요건을 완료하지 않으면 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