配置临时访问权限

本主题介绍如何在允许政策中使用条件角色绑定来设置对 Google Cloud资源的临时(限时)访问权限。通过使用日期/时间属性,您可以在访问给定资源时强制执行基于时间的控制措施。例如,您可以授予对项目的临时访问权限,该访问权限在指定时间或者按计划定期启动和停止。

准备工作

  • 请参阅 Conditions 概览,了解 Identity and Access Management (IAM) 条件角色绑定的基础知识。
  • 查看可在条件表达式中使用的日期/时间属性。所有 Google Cloud 服务都能识别日期/时间属性。

所需的角色

如需获得管理条件角色绑定所需的权限,请让您的管理员为您授予以下 IAM 角色:

  • 项目的 Project IAM Admin (roles/resourcemanager.projectIamAdmin)(如需管理对项目的访问权限)
  • 文件夹的 Folder Admin (roles/resourcemanager.folderAdmin)(如需管理对文件夹的访问权限)
  • 管理对项目、文件夹和组织的访问权限:针对组织的 Organization Admin (roles/resourcemanager.organizationAdmin)
  • 您要管理其访问权限的资源所在的项目、文件夹或组织的 Security Admin (roles/iam.securityAdmin)(如需管理对几乎所有 Google Cloud 资源的访问权限)

如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限

这些预定义角色包含管理条件角色绑定所需的权限。如需查看所需的确切权限,请展开所需权限部分:

所需权限

必须拥有以下权限才能管理条件角色绑定:

  • 如需管理项目访问权限:
    • 针对项目的 resourcemanager.projects.getIamPolicy 权限
    • 针对项目的 resourcemanager.projects.setIamPolicy 权限
  • 如需管理文件夹访问权限:
    • 针对文件夹的 resourcemanager.folders.getIamPolicy 权限
    • 针对文件夹的 resourcemanager.folders.setIamPolicy 权限
  • 如需管理组织访问权限:
    • 针对组织的 resourcemanager.organizations.getIamPolicy 权限
    • 针对组织的 resourcemanager.organizations.setIamPolicy 权限

您也可以使用自定义角色或其他预定义角色来获取这些权限。

授予临时访问权限

条件角色绑定可用于授予对资源的限时访问权限,从而确保用户在指定的到期日期和时间后不能再访问该资源。

请考虑以下情形:ExampleCo 公司的信息安全规则强调,任何员工都不应拥有对生产项目资源的无限期访问权限。以前,管理员一直在手动设置和删除 IAM 角色绑定,以满足工程师的紧急需求。为了减少管理开销,ExampleCo 可以改为配置一个条件角色绑定,使其包含日期/时间条件,该条件用于为绑定设置结束日期。

要授予对项目资源的可过期访问权限,请执行以下操作:

控制台

  1. 在 Google Cloud 控制台中,前往 IAM 页面。

    转到 IAM 页面

  2. 从主账号列表中,找到所需主账号,然后点击 按钮。

  3. 修改权限面板中,找到要为其配置条件的目标角色。然后在 IAM 条件(可选)下,点击添加 IAM 条件

  4. 修改条件面板中,输入条件的标题和选填性说明。

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

    条件构建器

    1. 条件类型下拉列表中,选择访问权限到期时间
    2. 运算符下拉列表中,选择 by
    3. 时间下拉列表中,点击 按钮,以便从日期和时间范围中进行选择。
    4. 点击保存以应用条件。
    5. 关闭修改条件面板后,在修改权限面板中再次点击保存,以更新允许政策。

    条件编辑器

    1. 点击条件编辑器标签页并输入以下表达式(将时间戳替换为您自己的时间戳):

      request.time < timestamp("2020-07-01T00:00:00.000Z")
    2. 输入表达式后,您可以通过点击右上方文本框上方的运行 linter 来选择验证 CEL 语法。

    3. 点击保存以应用条件。

    4. 关闭修改条件面板后,在修改权限面板中再次点击保存,以更新允许政策。

gcloud

允许政策是使用读取-修改-写入模式设置的。

执行 gcloud projects get-iam-policy 命令以获取项目的当前允许政策。在以下示例中,将允许政策的 JSON 版本下载到磁盘上的路径中。

命令:

gcloud projects get-iam-policy project-id --format=json > filepath

下载允许政策的 JSON 格式:

{
  "bindings": [
    {
      "members": [
        "user:my-user@example.com"
      ],
      "role": "roles/owner"
    },
    {
      "members": [
        "group:my-group@example.com"
      ],
      "role": "roles/iam.securityReviewer"
    }
  ],
  "etag": "BwWKmjvelug=",
  "version": 1
}

要配置具有可过期访问权限的允许政策,请添加以下突出显示的条件表达式(将时间戳替换为您自己的时间戳)。gcloud CLI 会自动更新版本:

{
  "bindings": [
    {
      "members": [
        "user:my-user@example.com"
      ],
      "role": "roles/owner"
    },
    {
      "members": [
        "group:my-group@example.com"
      ],
      "role": "roles/iam.securityReviewer",
      "condition": {
        "title": "Expires_July_1_2020",
        "description": "Expires on July 1, 2020",
        "expression":
          "request.time < timestamp('2020-07-01T00:00:00.000Z')"
      }
    }
  ],
  "etag": "BwWKmjvelug=",
  "version": 3
}

接下来,通过执行 gcloud projects set-iam-policy 命令设置新的允许政策:

gcloud projects set-iam-policy project-id filepath

系统将应用新的允许政策,且该群组的角色授予将在指定时间过期。

REST

使用读取-修改-写入模式以允许在特定时间之前访问。

首先,读取项目的允许政策

Resource Manager API 的 projects.getIamPolicy 方法可获取项目的允许政策。

在使用任何请求数据之前,请先进行以下替换:

  • PROJECT_ID:您的 Google Cloud 项目 ID。项目 ID 是字母数字字符串,例如 my-project
  • POLICY_VERSION:要返回的政策版本。请求应指定最新的政策版本,即政策版本 3。如需了解详情,请参阅在获取政策时指定政策版本

HTTP 方法和网址:

POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:getIamPolicy

请求 JSON 正文:

{
  "options": {
    "requestedPolicyVersion": POLICY_VERSION
  }
}

如需发送您的请求,请展开以下选项之一: