自己管理型配置でのユーザーの作成
項目一覧
アクセス制御を有効にすると、ユーザーは本人確認を求められます。ユーザーに ロールを 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 ドキュメントの「データベースユーザーの追加」を参照してください。
使用可能な 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 配置のユーザー管理、ロールの割り当て、カスタムロールの作成を行うには、「 自己管理型配置でユーザーとロールの管理 」を参照してください。