一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第7天,点击查看活动详情。
我们如果要实现一个这样的方案:
- 系统管理员可以增删改查人员
- 所有人可以建团队
- 管理员可以删除团队,增加成员并对其进行角色设置
- 任意角色团队下面可以新建应用
- 管理员可以对应用可以对成员进行增删改查
我们首先要确定用什么样的访问控制模型,通过以上要求,我们可以分析一下访问控制语句都有哪些:
- 是系统管理员的人能增删改查其它人
- 所有人可以新建团队
可以看出来,所有的人都有一个角色,所以我们可以采用基于角色的权限控制。 一共有哪些角色,每个角色有哪些权限:
- 系统管理员:增删改查,人;新建,团队
- 系统普通成员:新建,团队
- 团队管理员:删除,团队;增加,成员;新建,应用;
- 团队普通成员:新建,应用;
- 应用管理员:增删改查,成员;开发,应用;
- 应用开发成员:开发,应用;
可以看到管理员级别的人,普通成员拥有的权限他们都有,所以可以采用RBAC1来实现,因为RBAC1增加了角色继承的特点,可以非常好地匹配这一点。
那么我们如果采用 RBAC,能否实现这一点?
我们可以继续分析:
- 拥有系统管理员身份的人,在任意情况下,都能对任意普通成员,进行增删改查。
- 拥有普通成员身份的人,能在任意情况下,新建,团队
可以看到用 RBAC,也能实现我们的诉求,只不过有点绕。所以可以看到,RBAC 适合一些比较简单的场景,如果场景比较细的情况下,才建议用 RBAC,通常情况下 RBAC 完全能满足我们的权限管理要求。