あるフィンテック企業が、Amazon VPC のプライベートサブネット(NAT ゲートウェイなし・インターネットアクセスなし)で動作するアプリケーションで AWS Secrets Manager を使用し、Amazon RDS PostgreSQL の認証情報を管理しています。セキュリティエンジニアが自動ローテーション(30日間隔)を有効化したところ、最初のローテーション試行がタイムアウトエラーで失敗しました。最も可能性の高い原因と対処法はどれですか?
AWS Secrets Manager の自動ローテーションでは、Lambda 関数が次の 4 フェーズで動作する。 ①CREATESECRET(新しい認証情報の生成) ②SETPASSWORD(データベースへの新認証情報の設定) ③TESTPASSWORD(接続テスト) ④FINALIZESECRET(シークレット値の確定) すべてのフェーズで Lambda は Secrets Manager のエンドポイントに接続する必要がある。インターネットアクセスのないプライベートサブネットでは VPC インターフェースエンドポイント(AWS PrivateLink)がなければ HTTPS 通信が届かず、タイムアウトが発生する。作成すべきエンドポイントは com.amazonaws.[region].secretsmanager であり、Lambda から RDS へのセキュリティグループ許可も合わせて必要である。 選択肢AのLambda実行ロール権限は、ローテーション失敗の原因として誤りである。secretsmanager:RotateSecret は Secrets Manager サービス側が使用する権限であり Lambda 実行ロールには不要である。Lambda 側に必要なのは secretsmanager:GetSecretValue・secretsmanager:PutSecretValue 等であり、エラーがタイムアウトである点からも権限不足ではない。 選択肢CのRDS PostgreSQLサポートについては、Secrets Manager は PostgreSQL を含む多くのデータベースエンジンの自動ローテーションをネイティブサポートしている。 選択肢DのSecretsManagerローテーション間隔は 1〜365 日の範囲で設定可能であり「最大 7 日」という制限は存在しない。30 日は有効な値である。