Google Distributed Cloud 的二進位授權可讓您將託管的二進位授權部署階段強制執行功能,擴充至地端部署叢集。雖然二進位授權主要用於保護工作負載,但可與所有叢集類型搭配使用,套用 Google Cloud 專案中設定的政策強制執行規則。如要進一步瞭解政策和規則,請參閱「二進位授權總覽」。
必要條件
為叢集啟用二進位授權政策強制執行功能前,請確認您符合下列必要條件:
向機群註冊叢集:使用
bmctl建立的叢集會註冊到您在叢集設定檔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 後方安裝」。
滿足必要條件後,您可以在建立新叢集或更新現有叢集時,啟用 (或停用) 二進位授權政策。
在建立叢集時啟用二進位授權政策
您可以使用 bmctl 或 gcloud CLI,啟用二進位授權政策強制執行功能。
bmctl
如要在使用 bmctl 建立叢集時啟用二進位授權,請按照下列步驟操作:
建立叢集前,請將
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:在 Google Cloud 專案中強制執行二進位授權政策 (也稱為專案單例政策) 指定的規則,控管叢集上的容器映像檔部署作業。DISABLE:停用叢集的二進位授權。這是預設值。如果省略binaryAuthorization,系統會停用這項功能。
在叢集設定檔中進行其他必要變更,然後執行
bmctl create cluster指令。
如要進一步瞭解如何建立叢集,請參閱「叢集建立總覽」。
gcloud CLI
如要建立使用者叢集並啟用二進位授權,請在執行
gcloud container bare-metal clusters create指令時新增--binauthz-evaluation-mode=PROJECT_SINGLETON_POLICY_ENFORCE旗標。這會建立使用者叢集,強制執行二進位授權政策 (也稱為專案單例政策) 中指定的規則。這項政策與您的 Google Cloud 專案相關聯,並指定控管容器映像檔部署作業的規則。如要進一步瞭解如何使用 gcloud CLI 建立使用者叢集,請參閱「使用 GKE On-Prem API 用戶端建立使用者叢集」。如要進一步瞭解二進位授權政策和規則,請參閱「二進位授權總覽」。
啟用或停用現有叢集的二進位授權政策
如果您已有 1.16 以上版本的叢集,可以隨時使用 bmctl 或 gcloud CLI 啟用或停用二進位授權。
bmctl
如要啟用,請留意下列事項:
編輯叢集設定檔,新增
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"更新叢集:
bmctl update cluster -c CLUSTER_NAME --admin-kubeconfig=CLUSTER_KUBECONFIG更改下列內容:
CLUSTER_NAME:要更新的叢集名稱。CLUSTER_KUBECONFIG:叢集 kubeconfig 檔案的路徑。
等待
binauthz-system命名空間中名為binauthz-module-deployment的 Deployment 準備就緒。部署作業準備就緒後,二進位授權會強制執行二進位授權政策 (也稱為專案單例政策) 中指定的規則。這項政策與您的Google Cloud 專案相關聯,並指定控管容器映像檔部署作業的規則。如要進一步瞭解如何使用
bmctl更新叢集,請參閱「更新叢集」。如要進一步瞭解二進位授權政策和規則,請參閱「二進位授權總覽」。
如要停用,請按照下列步驟操作:
如要關閉這項功能,請將
evaluationMode設為DISABLED,或從叢集規格中移除binaryAuthorization區段。完成這項變更後,請稍候幾分鐘,直到binauthz-system命名空間中名為binauthz-module-deployment的 Deployment 移除為止。
gcloud CLI
如要為現有叢集啟用二進位授權,請在執行
gcloud container bare-metal clusters update指令時,新增--binauthz-evaluation-mode=PROJECT_SINGLETON_POLICY_ENFORCE旗標。這項操作會更新使用者叢集,讓二進位授權強制執行二進位授權政策 (也稱為專案單例政策) 中指定的規則。這項政策與您的Google Cloud 專案相關聯,並指定控管容器映像檔部署作業的規則。如要進一步瞭解如何使用 gcloud CLI 更新使用者叢集,請參閱 gcloud CLI 參考資料中的「gcloud container bare-metal clusters update」。如要進一步瞭解二進位授權政策和規則,請參閱「二進位授權總覽」。
如要停用現有叢集的二進位授權,請執行
gcloud container bare-metal clusters update指令並加上--binauthz-evaluation-mode=DISABLED旗標。
疑難排解
如果未完成所有必備條件,可能無法及早發現問題。如果二進位授權開始無法回應 Pod 建立要求,請檢查 ReplicaSet 的 status.conditions。如果出現類似下方的訊息,表示二進位授權設定有問題:
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