View a markdown version of this page

Datenbankzugriff mit Role-Based Zugriffskontrolle - Amazon DocumentDB

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Datenbankzugriff mit Role-Based Zugriffskontrolle

Sie können den Zugriff auf die Aktionen einschränken, die Benutzer mit Datenbanken ausführen können, indem Sie rollenbasierte Zugriffskontrolle (RBAC) in Amazon DocumentDB (mit MongoDB-Kompatibilität). Bei RBAC werden einem Benutzer eine oder mehrere Rollen gewährt. Diese Rollen bestimmen die Operationen, die ein Benutzer mit Datenbankressourcen ausführen kann. Amazon DocumentDB unterstützt derzeit beide integrierten Rollen, die auf Datenbankebene beschränkt sind, wie z. B. read, readWrite, readAnyDatabase, clusterAdmin, und benutzerdefinierte Rollen, die bestimmten Aktionen und granularen Ressourcen wie Sammlungen zugewiesen werden können, die Ihren Anforderungen entsprechen.

Zu den häufigsten Anwendungsfällen von RBAC gehören die Durchsetzung der geringsten Rechte, indem Benutzer mit schreibgeschütztem Zugriff auf die Datenbanken oder Sammlungen in einem Cluster erstellt werden, und Anwendungsdesigns für mehrere Mandanten, die es einem einzelnen Benutzer ermöglichen, auf eine bestimmte Datenbank oder Sammlung in einem Cluster zuzugreifen.

Anmerkung

Allen neuen Benutzern, die vor dem 26. März 2020 erstellt wurden, wurden die dbAdminAnyDatabase-, readWriteAnyDatabase- und clusterAdmin-Rollen erteilt. Es wird empfohlen, alle vorhandenen Benutzer neu zu bewerten und die Rollen nach Bedarf zu ändern, um die geringstmöglichen Berechtigungen für Ihre Cluster zu erzwingen.

RBAC-Konzepte

Im Folgenden finden Sie wichtige Begriffe und Konzepte zur rollenbasierten Zugriffssteuerung. Weitere Informationen zu Amazon DocumentDB-Benutzern finden Sie unter Verwaltung von Amazon DocumentDB-Benutzern.

  • Nutzer — Eine einzelne Entität, die sich bei der Datenbank authentifizieren und Operationen ausführen kann.

  • Passwort — Ein Geheimnis, das zur Authentifizierung des Benutzers verwendet wird.

  • Rolle — Autorisiert einen Benutzer, Aktionen an einer oder mehreren Datenbanken auszuführen.

  • Admin-Datenbank — Die Datenbank, in der Benutzer gespeichert und gegen die Benutzer autorisiert werden.

  • Datenbank (db) — Der Namespace innerhalb von Clustern, der Sammlungen zum Speichern von Dokumenten enthält.

Der folgende Befehl erstellt einen Benutzer mit Namen sample-user.

db.createUser({user: "sample-user", pwd: "abc123", roles: [{role: "read", db: "sample-database"}]})

In diesem Beispiel:

  • user: "sample-user" — Gibt den Benutzernamen an.

  • pwd: "abc123" — Zeigt das Benutzerkennwort an.

  • role: "read", "db: "sample-database" — Zeigt an, dass der Benutzer sample-user wird Leseberechtigungen haben in sample-database.

Codebeispiel, das einen „createUser“-Befehl anzeigt, der Benutzername, Passwort und Berechtigungen angibt.

Das folgende Beispiel zeigt die Ausgabe, nachdem Sie den Benutzer sample-user mit db.getUser(sample-user) erhalten. In diesem Beispiel befindet sich der Benutzer sample-user in der Datenbank admin, besitzt jedoch die „read“-Rolle für die Datenbank sample-database.

Codeausgabebeispiel, das das Ergebnis des CreateUser-Befehls zeigt, der die neue Benutzer-ID, die Admin-Datenbank, der der neue Benutzer zugewiesen ist, und die Rollenberechtigungen, die dem Benutzer zugewiesen wurden, definiert.

Wenn Sie beim Erstellen von Benutzern das weglassen db Wenn Sie die Rolle angeben, ordnet Amazon DocumentDB die Rolle implizit der Datenbank zu, für die die Verbindung hergestellt wird. Wenn Ihre Verbindung beispielsweise für die Datenbank sample-database hergestellt wird und Sie den folgenden Befehl ausführen, wird der Benutzer sample-user in der Datenbank admin erstellt und verfügt über readWrite-Berechtigungen für die Datenbank sample-database.

db.createUser({user: "sample-user", pwd: "abc123", roles: ["readWrite"]})

Die Ausgabe dieser Operation sieht in etwa folgendermaßen aus.

{ "user":"sample-user", "roles":[ { "db":"sample-database", "role":"readWrite" } ] }

Wenn Sie Benutzer mit Rollen erstellen, die über alle Datenbanken hinweg erfasst sind (z. B. readAnyDatabase), müssen Sie sich beim Erstellen des Benutzers entweder im Kontext der Datenbank admin befinden oder beim Erstellen des Benutzers explizit die Datenbank für die Rolle angeben. Um Befehle für die Datenbank admin auszugeben, können Sie den Befehl use admin verwenden. Weitere Informationen finden Sie unter Allgemeine Befehle.

Erste Schritte mit den integrierten RBAC-Rollen

Um Ihnen den Einstieg in die rollenbasierte Zugriffssteuerung zu erleichtern, führen Sie in diesem Abschnitt ein Beispielszenario zum Erzwingen der geringstmöglichen Berechtigungen durch das Erstellen von Rollen für drei Benutzer mit unterschiedlichen Auftragsfunktionen durch.

  • user1 ist ein neuer Manager, der in der Lage sein muss, alle Datenbanken in einem Cluster anzuzeigen und darauf zuzugreifen.

  • user2 ist ein neuer Mitarbeiter, der Zugriff auf nur eine Datenbank, sample-database-1, in demselben Cluster benötigt.

  • user3 ist ein vorhandener Mitarbeiter, der im selben Cluster eine andere Datenbank, sample-database-2, anzeigen und darauf zugreifen muss, auf die er vorher keinen Zugriff hatten.

Zu einem späteren Zeitpunkt verlassen sowohl user1 als auch user2 das Unternehmen, so dass ihr Zugang widerrufen werden muss.

Um Benutzer zu erstellen und Rollen zu erteilen, muss der Benutzer, mit dem Sie sich beim Cluster authentifizieren, über eine zugeordnete Rolle verfügen, die Aktionen für createUser und grantRole ausführen kann. Zum Beispiel können die Rollen admin und userAdminAnyDatabase beide solche Fähigkeiten gewähren. Informationen zu Aktionen pro Rolle finden Sie unter Datenbankzugriff mit Role-Based Zugriffskontrolle.

Anmerkung

In Amazon DocumentDB sind alle Benutzer- und Rollenoperationen (z. B. create, get, drop, grant, revoke, usw.) werden implizit in der ausgeführt admin Datenbank, ob Sie Befehle gegen die ausgeben oder nicht admin Datenbank.

Um zunächst zu verstehen, was die aktuellen Benutzer und Rollen im Cluster sind, können Sie den Befehl show users ausführen, wie im folgenden Beispiel. Sie werden zwei Benutzer sehen, serviceadmin und der Hauptbenutzer für den Cluster. Diese beiden Benutzer sind immer vorhanden und können nicht gelöscht werden. Weitere Informationen finden Sie unter Verwaltung von Amazon DocumentDB-Benutzern.

show users

Erstellen Sie für user1 eine Rolle mit Lese- und Schreibzugriff auf alle Datenbanken im gesamten Cluster mit dem folgenden Befehl.

db.createUser({user: "user1", pwd: "abc123", roles: [{role: "readWriteAnyDatabase", db: "admin"}]})

Die Ausgabe dieser Operation sieht in etwa folgendermaßen aus.

{ "user":"user1", "roles":[ { "role":"readWriteAnyDatabase", "db":"admin" } ] }

Erstellen Sie für user2 eine Rolle mit schreibgeschütztem Zugriff auf die Datenbank sample-database-1 mit dem folgenden Befehl.

db.createUser({user: "user2", pwd: "abc123", roles: [{role: "read", db: "sample-database-1"}]})

Die Ausgabe dieser Operation sieht in etwa folgendermaßen aus.

{ "user":"user2", "roles":[ { "role":"read", "db":"sample-database-1" } ] }

Um das Szenario zu simulieren, dass user3 ein vorhandener Benutzer ist, erstellen Sie zuerst den Benutzer user3 und weisen Sie dann user3 eine neue Rolle zu.

db.createUser({user: "user3", pwd: "abc123", roles: [{role: "readWrite", db: "sample-database-1"}]})

Die Ausgabe dieser Operation sieht in etwa folgendermaßen aus.

{ "user":"user3", "roles":[ { "role":"readWrite", "db":"sample-database-1" } ] }

Nachdem der Benutzer user3 erstellt wurde, weisen Sie user3 die read-Rolle für sample-database-2 zu.

db.grantRolesToUser("user3", [{role: "read", db: "sample-database-2"}])

Schließlich verlassen sowohl user1 als auch user2 das Unternehmen und ihr Zugriff auf den Cluster muss widerrufen werden. Sie können dies tun, indem Sie die Benutzer wie folgt löschen.

db.dropUser("user1") db.dropUser("user2")

Um sicherzustellen, dass alle Benutzer über die entsprechenden Rollen verfügen, können Sie alle Benutzer mit dem folgenden Befehl auflisten.

show users

Die Ausgabe dieser Operation sieht in etwa folgendermaßen aus.

{ "_id":"serviceadmin", "user":"serviceadmin", "db":"admin", "roles":[ { "db":"admin", "role":"root" } ] } { "_id":"master-user", "user":"master-user", "db":"admin", "roles":[ { "db":"admin", "role":"root" } ] } { "_id":"user3", "user":"user3", "db":"admin", "roles":[ { "db":"sample-database-2", "role":"read" }, { "db":"sample-database-1", "role":"readWrite" } ] }

Erste Schritte mit benutzerdefinierten RBAC-Rollen

Um Ihnen den Einstieg in benutzerdefinierte Rollen zu erleichtern, werden Sie in diesem Abschnitt durch ein Beispielszenario geführt, in dem Sie die geringsten Rechte erzwingen, indem Rollen für drei Benutzer mit unterschiedlichen Aufgabenbereichen erstellt werden.

In diesem Beispiel gilt Folgendes:

  • user1 ist ein neuer Manager, der in der Lage sein muss, alle Datenbanken in einem Cluster anzuzeigen und darauf zuzugreifen.

  • user2 ist ein neuer Mitarbeiter, der nur die Aktion „Suchen“ für nur eine Datenbank benötigt, sample-database-1, in demselben Cluster.

  • user3 ist ein vorhandener Mitarbeiter, der eine bestimmte Sammlung, col2, in einer anderen Datenbank einsehen und darauf zugreifen muss, sample-database-2 auf die sie zuvor keinen Zugriff hatten, im selben Cluster.

  • Erstellen Sie für user1 eine Rolle mit Lese- und Schreibzugriff auf alle Datenbanken im gesamten Cluster mit dem folgenden Befehl.

db.createUser( { user: "user1", pwd: "abc123", roles: [{role: "readWriteAnyDatabase", db: "admin"}] } )

Die Ausgabe dieser Operation sieht in etwa folgendermaßen aus.

{ "user":"user1", "roles":[ { "role":"readWriteAnyDatabase", "db":"admin" } ] }

Für user2, erstellen Sie eine Rolle mit Suchrechten für alle Sammlungen in der Datenbank sample-database-1 mit dem folgenden Befehl. Beachten Sie, dass diese Rolle sicherstellen würde, dass alle zugehörigen Benutzer nur Suchabfragen ausführen können.

db.createRole( { role: "findRole", privileges: [ { resource: {db: "sample-database-1", collection: ""}, actions: ["find"] }], roles: [] } )

Die Ausgabe dieser Operation sieht in etwa folgendermaßen aus.

{ "role":"findRole", "privileges":[ { "resource":{ "db":"sample-database-1", "collection":"" }, "actions":[ "find" ] } ], "roles":[ ] }

Erstellen Sie als Nächstes den Benutzer (user2) und hängen Sie die kürzlich erstellte Rolle an findRole an den Benutzer.

db.createUser( { user: "user2", pwd: "abc123", roles: [] }) db.grantRolesToUser("user2",["findRole"])

Um das Szenario zu simulieren, dass user3 ist ein vorhandener Benutzer, erstellen Sie zuerst den Benutzer user3, und erstellen Sie dann eine neue Rolle namens CollectionRole, die wir im nächsten Schritt zuweisen werden user3.

Jetzt können Sie eine neue Rolle zuweisen user3. Diese neue Rolle wird es ermöglichen user3 um in der Lage zu sein, eine bestimmte Sammlung spol2 einzufügen, zu aktualisieren, zu löschen und Zugriff auf sie zu finden sample-database-2.

db.createUser( { user: "user3", pwd: "abc123", roles: [] }) db.createRole( { role: "collectionRole", privileges: [ { resource: {db: "sample-database-2", collection: "col2"}, actions: ["find", "update", "insert", "remove"] }], roles: [] } )

Die Ausgabe dieser Operation sieht in etwa folgendermaßen aus.

{ "role":"collectionRole", "privileges":[ { "resource":{ "db":"sample-database-2", "collection":"col2" }, "actions":[ "find", "update", "insert", "remove" ] } ], "roles":[ ] }

Nun, das ist der Benutzer user3 erstellt wurde, können Sie gewähren user3 die Rolle collectionFind.

db.grantRolesToUser("user3",["collectionRole"])

Schließlich verlassen sowohl user1 als auch user2 das Unternehmen und ihr Zugriff auf den Cluster muss widerrufen werden. Sie können dies tun, indem Sie die Benutzer wie folgt löschen.

db.dropUser("user1") db.dropUser("user2")

Um sicherzustellen, dass alle Benutzer über die entsprechenden Rollen verfügen, können Sie alle Benutzer mit dem folgenden Befehl auflisten.

show users

Die Ausgabe dieser Operation sieht in etwa folgendermaßen aus.

{ "_id":"serviceadmin", "user":"serviceadmin", "db":"admin", "roles":[ { "db":"admin", "role":"root" } ] } { "_id":"master-user", "user":"master-user", "db":"admin", "roles":[ { "db":"admin", "role":"root" } ] } { "_id":"user3", "user":"user3", "db":"admin", "roles":[ { "db":"admin", "role":"collectionRole" } ] }

Als Benutzer eine Verbindung zu Amazon DocumentDB herstellen

Wenn Sie eine Verbindung zu einem Amazon DocumentDB-Cluster herstellen, stellen Sie eine Verbindung im Kontext einer bestimmten Datenbank her. Wenn Sie in der Verbindungszeichenfolge keine Datenbank angeben, werden Sie standardmäßig automatisch im Kontext der Datenbank test mit dem Cluster verbunden. Alle Befehle auf Sammlungsebene wie insert und find werden für Sammlungen in der Datenbank test ausgegeben.

Um die Datenbank zu sehen, in der Sie sich gerade befinden, oder — mit anderen Worten — Befehle für die Sie Befehle ausgeben, verwenden Sie db Befehl in der Mongo-Shell, wie folgt.

Abfrage:

db

Ausgabe:

test

Obwohl sich die Standardverbindung möglicherweise im Kontext der Datenbank test befindet, bedeutet dies nicht unbedingt, dass der Benutzer, der der Verbindung zugeordnet ist, berechtigt ist, Aktionen für die Datenbank test auszuführen. Wenn Sie sich im vorangegangenen Beispielszenario als Benutzer user3 authentifizieren, der die readWrite-Rolle für die Datenbank sample-database-1 besitzt, ist der Standardkontext Ihrer Verbindung die Datenbank test. Wenn Sie jedoch versuchen, ein Dokument in eine Sammlung in der Datenbank test einzufügen, erhalten Sie die Fehlermeldung Autorisierungsfehler. Dies liegt daran, dass dieser Benutzer nicht berechtigt ist, diesen Befehl in dieser Datenbank auszuführen, wie unten gezeigt.

Abfrage:

db

Ausgabe:

test

Abfrage:

db.col.insert({x:1})

Ausgabe:

WriteCommandError({ "ok" : 0, "code" : 13, "errmsg" : "Authorization failure" })

Wenn Sie den Kontext Ihrer Verbindung zur Datenbank sample-database-1 ändern, können Sie in die Sammlung schreiben, für die der Benutzer die Berechtigung dazu hat.

Abfrage:

use sample-database-1

Ausgabe:

switched to db sample-database-1

Abfrage:

db.col.insert({x:1})

Ausgabe:

WriteResult({ "nInserted" : 1})

Wenn Sie sich bei einem Cluster mit einem bestimmten Benutzer authentifizieren, können Sie die Datenbank auch in der Verbindungszeichenfolge angeben. Dadurch entfällt die Notwendigkeit, den Befehl use auszuführen, nachdem der Benutzer in der Datenbank admin authentifiziert wurde.

Die folgende Verbindungszeichenfolge authentifiziert den Benutzer für die Datenbank admin, aber der Kontext der Verbindung wird für die Datenbank sample-database-1 verwendet.

mongo "mongodb://user3:abc123@sample-cluster.node.us-east-1.docdb.amazonaws.com:27017/sample-database-2"

Allgemeine Befehle

Dieser Abschnitt enthält Beispiele für gängige Befehle, die die rollenbasierte Zugriffskontrolle in Amazon DocumentDB verwenden. Sie müssen sich im Kontext der Datenbank admin befinden, um Benutzer und Rollen zu erstellen und zu ändern. Sie können den Befehl use admin verwenden, um zur Datenbank admin zu wechseln.

Anmerkung

Änderungen an den Benutzern und Rollen erfolgen implizit in der Datenbank admin. Wenn Sie Benutzer mit Rollen erstellen, die über alle Datenbanken hinweg erfasst sind (z. B. readAnyDatabase), müssen Sie sich beim Erstellen des Benutzers entweder im Kontext der Datenbank admin befinden (d. h. use admin) oder beim Erstellen des Benutzers explizit die Datenbank für die Rolle angeben (wie in Beispiel 2 in diesem Abschnitt gezeigt).

Beispiel 1: Erstellen Sie einen Benutzer mit read Rolle für die Datenbank foo.

db.createUser({user: "readInFooBar", pwd: "abc123", roles: [{role: "read", db: "foo"}]})

Die Ausgabe dieser Operation sieht in etwa folgendermaßen aus.

{ "user":"readInFooBar", "roles":[ { "role":"read", "db":"foo" } ] }

Beispiel 2: Erstellen Sie einen Benutzer mit Lesezugriff auf alle Datenbanken.

db.createUser({user: "readAllDBs", pwd: "abc123", roles: [{role: "readAnyDatabase", db: "admin"}]})

Die Ausgabe dieser Operation sieht in etwa folgendermaßen aus.

{ "user":"readAllDBs", "roles":[ { "role":"readAnyDatabase", "db":"admin" } ] }

Beispiel 3: Zuschuss read Rolle an einen bestehenden Benutzer in einer neuen Datenbank.

db.grantRolesToUser("readInFooBar", [{role: "read", db: "bar"}])

Beispiel 4: Aktualisiere die Rolle eines Benutzers.

db.updateUser("readInFooBar", {roles: [{role: "read", db: "foo"}, {role: "read", db: "baz"}]})

Beispiel 5: Widerrufen Sie einem Benutzer den Zugriff auf eine Datenbank.

db.revokeRolesFromUser("readInFooBar", [{role: "read", db: "baz"}])

Beispiel 6: Beschreiben Sie eine eingebaute Rolle.

db.getRole("read", {showPrivileges:true})

Die Ausgabe dieser Operation sieht in etwa folgendermaßen aus.

{ "role":"read", "db":"sample-database-1", "isBuiltin":true, "roles":[ ], "inheritedRoles":[ ], "privileges":[ { "resource":{ "db":"sample-database-1", "collection":"" }, "actions":[ "changeStream", "collStats", "dbStats", "find", "killCursors", "listCollections", "listIndexes" ] } ], "inheritedPrivileges":[ { "resource":{ "db":"sample-database-1", "collection":"" }, "actions":[ "changeStream", "collStats", "dbStats", "find", "killCursors", "listCollections", "listIndexes" ] } }

Beispiel 7: Löscht einen Benutzer aus dem Cluster.

db.dropUser("readInFooBar")

Die Ausgabe dieser Operation sieht in etwa folgendermaßen aus.

true

Beispiel 8: Erstellen Sie eine Rolle mit Lese- und Schreibzugriff auf eine bestimmte Sammlung

db.createRole( { role: "collectionRole", privileges: [ { resource: {db: "sample-database-2", collection: "col2"}, actions: ["find", "update", "insert", "remove"] }], roles: [] } )

Die Ausgabe dieser Operation sieht in etwa folgendermaßen aus.

{ "role":"collectionRole", "privileges":[ { "resource":{ "db":"sample-database-2", "collection":"col2" }, "actions":[ "find", "update", "insert", "remove" ] } ], "roles":[ ] }

Beispiel 9: Erstellen Sie einen Benutzer und weisen Sie ihm eine benutzerdefinierte Rolle zu

db.createUser( { user: "user3", pwd: "abc123", roles: [] }) db.grantRolesToUser("user3",["collectionRole"])

Beispiel 10: Gewähren Sie einer benutzerdefinierten Rolle zusätzliche Rechte

db.grantPrivilegesToRole( "collectionRole", [ { resource: { db: "sample-database-1", collection: "col1" }, actions: ["find", "update", "insert", "remove"] } ] )

Beispiel 11: Privilegien aus einer benutzerdefinierten Rolle entfernen

db.revokePrivilegesFromRole( "collectionRole", [ { resource: { db: "sample-database-1", collection: "col2" }, actions: ["find", "update", "insert", "remove"] } ] )

Beispiel 12: Aktualisiere eine bestehende benutzerdefinierte Rolle

db.updateRole( "collectionRole", { privileges: [ { resource: {db: "sample-database-3", collection: "sample-collection-3"}, actions: ["find", "update", "insert", "remove"] }], roles: [] } )

Funktionale Unterschiede

In Amazon DocumentDB werden Benutzer- und Rollendefinitionen in der admin Datenbank und Benutzer werden anhand der authentifiziert admin Datenbank. Diese Funktionalität unterscheidet sich von der MongoDB Community Edition, ist aber konsistent mit MongoDB Atlas.

Amazon DocumentDB unterstützt auch Change Streams, die eine zeitlich geordnete Abfolge von Änderungsereignissen bereitstellen, die in den Sammlungen Ihres Clusters auftreten. Die listChangeStreams Die Aktion wird auf Clusterebene (d. h. auf alle Datenbanken) angewendet, und modifyChangeStreams Die Aktion kann auf Datenbank- und Clusterebene angewendet werden.

Einschränkungen

Die folgende Tabelle enthält die Grenzwerte für Role-Based Zugriffskontrolle in Amazon DocumentDB.

Description Limit
Anzahl Benutzer pro Cluster 1000
Anzahl der Rollen, die einem Benutzer zugeordnet sind 1000
Anzahl der benutzerdefinierten Rollen 100
Anzahl der Ressourcen, die einer Berechtigung zugeordnet sind 100

Datenbankzugriff mit Role-Based Zugriffskontrolle

Mit der rollenbasierten Zugriffssteuerung können Sie einen Benutzer erstellen und ihm eine oder mehrere Rollen erteilen, um zu bestimmen, welche Operationen der Benutzer in einer Datenbank oder einem Cluster ausführen kann.

Im Folgenden finden Sie eine Liste der integrierten Rollen, die derzeit in Amazon DocumentDB unterstützt werden.

Anmerkung

In Amazon DocumentDB 4.0 und 5.0 ist der ListCollection und ListDatabase Befehle können optional die verwenden authorizedCollections und authorizedDatabases Parameter, um die Sammlungen und Datenbanken aufzulisten, auf die der Benutzer zugreifen darf. Dazu benötigen Sie listCollections und listDatabase jeweils Rollen. Außerdem haben Benutzer jetzt die Möglichkeit, ihre eigenen Cursor zu beenden, ohne die KillCursor Rolle.

Database user
Rollenname Description Aktionen
read Gewährt einem Benutzer Lesezugriff auf die angegebene Datenbank.

changeStreams

collStats

dbStats

find

killCursors

listIndexes

listCollections

readWrite Gewährt dem Benutzer Lese- und Schreibzugriff auf die angegebene Datenbank.

Alle Aktionen von read-Berechtigungen.

createCollection

dropCollection

createIndex

dropIndex

insert

killCursors

listIndexes

listCollections

remove

update

Cluster user
Rollenname Description Aktionen
lesenAnyDatabase Gewährt einem Benutzer Lesezugriff auf alle Datenbanken im Cluster.

Alle Aktionen von read-Berechtigungen.

listChangeStreams

listDatabases

readWriteAnyDatabase Gewährt einem Benutzer Lese- und Schreibzugriff auf alle Datenbanken im Cluster.

Alle Aktionen von readWrite-Berechtigungen.

listChangeStreams

listDatabases

userAdminAnyDatabase Gewährt einem Benutzer die Möglichkeit, die Rollen oder Berechtigungen, die ein Benutzer hat, der angegebenen Datenbank zuzuweisen und zu ändern.

changeCustomData

changePassword

createUser

dropRole

dropUser

grantRole

listDatabases

revokeRole

viewRole

viewUser

dbAdminAnyDatabase Gewährt einem Benutzer die Möglichkeit, Datenbankverwaltungsrollen für jede angegebene Datenbank auszuführen.

Alle Aktionen von dbAdmin-Berechtigungen.

dropCollection

listDatabases

listChangeStreams

modifyChangeStreams

Superuser
Rollenname Description Aktionen
root Gewährt einem Benutzer Zugriff auf die Ressourcen und Operationen aller folgenden Rollen zusammen: readWriteAnyDatabase, dbAdminAnyDatabase, userAdminAnyDatabase, clusterAdmin, restore und backup.

Alle Aktionen von readWriteAnyDatabase, dbAdminAnyDatabase, userAdminAnyDatabase, clusterAdmin, restore und backup.

Database administrator
Rollenname Description Aktionen
dbAdmin Gewährt einem Benutzer die Möglichkeit, administrative Aufgaben für die angegebene Datenbank auszuführen.

bypassDocumentValidation

collMod

collStats

createCollection

createIndex

dropCollection

dropDatabase

dropIndex

dbStats

find

killCursors

listIndexes

listCollections

modifyChangeStreams

dbOwner Gewährt einem Benutzer die Möglichkeit, alle administrativen Aufgaben für die angegebenen Datenbank auszuführen, indem die Rollen dbAdmin und readWrite kombiniert werden.

Alle Aktionen von dbAdmin und readWrite.

Cluster administrator
Name der Rolle Description Aktionen
clusterAdmin Gewährt einem Benutzer den größtmöglichen Zugriff auf die Cluster-Verwaltung durch Kombination der Rollen clusterManager, clusterMonitor und hostManager.

Alle Aktionen von clusterManager, clusterMonitor und hostManager.

listChangeStreams

dropDatabase

modifyChangeStreams

clusterManager Gewährt einem Benutzer die Möglichkeit, Verwaltungs- und Überwachungsaktionen für den angegebenen Cluster durchzuführen.

listChangeStreams

listSessions

modifyChangeStreams

replSetGetConfig

clusterMonitor Gewährt einem Benutzer die Möglichkeit, schreibgeschützten Zugriff auf Überwachungstools zu haben.

collStats

dbStats

find

getParameter

hostInfo

indexStats

killCursors

listChangeStreams

listCollections

listDatabases

listIndexes

listSessions

replSetGetConfig

serverStatus

top

hostManager Gewährt einem Benutzer die Möglichkeit, Server zu überwachen und zu verwalten.

auditConfigure

killCursors

killAnyCursor

killAnySession

killop

Backup administrator
Rollenname Description Aktionen
backup Gewährt einem Benutzer den erforderlichen Zugriff zum Sichern von Daten.

getParameter

insert

find

listChangeStreams

listCollections

listDatabases

listIndexes

update

restore Gewährt einem Benutzer den erforderlichen Zugriff zum Wiederherstellen von Daten.

bypassDocumentValidation

changeCustomData

changePassword

collMod

createCollection

createIndex

createUser

dropCollection

dropRole

dropUser

getParameter

grantRole

find

insert

listCollections

modifyChangeStreams

revokeRole

remove

viewRole

viewUser

update