自己管理型配置のユーザー
MongoDB でクライアントを認証するには、対応するユーザーを MongoDB に追加する必要があります。
ユーザー管理
mongosh
を使用して db.createUser()
メソッドでユーザーを追加できます。最初に作成するユーザーには、他のユーザーを作成する権限が必要です。userAdmin
または userAdminAnyDatabase
ロールはどちらも、他のユーザーを作成する権限を付与します。
ユーザーの作成時に、ユーザーにロールを割り当てることで権限を付与できます。 既存のユーザーをアップデートして、ロールの付与または取り消し、パスワードの更新を行うことができます。 すべてのユーザーマネジメント方法についてはユーザーマネジメント を参照してください。
ユーザーは、ユーザー名と関連付けられた認証データベースによって一意に識別されます。MongoDB は、ユーザーの作成時に、そのユーザーを一意の userId
に関連付けます。
LDAP マネージド ユーザー
LDAP サーバー上で作成されたLDAP マネージド ユーザーには、system.users コレクション内に関連付けられたドキュメントがないため、userId
フィールドは関連付けられていません。
認証データベース
ユーザーを追加すると、特定のデータベースにユーザーが作成されます。ユーザーを作成したデータベースが、そのユーザーの認証データベースになります。
ただし、ユーザーの特権は認証データベースのみに限定されません。 そのため、ユーザーは複数の異なるデータベースにわたって特権を持つことができます。 ロールの詳細については、「自己管理型配置でのロールベースのアクセス制御 」を参照してください。
ユーザー名と認証データベースは、そのユーザーのユニークな識別子として機能します。MongoDB はユーザーの作成時に、そのユーザーをユニークな userId
に関連付けます。ただし、LDAP サーバー上で作成された LDAP マネージド ユーザーには system.users コレクション内に関連付けられたドキュメントがないため、userId
フィールドは関連付けられていません。
2 人のユーザーが同じ名前を持ち、異なるデータベースに作成されている場合、彼らは 2 人の別々のユーザーです。複数のデータベースに対する権限を持つ単一のユーザーを作成する場合は、該当するデータベースごとにロールを持つ単一のユーザーを作成します。
一元化されたユーザー データ
MongoDB で作成されたユーザーの場合、MongoDB は name
、password
、およびユーザーの authentication
database
を含むすべてのユーザー情報を、 admin
データベースの system.users コレクションに保存します。
このコレクションは直接変更しないでください。ユーザーを管理するには、指定されたユーザー マネジメント コマンドを使用します。
シャーディングされたクラスター ユーザー
シャーディングされたクラスターのユーザーを作成するには、mongos
インスタンスに接続してユーザーを追加します。mongos
インスタンスで作成されたユーザーとして認証するには、mongos
インスタンスを介して認証する必要があります。
シャーディングされたクラスターでは、MongoDB はユーザー構成データをコンフィギュレーションサーバーの admin
データベースに保存します。
シャード ローカル ユーザー
cleanupOrphaned
、compact
、rs.reconfig()
などの一部のメンテナンス操作では、シャーディングされたクラスター内の特定のシャードへの直接接続が必要です。これらの操作を実行するには、シャードに直接接続し、シャード ローカル管理ユーザーとして認証する必要があります。
シャード ローカル管理ユーザーを作成するには、シャードのプライマリに直接接続してユーザーを作成します。 シャード ローカル ユーザー管理者を作成する方法については、チュートリアルの「 キーファイル認証による自己管理型シャーディング クラスターの配置 」を参照してください。
MongoDB は、シャード ローカル ユーザーをシャード自体の admin
データベースに保存します。これらのシャード ローカル ユーザーは、mongos
を通じてシャーディングされたクラスターに追加されたユーザーとは独立しています。シャード ローカル ユーザーはシャードに対してローカルであり、mongos
からはアクセスできません。
シャードへの直接接続は、シャード固有のメンテナンスと構成、または対象を絞った分析ワークロードにのみ使用してください。一般に、クライアントは mongos
を介してシャーディングされたクラスターに接続する必要があります。