针对某项资源为用户授予 Identity and Access Management (IAM) 角色之前,您可能想知道对于某项特定资源可以授予哪些角色。
准备工作
-
启用 IAM API。
所需的角色
如需获得列出可授予角色所需的权限,请让您的管理员为您授予要列出其可授予角色的资源的 Security Reviewer (roles/iam.securityReviewer
) IAM 角色。如需详细了解如何授予角色,请参阅管理访问权限。
此预定义角色包含所有资源类型的 getIamPolicy
权限。如需列出可授予的角色,您需要拥有要列出可授予的角色的资源的 getIamPolicy
权限 - 例如,要列出项目的可授予角色,您需要 resourcemanager.projects.getIamPolicy
权限。您也可以使用自定义角色或其他预定义角色来获取此权限。
了解可授予哪些角色
如果某个角色包含某种资源类型的任何权限,则可以针对该资源或其上层资源授予该角色。例如,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
角色只会为该实例(而不会为项目中的其他实例)授予权限。
列出可授予的角色
在列出可授予的角色之前,请确保已在项目中启用了服务。如果尚未启用服务,则不会返回其角色。
控制台
在 Google Cloud 控制台中,转到 IAM 页面。
点击页面顶部的“选择项目”下拉菜单。
选择要查看其角色的项目或组织。
点击
授予访问权限。在主帐号中输入主帐号的电子邮件地址、网域或其他标识符。
选择角色下拉菜单会显示您可针对此资源为主帐号授予的所有角色(包括自定义角色)。
gcloud CLI
使用 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 客户端库,请参阅 IAM 客户端库。如需了解详情,请参阅 IAM C++ API 参考文档。
C#
如需了解如何安装和使用 IAM 客户端库,请参阅 IAM 客户端库。如需了解详情,请参阅 IAM C# API 参考文档。
Go
如需了解如何安装和使用 IAM 客户端库,请参阅 IAM 客户端库。如需了解详情,请参阅 IAM Go API 参考文档。
Java
如需了解如何安装和使用 IAM 客户端库,请参阅 IAM 客户端库。如需了解详情,请参阅 IAM Java API 参考文档。
Python
如需了解如何安装和使用 IAM 客户端库,请参阅 IAM 客户端库。如需了解详情,请参阅 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 角色。
- 了解如何选择最合适的预定义角色。
- 了解如何授予、更改和撤消主帐号的访问权限。
- 要了解不同类型的资源,请参阅资源名称示例。