wake-up-neo.com

Wie können Warteschlangen in RabbitMQ in einem mandantenfähigen System privat/sicher gemacht werden?

Ich habe die Erste Schritte Anleitung von RabbitMQ gelesen und habe sogar das sechste Beispiel zu stormed-amqp beigetragen, sodass ich eine Ahnung vom Wissen über AMQP habe.

Das Handbuch ist jedoch nicht vollständig und vermeidet Dinge wie Authentifizierung und Autorisierung.

Wir entwerfen ein mandantenfähiges System, das RabbitMQ in einer RPC-Situation verwendet. Was an dieser Implementierung von RPC möglicherweise anders ist, ist, dass es sich bei den Remoteprozeduren tatsächlich um andere Mandantenprogramme auf dem System handelt.

Grundsätzlich möchte ich die Datenbusse isolieren, die die folgenden Aussagen enthalten:

  1. Unser Server wird nicht Daten an das falsche Mieterprogramm liefern (dies ist einfach zu handhaben und relevant, wird aber nicht in Frage gestellt).
  2. Mandantenprogramme können keine Daten aus Warteschlangen lesen, die ihnen nicht gehören.
  3. Mandantenprogramme können nicht in Warteschlangen schreiben, die ihnen nicht gehören.

Diese Frage bezieht sich ausschließlich auf die RabbitMQ-Sicherheit. Ich weiß, dass RabbitMQ SSL unterstützt, das End-to-End-Verschlüsselung bietet, und ich weiß, dass RabbitMQ die Authentifizierung mit Benutzernamen und Passwort unterstützt. Ich weiß nicht, ob diese Dinge für die Privatisierung der Warteschlangennutzung (aka ACL) gelten, d. H. Die Verbindung kann verschlüsselt und der Benutzer kann verifiziert werden, aber der Benutzer kann in alle Warteschlangen lesen/schreiben.

Kann mich jemand über dieses fortgeschrittenere Thema aufklären? Ich bin zuversichtlich, dass RabbitMQ diese Art von System unterstützen kann, aber nicht gerade positiv. Ich weiß, dass es in RabbitMQ Dinge gibt, von denen ich nichts weiß, z. Was sind Geister und werden sie in dieser Situation helfen? Ich sehe die Lösung nach meinem derzeitigen Kenntnisstand nur als Routing-Schlüssel, Warteschlangennamen und Austausch.

30
Brian

In einem System mit mehreren Mandanten würden Sie Warteschlangen sicherer machen, indem Sie die Berechtigungen der Benutzer definieren. Lesen Sie den Abschnitt zur Zugriffskontrolle des RabbitMQ-Administratorhandbuchs hier http://www.rabbitmq.com/admin-guide.html

Beginnen Sie damit, dass alles innerhalb von vhosts geschieht, und blockieren Sie den generischen vhost vollständig, d. H. Lassen Sie niemanden Warteschlangen und Austausche für vhost "/" deklarieren.

6
Michael Dillon

Ich glaube, dieses Tutorial zeigt, was Sie zu tun versuchen.
Die Tatsache, dass die rückrufwarteschlange ist exklusiv, löscht automatisch und der Name wird automatisch generiert, sollte ausreichend Sicherheit bieten.

2
daharon

Für die Sicherheit des Rabbitmq-Servers gibt es einige Sicherheitsmechanismen in RabbitMQ: 

  1. Zugangskontrolle 
  2. SASL-Authentifizierung 
  3. SSL-Unterstützung 
0
hien711