it-swarm-id.com

Bagaimana cara antrian dijadikan pribadi/aman di RabbitMQ dalam sistem multitenancy?

Saya telah membaca Memulai panduan yang disediakan oleh RabbitMQ dan bahkan telah berkontribusi contoh keenam ke stormed-amqp , jadi saya memiliki firasat tentang AMQP.

Namun, panduan ini tidak komprehensif dan menghindari hal-hal seperti otentikasi dan otorisasi.

Kami sedang merancang sistem multitenancy yang akan menggunakan RabbitMQ dalam situasi tipe-RPC. Apa yang mungkin berbeda tentang implementasi RPC ini adalah bahwa prosedur jarak jauh sebenarnya akan menjadi program penyewa lain pada sistem.

Pada dasarnya, saya ingin mengisolasi data bus, yang mencakup pernyataan berikut:

  1. Server kami tidak akan mengirimkan data ke program penyewa yang salah (ini ditangani dengan mudah dan relevan tetapi tidak dipertanyakan).
  2. Program penyewa tidak dapat membaca data dari antrian yang bukan milik mereka.
  3. Program penyewa tidak dapat menulis ke antrian yang bukan milik mereka.

Pertanyaan ini semata-mata tentang keamanan RabbitMQ. Saya tahu bahwa RabbitMQ mendukung SSL, yang menyediakan enkripsi ujung ke ujung, dan saya tahu RabbitMQ mendukung otentikasi nama pengguna/kata sandi. Saya tidak tahu apakah hal-hal ini berlaku untuk memprivatisasi penggunaan antrian (alias ACL), mis. Koneksi mungkin dienkripsi, dan pengguna dapat diverifikasi, tetapi pengguna dapat membaca/menulis dari semua antrian.

Adakah yang bisa memberi tahu saya tentang topik yang lebih canggih ini? Saya yakin bahwa RabbitMQ dapat mendukung sistem semacam ini tetapi tidak sepenuhnya positif. Saya tahu ada beberapa hal di RabbitMQ yang tidak saya ketahui, mis. apa itu vhosts dan apakah mereka akan membantu dalam situasi ini? Saya hanya tidak melihat solusi dalam pengetahuan saya saat ini terbatas pada kunci routing, nama antrian dan pertukaran.

30
Brian

Dalam sistem multitenancy Anda akan membuat antrian aman dengan mendefinisikan izin yang dimiliki pengguna. Baca bagian kontrol akses panduan admin RabbitMQ di sini http://www.rabbitmq.com/admin-guide.html

Mulailah dengan membuat semuanya terjadi di dalam vhosts dan memblokir sepenuhnya vhost generik, mis. Jangan biarkan siapa pun menyatakan antrian dan bertukar di vhost "/".

6
Michael Dillon

Saya percaya ini tutorial menunjukkan apa yang Anda coba lakukan.
Fakta bahwa antrean panggilan balik bersifat eksklusif, penghapusan otomatis, dan namanya dibuat otomatis harus memberikan keamanan yang cukup.

2
daharon

Untuk keamanan di server Rabbitmq, ada beberapa mekanisme keamanan di RabbitMQ:

  1. Kontrol akses
  2. Otentikasi SASL
  3. Dukungan SSL
0
hien711