我正在尝试使用Google Cloud Resource Manager API来测试经过身份验证的用户是否具有对给定项目的权限。我已阅读Google Cloud Resource Manager API documentation并已尝试发送请求,但所有失败都会出现以下错误:
{“error”:{“code”:400,“message”:“请求包含无效参数。”,“status”:“INVALID_ARGUMENT”}}
POST请求是:
https://cloudresourcemanager.googleapis.com/v1/projects/ {专案编号}:testIamPermissions
其中{projectId}是来自Google Cloud Developer Console的已定义projectId。我知道我可以使用project.list方法并确定给定的projectId是否存在于用户的项目列表中。我想了解如何使用project.testIamPermissions请求并确定用户对项目的权限。
答案 0 :(得分:1)
要使用云资源管理器 API方法 organizations.testIamPermissions 或 projects.testIamPermissions ,您需要提供资源''要检查URL,然后检查您要在正文中检查的权限。
因此,例如,如果我想测试经过身份验证的用户是否可以访问特定项目(例如compute.instances.create
)上的特定权限(例如my-project
),那么,我会 POST 这个:
{
"permissions": [
"compute.instances.create"
]
}
到网址:
https://cloudresourcemanager.googleapis.com/v1/projects/my-project:testIamPermissions
会给我以下回复:
{
"permissions": [
"compute.instances.create"
]
}
因为我确实有权在my-project
中创建新实例。
但是,如果我没有创建新实例的权限,则响应将如下所示:
{
}
通过API Explorer尝试here。
如果您的目标是查找用户对项目的所有权限的测试,那么您必须提供请求正文中所有项目级权限的完整列表,并且响应将包含这些权限的子集用户有。
希望这有帮助!