11

サーバーマシンで認証モードを実行しているmongodbインスタンスを実行しています。現在、mongodb インスタンスが実行されているかどうかを取得するためにシェル scipt を使用しています。mongodb が認証モードで実行されているか、非認証モードで実行されているかを確認するにはどうすればよいですか。

4

1 に答える 1

11

経由の認証なしで MongoDB サーバーに接続できるかどうかをテストするだけの場合はbash、次のようなスクリプトを使用できます。

#!/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 アドレス (ホスト:ポート/データベース名) です。mongoシェルはデフォルトで using を使用しlocalhost:27017/testます。

このスクリプトは、許可なくユーザーをリストできるかどうかについて簡単なチェックを行います。

認証が適切に有効になっている場合、db.getUsers()コマンドは次のようなエラーを返します。

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

注: ローカルホストの例外

デフォルトでは (MongoDB 3.0 と同様)、を介して接続することにより、展開用の最初のユーザー管理者localhost exceptionを作成できる があります。少なくとも 1 人のユーザーが追加されると、localhost 例外は自動的に無効になります。localhost

展開の完全なセキュリティを確認したい場合は、MongoDB セキュリティ チェックリストを確認する価値があります。

于 2015-08-17T03:44:44.623 に答える