2011-10-20 11 views
28

Ho letto la guida Get Started fornita da RabbitMQ e ho persino contribuito con il sesto esempio a stormed-amqp, quindi ho un minimo di conoscenza su AMQP.In che modo le code possono essere rese private/protette in RabbitMQ in un sistema multi-tenancy?

Tuttavia, la guida non è completa ed evita cose come l'autenticazione e l'autorizzazione.

Stiamo progettando un sistema multi-tenancy che utilizzerà RabbitMQ in una situazione di tipo RPC. Ciò che è forse diverso in questa implementazione di RPC è che le procedure remote saranno in realtà altri programmi tenant sul sistema.

Fondamentalmente, voglio isolare i bus di dati, che include le seguenti affermazioni:

  1. nostro server non consegnerà i dati al programma inquilino sbagliato (questo viene manipolato con facilità ed è relativo, ma non in discussione).
  2. I programmi tenant non sono in grado di leggere i dati da code che non sono le loro.
  3. I programmi tenant non sono in grado di scrivere su code che non sono le loro.

Questa domanda riguarda strettamente la sicurezza di RabbitMQ. So che RabbitMQ supporta SSL, che fornisce la crittografia end-to-end, e so che RabbitMQ supporta l'autenticazione nome utente/password. Non so se queste cose si applicano alla privatizzazione dell'utilizzo della coda (aka ACL), cioè la connessione può essere crittografata e l'utente può essere verificato, ma l'utente può leggere/scrivere da tutte le code.

Qualcuno può illuminarmi su questo argomento più avanzato? Sono sicuro che RabbitMQ può supportare questo tipo di sistema, ma non è esattamente positivo. So che ci sono cose in RabbitMQ che non conosco, ad es. cosa sono i vhosts e aiuteranno in questa situazione? Non vedo la soluzione nella mia attuale conoscenza limitata alle chiavi di routing, ai nomi delle code e agli scambi.

risposta

2

Credo che il tutorial this dimostri cosa si sta tentando di fare.
Il fatto che la coda di richiamata sia esclusiva, elimina automaticamente e il suo nome generato automaticamente dovrebbe fornire sufficiente sicurezza.

+0

In realtà ho scritto l'implementazione di quell'esempio nella libreria stormed-amqp (come collegato sopra). Non ero sicuro che la direttiva "exclusive" fosse abbastanza sicura, ma la sperimenterò per vedere se è così. Grazie. – Brian

6

In un sistema multi-tenancy si rendono sicure le code definendo le autorizzazioni degli utenti. Leggi la sezione di controllo degli accessi della guida amministrativa di RabbitMQ qui http://www.rabbitmq.com/admin-guide.html

Inizia facendo in modo che tutto avvenga all'interno di vhosts e blocchi completamente il vhost generico, cioè non permettere a nessuno di dichiarare code e scambi su vhost "/".

Problemi correlati