本文档介绍了如何使用 IAM 拒绝政策和组织政策限制条件来控制 Autokey 在组织或文件夹中的使用方式。这两种防护措施只能通过组织级角色进行修改,因此,文件夹或项目级拥有所有者或管理员角色的主账号无法替换这些防护措施。
支持以下应用场景:
- 要求密钥由 Autokey 创建。您可以禁止正文手动创建密钥,确保所有密钥都由 Autokey 创建。在未启用 Autokey 的资源中,您将无法创建密钥。
- 限制 Autokey,以仅允许专用项目密钥存储或仅允许同项目密钥存储。
- 完全屏蔽 Autokey。这样可确保所有密钥都是手动创建的。
IAM 与组织政策
借助 IAM 和组织政策,您可以设置安全措施来控制 Cloud KMS Autokey 在组织中的使用方式。
IAM 可控制哪些用户有权对哪些资源执行哪些操作。您可以使用 IAM 来限制哪些主账号可以在组织中启用和使用 Autokey。
组织政策控制着可以创建哪些资源以及如何配置这些资源。您可以使用自定义组织政策来限制 Autokey 的启用位置和方式。
您可以将 IAM 和组织政策结合使用,打造一套强大的安全措施,以控制哪些人可以在哪些位置启用和使用 Autokey。
准备工作
如需获得控制 Autokey 使用情况所需的权限,请让管理员向您授予组织的以下 IAM 角色:
-
设置组织政策:Organization Policy Administrator (
roles/orgpolicy.policyAdmin) -
设置 IAM 拒绝政策:Deny Admin (
roles/iam.denyAdmin)
如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
使用 IAM 拒绝政策控制 Autokey
IAM 拒绝政策可自上而下地控制哪些主账号可以执行哪些操作。资源上设置的拒绝政策无法被 IAM 角色授予或子资源上设置的拒绝政策替换。主账号无法完成需要被拒绝的权限的操作,即使该权限包含在他们拥有的角色中也是如此。
如需了解如何创建 IAM 拒绝政策,请参阅拒绝访问资源。
下表列出了一些 IAM 拒绝政策的用例,包括您可以拒绝的权限(用于控制组织中的 Autokey)以及拒绝每项权限的效果。
使用自定义组织政策限制条件来控制 Autokey
自定义组织政策限制条件可自下而上地控制 Autokey 的配置位置和方式。约束可以被在子资源上强制执行的约束覆盖。不过,更改限制条件需要组织级权限,因此具有文件夹级或项目级权限的主账号无法替换限制条件。在强制执行限制时,即使主账号拥有执行被禁止操作所需的权限,也无法完成这些操作。
如需了解如何在组织中强制执行自定义限制条件,请参阅为 Cloud KMS 创建自定义组织政策限制条件。
您可以将此处介绍的自定义组织政策限制条件与其他 CMEK 组织政策结合使用。
限制自动按键模式
您可以通过有条件地阻止创建 AutokeyConfig 资源来限制 Autokey 功能。以下示例限制条件定义禁止基于 AutokeyConfig 资源的 keyProjectResolutionMode 创建或更新该资源。
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 配置
您可以使用自定义组织政策来阻止在文件夹内启用 Autokey,方法是阻止创建所有 AutokeyConfig 资源。
以下示例限制条件定义禁止在指定文件夹中创建 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:您组织的标识符。- 将
FOLDER_ID替换为要阻止 Autokey 的文件夹的标识符。
禁止在组织内创建 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 替换为您的组织的标识符。
禁止更改文件夹的 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:您组织的标识符。- 将
FOLDER_ID替换为要阻止 Autokey 的文件夹的标识符。
禁止在组织内更改 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 替换为您的组织的标识符。
仅允许 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 创建
如果您想在文件夹内要求使用 Autokey 的 CMEK,可以将 IAM 访问权限控制与 CMEK 组织政策结合使用,从而实现此目的。 为此,您可以从 Cloud KMS 服务代理以外的主账号中移除密钥创建权限,然后要求所有资源都使用 Autokey 密钥项目通过 CMEK 进行保护。
如需在文件夹内强制使用 Autokey,请完成以下步骤:
通过强制执行 IAM 拒绝政策,禁止在密钥项目中手动创建密钥。在拒绝政策中,拒绝向除 Cloud KMS 服务代理以外的所有主账号授予
cloudkms.cryptoKeys.create权限。如果文件夹使用专用项目密钥存储,请将拒绝政策应用于专用密钥项目。如果文件夹使用同项目密钥存储,请将拒绝政策应用于资源项目。如果无法手动创建密钥,则只能在这些项目中创建由 Autokey 创建的密钥。
通过强制执行
constraints/gcp.restrictNonCmekServices限制条件,要求文件夹中新创建的资源必须使用 CMEK 进行保护。如需详细了解此限制条件(包括支持该限制条件的服务列表),请参阅要求使用 CMEK 保护。
通过强制执行
constraints/gcp.restrictCmekCryptoKeyProjects限制,要求用于 CMEK 的密钥必须来自专用密钥项目或启用了同项目密钥存储的项目。如需详细了解此限制条件(包括支持此限制条件的服务列表),请参阅限制 Cloud KMS 密钥用于 CMEK。
完全禁止 Autokey
如果您想在组织或文件夹中完全禁止使用 Autokey,可以使用 IAM 拒绝政策或自定义组织政策限制条件来实现。对于多层保证,您可以同时使用这两种方法。
如需在组织或文件夹中完全屏蔽 Autokey,请完成以下步骤:
如果组织或文件夹中的任何位置已启用 Autokey,请先停用 Autokey。
通过强制执行 IAM 拒绝政策,阻止用户配置 Autokey。在拒绝政策中,拒绝所有主账号的
cloudkms.autokeyConfigs.update权限。当 Autokey 在所有位置都被停用,且没有任何正文能够修改AutokeyConfig资源时,Autokey 将保持完全停用状态。可选:上述步骤足以防止任何人启用 Autokey。不过,如果您想再添加一层保障,还可以强制执行自定义组织政策限制条件,以仅允许停用 Autokey 的
AutokeyConfig资源。
如果您同时强制执行 IAM 拒绝政策和此处所述的自定义组织政策限制条件,则任何主账号都无法在资源中启用 Autokey,除非先取消或更新这两项防护措施。
后续步骤
- 详细了解 CMEK 组织政策。
- 详细了解 IAM 拒绝政策。
- 详细了解Organization Policy Service 服务。
- 详细了解自定义组织政策限制条件。