我想使用 AWS WAF 來限制對 Application Load Balancer 的直接存取。我也想使用 AWS WAF,只允許透過 Amazon API Gateway 的直接存取。
解決方法
若要使用 AWS WAF 限制直接流量存取 Application Load Balancer,並且只允許透過 API Gateway 的流量,請依照以下步驟操作。
新增自訂 HTTP 標頭
將 API Gateway 設定為在傳送至 Application Load Balancer 的請求中,加入帶有機密值的自訂 HTTP 標頭。
請完成下列步驟:
- 開啟 API Gateway console (API Gateway 主控台)。
- 在導覽窗格中,選擇 API。
- 選擇您的 REST API。
- 在 Resources (資源) 中,選擇您的 HTTP 方法。例如,GET。
- 選擇 Integration Request (整合請求) 索引標籤,然後選擇 Edit (編輯)。
- 展開 URL request headers parameters (網址請求標頭參數) 區段,然後選擇 Add request header parameter (新增請求標頭參數)。
在 Name (名稱),輸入標頭的名稱。例如,custom-header。
在 Mapped from (對應來源),輸入機密標頭值。
**注意:**請確保您用單引號將機密標頭值括起來。例如,「secret-value」。
- 選擇 Save (儲存)。
建立防護套件和規則
建立一個與 Application Load Balancer 相關聯的空白 AWS WAF 防護套件。接著,建立一條規則,封鎖沒有帶有機密值自訂 HTTP 標頭的請求。
注意:如果您已擁有與 Application Load Balancer 關聯的現有防護套件,請直接進行建立規則的步驟。
建立防護套件
請完成下列步驟:
- 開啟 AWS WAF console (AWS WAF 主控台)。
- 在導覽窗格中,選擇 AWS WAF。
- 選擇 Resources & protection packs (資源和防護套件)。
- 在 Protection packs (防護套件) 下,選擇 Create protection pack (建立防護套件)。
- 在 Tell us about your app (告訴我們您的應用程式) 下,選取一個或多個應用程式類別。
- 選擇您的應用程式焦點。
- 在 Resources to protect (選取要保護的資源) 下,選擇 Add resources (新增資源)。
- 選擇 Add regional resources (新增區域資源)。從清單中選取您的 Application Load Balancer。
- 在 Choose protection pack (選擇防護套件) 下,選擇 Build your own pack from all of the protections AWS WAF offers (從 AWS WAF 提供的所有保護中建置您自己的套件)。 請忽略右側窗格。
- 在 Name and description (名稱和說明) 下,輸入防護套件的名稱。
- 選擇 Create protection pack (建立防護套件)。
建立規則
請完成下列步驟:
- 開啟 AWS WAF console (AWS WAF 主控台)。
- 在導覽窗格中,選擇 AWS WAF。
- 選擇 Resources & protection packs (資源和防護套件)。
- 在 Protection packs (防護套件) 下,選取已關聯的防護套件,然後選擇規則 (Rules) 旁邊的 View and edit (檢視並編輯)。 這會打開右側窗格。
- 在右側窗格中,選擇 Add rule (新增規則)。
選擇 Custom rule (自訂規則),然後選取 Next (下一步)。
再次選擇 Custom rule (自訂規則),然後選取 Next (下一步)。
- 若要設定規則,請設定以下值:
在 Action (動作) 中,選擇 Block (封鎖)。
在 Rule name (規則名稱) 中,輸入規則名稱。
在 If a request (如果請求) 中,選擇 doesn't match the statement (NOT) (與陳述式不符 (NOT))。
對於檢查,選擇單一標頭。
在 Header field name (標頭欄位名稱),輸入自訂 Header name (標頭名稱)。例如,custom-header。
對於比對類型,選擇完全相符字串。
在 String to match (要符合的字串),輸入機密標頭值。
**注意:**請確保您用單引號將機密標頭值括起來。例如,「secret-value」。
- 選擇 Create rule (建立規則)。
- 如果防護套件中有多條規則,請在右側窗格中選擇編輯規則順序。
將剛建立的規則移動到最高優先順序,將其置於最上方。
- 選擇 Save rule order (儲存規則順序)。
相關資訊
如何將 API Gateway REST API 與 Application Load Balancer 整合?