Как обновить определяемые пользователем роли в MongoDB 3.0 в среде шардинга?

Я использую MMS для управления типичным кластером сегментирования с помощью всего одного сегмента (на данный момент): 3 mongod для shard000 (2 сервера + 1 арбитр) + 1 сервер конфигурации + 2 экземпляра mongos.

Аут включен и работает хорошо. Я добавил определенную пользователем роль в консоли администратора MMS и вижу ее в оболочке mongo.

db.system.roles.findOne()
{
    "_id" : "admin.myrole",
    "role" : "myrole",
    "db" : "admin",
    "privileges" : [
        {
            "resource" : {
                "db" : "",
                "collection" : ""
            },
            "actions" : [
                "changeCustomData",
                "changePassword",
 ...

Я хочу изменить его на AnyAction на AnyResource (как требует действие doEval). Итак, я пытаюсь выполнить это:

db.runCommand({ "updateRole": "myrole", "privileges": [  { resource: { anyResource: true}, actions: [ "anyAction" ] } ] }); db.system.roles.findOne()`
and for one second, I get the result I want:
{
    "_id" : "admin.myrole",
    "role" : "myrole",
    "db" : "admin",
    "privileges" : [
        {
            "resource" : {
                "anyResource" : true
            },
            "actions" : [
                "anyAction"
            ]
        }
    ],
    "roles" : [ ]
}

Но примерно через две секунды роль восстановилась:

configsvr> db.system.roles.findOne()
{
    "_id" : "admin.myrole",
    "role" : "myrole",
    "db" : "admin",
    "privileges" : [
        {
            "resource" : {
                "db" : "",
                "collection" : ""
            },
            "actions" : [
                "changeCustomData",
                "changePassword",

...

и я не знаю, "кто" восстанавливает это. Я попробовал вышеупомянутые команды от ПЕРВИЧНОГО и от сервера CONFIG в базе данных администратора.

Как я могу сохранить роль?

PS: я знаю, что eval устарел в 3.0, но я спрашиваю, почему я не могу обновить роль.

0 ответов

Другие вопросы по тегам