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

updateRole(データベースコマンド)

updateRole

Updates a user-defined role. The updateRole command must run on the role's database.

Tip

In mongosh, this command can also be run through the db.updateRole() helper method.

Helper methods are convenient for mongosh users, but they may not return the same level of information as database commands. In cases where the convenience is not needed or the additional return fields are required, use the database command.

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

警告

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

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

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

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

重要

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

ロールを更新するには、 privileges配列、 roles配列、またはその両方を指定する必要があります。

コマンドは、次の構文を使用します。

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

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

フィールド
タイプ
説明

updateRole

string

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

privileges

配列

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

roles

配列

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

authenticationRestrictions

配列

任意。

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

writeConcern

ドキュメント

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

comment

any

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

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

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

To specify a role that exists in the same database where 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 での認証の詳細については、「自己管理型配置での認証 」を参照してください。

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

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

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

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

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

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

  • clusterリソース

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

The following is an example of the updateRole command that updates the myClusterwideAdmin role on the admin database. While the privileges and the roles arrays are both optional, at least one of the two is required:

db.adminCommand(
{
updateRole: "myClusterwideAdmin",
privileges:
[
{
resource: { db: "", collection: "" },
actions: [ "find" , "update", "insert", "remove" ]
}
],
roles:
[
{ role: "dbAdminAnyDatabase", db: "admin" }
],
writeConcern: { w: "majority" }
}
)

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