获取GCP管理员角色及成员信息的gcloud命令与权限咨询
GCP获取管理员角色及成员的只读权限与实现方案
一、所需自定义角色权限
要只读获取管理员角色及成员信息,给自定义角色添加以下两个权限即可,无需超级管理员权限:
roles/iam.roleViewer:允许查看所有内置和自定义角色的完整定义roles/iam.securityReviewer:允许查看项目IAM政策中的角色-成员绑定关系
注:GCP没有内置的"管理员角色"分类,需要你自己通过角色的权限范围(比如
roles/owner、roles/editor这类高权限内置角色,或自定义角色中包含iam.*、compute.admin等核心权限)来筛选区分。
二、gcloud脚本实现方案
步骤1:获取所有角色并筛选管理员角色
先导出所有角色,再用jq过滤出符合管理员特征的角色:
# 导出所有角色为JSON文件 gcloud iam roles list --format=json > all_roles.json # 过滤内置管理员角色+名称含Admin的自定义角色(可根据实际调整过滤规则) jq '.[] | select(.name | test("roles/(owner|editor)") or .title | test("Admin|admin"))' all_roles.json > admin_roles.json
步骤2:批量获取每个管理员角色的成员
遍历筛选后的管理员角色,拉取对应的成员列表:
# 替换为你的项目ID PROJECT_ID="your-project-id" # 遍历管理员角色,输出角色及对应成员 while read -r role_name; do echo "--- 角色: $role_name ---" gcloud projects get-iam-policy $PROJECT_ID \ --filter="bindings.role:$role_name" \ --format="value(bindings.members)" done < <(jq -r '.[] | .name' admin_roles.json)
三、非gcloud方案(IAM API调用)
如果不想用gcloud,直接调用GCP IAM API也能实现:
- 调用
roles.list接口获取所有角色列表,自行筛选管理员角色 - 调用
projects.getIamPolicy接口获取项目IAM政策,从bindings字段中匹配管理员角色对应的members
所需权限和gcloud方案完全一致,只需roles/iam.roleViewer和roles/iam.securityReviewer。
内容的提问来源于stack exchange,提问作者Fas
相关产品推荐
相关产品推荐

