Use o SCRAM para autenticar clientes em implantações autogerenciadas
Nesta página
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.
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
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
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
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:
Inicie o 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.