MongoDB - показва dbs и показва журнал без роля на clusterAdmin

Има ли начин да се даде на потребител на набор от реплики на MongoDB възможността да използва „show dbs“ и „show log“, без да им се дава ролята на clusterAdmin?

Различни потребителски интерфейси (напр. robomongo) показват списък с бази данни, когато се свържете. Без възможност за „показване на dbs“ няма изброени бази данни.

Благодаря ти!


person caseym    schedule 18.10.2013    source източник
comment
можете да им дадете различни разрешения, както е описано в този коментар jira.mongodb.org/browse/   -  person Asya Kamsky    schedule 19.10.2013
comment
Освен ако не съм разбрал погрешно публикацията, която споменахте, те добавят ролята на clusterAdmin към потребителя в базата данни „admin“ (чрез запис userSource или чрез пълен потребител). Бих искал да избегна предоставянето на пълната роля на clusterAdmin и просто да дам възможност за „показване на dbs“ и „показване на журнал“.   -  person caseym    schedule 19.10.2013
comment
предложението е да използвате docs.mongodb.org/ manual/reference/privilege-documents/ вместо clusterAdmin   -  person Asya Kamsky    schedule 19.10.2013
comment
всъщност става дума за listDatabases. Не мисля, че искате да давате show log xxx на някой друг освен администратор - регистрационните файлове съдържат много подробна информация за почти всичко в клъстера.   -  person Asya Kamsky    schedule 19.10.2013
comment
Имам командата да задам „otherDBRoles“ за потребител (по-долу). Объркан съм обаче какво да настроя. Давам ли ролята „четене“ на базата данни, където се съхранява listDatabases? напр. за локално - db.system.users.update({"user":"myUser"},{$set:{'otherDBRoles':{'local':['read']}}},false,false)   -  person caseym    schedule 19.10.2013
comment
Ще оставя тази бележка тук за другите. От това, което прочетох, 2.4 не предлага начин за даване на индивидуален достъп до действие на потребителите, а само на предварително дефинираните роли. 2.6 добавя възможност за създаване на роля и дефиниране на ваш собствен списък с ресурси/действия за ролята. Към момента на писане, http://docs.mongodb.org/manual/release-notes/2.6/ обсъжда новата функция. Ново във версия 2.5.3: MongoDB дава на администраторите достъп до роли чрез командите за управление на роли. Администраторите могат да използват командите за създаване на потребителски роли.   -  person caseym    schedule 12.11.2013


Отговори (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 толерират такива заключвания, може да искате разумно да предоставите тази привилегия на клъстера на потребители с ниска привилегия.

person WAF    schedule 23.05.2017