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

So erstellen Sie einen Benutzer und fügen eine Rolle in MongoDB hinzu

MongoDB ist eine plattformübergreifende, dokumentenorientierte Datenbank, die das Speichern und Abrufen von Daten schnell und einfach macht. Die Datenbank verwendet für die Dokumente eine JSON-ähnliche Struktur, die vor allem aus modernen Anwendungen bekannt ist.

MongoDB verwendet Sammlungen und Manuskripte, wobei Dokumente aus Schlüssel-Wert-Paaren bestehen, der grundlegenden Dateneinheit in MongoDB. Im Gegensatz dazu enthalten Sammlungen Funktionen und Dokumente, die relationalen Datenbanktabellen entsprechen.

Erstellen Sie einen neuen Benutzer in MongoDB

Um neue Benutzer zum System hinzuzufügen, bietet MongoDB eine interne Technik namens db.createUser(). Im Gegensatz zu herkömmlichen Datenbanksystemen sind MongoDB-Benutzer an eine lokale Datenbank gebunden, die als Authentifizierungsdatenbank bezeichnet wird. Sie sind also nicht global gebunden, wie herkömmliche SQL-Datenbanken.

Darüber hinaus dienen die Authentifizierungsdatenbank und der Name des Benutzers als eindeutige Kennung. Wenn also zwei Benutzer in verschiedenen Datenbanken erstellt werden, aber denselben Namen haben, werden sie als zwei separate Benutzer identifiziert. Wenn man also einen einzelnen Benutzer mit Berechtigungen für mehrere Datenbanken erstellen möchte, sollte man einem einzelnen Benutzer Rechte/Rollen für die entsprechende Datenbank gewähren, anstatt den Benutzer mehrfach in verschiedenen Datenbanken zu erstellen.

Beispiel:

db.createUser(

{       user: "Foss",

        pwd: "password",

         roles:[{role: "userAdminAnyDatabase" , db:"admin"}]})

Benutzerverwaltungsbefehle

Name/n Beschreibung
createUser Diese Methode erstellt einen neuen Benutzer.
dropAllUsersFromDatabase Löscht alle Benutzer aus einer Datenbank.
dropUser Gewährt einem Benutzer eine Aufgabe und ihre Privilegien.
grantRolesToUser Einem Benutzer werden eine Rolle und die zugehörigen Berechtigungen zugewiesen.
RolesFromUser widerrufen Entfernt die Rolle eines Benutzers.
updateUser Diese Methode wird verwendet, um die Daten eines Benutzers zu aktualisieren.
usersInfo Diese Methode gibt Informationen über die angegebenen Benutzer zurück.

Benutzer hinzufügen

Verwenden Sie beim Hinzufügen des Benutzers zu einer bestimmten Datenbank die Methode „db.createUser()“. Es ist wichtig zu beachten, dass das Hinzufügen von Benutzern mit Optionen viel einfacher ist als das Einfügen eines Benutzerdokuments in eine nicht-relationale Datenbank.

Beispiel:

use foss               // specify the DB

db.createUser(

  {

    user: "fosslinux",

    pwd: passwordPrompt(),  // or cleartext password if you wish

    roles: [

       { role: "read", db: "foss" },

       { role: "read", db: "articles" },

       { role: "read", db: "tutorials" },

       { role: "readWrite", db: "tutorialguides" }

    ]

  }

)

Nachdem Sie die MongoDB-Instanz im obigen Beispiel verbunden haben, können Sie sie an die Foss-DB anhängen, um den Befehl db.createUser() auszuführen. Die verwendete Datenbank fungiert als Authentifizierungsdatenbank des Benutzers.

Das Passwort und der Nutzername werden in dem Dokument bereitgestellt, das unseren Methodenaufruf als Schlüssel/Wert-Paare enthält. Die Verwendung von Rollen steuert den Zugriff auf Datenbanken. Ein Benutzer muss eine Rolle haben, um auf eine beliebige Datenbank zugreifen zu können, sogar auf seine eigene Authentifizierungsdatenbank. Außerdem erhält ein Benutzer mithilfe von Rollen Zugriff auf andere Datenbanken im System. Daher sind die Privilegien eines Benutzers nicht auf seine Authentifizierungsdatenbank beschränkt. Daher können Benutzer je nach Bedarf über verschiedene Berechtigungen für die vielen Datenbanken verfügen. Das Prinzip der geringsten Rechte ermöglicht es Benutzern, den Zugriffsbereich der Datenbank so klein wie möglich zu halten.‍

So erstellen Sie einen Administratorbenutzer in MongoDB

Das Erstellen eines Admin-Benutzers in MongoDB erfolgt mit der Methode db.createUser(), mit der Sie einen Benutzer erstellen können. Nach dem Erstellen eines Benutzers müssen Sie jedoch Administratorrollen zuweisen. Diese Rollen geben dem Benutzer Administratorrechte.

Erstellen Sie einen Benutzer für eine einzelne Datenbank in MongoDB

Wenn wir einen Benutzer erstellen möchten, der nur mit einer Datenbank arbeiten kann, können wir einen ähnlichen Befehl wie oben verwenden, aber wir müssen die Option „userAdmin“ nur einmal verwenden.

Beispiel:

db.createUser(

{        user: "Fosslinux",

         pwd: "password",

         roles:[{role: "userAdmin" , db:"Foss"}]})

Code-Aufschlüsselung:

  1. In erster Linie sollte man den zu erstellenden „Benutzernamen“ und das „Passwort“ angeben.
  2. Weisen Sie die Rolle für diesen Benutzer zu, der der Datenbankadministrator ist; dies wird der Rolle „user admin“ zugewiesen, da die Rolle dem Benutzer Administratorrechte nur für die in der Datenbank angegebene Datenbank gewährt
  3. Schließlich legt der DB-Parameter die Datenbank fest, auf der der Benutzer Administratorrechte haben soll.

Benutzer verwalten

Um Benutzer zu verwalten, muss man die Rollen verstehen, die definiert werden müssen, da MongoDB eine ganze Liste von Funktionen wie die Leserolle und die Lese-Schreib-Rolle hat. Der Befehl „Leserolle“ erlaubt nur lesenden Zugriff auf die Datenbanken. Die „Lese-Schreib-Rolle“ bietet Lese- und Schreibzugriff auf die Datenbank; Das bedeutet, dass der Benutzer die Befehle zum Aktualisieren, Einfügen und Löschen für die Sammlungen in dieser Datenbank ausführen kann.

Beispiel:

db.createUser(
{
            user: "Foss",

            pwd: "password",

            roles:[

            {
                        role: "read" , db:"Tutorials"},

    {
                        role: "readWrite" , db:"Guides"}

            }
                          ]
})

Das obige Beispiel zeigt, dass ein Benutzer namens Foss erstellt und ihm mehrere Rollen in mehreren DBs zugewiesen werden. Im gleichen Modell erhält Foss eine Nur-Lese-Berechtigung für die „Tutorials“-Datenbank und eine Lese-/Schreibberechtigung für die „Guides“-Datenbank.

Hinzufügen von Rollen zur MongoDB

Rollen gewähren Benutzern Zugriff auf MongoDB-Ressourcen. Darüber hinaus bietet MongoDB mehrere integrierte Rollen, mit denen Administratoren den Zugriff auf ein MongoDB-System steuern können. Wenn diese Rollen jedoch den gewünschten Satz von Berechtigungen nicht beschreiben können, können neue Rollen in einer bestimmten Datenbank erstellt werden. Mit Ausnahme von Funktionen, die in der Administratordatenbank erstellt wurden, kann eine Rolle nur Rechte enthalten, die für ihre Datenbank gelten, und solche, die von anderen Rollen geerbt wurden.

Eine in der Admin-Datenbank definierte Rolle kann Rechte enthalten, die für die Admin-Datenbank, andere Datenbanken oder die Cluster-Ressource gelten, und kann Rollen von anderen Datenbanken erben. Um eine neue Rolle einzurichten, verwenden Sie „db.createRole()“ und geben Sie das Rechte-Array und das geerbte Rollen-Array an.

MongoDB definiert Rollen eindeutig, indem es den Datenbanknamen mit dem Rollennamen kombiniert. Jede Rolle ist auf die von Ihnen erstellte Datenbank beschränkt, aber MongoDB speichert alle Rolleninformationen in der adminSystemRoles-Sammlung in der Admin-Datenbank. Beispielsweise müssen die Aktionen "kreative Rolle" und "Rollen gewähren" für die Datenbankressource sicherstellen, dass Rollen in der Datenbank erstellt und gewährt werden. Die grantRole gibt die Berechtigungen für die neuen Rollen und die zu erbenden Rollen an. Die Benutzer-AdminAnyDatabase und die integrierte Rollen-Benutzerverwaltung stellen die CreateRole- und Grant-Rollen-Aktionen für ihre jeweiligen Ressourcen bereit.

Um eine Rolle mit den angegebenen Authentifizierungseinschränkungen zu erstellen, muss man die Aktion AuthenticationRetricions auf die Datenbankressource setzen, die dann die Funktion erstellt.

Die Methode db.grantRole to User () akzeptiert die folgenden Argumente;

ein
Parameter Geben Sie Beschreibung
Benutzer Zeichenfolge Enthält den Namen des Benutzers, dem die Rollen zugewiesen werden sollen.
Rollen Array Umfasst eine Reihe zusätzlicher Rollen, die dem Benutzer gewährt werden.
Bedenken schreiben Dokument Es ist optional und zielt auf die Änderung des Befehls ab. Es nimmt auch die gleichen Felder mit dem Befehl get last error.

Der Parameter roles kann sowohl die benutzerdefinierten als auch die integrierten Funktionen spezifizieren, was erreicht werden kann, indem die Rolle mit ihrem Namen ausgewählt wird. Dies wird erreicht, indem eine Verbindung zum Mongod hergestellt wird (ein primärer Daemon-Prozess für das MongoDB-System, der Datenanforderungen verarbeitet, Hintergrundverwaltungsvorgänge durchführt und den Datenzugriff verwaltet). Alternativ die Mongos (die für die Herstellung einer Verbindung zwischen den Client-Apps und dem Sharded-Cluster verantwortlich sind) mit den im Abschnitt „Anforderungen“ angegebenen Rechten. Beispielsweise kann mein Benutzer admin, der in einer aktivierten Zugriffskontrolle erstellt wurde, Rollen in der Admin- und anderen Datenbanken erstellen.

Rollenverwaltungsbefehle

Name\s Beschreibung
createRole Erstellt eine Rolle und sagt, was sie kann.
dropRole Entfernt die vom Benutzer festgelegte Rolle.
dropAllRolesFromDatabase Entfernt alle Rollen, die Benutzer aus einer Datenbank eingerichtet haben.
grantPrivilegesToRole weist einer Rolle, die der Benutzer auswählt, Privilegien zu.
grantRolesToRole gibt an, von welchen Rollen eine benutzerdefinierte Rolle Berechtigungen erben kann.
invalidateUserCache Wenn Sie invalidateUserCache verwenden, wird der In-Memory-Cache mit Benutzerinformationen wie Anmeldeinformationen und Rollen geleert.
PrivilegesFromRole widerrufen entfernt die Privilegien von einer benutzerdefinierten Rolle, die sie hat.
RolesFromRole widerrufen entfernt die geerbten Rollen aus einer benutzerdefinierten Rolle, die Sie nicht möchten.
rolesInfo gibt Informationen über die gewünschte(n) Rolle(n) zurück.
updateRole Aktualisiert eine vom Benutzer eingerichtete Rolle.

Schlussfolgerung

Die MongoDB-Datenbank, die das einfache und schnelle Speichern und Abrufen von Daten ermöglicht, kann es einem ermöglichen, einen Benutzer mit dem Befehl „db.createUser()“ zu erstellen. Andererseits bietet der Befehl „AdminAnyDatabase“ Benutzern alle Berechtigungen für den Zugriff auf die Datenbank unter der Administratorrolle. Dieser Artikel ist noch einen Schritt weiter gegangen und hat gezeigt, wie man Rollen und Rechte zuweist. Wir hoffen, dass Sie es hilfreich finden. Wenn ja, vergessen Sie nicht, eine Bemerkung im Kommentarbereich unten zu hinterlassen.