はじめに
SecretsManagerの「その他のタイプのシークレット」を自動ローテーションしたい際には、AWSが提供するlambdaアプリケーションを利用することができます。
Labda関数およびアプリケーションの作成方法やネットワーク構成手順を、つい見落としてよくハマりがちなこと、またAWS公式資料に記載はあるもの点在しているため、まとめとして本記事を執筆しました。
Lambdaアプリケーション・関数作成
Lambdaから、アプリケーションを作成します。
「サーバレスアプリケーション」タブを選択します。
「カスタム IAM ロールまたはリソースポリシーを作成するアプリを表示する」にチェックを入れます。
「SecretsManagerRotationTemplate」で検索します。
必須項目である「functionName」、「endpoint」を入力します。
東京であれば、endpointは「secretsmanager.us-east-1.amazonaws.com」です。
※ランタイムは適宜変更してください。
最後に、「このアプリがカスタム IAM ロールとリソースポリシーを作成することを承認します。」にチェックを入れて、デプロイします。
ネットワーク設定
LambdaがVPC内リソースにアクセスするには、以下の設定が必要です。
https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/configuration-vpc.html
VPC アクセスの設定 (コンソール) を参照
SecretsManagerはエンドポイントを通じて、Lamda接続する必要があります。
https://docs.aws.amazon.com/ja_jp/secretsmanager/latest/userguide/vpc-endpoint-overview.html
Lambdaに付与したSGは、SecretsManagerエンドポイントから疎通できるようにインバウンド/アウトバウンドを設定する必要があります。
※その他にも、Lambdaは、SecretsManagerに保管した認証情報を用いてログインするアプリケーションに対しても、疎通できる必要があります。適宜、Lambdaに付与したSGのインバウンド/アウトバウンド設定を追加してください。