让Cognito用户管理访问"拥有" S3文件夹

时间:2017-10-22 12:39:17

标签: amazon-s3 amazon-cognito amazon-iam

我实际上会在这里偷看两个问题:

1) 我试图弄清楚是否有办法让Cognito用户管理对自己文件夹的访问权限。让我们说用户Dave希望与用户Anne分享他的受保护文件。我该怎么做呢?

2)一组用户如何访问存储桶中的相同受限文件夹?在我的应用中,用户很少单独工作,他们将文件上传到他们所属的组织。

以下是我迄今为止所获得的政策,但它并没有为我做这件事。有没有办法直接在S3中做我想要的,或者我是否必须进行Lambda / Dynamo / S3设置?

我是否需要为我的应用中的每个组织和用户制定一个独特的政策来实现这一目标?这有点过头了吗?

我将非常感谢能够就此主题提供任何帮助。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:PutObject",
                "s3:DeleteObject"
            ],
            "Resource": [
                "arn:aws:s3:::BUCKETNAME/user/${cognito-identity.amazonaws.com:sub}",
                "arn:aws:s3:::BUCKETNAME/user/${cognito-identity.amazonaws.com:sub}/*"
            ]
        }
    ]
}

1 个答案:

答案 0 :(得分:1)

您的用例超出了通过Bucket Policy实现的功能。

尝试向存储桶策略添加例外和特殊情况会使管理规则变得复杂并且将开始达到限制 - S3支持高达20 kb的存储桶策略

一旦您了解了有关用户,对象,路径等的具体规则,那么应该通过您的中央应用进行管理,然后通过预签名网址授予对象访问权限,根据需要即时生成。

Amazon S3是一个高度可扩展,可靠的存储系统 - 但不要期望它拥有您需要的所有功能。这就是您的应用代码所在的位置。