„Redis ist eine weit verbreitete Hochleistungsdatenbank, die eine Vielzahl von Datenstrukturen speichern kann. Da es von Anwendungen auf Unternehmensebene zur Bereitstellung von Caching-, Messaging-Systemen und Datenbankkapazitäten verwendet wird, sind die Sicherheits- und Datenverschlüsselungsaspekte gleichermaßen wichtig wie die Leistung. In den letzten zehn Jahren gab es einen zunehmenden Trend bei böswilligen Angriffen, die gegen Datenbanken ausgelöst wurden, um vertrauliche Informationen zu enthüllen oder die Daten zu ändern. Das Risiko ist also gleich mit den Anwendungen, die Redis -Backends verwenden.
Redis ist grundlegend für autorisierte Verbindungen in vertrauenswürdigen Umgebungen konzipiert. Daher wird empfohlen, den Redis -Datenbankport nicht dem breiten öffentlichen oder im Internet und nicht vertrauenswürdigen Netzwerken auszusetzen. In den meisten Fällen, in denen Webanwendungen Inhalte generieren, indem der Redis -Store abfragt und Daten basierend auf den Client -Anfragen pushen. Redis bietet eine Vielzahl von Verschlüsselungs- und Sicherheitsmaßnahmen wie Access Control Lists (ACL), TLS -Unterstützung und Verschlüsselung bei Ruhe, um Daten zu schützen.”
Ermöglichen Sie vertrauenswürdiger Verkehr mit Redis -Authentifizierung & ACL (Access Control Lists)
Wie bereits erwähnt, ist Redis nicht sicher, nicht vertrauenswürdige Netzwerke, Internet und Client -Verbindungen auszusetzen. Wenn dies der Fall ist, bietet Redis einen Datenbankauthentifizierungsmechanismus, bei dem Clients mithilfe eines Benutzernamens und eines Kennworts authentifizieren sollten. Jeder Benutzer ist mit einem begrenzten Satz von Funktionen, Redis -Tasten und Befehlen verbunden. Es würde bestimmte Kunden einschränken, indem nur die Berechtigungen für die Ausführung von Lesebefehlen, jedoch nicht die Write -Befehle vorhanden sind. Darüber hinaus wird ACL verwendet, um Befehle mit hohem Risiko wie Flushall und Flushdb aus nicht vertrauenswürdigen Quellen zu beschränken. Darüber hinaus hat Redis eine Vielzahl von Konfigurationsbefehlen eingeführt. Diese Konfigurationsbefehle sind für Verbraucher nicht sehr nützlich. Daher schafft es ACL, diese Befehle auch vor der Öffentlichkeit zu verbergen.
Authentifizierung
Normalerweise enthält die Redis -Konfigurationsdatei eine Zeile mit dem Namen Erfordernis Dies kann verwendet werden, um die Kennwortauthentifizierung für eine bestimmte Redis -Datenbankinstanz zu aktivieren. Mit dieser Option können nicht authentifizierte Clients überhaupt keinen Zugriff auf die Datenbank erhalten. Der Befehl Auth wird verwendet, um Benutzer mit den Redis -Datenbanken zu authentifizieren. Es wird von Redis Version 6 erweitert, die wie folgt mit zwei Parametern verwendet werden kann.
Auth
Überprüfen Sie die ACL für eine Redis -Instanz
Redis -ACLs können mit dem Befehl ACL -Listen untersucht werden, wie im folgenden Punkt gezeigt. Im Allgemeinen werden detaillierte Informationen zu einem Benutzer wie einen Benutzernamen, ein Kennwortstatus (erforderlich oder nicht), Zugriffsschlüssel, Befehle und Pub/Sub -Kanäle angezeigt.
ACL -Liste
Die obige Ausgabe kann wie folgt interpretiert werden.
Es stehen unterschiedliche ACL -Regeln zur Verfügung, um korrekte Benutzer mit minimalen Zugriffsniveaus für die Redis -Datenbankinstanz zu erstellen. Der Befehl ACL SetUser kann verwendet werden, um verschiedene Benutzer mit unterschiedlichen Zugriffsstufen zu konfigurieren.
Verschlüsseln Sie übertragene Daten mit Redis TLS
Von Redis Version 6 wurde SSL/TLS unterstützt. Es verschlüsselt Daten, die über alle Redis -Kommunikationskanäle gesendet werden. Darüber hinaus muss der Redis SSL/TLS zur Kompilierungszeit aktiviert werden.
Standardmäßig werden Redis -Server im normalen Modus ausgeführt, was nicht die SSL/TLS -Verschlüsselung unterstützt. Daher müssen Sie die Redis -Instanz explizit im TLS -Modus starten, wie im folgenden gezeigt.
Redis-Server--TLS-Port 6379-Port 0--TLS-Cert-Datei ./reditls/tls/redis.CRT--TLS-KEY-HALE ./reditls/tls/redis.Schlüssel-TLS-Ca-Cert-Datei ./reditls/tls/ca.crt
Wir gehen davon aus, dass alle SSL -Zertifikate und -Keys verfügbar sind. Um eine Clientverbindung zu initiieren, sollten wir das -TLS -Flag zusammen mit den erforderlichen SSL -Schlüsseln und Zertifikaten wie folgt verwenden.
redis-cli--tls--zier ./reditls/tls/redis.CRT -Key ./reditls/tls/redis.Schlüssel -Kassierer ./reditls/tls/ca.crt
Darüber hinaus sollte die Redis -Instanz mit einem x konfiguriert werden.509 Zertifikat und privater Schlüssel auch.
SSL/TLS -Verschlüsselung in Replikation, Sentinel und Clusterkommunikation
Reproduzieren
In Redis verwendet die Master -Instanz, wenn die Replikation aktiviert ist tls-port Und TLS-Auth-Clients Optionen, um Clients über den Port zu informieren, der TLS -Verbindungen akzeptiert und ob die Client -Authentifizierung erforderlich ist oder nicht. In ähnlicher Weise wird in Replikatinstanzen empfohlen, die SSL/TLS -Verschlüsselung für ausgehende Verbindungen zu Master -Instanzen zu verwenden. In diesem Fall die TLS-Replikation Option sollte auf eingestellt werden auf Ja.
Wächter
Immer wenn der Redis -Sentinel für Anforderungen mit hoher Verfügbarkeit aktiviert wurde, ist die TLS-Replikation Die Option entscheidet, ob bei der Verbindung zu Master-Servern eine TLS- oder Nicht-TLS-Verbindung verwendet werden muss. In ähnlicher Weise regelt die gleiche Richtlinie die eingehenden Verbindungen von anderen Wachposten, die SSL/TLS aktiviert sind oder nicht. Wenn der TLS-Replikation Richtlinie setzt auf ja, die tls-port Die Option sollte auch mit dem entsprechenden Port zugewiesen werden.
Cluster
Wenn die Cluster in Redis verwendet werden, wird empfohlen, sichere Kommunikationskanäle für Clusterbusse und Cluster-Cluster-Links bereitzustellen. Redis liefert die TLS-Cluster Richtlinie zur Bestimmung der Unterstützung für die SSL/TLS -Verschlüsselung zwischen Clusterknoten. Diese Richtlinie sollte auf festgelegt werden Ja Wenn Sie eine TLS -Verbindung benötigen, um Daten von einem Knoten an einen anderen zu senden.
Verschlüsselung in Ruhe
Redis wird sowohl in der On-Premise- als auch in der Cloud-Umgebung bereitgestellt. In Cloud -Bereitstellungen wird die Restkommunikation immer verschlüsselt. Die wichtigsten Cloud -Anbieter wie AWS-, Azure- und GCP -Bereitstellungsbereitstellungen über verschlüsselte Kanäle. Darüber hinaus bietet Amazon Cloud Verschlüsselungsfunktionen, die unten aufgeführt sind.
Abschluss
Zusammenfassend ist Redis nicht so konzipiert. Ausgestaltet wurde es nur für vertrauenswürdige Quellen entwickelt. Wie bereits erwähnt, muss im Fall von Redis, das der Öffentlichkeit über eine Webanwendung ausgesetzt ist. Laut diesem Artikel unterstützt Redis Zugriffskontrolllisten (ACLs), TLS -Unterstützung und Verschlüsselung in Ruhe, um böswillige Angriffe zu mindern. Darüber hinaus haben wir die SSL/TLS -Unterstützung für den Redis -Cluster-, Replik- und Sentinel -Kommunikation besprochen. Insgesamt wird empfohlen, die oben genannten Techniken zu üben, wenn die Redis -Instanz der Öffentlichkeit ausgesetzt ist.