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

为何使用StringLike条件的S3桶IAM策略无法下载文件?

第一个S3 IAM策略失效的原因分析

我拥有名为my.example.com的S3桶,桶内包含Folder1文件夹。以下IAM策略无法让我从Folder1下载文件:

{
   "Version": "2012-10-17",
   "Statement": [
      {
         "Sid": "MyPolicy",
         "Effect": "Allow",
         "Action": "s3:Get*",
         "Resource": "arn:aws:s3:::my.example.com",
         "Condition": {
            "StringLike": {
               "s3:prefix": [
                  "Folder1/*"
               ]
            }
         }
      }
   ]
}

而以下策略却可以正常允许下载:

{
   "Version": "2012-10-17",
   "Statement": [
      {
         "Sid": "MyPolicy",
         "Effect": "Allow",
         "Action": "s3:Get*",
         "Resource": "arn:aws:s3:::my.example.com/Folder1/*"
      }
   ]
}

失效原因解析

第一个策略失效核心有两点:

  • 资源目标不匹配:s3:Get*操作(尤其是下载文件用到的s3:GetObject)要求授权的资源是具体对象的ARN(格式为arn:aws:s3:::bucket-name/object-key),而非桶本身的ARN(arn:aws:s3:::bucket-name)。第一个策略把资源设为桶的ARN,不符合GetObject操作的资源要求,因此权限无法匹配生效。
  • 条件字段不适用:s3:prefix条件仅对列出桶内对象的操作(比如s3:ListBucket)生效,用于过滤列出的内容前缀。对于GetObject这类直接获取单个对象的操作,AWS不会检查s3:prefix条件,所以这个条件对下载操作没有任何限制或授权作用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 09:12:45