35 Benutzer (User) in MongoDB

Der Begriff User in MongoDB bezeichnet eine Entität, die für den Zugriff auf die Datenbank autorisiert ist. MongoDB verwendet ein rollenbasiertes Zugriffskontrollmodell (Role-Based Access Control, RBAC), um den Zugriff von Benutzern auf Daten und Befehle zu steuern.

35.1 Konzepte und Grundlagen

35.1.1 1. Authentifizierung vs. Autorisierung

35.1.2 2. Benutzer und Datenbanken


35.2 Benutzerverwaltung in MongoDB

35.2.1 1. Benutzer erstellen

Ein Benutzer wird mit dem Befehl createUser erstellt. Beispiel:

use admin
db.createUser({
  user: "myUser",
  pwd: "myPassword",
  roles: [
    { role: "readWrite", db: "shopDB" },
    { role: "read", db: "analyticsDB" }
  ]
})

35.2.2 2. Benutzerrollen

Rollen definieren die Berechtigungen eines Benutzers. Es gibt zwei Kategorien: - Vordefinierte Rollen: - read: Nur-Lese-Zugriff auf eine Datenbank. - readWrite: Lese- und Schreibzugriff. - dbAdmin: Verwaltung der Datenbankstruktur (Indizes, Statistiken etc.). - clusterAdmin: Verwaltung des gesamten Clusters. - Benutzerdefinierte Rollen: Benutzer können eigene Rollen mit spezifischen Berechtigungen erstellen.

35.2.3 3. Benutzer anzeigen

Mit folgendem Befehl kannst du Benutzer einer Datenbank auflisten:

use admin
db.getUsers()

35.2.4 4. Benutzer löschen

use admin
db.dropUser("myUser")

35.3 Authentifizierung

35.3.1 Authentifizierungsmodi

Beispiel für die Anmeldung eines Benutzers:

mongo --username myUser --password myPassword --authenticationDatabase admin

35.4 Best Practices

  1. Minimale Rechtevergabe: Benutzerrollen sollten nur die Berechtigungen enthalten, die für ihre Aufgaben erforderlich sind (Prinzip der geringsten Privilegien).

  2. Separate Benutzer für Anwendungen: Erstelle separate Benutzer für verschiedene Anwendungen, um den Zugriff besser kontrollieren zu können.

  3. Starke Passwörter verwenden: Nutze komplexe Passwörter und ändere sie regelmäßig.

  4. Überwachung und Protokollierung: Aktiviere das MongoDB Audit Log, um Änderungen an Benutzern und Zugriffsversuchen zu protokollieren.

  5. Sichere Authentifizierung: Verwende SCRAM-SHA-256 oder x.509-Zertifikate für höhere Sicherheit.