Q29 — AWS SAP-C02 第2章
第 29/75 問 | ← 第2章
Q179. ある企業が、Amazon RDS for PostgreSQLデータベースにアクセスするAWS Lambda関数を展開しようとしています。この企業は、Lambda関数をQA環境および本番環境で起動する必要があります。また、アプリケーションコード内に認証情報を露出してはならず、パスワードの自動ローテーションも必須です。 これらの要件を満たす解決策はどれですか?
- A. 両環境(QAおよび本番)のデータベース認証情報を、AWS Systems Manager Parameter Storeに格納します。 AWS Key Management Service (AWS KMS) の暗号化キーを使用して認証情報を暗号化します。Lambda関数のアプリケーションコード(Python用AWS SDK:Boto3)内で、Parameter Storeのパラメータから認証情報を取得します。Lambda関数に、Parameter Storeパラメータへのアクセス権限を付与するロールをアタッチします。
- B. 両環境(QAおよび本番)のデータベース認証情報を、AWS Secrets Managerに格納します。QA環境と本番環境それぞれに個別のシークレット(キー)を作成し、自動ローテーションを有効化します。Lambda関数の環境変数として、Secrets Managerのシークレットを参照するように設定します。 ✓
- C. 両環境(QAおよび本番)のデータベース認証情報を、AWS Key Management Service (AWS KMS) に格納します。 ローテーションを有効化します。Lambda関数の環境変数として、AWS KMSに格納された認証情報を参照するように設定します。
- D. QA環境と本番環境それぞれに専用のAmazon S3バケットを作成します。S3バケットに対して、AWS KMSキーによるサーバー側暗号化(SSE-KMS)を有効化します。各Lambda関数のアプリケーションコードが、対応する環境の正しい認証情報を取得できるよう、オブジェクト名に一貫した命名規則を適用します。各Lambda関数の実行ロールに、Amazon S3へのアクセス権限を付与します。
正解: B. 両環境(QAおよび本番)のデータベース認証情報を、AWS Secrets Managerに格納します。QA環境と本番環境それぞれに個別のシークレット(キー)を作成し、自動ローテーションを有効化します。Lambda関数の環境変数として、Secrets Managerのシークレットを参照するように設定します。
解説
この解決策では、QA環境および本番環境のデータベース認証情報をAWS Secrets Managerに格納します。Secrets Managerは、パスワードなどのシークレットを安全かつスケーラブルに管理するためのサービスであり、自動パスワードローテーション機能を有効化することで、要件である「自動的なパスワードローテーション」を満たします。また、環境ごとに個別のシークレットを定義することで、認証情報の分離が可能です。Lambda関数は、環境変数経由でSecrets Managerのシークレットを参照するため、アプリケーションコード内に認証情報が露出することはありません。さらに、今後Lambda関数や環境が追加された場合にも、このアプローチは管理・拡張が容易であり、複数のサービスにまたがるシークレット管理を簡素化します。