Lambda ローテーション関数へのネットワークアクセス
Lambda 関数によるローテーション では、Secrets Manager が Lambda 関数を使用してシークレットをローテーションする場合、Lambda ローテーション関数がシークレットにアクセスできる必要があります。シークレットに認証情報が含まれている場合、Lambda 関数はそれらの認証情報のソース (データベースやサービスなど) にもアクセスできる必要があります。
- シークレットにアクセスするには
-
ローテーション用の Lambda 関数は、Secrets Manager のエンドポイントにアクセスできる必要があります。Lambda 関数がインターネットにアクセスできる場合は、パブリックなエンドポイントを使用できます。エンドポイントを見つけるには、「AWS Secrets Manager のエンドポイント」を参照してください。
インターネットにアクセスできない VPC で Lambda 関数を実行する場合は、Secrets Manager サービスのプライベートなエンドポイントを、VPC 内に設定することをお勧めします。VPC は、リージョンのパブリックなエンドポイントに向けられたリクエストを傍受し、それらをプライベートエンドポイントにリダイレクトします。(詳しくは、「VPC エンドポイント」を参照してください。)
別の方法としては、NAT ゲートウェイまたはインターネットゲートウェイを VPC に追加して (これで VPC のトラフィックはパブリックエンドポイントに到達できます)、Lambda 関数から Secrets Manager のパブリックなエンドポイントへのアクセスを許可することも考えられます。この方法では、VPC がある程度のリスクにさらされることになります。ゲートウェイ向けの IP アドレスには、パブリックなインターネットから攻撃が可能なためです。
- (オプション) データベースまたはサービスにアクセスするには
-
API キーなどのシークレットについては、シークレットと一緒に更新する必要のあるソースデータベースやサービスはありません。
データベースまたはサービスを VPC の Amazon EC2 インスタンスで実行している場合は、同じ VPC で Lambda 関数を設定することをお勧めします。こうすることで、ローテーション関数はサービスと直接通信できるようになります。詳細については、Configuring VPC access を参照してください。
Lambda 関数からデータベースまたはサービスへのアクセスを可能にするには、ローテーション用の Lambda 関数にアタッチされたセキュリティグループによって、そのデータベースまたはサービスに対するアウトバウンド接続が許可されている必要があります。同時に、データベースまたはサービスにアタッチされているセキュリティグループでは、ローテーション用 Lambda 関数からのインバウンド接続を許可する必要もあります。