Google 云资源管理器 API:测试 IAM 权限

Google Cloud Resource Manager API: Test IAM Permissions

我正在尝试使用 Google 云资源管理器 API 来测试经过身份验证的用户是否具有给定项目的权限。我已阅读 Google Cloud Resource Manager API documentation 并尝试发送请求,但均因以下错误而失败:

{ "error": { "code": 400, "message": "Request contains an invalid argument.", "status": "INVALID_ARGUMENT" } }

POST请求是:

https://cloudresourcemanager.googleapis.com/v1/projects/{projectId}:testIamPermissions

其中 {projectId} 是 Google Cloud Developer Console 中定义的 projectId。我知道我可以使用 project.list 方法并确定给定的 projectId 是否存在于用户的项目列表中。我想了解如何使用 project.testIamPermissions 请求并确定用户对项目具有的权限。

为了使用云资源管理器API方法organizations.testIamPermissions projects.testIamPermissions,您需要在 URL 中提供您想要签入的资源,然后在正文中提供您想要签入的权限。

因此,例如,如果我想测试我作为经过身份验证的用户是否有权访问特定项目(例如 my-project)的特定权限(例如 compute.instances.create)然后,我会 POST 这个:

{
 "permissions": [
  "compute.instances.create"
 ]
}

URL:

https://cloudresourcemanager.googleapis.com/v1/projects/my-project:testIamPermissions

这会给我以下响应:

{
 "permissions": [
  "compute.instances.create"
 ]
}

因为我确实有权在 my-project 中创建新实例。 但是,如果我没有创建新实例的权限,响应将如下所示:

{
}

通过 API Explorer 尝试 here

如果您的目标是找到用户对项目拥有的所有权限的测试,那么您必须在请求正文中提供所有项目级别权限的完整列表,响应将包括这些权限的子集用户拥有的权限。

希望对您有所帮助!