Mengelola rahasia dan kepatuhan secara profesional: menyimpan secrets di Vault/OpenBao dengan rotasi otomatis, membangun audit trail yang bisa dipertanggungjawabkan, serta memahami kerangka regulasi yang memengaruhi infrastruktur

Setelah di episode 18 kita mengamankan jaringan, kini dua hal yang membuat keamanan itu bisa dipertanggungjawabkan: secrets management dan compliance. Di episode 8 dan 17 kita menyinggung "simpan rahasia di secret manager" — episode ini membangunnya secara utuh.
Mengapa topik ini penting? Karena rahasia yang tersebar adalah risiko terbesar yang bisa dikendalikan: password di file config, API key di env variable yang di-commit, kredensial service account di script. Dan di dunia yang diatur regulasi, kalian tidak cukup aman — kalian harus bisa membuktikan aman lewat audit trail dan kebijakan yang terdokumentasi.
Kebocoran kredensial hampir selalu bermula dari kebiasaan: hardcode di kode, commit ke Git, atau disimpan di server sebagai file biasa. Sekali bocor, penyerang bisa masuk diam-diam — dan tanpa audit, tidak ada yang tahu.
.env di repo Git → semua orang yang clone dapat kredensial
password di config file → siapa pun yang baca server bisa mengambil
key di command history → tersimpan di shell history
secret di image container → terekam permanen di layer imageSemua pola di atas adalah anti-pattern yang harus dihindari sejak hari pertama.
Vault (HashiCorp) dan OpenBao (fork open-source) adalah tool standar penyimpanan secrets: terenkripsi, ter-audit, dan punya mekanisme rotasi.
| Konsep | Fungsi |
|---|---|
| Secret Engine | Jenis rahasia yang disimpan (KV, database, PKI) |
| Policy | Siapa boleh baca rahasia apa (HCL) |
| Token | Cara klien mengautentikasi ke Vault |
| Lease & TTL | Masa berlaku rahasia — dipaksa dirotasi |
| Audit log | Jejak siapa membaca rahasia apa, kapan |
export VAULT_ADDR=https://vault.lab.local:8200
vault kv put secret/app/database username=app_user password=$(openssl rand -hex 24)
vault kv get secret/app/databaseAplikasi mengambil rahasia saat dibutuhkan:
Aplikasi → autentikasi ke Vault → baca secret → gunakan → buang
Tidak ada secret di file config. Tidak ada secret di env var statis.Kekuatan terbesar Vault adalah dynamic secrets — kredensial dibuat sesuai permintaan, bukan disimpan:
vault read database/creds/app-roleVault membuat user database baru dengan lease singkat (misal 1 jam) yang otomatis di-revoke saat habis. Tidak ada lagi "password database yang dipakai 5 tahun tanpa diganti".
Important
Perbedaan mendasar: menyimpan rahasia di Vault (static secret) sudah baik, tetapi dynamic secret jauh lebih baik — kredensial yang lahir dan mati otomatis membuat kebocoran jauh kurang berbahaya. Jika penyerang mencuri password yang sudah kedaluwarsa, yang didapatnya hanyalah catatan sejarah.
OpenBao adalah fork komunitas dari Vault (setelah HashiCorp berpindah lisensi), sintaks dan API-nya kompatibel. Pilih OpenBao jika menginginkan lisensi MPL 2.0 penuh; Vault jika menginginkan ekosistem resmi. Konsepnya identik — belajar satu, bisa memakai yang lain.
Terraform/OpenTofu tidak menyimpan secret di state jika memakai Vault sebagai data source:
data "vault_generic_secret" "db" {
path = "secret/app/database"
}
resource "aws_db_instance" "app" {
username = data.vault_generic_secret.db.data["username"]
password = data.vault_generic_secret.db.data["password"]
}Di Kubernetes, secret bisa disuntikkan dari Vault ke pod tanpa masuk ke manifest Git (pola Vault Agent / External Secrets Operator):
Vault → External Secrets Operator → Kubernetes Secret → mounted ke pod
Secret di Git: placeholder. Secret asli: hanya di Vault.Compliance menuntut kalian membuktikan siapa mengakses apa. Audit log adalah tulang punggungnya:
Siapa : user / service account
Apa : resource yang diakses
Kapan : timestamp
Dari mana: IP / host
Hasil : sukses / gagalSumber audit yang wajib diaktifkan:
sudo apt install auditd
sudo systemctl enable --now auditd
auditctl -w /etc/shadow -p wa -k identity_change
ausearch -k identity_change -ts todayPrinsipnya: jika tidak tercatat, dianggap tidak terjadi. Log audit yang tidak aktif = tidak ada bukti keamanan.
Compliance bukan "pekerjaan legal" — ia menentukan bentuk infrastruktur:
| Kerangka | Fokus | Dampak ke Infrastruktur |
|---|---|---|
| ISO 27001 | Manajemen keamanan informasi | Prosedur, kontrol terdokumentasi |
| SOC 2 | Kontrol organisasi layanan | Audit bukti, monitoring, incident response |
| GDPR | Privasi data (EU) | Enkripsi, data residency, hak hapus |
| UU PDP | Perlindungan data (Indonesia) | Data residency, consent, breach notification |
| PCI-DSS | Data kartu pembayaran | Segmentasi ketat, enkripsi, log |
| HIPAA | Data kesehatan (AS) | Enkripsi, audit access, backup |
Pola umum yang dituntut regulasi — dan menjadi checklist infrastruktur:
1. Enkripsi data at-rest & in-transit (semua kerangka)
2. Least privilege + audit access
3. Backup yang teruji (data availability)
4. Incident response & breach notification plan
5. Data residency: data tertentu harus di lokasi tertentu
6. Retention & penghapusan data sesuai ketentuan
7. Dokumentasi & bukti audit yang bisa diproduksiTip
Pendekatan yang benar bukan "memenuhi checklist saat diaudit", melainkan menjadikan kontrol sebagai default arsitektur: enkripsi default, audit selalu aktif, backup teruji berkala. Jika kontrol sudah menjadi kebiasaan, audit hanya formalitas — bukan drama tahunan.
Pada episode 19 ini kalian telah mengelola rahasia dan kepatuhan:
Di episode 20 selanjutnya kita menyiapkan respons saat yang buruk terjadi: incident response infra — runbooks, deteksi, dan blameless post-mortem. Sampai jumpa di episode 20!