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

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

項目一覧

  • system.roles スキーマ

adminデータベースのsystem.rolesコレクションにはユーザー定義ロールが保存されています。 これらのユーザー定義ロールを作成および管理するために、MongoDB はロール マネジメント コマンドを提供します。

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

roleフィールドは、ロールの名前を指定する string です。

admin.system.roles.db

dbフィールドは、ロールが属するデータベースを指定する string です。 MongoDB は、各ロールを名前の組み合わせ(つまり、 role )とそのデータベース。

admin.system.roles.privileges

privileges配列には、ロールの特権を定義する特権ドキュメントが含まれています。

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

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

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

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

特権actionsが適用されるリソースを指定するドキュメント。 ドキュメントには、次のいずれかの形式があります。

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

or

{ cluster : true }

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

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

リソースに対して許可されるアクションの配列。 アクションのリストについては、「自己管理型配置の特権アクション 」を参照してください。

admin.system.roles.roles

roles配列には、このロールが特権を継承するロールを指定する ロール ドキュメント が含まれています。

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

{ 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は特権を継承します。

戻る

参照