如何使用AWS S3策略来强制联合用户的资源所有权?

时间:2011-11-10 03:36:24

标签: python amazon-s3 amazon-web-services boto

我正在编写一个应用程序,其中包含一组用户,并且每个用户都会在'目录中有许多与之关联的文件。在S3桶中。用户将使用亚马逊的STS进行身份验证,获取临时安全凭证,允许他们访问他们拥有的资源,同时不允许他们访问他们不拥有的资源(认为:" home"目录)。

假设用户已经存在于系统中(并且已经过身份验证),并且使用命名方案创建了他们的文件桶(没有指定的策略或ACL):

<< my app's bucket>>/<< user's identifier >>/

在请求用户访问文件期间,我们使用boto:

按如下方式授予临时安全凭证
get_federation_token(<< user's identifier >>, duration,policy=user_policy)

其中user_policy是:

user_policy =  (r'{"Statement": [{"Effect":"Allow",
    "Action":[
"s3:PutObject",
"s3:GetObject",
"s3:GetObjectVersion",
"s3:DeleteObject",
"s3:DeleteObjectVersion"],
    "Resource":"arn:aws:s3:::/%s/*"}]}' % (<< user's identifier >>))

我以为我理解政策,但显然我错过了一些东西。使用上述方案,我可以在用户的​​目录下获取/放置资源,还可以获取属于其他用户的目录/资源。对于我的生活,我无法正确隔离访问权限。我也玩过桶政策,但这并没有结果。

任何方向都会受到赞赏。

注意:我使用STS卡住了,因为我们可能有太多用户无法创建/使用IAM用户。

1 个答案:

答案 0 :(得分:3)

有人问过这样的问题 - 事实证明,存储桶使用存储桶策略在其上设置了全局公共读取集。仔细检查是否没有其他允许访问的ACL等。它看起来似乎没有'列表'访问 - 这是你想要的吗?你可以打电话来获取一个桶并获得其中所有文件的列表吗? (你不应该这样做)。

不知道这是否有帮助 - 他们在政策中使用“StringLike”。 http://www.techtricky.com/amazon-s3-how-to-restrict-user-access-to-specific-folder-or-bucket/

https://forums.aws.amazon.com/search.jspa?objID=f76&q=stringlike&x=0&y=0