MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Comment savoir si Mongodb s'exécute en mode auth dans le script shell ?

Si vous voulez juste tester si vous pouvez vous connecter à un serveur MongoDB sans authentification via bash , vous pouvez utiliser un script semblable au suivant :

#!/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

Exemple de sortie :

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

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

Le seul paramètre pour ce script est une adresse MongoDB facultative à laquelle se connecter (host:port/dbname); le mongo le shell utilise par défaut localhost:27017/test .

Le script vérifie simplement si les utilisateurs peuvent être répertoriés sans autorisation.

Si auth est correctement activé, le db.getUsers() La commande doit renvoyer une erreur du type :

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

Remarque :Exception Localhost

Par défaut (comme dans MongoDB 3.0), il existe une localhost exception qui vous permet de créer un premier administrateur utilisateur pour un déploiement en se connectant via localhost . Une fois qu'au moins un utilisateur a été ajouté, l'exception localhost est automatiquement désactivée.

Si vous souhaitez vérifier la sécurité complète de votre déploiement, cela vaut vraiment la peine de consulter le MongoDB Liste de contrôle de sécurité .