Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Fungsi rotasi Lambda
Pada tahunRotasi oleh fungsi Lambda, fungsi Lambda melakukan pekerjaan memutar rahasia. Secrets Manager menggunakan label pementasan untuk memberi label versi rahasia selama rotasi.
Jika Secrets Manager tidak menyediakan template fungsi rotasi untuk jenis rahasia Anda, Anda dapat membuat fungsi rotasi. Saat menulis fungsi rotasi, ikuti panduan untuk setiap langkah.
Kiat untuk menulis fungsi rotasi Anda sendiri
-
Gunakan template rotasi generik sebagai titik awal untuk menulis fungsi rotasi Anda sendiri.
-
Saat Anda menulis fungsi Anda, berhati-hatilah untuk menyertakan pernyataan debugging atau logging. Pernyataan ini dapat menyebabkan informasi dalam fungsi Anda ditulis ke Amazon CloudWatch, jadi Anda perlu memastikan log tidak menyertakan informasi sensitif yang dikumpulkan selama pengembangan.
Untuk contoh pernyataan log, lihat kode AWS Secrets Manager templat fungsi rotasi sumber.
-
Untuk keamanan, Secrets Manager hanya mengizinkan fungsi rotasi Lambda untuk memutar rahasia secara langsung. Fungsi rotasi tidak dapat memanggil fungsi Lambda kedua untuk memutar rahasia.
-
Untuk saran debugging, lihat Menguji dan men-debug aplikasi tanpa server.
-
Jika Anda menggunakan binari dan pustaka eksternal, misalnya untuk terhubung ke sumber daya, Anda harus mengelola tambalan dan menyimpannya. up-to-date
-
Simpan fungsi rotasi Anda dalam ZIP file
my-function.zip
bersama dengan dependensi yang diperlukan.
Empat langkah dalam fungsi rotasi
Topik
create_secret
: Buat versi baru dari rahasia
Metode create_secret
pertama memeriksa apakah ada rahasia dengan memanggil get_secret_value
ClientRequestToken
passed-in. Jika tidak ada rahasia, itu menciptakan rahasia baru dengan create_secret
VersionId
. Kemudian menghasilkan nilai rahasia baru dengan get_random_password
put_secret_value
pementasan. Menyimpan nilai rahasia baru AWSPENDING
membantu memastikan idempotensi. Jika rotasi gagal karena alasan apa pun, Anda dapat merujuk ke nilai rahasia itu dalam panggilan berikutnya. Lihat Bagaimana cara membuat fungsi Lambda saya idempotenAWSPENDING
Kiat untuk menulis fungsi rotasi Anda sendiri
Pastikan nilai rahasia baru hanya mencakup karakter yang valid untuk database atau layanan. Kecualikan karakter dengan menggunakan
ExcludeCharacters
parameter.Saat Anda menguji fungsi Anda, gunakan AWS CLI untuk melihat tahapan versi: panggil
describe-secret
dan lihatVersionIdsToStages
.-
Untuk Amazon RDS MySQL, dalam rotasi pengguna bergantian, Secrets Manager membuat pengguna kloning dengan nama tidak lebih dari 16 karakter. Anda dapat memodifikasi fungsi rotasi untuk memungkinkan nama pengguna yang lebih panjang. SQLVersi saya 5.7 dan yang lebih tinggi mendukung nama pengguna hingga 32 karakter, namun Secrets Manager menambahkan “_clone” (enam karakter) ke akhir nama pengguna, jadi Anda harus menjaga nama pengguna maksimal 26 karakter.
set_secret
: Mengubah kredensi dalam database atau layanan
Metode ini set_secret
mengubah kredensi dalam database atau layanan untuk mencocokkan nilai rahasia baru dalam AWSPENDING
versi rahasia.
Kiat untuk menulis fungsi rotasi Anda sendiri
-
Jika Anda meneruskan pernyataan ke layanan yang menafsirkan pernyataan, seperti database, gunakan parameterisasi kueri. Untuk informasi selengkapnya, lihat Lembar Cheat Parameterisasi Kueri di
situs web. OWASP -
Fungsi rotasi adalah wakil istimewa yang memiliki otorisasi untuk mengakses dan memodifikasi kredensi pelanggan baik dalam rahasia Secrets Manager dan sumber daya target. Untuk mencegah potensi serangan wakil yang membingungkan, Anda perlu memastikan bahwa penyerang tidak dapat menggunakan fungsi tersebut untuk mengakses sumber daya lain. Sebelum Anda memperbarui kredensialnya:
Periksa apakah kredensi dalam
AWSCURRENT
versi rahasia valid. JikaAWSCURRENT
kredensialnya tidak valid, tinggalkan upaya rotasi.Periksa apakah nilai
AWSCURRENT
danAWSPENDING
rahasia adalah untuk sumber daya yang sama. Untuk nama pengguna dan kata sandi, periksa apakahAWSPENDING
nama penggunaAWSCURRENT
dan nama pengguna sama.Periksa apakah sumber daya layanan tujuan sama. Untuk database, periksa apakah nama
AWSCURRENT
danAWSPENDING
host sama.
-
Dalam kasus yang jarang terjadi, Anda mungkin ingin menyesuaikan fungsi rotasi yang ada untuk database. Misalnya, dengan rotasi pengguna bergantian, Secrets Manager membuat pengguna kloning dengan menyalin parameter konfigurasi runtime
dari pengguna pertama. Jika Anda ingin menyertakan lebih banyak atribut, atau mengubah mana yang diberikan kepada pengguna kloning, Anda perlu memperbarui kode dalam set_secret
fungsi.
test_secret
: Uji versi rahasia baru
Selanjutnya, fungsi rotasi Lambda menguji AWSPENDING
versi rahasia dengan menggunakannya untuk mengakses database atau layanan. Fungsi rotasi berdasarkan Templat fungsi rotasi uji rahasia baru dengan menggunakan akses baca.
finish_secret
: Selesaikan rotasi
Akhirnya, fungsi rotasi Lambda memindahkan label AWSCURRENT
dari versi rahasia sebelumnya ke versi ini, yang juga menghapus AWSPENDING
label dalam panggilan yang samaAPI. Secrets Manager menambahkan label AWSPREVIOUS
pementasan ke versi sebelumnya, sehingga Anda mempertahankan versi rahasia terakhir yang diketahui.
Metode ini finish_secret
digunakan update_secret_version_stage
AWSCURRENT
dari versi rahasia sebelumnya ke versi rahasia baru. Secrets Manager secara otomatis menambahkan label AWSPREVIOUS
pementasan ke versi sebelumnya, sehingga Anda mempertahankan versi rahasia terakhir yang diketahui.
Kiat untuk menulis fungsi rotasi Anda sendiri
Jangan hapus
AWSPENDING
sebelum titik ini, dan jangan hapus dengan menggunakan API panggilan terpisah, karena itu dapat menunjukkan kepada Secrets Manager bahwa rotasi tidak berhasil diselesaikan. Secrets Manager menambahkan labelAWSPREVIOUS
pementasan ke versi sebelumnya, sehingga Anda mempertahankan versi rahasia terakhir yang diketahui.
Ketika rotasi berhasil, label AWSPENDING
pementasan mungkin dilampirkan ke versi yang sama dengan AWSCURRENT
versi, atau mungkin tidak dilampirkan ke versi apa pun. Jika label AWSPENDING
pementasan ada tetapi tidak dilampirkan ke versi yang sama denganAWSCURRENT
, maka pemanggilan rotasi selanjutnya mengasumsikan bahwa permintaan rotasi sebelumnya masih dalam proses dan mengembalikan kesalahan. Ketika rotasi tidak berhasil, label AWSPENDING
pementasan mungkin dilampirkan ke versi rahasia kosong. Untuk informasi selengkapnya, lihat Memecahkan masalah rotasi.