Izin peran eksekusi fungsi rotasi Lambda untuk AWS Secrets Manager - AWS Secrets Manager

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Izin peran eksekusi fungsi rotasi Lambda untuk AWS Secrets Manager

KarenaRotasi oleh fungsi Lambda, ketika Secrets Manager menggunakan fungsi Lambda untuk memutar rahasia, Lambda mengasumsikan peran eksekusi IAM dan memberikan kredensil tersebut ke kode fungsi Lambda. Untuk petunjuk tentang cara mengatur rotasi otomatis, lihat:

Contoh berikut menunjukkan kebijakan inline untuk peran eksekusi fungsi rotasi Lambda. Untuk membuat peran eksekusi dan melampirkan kebijakan izin, lihat peran AWS Lambda eksekusi.

Kebijakan untuk peran eksekusi fungsi rotasi Lambda

Contoh kebijakan berikut memungkinkan fungsi rotasi untuk:

{ "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" } ] }

Pernyataan kebijakan untuk kunci yang dikelola pelanggan

Jika rahasia dienkripsi dengan kunci KMS selain Kunci yang dikelola AWS aws/secretsmanager, maka Anda perlu memberikan izin peran eksekusi Lambda untuk menggunakan kunci tersebut. Anda dapat menggunakan konteks enkripsi secretArn untuk membatasi penggunaan fungsi dekripsi, sehingga peran fungsi rotasi hanya memiliki akses untuk mendekripsi rahasia yang bertanggung jawab untuk berputar. Contoh berikut menunjukkan pernyataan untuk ditambahkan ke kebijakan peran eksekusi untuk mendekripsi rahasia menggunakan kunci KMS.

{ "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:DescribeKey", "kms:GenerateDataKey" ], "Resource": "KMSKeyARN" "Condition": { "StringEquals": { "kms:EncryptionContext:SecretARN": "SecretARN" } } }

Untuk menggunakan fungsi rotasi untuk beberapa rahasia yang dienkripsi dengan kunci yang dikelola pelanggan, tambahkan pernyataan seperti contoh berikut untuk memungkinkan peran eksekusi mendekripsi rahasia.

{ "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:DescribeKey", "kms:GenerateDataKey" ], "Resource": "KMSKeyARN" "Condition": { "StringEquals": { "kms:EncryptionContext:SecretARN": [ "arn1", "arn2" ] } } }

Pernyataan kebijakan untuk strategi pengguna bergantian

Untuk informasi tentang strategi rotasi pengguna bergantian, lihatStrategi rotasi fungsi Lambda.

Untuk rahasia yang berisi kredensi Amazon RDS, jika Anda menggunakan strategi pengguna bergantian dan rahasia pengguna super dikelola oleh Amazon RDS, maka Anda juga harus mengizinkan fungsi rotasi untuk memanggil API hanya-baca di Amazon RDS sehingga bisa mendapatkan informasi koneksi untuk database. Kami sarankan Anda melampirkan kebijakan AWS terkelola ReadOnlyAccessAmazonRDS.

Contoh kebijakan berikut memungkinkan fungsi untuk:

  • Jalankan operasi Secrets Manager untuk SecretArn.

  • Ambil kredensialnya di rahasia superuser. Secrets Manager menggunakan kredensil dalam rahasia superuser untuk memperbarui kredensil dalam rahasia yang diputar.

  • Buat kata sandi baru.

  • Siapkan konfigurasi yang diperlukan jika database atau layanan Anda berjalan di VPC. Untuk informasi selengkapnya, lihat Mengonfigurasi fungsi Lambda untuk mengakses sumber daya di VPC.

{ "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" } ] }