最近网上很多mongodb被黑,使大家将目光投向了mongodb的权限控制。当然mongodb本身有一套完备的RBAC权限控制体系,这次被黑应该都是没有遵照mongodb的生产环境部署手册部署的结果。我们平时玩一玩mongodb习惯了不设置用户名密码,当我们的数据库放到公网时,由于我们也没有设置用户名密码,任何人都可以随便访问,而且由于我们没有开启授权访问,使得任何登录到mongodb服务器的用户都拥有最高权限。这样被那些居心不良的人发现,就可以把我们的数据拷走,删除我们的数据库,从而勒索赎金。即使我们的数据库只能在内网访问,我们也应该开启权限控制,这样可以避免我们内部用户的一些误操作,或者我们对外服务的程序有一些漏洞也说不准。
上面我们说了,mongodb是基于RBAC权限模型来实现权限控制的。那么我们先简单了解一下RBAC权限模型。RBAC(Role-Based Access Control) 认为授权就是“Who对What进行How的操作”。也就是说,我们通过给角色授权,然后将该角色授给某个用户,这样这个用户就拥有了该角色所拥有的所有权利。所以为了帮助我们更好的管理数据库mongodb内置了很多的角色。常用的有:
- read: 只能读取指定数据库
- readWrite: 能读写指定数据库
- dbAdmin: 能执行管理函数,如索引创建、删除,查看统计或访问 system.profile
- dbOwner: