ITの教科書検索
入門読了 約13分

AWS WAFとShieldの違い ― Web攻撃とDDoSの守り分け

WAFは要求の中身を検査してSQLインジェクションなどを止め、Shieldは大量の通信によるDDoSを防ぎます。Web ACLの作り方と、StandardとAdvancedの違いも説明します。

目次
  1. WAFとShieldの違い
  2. どこで効くか
  3. AWS WAFの仕組み
  4. Shield StandardとAdvancedの違い
  5. 動かして確かめる:どこで止まるか
  6. 組み合わせ方
  7. 似た名前のサービスとの区別
  8. 練習問題

AWS WAFとAWS Shieldの違いは、検査の対象と防ぐ攻撃

Webサイトを公開すると、SQL文を混ぜた要求や、大量の通信でサーバを止めようとする攻撃を受けることがあります。この2つは攻撃の種類が違うので、AWSでは、WAFとShieldが別々に防ぎます。

AWS WAFは、Webアプリに届くHTTP・HTTPSの要求の中身を検査し、ルールに一致する要求を止めるサービスです。SQLインジェクションのように、1回の要求の中に攻撃が入っているものを止めます。

AWS Shieldは、DDoS攻撃からAWSのリソースを保護するサービスです。SYNフラッドのように、大量の通信や接続でサーバのリソースを使い切らせる攻撃を防ぎます。Shield Standardは、追加料金なしで自動的に動作します。攻撃の仕組みは、SQLインジェクションとXSSの記事とDoS・DDoSの記事で説明しています。

AWS WAFとAWS Shieldの違い(AWS WAF開発者ガイドをもとに作成)
比べる点AWS WAFAWS Shield
検査の対象HTTP・HTTPSの要求の中身届く通信の量と形
防ぐ攻撃の例SQLインジェクション、XSSSYNフラッドなどのDDoS攻撃
動作を始めるときWeb ACLを作り、リソースに付けたときStandardは設定しなくても動作する
料金Web ACL・ルール・要求の数に応じてかかるStandardは追加料金なし

WAFとShieldはどこで効くか

次の図は、利用者の要求がCloudFrontを通ってEC2のWebサーバに届く構成で、2つが効く場所を示したものです。Shield Standardは、CloudFrontなどのAWSのネットワークの端で、大量の通信を防ぎます。WAFは、Web ACLを付けたリソースに届いたHTTPの要求を、1つずつルールと照合します。

利用者要求を送るCloudFront(エッジ)Shield Standard第3・4層通信の量と形残った通信WAF(Web ACL)第7層要求の中身を見る許可した要求ALB振り分けるセキュリティグループEC2ポートと送信元
CloudFrontのエッジでは、Shield Standardが大量の通信を受け止め、届いたHTTPの要求をWAFがルールと照合します。EC2の手前では、セキュリティグループがポートと送信元で通す相手を決めます。

EC2の手前には、VPCの記事で説明したセキュリティグループもあります。セキュリティグループが確認するのは、ポートと送信元です。要求の中身にSQL文が入っているかどうかは確認しません。製品に依らないWAFの検査の方式と限界は、WAFの記事にまとめています。

AWS WAFの仕組み:Web ACL・ルール・既定のアクション

Web ACLとは、ルールをまとめて、保護したいリソースに付ける設定の単位です。Web ACLを付けたリソースは、届いた要求をWAFに渡して検査させます。新しいコンソールでは、Web ACLをprotection packという画面で扱いますが、機能は同じです。

ルールは、どのような要求を探すかという条件と、見つけたときのアクションの組み合わせです。条件には、送信元のIPアドレスや国・ヘッダーの値・要求の長さなどを使えます。アクションには、許可・ブロック・カウントと、CAPTCHAやチャレンジによる確認があります。

どのルールにも一致しなかった要求には、Web ACLの既定のアクションを適用します。公開のWebサイトなら、既定を許可にし、攻撃の要求だけをルールで止めます。ブロックした要求には、403(Forbidden)か、自分で決めた応答を返します。

Web ACLを付けられる代表的なリソースは2つです。CloudFrontのディストリビューションとApplication Load Balancerです。ほかに、API GatewayのREST API・AppSync・Cognitoのユーザープール・App Runner・Amplifyなどもあります。EC2インスタンスに直接付けることはできません。前に置いたALBやCloudFrontに付けます。

マネージドルールグループは、AWSなどが用意したルールのまとまり

ルールを1つずつ書かなくても、AWSや出品者が用意したルールのまとまりを使えます。これをマネージドルールグループと呼びます。AWSのコアルールセットは、OWASP Top 10に挙がるような、よくある脆弱性を狙う要求を防ぐルールを集めたものです。

SQLデータベース用のルールグループは、SQLインジェクションの要求のパターンをブロックします。アプリがSQLのデータベースを使うときに追加します。どちらも、パターンに一致する要求を止める仕組みなので、アプリ側の対策の代わりにはなりません。

レートベースルールは、要求の数で止める

レートベースルールは、届いた要求を送信元のIPアドレスなどのまとまりごとに数えるルールです。多すぎる分を止めます。数える時間枠は、1分・2分・5分・10分から選べます。既定は5分です。

上限は10件から設定できます。超えた分の要求に、アクションを適用します。

レートベースルールのアクションには、許可以外を選びます。新しいルールは、まずカウントにして一致する要求の数を確認してから、ブロックに切り替えられます。こうすると、正規の利用者の要求を止めていないかを先に確認できます。

Shield StandardとShield Advancedの違い

Shield Standardは、すべてのAWSの利用者に、追加料金なしで自動的に適用される保護です。ネットワーク層とトランスポート層の、よく起きるDDoS攻撃を防ぎます。とくにRoute 53・CloudFront・Global Acceleratorは、既知の第3・4層の攻撃から広く保護されます。

Shield Advancedは、申し込んで使う有料の保護です。申し込んだだけでは、何も保護されません。保護するリソースを自分で指定します。指定できるのは、CloudFront・Route 53・Global Accelerator・Elastic IPアドレス・ALBなどです。

Shield StandardとShield Advancedの違い(AWS WAF開発者ガイドをもとに作成)
比べる点Shield StandardShield Advanced
申し込み不要。すべての利用者に自動で適用される必要。保護するリソースを自分で指定する
保護の範囲第3・4層のよくある攻撃第3・4層と、WAFを使う第7層
第7層の自動の緩和なしWAFのルールを自動で追加する
専門チームへの相談なしSRTに攻撃中いつでも相談できる
攻撃で増えた料金補償なしサービスクレジットで補償される場合がある

Shield Advancedの第7層の自動の緩和は、攻撃を検知するとWAFのルールを自動で追加して管理します。攻撃の要求をカウントするかブロックするかは、設定で選べます。SRTは、DDoS攻撃に詳しいAWSのチームです。AWSの開発者ガイドが挙げるSRTの利用条件は、ビジネスサポートかエンタープライズサポートへの加入です(2026-10-29確認)。ビジネスサポートは、2025年12月2日から新規に申し込めなくなりました。ビジネスサポート+への移行が進んでいます。

Route 53のヘルスチェックを使った検知や、複数のリソースをまとめて保護する保護グループも、Advancedの機能です。保護対象のリソースでは、WAFの標準の料金がAdvancedの料金に含まれます。ボット対策のBot ControlやCAPTCHAなどの料金は、別にかかります。

Shield Advancedは1年の契約が必要です。月額の料金と、データ転送の量に応じた料金がかかります。2026年10月28日に料金ページの計算例で確認した月額は、3,000ドルです。同じ日に確認したWAFの計算例では、Web ACL 1つが月5.00ドル、ルール1つが月1.00ドルです。要求100万件ごとに0.60ドルかかります。料金はリージョンによって変わることがあります。

動かして確かめる:攻撃の種類ごとに、どこで止まるか

次の図は、前の節の図と同じ構成です。CloudFrontにWeb ACLを付け、ALBの後ろにEC2を置いています。EC2のセキュリティグループは、ALBからのHTTPだけを許可しています。届く通信の種類を選ぶと、Shield Standard・WAF・セキュリティグループのどこで止まるかが変わります。

ブラウザが、トップページを1回だけ要求します。
  1. Shield Standard通す量も形式も通常の通信なので、そのまま通します。
  2. AWS WAF通すどのルールにも当たらないので、Web ACLの既定のアクションの「許可」で通します。
  3. セキュリティグループ通すALBから届いたHTTPなので、許可した通信として通します。
結果:EC2が要求を受け取り、ページを返します。

SYNフラッドはShieldで止まり、WAFには届きません。SQLインジェクションは、Shieldからは通常の通信に見えるので、WAFが中身を検査して止めます。形式の正しい要求が大量に届く攻撃は、WAFのレートベースルールで数を抑えます。

組み合わせ方:CloudFrontを前に置き、WAFとShieldを重ねる

WAFとShieldは、どちらか一方を選ぶものではなく、重ねて使います。CloudFrontを前に置くと、要求はAWSのネットワークの端で受け付けられます。CloudFrontのディストリビューションは、Shield Standardで第3・4層の既知の攻撃から広く保護されます。

そのCloudFrontにWeb ACLを付けると、要求の中身の検査もオリジンに届く前に完了します。DDoS攻撃を受けやすいサイトでは、さらにShield Advancedで第7層の自動の緩和とSRTの支援を追加します。アカウントが多いときは、Firewall Managerで同じ設定をまとめて適用できます。

どの段階で何を止めるかを決めて設定するのは利用者です。AWSと利用者の責任の分け方は、責任共有モデルの記事で説明しています。WAFの仕組み全般は、ファイアウォールの記事で説明しています。

似た名前のサービスとの区別

セキュリティグループとネットワークACLは、VPCの中で通信を許可するかどうかをポートやアドレスで決めます。Amazon GuardDutyは、通信を止めるサービスではありません。CloudTrailやVPCフローログなどのログを分析し、不審な動きを検知して通知します。脆弱性を検出するのはInspector、機密データを検出するのはMacieです。GuardDutyを含む3つの違いは、GuardDuty・Inspector・Macieの記事で比較しています。

WAF・Shieldと名前の似たサービス(AWS公式ドキュメントをもとに作成)
サービス何をするか
セキュリティグループインスタンスごとに、通すポートと送信元を決める
ネットワークACLサブネットの出入りで、許可と拒否を決める
Amazon GuardDutyログを分析して、不審な動きを検知して通知する
AWS Firewall Manager複数のアカウントのWAFやShield Advancedの設定をまとめて適用する

参考にした資料

練習問題(全5問)

Q1Webサイトの検索欄から、SQL文を混ぜた要求が送られてくる。AWSで、この要求を中身で検知して止めるのに向くサービスはどれ?
Q2AWS Shield Standardの説明として正しいものはどれ?
Q3形式の正しいHTTP要求が、ある送信元から短時間に大量に届く。AWS WAFで、この送信元の要求を上限で止めるルールはどれ?
Q4AWS Shield Advancedについて正しいものはどれ?
Q5AWS WAFのWeb ACLを付けられるリソースとして、AWSの開発者ガイドの一覧にあるものはどれ?

選んでから「採点する」を押すと、解説つきで答え合わせができます。

関連記事

AWSの記事を続けて読む

AWS 全38本中20本目