DVAAWSのサービスを使用した開発
ある企業のLambda関数がAmazon RDS MySQLデータベースに接続しています。セキュリティ審査の結果、以下の要件が定められました。
・データベース認証情報を30日ごとに自動的にローテーションする
・ローテーション中もアプリケーションのダウンタイムを発生させない
・認証情報をアプリケーションコードや環境変数に直接記述しない
この要件を最小限の運用負荷で実現する方法はどれですか?
AAWS Secrets Manager に認証情報を保存し、RDS向け自動ローテーションを有効にする。Lambda関数はSDK経由で毎回シークレットを取得してDBに接続する
✓ 正解
Secrets ManagerはRDS向け自動ローテーションをネイティブサポートし、ダウンタイムなしのローテーション(二重書き込み方式)・バージョン管理・アクセスログをすべて提供します。カスタム実装不要で最小限の運用負荷で全要件を満たせます。
BAWS Systems Manager Parameter Store(SecureString)に認証情報を保存し、EventBridgeルールで30日ごとにローテーション用Lambda関数を起動して認証情報を更新する
SSM Parameter Storeはシークレットを安全に保存できますが、RDS認証情報の自動ローテーション機能が組み込まれていません。EventBridge+Lambdaで自前実装する場合、ダウンタイム防止ロジックも含めた開発・運用コストが増大します。
CLambda関数の環境変数にKMSで暗号化した認証情報を格納し、AWS CLIスクリプトを使って30日ごとに環境変数の値を自動更新する
Lambda環境変数は認証情報を格納できますが、ローテーション時には関数の更新・再デプロイが必要です。更新処理中に古い認証情報が無効化されるタイミングでダウンタイムが発生するリスクがあり、要件を満たせません。
D認証情報をAWS KMSで暗号化してS3に保存し、Lambda起動時にS3から取得してKMSで復号する。ローテーション用のLambda関数を別途30日ごとに起動して認証情報を生成・更新する
S3+KMSによるカスタム実装は技術的に可能ですが、ローテーション中のダウンタイム防止・新旧認証情報の並存管理・アクセスログなど、Secrets Managerが内蔵する機能をすべて再実装する必要があり、最小限の運用負荷という要件に反します。
解説
AWS Secrets ManagerはRDS・Redshift・DocumentDBなどのデータベース認証情報の自動ローテーションをネイティブにサポートしています。ローテーションは内部でLambda関数を使用し、「二重書き込み(Double-write)」方式で古い認証情報と新しい認証情報を一時的に並存させることでダウンタイムなしにローテーションします。Lambda関数はSDKで毎回最新シークレットを取得するため、認証情報の変更を意識せずに動作します。バージョン管理・CloudTrail連携・アクセスログも提供されます。
選択肢BのSSM Parameter Storeはシークレットの保存はできますが、RDS認証情報の自動ローテーション機能は内蔵されていません。ローテーション処理を自前で実装する必要があり運用負荷が高くなります。
選択肢CのLambda環境変数への格納は、ローテーション時に関数の再デプロイが必要となりダウンタイムリスクがあり、スクリプト管理の運用負荷も高くなります。
選択肢DのS3+KMS方式はローテーション中のダウンタイム防止やバージョン管理など、Secrets Managerが提供する機能を全て再実装する必要があり、開発・運用コストが著しく高くなります。
ドメイン別正答率・予想スコアでリアルタイムに実力把握
無限ノックでDVAを徹底対策。全問AI生成のオリジナル問題。
無料で演習を始める →