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:
- nostro server non consegnerà i dati al programma inquilino sbagliato (questo viene manipolato con facilità ed è relativo, ma non in discussione).
- I programmi tenant non sono in grado di leggere i dati da code che non sono le loro.
- 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.
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