2013-07-09 9 views
8

In mongo 2.4.x, supporta un nuovo modo di create user in admin database, ho pensato che l'utente creato con userAdminAnyDatabase ruolo dovrebbe essere in grado di accedere a tutti gli altri dati destra?non accedere ad altre DBS per gli utilizzatori che hanno creato come "userAdminAnyDatabase" ruolo

db.addUser({user:"u", pwd:"p", roles:["userAdminAnyDatabase"]}) 

Tuttavia, non può seguire il documento.

Quando ho creato un utente nello stile 2.2.x, Funziona.

db.addUser("u","p") 

La mia domanda è stata se ho sbagliato le operazioni? Se voglio creare un utente che può accedere a tutti i dbs usando la sintassi 2.4.x, qual è il modo corretto? Sono necessarie altre opzioni?

Grazie.

Ecco i dettagli shell code:

➜ mgo ✗ mongo 
MongoDB shell version: 2.4.5 
connecting to: test 
> use admin 
switched to db admin 
> db.addUser({user: "u", pwd: "p", roles:["userAdminAnyDatabase"]}) 
{ 
    "user" : "u", 
    "pwd" : "d4198ee555320fa5c048da6d6da440d8", 
    "roles" : [ 
     "userAdminAnyDatabase" 
    ], 
    "_id" : ObjectId("51dc20f0282f72950455b62e") 
} 
> db.auth(
Display all 170 possibilities? (y or n) 
> db.auth("u","p") 
1 
> ^C 
bye 
➜ mgo ✗ mongo admin -u u -p p 
MongoDB shell version: 2.4.5 
connecting to: admin 
> show dbs 
Tue Jul 9 22:44:47.959 JavaScript execution failed: listDatabases failed:{ "ok" : 0, "errmsg" : "unauthorized" } at src/mongo/shell/mongo.js:L46 
> use admin 
switched to db admin 
> db.addUser("uncle", "peter") 
{ 
    "user" : "uncle", 
    "readOnly" : false, 
    "pwd" : "e42842e07c4fc324e9724d6aa41f6411", 
    "_id" : ObjectId("51dc22456642fa58413adffc") 
} 
> db.auth("uncle", "peter") 
1 
> ^C 
bye 
➜ mgo ✗ mongo admin -u uncle -p peter 
MongoDB shell version: 2.4.5 
connecting to: admin 
> show dbs 
admi (empty) 
admin 0.203125GB 
local 0.078125GB 
qortex_global 0.203125GB 
qortexprod 0.203125GB 
test (empty) 
> 

risposta

19

La documentazione relativa userAdminAnyDatabase dice (http://docs.mongodb.org/manual/reference/user-privileges/#userAdminAnyDatabase):

Tuttavia, userAdminAnyDatabase e UserAdmin non lo fanno esplicitamente autorizzare un utente per qualsiasi privilegio oltre l'amministrazione degli utenti.

Sarà inoltre necessario aggiungere il ruolo "clusterAdmin" per il comando database lista: http://docs.mongodb.org/manual/reference/user-privileges/#clusterAdmin

Se si desidera all'utente di lettura/scrittura dal database e collezioni, sarà necessario aggiungere un altro ruolo, il ruolo "readWrite": http://docs.mongodb.org/manual/reference/user-privileges/#readWrite

+0

Ciao, @Derick, funziona. ma spero ancora che l'utente creato non solo possa elencare tutti gli altri dbs, ma può anche avere il permesso di lettura/scrittura. Hai bisogno di altri ruoli? – yeer

+0

Sì, per la lettura/scrittura è necessario il ruolo "readWrite". – Derick

+0

grazie, molto utile – yeer

Problemi correlati