MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Ein Überblick über die MongoDB-Benutzerverwaltung

Die Datenbankbenutzerverwaltung ist ein besonders wichtiger Teil der Datensicherheit, da wir verstehen müssen, wer auf die Datenbank zugreift, und die Zugriffsrechte jedes Benutzers festlegen müssen. Wenn eine Datenbank keine ordnungsgemäße Benutzerverwaltung hat, wird der Benutzerzugriff mit der Zeit sehr chaotisch und schwierig zu warten.

MongoDB ist eine NoSQL-Datenbank und ein Dokumentenspeicher. Die Anwendung des RBAC-Konzepts (Role Based Access Control) ist der Schlüssel zur Implementierung einer ordnungsgemäßen Benutzerverwaltung zur Verwaltung von Benutzeranmeldeinformationen.

Was ist rollenbasierte Zugriffskontrolle (RBAC)?

RBAC ist ein Ansatz, der das System nur auf autorisierte Benutzer beschränkt. In einer Organisation werden Rollen für verschiedene Jobfunktionen erstellt, in der Datenbank erstellen wir dann die Zugriffsrechte, um einige Operationen auszuführen, die einer bestimmten Rolle zugeordnet sind.

Mitarbeitern (oder anderen Systembenutzern) werden bestimmte Rollen und durch sie Berechtigungen zur Ausführung von Computersystemfunktionen zugewiesen. Benutzer erhalten Berechtigungen nicht direkt, sondern nur über ihre Rolle (oder Rollen). Die Verwaltung individueller Benutzerrechte wird zu einer Frage der einfachen Platzierung der entsprechenden Rolle im Konto des Benutzers; dies vereinfacht allgemeine Vorgänge (wie das Hinzufügen von Benutzern oder das Ändern von Benutzerabteilungen).

Drei Hauptregeln werden für RBAC festgelegt:

  • Rollenzuweisung :Ein Betreff kann nur Berechtigungen ausführen, wenn der Betreff ausgewählt oder ihm eine Rolle zugewiesen wurde.
  • Die Rolle der Autorisierung :Die aktive Rolle eines Subjekts muss für das Subjekt genehmigt werden. Mit der obigen Regel 1 stellt diese Regel sicher, dass Benutzer Rollen nur für diejenigen übernehmen können, die autorisiert sind.
  • Berechtigung Autorisierung :Ein Subjekt kann Genehmigungen nur ausführen, wenn die Genehmigung für die aktive Rolle des Subjekts autorisiert ist. Mit den Regeln 1 und 2 stellt diese Regel sicher, dass Benutzer Berechtigungen nur für autorisierte Personen ausüben können.

Dieser Blog gibt einen kurzen Überblick über die rollenbasierte Zugriffskontrolle in der MongoDB-Datenbank.

MongoDB-Benutzerrollen

MongoDB hat mehrere Arten von Rollen in der Datenbank, das sind...

Integrierte Rollen

Bietet Zugriff auf Daten und Aktionen für MongoDB durch rollenbasierte Autorisierung und verfügt über integrierte Rollen, die mehrere Zugriffsebenen in der Datenbank bieten.

Rolle gibt mehrere Privilegien, um etwas mit der erstellten Ressource zu tun. In MongoDB integrierte Rollen haben mehrere Kategorien:

  • Benutzerdatenbank :Rollen Datenbankbenutzer haben eine Rolle, um Daten in systemfremden Sammlungen zu manipulieren. Beispiele für Benutzerdatenbankrollen sind:read, readWrite.
  • Datenbankverwaltung :Rollen Datenbankverwaltung befasst sich mit der administrativen Verwaltung von Datenbanken wie Benutzerverwaltung, Schema und darin enthaltenen Objekten.
  • Beispiele für Datenbankverwaltungsrollen sind:dbAdmin, userAdmin, dbOwner.
  • Clusterverwaltung :Die Rolle der Clusterverwaltung besteht darin, das gesamte MongoDB-System zu verwalten, einschließlich seiner Replicasets und Shards. Beispiele für Cluster-Administrationsrollen sind:clusterAdmin, clusterManager.
  • Sicherung und Wiederherstellung :Diese Rolle ist spezifisch für Funktionen im Zusammenhang mit der Datenbanksicherung in MongoDB. Beispiele für Rollen sind:Backup, Restore.
  • Alle Datenbankrollen :Rollen befinden sich im Datenbankadministrator und haben Zugriff auf alle Datenbanken außer local und config. Beispiele sind:readAnyDatabase, readWriteAnyDatabase, userAdminAnyDatabase.
  • Superuser :Roles hat die Fähigkeit, jedem Benutzer Zugriff auf alle Berechtigungen in allen Datenbanken zu gewähren. Beispiel für diese Rolle:root

Benutzerdefinierte Rollen

Zusätzlich zu den integrierten Rollen können wir unsere eigenen Rollen nach unseren Bedürfnissen erstellen und welche Berechtigungen wir diesen Rollen geben. Um Rollen zu erstellen, können Sie den Funktionsbefehl db.createRole () verwenden. Neben der Möglichkeit, Rollen zu erstellen, gibt es mehrere andere Funktionen, um vorhandene Rollen zu verwalten, wie z /P>

Privilegienaktionen in MongoDB

Berechtigungsaktionen in MongoDB sind Aktionen, die von einem Benutzer an einer Ressource ausgeführt werden können. MongoDB hat mehrere Aktionskategorien, nämlich:

  • Datenbankverwaltungsaktionen, Aktionen im Zusammenhang mit Befehlen zur Datenbankverwaltung wie changePassword-, createCollection-, createIndex-Aktionen.
  • Abfrage- und Schreibaktionen, Aktionen im Zusammenhang mit der Ausführung von Datenmanipulationen in einer Sammlung. In der Einfügeaktion beispielsweise ist der Befehl, der in dieser Aktion ausgeführt werden kann, der Einfügebefehl, der in Dokumente einfügen kann.
  • Bereitstellungsverwaltungsaktionen, Aktionen in Bezug auf Änderungen in der Datenbankkonfiguration. Einige Aktionen, die in die Kategorie Bereitstellungsverwaltung fallen, sind cpuProfiler, storageDetails, killOp.
  • Replikationsaktionen, Aktionen in Bezug auf die Ausführung von Datenbankreplikationsressourcen wie replSetConfigure, replSetHeartbeat.
  • Serververwaltungsaktionen, Aktionen im Zusammenhang mit Befehlen von Serververwaltungsressourcen auf mongoDB, wie z. B. logrotate-Aktionen, die zum Rotieren von Protokolldatenbanken auf Betriebssystemebene verwendet werden.
  • Sharding-Aktionen, Aktionen im Zusammenhang mit Befehlen von Datenbank-Sharding-Datenbanken wie addShard zum Hinzufügen neuer Shard-Knoten.
  • Sitzungsaktionen, Aktionen im Zusammenhang mit Ressourcensitzungen in einer Datenbank wie listSessions, killAnySession.
  • Diagnoseaktionen, Aktionen im Zusammenhang mit der Diagnose von Ressourcen wie dbStats, um die neuesten Bedingungen in der Datenbank herauszufinden.
  • Free Monitoring Actions, Aktionen im Zusammenhang mit der Überwachung in der Datenbank.

MongoDB-Benutzer und -Rollen verwalten

Sie können einen Benutzer erstellen und ihn dann integrierten Rollen zuweisen, zum Beispiel wie folgt:

db.createUser( {

user: "admin",

pwd: "thisIspasswordforAdmin",

roles: [ { role: "root", db: "admin" } ]

} );

Im obigen Skript bedeutet dies, dass der Admin-Benutzer mit einem Passwort erstellt wird, das mit eingebauten Root-Rollen definiert wurde, wobei die Rolle in der Superuser-Kategorie enthalten ist.

Außerdem können Sie einem Benutzer mehr als eine Rolle zuweisen, hier ein Beispiel:

db.createUser(

{user:'businessintelligence', 

pwd:'BIpassw0rd', 

roles:[{'role':'read', 'db':'oltp'}, { 'role':'readWrite', 'db':'olapdb'}]

});

Business-Intelligence-Benutzer haben 2 Rollen, zuerst die Leserollen in der oltp-Datenbank und die Lese-/Schreibrollen in der olapdb-Datenbank.

Benutzerdefinierte Rollen können mit dem Befehl db.createRole () erstellt werden. Sie müssen den Zweck der Erstellung der Rolle bestimmen, damit Sie bestimmen können, welche Aktionen in dieser Rolle enthalten sein werden. Das Folgende ist ein Beispiel für das Erstellen einer Rolle zum Überwachen der Mongodb-Datenbank:

use admin

db.createRole(

   {

     role: "RoleMonitoring",

     privileges: [

       { resource: { cluster: true }, actions: [ "serverStatus" ] }

     ],

     roles: []

   }

)

Dann können wir die benutzerdefinierte Rolle dem Benutzer zuweisen, den wir erstellen werden, können den folgenden Befehl verwenden:

db.createUser( {

user: "monuser",

pwd: "thisIspasswordforMonitoring",

roles: [ { role: "RoleMonitoring", db: "admin" } ]

} );

Um die Rolle einem bestehenden Benutzer zuzuweisen, können Sie den folgenden Befehl verwenden:

db.grantRolesToUser(

    "existingmonuser",

    [

      { role: "RoleMonitoring", db: "admin" }

    ]

)

Um einem bestehenden Benutzer eine Rolle zu entziehen, können Sie den folgenden Befehl verwenden:

db.revokeRolesFromUser(

    "oldmonguser",

    [

      { role: "RoleMonitoring", db: "admin" }

    ]

)

Durch die Verwendung von benutzerdefinierten Rollen können wir Rollen erstellen, wie wir es wünschen, entsprechend den Aktionen, die wir für diese Rollen ausführen, wie z. B. Rollen, um Benutzer einzuschränken, dass sie nur Zeilen in bestimmten Datenbanken löschen können.

Fazit

Die Anwendung von Zugriffsrechten kann die Sicherheit verbessern. Die Zuordnung von Rollen und Benutzern in der Datenbank erleichtert Ihnen die Verwaltung des Benutzerzugriffs.

Stellen Sie sicher, dass alle diese Informationen zu Rollen und Rechten ordnungsgemäß dokumentiert sind, mit eingeschränktem Zugriff auf das Dokument. Dies hilft Ihnen, die Informationen an andere DBA- oder Supportmitarbeiter weiterzugeben, und ist praktisch für Audits und Fehlerbehebung.