ある企業が AWS 上でマイクロサービスアーキテクチャへの移行を進めており、既存のモノリシックアプリケーションの一部機能をサーバーレスの Lambda 関数として切り出しました。Lambda 関数は VPC 内に配置されており、既存の RDS データベースにアクセスします。移行後、Lambda 関数のデプロイ頻度が高くなり、デプロイごとに設定値(データベース接続文字列、API キー、環境設定)を安全に更新する必要があります。また、シークレット(DB パスワード、API キー)は定期的に自動ローテーションする必要があります。最も適切な設定管理アーキテクチャはどれですか?
- A. 設定値をすべて S3 バケットに JSON ファイルとして保存し、Lambda 関数の起動時に S3 から読み取る
- B. 非機密の設定値は AWS Systems Manager Parameter Store(SecureString または String パラメーター)に格納し、Lambda 関数の起動時に取得する。機密情報(DB パスワード、API キー)は AWS Secrets Manager に格納し、自動ローテーション機能を有効化する。Lambda の IAM ロールにパラメーターとシークレットへのアクセス権限を付与し、コードから安全に取得する
- C. 設定値を Git リポジトリで管理し、デプロイパイプラインで環境変数として Lambda に注入する
- D. すべての設定値と シークレットを Lambda 関数の環境変数にハードコードし、デプロイのたびに更新する
解答と解説を見る
正解: B
Systems Manager Parameter Store は設定値の一元管理に適しており、更新時に Lambda を再デプロイせずに設定を変更できます。Secrets Manager はパスワードの自動ローテーション(Lambda 関数による自動更新)を組み込みでサポートし、RDS、Redshift、DocumentDB との統合ローテーションも提供します。IAM ロールベースのアクセスで最小権限を実現します。 D: 環境変数へのハードコードはデプロイのたびに手動更新が必要で、シークレットが Lambda の設定として平文で露出するセキュリティリスクがあります。 A: S3 への JSON ファイル保存は可能ですが、バージョン管理・アクセス制御・自動ローテーション機能がなく、シークレット管理に適していません。 C: Git リポジトリへのシークレット保存はセキュリティ上の大きなリスクです。パスワードなどの機密情報を Git に含めることは厳禁です。
📚 関連サービスの解説: AWS Systems Manager ・ AWS Lambda