<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Aws-Waf on Tarragon</title><link>https://tarrragon.github.io/blog/tags/aws-waf/</link><description>Recent content in Aws-Waf on Tarragon</description><generator>Hugo -- gohugo.io</generator><language>zh-TW</language><copyright>Tarragon (CC BY 4.0)</copyright><lastBuildDate>Mon, 18 May 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://tarrragon.github.io/blog/tags/aws-waf/index.xml" rel="self" type="application/rss+xml"/><item><title>AWS WAF</title><link>https://tarrragon.github.io/blog/backend/07-security-data-protection/vendors/aws-waf/</link><pubDate>Mon, 18 May 2026 00:00:00 +0000</pubDate><guid>https://tarrragon.github.io/blog/backend/07-security-data-protection/vendors/aws-waf/</guid><description>&lt;p>AWS WAF 是 &lt;em>AWS-internal&lt;/em> 的 Web Application Firewall、掛在 ALB、CloudFront、API Gateway、App Runner、AppSync 與 Cognito User Pool 的前面，攔截 HTTP/HTTPS 攻擊。它跟 &lt;a href="https://tarrragon.github.io/blog/backend/07-security-data-protection/vendors/cloudflare-waf/" data-link-title="Cloudflare WAF" data-link-desc="Edge WAF &amp;#43; DDoS &amp;#43; Bot management 整合套件、global anycast 網路、控制面信任邊界跟客戶側補強的對照">Cloudflare WAF&lt;/a> / &lt;a href="https://tarrragon.github.io/blog/backend/07-security-data-protection/vendors/fastly-ngwaf/" data-link-title="Fastly Next-Gen WAF" data-link-desc="Behavioral / 語意分析 WAF（前 Signal Sciences）、低 false positive、Edge / Agent / Cloud 三種部署模型、API &amp;#43; ATO &amp;#43; Bot 一體">Fastly Next-Gen WAF&lt;/a> 的核心差異是 &lt;em>部署位置在 AWS 內部&lt;/em>：流量先經 AWS 邊界進來、再進 Web ACL 過濾、最後抵達 origin；不是在 Cloudflare anycast edge 提早攔。對 AWS-heavy 客戶、AWS WAF 的價值是 &lt;em>跟 &lt;a href="https://tarrragon.github.io/blog/backend/07-security-data-protection/vendors/aws-iam/" data-link-title="AWS IAM" data-link-desc="AWS cloud resource permission engine、Role / Policy / STS、跨帳號信任邊界與 OIDC federation 的核心">AWS IAM&lt;/a> / VPC / &lt;a href="https://docs.aws.amazon.com/waf/latest/developerguide/shield-chapter.html">AWS Shield&lt;/a> 同一個控制面&lt;/em>；對 multi-cloud / on-prem origin、AWS WAF 觸不到、要回到 edge WAF。&lt;/p>
&lt;h2 id="服務定位">服務定位&lt;/h2>
&lt;p>AWS WAF 的核心定位是 &lt;em>跟 AWS 服務深度耦合的 L7 防護層&lt;/em>。Web ACL 直接掛 AWS resource、規則用 IAM policy 管理、log 進 Kinesis Firehose / CloudWatch Logs / S3、跟 AWS Shield Standard（內含、L3/L4 DDoS）自動整合。這跟 &lt;a href="https://tarrragon.github.io/blog/backend/07-security-data-protection/vendors/cloudflare-waf/" data-link-title="Cloudflare WAF" data-link-desc="Edge WAF &amp;#43; DDoS &amp;#43; Bot management 整合套件、global anycast 網路、控制面信任邊界跟客戶側補強的對照">Cloudflare WAF&lt;/a> 在 &lt;em>origin 之前的 edge&lt;/em> 攔截不同 — AWS WAF 流量 &lt;em>已經進到 AWS 邊界&lt;/em>、不是擋在外部。對 origin 跑在 ALB / CloudFront / API Gateway 後的客戶、AWS WAF 是天然選項；origin 在其他雲或地端、AWS WAF 觸不到。&lt;/p>
&lt;p>跟 &lt;a href="https://tarrragon.github.io/blog/backend/07-security-data-protection/vendors/fastly-ngwaf/" data-link-title="Fastly Next-Gen WAF" data-link-desc="Behavioral / 語意分析 WAF（前 Signal Sciences）、低 false positive、Edge / Agent / Cloud 三種部署模型、API &amp;#43; ATO &amp;#43; Bot 一體">Fastly Next-Gen WAF&lt;/a> 相比、AWS WAF 走 &lt;em>signature + managed rule group&lt;/em> 偵測模型、不像 Fastly NG-WAF 走語意 / behavioral；AWS WAF 的 Managed Rule Group 來自 AWS Managed 與 AWS Marketplace 第三方（Fortinet、F5、Imperva 等）、客戶端 &lt;em>看不到 rule logic&lt;/em>、debug 時要靠 sampled request 反推。&lt;/p></description><content:encoded><![CDATA[<p>AWS WAF 是 <em>AWS-internal</em> 的 Web Application Firewall、掛在 ALB、CloudFront、API Gateway、App Runner、AppSync 與 Cognito User Pool 的前面，攔截 HTTP/HTTPS 攻擊。它跟 <a href="/blog/backend/07-security-data-protection/vendors/cloudflare-waf/" data-link-title="Cloudflare WAF" data-link-desc="Edge WAF &#43; DDoS &#43; Bot management 整合套件、global anycast 網路、控制面信任邊界跟客戶側補強的對照">Cloudflare WAF</a> / <a href="/blog/backend/07-security-data-protection/vendors/fastly-ngwaf/" data-link-title="Fastly Next-Gen WAF" data-link-desc="Behavioral / 語意分析 WAF（前 Signal Sciences）、低 false positive、Edge / Agent / Cloud 三種部署模型、API &#43; ATO &#43; Bot 一體">Fastly Next-Gen WAF</a> 的核心差異是 <em>部署位置在 AWS 內部</em>：流量先經 AWS 邊界進來、再進 Web ACL 過濾、最後抵達 origin；不是在 Cloudflare anycast edge 提早攔。對 AWS-heavy 客戶、AWS WAF 的價值是 <em>跟 <a href="/blog/backend/07-security-data-protection/vendors/aws-iam/" data-link-title="AWS IAM" data-link-desc="AWS cloud resource permission engine、Role / Policy / STS、跨帳號信任邊界與 OIDC federation 的核心">AWS IAM</a> / VPC / <a href="https://docs.aws.amazon.com/waf/latest/developerguide/shield-chapter.html">AWS Shield</a> 同一個控制面</em>；對 multi-cloud / on-prem origin、AWS WAF 觸不到、要回到 edge WAF。</p>
<h2 id="服務定位">服務定位</h2>
<p>AWS WAF 的核心定位是 <em>跟 AWS 服務深度耦合的 L7 防護層</em>。Web ACL 直接掛 AWS resource、規則用 IAM policy 管理、log 進 Kinesis Firehose / CloudWatch Logs / S3、跟 AWS Shield Standard（內含、L3/L4 DDoS）自動整合。這跟 <a href="/blog/backend/07-security-data-protection/vendors/cloudflare-waf/" data-link-title="Cloudflare WAF" data-link-desc="Edge WAF &#43; DDoS &#43; Bot management 整合套件、global anycast 網路、控制面信任邊界跟客戶側補強的對照">Cloudflare WAF</a> 在 <em>origin 之前的 edge</em> 攔截不同 — AWS WAF 流量 <em>已經進到 AWS 邊界</em>、不是擋在外部。對 origin 跑在 ALB / CloudFront / API Gateway 後的客戶、AWS WAF 是天然選項；origin 在其他雲或地端、AWS WAF 觸不到。</p>
<p>跟 <a href="/blog/backend/07-security-data-protection/vendors/fastly-ngwaf/" data-link-title="Fastly Next-Gen WAF" data-link-desc="Behavioral / 語意分析 WAF（前 Signal Sciences）、低 false positive、Edge / Agent / Cloud 三種部署模型、API &#43; ATO &#43; Bot 一體">Fastly Next-Gen WAF</a> 相比、AWS WAF 走 <em>signature + managed rule group</em> 偵測模型、不像 Fastly NG-WAF 走語意 / behavioral；AWS WAF 的 Managed Rule Group 來自 AWS Managed 與 AWS Marketplace 第三方（Fortinet、F5、Imperva 等）、客戶端 <em>看不到 rule logic</em>、debug 時要靠 sampled request 反推。</p>
<p>計費模型也是關鍵差異：AWS WAF 按 <em>per-Web-ACL + per-rule + per-request</em> 計費（單 ACL $5/月、單 rule $1/月、$0.60 per 1M request），Managed Rule Group 算多 rule、開太多套 ruleset 與流量大時帳單會明顯漲。Cloudflare 是 plan-tier 計費（Pro / Business / Enterprise）、不會因為多開 rule 線性漲價。</p>
<h2 id="本章目標">本章目標</h2>
<p>讀完本頁、讀者能判斷：</p>
<ol>
<li>AWS WAF 在 AWS-internal 防護 stack 中承擔哪一段、哪些要靠 <a href="https://docs.aws.amazon.com/waf/latest/developerguide/shield-chapter.html">AWS Shield</a> / VPC / CloudFront 補位</li>
<li>Web ACL scope（Regional vs CloudFront）的選擇與跨 region 部署成本</li>
<li>Managed Rule Group / Custom Rule / Rate-based Rule 的取捨、Bot Control add-on 是否值得開</li>
<li>何時用 AWS WAF、何時走 <a href="/blog/backend/07-security-data-protection/vendors/cloudflare-waf/" data-link-title="Cloudflare WAF" data-link-desc="Edge WAF &#43; DDoS &#43; Bot management 整合套件、global anycast 網路、控制面信任邊界跟客戶側補強的對照">Cloudflare WAF</a> / <a href="/blog/backend/07-security-data-protection/vendors/fastly-ngwaf/" data-link-title="Fastly Next-Gen WAF" data-link-desc="Behavioral / 語意分析 WAF（前 Signal Sciences）、低 false positive、Edge / Agent / Cloud 三種部署模型、API &#43; ATO &#43; Bot 一體">Fastly NG-WAF</a> 的判準</li>
</ol>
<h2 id="最短判讀路徑">最短判讀路徑</h2>
<p>判斷 AWS WAF 配置是否健康、最少看四件事：</p>
<ul>
<li><strong>Web ACL scope 對不對</strong>：CloudFront distribution 必須掛 <em>CloudFront scope</em>（強制在 us-east-1 建立 ACL）、ALB / API Gateway 必須掛 <em>Regional scope</em>（每個 region 各一份）；scope 配錯掛不上去、跨 region 部署是否用 IaC（Terraform / CloudFormation）同步複製 ACL</li>
<li><strong>Managed Rule Group 與 sensitivity</strong>：是否啟用 <em>AWSManagedRulesCommonRuleSet</em>（CRS）、<em>AmazonIpReputationList</em>（已知惡意 IP）、<em>AnonymousIpList</em>（VPN / proxy / Tor）、<em>KnownBadInputsRuleSet</em>（已知 exploit pattern）、Marketplace rule 是否在 Count mode 觀察 1-2 週 FP 再切 Block</li>
<li><strong>Logging 有沒有開</strong>：Web ACL log 預設關閉、必須手動配 Kinesis Firehose / CloudWatch Logs / S3 destination；event 是否進 SIEM（見 <a href="/blog/backend/07-security-data-protection/detection-coverage-and-signal-governance/" data-link-title="7.13 偵測覆蓋率與訊號治理" data-link-desc="定義偵測覆蓋、訊號品質與誤報成本的治理問題">7.13 偵測覆蓋率與訊號治理</a>）、是否能對 sampled request 反推 rule 行為</li>
<li><strong>IAM 邊界</strong>：誰能 update Web ACL（<code>wafv2:UpdateWebACL</code>、<code>wafv2:UpdateRuleGroup</code>）、是否限定 admin role 才能改、CI 是否只有 <code>wafv2:Get*</code> / <code>List*</code> 用來 verify、敏感變更是否走 Change Management / <a href="/blog/backend/knowledge-cards/audit-log/" data-link-title="Audit Log" data-link-desc="說明高風險操作如何留下可追溯、可稽核的紀錄">Audit Log</a></li>
</ul>
<p>四件事任一缺失、就是 <a href="/blog/backend/07-security-data-protection/entrypoint-and-server-protection/" data-link-title="7.3 入口治理與伺服器防護" data-link-desc="以問題驅動方式整理對外入口、管理平面與伺服器邊界">Entry Point Protection</a> 邊界的待補項目。</p>
<h2 id="日常操作與決策形狀">日常操作與決策形狀</h2>
<p><strong>Web ACL 與 scope</strong>：Web ACL 是 AWS WAF 的 <em>規則容器</em>、必須 attach 到 AWS resource。Scope 兩種：<em>Regional</em>（給 ALB / API Gateway / App Runner / AppSync / Cognito User Pool、每 region 獨立）與 <em>CloudFront</em>（給 CloudFront distribution、必須在 us-east-1 建立、全球生效）。同一個 ACL 不能跨 scope 共用；跨 region 部署同一套規則必須複製 ACL、用 Terraform / CloudFormation 管理避免 drift。</p>
<p><strong>Rule action 五種</strong>：每個 rule 觸發時可以做 <em>Block</em>（直接 403）、<em>Allow</em>（跳過後續 rule、放行）、<em>Count</em>（不擋、只記錄、用於 dry-run 觀察 FP）、<em>CAPTCHA</em>（出題給人類解、bot 過不去）、<em>Challenge</em>（silent JS challenge、無感驗證）。新 rule 上線標準動作是先 <em>Count</em> 1-2 週看 sample、確認 FP 在容忍範圍才切 <em>Block</em>。CAPTCHA / Challenge 是 <a href="https://docs.aws.amazon.com/waf/latest/developerguide/waf-bot-control.html">Bot Control add-on</a> 配套、要額外計費。</p>
<p><strong>Managed Rule Group（managed by AWS / Marketplace）</strong>：AWS Managed（免費含在 WAF）涵蓋 <em>Common Rule Set</em>（OWASP top10 對應）、<em>Known Bad Inputs</em>、<em>SQL Database</em>、<em>Linux</em>、<em>Unix</em>、<em>Windows</em>、<em>Anonymous IP List</em>、<em>Amazon IP Reputation List</em>、<em>Account Takeover Prevention (ATP)</em>、<em>Account Creation Fraud Prevention (ACFP)</em>。AWS Marketplace（付費）來自 Fortinet / F5 / Imperva / Cyber Security Cloud 等。Marketplace 規則 <em>不公開 rule logic</em>、攔錯時只能用 sampled request 反推、debug 比 AWS Managed 困難。</p>
<p><strong>Custom Rule（statement + 條件）</strong>：Custom Rule 用 <em>statement</em>（match condition + transformation）組合：IP Set match、Geo match、Regex Pattern Set、Size constraint、SQL injection match、XSS match、String match（含 header / body / URI / query 各部位）。複雜條件用 AND / OR / NOT 組合、上限是每 Web ACL 5,000 Web ACL Capacity Units（WCU）— 規則越複雜 WCU 越高、Marketplace 大型 rule group 可能直接吃掉一半 budget。</p>
<p><strong>IP Set / Regex Pattern Set</strong>：IP Set 存 IPv4 / IPv6 CIDR 清單、Regex Pattern Set 存正則表達式集合。兩者都是 <em>獨立資源</em>、可在多個 Web ACL 引用、單獨更新（不必動 Web ACL 結構）。實務上 threat intel feed 應該 push 到 IP Set、用 Lambda 自動 sync、不用手動加。</p>
<p><strong>Rate-based Rule</strong>：限制 <em>單一 aggregate key</em> 在滾動 5 分鐘窗口內的請求數、超過 threshold 觸發 action。aggregate key 可選 <em>IP</em>、<em>Forwarded-IP</em>（看 X-Forwarded-For）、<em>HTTP method</em>、<em>URI path</em>、<em>Header</em>、<em>Cookie</em> 或組合。關鍵陷阱：<strong>CloudFront 後 origin ALB 必須用 Forwarded-IP</strong>、否則 Rate-based Rule 看到的全是 CloudFront 邊緣節點 IP、所有真實使用者被合併計算、要嘛全擋要嘛全放。</p>
<p><strong>Logging 必須手動開</strong>：Web ACL log 預設關閉、destination 三選一：<em>Kinesis Data Firehose</em>（推到 S3 / Splunk / Datadog）、<em>CloudWatch Logs</em>（簡單但貴）、<em>S3</em>（直寫、需自己處理 partition）。production 通常走 Kinesis Firehose → S3 + Athena query、配合 SIEM 拉 alert。沒開 log 等於 <em>攻擊發生時沒證據</em>、事後無法回查。</p>
<p><strong>跟 AWS Shield 整合</strong>：所有 AWS WAF 客戶自動含 <em>Shield Standard</em>（L3/L4 DDoS、免費、SYN flood / UDP reflection 等基礎防護）。<em>Shield Advanced</em> 是付費 add-on（$3,000/month per organization + per-resource fee + data transfer out fee）、提供 <em>24/7 DRT（DDoS Response Team）</em>、cost protection（DDoS 期間 AWS service scaling fee 補貼）、進階分析。一般客戶 Shield Standard 已足夠；金融 / 政府 / 高知名度品牌需要 Shield Advanced 的 DRT 與 cost protection。</p>
<p><strong>Lambda@Edge / CloudFront Functions 補位</strong>：當 WAF rule statement 表達不出複雜業務邏輯（geofencing + business hour + user tier 組合、JWT claim 解析後判斷 routing）、用 <em>Lambda@Edge</em>（Node.js / Python、跑在 CloudFront 邊緣節點、4 個 phase：viewer-request / origin-request / origin-response / viewer-response）或 <em>CloudFront Functions</em>（純 JS、輕量、低延遲、只在 viewer-request / viewer-response）補位。Lambda@Edge 適合複雜邏輯、CloudFront Functions 適合 header rewrite / 簡單 routing；兩者都不能取代 WAF managed rule、但補位 WAF 表達力上限。</p>
<p><strong>跟 <a href="/blog/backend/07-security-data-protection/vendors/aws-iam/" data-link-title="AWS IAM" data-link-desc="AWS cloud resource permission engine、Role / Policy / STS、跨帳號信任邊界與 OIDC federation 的核心">AWS IAM</a> 整合</strong>：誰能改 Web ACL 是 <em>IAM policy</em> 決定（<code>wafv2:CreateWebACL</code>、<code>wafv2:UpdateWebACL</code>、<code>wafv2:AssociateWebACL</code>、<code>wafv2:UpdateRuleGroup</code> 等 action）。production 標準配置：admin role 才能 update、CI / 開發者只有 <code>wafv2:Get*</code> / <code>List*</code> 用來 verify、敏感變更走 Change Management + CloudTrail <a href="/blog/backend/knowledge-cards/audit-log/" data-link-title="Audit Log" data-link-desc="說明高風險操作如何留下可追溯、可稽核的紀錄">audit log</a>。</p>
<h2 id="核心取捨表">核心取捨表</h2>
<table>
  <thead>
      <tr>
          <th>取捨維度</th>
          <th>AWS WAF</th>
          <th>Cloudflare WAF</th>
          <th>Fastly Next-Gen WAF</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>部署位置</td>
          <td>AWS 內部（ALB / CloudFront / API Gateway 前）</td>
          <td>Cloudflare global edge（300+ POP）</td>
          <td>Fastly global edge / 各 origin agent</td>
      </tr>
      <tr>
          <td>Origin 適配</td>
          <td>強耦合 — origin 必須在 AWS</td>
          <td>強中立 — 任意雲 / on-prem</td>
          <td>強中立 — Fastly CDN / 任何 origin</td>
      </tr>
      <tr>
          <td>計費模型</td>
          <td>per-ACL + per-rule + per-request</td>
          <td>plan tier（Free / Pro / Business / Enterprise）</td>
          <td>request-based + plan</td>
      </tr>
      <tr>
          <td>Managed Rule</td>
          <td>AWS Managed（免費）+ Marketplace（付費、logic 不透明）</td>
          <td>Cloudflare Managed + OWASP CRS + Exposed Credentials</td>
          <td>Signal-based（語意、低 FP、不靠 regex signature）</td>
      </tr>
      <tr>
          <td>Rate Limiting</td>
          <td>Rate-based Rule（含在 WAF、5 分鐘 window）</td>
          <td>Rate Limiting 獨立 product</td>
          <td>inline rate limit + Signal</td>
      </tr>
      <tr>
          <td>Bot 對應</td>
          <td>AWS WAF Bot Control（add-on、付費）</td>
          <td>Bot Management（Pro+ add-on）</td>
          <td>NG-WAF behavioral bot detection</td>
      </tr>
      <tr>
          <td>DDoS 內建</td>
          <td>Shield Standard 自動含（L3/L4）、Advanced 加價</td>
          <td>同套餐內建</td>
          <td>內建 + Fastly DDoS</td>
      </tr>
      <tr>
          <td>控制面整合</td>
          <td>跟 IAM / CloudTrail / Shield / VPC 同 plane</td>
          <td>Cloudflare 控制面、跟其他 Cloudflare 產品同套</td>
          <td>Fastly 控制面、agent 跑在 origin</td>
      </tr>
      <tr>
          <td>學習曲線</td>
          <td>中陡 — Web ACL + WCU + scope + IAM policy 多軌</td>
          <td>中 — UI / Rules language / Terraform 完整</td>
          <td>中 — agent 安裝 + Signal 語意設定</td>
      </tr>
      <tr>
          <td>適合場景</td>
          <td>AWS-heavy、ALB / CloudFront 是主要入口</td>
          <td>Multi-cloud / on-prem origin、要整套 edge security</td>
          <td>高 FP 容忍度低、業務有 schema、想避 regex signature</td>
      </tr>
  </tbody>
</table>
<p>選 AWS WAF 的核心訴求：<em>AWS-internal app</em> + origin 跑在 ALB / CloudFront / API Gateway / App Runner 後 + 想跟 IAM / CloudTrail / Shield 同套 control plane 治理。Origin 不在 AWS、或要 <em>把攻擊擋在抵達雲之前</em>、應該走 <a href="/blog/backend/07-security-data-protection/vendors/cloudflare-waf/" data-link-title="Cloudflare WAF" data-link-desc="Edge WAF &#43; DDoS &#43; Bot management 整合套件、global anycast 網路、控制面信任邊界跟客戶側補強的對照">Cloudflare WAF</a> 或 <a href="/blog/backend/07-security-data-protection/vendors/fastly-ngwaf/" data-link-title="Fastly Next-Gen WAF" data-link-desc="Behavioral / 語意分析 WAF（前 Signal Sciences）、低 false positive、Edge / Agent / Cloud 三種部署模型、API &#43; ATO &#43; Bot 一體">Fastly NG-WAF</a>。</p>
<h2 id="進階主題">進階主題</h2>
<p><strong>AWS WAF Bot Control（add-on）</strong>：付費 add-on、用 AWS 自家 bot fingerprinting 區分 <em>verified bot</em>（搜尋引擎）/ <em>signal: automated browser</em>（headless Chrome 等）/ <em>signal: known bot</em>（已標記 IoT / scraper），給每個請求 <em>bot category label</em>。Custom Rule 在 label 上做條件、決定 Block / Challenge / CAPTCHA。比 user-agent 過濾準很多、但要額外計費（per-request）。Bot Control 有兩個 inspection level：<em>common</em>（便宜、基礎指紋）與 <em>targeted</em>（貴、含 JavaScript challenge、CAPTCHA、token-based）。</p>
<p><strong>Fraud Control（ATP / ACFP）</strong>：<em>Account Takeover Prevention</em>（ATP）跟 <em>Account Creation Fraud Prevention</em>（ACFP）是 Managed Rule Group 的特殊類別、需付費啟用。ATP 看登入端點的 credential stuffing、ACFP 看註冊端點的 bot signup。兩者都用 AWS 自家 threat intel（被竊憑證 list、行為模型）打 label、客戶側用 Custom Rule 處理。對有 login / signup 端點的 SaaS / 電商有價值、純內部後台不必開。</p>
<p><strong>CAPTCHA / Challenge</strong>：AWS WAF 內建 CAPTCHA puzzle 與 silent JS Challenge、可在 rule action 直接呼叫。Challenge 在客戶端執行 proof-of-work、合法瀏覽器無感、headless 工具卡住；CAPTCHA 是視覺題、人類解、bot 不會。Production 標準做法：Bot Control 給 label → Custom Rule 看 label → likely bot 走 Challenge、known bad 走 Block、人類流量直接 Allow。</p>
<p><strong>ACM Private CA + WAF 對 mTLS</strong>：AWS WAF 本身不做 mTLS 驗證、mTLS 是 ALB / API Gateway / CloudFront 自己的功能（搭配 <a href="/blog/backend/07-security-data-protection/vendors/aws-acm/" data-link-title="AWS ACM" data-link-desc="AWS-managed certificate provisioning、DNS validation &#43; auto-renewal、整合 ELB / CloudFront / API Gateway、Private CA 後端">AWS ACM</a> Private CA 簽發 client cert）。WAF 在 mTLS 完成後才看 L7 流量、可以用 <em>HTTP header match</em>（mTLS 後 ALB 注入 client cert 資訊到 header）做進一步 rule。Internal API 用 mTLS + WAF 是常見組合。</p>
<p><strong>Lambda@Edge 補 inline business logic</strong>：複雜判斷（user tier × geo × business hour × A/B test）WAF rule statement 表達不出來、用 Lambda@Edge 在 <em>viewer-request</em> phase 解析 JWT、查 internal risk API、回 response header 給 WAF 後續判斷。代價：Lambda@Edge 部署只能在 us-east-1、code 更新傳播到全球 edge 要幾分鐘、debug 是分散式 CloudWatch Logs。</p>
<h2 id="排錯與失敗快速判讀">排錯與失敗快速判讀</h2>
<ul>
<li><strong>Web ACL 掛不上 CloudFront</strong>：scope 配成 Regional、CloudFront 拒絕 attach — Web ACL 必須在 us-east-1 + CloudFront scope 才能掛 CloudFront；ALB / API Gateway 反過來只能掛 Regional scope</li>
<li><strong>Rate-based Rule 全擋 / 全放</strong>：CloudFront 後 origin 看到全部都是 CloudFront IP、aggregate key 沒換 Forwarded-IP — 改用 <em>Forwarded-IP</em>（X-Forwarded-For）作 aggregate key，並設 Fallback behavior</li>
<li><strong>Managed Rule Group 誤殺合法請求</strong>：CRS High sensitivity 開後 file upload / rich text editor 端點被 Block — 找 sampled request 看 rule_id、用 <em>Scope-down statement</em> 限定該 rule 在某 path 不執行、或開該 rule 為 Count、不要關整個 group</li>
<li><strong>Marketplace Rule 攔不明流量</strong>：Marketplace rule logic 不公開、sampled request 看到 rule label 但不知為何 — 切該 rule 到 Count mode 觀察、若無 attack 跡象換 AWS Managed 同類 rule</li>
<li><strong>WCU 超限</strong>：Web ACL 上限 5,000 WCU、加 Marketplace + 多個 AWS Managed 就會爆 — 看 <em>Capacity Used</em>、移除重疊 rule、把 Custom Rule 表達式簡化（少用 <em>transformation chain</em>）</li>
<li><strong>Logging 沒設 / 設錯</strong>：事件發生後沒有完整 log 可查、只有 sampled request（保留 3 小時、機率抽樣） — 必開 <em>Logging configuration</em> 到 Kinesis Firehose / S3 / CloudWatch Logs、確認 IAM role 有 firehose:PutRecord 權限</li>
<li><strong>IAM 權限過寬</strong>：CI account 拿到 <code>wafv2:*</code> 整 zone 都能改 — 收斂到 <code>wafv2:Get*</code> / <code>List*</code> 唯讀、敏感寫入限 admin role + MFA + Change Management</li>
<li><strong>跨 region 部署 drift</strong>：手動在 console 改 us-east-1 ACL、其他 region 沒同步 — 用 Terraform / CloudFormation IaC 管理、PR review、CI plan 檢查 drift</li>
<li><strong>Shield Standard 不夠擋大型 L7 DDoS</strong>：Standard 只防 L3/L4、L7 attack 靠 WAF Rate-based Rule + Bot Control — 若反覆遭遇大型 L7 DDoS、評估 Shield Advanced 的 DRT + cost protection 是否值得</li>
</ul>
<h2 id="何時改走其他服務">何時改走其他服務</h2>
<table>
  <thead>
      <tr>
          <th>需求形狀</th>
          <th>改走</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>Multi-cloud / on-prem origin</td>
          <td><a href="/blog/backend/07-security-data-protection/vendors/cloudflare-waf/" data-link-title="Cloudflare WAF" data-link-desc="Edge WAF &#43; DDoS &#43; Bot management 整合套件、global anycast 網路、控制面信任邊界跟客戶側補強的對照">Cloudflare WAF</a></td>
      </tr>
      <tr>
          <td>低 FP 容忍 / 業務有 schema</td>
          <td><a href="/blog/backend/07-security-data-protection/vendors/fastly-ngwaf/" data-link-title="Fastly Next-Gen WAF" data-link-desc="Behavioral / 語意分析 WAF（前 Signal Sciences）、低 false positive、Edge / Agent / Cloud 三種部署模型、API &#43; ATO &#43; Bot 一體">Fastly Next-Gen WAF</a></td>
      </tr>
      <tr>
          <td>L3/L4 DDoS 進階防護</td>
          <td>AWS Shield Advanced / Cloudflare Magic Transit</td>
      </tr>
      <tr>
          <td>純內部 mTLS / east-west</td>
          <td><a href="/blog/backend/07-security-data-protection/vendors/spire/" data-link-title="SPIRE" data-link-desc="SPIFFE Runtime Environment、attested workload identity、short-lived SVID &#43; Trust Bundle、跨組織 federation">SPIRE</a> + service mesh</td>
      </tr>
      <tr>
          <td>Cert lifecycle</td>
          <td><a href="/blog/backend/07-security-data-protection/vendors/aws-acm/" data-link-title="AWS ACM" data-link-desc="AWS-managed certificate provisioning、DNS validation &#43; auto-renewal、整合 ELB / CloudFront / API Gateway、Private CA 後端">AWS ACM</a> / <a href="/blog/backend/07-security-data-protection/vendors/cert-manager/" data-link-title="cert-manager" data-link-desc="K8s 原生 certificate lifecycle automation、支援 Let&#39;s Encrypt / Vault PKI / Venafi 等多 issuer、auto-renewal &#43; Challenge solver">cert-manager</a></td>
      </tr>
      <tr>
          <td>Secrets / API key</td>
          <td><a href="/blog/backend/07-security-data-protection/vendors/aws-secrets-manager/" data-link-title="AWS Secrets Manager" data-link-desc="AWS 原生 secret store &#43; 內建 RDS / Redshift rotation Lambda、Resource Policy 跨帳號共享、KMS 加密">AWS Secrets Manager</a> / <a href="/blog/backend/07-security-data-protection/vendors/hashicorp-vault/" data-link-title="HashiCorp Vault" data-link-desc="Self-hosted secret management 與 dynamic credential / encryption-as-a-service / PKI engine、跨雲跨環境的 secret 控制面">Vault</a></td>
      </tr>
      <tr>
          <td>複雜業務邏輯 inline 處理</td>
          <td>Lambda@Edge / CloudFront Functions</td>
      </tr>
  </tbody>
</table>
<h2 id="不在本頁內的主題">不在本頁內的主題</h2>
<ul>
<li>AWS WAF Classic（v1）的遷移細節 — 本頁全以 WAFv2 為準</li>
<li>完整 WCU 計算規則與每個 statement 的 WCU cost reference</li>
<li>Marketplace 第三方 rule group 各家功能矩陣</li>
<li>AWS WAF 在 GovCloud / China region 的差異</li>
<li>Bot Control / ATP / ACFP 完整 label schema reference</li>
</ul>
<h2 id="案例回寫">案例回寫</h2>
<p>AWS WAF 在 07 案例庫無直接 vendor-level case、但多個 case 對應 WAF 作為 <em>修補窗口期臨時控制</em> 與 <em>entry point 治理</em> 的角色：</p>
<table>
  <thead>
      <tr>
          <th>案例</th>
          <th>跟 AWS WAF 的關係</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td><a href="/blog/backend/07-security-data-protection/red-team/cases/supply-chain/log4shell-cve-2021-44228-component-chain/" data-link-title="7.R7.2.7 Log4Shell 2021：共用元件風險與修補鏈" data-link-desc="共用元件漏洞如何同步影響多服務，並迫使團隊建立依賴治理 workflow">Log4Shell CVE-2021-44228</a></td>
          <td>對照啟示 — AWS Managed Rule Group 當時推出 Log4Shell 規則作為 emergency mitigation；但 exploitation 通過 WAF 後在後端執行，不能單靠 WAF 防 supply chain</td>
      </tr>
      <tr>
          <td><a href="/blog/backend/07-security-data-protection/red-team/cases/edge-exposure/citrix-bleed-2023-session-hijack/" data-link-title="7.R7.3.3 Citrix Bleed 2023：會話被劫持與重放風險" data-link-desc="邊界設備會話資料外洩後，如何演變成帳號與服務風險">Citrix Bleed 2023 Session Hijack</a></td>
          <td>對照啟示 — WAF 攔不住 edge appliance zero-day、需要「修補 + session 失效 + 異常清查」三同步</td>
      </tr>
      <tr>
          <td><a href="/blog/backend/07-security-data-protection/red-team/cases/edge-exposure/fortinet-cve-2023-27997-sslvpn-overflow/" data-link-title="7.R7.3.21 Fortinet 2023：CVE-2023-27997 SSL-VPN 溢位" data-link-desc="SSL-VPN 漏洞在邊界設備上會放大大規模掃描與利用速度">Fortinet SSL-VPN CVE 2023-27997</a></td>
          <td>對照啟示 — vendor patch 前的臨時 AWS WAF Custom Rule + Shield Advanced + Origin lockdown 是修補窗口期動作</td>
      </tr>
      <tr>
          <td><a href="/blog/backend/07-security-data-protection/entrypoint-and-server-protection/" data-link-title="7.3 入口治理與伺服器防護" data-link-desc="以問題驅動方式整理對外入口、管理平面與伺服器邊界">7.3 入口治理與伺服器防護</a></td>
          <td>AWS WAF 是 entry point protection 的工具、章節原則對應 WAF rule lifecycle 治理（Count → Block、IaC、IAM 收斂）</td>
      </tr>
  </tbody>
</table>
<h2 id="下一步路由">下一步路由</h2>
<ul>
<li>上游：<a href="/blog/backend/07-security-data-protection/entrypoint-and-server-protection/" data-link-title="7.3 入口治理與伺服器防護" data-link-desc="以問題驅動方式整理對外入口、管理平面與伺服器邊界">7.3 入口治理與伺服器防護</a></li>
<li>平行：<a href="/blog/backend/07-security-data-protection/vendors/cloudflare-waf/" data-link-title="Cloudflare WAF" data-link-desc="Edge WAF &#43; DDoS &#43; Bot management 整合套件、global anycast 網路、控制面信任邊界跟客戶側補強的對照">Cloudflare WAF</a>、<a href="/blog/backend/07-security-data-protection/vendors/fastly-ngwaf/" data-link-title="Fastly Next-Gen WAF" data-link-desc="Behavioral / 語意分析 WAF（前 Signal Sciences）、低 false positive、Edge / Agent / Cloud 三種部署模型、API &#43; ATO &#43; Bot 一體">Fastly Next-Gen WAF</a></li>
<li>下游：<a href="/blog/backend/07-security-data-protection/data-protection-and-masking-governance/" data-link-title="7.4 資料保護與遮罩治理" data-link-desc="以問題驅動方式整理資料分級、遮罩、匯出與備份治理">7.4 資料保護與遮罩治理</a>（WAF block 不夠時、資料層也要遮罩）</li>
<li>跨類：<a href="/blog/backend/07-security-data-protection/vendors/aws-iam/" data-link-title="AWS IAM" data-link-desc="AWS cloud resource permission engine、Role / Policy / STS、跨帳號信任邊界與 OIDC federation 的核心">AWS IAM</a>（誰能改 Web ACL）、<a href="/blog/backend/07-security-data-protection/vendors/aws-acm/" data-link-title="AWS ACM" data-link-desc="AWS-managed certificate provisioning、DNS validation &#43; auto-renewal、整合 ELB / CloudFront / API Gateway、Private CA 後端">AWS ACM</a>（mTLS client cert）、<a href="/blog/backend/07-security-data-protection/vendors/aws-secrets-manager/" data-link-title="AWS Secrets Manager" data-link-desc="AWS 原生 secret store &#43; 內建 RDS / Redshift rotation Lambda、Resource Policy 跨帳號共享、KMS 加密">AWS Secrets Manager</a>（rule update 用的 API key）</li>
<li>跨模組：<a href="/blog/backend/08-incident-response/vendors/" data-link-title="事故處理 Vendor 清單" data-link-desc="規劃 on-call、incident response、status page 與 postmortem 工具的服務頁撰寫順序與判準">8 事故處理 vendor 清單</a>（WAF block 事件如何 routing 進 IR）</li>
<li>官方：<a href="https://docs.aws.amazon.com/waf/latest/developerguide/">AWS WAF Documentation</a></li>
</ul>
]]></content:encoded></item></channel></rss>