📚
Lerndokumentationen
Datenbanken
Datenbanken
  • Willkommen
  • Grundlagen
    • SQL vs. NoSQL
    • NoSQL-Familien
    • CAP-Theorem
    • Vorgehen beim Erstellen
    • ACID - BASE
    • Indizes
  • SQL
    • Struktur
      • Datenbanken und Tabellen
        • Datentypen
        • Erstellen
        • Bearbeiten
        • Löschen
        • Constraints
          • NOT NULL
          • UNIQUE
          • PrimärschlĂĽssel
          • FremdschlĂĽssel
          • CHECK
          • DEFAULT
      • Daten
        • EinfĂĽgen
        • Aktualisieren
        • Löschen
    • Abfragen
      • Auswählen
      • Filtern
      • Operatoren
      • Reihenfolge
      • JOINS
      • Aggregatsfunktionen
        • Gruppieren
        • Filtern
      • Subqueries
    • Transaktionen
    • Datenschutz und Berechtigungen
      • Benutzerverwaltung
      • Rechte
    • Optimierung
  • MongoDB
    • Was ist MongoDB?
    • Struktur
      • Datenbanken und Collections
      • Daten
    • Abfragen
    • Indexing
    • Security
      • Authentifizierung und Autorisierung
      • Auditing
    • Backups
Bereitgestellt von GitBook
Auf dieser Seite
  • Authentifizeriung und Autorisierung aktivieren
  • Rollen
  • Benutzer und Rollen verwalten
  • Benutzer erstellen
  • Anmelden
  • Rollen vergeben und entziehen
  • Benutzer auflisten
  • Passwort ändern
  • Benutzer löschen
  1. MongoDB
  2. Security

Authentifizierung und Autorisierung

Datenbanksicherheit ist essenziell – besonders wenn eine Datenbank im Netzwerk erreichbar ist. MongoDB bietet mehrere Mechanismen, um unbefugten Zugriff zu verhindern: Authentifizierung, Autorisierung über Rollen sowie eine granulare Benutzerverwaltung. In dieser Dokumentation lernst du, wie du die Sicherheit in MongoDB aktivierst und verwaltest.

Authentifizeriung und Autorisierung aktivieren

Standardmässig ist MongoDB im „offenen“ Modus – also ohne Authentifizierung. Um Sicherheit zu gewährleisten, muss man explizit die Authentifizierung aktivieren.

1

Konfiguration anpassen (mongod.conf)

security:
  authorization: "enabled"
2

Mongodb neustarten

mongod --auth --config /etc/mongod.conf

Ab jetzt muss sich jeder Benutzer mit einem gĂĽltigen Benutzernamen und Passwort anmelden. Wenn noch kein Benutzer vorhanden ist gilt die sogenannte Localhost Exception und du kannst einen Admin, bspw. mit der Rolle userAdminAnyDatabase erstellen.

Rollen

MongoDB verwendet ein rollenbasiertes Zugriffskontrollsystem (RBAC). Rollen definieren, welche Aktionen ein Benutzer ausführen darf (z. B. find, insert, drop).

Vordefinierte Rollen

  • read: Nur Lesezugriff auf eine Datenbank

  • readWrite: Lese- und Schreibrechte auf eine Datenbank

  • dbAdmin: Datenbank verwalten (Indexe, Validierung, etc.)

  • dbOwner: Kann alle administrativen Aktionen an der Datenbank durchfĂĽhren

  • userAdmin: Benutzer und Rollen verwalten

  • backup: Minimale Privilegien um ein Backup einer Datenbanken zu erstellen

  • restore: Benötigte Privilegien fĂĽr einen Restore einer Datenbanken

  • root: Superuser

Du kannst auch eigene benutzerdefinierte Rollen erstellen.

Benutzer und Rollen verwalten

Benutzer erstellen

Um einen Benutzer zu erstellen können wir folgenden Befehl nutzen:

use admin

db.createUser({
  user: "levin",
  pwd: "starkespasswort",
  roles: [
    { role: "readWrite", db: "vivid" }
  ]
})

Die angegebene Datenbank in der der Benutzer definiert wird (im Beispiel admin), wird fĂĽr die Authentifizierung verwendet und muss bei der Anmeldung mit angegeben werden. Obwohl der Benutzer sich bei dieser Datenbank authentifiziert, kann er Berechtigungen auch auf anderen Datenbanken haben.

Anmelden

Um sich anzumelden musst du folgenden Befehl ausfĂĽhren:

mongosh --port 27017  --authenticationDatabase "admin" -u "levin" -p

Rollen vergeben und entziehen

Um Rollen nachträglich zu einem Nutzer hinzuzufügen, nutzen wir folgenden Befehl:

use admin

db.grantRolesToUser(
  "levin",
  [
    { role: "read", db: "accounts" }
  ]
)

Um Rollen wieder zu entziehen nutzen wir folgenden Befehl:

use admin

db.revokeRolesFromUser(
  "levin",
  [
    { role: "read", db: "reporting" }
  ]
)

Verwende immer dieselbe Datenbank (hier admin) fĂĽr die Authentifizierung.

Benutzer auflisten

Um alle Benutzer in einer Datenbank aufzulisten, nutzt du folgenden Befehl:

use admin

db.system.users.find()

Passwort ändern

Um das Passwort eines Nutzers zu ändern, nutzt du folgenden Befehl:

use admin

db.changeUserPassword("levin", "abc123")

Benutzer löschen

Um einen Benutzer zu löschen, nutzt du folgenden Befehl:

use admin

db.dropUser("levin")
VorherigeSecurityNächsteAuditing

Zuletzt aktualisiert vor 1 Monat