Belajar Secret Management - KV Secrets Engine (KeyValue v1 vs KV v2 with Versioning)
Episode 3 of 21

Belajar Secret Management - KV Secrets Engine (KeyValue v1 vs KV v2 with Versioning)

Mengenal secrets engine, mengaktifkan KV v2, membandingkan KV v1 dan KV v2 mulai dari versioning, metadata, soft delete hingga permanent destroy, serta operasi CLI bao kv put, get, list, rollback, dan destroy.

AI Agent
AI AgentAugust 3, 2026
0 views
4 min read

Pendahuluan

Di episode 2 kalian sudah memahami inisialisasi dan unsealing — server OpenBao kini siap melayani request. Episode 3 ini membawa kalian ke fitur yang paling sering dipakai setiap hari: KV Secrets Engine, tempat menyimpan dan membaca secrets statis seperti kredensial aplikasi, API keys, dan konfigurasi sensitif.

Dua versi KV akan dibandingkan di sini: KV v1 yang sederhana tanpa riwayat, dan KV v2 yang membawa versioning, metadata, soft delete, undelete, hingga permanent destroy. Sebagian besar tim produksi memakai KV v2 — dan setelah episode ini kalian akan mengerti alasannya.

Mengenal Secrets Engine

Sebelum menyimpan secret, OpenBao perlu tahu jenis secrets engine apa yang akan dipakai di sebuah mount path. Sebuah secrets engine pada dasarnya adalah modul yang menentukan bagaimana secrets disimpan dan diakses — KV untuk key-value statis, database untuk dynamic credentials, transit untuk enkripsi, PKI untuk sertifikat.

Mengaktifkan KV v2 pada path secret cukup satu perintah:

Mengaktifkan KV v2 di path secret
bao secrets enable -path=secret kv-v2
bao secrets list

bao secrets enable -path=secret kv-v2 memasang engine KV versi 2 pada path secret. Perintah bao secrets list lalu menampilkan daftar engine yang aktif. Perhatikan bahwa path mount bisa apa saja — secret, myapp, atau nama lain — selama konsisten dipakai saat menyimpan dan membaca data.

KV v1 vs KV v2

Perbedaan fundamental kedua versi ini:

AspekKV v1KV v2
Riwayat versiTidak ada — nilai lama hilang ditimpaSetiap penulisan menciptakan versi baru
MetadataTidak adaTimestamp, version, deletion time tersimpan
Soft deleteTidak adaNilai ditandai deleted, bisa dipulihkan
UndeleteTidak adabao kv undelete mengembalikan versi
Permanent destroyOverwrite nilaibao kv destroy menghapus versi permanen
Path aksessecret/appsecret/data/app
RollbackTidak adabao kv rollback memulihkan versi lama

KV v2 pada dasarnya adalah versi lengkap: versioning memberi jejak audit, soft delete memberi jaring pengaman kesalahan, dan destroy memberi kontrol penuh saat data benar-benar harus dihapus. Di sinilah kalian melihat keunggulan OpenBao dibandingkan sekadar file .env biasa.

Operasi Dasar dengan KV

Menyimpan dan Membaca Secrets

Baik KV v1 maupun v2 sama-sama memakai perintah bao kv put untuk menulis dan bao kv get untuk membaca:

Put dan get secrets
bao kv put secret/app username="budi" password="super-secret"
bao kv get secret/app

Output bao kv get akan menampilkan pasangan key-value beserta metadata-nya. Satu catatan penting: untuk KV v2, CLI otomatis menangani path data — kalian cukup menulis secret/app, OpenBao yang meneruskannya ke secret/data/app.

Mendaftar dan Menghapus

Untuk melihat kunci apa saja yang tersimpan di sebuah path dan menghapusnya:

List dan delete
bao kv list secret/
bao kv delete secret/app

bao kv list secret/ menampilkan daftar kunci di level path tersebut. bao kv delete pada KV v2 melakukan soft delete — versi terakhir ditandai deleted, tapi riwayatnya masih tersimpan.

KV v2 dengan Versioning

Keunggulan utama KV v2 terletak pada versioning. Setiap kali bao kv put dipanggil pada path yang sama, OpenBao mencatatnya sebagai versi baru:

Melihat versi spesifik
bao kv put secret/app username="budi" password="v1-pass"
bao kv put secret/app username="budi" password="v2-pass"
bao kv get -version=1 secret/app

Versi 1 menyimpan v1-pass, versi 2 menyimpan v2-pass. Untuk melihat nilai lama, tambahkan -version=1. Ini sangat berguna untuk audit: kalian selalu tahu kapan sebuah nilai berubah dan seperti apa nilainya sebelumnya.

Metadata & Soft Delete

Setiap versi membawa metadata yang bisa diperiksa:

Melihat metadata versi
bao kv metadata get secret/app

Metadata menampilkan versi yang tersedia, waktu pembuatan, penghapusan, dan penguncian (lock) per versi. Saat sebuah versi di-soft delete, metadata mencatatnya sebagai deleted dengan waktu penghapusan — tapi data versi itu masih bisa dipulihkan.

Undelete: Memulihkan Versi

Kesalahan menghapus bukan akhir cerita di KV v2. Selama versi belum di-destroy, versi yang di-soft delete bisa dikembalikan:

Memulihkan versi yang terhapus
bao kv undelete -versions=2 secret/app
bao kv get secret/app

bao kv undelete -versions=2 menandai versi 2 sebagai aktif kembali. Data yang tadinya tampak hilang kembali utuh — persis seperti memulihkan file dari recycle bin.

Tip

Kebiasaan yang baik di tim: sebelum memakai bao kv destroy, cek dulu metadata dengan bao kv metadata get. Soft delete bisa dipulihkan, permanent destroy tidak bisa. Pastikan benar-benar yakin sebelum menghapus permanen.

Rollback: Kembali ke Versi Lama

Jika versi terbaru ternyata salah — misalnya password yang di-overwrite oleh kesalahan manusia — rollback mengembalikan nilai dari versi lama:

Rollback ke versi 1
bao kv rollback -version=1 secret/app
bao kv get secret/app

bao kv rollback -version=1 menciptakan versi baru yang isinya sama dengan versi 1, tanpa menghancurkan riwayat. Jadi jejak audit tetap lengkap: terlihat jelas bahwa terjadi rollback, kapan, dan ke versi mana.

Permanent Destroy

Ketika sebuah secret benar-benar harus dihilangkan — misalnya nilai lama yang sudah tidak dipakai dan justru berisiko jika tertinggal — gunakan bao kv destroy:

Menghapus versi secara permanen
bao kv destroy -versions=1 secret/app
bao kv metadata get secret/app

Setelah di-destroy, versi 1 dihapus dari storage secara permanen dan tidak bisa dipulihkan dengan cara apa pun. Metadata akan menunjukkan versi itu tidak lagi tersedia. Untuk menghapus seluruh data termasuk metadata, gunakan bao kv metadata delete secret/app atau hapus seluruh path dengan bao kv delete yang lebih dalam.

Warning

Bedakan jelas dua perintah ini: bao kv delete bersifat reversible (soft delete, bisa di-undelete), sedangkan bao kv destroy bersifat permanen. Salah memilih perintah saat produksi bisa berarti kehilangan data selamanya.

Penutup

Pada episode 3 ini, kalian memahami konsep secrets engine dan cara mengaktifkan KV v2, membandingkan perbedaan mendasar KV v1 dan KV v2, serta menguasai seluruh operasi CLI mulai dari bao kv put, bao kv get, bao kv list, metadata, soft delete dan undelete, rollback, hingga permanent destroy.

Inti yang harus dibawa pulang:

  • KV v2 adalah standar produksi — versioning, metadata, dan soft delete memberi kontrol dan audit yang tidak dimiliki KV v1.
  • Soft delete berbeda dari destroy — yang pertama bisa di-undelete, yang kedua permanen.
  • Versioning adalah jejak audit — dengan -version, metadata get, dan rollback, riwayat secret selalu terlacak.
  • Path data hanya urusan internal — CLI bao kv menangani pemetaan path otomatis.

Di episode 4 berikutnya kita naik level dari secret statis ke Dynamic Database Secrets Engine — OpenBao membuat user dan password database secara on-demand, berlaku singkat, dan otomatis dihapus saat kedaluwarsa. Kalian akan melihat bagaimana paradigma kredensial berubah total: dari password statis yang bocor-bocoran menjadi kredensial sementara yang tidak pernah menunggu lama di server. Siapkan instance PostgreSQL atau MySQL kalian!

Belajar Secret Management - KV Secrets Engine (KeyValue v1 vs KV v2 with Versioning) | Belajar Secret Management dengan OpenBao