定義
db.createUser(user, writeConcern)メソッドが実行されるデータベースに新しいユーザーを作成します。
db.createUser()は、ユーザーがデータベースに既に存在する場合、重複ユーザーエラーを返します。重要
mongosh メソッド
このページでは、
mongoshメソッドについて記載しています。ただし、データベースコマンドや Node.js などの言語固有のドライバーのドキュメントには該当しません。データベースコマンドについては、
createUserコマンドを参照してください。MongoDB API ドライバーについては、各言語の MongoDB ドライバー ドキュメントを参照してください。
db.createUser()メソッドの構文は次のとおりです。フィールドタイプ説明userドキュメント
作成するユーザーに関する認証およびアクセス情報を含むドキュメントを参照してください。
writeConcernドキュメント
任意。 操作の 書込み保証( write concern ) のレベル。 詳しくは、 書込み保証(write concern) の仕様を参照してください。
userドキュメントはユーザーを定義し、形式は以下のとおりです。Tip
passwordPrompt()メソッドを様々なユーザー認証管理メソッドやコマンドと組み合わせて使用すると、メソッドやコマンドの呼び出しでパスワードを直接指定する代わりに、パスワードの入力を求めるプロンプトが表示されます。ただし、以前のバージョンのmongoシェルと同様に、パスワードを直接指定することもできます。{ user: "<name>", pwd: passwordPrompt(), // Or "<cleartext password>" customData: { <any information> }, roles: [ { role: "<role>", db: "<database>" } | "<role>", ... ], authenticationRestrictions: [ { clientSource: ["<IP>" | "<CIDR range>", ...], serverAddress: ["<IP>" | "<CIDR range>", ...] }, ... ], mechanisms: [ "<SCRAM-SHA-1|SCRAM-SHA-256>", ... ], passwordDigestor: "<server|client>" } userドキュメントには、以下のフィールドがあります。フィールドタイプ説明userstring
新しいユーザーの名前。
pwdstring
ユーザーのパスワード。 データベースで を実行して、
db.createUser()MongoDBの外部に保存される認証情報を持つユーザーを作成する場合、pwdフィールドは必要ありません。$external値は以下のいずれかになります。
クリアテキスト文字列のユーザーのパスワード
passwordPrompt()で、ユーザーのパスワードの入力を求める
passwordPrompt()メソッドを様々なユーザー認証管理メソッドやコマンドと組み合わせて使用すると、メソッドやコマンドの呼び出しでパスワードを直接指定する代わりに、パスワードの入力を求めるプロンプトが表示されます。ただし、以前のバージョンのmongoシェルと同様に、パスワードを直接指定することもできます。customDataドキュメント
任意。任意の情報が含まれます。このフィールドは、データ管理者がこの特定のユーザーに関連付けたいデータを保存するために使用できます。たとえば、ユーザーの氏名や従業員 ID などがあります。
roles配列
ユーザーに付与されたロールです。空の配列
[]を指定すると、ロールのないユーザーも作成できます。配列
任意。作成されたユーザーにサーバーが強制する認証制限です。ユーザーによるサーバー接続が許可される、またはサーバーがユーザーを受け入れることができる IP アドレスと CIDR範囲のリストを指定します。
mechanisms配列
任意。SCRAM ユーザー資格情報を作成するための、特定の SCRAM メカニズムを指定します。
authenticationMechanismsが指定されている場合は、authenticationMechanismsのサブセットのみを指定できます。有効な値は次のとおりです。
"SCRAM-SHA-1"SHA-1ハッシュ関数を使用します。
"SCRAM-SHA-256"SHA-256ハッシュ関数を使用します。passwordDigestor は必ず
serverにします。
デフォルトは
SCRAM-SHA-1とSCRAM-SHA-256の両方です。passwordDigestorstring
任意。サーバーまたはクライアントがパスワードをダイジェスト化するかどうかを示します。
使用可能な値は次のとおりです。
"server"(デフォルト)- サーバーはクライアントからダイジェスト化されていないパスワードを受け取り、そのパスワードをダイジェスト化します。
"client"(SCRAM-SHA-256とは互換性がありません)- クライアントはパスワードをダイジェスト化し、ダイジェスト化されたパスワードをサーバーに渡します。
互換性
このメソッドは、次の環境でホストされている配置で使用できます。
重要
このコマンドは、 MongoDB Atlasクラスターではサポートされていません。 すべてのコマンドの Atlas サポートの詳細については、「 サポートされていないコマンド 」を参照してください。
MongoDB Enterprise: サブスクリプションベースの自己管理型 MongoDB バージョン
MongoDB Community: ソースが利用可能で、無料で使用できる自己管理型の MongoDB のバージョン
ロール
rolesフィールドでは、組み込みロールとユーザー定義ロールの両方を指定できます。
db.createUser()が実行されるのと同じデータベースに存在するロールを指定するには、ロールの名前を使用してロールを指定します。
"readWrite"
または、次のように、ドキュメントを使用してロールを指定することもできます。
{ role: "<role>", db: "<database>" }
別のデータベースに存在するロールを指定するには、 ドキュメントを使用してロールを指定します。
認証の制限
authenticationRestrictionsドキュメントには、次のフィールドのみを含めることができます。 authenticationRestrictionsドキュメントに認識されないフィールドが含まれている場合、サーバーはエラーをスローします。
フィールド名 | 値 | 説明 |
|---|---|---|
| IP アドレスおよび/またはCIDR範囲の配列 | 存在する場合、サーバーはユーザーを認証する際に、クライアントの IP アドレスが指定されたリストに含まれているか、リスト内の CIDR 範囲に属していることを確認します。 クライアントの IP アドレスが存在しない場合、サーバーはユーザーを認証しません。 |
| IP アドレスおよび/またはCIDR範囲の配列 | クライアントが接続できる IP アドレスまたは CIDR 範囲のリスト。 存在する場合、サーバーはクライアントの接続が指定されたリスト内の IP アドレス経由で受け入れられたことを確認します。 認識されない IP アドレス経由で接続が受け入れられた場合、サーバーはユーザーを認証しません。 |
重要
ユーザーが互換性のない認証制限を持つ複数のロールを継承した場合、そのユーザーは使用できなくなります。
たとえば、ユーザーが、 clientSourceフィールドが["198.51.100.0"]であるロールと、 clientSourceフィールドが["203.0.113.0"]である別のロールを継承した場合、サーバーはユーザーを認証できません。
MongoDB での認証の詳細については、「自己管理型配置での認証 」を参照してください。
db.createUser() メソッドは、createUser コマンドをラップします。
動作
ユーザー ID
MongoDB ではユーザーの作成時に自動的に一意のuserId が割り当てられます。
レプリカセット
レプリカセットで実行する場合、 db.createUser()はデフォルトで"majority"書込み保証を使用して実行されます。
暗号化
警告
デフォルトではdb.createUser() 、passwordPrompt() を使用している場合でも、 は指定されたすべてのデータをMongoDBインスタンスにクリアテキストで送信します。 TLS トランスポート暗号化を使用して、 によって送信されたパスワードを含む、クライアントとサーバー間の通信を保護します。 TLSdb.createUser() トランスポート暗号化を有効にする手順については、「 自己管理型配置の TLS/SSL 用に と を構成する 」を参照してください。mongodmongos
MongoDB では、クリアテキストのパスワードはストアされません。パスワードが脆弱になるのは、クライアントとサーバー間の転送時と、TLS 転送暗号化が有効になっていない場合のみです。
外部認証情報
たとえば Kerberos を使用する MongoDB Enterprise がインストールされている場合などは、$external データベースで作成されたユーザーの認証情報は、MongoDB の外部に保存される必要があります。
$external認証ユーザー(Kerberos、LDAP、または X.509 ユーザー)でクライアント セッションと因果整合性の保証を使用するには、ユーザー名を 10 k バイトより大きくすることはできません。
local Database
ローカル データベース上でユーザーを作成することはできません。
必要なアクセス権
データベースに新しいユーザーを作成するには、そのデータベース リソース上の
createUserアクション が必要です。
userAdminおよび userAdminAnyDatabase の組み込みロールが、それぞれのリソースでのcreateUser アクションおよび grantRole アクションを提供します。
例
以下の db.createUser() 操作により、products データベースに accountAdmin01 ユーザーが作成されます。
Tip
passwordPrompt() メソッドを様々なユーザー認証管理メソッドやコマンドと組み合わせて使用すると、メソッドやコマンドの呼び出しでパスワードを直接指定する代わりに、パスワードの入力を求めるプロンプトが表示されます。ただし、以前のバージョンの mongo シェルと同様に、パスワードを直接指定することもできます。
use products db.createUser( { user: "accountAdmin01", pwd: passwordPrompt(), // Or "<cleartext password>" customData: { employeeId: 12345 }, roles: [ { role: "clusterAdmin", db: "admin" }, { role: "readAnyDatabase", db: "admin" }, "readWrite"] }, { w: "majority" , wtimeout: 5000 } )
この操作により、accountAdmin01 に次のロールが付与されます。
adminデータベース上のclusterAdminロールとreadAnyDatabaseロールproductsデータベースのreadWriteロール
ロールのあるユーザーの作成
次の操作では、products データベース内に accountUser を作成し、このユーザーに readWrite ロールと dbAdmin ロールを付与します。
Tip
passwordPrompt() メソッドを様々なユーザー認証管理メソッドやコマンドと組み合わせて使用すると、メソッドやコマンドの呼び出しでパスワードを直接指定する代わりに、パスワードの入力を求めるプロンプトが表示されます。ただし、以前のバージョンの mongo シェルと同様に、パスワードを直接指定することもできます。
use products db.createUser( { user: "accountUser", pwd: passwordPrompt(), // Or "<cleartext password>" roles: [ "readWrite", "dbAdmin" ] } )
ロールのないユーザーの作成
次の操作では、 admin データベースに reportsUser という名前のユーザーが作成されますが、ロールはまだ割り当てられません。
Tip
passwordPrompt() メソッドを様々なユーザー認証管理メソッドやコマンドと組み合わせて使用すると、メソッドやコマンドの呼び出しでパスワードを直接指定する代わりに、パスワードの入力を求めるプロンプトが表示されます。ただし、以前のバージョンの mongo シェルと同様に、パスワードを直接指定することもできます。
use admin db.createUser( { user: "reportsUser", pwd: passwordPrompt(), // Or "<cleartext password>" roles: [ ] } )
ロールのある管理者ユーザーの作成
次の操作では、admin データベースに appAdmin という名前のユーザーが作成され、このユーザーに config データベースへの readWrite アクセス権が付与されます。これにより、このユーザーはバランサー設定など、シャーディングされたクラスターの一部の設定を変更することが出来ます。
Tip
passwordPrompt() メソッドを様々なユーザー認証管理メソッドやコマンドと組み合わせて使用すると、メソッドやコマンドの呼び出しでパスワードを直接指定する代わりに、パスワードの入力を求めるプロンプトが表示されます。ただし、以前のバージョンの mongo シェルと同様に、パスワードを直接指定することもできます。
use admin db.createUser( { user: "appAdmin", pwd: passwordPrompt(), // Or "<cleartext password>" roles: [ { role: "readWrite", db: "config" }, "clusterAdmin" ] } )
認証制限のあるユーザーの作成
次の操作により、 admin データベースに restricted という名前のユーザーが作成されます。このユーザーは、IP アドレス192.0.2.0 から IP アドレス198.51.100.0 に接続する場合にのみ認証が可能となります。
Tip
passwordPrompt() メソッドを様々なユーザー認証管理メソッドやコマンドと組み合わせて使用すると、メソッドやコマンドの呼び出しでパスワードを直接指定する代わりに、パスワードの入力を求めるプロンプトが表示されます。ただし、以前のバージョンの mongo シェルと同様に、パスワードを直接指定することもできます。
use admin db.createUser( { user: "restricted", pwd: passwordPrompt(), // Or "<cleartext password>" roles: [ { role: "readWrite", db: "reporting" } ], authenticationRestrictions: [ { clientSource: ["192.0.2.0"], serverAddress: ["198.51.100.0"] } ] } )
SCRAM-SHA-256 認証情報のみを使用してユーザーを作成する
注意
SCRAM-SHA-256を使用するには、 featureCompatibilityVersion を4.0 に設定する必要があります。featureCompatibilityVersion の詳細については、 Get FeatureCompatibilityVersion および setFeatureCompatibilityVersionを参照してください。
次の操作では、 SCRAM-SHA-256 資格情報のみを持つユーザーが作成されます。
Tip
passwordPrompt() メソッドを様々なユーザー認証管理メソッドやコマンドと組み合わせて使用すると、メソッドやコマンドの呼び出しでパスワードを直接指定する代わりに、パスワードの入力を求めるプロンプトが表示されます。ただし、以前のバージョンの mongo シェルと同様に、パスワードを直接指定することもできます。
use reporting db.createUser( { user: "reportUser256", pwd: passwordPrompt(), // Or "<cleartext password>" roles: [ { role: "readWrite", db: "reporting" } ], mechanisms: [ "SCRAM-SHA-256" ] } )
authenticationMechanisms パラメーターが設定されている場合は、 mechanisms フィールドにはauthenticationMechanismsパラメーターで指定された値のみを含めることができます。