如何通过AWS CLI列出SSO用户及其关联的权限集?
如何通过AWS CLI同时列出SSO用户及其关联的权限集
AWS CLI没有提供单条命令直接关联并输出SSO用户和对应的权限集,需要结合identitystore和sso-admin的多个命令,通过脚本整合结果。以下是具体实现方法:
前提条件
- 已配置AWS CLI且拥有SSO相关权限(
identitystore:ListUsers、sso-admin:ListPermissionSetsProvisionedToUser、sso-admin:DescribePermissionSet等) - 提前获取你的SSO实例ARN和身份存储ID(可通过
aws sso-admin list-instances获取)
分步实现(Bash脚本示例)
将以下内容保存为sso-users-permissions.sh,替换其中的<INSTANCE_ARN>和<IDENTITY_STORE_ID>为你的实际值:
#!/bin/bash INSTANCE_ARN="<INSTANCE_ARN>" IDENTITY_STORE_ID="<IDENTITY_STORE_ID>" # 列出所有SSO用户 aws identitystore list-users --identity-store-id $IDENTITY_STORE_ID --output json | jq -r '.Users[] | [.UserId, .UserName, .DisplayName] | @tsv' | while read -r USER_ID USER_NAME DISPLAY_NAME; do echo "=== 用户信息:$DISPLAY_NAME ($USER_NAME) ===" # 获取该用户关联的权限集ARN列表 PERMISSION_SETS=$(aws sso-admin list-permission-sets-provisioned-to-user --instance-arn $INSTANCE_ARN --user-id $USER_ID --output json | jq -r '.PermissionSets[]') if [ -z "$PERMISSION_SETS" ]; then echo "无关联权限集" echo "" continue fi # 遍历权限集ARN,获取权限集名称 for ARN in $PERMISSION_SETS; do PERM_NAME=$(aws sso-admin describe-permission-set --instance-arn $INSTANCE_ARN --permission-set-arn $ARN --output json | jq -r '.PermissionSet.Name') echo "- 权限集:$PERM_NAME ($ARN)" done echo "" done
使用说明
- 确保已安装
jq(用于JSON解析,可通过apt install jq或brew install jq安装) - 赋予脚本执行权限:
chmod +x sso-users-permissions.sh - 运行脚本:
./sso-users-permissions.sh
关键命令解释
aws identitystore list-users:获取所有SSO用户的基础信息(用户ID、用户名等)aws sso-admin list-permission-sets-provisioned-to-user:根据用户ID获取其关联的权限集ARNaws sso-admin describe-permission-set:通过权限集ARN获取权限集的名称(更易读)
注意事项
- 如果用户数量较多,脚本执行时间会较长(因为每个用户都要单独调用API)
- 可根据需求修改脚本,调整输出格式(比如输出为CSV)
内容的提问来源于stack exchange,提问作者Bipu Ojha
相关产品推荐
相关产品推荐

