s3存储桶对象网址不是私有的

时间:2018-05-30 11:13:14

标签: amazon-web-services amazon-s3

我的存储桶文件夹是私有的,但是当我将单个对象的URL复制到浏览器中时(当我注销时),我仍然可以下载/查看该文件。

我该如何防止这种情况?

这是我的存储桶政策:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "AllowPublicRead",
            "Effect": "Allow",
            "Principal": {
                "AWS": "*"
            },
            "Action": "s3:GetObject",
            "NotResource": "arn:aws:s3:::my-bucket/backup/*"
        }
    ]
}

我想要实现的目标:将每个文件夹设为私有,除了名为mediastatic的2个文件夹(我希望公开读取访问权限)。

3 个答案:

答案 0 :(得分:0)

在您的政策中,您明确告知其允许匿名公开GET访问。

您必须将其更改为以下内容。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": [
                "s3:*"
            ],
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                    "arn:aws:iam::ACCOUNT_ID:user/USERNAME_A",
                    "arn:aws:iam::ACCOUNT_ID:user/USERNAME_B",
                    "arn:aws:iam::ACCOUNT_ID:user/USERNAME_C",
                    "arn:aws:iam::ACCOUNT_ID:role/ROLE_A",
                    "arn:aws:iam::ACCOUNT_ID:role/ROLE_B",
                    "arn:aws:iam::ACCOUNT_ID:role/ROLE_C"
                ]
            },
            "Resource": [
                "arn:aws:s3:::BUCKET_NAME",
                "arn:aws:s3:::BUCKET_NAME/*"
            ]
        }
    ]
}

请在此处参阅更多政策examples

答案 1 :(得分:0)

我认为你正在寻找类似的东西。

protected override void OnNavigatedFrom(NavigationEventArgs e)
{
    base.OnNavigatedFrom(e);       
    ConnectedAnimationService.GetForCurrentView().PrepareToAnimate("borderOut", MainBorder);
}

请参阅此Grant Access to User-Specific Folders in an Amazon S3 Bucket了解详情。

答案 2 :(得分:0)

此政策授予对这两个文件夹的公开GetObject访问权限。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "ReadAccess",
            "Action": [
                "s3:GetObject"
            ],
            "Effect": "Allow",
            "Resource": [
                "arn:aws:s3:::jr-enc/media/*",
                "arn:aws:s3:::jr-enc/static/*"
            ],
            "Principal": "*"
        }
    ]
}

请注意,GetObject仅授予访问/下载对象的权限。它允许列出存储桶/文件夹的内容。