Sebelum masuk lebih dalam ke HashiCorp Vault, ada beberapa skill dasar dan tools yang perlu kalian siapkan terlebih dahulu, mulai dari Linux CLI, konsep dasar kriptografi, hingga instalasi Vault CLI dan setup environment untuk menjalankan Vault server.

Selamat datang di series Belajar Secret Management dengan HashiCorp Vault! Series ini akan mengajak kalian menguasai Vault dari nol hingga level siap produksi: mulai dari problem secret sprawl, perbandingan ekosistem secret manager, arsitektur internal Vault, secrets engines (KV, Dynamic DB, Transit, PKI), policies dan authentication, hingga integrasi dengan aplikasi, Kubernetes, dan CI/CD. Tapi seperti kata pepatah, "rumah yang kokoh berdiri di atas fondasi yang kuat". Sebelum menulis policy pertama atau membaca secret dari Vault, ada beberapa skill dasar dan tools yang wajib kalian miliki dan siapkan terlebih dahulu.
Mengapa prasyarat ini begitu penting? Vault pada dasarnya adalah sebuah server API yang tugasnya menyimpan dan membagikan rahasia. Ia dikonfigurasi lewat file HCL/JSON, dioperasikan lewat CLI atau HTTP API, dan secara konsep bergantung pada pemahaman kriptografi modern. Artinya, jika kalian belum familiar dengan dasar Linux CLI, konsep enkripsi dan hashing, serta format data JSON, perjalanan belajar kalian akan tersendat di setiap langkah. Bayangkan ingin menjadi manajer kasir yang hebat tapi belum paham cara menghitung uang — sehebat apapun sistemnya, tetap sulit untuk dipercaya.
Episode 0 ini akan menjadi peta jalan untuk memastikan kalian semua siap. Kita akan membahas tiga skill fundamental (Linux CLI, konsep dasar kriptografi, dan pemahaman REST API & JSON), lalu menyiapkan seluruh perangkat lunak yang dibutuhkan, dan ditutup dengan instalasi Vault CLI, menjalankan Vault server dalam dua mode, serta setup environment variable-nya. Setelah episode ini selesai, kalian sudah benar-benar siap melangkah ke episode 1 yang membahas mengapa Vault dibutuhkan.
Kita mulai dari skill. Tanpa skill ini, setup tools secanggih apapun tidak akan berguna. Berikut tiga pilar skill yang harus kalian kuasai setidaknya di level dasar.
Vault lahir dan tumbuh besar di ekosistem Linux/Unix. Mayoritas penggunaannya di dunia nyata — terutama di server production, CI/CD pipeline, dan container — berjalan di atas Linux. Karena itu, kemampuan mengoperasikan Linux melalui CLI (Command Line Interface) adalah syarat mutlak.
Apa saja yang harus kalian kuasai?
1. Navigasi & manajemen file. Kalian harus nyaman berpindah direktori, melihat isi, membuat, menyalin, dan menghapus file. Ini kemampuan paling dasar yang akan kalian pakai setiap hari, termasuk saat menaruh file konfigurasi config.hcl Vault.
pwd # cetak direktori kerja saat ini
ls -la # lihat isi direktori (termasuk hidden file)
cd ~/lab-vault # pindah ke direktori project
mkdir -p vault/config # buat direktori bertingkat
cp config.hcl backup/ # salin file2. Membaca dan memproses teks. File konfigurasi Vault adalah teks biasa, dan saat debugging kita sering harus menyaring output log yang panjang. Kalian perlu mengenal perintah seperti cat, less, grep, sed, dan cut.
3. Permission file (chmod & chown). Vault sangat peka terhadap permission file. Misalnya, file unseal key atau config.hcl yang permission-nya terlalu terbuka akan menjadi risiko keamanan nyata. Pahami konsep r (read), w (write), dan x (execute) untuk tiga kelompok: owner, group, dan others.
4. Paket manager. Kalian harus bisa menginstall software lewat paket manager distro masing-masing, karena inilah cara paling mudah memasang Vault CLI. Di Ubuntu/Debian menggunakan apt, di Fedora/RHEL menggunakan dnf, dan di macOS menggunakan brew.
Tip
Jika kalian masih pemula di Linux, jangan khawatir — kalian tidak perlu jadi sysadmin pro untuk belajar Vault. Yang penting kalian nyaman menavigasi direktori, mengedit file, dan menjalankan perintah dengan sudo bila diperlukan. Sisanya akan ikut terasah seiring perjalanan series ini.
Vault adalah cryptographic tool. Untuk memahami bagaimana Vault menyimpan, melindungi, dan membagikan rahasia, kalian wajib memahami empat fondasi kriptografi berikut. Ini bukan matematika tingkat lanjut — cukup pahami apa, mengapa, dan kapan menggunakannya.
| Konsep | Cara Kerja | Contoh Algoritma | Kegunaan di Vault |
|---|---|---|---|
| Enkripsi Simetris | Satu key yang sama dipakai untuk enkripsi & dekripsi | AES-256, ChaCha20 | Enkripsi data yang disimpan di storage backend (transit engine) |
| Enkripsi Asimetris | Sepasang key: public key untuk enkripsi, private key untuk dekripsi | RSA, ECDSA, Ed25519 | Penandatanganan sertifikat di PKI engine, auth JWT |
| Hashing | Fungsi satu arah: menghasilkan digest tetap yang mustahil dibalik | SHA-256, BLAKE2 | Penyimpanan password, verifikasi integritas data, pemecahan unseal key |
| Key Management | Siklus hidup key: generate, simpan, rotasi, revoke | — | Inilah inti pekerjaan Vault: mengelola key agar tetap aman |
Analoginya begini: enkripsi simetris seperti brankas berkunci gembok — satu kunci untuk membuka dan menutup. Enkripsi asimetris seperti kotak surat umum: siapa saja boleh memasukkan surat (public key), tapi hanya kalian yang punya kunci khusus yang bisa membukanya (private key). Hashing bukan kunci sama sekali — ia seperti mesin penggiling daging: dari daging (input) selalu keluar daging giling (digest), tapi dari daging giling mustahil mengembalikannya jadi daging utuh.
Mengapa konsep ini penting untuk Vault?
Note
Kalian tidak perlu hafal rumus matematika di balik algoritma-algoritma ini. Di level ini, yang penting kalian paham perbedaan simetris vs asimetris vs hashing, dan mengapa "menyimpan key di tempat yang sama dengan data" adalah kesalahan fatal. Perbandingan konseptual di atas sudah cukup sebagai modal.
Ini mungkin skill yang paling sering disepelekan, padahal paling menentukan. Setiap interaksi dengan Vault — baik via CLI, Web UI, maupun SDK — pada akhirnya adalah HTTP request ke REST API Vault. Command vault kv get secret/api di balik layar hanyalah panggilan GET /v1/secret/data/api.
Berikut contohnya secara gamblang. Dua perintah berikut menghasilkan hal yang identik:
# CLI hanyalah pembungkus HTTP API
vault kv get secret/api/databaseKarena itu, kalian harus paham beberapa hal dasar:
GET untuk membaca, POST/PUT untuk menulis, DELETE untuk menghapus, LIST untuk mendaftar.200 OK sukses, 403 forbidden (policy menolak), 404 tidak ditemukan, 429 rate limited.{ "data": { ... } }. Kalian harus nyaman membaca dan memanipulasi JSON, misalnya dengan jq.{
"request_id": "3f4a5b6c-7d8e-4f90-a1b2-c3d4e5f60718",
"lease_id": "",
"renewable": false,
"data": {
"data": {
"password": "S3cret!Passw0rd"
},
"metadata": {
"created_time": "2026-08-02T10:00:00Z",
"version": 1
}
}
}Tip
Cara paling cepat melatih intuisi JSON: pasang jq (sudo apt install jq) dan biasakan menyalurkan output curl lewatnya, misalnya curl ... | jq '.data.data'. Begitu kalian lancar membaca struktur berlapis seperti di atas, konsep Vault seperti mount path, lease, dan policy akan terasa jauh lebih mudah.
Setelah skill terpenuhi, sekarang saatnya menyiapkan perangkat. Berikut daftar lengkapnya:
| No | Tool | Type | Level | Keterangan |
|---|---|---|---|---|
| 1. | Laptop / PC / Mini PC | Hardware | Wajib | Mesin utama untuk menjalankan Vault; spesifikasi standar sudah cukup |
| 2. | Vault CLI | Software | Wajib | Binary utama untuk menjalankan vault status, vault kv, vault operator, dll |
| 3. | Docker (opsional) | Software | Direkomendasikan | Cara paling cepat menjalankan Vault server production-like tanpa setup binary |
| 4. | Text Editor | Software | Wajib | VS Code + ekstensi HashiCorp HCL untuk syntax highlighting file .hcl |
| 5. | curl + jq | Software | Direkomendasikan | Untuk eksperimen langsung ke HTTP API Vault |
| 6. | Git | Software | Wajib | Version control untuk kode dan config; praktik standar industri |
Vault adalah sebuah binary tunggal — tidak ada runtime khusus, tidak ada dependency tambahan. Inilah salah satu alasan Vault begitu mudah didistribusikan. HashiCorp menyediakan repo resmi untuk hampir semua distro Linux, macOS, dan Windows.
# Ubuntu / Debian
sudo apt-get update && sudo apt-get install -y gnupg software-properties-common
wget -O- https://apt.releases.hashicorp.com/gpg | sudo gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list
sudo apt update && sudo apt install vaultUntuk pengguna Windows, opsi paling direkomendasikan bagi kalian yang belajar DevOps adalah menggunakan WSL2 — karena seluruh command di series ini ditulis dalam gaya Linux. Alternatif lain: download binary dari releases.hashicorp.com lalu ekstrak ke PATH.
Setelah terinstall, verifikasi dengan vault --version. Output yang benar harus menunjukkan versi Vault dan arsitektur build-nya.
vault --version
Vault v1.18.3 (0b7b0a3a5fca62b0f1f2d6f77fca2a94fae1f4f4), built 2024-12-12T14:06:36ZVault menggunakan format HCL untuk file konfigurasi (config.hcl) dan policy. Pemasangan ekstensi HashiCorp HCL di VS Code akan memberikan syntax highlighting dan error detection sedini mungkin. Cukup buka tab Extensions (Ctrl+Shift+X / Cmd+Shift+X), cari HashiCorp HCL, lalu install.
Note
Kuncinya bukan fanatisme terhadap editor tertentu. Jika kalian lebih nyaman dengan Neovim atau JetBrains, tetap silakan — yang penting ada highlight HCL agar config file kalian mudah dibaca dan typo langsung terlihat.
Setelah CLI terinstall, kita perlu menjalankan Vault server agar ada sesuatu yang bisa kita "ajak bicara". Ada dua cara yang akan kita praktikkan di episode ini: dev mode untuk eksperimen cepat, dan production-like via Docker sebagai gambaran awal mode yang sesungguhnya.
vault server -dev)Dev mode adalah mode eksperimen bawaan Vault. Satu perintah, dan Vault langsung berjalan: storage in-memory (semua hilang saat mati), tidak di-seal (langsung bisa dipakai), dan token root sudah otomatis terautentikasi di CLI.
vault server -dev
==> Vault server configuration:
Api Address: http://127.0.0.1:8200
Cgo: disabled
Cluster Address: https://127.0.0.1:8201
Listener 1: tcp (addr: "127.0.0.1:8200", tls: "disabled")
Log Level: info
Mlock: supported: true, enabled: false
Storage: inmem
Version: Vault v1.18.3
WARNING! dev mode is enabled! In this mode, Vault runs entirely in-memory
and starts unsealed with a single unseal key. The root token is already
authenticated to the CLI, so you can immediately begin using Vault.
You may need to set the following environment variable:
$ export VAULT_ADDR='http://127.0.0.1:8200'
Unseal Key: eyJhbGciOiJIUzI1NiIs...
Root Token: hvs.rVN8j5dLp7X3nL2F8sB0vQ9cHPerhatikan tiga hal penting di output di atas:
Api Address: http://127.0.0.1:8200 — ini endpoint yang harus dituju CLI. Tanpa memberitahunya lewat VAULT_ADDR, CLI tidak akan tahu harus bicara ke mana.Unseal Key dan Root Token — dua rahasia paling sensitif di Vault. Di dev mode keduanya ditampilkan langsung di layar demi kemudahan eksperimen.Warning
Inilah kesalahan umum paling pertama: ada orang yang menjalankan vault server -dev di production karena "paling cepat". Jangan pernah. Dev mode menyimpan semua rahasia di memory (hilang saat restart), tidak ter-enkripsi secara layak, dan menampilkan token root di log. Ia murni untuk belajar dan eksperimen lokal.
Untuk merasakan cara Vault bekerja "yang sebenarnya" (initialization, sealing, unsealing — yang akan kita bedah di episode 3), kita mulai dengan Vault via Docker. Pertama, siapkan file konfigurasi minimal:
storage "file" {
path = "/vault/file"
}
listener "tcp" {
address = "0.0.0.0:8200"
tls_disable = true
}
api_addr = "http://127.0.0.1:8200"
disable_mlock = truedocker run --cap-add=IPC_LOCK \
-e 'VAULT_DEV_ROOT_TOKEN_ID=dev-only-token' \
-p 8200:8200 \
-v "$(pwd)/config.hcl:/vault/config/config.hcl" \
-v "$(pwd)/vault-data:/vault/file" \
hashicorp/vault:latest server -config=/vault/config/config.hclDengan mode ini, Vault berjalan seperti layaknya di server production: storage di file, dan belum di-initialize. Kita akan belajar cara meng-initialize dan meng-unseal-nya secara detail di episode 3.
Tip
Flag --cap-add=IPC_LOCK di atas dibutuhkan karena Vault ingin mengunci memory-nya (mlock) agar rahasia tidak bisa di-swap ke disk. Di dev mode, Vault otomatis menonaktifkannya — salah satu alasan lain kenapa dev mode tidak untuk production.
Agar CLI Vault bisa terhubung ke server, kita perlu mengeset dua environment variable terpenting: VAULT_ADDR (alamat server) dan VAULT_TOKEN (identitas kita).
export VAULT_ADDR='http://127.0.0.1:8200'
export VAULT_TOKEN='hvs.rVN8j5dLp7X3nL2F8sB0vQ9cH'
# Verifikasi koneksi
vault statusDi dev mode, VAULT_TOKEN boleh diabaikan karena CLI sudah terautentikasi otomatis — tapi di luar dev mode, tanpa VAULT_TOKEN kalian akan ditolak dengan error permission denied atau missing client token. Biasakan selalu mengeset keduanya.
Untuk kenyamanan, kalian bisa menaruh variabel ini di file .env.local project (yang sudah di-ignore oleh Git) atau di ~/.bashrc:
VAULT_ADDR=http://127.0.0.1:8200
VAULT_TOKEN=hvs.rVN8j5dLp7X3nL2F8sB0vQ9cHset -a && source .env.local && set +a
vault statusImportant
VAULT_TOKEN adalah rahasia. Jangan pernah menuliskannya di file yang di-commit ke Git. File .env* sudah seharusnya masuk .gitignore. Di episode 1 kita akan membahas betapa mahalnya konsekuensi secret yang bocor ke repository.
vault status Pertama KalianSetelah environment terset, inilah momen pertama kalian "berbicara" dengan Vault. Output di bawah adalah hasil dari dev mode (belum di-initialize, artinya status sebaliknya saat pakai mode production):
vault status
Key Value
--- -----
Seal Type shamir
Initialized true
Sealed false
Total Shares 1
Threshold 1
Version 1.18.3
Build Date 2024-12-12 14:06:36Z
Storage Type inmem
Cluster Name vault-cluster-6e4b2c9a
Cluster ID 3f4a5b6c-7d8e-4f90-a1b2
HA Enabled falseJangan khawatir jika istilah seperti Seal Type, Shares, dan Threshold belum kalian pahami — semuanya akan dibedah tuntas di episode 3 tentang initialization & unsealing. Untuk sekarang, yang penting: Initialized: true dan Sealed: false berarti Vault sudah siap dipakai.
Sekarang saatnya percobaan paling memuaskan — menulis rahasia pertama dan membacanya kembali:
vault kv put secret/api/database username="admin" password="S3cret!Passw0rd"
Success! Data written to: secret/api/databaseSelamat, kalian baru saja menggunakan KV Secrets Engine — salah satu secrets engine paling fundamental di Vault yang akan kita bedah menyeluruh di episode 4.
Vault juga menyediakan antarmuka web. Setelah server berjalan, buka browser dan arahkan ke:
http://127.0.0.1:8200/ui
# Login menggunakan root token yang tadi ditampilkan
# atau diset lewat VAULT_DEV_ROOT_TOKEN_IDWeb UI berguna untuk visualisasi: melihat daftar secrets, mengedit policy, dan memantau audit log. Di dev mode, gunakan token root untuk masuk. Di episode-episode selanjutnya, Web UI akan membantu kalian memverifikasi apa yang sedang kita konfigurasi via CLI.
Berdasarkan pengalaman, ini tiga kesalahan yang paling sering terjadi saat pertama kali bermain Vault:
| # | Kesalahan | Gejala | Solusi |
|---|---|---|---|
| 1 | Lupa set VAULT_ADDR | Get "http://127.0.0.1:8200/v1/sys/health": dial tcp ... connection refused atau malah menghubungi server lain | Selalu export VAULT_ADDR sebelum menjalankan command Vault |
| 2 | Salah port (misalnya memakai 8201 untuk API) | Connection refused | API Vault default di port 8200; port 8201 adalah cluster address, bukan untuk CLI |
| 3 | Token hilang / tidak diset | Error making API request ... missing client token atau permission denied | Set VAULT_TOKEN dengan token yang valid; jangan simpan di file yang ter-commit |
Ada satu lagi yang sering menipu: menyalin token dari log yang sudah lama, padahal Vault dev mode sudah di-restart (token baru setiap restart). Selalu ambil token dari sesi server yang sedang berjalan.
Caution
Kalau kalian menjalankan Vault via Docker production-like dan mencoba vault status tanpa inisialisasi, kalian akan melihat Initialized: false dan Sealed: true. Ini BUKAN error — itu memang kondisi awal Vault yang belum di-setup. Jangan panik; kita akan belajar proses initialization & unsealing di episode 3.
Di episode 0 ini kita sudah menyiapkan pijakan yang kokoh: menguasai tiga skill fundamental (Linux CLI, konsep dasar kriptografi, dan pemahaman REST API & JSON), menyiapkan perangkat dan tools yang dibutuhkan, menginstall Vault CLI, menjalankan Vault server di dev mode dan production-like via Docker, mengeset VAULT_ADDR dan VAULT_TOKEN, melakukan demo pertama vault kv put/get, serta mengenal Web UI.
Poin penting yang harus kalian bawa:
vault --version, dan langsung bisa dipakai.VAULT_ADDR dan VAULT_TOKEN sebelum berinteraksi dengan server.Pastikan semua skill dan tools di atas sudah kalian siapkan, karena episode berikutnya akan membahas konsep secara lebih mendalam. Di episode 1 selanjutnya, kita akan membahas problem statement di balik secret management: secret sprawl dan mengapa dunia modern membutuhkan Vault — mulai dari bahaya API key yang mengeras di source code, file .env yang bocor ke Git, kredensial statis yang jarang dirotasi, hingga taksonomi tipe-tipe secret yang harus kalian kenal. Pastikan tetap semangat, karena perjalanan belajar Vault baru saja dimulai!