2014-10-28 63 views
0

AWS doc告诉您如何使用Cognito API GetID和GetOpenIdToken以及STS API AssumeRoleWithWebIdentity获取STS令牌。在这个过程中,AWS会为您提供IdentityId。我可以创建一个用户范围的S3策略,以用于未经身份验证的AWS Cognito

确定每个用户的S3访问范围的常用方法是在策略中分配一个表示用户的前缀。

现在AssumeRoleWithWebIdentity API让您可以将用户范围的政策 - 但在这种情况下,我们希望从移动客户端调用此API - 不能使用出于安全考虑。

有没有一种方法可以构建某种使用IdentityId构建前缀的模板,还是我必须构建一个服务器并将它放在中间以使其安全?

回答

0

虽然AssumeRoleWithWebIdentity确实需要政策,这是一个范围缩小政策在现有政策的基础上对你的假设是可选的作用。该策略不能扩展角色的权限,只限制角色。如果您不提供其他范围缩小策略,则将使用该角色的基本策略。

您可以使用访问策略类似以下,以确保您的用户只能上传(和列表)一个特定的前缀基于其Cognito ID:

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
     { 
     "Effect":"Allow", 
     "Action":["s3:PutObject","s3:GetObject","s3:DeleteObject"], 
     "Resource":"arn:aws:s3:::BUCKET_NAME/${cognito-identity.amazonaws.com:sub}/*" 
     }, 
     { 
     "Effect":"Allow", 
     "Action":"s3:ListBucket", 
     "Resource":"arn:aws:s3:::BUCKET_NAME", 
     "Condition":{"StringLike":{"s3:prefix":"${cognito-identity.amazonaws.com:sub}/"}} 
     } 
    ] 
} 
相关问题