翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
AWS Secrets Manager における Lambda 関数の実行ロールへのアクセス許可
Lambda 関数によるローテーション では、Secrets Manager が Lambda 関数を使用してシークレットをローテーションすると、Lambda は IAM 実行ロールを想定し、これらの認証情報を Lambda 関数のコードに提供します。自動ローテーションの設定方法については、以下を参照してください。
次の例は、Lambda ローテーション関数の実行ロールのインラインポリシーを示しています。実行ロールを作成し、アクセス権限ポリシーをアタッチするには、を参照してください。AWS Lambda実行ロール。
Lambda ローテーション関数の実行ロールのポリシー
次のポリシーの例では、ローテーション関数が次の操作を許可します。
-
SecretARN
の Secrets Manager 操作を実行します。 -
新しいパスワードを作成します。
-
データベースまたはサービスが VPC で実行されている場合、必要な設定のセットアップを行います。VPC 内のリソースにアクセスするように Lambda 関数を設定する、を参照してください。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "secretsmanager:DescribeSecret", "secretsmanager:GetSecretValue", "secretsmanager:PutSecretValue", "secretsmanager:UpdateSecretVersionStage" ], "Resource": "
SecretARN
" }, { "Effect": "Allow", "Action": [ "secretsmanager:GetRandomPassword" ], "Resource": "*" }, { "Action": [ "ec2:CreateNetworkInterface", "ec2:DeleteNetworkInterface", "ec2:DescribeNetworkInterfaces", "ec2:DetachNetworkInterface" ], "Resource": "*", "Effect": "Allow" } ] }
カスタマーマネージドキーのポリシーステートメント
AWS マネージドキー aws/secretsmanager
以外の KMS キーを使用しシークレットを暗号化する場合は、そのキーの使用に関するアクセス許可を、Lambda の実行ロールに付与する必要があります。SecretArn 暗号化コンテキストを使用して復号化関数の使用を制限できます。この場合、ローテーション関数ロールには、ローテーションに使用するシークレットを復号化するアクセスのみが許可されます。次に、実行ロールポリシーに追加してKMS キーを使用してシークレットを復号化するステートメントの例を示します。
{ "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:DescribeKey", "kms:GenerateDataKey" ], "Resource": "
KMSKeyARN
" "Condition": { "StringEquals": { "kms:EncryptionContext:SecretARN": "SecretARN
" } } }
カスタマーマネージドキーで暗号化された複数のシークレットに対してローテーション機能を使用するには、以下の例のようなステートメントを追加して、実行ロールがシークレットを復号化できるようにします。
{ "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:DescribeKey", "kms:GenerateDataKey" ], "Resource": "
KMSKeyARN
" "Condition": { "StringEquals": { "kms:EncryptionContext:SecretARN": [ "arn1", "arn2" ] } } }
交代ユーザー戦略のポリシーステートメント
交代ユーザーローテーション戦略については、「Lambda 関数のローテーション戦略」を参照してください。
Amazon RDS 認証情報を含むシークレットで、代替ユーザー戦略を使用しており、スーパーユーザーシークレットが Amazon RDS によって管理されている場合、ローテーション関数が Amazon RDS の読み取り専用 API を呼び出して、データベースの接続情報を取得できるようにする必要もあります。AWS 管理ポリシー AmazonRDSReadOnlyAccess アタッチすることを推奨します。
次のポリシーの例では、関数が次の操作を許可します。
-
SecretARN
の Secrets Manager 操作を実行します。 -
スーパーユーザーシークレットで認証情報を取得します。Secrets Manager は、スーパーユーザーシークレットの認証情報を使用し、ローテーションされたシークレットの認証情報を更新します。
-
新しいパスワードを作成します。
-
データベースまたはサービスが VPC で実行される場合、必要な設定のセットアップを行います。詳細については、「VPC 内のリソースにアクセスするように Lambda 関数を設定する」を参照してください。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "secretsmanager:DescribeSecret", "secretsmanager:GetSecretValue", "secretsmanager:PutSecretValue", "secretsmanager:UpdateSecretVersionStage" ], "Resource": "
SecretARN
" }, { "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue" ], "Resource": "SuperuserSecretARN
" }, { "Effect": "Allow", "Action": [ "secretsmanager:GetRandomPassword" ], "Resource": "*" }, { "Action": [ "ec2:CreateNetworkInterface", "ec2:DeleteNetworkInterface", "ec2:DescribeNetworkInterfaces", "ec2:DetachNetworkInterface" ], "Resource": "*", "Effect": "Allow" } ] }