web-dev-qa-db-fra.com

Comment rendre les files d'attente privées/sécurisées dans RabbitMQ dans un système multi-locataires?

J'ai lu le guide Get Started fourni par RabbitMQ et j'ai même contribué au sixième exemple de stormed-amqp , ce qui me donne une petite idée de la connaissance de l'AMQP.

Cependant, le guide n'est pas complet et évite des choses comme l'authentification et l'autorisation.

Nous concevons un système multi-agences qui utilisera RabbitMQ dans une situation de type RPC. Ce qui est peut-être différent de cette implémentation de RPC, c'est que les procédures distantes seront en réalité d'autres programmes locataires sur le système.

En gros, je veux isoler les bus de données, ce qui inclut les assertions suivantes:

  1. Notre serveur ne sera pas livrera les données au mauvais programme de locataire (cela est géré facilement et est pertinent mais non remis en question).
  2. Les programmes locataires ne peuvent pas lire les données de files d'attente qui ne sont pas les leurs.
  3. Les programmes locataires ne peuvent pas écrire dans des files d'attente qui ne sont pas les leurs.

Cette question concerne strictement la sécurité RabbitMQ. Je sais que RabbitMQ prend en charge SSL, qui fournit un chiffrement de bout en bout, et je sais que RabbitMQ prend en charge l'authentification par nom d'utilisateur/mot de passe. Je ne sais pas si cela s'applique à la privatisation de l'utilisation des files d'attente (ACL), c'est-à-dire que la connexion peut être cryptée et que l'utilisateur peut être vérifié, mais l'utilisateur peut lire/écrire à partir de toutes les files d'attente.

Quelqu'un peut-il m'éclairer sur ce sujet plus avancé? Je suis convaincu que RabbitMQ peut supporter ce type de système mais pas vraiment positif. Je sais qu'il y a des choses dans RabbitMQ que je ne connais pas, par exemple. Que sont les hôtes et vont-ils aider dans cette situation? Je ne vois tout simplement pas la solution dans mes connaissances actuelles limitée aux clés de routage, aux noms de file d'attente et aux échanges.

30
Brian

Dans un système multi-locataires, vous sécuriseriez les files d'attente en définissant les autorisations dont disposent les utilisateurs. Lisez la section de contrôle d'accès du guide de l'administrateur RabbitMQ ici http://www.rabbitmq.com/admin-guide.html

Commencez par faire en sorte que tout se passe dans vhosts et bloquez complètement le vhost générique, c'est-à-dire ne laissez personne déclarer des files d'attente et des échanges sur vhost "/".

6
Michael Dillon

Je crois que ceci tutoriel montre ce que vous essayez de faire.
Le fait que le file d'attente de rappel est exclusif, supprime automatiquement et son nom généré automatiquement devrait offrir suffisamment de sécurité.

2
daharon

Pour la sécurité dans le serveur Rabbitmq, il existe un mécanisme de sécurité dans RabbitMQ: 

  1. Contrôle d'accès 
  2. Authentification SASL 
  3. Support SSL 
0
hien711