添加 IAM 条件

IAM Conditions 让您可为 Google Cloud 资源(包括 Apigee Integration 资源)定义和强制执行基于属性的有条件访问权限控制。如需详细了解 IAM Conditions,请参阅 IAM Conditions 概览

在 Apigee Integration 中,您可以根据以下属性强制执行有条件访问权限:

  • 日期/时间属性:用于设置对 Apigee Integration 资源的临时(很快就会过期)、预定或限时访问权限。例如,您可以允许用户在指定日期之前访问集成。如需了解详情,请参阅配置临时访问权限
  • 资源属性:用于根据资源名称、资源类型或资源服务属性配置有条件访问权限。 例如,您可以允许用户管理在特定区域创建的集成。查看支持的值列表。如需了解详情,请参阅配置基于资源的访问权限

添加 IAM 条件

如需将 IAM 条件添加到现有主账号(用户、群组或服务账号),请执行以下步骤:

  1. 在 Google Cloud 控制台中,转到 IAM 页面。

    进入 IAM

  2. 选择您的项目、文件夹或组织。
  3. 从主账号列表中,找到要添加 IAM 条件的主账号,然后点击 修改主账号)。

    此时将显示修改访问权限窗格。

  4. 找到要添加 IAM 条件的角色,然后点击 + 添加 IAM 条件
  5. 添加条件窗格中,提供以下信息:
    1. 标题:输入要添加到角色的条件的名称。
    2. 说明:(可选)输入条件的说明。
    3. 您可以使用条件构建器条件编辑器来添加条件。

      条件构建器提供一个交互式界面,用于选择所需的条件类型、运算符以及有关表达式的其他适用详情。条件编辑器提供一个基于文本的界面,您可以使用 CEL 语法手动输入条件表达式。

      如需详细了解如何使用条件构建器条件编辑器,请参阅配置基于资源的访问权限

    4. 点击保存以应用条件。
    5. 如需了解 Apigee Integration 支持的资源属性,请参阅资源属性值

  6. 修改访问权限窗格中再次点击保存,以更新主账号。

资源属性值

下表列出了针对 Apigee Integration 可以包含的资源类型属性值:

资源名称 资源类型 参考文档
位置 SERVICE_ENDPOINT-integrations.googleapis.com/Location API 参考文档
集成 SERVICE_ENDPOINT-integrations.googleapis.com/Integration API 参考文档
IntegrationVersion SERVICE_ENDPOINT-integrations.googleapis.com/IntegrationVersion API 参考文档
执行 SERVICE_ENDPOINT-integrations.googleapis.com/Execution API 参考文档
暂停 SERVICE_ENDPOINT-integrations.googleapis.com/Suspension API 参考文档
AuthConfig SERVICE_ENDPOINT-integrations.googleapis.com/AuthConfig API 参考文档

将 IAM 条件用于 Apigee Integration 的示例

示例 1:限制对某个区域中的任何 IntegrationVersion 资源的访问

您可以在条件编辑器中使用以下条件表达式来限制对 IntegrationVersion 资源的访问。限制访问包括禁止对该区域的集成版本执行 createdeletedownloadgetlistpatchpublishunpublishupload 操作。

!resource.name.startsWith("projects/PROJECT_ID/locations/LOCATION/products/apigee/integrations/INTEGRATION_NAME")

请替换以下内容:

  • PROJECT_ID:您的 Google Cloud 项目的 ID。
  • LOCATION:集成服务端点。请参阅 Apigee Integration 服务端点
  • INTEGRATION_NAME:集成的名称。

示例 2:允许访问某个区域中的任何 IntegrationVersion 资源

您可以在条件编辑器中使用以下条件表达式来允许访问 IntegrationVersion 资源:

resource.name.startsWith("projects/PROJECT_ID/locations/LOCATION/products/apigee/integrations/INTEGRATION_NAME") || resource.type == "cloudresourcemanager.googleapis.com/Project")

请替换以下内容:

  • PROJECT_ID:您的 Google Cloud 项目的 ID。
  • LOCATION:集成服务端点。请参阅 Apigee Integration 服务端点
  • INTEGRATION_NAME:集成的名称。

示例 3:允许访问特定的 AuthConfig 资源

您可以在条件编辑器中使用以下条件表达式,以允许访问特定的 AuthConfig 资源:

(resource.name.extract("authConfigs/{end}" == "AUTH_CONFIG_NAME") || resource.type == "integrations.googleapis.com/Location" || resource.type == "cloudresourcemanager.googleapis.com/Project")

请替换以下内容:

示例 4:允许访问某个区域中的任何 AuthConfig 资源

您可以在条件编辑器中使用以下条件表达式,以允许访问任何 AuthConfig 资源:

(resource.name.startsWith("projects/PROJECT_ID/locations/LOCATION/products/apigee") && resource.type == "integrations.googleapis.com/AuthConfig" || resource.type == "integrations.googleapis.com/Location" || resource.type == "cloudresourcemanager.googleapis.com/Project")

请替换以下内容: