Belajar Secret Management - Complete Production-Grade OpenBao Architecture
Episode 20 of 21

Belajar Secret Management - Complete Production-Grade OpenBao Architecture

Episode pamungkas merangkai seluruh materi menjadi satu studi kasus nyata: merancang sistem secret management enterprise 100% open source, mulai dari cluster HA dengan auto-unseal, integrasi Kubernetes, kredensial database dinamis, enkripsi transit untuk data PII, hingga akses manusia dengan OIDC dan audit log ke Grafana Loki.

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

Pendahuluan

Episode 19 menutup fase troubleshooting, dan sekarang tibalah saat yang kalian tunggu-tunggu: episode 20 — episode pamungkas series ini. Sepanjang 19 episode kalian mempelajari potongan demi potongan: dari inisialisasi dan unseal, secrets engine, policy dan auth, integrasi aplikasi, Kubernetes, CI/CD, sampai high availability dan hardening. Episode terakhir ini menyatukan semua potongan itu ke dalam satu rancangan utuh: arsitektur production-grade untuk secret management terpadu skala enterprise yang berbasis 100% open source.

Kita akan membangun studi kasus perusahaan dengan kebutuhan nyata: cluster OpenBao yang selalu tersedia, aplikasi Kubernetes yang mendapat secret tanpa menyentuh kode, database yang memakai kredensial dinamis berumur pendek, data PII seperti NIK dan nomor kartu kredit yang terenkripsi di penyimpanan, akses manusia yang terotentikasi lewat SSO, serta jejak audit yang tercatat dan backup yang berjalan otomatis.

Alur Arsitektur Terpadu

Sebelum masuk ke detail, berikut peta besar arsitektur yang akan dibangun:

LayerKomponenMateri Sumber
Infrastructure3-node HA, Raft storage, AWS KMS auto-unsealEpisode 15, 16
KubernetesAgent Sidecar Injector, kubernetes authEpisode 12
DatabaseDynamic PostgreSQL credentials, TTL 1 jamEpisode 4
ApplicationTransit encryption untuk PIIEpisode 5
Human and IaCOIDC auth, OpenTofu provider, Loki audit, snapshot harianEpisode 8, 14, 17

Seluruh lapisan ini saling terhubung ke satu cluster OpenBao yang sama. Mari kita bangun satu per satu.

Infrastructure Layer: Cluster HA dengan Auto-Unseal

Fondasi arsitektur adalah 3-node OpenBao HA cluster menggunakan Raft integrated storage dan auto-unseal AWS KMS. Tiga node berarti cluster bertahan jika satu node mati, sementara auto-unseal memastikan setiap node terbuka otomatis setelah restart — tanpa manusia membawa kunci.

Config node OpenBao (config.hcl)
ui = true
 
storage "raft" {
  path      = "/etc/openbao/data"
  node_id   = "openbao-1"
  retry_join {
    leader_api_addr = "https://openbao-1.example.com:8200"
  }
}
 
seal "awskms" {
  region     = "ap-southeast-1"
  kms_key_id = "arn:aws:kms:ap-southeast-1:123456789012:key/abc123"
}
 
listener "tcp" {
  address       = "0.0.0.0:8200"
  tls_disable   = "false"
  tls_cert_file = "/etc/openbao/tls/server.crt"
  tls_key_file  = "/etc/openbao/tls/server.key"
}
 
disable_mlock = false

Node kedua dan ketiga hanya berbeda pada node_id dan alamat retry_join. Setelah semua node bergabung lewat bao operator raft join, cluster akan memilih satu leader. Semua prinsip dari episode 15 dan 16 — quorum, failover, dan auto-unseal — kini menjadi realitas di infrastruktur kalian.

Kubernetes Integration: Agent Sidecar Injector

Aplikasi di EKS atau GKE membutuhkan secret, tetapi tidak boleh menyimpannya sendiri. Dengan OpenBao Agent Sidecar Injector, setiap pod yang diberi anotasi otomatis menerima sidecar yang mengambil secret dan merendernya ke file di volume bersama. Autentikasinya memakai Kubernetes Auth Engine — pod membuktikan identitas lewat ServiceAccount JWT-nya.

KubernetesAnotasi pod untuk injeksi sidecar
metadata:
  annotations:
    openbao.org/agent-inject: "true"
    openbao.org/role: "web-app"
    openbao.org/agent-inject-secret-config: "secret/data/myapp"
    openbao.org/agent-inject-file-config: "config.env"

Sebelum itu, aktifkan dan konfigurasi auth kubernetes di sisi OpenBao:

Mengaktifkan kubernetes auth
bao auth enable kubernetes
bao write auth/kubernetes/config kubernetes_host="https://kubernetes.default.svc"

Aplikasi kini membaca /bao/secrets/config yang di-render sidecar, diperbarui otomatis sesuai siklus hidup lease. Ini persis pola yang kalian pelajari di episode 12 — kode aplikasi bersih, secret selalu segar.

Database Security: Dynamic Credentials PostgreSQL

Bagian yang paling sering dijadikan tolok ukur keberhasilan: dynamic credentials PostgreSQL dengan TTL pendek. Setiap aplikasi yang butuh koneksi database meminta kredensial ke OpenBao, dan OpenBao membuat user beserta password sementara secara instan — hidup selama 1 jam, lalu dihapus otomatis.

Setup dynamic PostgreSQL credentials
bao secrets enable database
bao write database/config/postgres \
  plugin_name="postgresql-database-plugin" \
  connection_url="postgresql://{{username}}:{{password}}@db.internal:5432/app" \
  allowed_roles="web-role"
bao write database/roles/web-role \
  db_name="postgres" \
  creation_statements="CREATE USER {{name}} WITH PASSWORD '{{password}}' VALID UNTIL '{{expiration}}'" \
  default_ttl="1h" max_ttl="24h"

Ketika sebuah service memanggil bao read database/creds/web-role, OpenBao langsung membuat user sementara. Dengan TTL 1 jam, bahkan jika kredensial bocor, masa pakainya sangat pendek — dan karena setiap instance memakai kredensial yang berbeda, satu kebocoran tidak membuka pintu untuk semuanya. Prinsip dari episode 4 kini berjalan penuh di produksi.

Application Security: Transit untuk Data PII

Data sensitif seperti NIK dan nomor kartu kredit tidak boleh disimpan sebagai teks polos di database aplikasi. Dengan Transit Secrets Engine, OpenBao menjadi layanan enkripsi terpusat: aplikasi mengirim teks polos, menerima ciphertext, dan OpenBao tidak pernah menyimpan datanya — hanya kuncinya.

Encryption-as-a-Service untuk PII
bao write -f transit/keys/pii-key
bao write transit/encrypt/pii-key plaintext=$(base64 <<< "NIK-3171xxxx")
bao write transit/decrypt/pii-key ciphertext="vault:v1:..."

Backend aplikasi memanggil endpoint transit saat menyimpan dan membaca data PII. Kunci rotasi, versi, dan siklus hidupnya dikelola di satu tempat — OpenBao — bukan tersebar di kode tiap layanan. Kalian bisa menambahkan konvergen atau keyring bawaan transit sesuai kebutuhan. Inilah wujud nyata dari EaaS yang diperkenalkan di episode 5.

Human Access dan IaC: OIDC, OpenTofu, Loki, dan Snapshot

Terakhir, lapisan untuk manusia dan infrastruktur sebagai kode. Manusia tidak lagi memakai token statis: mereka masuk lewat OIDC ke SSO perusahaan, dan OpenTofu memakai Vault provider (sepenuhnya kompatibel dengan OpenBao) untuk mengambil secret saat provisioning. Semua aktivitas dicatat ke Grafana Loki, dan snapshot raft diambil setiap hari.

Menyambungkan semua lapisan terakhir
bao auth enable oidc
bao write auth/oidc/config oidc_discovery_url="https://sso.example.com" \
  oidc_client_id="openbao" oidc_client_secret="***"
bao audit enable syslog
0 2 * * * bao operator raft snapshot save /backups/daily.snap

Sementara itu, di sisi IaC, provider OpenTofu membaca kredensial dinamis untuk provisioning dan menerbitkan sertifikat PKI internal sesuai kebutuhan. Audit device yang kalian aktifkan — baik ke file maupun syslog yang diteruskan ke Loki — merekam setiap langkah ini, memberi jejak lengkap untuk tim security.

Note

Jangan meng-copy-paste seluruh blok di atas secara mentah ke produksi. Setiap parameter — region KMS, alamat node, nama role, TTL, dan kebijakan OIDC — harus disesuaikan dengan lingkungan kalian dan diuji di staging lebih dulu. Arsitektur ini adalah cetak biru, bukan script final.

Checklist Kesiapan Produksi dan Security Audit

Arsitektur hebat tidak berarti apa-apa tanpa verifikasi. Gunakan checklist berikut sebagai bahan security audit terakhir sebelum dan sesudah go-live:

AreaItem yang DiperiksaStatus
ClusterTiga node, quorum sehat, raft list-peers konsisten
UnsealAuto-unseal AWS KMS berhasil di semua node setelah restart
NetworkTLS wajib, tls_min_version setidaknya TLS 1.2
Memorydisable_mlock = false, LimitMEMLOCK memadai
AuthRoot token dicabut, hanya auth method yang dibutuhkan aktif
PolicyLeast privilege, deny rule diuji, tidak ada policy superuser selain admin
DatabaseTTL role pendek, user dinamis terhapus setelah lease berakhir
K8sInjector aktif di namespace produksi, secret tidak bocor ke log
TransitKunci PII dirotasi berkala, data sensitif tersimpan sebagai ciphertext
ObservabilityAudit log mengalir ke Loki, alert aktif untuk node sealed
BackupSnapshot harian berjalan, uji restore berkala di staging

Important

Jadikan root token revocation dan uji restore snapshot sebagai dua item yang tidak bisa ditawar. Keduanya sering terlewat dan keduanya menentukan apakah arsitektur kalian benar-benar siap produksi atau hanya rapi di atas kertas.

Penutup

Selamat, kalian telah menyelesaikan seluruh perjalanan series Belajar Secret Management dengan OpenBao — dari episode 0 yang menyiapkan environment dan memahami sejarah fork serta manifesto Linux Foundation, melewati arsitektur dan inisialisasi, KV, dynamic database secrets, transit, PKI, policy, authentication methods, lease management, integrasi aplikasi, agent dan auto-auth, Kubernetes, CI/CD, OpenTofu dan Ansible, high availability cluster, auto-unseal, audit logging dan hardening, migrasi dari HashiCorp Vault, troubleshooting, hingga arsitektur production-grade yang baru saja kalian rancang.

Episode terakhir ini merangkum semuanya menjadi satu cetak biru: 3-node HA cluster dengan Raft storage dan AWS KMS auto-unseal, Agent Sidecar Injector dengan kubernetes auth di EKS atau GKE, dynamic PostgreSQL credentials dengan TTL 1 jam, Transit untuk enkripsi NIK dan nomor kartu kredit, akses manusia melalui OIDC, provisioning dengan OpenTofu provider, audit log ke Grafana Loki, serta snapshot harian — semua dengan checklist kesiapan produksi dan security audit yang terverifikasi.

Inti yang harus dibawa pulang:

  • Semua lapisan berpusat pada satu cluster yang dirawat dengan disiplin: quorum, unseal, dan backup.
  • Dynamic credentials dan Transit mengubah secret management dari penyimpanan menjadi layanan keamanan aktif.
  • Automasi adalah syarat produksi — auto-unseal, injector, snapshot, dan audit harus berjalan tanpa campur tangan manusia.
  • Verifikasi lebih penting dari konstruksi — checklist audit dan uji restore menentukan kesiapan sejati.

Namun ingat: menguasai OpenBao bukan akhir, melainkan pintu masuk. Prinsip yang kalian pelajari — least privilege, dynamic secrets, observability, dan defense in depth — berlaku sama di seluruh bidang keamanan lainnya. Teruslah menekuni topik-topik keamanan berikutnya di platform ini, karena di sanalah kalian akan menyempurnakan kemampuan yang sudah kalian bangun selama 21 episode ini. Sampai jumpa di series berikutnya!

Belajar Secret Management - Complete Production-Grade OpenBao Architecture | Belajar Secret Management dengan OpenBao