← Back to list

如何在AWS使用WAF保護API?

公開讓大家存取的API,有的時候沒有驗證機制的保護,可能會被不同來源攻擊,再說就算有驗證機制,別人也可以登入後取得 token ,然後在短時間發出大量 Request 攻擊 API 。

Judy Huang in Judy’s aws sharing · 2025-02-16 03:26 · 0 claps · 5.7 min read
#aws-waf #aws-api-gateway #api-limit #api-protection
Open on Medium ↗
Wiki topics: ☁️ · DevOps & Cloud

如何在AWS使用WAF保護API?

公開讓大家存取的API,有的時候沒有驗證機制的保護,可能會被不同來源攻擊,再說就算有驗證機制,別人也可以登入後取得 token ,然後在短時間發出大量 Request 攻擊 API 。

為了防止 API 被攻擊,或者提早回應帶有錯誤內容的 Request , AWS 提供了 WAF 幫助開發人員保護系統的 API 。下面會介紹如何在 AWS 設定 WAF 保護 API Gateway 的 API 。

要使用WAF,先進到WAF頁面,並新增 **Web ACLs 。**

Step 1: Describe web ACL and associate it to AWS resources

點選 **Create web ACL** 之後,進到新增頁面,選擇要把這個 WAF 綁到哪個 AWS 服務進行保護。

這邊提供了 Load Balancer 、 API Gateway 、 AppSync GraphQL 等多種 AWS 服務,選了AWS服務之後,再繼續選該服務底下,要綁定的資源。

按下 Add 之後,會回到新增 WAF 的頁面,就可以看到剛才選擇的資源被綁到這個 WAF 。由於我是選擇 API Gateway ,所以跳回這個頁面的時候,可以看到 **Web request body inspection** ,可以在這裡決定 Request body 大小的限制。

Step 2: Add rules and rule groups

Step 2 主要要訂這個 WAF 的規則,開發人員可以選擇使用別人訂好的規則或自己訂規則,如果要使用別人訂好的規則,右上角 Add rules 選擇 **Add managed rule groups如果要自己訂規則,則選擇 `Add my own rules and rule groups` 。**

Add managed rule groups

選擇別人的規則,除了 AWS 自己所提供的之外,還有多間公司可以選擇

AWS的部分,有的規則需要額外付費。

有的只扣 Capacity ,兩種都可以直接加到 web ACL 。

如果要使用其他公司的,則需要先去AWS Marketplace訂閱,通常是扣Capacity,沒有額外的費用。

Capacity的部分,預設是1500,超過1500要額外收費。

Add my own rules and rule groups

這部分可以使用 **Rule builder** 幫忙設計保護API的規則。

可以選擇 Request 要符合或不符合哪些條件,讓 WAF 進行 Block 或允許通行。檢查的條件如果是 **Regular rule** ,可以選擇要針對 Request body 、 header 、 cookies 或 query parameter 等跟 Request 內容有關的當條件。

如果要現在呼叫 API 的次數,可以選擇跟存取 API 次數有關的 Rate-base rule ,設定多少時間內, IP 存取 API 的次數,並設定 IP 的來源,以及要針對單一 IP 還是所有 IP 。

然後 Action 再決定是要 Block 、 Allow ,或者單純的做統計。

規則設計好之後,回到 Step 2 的頁面,可以看到多一條規則在 Rules ,並且顯示用了多少 Capacity 。

Step 3: Set rule priority

由於開發人員可能會設計多條規則,有的要允許,有的要限制,不同規則的邏輯很有可以能會打架,所以開發人員需要在這個頁面調整規則的優先順序。

Step 4: Configure metrics

接著需要設定 metrics ,選擇要不要把符合規則的 Request 記錄下來。

Step 5: Review and create web ACL

最後 review 剛才的設定,就可以新增 web ACL 了。

新增完之後就可以回到**Web ACLs**看到了。

Final test

設定好 WAF 之後,可以簡單測試一下 WAF ,我在這個 WAF 設定的規則是5分鐘內不能超過10次的呼叫。

用 Postman 簡單測試一下,超過次數時,會出現 403 ,這就是 WAF 真的發揮作用!!

Reference

[embed]Pricing - AWS WAF - Amazon Web Services (AWS) Pricing for AWS WAF - Amazon Web Services (AWS)aws.amazon.com

[embed]AWS WAF 配額 AWS WAF 受以下配額約束 (先前稱為限制)。這些配額對於所有區域而言都相同 AWS WAF 是可用的。每個區域分別受制於這些配額。配額不會跨區域累計。docs.aws.amazon.com

[embed]AWS WAF Fraud Control account takeover prevention (ATP) rule group Learn about the AWS WAF Fraud Control account takeover prevention (ATP) managed rule group available from AWS Managed…docs.aws.amazon.com


메타데이터
post_id
5e4eb18e46eb
slug
如何在aws使用waf保護api-5e4eb18e46eb
url
https://medium.com/judys-aws-sharing/%E5%A6%82%E4%BD%95%E5%9C%A8aws%E4%BD%BF%E7%94%A8waf%E4%BF%9D%E8%AD%B7api-5e4eb18e46eb
canonical_url
https://medium.com/judys-aws-sharing/%E5%A6%82%E4%BD%95%E5%9C%A8aws%E4%BD%BF%E7%94%A8waf%E4%BF%9D%E8%AD%B7api-5e4eb18e46eb
author_url
https://medium.com/@hjoruhjoru
status
ok
fetched_at
2026-08-15 06:07:21