MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Architektur für Sicherheit:Ein Leitfaden für MongoDB

Die Prävalenz von Datenschutzverletzungen ist nicht mehr überraschend. Basierend auf dem gerade veröffentlichten Cybercrime-Bericht des FBI haben Opfer von Cyberkriminalität im Jahr 2020 insgesamt satte 4,2 Milliarden US-Dollar verloren, was 700 Millionen US-Dollar mehr sind als die gemeldeten Verluste im Jahr 2019. Insbesondere unsichere MongoDB-Datenbanken waren Teil des Problems, das zu erheblichen Datenschutzverletzungen führte . Im Februar 2019 wurde die MongoDB-Datenbank eines Unternehmens für E-Mail-Verifizierungen gehackt und 763 Millionen Datensätze, darunter E-Mail-Adressen, Telefonnummern, IP-Adressen und Geburtsdaten, offengelegt. Der Grund dafür ist eine öffentlich zugängliche MongoDB-Instanz ohne Passwort.

Fehlende Authentifizierung, keine Beschränkung von Ports auf der Firewall oder Fehler bei der Sicherung von Daten bei der Übertragung können zu einer Datenschutzverletzung führen. In diesem Blog besprechen wir, wie Sie Ihre MongoDB-Datenbank in einer Produktionsumgebung vorbereiten und sichern.

Authentifizierung und Autorisierung

Authentifizierung und Autorisierung sind zwei verschiedene Dinge, aber sie hängen zusammen. Authentifizierung bedeutet, dass der Benutzer Zugriff auf die MongoDB-Datenbank hat, während die Autorisierung dem Benutzer den Zugriff auf die Ressource in der Datenbank erlaubt.

Die Standardinstallation für die Authentifizierung in MongoDB ist deaktiviert. MongoDB unterstützt mehrere Authentifizierungen, z. B.:SCRAM, x.509-Zertifikatsauthentifizierung. Der Standard in MongoDB ist SCRAM (Salted Challenge Response Authentication Mechanism), der den bereitgestellten Anmeldedatenzugriff mit dem Benutzernamen, dem Passwort und der Authentifizierungsdatenbank überprüft.

Bevor Sie die Authentifizierung aktivieren, erstellen Sie bitte einen Superuser in MongoDB mit der Rolle userAdminAnyDatabase. Danach müssen wir nur noch die Datei /etc/mongod.conf öffnen und den Abschnitt zur Sicherheit finden. Die Standardeinstellung ist deaktiviert, wir müssen sie nur aktivieren.

security:
    authorization: "disabled"

Starten Sie den MongoDB-Dienst neu, um die Konfigurationsänderungen zu übernehmen. Wir können auch RBAC (Role Based Access Control) innerhalb der MongoDB-Datenbank für eine bessere Sicherheit in Bezug auf den Benutzer konfigurieren. Daher trennen wir den Zugriff auf die Datenbank basierend auf dem Benutzer und den Berechtigungen.

Netzwerksegmentierung

Die Netzwerksegmentierung ist ein wichtiger Aspekt beim Entwerfen einer Datenbankarchitektur, sie gilt für alle Datenbanken, nicht nur für MongoDB. Es hat sich bewährt, das Netzwerk für die Datenbank zu trennen. Wir richten den Datenbankserver in einem privaten Netzwerk ein, wo er nicht aus dem Internet erreichbar ist.

Die Kommunikation mit der Datenbank erfolgt über das private Netzwerk, und wenn der Benutzer auf die Datenbank zugreifen möchte, kann er VPN oder einen Jumphost verwenden. Neben der Netzwerksegmentierung spielt auch die Einschränkung des Ports eine Schlüsselrolle. Wir öffnen den für das segmentierte Netzwerk spezifischen Datenbankport, um den ein- und ausgehenden Netzwerkverkehr zu kontrollieren. Wir wissen also, dass der eingehende Datenverkehr von der vertrauenswürdigen Quelladresse stammt.

Datenverschlüsselung

Ein weiterer Bereich, den wir uns ansehen müssen, ist die Datenverschlüsselung. Datenverschlüsselung ist eine Methode, bei der die Informationen während der Übertragung in eine andere Form codiert und in der Datenbank gespeichert werden.

Datenverschlüsselung umfasst:

  • Daten unterwegs:Daten im Übertragungszustand 

  • Ruhige Daten:Auf der Festplatte gespeicherte Daten. Es gibt verschiedene Arten der Datenverschlüsselung im Ruhezustand, wir können die Verschlüsselung auf Datenbankebene verwenden oder wir können die Verschlüsselung auf der Speicherebene verwenden.

Das Aktivieren von SSL/TLS von den Clients und dem MongoDB-Server und zwischen den MongoDB-Knoten (in Replikat- und Sharded-Cluster-Architektur) sichert die Daten während der Übertragung. Die Datenübertragung erfolgt nicht im Klartext.

Es gibt beispielsweise verschiedene Verschlüsselungstools und -funktionen für die Verschlüsselung von ruhenden Daten; AWS bietet EBS-Festplattenverschlüsselung in Kombination mit dem KMS (Key Management Service) auf dem Speicher, während auf der Datenbankebene die Enterprise Edition von MongoDB die Datenbankverschlüsselung im Ruhezustand bereitstellt.

Datenbank-Audit

Durch die Implementierung einer Audit-Datenbank für MongoDB wird sichtbar, was in der Datenbank läuft; zB:von welchem ​​Benutzer und welcher Befehl ausgeführt wurde und die Quelle der IP-Adresse. Wir können diese Protokolle kombinieren und Regeln basierend auf dem Autorisierungszugriff erstellen. Wir können erkennen, ob ein unbeabsichtigter Benutzer ein Skript in MongoDB ausführt. Wir können den Abschnitt auditLog.

sehen
auditLog:
   destination: syslog

Wir können das MongoDB-Prüfprotokoll an die Syslog-Dateien senden und die Protokolle in die Protokollverwaltung übertragen. Möchten Sie weitere Tipps zum Sichern von MongoDB? Sehen Sie sich dieses Video an, um die Best Practices zum Sichern Ihrer MongoDB-Datenbank besser zu verstehen

Fazit

Die Implementierung von Sicherheitsstandards für MongoDB ist ein Muss, insbesondere für eine Produktionsumgebung. Wir können nicht jeden Verlust und jede Verletzung der in der Datenbank gespeicherten Daten akzeptieren.