S3 Bucket带*通配符的ARN无效,如何修正?
S3 Bucket权限策略修正方案
问题原因
AWS S3的权限规则里,桶级操作(如s3:ListBucket)必须关联桶ARN(arn:aws:s3:::learning-path-blog-jon),而对象级操作(如s3:PutObject、s3:GetObject等)需要关联桶内所有对象的ARN(arn:aws:s3:::learning-path-blog-jon/*)。你之前把所有操作放在同一个Statement里只用桶ARN,会导致对象操作权限不足;可视化编辑器里输入带通配符的ARN报错,属于编辑器格式校验限制,直接修改JSON策略即可解决。
修正后的完整策略
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowBucketList", "Effect": "Allow", "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::learning-path-blog-jon" }, { "Sid": "AllowObjectOperations", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject", "s3:DeleteObject", "s3:PutObjectAcl" ], "Resource": "arn:aws:s3:::learning-path-blog-jon/*" } ] }
说明
- 拆分两个
Statement分别对应桶级和对象级操作,符合AWS S3的权限逻辑 - 带通配符的对象ARN
arn:aws:s3:::learning-path-blog-jon/*在JSON策略中是合法的,直接替换原有内容即可生效
内容的提问来源于stack exchange,提问作者J.Day
相关产品推荐
相关产品推荐

