簡體   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