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.
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 DatenbankreadWrite
: Lese- und Schreibrechte auf eine DatenbankdbAdmin
: Datenbank verwalten (Indexe, Validierung, etc.)dbOwner
: Kann alle administrativen Aktionen an der Datenbank durchfĂĽhrenuserAdmin
: Benutzer und Rollen verwaltenbackup
: Minimale Privilegien um ein Backup einer Datenbanken zu erstellenrestore:
Benötigte Privilegien für einen Restore einer Datenbankenroot
: 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" }
]
})
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" }
]
)
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")
Zuletzt aktualisiert
War das hilfreich?