查询获取每个集合mongoDB的角色权限

时间:2016-12-16 11:40:11

标签: mongodb

我正在寻找如何获得这样的东西:

{  _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: []
}

此JSON属于MongoDB文档(https://docs.mongodb.com/v3.2/reference/system-roles-collection/#examples)。

但我没有找到获取此信息的查询。

我知道我能做到:

db.getSiblingDB('databaseName').getRole('rolename', { showPrivileges: true } )

但我不想要这个,因为我需要同一行中的所有权限(动作)。

任何人都可以帮助我吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

您可以采取几种方法来查询数据集。 首先,您可以运行以下 rolesInfo 命令,该命令返回角色继承和appUser数据库中定义的角色myApp的权限:

db.runCommand(
    {
        "rolesInfo": { 
            "role": "appUser", 
            "db": "myApp" 
        },
        "showPrivileges": true
    }
)

另一种方法是查询管理数据库中的 system.roles 集合:

use admin
db.getCollection('system.roles').find({ "role": "appUser" })