3

我正在编写一个应用程序,其中有一组用户,每个用户将在 S3 存储桶内的“目录”中拥有许多与他们关联的文件。用户将使用 Amazon 的 STS 进行身份验证,获得临时安全凭证,这些凭证应该允许他们访问他们拥有的资源,同时不允许他们访问他们没有的资源(想想:“主”目录)。

假设用户已经存在于系统中(并且已经过身份验证),并且他们的文件存储桶是使用命名方案创建的(没有指定的策略或 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 用户。

4

1 回答 1

3

有人问过这样的问题 - 结果表明,存储桶使用存储桶策略设置了全局公共读取。仔细检查没有其他允许访问的 ACL 等。此外,看起来没有“列表”访问权限 - 这就是您想要的吗?您可以调用 get on a bucket 并获取其中所有文件的列表吗?(您不应该这样做)。

不知道这是否会有所帮助 - 他们在政策中使用“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

于 2011-11-10T15:03:46.437 回答