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

本页介绍授予、更改和撤消对接受 Identity and Access Management (IAM) 政策资源的访问权限的一般流程。

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

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

准备工作

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

所需权限

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

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

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

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

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

查看当前访问权限

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

控制台

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

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

    转到“虚拟机实例”

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

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

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

gcloud

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

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

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

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

--format=FORMAT > PATH

请提供以下值:

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

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

REST

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

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

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

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

授予或撤消单个角色

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

授予单个角色

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

控制台

  1. 在 Cloud Console 中,转到列出要查看的资源的资源。

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

    转到“虚拟机实例”

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

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

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

    • 如需向已在资源上具有其他角色的主帐号授予角色,请找到包含该主帐号电子邮件地址的行,点击该行中的 修改主帐号,然后点击 添加其他角色

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

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

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

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

gcloud

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

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

撤消单个角色

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

控制台

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

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

    转到“虚拟机实例”

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

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

  4. 找到包含该主帐号电子邮件地址的行,然后点击该行中的 修改主帐号

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

gcloud

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

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

授予或撤消多个角色

如需进行涉及访问权限和撤消多个角色的大规模访问权限更改,请使用读取-修改-写入模式更新资源的 IAM 政策:

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

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

获取当前政策

gcloud

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

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

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

--format=FORMAT > PATH

请提供以下值:

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

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

REST

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

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

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

修改政策

通过编程或文本编辑器修改资源政策的本地副本,以反映您要针对给定用户授予或撤消的角色。

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

授予角色

要向主帐号授予角色,请修改政策中的角色绑定。如需了解您可以授予哪些角色,请参阅了解角色查看可授予的资源角色

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

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

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

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

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

REST

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

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

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

后续步骤

自行试用

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

免费开始使用