Como iniciar o daemon do Mongo com suporte de autenticação

5

Eu quero iniciar o daemon do MongoDB com suporte de autenticação usando o script de inicialização do Mongo:

sudo /etc/init.d/mongod start

Eu também adicionei usuários do banco de dados ao banco de dados para autenticar. Estou trabalhando com dois arquivos: /etc/init.d/mongod (para init) e /etc/mongod.conf (para config).

#mongod.conf:
dbpath=/var/lib/mongodb
logappend=true
port = 27017 
auth = true

O método não-daemon inicia corretamente o processo com o sinalizador --auth :

mongod --auth

O fork funciona, mas isso não usa o script de inicialização:

mongod --fork --auth --logpath /var/log/mongod.log

Leia toda a documentação e publicações relacionadas, ninguém pareceu ter uma solução funcional para obter suporte de autenticação com

service mongod start

Links:

Atualização: eu reinstalei o Debian / Mongo e pude usar service mongod start com auth = true no arquivo conf. Eu provavelmente quebrei algo durante minha instalação / configuração inicial.

    
por Scott 11.05.2014 / 00:20

3 respostas

4

Eu apenas testei isso com uma nova instalação do Debian 7 e uma nova instalação do MongoDB. Eu adicionei um usuário (adam) primeiro e editei o arquivo /etc/mongod.conf para remover o comentário da linha auth = true . Em seguida, emiti o comando service mongod restart e tentei fazer o login como usuário e obtive êxito - também tentei credenciais incorretas e falhei. Assim, a autenticação parece estar funcionando muito bem, não houve problemas óbvios usando o arquivo de configuração para especificar a autenticação está habilitada.

Então, algumas perguntas:

  • Como você está testando que a autenticação está ativada?
  • Você talvez tenha mais de uma linha em seu arquivo de configuração que contenha instruções auth / noauth?

Para referência, aqui está a maioria dos meus testes com o feedback do shell, etc.

Primeiro, instale e configure o usuário inicial:

root@deb7:~# apt-get install mongodb-org
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following extra packages will be installed:
  mongodb-org-mongos mongodb-org-server mongodb-org-shell mongodb-org-tools
The following NEW packages will be installed:
  mongodb-org mongodb-org-mongos mongodb-org-server mongodb-org-shell
  mongodb-org-tools
0 upgraded, 5 newly installed, 0 to remove and 20 not upgraded.
Need to get 114 MB of archives.
After this operation, 287 MB of additional disk space will be used.
Do you want to continue [Y/n]? 
** SNIP  for brevity** 
Setting up mongodb-org-shell (2.6.1) ...
Setting up mongodb-org-server (2.6.1) ...
Adding system user 'mongodb' (UID 104) ...
Adding new user 'mongodb' (UID 104) with group 'nogroup' ...
Not creating home directory '/home/mongodb'.
Adding group 'mongodb' (GID 107) ...
Done.
Adding user 'mongodb' to group 'mongodb' ...
Adding user mongodb to group mongodb
Done.
[ ok ] Starting database: mongod.
Setting up mongodb-org-mongos (2.6.1) ...
Setting up mongodb-org-tools (2.6.1) ...
Setting up mongodb-org (2.6.1) ...
root@deb7:~# mongo
MongoDB shell version: 2.6.1
connecting to: test
Welcome to the MongoDB shell.
For interactive help, type "help".
For more comprehensive documentation, see
    http://docs.mongodb.org/
Questions? Try the support group
    http://groups.google.com/group/mongodb-user
> use admin
switched to db admin
> db.createUser(
...   {
...     user: "adam",
...     pwd: "password123",
...     roles:
...     [
...       {
...         role: "userAdminAnyDatabase",
...         db: "admin"
...       }
...     ]
...   }
... )                           
Successfully added user: {
    "user" : "adam",
    "roles" : [
        {
            "role" : "userAdminAnyDatabase",
            "db" : "admin"
        }
    ]
}

Em seguida, editei o arquivo /etc/mongod.conf e removi o # que comentou auth = true (não fiz outras alterações). Salvei esse arquivo e reiniciei o serviço. Em seguida, conectei-me ao usuário que adicionei e verifiquei que tinha os provilégios certos:

root@deb7:~# vim /etc/mongod.conf 
root@deb7:~# service mongod restart
[ ok ] Restarting database: mongod.
root@deb7:~# mongo -u adam -p password123 --authenticationDatabase admin
MongoDB shell version: 2.6.1
connecting to: test
Error while trying to show server startup warnings: not authorized on admin to execute command { getLog: "startupWarnings" }

Como você pode ver, o usuário que adicionei não tem os privilégios para examinar os avisos de inicialização, mas, para ter certeza, verifiquei os privilégios:

> use admin
switched to db admin
> db.runCommand(   {     usersInfo:"adam",     showPrivileges:true   } )
{
    "users" : [
        {
            "_id" : "admin.adam",
            "user" : "adam",
            "db" : "admin",
            "roles" : [
                {
                    "role" : "userAdminAnyDatabase",
                    "db" : "admin"
                }
            ],
            "inheritedRoles" : [
                {
                    "role" : "userAdminAnyDatabase",
                    "db" : "admin"
                }
            ],
            "inheritedPrivileges" : [
                {
                    "resource" : {
                        "db" : "",
                        "collection" : ""
                    },
                    "actions" : [
                        "changeCustomData",
                        "changePassword",
                        "createRole",
                        "createUser",
                        "dropRole",
                        "dropUser",
                        "grantRole",
                        "revokeRole",
                        "viewRole",
                        "viewUser"
                    ]
                },
                {
                    "resource" : {
                        "cluster" : true
                    },
                    "actions" : [
                        "authSchemaUpgrade",
                        "invalidateUserCache",
                        "listDatabases"
                    ]
                },
                {
                    "resource" : {
                        "db" : "",
                        "collection" : "system.users"
                    },
                    "actions" : [
                        "collStats",
                        "dbHash",
                        "dbStats",
                        "find",
                        "killCursors",
                        "planCacheRead"
                    ]
                },
                {
                    "resource" : {
                        "db" : "admin",
                        "collection" : "system.users"
                    },
                    "actions" : [
                        "collStats",
                        "dbHash",
                        "dbStats",
                        "find",
                        "killCursors",
                        "planCacheRead"
                    ]
                },
                {
                    "resource" : {
                        "db" : "admin",
                        "collection" : "system.roles"
                    },
                    "actions" : [
                        "collStats",
                        "dbHash",
                        "dbStats",
                        "find",
                        "killCursors",
                        "planCacheRead"
                    ]
                },
                {
                    "resource" : {
                        "db" : "admin",
                        "collection" : "system.version"
                    },
                    "actions" : [
                        "collStats",
                        "dbHash",
                        "dbStats",
                        "find",
                        "killCursors",
                        "planCacheRead"
                    ]
                },
                {
                    "resource" : {
                        "db" : "admin",
                        "collection" : "system.new_users"
                    },
                    "actions" : [
                        "collStats",
                        "dbHash",
                        "dbStats",
                        "find",
                        "killCursors",
                        "planCacheRead"
                    ]
                },
                {
                    "resource" : {
                        "db" : "admin",
                        "collection" : "system.backup_users"
                    },
                    "actions" : [
                        "collStats",
                        "dbHash",
                        "dbStats",
                        "find",
                        "killCursors",
                        "planCacheRead"
                    ]
                }
            ]
        }
    ],
    "ok" : 1
}                                        

Apenas para integridade, aqui está uma falha de autenticação:

root@deb7:~# mongo -u root -p 12345678 --authenticationDatabase admin
MongoDB shell version: 2.6.1
connecting to: test
2014-05-11T18:04:39.793+0100 Error: 18 { ok: 0.0, errmsg: "auth failed", code: 18 } at src/mongo/shell/db.js:1210
exception: login failed   
    
por 11.05.2014 / 19:18
3

Edite o /etc/mongod.conf e adicione uma linha como esta:

Para mongo < 3,0

auth=true

Então:

service mongod restart

Para o mongo 3.x, adicione isto à configuração

security:
  authorization: "enabled"
    
por 08.10.2016 / 22:25
0

Isso funcionou para mim (usando o mongo 3.2): Edite o /etc/mongod.conf e adicione:

segurança:   autorização: ativada

Semelhante à outra resposta, mas sem as aspas em torno de "ativado"

    
por 14.10.2016 / 18:27