Конфликтующие роли и привилегии в MongoDB 3.2

#mongodb #access-control

#mongodb #управление доступом

Вопрос:

У меня есть база traffic данных и в этих двух коллекциях readMe и readWriteMe . Я хочу создать пользователя, mongoDB который может выполнять следующие действия —

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

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

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

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

Возникает вопрос — что происходит в случае конфликтующих привилегий. Которому присвоен больший приоритет и т. Д.

Ответ №1:

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

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

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

Комментарии:

1. Приведенный выше набор привилегий даст мне rw право на readWriteMe и r для readMe , но не позволит мне создавать новые коллекции.

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

3. Да, я попытался дать createCollection , и он действительно дал rw запрос readMe тоже!