配置公共仅可写入、Root用户全权限的S3 Bucket政策问题
S3 Bucket权限配置:公众可上传+Root全权限
你的问题出在第二条Deny语句——它用了Principal: "*",会拒绝**所有用户(包括你的Root账户)**的所有S3操作。AWS权限判断里,Deny的优先级远高于Allow,所以哪怕你第一条给Root开了权限,也会被这条全局Deny直接覆盖,导致Root无法查看对象列表。
下面是满足需求的正确Bucket政策:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::MY_ACCOUNT_ID:root" }, "Action": "s3:*", "Resource": [ "arn:aws:s3:::BUCKET_NAME_HERE", "arn:aws:s3:::BUCKET_NAME_HERE/*" ] }, { "Effect": "Allow", "Principal": "*", "Action": "s3:PutObject", "Resource": "arn:aws:s3:::BUCKET_NAME_HERE/*" } ] }
逻辑说明:
- 第一条给Root账户开放Bucket和所有对象的全部S3权限,包括列表、读取、删除、上传等,完全满足Root的操作需求。
- 第二条仅允许所有公众用户执行
s3:PutObject(上传文件),且仅针对Bucket下的对象资源(/*),公众默认没有其他权限(AWS权限默认是拒绝,除非明确允许),自然无法读取、删除或列出对象。
替换代码中的MY_ACCOUNT_ID和BUCKET_NAME_HERE为你的实际账户ID和Bucket名称即可生效。
内容的提问来源于stack exchange,提问作者Chris Lowth.
相关产品推荐
相关产品推荐

