簡體   English   中英

用於限制對 Cloudflare IP 地址訪問的 S3 存儲桶策略

[英]S3 Bucket Policy for Limiting Access to Cloudflare IP Addresses

我將使用 Cloudflare 作為 S3 網站存儲桶的代理,以確保用戶無法使用存儲桶 URL 直接訪問網站。

  • 我用我的自定義域為 static 網站托管設置了一個 S3 存儲桶: www.mydomain.com並上傳了我的index.html文件。

  • 我有一條CNAME記錄,其中www.mydomain.com -> www.mydomain.com.s3-website-us-west-1.amazonaws.com Proxy

問題:我正在嘗試將存儲桶策略應用於Deny訪問我的網站存儲桶,除非該請求源自一系列Cloudflare IP 地址 我正在按照官方 AWS 文檔執行此操作,但每次嘗試訪問我的網站時,都會收到Forbidden 403 AccessDenied錯誤。

這是我的存儲桶策略:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "CloudflareGetObject",
            "Effect": "Deny",
            "NotPrincipal": {
                "AWS": [
                    "arn:aws:iam::ACCOUNT_ID:user/Administrator",
                    "arn:aws:iam::ACCOUNT_ID:root"
                ]
            },
            "Action": "s3:GetObject",
            "Resource": [
                "arn:aws:s3:::www.mydomain.com/*",
                "arn:aws:s3:::www.mydomain.com"
            ],
            "Condition": {
                "NotIpAddress": {
                    "aws:SourceIp": [
                        "2c0f:f248::/32",
                        "2a06:98c0::/29",
                        "2803:f800::/32",
                        "2606:4700::/32",
                        "2405:b500::/32",
                        "2405:8100::/32",
                        "2400:cb00::/32",
                        "198.41.128.0/17",
                        "197.234.240.0/22",
                        "190.93.240.0/20",
                        "188.114.96.0/20",
                        "173.245.48.0/20",
                        "172.64.0.0/13",
                        "162.158.0.0/15",
                        "141.101.64.0/18",
                        "131.0.72.0/22",
                        "108.162.192.0/18",
                        "104.16.0.0/12",
                        "103.31.4.0/22",
                        "103.22.200.0/22",
                        "103.21.244.0/22"
                    ]
                }
            }
        }
    ]
}

默認情況下,AWS 拒絕所有請求。 資源

您的策略本身不會授予管理員 [或任何其他用戶] 的訪問權限,它只會將他從被明確拒絕的委托人列表中省略。 為了允許他訪問資源,另一個策略聲明必須使用“Effect”顯式允許訪問:“Allow”。 資源

現在,我們必須創建兩個策略聲明:- 第一個是允許,第二個是拒絕。 然后,最好只對特定 IP 設置一個“允許”策略。

最好不要將簡單的事情復雜化,例如將 Deny 與 Not Principal 和 NotIPAddress 一起使用。 甚至 AWS 都說:

很少有場景需要使用 NotPrincipal,我們建議您在決定使用 NotPrincipal 之前探索其他授權選項。 資源

現在,問題出現在如何將 Cloudflare IP 列入白名單??? .

讓我們用一個簡單的方法 go。 以下是政策。 替換您的存儲桶名稱和 Cloudflare Ip。 我已經測試過它並且它正在運行。

{
"Version": "2012-10-17",
"Statement": [
    {
        "Sid": "AllowCloudFlareIP",
        "Effect": "Allow",
        "Principal": "*",
        "Action": "s3:getObject",
        "Resource": [
            "arn:aws:s3:::my-poc-bucket",
            "arn:aws:s3:::my-poc-bucket/*"
        ],
        "Condition": {
            "IpAddress": {
                "aws:SourceIp": [
                    "IP1/32",
                    "IP2/32"
                ]
            }
        }
    }
 ]
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM