AWS WAFとShieldの違い ― Web攻撃とDDoSの守り分け
WAFは
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 |
|---|---|---|
| 検査の | HTTP・HTTPSの | 届く |
| 防ぐ | SQLインジェクション、 | SYNフラッドなどの |
| 動作を | Web ACLを | Standardは |
| 料金 | Web ACL・ルール・要求の | Standardは |
WAFとShieldはどこで効くか
次の図は、利用者の要求がCloudFrontを通ってEC2のWebサーバに届く構成で、2つが効く場所を示したものです。Shield Standardは、CloudFrontなどのAWSのネットワークの端で、大量の通信を防ぎます。WAFは、Web ACLを付けたリソースに届いたHTTPの要求を、1つずつルールと照合します。
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 |
|---|---|---|
| 申し込み | 不要。 | 必要。 |
| 保護の | 第3・4層の | 第3・4層と、 |
| 第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・セキュリティグループのどこで止まるかが変わります。
- Shield Standard通す量も
形式も 通常の 通信なので、 そのまま 通します。 - AWS WAF通すどの
ルールにも 当たらないので、 Web ACLの 既定の アクションの 「許可」で 通します。 - セキュリティグループ通すALBから
届いた HTTPなので、 許可した 通信と して 通します。
- Shield Standard通す1回だけの
正しい 形の 通信なので、 Shieldは 止めません。 - AWS WAF止めるSQLデータベース用の
マネージドルールグループが、 SQL文の パターンを 検出して ブロックします。 - セキュリティグループ関わらないWAFで
止まるので、 ここまで 届きません。
- Shield Standard止めるトランスポート層の
DDoS攻撃なので、 Shield Standardが 受け止めます。 - AWS WAF関わらないHTTPの
要求に なっていないので、 WAFが 調べる 対象に なりません。 - セキュリティグループ関わらないエッジで
止まるので、 ここまで 届きません。
- Shield Standard通すShield Standardが
受け持つのは ネットワーク層と トランスポート層なので、 この 第7層の 攻撃は WAFに 渡ります。 - AWS WAF止めるレートベースルールが
送信元ごとに 要求を 数え、 上限を 超えた 分を ブロックします。 - セキュリティグループ通す上限までの
要求は、 ALBを 通って EC2に 届きます。
- Shield Standard通す1回の
接続は DDoS攻撃ではないので、 Shieldは 止めません。 - AWS WAF関わらないWAFを
付けたのは CloudFrontなので、 そこを 通らない 通信は 調べません。 - セキュリティグループ止めるALBからの
HTTPしか 許可していないので、 22番ポートへの 接続を 通しません。
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の記事で比較しています。
| サービス | 何を |
|---|---|
| セキュリティグループ | インスタンスごとに、 |
| ネットワークACL | サブネットの |
| Amazon GuardDuty | ログを |
| AWS Firewall Manager | 複数の |
参考にした資料
- AWS「What are AWS WAF, AWS Shield Advanced, AWS Shield network security director and AWS Firewall Manager?」(WAFで守れるリソース、条件の例、Firewall Manager)
- AWS「How AWS WAF works」(Web ACL・ルール・既定のアクション)
- AWS「Rate-based rule high-level settings in AWS WAF」(時間枠と上限)
- AWS「Baseline rule groups」と「Use-case specific rule groups」(コアルールセット、SQLデータベース用)
- AWS「AWS Shield Standard overview」
- AWS「AWS Shield Advanced capabilities and options」と「List of AWS resources that AWS Shield Advanced protects」
- AWS「Managed DDoS event response with Shield Response Team (SRT) support」とAWS「AWS Support FAQs」(SRTの条件と、ビジネスサポートの移行。2026年10月29日に確認)
- AWS「What is Amazon GuardDuty?」
- AWS WAFの料金とAWS Shieldの料金(2026年10月28日に確認)
練習問題(全5問)
正解:AWS WAF
AWS WAFは、
正解:すべての
AWSの
正解:レートベースルール
レートベースルールは、
正解:保護する
Shield Advancedは、
正解:Application Load Balancer
Web ACLを
選んでから「採点する」を押すと、解説つきで答え合わせができます。