我正在编写一个基本的反应原生应用程序,用户可以将自己注册到AWS cognito用户池,并使用该身份登录以从S3存储/检索他们的数据。我只有一个存储桶,每个用户在该存储桶中都有自己的文件夹。在这种情况下,如何将每个用户限制在自己的文件夹中。这是场景。
我在用户池中创建了两个用户。
然后我为我的用户池创建了一个联合身份。此联合身份具有两个IAM角色,授权和未授权。
然后我为联合身份的auth角色添加了一个策略。
这是我的政策:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "*",
"Resource": "arn:aws:s3:::mybucket/${cognito-identity.amazonaws.com:sub}/*"
}
]
}

然后我尝试使用Javascript SDK从S3检索数据,我可以从" album-b207a8df-58e8-49cf-ba1b-0b48b7252291"中找到ListObjects。其中" b207a8df-58e8-49cf-ba1b-0b48b7252291"是" madi"用户。为什么" test2"能列出那个对象吗?
答案 0 :(得分:0)
您能否提供onClick_Cognito_receiptsdumpAuth_Role的摘要。***
我的猜测(没有您的日志)
是您的政策可能不错,但您可能有政策 授予列表访问权限过多。
您的AWS类已使用您的开发人员凭证进行初始化 (可能具有完整的管理员)
下一步我要尝试的是
您可能有一个action:List*
或同等的人
最好的隐藏秘密(实际上不是秘密)是policy simulator。 针对此测试您的策略,它将告诉您至少该策略是否正确,并且不要忘记iam策略已串联。
最后,如果您不知道如何提供对列表操作的访问权限,则可以启用CloudTrail将API日志转储到S3并验证列表对象是否正在由您期望的Cognito用户运行。