MongoDB用户权限
0
最近有个网站用到MongoDB,以前都没配置权限的,现在突然要用到安全的东西,网上有些文章都是旧版本的,也走了些弯路。
开始配置用户的权限,用户的权限有几种,权限分得非常细,混淆了一个dbAdmin
和userAdmin
,我开始以为是同样的功能,原来userAdmin
只是用来管理账号的,不能使用show collections...
更多详细内容参考:http://drops.wooyun.org/%E8%BF%90%E7%BB%B4%E5%AE%89%E5%85%A8/2470
下面是一些创建的用户
超级管理用户,用来管理所有的用户
db.createUser({user:"root",pwd:"root",roles:["userAdminAnyDatabase"]});
数据查询用户
任何数据库的查询和创建索引等一些操作
db.createUser({user:"admin",pwd:"admin",roles:["dbAdminAnyDatabase", "readAnyDatabase"]});
admin
数据库的查询和创建索引等一些操作,这里虽然是anyDatabase
,但是后面加了db
后就只能是admin
数据库了
db.createUser({user:"admin",pwd:"admin",roles:[{role:"dbAdminAnyDatabase", db:"admin"}, {role:"readWriteAnyDatabase", db:"admin"}]});
和上面的功能是一样的
db.createUser({user:"admin",pwd:"admin",roles:[{role:"dbAdmin", db:"admin"}, {role:"readWrite", db:"admin"}]});
有一些比较奇怪的地方:
如果你在admin
数据库创建了对root
数据库的查询权限,但是认证的时候必须到admin
里面认证后再回到root
数据库才可以进行查询。
我们看上面两张图,发现_id
不一样,点号前面是你在哪个数据库创建这个用户的,必须要到该数据库下授权才可以成功。