如何将认知用户池用户减少到S3存储桶中的自己的文件夹?

时间:2017-07-03 01:27:32

标签: amazon-web-services amazon-s3 amazon-cognito

我正在编写一个基本的反应原生应用程序,用户可以将自己注册到AWS cognito用户池,并使用该身份登录以从S3存储/检索他们的数据。我只有一个存储桶,每个用户在该存储桶中都有自己的文件夹。在这种情况下,如何将每个用户限制在自己的文件夹中。这是场景。

我在用户池中创建了两个用户。

enter image description here

然后我为我的用户池创建了一个联合身份。此联合身份具有两个IAM角色,授权和未授权。

enter image description here

然后我为联合身份的auth角色添加了一个策略。

enter image description here

这是我的政策:



{
    "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"能列出那个对象吗?

1 个答案:

答案 0 :(得分:0)

您能否提供onClick_Cognito_receiptsdumpAuth_Role的摘要。***


我的猜测(没有您的日志)

  1. 是您的政策可能不错,但您可能有政策 授予列表访问权限过多。

  2. 您的AWS类已使用您的开发人员凭证进行初始化 (可能具有完整的管理员)

  3. Cognito可能有问题及其 值得记录支持票。

下一步我要尝试的是

您可能有一个action:List*或同等的人

最好的隐藏秘密(实际上不是秘密)是policy simulator。  针对此测试您的策略,它将告诉您至少该策略是否正确,并且不要忘记iam策略已串联。

最后,如果您不知道如何提供对列表操作的访问权限,则可以启用CloudTrail将API日志转储到S3并验证列表对象是否正在由您期望的Cognito用户运行。