RBAC

Role Base Access Control 是目前最流行的权限设计模型,RBAC 在 User 和 Permission 之间引入了 Role 的概念。

  • 每个 User 可以关联一个或者多个 Role
  • 每个 Role 可以关联一个或者多个 Permission

Role-based access control overview | by Daisuke Sonoda | Medium
Role-based access control overview | by Daisuke Sonoda | Medium

MongoDB便是采用RBAC模型,对数据库的操作都划分成了权限[^1],如下所示:

权限标识 说明
find 具有此权限的用户可以运行所有和查询有关的命令,如:aggregate、checkShardingIndex、count等。
insert 具有此权限的用户可以运行所有和新建数据有关的命令:insert和create等。
collStats 具有此权限的用户可以对指定database或collection执行collStats命令。
viewRole 具有此权限的用户可以查看指定database的角色信息。

基于这些权限,MongoDB提供了一些预定义的角色(MongoDB预定义角色文档,用户也可以自己定义角色):

角色 find insert collStats viewRole
read
readWrite
dbAdmin
userAdmin

最后授予用户不同的角色,就可以实现不同粒度的权限分配了。