Definir uma role customizada, criar um usuário, conceder/revogar roles e alterar a senha
MongoDBSegurançaComando
use admin
db.createRole({
role: "opsRead",
privileges: [
{ resource: { db: "shop", collection: "" }, actions: ["find", "listCollections", "listIndexes", "collStats", "dbStats"] },
{ resource: { cluster: true }, actions: ["serverStatus", "inprog"] }
],
roles: []
})
db.createUser({ user: "shop_app", pwd: passwordPrompt(), roles: [{ role: "readWrite", db: "shop" }, { role: "opsRead", db: "admin" }] })
db.grantRolesToUser("shop_app", [{ role: "clusterMonitor", db: "admin" }])
db.revokeRolesFromUser("shop_app", [{ role: "clusterMonitor", db: "admin" }])
db.changeUserPassword("shop_app", passwordPrompt())
db.getUser("shop_app", { showPrivileges: true })
db.runCommand({ usersInfo: { forAllDBs: true } })O que faz
Define uma role customizada com ações específicas de banco de dados e de cluster, cria um usuário com essa role e roles built-in, concede e revoga roles, altera a senha e lista os usuários de todos os bancos.
Quando usar
Ao criar contas de aplicação e de monitoramento com privilégio mínimo, durante revisões de acesso ou rotação de senhas.
Atenção
O banco onde o usuário é definido (aqui, admin) é usado como authSource; ele precisa corresponder à connection string da aplicação. Não conceda roles amplas como root/dbOwner a contas de aplicação. Mudanças de role se aplicam imediatamente às sessões existentes; uma mudança de senha não derruba as conexões abertas e se aplica às novas.