本文說明如何為 Memorystore for Valkey 執行個體建立、設定及管理自訂機構政策限制。如要瞭解自訂機構政策,請參閱「自訂機構政策」。
Google Cloud 組織政策服務可讓您透過程式輔助,集中控管組織的資源。組織政策管理員可以定義組織政策,也就是一組稱為「限制」的限制條件,適用於 Google Cloud 資源和這些資源在Google Cloud 資源階層中的子系。您可以在組織、資料夾或專案層級,強制執行組織政策。
組織政策服務提供各種 Google Cloud 服務的預先定義限制,包括 Memorystore for Valkey。不過,如要更精細地自訂組織政策中受限的特定欄位,您可以建立自訂限制,並用於組織政策。
實作自訂機構政策限制,即可強制執行一致的設定和限制。這項功能會驗證執行個體是否符合安全性最佳做法和法規要求。
您可以透過自訂機構政策,允許或拒絕 Memorystore for Valkey 資源。舉例來說,如果您嘗試在強制執行自訂限制時建立或更新執行個體,且該執行個體不符合限制,則 Memorystore for Valkey 不會建立或更新執行個體。此外,如果專案加入使用自訂機構政策的機構或資料夾,也會沿用該政策的限制。
政策繼承
根據預設,您強制執行政策的資源子系會繼承組織政策。舉例來說,如果您對資料夾強制執行政策, Google Cloud 會對該資料夾中的所有專案強制執行政策。如要進一步瞭解這項行為以及如何變更,請參閱這篇文章。
事前準備
開始使用自訂機構政策前,請先完成本節中的必要條件。
使用 Google Cloud 控制台、Google Cloud CLI 和 API
如要使用 Google Cloud 控制台、gcloud CLI 和 API,請按照下列步驟操作:
- 在 Google Cloud 控制台的專案選擇器頁面中,選取或建立 Google Cloud 專案。
- 請確認您已為專案啟用計費功能。瞭解如何檢查專案是否已啟用計費功能。
安裝並初始化 Google Cloud CLI (gcloud CLI)。
如果您已安裝 gcloud CLI,請執行
gcloud components update,確認您使用的是最新版本。如要存取 Memorystore for Valkey gcloud CLI 指令,您至少需要 gcloud CLI489.0.0版。-
啟用 Memorystore for Valkey API。
Memorystore for Valkey API - 如果您使用外部識別資訊提供者 (IdP),請先使用聯合身分登入 gcloud CLI。
- 請確認您知道貴機構的 ID。
指派角色
如要為執行個體使用自訂機構政策,您必須在 Google Cloud 專案中擁有下列其中一個 IAM 角色:
roles/memorystore.admin(Memorystore 管理員角色)roles/owner(擁有者角色)roles/editor(編輯者角色)
此外,您必須將 roles/orgpolicy.policyAdmin (組織政策管理員) 角色和 memorystore.instances.create 權限授予使用者或服務帳戶。如要進一步瞭解如何授予角色和權限,請參閱「管理專案、資料夾和機構的存取權」。
建立及設定自訂限制條件
您可以建立自訂限制,定義受限的資源、方法、條件和動作。這些限制適用於您要強制執行機構政策的服務。
您可以使用一般運算語言 (CEL) 定義自訂限制的條件。如要進一步瞭解如何使用 CEL 在自訂限制中建構條件,請參閱「建立及管理自訂限制」的 CEL 相關章節。
建立自訂限制後,您必須加以設定,才能用於組織的組織政策。您可以使用Google Cloud 控制台或 Google Cloud CLI 完成這項操作。
控制台
- 前往 Google Cloud 控制台的「Organization policies」(組織政策) 頁面。
- 按一下 Google Cloud 控制台選單列中的選單,然後選取要建立及設定自訂限制的專案、資料夾或機構。
- 在「機構政策」頁面,按一下「自訂限制」。
在「Create custom constraint」(建立自訂限制) 頁面的「Display name」(顯示名稱) 欄位中,輸入限制的易讀名稱。 這個名稱會用於錯誤訊息,您也可以用於識別和偵錯。這個欄位最多可包含 200 個字元。
在「Constraint ID」(限制 ID) 欄位中,輸入自訂限制的 ID。這項限制必須以
custom.開頭,且只能包含大/小寫英文字母或數字 (例如custom.restrictFiveShardInstances)。不含前置字串,這項值的長度最多為 70 個字元。例如:organizations/123456789/customConstraints/custom.allowConstraint。在「Description」(說明) 欄位中,輸入使用者可理解的限制說明。違反機構政策時,系統會將這段說明做為錯誤訊息。請提供違反政策的原因和解決方式等詳細資訊。這個欄位最多可輸入 2,000 個字元。
- 從「資源類型」選單中,選取 Memorystore for Valkey 資源的名稱 (而非 URI),其中包含要限制的物件和欄位。例如:
memorystore.googleapis.com/Instance。 - 在「強制執行方式」選單中,選取下列任一選項:
- 在建立時強制執行:只有在建立 Memorystore for Valkey 執行個體時,才會強制執行限制。
- 在建立及更新時強制執行:在建立及更新執行個體時,系統會強制執行限制。
如要定義針對支援服務資源表示法所撰寫的 CEL 條件,請執行下列步驟:
- 在「條件」欄位中,按一下「編輯」。
在「新增條件」對話方塊中,輸入 CEL 條件。例如:
resource.shardCount == 5。這項條件的長度上限為 1,000 個字元。如要進一步瞭解可編寫條件的資源,請參閱「 支援的自訂限制和作業」。
- 按一下 [儲存]。
- 在「動作」部分,選取下列任一選項,
代表條件符合時要採取的動作:
- 允許:如果條件評估結果為 true,則允許建立或更新執行個體的操作。除了條件中明確列出的情況外,其他所有情況都會遭到封鎖。
- 拒絕:如果條件評估結果為 true,系統會封鎖建立或更新執行個體的作業。
- 在「YAML 設定」部分,確認自訂限制的 YAML 設定正確無誤。
- 按一下「建立限制」。
gcloud
如要建立自訂限制,請使用下列格式建立 YAML 檔案:
name: organizations/ORGANIZATION_ID/customConstraints/CONSTRAINT_NAME resourceTypes: - memorystore.googleapis.com/RESOURCE_NAME methodTypes: - CREATE - UPDATE condition: "CONDITION" actionType: ACTION displayName: DISPLAY_NAME description: DESCRIPTION
請將下列項目改為對應的值:
ORGANIZATION_ID:組織 ID,例如123456789。CONSTRAINT_NAME:自訂限制的名稱。這項限制必須以custom.開頭,且只能包含大/小寫英文字母或數字 (例如custom.restrictFiveShardInstances)。不計前置字串,這項值的長度最多為 70 個字元。例如:organizations/123456789/customConstraints/custom.allowConstraint。RESOURCE_NAME:Memorystore for Valkey 資源的名稱 (而非 URI),內含要限制的物件和欄位。例如:memorystore.googleapis.com/Instance。CONDITION:針對支援服務資源表示法所撰寫的 CEL 條件。例如:"resource.shardCount == 5"。這個欄位的長度上限為 1,000 個字元。如要進一步瞭解可編寫條件的資源,請參閱「支援的自訂限制和作業」。
ACTION:符合條件時採取的動作。這個動作可以是下列其中一個值:ALLOW:如果條件評估結果為 true,則允許建立或更新執行個體。除了條件中明確列出的情況外,其他所有情況都會遭到封鎖。DENY:如果條件評估結果為 true,系統會封鎖建立或更新執行個體的作業。
DISPLAY_NAME:限制條件的人類可讀名稱。這個名稱會用於錯誤訊息,您也可以用於識別和偵錯。這個欄位最多可包含 200 個字元。DESCRIPTION:使用者可自然閱讀的限制說明。違反機構政策時,系統會將這段說明做為錯誤訊息。請提供違反政策的原因和解決方式。這個欄位最多可輸入 2,000 個字元。
如要設定自訂限制條件,請使用
gcloud org-policies set-custom-constraint指令:gcloud org-policies set-custom-constraint CONSTRAINT_PATH
將 CONSTRAINT_PATH 替換為自訂限制檔案的完整路徑 (例如
/home/user/customconstraint.yaml)。設定自訂限制後,該限制會顯示在 Google Cloud 組織政策清單中,供組織政策使用。
如要確認是否存在自訂限制,請使用
gcloud org-policies list-custom-constraints指令:gcloud org-policies list-custom-constraints --organization=ORGANIZATION_ID
強制執行自訂組織政策
如要強制執行限制,請建立參照該限制的組織政策,然後將組織政策套用至 Google Cloud 資源。控制台
- 前往 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 測試組織政策變更」。
- 如要在模擬測試模式下強制執行組織政策,請按一下「設定模擬測試政策」。詳情請參閱「 測試組織政策」。
- 確認機構政策在試營運模式中運作正常後,請按一下「設定政策」,設定正式政策。
gcloud
- 如要建立含有布林值規則的組織政策,請建立參照限制的政策 YAML 檔案:
-
PROJECT_ID:要強制執行限制的專案。 -
CONSTRAINT_NAME:要為自訂限制定義的名稱,例如custom.restrictFiveShardInstances。 -
如要以模擬測試模式強制執行組織政策,請執行下列指令並加上
dryRunSpec旗標: -
確認模擬測試模式中的機構政策能發揮預期效果後,請使用
org-policies set-policy指令和spec旗標設定正式政策:
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 分鐘才會生效。
測試自訂限制條件
如要測試 Memorystore for Valkey 的自訂機構政策限制,請嘗試建立或更新不符合強制執行政策的執行個體。
舉例來說,假設某項限制條件禁止您建立執行個體 (如果執行個體有五個 shard)。您可以嘗試建立執行個體,並將分片數設為五,藉此測試這項限制。由於執行個體不符合限制,Memorystore for Valkey 不會建立執行個體。
支援的自訂限制和作業
建立或更新執行個體時,可以使用下列 Memorystore for Valkey 自訂限制欄位:
- Memorystore for Valkey 執行個體
resource.nameresource.replicaCountresource.shardCountresource.nodeTyperesource.engineVersionresource.moderesource.kmsKeyresource.simulateMaintenanceEventresource.engineConfigsresource.persistenceConfig.moderesource.persistenceConfig.rdbConfig.rdbSnapshotPeriodresource.persistenceConfig.rdbConfig.rdbSnapshotStartTimeresource.persistenceConfig.aofConfig.appendFsyncresource.deletionProtectionEnabledresource.maintenancePolicy.weeklyMaintenanceWindow.dayresource.maintenancePolicy.weeklyMaintenanceWindow.startTimeresource.automatedBackupConfig.automatedBackupModeresource.automatedBackupConfig.fixedFrequencyScheduleresource.automatedBackupConfig.retentionresource.crossInstanceReplicationConfig.instanceRoleresource.crossInstanceReplicationConfig.primaryInstanceresource.crossInstanceReplicationConfig.secondaryInstancesresource.crossInstanceReplicationConfig.primaryInstance.instanceresource.crossInstanceReplicationConfig.secondaryInstances.instanceresource.zoneDistributionConfig.zoneresource.zoneDistributionConfig.moderesource.transitEncryptionModeresource.authorizationModeresource.serverCaModeresource.managedBackupSource.backupresource.serverCaPool
自訂限制範例
下表提供自訂限制的範例,可防止使用者建立或更新具有五個分片的 Memorystore for Valkey 執行個體:
| 說明 | 限制語法 |
|---|---|
| 限制建立或更新具有五個分片的執行個體 |
name: organizations/ORGANIZATION_ID/customConstraints/custom.restrictFiveShardInstances resourceTypes: - memorystore.googleapis.com/Instance methodTypes: - CREATE - UPDATE condition: "resource.shardCount == 5" actionType: DENY displayName: Restrict five-shard Memorystore for Valkey instances description: Prevent users from creating or updating instances that have five shards. |