【发布时间】:2014-02-09 05:14:53
【问题描述】:
我使用 keyFile 来验证我的 mongodb 集群系统。我已经拥有针对 admin db 的管理员角色:
所以,首先我使用身份验证登录:
mongo localhost:40000/admin -u root -p 123456
mongos> use admin
switched to db admin
mongos> db.system.users.find()
{ "_id" : ObjectId("52dcb305398751501c530378"), "user" : "root", "pwd" : "a02786431d8419bbebee7aa4dad6aee9", "roles" : [ "clusterAdmin", "userAdmin", "readWriteAnyDatabase", "dbAdmin", "read" ] }
我以这样的角色登录后,除了addUser操作之外,我可以在admin和任何其他普通数据库上做任何事情(包括查询、删除、修改等)!
例如,对于一个普通的数据库genbank,我尝试添加一个用户:
mongos> use genbank
switched to db genbank
mongos> db.addUser({user:"genbankReader",pwd:"123456",roles:["read"]})
{
"user" : "genbankReader",
"pwd" : "6f755264f6d28045198f6ae53523005e",
"roles" : [
"read"
],
"_id" : ObjectId("52dcb8495ec4b673f09b66eb")
}
Mon Jan 20 13:46:49.007 couldn't add user: not authorized for insert on genbank.system.users at src/mongo/shell/db.js:128
但是对于数据库管理员,我可以根据需要执行 addUser():
mongos> use admin
switched to db admin
mongos> db.addUser({user:"adminReader",pwd:"123456",roles:["read"]})
{
"user" : "adminReader",
"pwd" : "60c67cf3181b8b8570583ddfb62dd32e",
"roles" : [
"read"
],
"_id" : ObjectId("52dcb8b25ec4b673f09b66ec")
}
真的很奇怪!
【问题讨论】:
标签: mongodb authentication admin roles