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

db.updateUser()

項目一覧

  • 定義
  • 互換性
  • 動作
  • 必要なアクセス権
db.updateUser( username, update, writeConcern )

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

警告

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

db.updateUser() メソッドでは、次の構文を使用します。

Tip

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

db.updateUser(
"<username>",
{
customData : { <any information> },
roles : [
{ role: "<role>", db: "<database>" } | "<role>",
...
],
pwd: passwordPrompt(), // Or "<cleartext password>"
authenticationRestrictions: [
{
clientSource: ["<IP>" | "<CIDR range>", ...],
serverAddress: ["<IP>", | "<CIDR range>", ...]
},
...
],
mechanisms: [ "<SCRAM-SHA-1|SCRAM-SHA-256>", ... ],
passwordDigestor: "<server|client>"
},
writeConcern: { <write concern> }
)

db.updateUser()メソッドには次の引数があります。

Parameter
タイプ
説明

username

string

更新するユーザーの名前。

update

ドキュメント

ユーザーの置換データを含むドキュメント。このデータは、ユーザーに対応するデータを完全に置き換えます。

writeConcern

ドキュメント

任意。 操作の 書込み保証( write concern ) のレベル。 詳しくは、 書込み保証(write concern) の仕様を参照してください。

update ドキュメントでは、更新するフィールドとその新しい値を指定します。update ドキュメントのすべてのフィールドは任意ですが、少なくとも 1 つのフィールドを含める必要があります。

updateドキュメントには、以下のフィールドがあります。

フィールド
タイプ
説明

customData

ドキュメント

任意。任意の情報が含まれます。

roles

配列

任意。ユーザーに付与されたロール。roles 配列を更新すると、前の配列の値は上書きされます。

pwd

string

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

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

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

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

authenticationRestrictions

配列

任意。サーバーがユーザーに強制する認証制限。ユーザーによるサーバー接続が許可される、またはサーバーがユーザーを受け入れることができる IP アドレスと CIDR 範囲のリストを指定します。

mechanisms

配列

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

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

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

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

  • "SCRAM-SHA-1"

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

  • "SCRAM-SHA-256"

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

    • featureCompatibilityVersion を 4.0 に設定する必要があります。

    • passwordDigestor は必ずserver にします。

passwordDigestor

string

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

使用可能な値は次のとおりです。

  • "server" (デフォルト)
    サーバーはクライアントからダイジェスト化されていないパスワードを受け取り、そのパスワードをダイジェスト化します。
  • "client"SCRAM-SHA-256 とは互換性がありません)
    クライアントはパスワードをダイジェスト化し、ダイジェスト化されたパスワードをサーバーに渡します。

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

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

"readWrite"

または、次のように、ドキュメントを使用してロールを指定することもできます。

{ role: "<role>", db: "<database>" }

別のデータベースに存在するロールを指定するには、 ドキュメントを使用してロールを指定します。

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 での認証の詳細については、「自己管理型配置での認証 」を参照してください。

db.updateUser() メソッドは、updateUser コマンドをラップします。

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

重要

このコマンドは、 MongoDB Atlasクラスターではサポートされていません。 すべてのコマンドの Atlas サポートの詳細については、「 サポートされていないコマンド 」を参照してください。

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

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

レプリカセットで実行する場合、 db.updateUser()はデフォルトで"majority"書込み保証を使用して実行されます。

警告

デフォルトでは、 を使用している場合でも、db.updateUser() は指定されたすべてのデータを MongoDBpasswordPrompt() インスタンスにクリアテキストで送信します。TLS トランスポート暗号化を使用して、 db.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"
],
authenticationRestrictions : [ {
clientSource: ["69.89.31.226"],
serverAddress: ["172.16.254.1"]
} ]
}

次のdb.updateUser()メソッドは、ユーザーのcustomDatarolesデータを完全に置き換えます。

use products
db.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"
],
authenticationRestrictions : [ {
clientSource: ["69.89.31.226"],
serverAddress: ["172.16.254.1"]
} ]
}

注意

SCRAM-SHA-256を使用するには、 featureCompatibilityVersion4.0 に設定する必要があります。featureCompatibilityVersion の詳細については、 Get FeatureCompatibilityVersion および setFeatureCompatibilityVersionを参照してください。

次の操作では、現在 SCRAM-SHA-256SCRAM-SHA-1 の両方の認証情報を持っているユーザーを、SCRAM-SHA-256 認証情報のみを持つように更新します。

注意

  • パスワードが mechanisms と共に指定されていない場合は、ユーザーの現行の SCRAM メカニズムのサブセットに mechanisms をアップデートできるのみです。

  • パスワードを mechanisms と共に指定する場合は、サポートされている任意の SCRAM メカニズムを指定できます。

  • SCRAM-SHA-256 の場合、passwordDigestor はデフォルト値 "server" である必要があります。

use reporting
db.updateUser(
"reportUser256",
{
mechanisms: [ "SCRAM-SHA-256" ]
}
)

戻る

db.revokeRolesFromUser