You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何列出单账户中访问S3私有存储桶的IAM用户或角色

单个AWS账户下查询私有S3存储桶可访问IAM用户与角色的方法

方法1:IAM访问顾问(控制台快速查询)

  • 操作路径:打开IAM控制台 → 左侧菜单选择「访问顾问」→ 服务筛选为「S3」→ 选中目标私有存储桶
  • 直接输出指定时间范围内(最长90天)对该桶有访问权限的所有IAM用户、角色、用户组,附带最近访问时间统计
  • 限制:仅展示90天内有访问记录的权限身份,未产生过访问的权限不会被列出

方法2:AWS CLI 批量查询(适合自动化场景)

步骤1:提取S3桶资源策略中直接授权的身份

如果你的桶配置了单独的资源策略,先拉取策略文件提取授权ARN:

# 替换your-bucket-name为目标存储桶名称
aws s3api get-bucket-policy --bucket your-bucket-name --query Policy --output text | jq '.Statement[] | select(.Effect == "Allow") | .Principal'

如果返回NoSuchBucketPolicy错误,说明桶无自定义资源策略,直接跳过本步骤。

步骤2:全账户IAM权限扫描

调用IAM接口拉取全账户所有权限配置,过滤匹配目标桶访问权限的用户和角色:

# 查询有权限的IAM用户,替换your-bucket-name为目标桶名
aws iam get-account-authorization-details --output json | jq --arg bkt "arn:aws:s3:::your-bucket-name" '.UserDetailList[] | select(any(.PolicyList[].Document.Statement[]?; .Resource == $bkt or .Resource == "\($bkt)/*")) | .UserName'

# 查询有权限的IAM角色,仅需替换UserDetailList为RoleDetailList
aws iam get-account-authorization-details --output json | jq --arg bkt "arn:aws:s3:::your-bucket-name" '.RoleDetailList[] | select(any(.PolicyList[].Document.Statement[]?; .Resource == $bkt or .Resource == "\($bkt)/*")) | .RoleName'

上述命令默认仅检查直接附加到用户/角色的策略,如果需要检查附加到用户组的权限,额外增加对GroupDetailList的过滤逻辑即可。

方法3:AWS Config 自动化审计(适合常态化巡检)

如果账户已开启AWS Config服务,可以直接配置自定义规则,定期自动扫描所有匹配目标S3桶访问权限的IAM身份,扫描结果会自动存入配置项历史,无需手动执行查询。


注意:以上方法仅覆盖同账户内的IAM身份授权,不包含跨账户授权、匿名访问、AWS服务关联角色的权限条目。如需完整校验,需额外检查桶的公共访问阻断配置。

内容的提问来源于stack exchange,提问作者T Paul Manohar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 14:36:03