この記事でわかること
▪️AWS Certified Security - Specialty(SCS)問題を通じて、以下の知識を深掘り出来ます。
▫️ACM(AWS Certificate Manager)
▫️HTTP と HTTPS の違い (通信の暗号化の有無)
▫️SSL/TLS暗号化
問題と解答の理解手順
手順1 問題文の意図をイメージする
↓
手順2 重要なキーワードに注目する
↓
手順3 正解の分割解説
↓
手順4 不正解の選択肢を確認する
SCS問題
企業は、パブリックウェブアプリケーションをデプロイする準備ができています。
同社は AWS を使用し、Amazon EC2 インスタンス上でアプリケーションをホストする予定です。
同社は SSL/TLS 暗号化を使用する必要があります。
同社はすでに AWS Certificate Manager (ACM) を使用しており、
デプロイで使用するために証明書をエクスポートする予定です。
これらの要件を満たすために、アプリケーションの最適なデプロイを選択してください。
A(正解)
EC2 インスタンスを Application Load Balancer (ALB) の背後に配置します。
EC2 コンソールで、HTTPS と 443 を選択して、証明書を ALB に関連付けます。
B
EC2 インスタンスを Network Load Balancer (NLB) の背後に配置します。
EC2 コンソールで、HTTPS と 443 を選択して、証明書を NLB に関連付けます。
C
EC2 インスタンスを Application Load Balancer (ALB) の背後に配置します。
証明書を EC2 インスタンスに関連付けます。
D
EC2 インスタンスを Network Load Balancer (NLB) の背後に配置します。
証明書を EC2 インスタンスに関連付けます。
問題と解答の理解手順
手順1 問題文の意図をイメージする
会社が「インターネット向けのウェブサイトをAWS上に作りたい」と言っています。
又、ウェブサイトの安全を守るために暗号化(SSL/TLS)を使う必要があるとも言っています。
AWSでは「SSL証明書」というものを使う事で、安全な通信ができるようになります。
この証明書は、AWSの「ACM(AWS Certificate Manager)」サービスで管理されます。
この証明書をどこに設定するかが、この問題のポイントです!
手順2 重要なキーワードに注目する
ACM(AWS Certificate Manager)
▪️ウェブサイトやアプリを安全にするための証明書を管理するAWSサービスです。
▫️SSL/TLS証明書を作成し、ウェブサイトをHTTPSで保護できます。
▫️証明書の自動更新ができます。(手動での更新不要)
▫️AWSの他のサービスと連携できます。(例:ALB, CloudFrontなど)
▪️ACM でできること
▫️AWSが発行する証明書を取得し、そのままAWSのサービスで利用できます。
▪️AWS Private CA を使って証明書をエクスポートする
▫️内部ネットワークなど、特定の環境で使う証明書を作成できます。
▪️ACM のリージョン(地域)
▫️ACMの証明書は「リージョナルリソース」です。
▫️証明書は発行したリージョンのAWSサービスでしか使えません。
東京リージョンでALBを使うなら、そこで証明書を発行する必要があります。
▫️証明書はリージョン間でコピーできない(別のリージョンでは、再発行する必要あり)
▫️CloudFrontで使う場合は、「米国東部 (バージニア北部)」リージョンで発行が必要
※補足:参考サイト_1
HTTP と HTTPS の違い (通信の暗号化の有無)
▪️HTTP(ハイパーテキスト転送プロトコル)
▫️暗号化されていないため、第三者によるデータの盗聴や改ざんのリスクがあります。
▫️クライアント-サーバー通信のためのプロトコルまたは一連の通信規則です。
▫️ウェブサイトにアクセスすると、ブラウザが HTTP リクエストをウェブサーバーに
送信し、このウェブサーバーは HTTP レスポンスで応答します。
▫️ウェブサーバーとブラウザは、データをプレーンテキストとしてやり取りします。
▪️HTTPS(ハイパーテキスト転送プロトコルセキュア)
▫️HTTP より安全なバージョンまたは拡張版です。
▫️ブラウザとサーバーは、データを転送する前に安全で暗号化された接続を確立します。
※補足:参考サイト_2
SSL/TLS暗号化
▪️ウェブサイトとユーザー間の通信を暗号化し、安全性を確保するための
デジタル証明書です。これにより、第3者によるデータの盗聴や改ざんを
防ぐことができます。
▪️企業サイトにアクセスしてから暗号化通信を開始するまでの準備手順
▫️① パソコン(Webブラウザ)から企業サイトにアクセス、
ユーザーが「https://example.com」にアクセスすると、
Webブラウザが企業のWebサーバーに接続要求を送ります。
▫️② Webサーバーが「SSL証明書」と「公開鍵」を送信する
サーバーは「このサイトは安全ですよ」と証明するために、
SSL証明書と公開鍵をブラウザに送ります。
SSL証明書には、Webサイトの情報や、データを暗号化するための
「公開鍵」が含まれています。
▫️③ WebブラウザがSSL証明書を検証する
ブラウザは、証明書が本物かどうかを確認するために、
「認証局(CA)」の証明書と照らし合わせます。もし証明書が信用できない場合、
「このサイトは安全ではありません」と警告が出ます。
証明書がOKなら、次の④へ行きます。
▫️④ Webブラウザが「共通鍵(セッションキー)」を作る
共通鍵(セッションキー)とは、この通信の間だけ使う特別なカギのことです。
これを使うと、サーバーとパソコンの間の通信を暗号化できます。
▫️⑤ 共通鍵をサーバーに送る(暗号化して送信)
そのまま送ると盗まれるので、SSL証明書に含まれている公開鍵を使って「共通鍵」を
暗号化します。暗号化した共通鍵を、Webサーバーに送る。
▫️⑥ Webサーバーが「秘密鍵」を使って共通鍵を復号する
サーバーは、あらかじめ持っている「秘密鍵」を使って、共通鍵を復号化します。
これで、サーバーとパソコンの両方が同じ共通鍵を持つことになります。
▫️⑦ 共通鍵を使って安全に通信を開始
これで、WebブラウザとWebサーバーが共通鍵を使って、
データを暗号化した状態でやり取りできるようになります。
例、ログイン情報やクレジットカード情報を安全に送信できます。
※補足:参考サイト_3
手順3 正解の分割解説
A(正解):「EC2をALBの後ろに置いて、ALBに証明書を設定する」
▪️AWSの仕様として、ACMの証明書はEC2の中では使えません。
なので、証明書を設定できる場所が必要になります。
証明書を設定できる場所は「ALB(アプリケーションロードバランサー)」
▪️「ALB」を使うと、ACMの証明書を設定して、安全にウェブサイトを公開できます。
ALBは、ウェブサイトを見に来た人とEC2の間で「守りの壁」になるイメージです。
▪️HTTPSをALBで処理する
ウェブサイトを安全にするには「HTTPS」を使う必要があります。
ALBなら「証明書」を設定できるので、HTTPSを正しく使えます
手順4 不正解の選択肢を確認する
B:EC2 インスタンスを NLB の背後に配置します。EC2 コンソールで、HTTPS と 443 を選択して、証明書を NLB に関連付けます。
▪️NLB は、トランスポート層(Layer 4)で動作し、その負荷分散に特化しています。
SSL/TLS のターミネーションのような Layer 7(アプリケーション層) の
高度な機能が求められる場合、ALB の使用が推奨されます。
C:EC2 インスタンスを Application Load Balancer (ALB) の背後に配置します。証明書を EC2 インスタンスに関連付けます。
D:EC2 インスタンスを Network Load Balancer (NLB) の背後に配置します。証明書を EC2 インスタンスに関連付けます。
▪️ACM が直接管理する証明書を EC2 インスタンスに適用することはできません。
▫️ACM で生成された証明書は 秘密鍵が ACM によって管理されているため、
証明書をエクスポートして EC2 インスタンスに適用することはできません。
※補足:参考サイト_4
参考文献
参考サイト_1
参考サイト_2
参考サイト_3
参考サイト_4
この記事を書いた理由
これまで以下のAWS資格を取得し、2024年12月から2社目のIT会社に転職成功。
今はAWSを活用したシステム構築の支援業務を行なっています。
本記事は、業務で行った内容の復習とアウトプットを兼ねて作成しました。
既に合格済のAWS資格
2024年04月11日「AWS Certified Cloud Practitioner」
2024年06月27日「AWS Certified Solutions Architect - Associate」
2024年08月13日「AWS Certified Sysops Administrator - Associate」
2024年11月19日「AWS Certified Solutions Architect - Professional」