2011-10-20 14 views
28

He leído la guía Get Started proporcionada por RabbitMQ e incluso he contribuido con el sexto ejemplo al stormed-amqp, por lo que tengo una idea de los conocimientos sobre AMQP.¿Cómo se pueden hacer colas privadas/seguras en RabbitMQ en un sistema multiusuario?

Sin embargo, la guía no es exhaustiva y evita cosas como autenticación y autorización.

Estamos diseñando un sistema multi-vivienda que usará RabbitMQ en una situación de tipo RPC. Lo que quizás sea diferente acerca de esta implementación de RPC es que los procedimientos remotos en realidad serán otros programas de arrendatarios en el sistema.

Básicamente, quiero aislar los buses de datos, que incluye las siguientes afirmaciones:

  1. Nuestro servidor no va a entregar los datos al programa de inquilinos mal (esto se maneja fácilmente y es relevante pero no cuestionaba)
  2. Los programas de inquilinos no pueden leer datos de colas que no son suyas.
  3. Los programas de inquilinos no pueden escribir en colas que no son suyas.

Esta pregunta es estrictamente sobre la seguridad de RabbitMQ. Sé que RabbitMQ admite SSL, que proporciona cifrado de extremo a extremo, y sé que RabbitMQ admite la autenticación de nombre de usuario/contraseña. No sé si estas cosas se aplican a la privatización del uso de colas (también conocido como ACL), es decir, la conexión puede estar encriptada, y el usuario puede ser verificado, pero el usuario puede leer/escribir desde todas las colas.

¿Alguien me puede aclarar sobre este tema más avanzado? Estoy seguro de que RabbitMQ puede soportar este tipo de sistema pero no exactamente positivo. Sé que hay cosas en RabbitMQ que simplemente no conozco, p. ¿Qué son los fantasmas y ayudarán en esta situación? Simplemente no veo la solución en mi conocimiento actual limitada a claves de enrutamiento, nombres de cola e intercambios.

Respuesta

2

Creo que this tutorial demuestra lo que estás tratando de hacer.
El hecho de que la cola de devolución de llamada sea exclusiva, se elimine automáticamente y su nombre se haya generado automáticamente debería proporcionar suficiente seguridad.

+0

De hecho, escribí la implementación de ese ejemplo en la biblioteca stormed-amqp (como se relacionó anteriormente). No estaba seguro de que la directiva 'exclusiva' fuera suficiente seguridad, pero voy a experimentar con ella para ver si lo es. Gracias. – Brian

6

En un sistema multiusuario, haría las colas seguras definiendo los permisos que tienen los usuarios. Lea la sección de control de acceso de la guía de administración de RabbitMQ aquí http://www.rabbitmq.com/admin-guide.html

Comience haciendo que todo suceda dentro de los fantasmas y bloquee completamente el host virtual, es decir, no permita que nadie declare colas e intercambios en vhost "/".

Cuestiones relacionadas