sql >> Base de Datos >  >> NoSQL >> MongoDB

¿Cómo saber si Mongodb se está ejecutando en modo de autenticación en el script de shell?

Si solo desea probar si puede conectarse a un servidor MongoDB sin autenticación a través de bash , puede usar un script similar al siguiente:

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

Salida de ejemplo:

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

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

El único parámetro para este script es una dirección MongoDB opcional para conectarse (host:puerto/dbname); el mongo shell usa por defecto localhost:27017/test .

El script comprueba de forma sencilla si los usuarios pueden aparecer en la lista sin permiso.

Si la autenticación está habilitada correctamente, db.getUsers() el comando debería devolver un error como:

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

Nota:Excepción de host local

Por defecto (como en MongoDB 3.0) hay una localhost exception que te permite crear un primer administrador de usuarios para una implementación conectándose a través de localhost . Una vez que se ha agregado al menos un usuario, la excepción localhost se deshabilita automáticamente.

Si desea verificar la seguridad total de su implementación, definitivamente vale la pena revisar el MongoDB Lista de comprobación de seguridad .