AWS WAF
1. サービス概要¶
AWS WAF(Web Application Firewall)は、Web アプリケーション層への攻撃を防御するためのサービスで、SQL インジェクションやクロスサイトスクリプティング(XSS)など、よくある脆弱性パターンから保護する。
CloudFront や Application Load Balancer(ALB)、Amazon API Gateway、AppSync などとの統合ができ、ルールを柔軟に定義してアクセスを制御可能である。
主なユースケースとして、
- 不正リクエストのブロックや Bot 対策
- カスタムヘッダの検知
- IP レピュテーションリストの参照
などが挙げられます。
AWS WAF を活用することで、Web アプリケーションレイヤーの攻撃を低コストかつスケーラブルに防御することが可能である。
2. 主な特徴と機能¶
2.1 ルールベースのフィルタリング¶
WAF は以下のような種類のルールで不正アクセスをフィルタリングする:
- IP マッチ条件: 指定したソース IP アドレスや IP レンジからのリクエストを許可/ブロック
- String マッチ/正規表現マッチ: HTTP ヘッダや URI パスに特定文字列や正規表現が含まれる場合にアクションを実行
- Size constraint: リクエストサイズが閾値を超えた場合に制御
- SQL インジェクション/XSS 検知: 代表的な攻撃パターンを自動検知してブロック
2.2 マネージドルールとカスタムルール¶
AWS WAF では、事前定義されたマネージドルール(AWS やサードパーティが提供)を導入することで、OWASP Top 10 をはじめとする一般的な攻撃への対策を簡単に設定可能である。
また、カスタムルールを使って独自のビジネスロジックを反映した防御を行うこともできる。
2.3 Bot Control/レートベースルール¶
最近の AWS WAF には Bot Control 機能が追加され、クローラーやスクレイピングなどのボットトラフィックを制御できる。
また、レートベースルールを利用すると、一定時間内に大量アクセスしている IP を自動的にブロックすることが可能である。
2.4 可視化とアナリティクス¶
WAF では、CloudWatch メトリクスやログ(WAF ログ)と連携することで、トラフィックの可視化や分析が可能である。
不正なリクエストの種類や発生元 IP を把握し、継続的なルール最適化を行うことができる。
2.5 CloudFront/ALB/API Gateway との統合¶
WAF は主に以下のサービスと統合できる:
- Amazon CloudFront: CDN で配信するコンテンツを WAF で保護
- Application Load Balancer: ALB 経由でアクセスされる Web アプリケーションを保護
- Amazon API Gateway/AppSync: API エンドポイントや GraphQL エンドポイントへの不正アクセスをフィルタ
このように、様々なエントリーポイントをカバーしており、複数サービス間で一貫したルール設定が可能である。
3. アーキテクチャおよび技術要素¶
- WAF ポリシー(WebACL)を作成し、使用するルールを定義
- ポリシーを CloudFront ディストリビューションや ALB 等のリソースに関連付け
- WAF は受信リクエストをルールの順番に従って評価し、マッチしたアクション(Allow/Block/Count/Captcha)を実行
- ルール実行結果は CloudWatch メトリクスや WAF ログとして蓄積され、可視化・分析が可能
これにより、アプリケーション層に到達する前に攻撃トラフィックをブロックし、セキュリティ強度を高めるアーキテクチャを構築できる。
4. セキュリティと認証・認可¶
AWS WAF 自体はマネージドサービスであり、AWS IAM を活用して WAF ポリシーを操作できるユーザーやロールを制御する:
- IAM ポリシー: 「waf:*」などの API コールを許可/拒否する形で操作権限を管理
- 運用監査: AWS CloudTrail を通じて WAF のルール変更やポリシー適用などの操作履歴を追跡可能
- Shield Advanced 連携: DDoS 対策サービスとの併用で攻撃を多層防御
5. 料金形態¶
AWS WAF の料金は以下の要素で構成される:
- Web ACL 数: 作成した Web ACL(WAF ポリシー)ごとに月額料金が発生
- ルール数: Web ACL に紐づくルール数に応じた月額料金
- リクエスト数: WAF が評価するリクエスト数に基づく従量課金
6. よくあるアーキテクチャ・設計パターン¶
典型的な AWS WAF の導入パターンは以下の通りです:
- CDN 保護: CloudFront と連携し、グローバル配信される Web コンテンツへ不正アクセスをブロック
- ALB フロントエンド: ALB に WAF を設定し、アプリケーションサーバへの攻撃を未然に防止
- API 保護: API Gateway や AppSync と統合し、API 呼び出しを制御・分析
- マネージドルール活用: AWS やサードパーティが提供するスニペットを利用して構成を簡易化
7. 設定・デプロイ手順(ハンズオン例)¶
- AWS コンソールで「AWS WAF」を検索し、「Web ACL」を作成
- 「Add rules and rule groups」をクリックし、AWS Managed Rules を選択、またはカスタムルールを追加
- 「Default web ACL action」を Allow または Block に設定
- 適用先のリソース(CloudFront ディストリビューションや ALB など)を選択
- 設定完了後、WAF のダッシュボードや CloudWatch ログでリクエストがブロック/許可されているかを確認
8. 試験で問われやすいポイント¶
8.1 ルールタイプと動作¶
- IP match, String match, Regex match: HTTP リクエスト要素を精査
- SQL/XSS detection: 代表的なアプリケーション攻撃を自動検知
- Rate-based rule: 同一 IP からの過剰アクセスをブロック
8.2 マネージドルール vs. カスタムルール¶
- マネージドルール: AWS や各ベンダーが提供、容易に導入できるが柔軟性は限定的
- カスタムルール: 特定の攻撃パターンやユースケースに合わせた詳細設定
- 使い分け: 基本防御はマネージドルール+ビジネスロジックに合わせたカスタムルール
8.3 CloudFront/ALB/API Gateway 連携¶
- Edge ロケーション保護: CloudFront と組み合わせてグローバルに攻撃を阻止
- ALB 経由: オンプレミスや EC2 上の Web アプリを保護
- API 保護: API Gateway で REST/HTTP リクエストを統合管理
8.4 運用と可視化¶
- Logging: S3 や CloudWatch Logs に WAF ログを保存し、分析ツールと連携
- Monitoring: CloudWatch メトリクスでルールマッチ数や HTTP ステータスを可視化
- チューニング: 過剰ブロック(誤検知)を防ぎつつ攻撃を適切に防ぐためのルールの継続的調整
8.5 料金構造¶
- Web ACL 月額: WebACL ごとに固定費用
- ルール追加コスト: ルール 1 つごとに月額料金
- リクエスト数従量課金: 評価対象となるリクエスト数が増えるとコスト増
8.6 試験で頻出となる具体的な問われ方と答え¶
- Q: AWS WAF でよくある防御対象は?
- A: SQL インジェクション、XSS、Bot アクセス、レート制限など。
- Q: マネージドルールとカスタムルールの違いは?
- A: マネージドルールは既存テンプレートを使った簡易導入、カスタムルールは独自の条件で細かい調整。
- Q: AWS WAF を適用できるサービスは?
- A: CloudFront、ALB、API Gateway、AppSync。
- Q: Rate-based rule の用途は?
- A: 同一 IP からの短時間で大量アクセスを検知/ブロックする際に利用。
- Q: AWS WAF ログを分析するには?
- A: CloudWatch Logs や S3 にログを保存し、Athena や Elasticsearch などで可視化・分析。