自己管理型配置のユーザー
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
データベースに保存します。
シャード ローカル ユーザー
compact
、または rs.reconfig()
などの一部のメンテナンス操作では、シャーディングされたクラスター内の特定のシャードへの直接接続が必要です。これらの操作を実行するには、シャードに直接接続し、シャード ローカル管理ユーザーとして認証する必要があります。
シャード ローカル管理ユーザーを作成するには、シャードのプライマリに直接接続してユーザーを作成します。 シャード ローカル ユーザー管理者を作成する方法については、チュートリアルの「 キーファイル認証による自己管理型シャーディング クラスターの配置 」を参照してください。
MongoDB は、シャード ローカル ユーザーをシャード自体の admin
データベースに保存します。これらのシャード ローカル ユーザーは、mongos
を通じてシャーディングされたクラスターに追加されたユーザーとは独立しています。シャード ローカル ユーザーはシャードに対してローカルであり、mongos
からはアクセスできません。
MongoDB 8.0以降では、 directShardOperations
ロールを使用して、シャードに対してコマンドを直接実行する必要があるメンテナンス操作を実行できます。
シャードへの直接接続は、シャード固有の保守と構成にのみ使用してください。一般に、クライアントは mongos
を介してシャーディングされたクラスターに接続する必要があります。
警告
directShardOperations
ロールを使用して コマンドを実行すると、クラスターが正しく動作しなくなり、データが破損する可能性があります。 directShardOperations
ロールは、メンテナンス目的で、または MongoDB サポートのガイダンスに必ず従う必要があります。 メンテナンス操作を実行したら、 directShardOperations
ロールの使用を停止します。