Q61 — AWS SAA-C03 第3章
第 61/65 問 | ← 第3章
Q191. ある会社がAWS上で2層構成のWebアプリケーションを開発しています。開発者は、このアプリケーションをAmazon EC2インスタンス上にデプロイし、そのEC2インスタンスからバックエンドのAmazon RDSデータベースに直接接続しています。同社は、アプリケーション内にデータベースの認証情報をハードコードしてはいけません。また、データベースの認証情報を定期的に自動でローテーションする仕組みを実装しなければなりません。これらの要件を満たすうち、運用オーバーヘッドが最も少ないソリューションはどれですか?
- A. データベースの認証情報をインスタンスメタデータに格納します。Amazon EventBridge(Amazon CloudWatch Events)ルールを使用して、RDSの認証情報とインスタンスメタデータを同時に更新するようスケジュールされたAWS Lambda関数を実行します。
- B. データベースの認証情報を暗号化されたAmazon S3バケット内の設定ファイルに格納します。Amazon EventBridge(Amazon CloudWatch Events)ルールを使用して、RDSの認証情報と設定ファイル内の認証情報を同時に更新するようスケジュールされたAWS Lambda関数を実行します。ロールバック可能なように、S3 Versioningを有効にします。
- C. データベースの認証情報をAWS Secrets Managerのシークレットとして格納します。シークレットに対して自動ローテーションを有効にします。EC2インスタンスロールに、このシークレットへのアクセス権限を付与します。 ✓
- D. データベースの認証情報をAWS Systems Manager Parameter Storeの暗号化パラメータとして格納します。暗号化パラメータに対して自動ローテーションを有効にします。EC2インスタンスロールに、この暗号化パラメータへのアクセス権限を付与します。
正解: C. データベースの認証情報をAWS Secrets Managerのシークレットとして格納します。シークレットに対して自動ローテーションを有効にします。EC2インスタンスロールに、このシークレットへのアクセス権限を付与します。
解説
データベースの認証情報を安全に保管し、定期的な自動ローテーションを最小限の運用負荷で実現するには、AWS Secrets Managerに認証情報をシークレットとして格納し、自動ローテーション機能を有効にするのが最適です。また、EC2インスタンスロールにそのシークレットへのアクセス権限を付与します。したがって、正解は選択肢Cです。選択肢Aは、認証情報をインスタンスメタデータに保存し、EventBridgeとLambdaでローテーションを実装する方法ですが、これはAWS Secrets Managerを利用する場合と比べて、設定管理の手間が大きく、運用負荷が高くなります。選択肢Bは、暗号化されたS3バケット内の設定ファイルに認証情報を保存し、同様にEventBridgeとLambdaでローテーションを実装する方法ですが、これもAWS Secrets Managerに比べて追加の管理作業(例:バージョン管理、アクセス制御、暗号化キー管理など)が必要であり、運用負荷が高くなります。選択肢Dは、Systems Manager Parameter Storeの暗号化パラメータで認証情報を管理し、自動ローテーションを有効にする方法ですが、Parameter Storeは主に構成パラメータ向けに設計されており、シークレット管理の専用サービスではないため、セキュリティ機能や使いやすさの面でAWS Secrets Managerほど最適ではありません。AWS Secrets Managerを用いてシークレットを格納し、自動ローテーションを有効にすることで、手動介入なしに認証情報の定期的な更新が保証され、EC2ロールによる安全なアクセス制御も可能になります。これにより、アプリケーション内への認証情報のハードコーディングを回避しつつ、最小限の運用オーバーヘッドで要件を完全に満たすことができます。