Estou executando um mongodb com autenticação. Eu gostaria que um cliente não raiz obtivesse tempo do servidor.
Eu pensei que o mais fácil seria usar serverStatus
. Mas o usuário readWrite padrão não tem esse privilégio.
Estou realmente perdido no modelo de segurança mongo. Eu tentei adicionar uma serverStatus
função como esta:
db.createRole(
{
role: "serverStatus",
privileges: [
{
resource: { db: "admin", collection: ""},
actions: [ "serverStatus" ]
}
],
roles: [],
writeConcern: { w: "majority" , wtimeout: 5000 }
}
)
Em seguida, adicionado ao usuário:
db.grantRolesToUser( "myuser", [ { role: "serverStatus", db: "admin" } ] )
Mas tentando obter serverStatus
estou obtendo:
> db.serverStatus()
{
"ok" : 0,
"errmsg" : "not authorized on admin to execute command { serverStatus: 1.0 }",
"code" : 13
}
algum conselho por favor?
Eu tenho-o funcionando. Perdi o ponto de que a
serverStatus
ação deve ser concedida ao recurso de cluster como (consultecluster: true
):Também antes
grantRolesToUser
deve-se emitiruse mydb
para evitar a criação de um usuário em outro banco de dados.