大多数 Google Cloud 资源都会公开 testIamPermissions()
方法,您可通过该方法以编程方式检查当前已通过身份验证的调用者是否已获得对相应资源的一项或多项特定的 IAM 权限。testIamPermissions()
方法将资源标识符和一组权限作为输入参数,并返回调用者可以使用的一组权限。
您可以使用 testIamPermissions()
方法来确定,用户是否应该有权限访问一个 Web 应用中的管理工具。例如,您可以使用此方法根据用户的权限决定是否显示某个 Google Cloud 资源的详细信息。
例如,如需确定当前通过身份验证的用户是否具有删除项目的权限,请通过提供项目 ID(例如 foo-project
)和 resourcemanager.projects.delete
权限作为输入参数来调用 projects.testIamPermissions()
方法。如果调用者已获得 resourcemanager.projects.delete
权限,则响应正文将列出该权限。如果调用者没有此权限,则响应正文将不会列出任何权限。
testIamPermissions()
方法适用于第三方图形界面 (GUI),这些界面需要根据通过身份验证的用户有权查看的内容显示 Google Cloud 资源。例如,Google Cloud 控制台会在内部使用 testIamPermissions()
方法确定您在完成身份验证后可以看到哪些资源和功能。不同的用户通常会获得不同的权限,而 Google Cloud 控制台则会相应地隐藏或公开某些内容。
准备工作
-
启用 Resource Manager API。
所需的角色
测试权限不需要 IAM 角色。
如何测试权限
此示例展示了如何测试 Google Cloud 项目的 resourcemanager.projects.get
和 resourcemanager.projects.delete
权限。如需测试其他 Google Cloud 资源的权限,请使用每个资源所公开的 testIamPermissions()
方法。例如,您可以测试 Cloud Storage 存储分区的 IAM 权限。
REST
在此示例中,用户具有 IAM 角色,因此可获取项目的相关信息,但不能删除项目。
Resource Manager API 的 projects.testIamPermissions
方法获取一个权限列表,并测试一个主帐号拥有哪些权限。
在使用任何请求数据之前,请先进行以下替换:
PROJECT_ID
:您的 Google Cloud 项目 ID。项目 ID 是字母数字字符串,例如my-project
。
HTTP 方法和网址:
POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:testIamPermissions
请求 JSON 正文:
{ "permissions": [ "resourcemanager.projects.get", "resourcemanager.projects.delete" ] }
如需发送您的请求,请展开以下选项之一:
您应该收到类似以下内容的 JSON 响应:
{ "permissions": [ "resourcemanager.projects.get" ] }
C++
如需了解如何安装和使用 IAM 客户端库,请参阅 IAM 客户端库。如需了解详情,请参阅 IAM C++ API 参考文档。
如需向 IAM 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
C#
如需了解如何安装和使用 IAM 客户端库,请参阅 IAM 客户端库。如需了解详情,请参阅 IAM C# API 参考文档。
如需向 IAM 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
IAM 会测试您用来生成凭据的服务帐号的权限。Java
如需了解如何安装和使用 IAM 客户端库,请参阅 IAM 客户端库。如需了解详情,请参阅 IAM Java API 参考文档。
如需向 IAM 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
IAM 会测试您用来生成凭据的服务帐号的权限。Python
如需了解如何安装和使用 IAM 客户端库,请参阅 IAM 客户端库。如需了解详情,请参阅 IAM Python API 参考文档。
如需向 IAM 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
IAM 会测试您用来生成凭据的服务帐号的权限。后续步骤
了解如何授予、更改和撤消主帐号的访问权限。