AI エージェント向け: ドキュメントインデックスは https://www.mongodb.com/ja-jp/docs/llms.txt で利用できます。すべてのページの markdown バージョンは、いずれかの URL パスに .md を追加することで利用できます。
Docs Menu

db.updateRole()(mongoshメソッド)

db.updateRole( rolename, update, writeConcern )

Updates a user-defined role. The db.updateRole() method must run on the role's database.

重要

mongosh メソッド

This page documents a mongosh method. This is not the documentation for database commands or language-specific drivers, such as Node.js.

データベースコマンドについては、updateRole コマンドを参照してください。

MongoDB API ドライバーについては、各言語の「MongoDB ドライバーのドキュメント」を参照してください。

フィールドを更新すると、前のフィールドの値が 完全に置き換えられます。 すべての値を置き換えずにロールまたは特権を付与または排除するには、次のメソッドの 1 つ以上を使用します。

警告

privilegesまたはroles配列を更新すると、前の配列の値が 完全に置き換え られます。

The db.updateRole() method uses the following syntax:

db.updateRole(
"<rolename>",
{
privileges:
[
{ resource: { <resource> }, actions: [ "<action>", ... ] },
...
],
roles:
[
{ role: "<role>", db: "<database>" } | "<role>",
...
],
authenticationRestrictions:
[
{
clientSource: ["<IP>" | "<CIDR range>", ...],
serverAddress: ["<IP>", | "<CIDR range>", ...]
},
...
]
},
{ <writeConcern> }
)

The db.updateRole() method accepts the following arguments:

Parameter
タイプ
説明

rolename

string

更新するユーザー定義ロールの名前。

update

ドキュメント

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

writeConcern

ドキュメント

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

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

フィールド
タイプ
説明

privileges

配列

任意。 roles配列を指定しない場合は必須です。 ロールに付与する特権。 privileges配列を更新すると、前の配列の値は上書きされます。 特権を指定するための構文については、 privileges配列を参照してください。

roles

配列

任意。 privileges配列を指定しない場合は必須です。 このロールが特権を継承するロール。 roles配列を更新すると、前の配列の値は上書きされます。

authenticationRestrictions

配列

任意。

サーバーがロールに強制する認証制限。このロールを付与されたユーザーが接続できる、または接続元として使用できる IP アドレスと CIDR 範囲のリストを指定します。

The db.updateRole() method wraps the updateRole command.

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

重要

This command is not supported in MongoDB Atlas clusters. For information on Atlas support for all commands, see Unsupported Commands.

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

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

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

To specify a role that exists in the same database where db.updateRole() runs, you can either specify the role with the name of the role:

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

If run on a replica set, db.updateRole() is executed using "majority" write concern by default.

admin データベースで作成されたロールを除き、ロールにはそのデータベースに適用される権限のみを含めて、そのデータベース内の他のロールからのみ継承できます。

admin データベースで作成されたロールには、admin データベース、他のデータベース、またはクラスターリソースに適用する特権を含めることができ、admin データベースだけでなく他のデータベースのロールからも継承できます。

privileges 配列を指定すると、データベース内の複数のコレクションまたはデータベース全体に適用する特権を指定できます。

次の構文は、productsデータベース内の複数のコレクションに対する特権を指定します。

privileges: [
{
resource: { db: 'products', collection: 'coll1' },
actions: [ 'bypassDocumentValidation' ]
},
{
resource: { db: 'products', collection: 'coll2' },
actions: [ 'bypassDocumentValidation' ]
}
]

次の構文は、productsデータベース内のすべてのコレクションに対する特権を指定します。

privileges: [
{
resource: { db: 'products', collection: '' },
actions: [ 'bypassDocumentValidation' ]
}
]

ロールを更新するには、すべてのデータベースに対してrevokeRoleアクションが必要です。

配列を更新するには、 roles配列内の各ロールのデータベースに対してgrantRoleアクションが必要です。

配列を更新するには、 privileges配列内の各特権のデータベースに対してgrantRoleアクションが必要です。 権限のリソースがデータベースにまたがる場合は、 adminデータベースにgrantRoleが必要です。 特権が次のいずれかである場合、特権はデータベースにまたがります。

  • すべてのデータベースのコレクション

  • すべてのコレクションとすべてのデータベース

  • clusterリソース

ロールのauthenticationRestrictionsドキュメントを更新するには、ターゲット ロールのデータベースに対してsetAuthenticationRestrictionアクションが必要です。

The following db.updateRole() method replaces the privileges and the roles for the inventoryControl role that exists in the products database. The method runs on the database that contains inventoryControl:

use products
db.updateRole(
"inventoryControl",
{
privileges:
[
{
resource: { db:"products", collection:"clothing" },
actions: [ "update", "createCollection", "createIndex"]
}
],
roles:
[
{
role: "read",
db: "products"
}
]
},
{ w:"majority" }
)

ロールの特権を表示するには、 rolesInfoコマンドを使用します。