本頁說明如何使用 Organization Policy Service,要求 GKE 叢集採用一或多項以連續驗證 (CV) 檢查為基礎的平台政策。您可以在自訂限制條件中指定必要的檢查式平台政策。然後在機構政策中強制執行自訂限制。
費用
本指南使用下列 Google Cloud 服務:
- 二進位授權,但 CV 在預先發布版階段免費提供
- 機構政策和限制免費提供。
事前準備
- 啟用二進位授權。
- 設定以檢查為準的 CV 平台政策,以及至少一項以檢查為準的 CV 平台政策。
必要的角色
如要取得建立限制和強制執行組織政策所需的權限,請要求管理員為您授予組織的組織政策管理員 (roles/orgpolicy.policyAdmin
) 身分與存取權管理角色。 Google Cloud 如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。
建立 CV 自訂限制
控制台
前往 Google Cloud 控制台的「Organization policies」(機構政策) 頁面。
在「機構政策」頁面,按一下「自訂限制」
。如果系統提示,請按一下「切換至上層機構」。如要進一步瞭解機構,請參閱機構政策服務簡介
在「限制詳細資料」中,於欄位中輸入下列資訊:
顯示名稱:限制的顯示名稱,例如
Require a Binary Authorization continuous validation policy for all GKE clusters
。儲存限制後,您可以使用顯示名稱查詢限制。 顯示名稱欄位的長度上限為 200 個字元限制 ID:限制的限制 ID,例如
RequireBinAuthzCVPolicy
。說明 (選填):違反政策時,要以錯誤訊息形式顯示的限制說明。說明欄位的長度上限為 2000 個字元。
在「強制執行」中,執行下列操作:
在「Resource types」(資源類型) 中輸入
container.googleaips.com/Cluster
。在「強制執行方式」中,選取「在建立及更新時強制執行」。
在「Condition」(條件) 欄位中輸入運算式。 這個欄位的長度上限為 1000 個字元。當條件評估結果為
true
時,系統會強制執行自訂限制。條件是一般運算語言 (CEL) 語法中的運算式。您可以使用 and (&&
) 和 or (||
) 結合運算式,建立複雜條件。CEL 是一種類似 C 的運算式語言,如要進一步瞭解 CEL 的語法和語意,請參閱 https://github.com/google/cel-spec。 如要輸入條件,請執行下列步驟:按一下「編輯條件」
。輸入運算式,檢查是否有 CV 平台政策。 下列條件規定必須存在 CV 平台政策繫結,且平台政策必須具有特定名稱:
resource.binaryAuthorization.policyBindings.exists(policy, policy.name == "projects/PROJECT_ID/platforms/gke/policies/POLICY_ID")
更改下列內容:
PROJECT_ID
:平台政策的專案 ID。專案必須位於同一個機構。POLICY_ID
:平台政策的政策 ID。
下列條件要求存在兩個 CV 平台政策繫結,且每個繫結都有特定的平台政策名稱。
resource.binaryAuthorization.policyBindings.exists(policy, policy.name == "projects/PROJECT_ID1/platforms/gke/policies/POLICY_ID1") && resource.binaryAuthorization.policyBindings.exists(policy, policy.name == "projects/PROJECT_ID2/platforms/gke/policies/POLICY_ID2")
PROJECT_ID1
:第一個平台政策的專案 ID。專案必須位於同一個機構。POLICY_ID1
:第一個平台政策的政策 ID。PROJECT_ID2
:第二個平台政策的專案 ID。POLICY_ID2
:第二個平台政策的政策 ID。按一下 [儲存]。
在「動作」中選取「允許」。
如要建立自訂限制,請按一下「建立限制」。
gcloud
建立自訂限制的 YAML 檔案:
name: organizations/ORGANIZATION_ID/customConstraints/custom.CONSTRAINT_ID resource_types: container.googleapis.com/Cluster method_types: - CREATE - UPDATE condition: >- CONDITION action_type: ACTION display_name: DISPLAY_NAME description: DESCRIPTION
更改下列內容:
ORGANIZATION_ID
:貴機構的 ID,例如123456789
。CONSTRAINT_ID
:限制 ID,例如RequireBinAuthzCVPolicy
。CONDITION
:輸入運算式,檢查是否有 CV 平台政策。 這個欄位的長度上限為 1000 個字元。當條件評估結果為true
時,系統會強制執行自訂限制。條件是一般運算語言 (CEL) 語法中的運算式。您可以使用 and (&&
) 和 or (||
) 結合運算式,建立複雜條件。CEL 是一種類似 C 的運算式語言,如要進一步瞭解 CEL 的語法和語意,請參閱 https://github.com/google/cel-spec。 下列條件規定必須存在 CV 平台政策繫結,且平台政策具有特定名稱:resource.binaryAuthorization.policyBindings.exists(policy, policy.name == "projects/PROJECT_ID/platforms/gke/policies/POLICY_ID")
更改下列內容:
PROJECT_ID
:平台政策的專案 ID。專案必須位於同一個機構。POLICY_ID
:平台政策的政策 ID。
下列條件要求存在兩個 CV 平台政策繫結,且每個繫結都有特定的平台政策名稱。
resource.binaryAuthorization.policyBindings.exists(policy, policy.name == "projects/PROJECT_ID1/platforms/gke/policies/POLICY_ID1") && resource.binaryAuthorization.policyBindings.exists(policy, policy.name == "projects/PROJECT_ID2/platforms/gke/policies/POLICY_ID2")
PROJECT_ID1
:第一個平台政策的專案 ID。專案必須位於同一個機構。POLICY_ID1
:第一個平台政策的政策 ID。PROJECT_ID2
:第二個平台政策的專案 ID。POLICY_ID2
:第二個平台政策的政策 ID。ACTION
:符合condition
時要採取的動作。可以是ALLOW
或DENY
。DISPLAY_NAME
:限制的人性化名稱,例如Require a Binary Authorization continuous validation policy for all GKE clusters
。 顯示名稱欄位的長度上限為 200 個字元DESCRIPTION
:違反政策時,要以錯誤訊息形式顯示的限制說明。說明欄位的長度上限為 2000 個字元。
套用自訂限制:
gcloud org-policies set-custom-constraint CUSTOM_CONSTRAINT_PATH
將
CUSTOM_CONSTRAINT_PATH
替換為自訂限制定義的路徑。確認自訂限制是否存在:
gcloud org-policies list-custom-constraints \ --organization=ORGANIZATION_ID
輸出結果會與下列內容相似:
CUSTOM_CONSTRAINT: custom.RequireBinAuthzCVPolicy ACTION_TYPE: ALLOW METHOD_TYPES: CREATE,UPDATE RESOURCE_TYPES: container.googleapis.com/Cluster DISPLAY_NAME: This cluster requires the continuous validation policy: projects/my-project/platforms/gke/policies/my-policy
如要強制執行您建立的自訂限制,請建立機構政策。
使用機構政策強制執行自訂限制
如要強制執行新的自訂限制,請建立參照該限制的機構政策,然後套用該政策。
控制台
如要強制執行限制,請按照下列步驟操作:
前往 Google Cloud 控制台的「Organization policies」(機構政策) 頁面。
選取專案選擇工具,然後選取機構。
在清單中搜尋並選取限制。
在該限制的「政策詳細資料」頁面中,按一下「管理政策」。
在「編輯政策」頁面中,選取「覆寫上層政策」。
點選「新增規則」。
在「強制執行」部分,選取「開啟」。
選用:按一下「測試變更」,模擬這項機構政策的影響。詳情請參閱「使用 Policy Simulator 測試組織政策變更」。
如要完成並套用機構政策,請按一下「設定政策」。
gcloud
建立 YAML 政策定義檔案:
name: organizations/ORGANIZATION_ID/policies/custom.CONSTRAINT_ID spec: rules: - enforce: true
更改下列內容:
ORGANIZATION_ID
:機構 IDCONSTRAINT_ID
:限制 ID
強制執行政策:
gcloud org-policies set-policy ORG_POLICY_PATH
請將
ORG_POLICY_PATH
替換為政策定義檔案的路徑。確認政策存在:
gcloud org-policies list \ --organization=ORGANIZATION_ID
將
ORGANIZATION_ID
替換為機構 ID。如需引數清單,請參閱
gcloud org-policies list
。輸出結果會與下列內容相似:
CONSTRAINT: custom.RequireBinAuthzCVPolicy LIST_POLICY: - BOOLEAN_POLICY: SET ETAG: CN622LIGEIDXnpMB-
政策最多可能需要 15 分鐘才會生效。
如要對以 CV 檢查為依據的平台政策強制執行多項限制,請按照下列步驟操作:
- 每個 CV 檢查型政策建立一個自訂限制。
- 如要使用每個自訂限制條件更新機構政策,請參閱本節說明。
刪除自訂限制
您可以使用 Google Cloud 控制台或 Google Cloud CLI 刪除自訂限制。
控制台
前往 Google Cloud 控制台的「Organization policies」(機構政策) 頁面。
選取頁面頂端的專案挑選器。
在專案選擇工具中選取機構。
在清單中搜尋並選取限制。
在「Constraint details」(限制詳細資料) 中,按一下
「Delete」(刪除)。按一下「刪除」,確認要刪除限制。
gcloud
如要刪除自訂限制,請使用 org-policies delete-custom-constraint
gcloud CLI 指令:
gcloud org-policies delete-custom-constraint custom.CONSTRAINT_ID \
--organization=ORGANIZATION_ID
更改下列內容:
ORGANIZATION_ID
:您的機構 ID,例如123456789
CONSTRAINT_NAME
:自訂限制的名稱
輸出結果會與下列內容相似:
Deleted custom constraint [organizations/123456789/customConstraints/CONSTRAINT_NAME]
刪除自訂限制後,使用該限制建立的任何政策都會繼續存在,但系統會忽略這些政策。您無法建立與已刪除自訂限制條件同名的自訂限制條件。