system.roles
自己管理型配置のコレクション
admin
データベースのsystem.roles
コレクションにはユーザー定義ロールが保存されています。 これらのユーザー定義ロールを作成および管理するために、MongoDB はロール マネジメント コマンドを提供します。
system.roles
スキーマ
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
コレクションにある次のサンプル ドキュメントを検討してみましょう。
ユーザー定義のロールは特権を指定します
以下は、 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 つの特権が列挙されています。
最初の特権は、システム コレクションを除く
myApp
データベース内のすべてのコレクションに対してそのアクション("find"
、"createCollection"
、"dbStats"
、"collStats"
)を許可します。 「リソースとしてデータベースを指定する 」を参照してください。次の 2 つの特権により、
myApp
データベース内の特定のコレクション(logs
とdata
)に対する追加アクションが許可されます。 「データベースのコレクションをリソースとして指定 」を参照してください。最後の特権では、
myApp
データベース内の 1 つのシステム コレクションに対するアクションが許可されています。 最初の特権はfind
アクションのデータベース全体の権限を付与しますが、そのアクションはmyApp
のシステム コレクションには適用されません。 システム コレクションへのアクセスを許可するには、特権がコレクションを明示的に指定する必要があります。 自己管理型配置に関するリソース ドキュメントを参照してください。
空の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
は特権を継承します。