Menu Docs
Página inicial do Docs
/
Manual do MongoDB
/ / / /

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 identificarem-se. Você precisa conceder a um usuário uma ou mais funçõ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

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 .

Para poder criar usuários, você precisa:

Para a criação de usuário de rotina, você deve possuir as seguintes permissões:

Os papéis embutidos do userAdmin e userAdminAnyDatabase fornecem ações do createUser e grantRole em seus respectivos recursos.

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 para sua implantação autogerenciada do MongoDB Enterprise ou MongoDB Community, siga estas etapas:

1

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 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.

2

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.

3

Importante

Não é possível alternar entre usuários na mesma sessão mongosh. Autenticar como um usuário diferente significa que a sessão tem os privilégios de ambos usuários autenticados. Para alternar entre usuários, saia e reinicie mongosh.

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 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.

4

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 } )

Dica

Veja também:

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" }
]
}
)

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:

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:

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:

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.

Voltar

Usuários