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

创建仅访问S3特定子文件夹的IAM角色遇权限拒绝求助

S3特定子文件夹IAM权限配置问题排查与修复

问题根源分析

你的IAM策略存在以下几个核心错误:

  • 资源ARN与操作类型不匹配:PutObject属于对象级操作,需要授权对象资源arn:aws:s3:::insert_bucket_name/*,而非仅桶资源arn:aws:s3:::insert_bucket_name——桶资源仅适用于ListBucket这类桶级操作。
  • Action大小写错误:策略中的S3:Put*应为小写s3:Put*,AWS IAM Action严格区分大小写,大写会被识别为无效操作。
  • s3:prefix条件误用:s3:prefix仅在ListBucket等桶级操作中生效,PutObject操作需要通过匹配对象Key来限制,该条件对对象操作无效。
  • Deny语句逻辑冗余且风险高:当前Deny语句会拦截所有不符合prefix的操作,但结合Allow语句的错误配置,连合法的目标路径操作也会被误拦截。

修复后的IAM策略

{
    "Version": "2012-10-17",
    "Statement": [
        // 允许桶级List操作,仅能查看目标前缀下的对象
        {
            "Effect": "Allow",
            "Action": "s3:ListBucket",
            "Resource": "arn:aws:s3:::insert_bucket_name",
            "Condition": {
                "StringLike": {
                    "s3:prefix": "levelOne=A/levelTwo=B/levelThree=C/*"
                }
            }
        },
        // 允许目标前缀下的所有对象读写操作
        {
            "Effect": "Allow",
            "Action": [
                "s3:Get*",
                "s3:Put*"
            ],
            "Resource": "arn:aws:s3:::insert_bucket_name/levelOne=A/levelTwo=B/levelThree=C/*"
        }
    ]
}

验证步骤

  1. 将策略中的insert_bucket_name替换为实际存储桶名称
  2. 将更新后的策略重新关联到目标IAM角色
  3. 再次执行测试命令:
aws s3api put-object --bucket insert_bucket_name --key levelOne=A/levelTwo=B/levelThree=C/123456789.jsonl --profile mybucketrole

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 11:22:50