如何关联多份AWS CLI输出数据生成IAM身份中心合规审计报告
用JQ关联AWS IAM身份中心数据生成合规审计CSV报告
核心实现命令
针对你1500+用户、700+组的规模,最优方式是先构建ID到名称的映射表(O(1)查找效率),再批量替换组成员记录中的ID,最后导出标准CSV。直接在CloudShell执行以下命令:
jq -n --slurpfile users UsersIds.json --slurpfile groups GroupsID.json --slurpfile members GroupMembers.json ' # 构建用户ID→用户名的映射哈希表 ($users[0] | reduce .[] as $user ({}; .[$user.UserId] = $user.UserName)) as $userMap # 构建组ID→组名的映射哈希表 | ($groups[0] | reduce .[] as $group ({}; .[$group.GroupId] = $group.GroupName)) as $groupMap # 遍历所有组成员记录,替换ID为对应名称 | $members[0] | .[] | { GroupName: $groupMap[.GroupId], UserName: $userMap[.MemberId] } # 生成CSV:先输出表头,再输出每一行数据 | (["GroupName", "UserName"] | @csv), (. | [.GroupName, .UserName] | @csv) ' | awk 'NR==1 || !a[$0]++' > IAM_Groups_Members_Audit.csv
命令细节说明
- 映射表构建:
- 用
reduce遍历用户/组列表生成哈希表,避免每次查找都遍历整个数组,大幅提升大数据集的处理效率
- 用
- ID批量替换:
- 遍历
GroupMembers.json的每条记录,通过映射表直接匹配对应的组名和用户名
- 遍历
- CSV标准化处理:
@csv自动处理含特殊字符的名称(如逗号、引号),确保输出符合Excel兼容的CSV标准- 附加的
awk语句用于去重,避免同一用户重复出现在同一组的冗余记录
- 输出结果:
- 生成的
IAM_Groups_Members_Audit.csv可直接导入Excel,支持筛选、排序等合规审计所需的操作
- 生成的
注意事项
- 确认三个JSON文件的字段名匹配:
UsersIds.json需包含UserId和UserName字段GroupsID.json需包含GroupId和GroupName字段GroupMembers.json需包含GroupId和MemberId字段- 若字段名不符,需调整jq命令中对应的字段引用
- CloudShell默认预装jq,若版本过低可通过
sudo yum install jq更新 - 针对120个账号的大规模数据,该命令内存占用低、执行速度快,不会出现性能瓶颈
内容的提问来源于stack exchange,提问作者Michael Quale
相关产品推荐
相关产品推荐

