【问题标题】:User level permissions on Amazon s3 on Public read URL公共读取 U​​RL 上 Amazon s3 的用户级权限
【发布时间】:2016-09-07 12:45:47
【问题描述】:

我在 Amazon s3 上上传了几个文件,CannedChannelList 为 PublicRead。请记住,只有此文件具有公共读取权限,而不是整个存储桶或文件夹。并且用户将能够使用给定的 URL 访问该文件。但这是一个安全问题,即用户可以操纵给定的 URL 来访问相同或不同文件夹中的其他文件。 用户在点击该 URL、读取文件时是否需要发送一些身份验证密钥,以及如何让用户知道他们必须使用哪个身份验证密钥? 我已经阅读了有关 IAM 用户的信息,但那是为了上传文件和所有这些。我只想在使用 URL 读取数据时进行一些身份验证。

数据是由单个管理员用户上传的,但是,所有用户都将数据发送到我的服务器,我正在使用单个管理员用户在 S3 上上传所有这些数据。

这是我为管理员用户使用的策略。

if(isBucketExist(bucketName)){
                Statement allowPublicReadStatement = new     Statement(Statement.Effect.Allow) 
                        .withPrincipals(Principal.AllUsers) 
                        .withActions(S3Actions.GetObject)
                        .withResources(new S3ObjectResource(bucketName, "*"));
Policy policy = new Policy()
                        .withStatements(allowPublicReadStatement
                                                        );
amazonS3.setBucketPolicy(bucketName, policy.toJson());
            }

这是上传数据时的 CannedChannelList

InitiateMultipartUploadRequest(bucketName, folderName).withCannedACL(CannedAccessControlList.PublicRead);

【问题讨论】:

    标签: amazon-web-services amazon-s3 permissions amazon bucket


    【解决方案1】:

    您是否尝试过对 IAM 策略使用“s3:GetObject”操作,然后您可以指定资源 arn,例如“arn:aws:s3:::examplebucket/*”或您希望用户拥有的任何特定前缀读取权限。

    IAM 策略的示例如下:

    {
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "AllowListingOfS3",
            "Action": [
                "s3:ListBucket"
            ],
            "Effect": "Allow",
            "Resource": [
                "arn:aws:s3:::bucket-name"
            ],
            "Condition": {
                "StringLike": {
                    "s3:prefix": [
                        "folder/sub-folder/*"
                    ]
                }
            }
        },
        {
            "Sid": "AllowAllS3ActionsInFolder",
            "Effect": "Allow",
            "Action": [
                "s3:GetObject"
            ],
            "Resource": [
                "arn:aws:s3:::bucket-name/folder/sub-folder/*"
            ]
        }
    ]
    }
    

    【讨论】:

      猜你喜欢
      • 2015-09-17
      • 2011-11-28
      • 2020-02-23
      • 2018-04-24
      • 1970-01-01
      • 1970-01-01
      • 2018-01-17
      • 2015-09-22
      • 2021-04-27
      相关资源
      最近更新 更多