如何通过Google API获取IAM所有成员及对应角色列表
用API获取GCP项目IAM成员及角色列表方案
对应你使用的gcloud projects get-iam-policy <项目名称>命令,可直接调用Google Cloud Resource Manager V3 API的projects.getIamPolicy接口实现相同功能,具体操作如下:
接口基础信息
- 请求方法:POST
- 请求地址:
https://cloudresourcemanager.googleapis.com/v3/projects/{项目标识}:getIamPolicy
其中{项目标识}可替换为项目ID或者项目数字编号 - 权限要求:调用身份需要持有
resourcemanager.projects.getIamPolicy权限,默认Project Owner、Editor、Viewer角色均包含该权限
请求配置
请求体可直接为空,也可指定返回的IAM策略版本,建议指定版本3以支持条件策略等全部特性,示例请求体:
{ "options": { "requestedPolicyVersion": 3 } }
返回结果解析
返回值中的bindings数组即为成员与角色的对应关系,每个数组项包含两个核心字段:
role:IAM角色的唯一标识,官方角色格式为roles/[角色名],自定义角色格式为projects/[项目ID]/roles/[自定义角色名]members:对应该角色的所有授权主体列表,主体标识前缀包括user:(普通用户)、serviceAccount:(服务账号)、group:(用户组)、domain:(域名全量授权)等
返回结果示例:
{ "version": 3, "bindings": [ { "role": "roles/owner", "members": [ "user:admin@example.com", "serviceAccount:deploy@demo-project.iam.gserviceaccount.com" ] }, { "role": "roles/viewer", "members": [ "user:viewer@example.com" ] } ], "etag": "BwX9Z7x2KzM=", "auditConfigs": [] }
本地验证方法
你可以直接用gcloud命令输出结构化的JSON结果,和API返回结果完全一致,可用来做对照验证:gcloud projects get-iam-policy <项目名称> --format=json
内容的提问来源于stack exchange,提问作者user3256289
相关产品推荐
相关产品推荐

