2016-12-02 2 views
0

Ich habe ein Node JS-Programm, das Mongo DB als meine dbs verwendet. Jetzt ... können alle ohne Probleme auf die Mongo-Shell zugreifen.Mongodb Authentifizierung Shell/Konsole

Soll das so sein? Ich möchte die Mongo-Shell von anderen Personen fernhalten, d. H. Sie müssen sich authentifizieren, bevor Sie die Shell verwenden. Der Grund dafür ist, dass ich nicht möchte, dass Benutzer Tabellen in der Datenbank löschen und Dokumente über die Konsole einfügen/ändern.

Gibt es eine Möglichkeit, dies zu tun? Ich habe mir https://docs.mongodb.com/manual/security/ angesehen, aber ich bin mir nicht sicher, wie ich das in meinem Node Js-Programm implementiere (das Passwort geheim halten).

Jede Hilfe wäre willkommen. Dank

Antwort

2

Einige Lösungen:

  • auf Ihre db Beschränken Sie den Zugriff auf nur die benötigten IP-Adressen. Wenn sich Ihre App und Ihre Datenbank auf demselben Computer befinden, wäre das nur 127.0.0.1 + vielleicht Ihr PC, sodass Sie Abfragen in einer GUI ausführen können.

  • erzwingen Authentifizierung wie in this link, mit einem starken Passwort. Um das Passwort 'geheim' in Ihrem Node-Programm zu behalten, das ich als "nicht fest codiert" verstehe, machen Sie es zu einer env-Variablen und geben Sie es zur Laufzeit an den Knoten oder schreiben Sie es in eine Datei, die nicht in Ihrem Repo (.gitignore funktioniert auch).

Mit einem gültigen Benutzer/Passwort hier, wie Knoten MongoDB zu authentifizieren:

A mongodb Adresse hat 7 Komponenten:

protocol:"mongodb://", 
    host:"localhost", 
    user: "user", 
    password : "password", 
    options: "?authMechanism=MONGODB-CR", 
    port:"27017", 
    db:"db_name" 

die alle zusammen einen String geben wie:

mongodb://user:[email protected]:27017/db_name?authMechanism=MONGODB-CR,

Das sollte genug sein für Knoten zum Herstellen einer Verbindung mit dem nativen Mongo-Treiber.

Und in der Schale zu authentifizieren:

Verwendung db_name

db.auth ("user", "password")

oder direkt am Anschluss:

mongo -u "user" -p "password" --authenticationDatabase "db_name"

Verwandte Themen