Google Cloud 組織政策可讓您透過程式輔助,集中控管組織的資源。組織政策管理員可以定義組織政策,也就是一組稱為「限制」的限制,適用於Google Cloud 資源和這些資源在Google Cloud 資源階層中的子系。您可以在組織、資料夾或專案層級強制執行組織政策。
機構政策提供各種Google Cloud 服務的預先定義限制。不過,如要更精細地自訂組織政策中受限的特定欄位,您也可以建立自訂組織政策。
實作自訂機構政策可強制執行一致的設定和限制。這項功能會驗證 PostgreSQL 適用的 AlloyDB 叢集、執行個體和備份是否符合安全防護最佳做法和法規要求。
如果嘗試在強制執行自訂限制時建立或更新叢集、執行個體或備份,但這些資源不符合限制,作業就會失敗。加入使用自訂機構政策的機構或資料夾後,專案會繼承該政策的限制。
政策繼承
根據預設,您強制執行政策的資源子系會繼承組織政策。舉例來說,如果您對資料夾強制執行政策, Google Cloud 會對該資料夾中的所有專案強制執行政策。如要進一步瞭解這項行為以及如何變更,請參閱這篇文章。
定價
組織政策服務 (包括預先定義和自訂組織政策) 免費提供。
限制
如同所有組織政策限制,政策變更不會回溯套用至現有的 AlloyDB for PostgreSQL 叢集、執行個體和備份。
- 新政策不會影響現有的叢集、執行個體和備份設定。
- 除非您使用 Google Cloud 控制台、Google Cloud CLI 或 RPC,將現有叢集、執行個體或備份設定從符合規範的狀態變更為不符合規範的狀態,否則現有設定仍有效。
- 排定的維護更新不會導致政策強制執行,因為維護作業不會變更叢集、執行個體或備份的設定。
- 透過「持續備份與還原」和「自動備份」功能建立的備份,不會受到政策本身的限制。
事前準備
- 設定專案。
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the AlloyDB API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles. -
Install the Google Cloud CLI.
-
若您採用的是外部識別資訊提供者 (IdP),請先使用聯合身分登入 gcloud CLI。
-
執行下列指令,初始化 gcloud CLI:
gcloud init -
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the AlloyDB API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles. -
Install the Google Cloud CLI.
-
若您採用的是外部識別資訊提供者 (IdP),請先使用聯合身分登入 gcloud CLI。
-
執行下列指令,初始化 gcloud CLI:
gcloud init - 請確認您知道機構 ID。
-
機構資源的機構政策管理員 (
roles/orgpolicy.policyAdmin) -
如要建立或更新 AlloyDB 叢集:專案資源的 AlloyDB 管理員 (
roles/alloydb.admin) ORGANIZATION_ID:組織 ID,例如123456789。CONSTRAINT_NAME:新自訂限制的名稱。自訂限制必須以custom.開頭,且只能包含大/小寫英文字母或數字,例如 custom.restrictPublicIP。這個欄位的長度上限為 70 個字元,不含前置字元,例如organizations/123456789/customConstraints/custom。RESOURCE_NAME:內含要限制的物件和欄位的 AlloyDB REST 資源名稱 (而非 URI)。例如:Instance。CONDITION:為支援服務資源表示法所撰寫的 CEL 條件。這個欄位的長度上限為 1,000 個字元。如要進一步瞭解可編寫條件的資源,請參閱「支援的自訂限制」。例如"resource.networkConfig.enablePublicIp == true"。ACTION:符合condition時採取動作。可以是ALLOW或DENY。DISPLAY_NAME:容易記得的限制名稱。這個欄位的長度上限為 200 個字元。DESCRIPTION:違反政策時,會以錯誤訊息形式顯示且易於理解的限制說明。這個欄位的長度上限為 2,000 個字元。- 前往 Google Cloud 控制台的「Organization policies」(組織政策) 頁面。
- 在專案選擇工具中,選取要設定組織政策的專案。
- 按一下「自訂限制」。
- 在「顯示名稱」方塊中,輸入容易理解的限制名稱。這個名稱會顯示在錯誤訊息中,可用於識別和偵錯。請勿在顯示名稱中使用 PII 或機密資料,因為錯誤訊息可能會顯示這類名稱。這個欄位最多可包含 200 個字元。
-
在「Constraint ID」(限制 ID) 方塊中,輸入新自訂限制的名稱。自訂限制只能包含字母 (包括大寫和小寫) 或數字,例如
custom.disableGkeAutoUpgrade。這個欄位最多可包含 70 個字元,不含前置字元 (custom.),例如organizations/123456789/customConstraints/custom。請勿在限制 ID 中輸入 PII 或機密資料,因為錯誤訊息可能會顯示上述資訊。 - 在「Description」(說明) 方塊中,輸入使用者可理解的限制說明。違反政策時,系統會顯示這項說明做為錯誤訊息。請提供違反政策的詳細原因,以及如何解決問題。請勿在說明中輸入 PII 或機密資料,因為錯誤訊息可能會顯示上述資訊。這個欄位最多可輸入 2000 個字元。
-
在「Resource type」方塊中,選取包含要限制物件和欄位的 Google Cloud REST 資源名稱,例如
container.googleapis.com/NodePool。大多數資源類型最多支援 20 個自訂限制。如果您嘗試建立更多自訂限制,作業會失敗。 - 在「強制執行方法」下方,選取要對 REST 「CREATE」方法強制執行限制,還是對「CREATE」和「UPDATE」方法都強制執行限制。如果您使用 UPDATE 方法,對違反限制的資源強制執行限制,除非變更可解決違規問題,否則組織政策會封鎖對該資源的變更。
- 如要定義條件,請按一下「編輯條件」。
-
在「新增條件」面板中,建立參照支援服務資源的 CEL 條件,例如
resource.management.autoUpgrade == false。這個欄位最多可輸入 1000 個字元。如要進一步瞭解如何使用 CEL,請參閱「 一般運算語言」。如要進一步瞭解自訂限制中可使用的服務資源,請參閱「 自訂限制支援的服務」。 - 按一下 [儲存]。
- 在「動作」下方,選取符合條件時要允許或拒絕評估方法。
- 按一下「建立限制」。
- 如要建立自訂限制,請使用下列格式建立 YAML 檔案:
-
ORGANIZATION_ID:您的機構 ID,例如123456789。 -
CONSTRAINT_NAME:新自訂限制的名稱。自訂限制只能包含字母 (包括大寫和小寫) 或數字,例如custom.restrictPublicIP。這個欄位最多可包含 70 個字元。 -
RESOURCE_NAME:內含要限制的物件和欄位的 Google Cloud 資源完整名稱,例如:。Instance -
CONDITION:針對支援服務資源表示法所撰寫的 CEL 條件。這個欄位最多可輸入 1000 個字元。例如:。"resource.networkConfig.enablePublicIp == true" -
ACTION:符合condition時採取的動作。只能是ALLOW。 -
DISPLAY_NAME:容易記得的限制名稱。這個欄位最多可包含 200 個字元。 -
DESCRIPTION:違反政策時,會以錯誤訊息形式顯示且易於理解的限制說明。這個欄位最多可輸入 2000 個字元。 -
為新的自訂限制建立 YAML 檔案後,您必須加以設定,才能用於組織的組織政策。如要設定自訂限制,請使用
gcloud org-policies set-custom-constraint指令: -
如要確認是否存在自訂限制,請使用
gcloud org-policies list-custom-constraints指令: - 前往 Google Cloud 控制台的「Organization policies」(組織政策) 頁面。
- 在專案選擇工具中,選取要設定組織政策的專案。
- 在「Organization policies」(組織政策) 頁面的清單中選取限制,即可查看該限制的「Policy details」(政策詳細資料) 頁面。
- 如要為這項資源設定組織政策,請按一下「Manage policy」(管理政策)。
- 在「Edit policy」(編輯政策) 頁面,選取「Override parent's policy」(覆寫上層政策)。
- 按一下「Add a rule」(新增規則)。
- 在「Enforcement」(強制執行) 部分,選取是否要強制執行這項機構政策。
- 選用:如要根據標記設定組織政策的條件,請按一下「Add condition」(新增條件)。請注意,如果為組織政策新增條件式規則,您必須至少新增一項無條件規則,否則無法儲存政策。詳情請參閱「 使用標記設定組織政策」。
- 按一下「Test changes」(測試變更),模擬組織政策的影響。詳情請參閱「 使用 Policy Simulator 測試組織政策變更」。
- 如要在模擬測試模式下強制執行組織政策,請按一下「設定模擬測試政策」。詳情請參閱「 以模擬測試模式建立組織政策」。
- 確認機構政策在模擬執行模式下運作正常後,請按一下「設定政策」,設定正式政策。
- 如要建立含有布林值規則的組織政策,請建立參照限制的政策 YAML 檔案:
-
PROJECT_ID:要強制執行限制的專案。 -
CONSTRAINT_NAME:要為自訂限制定義的名稱,例如custom.restrictPublicIP。 -
如要以模擬測試模式強制執行組織政策,請執行下列指令並加上
dryRunSpec旗標: -
確認模擬測試模式中的機構政策能發揮預期效果後,請使用
org-policies set-policy指令和spec旗標設定正式政策: - 建立執行個體
- 執行個體更新
- 建立叢集
- 更新叢集
- 建立備份
- 使用機構政策限制公開 IP 存取權
- 限制授權網路的 CIDR 範圍
- 限制授權網路數量
- 使用機構政策強制執行必要標記
- 強制所有叢集啟用持續備份功能
- 限制特定叢集的隨需備份
- 建立執行個體
- 執行個體更新
- 建立執行個體
- 執行個體更新
- 建立執行個體
- 執行個體更新
- 建立叢集
- 建立備份
- 建立叢集
- 更新叢集
- 建立備份
- 如要進一步瞭解組織政策,請參閱組織政策服務簡介。
- 進一步瞭解如何建立及管理組織政策。
- 查看預先定義組織政策限制的完整清單。
- 使用公開 IP 連線。
- 建立主要執行個體。
必要的角色
如要取得管理組織政策所需的權限,請要求管理員授予您下列 IAM 角色:
如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。
建立自訂限制
自訂限制是在 YAML 檔案中定義,其中包含您要強制執行組織政策的服務所支援的資源、方法、條件和動作。自訂限制的條件是使用一般運算語言 (CEL) 來定義。如要進一步瞭解如何使用 CEL 在自訂限制中建構條件,請參閱「建立及管理自訂限制」的 CEL 相關章節。
機構政策由每項限制條件所設定的值來定義。組織政策管理員可以建立自訂限制,在專案、資料夾或機構層級限制 AlloyDB 的公用 IP 設定。
您可以建立自訂限制,例如
customConstraints/custom.restrictPublicIP,限制 AlloyDB 執行個體的公開 IP 存取權。如果設定這項布林值限制,就無法針對 AlloyDB 執行個體設定公開 IP。這項限制不會溯及既往。即使強制執行這項限制,目前設有公開 IP 存取權的 AlloyDB 執行個體仍可正常運作。根據預設,AlloyDB 執行個體可設定公開 IP 存取權。
請按照下列步驟,為自訂限制建立 YAML 檔案:
name: organizations/ORGANIZATION_ID/customConstraints/CONSTRAINT_NAME resourceTypes: - alloydb.googleapis.com/RESOURCE_NAME methodTypes: - CREATE - UPDATE condition: "CONDITION" actionType: ACTION displayName: DISPLAY_NAME description: DESCRIPTION更改下列內容:
如要進一步瞭解如何建立自訂限制,請參閱「定義自訂限制」。
設定自訂限制
控制台
如要建立自訂限制,請按照下列步驟操作:
並非所有 Google Cloud 服務都支援這兩種方法。如要查看各項服務支援的方法,請在「 支援的服務」中找出該服務。
如果條件評估結果為 true,系統就會封鎖建立或更新資源的作業。
允許動作是指只有在條件評估為 true 時,才允許建立或更新資源的作業。除了條件中明確列出的情況外,所有其他情況都會遭到封鎖。
在每個欄位中輸入值後,右側會顯示這個自訂限制的對等 YAML 設定。
gcloud
name: organizations/ORGANIZATION_ID/customConstraints/CONSTRAINT_NAME resourceTypes: - RESOURCE_NAME methodTypes: - CREATE condition: "CONDITION" actionType: ACTION displayName: DISPLAY_NAME description: DESCRIPTION
請替換下列項目:
如要進一步瞭解可編寫條件的資源,請參閱「支援的資源」。
允許動作表示如果條件評估結果為 true,系統會允許建立或更新資源的作業。這也表示系統會封鎖條件中明確列出的情況以外的所有其他情況。
gcloud org-policies set-custom-constraint CONSTRAINT_PATH
請將
CONSTRAINT_PATH替換為自訂限制檔案的完整路徑,例如:/home/user/customconstraint.yaml。這項作業完成後,自訂限制會顯示在 Google Cloud 組織政策清單中,供組織政策使用。
gcloud org-policies list-custom-constraints --organization=ORGANIZATION_ID
請將
ORGANIZATION_ID替換成組織資源的 ID。詳情請參閱「 查看組織政策」。
強制執行自訂組織政策
如要強制執行限制,請建立參照該限制的組織政策,然後將組織政策套用至 Google Cloud 資源。控制台
gcloud
name: projects/PROJECT_ID/policies/CONSTRAINT_NAME spec: rules: - enforce: true dryRunSpec: rules: - enforce: true
請替換下列項目:
gcloud org-policies set-policy POLICY_PATH \ --update-mask=dryRunSpec
請將
POLICY_PATH替換為組織政策 YAML 檔案的完整路徑。政策最多需要 15 分鐘才會生效。gcloud org-policies set-policy POLICY_PATH \ --update-mask=spec
請將
POLICY_PATH替換為組織政策 YAML 檔案的完整路徑。政策最多需要 15 分鐘才會生效。支援的自訂限制和作業
您可以對 AlloyDB 執行個體、叢集和備份資源強制執行自訂限制。自訂限制支援 AlloyDB instance、cluster 和 backup 資源的所有 v1 欄位。您可以在下列 AlloyDB 作業期間強制執行自訂限制:
本節提供下列常見自訂限制的範例:
使用機構政策限制公開 IP 存取權
name: organizations/ORGANIZATION_ID/customConstraints/custom.restrictPublicIP resourceTypes: - alloydb.googleapis.com/Instance methodTypes: - CREATE - UPDATE condition: "resource.networkConfig.enablePublicIp == true" actionType: DENY displayName: Restrict public IP access on AlloyDB instances description: Prevent users from enabling public IP on instance creation and update.
支援的作業:
限制授權網路的 CIDR 範圍
name: organizations/ORGANIZATION_ID/customConstraints/custom.restrictCidrRange resourceTypes: - alloydb.googleapis.com/Instance methodTypes: - CREATE - UPDATE condition: "resource.networkConfig.authorizedExternalNetworks.exists(net, ['/0', '/1', '/2', '/n'].exists(ending, net.cidrRange.endsWith(ending)))" actionType: DENY displayName: "Restrict large CIDR ranges for AlloyDB Authorized Networks" description: "Prevents AlloyDB instances from being created or updated with an authorized network CIDR range larger than /n (i.e., a prefix length less than n, e.g., 16)."
將 ORGANIZATION_ID 替換為機構 ID。
支援的作業:
限制授權網路數量
name: organizations/ORGANIZATION_ID/customConstraints/custom.restrictAuthorizedNetworksCount resourceTypes: - alloydb.googleapis.com/Instance methodTypes: - CREATE - UPDATE condition: "resource.networkConfig.authorizedExternalNetworks.size() > 1" actionType: DENY displayName: "Limit the number of AlloyDB Authorized Networks" description: "Prevents AlloyDB instances from being created or updated with more than a specified number of Authorized Networks."
將 ORGANIZATION_ID 替換為機構 ID。
支援的作業:
使用機構政策強制執行必要標記
name: organizations/ORGANIZATION_ID/customConstraints/custom.enforceMandatoryTags resourceTypes: - alloydb.googleapis.com/Cluster methodTypes: actionType: ALLOW displayName: Enforce mandatory tags on AlloyDB cluster resource. description: Prevent users from cluster creation if mandatory tags are not provided.
將 TAG_NAME 替換為標記名稱。
支援的作業: 支援的作業:
強制所有叢集啟用持續備份功能
name: organizations/ORGANIZATION_ID/customConstraints/custom.enforceContBackupConfig resourceTypes: - alloydb.googleapis.com/Cluster methodTypes: - CREATE - UPDATE condition: "resource.continuousBackupConfig.enabled == false" actionType: DENY displayName: Enforce continuous backup configuration on AlloyDB clusters description: Prevent users from disabling continuous backup configuration on cluster creation and update.
支援的作業:
限制特定叢集的隨需備份
name: organizations/ORGANIZATION_ID/customConstraints/custom.restrictOnDemandBackup resourceTypes: - alloydb.googleapis.com/Backup methodTypes: - CREATE condition: "resource.type == 'ON_DEMAND' && resource.clusterName.contains('CLUSTER_NAME')" actionType: DENY displayName: Restrict taking on-demand backup of certain clusters description: Prevent users from taking on-demand backups for certain clusters.
將 CLUSTER_NAME 替換為叢集名稱。
支援的作業:
後續步驟