MongoDB 3.2中的角色和权限冲突

时间:2016-10-13 22:12:36

标签: mongodb access-control

我有数据库traffic,并且有两个集合readMereadWriteMe。 我想在mongoDB中创建一个可以执行以下操作的用户 -

  1. 阅读readMe集合。
  2. 读取并写入readWriteMe集合。
  3. 可以创建新的集合并对该集合进行readWrite授权。
  4. 我有角色说myRole - 我尝试为此角色提供以下权限

    privileges: [
           { resource: { db: "traffic", collection: "" }, actions: [ "find", "insert", "remove" ] },
           { resource: { db: "traffic", collection: "readMe"}, actions: ["find"]},
          ]
    

    但它也允许插入readMe集合中!

    这提出了一个问题 - 在权限冲突的情况下会发生什么。哪个更优先等。

1 个答案:

答案 0 :(得分:0)

我认为这是因为您没有在第一个权限上指定集合名称。尝试:

 privileges: [
       { resource: { db: "traffic", collection: "readWriteMe" }, actions: [ "find", "insert", "remove" ] },
       { resource: { db: "traffic", collection: "readMe"}, actions: ["find"]}
      ]

如果您希望同一个用户创建集合并能够读取它们,我认为如果没有他能够以某种方式读取和写入您的readMe集合,就无法授予足够的权限。您可以尝试将createCollectiongrantRole一起应用,但这样可以让用户自己为readMe集合自行分配readWrite角色