Belajar Secret Management - OpenBao Agent & Auto-Auth Engine
Episode 11 of 21

Belajar Secret Management - OpenBao Agent & Auto-Auth Engine

Melepas beban pengelolaan token dan renewal dari dalam kode aplikasi dengan OpenBao Agent, memanfaatkan auto-auth untuk AppRole, AWS, dan Kubernetes, serta merender file konfigurasi seperti .env dan config.json lewat agent template.

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

Pendahuluan

Pada episode 10 kalian melihat aplikasi memegang token sendiri untuk membaca secret — dan terseret pada urusan login ulang serta perpanjangan lease. Episode 11 ini menghadirkan solusi yang lebih elegan: OpenBao Agent. Agent adalah daemon yang duduk di samping aplikasi, mengurus seluruh siklus hidup token, dan menyuntikkan secret langsung ke file yang aplikasi baca. Kode aplikasi tidak lagi peduli dari mana secret berasal.

Mengapa Menggunakan OpenBao Agent

Menaruh logika autentikasi di dalam kode aplikasi itu rapuh: setiap bahasa perlu mengulang pola login, renew, dan penanganan error yang sama; satu bug bisa mengekspos token; dan tim harus memelihara kode yang sama di belasan service. Agent menghilangkan semua itu:

  • Kode aplikasi dibersihkan — tidak ada logika token, cukup baca file.
  • Token dikelola terpusat — agent yang login, memperbarui, dan membuang token.
  • Satu pola untuk semua bahasa — Node.js, Go, Python, atau PHP tidak perlu tahu perbedaan client library.
  • Rentang serangan menyempit — token hidup di memori agent, bukan di kode.

Konsep OpenBao Agent Daemon

Agent berjalan sebagai proses pendamping — sidecar atau service terpisah — di mesin yang sama dengan aplikasi. Ia membaca file konfigurasi HCL, melakukan login sendiri, dan menyimpan token yang dikelolanya. Aplikasi tidak pernah memegang token; ia hanya membaca file hasil render.

Konfigurasi agent paling sederhana:

agent-config.hcl
vault {
  address = "http://127.0.0.1:8200"
}
 
auto_auth {
  method "approle" {
    config = {
      role_id_file_path   = "/etc/bao/role-id"
      secret_id_file_path = "/etc/bao/secret-id"
    }
  }
}

Auto-Auth: Login Otomatis

Blok auto_auth adalah inti agent. Ia mendefinisikan method login yang dipakai agent untuk memperoleh token — lalu mengelola seluruh siklus hidupnya: memperbarui sebelum TTL habis, dan mengulang login jika perlu. Beberapa method yang didukung:

Metode Auto-AuthKredensial awalCocok untuk
approlerole_id + secret_id (file)Aplikasi di VM atau container
awsKredensial instance / peran IAMInstance EC2, EKS
kubernetesServiceAccount JWT podPod di cluster K8s

Perhatikan approle membaca kredensial dari file (role_id_file_path, secret_id_file_path) — bukan dari kode. Sementara aws dan kubernetes memanfaatkan identitas yang sudah diberikan platform tempat aplikasi berjalan. Agent memilih yang sesuai lingkungan, dan token yang dihasilkan dirotasi sendiri tanpa campur tangan manusia.

Menjalankan OpenBao Agent
bao agent -config=/etc/bao/agent-config.hcl

bao agent -config=/etc/bao/agent-config.hcl menjalankan agent di foreground. Dalam produksi, ia dijalankan sebagai service (misalnya systemd) atau sebagai sidecar container — dan di episode 12 nanti, disuntikkan otomatis ke pod Kubernetes.

Agent Templates: Merender File Konfigurasi

Inilah fitur yang paling terasa oleh aplikasi. Agent template memakai Consul Template syntax untuk merender file aplikasi — .env, config.json, atau file apa pun — berisi secret yang diambil langsung dari OpenBao.

Contoh template untuk file .env:

.env.tpl
{{- with secret "secret/data/app" }}
DB_USER={{ .Data.data.username }}
DB_PASSWORD={{ .Data.data.password }}
API_KEY={{ .Data.data.api_key }}
{{- end }}

Dan versi JSON-nya untuk config.json:

config.json.tpl
{
  "database": {
    "user": "{{ .Data.data.username }}",
    "password": "{{ .Data.data.password }}"
  }
}

Agent merender template ini ke file tujuan dan, jika diatur, menjalankan perintah restart aplikasi saat isinya berubah. Konfigurasi render-nya ditambahkan lewat blok template pada file konfigurasi agent:

Blok template pada agent-config.hcl
template_config {
  static_secret_render_interval = "5m"
}
 
template {
  source      = "/etc/bao/.env.tpl"
  destination = "/etc/app/.env"
  exec {
    command = ["/bin/systemctl", "restart", "my-app"]
  }
}

Tip

Untuk secret dinamis (seperti kredensial database), biarkan template membaca dari database/creds/my-role sehingga setiap kali lease diperbarui, file .env di-render ulang dan aplikasi di-restart — rotasi kredensial tanpa sentuhan manusia. Untuk secret statis, atur static_secret_render_interval agar tetap ter-sinkron.

Alurnya utuh: agent login via auto-auth, mengambil secret, merender .env dan config.json, lalu me-restart aplikasi. Kode aplikasi hanya membaca environment — ia tidak pernah membuka satu pun request ke OpenBao. Inilah integrasi tidak langsung dari episode 10 yang diotomatisasi penuh.

Penutup

Pada episode 11 ini kalian mengenal OpenBao Agent: alasan menghindari pengelolaan token di kode, konsep agent sebagai daemon pendamping, auto-auth untuk AppRole, AWS, dan Kubernetes dengan siklus hidup token yang dikelola otomatis, serta agent template berbahasa Consul Template yang merender .env dan config.json dari secret OpenBao.

Inti yang harus dibawa pulang:

  • Token seharusnya tidak pernah hidup di kode aplikasi — agent yang mengelola semuanya.
  • Auto-auth menyesuaikan lingkungan — AppRole untuk VM, AWS untuk EC2, Kubernetes untuk pod.
  • Template merender file yang aplikasi sudah kenal — tidak perlu mengubah aplikasi sama sekali.
  • Restart otomatis saat secret berganti — rotasi berjalan tanpa campur tangan manusia.

Di episode 12 terakhir fase ini, konsep agent diangkat ke skala orchestrator: integrasi OpenBao dengan Kubernetes — autentikasi ServiceAccount pod, injeksi sidecar agent lewat annotation, dan sinkronisasi secret ke Kubernetes Secrets.

Belajar Secret Management - OpenBao Agent & Auto-Auth Engine | Belajar Secret Management dengan OpenBao