Altere sua senha e dados personalizados em implantações autogerenciadas
Visão geral
Usuários com privilégios apropriados podem alterar suas próprias senhas e dados personalizados. Custom data
armazena informações opcionais do usuário.
Considerações
Para gerar uma senha forte para uso neste procedimento, você pode utilizar o comando openssl
da utilidade rand
. Por exemplo, questão openssl
rand
com as seguintes opções para criar uma string codificada por base48 de 48 bytes pseudo-aleatórios:
openssl rand -base64 48
Pré-requisitos
Para modificar sua própria senha e dados personalizados, você deve ter privilégios que concedam changeOwnPassword
e changeOwnCustomData
ações respectivamente no banco de dados do usuário.
Conecte-se como um usuário com privilégios para gerenciar usuários e funções.
Conecte ao mongod
ou mongos
com privilégios para gerenciar usuários e roles, como um usuário com role userAdminAnyDatabase
. O procedimento a seguir usa o myUserAdmin
criado em Habilitar controle de acesso em implementações autogerenciadas.
mongosh --port 27017 -u myUserAdmin -p --authenticationDatabase 'admin'
Se você não especificar a senha para a opção de linha de comando do -p
, o mongosh
solicitará a senha.
Crie uma função com privilégios apropriados.
No banco de dados do admin
, create
uma nova função com changeOwnPassword
e changeOwnCustomData
.
use admin db.createRole( { role: "changeOwnPasswordCustomDataRole", privileges: [ { resource: { db: "", collection: ""}, actions: [ "changeOwnPassword", "changeOwnCustomData" ] } ], roles: [] } )
Adicione um usuário com esta função.
No banco de dados do test
, create
um novo usuário com o papel criado do "changeOwnPasswordCustomDataRole"
. Por exemplo, a seguinte operação cria um usuário com o papel embutido readWrite
e o "changeOwnPasswordCustomDataRole"
criado pelo usuário.
Dica
Você pode usar o método passwordPrompt()
em conjunto com vários métodos/comandos de autenticação/gerenciamento de usuário para solicitar a senha em vez de especificar a senha diretamente na chamada de método/comando. No entanto, você ainda pode especificar a senha diretamente como faria com versões anteriores do shell mongo
.
use test db.createUser( { user:"user123", pwd: passwordPrompt(), // or cleartext password roles:[ "readWrite", { role:"changeOwnPasswordCustomDataRole", db:"admin" } ] } )
Para conceder a um usuário existente a nova role, utilize db.grantRolesToUser()
.
Procedimento
Conecte-se com os privilégios apropriados.
Conecte ao mongod
ou mongos
como um usuário com privilégios apropriados.
Por exemplo, a seguinte operação conecta ao MongoDB como user123
criado na seção Pré-requisitos.
mongosh --port 27017 -u user123 --authenticationDatabase 'test' -p
Se você não especificar a senha para a opção de linha de comando -p
, o mongosh
solicitará a senha.
Para verificar se você tem os privilégios especificados na seção Pré-requisitos, bem como para ver as informações do usuário, use o comando usersInfo
com a opção showPrivileges
.
Altere sua senha e dados personalizados.
Utilize o método db.updateUser()
para atualizar a senha e os dados personalizados.
Por exemplo, a seguinte operação altera a senha do usuário para KNlZmiaNUp0B
e dados personalizados { title: "Senior Manager" }
para
Dica
Você pode usar o método passwordPrompt()
em conjunto com vários métodos/comandos de autenticação/gerenciamento de usuário para solicitar a senha em vez de especificar a senha diretamente na chamada de método/comando. No entanto, você ainda pode especificar a senha diretamente como faria com versões anteriores do shell mongo
.
use test db.updateUser( "user123", { pwd: passwordPrompt(), // or cleartext password customData: { title: "Senior Manager" } } )
Digite a senha quando solicitado.