Python 如何使用AWS S3策略强制联邦用户拥有资源?

Python 如何使用AWS S3策略强制联邦用户拥有资源?,python,amazon-s3,amazon-web-services,boto,Python,Amazon S3,Amazon Web Services,Boto,我正在编写一个应用程序,其中我有一组用户,每个用户都会在S3存储桶中的“目录”中有许多与他们相关联的文件。用户将使用Amazon的STS进行身份验证,获得临时安全凭据,允许他们访问自己拥有的资源,同时不允许他们访问自己不拥有的资源(想想:“主”目录) 假设用户已经存在于系统中(并且经过身份验证),并且使用命名方案创建了其文件存储桶(没有指定的策略或ACL): << my app's bucket>>/<< user's identifier >>/

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

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

<< my app's bucket>>/<< user's identifier >>/
>/
在请求用户访问文件期间,我们使用boto授予临时安全凭据,如下所示:

get_federation_token(<< user's identifier >>, duration,policy=user_policy)
获取联合令牌(>)
我本以为我了解政策,但显然我遗漏了什么。使用上述方案,我可以获取/放置用户目录下的资源,但也可以获取/放置属于其他用户的目录/资源。就我的一生而言,我无法获得正确隔离的访问权限。我也玩过桶政策,但没有结果

任何指示都将不胜感激


注意:我一直在使用STS,因为我们可能会有太多的用户创建/使用IAM用户。

有人问了这样一个问题-结果是,使用bucket策略在bucket上设置了全局公共读取。仔细检查是否没有其他允许访问的ACL等。此外,它看起来似乎没有“列表”访问-这是你想要的吗?你能调用get on bucket并获取其中所有文件的列表吗?(您不应该这样做)

不知道这是否有帮助-他们在策略中使用“StringLike”。


有人问了这样一个问题-结果是,使用bucket策略在bucket上设置了全局公共读取。确保没有其他允许访问的ACL等。此外,它看起来似乎没有“列表”访问-这是你想要的吗?
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 >>))