AWS認定資格 WEB問題集&徹底解説
ソリューションアーキテクト-プロフェッショナル
問題文と選択肢
・SSL 証明書とその秘密鍵を管理できるのはセキュリティ担当者のみとする
・EC2 インスタンスの管理者(OS の root 権限を持つ)は証明書と秘密鍵にアクセスできないようにする
という役割分担を実現したいと考えています。
この要件を満たす最も適切なソリューションはどれですか。
- セキュリティ担当者が管理する Amazon S3 バケットに証明書を保存し、EC2 インスタンスの IAM ロールでアクセスを許可する
- AWS CloudHSM を使用して証明書を保管し、Web サーバーの起動時に証明書を取得するよう設定する
- Web サーバー上で証明書ファイルへのアクセスをセキュリティ担当者のみに制限するよう OS のシステム権限を設定する
- Elastic Load Balancing (ELB) で SSL 終端を行い、IAM ポリシーを使用してセキュリティ担当者のみに証明書ストアへのアクセスを許可する
A. セキュリティ担当者が管理する Amazon S3 バケットに証明書を保存し、EC2 インスタンスの IAM ロールでアクセスを許可する
証明書を Amazon S3 に置いても、それを取得するのはEC2 インスタンスの IAM ロールである。EC2 の管理者はインスタンスにログインでき、インスタンスプロファイルの認証情報を使って同じ証明書をダウンロードできる。
さらに取得後の証明書と秘密鍵はインスタンスのファイルシステム上に平文で存在するため、root 権限を持つ管理者から隠すことはできない。
保管場所を S3 に移しただけで職務分離は実現しておらず、要件を満たさない。
B. AWS CloudHSM を使用して証明書を保管し、Web サーバーの起動時に証明書を取得するよう設定する
AWS CloudHSM は専用ハードウェアで鍵を保護する強力なサービスだが、この選択肢は「Web サーバーの起動時に証明書を取得する」としており、結局インスタンス上に証明書が配置されるため EC2 管理者から保護できない。
(CloudHSM 本来の使い方である SSL オフロードでは秘密鍵は HSM から出ないが、本選択肢はその構成になっていない。)
加えて CloudHSM はクラスターの運用コストと複雑性が高く、この要件に対しては明らかに過剰である。
C. Web サーバー上で証明書ファイルへのアクセスをセキュリティ担当者のみに制限するよう OS のシステム権限を設定する
OS のファイルパーミッションで証明書へのアクセスを制限しても、EC2 インスタンスの管理者は root(または sudo)権限を持つため、パーミッションを自分で書き換えて読み取れてしまう。
「OS の権限設定で管理者から隠す」という発想自体が成立せず、職務分離の統制として機能しない。
さらにインスタンスが増えるたびに各サーバーで設定・監査が必要になり、運用も破綻しやすい。
D. Elastic Load Balancing (ELB) で SSL 終端を行い、IAM ポリシーを使用してセキュリティ担当者のみに証明書ストアへのアクセスを許可する
ELB で SSL 終端すれば、証明書と秘密鍵は EC2 インスタンス上に一切存在しない。証明書は ELB に関連付けられた証明書ストア(AWS Certificate Manager / IAM 証明書ストア)で管理され、EC2 側は HTTP で受け取るだけになる。
証明書ストアの操作権限は IAM ポリシーでセキュリティ担当者のみに限定でき、EC2 管理者にはその API 権限を与えない。これにより「証明書はセキュリティ担当者、インスタンスは EC2 管理者」という職務分離が AWS の権限境界として強制される。
SSL 処理を ELB にオフロードすることでインスタンスの CPU 負荷も下がるため、要件を満たす最も適切なソリューション。
構成図
クライアント ──HTTPS──▶ ELB(SSL 終端・証明書を配置) ──HTTP──▶ EC2(秘密鍵を持たない)
▲ 証明書を関連付け
セキュリティ担当者 ──IAM で許可──▶ 証明書ストア(ACM / IAM)
EC2 管理者 ──IAM で不許可──✕(証明書に触れない)
インスタンスに鍵を置く限り、root には勝てない。証明書は ELB(ACM/IAM 証明書ストア)に預け、IAM で管理者を分ける。
正解への思考ルート
問題文から要件を抽出し、選択肢の適否を判断するのがポイントです。| 要件 | 判断ポイント |
|---|---|
| EC2 管理者(root 権限を持つ)に証明書と秘密鍵を見せたくない | インスタンス上に鍵が置かれる案はすべて失格。root はファイル権限を上書きできる →選択肢(B・C)を消す |
| セキュリティ担当者だけが証明書を管理する(職務分離) | 分離の統制はOS の権限ではなく IAM ポリシーで行う。証明書ストアへの API 権限を担当者に限定する →選択肢(D)が正解 |
| EC2 インスタンスの IAM ロールで証明書を取得させる案 | インスタンスにログインできる管理者は、そのロールの権限をそのまま利用できるため隠蔽にならない →選択肢(A)を消す |
| SSL 対応(HTTPS 終端)をどこで行うか | ELB で SSL 終端すれば、証明書はロードバランサー側で完結し、インスタンスは秘密鍵を一切持たない →選択肢(D)が正解 |
ひっかけポイント
- 選択肢 A は「セキュリティ担当者が管理する S3 バケット」という言い回しで分離できたように錯覚させるが、読み取るのは EC2 のロールであり、結局インスタンス上に鍵が落ちる
- 選択肢 B の CloudHSM は「一番セキュアそう」に見える最強の引っかけ。しかし本選択肢は「起動時に証明書を取得する」=鍵をインスタンスに配る構成であり、要件を満たさない。CloudHSM が正解になるのは秘密鍵を HSM から出さずに SSL オフロードする構成の場合
- 選択肢 C の「システム権限で制限」は、OS 権限で root を制限しようとする自己矛盾。AWS 試験では「インスタンス管理者から守る」=インスタンスの外に出すが定石
- 「役割分担(職務分離)」というキーワードが出たら、IAM による権限境界で表現できているかを確認する。アプリやサーバー内部の設定による制限は統制として弱い
出題バリエーション
同じ知識が本番では条件を変えて出題されます。| 問題文がこう変わったら | 正解はこう変わる |
|---|---|
| 「秘密鍵を絶対に AWS 側にも持たせたくない(FIPS・鍵の完全な自己管理が要件)」 | AWS CloudHSM + SSL オフロード(鍵は HSM から出ない)が正解軸に。 |
| 「証明書の更新(更新忘れ)を自動化したい」 | AWS Certificate Manager (ACM) のマネージド更新が正解軸に。ELB/CloudFront への関連付けが前提。 |
| 「エンドツーエンドで暗号化し、ELB からバックエンドまで HTTPS にしたい」 | ELB のバックエンド認証(HTTPS リスナー+インスタンス側証明書)が必要になり、インスタンスにも証明書を置く設計に変わる。 |
| 「DB パスワードなどアプリが使う秘密情報を安全に配布したい」 | AWS Secrets Manager(自動ローテーション)や SSM パラメータストアが正解軸に。 |
| 「TCP/UDP のまま低レイテンシーで負荷分散しつつ TLS 終端したい」 | Network Load Balancer の TLS リスナー(ACM 証明書)が正解軸に。 |
・SSL 証明書とその秘密鍵を管理できるのはセキュリティ担当者のみとする
・EC2 インスタンスの管理者(OS の root 権限を持つ)は証明書と秘密鍵にアクセスできないようにする
という役割分担を実現したいと考えています。
この要件を満たす最も適切なソリューションはどれですか。
- セキュリティ担当者が管理する Amazon S3 バケットに証明書を保存し、EC2 インスタンスの IAM ロールでアクセスを許可する
- AWS CloudHSM を使用して証明書を保管し、Web サーバーの起動時に証明書を取得するよう設定する
- Web サーバー上で証明書ファイルへのアクセスをセキュリティ担当者のみに制限するよう OS のシステム権限を設定する
- Elastic Load Balancing (ELB) で SSL 終端を行い、IAM ポリシーを使用してセキュリティ担当者のみに証明書ストアへのアクセスを許可する