2014-10-28 163 views
32

我已经在存储桶上设置了权限,允许“Authenticated Users”列出,上传和从我创建的存储桶中删除。这似乎允许我将文件上传到存储区,但似乎从该存储区下载文件不受此权限的限制,我需要为该存储区定义一个政策。我不清楚如何制定这样的政策。我尝试了策略生成器,用我最好的猜测来填写内容,但是当我把它作为新策略粘贴到存储桶时(失败,消息为Action does not apply to any resource(s) in statement - Action "s3:ListBucket" in Statement "Stmt-some-number"),结果不是一个有效的策略。有人可以解释以下策略有什么问题,以及如何正确设置它以允许经过身份验证的用户从存储桶中检索文件?如何为s3存储桶设置策略,以允许通过身份验证的用户列出存储桶或从存储桶中获取任何文件

{ 
    "Id": "Policy-some-number", 
    "Statement": [ 
    { 
     "Sid": "Stmt-some-number", 
     "Action": [ 
     "s3:GetObject", 
     "s3:ListBucket" 
     ], 
     "Effect": "Allow", 
     "Resource": "arn:aws:s3:::my-bucket/*", 
     "Principal": { 
     "AWS": [ 
      "*" 
     ] 
     } 
    } 
    ] 
} 

回答

80

s3:GetObject适用于在桶中的对象,因此资源是正确的:"Resource": "arn:aws:s3:::my-bucket/*"

s3:ListBucket适用于桶本身等资源应该是"Resource": "arn:aws:s3:::my-bucket"

你产生的政策应该类似于:

{ 
    "Id": "Policy-some-number", 
    "Statement": [ 
    { 
     "Sid": "Stmt-some-number", 
     "Action": [ 
     "s3:GetObject" 
     ], 
     "Effect": "Allow", 
     "Resource": "arn:aws:s3:::my-bucket/*", 
     "Principal": { 
     "AWS": [ 
      "*" 
     ] 
     } 
    }, 
    { 
     "Sid": "Stmt-some-other-number", 
     "Action": [ 
     "s3:ListBucket" 
     ], 
     "Effect": "Allow", 
     "Resource": "arn:aws:s3:::my-bucket", 
     "Principal": { 
     "AWS": [ 
      "*" 
     ] 
     } 
    } 
    ] 
} 
+1

这是否意味着你必须使用单独的 “声明” 为 “S3:GetObject的” 和 “S3:ListBucket”? – Tjunkie 2015-08-21 14:12:53

+3

@Tjunkie是的,因为'资源'是不同的。 – c4urself 2015-08-21 18:28:18

+3

事实是不正确的,资源可以是“合并”,只需使用[]连接两个列表。 – mootmoot 2016-04-11 14:10:22

22

只是恭维@ c4urself答案。该答案也有助于解决我的问题,但AWS文档中提供了一些指示,您可以添加多个资源,只需使用[]将它们设置为列表即可。 http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/vpc-endpoints.html#vpc-endpoints-s3-bucket-policies

{ 
    "Statement": [ 
    { 
     "Sid": "Access-to-specific-bucket-only", 
     "Principal": "*", 
     "Action": [ 
     "s3:ListBucket", 
     "s3:GetObject", 
     "s3:PutObject" 
     ], 
     "Effect": "Allow", 
     "Resource": ["arn:aws:s3:::my_secure_bucket", 
        "arn:aws:s3:::my_secure_bucket/*"] 
    } 
    ] 
} 
+0

什么是神!!!!!! – aschyiel 2017-09-15 01:06:20

相关问题