アクセス制御を有効にすると、ユーザーは本人確認を求められます。ユーザーに ロールを 1 つ以上付与する必要があります。ロールにより、ユーザーには MongoDB のリソースに対して特定の アクションを実行する権限が付与されます。
MongoDB システムの各アプリケーションとユーザーは、それぞれ別のユーザーにマッピングする必要があります。このアクセス分離の原則によって、アクセスの取り消しや継続的なユーザーのメンテナンスが容易になります。最小権限のシステムにするには、ユーザーに必要最小限の特権だけを付与してください。
このページのユーザー情報は、特に指定がない限り、次のすべての環境でホストされる自己管理型配置に適用されます。
MongoDB Enterprise: サブスクリプションベースの自己管理型 MongoDB バージョン
MongoDB Community: ソースが利用可能で、無料で使用できる自己管理型の MongoDB のバージョン
MongoDB Atlas との互換性
次の制限は、MongoDB Atlas でホストされている配置にのみ適用されます。 これらの制限のいずれかが組織にとって問題となる場合は、 Atlas サポートにお問い合わせください。
MongoDB Atlasクラスターでデータベースユーザーを追加、変更、または削除するには、 Atlas CLI 、 Atlas Administration API、 Atlas UI 、またはサポートされている 統合 を使用する必要があります。それ以外の場合、 MongoDB Atlas はユーザーによる変更をすべてロールバックします。 MongoDB Atlasでユーザーを追加するには、 MongoDB Atlasドキュメントの add-mongodb-users を参照してください。
使用可能な MongoDB Atlas の組み込みロールと特定の特権は、MongoDB コマンドのサブセットをサポートします。 詳細については、「 M 10 + クラスターでサポートされていないコマンド」を参照してください。
MongoDB Atlas は、MongoDB Atlas プロジェクトごとに最大 100 のデータベースユーザーをサポートします。1 つのプロジェクトで 100 を超えるデータベースユーザーが必要な場合は、Atlas サポートにお問い合わせください。
前提条件
ユーザーを作成するには、次のことを行う必要があります。
日常のユーザー作成を行うには、次の権限が必要です。
データベースに新しいユーザーを作成するには、そのデータベースリソースに対して
createUserアクションが必要です。
userAdminおよび userAdminAnyDatabase の組み込みロールが、それぞれのリソースでのcreateUser アクションおよび grantRole アクションを提供します。
手順
注意
次の手順では、 SCRAM認証を使用します。 その他の認証メカニズムの詳細については、「追加の例 」を参照してください。
自己管理型 MongoDB Enterprise や MongoDB Community 配置のデータベースユーザーを設定するには、次の手順に従います。
接続と認証
mongoshを使用して、プライマリmongodに接続するか、シャーディングされたクラスターでmongosに接続し、 ユーザー管理者 または必要な特権を持つユーザーとして認証します。
mongosh-u
<username>-p次のように、 、 、--authenticationDatabase <database> コマンドライン オプションを使用して を開始します。
mongosh --port 27017 --authenticationDatabase \ "admin" -u "myUserAdmin" -p
パスワードの入力を求められたら、入力します。
mongosh を使用して、次のデータベース配置に接続します。
mongosh --port 27017
mongoshで、認証データベース(この場合はadmin )に切り替え、 db.auth(<username>, <pwd>)メソッドを使用して認証します。
use admin db.auth("myUserAdmin", passwordPrompt()) // or cleartext password
Tip
passwordPrompt() メソッドではパスワードの入力が求められます。パスワードを文字列として直接指定することもできます。パスワードが画面に表示されたり、shell 履歴にパスワードが流出したりすることを避けるために、 passwordPrompt() メソッドを使用することをお勧めします。
パスワードの入力を求められたら、入力します。
配置用の追加ユーザー作成
注意
次の手順ではSCRAM認証を使用します。 その他の認証メカニズムの詳細については、「追加の例 」を参照してください。
ユーザー管理者として認証した後、db.createUser() メソッドを使用して追加のユーザーを作成します。任意の組み込みロールまたはユーザー定義ロールをユーザーに割り当てることができます。
以下の操作では、test データベースの readWrite ロールと reporting データベースの read ロールを持つユーザー myTester が test データベースに追加されます。
use test db.createUser( { user: "myTester", pwd: passwordPrompt(), // or cleartext password roles: [ { role: "readWrite", db: "test" }, { role: "read", db: "reporting" } ] } )
Tip
passwordPrompt() メソッドではパスワードの入力が求められます。パスワードを文字列として直接指定することもできます。パスワードが画面に表示されたり、shell 履歴にパスワードが流出したりすることを避けるために、 passwordPrompt() メソッドを使用することをお勧めします。
ユーザーを作成したデータベース(この例では test)がそのユーザーの認証データベースになります。ユーザーはこのデータベースで認証されますが、他のデータベースでもロールを持つことができます。ユーザーの認証データベースによって、ユーザーの特権は制限されません。
追加ユーザーを作成したら、mongosh を終了します。
インスタンスに接続し、次のように認証します: myTester
重要
同じmongoshセッション内でユーザーを切り替えることはできません。 別のユーザーとして認証とは、セッションが認証された両方のユーザーの特権を持つことを意味します。 ユーザーを終了して再起動するには、 mongoshを使用します。
myUserAdmin mongoshを終了した後、 myTesterとして再接続します。
mongosh-u
<username>-p次のように、 、 、--authenticationDatabase <database> コマンドライン オプションを使用して を開始します。
mongosh --port 27017 -u "myTester" \ --authenticationDatabase "test" -p
プロンプトが表示されたら、ユーザーのパスワードを入力します。
mongosh を使用して、次のデータベース配置に接続します。
mongosh --port 27017
mongoshで、認証データベース(この場合はadmin )に切り替え、 db.auth(<username>, <pwd>)メソッドを使用して認証します。
use test db.auth("myTester", passwordPrompt()) // or cleartext password
Tip
passwordPrompt() メソッドではパスワードの入力が求められます。パスワードを文字列として直接指定することもできます。パスワードが画面に表示されたり、shell 履歴にパスワードが流出したりすることを避けるために、 passwordPrompt() メソッドを使用することをお勧めします。
プロンプトが表示されたら、ユーザーのパスワードを入力します。
その他の例
ユーザー名とパスワードの認証
以下の操作では、指定された名前、パスワード、ロールを持つユーザーが reporting データベースに作成されます。
Tip
passwordPrompt() メソッドではパスワードの入力が求められます。パスワードを文字列として直接指定することもできます。パスワードが画面に表示されたり、shell 履歴にパスワードが流出したりすることを避けるために、 passwordPrompt() メソッドを使用することをお勧めします。
use reporting db.createUser( { user: "reportsUser", pwd: passwordPrompt(), // or cleartext password roles: [ { role: "read", db: "reporting" }, { role: "read", db: "products" }, { role: "read", db: "sales" }, { role: "readWrite", db: "accounts" } ] } )
Kerberos 認証
Kerberos などの外部認証メカニズムを使用して MongoDB に認証するユーザーは、mongos や mongod が認証のために外部ソースを参照できるように、$external データベースに作成する必要があります。
$external認証ユーザー(Kerberos、LDAP、または x.509 ユーザー)でクライアント セッションと因果整合性の保証を使用するには、ユーザー名を 10k バイトより大きくすることはできません。
Kerberos 認証の場合は、ユーザー名として Kerberos プリンシパルを追加する必要があります。パスワードを指定する必要はありません。
以下の操作では、records データベースへの読み取り専用アクセス権を持つ Kerberos プリンシパル reportingapp@EXAMPLE.NET を追加します。
use $external db.createUser( { user: "reportingapp@EXAMPLE.NET", roles: [ { role: "read", db: "records" } ] } )
Tip
MongoDB 配置の Kerberos 認証設定の詳細については、次のチュートリアルを参照してください。
LDAP 認証
LDAP などの外部認証メカニズムを使用して MongoDB に認証するユーザーは、mongos や mongod が認証のために外部ソースを参照できるように、$external データベースに作成する必要があります。
$external認証ユーザー(Kerberos、LDAP、または x.509 ユーザー)でクライアント セッションと因果整合性の保証を使用するには、ユーザー名を 10k バイトより大きくすることはできません。
LDAP 認証の場合は、ユーザー名を指定する必要があります。パスワードは LDAP サービスによって処理されるため、指定する必要はありません。
以下の操作では、records データベースへの読み取り専用アクセス権を持つ reporting ユーザーを追加します。
use $external db.createUser( { user: "reporting", roles: [ { role: "read", db: "records" } ] } )
Tip
MongoDB 配置の LDAP 認証設定の詳細については、次のチュートリアルを参照してください。
x.509 クライアント証明書認証
x.509 クライアント証明書認証などの外部認証メカニズムを使用して MongoDB に認証するユーザーは、mongos や mongod が認証のために外部ソースを参照できるように、$external データベースに作成する必要があります。
$external認証ユーザー(Kerberos、LDAP、または x.509 ユーザー)でクライアント セッションと因果整合性の保証を使用するには、ユーザー名を 10k バイトより大きくすることはできません。
x.509 クライアント証明書認証の場合、MongoDB ユーザーとしてクライアント証明書の subject の値を追加する必要があります。一意な x.509 クライアント証明書は、それぞれ 1 つの MongoDB ユーザーに対応します。パスワードを指定する必要はありません。
以下の操作では、クライアント証明書のサブジェクト CN=myName,OU=myOrgUnit,O=myOrg,L=myLocality,ST=myState,C=myCountry ユーザーを、records データベースへの読み取り専用アクセス権とともに追加します。
use $external db.createUser( { user: "CN=myName,OU=myOrgUnit,O=myOrg,L=myLocality,ST=myState,C=myCountry", roles: [ { role: "read", db: "records" } ] } )
Tip
MongoDB 配置の x.509 クライアント証明書認証設定の詳細については、次のチュートリアルを参照してください。
次のステップ
自己管理型 MongoDB Enterprise や MongoDB Community 配置のユーザー管理、ロールの割り当て、カスタムロールの作成を行うには、「 自己管理型配置でユーザーとロールの管理 」を参照してください。