跳至內容

如何限制流向 Application Load Balancer 的直接流量,並只允許經由 CloudFront 的流量?

3 分的閱讀內容
0

我想限制對 Application Load Balancer 的直接存取,並只允許透過 Amazon CloudFront 存取。

簡短描述

若要限制到 Application Load Balancer 的直接流量,並只允許透過 CloudFront 存取,請使用 Application Load Balancer 接聽程式規則。如果您有現有的 AWS WAF Web 存取控制清單 (ACL),則可以使用 Web ACL 規則。若要進一步限制對 Application Load Balancer 的存取,請將安全群組設定為限制存取您的來源。若要執行此操作,請使用 AWS 受管理字首清單。最佳實務是使用這些解決方案之一,並且設定安全群組。

解決方法

Application Load Balancer 接聽程式規則

若要使用 Application Load Balancer 接聽程式規則來限制流量,請參閱限制對 Application Load Balancer 的存取

AWS WAF

**注意:**AWS WAF 費用取決於下列因素:

  • 您建立的 Web ACL 數量
  • 為每個 Web ACL 新增的規則數量
  • 您收到的 Web 請求數量

如需詳細資訊,請參閱 AWS WAF 定價

若要使用 AWS WAF 自訂 Web ACL 規則來限制流量,請設定 CloudFront 以新增自訂 HTTP 標頭。然後,在與 Application Load Balancer 關聯的 AWS WAF Web ACL 中建立規則。使用此規則可封鎖不包含自訂 HTTP 標頭機密值的請求。

設定 CloudFront 以新增自訂 HTTP 標頭

請完成下列步驟:

  1. 開啟 CloudFront console (CloudFront 主控台)。
  2. 在導覽窗格中,選擇 Distributions (發行項目),然後選取您的發行項目 ID
  3. 選擇 Origins (來源) 索引標籤。
  4. 選取您的 Application Load Balancer,然後選擇 Edit (編輯)。
    **注意:**如果您的 Application Load Balancer 不是來源,請更新您的分佈,然後將 Application Load Balancer 設定為來原。
  5. 新增自訂標頭 中,輸入標頭名稱
    重要:****標頭名稱作為安全憑證,例如使用者名稱和密碼。請記下這些值,以在後續程序中使用。
  6. 選擇 Save changes (儲存變更)。

在您的 Web ACL 中建立規則,以封鎖沒有標頭的請求

請完成下列步驟:

  1. 開啟 AWS WAF console (AWS WAF 主控台)。
  2. 在導覽窗格中,選擇 Resources & protection packs (資源和保護套件)。
  3. 選擇 Create protection pack (建立保護套件)。
  4. Tell us about your app (告訴我們您的應用程式) 下的 App category (應用程式類別) 中,選取一個或多個應用程式類別。
  5. Traffic source (流量來源),選擇應用程式所涉及的流量類型,例如 APIWebAPI 和 Web
  6. Resources to protect (要保護的資源) 下,選擇 Add resources (新增資源)。
  7. Global (全域) 下,選擇 Add Cloud front or Amplify resources (新增雲端或放大資源)。
  8. 從清單中選取您的發行項目。
  9. Choose protection pack (選擇保護套件) 下,選取 Build your own pack from all of the protections AWS WAF offers (從 AWS WAF 提供的所有保護中建置您自己的套件)。
  10. 在右側窗格中,選擇Custom rule (自訂規則),然後選取 Next (下一步)。
    再次選擇 Custom rule (自訂規則),然後選取 Next (下一步)。
  11. 將規則 Action (動作) 設定為 BLOCK (封鎖)。
  12. 輸入您的規則名稱
  13. If a request (如果請求) 中,展開下拉式功能表並選擇與陳述式不符** (NOT)**。
  14. Inspect (檢查),選擇 Single header (單一標頭)。
  15. Statement (陳述式) 下,完成以下內容:
    對於標頭欄位名稱,輸入您在 CloudFront 中建立的標頭名稱
    對於比對類型,選擇完全相符字串
    對於比對字串,輸入您在 CloudFront 中建立的
    (選用) 在 Text transformation (文字轉換),選擇 None (無)。
  16. 選擇 Create rule (建立規則)。
  17. (選用) 若要設定多個規則優先順序,請在右側窗格中選取編輯規則順序,然後將此規則設為最高優先順序。
  18. 選擇 Save Rule Order (儲存規則順序)。
  19. Name and description (名稱和說明) 下,輸入保護套件的名稱。
  20. 按一下 Create protection pack (建立保護套件)。

設定安全群組

若要進一步限制流向 Application Load Balancer 的流量,請在 Application Load Balancer 中的安全群組上使用 AWS 受管首碼清單

若要更新現有的安全群組,請參閱更新關聯的安全群組。若要將 Application Load Balancer 與安全群組關聯,請完成下列步驟:

  1. 開啟 Amazon Elastic Compute Cloud (Amazon EC2) console (Amazon Elastic Compute Cloud (Amazon EC2) 主控台)。
  2. 在導覽窗格的 Load Balancing (負載平衡) 下,選擇 Load Balancers (負載平衡器)。
  3. 選取您的 Application Load Balancer,然後選擇 Security (安全性)。
  4. 選取要與 Application Load Balancer 建立關聯的安全群組。
  5. 若要修改傳入規則,請選擇編輯傳入規則,然後更新適合您使用案例的組態。
    **注意:**如果您有允許 0.0.0.0/0 的規則,則必須先新增規則,然後才能刪除現有規則。
  6. 若要允許特定通訊協定,請選取該通訊協定,然後選擇 Custom (自訂)。
  7. Source type (來源類型),選擇 CloudFront,然後從 AWS 受管首碼清單中選取您的首碼。
  8. 選擇 Save (儲存)。
    **注意:**最佳實務是只允許您 Application Load Balancer 所使用的連接埠。

由於首碼清單權重的原因,在預設設定下,您只能為每個安全群組新增一次 CloudFront 受管首碼清單。若要在同一安全群組中新增另一條以 CloudFront 作為來源類型的規則,請申請增加配額。或者,使用兩個都參考 CloudFront 受管理字首清單的安全群組。

相關資訊

使用 Amazon CloudFront 的 AWS 受管首碼清單限制對原始伺服器的存取

如何將我 CloudFront 發行項目所提供的 Web 內容限制為只能從特定地區存取?

AWS 官方已更新 8 個月前