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

system.roles 自己管理型配置のコレクション

adminデータベースのsystem.rolesコレクションにはユーザー定義ロールが保存されています。 To create and manage these user-defined roles, MongoDB provides role management commands.

system.rolesコレクション内のドキュメントには次のスキーマがあります。

{
_id: <system-defined id>,
role: "<role name>",
db: "<database>",
privileges:
[
{
resource: { <resource> },
actions: [ "<action>", ... ]
},
...
],
roles:
[
{ role: "<role name>", db: "<database>" },
...
]
}

system.rolesドキュメントには次のフィールドがあります:

admin.system.roles.role

The role field is a string that specifies the name of the role.

admin.system.roles.db

The db field is a string that specifies the database to which the role belongs. MongoDB uniquely identifies each role by the pairing of its name (i.e. role) and its database.

admin.system.roles.privileges

The privileges array contains the privilege documents that define the privileges for the role.

特権ドキュメントの構文は次のとおりです。

{
resource: { <resource> },
actions: [ "<action>", ... ]
}

各特権ドキュメントには、次のフィールドがあります。

admin.system.roles.privileges[n].resource

A document that specifies the resources upon which the privilege actions apply. The document has one of the following form:

{ db: <database>, collection: <collection> }

or

{ cluster : true }

詳細については、 自己管理型配置に関するリソース ドキュメント を参照してください。

admin.system.roles.privileges[n].actions

リソースで許可されるアクションの配列。アクションのリストについては、特権アクションを参照してください。

admin.system.roles.roles

The roles array contains role documents that specify the roles from which this role inherits privileges.

ロール ドキュメントの構文は次のとおりです。

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

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

admin.system.roles.roles[n].role

ロールの名前。 ロールは、MongoDB によって提供される組み込みロールまたはユーザー定義のロールにすることができます。

admin.system.roles.roles[n].db

ロールが定義されているデータベースの名前。

adminデータベースのsystem.rolesコレクションにある次のサンプル ドキュメントを検討してみましょう。

以下は、 myAppデータベースに定義されたユーザー定義ロールappUserのサンプル ドキュメントです。

{
_id: "myApp.appUser",
role: "appUser",
db: "myApp",
privileges: [
{ resource: { db: "myApp" , collection: "" },
actions: [ "find", "createCollection", "dbStats", "collStats" ] },
{ resource: { db: "myApp", collection: "logs" },
actions: [ "insert" ] },
{ resource: { db: "myApp", collection: "data" },
actions: [ "insert", "update", "remove", "compact" ] },
{ resource: { db: "myApp", collection: "system.js" },
actions: [ "find" ] },
],
roles: []
}

privileges配列には、 appUserロールが指定する 5 つの特権が列挙されています。

空のroles配列が示すように、 appUserは他のロールから追加の特権を継承しません。

以下は、 myAppデータベースに対して定義されたユーザー定義ロールappAdminのサンプル ドキュメントです。このドキュメントでは、 appAdminロールが特権を指定し、他のロールから特権を継承することを示しています。

{
_id: "myApp.appAdmin",
role: "appAdmin",
db: "myApp",
privileges: [
{
resource: { db: "myApp", collection: "" },
actions: [ "insert", "dbStats", "collStats", "compact" ]
}
],
roles: [
{ role: "appUser", db: "myApp" }
]
}

privileges配列には、 appAdminロールが指定する権限が一覧表示されます。 このロールには、システム コレクションを除くmyAppデータベース内のすべてのコレクションに対してそのアクション( "insert""dbStats""collStats""compact" )を許可する単一の特権があります。 「リソースとしてデータベースを指定する 」を参照してください。

roles配列には、ロール名とデータベースで識別されるロールが一覧表示されています。ここからロールappAdminは特権を継承します。

このページを評価