【境界防御】AWS WAFとAWS ShieldでWebアプリケーションをサイバー攻撃から守る

  • URLをコピーしました!

インターネットへ公開するWebアプリケーションでは、不正なリクエストや脆弱性を狙った攻撃、DDoS攻撃など、さまざまな脅威への対策が必要です。

AWSでは、こうしたWebアプリケーションへの攻撃を防御する代表的なサービスとして、
AWS WAFAWS Shieldが提供されています。

どちらも「Webサービスを攻撃から守る」という点では似ていますが、担当する防御領域は異なります。

AWS WAF
Webリクエストの内容を検査し、不正なアクセスを許可・拒否する

AWS Shield
DDoS攻撃からAWSリソースを保護する

SAA(AWS Certified Solutions Architect – Associate)では、WAFとShieldの機能を暗記するだけでなく、「どのような攻撃を防ぎたいのか」から適切なサービスを判断できることが重要です。

本記事では、AWS WAFとAWS Shieldの仕組みや違い、CloudFrontやApplication Load Balancer(ALB)と組み合わせた代表的な防御構成まで解説します。

目次

📚 SAA試験対策ボックス

試験頻出度★★★★☆
重要度★★★★★
関連分野セキュアなアーキテクチャの設計 / Webアプリケーション保護 / DDoS対策
重要キーワードAWS WAF / Web ACL / AWS Managed Rules / Rate-based Rule / AWS Shield Standard / AWS Shield Advanced / CloudFront / ALB

この記事で覚えること

  • AWS WAFとAWS Shieldの役割の違い
  • Web ACLとWAFルールの関係
  • AWS Managed Rulesの役割
  • レートベースルールによる大量リクエスト対策
  • Shield StandardとShield Advancedの違い
  • CloudFront・ALB・WAF・Shieldを組み合わせた防御構成
  • SAAでWAFとShieldをどう使い分けるか

AWS WAFとは?

AWS WAF(Web Application Firewall)は、Webアプリケーションへ送られてくるHTTP/HTTPSリクエストを検査し、設定したルールに基づいてアクセスを制御するサービスです。

通常のファイアウォールがIPアドレスやポート番号などを基準に通信を制御するのに対し、WAFではWebリクエストの内容を確認して制御できます。

例えば、次のような条件を利用できます。

  • 送信元IPアドレス
  • HTTPヘッダー
  • URIパス
  • クエリ文字列
  • リクエスト本文
  • リクエスト数
  • 攻撃パターンに一致する文字列

これらの条件を利用することで、Webアプリケーションに到達する前に不正なリクエストをブロックできます。

AWS WAFはどのような攻撃を防ぐ?

AWS WAFは、Webアプリケーションレイヤーを狙った攻撃への対策に利用できます。

代表的な例として、次のような攻撃があります。

  • SQLインジェクション
  • クロスサイトスクリプティング(XSS)
  • 悪意のあるIPアドレスからのアクセス
  • 特定地域からの不要なアクセス
  • 大量のWebリクエスト
  • 既知の攻撃パターンを含むリクエスト

覚え方

AWS WAFは「HTTP/HTTPSリクエストの中身を見る警備員」と考えると分かりやすいでしょう。

AWS WAFの基本構成

AWS WAFでは、主にWeb ACL(Web Access Control List)ルールを組み合わせてアクセスを制御します。

基本的なイメージは次のとおりです。


ユーザー
   ↓
Internet
   ↓
AWS WAF
   │
   ├─ Rule 1:SQLインジェクションを検査
   ├─ Rule 2:特定IPをブロック
   ├─ Rule 3:大量アクセスを検査
   │
   ↓
CloudFront / ALBなど
   ↓
Web Application

AWS WAFでは、複数のルールをWeb ACLへ登録し、そのWeb ACLを保護対象となるAWSリソースへ関連付けます。

Web ACLとは?

Web ACLは、AWS WAFで使用するアクセス制御ルールをまとめたものです。

Web ACLには複数のルールを設定できます。


Web ACL

├── Rule 1:SQLインジェクション対策
├── Rule 2:XSS対策
├── Rule 3:特定IPアドレスを拒否
└── Rule 4:大量リクエストを制御

リクエストが送信されると、AWS WAFがWeb ACLに設定されたルールを評価します。

ルールの評価結果などに応じて、リクエストに対する処理を決定します。

AWS WAFの代表的なアクション

AWS WAFでは、ルールに一致したリクエストに対してさまざまなアクションを設定できます。

アクション概要
Allowリクエストを許可する
Blockリクエストをブロックする
Countブロックせず、一致したリクエストをカウントする
CAPTCHACAPTCHAによる確認を要求する
Challengeクライアントへチャレンジを実行する

💼 実務ではこう使う

新しいWAFルールをいきなりBlockで導入すると、正常なユーザーまで遮断してしまう可能性があります。

そのため、まずCountでマッチ状況を確認し、問題がないことを確認してからBlockへ変更する運用が考えられます。

AWS Managed Rulesとは?

すべての攻撃パターンを利用者自身でルール化するのは大きな負担になります。

そこでAWS WAFでは、AWSが管理するAWS Managed Rulesを利用できます。

AWS Managed Rulesには、一般的なWebアプリケーションの脅威や既知の攻撃パターンに対応するためのマネージドルールグループが用意されています。

これにより、利用者が一からすべての検査ルールを作成する必要を減らすことができます。

📘 SAA試験ポイント

「一般的なWeb攻撃から保護したい」「運用負荷を抑えたい」といった要件では、AWS Managed Rulesが重要な選択肢になります。

SQLインジェクション対策

SQLインジェクションは、Webアプリケーションへ不正なSQL文などを入力し、データベースを不正操作しようとする攻撃です。

AWS WAFでは、SQLインジェクションに関連するパターンを検査し、不正なリクエストをブロックするルールを設定できます。


Attacker
   ↓
不正なSQLを含むHTTP Request
   ↓
AWS WAF
   ↓
BLOCK

ただし、WAFだけに依存するのではなく、アプリケーション側でも適切な入力処理やセキュアな実装を行うことが重要です。

クロスサイトスクリプティング(XSS)対策

クロスサイトスクリプティング(XSS)は、Webページへ悪意のあるスクリプトを混入させる攻撃です。

AWS WAFでは、XSSに関連するパターンを検査するルールを利用できます。


Attacker
   ↓
悪意のあるスクリプトを含むRequest
   ↓
AWS WAF
   ↓
BLOCK

SQLインジェクションと同様、アプリケーション側の対策とWAFによる防御を組み合わせることが重要です。

IPアドレスによるアクセス制御

AWS WAFでは、IP setを利用して特定のIPアドレスやIPアドレス範囲をアクセス制御へ利用できます。

例えば、

  • 悪意のあるIPアドレスを拒否する
  • 特定IPアドレスからのみアクセスを許可する
  • 社内ネットワークのIPアドレスだけ許可する

といった制御が可能です。

ポイント

AWS WAFは、単なるSQLインジェクション対策サービスではありません。

Webリクエストに関するさまざまな条件を利用してアクセスを制御できることを覚えておきましょう。

レートベースルールとは?

AWS WAFには、一定期間に大量のリクエストを送信するクライアントを検出・制御するレートベースルールがあります。

例えば、通常のユーザーでは考えにくい頻度で大量のHTTPリクエストが送信されている場合、そのアクセスを制限できます。


Client
 │
 ├─ Request
 ├─ Request
 ├─ Request
 ├─ Request
 ├─ Request
 └─ Request
       ↓
 Rate-based Rule
       ↓
しきい値を超えたアクセスを制御

Webアプリケーションレイヤーへの大量アクセス対策として重要な機能です。

📘 SAA試験ポイント

「特定のクライアントから短時間に大量のHTTPリクエストが送信されるため制限したい」といった要件では、AWS WAFのレートベースルールを検討します。

AWS WAFを関連付けられる代表的なサービス

AWS WAFは、Webリクエストを受けるさまざまなAWSリソースと組み合わせて利用できます。

SAA学習では、特に次の組み合わせを理解しておきましょう。

  • Amazon CloudFront
  • Application Load Balancer(ALB)
  • Amazon API Gateway

このほかにも、AWS WAFがサポートする複数のAWSサービスがあります。

特にWebアプリケーションでは、


Internet
   ↓
CloudFront
   ↓
AWS WAF
   ↓
ALB
   ↓
EC2

といった構成をイメージしておくとよいでしょう。

なお、WAFは物理的に「CloudFrontとALBの間へ設置する装置」ではなく、Web ACLをCloudFrontなどの保護対象リソースへ関連付けて利用します。

AWS Shieldとは?

AWS Shieldは、AWS上で動作するアプリケーションをDDoS(Distributed Denial of Service)攻撃から保護するためのサービスです。

DDoS攻撃では、多数の端末などから大量のトラフィックを送りつけ、対象システムのリソースやネットワーク帯域を消費させ、正常なサービス提供を妨害します。


Attacker
Attacker ──┐
Attacker ──┼── 大量トラフィック ──→ Web Service
Attacker ──┤
Attacker ──┘

AWS Shieldは、このようなDDoS攻撃への防御を提供します。

Shield StandardとShield Advanced

AWS Shieldには、主に次の2つがあります。

  • AWS Shield Standard
  • AWS Shield Advanced

SAAでは、この2つの違いを理解することが重要です。

AWS Shield Standardとは?

AWS Shield Standardは、AWSの利用者に対して追加料金なしで提供されるDDoS保護です。

一般的なネットワーク層・トランスポート層のDDoS攻撃などに対する保護を提供します。

利用者がShield Standardを有効化するために個別のサブスクリプションを行う必要はありません。

覚えておきたいポイント

Shield Standard = AWSで標準的に提供されるDDoS保護

AWS Shield Advancedとは?

AWS Shield Advancedは、より高度なDDoS保護を必要とする環境向けの有料サービスです。

高度なDDoS攻撃への保護や可視性に加え、DDoSイベント発生時の支援など、Standardより充実した機能が提供されます。

代表的な特徴として、次のようなものがあります。

  • 高度なDDoS検出・緩和
  • 攻撃に関する詳細な可視性
  • AWS Shield Response Team(SRT)による支援
  • DDoSに関連する一部のスケーリング料金に対するコスト保護
  • AWS WAFと組み合わせた高度な保護

📘 SAA試験ポイント

「大規模なDDoS攻撃への高度な保護」「DDoS発生時にAWSの専門チームから支援を受けたい」といった要件では、AWS Shield Advancedが重要な候補になります。

Shield StandardとAdvancedの違い

比較項目Shield StandardShield Advanced
料金追加料金なし有料
主な目的一般的なDDoS攻撃への保護高度なDDoS保護
DDoSイベントの詳細な可視性基本的な保護より高度
SRTによる支援なしあり
DDoSコスト保護なし条件に基づき提供
想定環境一般的なAWS利用高い可用性・セキュリティが要求されるシステム

AWS WAFとAWS Shieldの違い

ここまでの内容を整理すると、AWS WAFとAWS Shieldでは防御する攻撃の種類が異なります。

比較項目AWS WAFAWS Shield
主な役割Webリクエストの検査・制御DDoS攻撃への防御
主な対象Webアプリケーションレイヤー主にDDoS攻撃
SQLインジェクション主目的ではない
XSS主目的ではない
IPベースのWebアクセス制御主目的ではない
HTTPリクエストのレート制御DDoS保護とは役割が異なる
DDoS対策アプリケーション層の対策を補完◎ 主目的

最重要ポイント

AWS WAFとAWS Shieldは「どちらを使うか」という競合サービスではありません。

防御する領域が異なるため、要件に応じて組み合わせて利用します。

CloudFront・WAF・Shieldを組み合わせる

インターネット向けWebアプリケーションでは、Amazon CloudFront・AWS WAF・AWS Shieldなどを組み合わせることで多層的な防御を構成できます。

例えば、次のような構成です。


User
 ↓
Internet
 ↓
CloudFront
 + AWS Shield
 + AWS WAF
 ↓
Application Load Balancer
 ↓
EC2
 ↓
RDS

それぞれの役割を整理すると、次のようになります。

サービス役割
CloudFrontエッジロケーションからコンテンツを配信
AWS ShieldDDoS攻撃への防御
AWS WAF悪意のあるWebリクエストを検査・制御
ALBWebトラフィックをバックエンドへ分散
Security Groupリソース単位で通信を制御

このように、AWSでは1つのセキュリティサービスだけですべてを守るのではなく、複数の防御レイヤーを組み合わせることが重要です。

セキュリティグループとWAFの違い

AWS WAFを学習すると、「セキュリティグループとは何が違うの?」という疑問が出てきます。

両者は通信を制御する点では似ていますが、見る情報が異なります。

比較項目AWS WAFSecurity Group
主な制御対象HTTP/HTTPSリクエストリソースへのネットワーク通信
HTTPリクエスト内容の検査×
SQLインジェクション対策×
ポート番号による制御主目的ではない
代表的な用途Web攻撃への防御EC2・ALBなどへの通信制御

Security Group
「このポートへの通信を許可するか」

AWS WAF
「このWebリクエストを通してよいか」

と考えると違いを理解しやすくなります。

WAFをALBに関連付ける構成

CloudFrontを使用しないWebアプリケーションでも、Application Load BalancerへAWS WAFのWeb ACLを関連付けて保護できます。


Internet
   ↓
AWS WAF
   ↓
Internet-facing ALB
   ↓
EC2
(Private Subnet)

例えば、前回の記事で解説したVPC構成と組み合わせると、


Internet
   ↓
Internet Gateway
   ↓
ALB
(Public Subnets)
   │
   │ AWS WAFでWebリクエストを保護
   ↓
EC2
(Private Subnets)
   ↓
RDS
(Private DB Subnets)

という多層構成を作ることができます。

🔥 SAAでよくある判断パターン

パターン① SQLインジェクションやXSSを防ぎたい


要件
 ↓
Webリクエストの内容を検査したい
 ↓
AWS WAF

答えの候補:AWS WAF

パターン② 特定IPからのWebアクセスを拒否したい


要件
 ↓
IPアドレスを条件にWebアクセスを制御
 ↓
AWS WAF

答えの候補:AWS WAF + IP set

パターン③ 大量のHTTPリクエストを制限したい


要件
 ↓
リクエストレートを基準に制御
 ↓
AWS WAF
 ↓
Rate-based Rule

答えの候補:AWS WAFのレートベースルール

パターン④ 一般的なDDoS攻撃からAWSサービスを守りたい


要件
 ↓
DDoS Protection
 ↓
AWS Shield Standard

答えの候補:AWS Shield Standard

パターン⑤ 高度なDDoS保護と専門家の支援が必要


要件
 ↓
高度なDDoS Protection
 +
専門チームによる支援
 ↓
AWS Shield Advanced

答えの候補:AWS Shield Advanced

パターン⑥ Web攻撃とDDoS攻撃の両方から守りたい


Internet
 ↓
Shield
 ↓
WAF
 ↓
Web Application

答えの候補:AWS WAF + AWS Shield

実際には両サービスを物理的に直列配置するというより、それぞれの保護機能を対象リソースへ適用して多層防御を実現すると考えましょう。

⚠ 初心者が間違えやすいポイント

① AWS WAFはDDoS専用サービス

誤りです。

AWS WAFはWebリクエストを検査・制御するサービスです。

DDoS保護を主目的とするサービスはAWS Shieldです。

② Shield Standardは有料オプション

誤りです。

Shield StandardはAWS利用者へ追加料金なしで提供されるDDoS保護です。

③ Shield Advancedを使えばWAFは不要

誤りです。

WAFとShieldでは防御する領域が異なるため、要件に応じて組み合わせます。

④ セキュリティグループがあればWAFは不要

誤りです。

セキュリティグループでは、SQLインジェクションやXSSなどのWebリクエスト内容を検査することはできません。

⑤ WAFを導入すればアプリケーション側のセキュリティ対策は不要

誤りです。

WAFは重要な防御レイヤーですが、アプリケーションの脆弱性をなくすものではありません。

セキュアコーディング、脆弱性管理、アクセス制御などと組み合わせる必要があります。

WAF・Shield・Security Groupを整理

サービス何を見る?代表的な防御
AWS WAFWebリクエストSQLi / XSS / IP制御 / レート制御
AWS ShieldDDoS攻撃DDoS緩和
Security Groupネットワーク通信IP / プロトコル / ポートなどの通信制御

📘 SAA問題の考え方

問題文に登場するキーワードから、まず「何を防ぎたいのか」を判断しましょう。

  • SQL Injection → AWS WAF
  • XSS → AWS WAF
  • HTTPリクエストのレート制限 → AWS WAF
  • DDoS → AWS Shield
  • 高度なDDoS保護・SRT → AWS Shield Advanced
  • EC2へのポート制御 → Security Group

AWS公式試験ガイドとの関連

AWS WAFとAWS Shieldは、SAAで求められるセキュアなアーキテクチャの設計を理解するうえで重要なサービスです。

特に、

  • Webアプリケーションへの不正アクセスを防ぐ
  • 一般的なWeb脆弱性を狙う攻撃を軽減する
  • DDoS攻撃からサービスを保護する
  • インターネットへ公開するシステムを多層防御する
  • 運用負荷を抑えながらAWSマネージドサービスを利用する

といった要件から、WAF・Shield・CloudFront・ALB・Security Groupなどを適切に組み合わせることが重要です。

🔥 SAA試験頻出ポイント

  • AWS WAFはWebリクエストを検査・制御する
  • Web ACLに複数のWAFルールを設定する
  • AWS Managed Rulesを利用できる
  • SQLインジェクションやXSSへの対策にWAFを利用できる
  • IP setを利用したIPアドレスベースの制御ができる
  • 大量のHTTPリクエストにはレートベースルールが利用できる
  • Shield Standardは追加料金なしのDDoS保護
  • Shield Advancedは高度なDDoS保護を提供する有料サービス
  • Shield AdvancedではSRTによる支援を利用できる
  • WAFとShieldは競合するサービスではない
  • CloudFront・WAF・Shieldなどを組み合わせた多層防御を理解する
  • Security GroupとWAFは防御するレイヤー・役割が異なる

まとめ

AWS WAFとAWS Shieldは、インターネットへ公開するAWSシステムを保護するための重要なセキュリティサービスです。

AWS WAF

Webリクエストを検査し、SQLインジェクション・XSS・悪意のあるIPアドレス・大量リクエストなどを制御します。

AWS Shield

AWS上のアプリケーションをDDoS攻撃から保護します。

SAAでは、


Webリクエストへの攻撃
        ↓
      AWS WAF


DDoS攻撃
        ↓
    AWS Shield

という基本的な役割の違いをまず理解しましょう。

さらに実際のWebアプリケーションでは、


Internet
   ↓
CloudFront
   │
   ├── AWS Shield
   └── AWS WAF
   ↓
ALB
   ↓
EC2
   ↓
RDS

というように、複数のAWSサービスを組み合わせて多層的に防御します。

「どのサービスが強いか」ではなく、「どの種類の攻撃から何を守るのか」を考えながらサービスを選択できるようにしておきましょう。

目次