Udemy講師クーポン配布中。詳しくはこちら(AIP問題集追加しました)

【無料】AWS ANS-C01練習問題10問|図解解説付き|Udemy講師作成

AWS ANS無料問題集です。正解と解説を確認する際は右側のボタンを押下してください。

問題集の完全版は以下Udemyにて発売しているためお買い求めください。問題集への質問はUdemyのQA機能もしくはUdemyのメッセージにて承ります。Udemyの問題1から10問抜粋しております。

多くの方にご好評いただき、講師評価 4.5/5.0 を獲得できております。ありがとうございます。

特別価格: 通常2,600円1,500円

講師クーポン適用で42%OFF

講師クーポン【構成図解付き】出題範囲網羅+AWS ANS-C01日本語実践問題220問 (Advanced Networking)

AWS ANS問題集サムネ

この資格を活かしたキャリア情報

ANS資格の取得後にどんなキャリアが開けるか、詳しくはこちら:
→ ANS合格者の転職市場価値と求人傾向

AWS資格全体のキャリア活用法:
→ AWS資格は転職・キャリアアップでどう活きる?資格別市場価値と実体験

問題文:
あるオンライン証券会社は、顧客向けの株式売買プラットフォームを新しいAWSアカウントへ移行しています。プラットフォームは単一のAWSリージョン内にある1つのVPCと複数のアベイラビリティゾーンに展開されます。アプリケーションはプライベートサブネットのAmazon EC2インスタンスで稼働し、各アベイラビリティゾーンに複数のインスタンスがあります。1日あたり数万人の投資家がWebブラウザからHTTPSで接続して売買注文を出します。取引の途中経過をセッションに保持しているため、同じクライアントセッションから届くすべての接続は同じEC2インスタンスに固定する必要があります。また、金融業界のコンプライアンス要件を満たすため、クライアントとアプリケーションの間の通信は、アプリケーションが保有するSSL証明書でエンドツーエンドに暗号化しなければなりません。これらの要件を満たすソリューションはどれですか。

選択肢:
A. Network Load Balancerを作成します。ターゲットグループを作成し、プロトコルをTCP、ポートを443に設定します。セッションアフィニティ(スティッキーセッション)を有効化します。EC2インスタンスをターゲットとして登録します。リスナーを作成し、プロトコルをTCP、ポートを443に設定します。SSL証明書をEC2インスタンス側に配置して終端します。

B. Application Load Balancerを作成します。ターゲットグループを作成し、プロトコルをHTTP、ポートを80に設定します。アプリケーションCookie方式のセッションアフィニティ(スティッキーセッション)を有効化します。EC2インスタンスをターゲットとして登録します。HTTPSリスナーを作成し、AWS Certificate Manager(ACM)で取得した証明書をリスナーに割り当てて、デフォルトアクションをターゲットグループへの転送に設定します。

C. Network Load Balancerを作成します。ターゲットグループを作成し、プロトコルをTLS、ポートを443に設定します。セッションアフィニティ(スティッキーセッション)を有効化します。EC2インスタンスをターゲットとして登録します。リスナーを作成し、プロトコルをTLS、ポートを443に設定します。ACMで取得した証明書をリスナーに割り当てます。

D. Application Load Balancerを作成します。ターゲットグループを作成し、プロトコルをHTTPS、ポートを443に設定します。アプリケーションCookie方式のセッションアフィニティ(スティッキーセッション)を有効化します。EC2インスタンスをターゲットとして登録します。HTTPリスナーを作成し、リスナーのポートを443に設定して、デフォルトアクションをターゲットグループへの転送に設定します。

正解:A

A. Network Load Balancerを作成します。ターゲットグループを作成し、プロトコルをTCP、ポートを443に設定します。セッションアフィニティ(スティッキーセッション)を有効化します。EC2インスタンスをターゲットとして登録します。リスナーを作成し、プロトコルをTCP、ポートを443に設定します。SSL証明書をEC2インスタンス側に配置して終端します。

正解 Network Load BalancerをTCPリスナーとして構成すると、暗号化されたトラフィックを復号せずにEC2インスタンスへ転送できます。これにより、クライアントからEC2インスタンスまでのエンドツーエンド暗号化が保たれます。SSL証明書はEC2インスタンス側に置くため、アプリケーション層での暗号化が可能です。また、NLBはセッションアフィニティをサポートしており、同じクライアントからの接続を同じインスタンスに固定します。

B. Application Load Balancerを作成します。ターゲットグループを作成し、プロトコルをHTTP、ポートを80に設定します。アプリケーションCookie方式のセッションアフィニティ(スティッキーセッション)を有効化します。EC2インスタンスをターゲットとして登録します。HTTPSリスナーを作成し、AWS Certificate Manager(ACM)で取得した証明書をリスナーに割り当てて、デフォルトアクションをターゲットグループへの転送に設定します。

不正解 Application Load BalancerのHTTPSリスナーは、ロードバランサーの位置でTLSを終端します。ターゲットグループがHTTPのため、ALBからEC2インスタンスへは平文のHTTPで転送され、ALB以降の区間が暗号化されません。したがって、エンドツーエンド暗号化の要件を満たせません。

C. Network Load Balancerを作成します。ターゲットグループを作成し、プロトコルをTLS、ポートを443に設定します。セッションアフィニティ(スティッキーセッション)を有効化します。EC2インスタンスをターゲットとして登録します。リスナーを作成し、プロトコルをTLS、ポートを443に設定します。ACMで取得した証明書をリスナーに割り当てます。

不正解 Network Load BalancerのTLSリスナーは、ロードバランサーの位置でTLSを終端して復号するため、クライアントからアプリケーションまでのエンドツーエンド暗号化にはなりません。また、TLSリスナーではスティッキーセッションがサポートされていません。NLBでスティッキーセッションを使うにはTCPリスナーが必要です。

D. Application Load Balancerを作成します。ターゲットグループを作成し、プロトコルをHTTPS、ポートを443に設定します。アプリケーションCookie方式のセッションアフィニティ(スティッキーセッション)を有効化します。EC2インスタンスをターゲットとして登録します。HTTPリスナーを作成し、リスナーのポートを443に設定して、デフォルトアクションをターゲットグループへの転送に設定します。

不正解 HTTPリスナーは平文のHTTPトラフィックを受け付けるリスナーであり、ポート443で構成してもTLSハンドシェイクは行われません。クライアントがHTTPSで接続するという前提が満たされないうえ、クライアントからロードバランサーまでの区間が暗号化されないため、エンドツーエンド暗号化の要件からも外れます。ターゲットグループをHTTPSにしても、入口が平文である以上は要件を満たせません。

全体的な説明

問われている要件

  • 数万人規模のHTTPS接続を、複数のアベイラビリティゾーンにあるEC2インスタンスへ分散すること
  • 同じクライアントセッションからの接続を常に同じEC2インスタンスへ固定すること(セッションアフィニティ)
  • クライアントからアプリケーションまでの通信を、途中で復号せずエンドツーエンドで暗号化したまま保つこと
  • 復号にはアプリケーションが保有するSSL証明書を使用し、コンプライアンス要件を満たすこと

前提知識

Elastic Load Balancingの種類について

  • Application Load Balancer(ALB)はレイヤー7で動作し、パス・ホストヘッダー・クエリ文字列などHTTPの内容に基づくルーティングを行います
  • Network Load Balancer(NLB)はレイヤー4で動作し、TCP・UDP・TLSを超低レイテンシーで処理し、アベイラビリティゾーンごとに固定IPアドレスを持ちます
  • Gateway Load Balancer(GWLB)はGENEVE(ポート6081)でサードパーティ製の仮想アプライアンスへトラフィックを受け渡す用途で、この要件には関係しません

TLSの終端位置について

  • ALBのHTTPSリスナーとNLBのTLSリスナーは、ロードバランサーの位置でTLSハンドシェイクを終端して復号します
  • 終端した後の区間はターゲットグループのプロトコル次第で、HTTPやTCPを指定すれば平文、HTTPSやTLSを指定すればロードバランサーが再暗号化して転送します
  • NLBのTCPリスナーは暗号化されたパケットを解釈せずそのまま転送するため、クライアントとEC2インスタンスの間で1つのTLSセッションが維持されます
  • エンドツーエンド暗号化を求められる場合は、復号する主体をアプリケーション側に置き、SSL証明書もそのインスタンスに配置します

セッションアフィニティについて

  • ALBはロードバランサー生成CookieまたはアプリケーションCookieをHTTPヘッダーに載せ、同じクライアントを同じターゲットへ振り分けます
  • NLBはターゲットグループ属性の stickiness.enabled を有効にして使用し、stickiness.type に指定できる値は source_ip です
  • NLBのスティッキーセッションはTLSリスナーとQUICリスナーではサポートされないため、TCPリスナーと組み合わせます
  • 送信元IPを基準にするため、同一のNATデバイスの背後にいるクライアントは同じターゲットへ集中しやすい点に注意します

アーキテクチャ図の解説

アーキテクチャ図

NLBのTCPリスナーは暗号化トラフィックを復号せずに通過させ、クライアントからEC2インスタンスまでのエンドツーエンド暗号化を維持します。クライアントのHTTPS接続はTCPリスナー(ポート443)に届き、NLBは内容に手を加えず各アベイラビリティゾーンのEC2インスタンスへ転送します。SSL証明書はEC2インスタンス側に置かれ、復号はアプリケーションまで到達してから行われます。セッションアフィニティにより、同じクライアントの接続は常に同じインスタンスへ固定されます。もしTLSリスナーやHTTPSリスナーを選ぶと、ロードバランサーでTLSが終端され、LBからEC2インスタンスまでの区間が平文になってエンドツーエンド暗号化が崩れます。TLSの終端位置で正解が分かれます。

解くための考え方

この問題は、エンドツーエンド暗号化・セッションアフィニティ・証明書の配置という3つの条件を同時に満たす組み合わせを探す設問です。まず着目すべきは暗号化の要件です。「クライアントとアプリケーションの間をエンドツーエンドで暗号化する」という表現は、途中のロードバランサーで復号してはならないという意味なので、ロードバランサーでTLSを終端するALBのHTTPSリスナーとNLBのTLSリスナーはこの時点で外れます。残るのは、暗号化されたパケットをそのまま転送するNLBのTCPリスナー(ポート443)です。次にセッションアフィニティを確認します。ALBはCookieで実現しますがTLSを終端しなければHTTPヘッダーを操作できず、暗号化要件と両立しません。NLBはターゲットグループ属性で送信元IPベースのスティッキーセッションを有効にでき、TCPリスナーであればこの機能が使えます。TLSリスナーではスティッキーセッションがサポートされない点も、TCPリスナーを選ぶ根拠になります。最後に証明書の配置です。復号がEC2インスタンスで行われる以上、SSL証明書はACMでリスナーに割り当てるのではなく、アプリケーションが動くインスタンス側へ配置する必要があり、これは「アプリケーションが保有するSSL証明書」という条件とも一致します。以上の3点がすべて揃うのは、TCPリスナーのNLBとインスタンス側証明書を組み合わせた構成です。

参考資料

目次

スポンサーリンク

以下スポンサーリンクです。

この記事がお役に立ちましたら、コーヒー1杯分(300円)の応援をいただけると嬉しいです。いただいた支援は、より良い記事作成のための時間確保や情報収集に活用させていただきます。

目次