设为首页 加入收藏

TOP

基于资源的权限系统-设计思路
2016-12-14 08:15:14 】 浏览:430
Tags:基于 资源 权限 系统 设计 思路

权限系统提的最多的就是 RBAC(基于角色的访问控制)。 所谓角色,其实就是权限的集合,某个角色就是某几个权限的结合。其目的是为了简化授权和鉴权的过程。


基于角色的权限控制用在简单的权限环境下没有问题,如果在权限控制比较复杂的系统中,或者说要做通用的权限系统时,基于角色的权限控制会带来以下问题:


基于角色的权限系统一般简称 RBAC,而这里的 RBAC 是指 基于资源的权限系统。


目的是设计一种通用的权限管理系统,不和任何的实际的业务关联,只做权限相关的管理和验证。 之所以以 资源 为核心,是因为上面的提到的那些基于 角色 的限制。 基于资源的权限系统是围绕 组织树资源树 来进行权限的。


权限系统本身提供一个超级用户(admin),通过此用户来初始化最初需要的信息。


初始信息只需要定义:


有了以上信息,就完成了针对某个系统和组织的权限系统的基本初始化。 基本信息初始化之后,可以导入组织/人员,以及资源信息,或者直接在权限系统提供的页面上操作。


注意 每个资源只有一个父节点,每个组织也只有一个父组织,但是每个人员可以属于多个组织。


授权是权限系统中重要的步骤之一,另一个重要步骤就是鉴权。 授权有2种视图:


鉴权是使用最频繁的步骤,几乎每次请求都会有鉴权的操作。 鉴权就是判断 某人对某资源做某个动作 是否合法,所以鉴权的 input 是 人员/组织,资源,动作; output 则是是否鉴权成功。


对功能权限来说,一般数据量不会太大,即使没有自动授权,手动授权也可以完成。 但是对数据权限来说,不仅数据量庞大,而且如何授权也不确定,数据的变化也可能会很频繁,手动来做几乎不可能。


自动授权目的是将自动授权机制参数化,让用户通过设置不同的参数来生成不同的权限数据。 自动授权机制是以插件的形式加入到权限系统中的,默认可以提供几种常用的自动授权机制插件。 在授权时,也可以指定使用一种或者多种自动授权插件。


下面以一个示例来说明插件是如何使用的。 示例插件:创建数据时自动授权插件 功能:用户A 创建数据X 后,生成如下权限数据:


此插件参数就是3个list:自己的动作列表,同组织成员的动作列表,其他组织人员的动作列表 插件的参数是在权限系统中的插件管理功能中配置的(插件参数的设置需要用到动态表单,因为插件的参数个数,类型等都是不定的)


使用流程如下:


针对不同类型的系统,授权方式千差万别,将授权的实现剥离出来,是为了增加系统的通用性。


通用权限管理的主要的功能就是 授权鉴权 ,其本质都是对权限数据(什么人对什么资源可以做什么动作)的管理。 授权的难点在于给某人授与某个数据的权限之后,组织中其他关联人员可以计算出自己对这个数据的权限,这就是自动授权插件的意义。 鉴权的难点一是权限的数据量会比较大(如果权限粒度细的话),一是有些权限是需要计算的。


基于角色的权限系统的核心在 角色(人员),而基于资源的权限系统核心在 资源,资源是权限系统需要保护的东西。 希望能从资源的角度来设计出更加通用的权限管理系统。


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇基于资源的权限系统-数据库设计 下一篇Linux的idr机制(32叉树)

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目