团队管理的权限设计方案

363 阅读2分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第7天,点击查看活动详情

我们如果要实现一个这样的方案:

  1. 系统管理员可以增删改查人员
  2. 所有人可以建团队
  3. 管理员可以删除团队,增加成员并对其进行角色设置
  4. 任意角色团队下面可以新建应用
  5. 管理员可以对应用可以对成员进行增删改查

我们首先要确定用什么样的访问控制模型,通过以上要求,我们可以分析一下访问控制语句都有哪些:

  1. 是系统管理员的人能增删改查其它人
  2. 所有人可以新建团队

可以看出来,所有的人都有一个角色,所以我们可以采用基于角色的权限控制。 一共有哪些角色,每个角色有哪些权限:

  1. 系统管理员:增删改查,人;新建,团队
  2. 系统普通成员:新建,团队
  3. 团队管理员:删除,团队;增加,成员;新建,应用;
  4. 团队普通成员:新建,应用;
  5. 应用管理员:增删改查,成员;开发,应用;
  6. 应用开发成员:开发,应用;

可以看到管理员级别的人,普通成员拥有的权限他们都有,所以可以采用RBAC1来实现,因为RBAC1增加了角色继承的特点,可以非常好地匹配这一点。

那么我们如果采用 RBAC,能否实现这一点?

我们可以继续分析:

  1. 拥有系统管理员身份的人,在任意情况下,都能对任意普通成员,进行增删改查。
  2. 拥有普通成员身份的人,能在任意情况下,新建,团队

可以看到用 RBAC,也能实现我们的诉求,只不过有点绕。所以可以看到,RBAC 适合一些比较简单的场景,如果场景比较细的情况下,才建议用 RBAC,通常情况下 RBAC 完全能满足我们的权限管理要求。