AWS S3存储桶策略以允许访问Cognito用户

时间:2020-08-30 00:48:34

标签: amazon-web-services amazon-s3

我想创建一个S3存储桶策略,该策略可以阻止公共访问,但仅允许通过Cognito签名我的应用的用户可以通过应用上传对象。

当前阻止的公共访问设置: ws

我当前的存储桶策略:

{
    "Version": "2012-10-17",
    "Id": "Policy1593320409523",
    "Statement": [
        {
            "Sid": "Stmt1593320397284",
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                    "arn:aws:iam::358110801253:role/Cognito_katebUnauth_Role",
                    "arn:aws:iam::358110801253:role/service-role/transcribe-role-k5easa7b",
                    "arn:aws:iam::358110801253:role/Cognito_katebAuth_Role"
                ]
            },
            "Action": "s3:*",
            "Resource": [
                "arn:aws:s3:::va-raw-audio-to-transcribe/*",
                "arn:aws:s3:::va-raw-audio-to-transcribe"
            ]
        }
    ]
}

1 个答案:

答案 0 :(得分:2)

Amazon S3存储桶默认为私有。因此,不需要“限制”访问。而是选择一种适当的方式来“授予”所需用户访问权限。

当用户通过AWS Cognito进行身份验证时,将提供链接到 IAM角色的凭据。因此:

  • 不通过桶策略分配权限-通常用于向所有用户授予公共访问权限
  • 相反,向Cognito使用的IAM角色添加权限,以供那些经过身份验证的用户使用

您已在问题中列出了3个角色。因此,请为这3个IAM角色分别添加适当的权限,以便他们可以访问所需的存储桶。

此外,请特别注意您授予的权限。您问题中的政策是授予s3:*,这意味着用户可以删除所有对象,甚至可以删除存储桶本身!始终授予最小权限,以便他们具有足够的访问权限,但没有超出要求的范围。

例如,如果您只想允许他们上传,则他们只需要s3:PutObject权限。