系統設計基礎筆記(六) Rate Limiting

Rate Limiting

Prerequistites

  • DDOS
    • 分散式阻斷服務攻擊(distributed denial-of-service attack)亦稱洪水攻擊
  • DoS
    • 阻斷服務攻擊(英語:denial-of-service attack)
    • 預防方式是使用 rate limit, 可以限制 IP, 使用者帳戶, 區域等等。

Rate Limiting

  • 意思就是限流
  • 根據維基百科,定義是「控制計算機發送或接收的請求之頻率」

Rate Limiting for Multiple Server

  • use Redis to implement rate limiting for multiple servers

Application Layer 如何實現 Rate Limit

  • 實現方式
  • 缺點
    • 在 API server 裡面自己用 middleware 做限流,雖然這樣做感覺很方便,但也會讓 API server 無法完全專注在業務邏輯上

AWS WAF (Web Application Firewall)

  • 目的是保護您的 Web 應用程式免受常見 Web 入侵程式的危害

運作方式

source: https://docs.aws.amazon.com/waf/latest/developerguide/how-aws-waf-works.html

關於 AWS WAF components

  • Web ACLs

    • 目的是保護 AWS resources,藉由建立一組 web ACL 並新增 rules 去定義保護策略
    • 屬於 AWS WAF resource
  • Rules

    • 顧名思義,定義檢查標準 (inspection criteria),當有 matching requests,可以做的事情如允許通過、計算他們或者執行 CAPTCHA puzzles 去檢查是否為機器人
    • 不屬於 AWS WAF resource
  • Rule groups

    • 可以組合自己的 rule groups,也可以直接在 web ACL 中定義規則
    • 屬於 AWS WAF resource

關於 Web ACL capacity units (WCU)

  • 使用 WCU 來計算與控制運行規則、規則組和 Web ACL 所需的操作資源
    • For example, a size constraint rule statement uses fewer WCUs than a statement that inspects against a regex pattern set.
  • AWS WAF 會管理 Rule capacity, Rule group capacity, Web ACL capacity,詳情可以參考這篇

關於 Resources that you can protect with AWS WAF

  • 使用 AWS WAF web ACL 去保護全球或區域性的 resource types,只需要將 web ACL 連結到你想要保護的 resources 上,官方提供 Amazon CloudFront 以及 Regional resources 特別說明
    • Note: Amazon CloudFront 是一項內容交付網路(CDN) 服務,可協助您以高速效能、安全和開發人員易用性快速、可靠地分發靜態和動態內容。
  • 限制
    • 一個 web ACL 可以連結多個 AWS resources,一個 AWS resource 僅連結一個 web ACL
    • 一個 web ACL 可以連結多個 CloudFront distributions,且已連結到 CloudFront distribution 的 web ACL 不能再去連結其他 AWS resource type

使用情境,舉例 3 點

  • 篩選 Web 流量
    • 建立規則以根據各種條件篩選 Web 請求,例如 IP 地址、HTTP 標頭和內文,或自訂 URI。
  • 防止帳戶接管詐騙
    • 監控應用程式的登入頁面,偵測以盜用憑證對使用者帳戶進行的未經授權存取。
  • 使用 API 管理 AWS WAF
    • 自動建立和維護規則,並將這些規則併入開發和設計程序中。

比較 AWS WAF, AWS Shield 與 AWS Firewall Manager

  • AWS WAF
    • monitor requests that are forwarded to your web applications and control access to your content.
  • AWS Shield
    • help protect against DDoS attacks.
  • AWS Firewall Manager
    • set up your firewall rules and apply the rules automatically across accounts and resources, even as new resources are added.

參考資料 👐

🍀 若喜歡我的分享,可以幫我拍拍手👏,是對我最大的鼓勵