Google Distributed Cloud 的二進位授權是一項 Google Cloud 功能,可將主機代管的部署時間強制執行二進位授權功能,擴展至您的地端部署使用者叢集。Google Distributed Cloud 上的二進位授權主要用途是保護使用者叢集上的工作負載。請按照本指南中的步驟,將 Google Cloud 專案中設定的二進位授權政策強制執行規則,套用至使用者叢集。如要進一步瞭解二進位授權政策和規則,請參閱「 二進位授權總覽」。
必要條件
為使用者叢集啟用二進位授權政策強制執行功能前,請確認您符合下列先決條件:
向機群註冊叢集:使用
gkectl建立叢集時,叢集會註冊至您在叢集設定檔的gkeConnect.projectID欄位中指定的 Google Cloud 專案。這個專案稱為「機群主專案」。如要進一步瞭解機群 (包括用途、最佳做法和範例),請參閱機群管理文件。在 Google Cloud 專案中啟用二進位授權 API:在機群主機專案中啟用二進位授權服務。
將二進位授權政策評估者角色新增至機群主機專案:如要將二進位授權政策評估者 (
roles/binaryauthorization.policyEvaluator) 角色授予機群主機專案的 Kubernetes 服務帳戶,請執行下列指令:gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:PROJECT_ID.svc.id.goog[binauthz-system/binauthz-agent]" \ --role="roles/binaryauthorization.policyEvaluator"如果叢集在 Proxy 伺服器後方執行,請確認 Proxy 伺服器允許連線至二進位授權 API (
binaryauthorization.googleapis.com)。這個 API 可根據政策驗證及控管部署至叢集的映像檔。詳情請參閱「Proxy 和防火牆規則 Proxy」。
滿足必要條件後,您可以在建立新叢集或更新現有叢集時,啟用 (或停用) 二進位授權政策。
在建立叢集時啟用二進位授權政策
您可以使用 gkectl 或 gcloud CLI 啟用二進位授權政策強制執行功能。
gkectl
如要在使用 gkectl 建立叢集時啟用二進位授權,請按照下列步驟操作:
建立叢集前,請先將
binaryAuthorization.evaluationMode新增至使用者叢集設定檔,如下列範例所示:... binaryAuthorization: evaluationMode: "project_singleton_policy_enforce" ...evaluationMode的有效值如下:project_singleton_policy_enforce:在 Google Cloud 專案中強制執行 Binary Authorization 政策 (也稱為專案單一政策) 中指定的規則,控管叢集上容器映像檔的部署作業。disabled:停用叢集的二進位授權。這是預設值。如果省略binaryAuthorization,這項功能就會停用。
在叢集設定檔中進行其他必要變更,然後執行
gkectl create cluster指令。
如要進一步瞭解如何建立叢集,請參閱「Google Distributed Cloud 安裝作業總覽」。
為現有叢集啟用或停用二進位授權政策
如果您有現有的 1.28 以上版本叢集,隨時可以使用 gkectl 或 gcloud CLI 啟用或停用二進位授權。
gkectl
如要啟用,請留意下列事項:
編輯叢集設定檔,新增
binaryAuthorization欄位:... binaryAuthorization: evaluationMode: "project_singleton_policy_enforce"更新叢集:
gkectl update cluster \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG \ --config USER_CLUSTER_CONFIG_FILE \ --force
更改下列內容:
ADMIN_CLUSTER_KUBECONFIG:管理員叢集 kubeconfig 檔案的路徑USER_CLUSTER_CONFIG_FILE:使用者叢集設定檔的路徑。
等待
binauthz-system命名空間中名為binauthz-module-deployment的部署作業準備就緒。部署作業準備就緒後,二進位授權會強制執行二進位授權政策中指定的規則,也就是專案單例政策。這項政策與您的Google Cloud 專案相關聯,並指定管理容器映像檔部署作業的規則。如要進一步瞭解如何使用
gkectl更新叢集,請參閱「更新叢集」。如要進一步瞭解二進位授權政策和規則,請參閱「二進位授權總覽」。
如要停用,請按照下列步驟操作:
編輯叢集設定檔,然後移除
binaryAuthorization區段,或將evaluationMode設為disabled。... binaryAuthorization: evaluationMode: "disabled"更新叢集:
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.svc.id.goog[binauthz-system/binauthz-agent]" \ --role=roles/binaryauthorization.policyEvaluator