bash
を介して認証なしでMongoDBサーバーに接続できるかどうかをテストしたいだけの場合 、次のようなスクリプトを使用できます:
#!/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
出力例:
$ ./isAuthEnabled.sh localhost:27017
mongod auth is ENABLED
$ ./isAuthEnabled.sh localhost:27777
mongod auth is NOT enabled
このスクリプトの唯一のパラメーターは、接続するオプションのMongoDBアドレス(host:port / dbname)です。 mongo
シェルのデフォルトはlocalhost:27017/test
を使用します 。
このスクリプトは、ユーザーが許可なくリストされるかどうかを簡単にチェックします。
認証が適切に有効になっている場合、db.getUsers()
コマンドは次のようなエラーを返す必要があります:
"Error: not authorized on test to execute command { usersInfo: 1.0 }"
注:ローカルホストの例外
デフォルトでは(MongoDB 3.0の場合と同様に)、localhost exception
これにより、最初のユーザー管理者
を作成できます。 localhost
を介して接続することによるデプロイメントの場合 。少なくとも1人のユーザーが追加されると、ローカルホストの例外は自動的に無効になります。
デプロイメントの完全なセキュリティを確認したい場合は、MongoDBを確認する価値があります。セキュリティチェックリスト 。