“Redis è un database ad alte prestazioni ampiamente utilizzato in grado di archiviare una varietà di strutture di dati. Poiché viene utilizzato da applicazioni a livello aziendale di grandi dimensioni per la cache, i sistemi di messaggistica e le capacità di database, gli aspetti della sicurezza e della crittografia dei dati sono ugualmente importanti come le prestazioni. Nell'ultimo decennio, c'è stata una tendenza crescente negli attacchi dannosi che sono stati attivati contro i database per rivelare informazioni sensibili o per modificare i dati. Quindi, il rischio è lo stesso con le applicazioni che utilizzano Redis Backends.
Redis è fondamentalmente progettato per le connessioni autorizzate in ambienti affidabili. Pertanto, si consiglia di non esporre la porta del database Redis al pubblico in generale o a Internet e alle reti non attendibili. Nella maggior parte dei casi in cui le applicazioni Web generano contenuti interrogando Redis Store e spingere i dati in base alle richieste del client, è obbligatorio implementare un livello intermedio per limitare o filtrare le richieste dei clienti che stanno arrivando attraverso le applicazioni Web. Redis fornisce una varietà di misure di crittografia e sicurezza, come elenchi di controllo degli accessi (ACL), supporto TLS e crittografia a riposo per proteggere i dati."
Consenti il traffico affidabile con Redis Authentication & ACL (elenchi di controllo degli accessi)
Come accennato, per progettazione, Redis non è sicuro da esporre a reti non attendibili, Internet e connessioni client. In tal caso, Redis fornisce un meccanismo di autenticazione del database in cui i client dovrebbero autenticarsi utilizzando un nome utente e una password. Ogni utente è associato a un insieme limitato di funzionalità, tasti Redis e comandi. Limiterebbe alcuni client avendo solo le autorizzazioni per eseguire comandi di lettura ma non i comandi di scrittura. Inoltre, l'ACL viene utilizzato per limitare i comandi ad alto rischio come Flushall e Flushdb da fonti non attendibili. Inoltre, Redis ha una varietà di comandi di configurazione introdotti per gestire l'istanza Redis sia nelle configurazioni on-premise che nel cloud. Questi comandi di configurazione non sono molto utili per i consumatori. Quindi, ACL riesce a nascondere anche quei comandi al pubblico.
Autenticazione
Di solito, il file di configurazione Redis contiene una riga chiamata requisito che può essere utilizzato per abilitare l'autenticazione della password per un'istanza del database Redis. Con questa opzione abilitata, i client non autenticati non avranno accesso al database. Il comando Auth viene utilizzato per autenticare gli utenti nei database Redis. È esteso dalla versione 6 di Redis, che può essere utilizzato con due parametri come segue.
AUTH
Ispezionando l'ACL per un'istanza Redis
Redis ACLS può essere ispezionato utilizzando il comando Elenco ACL, come mostrato nel seguente. In generale, visualizza informazioni dettagliate relative a un utente, come un nome utente, stato della password (richiesto o meno), chiavi di accesso, comandi e canali PUB/SUB.
Elenco ACL
L'output di cui sopra può essere interpretato come segue.
Sono disponibili diverse regole ACL per creare utenti corretti con livelli di accesso minimo all'istanza del database Redis. Il comando ACL SetUser può essere utilizzato per configurare utenti diversi con livelli di accesso diversi.
Crittografia dei dati trasferiti utilizzando Redis TLS
Dalla versione 6 di Redis, SSL/TLS è stata supportata. Crittografa i dati inviati su tutti i canali di comunicazione Redis come connessioni client, connessioni cluster, sentinelle e collegamenti di replica. Inoltre, Redis SSL/TLS deve essere abilitato al momento della compilazione.
Per impostazione predefinita, i server Redis vengono eseguiti in modalità normale, che non supporta la crittografia SSL/TLS. Quindi, è necessario avviare esplicitamente l'istanza Redis in modalità TLS, come mostrato nella seguente.
Redis-Server-TLS-PORT 6379-Porta 0-TLS-CHILE ./Reditls/TLS/Redis.CRT-TLS-Ke-File ./Reditls/TLS/Redis.Chiave-TLS-CA-CTer-file ./reditls/tls/ca.Crt
Supponiamo che tutti i certificati e le chiavi SSL siano disponibili. Allo stesso modo, per avviare una connessione client, dovremmo utilizzare il flag -tls insieme ai tasti e ai certificati SSL necessari come segue.
Redis-cli-TLS-Cert ./Reditls/TLS/Redis.CRT --Key ./Reditls/TLS/Redis.Chiave -Ca -acert ./reditls/tls/ca.Crt
Inoltre, l'istanza Redis dovrebbe essere configurata con una X.509 certificato e chiave privata anche.
Crittografia SSL/TLS in Replica, Sentinel e Cluster Communication
Replica
In Redis, quando la replica è abilitata, l'istanza principale utilizza il tls-port E TLS-Auth-Clienti Opzioni per far conoscere ai clienti la porta che accetta le connessioni TLS e se l'autenticazione client è richiesta o meno. Allo stesso modo, nelle istanze di replica, si consiglia di utilizzare la crittografia SSL/TLS per le connessioni in uscita verso le istanze principali. In quel caso, il REPLICAZIONE TLS l'opzione dovrebbe essere impostata su SÌ.
Sentinella
Ogni volta che il Redis Sentinel è stato abilitato per le esigenze elevate di disponibilità, il REPLICAZIONE TLS L'opzione decide se la connessione TLS o non TLS deve essere utilizzata durante la connessione ai server master. Allo stesso modo, la stessa direttiva governa le connessioni in arrivo da altri sentinelle sono abilitate SSL/TL. Se la REPLICAZIONE TLS La direttiva si inserisce su sì, il tls-port L'opzione deve essere assegnata anche con la porta appropriata.
Grappolo
Quando i cluster vengono utilizzati in Redis, si consiglia di fornire canali di comunicazione sicuri per bus di cluster e collegamenti a cluster cluster. Redis fornisce il TLS-cluster Direttiva per determinare il supporto per la crittografia SSL/TLS tra i nodi del cluster. Questa direttiva dovrebbe essere impostata su SÌ Quando hai bisogno di una connessione TLS per inviare dati da un nodo a un altro.
Crittografia a riposo
Redis è distribuito sia negli ambienti on-premise che cloud. Nelle distribuzioni cloud, la comunicazione di resto è sempre crittografata. I principali fornitori di cloud come AWS, Azure e GCP Product Redis Deployments tramite canali crittografati. Inoltre, Amazon Cloud fornisce funzionalità di crittografia in transito elencate di seguito.
Conclusione
In sintesi, Redis non è progettato per esporre la sua porta TCP a connessioni client non attendibili in ambienti inaffidabili. Per progettazione, è stato sviluppato solo per fonti di fiducia. Come accennato, nel caso di Redis esposto al pubblico tramite un'applicazione Web, è necessario implementare un ulteriore livello di sicurezza tra le connessioni client e l'istanza Redis. Secondo questo articolo, Redis supporta gli elenchi di controllo degli accessi (ACL), il supporto TLS e la crittografia a riposo per mitigare gli attacchi dannosi. Inoltre, abbiamo discusso del supporto SSL/TLS per la comunicazione Redis Cluster, Replica e Sentinel. Nel complesso, si consiglia di praticare le tecniche di cui sopra ogni volta che l'istanza di Redis è esposta al pubblico.