
【グローバルサービス】
WAF(Web Application Firewall) は、アプリケーション層(L7)を保護するマネージド型のファイアウォールサービスです。
CloudFront、ALB(Application Load Balancer)、API Gateway、App Runner、Global Accelerator に適用することができ、さまざまなアプリケーション環境で柔軟に利用できます。
WAFでは、Web ACL(Web Access Control List) を作成し、その中に複数の Rule(ルール) や Rule Group(ルールグループ) を設定して、アクセス制御や防御ポリシーを構築します。これにより、コードを変更することなく、アプリケーション層のセキュリティを実現することが可能です。
Managed Rule Groups(マネージドルールグループ)を利用すると、AWSが提供する CRS(Common Rule Set) に基づいた一般的な脆弱性対策(例:SQLインジェクションやXSSなど)を自動的に適用できます。また、Rate-based Rule(レート制限ルール) によって一定時間内のリクエスト数を制御し、DoS/ブルートフォース攻撃を軽減できます。
IP Set を用いて特定のIPアドレスやCIDR範囲を許可・拒否することも可能です。
Bot Control やカスタムルールを活用することで、スクレイピングや自動化された不正アクセスにも柔軟に対応できます。
Shield との連携により、DDoS攻撃を含むL3〜L7層の包括的な防御を強化することもできます。
可視化や監視については、CloudWatch メトリクスおよびログ出力を通じてリアルタイムに分析することができ、攻撃の傾向やトラフィックパターンを容易に把握することができます。
重要用語
ユースケース
| Webアプリケーションの攻撃対策 | SQLインジェクションやクロスサイトスクリプティングなど、よくあるWeb攻撃パターンをマネージドルールでブロックし、アプリ側の防御を補強する。 |
| Bot・スクレイピング対策 | 特定のUser-Agentやリクエスト頻度を検知して制限し、コンテンツの不正取得やクローリングを抑止する。 |
| 国別・IPアドレス制限 | 日本国内からのアクセスのみに許可する、特定IPレンジからのアクセスのみ許可するといったポリシーを定義し、不審なアクセス元を遮断する。 |
ベストプラクティス
| マネージドルールの利用 | 一般的な攻撃から守るためにAWSマネージドルールを有効にする。 |
| レートベースルールの設定 | 特定IPからの大量リクエストを検知し、自動的にブロックする。 |
| ログ記録と可視化 | WAFログをKinesis Firehose経由でS3やSIEMに送信し、分析・監査に活用する。 |
高可用性・バックアップ・リトライ
| 高可用性・バックアップ・リトライ設計のポイント |
|---|
| 【デフォルト】AWS内部で冗長化 ・WAFルールエンジン ・Web ACL(アクセス制御リスト)設定データ ・リクエスト検査エンジン ・ログ記録システム ・WAF管理APIエンドポイント ・グローバルWAF(CloudFront用)の配置 |
セキュリティ
| 関連サービス | 設定内容 |
|---|---|
| CloudTrail(操作履歴の記録・監査・追跡) | 【自動記録】 作成・更新・削除・設定変更は自動記録される。(コントロールプレーンAPI) データ操作は追跡できない(データプレーンAPI) |
| Config(リソースの構成状態・設定変更を記録) | 【Configが有効な場合】 「WebACL/ルール」構成変更履歴・ロギング/スコープ設定の準拠評価 |
| GuardDuty(脅威を自動検出) | 【GuardDutyが有効な場合】 ルール変更のAPI異常検知 |
ログ・監視
| ログ出力先 | ログの種類 |
|---|---|
| CloudWatch Logs | ウェブACLログ |
標準メトリクス
| メトリクス名 | 説明 |
|---|---|
| AllowedRequests | 許可されたリクエスト数 |
| BlockedRequests | ブロックされたリクエスト数 |
| CaptchaRequests | CAPTCHA要求数 |
| ChallengeRequests | チャレンジ要求数 |
| CountedRequests | カウントされたリクエスト数 |
| PassedRequests | 通過したリクエスト数 |
制限値(固定値/ハードリミット/ソフトリミット)
| ソフトリミット | 制限値 |
|---|---|
| Web ACL数/リージョン | 100 |
| ルールグループ数/リージョン | 100 |
| ルール数/Web ACL | 1,500 |
| ルール数/ルールグループ | 1,000 |
| IPセット数/リージョン | 100 |
| IPアドレス数/IPセット | 10,000 |
| Regex パターンセット数/リージョン | 10 |
| Web ACL容量単位(WCU) | 5,000 |
| リクエストボディ検査サイズ | 8 KB(デフォルト)、最大64 KB |
AWS CLIのサンプルコード
CloudFormationのサンプルコード
Terraformのサンプルコード
料金計算
| 課金項目 | 説明 |
|---|---|
| Web ACL | Web ACLの月額料金 |
| ルール | Web ACL内のルール数 |
| リクエスト数 | Web ACLで検査されるリクエスト数 |
| ボット管理 | ボットコントロールの検査リクエスト数 |