MongoDB - показать базы данных и показать журнал без роли clusterAdmin
Есть ли способ дать пользователю в реплике MongoDB возможность использовать "show dbs" и "show log", не предоставляя им роль clusterAdmin?
Различные пользовательские интерфейсы (например, robomongo) показывают список баз данных при подключении. Без возможности "показать базы данных" базы данных не отображаются.
Спасибо!
1 ответ
Вопрос, очевидно, был написан с учетом более старой версии, но, по крайней мере, с версии 3.2.9 это стало возможным.
Команда show dbs
это обертка вокруг команды listDatabases
, который подлежит выплате. Итак, сначала создайте роль, которая делает только последнее.
db.runCommand({createRole:"justListDatabases",privileges:[{resource:{cluster:true},
actions:["listDatabases"]}],roles:[]})
Затем предоставьте это пользователю.
db.grantRolesToUser("app_RO_user",["justListDatabases"])
Обратите внимание, что show dbs
опрашивает каждую базу данных на предмет ее размера, который использует блокировки. Поэтому в зависимости от того, как ваши экземпляры MongoDB переносят такие блокировки, вы можете разумно предоставить эту кластерную привилегию пользователям с низкими привилегиями.