繁体   English   中英

如何在 AWS s3 中同时拥有公共访问和私有访问?

[英]How to have both public access and private access in AWS s3?

我有一个s3 bucket ,它有两个密钥(文件夹或我不知道应该如何称呼它们): publicprivate 每个人都应该可以访问公钥,因为只有化身和一些指导文件。 现在在私有目录中,我有敏感文档,只能通过我的PHP API生成的signed URLs访问。

我已经创建了Cloudfront分布和行为。

源域名 = myproject-development.s3.amazonaws.com

路径模式是Default (*)

而且我不能为了上帝的爱弄清楚政策:目前公众可以访问所有内容,我知道这是因为声明Sid 2

我目前的桶政策:

{
"Version": "2008-10-17",
"Id": "PolicyForCloudFrontPrivateContent",
"Statement": [
    {
        "Sid": "1",
        "Effect": "Allow",
        "Principal": {
            "AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity XXXXXXXX"
        },
        "Action": "s3:GetObject",
        "Resource": "arn:aws:s3:::myproject-development/public/*",
        "Condition": {
            "StringEquals": {
                "s3:ExistingObjectTag/public": "yes"
            }
        }
    },
    {
        "Sid": "2",
        "Effect": "Allow",
        "Principal": {
            "AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity XXXXXXXX"
        },
        "Action": "s3:GetObject",
        "Resource": [
            "arn:aws:s3:::myproject-development/private/*",
            "arn:aws:s3:::myproject-development/private"
        ]
    }
]

}

我的存储桶设置已Block all public access (一切都是绿色的)。

如果我删除 Sid 2,那么私有中的所有内容都会被隐藏,但它甚至不能与签名的 url 一起使用,访问总是被拒绝!

我需要如何修改我的政策,以便/private内容仅允许使用已签名的 url?

我解决了。 原来它需要用CloudFront origin behavior来完成。

我为路径/private创建了一个新的来源,并在为其创建cache behavior后添加了此处显示的此子句:

在此处输入图像描述

这样我就可以阻止对该文件夹的公共访问。

暂无
暂无

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

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