目次
- 初心者から実務者向けの包括的解説
- 概要
- AWS WAF が解決する課題 {#課題}
- 主な特徴 {#特徴}
- アーキテクチャ {#アーキテクチャ}
- Web ACL・Rules・Rule Groups {#webacl}
- マネージドルール(AWS Managed Rules) {#managedrulesaws}
- Bot Control {#botcontrol}
- Fraud Control・ATP {#fraudcontrol}
- Rate-Based Rules {#ratebasedrules}
- CAPTCHA・Challenge {#captchachallenge}
- カスタムルール設定 {#custom}
- ラベリング・ラベルマッチング {#labels}
- Web ACL ロジック {#webacl-logic}
- 主要ユースケース {#usecases10}
- 設定・操作の具体例(CLI/SDK/IaC) {#cli}
- Firewall Manager による組織規模展開 {#firewall}
- CloudFront・ALB・API Gateway 統合 {#integration}
- ログ・可視化・監視 {#logging}
- 容量単位(WCU) {#capacity}
- 類似サービス比較 {#comparison}
- ベストプラクティス {#bestpractices}
- トラブルシューティング {#troubleshooting}
- 2025-2026 最新動向 {#latest}
- 学習リソース・参考文献 {#resources}
- 実装例・導入ロードマップ {#roadmap}
- 実装チェックリスト {#checklist}
- コスト・プライシング {#pricing}
- まとめ {#summary}
AWS WAF 完全ガイド v2.0
初心者から実務者向けの包括的解説
AWS WAF(Web Application Firewall) は、Web アプリケーションへのアクセスを リクエストレベルで制御・監視 するマネージドセキュリティサービスです。CloudFront・ALB・API Gateway・AppSync・Cognito・App Runner・Amplify・Verified Access に統合でき、SQL インジェクション・クロスサイトスクリプティング・ボット・DDoS・アカウント乗っ取り攻撃を検出・ブロックします。本ドキュメントは、AWS WAF の仕組み・ルール体系・保護戦略・運用設定・ベストプラクティスを体系的に解説する完全ガイドです。
ドキュメントの目的
本ガイドは以下を対象としています:
- セキュリティ初心者向け:Web アプリケーション脅威・なぜ WAF が必要か
- Web アーキテクト向け:API Gateway・CloudFront・ALB 保護設計
- DevSecOps 向け:WAF ルール・Firewall Manager による組織展開
- セキュリティ管理者向け:ボット・詐欺・DDoS 検出・対応
- 運用者向け:ログ分析・ルール チューニング・誤検知削減
- 意思決定者向け:Cloudflare WAF・Akamai Kona との比較
2025-2026 年の AWS WAF エコシステム
- Bot Control 地域拡張: 台北・バンコク・メキシコシティ
- Web Bot Authentication(WBA): AI エージェント向け暗号化認証
- Account Takeover Prevention(ATP): 認証情報スタッフィング検出強化
- レート制限集約キー拡張: IP 以外の HTTP ヘッダ・Cookie・Query Arg
- 簡素化コンソール体験: セキュリティ設定 80% 削減
- Pre-configured Protection Packs: AWS 推奨ルール自動展開
目次
- 概要
- AWS WAF が解決する課題
- 主な特徴
- アーキテクチャ
- Web ACL・Rules・Rule Groups
- マネージドルール
- Bot Control
- Fraud Control・ATP
- Rate-Based Rules
- CAPTCHA・Challenge
- カスタムルール設定
- ラベリング・ラベルマッチング
- Web ACL ロジック
- 主要ユースケース
- 設定・操作の具体例
- Firewall Manager
- CloudFront・ALB・API Gateway 統合
- ログ・可視化
- 容量単位
- 類似サービス比較
- ベストプラクティス
- トラブルシューティング
- 2025-2026 最新動向
- 学習リソース
- 実装例・ロードマップ
- 実装チェックリスト
- コスト・プライシング
- まとめ
概要
初心者向けメモ: AWS WAF は「Web アプリケーション前の賢い番兵」です。HTTP リクエストを分析し、悪意ある IP・SQL インジェクション・ボット・DDoS パターンを検出。マッチしたリクエストは ALLOW・BLOCK・RATE_LIMIT・CAPTCHA で制御します。
AWS WAF は、以下を実現する統合 Web アプリケーション保護プラットフォームです:
| 機能 | 説明 |
|---|---|
| Layer 7 攻撃検出 | SQL インジェクション・XSS・CSRF |
| ボット対策 | スクレイパー・スキャナー・クローラー検出・ブロック |
| DDoS 対策 | レート制限・リクエスト異常検出 |
| 詐欺対策 | アカウント乗っ取り・不正アカウント作成検出 |
| マネージドルール | AWS・サードパーティによる継続更新ルール |
| カスタムルール | ビジネス要件に応じた細粒度制御 |
| リアルタイムログ | CloudWatch Logs・S3・Kinesis へのログ転送 |
AWS WAF が解決する課題 {#課題}
1. Web 脆弱性の継続的脅威
課題:OWASP Top 10(SQLi・XSS 等)は毎年多数のインシデント WAF の解決:マネージドルールで既知パターン自動検出・ブロック
2. ボット攻撃による被害
課題:スクレイパー・ブルートフォース・在庫買い占め → 売上損失 WAF の解決:Bot Control で悪意ボット検出・リクエスト制限
3. Layer 7 DDoS 攻撃
課題:AWS Shield Standard は層 3-4 のみ、層 7 アプリケーション攻撃未対応 WAF の解決:レート制限・地理的フィルタリングで層 7 DDoS 緩和
主な特徴 {#特徴}
1. 複数保護リソース対応
✓ CloudFront(グローバルエッジ)
✓ ALB(Application Load Balancer)
✓ API Gateway(REST・HTTP API)
✓ AppSync(GraphQL)
✓ Cognito(ユーザープール)
✓ App Runner・Amplify・Verified Access
2. 3 層ルール体系
【Managed Rules】AWS 提供・継続更新
├── Core Rule Set(OWASP Top 10)
├── Bot Control(ボット検出)
├── ATP(Account Takeover Prevention)
└── IP Reputation Lists(既知悪性 IP)
【Custom Rules】ビジネス要件対応
├── IP フィルタリング
├── URI・Query マッチング
├── HTTP ヘッダ・Body 検査
└── Regex パターン
【Rate Limiting・Labels】リクエスト制限
├── IP・Header ごとのレート制限
└── ラベルベース複合制御
3. マネージドルール自動更新
AWS が継続的に更新(新規脆弱性・ボットパターン対応)。利用者は自動追従または特定版固定可能。
アーキテクチャ {#アーキテクチャ}
【図1】AWS WAF アーキテクチャ
graph LR
subgraph "Client"
User["ユーザー"]
Bot["ボット"]
end
subgraph "AWS WAF"
WebACL["Web ACL"]
Managed["Managed Rules"]
Custom["Custom Rules"]
RateLimit["Rate-Based Rules"]
end
subgraph "Protected Resources"
CF["CloudFront"]
ALB["ALB"]
APIGW["API Gateway"]
end
User --> WebACL
Bot --> WebACL
WebACL --> Managed
WebACL --> Custom
WebACL --> RateLimit
Managed --> CF
Custom --> ALB
RateLimit --> APIGW
CF --> User
ALB --> User
APIGW --> User
【図2】リクエスト評価パイプライン
sequenceDiagram
participant Client
participant WAF
participant App
Client->>WAF: HTTP Request
WAF->>WAF: Evaluate Rules<br/>(Priority Order)
WAF->>WAF: Add Labels<br/>Determine Action
alt ALLOW
WAF->>App: Forward Request
App->>Client: Response 200
else BLOCK
WAF->>Client: Response 403
else CHALLENGE
WAF->>Client: CAPTCHA Page
end
Web ACL・Rules・Rule Groups {#webacl}
1. Web ACL(Web Access Control List)
Web ACL は保護ポリシー。CloudFront・ALB・API Gateway に関連付け。
{
"Name": "MyWebACL",
"Scope": "REGIONAL",
"DefaultAction": { "Allow": {} },
"Rules": [
{
"Name": "RateLimitRule",
"Priority": 0,
"Action": { "Block": {} }
}
]
}
2. Rules(ルール)
リクエストマッチング + アクションの組み合わせ。
Statement タイプ:
- IPSetReferenceStatement(IP リスト)
- SqliMatchStatement(SQLi 検出)
- XssMatchStatement(XSS 検出)
- ByteMatchStatement(文字列マッチ)
- RegexMatchStatement(正規表現)
- RateBasedStatement(レート制限)
3. Rule Groups(ルールグループ)
複数ルールをグループ化。AWS Managed または Customer Managed。
【AWS Managed Rule Groups】
├── AWSManagedRulesCommonRuleSet
├── AWSManagedRulesBotControlRuleSet
├── AWSManagedRulesAmazonIpReputationList
└── AWSManagedRulesAtomicLeverageCustom...
マネージドルール(AWS Managed Rules) {#managedrulesaws}
Core Rule Set(CRS)
OWASP Top 10 対応。SQLi・XSS・CSRF・LFI・RFI 検出。
Amazon IP Reputation List
既知の悪質ボットネット・スキャナー・スパマー IP を自動ブロック。
Fraud Control
Account Takeover Prevention(ATP):認証情報スタッフィング・分散ログイン検出。
Bot Control {#botcontrol}
機能
スクレイパー・スキャナー・在庫買い占めボット・ステータスモニターを検出・制御。
Inspection Levels
Basic: 自己申告ボット・既知署名 Targeted: ブラウザフィンガープリント・JavaScript 確認・行動分析
2025 新機能:Web Bot Authentication(WBA)
AI エージェント向けの暗号化署名検証。正当な AI 迅速通過、悪意ボット検出。
Fraud Control・ATP {#fraudcontrol}
Account Takeover Prevention
検出パターン:
├── 既知漏洩認証情報使用
├── 大量ログイン試行
├── 複数 IP からのログイン
└── 異常地理・時間帯
CISA Known Exploited Vulnerabilities 統合。
Rate-Based Rules {#ratebasedrules}
基本的なレート制限
IP あたりの指定時間内リクエスト数制限。
{
"RateBasedStatement": {
"Limit": 2000,
"AggregateKeyType": "IP"
}
}
2025 拡張:複合集約キー
IP + Header + Cookie + Query Arg(最大 5 キー)の組み合わせでレート制限。
{
"CustomKeys": [
{ "Header": { "Name": "X-Forwarded-For" } },
{ "Cookie": { "Name": "user_id" } },
{ "QueryArgument": { "Name": "api_key" } }
]
}
CAPTCHA・Challenge {#captchachallenge}
CAPTCHA アクション
ブロックの代わりに CAPTCHA 課題提示。
Challenge(v2)
軽量な JavaScript 実行確認。
カスタムルール設定 {#custom}
例1:特定 User-Agent ブロック
{
"Name": "BlockBadBots",
"Priority": 10,
"Statement": {
"ByteMatchStatement": {
"SearchString": "BadBot/1.0",
"FieldToMatch": { "SingleHeader": { "Name": "user-agent" } },
"PositionalConstraint": "CONTAINS"
}
},
"Action": { "Block": {} }
}
例2:地理的フィルタリング
{
"Name": "AllowOnlyJapan",
"Priority": 20,
"Statement": {
"GeoMatchStatement": { "CountryCodes": ["JP"] }
},
"Action": { "Allow": {} }
}
ラベリング・ラベルマッチング {#labels}
ラベル追加
前段ルールでマッチ時にラベル付与。後段ルールがそのラベル参照。
{
"Labels": [{ "Name": "suspicious-eval-attempt" }]
}
ラベルマッチング(複合ルール)
{
"Statement": {
"AndStatement": {
"Statements": [
{
"LabelMatchStatement": {
"Key": "suspicious-eval-attempt"
}
},
{
"LabelMatchStatement": {
"Key": "sql-injection-attempt"
}
}
]
}
}
}
Web ACL ロジック {#webacl-logic}
ルール評価順序
Priority 0 → 評価 → Match なら Action → 次へ
複数ルール Match 時:BLOCK が優先(セキュリティ First)
主要ユースケース {#usecases10}
- SQLi・XSS ブロック:Managed Rules で既知パターン自動検出・ブロック
- ボット対策:Bot Control で スクレイパー・スキャナー制御
- DDoS Layer 7 緩和:レート制限で 異常リクエスト数遮断
- Account Takeover Prevention:漏洩認証情報・ブルートフォース検出
- 地理的制限:国別アクセス制御
- API レート制限:API キー単位でのリクエスト数制限
- ファイルアップロード検査:.exe・.zip・.bat ファイルブロック
- Referer チェック(CSRF 対策):Referer ヘッダ不一致ブロック
- カスタムビジネスロジック:時間帯・ユーザー ID・特定 URI 制御
- ルール チューニング:誤検知削減・ホワイトリスト追加
設定・操作の具体例(CLI/SDK/IaC) {#cli}
1. Web ACL 作成(基本)
aws wafv2 create-web-acl \
--scope REGIONAL \
--region us-east-1 \
--name MyWebACL \
--default-action Allow={} \
--rules '[...]'
2. ALB に Web ACL 関連付け
aws wafv2 associate-web-acl \
--web-acl-arn arn:aws:wafv2:us-east-1:123456789012:regional/webacl/MyWebACL/a1b2c3d4 \
--resource-arn arn:aws:elasticloadbalancing:us-east-1:123456789012:loadbalancer/app/my-alb/...
3. ログ設定(CloudWatch Logs)
aws wafv2 put-logging-configuration \
--logging-configuration '{
"ResourceArn": "arn:aws:wafv2:us-east-1:123456789012:regional/webacl/MyWebACL/...",
"LogDestinationConfigs": [
"arn:aws:logs:us-east-1:123456789012:log-group:/aws/wafv2/MyWebACL"
]
}'
4. Terraform IaC
resource "aws_wafv2_web_acl" "example" {
name = "example-web-acl"
scope = "REGIONAL"
default_action { allow {} }
rule {
name = "RateLimitRule"
priority = 0
action { block {} }
statement {
rate_based_statement {
limit = 2000
aggregate_key_type = "IP"
}
}
visibility_config {
cloudwatch_metrics_enabled = true
metric_name = "RateLimitRule"
sampled_requests_enabled = true
}
}
rule {
name = "AWSManagedRulesCommonRuleSet"
priority = 1
override_action { none {} }
statement {
managed_rule_group_statement {
name = "AWSManagedRulesCommonRuleSet"
vendor_name = "AWS"
}
}
visibility_config {
cloudwatch_metrics_enabled = true
metric_name = "AWSManagedRulesCommonRuleSet"
sampled_requests_enabled = true
}
}
visibility_config {
cloudwatch_metrics_enabled = true
metric_name = "example-web-acl"
sampled_requests_enabled = true
}
}
resource "aws_wafv2_web_acl_association" "alb" {
resource_arn = aws_lb.example.arn
web_acl_arn = aws_wafv2_web_acl.example.arn
}
Firewall Manager による組織規模展開 {#firewall}
統制モデル
Organizations 管理アカウント
└─ Firewall Manager Administrator Account
├─ WAF Policy 作成・定義
├─ 全メンバーアカウント自動展開
└─ コンプライアンス監視
セットアップ
aws fms enable-org-admin-account \
--admin-account 111111111111
CloudFront・ALB・API Gateway 統合 {#integration}
CloudFront(グローバル保護)
グローバルエッジで全世界から攻撃を検出・ブロック。オリジン負荷軽減。
ALB(リージョン保護)
リージョンレベルで Layer 7 攻撃検出。
API Gateway(API 保護)
REST API・HTTP API レベルのセキュリティ・レート制限。
ログ・可視化・監視 {#logging}
CloudWatch Logs 統合
リアルタイムログ転送。SQLi・ボット・レート制限トリガー可視化。
Athena クエリ例
SELECT COUNT(*) as block_count, clientip, terminatingruleid
FROM waf_logs
WHERE action = 'BLOCK'
AND terminatingruleid LIKE '%SQLi%'
GROUP BY clientip, terminatingruleid
ORDER BY block_count DESC;
容量単位(WCU) {#capacity}
Web ACL の複雑さを数値化。1 Web ACL あたり 1,500 WCU が上限。
| ルール種別 | WCU |
|---|---|
| AWS Managed Rule Group | 20-200 |
| Custom Rule(Simple) | 1-3 |
| Custom Rule(Regex) | 10-20 |
| Rate-Based Rule | 2 |
類似サービス比較 {#comparison}
| 特性 | AWS WAF | Cloudflare WAF | Akamai Kona |
|---|---|---|---|
| 形態 | マネージド | SaaS | エンタープライズ |
| Bot 対策 | ✓ | ✓ | ✓ |
| マネージドルール | ✓ | ✓ | ✓ |
| AWS 統合 | ◎ | △ | × |
| 価格 | 従量課金 | $200+/月 | 高い |
ベストプラクティス {#bestpractices}
✅ 推奨
【初期段階】
✓ AWS Managed Rules(Core + Bot)最初に有効化
✓ Count モードでログ分析
✓ CloudWatch ダッシュボード作成
【2-4 週間】
✓ 誤検知分析・ホワイトリスト追加
✓ 本運用にシフト(Block モード)
【継続運用】
✓ CloudWatch ログ定期確認
✓ AWS Managed Rules 自動更新
✓ 四半期ごとにルール見直し
❌ アンチパターン
× すべてのリクエストを Allow
× ブロック前に Count モード長期化
× ルール優先度不適切
× ログを見ない
× Firewall Manager 非導入(複数アカウント)
トラブルシューティング {#troubleshooting}
| 症状 | 原因 | 解決策 |
|---|---|---|
| 正常ユーザーが頻繁にブロック | ルール設定過度 | Count モード検証・ホワイトリスト追加 |
| ブロック実感なし | ルール有効化 忘れ | Web ACL リソース関連付け確認 |
| CloudFront で WAF 非表示 | スコープ指定エラー | CLOUDFRONT スコープで作成 |
| ログ出力なし | ロギング設定漏れ | CloudWatch Logs グループ指定確認 |
2025-2026 最新動向 {#latest}
- Bot Control 地域拡張(9 月):台北・バンコク・メキシコシティ追加
- Web Bot Authentication(WBA):AI エージェント向け暗号化署名認証
- レート制限集約キー拡張:IP 以外に Header・Cookie・Query Arg 対応
- 簡素化コンソール:セキュリティ設定 80% 削減、Pre-configured Packs
- ATP 強化:CISA KEV・Recorded Future 統合で漏洩認証情報検出精度向上
学習リソース・参考文献 {#resources}
公式ドキュメント
- AWS WAF Developer Guide
- AWS WAF API Reference
- AWS Managed Rules for AWS WAF
- AWS Firewall Manager
- AWS WAF Best Practices
- AWS WAF Pricing
- AWS Security Blog - WAF
- AWS WAF Fraud Control - Account Takeover Prevention
オープンソース・ベンダー資料
- OWASP Top 10 - Web 脅威標準
- ModSecurity - オープンソース WAF
- OWASP Core Rule Set - CRS ルール
- Cloudflare WAF - 競合製品
- Akamai Kona - エンタープライズ WAF
実装例・導入ロードマップ {#roadmap}
Week 1:基盤構築
Day 1: Web ACL 作成 → AWS Managed Rules(Core)有効化
Day 3: CloudFront・ALB 統合
Day 5: CloudWatch ログ設定
Day 7: ダッシュボード作成
Week 2-3:チューニング
- Day 10: 誤検知分析
- Day 15: ホワイトリスト追加
- Day 21: カスタムルール追加
- Day 28: 本運用移行(Block モード)
Week 4+:継続運用
- 毎週:CloudWatch ログ確認・ブロック傾向分析
- 毎月:AWS Managed Rules 更新確認・ルール調整
- 四半期:セキュリティイベント振り返り
実装チェックリスト {#checklist}
【基本セットアップ】
☐ Web ACL 作成
☐ AWS Managed Rules(Core + Bot)有効化
☐ リソース関連付け(CloudFront/ALB/API Gateway)
☐ CloudWatch Logs ロギング設定
【ルール構成】
☐ Rate-Based Rules 設定
☐ 地理的フィルタリング(必要に応じて)
☐ カスタムルール作成
【運用準備】
☐ Count モード検証期間設定
☐ CloudWatch ダッシュボード作成
☐ アラート設定
【本運用】
☐ Block モード移行
☐ Firewall Manager 導入(複数アカウント)
☐ ログ分析パイプライン構築
【継続最適化】
☐ False Positive 削減
☐ ルール効率化(WCU 最適化)
☐ コスト監視
コスト・プライシング {#pricing}
料金構造
- Web ACL: $5.00/月(リージョンあたり)
- カスタムルール: $1.00/ルール/月
- Managed Rule Group: $15.00/グループ/月
- HTTP リクエスト: $0.60/百万リクエスト
月額概算例
【小規模】(10M リクエスト/月)
Web ACL: $5
Core Rule Set: $15
Bot Control: $15
Requests: $6
────────
合計: $41/月
【中規模】(100M リクエスト/月)
$200-250/月
まとめ {#summary}
AWS WAF は Web アプリケーション Layer 7 攻撃の最初の防御線 です。SQL インジェクション・XSS・ボット・DDoS・アカウント乗っ取りを検出・ブロックし、CloudFront・ALB・API Gateway に統合でき、マネージドルール・カスタムルール・レート制限を柔軟に組み合わせることで、ビジネス要件に応じた段階的な保護が実現できます。
核心ポイント
- 即時有効化: マネージドルール適用で既知脅威 90% をカバー
- 段階的展開: Count モード → チューニング → 本運用
- 継続更新: AWS が自動更新ルールで新脅威に対応
- 複合条件制御: ラベル・複合ステートメントで複雑な制御実現
- 組織規模展開: Firewall Manager で複数アカウント・リージョン統制
最終更新:2026-04-26
バージョン:v2.0