設定二進位授權政策強制執行

Google Distributed Cloud 的二進位授權可讓您將二進位授權的部署階段強制執行功能,擴充至地端部署使用者叢集,協助保護容器工作負載。您可以將 Google Cloud 專案中設定的政策強制執行規則,套用至 1.28 以上版本的使用者叢集。如要進一步瞭解政策和規則,請參閱「二進位授權總覽」。

如果您啟用了 Google Distributed Cloud 二進位授權的預先發布版,請先停用並清除資源,再於 1.28 以上版本的叢集啟用正式發布版功能。

必要條件

您必須先符合下列必要條件,才能為使用者叢集啟用二進位授權政策強制執行功能:

  • 向機群註冊叢集:如果是使用 gkectl 建立的叢集,叢集會註冊到您在叢集設定檔 gkeConnect.projectID 欄位中指定的 Google Cloud 專案。這項專案稱為機群主專案。如要進一步瞭解機群,包括用途、最佳做法和範例,請參閱機群管理說明文件。

  • 在 Google Cloud 專案中啟用二進位授權 API:在機群主專案中啟用二進位授權服務。

  • 將二進位授權政策評估者角色新增至機群主專案:如要將二進位授權政策評估者 (roles/binaryauthorization.policyEvaluator) 角色授予機群主專案中的 Kubernetes 服務帳戶,請執行下列指令:

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

    如果叢集在 Proxy 伺服器後方執行,請確認 Proxy 伺服器允許連線至二進位授權 API (binaryauthorization.googleapis.com)。這個 API 會針對部署至叢集的映像檔,提供以政策為基礎的部署驗證和控管功能。詳情請參閱「Proxy 和防火牆規則」。

符合必要條件後,您可以在建立新叢集或更新現有叢集時,啟用 (或停用) 二進位授權政策。

在建立叢集時啟用二進位授權政策

您可以使用 gkectl 或 gcloud CLI,啟用二進位授權政策強制執行功能。

gkectl

如要在使用 gkectl 建立叢集時啟用二進位授權,請按照下列步驟操作:

  1. 建立叢集之前,請將 binaryAuthorization.evaluationMode 新增至使用者叢集設定檔,如以下範例所示:

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

    evaluationMode 的允許值如下:

    • project_singleton_policy_enforce:在 Google Cloud 專案中強制執行二進位授權政策 (也稱為專案單例政策) 指定的規則,控管叢集上的容器映像檔部署作業。

    • disabled:停用叢集的二進位授權。這是預設值。如果省略 binaryAuthorization,系統會停用這項功能。

  2. 在叢集設定檔中進行其他必要變更,然後執行 gkectl create cluster 指令。

如要進一步瞭解如何建立叢集,請參閱「Google Distributed Cloud 安裝總覽」。

啟用或停用現有叢集的二進位授權政策

如果您已有 1.28 以上版本的叢集,可以隨時使用 gkectl 或 gcloud CLI 啟用或停用二進位授權。

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 的 Deployment 準備就緒。

      部署作業準備就緒後,二進位授權會強制執行二進位授權政策 (也稱為專案單例政策) 中指定的規則。這項政策與您的Google Cloud 專案相關聯,並指定控管容器映像檔部署作業的規則。如要進一步瞭解如何使用 gkectl 更新叢集,請參閱「更新叢集」。如要進一步瞭解二進位授權政策和規則,請參閱「二進位授權總覽」。

  • 如要停用,請按照下列步驟操作:

    1. 編輯叢集設定檔,然後移除 binaryAuthorization 區段,或將 evaluationMode 設為 disabled。

      ...
      binaryAuthorization:
        evaluationMode: "disabled"
      
    2. 更新叢集:

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

    完成這項變更後,請稍候幾分鐘,直到 binauthz-system 命名空間中名為 binauthz-module-deployment 的 Deployment 移除。

疑難排解

如果未完成所有必要條件,您可能會看到類似下列訊息,指出二進位授權設定有問題:

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.[binauthz-system/binauthz-agent]" \
        --role=roles/binaryauthorization.policyEvaluator