Docs Menu
Docs Home
/
MongoDBマニュアル
/ / /

updateUser

項目一覧

  • 定義
  • 互換性
  • 構文
  • コマンドフィールド
  • 動作
  • 必要なアクセス権
updateUser

コマンドを実行するデータベース上のユーザーのプロファイルを更新します。 フィールドを更新すると、ユーザーの 配列と 配列の更新を含め、前のフィールドの値 が 完全に置き換えroles authenticationRestrictionsられます。

警告

roles配列を更新すると、前の配列の値が完全に置き換えられます。 ユーザーの既存のロールすべてを置き換えずにロールを追加または排除するには、 grantRolesToUserまたはrevokeRolesFromUserコマンドを使用します。

このコマンドは、次の環境でホストされている配置で使用できます。

  • MongoDB Atlas はクラウドでの MongoDB 配置のためのフルマネージド サービスです

重要

このコマンドは、M 0 、M 2 、M 5 、M 10 + クラスターではサポートされていません。 詳細については、「サポートされていないコマンド 」を参照してください。

  • MongoDB Enterprise: サブスクリプションベースの自己管理型 MongoDB バージョン

  • MongoDB Community: ソースが利用可能で、無料で使用できる自己管理型の MongoDB のバージョン

updateUserコマンドは、次の構文を使用します。 ユーザーを更新するには、 updateUserフィールドと少なくとも 1 つの他のフィールド( writeConcern以外)を指定する必要があります。

Tip

メソッドやコマンドの呼び出しでパスワードを直接指定する代わりに、 passwordPrompt()メソッドをさまざまなユーザー認証や管理のメソッドやコマンドと組み合わせて使用すると、パスワードの入力を求めることができます。 ただし、 mongo shell の以前のバージョンと同様にパスワードを直接指定することもできます。

{
updateUser: "<username>",
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-mechanism>", ... ],
digestPassword: <boolean>,
writeConcern: { <write concern> },
comment: <any>
}

このコマンドは、次のフィールドを使用します。

フィールド
タイプ
説明
updateUser
string
更新するユーザーの名前。
pwd
string

任意。ユーザーのパスワード。値は以下のいずれかになります。

  • クリアテキスト文字列のユーザーのパスワード

  • passwordPrompt() で、ユーザーのパスワードの入力を求める

    メソッドやコマンドの呼び出しでパスワードを直接指定する代わりに、 passwordPrompt()メソッドをさまざまなユーザー認証や管理のメソッドやコマンドと組み合わせて使用すると、パスワードの入力を求めることができます。 ただし、 mongo shell の以前のバージョンと同様にパスワードを直接指定することもできます。

customData
ドキュメント
任意。任意の情報が含まれます。
roles
配列
任意。ユーザーに付与されたロール。roles 配列を更新すると、前の配列の値は上書きされます。
writeConcern
ドキュメント
任意。 更新操作の書込み保証( write concern )のレベルです。 writeConcernドキュメントはgetLastErrorコマンドと同じフィールドを使用します。
authenticationRestrictions
配列
任意。サーバーがユーザーに強制する認証制限。ユーザーによるサーバー接続が許可される、またはサーバーがユーザーを受け入れることができる IP アドレスと CIDR 範囲のリストを指定します。
mechanisms
配列

任意。特定の SCRAM メカニズムまたはユーザー認証情報のメカニズムです。authenticationMechanisms が指定されている場合は、authenticationMechanisms のサブセットのみを指定できます。

パスワードなしで mechanisms フィールドを更新する場合、ユーザーの現在のメカニズムのサブセットのみを指定でき、指定されたメカニズムの既存のユーザー認証情報のみが保持されます。

メカニズムに併せてパスワードを更新すると、ユーザーの新しい認証情報セットが保存されます。

有効な値は次のとおりです。

  • "SCRAM-SHA-1" - SHA-1ハッシュ関数を使用します。

  • "SCRAM-SHA-256" - SHA-256ハッシュ関数を使用します。 - featureCompatibilityVersion を4.0に設定する必要があります。 - DigestPassword はtrueである必要があります。

digestPassword
ブール値

任意。サーバーまたはクライアントがパスワードをダイジェスト化するかどうかを示します。

true (デフォルト)の場合、サーバーはクライアントからダイジェスト化されていないパスワードを受け取り、そのパスワードをダイジェスト化します。

falseの場合、クライアントはパスワードをダイジェスト化し、ダイジェスト化されたパスワードをサーバーに渡します。 SCRAM-SHA-256と互換性がありません

comment
any

任意。このコマンドに添付するユーザー指定のコメント。設定すると、このコメントは以下の場所にこのコマンドの記録と合わせて表示されます。

コメントには、有効な BSON 型(string, integer, object, array など)を使用できます。

rolesフィールドでは、組み込みロールユーザー定義ロールの両方を指定できます。

updateUserが実行されるのと同じデータベースに存在するロールを指定するには、ロールの名前を使用してロールを指定します。

"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 での認証の詳細については、「認証 」を参照してください。

警告

デフォルトでは、 を使用している場合でも、updateUser は指定されたすべてのデータを MongoDBpasswordPrompt() インスタンスにクリアテキストで送信します。TLS トランスポート暗号化を使用して、 updateUserによって送信されたパスワードを含む、クライアントとサーバー間の通信を保護します。 TLS トランスポート暗号化を有効にする手順については、「 TLS/SSL 用にmongodmongosを構成する 」を参照してください。

MongoDB では、クリアテキストのパスワードはストアされません。パスワードが脆弱になるのは、クライアントとサーバー間の転送時と、TLS 転送暗号化が有効になっていない場合のみです。

ユーザーの roles 配列を更新するには、すべてのデータベースに対する revokeRole アクションを含むアクセス権が必要です。

ユーザーにロールを追加するには、ロールのデータベースに対して grantRole アクションが必要です。

別のユーザーの pwd フィールドまたは customData フィールドを変更するには、そのユーザーのデータベースに対してそれぞれ changePassword アクションと changeCustomData アクションが必要です。

自分のパスワードとカスタム データを変更するには、ユーザーのデータベースに対してそれぞれ changeOwnPassword および changeOwnCustomData アクションを付与する特権が必要です。

products データベースに次のユーザー情報を持つユーザー appClient01 がある場合:

{
"_id" : "products.appClient01",
"userId" : UUID("c5d88855-3f1e-46cb-9c8b-269bef957986"),
"user" : "appClient01",
"db" : "products",
"customData" : { "empID" : "12345", "badge" : "9156" },
"roles" : [
{ "role" : "readWrite",
"db" : "products"
},
{ "role" : "read",
"db" : "inventory"
}
],
"mechanisms" : [
"SCRAM-SHA-1",
"SCRAM-SHA-256"
]
}

次のupdateUserコマンドは、ユーザーのcustomDataデータとrolesデータを完全に置き換えます。

use products
db.runCommand( {
updateUser : "appClient01",
customData : { employeeId : "0x3039" },
roles : [ { role : "read", db : "assets" } ]
} )

products データベース内のユーザー appClient01 には現在、次のユーザー情報があります。

{
"_id" : "products.appClient01",
"userId" : UUID("c5d88855-3f1e-46cb-9c8b-269bef957986"),
"user" : "appClient01",
"db" : "products",
"customData" : { "employeeId" : "0x3039" },
"roles" : [
{ "role" : "read",
"db" : "assets"
}
],
"mechanisms" : [
"SCRAM-SHA-1",
"SCRAM-SHA-256"
]
}

戻る

revokeRolesFromUser