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

AWS S3桶策略中ARN末尾添加/*的作用及文件上传权限问题咨询

S3桶策略中ARN末尾/*的作用及上传权限解析

这是个非常典型的S3权限配置误区,我来给你拆解清楚背后的逻辑:

1. S3 ARN的两种核心层级

S3的ARN(亚马逊资源名称)在权限控制里分为两个关键层级:

  • 桶级ARN:arn:aws:s3:::sample123
    这个ARN指向的是存储桶本身,对应的是对桶的整体操作,比如:
    • 创建/删除存储桶
    • 修改桶的配置(CORS、生命周期、版本规则等)
    • 列出桶内的对象(s3:ListBucket操作)
  • 对象级ARN:arn:aws:s3:::sample123/*
    这个ARN指向的是桶内所有的对象(包括未来要上传的新对象),对应的是针对对象的操作,比如:
    • 上传文件(s3:PutObject)
    • 下载文件(s3:GetObject)
    • 删除/修改对象(s3:DeleteObject、s3:PutObjectAcl等)

2. 你的权限问题根源

你提到已经给用户授予了“存储桶的全部权限”,但最初只配置了桶级ARN作为资源:

  • 此时用户能执行的是桶级操作(比如查看桶里的文件列表),但上传文件属于PutObject,是对象级操作——这个操作的权限目标是桶内的对象,而非桶本身,所以桶级ARN的权限覆盖不到这个操作,导致上传失败。
  • 当你把资源改为包含arn:aws:s3:::sample123/*的数组后,对象级操作的权限就被明确赋予了,用户自然就能正常上传文件了。

3. 关键注意点:Action与Resource的对应关系

S3的权限策略里,不同的操作必须对应正确层级的ARN:

  • 如果你的策略里包含s3:ListBucket,资源必须指定桶级ARN
  • 如果包含s3:PutObject/s3:GetObject等对象操作,资源必须指定对象级ARN(带/*)
  • 很多时候会同时包含两种ARN,这样既能覆盖桶的管理操作,也能覆盖对象的读写操作

内容的提问来源于stack exchange,提问作者Aravind Babu Konda

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 12:09:13