我正在使用GetSessionToken / GetFederationToken在Amazon S3中使用临时会话,我计划每个人都可以上传到S3超过10K用户,因此我最初想到为每个用户使用一个存储桶并为每个存储桶设置写入(上载)权限每个用户,但由于每个亚马逊帐户的存储桶数量有限制,我已经抛弃了这个想法 .
如何设置允许公共读取的权限,并仅在用户想要上载的对象的键的前缀上传?
例如,如果用户名X上传文件,则密钥必须类似于X_filename .
或者任何其他允许我拥有安全性的方式,这适用于移动应用程序,我不想在上传文件时通过我们自己的服务器 .
编辑:
我已经使用以下策略尝试了GetFederationToken操作
"{
"Statement":[{
"Effect":"Allow",
"Action":["s3:PutObject","s3:GetObject","s3:GetObjectVersion",
"s3:DeleteObject",\"s3:DeleteObjectVersion"],
"Resource":"arn:aws:s3:::user.uploads/john/*"
}
]
}"
我在S3和文件夹john上有bucket user.uploads
但是任何使用会话凭据上传到具有密钥john / filename的bucket user.uploads都会因访问被拒绝而失败“
1 回答
Amazon's Identity and Access Management (IAM)服务是您所需要的 . documentation有很多例子,其中一些与你的场景相符 .
来自文档:
您将为每个用户创建一个新标识,并根据需要使用该标识来控制对子文件夹(前缀)的访问 .