O procedimento a seguir configura o SCRAM para autenticação do cliente em uma instância mongod autônoma.
Para usar a autenticação SCRAM para conjuntos de réplicas ou clusters fragmentados, consulte Implantar conjunto de réplicas autogerenciadocom autenticação de arquivo-chave.
Importante
Você não pode usar a autenticação SCRAM e outro tipo de autenticação para o mesmo usuário.
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.
Usando mongosh:
trocar para o banco de dados
adminadicione o usuário do
myUserAdmincom as funçõesuserAdminAnyDatabaseereadWriteAnyDatabase":
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
Encerre a instância mongod. Utilizando o mongosh, emita o seguinte comando:
db.adminCommand( { shutdown: 1 } )
Saída de mongosh.
Inicie o mongod com o controle de acesso habilitado.
Se você iniciar o
mongoda 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
mongodutilizando 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:
Inicie mongosh com as opções de linha de comando -u
<username>, -p e --authenticationDatabase <database>:
mongosh --port 27017 --authenticationDatabase \ "admin" -u "myUserAdmin" -p
Digite sua senha quando solicitado.
Usando mongosh, conecte-se à sua implantação de banco de dados:
mongosh --port 27017
Em mongosh, alterne para o banco de banco de dados de autenticação (neste caso, admin) e use o método db.auth(<username>, <pwd>) para autenticar:
use admin db.auth("myUserAdmin", passwordPrompt()) // or cleartext password
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.
Digite a senha quando solicitado.
Próximos passos
Para usar a autenticação SCRAM para conjuntos de réplicas ou clusters fragmentados, consulte Implantar conjunto de réplicas autogerenciadocom autenticação de arquivo-chave.