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

Erste Schritte mit der MongoDB-Benutzerverwaltung

Eine der ersten Aufgaben, nachdem Sie Ihren MongoDB-Datenbankserver zum Laufen gebracht haben, besteht darin, Ihre Nutzer und Datenbanken zu konfigurieren. In diesem Beitrag gehen wir auf einige der gängigen Szenarien zum Erstellen und Konfigurieren von Benutzern in MongoDB ein. Die Benutzerverwaltung von MongoDB hat sich gegenüber den beiden vorherigen Versionen erheblich verbessert und ist jetzt ein leistungsfähiges und funktionales Benutzerverwaltungsmodell. Benutzern können verschiedene Rollen zugewiesen werden, und Rollen können mit den gewünschten Berechtigungen konfiguriert werden. Es gibt mehrere integrierte Nutzerrollen, die Sie verwenden können, oder Sie können Ihre eigenen benutzerdefinierten Rollen erstellen.

Die Beispiele in diesem Beitrag verwenden einen 2.6.4-Client und einen 2.6.4-Server. Am Benutzerverwaltungsmodell von 2.4 auf 2.6 wurden erhebliche Änderungen vorgenommen. Wenn Sie also einen 2.4-Client verwenden, funktionieren viele der Beispiele in diesem Beitrag nicht für Sie. Sie können die Version des yoMongoDBodb-Clients mit der folgenden Syntax überprüfen:

mongo --version

Hinzufügen eines Benutzers zu einer Datenbank

Der erste Schritt nach dem Erstellen Ihres Benutzers ist das Erstellen Ihrer Anwendungsdatenbank:

use applicationdb;

Nach dem Erstellen dieser Datenbank möchten wir den Benutzer erstellen, der von der Anwendung zum Schreiben in diese Datenbank verwendet wird. Wir möchten, dass dieser Benutzer Lese- und Schreibrechte für die Datenbank hat:

db.createUser({'user':'appuser', 'pwd':'', roles:['readWrite']});

Manchmal möchten wir auch Benutzer hinzufügen, die nur Lesezugriff auf die Datenbank haben. Beispielsweise möchten wir möglicherweise einen Analytics-Benutzer hinzufügen, der nur Lesezugriff auf die Datenbank hat:

db.createUser({'user':'analyticsuser', 'pwd':'', roles:['read']});

Jetzt, da die Benutzer erstellt sind, versuchen wir, uns als dieser Benutzer über die MongoDB-Konsole zu verbinden:

mongo -u 'appuser' -p /applicationdbMongoDB-Shell-Version:2.6.4Verbinden mit:/applicationdb>

Sie sollten sich erfolgreich verbunden haben! Beachten Sie, dass „/applicationdb“ am Ende der Syntax MongoDB anweist, den „appuser“ in der „applicationdb“-Datenbank zu authentifizieren.

Hinzufügen eines Benutzers zu mehreren Datenbanken

In vielen Szenarien müssen wir mehrere Datenbanken auf dem Server erstellen. In diesem Szenario müssen wir beispielsweise möglicherweise eine weitere Datenbank „analyticsdb“ erstellen, um die Ergebnisse der Analyse zu speichern. Der „analyticsuser“ benötigt jetzt „readonly“-Zugriff auf die „applicationdb“- und „readWrite“-Berechtigungen auf die „analyticsdb“.

Also, wie erreichen wir das? Sollten wir den „analyticsuser“ zu jeder Datenbank hinzufügen? Dies führt langfristig zu einem Management-Albtraum, da viele Benutzer und Datenbanken hinzugefügt werden. Glücklicherweise gibt es eine einfache Lösung. Wir können die Rollenzuweisungen für einen Benutzer zentralisieren und in einer einzigen Datenbank speichern. In diesem Szenario bevorzuge ich es, diese Zuweisungen in der Datenbank „admin“ zu speichern, da dies der Knotenpunkt der zentralen Verwaltung auf dem Server ist, aber Sie können sie auch in einer separaten Datenbank speichern:

use admindb.createUser({user:'analyticsuser', pwd:'', roles:[{'role':'read', 'db':'applicationdb'}, { 'role':' readWrite', 'db':'analyticsdb'}]});

Sobald es hinzugefügt wurde, können Sie „Benutzer anzeigen“ verwenden, um die Details Ihrer Benutzer anzuzeigen. So sieht meine Admin-Datenbank aus:

admin verwenden> Benutzer anzeigen{"_id" :"admin.admin","user" :"admin","db" :"admin","roles" :[{ "role" :"root"," db" :"admin"},{"role" :"restore","db" :"admin"}]}{"_id" :"admin.analyticsuser","user" :"analyticsuser","db" :"admin","roles" :[{"role" :"read","db" :"applicationdb"},{"role" :"readWrite","db" :'analyticsdb"}]}>

Jetzt, da unser Benutzer hinzugefügt wurde, versuchen wir, eine Verbindung über die Konsole herzustellen, um die Authentifizierung mithilfe der oben verwendeten Syntax zu überprüfen:

mongo -u 'analyticsuser' -p  /applicationdb

Die Authentifizierung schlägt jedoch fehl:

2014-10-06T23:11:42.616+0000 Error:18 { ok:0.0, errmsg:"auth failed", code:18 } at src/mongo/shell/db.js:1210exception:login failed 

Der Grund dafür ist, dass der „analyticsuser“ in der „admin“-Datenbank und nicht in der „applicationdb“ definiert ist. Um dies anzugeben, verwenden Sie den Parameter „–authenticationDatabase“.

mongo -u 'analyticsuser' -p  /applicationdb  --authenticationDatabase 'admin'

Diesmal gelingt die Anmeldung:

MongoDB-Shell-Version:2.6.4Verbinden mit:/applicationdb

Um die verschiedenen anderen in MongoDB verfügbaren integrierten Rollen besser zu verstehen, können Sie sich auf die MongoDB-Dokumentation zu integrierten Rollen beziehen. Bei weiteren Fragen erreichen Sie uns wie immer unter [email protected].