权限
最近项目的0.2阶段需要加上权限功能,产品方给了一个需求文档,让我们参与共创。所以借此梳理梳理权限的东西。其实万变不离其宗,我觉得基本上权限设计都是基于RBAC模型来设计的。
我认为的权限应该是分为两种:
- 应用权限。也就是我们通常说的系统权限,比如用户、角色、权限等等。
- 认证。通常说的是验证某个用户是否具有访问系统的权限,实现方案比如OAuth、OAuth2、Open API等等。
权限复杂度的设计依业务场景而定,我是基本上做的都是toB,所以权限这块会相对复杂些。不同的toB系统权限设计肯定也不同。不过我觉得大体可以分为三种toB权限设计场景。私有云、私有云(对客户定制开发并部署在客户现场 的我也归为私有云)、混合云。当然我比较熟的是公有云和私有云的,混合云的我还没涉及到过,不过我觉得是混合云应该和公有云的权限设计比较接近。
下图我参与过的某toB平台,我理解的权限设计。
租户那块为什么单独标注呢,租户是一个比较大的概念,通常表名一个公司或者个人。
下面是我另外参与的私有云项目的权限设计。
这个权限你会发现有一个域的概念,是因为我们的客户是集团性质的客户,会有总公司、分公司、事业部等概念,因为每个分公司或者事业部大体上都是独立运营的,但是他们又是属于一个集团,所以我们出现了域的概念。一个域可以理解为一个公司或者事业部但是我们不强关联,域是扁平的增加了灵活性。还有一点需要注意在这儿部门(组织)是不纳入权限的,我们使用角色来控制,为什么还需要部门,是为了让角色更丰满,部门可为角色打上标签,客户也好理解。同时也减少了复杂性。
名称解释
资源
因为要打造的是一个APM系统,所以里面会涉及到CMDB,资源这个名称就是CMDB来的当然一般我们叫CI(具体一个配置项,也叫CI实例),要详细讲就要讲到CMDB了,要讲CMDB那就复杂了,不是一两篇能说清楚的,后面有机会我会试着讲讲我理解的CMDB和CMDB在我们系统是怎么定义以及怎么用的。
RBAC
基于角色的访问控制,所以你会发现这个模型能满足大多数的权限设计。至少我没见过没有角色这个概念的权限设计。
google和博客说的更清楚