2011-01-31 52 views
1

我有一个小组,我已将以下政策应用于小组。我向该组添加了一个用户并为该用户创建了访问密钥。我能够从“mybucket”中获取,但我无法投入“mybucket”。当我尝试Put时,我得到“拒绝访问”。任何人都可以告诉我我做错了什么。请告诉我。AWS IAM GroupPolicy - 为什么s3:PutObject权限不起作用?

{ 
     "Statement":[{ 
      "Effect":"Allow", 
      "Action":["s3:PutObject","s3:GetObject"], 
      "Resource":["arn:aws:s3:::mybucket","arn:aws:s3:::mybucket/*"] 
      }, 
      { 
      "Effect":"Deny", 
      "Action":["*"], 
      "NotResource":["arn:aws:s3:::mybucket","arn:aws:s3:::mybucket/*"] 
      } 
     ] 
    } 

编辑:有人问我说明政策的目标。我希望只允许指定存储桶的PUT和GET权限。我想明确地“拒绝”对所有指定的资源NOT(NotResource)的组的所有其他权限。我在AWS发布的文章中添加了明确的“拒绝”,表明这是一个很好的做法。

回答

0

拒绝语句总是优先于允许语句,这意味着上述策略应该阻止用户的所有访问。你如何做Get和Put请求? Gets是否可以匿名执行(无需身份验证)?

这将有助于了解您的目标是什么对于上述政策?拒绝声明的目的是什么?

+0

请参阅我的编辑以更好地解释政策的目标。 – Dave 2011-02-03 19:37:25

+0

相关用户的父帐户是否拥有该存储桶?涉及多个账户的S3权限变得更加复杂。该策略看起来是正确的,看起来应该对Get和Put应用等效的权限,这让我认为Get正在工作的原因不同(即桶是匿名可读的?) – derekdb 2011-02-20 03:53:19

1

来源:IAM Language Info

每个策略必须涵盖只水桶内的单桶和资源(写入策略时,不包括引用其他桶或其他桶资源语句)