Q14 — AWS SAA-C03 第17章
第 14/89 問 | ← 第17章
Q1314. ソリューションアーキテクトが、Amazon EC2上で実行されるスケーラブルなWebアプリケーションを設計しています。アプリケーションのユーザーはログイン後に同じサーバーに接続し続けなければなりません。また、アプリケーションは一般的な攻撃(エクスプロイト)から保護される必要があります。これらの要件を満たすソリューションはどれですか?
- A. Application Load Balancer(ALB)とターゲットグループを作成します。このターゲットグループをAuto Scalingグループにアタッチします。ターゲットグループで期間ベースのステッキネス(stickiness)を有効化します。ALBをAWS Network Firewallファイアウォールに関連付けます。
- B. Network Load Balancer(NLB)とターゲットグループを作成します。このターゲットグループをAuto Scalingグループにアタッチします。NLBをAWS WAFのWeb ACLに関連付けます。
- C. Application Load Balancer(ALB)とターゲットグループを作成します。このターゲットグループをAuto Scalingグループにアタッチします。ターゲットグループでアプリケーションベースのステッキネスを有効化します。ALBをAWS WAFのWeb ACLに関連付けます。 ✓
- D. Network Load Balancer(NLB)とターゲットグループを作成します。このターゲットグループをAuto Scalingグループにアタッチします。NLBでターゲットグループのステッキネスを有効化します。NLBをAWS Network Firewallファイアウォールに関連付けます。
正解: C. Application Load Balancer(ALB)とターゲットグループを作成します。このターゲットグループをAuto Scalingグループにアタッチします。ターゲットグループでアプリケーションベースのステッキネスを有効化します。ALBをAWS WAFのWeb ACLに関連付けます。
解説
ログイン後のユーザーのステッキネス(セッション持続性)と、一般的な攻撃からの保護という2つの要件を満たす正しいソリューションは、選択肢Cです:「Application Load Balancer(ALB)とターゲットグループを作成し、Auto Scalingグループにアタッチ。ターゲットグループでアプリケーションベースのステッキネスを有効化。ALBをAWS WAFのWeb ACLに関連付ける」。 ■ 選択肢Cが正しい理由: ・ログイン後のユーザーのステッキネス(セッション持続性) Application Load Balancer(ALB)は、Cookieを用いたアプリケーションベースのステッキネスをサポートしており、ユーザーがログイン後に同一のEC2インスタンスに継続してルーティングされることを保証します。 期間ベースのステッキネス(選択肢A)は、固定のタイムアウトに基づくため、実際のセッション存続時間と一致しない可能性があり、不適切です。 Network Load Balancer(NLB)(選択肢BおよびD)はCookieベースのステッキネスをサポートせず、IPアドレスベースのステッキネスのみを提供します。これは、モバイル端末やNAT環境下でユーザーのIPが変更される場合など、Webアプリケーションでは信頼性が低くなります。 ・一般的な攻撃からの保護 AWS WAF(Web Application Firewall)はALBと統合可能で、SQLインジェクション、XSS、CSRFなどのアプリケーション層における一般的な攻撃を、事前構成済みルール(例:OWASP Top 10対策)でブロックできます。 一方、AWS Network Firewall(選択肢AおよびD)はネットワーク層(L3)/トランスポート層(L4)で動作し、DDoS攻撃やポートスキャンなどVPC全体のネットワークレベル保護には適していますが、アプリケーション層の攻撃には対応できません。 ・スケーラビリティとAuto Scaling ALBのターゲットグループをAuto Scalingグループにアタッチすることで、トラフィックに応じて動的にスケールしつつ、ステッキネスを維持できます。 ■ 他の選択肢が不適切な理由: A:期間ベースのステッキネス+AWS Network Firewall → 固定タイムアウトにより、実際には有効なセッション中でもサーバーが切り替わる可能性があります。 → AWS Network Firewallはアプリケーション層攻撃(例:SQLインジェクション)を防げません。 B:NLB+AWS WAF Web ACL → NLBはCookieベースのステッキネスをサポートしないため、Webアプリケーションにおけるセッション持続性が信頼できません。 → AWS WAFはNLBにも関連付け可能ですが、HTTP/HTTPSトラフィック向けの保護としては、ALBやCloudFrontとの組み合わせが標準的かつ推奨されます。 D:NLB+ターゲットグループのステッキネス+AWS Network Firewall → NLBのIPベースステッキネスは、ユーザーのIP変更(例:Wi-Fiからモバイル回線への切り替え)に対応できず、Webセッションには不向きです。 → AWS Network Firewallはアプリケーション層の脅威に対して無力です。 ■ 選択肢Cの実装手順概要: 1. ALBのデプロイ:パブリックサブネット内にALBを作成。HTTP/HTTPSリスナーとEC2インスタンスを指すターゲットグループを設定。 2. アプリケーションベースのステッキネス有効化:ターゲットグループ設定で「アプリケーションベースのステッキネスを有効化」を選択。「AWSALB」(デフォルトCookie)またはカスタムCookie名を指定し、セッションタイムアウトに合わせたTTL(例:1時間)を設定。 3. AWS WAFの関連付け:SQLi・XSS・サイズ制約などに対応するルールを含むWeb ACLを作成し、ALBのリスナーにアタッチ。 4. Auto Scalingの設定:Webアプリケーションを実行するEC2インスタンスでAuto Scalingグループを作成。CPU使用率などの指標に基づくスケーリングポリシーを設定し、ALBのターゲットグループにアタッチ。 ■ 補足考慮事項: ・Cookieのセキュリティ:XSS攻撃防止のため、「Secure」および「HttpOnly」属性を設定したCookieを使用。 ・セッション複製:Tomcatなどの分散アプリケーションでは、セッション複製機能を有効化するか、Amazon ElastiCache(Redis)など外部ストアにセッションを保存することを推奨。 ・WAFルール管理:AWS Managed Rules(例:AWSManagedRulesCommonRuleSet)を定期的に更新し、最新の脅威に対応。 ■ 結論: 選択肢Cは、信頼性の高いセッション持続性(アプリケーションベースのステッキネス)とアプリケーション層のセキュリティ(AWS WAF)を同時に実現できる唯一のソリューションであり、要件を最も適切に満たします。