Belajar RabbitMQ - User Management & Authentication
Episode 15 of 33

Belajar RabbitMQ - User Management & Authentication

Akses ke RabbitMQ dimulai dari identitas pengguna. Di episode ini kalian membuat dan mengelola user, memahami user tags administrator dan monitoring, menerapkan kebijakan password, serta membandingkan backend authentication internal, LDAP, OAuth 2.0, sertifikat x509, dan HTTP.

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

Pendahuluan

Sejauh ini kita memakai user guest dan arman tanpa berpikir panjang. Di lingkungan nyata, user adalah gerbang keamanan pertama RabbitMQ: siapa yang boleh login, apa yang boleh mereka lakukan, dan seberapa banyak akses yang mereka miliki. Kelola user dengan buruk dan broker kalian bisa disusupi — baik dari dalam tim maupun dari jaringan.

Episode ini membahas pengelolaan user dari dua sisi. Pertama, manajemen user: membuat user, menetapkan user tags yang menentukan hak admin/monitoring, dan menerapkan kebijakan password. Kedua, authentication: mekanisme yang membuktikan identitas user, mulai dari backend internal default hingga integrasi dengan LDAP, OAuth 2.0, sertifikat x509, dan HTTP backend.

Di akhir episode, kalian akan mampu memutuskan mekanisme autentikasi yang tepat untuk kebutuhan tim, dan menegakkan prinsip least privilege dari sisi identitas.

User Management

Membuat User dengan rabbitmqctl

Membuat user dan menetapkan tags:

Buat user dengan tags
rabbitmqctl add_user 'svc-order' 'S3kret$2026'
rabbitmqctl set_user_tags 'svc-order' monitoring
rabbitmqctl list_users

Perintah rabbitmqctl add_user membuat user service, lalu set_user_tags menetapkan tag monitoring — cukup untuk melihat metrik, tanpa hak administrasi.

Membuat User via Management UI

Cara yang sama bisa dilakukan lewat Management UI: buka tab Admin > Users > Add a user, isi username dan password, pilih tags, lalu klik Add user. Untuk permission, kalian mengatur per-vhost di bagian bawah halaman user.

User Tags

RabbitMQ punya beberapa tags standar:

  • administrator — akses penuh ke semua resource dan pengaturan.
  • monitoring — akses ke management, tapi tanpa konfigurasi.
  • management — akses UI dan API, hanya untuk resource yang diizinkan.
  • policymaker — mengelola policy dan parameter.
  • impersonator — login sebagai user lain lewat OAuth 2.0.

Prinsip penting: jangan memberi semua user tag administrator. Beri hak sesedikit mungkin sesuai peran.

Kebijakan Password

RabbitMQ 3.10+ mendukung kebijakan password: panjang minimum, aturan kompleksitas, dan masa berlaku. Konfigurasikan lewat rabbitmq.conf:

Kebijakan password di rabbitmq.conf
auth_mechanisms = PLAIN AMQPLAIN EXTERNAL
password_complexity.min_length = 12
password_complexity.guessability = 4
password_complexity.reuse = 3

Aturan password_complexity.min_length memaksa password minimal 12 karakter. Gunakan kombinasi dengan generator password acak untuk user service.

Authentication Mechanisms

Internal Authentication

Internal backend adalah default: username dan password disimpan di database internal RabbitMQ. Cukup untuk tim kecil, dengan catatan password disimpan sebagai hash. Ini yang dipakai semua contoh di series ini.

LDAP Authentication

Untuk perusahaan dengan LDAP/AD, plugin rabbitmq_auth_backend_ldap memverifikasi user terhadap direktori. User tidak perlu dibuat ulang di RabbitMQ — mereka login dengan kredensial LDAP. Kekurangannya: RabbitMQ harus bisa menjangkau LDAP server, dan terjadi latensi tambahan per login.

OAuth 2.0 dan x509

RabbitMQ 3.11+ mendukung OAuth 2.0: user memakai token JWT dari Identity Provider seperti Keycloak. Sementara plugin rabbitmq_auth_mechanism_ssl memungkinkan autentikasi lewat sertifikat x509 — client mengirim sertifikat saat handshake TLS, dan broker mencocokkan dengan CA yang dipercaya. Detail TLS dibahas di episode 17.

Authentication Backends

HTTP Backend dan Multi-Backend

Backend autentikasi bisa digabung. Kalian bisa memakai internal untuk beberapa user dan HTTP backend untuk yang lain, dengan urutan fallback:

Multi-backend authentication
auth_backends.1 = internal
auth_backends.2 = http
auth_http.user_path = http://auth.example.com/auth/user
auth_http.vhost_path = http://auth.example.com/auth/vhost
auth_http.resource_path = http://auth.example.com/auth/resource

Konfigurasi di atas mencoba internal dulu, lalu HTTP backend. Ini memungkinkan RabbitMQ tanpa user statis — verifikasi didelegasikan ke service otentikasi milik tim.

Autentikasi Caching

Untuk meringankan beban backend eksternal seperti LDAP atau HTTP, aktifkan authentication caching sehingga kredensial yang sudah diverifikasi tidak dicek ulang setiap koneksi:

Aktifkan auth caching
auth_cache.cache_ttl = 3000
auth_cache.cache_max_entries = 100

Nilai cache_ttl di atas menahan cache hasil autentikasi selama 3 detik, mengurangi tekanan ke LDAP saat banyak koneksi datang sekaligus.

Warning

Pengguna guest secara default hanya bisa terhubung dari localhost. Jika kalian melihat koneksi guest dari IP lain, periksa konfigurasi loopback user — ini tanda konfigurasi keamanan yang longgar.

Penutup

Di episode 15 ini kalian sudah mengelola user dengan rabbitmqctl dan Management UI, memahami user tags dan kebijakan password, membandingkan backend authentication internal, LDAP, OAuth 2.0, dan x509, serta menyusun backend HTTP dan caching untuk autentikasi terpusat.

Inti yang harus dibawa pulang:

  • User dibuat dengan rabbitmqctl add_user atau Management UI.
  • Tag administrator adalah hak tertinggi — batasi penggunaannya.
  • Kebijakan password memaksa panjang, kompleksitas, dan rotasi.
  • Internal backend cukup untuk tim kecil; LDAP untuk organisasi besar.
  • OAuth 2.0 tersedia sejak 3.11 dengan token JWT.
  • Sertifikat x509 memungkinkan login tanpa password.
  • Multi-backend dan auth caching meringankan beban verifikasi.

Di episode 16 selanjutnya kita akan mengatur authorization dan access control — model permission configure, write, dan read; pola regex untuk permission; penerapan RBAC per vhost dengan least privilege; serta topic authorization untuk filtering routing key di exchange bertipe topic. Ini lapisan keamanan kedua setelah autentikasi!

Belajar RabbitMQ - User Management & Authentication | Belajar RabbitMQ