CLF / ドメイン2 セキュリティとコンプライアンス
AWS WAF
は、Web アプリケーションに届く悪意のあるリクエストを検査して防ぐ、Web アプリケーションファイアウォールです。 やクロスサイトスクリプティング()といった、アプリケーション層(レイヤー7)への攻撃から Web アプリケーションや を守ります。
CLF では、WAF が防ぐ攻撃の種類、Web を関連付けられるサービス、 対策の との使い分けを判断できることが重要です。
Point
- WAF = Web Application Firewall(Web アプリケーションファイアウォール) の略です。
- 一般的なファイアウォールが IP アドレスやポートで通信を制御するのに対し、WAF は HTTP リクエストの中身まで検査します。
- 「Web アプリの入り口に立つ検問所」のイメージで覚えます。
- 和訳
- Firewall: 防火壁
- Weblio英和辞書「firewall」
概要
Web サイトや をインターネットへ公開すると、正規の利用者だけでなく、攻撃者からのリクエストも届きます。 は、アプリケーションへ転送される前の / リクエストを検査し、条件に一致したリクエストを許可したり、ブロックしたり、数だけ記録したりできます。
WAF では、まず Web (ウェブアクセスコントロールリスト)という保護のセットを作成し、検査条件と動作を決めるルールを追加します。 その Web ACL を、リクエストの入り口となる 、Application Load Balancer()、 などに関連付けて使います。
試験では、「Web アプリケーションへの攻撃対策なら WAF」「 対策なら 」「ネットワークの通信制御ならやネットワーク ACL」という切り分けを判断します。
主要技術
①アプリケーション層(L7)を守る仕組み ⚠️ 頻出
が守るのは、アプリケーション層(レイヤー7)です。 リクエストの URL、ヘッダー、クエリ文字列、ボディといった中身を検査できるため、 アドレスやポート番号だけでは見分けられない攻撃を検出できます。
| 攻撃・脅威 | 内容 | 判断ポイント |
|---|---|---|
| 入力欄などに不正な 文を紛れ込ませ、データベースを不正に操作する攻撃です。 | リクエストに悪意のある SQL らしき文字列が含まれていないかを WAF が検査します。 | |
| クロスサイトスクリプティング() | 悪意のあるスクリプトを埋め込み、閲覧者のブラウザで実行させる攻撃です。 | リクエストに悪意のあるスクリプトらしき文字列が含まれていないかを WAF が検査します。 |
| 望ましくないアクセス | 特定の IP アドレスや国からのアクセス、過剰な頻度のリクエストなどです。 | 送信元 IP アドレス、送信元の国、リクエストの頻度などの条件で制御します。 |
Point
- SQL Injection(SQL インジェクション) の Injection は「注入」という意味です。データベースへの命令文(SQL)を勝手に「注入」する攻撃と覚えます。
- XSS = Cross-Site Scripting(クロスサイトスクリプティング) の略です。スタイルシートの CSS と区別するため、Cross を X と略して XSS と書きます。
- どちらも「リクエストの中身」に仕込まれる攻撃なので、中身を検査できる WAF が対策になります。
- 和訳
- Injection: 注入
- Weblio英和辞書「injection」
⚠️ 頻出: 「SQL インジェクションや XSS から Web アプリケーションを保護したい」という要件は、AWS WAF が答えになります。
②Web ACL とルール
Web は、保護のルールをまとめる の中心となるコンポーネントです。 各ルールは、「どんなリクエストを探すか」という条件と、「一致したらどうするか」というアクションで構成されます。 どのルールにも一致しなかったリクエストの扱いは、Web ACL のデフォルトアクションで決めます。
| アクション | 動作 | 判断ポイント |
|---|---|---|
| 許可(Allow) | リクエストをアプリケーションへ通します。 | 通常の通信を通すために使います。 |
| ブロック(Block) | リクエストを拒否します。 | 攻撃と判断したリクエストを止めます。 |
| カウント(Count) | 通しながら一致した数だけを記録します。 | 新しいルールの影響を、ブロックする前に確認したい場合に使います。 |
| CAPTCHA・チャレンジ | 人間による操作か、通常のブラウザかを確認します。 | ボットによるアクセスを減らしたい場合に使います。 |
Point
- Web ACL = Web Access Control List(ウェブアクセスコントロールリスト) の略です。
- VPC のネットワーク ACL とは別物です。ネットワーク ACL はサブネットの通信を制御し、Web ACL は HTTP リクエストの中身を検査します。
- 「WAF のルールをまとめた台帳」のイメージで覚えます。
③マネージドルール
ルールをすべて自作しなくても、あらかじめ用意されたルールのまとまり(マネージドルールグループ)を Web に追加できます。 AWS が提供する AWS Managed Rules と、 のセキュリティベンダーが提供するものがあります。
| ルールの種類 | 特徴 | 判断ポイント |
|---|---|---|
| カスタムルール | 利用者が条件とアクションを自分で定義します。 | 自社固有の要件に細かく対応したい場合に使います。 |
| AWS Managed Rules | AWS が作成・維持する定義済みのルールグループです。 | セキュリティの専門知識や運用負荷を抑えて、一般的な脅威への対策を始めたい場合に選びます。 |
| Marketplace のマネージドルール | セキュリティベンダーが提供するルールグループです。 | ベンダーの専門的な保護を利用したい場合に選びます。 |
マネージドルールは提供元が内容を更新するため、利用者が攻撃の手口を追いかけてルールを書き換え続ける必要がありません。 「専門知識がなくても一般的な Web 攻撃への対策を素早く導入したい」という要件に合います。
④Web ACL を関連付けられるサービス ⚠️ 頻出
は、 インスタンスやに直接取り付けるものではありません。 リクエストの入り口となる、次のようなサービスに Web を関連付けます。
| 関連付け先 | 役割 | 判断ポイント |
|---|---|---|
| コンテンツ配信ネットワーク() | 世界中からのリクエストを、利用者に近いエッジで検査できます。 | |
| Application Load Balancer() | アプリケーション層の | 内の Web アプリケーションの入り口で検査します。 |
| ( ) | API の入り口 | 公開 API への攻撃対策に使います。 |
| そのほか(AWS AppSync、 ユーザープールなど) | GraphQL API やサインインの入り口 | CLF では「これらにも関連付けられる」と知っていれば十分です。 |
⚠️ 頻出: WAF のアタッチ先として CloudFront、ALB、API Gateway の3つがよく問われます。EC2 インスタンスに直接 WAF を取り付ける選択肢は誤りです。
⑤AWS Shield(DDoS 対策)との違い ⚠️ 頻出
は、 攻撃からアプリケーションを守るためのサービスです。 が「リクエストの中身」を検査するのに対し、Shield は「大量のトラフィックでサービスを止めようとする攻撃」への防御を担当します。
Point
- DDoS = Distributed Denial of Service(分散型サービス妨害) の略です。
- 多数のコンピュータから大量のリクエストや通信を送り付け、サービスを利用できない状態に追い込む攻撃です。
- **Shield(シールド)は「盾」**という意味で、降り注ぐ攻撃トラフィックを盾で受け止めるイメージで覚えます。
- 和訳
- Denial: 拒否、否定
- Weblio英和辞書「denial」
| サービス | 主な保護対象 | 料金 | 判断ポイント |
|---|---|---|---|
| AWS WAF | ・ などアプリケーション層()への Web 攻撃 | です。 | リクエストの中身を条件で検査して制御したい場合に選びます。 |
| AWS Shield Standard | ネットワーク層・トランスポート層(L3/)の一般的な DDoS 攻撃 | 追加料金なしで、すべての AWS 利用者に自動で適用されます。 | 「自動」「無料」「基本的な DDoS 保護」というキーワードで選びます。 |
| AWS Shield Advanced | より大規模・高度な DDoS 攻撃 | 有料の追加サービスです。 | 専門チームの支援や、DDoS 起因の費用増への保護が必要な場合に選びます。 |
Shield Advanced は、、、、、 などを対象に保護を拡張できます。 Shield Response Team(SRT)と呼ばれる専門チームの支援や、DDoS 攻撃によるスケーリングで発生した費用への保護(コスト保護)が特徴です。
なお、複数の AWS アカウントにまたがって WAF や Shield Advanced の設定を一元管理したい場合は、 を使います。
⚠️ 頻出: 「追加料金なしで自動的に受けられる DDoS 保護」は Shield Standard、「専門チームの支援やコスト保護まで必要」は Shield Advanced、「SQL インジェクションや XSS への対策」は WAF です。
⑥セキュリティグループ・ネットワーク ACL との守る層の違い
とネットワーク も仮想ファイアウォールですが、 とは守る場所と検査できる内容が異なります。 セキュリティグループとネットワーク ACL は アドレス、ポート、プロトコルで通信を制御し、 リクエストの中身までは検査できません。 そのため、や のように「中身に攻撃が仕込まれた正常な見た目の HTTP リクエスト」は、WAF でなければ防げません。
| 機能 | 守る場所・層 | 検査できる内容 | 判断ポイント |
|---|---|---|---|
| AWS WAF | アプリケーション層()。・・ などの入り口です。 | HTTP リクエストの中身(URL、ヘッダー、ボディなど) | SQL インジェクション・XSS など Web アプリへの攻撃対策に選びます。 |
| セキュリティグループ | リソース単位の仮想ファイアウォールです。 | IP アドレス、ポート、プロトコル | などへの通信を許可する基本の制御に選びます。 |
| ネットワーク ACL | 境界です。 | IP アドレス、ポート、プロトコル | サブネット単位の許可・拒否に選びます。 |
セキュリティグループとネットワーク ACL の詳しい比較(との違いなど)は、セキュリティグループとネットワーク ACL のページで扱います。
⑦料金の考え方
は前払いのないのサービスです。 料金は主に次の要素で決まります。
| 課金に影響する要素 | 内容 |
|---|---|
| Web | 作成した Web ACL ごとに料金がかかります。 |
| ルール | Web ACL に追加したルールごとに料金がかかります。マネージドルールグループにも料金が設定されている場合があります。 |
| リクエスト | WAF が処理した Web リクエストの数に応じて課金されます。 |
は、Standard が追加料金なし、Advanced が有料という違いを押さえます。 「無料で使える 対策」と問われたら Shield Standard、「有料でも高度な DDoS 対策と支援が必要」なら Shield Advanced です。
試験対策
CLF の問題では、まず「何から守りたいのか」を確認します。 リクエストの中身に仕込まれた Web 攻撃なら 、大量トラフィックによる なら 、ポートや アドレスによる通信制御ならやネットワーク 、と整理すると選びやすくなります。
| 問題文のキーワード | 選ぶ機能・サービス | 理由 |
|---|---|---|
| ・ からの保護 | AWS WAF | アプリケーション層のリクエストの中身を検査できます。 |
| ・・ への Web 攻撃対策 | AWS WAF | これらのサービスに Web ACL を関連付けます。 |
| 特定の国や IP アドレスからの Web アクセスを制限 | AWS WAF | 送信元の条件でブロックできます。 |
| 一般的な Web 攻撃への対策を専門知識なしで導入 | WAF のマネージドルール | AWS などが維持する定義済みルールを使えます。 |
| 追加料金なしで自動的に受けられる DDoS 保護 | AWS Shield Standard | すべての AWS 利用者に自動で適用されます。 |
| DDoS 専門チームの支援・DDoS 起因の費用への保護 | AWS Shield Advanced | 有料で拡張された DDoS 対策を提供します。 |
| インスタンスへのポート単位の通信制御 | セキュリティグループ | リソース単位の通信制御は WAF の役割ではありません。 |
| 単位で特定の IP 範囲を拒否 | ネットワーク ACL | 拒否ルールを設定できるサブネット境界の制御です。 |
| 複数アカウントの WAF・Shield 設定を一元管理 | 組織全体へ保護ルールをまとめて適用できます。 |
よくある誤答のパターンは次のとおりです。
- 「ファイアウォール」という言葉だけでセキュリティグループを選ぶ誤りです。SQL インジェクションや XSS のようにリクエストの中身に関わる攻撃は、WAF でなければ防げません。
- WAF と Shield の混同です。WAF は Web 攻撃の中身を検査するサービス、Shield は DDoS への防御サービスです。「自動・無料の DDoS 保護」とあれば Shield Standard を選びます。
- WAF を EC2 インスタンスに直接アタッチする選択肢は誤りです。CloudFront、ALB、API Gateway などの入り口に関連付けます。