← 記事一覧へ

AWS WAF と AWS Shieldについてざっくり

AWS WAF と AWS Shield

AWS公式ドキュメントに基づいた、AWS WAF と AWS Shield の解説記事。 両者の違い、使い分け、組み合わせパターンまでをまとめる。

参考: AWS WAF or AWS Shield? / How AWS Shield and Shield Advanced work / AWS Shield Advanced capabilities and options


1. はじめに:なぜ2つのサービスがあるのか

AWSにおけるWebアプリケーション保護は、攻撃が どのネットワーク階層(OSIレイヤー)で発生するか によって担当サービスが分かれる。

レイヤー攻撃例担当サービス
L3(ネットワーク層)ICMP/UDP flood、ボリューメトリック攻撃AWS Shield
L4(トランスポート層)TCP SYN flood、UDP reflectionAWS Shield
L7(アプリケーション層)SQL Injection、XSS、HTTP floodAWS WAF

公式の整理:

AWS Shield Standard and AWS Shield Advanced provide protections against Distributed Denial of Service (DDoS) attacks for AWS resources at the network and transport layers (layer 3 and 4) and the application layer (layer 7).

つまり Shield が下位層、WAF が上位層 を主に守る分担になっている。両者を併用することで、多層防御 (defense in depth) が成立する。


2. AWS Shield

2.1 概要

AWS Shield は マネージドDDoS保護サービス。 すべてのAWSアカウントに Shield Standard が無償で自動有効化されており、より高度な防御が必要な場合に有償の Shield Advanced を追加契約する2階建て構造。

2.2 Shield が検知する攻撃クラス(公式分類)

公式ドキュメントは検知対象を3クラスに整理している:

  1. Network volumetric attacks (Layer 3) ネットワーク容量を飽和させてサービス拒否を狙う攻撃。
  2. Network protocol attacks (Layer 4) プロトコルを悪用する攻撃。代表例が TCP SYN flood で、サーバー・ロードバランサー・ファイアウォールの接続状態テーブルを枯渇させる。
  3. Application layer attacks (Layer 7) 正規に見えるリクエスト(例: Webリクエストフラッド)でアプリを過負荷にする攻撃。

2.3 Shield Standard

  • すべてのAWS顧客に追加料金なしで自動適用
  • 保護対象: Amazon EC2、ELB、CloudFront、Route 53 などのAWSサービス
  • 設定不要、常時稼働(always-on)
  • 一般的なネットワーク層・トランスポート層 DDoS を自動緩和

2.4 Shield Advanced

サブスクリプション契約で利用する有償サービス。Standardの保護に加え、以下の機能が追加される。

機能内容
AWS WAF統合Shield Advanced保護対象リソースの標準WAF費用(Web ACL、ルール、最大1,500 WCU・5,000万リクエスト/月まで)をカバー
自動アプリ層DDoS緩和既知のDDoSソースに対するWAFレート制限と、検知時のカスタム保護を自動適用
ヘルスベース検知Route 53ヘルスチェックと連携し、誤検知低減と早期検知を実現
保護グループリソースを論理グループ化し、グループ単位での検知・緩和
詳細な可視化リアルタイムメトリクス、攻撃レポート、CloudWatchメトリクス
AWS Firewall Manager連携複数アカウントへのShield Advanced保護とWAFルールを一元展開
AWS Shield Response Team (SRT)DDoS攻撃時に24/7サポートを受けられる専門チーム(Business/Enterprise Support契約が必要)
プロアクティブエンゲージメントヘルスチェックの異常時にSRTから直接連絡
コスト保護攻撃起因のデータ転送量などのスパイクに対するサービスクレジット

2.5 Shield Standard と Advanced の比較

項目StandardAdvanced
料金無償(全AWSアカウントに自動付与)月額固定 + 従量課金
保護対象全AWSサービス明示的に登録したリソース
L3/L4 DDoS防御自動自動(より高度)
L7 DDoS自動緩和なしあり(WAF連携)
SRTサポートなしあり
コスト保護なしあり
詳細レポート限定的完全

3. AWS WAF

3.1 概要

AWS WAF は Web Application Firewall。HTTP/HTTPSリクエスト(L7)を検査し、不正なリクエストを ブロック / 許可 / カウント / Captcha などのアクションで制御する。

3.2 動作レイヤーと統合先サービス

  • 動作レイヤー: アプリケーション層(L7)のみ
  • 検査単位: リクエスト単位(パケット単位ではない)
  • デプロイ先:
    • Amazon CloudFront
    • Application Load Balancer (ALB)
    • Amazon API Gateway
    • AWS AppSync
    • Amazon Cognito user pool
    • AWS App Runner
    • AWS Verified Access
    • AWS Amplify

3.3 主要コンポーネント

Web ACL(Access Control List)

WAFの中核。1つ以上のルールを束ねた ルールセット で、AWSリソースに関連付けて利用する。 未マッチリクエストに対する デフォルトアクション(allow / block)を持つ。

ルール(Rule)

リクエストの 検査条件 + マッチ時のアクション を定義。 条件はIPアドレス、HTTPヘッダー、クエリ文字列、ボディ、地理情報など多岐にわたる。

ルールグループ(Rule Group)

複数ルールをまとめた再利用可能なユニット。以下の種類がある:

  • Self-managed(自前で作成)
  • AWS Managed Rules(AWS提供)
  • AWS Marketplace Managed Rules(サードパーティ)
  • Shield Advanced / Firewall Manager 所有

3.4 AWS Managed Rules(公式マネージドルール)

AWSが提供する事前定義済みルール群。OWASP Top 10 や PCI / HIPAA などの規制対応 を支援する。

主要なマネージドルールグループ:

ルールグループ用途
Core rule set一般的なWeb脆弱性への基本防御
Known bad inputs既知の不正リクエストパターン
SQL databaseSQLインジェクション対策
Linux operating systemLFI(ローカルファイルインクルージョン)等
PHP applicationPHP固有の攻撃パターン
WordPress applicationWordPress固有の攻撃パターン
Amazon IP reputation list既知の不正IP
Anonymous IP listVPN/プロキシ/Tor
Bot Control(追加料金)悪性Bot対策(スクレイピング、スキャナー等)
Account Takeover Prevention (ATP)(追加料金)クレデンシャルスタッフィング対策
Account Creation Fraud Prevention (ACFP)(追加料金)不正アカウント作成対策

注意: マネージドルールの自動更新により新たな脅威にも追従できるが、ルール詳細はAWS側で非公開(知財・回避防止のため)。本番適用前に 必ず非本番環境でテスト すること(公式推奨)。

3.5 カスタムルールの主要な条件

条件タイプ用途例
IPセット特定IP/CIDRの許可・拒否
地理情報マッチ国単位のアクセス制御(例: 日本以外をブロック)
レートベースIP単位での流量制御(例: 5分間で1000リクエスト超でブロック)
サイズ制約ボディ・ヘッダーのサイズ制限
SQLインジェクション検査クエリ・ボディ内のSQL文検出
XSS検査スクリプトタグ検出
正規表現マッチ任意パターン
ラベル他ルールの判定結果を引き回し

3.6 高度な機能

  • Captcha / Challenge: 自動化されたアクセスをふるい落とす
  • JavaScript SDK / Mobile SDK: クライアント側でチャレンジトークンを発行
  • CloudWatchメトリクス連携: ブロック数・許可数・ルール別効果の可視化
  • ログ配信: CloudWatch Logs / S3 / Kinesis Data Firehose

4. WAF vs Shield ─ 詳細比較

公式の比較表を整理:

比較軸AWS WAFAWS Shield
主目的Webアプリの脆弱性悪用(SQLi、XSS等)からの保護DDoS攻撃(SYN flood、UDP flood等)からの保護
動作レイヤーL7(アプリケーション層)L3/L4 中心、Advanced は L7 にも対応
デプロイ明示的にWeb ACLを作成・関連付けStandard は全アカウント自動。Advanced は明示契約
カスタマイズ高い(自前ルール + マネージドルール)限定的(Advanced で一部設定可能)
マネージドルールあり(AWS / Marketplace)該当機能なし
料金モデル従量制(Web ACL数 × ルール数 × リクエスト数)Standard: 無償 / Advanced: 月額 + 従量
攻撃対応チームなしAdvanced で SRT(24/7)に連絡可能
リアルタイム監視あり(CloudWatch連携)あり(Advanced はより詳細)
トラフィック検査リクエストレベル(HTTP内容)パケットレベル(ヘッダー、流量パターン)

5. 使い分けと組み合わせパターン

5.1 ケース別の選択指針

守りたいもの主に使うサービス
SQLインジェクション、XSS等の脆弱性悪用WAF
海外IPからのアクセス制限WAF(Geo match rule)
単一IPからの過剰リクエストWAF(Rate-based rule)
Bot / スクレイピング対策WAF(Bot Control)
クレデンシャルスタッフィングWAF(ATP)
一般的なDDoS攻撃(SYN flood等)Shield Standard(自動)
大規模・高度なDDoS攻撃、24/7サポートShield Advanced
L7 DDoSの自動緩和Shield Advanced + WAF

5.2 推奨構成(多層防御)

公式が推奨する多層防御構成:

                インターネット
                     │
                     ▼
            ┌─────────────────┐
            │  AWS Shield     │  ← L3/L4 DDoS をネットワークエッジで遮断
            │  (Standard/Adv) │     (SYN flood, UDP flood 等)
            └────────┬────────┘
                     │
                     ▼
            ┌─────────────────┐
            │  CloudFront /   │  ← エッジ配信、TLS終端
            │  ALB            │
            └────────┬────────┘
                     │
                     ▼
            ┌─────────────────┐
            │  AWS WAF        │  ← L7 攻撃を検査
            │  (Web ACL)      │     (SQLi, XSS, HTTP flood, Bot 等)
            └────────┬────────┘
                     │
                     ▼
            ┌─────────────────┐
            │  アプリケーション │
            └─────────────────┘

5.3 Shield Advanced と WAF の連携

Shield Advanced を契約すると WAFと密接に連携する:

  • 保護対象リソースの 標準WAF費用がカバー される(1,500 WCU、5,000万リクエスト/月まで)
  • 自動アプリ層DDoS緩和 を有効化すると、Shield Advancedが管理するルールグループ(150 WCU)がWeb ACLに追加され、攻撃検知時に動的にWAFルールを適用
  • Layer 7 Anti-DDoS Amazon Managed Rule group が利用可能

ただし以下は Shield Advanced のカバー対象外:

  • Bot Control、ATP、ACFP などの追加料金マネージドルール
  • CAPTCHAアクション
  • 1,500 WCUを超えるWeb ACL
  • デフォルトボディサイズを超える検査

6. 「海外IPからの大量アクセス」への対処例

実際にありがちな「海外から大量アクセスが来ている」シナリオでの判断フロー:

海外IPから大量アクセス
        │
        ▼
   ┌─ パケット段階で集中(TCP接続できない)
   │  → L3/L4 DDoS の可能性
   │  → Shield に任せる(Advanced を契約していればより堅牢)
   │
   ├─ HTTPリクエストとして大量来る
   │  → L7 DDoS / Bot / スクレイピング
   │  → WAF の Rate-based rule + Bot Control
   │  → 必要なら Shield Advanced の自動L7緩和
   │
   ├─ /login や /signup への試行が多い
   │  → クレデンシャルスタッフィング / アカウント作成詐欺
   │  → WAF ATP / ACFP
   │
   └─ 特定の国からのみ来る
      → WAF の Geographic match rule で地域ブロック

7. コストの考え方

AWS WAF

  • Web ACL: 1つあたり月額固定
  • ルール: ルール数に応じた月額固定
  • リクエスト数: 100万リクエストあたりの従量
  • 追加機能: Bot Control / ATP / ACFP / Captcha は別料金

AWS Shield

  • Standard: 無償
  • Advanced:
    • 月額固定(組織単位の支払いアカウントで一括)
    • データ転送量に応じた従量
    • 保護対象リソースの標準WAF費用は無料に
    • 攻撃時のコストスパイクは サービスクレジット で補填可能

詳細は公式の Shield Pricing と WAF Pricing を参照。


8. まとめ

観点結論
WAFだけでDDoSを防げるかL7 DDoSの一部のみ可能。L3/L4 DDoSはWAFには届かないため不可
ShieldだけでWeb脆弱性を防げるか不可。SQLi/XSS等はWAFが担当
一般的なWebサービスの基本構成Shield Standard(自動)+ WAF で開始
高い可用性が必要な場合Shield Advanced + WAF + Firewall Manager で組織横断防御
多層防御の原則エッジ(Shield)→ 配信層(CloudFront/ALB)→ アプリ前段(WAF)→ アプリ本体

「何の攻撃から守りたいか → どのレイヤーか → どのサービスか」の順で考えると、迷わず構成を選択できる。


参考リンク(公式ドキュメント)