Criei um usuário com privilégios totais em seu próprio banco de dados ( dbOwner
) e acesso somente leitura aos comandos administrativos ( clusterMonitor
)
use customerdb
(mongod-3.4.7) customerdb> db.createUser( { user: "customer",
... pwd: "customerpw",
... roles: [ { role: "clusterMonitor", db: "admin" },
... { role: "dbOwner", db: "customerdb" }] },
... { w: "majority" , wtimeout: 5000 } )
Successfully added user: {
"user": "customer",
"roles": [
{
"role": "clusterMonitor",
"db": "admin"
},
{
"role": "dbOwner",
"db": "customerdb"
}
]
}
Autenticação habilitada e logada com o novo usuário. É uma instância única do MongoDB instalada no Homebrew com a versão mais recente.
$ mongo -u customer -p customerpw localhost --authenticationDatabase=customerdb
Por getRoles()
que me mostra o enableSharding
papel? não encontrei explicação nos documentos
> db.getRoles(
... {
... rolesInfo: 1,
... showPrivileges:false,
... showBuiltinRoles: true
... }
... )
[
{
"role": "dbAdmin",
"db": "customerdb",
"isBuiltin": true,
"roles": [ ],
"inheritedRoles": [ ]
},
{
"role": "dbOwner",
"db": "customerdb",
"isBuiltin": true,
"roles": [ ],
"inheritedRoles": [ ]
},
{
"role": "enableSharding",
"db": "customerdb",
"isBuiltin": true,
"roles": [ ],
"inheritedRoles": [ ]
},
{
"role": "read",
"db": "customerdb",
"isBuiltin": true,
"roles": [ ],
"inheritedRoles": [ ]
},
{
"role": "readWrite",
"db": "customerdb",
"isBuiltin": true,
"roles": [ ],
"inheritedRoles": [ ]
},
{
"role": "userAdmin",
"db": "customerdb",
"isBuiltin": true,
"roles": [ ],
"inheritedRoles": [ ]
}
]
os privilégios da função enableSharding
{
"role": "enableSharding",
"db": "customerdb",
"isBuiltin": true,
"roles": [ ],
"inheritedRoles": [ ],
"privileges": [
{
"resource": {
"db": "",
"collection": ""
},
"actions": [
"enableSharding"
]
}
],
"inheritedPrivileges": [
{
"resource": {
"db": "",
"collection": ""
},
"actions": [
"enableSharding"
]
}
]
}
Eu testei isso em um cluster fragmentado em mongos com a versão:
MongoDB Enterprise mongos> db.version()
3.2.11
e também no MacBook com mongod único e versão 3.4.7
Acho que estou fazendo algo errado como crio usuários e concedo funções?
Você obtém esse "role" : "enableSharding" para customerdb por causa de "role" : "dbAdmin". Portanto, esse uso pode fragmentar o customerdb, mas nada mais.