2012-05-10 99 views
4

我试图实现IAM策略,其中用户只能访问他也有权访问的文件夹。我从亚马逊的文档验证码为Amazon S3创建IAM策略

允许用户列出在企业桶

这个例子建立在以前的例子,让鲍勃主目录只在他或她的主目录中的对象。为了让Bob能够列出他的主目录中的对象,他需要访问ListBucket。但是,我们希望结果只包含他主目录中的对象,而不是包含在桶中的所有内容。为了限制他的访问,我们使用名为s3:prefix的策略条件密钥,其值设置为home/bob/。这意味着只有带有前缀home/bob/的对象才会在ListBucket响应中返回。

{ 
    "Statement":[{ 
    "Effect":"Allow", 
    "Action":"s3:ListBucket", 
    "Resource":"arn:aws:s3:::my_corporate_bucket", 
    "Condition":{ 
     "StringLike":{ 
     "s3:prefix":"home/bob/*" 
    } 
    }] 
} 

这不适合我。当我运行我的代码时,我可以看到所有的文件夹和子文件夹。我修改后的代码看起来是这样的:

{ 
    "Statement":[{ 
    "Effect":"Allow", 
    "Action":"s3:ListBucket", 
    "Resource":"arn:aws:s3:::Test-test", 
    "Condition":{ 
     "StringLike":{ 
     "s3:prefix":"Test/*" 
    } 
    }] 
} 

当我使用附着于上述政策,我得到的所有文件夹,而不只是在“测试”了一个用户的凭据运行我的C#代码。 .. 真的很感谢一些帮助!

回答

7

我终于搞定了。尽管我认为AWS管理控制台中存在一个错误,或者至少它看起来像一个错误。问题是我的政策始终是正确的,但当我通过AWS管理控制台访问CloudBErry等软件时,它的行为会有所不同。我必须修改的一件事是对象和存储桶的ACL设置。如果AWS控制台正常工作,也可以在之前完成。反正这是我的政策:

{ 
    "Statement": [ 

    { 
     "Effect": "Allow", 
     "Action": "s3:ListAllMyBuckets", 
     "Resource": "arn:aws:s3:::*", 
     "Condition": {} 
    }, 
    { 
     "Effect": "Allow", 
     "Action": [ 
     "s3:ListBucket", 
     "s3:ListBucketVersions" 
     ], 
     "Resource": "arn:aws:s3:::pa-test", 
     "Condition": { 
     "StringLike": { 
      "s3:prefix": "test/*" 
     } 
     } 
    }, 
    { 
     "Effect": "Allow", 
     "Action": "s3:*", 
     "Resource": "arn:aws:s3:::pa-test/test/*", 
     "Condition": {} 
    } 
    ] 
} 

1)问题是,当我访问管理控制台通过AWS控制台此IAM用户,当我在我的水桶单击虽然当我通过云莓登录,我可以看到我被拒绝访问我的文件夹。 2)我不得不修改ACL设置为我的桶和对象(文件夹) 我斗: 所有者:完全控制 身份验证的用户:只读

对于我的文件夹: 所有者:完全控制

现在的问题是,您无法在AWS控制台中设置文件夹(对象)的ACl设置。您可以将它们设置为文件(对象)。例如,如果您右键单击存储桶中的文件夹(对象),然后单击属性,则不会显示权限选项卡。但是,如果您右键单击存储桶或文件(称为test.html)并单击属性,它将显示一个权限选项卡。 我不确定是否有其他人注意到了这个问题。无论如何,这是我的脚本,现在正在工作。

2

你期望从listBucket得到的结果不会发生那样的事情。 由于策略只允许您根据存储桶策略访问对象的允许和拒绝。 ListBucket将列出所有对象,但您只能访问前缀文件夹及其内容。

如果你想只列出文件夹,那么你必须为喜欢阅读IAM政策代码,然后前缀字符串,然后与前缀列表,那么你将只能得到所需的文件夹。因为到现在为止没有amazon s3提供这样的选项。

+0

嗨TEJ,请原谅我,如果我错了,但我对您的解决方案有点不确定。如果您在本网页 –

+0

向下滚动到例如2我礼貌地问你在三月已经:推广您的产品时,请小心,请参见相应的常见问题解答(HTTP [我可能会促进产品或网站,我隶属于这里?] (如果你的帖子中有很大一部分包含提到你的产品或网站的信息,你可能是出于错误的原因_)。另外,请不要使用签名/标语,请参阅相应的常见问题解答[我可​​以使用签名或标语?](http://stackoverflow.com/faq#signatures)了解详细信息。您应该继续提供有用的内容,其余的将遵循... –

+0

@Steffen欧宝:你可以简单地举报他的职位给管理员注意,而不是多次谈到自己的使用特征之一。但不用担心,我们会从这里拿走它,并感谢您帮助编辑! – BoltClock