2016-10-13 2 views
0

У меня есть база данных traffic и в этих двух сборниках readMe и readWriteMe. Я хочу, чтобы создать пользователя в mongoDB, которые могут сделать следующее -Конфликтующие роли и привилегии в MongoDB 3.2

  1. читать readMe коллекцию.
  2. читать и писать в коллекцию readWriteMe.
  3. может создавать новую коллекцию и иметь разрешение readWrite на эту коллекцию.

У меня есть роль сказать myRole - Я пытался дать следующие привилегии этой роли

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

но позволяет вставить в readMe коллекции тоже!

Возникает вопрос: что происходит в случае противоречивых привилегий. Который получает больше приоритета и т. Д.

ответ

0

Я думаю, это потому, что вы не указываете имя коллекции при первом разрешении. Попробуйте:

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

Если вы хотите того же пользователя для создания коллекций и быть в состоянии READWRITE их, я думаю, что это невозможно не предоставить достаточно привилегий, без него быть в состоянии как-то читать и писать свой readMe коллекцию. Вы можете попробовать применить createCollection вместе с grantRole, но это позволит пользователю самостоятельно назначить роль readWrite для себя для коллекции readMe.

+0

Вышеприведенный набор привилегий даст мне 'rw' право для' readWriteMe' и 'r 'for' readMe', но это не позволит мне создавать новые коллекции. – atulj

+0

О, извините, я не видел этого. Я обновлю свой ответ – andresk

+0

Да, я попробовал дать 'createCollection', и он действительно дал' rw' запрос 'readMe' тоже! – atulj

Смежные вопросы