Sono in procinto di configurare l'infrastruttura per i microservizi utilizzando RabbitMQ come broker di messaggi per la nostra azienda. Sto cercando di capire il modo migliore per gestire la sicurezza del sistema. Questo sistema verrà utilizzato solo (per ora) sulla nostra rete interna. Utilizziamo Active Directory per mantenere gli utenti nel dominio.
Ho configurato RabbitMQ per utilizzare LDAP su TLS per autenticare gli utenti utilizzando i nostri server Active Directory. A un certo punto dovrò inviare le credenziali di un utente a RabbitMQ. Pianifico sull'utilizzo di .NET NetworkCredential per archiviare le credenziali. RabbitMQ non può utilizzare il token WindowsIdentity, quindi sarà necessario inviare credenziali effettive (nome utente e password anziché un token) al server RabbitMQ.
In primo luogo, capisco che NetworkCredential non è a prova di proiettile ma è meglio di niente.
Alcuni colleghi hanno espresso la preoccupazione che archiviamo credenziali utente personali nella memoria delle applicazioni. Quando non si utilizza RabbitMQ, non è stato necessario memorizzare esplicitamente le credenziali a lungo termine. Potremmo semplicemente autenticare l'utente e andare avanti (lasciando che il garbage collector pulisca la password inserita dall'utente).
Sostengono che preferirebbero avere un'identità power user con le autorizzazioni necessarie per connettersi a RabbitMQ. Quindi non memorizzeremo le credenziali personali e utilizzeremo invece la sicurezza transitiva tramite l'identità "Utente dell'applicazione".
La mia domanda è qual è la pratica standard per questa situazione? Il mio pensiero è che la memorizzazione di un'identità utente potente in un'applicazione è problematica. Se le credenziali dell'utente esperto, che saranno necessariamente distribuite a tutti gli utenti in qualche modo (anche se occultate nel codice), sono state compromesse, le conseguenze sarebbero peggiori rispetto a quando le credenziali di un singolo utente sono state compromesse.
Per quanto riguarda il controllo delle autorizzazioni nel sistema, mi sembra che l'utilizzo delle credenziali effettive di una persona sia preferibile a un'identità power user. Non ho modo di bloccare le persone se un individuo ha accesso alle credenziali dell'utente esperto.
Mi mancano alcuni strumenti o risorse che gestiscono questa situazione?