如何为S3桶中所有子文件夹内的对象开启公共GetObject权限?
S3子文件夹对象公共访问策略可行性解答
你提出的策略是可行的,可以实现为next-level-folder下所有子文件夹内的对象开启公共GetObject权限,无需逐个指定子文件夹路径。
策略细节说明
你给出的Resource字段 arn:aws:s3:::bucket-name/next-level-folder/*/* 的作用如下:
- 第一个
*:匹配next-level-folder下的任意子路径(包括直接子文件夹、嵌套子文件夹的完整前缀) - 第二个
*:匹配对应子路径下的所有对象(包括深层嵌套的文件)
这意味着:
- 会允许访问
next-level-folder/folder1/file.txt、next-level-folder/folder1/sub/file.txt这类子文件夹内的对象 - 不会允许访问直接存放在
next-level-folder根目录下的对象(比如next-level-folder/root-file.txt),正好符合你“仅子文件夹内对象开放”的需求
关键注意事项
- 公共访问设置检查:确保你的S3桶未开启
Block Public Access中阻止公共策略生效的选项(比如Block public access to buckets and objects granted through new public bucket policies),否则策略会被拦截。 - 安全风险:
Principal: "*"意味着所有人都能访问这些对象,确认这是你预期的访问范围,避免敏感数据泄露。 - 扩展性:后续新增的子文件夹会自动被该策略覆盖,无需手动更新Resource列表,完美适配你大量子文件夹的场景。
内容的提问来源于stack exchange,提问作者Danny_P
相关产品推荐
相关产品推荐

