管理对其他资源的访问权限

本页面介绍授予、更改和撤消对接受允许政策的资源的访问权限的一般流程。

在 Identity and Access Management (IAM) 中,通过允许政策(也称为 IAM 政策)授予访问权限。允许政策已附加到 Google Cloud 资源。每个允许政策都包含一组角色绑定,这些角色绑定会将一个或多个主账号(例如用户或服务账号)与 IAM 角色相关联。这些角色绑定会向主账号授予指定的角色,包括允许政策所关联的资源以及该资源的所有后代。如需详细了解允许政策,请参阅了解允许政策

本页面介绍如何使用 Google Cloud Console、Google Cloud CLI 和 REST API 管理资源的访问权限。您还可以使用 Google Cloud 客户端库管理访问权限。

准备工作

查看接受允许政策的资源类型列表。

所需权限

要管理对资源的访问权限,您需要具有获取资源的权限,以及获取和设置资源的允许政策的权限。这些权限采用以下格式,其中 SERVICE 是拥有该资源的服务的名称,RESOURCE_TYPE 是您要管理其访问权限的资源类型的名称:

  • SERVICE.RESOURCE_TYPE.get
  • SERVICE.RESOURCE_TYPE.getIamPolicy
  • SERVICE.RESOURCE_TYPE.setIamPolicy

例如,如需管理对 Compute Engine 实例的访问权限,您需要以下权限:

  • compute.instances.get
  • compute.instances.getIamPolicy
  • compute.instances.setIamPolicy

要获取所需的权限,请让管理员授予您包含权限的预定义角色或自定义角色。例如,管理员可以向您授予 Security Admin 角色 (roles/iam.securityAdmin),该角色包括管理几乎所有 Google Cloud 资源的访问权限。

查看当前访问权限

以下部分介绍如何使用 Google Cloud 控制台、gcloud CLI 和 REST API 查看谁有权访问资源。您还可以使用 Google Cloud 客户端库获取资源的访问权限,以获取资源的允许政策。

控制台

  1. 在 Google Cloud 控制台中,转到列出要查看其访问权限的资源的页面。

    例如,如需管理对 Compute Engine 实例的访问权限,请转到虚拟机实例页面。

    转到“虚拟机实例”

  2. 选中要查看其访问权限的资源旁边的复选框。

  3. 确保信息面板可见。如果未显示,请点击显示信息面板。信息面板的权限标签页列出了有权访问该资源的所有主账号。

    如果显示继承的权限开关处于开启状态,则列表中会包含具有继承角色的主账号;也就是说,其访问权限来自父级资源(而非资源本身)角色的主账号。如需详细了解政策继承,请参阅政策继承和资源层次结构

gcloud

要查看谁有权访问您的资源,请获取该资源的允许政策。如需了解如何解读允许政策,请参阅了解允许政策

如需获取资源的允许政策,请对资源运行 get-iam-policy 命令。

此命令的格式取决于您要访问的资源类型。如需查找资源的格式,请在 Google Cloud CLI 参考中查找资源的 get-iam-policy 命令参考。此引用先按服务,然后按资源进行整理。例如,如需获取 Compute Engine 虚拟机实例的允许政策,请遵循 gcloud compute instances get-iam-policy 参考文档中所述的格式。

(可选)在命令中添加以下参数以指定格式并导出结果:

--format=FORMAT > PATH

请提供以下值:

  • FORMAT:政策所需的格式。请使用 jsonyaml
  • PATH:指向政策的新输出文件的路径。

运行该命令时,资源的允许政策会输出到控制台或导出到指定文件。

REST

如需查看谁有权访问您的资源,请获取资源的允许政策。如需了解如何解读允许政策,请参阅了解允许政策

如需获取资源的允许政策,请使用资源的 getIamPolicy 方法。

HTTP 方法、网址和请求正文取决于您要查看其访问权限的资源。如需查找这些详细信息,请找到拥有该资源的服务的 API 参考文档,然后找到该资源的 getIamPolicy 方法的引用。例如,Compute Engine 实例的 HTTP 方法、网址和请求正文在实例 getIamPolicy 参考文档中指定。

任何资源的 getIamPolicy 方法的响应都包含资源的允许政策。

授予或撤消单个角色

您可以使用 Google Cloud 控制台和 gcloud CLI 快速授予或撤消单个主账号的单个角色,而无需直接修改资源的允许政策。常见的主账号类型包括 Google 账号、服务账号、Google 群组和网域。如需查看所有主账号类型的列表,请参阅与身份相关的概念

如果您需要帮助来确定最合适的预定义角色,请参阅选择预定义角色

授予单个角色

如需向主账号授予单个角色,请执行以下操作:

控制台

  1. 在 Google Cloud 控制台中,转到列出要查看其访问权限的资源的页面。

    例如,如需管理对 Compute Engine 实例的访问权限,请转到虚拟机实例页面。

    转到“虚拟机实例”

  2. 选中要管理其访问权限的资源旁边的复选框。

  3. 确保信息面板可见。如果未显示,请点击显示信息面板

  4. 选择要向其授予一个角色的主账号:

    • 如需向已拥有资源的其他角色的主账号授予角色,请找到包含主账号的行,点击该行中的 修改主账号,然后点击 添加其他角色

    • 要向尚未拥有资源其他角色的主账号授予角色,请点击 添加主账号,然后输入该主账号的电子邮件地址或其他标识符。

  5. 从下拉列表中选择要授予的角色。按照确保安全性的最佳做法,请选择一个仅包含主账号所需权限的角色。

  6. 可选:为角色添加条件

  7. 点击保存。将向主账号授予资源上的角色。

gcloud

要快速向主账号授予角色,请运行 add-iam-policy-binding 命令。

此命令的格式取决于您要访问的资源类型。如需查找资源的格式,请在 Google Cloud CLI 参考中查找资源的 add-iam-policy-binding 命令参考。此引用先按服务,然后按资源进行整理。例如,要向主账号授予 Compute Engine 实例上的角色,请遵循 gcloud compute instances add-iam-policy- binding 参考文档中所述的格式。

撤消单个角色

如需撤消主账号的单个角色,请执行以下操作:

控制台

  1. 在 Google Cloud 控制台中,转到列出要撤消其访问权限的资源的页面。

    例如,如需管理对 Compute Engine 实例的访问权限,请转到虚拟机实例页面:

    转到“虚拟机实例”

  2. 选中要管理其访问权限的资源旁边的复选框。

  3. 确保信息面板可见。如果未显示,请点击显示信息面板

  4. 找到包含主账号的行,然后点击该行中的 修改主账号

  5. 点击要撤消的角色对应的删除 按钮,然后点击保存

gcloud

如需快速撤消成员的角色,请运行 remove-iam-policy-binding 命令。

此命令的格式取决于您要访问的资源类型。如需查找资源的格式,请在 Google Cloud CLI 参考中查找资源的 remove-iam-policy-binding 命令参考。此引用先按服务,然后按资源进行整理。例如,要向主账号授予 Compute Engine 实例上的角色,请遵循 gcloud compute instances remove-iam-policy-binding 参考文档中所述的格式。

使用 Google Cloud 控制台授予或撤消多个角色

您可以使用 Google Cloud 控制台为单个主账号授予和撤消多个角色:

  1. 在 Google Cloud 控制台中,转到列出要查看其访问权限的资源的页面。

    例如,如需管理对 Compute Engine 实例的访问权限,请转到虚拟机实例页面。

    转到“虚拟机实例”

  2. 选中要管理其访问权限的资源旁边的复选框。

  3. 如果信息面板尚未显示,请点击显示信息面板

  4. 选择要修改其角色的主账号:

    • 如需修改已拥有资源角色的主账号的角色,请找到包含该主账号的行,点击该行中的 修改主账号,然后点击 添加其他角色

    • 如需向未拥有资源任何现有角色的主账号授予角色,请点击 添加主账号,然后输入该主账号的电子邮件地址或其他标识符。

  5. 修改主账号的角色:

    • 如需向尚未拥有资源的任何角色的主账号授予角色,请点击选择角色,然后从下拉列表中选择要授予的角色。
    • 如需向主账号授予其他角色,请点击添加其他角色,然后从下拉列表中选择要授予的角色。
    • 如需将某个主账号的某个角色替换为其他角色,请点击现有角色,然后从下拉列表中选择要授予的其他角色。
    • 如需撤销主账号的某个角色,请点击要撤消的每个角色对应的删除 按钮。

    您还可以为角色添加条件修改角色的条件移除角色的条件

  6. 点击保存

以编程方式授予或撤销多个角色

如需进行涉及为多个主账号授予和撤销多个角色的大规模访问权限更改,请使用“读取-修改-写入”模式更新资源的允许政策:

  1. 通过调用 getIamPolicy() 读取当前允许政策。
  2. 使用文本编辑器或以编程方式修改允许政策,以添加或移除任何主账号或角色绑定。
  3. 通过调用 setIamPolicy() 写入更新后的允许政策。

本部分介绍如何使用 gcloud CLI 和 REST API 来更新允许政策。您还可以使用 Google Cloud 客户端库更新允许政策。

获取当前允许政策

gcloud

如需获取资源的允许政策,请对资源运行 get-iam-policy 命令。

此命令的格式取决于您要访问的资源类型。如需查找资源的格式,请在 Google Cloud CLI 参考中查找资源的 get-iam-policy 命令参考。此引用先按服务,然后按资源进行整理。例如,如需获取 Compute Engine 虚拟机实例的允许政策,请遵循 gcloud compute instances get-iam-policy 参考文档中所述的格式。

(可选)在命令中添加以下参数以指定格式并导出结果:

--format=FORMAT > PATH

请提供以下值:

  • FORMAT:允许政策所需的格式。请使用 jsonyaml
  • PATH:指向允许政策的新输出文件的路径。

运行该命令时,资源的允许政策会输出到控制台或导出到指定文件。

REST

如需获取资源的允许政策,请使用资源的 getIamPolicy 方法。

HTTP 方法、网址和请求正文取决于您要查看其访问权限的资源。如需查找这些详细信息,请找到拥有该资源的服务的 API 参考文档,然后找到该资源的 getIamPolicy 方法的引用。例如,Compute Engine 虚拟机实例的 HTTP 方法、网址和请求正文在实例 getIamPolicy 参考文档中指定。

任何资源的 getIamPolicy 方法的响应都包含资源的允许政策。将响应保存在相应类型(jsonyaml)的文件中。

修改允许政策

通过编程或文本编辑器修改资源的允许政策的本地副本,以反映您要授予或撤消的角色。

为了确保您不会覆盖其他更改,请勿修改或移除允许政策的 etag 字段。etag 字段标识允许政策的当前状态。在您设置更新后的允许政策后,IAM 会将请求中的 etag 值与现有的 etag 进行比较,并且仅当值匹配时才会写入允许政策。

如需修改允许政策授予的角色,您需要修改允许政策中的角色绑定。角色绑定采用以下格式:

{
  "role": "ROLE_NAME",
  "members": [
    "PRINCIPAL_1",
    "PRINCIPAL_2",
    ...
    "PRINCIPAL_N"
  ],
  "conditions:" {
    CONDITIONS
  }
}

占位符具有以下值:

  • ROLE_NAME:您要授予的角色的名称。请采用以下某种格式:

    • 预定义角色:roles/SERVICE.IDENTIFIER
    • 项目级自定义角色:projects/PROJECT_ID/roles/IDENTIFIER
    • 组织级自定义角色:organizations/ORG_ID/roles/IDENTIFIER

    如需了解完整的预定义角色的列表,请参阅了解角色

  • PRINCIPAL_1PRINCIPAL_2...PRINCIPAL_N:您要向其授予相应角色的主账号的标识符。

    主账号标识符通常采用以下格式:PRINCIPAL-TYPE:ID。例如 user:my-user@example.com。如需 PRINCIPAL 可以采用的值的完整列表,请参阅政策绑定参考文档

    对于主账号类型 user,标识符中的域名必须是 Google Workspace 网域或 Cloud Identity 网域。如需了解如何设置 Cloud Identity 网域,请参阅 Cloud Identity 概览

  • CONDITIONS:可选。指定何时授予访问权限的任何条件

授予角色

要向主账号授予角色,请修改允许政策中的角色绑定。如需了解您可以授予哪些角色,请参阅了解角色查看资源的可授予角色。如果您需要帮助来确定最合适的预定义角色,请参阅选择预定义角色

(可选)您可以使用条件,仅在满足特定要求时授予角色。

如需授予允许政策中已包含的角色,请将该主账号添加到现有角色绑定:

gcloud

将主账号添加到现有角色绑定,以修改允许政策。请注意,此更改在您设置更新后的允许政策后才会生效。

例如,假设允许政策包含以下角色绑定,其将 Compute Instance Admin 角色 (roles/compute.instanceAdmin) 授予给 kai@example.com

{
  "role": "roles/compute.instanceAdmin",
  "members": [
    "user:kai@example.com"
  ]
}

如需向 raha@example.com 授予相同的角色,请将 raha@example.com 添加到现有角色绑定:

{
  "role": "roles/compute.instanceAdmin",
  "members": [
    "user:kai@example.com",
    "user:raha@example.com"
  ]
}

REST

将主账号添加到现有角色绑定,以修改允许政策。请注意,此更改在您设置更新后的允许政策后才会生效。

例如,假设允许政策包含以下角色绑定,其将 Compute Instance Admin 角色 (roles/compute.instanceAdmin) 授予给 kai@example.com

{
  "role": "roles/compute.instanceAdmin",
  "members": [
    "user:kai@example.com"
  ]
}

如需向 raha@example.com 授予相同的角色,请将 raha@example.com 添加到现有角色绑定:

{
  "role": "roles/compute.instanceAdmin",
  "members": [
    "user:kai@example.com",
    "user:raha@example.com"
  ]
}

如需授予允许政策中未包含的角色,请添加新的角色绑定:

gcloud

通过添加向主账号授予该角色的新角色绑定来修改允许政策。此更改在您设置更新后的允许政策后才会生效。

例如,如需向 raha@example.com 授予 Compute Load Balancer Admin 角色 (roles/compute.loadBalancerAdmin),请将以下角色绑定添加到允许政策的 bindings 数组中:

{
  "role": "roles/compute.loadBalancerAdmin",
  "members": [
    "user:raha@example.com"
  ]
}

REST

通过添加向主账号授予该角色的新角色绑定来修改允许政策。此更改在您设置更新后的允许政策后才会生效。

例如,如需向 raha@example.com 授予 Compute Load Balancer Admin 角色 (roles/compute.loadBalancerAdmin),请将以下角色绑定添加到允许政策的 bindings 数组中:

{
  "role": "roles/compute.loadBalancerAdmin",
  "members": [
    "user:raha@example.com"
  ]
}

撤消角色

如需撤消角色,请从角色绑定中移除该主账号。如果角色绑定中没有其他主账号,请移除整个角色绑定。

gcloud

通过修改由 get-iam-policy 命令返回的 JSON 或 YAML 允许政策来撤消角色。此更改在您设置更新后的允许政策后才会生效。

如需撤消主账号的角色,请在允许政策的 bindings 数组中删除所需的主账号或绑定。

REST

通过修改由 get-iam-policy 命令返回的 JSON 或 YAML 允许政策来撤消角色。此更改在您设置更新后的允许政策后才会生效。

如需撤消主账号的角色,请在允许政策的 bindings 数组中删除所需的主账号或绑定。

设置允许政策

修改允许政策以授予和撤消所需的角色后,请调用 setIamPolicy() 进行更新。

gcloud

如需设置资源的允许政策,请对资源运行 set-iam-policy 命令。

此命令的格式取决于您要访问的资源类型。如需查找资源的格式,请在 Google Cloud CLI 参考中查找资源的 set-iam-policy 命令参考。此引用先按服务,然后按资源进行整理。例如,如需获取 Compute Engine 虚拟机实例的允许政策,请遵循 gcloud compute instances set-iam-policy 参考文档中所述的格式。

任何资源的 set-iam-policy 命令的响应都包含资源更新后的允许政策。

REST

如需设置资源的允许政策,请使用资源的 setIamPolicy 方法。

HTTP 方法、网址和请求正文取决于您要查看其访问权限的资源。如需查找这些详细信息,请找到拥有该资源的服务的 API 参考文档,然后找到该资源的 setIamPolicy 方法的引用。例如,Compute Engine 虚拟机实例的 HTTP 方法、网址和请求正文在实例 setIamPolicy 参考文档中指定。

任何资源的 setIamPolicy 方法的响应都包含资源的更新后允许政策。

后续步骤

自行试用

如果您是 Google Cloud 新手,请创建一个账号来评估我们的产品在实际场景中的表现。新客户还可获享 $300 赠金,用于运行、测试和部署工作负载。

免费开始使用