Невозможно выполнить listCollections в доступе на основе роли на уровне коллекции в MongoDB с использованием Robot 3T

Я включил доступ на уровне коллекции в своей базе данных MongoDB. Я хочу, чтобы мои пользователи имели доступ к своей собственной коллекции (а не к другим) в базе данных при подключении из Robo3T. Но после подключения к базе данных Robo 3T не позволяет просматривать список коллекций и выдает следующую ошибку:

Ошибка:

Ошибка ListCollections: {ok: 0.0, errmsg: "не авторизовано в DssScheduler для выполнения команды {listCollections: 1, filter: {}, курсор: {}, $readPreference: {mode: "secondaryPreferred"}, $db: ... ", код: 13, codeName: "Неавторизованный" }

Итак, я попытался установить привилегии базы данных, как показано ниже:

db.createRole({ role: "collAReadWrite", 
    privileges: [ 
        { resource: 
            { db: "MyDB", collection: "collA" 
            }, 
            actions: ["find","insert","update","remove"] 
        },
        { resource: 
            { db: "MyDB", collection: "collB" 
            }, 
            actions: ["find"] 
        },
        { resource: 
            { db: "MyDB", collection: "collC" 
            }, 
            actions: ["find"] 
        }   
    ], 
    roles: [] 
})

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

db.createUser(
  {
    user: "collAUser",
    pwd: "collAUserPassxxxxxxx",
    roles: [ { role: "collAReadWrite", db: "MyDB" } ]
  }
)

Тем не менее Robo 3T выдает ту же ошибку.

Был бы признателен за любую помощь в этом!


person Abinash Gupta    schedule 01.08.2018    source источник


Ответы (2)


В связи с изменениями в MongoDB 4.0, Studio 3T или Robo 3T пользователям, работающим с экземпляром сервера MongoDB 4.0+ и имеющим неполные списки коллекций, предлагается проверить привилегии соответствующей учетной записи пользователя базы данных MongoDB.

Пожалуйста, убедитесь, что были назначены достаточные привилегии, которые позволяют пользователю перечислять коллекции базы данных. Одно из возможных исправлений — обновить роли пользователя, включив привилегию запуска операции/действия «listCollections» в базе данных.

person Studio 3T    schedule 23.08.2018

Добавьте следующее в привилегии [].

{ resource: 
    { db: "MyDB", collection: "" }, 
      actions: ["listCollections"] } 
}

Список коллекций покажет все коллекции в базе данных, а не только те, к которым у пользователя есть доступ.

person user1170291    schedule 22.09.2018