Mengelola siklus hidup secret dinamis di OpenBao: memahami Lease ID dan TTL, memperpanjang masa pakai dengan bao lease renew, serta mencabut akses seketika lewat bao lease revoke dan revoke by prefix ketika kredensial bocor.

Pada episode 8 kalian memperoleh token lewat berbagai auth method. Episode 9 ini membahas apa yang terjadi pada secret dinamis setelah ia lahir: setiap kredensial yang diterbitkan OpenBao — entah kredensial database dari episode 4 atau sertifikat dari episode 6 — membawa lease yang menentukan berapa lama ia hidup. Memahami lease berarti memahami kapan harus memperpanjang, dan yang lebih penting, bagaimana menghancurkan akses seketika saat dibutuhkan.
Lease adalah kontrak waktu antara OpenBao dan pemegang secret. Setiap dynamic secret — kredensial yang dibuat khusus untuk kalian, seperti user Postgres dari database/creds/my-role — direpresentasikan dengan Lease ID unik dan TTL (Time To Live).
Membaca secret dinamis akan menampilkan metadata lease:
bao read database/creds/my-roleOutput-nya memuat tiga hal penting:
lease_id — identitas unik kredensial, misalnya database/creds/my-role/NGQwYzA....lease_duration — berapa detik lagi lease berlaku (TTL).renewable — apakah lease bisa diperpanjang atau tidak.Ketika TTL habis, OpenBao otomatis menghancurkan kredensial tersebut — user Postgres tadi dihapus dari database. Inilah mengapa secret dinamis begitu aman: masa hidupnya terbatas dan dikendalikan sistem, bukan dibiarkan mengendap selamanya.
Orang sering mencampur lease secret dengan TTL token. Padahal keduanya adalah konsep yang berbeda:
| Aspek | Lease Secret Dinamis | Token TTL |
|---|---|---|
| Objek | Satu instance kredensial (misal user DB) | Sesi autentikasi pengguna atau mesin |
| Identitas | Lease ID | Token value |
| Perpanjangan | bao lease renew <id> | bao token renew |
| Pencabutan | bao lease revoke <id> | bao token revoke |
| Dampak habis | Kredensial dihancurkan sistem | Token tidak bisa dipakai lagi |
Intinya: token adalah pintu masuk, lease adalah kontrak isi rumah. Membatalkan token tidak otomatis menghancurkan lease yang sudah dipegang, dan sebaliknya. Keduanya perlu dikelola terpisah.
Ketika sebuah job berjalan lebih lama dari TTL, kalian bisa memperpanjang lease selama ia masih renewable dan belum kedaluwarsa:
bao lease renew database/creds/my-role/NGQwYzA...Untuk menetapkan durasi perpanjangan tertentu, tambahkan opsi -increment:
bao lease renew -increment=1h database/creds/my-role/NGQwYzA...bao lease renew -increment=1h database/creds/my-role/NGQwYzA... mencoba memperpanjang lease selama 1 jam — hasil akhirnya tetap dibatasi max_ttl dari engine atau role. Aplikasi yang baik memperbarui lease-nya secara berkala, bukan menunggu sampai hampir habis.
Jika ada indikasi kredensial bocor, jangan menunggu TTL habis. Cabut seketika:
bao lease revoke database/creds/my-role/NGQwYzA...Perintah itu langsung menghancurkan satu kredensial. Namun dalam insiden nyata, kalian biasanya tidak tahu persis Lease ID mana yang bocor — yang kalian tahu, kredensial database seluruh aplikasi bisa jadi terpapar. Untuk kasus ini gunakan revoke by prefix:
bao lease revoke -prefix database/credsbao lease revoke -prefix database/creds mencabut semua lease yang diawali prefix tersebut — artinya seluruh kredensial database yang pernah diterbitkan engine database langsung dimusnahkan. Ini adalah tombol darurat yang paling sering dipakai saat incident response.
Caution
Revoke by prefix sangat destruktif. Mencabut prefix database/creds akan memutus koneksi semua aplikasi yang memakai kredensial itu secara bersamaan. Pastikan aplikasi didesain untuk mengambil kredensial baru (retry dan re-request), bukan mengandalkan satu koneksi statis — kalau tidak, pemadaman total tidak terelakkan.
Sebelum mencabut, kalian perlu tahu lease apa saja yang sedang beredar. Semua lease bisa didaftarkan per prefix:
bao lease list database/creds
bao lease list database/creds/my-rolebao lease list database/creds menampilkan semua lease yang sedang aktif di bawah prefix tersebut. Ini sangat berguna saat incident: kalian bisa melihat berapa banyak kredensial yang terpapar sebelum memutuskan memakai revoke per-lease atau revoke by prefix. Kombinasikan dengan bao lease renew untuk memperpanjang hanya yang masih dibutuhkan.
Mari merangkai semuanya dalam satu alur insiden:
database harus diganti.bao lease revoke -prefix database/creds untuk menghancurkan semuanya.database/creds/my-role.Alur ini menunjukkan kekuatan sebenarnya dari secret dinamis: pencabutan massal yang instan, tanpa menyentuh satu pun file konfigurasi. Yang perlu kalian jaga adalah aplikasi siap menerima kredensial baru.
Pada episode 9 ini kalian memahami lease sebagai kontrak waktu secret dinamis: struktur Lease ID dan TTL, perbedaan lease secret dengan TTL token, perpanjangan lewat bao lease renew, serta pencabutan instan dengan bao lease revoke dan revoke by prefix database/creds.
Inti yang harus dibawa pulang:
renew.Di episode 10 berikutnya, kita membawa semua konsep ini keluar dari server OpenBao menuju dunia nyata: integrasi aplikasi web dengan Node.js, Go, Python, dan Laravel — baik lewat REST API langsung maupun injeksi environment tanpa mengubah source code.