簡體   English   中英

AWS CloudFront 和 ELB:有沒有辦法只使用 CloudFront 強制連接?

[英]AWS CloudFront and ELB: Is there a way to force connection using only CloudFront?

我有一個平衡一些 EC2 實例的 ELB。 ELB 暴露了整個系統的端點。

現在我正在這個 ELB 上創建一個 CloudFront 分配。 有沒有辦法允許用戶僅使用 CloudFront 端點連接並拒絕直接連接到 ELB?

謝謝

您必須將安全組限制為 CloudFront 使用的 IP 地址范圍列表。 這是此處發布的列表的一個子集。

不幸的是,該列表可能會發生變化,因此您不能只設置一次就忘記它。 Amazon 在此處發布了一個教程,指導您設置 Lambda 函數,該函數將在 Amazon 發布更新的 IP 列表時自動更新您的安全組。

不幸的是,目前沒有直接的方法可以做到這一點。

ELB 訪問只能受 IP 范圍限制。 可以嘗試將 ELB 限制為CloudFront 的 IP 范圍,但這相當脆弱且經常更改。 如果引入了新的 IP 范圍,您最終可能會意外阻止 CloudFront。 我會說這種方法是不可取的,但我已經看到當要求是強制性的時它已經完成了。 它確實打破了幾次。

您可以設置一個僅允許 Cloudfront IP 的自動安全組,並讓 Lambda 函數在 Cloudfront IP 范圍更改時更新它。 在我的博客文章中,您可以找到一個完整的 Cloudformation 模板來為您進行設置:

https://medium.com/cagataygurturk/restricting-elb-access-to-cloudfront-8b0990dea69f

如果 R53 中沒有使用您的負載均衡器的記錄,並且只有 cloudfront 定義了您的負載均衡器使用的備用域名 (CNAME),那么您可以將 WAF ACL 與您的負載均衡器相關聯,以丟棄任何與備用域名不匹配的請求域名。 在這種情況下,您強制將 CloudFront 分配用於負載均衡器。

AWS 博客針對這種情況提供了解決方案

它所做的基本上是創建一個 lambda 函數,該函數訂閱一個 SNS 主題,該主題接收 AWS IP 地址范圍更改的通知(該主題歸 AWS 所有)。 這個 lambda 然后動態更新 ELB/ALB 安全組。 Lambda 代碼可在此處獲得

從 2022 年開始,AWS 終於通過托管前綴列表為這個問題提供了解決方案。

您可以創建入站安全規則並在源下直接指定前綴列表,而不是手動提供 IP 地址:

要使您的服務器只能從 Cloudfront 服務器訪問,請執行以下步驟:

  1. Go 至https://console.aws.amazon.com/vpc/home#ManagedPrefixLists

  2. 選擇您所在的地區(負載均衡器所在的地區)並搜索“com.amazonaws.global.cloudfront.origin-facing”並復制 ID(例如,“pl-a3a144ca”表示 europe-central-1)

  3. 為負載均衡器編輯您的安全組並添加一個類型為:HTTP 的新條目,並將步驟 2 中的 prefix-list-id 作為源粘貼

現在您的安全組將自動始終使用來自 Cloudfront 的當前 IP 地址,現在需要更新。 - 一個警告:前綴列表算作 ~50 條規則,而不是安全組的規則限制。 如果您有很多其他自定義規則,如果此規則已滿,您可能必須使用其他規則創建第二個安全組。

截至 2022 年 2 月,有一個更簡單的解決方案。 AWS 現在為 Cloudfront 管理一個自動更新的前綴列表。

詳情: https://aws.amazon.com/about-aws/whats-new/2022/02/amazon-cloudfront-managed-prefix-list/

暫無
暫無

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

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