sql >> Database teknologi >  >> NoSQL >> MongoDB

Hvordan finder man ud af, om Mongodb kører i auth-tilstand i shell-script?

Hvis du bare vil teste, om du kan oprette forbindelse til en MongoDB-server uden godkendelse via bash , kan du bruge et script, der ligner følgende:

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

Eksempel output:

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

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

Den eneste parameter for dette script er en valgfri MongoDB-adresse at oprette forbindelse til (host:port/dbname); mongo shell bruger som standard localhost:27017/test .

Scriptet foretager en simpel kontrol af, om brugere kan opføres uden tilladelse.

Hvis godkendelse er korrekt aktiveret, vil db.getUsers() kommandoen skulle returnere en fejl som:

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

Bemærk:Localhost-undtagelse

Som standard (som ved MongoDB 3.0) er der en localhost exception der giver dig mulighed for at oprette en første brugeradministrator til en implementering ved at oprette forbindelse via localhost . Når mindst én bruger er blevet tilføjet, deaktiveres localhost-undtagelsen automatisk.

Hvis du vil kontrollere den fulde sikkerhed af din implementering, er det bestemt værd at gennemgå MongoDB Sikkerhedstjekliste .




  1. Hvordan skjuler man _id fra aggregation?

  2. MongoDB advarsler om udfasning ved brug af Mongoose

  3. .NET Core injicerer singleton-tjeneste i en anden singleton-tjeneste

  4. Oprettelse af en formular til redigering af indlejrede dokumenter med MongoMapper