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

Wie finde ich heraus, ob Mongodb im Auth-Modus im Shell-Skript läuft?

Wenn Sie nur testen möchten, ob Sie sich ohne Authentifizierung über bash mit einem MongoDB-Server verbinden können , können Sie ein Skript ähnlich dem folgenden verwenden:

#!/bin/bash

# Connect to MongoDB address (host:port/dbname) specified as first parameter
# If no address specified, `mongo` default will be localhost:27017/test
isAuth=`mongo --eval "db.getUsers()" $1 | grep "not auth"`

if [ -z "$isAuth" ] ;
then
   echo "mongod auth is NOT enabled"
   exit 1
else
   echo "mongod auth is ENABLED"
   exit 0
fi

Beispielausgabe:

$ ./isAuthEnabled.sh localhost:27017
mongod auth is ENABLED

$ ./isAuthEnabled.sh localhost:27777
mongod auth is NOT enabled

Der einzige Parameter für dieses Skript ist eine optionale MongoDB-Adresse, zu der eine Verbindung hergestellt werden soll (host:port/dbname); der mongo Shell verwendet standardmäßig localhost:27017/test .

Das Skript führt eine einfache Überprüfung durch, ob Benutzer ohne Erlaubnis aufgelistet werden können.

Wenn auth richtig aktiviert ist, wird db.getUsers() Befehl sollte einen Fehler zurückgeben wie:

  "Error: not authorized on test to execute command { usersInfo: 1.0 }"

Hinweis:Localhost-Ausnahme

Standardmäßig (wie bei MongoDB 3.0) gibt es eine localhost exception damit können Sie einen ersten Benutzeradministrator erstellen für eine Bereitstellung durch Verbindung über localhost . Sobald mindestens ein Benutzer hinzugefügt wurde, wird die Localhost-Ausnahme automatisch deaktiviert.

Wenn Sie die vollständige Sicherheit Ihrer Bereitstellung überprüfen möchten, lohnt es sich auf jeden Fall, die MongoDB zu lesen Sicherheitscheckliste .