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。
如果您的目标是找到用户对项目拥有的所有权限的测试,那么您必须在请求正文中提供所有项目级别权限的完整列表,响应将包括这些权限的子集用户拥有的权限。
希望对您有所帮助!
我正在尝试使用 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。
如果您的目标是找到用户对项目拥有的所有权限的测试,那么您必须在请求正文中提供所有项目级别权限的完整列表,响应将包括这些权限的子集用户拥有的权限。
希望对您有所帮助!