针对某项资源为用户授予 Identity and Access Management (IAM) 角色之前,您可能想知道对于某项特定资源可以授予哪些角色。
了解可授予哪些角色
如果某个角色包含某种资源类型的任何权限,则可以针对该资源或其上层资源授予该角色。例如,storage.admin
角色授予 storage.buckets.get
和 storage.objects.get
API 的权限,因此可以针对“Storage Buckets”和“Storage Objects”资源类型授予该角色。
也可以在定义角色权限的资源类型的“上层”授予这些角色。换句话说,可以针对位于 Google Cloud 资源层次结构中较高级层的资源授予较低层级资源的角色。以 storage.admin
角色为例,除了“Storage Buckets”外,您还可以在项目或组织级层授予该角色。
按角色授予的权限只会影响指定级层或更低级层的资源,而不会影响更高级层的资源或同级资源。此外,针对资源授予某项角色时,系统仅会授予适用于指定资源的权限,而无论该角色的名称、说明或其包含的其他权限为何。例如,在项目级层将角色 resourcemanager.organizationAdmin
(该角色授予 resourcemanager.projects.list
权限)分配给用户,只会为他们授予该特定项目的权限。而不允许他们列出或管理组织中的所有项目。同样,在特定 Compute Engine 实例上分配 compute.admin
角色只会为该实例(而不会为项目中的其他实例)授予权限。
列出可授予的角色
在列出可授予的角色之前,请确保已在项目中启用了服务。如果尚未启用服务,则不会返回其角色。
控制台
在 Cloud Console 中,转到 IAM 页面。
点击页面顶部的“选择项目”下拉菜单。
选择要查看其角色的项目或组织。
点击添加。
在成员中输入成员电子邮件或网域。
选择角色下拉菜单会显示您可针对此资源为成员授予的所有角色(包括自定义角色)。
gcloud
使用 gcloud iam list-grantable-roles
命令返回可应用于给定资源的所有角色的列表。
gcloud iam list-grantable-roles full-resource-name
系统可能会返回大量角色,具体取决于所需的资源。 如需限制结果数量,您可以指定过滤条件表达式。
输出结果如下所示:
description: Full control of all Compute Engine resources.
name: roles/compute.admin
title: Compute Admin
---
description: Full control of Compute Engine instance resources.
name: roles/compute.instanceAdmin
title: Compute Instance Admin
# Additional results here...
REST
roles.queryGrantableRoles
方法可返回针对某个资源可以授予的所有角色的列表。
在使用下面的请求数据之前,请先进行以下替换:
full-resource-name
:由服务名称和资源路径组成的 URI。如需查看示例,请参阅完整资源名称。
HTTP 方法和网址:
POST https://iam.googleapis.com/v1/roles:queryGrantableRoles
请求 JSON 正文:
{ "fullResourceName": "full-resource-name" }
如需发送您的请求,请展开以下选项之一:
您应该会收到类似以下内容的 JSON 响应:
{ "roles": [ { "name": "roles/compute.admin", "title": "Compute Admin", "description": "Full control of all Compute Engine resources." }, { "name": "roles/compute.instanceAdmin", "title": "Compute Instance Admin (beta)", "description": "Full control of Compute Engine instance resources." } ] }
C#
在试用此示例之前,请按照《IAM 快速入门:使用客户端库》中的 C# 设置说明进行操作。如需了解详情,请参阅 IAM C# API 参考文档。
Go
在试用此示例之前,请按照《IAM 快速入门:使用客户端库》中的 Go 设置说明进行操作。如需了解详情,请参阅 IAM Go API 参考文档。
Java
在试用此示例之前,请按照《IAM 快速入门:使用客户端库》中的 Java 设置说明进行操作。如需了解详情,请参阅 IAM Java API 参考文档。
Python
在试用此示例之前,请按照《IAM 快速入门:使用客户端库》中的 Python 设置说明进行操作。如需了解详情,请参阅 IAM Python API 参考文档。
在上面的示例中,完整资源名称是无传输协议的 URI,由与 DNS 兼容的 API 服务名称和资源路径组成。
例如,如需返回针对项目可授予的所有角色,请使用:
//cloudresourcemanager.googleapis.com/projects/project-id
较低层级资源具有更详细的完全限定名称。例如,使用以下命令可返回针对 Compute Engine 实例可授予的所有角色:
//compute.googleapis.com/projects/project-id/zones/zone-name/instances/instance-id
后续步骤
- 了解可用的 IAM 角色。
- 了解如何授予、更改和撤消成员的访问权限。
- 要了解不同类型的资源,请参阅资源名称示例。