Wie man die MongoDB-Sicherheit kontrolliert

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:
  • 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.

mongo

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.

Connecting to your MongoDB shell

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.

show dbs
Showing all databases on the server

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.

use admin
Switching to the admin database

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.

# Die Methode db.createUser() erstellt einen neuen Benutzer in der aktuellen Datenbank mit den in den Rollen angegebenen Berechtigungen.
db.createUser(
{
# Geben Sie den Benutzernamen AdminATA an, aber Sie können einen beliebigen Benutzernamen eingeben.
user: "AdminATA",
# Die Methode passwordPrompt() ist eine universelle Hilfsfunktion,
# die der MongoDB-Shell mitteilt, dass Sie ein Passwort für den Benutzer AdminATA eingeben sollen.
pwd: passwordPrompt(),
# Geben Sie die Rollen an, die Sie für Ihren Benutzer AdminATA festlegen möchten.
roles: [ { role: "userAdminAnyDatabase", db: "admin" }, "readWriteAnyDatabase" ]
}
)

5. Geben Sie bei Aufforderung ein sicheres Passwort ein, wie unten gezeigt, und drücken Sie Enter.

Providing a secure password

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.

Verifying Successful Admin User Creation in MongoDB

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

exit
Leaving the mongo shell

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.
Adding the authorization parameter

2. Führen Sie anschließend den folgenden Befehl systemctl aus, um den MongoDB-Server neu zu starten, damit die Änderungen wirksam werden.

sudo systemctl restart mongod

3. Führen Sie abschließend den folgenden Befehl aus, um den Status Ihres MongoDB-Dienstes anzuzeigen.

sudo systemctl status mongod

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.

Viewing MongoDB Service Status

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.

mongo

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.

Connecting to the MongoDB Shell

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.

show dbs

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.

Listing All Databases (empty)

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.

exit

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.

mongo -u AdminATA -p --authenticationDatabase admin

5. Geben Sie Ihr Passwort für Ihren administrativen Benutzer ein, wenn Sie dazu aufgefordert werden.

Providing administrative password
logging into the MongoDB shell as an administrator

6. Führen Sie abschließend den Befehl show dbs erneut aus, um zu überprüfen, ob Sie alle Datenbanken anzeigen können.

show dbs

Dieses Mal erscheint, wie unten zu sehen ist, die Liste der Datenbanken, da Sie ein Admin-Benutzer sind.

Listing all databases as admin user

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?

Source:
https://adamtheautomator.com/mongodb-security/