我正在编写一个应用程序,其中包含一组用户,并且每个用户都会在'目录中有许多与之关联的文件。在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用户。
答案 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