【问题标题】:AWS Amplify Storage permissions, S3 bucketAWS Amplify 存储权限、S3 存储桶
【发布时间】:2022-01-03 14:56:32
【问题描述】:

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

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

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

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

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

客户 -> 创建/更新、读取

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

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

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

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

【问题讨论】:

    标签: amazon-web-services amazon-s3 permissions aws-amplify aws-amplify-cli


    【解决方案1】:

    我为我的项目所做的是使用amplify override storage 来重写我的访问策略。覆盖在 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");
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-12-06
      • 2021-09-06
      • 2012-02-22
      • 1970-01-01
      • 2022-12-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多