在 Apigee 中使用组织政策限制条件

本页面介绍如何将组织政策限制条件与 Apigee 搭配使用。

Apigee 中并非所有功能都会使用 CMEK 对敏感数据进行加密。为确保需要使用 CMEK 加密的数据不会不知不觉地使用未受 CMEK 保护的功能,我们会针对受 CMEK 限制条件的项目停用这些功能,直到它们符合要求为止。仅会停用这些功能的新用法(创建新资源或启用插件)。已在使用的功能和资源将保持可用和可修改状态,但不会受到保护。

评估组织的创建会被 gcloud alpha apigee organizations API 和评估预配向导阻止。当您尝试查看评估预配向导时,会看到以下消息:Apigee 评估不可用

如需详细了解已为受 CMEK 限制的项目停用的功能,请参阅组织政策限制条件

条款

本主题中使用了以下术语:

术语 定义
CMEK 客户管理的加密密钥。如需了解详情,请参阅客户管理的加密密钥
组织政策限制条件 限制条件是针对某项 Google Cloud 服务或一组 Google Cloud 服务的限制类型。就 CMEK 而言,有 两项相关限制
  • constraints/gcp.restrictNonCmekServices
  • constraints/gcp.restrictCmekCryptoKeyProjects
强制执行 保证 Apigee 的后端系统会遵守项目的限制(在本例中为 CMEK 限制)
预验证 界面行为,可指导您根据 CMEK 组织政策在 Apigee 中选择有效的配置,并不会公开不符合要求的功能
资源 Apigee 资源,例如组织实例

如何限制非 CMEK 服务

本部分介绍如何限制非 CMEK 服务。

  1. 满足前提条件
  2. 在 Google Cloud 控制台中选择您的项目
  3. 创建新的组织政策限制条件
  4. 预配 Apigee

前提条件

您必须:

打开项目

  1. 在 Google Cloud 控制台中,转到信息中心页面。

    转到信息中心

  2. 在 Google Cloud 控制台下拉列表中选择您的项目(如果尚未选择)。

创建组织政策限制条件

组织政策由为每个限制条件设置的值定义。 这些政策可以在该资源级层进行配置、从父资源继承,也可以设置为 Google 管理的默认行为。在这种情况下,您将创建一个需要 CMEK 的限制条件,并将该限制条件应用于该项目以及从该项目继承的所有资源。

为确保在 Apigee 中加密数据时始终使用客户管理的加密密钥,请创建以下组织政策限制条件:

  1. 在 Google Cloud 控制台中,转到组织政策页面。

    转到组织政策

  2. 在 Google Cloud 控制台下拉列表中选择您的项目(如果尚未选择)。
  3. 过滤条件框中,输入:
    constraints/gcp.restrictNonCmekServices
  4. 依次点击 更多修改政策。如果修改已停用,则表示您没有所需的权限,需要让管理员为您授予组织的 Organization Policy Administrator (roles/orgpolicy.policyAdmin) IAM 角色。如需了解详情,请参阅前提条件
  5. 对于政策来源,请选择覆盖父资源的政策。此资源将具有专属政策。在下一步中,您将指定如何处理父级政策规则。
  6. 对于强制执行政策,请选择以下选项之一:
    • 替换。此选项会忽略父级资源的政策,并使用这些规则。
    • 与父级政策合并。此选项会在父资源已设置的规则基础上再增加一些规则。

    如需了解组织政策继承,请参阅了解层次结构评估

  7. 点击添加规则
  8. 对于政策值,选择自定义
  9. 对于政策类型,请选择拒绝
  10. 对于自定义值,请输入:
    apigee.googleapis.com
  11. 点击完成
  12. 点击设置政策。此时将显示政策详情页面。

配置政策并选择继承/使用该政策的项目后,您就可以预配 Apigee 了。请注意,在配置 CMEK 组织政策之前创建的 Apigee 资源不一定符合政策要求;只有在政策生效后创建的新资源才会遵守 CMEK 限制条件。

另请参阅:

预配 Apigee

在有组织政策限制的情况下预配 Apigee 与在没有组织政策限制的情况下预配 Apigee 的步骤相同;但是,界面会阻止您选择不受支持的选项。

本部分介绍界面在哪些方面为您提供选择指导。

  1. 在 Google Cloud 控制台中,进入 Apigee 页面。

    前往 Apigee

  2. 在 Google Cloud 控制台下拉列表中选择您的项目(如果尚未选择)。
  3. 欢迎使用 Apigee API Management 页面上,使用默认值进行设置处于停用状态,因为您需要明确选择 CMEK。点击自定义设置
  4. 启用 API:按照第 1 步:启用所需的 API 中的说明启用所需的 API。
  5. 设置网络:按照第 2 步:设置网络中的说明设置网络。
  6. 配置托管和加密

    用户体验历程 D:由客户管理的加密(有数据驻留)是唯一与组织政策限制条件相关的用户体验历程,这些限制条件会限制非 CMEK 服务。

    1. 点击 修改以打开托管和加密密钥面板。
    2. 加密类型部分中,由 Google 管理的加密密钥处于停用状态,而客户管理的加密密钥处于启用状态,且无法停用。
    3. 点击下一步
    4. 控制平面部分中,启用数据驻留已启用,且无法停用。
    5. 继续按照用户体验历程 D:由客户管理的加密(有数据驻留)中的第 3.b 步骤配置托管和加密。
  7. 自定义访问路由:按照第 4 步:自定义访问路由中的说明自定义访问路由。

如何限制 CMEK 加密密钥项目

本部分介绍了如何限制 CMEK 加密密钥项目。

您可以通过另一个组织政策限制条件来限制哪些项目可以提供加密密钥:constraints/gcp.restrictCmekCryptoKeyProjects 使用此限制条件,您可以将可以使用加密密钥的项目列入许可名单。

在您可以选择 CMEK 的任何位置(目前是在预配 Apigee 或创建 Apigee 实例时),都会强制执行此限制条件。

如果在 Google Cloud 控制台中选择的当前项目未在 restrictCmekCryptoKeyProjects 限制条件中列入许可名单,您将无法从加密密钥选择框中选择任何密钥。您需要改用已列入许可名单的项目中的密钥。

前提条件

您必须:

打开项目

  1. 在 Google Cloud 控制台中,转到信息中心页面。

    转到信息中心

  2. 在 Google Cloud 控制台下拉列表中选择您的项目(如果尚未选择)。

创建组织政策限制条件

组织政策由为每个限制条件设置的值定义。 这些政策可以在该资源级层进行配置、从父资源继承,也可以设置为 Google 管理的默认行为。在这种情况下,您将创建一个限制条件,仅允许来自列入许可名单的项目的密钥。此限制条件将应用于该项目以及从该项目继承的所有资源。

为确保仅在特定项目中使用客户管理的加密密钥,请将其添加到许可名单中:

  1. 在 Google Cloud 控制台中,转到组织政策页面。

    转到组织政策

  2. 在 Google Cloud 控制台下拉列表中选择您的项目(如果尚未选择)。
  3. 过滤条件框中,输入:
    restrictCmekCryptoKeyProjects
  4. 依次点击 更多修改政策。如果修改已停用,则表示您没有所需的权限,需要让管理员为您授予组织的 Organization Policy Administrator (roles/orgpolicy.policyAdmin) IAM 角色。如需了解详情,请参阅前提条件
  5. 对于政策来源,请选择覆盖父资源的政策。 此资源将具有专属政策。在下一步中,您将指定如何处理父级政策规则。
  6. 对于强制执行政策,请选择以下选项之一:
    • 替换。此选项会忽略父级资源的政策,并使用这些规则。
    • 与父级政策合并。此选项会在父资源已设置的规则基础上再增加一些规则。

    如需了解组织政策继承,请参阅了解层次结构评估

  7. 点击添加规则
  8. 对于政策值,选择自定义
  9. 对于政策类型,选择允许
  10. 对于自定义值,请输入:
    projects/PROJECT_ID

    PROJECT_ID 替换为您要使用的 Cloud KMS 密钥所在的项目 ID。例如 my-kms-project

  11. 点击完成
  12. 点击设置政策。此时将显示政策详情页面。

配置政策并选择继承/使用该政策的项目后,您就可以预配 Apigee 了。请注意,在配置 CMEK 组织政策之前创建的 Apigee 资源不一定符合政策要求;只有在政策生效后创建的新资源才会遵守 CMEK 限制条件。

另请参阅:

预配 Apigee

在有组织政策限制的情况下预配 Apigee 与在没有组织政策限制的情况下预配 Apigee 的步骤相同;但是,界面会阻止您选择不受支持的选项。

本部分介绍界面在哪些方面为您提供选择指导。

  1. 在 Google Cloud 控制台中,进入 Apigee 页面。

    前往 Apigee

  2. 在 Google Cloud 控制台下拉列表中选择您的项目(如果尚未选择)。
  3. 欢迎使用 Apigee API Management 页面上,点击自定义设置
  4. 启用 API:按照第 1 步:启用所需的 API 中的说明启用所需的 API。
  5. 设置网络:按照第 2 步:设置网络中的说明设置网络。
  6. 配置托管和加密

    用户体验历程 D:由客户管理的加密(有数据驻留)是唯一与组织政策限制条件相关的用户体验历程,这些限制条件会限制非 CMEK 服务。

    1. 点击 修改以打开托管和加密密钥面板。
    2. 加密类型部分中,由 Google 管理的加密密钥处于停用状态,而客户管理的加密密钥处于启用状态,且无法停用。
    3. 点击下一步
    4. 控制平面部分中,启用数据驻留已启用,且无法停用。
    5. 继续按照用户体验历程 D:由客户管理的加密(有数据驻留)中的第 3.b 步骤配置托管和加密。
  7. 自定义访问路由:按照第 4 步:自定义访问路由中的说明自定义访问路由。

使用已列入许可名单的项目中的密钥

如需使用 Apigee 中列入许可名单的项目中的密钥,您需要通过其资源 ID 手动输入密钥。系统还会验证您手动输入的任何密钥,以确保其项目根据限制条件中的许可名单项目是有效的。

如何获取 Google Cloud KMS 资源 ID

请参阅获取 Cloud KMS 资源 ID

问题排查

下表介绍了使用 CMEK 和组织政策限制条件时可能出现的一些常见错误情况。

错误消息 原因 要采取的步骤
Constraint constraints/gcp.restrictNonCmekServices violated for projects/my-project attempting to create or enable trial org. CMEK is not supported for trial orgs. To use trial orgs, adjust the gcp.restrictNonCmekServices constraint for this project. 您尝试在项目存在组织政策限制条件的情况下预配试用组织。 试用/评估组织不支持 CMEK。您必须更新组织政策限制条件 constraints/gcp.restrictNonCmekServices,以从拒绝服务列表中移除 Apigee,才能预配试用组织。
Constraint constraints/gcp.restrictNonCmekServices violated for projects/my-project attempting to create or enable global org. CMEK is not supported in location 'global', select another location or adjust the code constraint for this project. 您尝试在项目存在组织政策限制条件的全局组织中预配组织。 全局组织不支持 CMEK。您必须更新组织政策限制条件 constraints/gcp.restrictNonCmekServices,以从拒绝服务列表中移除 Apigee,或者使用其他位置来创建其组织。
Constraint constraints/gcp.restrictNonCmekServices violated for projects/my-project attempting to create a resource without specifying a KMS CryptoKey. Provide a KMS CryptoKey to use for this resource. 您尝试在存在组织政策限制条件的项目中预配组织,但未指定 KMS CryptoKey。 您已在组织政策中设置代码,该代码要求您提供 CMEK 来加密数据。您必须提供 CMEK 密钥才能创建组织或实例。如果您不想强制执行 CMEK,可以更新组织政策限制条件 constraints/gcp.restrictNonCmekServices 以从拒绝服务列表中移除 Apigee。
Constraint constraints/gcp.restrictCmekCryptoKeyProjects violated for projects/my-project attempting to use projects/my-project/locations/my-location/keyRings/kr-1/cryptoKeys/ck-1 key. Use a key from a project that is allowed by the gcp.restrictCmekCryptoKeyProjects constraint. 您尝试在项目存在组织政策限制条件的组织中预配组织,并指定了未列入许可名单的 KMS CryptoKey。 您已在组织政策中设置了 constraints/gcp.restrictCmekCryptoKeyProjects,要求您提供您列出的允许项目中的 CMEK 密钥。您必须提供来自允许项目的 CMEK 密钥,才能创建组织或实例。或者,您也可以更新组织政策限制条件 constraints/gcp.restrictCmekCryptoKeyProjects,以允许使用您想要的特定 Google Cloud 项目中的密钥。
Constraint constraints/gcp.restrictNonCmekServices violated for projects/my-project attempting to create a portal. Integrated portals do not support the use of CMEK. To use integrated portals, adjust the gcp.restrictNonCmekServices policy constraint. 您尝试在项目存在组织政策限制条件的情况下创建门户。 集成门户不支持 CMEK。您必须更新组织政策限制条件 constraints/gcp.restrictNonCmekServices,以从拒绝服务列表中移除 Apigee,才能创建新的门户。