Ist VirtualHost ein gutes Muster in RabbitMQ?
Ich habe 100 Kunden. Jeder Kunde hat eine eindeutige Benutzername, Passwort und die zwei Kanäle (Benutzer können keine Verbindung zu anderen Kanälen, abgesehen von Ihrer eigenen). Sollte ich VirtualHost-Eintrag für jeden Benutzer?
Wie schreibt man richtige Benutzer die Berechtigung, die unter der situation?:
my_user
kann nur die Verbindung vahost genanntuser_vhost
mitusername
undpassword
my_user
verbrauchen können nur von deruser_channel
Kanalmy_user
veröffentlichen können, nur um dieuser_channel
Kanalmy_user
können eine Remote-Verbindung
Danke!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Virtueller host in RabbitMQ ist mehr wie ein logischer container, in dem ein Benutzer eine Verbindung mit einem bestimmten virtuellen host kann nicht jede Ressource zugreifen (exchange, queue...) von einem anderen virtuellen host. Denke immer daran, es wie eine administrative Domäne in der Art.
Basierend auf dem, was Sie erklärt haben, denke ich, dass Sie einen virtuellen host pro user ist ein guter Weg, um Dinge einfach zu halten und sauber. Auch auf diese Weise brauchen Sie nicht zu kommen mit komplizierten Berechtigungen Regeln, nur Berechtigungen gewähren, basierend auf dem virtuellen host.
rabbitmqctl
rabbitmqctl set_permissions your_user "^$" "^$" "your_user_.*"
. Wenn ich mich nicht Irre, wird diese Berechtigung erteilen, your_user für das Lesen von Ressourcen, die beginnen mit dem Namen "your_user_". Die regexp^$
ist für die Verweigerung.myqueue
ich verwendet:rabbitmqctl set_permissions my_user "myqueue.*" "^$" "myqueue.*"
.. es funktioniert, aber der Benutzer kann die queue löschen, löschen Sie die Warteschlange, etc. Wie kann man das verhindern? Ich fand default Berechtigungen auf rabbitmq.com/access-control.html, aber ich nicht arbeiten, zB.rabbitmqctl set_permissions my_user "myqueue.*" "^$" "$(myqueue.queue.declare|myqueue.basic.consume)$"
. Ich habe "403, ACCESS_REFUSED - Zugriff auf queue 'myqueue' in vhost '.' verweigert für Benutzer 'my_user'". 🙁