View a markdown version of this page

Fungsi rotasi lambda - AWS Secrets Manager

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

Fungsi rotasi lambda

DalamRotasi dengan fungsi Lambda, AWS Lambda fungsi memutar rahasia. AWS Secrets Manager menggunakan label pementasan untuk mengidentifikasi versi rahasia selama rotasi.

Jika AWS Secrets Manager tidak menyediakan template fungsi rotasi untuk tipe rahasia Anda, Anda dapat membuat fungsi rotasi khusus. Ikuti panduan ini saat menulis fungsi rotasi Anda:

Praktik terbaik untuk fungsi rotasi kustom
  • Gunakan template rotasi generik sebagai titik awal.

  • Berhati-hatilah dengan pernyataan debugging atau logging. Mereka dapat menulis informasi ke Amazon CloudWatch Logs. Pastikan log tidak berisi informasi sensitif.

    Untuk contoh pernyataan log, lihat kode AWS Secrets Manager templat fungsi rotasi sumber.

  • Untuk keamanan, AWS Secrets Manager hanya memungkinkan fungsi rotasi Lambda untuk memutar rahasia secara langsung. Fungsi rotasi tidak dapat memanggil fungsi Lambda lain untuk memutar rahasia.

  • Untuk panduan debugging, lihat Meng uji dan men-debug aplikasi tanpa server.

  • Jika Anda menggunakan binari dan pustaka eksternal, misalnya untuk menyambung ke sumber daya, Anda bertanggung jawab untuk menambal dan memperbaruinya.

  • Kemas fungsi rotasi Anda dan dependensi apa pun dalam file ZIP, sepertimy-function.zip.

Awas

Menyetel parameter konkurensi yang disediakan ke nilai yang lebih rendah dari 10 dapat menyebabkan pelambatan karena thread eksekusi yang tidak mencukupi untuk fungsi Lambda. Untuk informasi selengkapnya, lihat Mem ahami konkurensi yang dicadangkan dan konkurensi yang disediakan di Panduan Peng AWS Lambda AWS Lambda embang.

Empat langkah dalam fungsi rotasi

CreateSecret: Buat versi baru rahasia

Metode createSecret pertama-tama memeriksa apakah ada rahasia dengan memanggil get_secret_value dengan passe ClientRequestToken d-in. Jika tidak ada rahasia, itu menciptakan rahasia baru dengan create_secret dan token sebagaiVersionId. Kemudian menghasilkan nilai rahasia baru dengan get_random_password. Selanjutnya memanggil put_secret_value untuk menyimpannya dengan label AWSPENDING 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 id empoten.

Kiat untuk menulis fungsi rotasi Anda sendiri
  • Pastikan nilai rahasia baru hanya menyertakan 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. MySQL versi 5.7 dan lebih tinggi mendukung nama pengguna hingga 32 karakter, namun Secrets Manager menambahkan “_clone” (enam karakter) ke akhir nama pengguna, jadi Anda harus menyimpan nama pengguna hingga maksimum 26 karakter.

SetRahasia: Ubah kredenSIAL dalam database atau layanan

Metode ini setSecret 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 Lem bar Cheat Parameterisasi Kueri di situs web OWASP.

  • Fungsi rotasi adalah wakil istimewa yang memiliki otorisasi untuk mengakses dan memodifikasi kredenSIAL pelanggan di rahasia Manajer Rahasia dan sumber daya target. Untuk mencegah potensi serangan wakil yang memb ingungkan, Anda perlu memastikan bahwa penyerang tidak dapat menggunakan fungsi untuk mengakses sumber daya lain. Sebelum Anda memperbarui kredensi:

    • Periksa apakah kredensi dalam AWSCURRENT versi rahasia itu valid. Jika AWSCURRENT kredensialnya tidak valid, tinggalkan upaya rotasi.

    • Periksa apakah nilai AWSCURRENT dan AWSPENDING rahasia adalah untuk sumber daya yang sama. Untuk nama pengguna dan kata sandi, periksa apakah nama pengguna AWSCURRENT AWSPENDING dan nama pengguna sama.

    • Periksa apakah sumber daya layanan tujuan sama. Untuk database, periksa apakah nama AWSPENDING host AWSCURRENT dan nama 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 atribut mana yang diberikan kepada pengguna kloning, Anda perlu memperbarui kode dalam set_secret fungsi.

Rahasia Uji: Uji versi rahasia baru

Selanjutnya, fungsi rotasi Lambda AWSPENDING menguji versi rahasia dengan menggunakannya untuk mengakses database atau layanan. Fungsi rotasi berdasarkan Templat fungsi rotasi pengujian rahasia baru dengan menggunakan akses baca.

SelesaiRahasia: Selesaikan rotasi

Terakhir, fungsi rotasi Lambda memindahkan label AWSCURRENT dari versi rahasia sebelumnya ke versi ini, yang juga menghapus AWSPENDING label dalam panggilan API yang sama. Secrets Manager menambahkan label AWSPREVIOUS pementasan ke versi sebelumnya, sehingga Anda mempertahankan versi bagus terakhir yang diketahui dari rahasia tersebut.

Metode ini finish_secret digunakan update_secret_version_stage untuk memindahkan label pement AWSCURRENT asan dari versi rahasia sebelumnya ke versi rahasia baru. Secrets Manager secara otomatis menambahkan label p AWSPREVIOUS ementasan ke versi sebelumnya, sehingga Anda mempertahankan versi bagus terakhir yang diketahui dari rahasia tersebut.

Kiat untuk menulis fungsi rotasi Anda sendiri
  • Jangan hapus AWSPENDING sebelum titik ini, dan jangan menghapusnya dengan menggunakan panggilan API terpisah, karena itu dapat menunjukkan kepada Secrets Manager bahwa rotasi tidak berhasil diselesaikan. Secrets Manager menambahkan label AWSPREVIOUS pementasan ke versi sebelumnya, sehingga Anda mempertahankan versi bagus terakhir yang diketahui dari rahasia tersebut.

Ketika rotasi berhasil, label p AWSPENDING ementasan 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 sepertiAWSCURRENT, maka pemanggilan rotasi selanjutnya mengasumsikan bahwa permintaan rotasi sebelumnya masih berlangsung dan mengembalikan kesalahan. Ketika rotasi tidak berhasil, label AWSPENDING pementasan mungkin dilampirkan ke versi rahasia kosong. Lihat informasi yang lebih lengkap di Memecahkan masalah rotasi.