如何通过Google Cloud API获取IAM成员及其MFA状态列表
解决方法:获取Cloud Console IAM用户的MFA状态并生成报告
首先得明确:Cloud Console的IAM用户(能登录Console的Google账号)的MFA状态并不直接存储在Google Cloud资源里,而是由账号所属的身份系统(Google Workspace/Cloud Identity,或外部个人Google账号)管理,需要分两步操作:
1. 先获取项目内所有IAM用户成员
用IAM API的projects.getIamPolicy接口,获取项目的IAM策略,从中筛选出类型为user:的成员(排除serviceAccount:、group:等其他类型),得到所有能访问Cloud Console的用户账号列表。
示例gcloud命令:
gcloud projects get-iam-policy YOUR_PROJECT_ID --format="value(bindings.members)" | grep "^user:"
2. 获取用户的MFA状态
根据用户账号的类型,用不同方式获取:
- Workspace/Cloud Identity域内用户:
你找到的Admin SDK Directory API的users.list接口是正确的,调用时指定projection=full,返回的用户数据里包含isEnrolledIn2Sv(是否启用MFA)和is2SvEnforced(是否强制MFA)字段,可直接判断用户是否配置了MFA。 - 外部个人Google账号(如xxx@gmail.com):
没有公开API可以批量获取这类账号的MFA状态——这属于用户隐私信息,只有用户本人或Google官方能查看,无法通过项目管理员权限获取。
3. 生成未配置MFA的用户报告
把第一步拿到的IAM用户列表,和第二步获取的MFA状态做匹配:
- 筛选出
isEnrolledIn2Sv=false的域内用户 - 对无法获取状态的外部账号单独标注说明
最后整理成报告即可。
关键注意点
- 调用Admin SDK需要Workspace/Cloud Identity的管理员权限,且需提前启用Directory API
- 你找到的Identity Platform接口是面向应用用户的,和Cloud Console的IAM用户无关,无需使用
- 服务账号不需要MFA登录Console,可直接排除在报告范围外
内容的提问来源于stack exchange,提问作者Rezoan
相关产品推荐
相关产品推荐

