Rahasia generik di Secrets Manager tidak melakukan rotasi secara otomatis. Untuk merotasi rahasia generik, Anda harus mendorong versi rahasia baru menggunakan API. Jalur rotasi yang Anda pilih bergantung pada apakah sistem Anda dapat menghasilkan kredensial baru sendiri atau memerlukan langkah eksternal terlebih dahulu.
Cara kerja
Dua role berinteraksi dengan Secrets Manager selama proses rotasi:
| Role | Deskripsi |
|---|---|
| Secret producer | Sistem operasi dan maintenance (O&M) atau administrator yang menghasilkan kredensial baru dan menuliskannya ke Secrets Manager menggunakan CreateSecret dan PutSecretValue. |
| Secret consumer | Aplikasi yang mengambil kredensial dengan memanggil GetSecretValue menggunakan nama rahasia. Secrets Manager selalu mengembalikan versi yang ditandai ACSCurrent. |

Prasyarat
Sebelum memulai, pastikan Anda telah memiliki:
Versi rahasia awal yang disimpan di Secrets Manager dan ditandai ACSCurrent
Aplikasi yang dikonfigurasi untuk memanggil GetSecretValue berdasarkan nama rahasia guna mengambil kredensial saat waktu proses
Pilih jalur rotasi
| Rotasi satu panggilan | Rotasi multi-panggilan | |
|---|---|---|
| Kapan digunakan | Sistem Anda menghasilkan kredensial baru secara otomatis—misalnya, rahasia aplikasi OAuth 2.0 | Sistem Anda tidak dapat menghasilkan kredensial; seseorang atau sistem eksternal harus membuatnya terlebih dahulu—misalnya, akun database ApsaraDB RDS atau kunci SSH Elastic Compute Service (ECS) |
| Panggilan API yang diperlukan | 1 (PutSecretValue) | 4, dengan jendela validasi di antara langkah-langkah |
| Risiko downtime | Hampir nol: nilai baru langsung menjadi current | Tidak ada: kredensial lama tetap aktif hingga Anda mempromosikan versi baru |
Rotasi menggunakan satu panggilan API
Gunakan jalur ini ketika sistem Anda menghasilkan rahasia sendiri—misalnya, sistem OAuth 2.0 yang membuat rahasia aplikasi secara otomatis.
Hasilkan rahasia aplikasi baru di sistem OAuth 2.0.
Simpan rahasia baru di Secrets Manager. Panggilan ini menandai versi baru sebagai ACSCurrent dan menurunkan versi sebelumnya menjadi ACSPrevious.
aliyun kms PutSecretValue \ --SecretName MyOAuthAppSecret \ --SecretData sample-app-secret \ --VersionId v2Verifikasi bahwa aplikasi mendapatkan nilai yang diperbarui. Panggil GetSecretValue dan pastikan mengembalikan rahasia baru.
Rotasi menggunakan beberapa panggilan API
Gunakan jalur ini ketika Anda perlu membuat kredensial baru di sistem eksternal dan memvalidasinya sebelum menjadikannya current—misalnya, saat merotasi password akun database.
Menyimpan kredensial baru di bawah label kustom (misalnya, MyPendingLabel) sebelum mempromosikannya ke ACSCurrent menyediakan jendela validasi. Jika terjadi kegagalan di tengah proses rotasi, versi ACSCurrent lama tetap utuh dan aplikasi Anda tetap berjalan.
Contoh berikut merotasi username dan password untuk database yang dikelola di Secrets Manager.
Langkah 1: Hasilkan password acak
Panggil GetRandomPassword untuk menghasilkan password baru.
aliyun kms GetRandomPassword --ExcludePunctuation trueSecrets Manager mengembalikan nilai RandomPassword:
{
"RequestId": "e36ca295-6e47-4dfb-9df1-48d19df41545",
"RandomPassword": "v2GwsgcuNylyYw9JGJNE5yBViGSi****"
}Langkah 2: Simpan kredensial baru di bawah label pending
Simpan username dan password baru sebagai versi rahasia baru yang ditandai MyPendingLabel. Versi ACSCurrent dan ACSPrevious yang sudah ada tetap tidak berubah, sehingga aplikasi Anda tetap berfungsi selama langkah ini.
aliyun kms PutSecretValue \
--SecretName db_cred \
--SecretData "{\"uname\": \"alice\", \"pwd\": \"v2GwsgcuNylyYw9JGJNE5yBViGSiZ****\"}" \
--VersionId v2 \
--VersionStages "[\"MyPendingLabel\"]"Langkah 3: Daftarkan kredensial baru ke database
Buat akun database baru menggunakan kredensial versi v2. Pada titik ini, hanya versi v2 dari db_cred yang dapat melakukan autentikasi ke database. Jangan promosikan versi tersebut ke ACSCurrent hingga langkah ini berhasil.
Langkah 4: Mempromosikan versi baru menjadi versi saat ini
Setelah kredensial baru didaftarkan dan divalidasi, perbarui stage versi agar v2 menjadi versi aktif.
aliyun kms UpdateSecretVersionStage \
--SecretName db_cred \
--VersionStage ACSCurrent \
--MoveToVersion v2Langkah 5: Verifikasi rotasi
Panggil GetSecretValue dan pastikan Secrets Manager mengembalikan kredensial v2 (username alice dan password baru).
Langkah berikutnya
Untuk database yang dikelola oleh ApsaraDB RDS, gunakan dynamic secret agar Secrets Manager menangani rotasi secara otomatis. Lihat Overview of Dynamic ApsaraDB RDS secrets.