Belajar Keycloak - Events & Auditing
Episode 22 of 31

Belajar Keycloak - Events & Auditing

Merekam dan mengaudit aktivitas di Keycloak: jenis event login dan admin, event listeners, konfigurasi penyimpanan dan retention, serta penggunaan event untuk monitoring keamanan.

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

Pendahuluan

Di episode 21 kalian menghias Keycloak dengan tema kustom. Episode 22 ini soal jejak: events & auditing. Keycloak merekam apa yang terjadi — siapa login, siapa gagal login, admin mengubah apa — dan menjadi bahan dasar investigasi, compliance, serta monitoring. Ini juga episode yang melengkapi prinsip least privilege dari episode 18: tanpa catatan, kalian tidak tahu apakah izin benar-benar dipakai.

Tipe Event

Tab Events di admin console memisahkan rekaman menjadi dua kelompok besar: user events dan admin events.

KategoriContoh eventDicatat sebagai
Login eventsLOGIN, LOGOUT, REFRESH_TOKENUser events
Token eventsCODE_TO_TOKEN, REFRESH_TOKENUser events
RegistrasiREGISTERUser events
Aktivitas akunUPDATE_PASSWORD, VERIFY_EMAILUser events
Error eventsLOGIN_ERROR, REGISTER_ERRORUser events
Tindakan adminbuat user, hapus client, ubah realmAdmin events

Contoh rekaman event di database:

Contoh user event yang tersimpan
{
  "type": "LOGIN",
  "realmId": "myrealm",
  "clientId": "webapp",
  "userId": "6f1a0c1e-0000-0000-0000-000000000001",
  "ipAddress": "203.0.113.10",
  "time": 1764800000000,
  "details": {
    "auth_method": "openid-connect"
  }
}

Membedakan user events dan admin events itu penting: user events menjelaskan pengalaman end user, sedangkan admin events adalah pertanggungjawaban orang yang memegang console.

Event Listeners

Event yang terjadi dikirim ke listener. Keycloak menyediakan beberapa listener bawaan dan membuka jalur untuk kustom:

ListenerFungsi
JBoss loggingMenulis event ke log server
JPA (database event storage)Menyimpan event ke tabel di database
Custom listenerImplementasi SPI sendiri, misal kirim ke webhook
External integrationPenerusan ke SIEM atau sistem monitoring

Listener diaktifkan di Realm SettingsEvents → tab Config pada kolom Event listeners. Jika tidak ada listener yang aktif, event tetap berjalan tapi tidak meninggalkan jejak — pastikan setidaknya logging aktif.

Audit Configuration

Menyimpan Event

Centang Save events agar event tersimpan ke database dan bisa dicari, dan Save admin events untuk rekaman tindakan admin. Tanpa centang ini, event hanya lewat listener saat itu dan hilang.

Event Retention

Tentukan Expiration event — berapa lama rekaman disimpan sebelum dibersihkan. Retention yang panjang bagus untuk audit, tapi membebani storage; sesuaikan dengan kebutuhan compliance.

Event Queries

Tab User events menyediakan filter: tipe event, client, user, dan rentang tanggal. Query inilah yang dipakai saat investigasi insiden, misalnya "siapa yang gagal login dari IP ini".

Event Filtering

Kalian bisa memilih tipe event mana yang direkam dan mana yang diabaikan. Filtering membantu mengendalikan volume, tapi hati-hati: terlalu agresif bisa menghilangkan bukti saat dibutuhkan.

Compliance Reporting

Rekaman yang lengkap dan retention yang jelas adalah bahan compliance reporting: menunjukan siapa masuk, kapan, dan admin apa yang dilakukan. Padukan dengan ekspor data dari query events untuk laporan berkala.

Membaca Event dari Database

Jika kalian memakai database event storage (JPA), event tersimpan di tabel yang bisa diakses langsung. Kueri langsung berguna untuk laporan berkala yang tidak tersedia di antarmuka admin console.

Contoh query event login dari database
SELECT type, client_id, ip_address, time
FROM event_entity
WHERE realm_id = 'myrealm'
  AND type IN ('LOGIN', 'LOGIN_ERROR')
ORDER BY time DESC
LIMIT 50;

Nama tabel bervolasi antar rilis — cek dengan dokumentasi versi yang kalian pakai. Yang penting dipahami: membaca event langsung dari database memberi fleksibilitas penuh untuk laporan, sementara antarmuka admin console cukup untuk investigasi cepat.

Tip

Jangan menaruh log berisi detail sesi sensitif di tempat yang bisa diakses sembarang orang. Rekam event dengan retention yang masuk akal dan batasi akses ke data event hanya untuk tim yang berwenang.

Monitoring

Event adalah bahan mentah monitoring. Pola yang paling berguna:

  • Login success/failure rates — deteksi lonjakan kegagalan sebagai sinyal awal serangan.
  • User activity — siapa masuk kapan dan dari IP mana.
  • Admin actions — siapa mengubah apa; penting untuk akuntabilitas.
  • Security incidentsLOGIN_ERROR berulang dalam waktu singkat bisa berarti brute force.
  • Performance metrics — latensi login dan throughput autentikasi.

Untuk metrik otomatis, aktifkan metrics endpoint Keycloak:

Aktifkan metrics dan health endpoint
bin/kc.sh start --metrics-enabled true --health-enabled true

Dengan metrics-enabled Keycloak menyediakan endpoint metrics yang bisa di-scrape Prometheus, sementara health-enabled menyediakan health check. Panaskan kc.sh start --metrics-enabled di lingkungan kalian untuk melihatnya.

Penutup

Pada episode 22, kalian memahami events dan auditing di Keycloak: jenis event (login, token, registrasi, error, admin), event listeners (JBoss logging, database storage, custom, integrasi eksternal), konfigurasi audit (retention, queries, filtering, compliance), dan monitoring berbasis event.

Inti yang harus dibawa pulang:

  • Pisahkan user events dan admin events; keduanya punya pengaturan penyimpanan sendiri.
  • Aktifkan Save events — tanpa itu tidak ada jejak yang bisa diinvestigasi.
  • Atur retention sesuai kebutuhan, jangan biarkan database membengkak tanpa kendali.
  • LOGIN_ERROR adalah sinyal awal serangan — pantau dari sisi monitoring.

Di episode 23 berikutnya, kalian menaikkan level keamanan login: Multi-Factor Authentication (MFA) — OTP, WebAuthn, SMS, dan recovery codes.

Belajar Keycloak - Events & Auditing | Belajar SSO dengan Keycloak