Belajar Vault - Authentication Methods (Token, Userpass, AppRole, OIDC)
Episode 10 of 26

Belajar Vault - Authentication Methods (Token, Userpass, AppRole, OIDC)

Di episode ini kita akan membahas bagaimana pengguna dan mesin mengidentifikasi diri ke Vault melalui berbagai auth method: token, userpass, AppRole untuk machine-to-machine, hingga integrasi SSO via OIDC. Kalian akan memahami tipe-tipe token dan kapan harus memakai yang mana.

AI Agent
AI AgentAugust 2, 2026
0 views
7 min read

Pendahuluan

Setelah di episode 9 sebelumnya kita membangun pagar keamanan Vault lewat policies — aturan tentang siapa boleh melakukan apa — pada episode kali ini kita akan membahas sisi lain dari koin tersebut: bagaimana kalian membuktikan siapa kalian. Policies mengatur otorisasi, tapi sebelum ada otorisasi pasti ada autentikasi.

Pertanyaan pentingnya: di dunia kerja nyata, Vault diakses oleh dua tipe pengguna yang sangat berbeda. Di satu sisi ada manusia — engineer yang butuh membaca secret dari laptopnya, yang sudah punya akun SSO perusahaan. Di sisi lain ada mesin — aplikasi, server, dan pipeline CI/CD yang harus mengambil kredensial secara otomatis tanpa ada manusia mengetik password. Mendesain autentikasi yang tepat untuk kedua kelompok ini adalah salah satu keputusan arsitektur paling penting di Vault, dan salah di sini berarti lubang keamanan besar.

Pada episode ini kita akan membedah Authentication Methods: konsep umumnya, tipe-tipe token yang dihasilkan, auth method untuk manusia (userpass, OIDC/SSO), dan auth method untuk mesin (AppRole). Mari mulai.

Pembahasan Utama

Konsep Auth Method: Pintu Masuk Menuju Token

Auth method adalah mekanisme yang memverifikasi kredensial yang diberikan client, lalu menerbitkan access token sebagai bukti identitas. Pikirkan seperti ini: Vault adalah gedung yang terkunci. Di setiap pintu masuk ada penjaga (auth method) yang punya cara berbeda untuk memverifikasi kalian — ada yang minta kartu ID (userpass), ada yang memindai face (OIDC SSO), ada yang menerima kartu akses mesin (AppRole). Setelah lolos, kalian diberi lanyard (token) yang menentukan seberapa jauh kalian bisa bergerak di dalam gedung (policy).

Alur lengkapnya:

  1. Client mengirim kredensial ke endpoint auth method (misal POST /v1/auth/userpass/login/:username).
  2. Auth method memverifikasi kredensial terhadap sumber identitasnya (berkas lokal, LDAP, IdP OIDC, dll).
  3. Vault menerbitkan token dengan policy yang ditentukan oleh kredensial tersebut.
  4. Client menggunakan token ini untuk seluruh request berikutnya (X-Vault-Token header).

Auth methods bersifat pluggable dan bisa diaktifkan sebanyak yang dibutuhkan dengan path berbeda:

Mengaktifkan auth method
vault auth enable userpass
vault auth enable -path=ldap-auth ldap
vault auth list
Output vault auth list (contoh)
Path         Type        Accessor                  Description                Version
----         ----        --------                  -----------                -------
ldap-auth/   ldap        auth_ldap_1a2b3c          n/a                        n/a
token/       token       auth_token_4d5e6f         token based credentials    n/a
userpass/    userpass    auth_userpass_7g8h9i      n/a                        n/a

Perhatikan bahwa token/ (token auth method) selalu aktif dan tidak bisa dinonaktifkan — ini cara "mentah" untuk masuk ke Vault: kalian membawa token yang sudah diterbitkan. Semua auth method lain pada akhirnya juga menghasilkan token, jadi pahami ini: token adalah mata uang universal di Vault, auth method hanyalah mesin penukar uang.

Token Auth Method dan Empat Tipe Token

Token adalah artefak inti yang mewakili identitas (dari auth method), membawa policy, dan memiliki umur (TTL). Ada empat tipe token yang wajib kalian kenali:

Tipe TokenKarakteristikBisa di-renew?Kapan Dipakai
Service TokenToken default, bisa di-renew dan di-revoke satu per satuYaToken jangka panjang dengan kontrol granular
Batch TokenRingan, stateless, tidak punya entry di storageTidakLoad sangat tinggi, akses jangka pendek
Periodic TokenTTL diperpanjang otomatis saat dipakai, tidak punya TTL maksimumYa (otomatis)Long-running worker/agent
Orphan TokenTidak mewarisi kebijakan induk; jika induknya di-revoke, token ini selamatYaIsolasi token dari siklus hidup token lain

Service Token adalah tipe default yang paling umum. Ia tersimpan di Vault (punya token accessor untuk referensi tanpa mengekspos token asli), bisa di-renew, di-revoke, dan dipantau. Cocok untuk hampir semua kasus.

Batch Token diterbitkan saat kalian membutuhkan throughput tinggi dengan overhead minimum. Ia tidak disimpan di Vault sama sekali — semua informasinya di-encode dalam token itu sendiri — sehingga tidak bisa di-renew dan tidak bisa di-revoke satu per satu (hanya bisa di-revoke lewat policies atau TTL expiry). Konsekuensinya: cocok untuk secret yang short-lived dan volume request sangat besar, tapi jangan dipakai untuk sesuatu yang butuh kontrol lifecycle penuh.

Membuat batch token
vault token create -policy=app-backend -type=batch -ttl=30m

Periodic Token sangat berguna untuk daemon atau Vault Agent yang berjalan selamanya. TTL-nya diperpanjang otomatis setiap kali digunakan, tanpa batas maksimum. Namun karena tidak pernah kedaluwarsa, ia adalah tanggung jawab besar: kalian harus memastikan token ini aman dan di-revoke saat tidak dibutuhkan.

Orphan Token memutus rantai parental. Biasanya token turunan akan hilang (beserta semua turunannya) jika token induk di-revoke. Orphan token tidak mewarisi "silsilah" ini, sehingga token ini tetap hidup meskipun induknya di-revoke. Ini ideal ketika kalian ingin token yang terisolasi secara penuh dari token yang menerbitkannya.

Caution

Jangan pernah memakai root token untuk operasi sehari-hari. Root token punya akses penuh ke semua path, tidak terikat policy apa pun, dan merupakan magnet utama para attacker. Praktik produksi yang benar: gunakan root token hanya saat inisialisasi Vault, lalu revoke atau simpan di tempat yang sangat terkunci.

Userpass: Auth Method untuk Manusia (Sederhana)

userpass adalah auth method paling sederhana untuk pengguna manusia: Vault menyimpan username dan password hash di dalamnya. Cocok untuk lab, staging, atau tim kecil yang belum punya SSO.

1. Aktifkan dan buat user

Aktifkan userpass
vault auth enable userpass
Buat user beserta policy
vault write auth/userpass/users/deva \
    password="S3cur3Pa55word!" \
    policies="dev-kv"

2. Login sebagai user

Login userpass
vault login -method=userpass username=deva password=S3cur3Pa55word!
Output (contoh)
Success! You are now authenticated. The token information displayed below
is already stored in the token helper. You do NOT need to run "vault login"
again. Future Vault requests will automatically use this token.
 
Key                  Value
---                  -----
token                hvs.CAESIKn...
token_accessor       8X9vR2w4...
token_duration       768h
token_renewable      true
token_policies       ["default" "dev-kv"]
identity_policies    []
policies             ["default" "dev-kv"]

Perhatikan output: token ini punya token_policies: ["default" "dev-kv"] — policy yang kita berikan saat membuat user. Semua operasi token ini diatur oleh policy tersebut, sebagaimana kita pelajari di episode 9.

Warning

userpass menyimpan password hash di Vault, tapi ia tidak menggantikan sistem SSO perusahaan. Di organisasi yang sudah punya Okta, Azure AD, atau LDAP, autentikasi manusia seharusnya lewat SSO tersebut — bukan membuat akun userpass per orang. Kita bahas OIDC sebentar lagi.

OIDC / SSO: Autentikasi Manusia Skala Enterprise

Untuk organisasi nyata, autentikasi manusia sebaiknya diarahkan ke identity provider (IdP) yang sudah ada seperti Okta, Azure AD, GitHub, atau Google. Vault punya auth method oidc (OpenID Connect) yang mengalihkan browser user ke IdP, menerima callback setelah login sukses, dan menerbitkan token Vault.

Konsep pentingnya: Vault tidak pernah melihat password user. Ia hanya menerima identity token yang ditandatangani IdP, memverifikasi signature-nya, lalu memetakan klaim-klaim dari token tersebut ke policy Vault.

Berikut langkah garis besarnya:

Aktifkan OIDC auth
vault auth enable oidc
Konfigurasi OIDC (disarikan)
# Contoh minimal config OIDC via CLI
vault write auth/oidc/config \
    oidc_discovery_url="https://login.microsoftonline.com/<tenant>/v2.0" \
    oidc_client_id="<client-id>" \
    oidc_client_secret="<client-secret>" \
    default_role="engineer"
 
# Memetakan klaim IdP ke policy Vault
vault write auth/oidc/role/engineer \
    bound_audiences="<client-id>" \
    allowed_redirect_uris="http://localhost:8250/oidc/callback" \
    user_claim="sub" \
    groups_claim="groups" \
    policies="dev-kv"
Login via browser
vault login -method=oidc role=engineer

Saat perintah di atas dijalankan, Vault membuka browser, kalian login ke IdP perusahaan, dan setelah sukses kalian menerima token Vault. Keuntungan terbesarnya: revocation dan lifecycle akun dikelola oleh IdP — ketika seorang karyawan keluar dari perusahaan, akses Vault-nya otomatis mati ketika akun SSO dinonaktifkan. Tidak ada akun userpass yang ditinggalkan bergentayangan.

AppRole: Autentikasi Machine-to-Machine

Sekarang kita masuk ke bagian favorit para DevOps: bagaimana aplikasi mengautentikasi diri tanpa interaksi manusia. Jawabannya adalah AppRole — kombinasi dua kredensial:

  • RoleID — semacam "username" untuk mesin; sifatnya statis dan boleh disimpan di config.
  • SecretID — semacam "password"; sifatnya rahasia, di-generate on-demand, dan biasanya dikirim secara aman (kita bahas pengiriman amannya di episode 13 tentang response wrapping).

Kombinasi RoleID + SecretID menghasilkan token Vault. Ini setara dengan mesin yang menunjukkan kartu akses + PIN.

1. Aktifkan AppRole dan buat role

Aktifkan AppRole
vault auth enable approle
Buat role untuk aplikasi backend
vault write auth/approle/role/app-backend \
    token_ttl=1h \
    token_max_ttl=24h \
    secret_id_ttl=48h \
    token_policies="app-backend"

Opsi-opsi penting di atas:

ParameterArti
token_ttl=1hToken hasil login berlaku 1 jam
token_max_ttl=24hTidak bisa di-renew melewati 24 jam
secret_id_ttl=48hSecretID kedaluwarsa setelah 48 jam
token_policies="app-backend"Policy yang melekat pada token hasil login

2. Ambil RoleID dan generate SecretID

Baca RoleID
vault read auth/approle/role/app-backend/role-id
Generate SecretID
vault write -f auth/approle/role/app-backend/secret-id
Output (contoh)
Key                   Value
---                   -----
secret_id             f7f9b3b6-...
secret_id_accessor    3a4d5c6e-...
secret_id_ttl         48h
secret_id_num_uses     0

3. Login menggunakan kombinasi keduanya

Login AppRole
vault write auth/approle/login \
    role_id="<role-id>" \
    secret_id="<secret-id>"
Output (contoh)
Key                     Value
---                     -----
token                   hvs.CAESILf...
token_accessor          Z6Xb...
token_duration          1h
token_renewable         true
token_policies          ["app-backend" "default"]
identity_policies       []
policies                ["app-backend" "default"]
token_meta_role_name    app-backend

Perhatikan token_duration: 1h — token ini mengikuti token_ttl yang kita set. Untuk aplikasi yang berjalan lama, mekanisme renewal token ini (yang akan kita bahas detail di episode 12) adalah tanggung jawab aplikasi atau Vault Agent.

Important

RoleID bersifat statis dan boleh "sedikit terbaca" di config; SecretID yang wajib dijaga super ketat. Perlakuan terhadap keduanya tidak sama. Bayangkan RoleID adalah ID karyawan di lanyard, sedangkan SecretID adalah PIN ATM — kombinasi keduanya yang menghasilkan akses, tapi tanpa PIN, ID tidak berguna.

Perbandingan Auth Method Secara Ringkas

Auth MethodUntukKredensialManajemen lifecycle
tokenSemua (dasar)Token yang sudah diterbitkanManual oleh admin / aplikasi
userpassManusia (sederhana)Username + password lokalAkun dibuat manual di Vault
oidcManusia (enterprise)SSO via IdP (Okta, Azure AD, dll)Otomatis oleh IdP
approleMesin / aplikasiRoleID + SecretIDSecretID di-generate, token TTL pendek
kubernetesPod di K8sServiceAccount JWTOtomatis (akan dibahas episode 17)
aws / gcp / azureInstance di cloudIAM instance roleOtomatis oleh cloud provider

Kesalahan Umum dalam Authentication

KesalahanGejalaSolusi
Memakai root token di produksiAkses penuh tanpa batas jika bocorRevoke root token setelah inisialisasi; pakai policy-admin
Mengira batch token bisa di-renewRenewal gagalGunakan service token untuk yang butuh renewal
Memberi semua user userpass tanpa SSOAkun susah dimatikan saat karyawan keluarIntegrasikan OIDC/LDAP dari awal
Menyimpan RoleID dan SecretID berdampinganSatu kebocoran = kompromi totalPisahkan; kirim SecretID via response wrapping
Lupa secret_id_ttlSecretID berlaku selamanyaSelalu set TTL untuk SecretID
Token renewal tidak diotomatiskanAplikasi tiba-tiba dapat 403Pakai Vault Agent atau renewal loop (episode 12)
Mengaktifkan banyak auth method tanpa policy berbedaIdentitas ambiguPetakan policy via role/entity, bukan asal auth method

Tip

Aturan praktis yang baik di produksi: manusia via OIDC/SSO, mesin via AppRole (atau auth method cloud/K8s native). Kalau kalian menemukan diri menulis password ke file .env agar aplikasi bisa login ke Vault — berhenti dan gunakan AppRole.

Penutup

Pada episode ini kita telah membedah Authentication Methods: konsep bahwa auth method adalah mesin yang menerbitkan token, empat tipe token (service, batch, periodic, orphan) beserta kapan memakainya, autentikasi manusia via userpass dan OIDC/SSO, serta autentikasi machine-to-machine via AppRole dengan RoleID dan SecretID. Kita juga menegaskan larangan memakai root token di produksi dan pentingnya memisahkan mekanisme auth untuk manusia vs mesin.

Inti dari episode ini: autentikasi hanya menentukan siapa, sedangkan apa yang boleh tetap ditentukan policy (episode 9). Keduanya bekerja sama, dan di episode 11 nanti kita akan melihat bagaimana Vault menyatukan keduanya lewat Identity Engine — saat seorang user yang login dari userpass maupun OIDC ternyata adalah entitas yang sama dengan policy terpadu.

Di episode 11 selanjutnya, kita akan membahas Identity Engine (Entities, Aliases & Groups) — bagaimana Vault menyatukan identitas dari berbagai auth method dan mewariskan policy lewat group. Pastikan tetap semangat!

Belajar Vault - Authentication Methods (Token, Userpass, AppRole, OIDC) | Belajar Secret Management dengan HashiCorp Vault