Eigene Rolle definieren, Benutzer anlegen, Rollen gewähren/entziehen und Passwort ändern
MongoDBSicherheitBefehl
use admin
db.createRole({
role: "opsRead",
privileges: [
{ resource: { db: "shop", collection: "" }, actions: ["find", "listCollections", "listIndexes", "collStats", "dbStats"] },
{ resource: { cluster: true }, actions: ["serverStatus", "inprog"] }
],
roles: []
})
db.createUser({ user: "shop_app", pwd: passwordPrompt(), roles: [{ role: "readWrite", db: "shop" }, { role: "opsRead", db: "admin" }] })
db.grantRolesToUser("shop_app", [{ role: "clusterMonitor", db: "admin" }])
db.revokeRolesFromUser("shop_app", [{ role: "clusterMonitor", db: "admin" }])
db.changeUserPassword("shop_app", passwordPrompt())
db.getUser("shop_app", { showPrivileges: true })
db.runCommand({ usersInfo: { forAllDBs: true } })Was es tut
Definiert eine eigene Rolle mit bestimmten Datenbank- und Cluster-Actions, legt einen Benutzer mit dieser Rolle und eingebauten Rollen an, gewährt und entzieht Rollen, ändert das Passwort und listet Benutzer über alle Datenbanken.
Wann einsetzen
Beim Anlegen von Anwendungs- und Monitoring-Konten nach Least Privilege, bei Zugriffsüberprüfungen oder Passwortrotation.
Vorsicht
Die Datenbank, in der der Benutzer definiert ist (hier admin), wird als authSource verwendet; sie muss zum Connection String der Anwendung passen. Gewähre Anwendungskonten keine weitreichenden Rollen wie root/dbOwner. Rollenänderungen wirken sofort auf bestehende Sessions; eine Passwortänderung trennt offene Verbindungen nicht und gilt für neue.