Hackers werden immer raffinierter und wissen, wie sie Schwachstellen ausnutzen können. Wenn Sie sensible Daten in Ihrer MongoDB-Datenbank haben, ist es wichtig, Sicherheit ernst zu nehmen. Aber wie? Keine Sorge! Dieses Tutorial hat Sie abgedeckt!
In diesem Tutorial lernen Sie, Ihre MongoDB-Datenbanken zu schützen und Hacker durch Einrichtung von Sicherheitsmaßnahmen abzuwehren.
Lesen Sie weiter und beginnen Sie, die Kontrolle über Ihre MongoDB-Sicherheit zu übernehmen!
Voraussetzungen
- Dieses Tutorial wird eine praktische Demonstration sein. Um mitzumachen, stellen Sie bitte sicher, dass Sie Folgendes haben:
- MongoDB installiert auf Ihrer Linux-Maschine.
- A non-root user with
sudo
privileges.
Erstellung eines dedizierten Administrationsbenutzers
MongoDB hat kein integriertes Authentifizierungssystem. Standardmäßig hat jeder mit Zugriff auf die Datenbank volle administrative Rechte — zu gefährlich! Wie sichern Sie Ihre Datenbank? Sie werden einen Benutzer mit administrativen Rechten erstellen und die Datenbanken auf diesen administrativen Benutzer beschränken.
Diese Einrichtung ermöglicht es Ihnen, einen einzigen Zugriffspunkt für Benutzer mit administrativen Privilegien bereitzustellen, während gleichzeitig eingeschränkt wird, was jeder Benutzer innerhalb der Datenbank tun kann. Zum Beispiel sollten Entwickler nur Lesezugriff auf Datenbanken haben, während Administratoren Daten erstellen und bearbeiten können.
1. Öffnen Sie Ihr Terminal und führen Sie den unten stehenden Befehl mongo
ohne Argumente aus. Dieser Befehl ermöglicht es Ihnen, sich als Standard-Administratorbenutzer mit Ihrer MongoDB-Shell zu verbinden.
Dieser Administratorbenutzer ist mächtig, da er Vollzugriff auf alle Datenbanken auf dem Server hat, und es ist am besten, diesen Benutzer nicht für alltägliche Arbeiten zu verwenden.
Sie erhalten eine Warnung, die besagt, dass die Zugriffssteuerung nicht aktiviert ist…, wie unten gezeigt.
Diese Warnung zeigt an, dass jeder, der auf den MongoDB-Server zugreifen kann, die gewünschten Aktionen mit den Datenbanken ausführen kann. Diese Aktionen umfassen unter anderem das Löschen, Löschen und Aktualisieren von Datenbanken.
Diese Warnung erscheint, weil Sie die Zugriffssteuerung noch nicht aktiviert haben. Machen Sie sich vorerst keine Sorgen. Sie werden lernen, wie Sie die Zugriffssteuerung im folgenden Abschnitt aktivieren können.

2. Führen Sie anschließend den Befehl show dbs
aus, um alle Datenbanken auf dem Server anzuzeigen, einschließlich der admin-Datenbanken, die ein normaler Benutzer nicht sehen soll.

3. Führen Sie den Befehl use admin
unten aus, um zur Admin-Datenbank zu wechseln, da Ihr Schwerpunkt darauf liegt, einen dedizierten Administrationsbenutzer zu erstellen. Dieser Befehl ändert Ihren aktuellen Datenbankkontext so, dass die admin-Datenbank verwendet wird, wie unten gezeigt.
MongoDB verwendet die admin-Datenbank, um Zugriffssteuerungsregeln zu speichern und eine integrierte Authentifizierung, Benutzernamen und Passwörter für Benutzer und ihre Rollen bereitzustellen. Sie können die admin-Datenbank nicht löschen oder umbenennen, da sie für die Funktionalität der Datenbank unerlässlich ist.

4. Kopieren Sie nun den folgenden Code und fügen Sie ihn in die Mongo-Shell ein und drücken Sie die Eingabetaste. Dieser Code erstellt einen Benutzer namens AdminATA
mit einem Passwort von LDWbPf6Fy9Ezs3Mv
, aber Sie können je nach Bedarf andere Anmeldeinformationen verwenden.
Dieser neue Benutzer hat Lese-/Schreibzugriff (readWriteAnyDatabase
) auf alle Datenbanken und Adminzugriff auf alle Sammlungen. Aber dieser Benutzer hat keine Drop-/Löschen-Datenbankberechtigungen und kann weder Datenbanken löschen noch die Berechtigungen anderer Benutzer ändern.
Nachdem Sie den Befehl ausgeführt haben und einen Fehler erhalten, überprüfen Sie Ihren Code erneut und versuchen Sie es erneut.
5. Geben Sie bei Aufforderung ein sicheres Passwort ein, wie unten gezeigt, und drücken Sie Enter.

Unten sehen Sie eine Erfolgreich Benutzer hinzugefügt-Meldung. Diese Ausgabe bestätigt, dass Sie erfolgreich einen Benutzer mit administrativen Berechtigungen erstellt und auf die notwendigsten Privilegien beschränkt haben.
Zu diesem Zeitpunkt haben Sie bereits einen administrativen Benutzer namens AdminATA, der alles Notwendige in der Datenbank erledigen kann, ohne den Zugriff für alle zu ermöglichen.

6. Führen Sie abschließend den exit-Befehl aus, um die MongoDB-Shell zu verlassen.

Hinzufügen von Sicherheit durch Aktivieren der Authentifizierung
Nun, da Sie einen administrativen Benutzer haben, fügen Sie eine weitere Sicherheitsebene hinzu, indem Sie die Authentifizierung aktivieren. Dadurch erhalten nur Benutzer mit den richtigen Anmeldedaten Zugriff auf die Datenbank.
Authentifizierung bezieht sich auf den Prozess der Validierung einer Verbindung, typischerweise durch Bereitstellung eines Benutzernamens und Passworts oder Verwendung eines Authentifizierungstokens. Authentifizierung stellt sicher, dass Sie sind, wer Sie sagen, dass Sie sind, und nicht ein Betrüger, der versucht, auf Ressourcen zuzugreifen.
1. Aktivieren Sie die Authentifizierung, indem Sie die MongoDB-Konfigurationsdatei wie folgt bearbeiten und die Änderungen speichern:
- Öffnen Sie die Datei /etc/mongod.conf in Ihrem bevorzugten Texteditor. Die Datei /etc/mongod.conf enthält die Konfiguration Ihres MongoDB-Clusters.
- Suchen Sie die #security Anweisung und entfernen Sie das # Symbol vor der Anweisung, wie unten gezeigt. Diese Anweisung teilt MongoDB mit, dass es die Sicherheitseinstellung in der Konfigurationsdatei suchen soll.
- Fügen Sie eine neue Zeile unterhalb der security Anweisung hinzu, die lautet authorization: enabled. Beachten Sie, dass die Zeile authorization: enabled eingerückt ist (zwei Leerzeichen am Anfang), wie unten gezeigt.

2. Führen Sie anschließend den folgenden Befehl systemctl
aus, um den MongoDB-Server neu zu starten, damit die Änderungen wirksam werden.
3. Führen Sie abschließend den folgenden Befehl aus, um den Status Ihres MongoDB-Dienstes anzuzeigen.
Unten sehen Sie eine Zeile, die Aktiv: aktiv (läuft) in grünem Text sagt, was bedeutet, dass Ihr MongoDB-Server läuft und bereit ist, Verbindungen zu akzeptieren.

Testen, ob die Authentifizierung funktioniert
Sie haben die Authentifizierung gerade aktiviert, aber wie wissen Sie, dass sie funktioniert? Sie werden sich als administrativer Benutzer anmelden, um zu testen und sicherzustellen, dass Ihre Authentifizierung funktioniert, indem Sie Datenbanken anzeigen.
1. Führen Sie die folgenden Befehle aus, um die mongo
-Shell aufzurufen, wie Sie es im Abschnitt „Erstellen eines dedizierten Administrators“ (Schritt eins) getan haben.
Wie Sie unten sehen können, erhalten Sie nicht mehr die Warnung Zugriffskontrolle ist nicht aktiviert… über die Aktivierung der Authentifizierung. Stattdessen erhalten Sie eine Meldung, die Ihnen die Version Ihres MongoDB-Servers und der MongoDB-Shell mitteilt.

2. Führen Sie als nächstes den Befehl show dbs
erneut aus, um zu überprüfen, ob Sie immer noch auf die Datenbank zugreifen können.
Der Befehl sollte Ihnen alle Datenbanken anzeigen, auch die Admin-Datenbank. Aber wie Sie unten sehen, wird nichts angezeigt. Warum? Die Anzeige der Liste der Datenbanken ist ein Privileg, das nur administrativen Benutzern vorbehalten ist.
Sie haben Ihre mongo-Shell nicht authentifiziert, um die Admin-Rolle zu verwenden, daher sind Sie nicht autorisiert, die Liste der Datenbanken anzuzeigen.

Mit aktivierter Authentifizierung schlägt die Verbindung fehl, wenn jemand versucht, auf die Datenbank zuzugreifen, indem er einen Verbindungszeichenfolge verwendet, die nicht die korrekten Anmeldeinformationen enthält.
Die Authentifizierung von Verbindungszeichenfolgen ist ein Kernbestandteil der MongoDB-Sicherheit, und Sie sollten die Authentifizierung auf allen Ebenen der Anwendung implementieren. Alle Verbindungen zu MongoDB müssen eine Authentifizierungszeichenfolge verwenden, die aus Anmeldedaten besteht. Diese Anmeldedaten umfassen den richtigen Benutzernamen und das Passwort.
3. Führen Sie den Befehl exit
aus, um die MongoDB-Shell zu verlassen.
4. Führen Sie nun den unten stehenden Befehl aus, um sich mit Ihrem neu erstellten administrativen Benutzer (Benutzername -u
und Passwort -p
) bei der MongoDB-Shell anzumelden. Ersetzen Sie AdminATA
durch den Benutzernamen, den Sie im Abschnitt „Erstellen eines dedizierten administrativen Benutzers“ (Schritt vier) erstellt haben.
Der Parameter --authenticationDatabase
gibt der MongoDB-Shell an, sich gegen die Datenbank admin
zu authentifizieren.
5. Geben Sie Ihr Passwort für Ihren administrativen Benutzer ein, wenn Sie dazu aufgefordert werden.


6. Führen Sie abschließend den Befehl show dbs
erneut aus, um zu überprüfen, ob Sie alle Datenbanken anzeigen können.
Dieses Mal erscheint, wie unten zu sehen ist, die Liste der Datenbanken, da Sie ein Admin-Benutzer sind.

Schlussfolgerung
In diesem Tutorial haben Sie gelernt, wie Sie einen administrativen Benutzer erstellen und die Authentifizierung aktivieren. Sie haben gelernt, die Sicherheit Ihrer MongoDB zu gewährleisten und Einschränkungen dafür festzulegen, wer auf Ihre Serverdatenbanken zugreifen kann.
An diesem Punkt können Sie entscheiden, wer auf was zugreifen kann. Also, was steht als Nächstes für Sie an? Vielleicht lernen Sie wie Sie einen MongoDB-Container sicher verwenden?