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

如何在AWS中列出被允许写入S3存储桶的所有资源?

获取AWS环境中所有具备S3写入权限的资源清单的实现方法

有几种实用的方法可以搞定这个需求,下面逐一说明:

1. 用AWS IAM Access Analyzer快速识别

IAM Access Analyzer是AWS官方工具,能自动扫描并识别出本账号或跨账号中拥有S3写入权限的资源,步骤很简单:

  • 登录IAM控制台,找到左侧菜单的Access Analyzer
  • 创建或选择已有的analyzer,进入Findings页面
  • 筛选权限包含s3:PutObject、s3:PutObjectAcl、s3:PostObject这类写入相关动作的结果,就能看到被授权的IAM用户、角色、外部账号等资源清单

2. AWS CLI结合自定义脚本遍历

适合需要自定义输出格式或批量处理的场景,核心思路是遍历所有S3桶和IAM实体,检查它们的权限策略:

  • 示例bash脚本片段(需要提前安装jq):
    # 遍历所有S3桶,检查桶策略中的写入权限
    for bucket in $(aws s3api list-buckets --query "Buckets[].Name" --output text); do
        echo "=== 检查桶: $bucket ==="
        aws s3api get-bucket-policy --bucket $bucket --query Policy --output text 2>/dev/null | jq '.Statement[] | select(.Effect == "Allow") | select(.Action[] | test("s3:(Put|Post|Delete)"))'
    done
    
    # 遍历IAM角色,检查角色关联的权限策略
    for role in $(aws iam list-roles --query "Roles[].RoleName" --output text); do
        echo "=== 检查角色: $role ==="
        # 先查inline policy
        aws iam list-role-policies --role-name $role --query PolicyNames --output text | xargs -I {} aws iam get-role-policy --role-name $role --policy-name {} --query PolicyDocument.Statement[] | jq 'select(.Effect == "Allow") | select(.Action[] | test("s3:(Put|Post|Delete)"))'
        # 再查managed policy
        aws iam list-attached-role-policies --role-name $role --query AttachedPolicies[].PolicyArn --output text | xargs -I {} aws iam get-policy-version --policy-arn {} --version-id v1 --query PolicyDocument.Statement[] | jq 'select(.Effect == "Allow") | select(.Action[] | test("s3:(Put|Post|Delete)"))'
    done
    
  • 注意:脚本需要处理分页、权限边界的限制,以及IAM用户、组的权限检查,可根据实际需求扩展。

3. AWS Config规则自动化评估

通过AWS Config创建自定义规则,持续监控并生成权限清单:

  • 创建一个基于Lambda的Config规则,逻辑是:遍历S3桶和IAM实体,检查它们的权限策略中是否包含允许S3写入的语句
  • 规则会定期评估资源,结果在AWS Config的合规性页面展示,还能导出CSV格式的清单

4. 不要忽略权限细节

最后要注意几个容易遗漏的点:

  • IAM权限边界(Permission Boundaries)会限制实体的实际权限,需要结合检查
  • 临时凭证(比如STS生成的角色凭证)的权限,这类需要结合CloudTrail日志追踪使用记录
  • 服务关联角色(Service-Linked Roles)的默认权限,部分服务角色可能自带S3写入权限

内容的提问来源于stack exchange,提问作者psowa001

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 12:58:50