Página inicial do Docs → Desenvolver aplicações → Manual do MongoDB
Use SCRAM para autenticar clientes
Nesta página
O procedimento a seguir configura o SCRAM para autenticação do cliente em uma instância standalone mongod
.
Para usar a autenticação SCRAM para conjuntos de réplica ou clusters fragmentados, consulte Implementar conjunto de réplicas com autenticação de arquivo chave.
Procedimento
Iniciar MongoDB sem controle de acesso
Inicie uma instância do mongod
independente sem controle de acesso.
Abra um terminal e execute o seguinte comando como o usuário mongod
:
mongod --port 27017 --dbpath /var/lib/mongodb
A instância do mongod
neste tutorial utiliza port 27017
e o diretório de dados do /var/lib/mongodb
.
O tutorial pressupõe que o diretório /var/lib/mongodb
existe e é o padrão dbPath
. Você pode especificar um diretório de dados ou porta diferente conforme necessário.
Dica
Quando o mongod
inicia, ele cria alguns arquivos do sistema no diretório /var/lib/mongodb
. Para garantir que os arquivos do sistema tenham a propriedade correta, siga este tutorial como o usuário mongod
. Se você iniciar o mongod
como o usuário do root
você terá que atualizar a propriedade do arquivo mais tarde.
Criar o administrador do usuário
Importante
Exceção do Localhost
Você pode criar o administrador do usuário antes ou depois de habilitar o controle de acesso. Se você ativar o controle de acesso antes de criar qualquer usuário, o MongoDB fornecerá uma exceção localhost que lhe permitirá criar um usuário administrador no banco de dados admin
. Depois de criado, você deve autenticar como administrador do usuário para criar usuários adicionais.
Utilizando mongosh
:
trocar para o banco de dados
admin
adicione o usuário do
myUserAdmin
com as funçõesuserAdminAnyDatabase
ereadWriteAnyDatabase
":
use admin db.createUser( { user: "myUserAdmin", pwd: passwordPrompt(), // or cleartext password roles: [ { role: "userAdminAnyDatabase", db: "admin" }, { role: "readWriteAnyDatabase", db: "admin" } ] } )
Dica
O método passwordPrompt()
solicita que você insira a senha. Você também pode especificar sua senha diretamente como uma string. Recomendamos usar o método passwordPrompt()
para evitar que a senha fique visível na tela e possa vazar a senha para o histórico do shell.
A role userAdminAnyDatabase
permite que esse usuário:
criar usuários
conceder ou revogar roles de usuários
criar ou modificar funções aduaneiras
É possível atribuir ao usuário funções internas adicionais ou funções definidas pelo usuário, conforme necessário.
O banco de dados onde você cria o usuário, neste exemplo admin
, é o banco de dados de autenticação do usuário. Embora o usuário precise autenticar neste banco de dados, o usuário pode ter roles em outros bancos de dados. O banco de dados de autenticação do usuário não limita os privilégios do usuário.
Reiniciar a instância MongoDB com controle de acesso
Desligue a instância mongod
. Usando mongosh
, envie o seguinte comando:
db.adminCommand( { shutdown: 1 } )
Sair mongosh
.
Inicie o mongod
com o controle de acesso habilitado.
Se você iniciar o
mongod
a partir da linha de comando, adicione a opção da linha de comando--auth
:mongod --auth --port 27017 --dbpath /var/lib/mongodb Se você iniciar o
mongod
utilizando um arquivo de configuração, adicione a configuração do arquivo de configuração dosecurity.authorization
:security: authorization: enabled
Os clientes que se conectam a essa instância agora devem autenticar eles mesmos e só podem realizar ações conforme determinado por seus roles atribuídos.
Importante
Exceção do Localhost
Você pode criar usuários antes ou depois de habilitar o controle de acesso. Se você habilitar o controle de acesso antes de criar qualquer usuário, o MongoDB fornecerá uma exceção localhost que permite criar um administrador de usuário no banco de dados admin
. Depois de criado, você deve autenticar como administrador do usuário para criar usuários adicionais.
Conectar e autenticar como administrador do usuário
Usando mongosh
, você pode:
Próximos passos
Para usar a autenticação SCRAM para conjuntos de réplica ou clusters fragmentados, consulte Implementar conjunto de réplicas com autenticação de arquivo chave.