createUser
定義
createUser
コマンドを実行するデータベースに新しいユーザーを作成します。 ユーザーが存在する場合、
createUser
コマンドは重複ユーザーエラーを返します。Tip
mongosh
では、このコマンドはdb.createUser()
ヘルパー メソッドを通じて実行することもできます。ヘルパー メソッドは
mongosh
ユーザーには便利ですが、データベースコマンドと同じレベルの情報は返されない可能性があります。 便宜上必要ない場合、または追加の戻りフィールドが必要な場合は、 データベースコマンドを使用します。
互換性
このコマンドは、次の環境でホストされている配置で使用できます。
MongoDB Atlas はクラウドでの MongoDB 配置のためのフルマネージド サービスです
重要
このコマンドは、M 0 、M 2 、M 5 、M 10 + クラスターではサポートされていません。 詳細については、「サポートされていないコマンド 」を参照してください。
MongoDB Enterprise: サブスクリプションベースの自己管理型 MongoDB バージョン
MongoDB Community: ソースが利用可能で、無料で使用できる自己管理型の MongoDB のバージョン
構文
このコマンドの構文は、次のとおりです。
Tip
メソッドやコマンドの呼び出しでパスワードを直接指定する代わりに、 passwordPrompt()
メソッドをさまざまなユーザー認証や管理のメソッドやコマンドと組み合わせて使用すると、パスワードの入力を求めることができます。 ただし、 mongo
shell の以前のバージョンと同様にパスワードを直接指定することもできます。
{ createUser: "<name>", pwd: passwordPrompt(), // Or "<cleartext password>" customData: { <any information> }, roles: [ { role: "<role>", db: "<database>" } | "<role>", ... ], writeConcern: { <write concern> }, authenticationRestrictions: [ { clientSource: [ "<IP|CIDR range>", ... ], serverAddress: [ "<IP|CIDR range>", ... ] }, ... ], mechanisms: [ "<scram-mechanism>", ... ], digestPassword: <boolean>, comment: <any> }
コマンドフィールド
コマンドには次のフィールドがあります:
フィールド | タイプ | 説明 |
createUser | string | 新しいユーザーの名前。 |
pwd | string | ユーザーのパスワード。 値は以下のいずれかになります。
メソッドやコマンドの呼び出しでパスワードを直接指定する代わりに、 |
customData | ドキュメント | 任意。任意の情報が含まれます。このフィールドは、データ管理者がこの特定のユーザーに関連付けたいデータを保存するために使用できます。たとえば、ユーザーの氏名や従業員 ID などがあります。 |
roles | 配列 |
|
digestPassword | ブール値 | 任意。サーバーまたはクライアントがパスワードをダイジェスト化するかどうかを示します。 true の場合、サーバーはクライアントからダイジェスト化されていないパスワードを受け取り、そのパスワードをダイジェスト化します。 false の場合、クライアントはパスワードをダイジェスト化し、ダイジェスト化されたパスワードをサーバーに渡します。 とは互換性がありません デフォルト値は |
writeConcern | ドキュメント | |
authenticationRestrictions | 配列 | 任意。作成されたユーザーにサーバーが強制する認証制限です。ユーザーによるサーバー接続が許可される、またはサーバーがユーザーを受け入れることができる IP アドレスと CIDR範囲のリストを指定します。 |
mechanisms | 配列 | 任意。SCRAM ユーザー資格情報を作成するための、特定の SCRAM メカニズムを指定します。 有効な値は次のとおりです。
featureCompatibilityVersion のデフォルトは featureCompatibilityVersion のデフォルトは |
digestPassword | ブール値 | 任意。サーバーまたはクライアントがパスワードをダイジェスト化するかどうかを示します。 true の場合、サーバーはクライアントからダイジェスト化されていないパスワードを受け取り、そのパスワードをダイジェスト化します。 false の場合、クライアントはパスワードをダイジェスト化し、ダイジェスト化されたパスワードをサーバーに渡します。 とは互換性がありません デフォルト値は |
comment | any | 任意。このコマンドに添付するユーザー指定のコメント。設定すると、このコメントは以下の場所にこのコマンドの記録と合わせて表示されます。
コメントには、有効な BSON 型(string, integer, object, array など)を使用できます。 |
ロール
roles
フィールドでは、組み込みロールとユーザー定義ロールの両方を指定できます。
createUser
が実行されるのと同じデータベースに存在するロールを指定するには、ロールの名前を使用してロールを指定します。
"readWrite"
または、次のように、ドキュメントを使用してロールを指定することもできます。
{ role: "<role>", db: "<database>" }
別のデータベースに存在するロールを指定するには、 ドキュメントを使用してロールを指定します。
認証の制限
バージョン 3.6 の新機能。
authenticationRestrictions
ドキュメントには、次のフィールドのみを含めることができます。 authenticationRestrictions
ドキュメントに認識されないフィールドが含まれている場合、サーバーはエラーをスローします。
フィールド名 | 値 | 説明 |
---|---|---|
clientSource | IP アドレスおよび/またはCIDR範囲の配列 | 存在する場合、サーバーはユーザーを認証する際に、クライアントの IP アドレスが指定されたリストに含まれているか、リスト内の CIDR 範囲に属していることを確認します。 クライアントの IP アドレスが存在しない場合、サーバーはユーザーを認証しません。 |
serverAddress | IP アドレスおよび/またはCIDR範囲の配列 | クライアントが接続できる IP アドレスまたは CIDR 範囲のリスト。 存在する場合、サーバーはクライアントの接続が指定されたリスト内の IP アドレス経由で受け入れられたことを確認します。 認識されない IP アドレス経由で接続が受け入れられた場合、サーバーはユーザーを認証しません。 |
重要
ユーザーが互換性のない認証制限を持つ複数のロールを継承した場合、そのユーザーは使用できなくなります。
たとえば、ユーザーが、 clientSource
フィールドが["198.51.100.0"]
であるロールと、 clientSource
フィールドが["203.0.113.0"]
である別のロールを継承した場合、サーバーはユーザーを認証できません。
MongoDB での認証の詳細については、「認証 」を参照してください。
動作
ユーザー ID
MongoDB ではユーザーの作成時に自動的に一意のuserId
が割り当てられます。
暗号化
警告
デフォルトでは、 を使用している場合でも、createUser
は指定されたすべてのデータを MongoDBpasswordPrompt()
インスタンスにクリアテキストで送信します。TLS トランスポート暗号化を使用して、 createUser
によって送信されたパスワードを含む、クライアントとサーバー間の通信を保護します。 TLS トランスポート暗号化を有効にする手順については、「 TLS/SSL 用にmongod
とmongos
を構成する 」を参照してください。
MongoDB では、クリアテキストのパスワードはストアされません。パスワードが脆弱になるのは、クライアントとサーバー間の転送時と、TLS 転送暗号化が有効になっていない場合のみです。
外部認証情報
たとえば Kerberos を使用する MongoDB Enterprise がインストールされている場合などは、$external
データベースで作成されたユーザーの認証情報は、MongoDB の外部に保存される必要があります。
$external
認証ユーザー(Kerberos、LDAP、または x.509 ユーザー)でクライアント セッションと因果整合性の保証を使用するには、ユーザー名を 10k バイトより大きくすることはできません。
local
Database
ローカル データベース上でユーザーを作成することはできません。
ユーザー名の制限
ユーザー名は 1 文字以上で、7 MB より大きくすることはできません。
必要なアクセス権
データベースに新しいユーザーを作成するには、そのデータベース リソース上の
createUser
アクション が必要です。
userAdmin
および userAdminAnyDatabase
の組み込みロールが、それぞれのリソースでのcreateUser
アクションおよび grantRole
アクションを提供します。
例
次のcreateUser
コマンドは、 products
データベースにユーザーaccountAdmin01
を作成します。 このコマンドは、accountAdmin01
clusterAdmin
readAnyDatabase
admin
に、 データベースで ロールと ロールを付与し、readWrite
products
データベースで ロールを付与します。
Tip
メソッドやコマンドの呼び出しでパスワードを直接指定する代わりに、 passwordPrompt()
メソッドをさまざまなユーザー認証や管理のメソッドやコマンドと組み合わせて使用すると、パスワードの入力を求めることができます。 ただし、 mongo
shell の以前のバージョンと同様にパスワードを直接指定することもできます。
db.getSiblingDB("products").runCommand( { createUser: "accountAdmin01", pwd: passwordPrompt(), customData: { employeeId: 12345 }, roles: [ { role: "clusterAdmin", db: "admin" }, { role: "readAnyDatabase", db: "admin" }, "readWrite" ], writeConcern: { w: "majority" , wtimeout: 5000 } } )