iT邦幫忙

2023 iThome 鐵人賽

DAY 21
0
DevOps

SRE/K8S 碎碎念系列 第 21

D21

  • 分享至 

  • xImage
  •  

雖然我們之前為了做到 maintenance mode 已經成功使用 ingress 的修改達成了,但更改 ingress 的部分我們需要進到環境裡面調整 values,非常不優雅。既然我們用的是 AWS 全環境架構,是否有機會將 AWS service 做到呢?

於是我們開始考量在 ALB 前面的幾個可能性

  1. API Gateway
  2. Cloudfront 上的 lambda@edge
  3. WAF

在考慮服務的時候,我們可以考量

  1. 可行性
  2. 操作及維護性
  3. 費用

接下來我們就根據以上三點來思考

定義需求

在特定時刻,只讓特定IP可以使用服務,其他都回傳 500 custom response: maintenance mode

WAF

AWS WAF (Web Application Firewall) 是一款用於保護Web應用程式免受常見的網路攻擊的防火牆服務。它可以幫助監控和控制HTTP和HTTPS流量,進而保護應用程式不受各種惡意行為的影響,例如SQL injection、跨站腳本攻擊等。通過自定義安全規則,可以根據需要對特定來源或行為進行許可、阻止或監控。

WAF 組件基本介紹

  1. Web ACL(Access Control List)是 AWS WAF 的核心組件之一,它允許創建和管理一系列規則來定義允許或拒絕對 Web 應用程序的訪問。AWS WAF 可以選擇 使用 WEB ACL保護 Amazon CloudFront distributions, Application Load Balancers, and/or Amazon API Gateway stages,一個 WEB ACL包含多個 rules。使用 add my own rule 後,選擇 IP SET。這邊會創立兩種 rule,包含 允許 IP Set 跟 除了這些 IP 以外的 rule。
  2. Web ACL capacity units (WCUs) used by your web ACL,Web ACL Capacity Units (WCUs) 是 AWS WAF 中用於衡量規則集、條件和其他 Web ACL 部分所需資源的度量單位。當在 AWS WAF 中定義規則並組合它們以保護應用程序時,每個規則、條件和操作都需要一定數量的 WCUs。

WAF 的評估

  1. 可行性

    1. 創建一個 IP Set 給允許訪問的 IP 地址
    2. 創建一個 AWS WAF rule,該規則允許特定的 IP Set 中的請求通過
    3. WebACL 是一個包含規則和默認操作的容器。在這種情況下,需要一個 WebACL 有兩個動作:允許 IP Set 中的請求,並阻止其他請求
    4. 自定義 500 error,使用 CloudFront 的自定義錯誤頁面功能。假設正在使用 CloudFront 和 WAF 進行整合
  2. 操作及維護性

    1. 可以使用 CLI 對 WAF 進行操作或是 terraform 部署或切換。切換方法為使用 aws update-web-acl

      aws waf update-web-acl --web-acl-id <web_acl_id> --change-token <change_token> \
        --updates 'Action=INSERT,ActivatedRule={Priority=1,RuleId=<rule_id>,Action={Type=ALLOW}}'
      
  3. 費用

    1. AWS WAF 根據建立的 Web 存取控制清單 (Web ACL) 數、為每個 Web ACL 所新增的規則數,以及收到的 Web 請求數來收費
      1. 我們會建立一個 WEB ACL,並且在 maintenance mode 的時後掛上兩個 rules
      2. Web request
        1. AWS WAF 的收費是基於請求數量和 Web ACL 使用的資源。以下是關於 request 項目的收費說明:
          1. 基本費用:對於每 100 萬個請求,基本費用為 $0.60(在預設的 1500 WCU 和默認檢查體積限制內)。
          2. 額外 WCU 費用:如果 Web ACL 使用超過默認分配的 1500 WCU,則每增加 500 WCU,需要支付額外的 $0.20/百萬請求。WCU(Web ACL 容量單位)是衡量規則集、條件和其他 Web ACL 部分所需資源的單位。
          3. 額外檢查 size 費用:如果需要檢查額外的 HTTP request body,則每增加 16KB,需要支付額外的 $0.30/百萬請求。
          4. 在此項目中,由於查看過往 cloudfront 的 request 量,request 數量是遠遠不會高於百萬,故以0.6 美估計

https://ithelp.ithome.com.tw/upload/images/20231006/20118525y9Dj7JrTMq.png


上一篇
D20
下一篇
D22 maintenance mode api gateway
系列文
SRE/K8S 碎碎念30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言