Criar um usuário em sistemas autogerenciados
Nesta página
- Compatibilidade com o MongoDB Atlas
- Pré-requisitos
- Passos
- Conectar e autenticar
- Criar usuários adicionais para seu sistema
- Conectar à instância e autenticar como
myTester
- Insira um documento como
myTester
- Exemplos adicionais
- Autenticação de nome de usuário/senha
- Autenticação Kerberos
- Autenticação LDAP
- Autenticação de certificado de cliente x.509
- Próximos passos
Com o controle de acesso habilitado, os usuários são obrigados a se identificarem. Você precisa conceder a um usuário uma ou maisfunções . Uma função concede a um usuário privilégios para realizar determinadas ações nos recursos do MongoDB.
Cada aplicativo e usuário de um sistema MongoDB deve mapear para um usuário distinto. Esse princípio do isolamento de acesso facilita a revogação de acesso e a manutenção contínua do usuário. Para garantir um sistema com o mínimo privilégio, conceda apenas o conjunto de privilégios exigido a um usuário.
As informações do usuário nesta página se aplicam a sistemas autogerenciados hospedados em todos os ambientes a seguir, a menos que especificado de outra forma:
MongoDB Enterprise: a versão autogerenciada e baseada em assinatura do MongoDB
MongoDB Community: uma versão com código disponível, de uso gratuito e autogerenciada do MongoDB
Compatibilidade com o MongoDB Atlas
As limitações a seguir se aplicam apenas a sistemas hospedados no MongoDB Atlas. Se algum desses limites apresentar um problema para sua organização, entre em contato com osuporte Atlasda .
Você deve usar a Atlas CLI, a API de administração do Atlas , a UI do Atlas ou uma integração com suporte para adicionar, modificar ou excluir usuários de banco de dados de dados em clusters do MongoDB Atlas . Caso contrário, o MongoDB Atlas reverte todas as modificações do usuário. Para adicionar usuários no MongoDB Atlas, consulte Adicionar Usuários do Banco de Dados na documentação do MongoDB Atlas .
As funções integradas e os privilégios específicos disponíveis no MongoDB Atlas permitem um subconjunto de comandos do MongoDB. Consulte Comandos não compatíveis em clusters M10+ para mais informações.
O MongoDB Atlas suporta um máximo de 100 usuários de banco de dados por projeto do MongoDB Atlas. Se você precisar de mais de 100 usuários de banco de dados em um projeto, entre em contato com o suporte do Atlas.
Pré-requisitos
Para poder criar usuários, você precisa:
Para a criação de usuário de rotina, você deve possuir as seguintes permissões:
Para criar um novo usuário em um banco de dados, você deve ter a ação
createUser
nesse recurso de banco de dados.Para conceder funções a um usuário, você deve ter a ação
grantRole
no banco de dados da função.
Os papéis embutidos do userAdmin
e userAdminAnyDatabase
fornecem ações do createUser
e grantRole
em seus respectivos recursos.
Passos
Observação
Os procedimentos a seguir usam a autenticação SCRAM. Para obter informações adicionais sobre outros mecanismos de autenticação, consulte Exemplos adicionais.
Para configurar usuários do banco de dados de dados para sua implantação autogerenciada do MongoDB Enterprise ou MongoDB Community , siga estas etapas:
Conectar e autenticar
Usando mongosh
, conecte-se ao seu primário mongod
ou, em um cluster fragmentado, conecte-se ao seu mongos
e autentique-se como um usuário administrador ou um usuário com os privilégios necessários:
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.
Criar usuários adicionais para seu sistema
Observação
A etapa a seguir utiliza a autenticação SCRAM. Para obter informações adicionais sobre outros mecanismos de autenticação, consulte Exemplos adicionais.
Após autenticar como o administrador de usuário, utilize o método db.createUser()
para criar usuários adicionais. Você pode atribuir quaisquer funções internas ou funções definidas pelo usuário aos usuários.
A operação a seguir adiciona um usuário myTester
ao banco de dados test
que tem a função readWrite
no banco de dados test
e a função read
no banco de dados reporting
.
use test db.createUser( { user: "myTester", pwd: passwordPrompt(), // or cleartext password roles: [ { role: "readWrite", db: "test" }, { role: "read", db: "reporting" } ] } )
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.
O banco de dados onde você cria o usuário (neste exemplo, test
) é o banco de dados de autenticação do usuário. Embora o usuário autentique para este 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.
Após criar os usuários adicionais, saia do mongosh
.
Conectar à instância e autenticar como myTester
Importante
Após sair de mongosh
como myUserAdmin
, reconecte-se como myTester
:
Inicie mongosh
com as opções de linha de comando -u
<username>
, -p
e --authenticationDatabase <database>
:
mongosh --port 27017 -u "myTester" \ --authenticationDatabase "test" -p
Insira a senha do usuário 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 test db.auth("myTester", 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.
Insira a senha do usuário quando solicitado.
Insira um documento como myTester
Como o usuário myTester
, você tem privilégios para executar operações
de leitura e escrita no test
banco de dados (assim como executar
operações de leitura no banco de dados do reporting
). Uma vez autenticado como myTester
, insira um documento em uma coleção no banco de dados test
. Por exemplo, você pode executar a seguinte operação de inserção no banco de dados test
:
db.foo.insertOne( { x: 1, y: 1 } )
Exemplos adicionais
Autenticação de nome de usuário/senha
A seguinte operação cria um usuário no banco de dados reporting
com o nome, senha e funções especificadas.
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.
use reporting db.createUser( { user: "reportsUser", pwd: passwordPrompt(), // or cleartext password roles: [ { role: "read", db: "reporting" }, { role: "read", db: "products" }, { role: "read", db: "sales" }, { role: "readWrite", db: "accounts" } ] } )
Autenticação Kerberos
Os usuários que autenticam no MongoDB utilizando um mecanismo de autenticação externo, como Kerberos, devem ser criados no banco de dados do $external
, que permite ao mongos
ou mongod
consulta em uma fonte externa para autenticação.
Para usar Client Sessions e Causal Consistency Guarantees com usuários de autenticação $external
(usuários Kerberos, LDAP ou x.509), os nomes de usuário não podem ter mais de 10k bytes.
Para autenticação Kerberos, você deve adicionar o principal Kerberos como o nome de usuário. Você não precisa especificar uma senha.
A seguinte operação adiciona o principal reportingapp@EXAMPLE.NET
Kerberos com acesso somente leitura ao banco de dados records
:
use $external db.createUser( { user: "reportingapp@EXAMPLE.NET", roles: [ { role: "read", db: "records" } ] } )
Dica
Veja também:
Para obter mais informações sobre como configurar a autenticação Kerberos para seu MongoDB deployment, consulte os seguintes tutoriais:
Autenticação LDAP
Observação
A partir do MongoDB 8.0, A autenticação e autorização LDAP estão obsoletas. O LDAP está disponível e continuará a operar sem alterações durante a vida útil do MongoDB 8. O LDAP será removido em uma futura versão principal.
Para obter detalhes, consulte Descontinuação do LDAP.
Os usuários que se autenticam no MongoDB usando um mecanismo de autenticação externo, como o LDAP, devem ser criados no banco de dados $external
, que permite que mongos
ou mongod
consultem uma fonte externa para autenticação.
Para usar Client Sessions e Causal Consistency Guarantees com usuários de autenticação $external
(usuários Kerberos, LDAP ou x.509), os nomes de usuário não podem ter mais de 10k bytes.
Para autenticação LDAP, você deve especificar um nome de usuário. Você não precisa especificar a senha, pois ela é administrada pelo serviço LDAP.
A seguinte operação adiciona o usuário reporting
com acesso de somente leitura ao banco de dados records
:
use $external db.createUser( { user: "reporting", roles: [ { role: "read", db: "records" } ] } )
Dica
Veja também:
Para obter mais informações sobre como configurar a autenticação LDAP para seu MongoDB deployment, consulte os seguintes tutoriais:
Autenticação de certificado de cliente x.509
Os usuários que se autenticam no MongoDB usando um mecanismo de autenticação externo, como a autenticação de certificado de cliente x.509, devem ser criados no banco de dados $external
, que permite que mongos
ou mongod
consultem uma fonte externa para autenticação.
Para usar Client Sessions e Causal Consistency Guarantees com usuários de autenticação $external
(usuários Kerberos, LDAP ou x.509), os nomes de usuário não podem ter mais de 10k bytes.
Para autenticação de certificados de clientes x.509, você deve adicionar o valor
do subject
do certificado de cliente como um usuário do MongoDB. Cada
certificado de cliente x.509 exclusivo corresponde a um único usuário do MongoDB. Você não precisa especificar uma senha.
A operação a seguir adiciona o usuário do certificado do cliente CN=myName,OU=myOrgUnit,O=myOrg,L=myLocality,ST=myState,C=myCountry
com acesso somente de leitura ao banco de dados records
.
use $external db.createUser( { user: "CN=myName,OU=myOrgUnit,O=myOrg,L=myLocality,ST=myState,C=myCountry", roles: [ { role: "read", db: "records" } ] } )
Dica
Veja também:
Para obter mais informações sobre como configurar a autenticação de certificados de clientes x.509 para seu MongoDB deployment, consulte os seguintes tutoriais:
Próximos passos
Para gerenciar usuários, atribuir funções e criar funções personalizadas para sua implementação autogerenciada do MongoDB Enterprise ou MongoDB Community , consulte Gerenciar usuários e funções em implementações autogerenciadas.