使用自訂組織政策限制,為執行個體強制執行一致的設定和限制

本文說明如何為 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,請按照下列步驟操作:

  1. 在 Google Cloud 控制台的專案選擇器頁面中,選取或建立 Google Cloud 專案

    前往專案選取器

  2. 請確認您已為專案啟用計費功能。瞭解如何檢查專案是否已啟用計費功能
  3. 安裝初始化 Google Cloud CLI (gcloud CLI)。

    如果您已安裝 gcloud CLI,請執行 gcloud components update,確認您使用的是最新版本。如要存取 Memorystore for Valkey gcloud CLI 指令,您至少需要 gcloud CLI 489.0.0 版。

  4. 啟用 Memorystore for Valkey API。
    Memorystore for Valkey API
  5. 如果您使用外部識別資訊提供者 (IdP),請先使用聯合身分登入 gcloud CLI
  6. 請確認您知道貴機構的 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 完成這項操作。

控制台

  1. 前往 Google Cloud 控制台的「Organization policies」(組織政策) 頁面。

    前往「Organization policies」(組織政策)

  2. 按一下 Google Cloud 控制台選單列中的選單,然後選取要建立及設定自訂限制的專案、資料夾或機構。
  3. 在「機構政策」頁面,按一下「自訂限制」
  4. 在「Create custom constraint」(建立自訂限制) 頁面的「Display name」(顯示名稱) 欄位中,輸入限制的易讀名稱。 這個名稱會用於錯誤訊息,您也可以用於識別和偵錯。這個欄位最多可包含 200 個字元。

  5. 在「Constraint ID」(限制 ID) 欄位中,輸入自訂限制的 ID。這項限制必須以 custom. 開頭,且只能包含大/小寫英文字母或數字 (例如 custom.restrictFiveShardInstances)。不含前置字串,這項值的長度最多為 70 個字元。例如:organizations/123456789/customConstraints/custom.allowConstraint

  6. 在「Description」(說明) 欄位中,輸入使用者可理解的限制說明。違反機構政策時,系統會將這段說明做為錯誤訊息。請提供違反政策的原因和解決方式等詳細資訊。這個欄位最多可輸入 2,000 個字元。

  7. 從「資源類型」選單中,選取 Memorystore for Valkey 資源的名稱 (而非 URI),其中包含要限制的物件和欄位。例如:memorystore.googleapis.com/Instance
  8. 在「強制執行方式」選單中,選取下列任一選項:
    • 在建立時強制執行:只有在建立 Memorystore for Valkey 執行個體時,才會強制執行限制。
    • 在建立及更新時強制執行:在建立及更新執行個體時,系統會強制執行限制。
  9. 如要定義針對支援服務資源表示法所撰寫的 CEL 條件,請執行下列步驟:

    1. 在「條件」欄位中,按一下「編輯」
    2. 在「新增條件」對話方塊中,輸入 CEL 條件。例如:resource.shardCount == 5

      這項條件的長度上限為 1,000 個字元。如要進一步瞭解可編寫條件的資源,請參閱「 支援的自訂限制和作業」。

    3. 按一下 [儲存]
  10. 在「動作」部分,選取下列任一選項, 代表條件符合時要採取的動作:
    • 允許:如果條件評估結果為 true,則允許建立或更新執行個體的操作。除了條件中明確列出的情況外,其他所有情況都會遭到封鎖。
    • 拒絕:如果條件評估結果為 true,系統會封鎖建立或更新執行個體的作業。
  11. 在「YAML 設定」部分,確認自訂限制的 YAML 設定正確無誤。
  12. 按一下「建立限制」

gcloud

  1. 如要建立自訂限制,請使用下列格式建立 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 個字元。
  2. 如要設定自訂限制條件,請使用 gcloud org-policies set-custom-constraint 指令:

    gcloud org-policies set-custom-constraint CONSTRAINT_PATH
    

    CONSTRAINT_PATH 替換為自訂限制檔案的完整路徑 (例如 /home/user/customconstraint.yaml)。

    設定自訂限制後,該限制會顯示在 Google Cloud 組織政策清單中,供組織政策使用。

  3. 如要確認是否存在自訂限制,請使用 gcloud org-policies list-custom-constraints 指令:

    gcloud org-policies list-custom-constraints --organization=ORGANIZATION_ID
    

強制執行自訂組織政策

如要強制執行限制,請建立參照該限制的組織政策,然後將組織政策套用至 Google Cloud 資源。

控制台

  1. 前往 Google Cloud 控制台的「Organization policies」(組織政策) 頁面。

    前往「Organization policies」(組織政策)

  2. 在專案挑選器中,選取要設定組織政策的專案。
  3. 在「Organization policies」(組織政策) 頁面的清單中選取限制,即可查看該限制的「Policy details」(政策詳細資料) 頁面。
  4. 如要為這項資源設定組織政策,請按一下「Manage policy」(管理政策)
  5. 在「Edit policy」(編輯政策) 頁面,選取「Override parent's policy」(覆寫上層政策)
  6. 按一下「Add a rule」(新增規則)
  7. 在「Enforcement」(強制執行) 部分,選取是否要強制執行這項組織政策。
  8. 選用:如要根據標記設定組織政策的條件,請按一下「Add condition」(新增條件)。請注意,如果為組織政策新增條件式規則,您必須至少新增一項無條件規則,否則無法儲存政策。詳情請參閱「 使用標記設定組織政策範圍」。
  9. 按一下「Test changes」(測試變更),模擬組織政策的影響。詳情請參閱「 使用 Policy Simulator 測試組織政策變更」。
  10. 如要在模擬測試模式下強制執行組織政策,請按一下「設定模擬測試政策」。詳情請參閱「 測試組織政策」。
  11. 確認機構政策在試營運模式中運作正常後,請按一下「設定政策」,設定正式政策。

gcloud

  1. 如要建立含有布林值規則的組織政策,請建立參照限制的政策 YAML 檔案:
  2. name: projects/PROJECT_ID/policies/CONSTRAINT_NAME
    spec:
      rules:
      - enforce: true
    
    dryRunSpec:
      rules:
      - enforce: true

    請替換下列項目:

    • PROJECT_ID:要強制執行限制的專案。
    • CONSTRAINT_NAME:要為自訂限制定義的名稱,例如 custom.restrictFiveShardInstances
  3. 如要以模擬測試模式強制執行組織政策,請執行下列指令並加上 dryRunSpec 旗標:
  4. gcloud org-policies set-policy POLICY_PATH --update-mask=dryRunSpec

    請將 POLICY_PATH 替換為組織政策 YAML 檔案的完整路徑。政策最多需要 15 分鐘才會生效。

  5. 確認模擬測試模式中的機構政策能發揮預期效果後,請使用 org-policies set-policy 指令和 spec 旗標設定正式政策:
  6. 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.name
    • resource.replicaCount
    • resource.shardCount
    • resource.nodeType
    • resource.engineVersion
    • resource.mode
    • resource.kmsKey
    • resource.simulateMaintenanceEvent
    • resource.engineConfigs
    • resource.persistenceConfig.mode
    • resource.persistenceConfig.rdbConfig.rdbSnapshotPeriod
    • resource.persistenceConfig.rdbConfig.rdbSnapshotStartTime
    • resource.persistenceConfig.aofConfig.appendFsync
    • resource.deletionProtectionEnabled
    • resource.maintenancePolicy.weeklyMaintenanceWindow.day
    • resource.maintenancePolicy.weeklyMaintenanceWindow.startTime
    • resource.automatedBackupConfig.automatedBackupMode
    • resource.automatedBackupConfig.fixedFrequencySchedule
    • resource.automatedBackupConfig.retention
    • resource.crossInstanceReplicationConfig.instanceRole
    • resource.crossInstanceReplicationConfig.primaryInstance
    • resource.crossInstanceReplicationConfig.secondaryInstances
    • resource.crossInstanceReplicationConfig.primaryInstance.instance
    • resource.crossInstanceReplicationConfig.secondaryInstances.instance
    • resource.zoneDistributionConfig.zone
    • resource.zoneDistributionConfig.mode
    • resource.transitEncryptionMode
    • resource.authorizationMode
    • resource.serverCaMode
    • resource.managedBackupSource.backup
    • resource.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.

後續步驟