system.roles Collection

2.6 版的新功能。

在本页面

admin数据库中的system.roles集合存储用户定义的角色。为了创建和 Management 这些用户定义的角色,MongoDB 提供了角色 Management 命令

system.roles Schema

system.roles集合中的文档具有以下架构:

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

system.roles文档具有以下字段:

特权文档具有以下语法:

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

每个特权文档具有以下字段:

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

or

{ cluster : true }

有关更多详细信息,请参见Resource Document

角色文档具有以下语法:

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

角色文档具有以下字段:

Examples

请考虑在admin数据库的system.roles集合中找到的以下 samples 文档。

用户定义的角色指定特权

以下是为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角色指定的五种特权:

如空的roles数组所示,appUser不继承其他角色的其他特权。

用户定义的角色继承自其他角色

以下是为myApp数据库定义的用户定义角色appAdmin的 samples 文档:该文档显示appAdmin角色指定特权,并从其他角色继承特权:

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

privileges数组列出了appAdmin角色指定的特权。该角色具有单个特权,该特权允许它对myApp数据库中的所有集合(不包括其系统集合)执行操作("insert""dbStats""collStats""compact""repairDatabase")。参见将数据库指定为资源

roles数组列出了由角色名称和数据库标识的角色,角色appAdmin从这些角色继承特权。

首页