本頁說明如何使用組織政策服務,要求 GKE 叢集採用一或多項以持續驗證 (CV) 檢查為基礎的平台政策。您可以在自訂限制中指定必要的檢查式平台政策。接著,在組織政策中強制執行自訂限制。
費用
本指南使用下列 Google Cloud 服務:
- 二進位授權,但 CV 在預先發布版階段免費提供
- 組織政策和限制不會收取費用。
事前準備
- 啟用「二進位授權」。
- 設定以檢查為準的 CV 平台政策,以及至少一項以檢查為準的 CV 平台政策。
必要的角色
如要取得建立限制和強制執行組織政策所需的權限,請要求管理員授予您 Google Cloud 組織的組織政策管理員 (roles/orgpolicy.policyAdmin) IAM 角色。如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。
建立 CV 自訂限制
控制台
前往 Google Cloud 控制台的「Organization policies」(機構政策) 頁面。
在「Organization policies」(機構政策) 頁面,按一下 「Custom constraint」(自訂限制)。
如果系統提示,請按一下「切換至上層機構」。如要進一步瞭解機構,請參閱「機構政策服務簡介」
在「限制詳細資料」中,於欄位中輸入下列資訊:
顯示名稱:限制的顯示名稱,例如
Require a Binary Authorization continuous validation policy for all GKE clusters。 儲存限制後,您可以使用顯示名稱查詢限制。 顯示名稱欄位的長度上限為 200 個字元限制 ID:限制的限制 ID,例如
RequireBinAuthzCVPolicy。說明 (選填):違反政策時,要以錯誤訊息形式顯示的限制說明。說明欄位的長度上限為 2,000 個字元。
在「強制執行」中,執行下列操作:
在「Resource types」(資源類型) 中輸入
container.googleaips.com/Cluster。在「強制執行方式」中,選取「在建立及更新時強制執行」。
在「Condition」(條件) 欄位中輸入運算式。 這個欄位的長度上限為 1,000 個字元。當條件評估結果為
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 平台政策。 這個欄位的長度上限為 1,000 個字元。當條件評估結果為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:違反政策時,要以錯誤訊息形式顯示的易於理解限制說明。說明欄位的長度上限為 2,000 個字元。
套用自訂限制:
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 details」(政策詳細資料) 頁面中,按一下「Manage policy」(管理政策)。
在「Edit policy」(編輯政策) 頁面中,選取「Override parent's policy」(覆寫上層項目的政策)。
點選「新增規則」。
在「強制執行」部分,選取「開啟」。
選用:按一下「測試變更」,模擬這項組織政策的影響。詳情請參閱「使用 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,例如123456789CONSTRAINT_NAME:自訂限制的名稱
輸出結果會與下列內容相似:
Deleted custom constraint [organizations/123456789/customConstraints/CONSTRAINT_NAME]
刪除自訂限制後,使用該限制建立的任何政策都會繼續存在,但系統會忽略這些政策。您無法建立與已刪除自訂限制條件同名的自訂限制條件。