1. 本际云推荐 - 专业推荐VPS、服务器,IDC点评首页
  2. 云主机运维
  3. VPS运维

Mongodb的认证及权限管理

小本本介绍

我是本际云服务器推荐网的小编小本本,今天为大家介绍Mongodb的认证及权限管理。

Mongodb的认证及权限管理

用户创建及管理

Mongodb中的用户是基于数据库的,不同数据库中可以存在同名用户,在登录数据库的时候需要指定mongo–authenticationDatabase=XX参数选择认证数据库。在生产中为了规范和便于管理,建议将所有用户都创建在admin库中。Mongodb默认没有创建任何内置用户,所以在启用认证前需要先创建一个超管账号。

创建用户:
use admindb.createUser({user:”fhtest”,pwd:”Ba@31^T2cy”,roles:[{role:”read”,db:”production”}]});
roles表示具有多个库的多种角色或者一个库的多种角色。

授权:
db.grantRolesToUser(“ticket”, [{role:”dbOwner”,db:”pc_ticket” },{role:”dbOwner”,db:”pc_payment” }]);

权限回收:
db.revokeRolesFromUser(“ticket”,[{role:”clusterMonitor”,db:”admin”}]);

查询用户:
db.getUsers();

角色管理

Mongodb不能直接将某个集合或数据库的操作权限授予用户,只能通过角色来进行授权。内置角色包括root、dbOwner、clusterAdmin、read、readWrite等,root角色相当于PG的superuser超管权限。内置角色无法满足需求时,就只能自定义角色进行精细的权限控制。

自定义角色包含直接对对象(resource)进行操作(action)的权限和包含某个角色。如:
use admindb.createRole({role:”myClusterwideAdmin”,privileges:[{resource:{cluster:true},actions:[“addShard”]},{resource:{db:”config”,collection:””},actions:[“find”,”update”,”insert”,”remove”]},{resource:{db:”users”,collection:”usersCollection”},actions:[“update”,”insert”,”remove”]},{resource:{db:””,collection:””},actions:[“find”]}],roles:[{role:”read”,db:”admin”}]}, {w:”majority”,wtimeout:5000})
从上面的例子可以看出resource是一个子文档,包含db和collection,如果为空则表示所有对象,action是一个数组,包含需要授予的操作权限。也可以将角色授权给角色,使用db.grantRolesToRole()。

在生产环境中经常需要在mongo上执行javascript脚本并使用db.eval()调用javascript脚本,则可能出现无权限的报错。因此需要创建角色并授予用户相应权限:

db.createRole({role:”eval_role”,privileges:[{resource:{anyResource:true},actions:[“anyAction”]}],roles:[]})
不建议授予此类权限!调用javascript可以使用其他方案,例如load。

以上就是Mongodb的认证及权限管理介绍。更多精彩内容请关注本际云服务器推荐网。

原创文章,作者:小编小本本,如若转载,请注明出处:https://www.benjiyun.com/yunzhujiyunwei/vps-yunwei/6046.html