Como obter a hora local do servidor MongoDB?

3

Estou executando um mongodb com autenticação. Gostaria que um cliente não raiz obtivesse o horário do servidor.

Eu achei mais fácil usar serverStatus . Mas o usuário readWrite padrão não tem esse privilégio.

Eu estou realmente perdido no modelo de segurança do mongo. Eu tentei adicionar uma função serverStatus assim:

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 recebendo:

> db.serverStatus()
{
    "ok" : 0,
    "errmsg" : "not authorized on admin to execute command { serverStatus: 1.0 }",
    "code" : 13
}

algum conselho, por favor?

    
por akostadinov 28.10.2014 / 16:30

1 resposta

1

Eu tenho isso funcionando. Eu perdi o ponto em que serverStatus action deveria ser concedida ao recurso de cluster como (veja cluster: true ):

use admin
db.createRole(   
  {     
    role: "serverStatus",     
    privileges:     [       
      { 
        resource: { cluster: true }, 
        actions: [ "serverStatus" ] 
      }     
    ],
    roles: [],   
    writeConcern: { w: "majority" , wtimeout: 5000 }   
  }
)

Também antes que grantRolesToUser 1 deva emitir use mydb para evitar a criação de um usuário em outro banco de dados.

    
por 28.10.2014 / 16:45

Tags