Zum Hauptinhalt springen

Security

Grundbegriffe​

Authentisierung - Authentication​

  • Identitätsprüfung
  • Erbringen eines Nachweises für behauptete Identität

Authentifizierung - Authentication​

  • Prüfung der behaupteten Identität

Autorisierung - Authorization​

  • Rechtevergabe
  • Einräumen von speziellen Rechten

Zugriffskontrolle aktivieren​

  • Zugriffskontrolle ist standardmäßig deaktiviert

1. Adminuser erstellen​

use admin
db.createUser(
{
user: "admin",
pwd: passwordPrompt(), // or cleartext password
roles: [
{ role: "userAdminAnyDatabase", db: "admin" },
{ role: "readWriteAnyDatabase", db: "admin" }
]
}
)
Enter password: ***** // e.g. 12345

2. Server neu starten​

  1. Konfigurations-Datei des Servers als Administrator öffnen
    • unter Windows: C:\Program Files\MongoDB\Server\6.0\bin\mongod.cfg
  2. security.authorization zu enabled ändern
    # security
    security:
    authorization: enabled
  3. Server neu starten
    • Windows
      • Variante 1: Dienste / MongoDB Server (MongoDB) neu starten
      • Variante 2:
        net stop "MongoDB Server (MongoDB)"
        net start "MongoDB Server (MongoDB)"
    • noch nicht geprüft: (unter Windows: mongod --config "C:\Program Files\MongoDB\Server\6.0\bin\mongod.cfg")
  4. Als Administrator anmelden
    mongosh --username myUserAdmin --password
    oder über MongoDBCompass

Rollen​

  • Role-Based Access Control (RBAC)
  • Benutzer erhalten Rollen auf bestimmte Datenbanken

Vordefinierte Rollen​

RolleBerechtigungenReichweite
readLesenauf bestimmten Datenbanken
readWriteLesen und Schreibenauf bestimmten Datenbanken
userAdminErstellung von Benutzernauf bestimmten Datenbanken
dbOwneralle Operationenauf bestimmten Datenbanken
backupnur Erstellung von Backupsauf bestimmten Datenbanken
restoreZurückladen/Restoreeiner bestimmten Datenbank
readAnyDatabaseLesenauf allen Datenbanken
readWriteAnyDatabaseLesen und Schreibenauf allen Datenbanken
userAdminAnyDatabaseErstellung von Benutzernauf allen Datenbanken
rootSuperuser-Rolle
.........

Rollen hinzufügen​

use test
db.grantRolesToUser(
"myTester",
[
{ role: "read", db: "accounts" }
]
)

Rollen entfernen​

use test
cuse test
db.revokeRolesFromUser(
"myTester",
[
{ role: "read", db: "reporting" }
]
)

Benutzer​

Benutzer erstellen​

  • Benutzer können mit einer oder mehreren Rollen erstellt werden
  • Benutzer werden auf bestimmten Datenbank erstellt
    • wird für Authentifizierung verwendet
    • muss bei Anmeldung mit angegeben werden
  • passwordPrompt()
    • fragt nach dem Passwort
  • passwordPrompt("Enter a password with another text:")
    • fragt nach dem Passwort mit einem anderen Text
use test
db.createUser(
{
user: "myTester",
pwd: passwordPrompt(), // or cleartext password
roles: [
{ role: "readWrite", db: "test" },
{ role: "read", db: "reporting" }
]
}
)

Benutzer anmelden​

MongoDB Compass:

Shell:

mongosh "mongodb://<user>@localhost:27017/?authSource=<database>"

mongosh localhost:27017/admin --username exampleUser

mongosh --username exampleUser

Benutzer anzeigen​

Als Administrator können alle Benutzer und deren Rollen angezeigt werden:

use admin
db.system.users.find()
[
{
_id: 'test.myTester',
userId: new UUID("f6d02161-d649-42a6-a4c3-7319268e4340"),
user: 'myTester',
db: 'test',
credentials: {
'SCRAM-SHA-1': {
iterationCount: 10000,
salt: 'uU/JxR9Gg6M/SHdUyyMT9g==',
storedKey: 'XqQ9GNjw4tk+gjwSjHu+cbu++KM=',
serverKey: 'E3GWhFo0Il4dSy/0wJ5YAsdgYUI='
},
'SCRAM-SHA-256': {
iterationCount: 15000,
salt: 'DMSIRSDzBmT2GYcAH1gDFzoQUyau3YqpmR1QZw==',
storedKey: '+92rEZtg8EQpAQwXiCAV23OI2GyXMR+iMfHTMrYlFzc=',
serverKey: '+bxyif89ucFUpiQNOxFyIQKrjq1RiBdCs3PmYjO2i+w='
}
},
roles: [
{role: 'read', db: 'reporting'},
{role: 'read', db: 'pizza'},
{role: 'readWrite', db: 'test'}
]
}
]

Passwort eines Benutzers ändern​

use <authentificationDatabase>
db.changeUserPassword("<userName>", "<newPassword>")

Benutzer löschen​

use <authentificationDatabase>
db.dropUser("<userName>")