繁体   English   中英

AWS Amplify 存储权限、S3 存储桶

[英]AWS Amplify Storage permissions, S3 bucket

我正在使用 Amazon AWS Amplify 开发一个客户服务应用程序,每个客户都有自己的登录凭证,登录后,他们可以创建新票证并上传一些附件。

我有三个 Cognito 组:管理员、版主、客户。

我使用 Amplify CLI 创建了一个新存储,并以这种方式限制了组的访问:

管理员 -> 创建/更新、读取、删除

版主 -> 创建/更新,阅读

客户 -> 创建/更新,阅读

然后,当我在我的代码中上传附件时,我使用“私人”scope: https://docs.amplify.aws/lib/storage/configureaccess/q/platform/js/

我需要的是允许客户上传文件,查看但不删除。 其他客户不能对其他客户上传的文件做任何事情,他们看不到它们或做任何事情。 属于 moderators 组的用户可以看到所有文件,但不能删除它们。 相反,属于 admin 组的用户可以看到上传给每个客户的所有文件,也可以删除它们。

问题在于,使用 scope“私人”,客户可以上传和查看他们的文件,但管理员用户甚至看不到它们。 如果我设置“受保护”scope,客户可以上传并查看他们的文件,管理员用户可以管理它们,但潜在的其他客户也可以看到这些文件,因为“受保护”scope,根据文档,它是“所有人可读用户”。

如何设置“私人”scope,让每个客户只能看到他们的文件,但属于管理员组或版主组的用户也可以管理它们?

我为我的项目所做的是使用放大覆盖存储来重写我的访问策略。 覆盖在 Storage 中创建一个 override.ts 文件。 然后,您可以为您的用例编写自定义策略。 这是一个例子:

import { AmplifyS3ResourceTemplate } from '@aws-amplify/cli-extensibility-helper';

export function override(resources: AmplifyS3ResourceTemplate) {

 resources.addCfnResource({
    "type": "AWS::IAM::Policy",
    "properties": {
        "PolicyDocument": {
            "Statement": [
                {
                    "Action": [
                        "s3:GetObject",
                        "s3:GetObjectAcl",
                        "s3:PutObject",
                        "s3:PutObjectAcl",
                        "s3:ListBucket"
                    ],
                    "Effect": "Allow",
                    "Resource": {
                        "Fn::Join": [
                            "",
                            [
                                "arn:aws:s3:::",
                                {
                                    "Ref": "S3Bucket"
                                },
                                "*"
                            ]
                        ]
                    }
                }
            ],
            "Version": "2012-10-17"
        },
        "PolicyName": "CognitoGroup-policy-override",
        "Roles": [
            {
                "Fn::Join": [
                    "",
                    [
                        {
                            "Ref": "EXISTING_USER_POOL_ID_REF"
                        },
                        "-ExistingGroupRole"
                    ]
                ]
            }
        ]
    }
}, "CustomizeAccessForCognitoGroup");
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM