一、 前言
管理信息系统是一个复杂的人机交互系统,其中每个具体环节都可能受到安全威胁。构建强健的权限管理系统,保证管理信息系统的安全性是十分重要的。权限管理系统是管理信息系统中可代码重用性最高的模块之一, 也是重复开发率最高的模块之一。任何多用户的系统都不可避免的涉及到相同的权限需求,都需要解决实体鉴别、数据保密性、数据完整性、防抵赖和访问控制等安全服务(ISO7498-2)。例如,访问控制服务要求系统根据管理员已经设定的操作权限,控制操作者可以访问哪些资源,以及确定对资源如何进行操作。
采用统一的安全管理设计思想,规范化设计和先进的技术架构体系,构建一个通用的、完善的、安全的、易于管理的、有良好的可移植性和扩展性的权限管理系统,使得权限管理系统真正成为权限控制的核心,在维护系统安全方面发挥重要的作用,是十分必要的。
二、 访问控制
访问控制技术是一个安全信息系统不可或缺的安全措施,对保护数字资源的安全有着重要意义。访问控制技术起源于20C70年代,当时是为了满足管理大型主机系统上共享数据授权访问的需要;随着计算机技术和应用的发展,特别是网络应用的发展,这一技术的思想和方法迅速应用于信息系统的各个领域。在30年的发展过程中,先后出现了多种重要的访问控制技术,它们的基本目标都是防止非法用户进入系统和合法用户对系统资源的非法使用。为了达到这个目标,访问控制常以用户身份认证为前提,在此基础上实施各种访问策略来控制和规范合法用户在系统中的行为。
权限控制的中心是对访问数据的控制。访问控制(也称存取控制)的目的是根据需要批准或禁止用户访问数字资源,确保用户对数据只能进行经过授权的有关操作;使每个用户都能方便地访问其在工作中所需要的数据(根据其责任和资格),同时屏蔽不允许他们访问的数据。
在访问控制机制中,一般把被访问的资源称为“客体”,把以用户名义进行资源访问的进程、事务等实体称为“主体”。因此访问控制的基本目标就是为了限制访问主体(用户、进程、服务等)对访问客体(文件、系统等)的访问权限,从而使计算机系统在合法范围内使用;决定用户能做什么,也决定代表一定用户权益的程序能做什么。
目前,访问控制机制理论有四种:
·自主存取控制(Discretionary Access Control,DAC);
·强制存取控制(Mandatory Access Control,MAC);
·基于角色的存取控制(Role-based Access Control,RBAC);
·使用控制(Usage Control,UCON)。
其中前三者被广泛使用。
1、 自主存取控制(DAC)
自主存取控制随分时系统的出现而产生,其基本思想是:系统中的主体可以自主的将其拥有的对客体的权限部分或者全部授予其它主体。其通常通过访问控制列表(ACL:Access Control List)来实现,包括基于行(主体)的DAC和基于列(客体)的DAC。基于行的DAC在每个主体上都附加一个该主体可访问的客体的明细表,而基于列的DAC则在每一个客体上都附加一个可以访问该客体的主体的明细表。
DAC访问控制完全基于访问者和对象的身份。在DAC机制中,用户对不同的数据对象有不同的存取权限,而且还可以将其拥有的存取权限转授给其他用户。
DAC实现简单,在早期得到了广泛的应用。但是由于其允许访问权的传递,使得传递出去的访问权难以管理;另外其无法保护受保护资源的副本;最后,其用于管理主客体数量巨大的系统将造成开销巨大,效率低下的问题,难以满足大型应用,特别是网络应用的需要。
目前在我国的大多数的信息系统中的访问控制模块中基本是借助于自主存取控制机制的访问控制列表(ACLs)。
2、 强制存取控制(MAC)
强制存取控制最初源于对信息机密性的要求以及防止特洛伊木马之类的攻击,其最开始应用于军方系统中。其通过对主体和客体分配固定的安全属性,利用安全属性来决定主体是否可以对客体的进行访问。安全属性是固定的,任何用户或者用户进程都无法改变自身或者其它主/客体的安全属性。另外,MAC通常和DAC结合使用,主体只有通过了MAC和DAC检查后才能访问客体,因而可以防止特洛伊木马之类的程序窃取信息。
MAC的本质是基于格的非循环单向信息流政策。对于不同类型的信息采取不同层次的安全策略,对不同类型的数据来进行访问授权。在MAC机制中,存取权限不可以转授,所有用户必须遵守有管理员建立的安全规则,最基本的规则是“向下读取,向上写入”。MAC具有两个关键规则:“不向上读,不向下写”,即信息只能由低安全级向高安全级流动,任何反向信息流动都是被禁止的。
虽然其通过增加访问限制来增加了信息的机密性,但是也不可避免的降低了系统的灵活性,另外其不能实施完整性控制,这限制了它在网络中的应用。再者,现代计算机中不可避免的存在大量的逆向潜信道,如:共享内存,大量的Cache,这也影响了其的广泛应用。
MAC用于多层次安全级别的军事应用。
3、 基于角色的存取控制(RBAC)
RBAC在主体和权限之间增加了一个中间桥梁——角色。角色可以看作是一组操作的集合,不同的角色具有不同的操作集,这些操作由系统管理员分配给角色。用户的授权是通过授予用户一个角色来实现的,即赋予用户一个角色,一个用户可以承担不同的角色,从而实现授权的灵活性。
权限被授予角色,而管理员通过指定用户为特定角色来为用户授权;从而大大简化授权管理,减少授权管理的复杂性,降低管理开销,使权限管理系统具有强大的可操作性和可管理性。角色可以根据组织中的不同工作创建,然后根据用户的责任和资格分配角色,用户可以轻松地进行角色转换。而且随着新应用和新系统的增加,角色可以分配更多的权限,也可以根据需要撤销相应的权限。从而灵活地支持企业的安全策略,并对企业的变化有了很大的伸缩性。
RBAC属于策略中立的访问控制模型,既可以实现自主存取控制策略(DAC),又可以实现强制存取控制策略(MAC),可以有效缓解传统安全管理处理瓶颈问题,被认为是一种普通适用的访问控制模型,尤其适用于大型组织的统一资源有效的访问控制机制。
4、 使用控制(UCON)
UCON目前还停留在理论阶段。UCON对传统的存取控制进行了扩展,定义了授权(Authorization)、职责(Obligation)和条件(Condition)3个决定性因素,同时提出了存取控制的连续性(Continuity)和易变性(Mutability)两个重要属性。(Park. J,Sundhu. R,2002)UCON优化了传统的访问控制、可信管理,以及数字权力管理,从而用系统方式提供了一个保护数字资源的统一标准的框架,为下一代存取控制机制提供了新思路。
三、 RBAC(一):初步
RBAC(Role-based Access Control,缩写RBAC),即基于角色的访问控制,作为一种灵活和直观的访问控制技术在20世纪90年代(RBAC96)迅速发展起来。RBAC通过引入角色(role)的新概念来实施访问控制策略。不同的角色和它所应具有的权限许可(permission)互相联系,用户(user)作为某些角色的成员,获得角色所拥有的权限。角色可以根据实际的单位或组织的不同工作职能和权限来划分(生成或取消),依据用户所承担的不同权利和义务来授权相应的角色。对于一个存在大量用户和权限的权限分配系统来说,从用户到角色的管理,简化了权限分配的复杂性,提高了安全管理的效率和质量。
(一)、RBAC参考模型
为了将人和权限解藕,RBAC模型引入Role概念,目的是为了隔离用户(User,即动作主体)与权限(Privilege)。角色(Role)作为一个用户与权限的代理层,解耦了权限和用户的关系,所有的授权应该给予角色而不是直接给用户或组(Group)。权限是权限颗粒,由操作(Operation)和资源(Resource)组成,表示对资源的一个操作,即“Operation + Resource”;例如,对于新闻的删除操作。角色-权限(Role-Privilege)是多对多(Many-to-Many)的关系,这是权限的核心。整个RBAC参考模型就是围绕Role来建立的。
RBAC参考模型(Reference Model)如图1。
图1:RBAC模型
对该模型定义如下:
U,R,P,S:用户(USERS),角色(ROLES),权限(PRMS),会话(SESSIONS);
PA⊆P*R:权限分配,多对多的关系;
UA⊆U*R:用户分配,多对多关系;
Users:S>U,每一个会话 s 对应单一用户 user(s)的映射;
Roles:会话 s 到角色集合role(s) ⊆{r | (user(s), r) ε PA}
易见:该模型由三个实体组成,分别是:用户(U)、角色(R)、权限(P)。其中用户指自然人;角色就是组织内部一件工作的功能或工作的头衔,表示该角色成员所授予的职责的许可,系统中拥有权限的用户可以执行相应的操作。
RBAC的关注点在角色和用户以及权限间的关系,称为用户委派(User assignment,UA)和权限委派(Permission assignment,PA)。关系的左右两边都是多对多(Many-to-Many)关系。可以说,UA和PA就相当于中间表;事实上,整个RBAC都是基于关系模型。
用户与角色之间以及角色与权限之间用双双箭头相连表示用户角色分配 UA 和角色权限分配 PA 关系都是多对多的关系,即一个用户可以拥有多个角色,一个角色也可被多个用户所拥有。同样的,一个角色拥有多个权限,一个权限能被多个角色所拥有。用户建立会话从而对资源进行存取,每个会话 S 将一个用户与他所对应的角色集中的一部分建立映射关系,这个角色会话子集称为会话激活的角色集。于是,在这次会话中,用户可以执行的操作就是该会话激活的角色集对应的权限所允许的操作。
(二)、RBAC参考模型部件
NIST(The National Institute of Standards and Technology,美国国家标准与技术研究院,2004)标准RBAC模型由4个部件模型组成,这4个部件模型分别是:
·基本模型RBAC0(Core RBAC);
·角色分级模型RBAC1(Hierarchical RBAC,含General,Limited);
·角色限制模型RBAC2(Constraining RBAC,含Static/Dynamic Separation of Duty,即SSD和DSD);
·统一模型RBAC3(Combines RBAC)。
1、RBAC0
RBAC0(Core RBAC)定义了能构成一个RBAC控制系统的最小的元素集合。在RBAC0之中,包含最基本的5个元素:用户集(users,USERS)、角色集(roles,ROLES)、目标/对象集(objects,OBS)、操作集(operations,OPS)、许可权/特权集(permissions,PRMS)。权限被赋予角色,而不是用户,当一个角色被指定给一个用户时,此用户就拥有了该角色所包含的权限。会话集(sessions,SESSIONS)是用户与激活的角色集合之间的映射。RBAC0与传统访问控制的差别在于增加一层间接性(角色)带来了灵活性,RBAC1、RBAC2、RBAC3都是先后在RBAC0上的扩展。
RBAC0模型如图2所示:
图2:RBAC0模型
用户(User):代表人,也可以是一台机器、agent、或者其他任何智能型物品。
角色(Role):表示一个工作职责,在一个组织机构环境中的工作职责。该职责可以关联一些关于权力和责任的语义。
权限(Permission):是一个许可,对在一个或多个对象上执行操作的许可。如:“一个文档”不是权限,“删除”也不是权限,只有“对文档的删除”才是权限。由于RBAC标准定义的权限是正向授权(正权限),并没有禁止负向授权(负权限),因此可以自定义负权限。正向授权在开始时假定主体没有任何权限,然后根据需要授予权限,适合于权限要求严格的系统。负向授权在开始时假定主体有所有权限,然后将某些特殊权限收回。
操作(Operation):是程序的可执行的反映(image),被用户调用和执行。操作的类型取决于实现系统的类型。
对象(Object):表示资源(Resource)或目标,任何访问控制机制都是为了保护系统的资源。对象包括:文件、目录,数据库表、行、字段,磁盘空间,打印机,甚至CPU周期等。
会话(Session)在RBAC0中是比较隐晦的一个元素。RBAC标准定义:每个会话是一个映射,一个用户到多个角色的映射。当一个用户激活他所有角色的一个子集时,建立一个会话。每个会话和单个用户关联,每个用户可以关联到一个或多个会话。当用户执行一段过程(Process)或一个动作(Action)时,将使用到相关的Role(所有Role的子集);这个过程就可以称为一个会话。
2、RBAC1
RBAC1(Hierarchical RBAC)引入角色间的继承关系。
角色间的继承关系可分为一般(General)继承关系和受限(Limited)继承关系。一般继承关系仅要求角色继承关系是一个绝对偏序关系,允许角色间的多继承。而受限继承关系则增加了职责关系的分离,进一步要求角色继承关系是一个树结构。一般继承的RBAC和受限继承的RBAC两者的区别在于:前者是图;而后者可以有多个父节点但只能有一个子节点,是一个反向树结构。
RBAC1模型如图3:
图3:RBAC1模型
角色继承用于解决复杂组织机构之间的权限关系。它是一种“很自然地”对组织机构层次中权限和责任的映射。如:总经理→部门经理→业务员。角色继承的方向和用户的关系方向相反,即权限最小的在顶端:业务员→部门经理→总经理。如:若所有role_salesman(业务员)的权限都是role_Mgr(经理)的权限,那么role_Mgr继承自role_salesman。
3、RBAC2
RBAC2(Constraining RBAC)模型中添加了责任分离(Separation of Duty ,SoD)关系;这是RBAC最复杂的部分。RBAC2的约束规定了权限被赋予角色时,或角色被赋予用户时,以及当用户在某一时刻激活一个角色时所应遵循的强制性规则。责任分离包括静态责任分离(Static Separation of Duty,SSD)和动态责任分离(Dynamic Separation of Duty,DSD)。约束(Constraining)与用户-角色-权限关系一起决定了RBAC2模型中用户的访问许可。
图4:RBAC2模型
RBAC标准定义:职责关系分离(SoD)用于增强利益冲突策略,这种策略某些组织机构可能会需要,即避免用户超出其当前职位合理的权限等级。简单地说,就是避免两个角色间的冲突。如:会计和出纳,在一般公司都不允许同一个人兼任。因此在分配角色的时候,应该禁止这两种角色赋给同一人。
静态责任分离(SSD),即在系统初始化时,当角色授给用户时来判断是否将冲突的角色给了同一用户。在RBAC标准中,冲突的角色被定义为一个二元关系,就是说,任何一个用户只能拥有其中的一个。
动态责任分离(DSD),指相冲突的角色可以同时给一个,但是在一次会话中不能同时扮演两个冲突的角色。如:在超市POS系统中,ywf可以是收银员或收银员主管(ROLE)。收银员必须经过主管才能打开收银机的抽屉修改某次结账错误。如果收银员角色的一个单独的行为中需要从收银员切换到主管,那么DSD要求,这个用户(USER)必须先放弃收银员角色;即,当该收银员正在收银时发现错误,必须要先关闭抽屉,然后再次以主管身份打开抽屉才行。
4、RBAC3
RBAC3包含了RBAC1和RBAC2,既提供了角色间的继承关系,又提供了责任分离关系。参图4。
本文转自:http://blog.163.com/yesaidu@126/blog/static/51819307200711231852769/
分享到:
相关推荐
RBAC-SC:基于智能合约的基于角色的访问控制 本文提出了一种基于智能合约的基于角色的访问控制(RBAC-SC),它利用以太坊的智能合约技术实现角色的跨组织利用。RBAC-SC 使用智能合约和区块链技术,是一种多功能的...
**基于Django的RBAC权限控制模块** 在Web开发中,权限控制是不可或缺的一部分,它确保用户只能访问他们被授权的资源。Role-Based Access Control(RBAC)是一种常见的权限管理模型,通过角色来分配权限,使得系统...
项目概述:本项目管理系统基于流行的Python Flask框架,实现了一套完整的RBAC(基于角色的访问控制)权限管理功能。项目采用多种编程语言和技术栈,确保了前端的丰富交互和后端的高效稳定。 技术组成: - 主要编程...
### 基于RBAC与监听器机制设计作业管理软件 #### 一、项目背景与目标 本项目旨在设计一款适用于教育场景中的作业管理系统,利用角色基础的访问控制(Role-Based Access Control,简称RBAC)及监听器机制来实现安全...
**RBAC(Role-Based Access Control)用例规约与需求** RBAC模型是一种常见的权限管理机制,它将权限分配给角色,角色再分配给用户,而不是直接将权限赋予用户。这样,管理员可以更加灵活和安全地管理用户权限,...
项目简介:本项目是一款基于Python的Flask框架与光年后台结合开发的RBAC(基于角色的访问控制)权限管理系统。该系统由258个文件组成,其中包含的主要编程语言为Python,同时融合了JavaScript、HTML、CSS等语言,以...
基于 Spring Cloud Hoxton 、Spring Boot 2.2、 OAuth2 的RBAC权限管理系统 基于数据驱动视图的理念封装 Ant Design Vue,即使没有 vue 的使用经验也能快速上手 提供 lambda 、stream api 、webflux 的生产实践 ...
### RBAC标准基本原理 #### 一、引言 角色基于访问控制(Role-Based Access Control,简称RBAC)作为一种安全模型,在信息系统管理中扮演着重要角色。它通过定义不同的角色来实现对用户权限的管理,从而确保数据的...
【标题】"一个基于RBAC的权限管理系统"指的是采用Role-Based Access Control(基于角色的访问控制)模型构建的权限管理解决方案。在IT行业中,权限管理是确保系统安全性和数据隐私的关键部分,尤其对于多用户、多...
基于RBAC(Role-Based Access Control,基于角色的访问控制)的权限管理是一种广泛采用的策略,它将权限与角色关联,而不是直接分配给单个用户。这种设计模式简化了权限管理,提高了系统的灵活性和可扩展性。下面...
本源码提供了一个基于Spring Boot 3.2的微服务RBAC权限管理系统设计。项目包含591个文件,其中包括363个Java源文件、71个JavaScript文件、42个XML文件、13个YAML文件、11个TTF字体文件、11个WOFF字体文件、10个CSS...
项目概述:本源码为基于角色基础访问控制(RBAC)模型的中小型应用开发平台,采用前后端分离架构。后端基于Python的Django框架和Django REST Framework实现,前端则使用Vue.js配合ElementUI进行构建。移动端支持通过...
### RBAC权限体系设计UML解析 #### 一、引言 在当今信息化时代,确保信息安全及合理使用已成为各类组织的重要任务之一。基于角色的访问控制(Role-Based Access Control,简称RBAC)作为一种广泛应用于企业管理信息...
本笔记主要探讨了如何利用FastAPI和Vue3框架实现基于角色的访问控制(Role-Based Access Control,简称RBAC)来管理菜单、路由、按钮以及接口的权限。我们将深入探讨FastAPI的特性、Vue3的优势以及RBAC的原理,以及...
在IT行业中,权限控制是系统安全的关键组成部分,而Role-Based Access Control(RBAC)是一种广泛采用的权限模型。本文将深入探讨"RBAC权限控制代码"的相关知识点,以及如何通过监听器、过滤器和拦截器实现这一机制...
**ThinkPHP RBAC架构代码详解** 在Web开发中,权限管理是不可或缺的一部分,尤其是对于大型企业级应用。Role-Based Access Control(RBAC)基于角色的访问控制是一种有效的权限管理模式,它将用户与权限通过角色...
**RBAC简易设计C#** 角色(Role)、权限(Permission)和用户(User)是RBAC(Role-Based Access Control,基于角色的访问控制)模型的核心元素。在C#环境中实现RBAC,我们可以创建一个灵活、可扩展的权限管理系统...
【RBAC】基于springboot+shiro实现RBAC权限后台管理系统.zip 项目结构 |—— ctrl —— 请求层 |—— service —— 业务层 |—— common |—— |—— annotation —— 项目中使用的注解 |—— |—— aspect —— ...