权限管理,一般指根据系统设置的安全规则或者安全策略,用户可以访问而且只能访问自己被授权的资源,不多不少,而统一权限管理则是将分布在各个系统中的权限管理模块统一规划在一个系统中,由一个系统集中管控多个业务系统的权限相关信息。
目前很多企业应用系统数量较多,从几个应用系统到十几个甚至几十个应用系统,各个应用系统独立采购、独立实施,缺少统一规划,权限体系各不相同。
各自系统面向用户群不同,有的面向全体员工,有的面向某个部门,有的面向某些岗位,用户类型多样。
各自系统权限体系独立管理维护,各自为政,为日常的管理员授权、权限变更、清权带来了不小的困扰,很多情况下,申请人不知道自己需要的权限,而管理员也不清楚申请人申请的权限是否达到权限最小化的要求,加之系统数量又多,结合到一起导致了企业里权限管理和使用混乱,很难梳理清楚、说得明白。
用户在多个系统中都有账号,但是却无法直观的快速地了解到用户在企业中到底具备哪些系统权限,权限的高低也很难统计,用户离职后账号权限无法做到快速清权,往往人员离职半年后此人的管理员账号依然可以使用,带来了很多安全隐患。
一般会将权限体系分为如下几种:
1)大门级权限
2)角色级权限
3)菜单级权限
4)操作级权限
5)数据级权限
大门级权限管理
顾名思义,只做大门级的权限控制,至于用户在应用系统大门内有什么样的权限,完全由应用系统自己控制管理。
这种控制是最粗粒度的控制了,好在比较容易集成、推广。
角色级权限控制
通过集中管理各个系统中的角色,结合统一用户管理,可实现用户在各个系统中的角色级权限的统一管控。
而每个角色在各个系统中具备的权限则是由应用系统完全独立的控制管理。
菜单级的权限控制
统一授权模块管理维护一套应用系统的菜单、按钮,通过角色与菜单的映射,集中管理多个系统的角色-菜单权限。
操作级的权限控制
在菜单级权限控制的基础上,将页面上的操作动作也一并管理维护,即页面上的操作按钮,简单说就是增、删、改、查等操作的统一授权管理,此种管理模式,可将权限控制得更加细致、准确。
数据级权限控制
数据级的权限控制更多的则是业务场景相关,不会考虑统一集中管控,一般是通过部门、岗位等人员属性条件进行统一管理维护,真正的权限控制策略,则是由应用系统去把控,例如用户岗位是财务经理,则可以看到财务系统中的全部数据,而财务部门的其他人员则看到部分数据。在此场景下,统一身份管理授权的数据级权限则转变为用户身份管理的各种身份信息的管理维护。
我们今天要分享的则是一例基于角色的菜单、按钮级别的统一权限管理案例。
案例背景
要做到细粒度权限的统一管控,由于涉及各个应用系统的权限梳理、集成改造,须要应用系统给予大力的支持,以及上级大领导的强力推动,否则很难有比较明显的成果。
而此案例的大背景则是政府行业,信息化建设统一规划,将一批新建系统统一整合,在此契机下,应用系统可以很好地配合权限统一管控体系的建设。
权限核心要素
统一权限须要从几个维度维护管理权限相关的信息:
● 用户身份信息
● 应用系统信息
● 系统角色信息
● 应用系统菜单、按钮信息
1、用户身份信息
身份信息的维护管理根据实际场景主要分为两类:
? 已有身份源系统,例如HR系统
将身份源系统中的身份信息同步到权限管理系统中,并做定时或实时的数据同步集成。
? 无身份源系统
在权限管理系统中维护管理用户的身份信息,将权限管理系统作为身份数据源。
2、应用系统维护
须要将管理的应用系统注册到统一权限管理平台中,注册时会生成认证、鉴权相关的唯一标识。
3、角色维护
维护管理各个应用系统中的角色列表,由于将来的管理模式是由统一权限管理平台来管控权限,所以应用系统无须在自己系统中管理角色信息。
4、菜单、按钮维护
维护管理各个应用系统中的菜单、按钮列表,须要与应用系统中的菜单和按钮对应。
授权关系
在统一授权平台中维护管理如下授权关系:
1、系统角色对应系统菜单/按钮的权限定义
2、应用系统与系统角色的对应关系
3、用户与应用系统角色的授权关系
统一认证、鉴权逻辑
统一认证鉴权主要包含如下三个环节:
1、门户系统的登录
门户系统的认证与其他应用系统的逻辑一致,在此场景中是为了更好地体现出统一认证的效果,所以把门户的认证单独描述。
2、应用系统的认证
第一次访问应用系统链接时,须要进行此逻辑的交互认证。
3、鉴权逻辑
登录完成后,再访问的所有菜单/按钮都须要有应用系统服务器端的鉴权逻辑,避免越权操作。
(1)用户访问门户系统,跳转至认证中心认证。
(2)用户在认证中心页面登录,输入正确的用户名密码。
(3)认证成功后,进入门户系统页面。
(4)用户在门户页面点击应用系统的链接,请求流转至应用系统。
(5)应用系统拦截器判断没有session,向认证中心发起认证“请求code临时票据”,请求方式为浏览器重定向。
(6)应用系统根据浏览器返回的code参数,通过服务器间的API请求获取“access_token”,避免使用浏览器方式请求。
(7)应用系统根据access_token请求认证中心,获取用户信息和权限信息(角色列表、菜单/按钮列表),成功后,进入系统,展现菜单/按钮。
(8)用户点击某个菜单/按钮时,应用系统后台须要到认证中心鉴权,根据access_token和应用标识、菜单/按钮编号请求鉴权接口,判断用户是否有权限访问此菜单/按钮。
(9)根据鉴权结果判断是否允许用户访问此菜单。
主要难点
● 统一标准规范的制定。
● 下游多个业务系统须要按照制定的权限管理标准进行集成改造。
● 为达到效果,业务系统是否按照标准确实落实,须要监督。
业务价值
● 统一了业务系统权限管理,集中管理业务系统的权限。
● 提供统一权限视图,可方便快捷的查看用户的全局权限。
● 规范了业务系统的权限管理,提高系统权限管理规范性。
● 提供全局鉴权体系,防止越权操作。
● 提供访问审计,集中审计用户在多个系统中的操作行为。