我想要使用 AWS WAF 限制使用者直接存取 Application Load Balancer (ALB),而且只允許透過 Amazon CloudFront 進行存取。如何使用 AWS WAF 執行此操作?
解決方案
若要使用 AWS WAF 限制流量直接傳輸至 ALB,並允許只通過雲端流量,請執行下列操作:
- 將 CloudFront 設定為,在 CloudFront 傳送至 ALB 的請求中,新增包含機密值的自訂 HTTP 標頭。
- 在與 ALB 關聯的 AWS WAF Web ACL 中建立規則,以封鎖不含自訂 HTTP 標頭機密值的請求。
將 CloudFront 設定為,在其傳送至 ALB 的請求中,新增包含機密值的自訂 HTTP 標頭
- 開啟 Amazon CloudFront 主控台。
- 在導覽窗格中,選擇 Distributions (分發)。
- 選擇分發的 ID。
- 選擇 Origins (來源)。
- 選取您的 ALB 來源,然後選擇 Edit (編輯)。
**注意:**如果您沒有 ALB 來源,請參閱建立分發或更新分發。
- 針對 Add custom header (新增自訂標頭),新增 Header name (標頭名稱) 和 Value (值)。範例標頭名稱為 Custom-header,值 為 Random-12345。
重要事項︰將 Header name (標頭名稱) 和 Value (值) 視為安全憑證,例如使用者名稱和密碼。
- 選擇 Save changes (儲存變更)。
在與 ALB 關聯的 AWS WAF Web ACL 中建立規則,以封鎖不含自訂 HTTP 標頭機密值的請求
注意:如果您沒有與 ALB 關聯的現有 Web ACL,則請按照建立 AWS WAF Web ACL 中的步驟操作。如果您有與 ALB 關聯的現有 Web ACL,請繼續 Create a rule (建立規則)。
建立 AWS WAF Web ACL
- 開啟 AWS WAF 主控台。
- 在導覽窗格的 AWS WAF 下,選擇 Web ACL。
- 針對 Region (區域),請選取 ALB 所在的 AWS 區域。
- 選擇 Create web ACL (建立 Web ACL),然後輸入 Name (名稱)。
- 針對 Associated AWS resources (關聯的 AWS 資源),請關聯您的 ALB,然後選擇 Next (下一步)。
- 針對 Default web ACL action for requests that don't match any rules (不符合任何規則之請求的預設 Web ACL 動作),請選擇 Allow (允許),然後選擇 Next (下一步)。
- 針對 Request sampling options (請求取樣選項),選擇 Enable sampled requests (啟用取樣要求),然後選擇 Next (下一步)。
- 檢閱 Web ACL 組態。如果組態與您的規格相符,請選擇 Create web ACL (建立 Web ACL)。
建立規則
- 開啟 AWS WAF 主控台。
- 在導覽窗格的 AWS WAF 下,選擇 Web ACL。
- 針對 Region (區域),請選取 ALB 所在的 AWS 區域。
- 選取已與 ALB 關聯的 Web ACL。
- 選擇 Rules (規則),然後選擇 Add Rules (新增規則)、Add my own rules and rule groups (新增我自己的規則和規則群組)。
- 在 Name (名稱) 中,輸入 rule name (規則名稱),然後選擇 Regular Rule (一般規則)。
- 針對 If a request (如果請求),選擇 doesn't match the statement (NOT) (與陳述式 (NOT) 不相符)。
- 在 Statement 1:
針對 Inspect (檢查),選擇 Single Header (單一標題)。
在 Header field name (標頭欄位名稱) 中,輸入在 CloudFront 中建立的 Header name (標頭名稱) 的名稱。例如,Custom-header。
針對 Match type (比對類型),選擇 Exactly matches string (完全與字串相符)。
針對 String to match (要比對的字串),請輸入在 CloudFront 中建立的 Value (值)。例如,Random-12345。
針對 Text transformation (文字轉換),請選擇 None (無)。
- 針對 Action (動作),選擇 Block (封鎖)。
- 選擇 Save rule (儲存規則)。
- 針對 Set rule priority (設定規則優先級),如果您有多個規則,請將此規則設定為最高優先級。
- 選擇 Save (儲存)。
相關資訊
將自訂標頭新增至原始請求
AWS WAF 規則