AWS 環境で Web アプリケーションを運用しています。SQLインジェクションやクロスサイトスクリプティング(XSS)などのアプリケーション層(レイヤー7)の攻撃からアプリケーションを守るために最も適切なサービスはどれですか?
解説
SQL インジェクションや XSS のような HTTP リクエストの中身を悪用する攻撃は、OSI 参照モデルのレイヤー7(アプリケーション層)で発生します。AWS WAF(Web Application Firewall)はこのレイヤー7のトラフィックを検査し、悪意あるリクエストパターンをブロックする専用サービスです。他の選択肢はそれぞれ守備範囲が異なります。Amazon GuardDuty は AWS アカウント全体のログ(VPC フローログ、DNS ログ、CloudTrail など)を機械学習で分析して脅威を検知するサービスであり、リクエスト単位のフィルタリングは行いません。AWS Shield は DDoS(分散型サービス妨害)攻撃に特化した防御サービスで、レイヤー3/4 の大量トラフィック攻撃が主な対象です。Security Group は EC2 インスタンスに対する IP アドレスやポート番号ベースのアクセス制御(レイヤー3/4)であり、HTTP の中身までは検査しません。WAF が防げる攻撃と防げない攻撃WAF はあくまで「既知の攻撃パターンに一致するリクエストをブロックする」仕組みです。AWS WAF ではルールを組み合わせて Web ACL(アクセスコントロールリスト)を作成し、CloudFront・ALB・API Gateway などに関連付けます。AWS が提供するマネージドルールグループを使えば、OWASP Top 10 に含まれる代表的な攻撃パターンを手軽にカバーできます。ただし、WAF だけですべてのセキュリティ問題が解決するわけではありません。たとえばビジネスロジックの脆弱性(認可の欠陥、IDOR など)は HTTP リクエストのパターンだけでは判別できないため、WAF では防げません。実務では多層防御(Defense in Depth)の考え方が重要です。レイヤー3/4: Security Group・NACL で不要なポートや IP を遮断し、Shield で DDoS を吸収レイヤー7: WAF で SQL インジェクション・XSS などの攻撃パターンをフィルタアプリケーション内部: プリペアドステートメント・出力エスケープなどのセキュアコーディングで根本対策「どのレイヤーの攻撃を防ぎたいのか」を意識すると、AWS のセキュリティサービスを迷わず選べるようになります。