权限系统设计学习总结(1)——多租户的RBAC权限管理

一、公司(Company)

  公司包含了体系结构集合与用户集合。 公司可以存在上下级关系,这种关系仅限于展现形式,公司与公司之间没有权限继承,也就是说在授权管理中公司之间全部是扁平关系。公司的属性有以下内容:

属性 类型
公司编码 字符串
公司名称 字符串
上级公司 公司
在上级公司下的排序 数字
下级公司 公司列表
下属体系结构 体系结构列表
其下用户 用户集合

二、体系结构(Architecture)

  体系结构是由一系列组织机构通过层次关系组成的一个树形结构。一个公司下可根据业务需求存在多个体系机构,如人事组织结构、办公组织结构、财务组织结构、项目组织结构等。 体系结构可以存在上下级关系,这种关系仅限于展现形式,体系结构与体系结构之间没有权限继承,也就是说在授权管理中同一公司下的体系结构之间全部是扁平关系。体系结构的属性有以下内容:

属性 类型
体系结构编码 字符串
体系结构名称 字符串
所属公司 公司
上级体系结构 体系结构
在上级体系结构下的排序 数字
下级体系结构 体系结构列表
组织结构根节点 组织机构

三、组织机构(Organization)

  组织机构是体系结构上的一个节点,每个节点都有一个上级节点和若干个下级节点。组织机构是有级别的,其级别是其所在体系结构的层次深度,如在一个体系结构下最根的组织机构节点是1级,1级下面的组织机构节点是2级,2级下面的组织机构节点是3级…… 组织机构有实机构与虚机构之分,实机构是真是存在的组织机构,而虚机构一般是为了收纳一些零散的组织机构或用户所建立的虚拟组织机构。实组织机构是有级别的,而且其下级组织机构的级别会加1;而虚机构是不占用级别的,其下级组织机构(实机构)会在其上级组织机构(实机构)的基础上加1。如1级的实机构“A”下有一个实机构“AA”和一个虚机构“Ab”,实机构“AA”的级别是2级,虚机构“Ab”是不占级别的,其下如果也有一个实机构“AbA”和一个虚机构“Abb”,那么实机构“AbA”是2级,而虚机构“Abb”不占级别,“Abb”下的实机构“AbbA”级别是2级,因为其上的两级都是虚机构都不占级别。组织机构的属性有以下内容:

属性 类型
组织机构编码 字符串
组织机构名称 字符串
组织机构类型 数字
所属公司 公司
所属体系结构 体系结构
上级组织机构 组织机构
在上级组织机构下的排序 数字
下级组织机构 组织机构列表
包含角色 角色列表

四、角色(Role)

  角色是组织机构节点下的对象。角色也是可以有上下级关系的,一个角色下可以再拆分出多个角色,在权限控制时下级角色是可以继承上级角色的权限的。角色可以挂接在某个组织机构下,也可以挂接在某个角色下,但角色下是不能再挂接组织机构节点的。角色的属性有以下内容:

属性 类型
角色编码 字符串
角色名称 字符串
所属公司 公司
所属体系结构 体系结构
所属组织机构 组织机构
它继承的角色 角色
在所属组织机构或它继承的角色下的排序 数字
继承它的角色 角色列表
被授予的用户 用户集合

五、用户(User)

  一个用户有且仅属于一个公司。如果两个公司下存在对应相同账号的用户,那么这是两个用户。一个用户可以存在在多个体系结构中,但在一个体系结构中只能属于一个组织机构。一个用户可以拥有一个体系结构下的多个角色。用户的属性有以下内容:

属性 类型
用户账号 帐号
显示名称 字符串
所属公司 公司
所直属的组织结构 (不同体系结构下)组织机构集合
所直接拥有的角色 角色集合

六、域(Domain)

  域是用来区分不同账号的一个集合。在一个域中是不允许存在相同的账号的。不同域可以有重名的账号,这些账号只是名称相同但不是同一账号,因为其所属不同的域。 域与公司是两个概念。公司下有该公司独立的组织机构与用户群体,而域下包含的是一套系统账号。我们常见的“网易通行证”、“Google帐号”、“QQ帐号”、“微博帐号”都属于域帐号,其对应的域可以分别是“163.com或126.com”、“gmail.com”、“qq”、“weibo”。而“万科”是个公司,其下有自己的组织架构与员工(用户)集合。

七、帐号(Account)

  帐号是用户在应用系统中的标识。帐号是由账号名称和所在域构成,其表示方式可以用“[email protected]”来表示,有时也用“qq\12345678”这种方式表示。 帐号与用户不是相同的概念。但是在我们要讨论的权限管理的场景下这两者是有关系的。比如,“万科”公司为了经营管理需要购置了一套XX管理系统,登录系统的用户主要就是从事相关业务的员工,并要求其员工(用户)都用邮箱帐号来作为XX管理系统的登录帐号。但是每个员工使用的邮箱都不相同,有用“163邮箱”的、有用“gmail邮箱”的、有用“qq邮箱”的…… 从功能角度来说,账号是用来做登录认证的,而用户是用来做授权的。帐号的属性有以下内容:

属性 类型
帐号 字符串
所属域
显示名称 字符串
密码 字符串
状态 数字

八、帐号关联(Relation)

  帐号关联是所属不同域的账号之间建立的关联关系,这种关联关系不是一对一的关联,而是多个账号间的关联。不同域的账号与账号之间一般是存在关联的。比如一个人的邮箱是“[email protected]”、QQ号码是“12345678”、微博帐号是“zhang_san”、手机号码是“13812345678”……这些都是所属不同域的不同账号。这些帐号都可以认证,其认证结果都可以验证这个人的身份。现在有一个论坛,这个论坛支持163邮箱、QQ、微博或手机登录。这个论坛用户可以绑定任何一类帐号,也可以同时绑定多种帐号,其中任一绑定的帐号认证通过都可以认证用户身份。那么“帐号关联”就是描述这些账号属于论坛同一个用户的这么一种关系。可以把“帐号关联”想象成一个“链”,这个“链”上把若干个账号串接了起来,这些帐号是有关联关系的。同一“链”中一个域只能存在一个账号,不存在两个账号所属同一个域的情况。“账号关联”的来源可能有多处,每一处来源都会形成一个“链”,比如在论坛A里记录了张三手机和邮箱的账号关联,社交平台B中记录了张三邮箱与QQ号的账号关联,这是两个“链”。

九、应用(Application)

  应用是为了实现某项业务的若干功能的集合,也是传统意义上的应用系统的概念。应用系统由若干功能组合,我们把功能可以当作是一种资源。应用的属性有以下内容:

属性 类型
应用ID 字符串
应用名称 字符串
应用密钥 字符串
功能集合 资源列表

十、资源(Resource)

  应用下有若干资源,有些资源是用户界面、有些资源是接口服务、有些资源是数据服务、有些资源是图片等静态资源……这些都是不同的资源类型。资源通过树形结构的形式进行排列和组织,并挂接在应用下面可供索引和使用。资源的属性有以下内容:

属性 类型
资源名称 字符串
资源路径 字符串
资源类型 字符串
所属应用 应用
上级资源 资源
上级资源路径下排序 数字
下级资源 资源列表

十一、权限对象(Authorization)

  权限对象是权限授予的记录。权限对象除了基本名称等信息外主要包括两部分:权限所有者和所有者被授予的权限。 权限所有者可以是若干个指定的用户、可以是若干个指定的组织机构、还可以是若干个指定的角色。 所有者被授予的权限一般是指定的资源的集合。权限对象的属性有以下内容:

属性 类型
权限对象编码 字符串
权限对象名称 字符串
权限所有者 用户集合&组织机构集合&角色集合
所拥有权限 资源集合

你可能感兴趣的:(权限系统设计)