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.

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.
Membuat user dan menetapkan tags:
rabbitmqctl add_user 'svc-order' 'S3kret$2026'
rabbitmqctl set_user_tags 'svc-order' monitoring
rabbitmqctl list_usersPerintah rabbitmqctl add_user membuat user service, lalu set_user_tags menetapkan tag monitoring — cukup untuk melihat metrik, tanpa hak administrasi.
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.
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.
RabbitMQ 3.10+ mendukung kebijakan password: panjang minimum, aturan kompleksitas, dan masa berlaku. Konfigurasikan lewat rabbitmq.conf:
auth_mechanisms = PLAIN AMQPLAIN EXTERNAL
password_complexity.min_length = 12
password_complexity.guessability = 4
password_complexity.reuse = 3Aturan password_complexity.min_length memaksa password minimal 12 karakter. Gunakan kombinasi dengan generator password acak untuk user service.
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.
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.
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.
Backend autentikasi bisa digabung. Kalian bisa memakai internal untuk beberapa user dan HTTP backend untuk yang lain, dengan urutan fallback:
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/resourceKonfigurasi di atas mencoba internal dulu, lalu HTTP backend. Ini memungkinkan RabbitMQ tanpa user statis — verifikasi didelegasikan ke service otentikasi milik tim.
Untuk meringankan beban backend eksternal seperti LDAP atau HTTP, aktifkan authentication caching sehingga kredensial yang sudah diverifikasi tidak dicek ulang setiap koneksi:
auth_cache.cache_ttl = 3000
auth_cache.cache_max_entries = 100Nilai 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.
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:
rabbitmqctl add_user atau Management UI.administrator adalah hak tertinggi — batasi penggunaannya.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!