5

我正在尝试使用 Google Cloud Resource Manager API 来测试经过身份验证的用户是否具有给定项目的权限。我已阅读Google Cloud Resource Manager API 文档并尝试发送请求,但都失败并出现以下错误:

{ "error": { "code": 400, "message": "请求包含无效参数。", "status": "INVALID_ARGUMENT" } }

POST 请求是:

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

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

4

1 回答 1

2

为了使用Cloud Resource Manager API 方法organizations.testIamPermissionsprojects.testIamPermissions,您需要在 URL 中提供要检查的资源,然后在正文中提供要检查的权限。

因此,例如,如果我想测试我(经过身份验证的用户)是否有权访问compute.instances.create特定项目(例如)的特定权限(例如),my-project那么我会发布以下内容:

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

网址

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

这会给我以下回应:

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

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

{
}

通过 API Explorer在此处尝试。

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

希望这可以帮助!

于 2017-07-30T22:35:43.830 回答