sql >> データベース >  >> NoSQL >> MongoDB

MongoDB3.xでのデフォルトとしてのMongoDB-CR認証の構成

    MongoDB 3.xで作成されたすべてのユーザーは、MongoDB-CRを期待するツールとの下位互換性を破るSCRAM-SHA1で作成されます。 RobomongoやMongoVUEなど、SCRAM-SHA1をサポートするためにまだ更新されていないツールとドライバーの一覧があります。

    場合によっては、新しいバージョンのドライバー/ ORMが利用可能であっても、互換性の問題のためにドライバーをアップグレードする準備ができていない可能性があります。

    MongoDBは、次の2つの認証方法をサポートしています。

    1. MongoDB- CR(チャレンジレスポンス)
      パスワードでユーザーを認証するメカニズム。 2.6.xまでのデフォルトの認証メカニズム。詳細については、ドキュメントを参照してください。
    2. SCRAM-SHA1
      これは、パスワードを使用してユーザーを認証するためのチャレンジレスポンスメカニズムのIETF標準です。これは、より新しく、より安全なシステムです。 MongoDB-CRとの下位互換性はありません。詳細については、ドキュメントを参照してください。

    MongoDB CRは、レガシー認証システムです。 MongoDB 3.Xは、デフォルトのユーザー認証システムをSCRAM-SHA1に切り替えました。したがって、システムで作成された新しいユーザーはすべてSCRAM-SHA1ユーザーです。 SCRAM-SHA1には下位互換性がないため、MONGODB-CRメカニズムを使用するすべてのユーザーとの認証が切断されます。

    ただし、MongoDB3.xで利用可能な新しいWiredTigerストレージエンジンを使用することをお勧めします。レプリカセットを実行していると仮定して、MONGODB-CRをMongoDB3.xのデフォルトの認証メカニズムとして構成する手順は次のとおりです。

    1. 3.xMongoDBクラスターを作成します。
    2. プライマリ以外のレプリカセットのすべてのノードを停止します。
    3. プライマリで認証を無効にして、ノードを再起動します。これを行うには、MongoDB confファイルの次のエントリをコメントアウトし、サーバーを再起動します。
      #security:
      #  authorization: enabled
      #  keyFile: /var/lib/mongo/rskey
      #replication:
      #  replSetName: RS-rsname-0
      
    4. プライマリに接続してスキーマバージョンを変更します:
      use admin;
      var schema = db.system.version.findOne({"_id" : "authSchema"});
      schema.currentVersion = 3;
      db.system.version.save(schema)
      
    5. 上記の手順3でmongodb.confファイルへの変更を元に戻し、MongoDBを再起動します。
    6. レプリカセットの他のノードでMongoDBを再起動し、レプリカセットが正常であることを確認します。これが完了すると、システムで作成されるすべてのユーザーがMongoDB-CRユーザーになります。これを検証するには、次のコマンドを実行します。
      db.system.users.find().pretty();
      

    ただし、これは一時的な回避策にすぎないことに注意してください。より安全で長期的な修正は、SCRAM-SHA1モデルを使用するようにMongoDBサーバーをアップグレードすることです。アップグレードの準備ができたら、次のスクリプトを実行して、ユーザーのスキーマバージョンをSCRAM-SHA1にアップグレードします。

    db.getSiblingDB("admin").runCommand({authSchemaUpgrade});
    


    1. HDFSチュートリアル–初心者向けのHDFSの完全な紹介

    2. 'MongoDB3.0でソケットファイルのリンクを解除できませんでしたエラー

    3. なぜMongoDBはそれほど多くのスペースを占めるのですか?

    4. mongodb集計で文字列の配列を返す方法