控管 Autokey 使用情形

本文說明如何使用 IAM 拒絕政策和機構政策限制,控管機構或資料夾內 Autokey 的使用方式。這兩項防護措施只能透過機構層級的角色修改,因此擁有資料夾或專案層級「擁有者」或「管理員」角色的主體無法覆寫。

支援的用途如下:

  • 要求金鑰由 Autokey 建立。您可以禁止主體手動建立金鑰,確保所有金鑰都是由 Autokey 建立。如果資源未啟用 Autokey,您就完全無法建立金鑰。
  • 限制 Autokey,只允許專屬專案金鑰儲存功能或同專案金鑰儲存功能。
  • 完全封鎖 Autokey。這可確保所有金鑰都是手動建立。

IAM 與組織政策

您可以使用 IAM 和組織政策設定防護措施,控管機構中 Cloud KMS Autokey 的使用方式。

IAM 可控管哪些人有權對哪些資源執行哪些動作。您可以使用 IAM 限制哪些主體可以在貴機構中啟用及使用 Autokey。

組織政策可控管可建立的資源,以及資源的設定方式。您可以使用自訂機構政策,限制 Autokey 的啟用位置啟用方式

您可以同時使用 IAM 和機構政策,建立強大的防護措施系統,控管哪些使用者可以啟用及使用 Autokey,以及他們可以在何處執行這項操作。

事前準備

如要取得控管 Autokey 用量所需的權限,請要求管理員授予您組織的下列 IAM 角色:

如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。

您或許也能透過自訂角色或其他預先定義的角色,取得必要權限。

使用 IAM 拒絕政策控管 Autokey

IAM 拒絕政策可從上而下控管哪些主體可以執行哪些動作。在資源上設定的拒絕政策無法由 IAM 角色授權或在子項資源上設定的拒絕政策覆寫。即使主體所擁有的角色包含遭拒的權限,也無法完成需要這些權限的操作。

如要瞭解如何建立 IAM 拒絕政策,請參閱「拒絕資源存取權」。

下表列出 IAM 拒絕政策的一些範例用途,包括可拒絕的權限,以控管貴機構中的 Autokey,以及拒絕各項權限的效果。

用途 拒絕的權限 主體 效果
禁止啟用 Autokey cloudkms.autokeyConfigs.update 不限 所選主體無法建立新資源或更新現有資源。AutokeyConfig現有的AutokeyConfig資源仍有效,且仍可使用。
禁止使用 Autokey cloudkms.keyHandles.create 不限 選取的主體無法建立新的 KeyHandle 資源,因此即使已啟用 Autokey,他們也無法使用 Autokey 建立新的受保護資源。
禁止手動建立金鑰 cloudkms.cryptoKeys.create Cloud KMS 服務代理以外的任何角色 所選主體無法建立新金鑰。如果只排除 Cloud KMS 服務代理程式,就只能透過 Autokey 建立新金鑰。
只有 IaC 才能變更 Autokey 設定 cloudkms.autokeyConfigs.update 所有項目,Terraform 執行代理程式除外 選取的原則無法建立新資源或更新現有資源。AutokeyConfig免除 Terraform 主體後,Autokey 設定會由基礎架構即程式碼 (IaC) 管道控管。

使用自訂組織政策限制控管 Autokey

自訂機構政策限制可提供由下而上的控制權,決定 Autokey 的設定位置和方式。子項資源強制執行的限制可能會覆寫限制。不過,變更限制條件需要機構層級的權限,因此具有資料夾或專案層級權限的主體無法覆寫限制條件。系統會強制執行限制,因此即使主體具備執行禁止動作所需的權限,也無法完成這些動作。

如要瞭解如何在機構中強制執行自訂限制,請參閱「為 Cloud KMS 建立自訂機構政策限制」。

您可以將本文所述的自訂組織政策限制,與其他 CMEK 組織政策合併使用。

限制自動按鍵模式

您可以有條件地封鎖 AutokeyConfig 資源的建立作業,藉此限制 Autokey 功能。下列範例限制定義會禁止根據 keyProjectResolutionMode 建立或更新 AutokeyConfig 資源。

    name: organizations/ORGANIZATION_ID/customConstraints/custom.restrictAutokeyKeyStorage
    resourceTypes:
    - cloudkms.googleapis.com/AutokeyConfig
    methodTypes:
    - CREATE
    - UPDATE
    condition: "resource.keyProjectResolutionMode == 'KEY_PROJECT_RESOLUTION_MODE')"
    actionType: DENY
    displayName: Restrict Autokey key storage mode
    description: >
      Prevent creation or update of AutokeyConfig resources with
      `KEY_PROJECT_RESOLUTION_MODE` key resolution mode.

KEY_PROJECT_RESOLUTION_MODE 替換為要封鎖的 keyProjectResolutionMode,例如,如要禁止機構中的任何人在專案中使用同專案金鑰儲存功能,請將這個值設為 RESOURCE_PROJECT

禁止在資料夾上建立 Autokey 設定

您可以透過自訂機構政策,封鎖所有 AutokeyConfig 資源的建立作業,禁止在資料夾中啟用 Autokey。

下列範例限制定義禁止在具名資料夾中建立 AutokeyConfig 資源。這項限制生效後,您仍可修改現有設定。

    name: organizations/ORGANIZATION_ID/customConstraints/custom.noNewAutokeyConfigFolder
    resourceTypes:
    - cloudkms.googleapis.com/AutokeyConfig
    methodTypes:
    - CREATE
    condition: "resource.name == 'folders/FOLDER_ID/autokeyConfig'"
    actionType: DENY
    displayName: Prohibit Autokey within FOLDER_ID
    description: >
      Prevent creation of new AutokeyConfig resources within
      folders/FOLDER_ID.

更改下列內容:

  • ORGANIZATION_ID:貴機構的 ID。
  • FOLDER_ID,並填入要封鎖 Autokey 的資料夾 ID。

禁止在機構內建立 Autokey 設定

您可以透過自訂機構政策,禁止建立所有 AutokeyConfig 資源,在整個機構內停用 Autokey。

下列範例限制定義會禁止在整個機構內建立 AutokeyConfig 資源。這項限制生效後,您仍可修改現有設定。

    name: organizations/ORGANIZATION_ID/customConstraints/custom.noNewAutokeyConfigOrg
    resourceTypes:
    - cloudkms.googleapis.com/AutokeyConfig
    methodTypes:
    - CREATE
    condition: "resource.name.endsWith('/autokeyConfig')"
    actionType: DENY
    displayName: Prohibit Autokey within ORGANIZATION_ID
    description: >
      Prevent creation of new AutokeyConfig resources within organization
      ORGANIZATION_ID.

ORGANIZATION_ID 替換為貴機構的 ID。

禁止變更資料夾的 Autokey 設定

您可以透過自訂機構政策,封鎖所有 AutokeyConfig 資源的建立或更新作業,防止資料夾內的 Autokey 設定遭到變更。

下列範例限制定義禁止在具名資料夾中建立或更新 AutokeyConfig 資源。

    name: organizations/ORGANIZATION_ID/customConstraints/custom.noChangeAutokeyConfigFolder
    resourceTypes:
    - cloudkms.googleapis.com/AutokeyConfig
    methodTypes:
    - CREATE
    - UPDATE
    condition: "resource.name == 'folders/FOLDER_ID/autokeyConfig'"
    actionType: DENY
    displayName: Prohibit Autokey within FOLDER_ID
    description: >
      Prevent creation or update of AutokeyConfig resources within
      folders/FOLDER_ID.

更改下列內容:

  • ORGANIZATION_ID:貴機構的 ID。
  • FOLDER_ID,並填入要封鎖 Autokey 的資料夾 ID。

禁止在機構內變更 Autokey 設定

您可以透過自訂機構政策,封鎖所有 AutokeyConfig 資源的建立或更新作業,禁止機構內任何位置變更 Autokey 設定。

下列範例限制定義會禁止在整個機構中建立或更新 AutokeyConfig 資源。

    name: organizations/ORGANIZATION_ID/customConstraints/custom.noChangeAutokeyConfigOrg
    resourceTypes:
    - cloudkms.googleapis.com/AutokeyConfig
    methodTypes:
    - CREATE
    - UPDATE
    condition: condition: "resource.name.endsWith('/autokeyConfig')"
    actionType: DENY
    displayName: Prohibit Autokey within ORGANIZATION_ID
    description: >
      Prevent creation or update of AutokeyConfig resources within
      ORGANIZATION_ID.

ORGANIZATION_ID 替換為貴機構的 ID。

僅允許 DISABLED Autokey 設定

下列範例限制定義禁止任何人在整個機構中建立或更新 AutokeyConfig 資源,除非明確將 keyProjectResolutionMode 設為 DISABLED

    name: organizations/ORGANIZATION_ID/customConstraints/custom.onlyDisabledAutokeyConfig
    resourceTypes:
    - cloudkms.googleapis.com/AutokeyConfig
    methodTypes:
    - CREATE
    - UPDATE
    condition: "resource.keyProjectResolutionMode=='DISABLED'"
    actionType: ALLOW
    displayName: Prohibit Autokey within the organization
    description: >
      Prevent creation or update of `AutokeyConfig` resources within
      organization ORGANIZATION_ID unless the `keyProjectResolutionMode`
      is `DISABLED`.

禁止專案層級的 Autokey 設定

以下範例限制定義禁止任何人在專案中建立或更新 AutokeyConfig 資源,但不會封鎖資料夾層級的設定。強制執行這項限制後,先前專案層級的 AutokeyConfig 資源仍會生效,但所有其他專案都必須繼續從上層資料夾繼承 AutokeyConfig

    name: organizations/ORGANIZATION_ID/customConstraints/custom.noAutokeyConfigProject
    resourceTypes:
    - cloudkms.googleapis.com/AutokeyConfig
    methodTypes:
    - CREATE
    - UPDATE
    condition: "resource.name.startsWith('projects/')"
    actionType: DENY
    displayName: Block project-level Autokey within the organization
    description: >
      Prevent creation or update of `AutokeyConfig` resources on projects within
      organization ORGANIZATION_ID. Existing project-level AutokeyConfig
      resources remain in effect, but all other projects must inherit the
      AutokeyConfig from their parent folder.

應用實例

以下各節提供範例,說明如何一併使用 IAM 拒絕政策、自訂組織政策和標準組織政策。

要求 Autokey 建立金鑰

如要在資料夾中要求使用 CMEK 與 Autokey,可以結合 IAM 存取控管機制和 CMEK 組織政策。做法是從 Cloud KMS 服務代理程式以外的主體移除金鑰建立權限,然後要求所有資源都使用 Autokey 金鑰專案的 CMEK 保護。

如要在資料夾中強制使用 Autokey,請完成下列步驟:

  1. 強制執行 IAM 拒絕政策,禁止在金鑰專案中手動建立金鑰。在拒絕政策中,拒絕所有主體 (Cloud KMS 服務代理人除外) 的 cloudkms.cryptoKeys.create 權限。如果資料夾使用專屬專案金鑰儲存功能,請將拒絕政策套用至專屬金鑰專案。如果資料夾使用同專案金鑰儲存功能,請對資源專案套用拒絕政策。

    如果無法手動建立金鑰,則只能在這些專案中建立 Autokey 建立的金鑰。

  2. 強制執行 constraints/gcp.restrictNonCmekServices 限制,確保資料夾中新建的資源必須使用 CMEK 保護。

    如要進一步瞭解這項限制,包括支援這項限制的服務清單,請參閱「要求使用 CMEK 保護」。

  3. 強制執行 constraints/gcp.restrictCmekCryptoKeyProjects 限制,規定用於 CMEK 的金鑰必須來自專屬金鑰專案,或是啟用同專案金鑰儲存功能的專案。如要進一步瞭解這項限制,包括支援這項限制的服務清單,請參閱「限制使用 Cloud KMS 金鑰進行 CMEK」。

完全禁止 Autokey

如要完全禁止在機構或資料夾中使用 Autokey,可以使用 IAM 拒絕政策或自訂機構政策限制。如要進行多層保證,可以同時使用這兩者。

如要在機構或資料夾中完全封鎖 Autokey,請完成下列步驟:

  1. 如果機構或資料夾已啟用 Autokey,請先停用 Autokey

  2. 強制執行 IAM 拒絕政策,禁止使用者設定 Autokey。在拒絕政策中,拒絕所有主體的 cloudkms.autokeyConfigs.update權限。如果所有位置都停用 Autokey,且主體無法修改 AutokeyConfig 資源,Autokey 就會維持完全停用狀態。

  3. 選用:完成上述步驟後,即可防止任何人啟用 Autokey。不過,如要進一步確保安全,您也可以強制執行自訂機構政策限制,只允許使用已停用 Autokey 的 AutokeyConfig 資源

如果您同時強制執行 IAM 拒絕政策和本文所述的自訂機構政策限制,主體就無法在資源中啟用 Autokey,必須先取消或更新這兩項防護措施。

後續步驟