アプリケーションのシークレット(データベースパスワード等)をLambda関数で安全に取得するベストプラクティスはどれですか?
Secrets Managerからランタイムで取得することでシークレットのローテーションに対応でき、コードやバージョン管理システムにシークレットが漏洩しません。毎回APIを呼び出すとコストと遅延が増加するため、Lambda Powertools Parameters moduleのキャッシュ機能(デフォルト5分TTL)でパフォーマンスとセキュリティを両立します。 選択肢AのプレーンテキストでLambda環境変数に設定した場合、Lambdaコンソール上に値が平文で表示されるリスクがあり、自動ローテーションにも対応できません。 選択肢CのソースコードへのハードコードはGit等のバージョン管理システムへの漏洩リスクが極めて高く最も危険な方法です。 選択肢DS3テキストファイルからの読み取りは自動ローテーション機能がなく、バケットポリシーの設定ミスによる漏洩リスクもあるため不適切です。