2012-01-31 178 views
9

我想要弄清楚为IAM用户/密钥设置的基本权限必须只能访问S3中的单个存储桶 - 只能在单个存储桶上进行读写访问。S3存储桶的基本AWS IAM权限

什么样的权限集是完成这项工作所需的最低要求?我在S3的IAM策略生成器中选择了所有选项,除了CreateBucketDeleteBucket之外的所有权限都在桶上启用。我还创建了一组特定于此用户的密钥。

当我尝试使用这些凭证访问存储桶时,即使启用了ListAllMyBuckets属性,我也遇到了列出存储桶的问题。

任何人有任何经验设置这样的基本桶配置?好像这将是非常常见的...

+1

为什么要列出桶首先,当IAM用户只应该访问__单个桶在S3_? – 2012-01-31 08:57:12

+1

如果您没有记录用户有权访问的存储桶名称,那么ListAllMyBuckets可以 - 然后代码可以确定用户可以真正进入的存储桶。这取决于你想要存储桶名称的'多么私密'。但是由于存储区名称基本上处于公共领域(您可以ping亚马逊以查明是否有任何存储区名称正在使用中),因此只有“随机字符串”存储区名称在任何接近私人的位置,即使这只是稍纵即逝,因为存储区名称已转生成每个网址等等。 – 2012-01-31 15:38:14

+0

Steffen,我不把这个帐户交给ListAllBuckets,但它不能使用我想要的许可证,所以我逐渐启用了更多权限,以查看是否有更高级别的拒绝访问权限上... – colemanm 2012-01-31 20:55:15

回答

12

Example Policies for Amazon S3覆盖各种用例类似或相关的到你 - 特别是你可能可能要例1相结合:让每一个用户在亚马逊主目录S3示例2:允许用户仅列出公司存储桶中其主目录中的对象 - 您只需调整Resource即可将目标锁定到您的存储桶根目录,即将/home/bob/*替换为*

请注意,例2有利于ListBucket,这是一个operation on a bucket回报的一些水桶项目的信息,而ListAllMyBucketsoperation on the service返回由发送者所拥有的所有桶的列表请求,因此可能不适用于您的用例(请参阅我对后者的说明的评论)。

0

这将允许列出所有桶假设你不否认它在其他地方(我99%肯定deny语句首先评估;为了不与IAM策略重要):

{ 
     "Effect": "Allow", 
     "Action": [ 
      "s3:ListAllMyBuckets" 
     ], 
     "Resource": "*" 
    } 

许可证不管你(不要忘了/ *也):

{ 
     "Effect": "Allow", 
     "Action": [ 
      "s3:<Put your actions here; cherry pick from the AWS documentation>" 
     ], 
     "Resource": [ 
      "arn:aws:s3:::<Bucket name here>", 
      "arn:aws:s3:::<Bucket name here>/*" 
     ] 
    } 
相关问题