MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Como descobrir se o Mongodb está sendo executado no modo de autenticação no script de shell?


Se você quiser apenas testar se pode se conectar a um servidor MongoDB sem autenticação via bash , você pode usar um script semelhante ao seguinte:
#!/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

Saída de exemplo:
$ ./isAuthEnabled.sh localhost:27017
mongod auth is ENABLED

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

O único parâmetro para este script é um endereço opcional do MongoDB para conectar (host:port/dbname); o mongo shell usa como padrão localhost:27017/test .

O script faz uma verificação simples se os usuários podem ser listados sem permissão.

Se a autenticação estiver habilitada corretamente, o db.getUsers() comando deve retornar um erro como:
  "Error: not authorized on test to execute command { usersInfo: 1.0 }"

Observação:Exceção de host local


Por padrão (como no MongoDB 3.0) há uma localhost exception que permite criar um primeiro administrador de usuário para uma implantação conectando-se via localhost . Depois que pelo menos um usuário for adicionado, a exceção localhost será desabilitada automaticamente.

Se você deseja verificar a segurança total de sua implantação, definitivamente vale a pena revisar o MongoDB Lista de verificação de segurança .