《信息安全技术鉴别与授权基于角色的访问控制模型与管理规范(GB-T 25062-2010).docx》由会员分享,可在线阅读,更多相关《信息安全技术鉴别与授权基于角色的访问控制模型与管理规范(GB-T 25062-2010).docx(38页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、GB/T 国家质量监督检验检疫总局 发布-实施-发布信息安全技术 鉴别与授权基于角色的访问控制模型与管理规范Information security technology Authentication and authorization Role-based access control model and management specification(报批稿)GB/T 中华人民共和国国家标准ICS 35.040L80II目 次前言II引言III1 范围12 规范性引用文件13 术语和定义14 缩略语25 一致性26 RBAC参考模型26.1 概述26.2 核心RBAC36.3 层次RBA
2、C46.4 带约束的RBAC57 RBAC系统和管理功能规范77.1 概述77.2 核心RBAC87.3 层次RBAC137.4 静态职责分离关系167.5 动态职责分离21附录A(资料性附录)功能规范概述26附录B(资料性附录)组件原理31附录C(资料性附录)Z语言示例33前 言本标准的附录A、附录B和附录C为资料性附录。本标准由全国信息安全标准化技术委员会(TC260)提出并归口。本标准起草单位:中国科学院软件研究所,信息安全共性技术国家工程研究中心。本标准主要起草人:冯登国、徐震、翟征德、张敏、张凡、黄亮、庄湧。引 言主流IT产品供应商开始在他们的数据库管理系统安全管理系统、网络操作系统
3、等产品中大量实现基于角色的访问控制功能,然而却没有对其特征集达成一致。缺乏广为接受的模型,导致了对基于角色的访问控制效用和含义理解的不规范性和不确定性。本标准参照ANSI INCITS 359-2004,使用一个参考模型来定义基于角色的访问控制的特征,并描述这些特征的功能规范,通过以上方法来解决这些不规范与不确定的问题。III信息安全技术 鉴别与授权基于角色的访问控制模型与管理规范1 范围本标准规定了基于角色的访问控制(RBAC)模型、RBAC系统和管理功能规范。本标准适用于信息系统中RBAC子系统的设计和实现,相关系统的测试和产品采购亦可参照使用。2 规范性引用文件下列文件中的条款通过本标准
4、的引用而成为本标准的条款。凡是注日期的引用文件,其随后所有的修改单(不包括勘误的内容)或修订版均不适用于本标准,然而,鼓励根据本标准达成协议的各方研究是否可使用这些文件的最新版本。凡是不注日期的引用文件,其最新版本适用于本标准。ISO/IEC 13568-2002信息技术-Z形式规范注释语法、形式系统和语义学3 术语和定义下列术语和定义适用于本标准。3.1组件component这里是指四个RBAC特征集之一:核心RBAC层次RBAC静态职责分离关系动态职责分离关系。3.2对象object需要进行访问控制的系统资源,例如文件打印机终端数据库记录等。3.3操作operation一个程序的可执行映像
5、,当被调用时为用户执行某些功能。3.4权限permission对受RBAC保护的一个或多个对象执行某个操作的许可。3.5角色role组织语境中的一个工作职能,被授予角色的用户将具有相应的权威和责任。3.6用户user人、机器网络自主智能代理等,进行资源或服务访问的实施主体。3.7会话 session从用户到其激活的角色集合的一个映射。3.8职责分离 separation of duty限制用户获得存在利益冲突的权限集的约束,例如用户不能同时获得会计和审计的权限。4 缩略语下列缩略语适用于本标准:RBAC基于角色的访问控制(Role Based Access Control)SSD 静态职责分离
6、(Static Separation of Duty)DSD动态职责分离(Dynamic Separation of Duty)USERS用户集(User Set)ROLES角色集(Role Set)OBJS对象集(Object Set)OPS操作集(Operation Set)SESSIONS会话集(Session Set)PRMS权限集(Privilege Management Set)ACL访问控制列表(Access Control List)5 一致性对于特定的应用,并非所有的RBAC特征都是必要的。因此,本标准提供了一种通过对功能组件和同一功能组件内的特征进行选择,以组装构成所需要的
7、RBAC特征的方法。本标准首先定义了一个RBAC的特征核心集合,任何其他的特征包都必须包含这一核心特征集。在构建RBAC特征包时,角色层次,静态约束(静态职责分离),动态约束(动态职责分离)是可选组件。6 RBAC参考模型6.1 概述RBAC参考模型通过四个RBAC模型组件来进行定义核心RBAC角色层次RBAC静态职责分离关系动态职责分离关系。核心RBAC定义了能够完整地实现一个RBAC系统所必需的元素元素集和关系的最小集合,其中包括最基本的用户/角色分配和权限/角色分配关系。此外,它还引入了角色激活的概念作为计算机系统中用户会话的一个组成部分。核心RBAC对于任何RBAC系统而言都是必需的,
8、其它RBAC组件彼此相互独立并且可以被独立地实现。角色层次RBAC组件支持角色层次。角色层次从数学上讲是一个定义角色之间级别关系的偏序,高级别的角色获得低级别角色的权限,低级别角色获得高级别角色的用户成员。此外,层次RBAC还引入了角色的授权用户和授权权限的概念。静态职责分离针对用户/角色分配定义了角色间的互斥关系。由于可能与角色继承产生不一致,静态职责分离关系组件在没有角色层次和存在角色层次的情况下分别进行了定义。动态职责分离关系针对用户会话中可以激活的角色定义了互斥关系。每个模型组件都由下列子组件来定义:a) 一些基本元素集;b) 一些基于上述基本元素集的RBAC关系;c) 一些映射函数,
9、在给定来自某个元素集的实例元素的情况下能够得到另一个元素集的某些实例元素。RBAC参考模型给出了一种RBAC特征的分类,可以基于这些分类的特征构建一系列RBAC特征包。本标准的主要目的不是试图定义RBAC特征的全集,而是致力于提供一组标准的术语来定义已有的模型和商业产品中最主要的RBAC特征。6.2 核心RBAC核心RBAC的元素集和关系在图1中进行了定义。核心RBAC包含了5个基本的数据元素:用户集(USERS)角色集(ROLES)对象集(OBJS)操作集(OPS)权限集(PRMS)。权限被分配给角色,角色被分配给用户,这是RBAC的基本思想。角色命名了用户和权限之间的多对多的关系。此外,核
10、心RBAC中还包含了用户会话集,会话是从用户到该用户的角色集的某个激活角色子集的映射。角色是组织上下文中的一个工作职能,被授予了角色的用户将具有相应的权威和责任。权限是对某个或某些受RBAC保护的对象执行操作的许可。操作是一个程序的可执行映像,被调用时能为用户执行某些功能。操作和对象的类型依赖于具体系统,例如在一个文件系统中,操作可以包含读写执行;在数据库管理系统中,操作包含select、insertdeleteupdate等。访问控制机制的核心功能是保护系统资源。与以前的访问控制模型一致,RBAC模型中的对象是包含或接收信息的实体。对一个实现RBAC的系统,对象可以代表信息容器(如操作系统中
11、的文件和目录或数据库中的表视图字段),或者诸如打印机磁盘空间CPU周期等可耗尽的系统资源。RBAC覆盖的对象包括所有在分配给角色的权限中出现的对象。RBAC中一个很重要的概念是角色的相关分配关系。图1中给出了用户分配关系(UA)和权限分配关系(PA)。图中的箭头表示关系是多对多的(例如,一个用户可以被分配给多个角色并且一个角色可以被分配给多个用户)。这种安排带来了给角色分配权限和给角色分配用户时的灵活性和细粒度。如果没有这些,就有可能造成给用户分配过多的对资源的访问权限;能够更灵活地控制对资源的访问权限也有助于最小特权原则的实施。图1 核心RBAC用户在建立一个会话的时候可以激活他/她所被分配
12、的角色的某个子集。一个会话只能与一个用户关联,一个用户可能同时拥有多个会话。函数session_roles返回一个会话激活的角色,函数session_user给出会话的用户。在用户的会话中保持激活状态的角色的权限构成了用户的可用权限。以下为核心RBAC规范:a) 分别代表:用户集角色集操作集对象集;b) ,一个多对多的映射,代表用户/角色分配关系;c) ,一个映射,给出分配了角色r的用户,;d) ,权限集;e) ,一个多对多的映射,代表权限/角色分配关系;f) ,一个映射,给出分配给角色r的权限,;g) ,权限到操作的映射,给出与权限p关联的操作;h) ,权限到对象的映射,给出与权限p关联的对
13、象;i) ,会话集;j) ,一个从会话s到对应用户的映射;k) ,一个从会话s到其激活的角色集的映射, ;l) ,一个从会话s到它拥有的权限集的映射,。6.3 层次RBAC6.3.1 概述如图2所示,层次RBAC引入了角色层次。角色层次通常被作为RBAC模型的重要部分,并且经常在RBAC商业产品中得以实现。角色层次可以有效地反映组织内权威和责任的结构。角色层次定义了角色间的继承关系。继承通常是从权限的角度来说的,例如,如果角色r1“继承”角色r2,角色r2的所有权限都同时为角色r1所拥有。在某些分布式RBAC实现中,角色层次是集中管理的,而权限/角色分配却是非集中管理的。对这些系统,角色层次的
14、管理主要是从用户成员包含关系的角度进行的:如果角色r1的所有用户都隐含地成为角色r2的用户,则称角色r1“包含”角色r2。这种用户成员包含关系隐含了这样一个事实:角色r1的用户将拥有角色r2的所有权限。然而角色r1和角色r2之间的权限继承关系并不对它们的用户分配做任何假设。本标准认可两种类型的角色层次通用角色层次和受限角色层次。通用角色层次支持任意偏序关系,从而支持角色之间的权限和用户成员的多重继承。受限角色层次通过施加限制来得到一个简单的树结构(一个角色可以拥有一个或多个直接祖先角色,即继承多个角色;但只能有一个直接后代角色,即被一个角色继承)。6.3.2 通用角色层次a) 是一个称为继承的
15、角色之间的偏序关系,记作。如果r1r2,则角色r1拥有角色r2的所有权限并且角色r1的用户都将是角色r2的用户;b) ,一个在角色层次存在的情况下从角色到该角色的授权用户的映射,;c) ,一个在角色层次存在的情况下从角色到其授权权限的映射,。图2层次RBAC通用角色层次支持多重继承的概念,从而使得一个角色可以从两个或者更多其它角色继承权限或用户成员。多重继承具有两个重要的性质。第一,多重继承使得可以通过从几个低级别的角色来构建较高级别角色的方式来定义角色间的关系以反映组织和事务的结构。第二,多重继承使得可以一致地对待用户/角色分配关系和角色/角色继承关系。用户也可以被包含在角色层次中,并且仍然
16、用来代表用户/角色分配以及用户对角色权限的继承。在受限角色层次中,一个角色只能有一个直接后代。尽管受限角色层次不支持权限的多重继承,但与层次RBAC比较却具有管理上的优势。如果r1 r2并且这两个角色之间不存在其它的角色(即不存在不同于角色r1和角色r2的角色r3,满足r1 r3r2),则r1是r2的直接祖先,记作r1r2。6.3.3 受限角色层次受到下述限制的通用角色层次:r, r1, r2ROLES, rr1rr2r1=r2。 角色层次可以用偏序图来表示。图中的节点代表角色,如果r1是r2的直接后代,则存在从r1指向r2的有向箭头。在角色层次的偏序图上,rxry当且仅当存在从rx到ry的有
17、向路径。由于角色之间的偏序关系是传递和反对称的,所以不存在有向回路。通常,角色层次图上的箭头与角色间的继承关系相一致都是自上而下的,因此角色用户成员的继承是自上而下的,而角色权限的继承是自下而上的。6.4 带约束的RBAC6.4.1 概述带约束的RBAC模型增加了职责分离关系。职责分离关系可以被用来实施利益冲突(Conflict Of Interest)策略(防止某个人或某些人同时对于不同的某些个人、某些集团或组织以及某种事物在忠诚度和利害关系上发生矛盾的策略)以防止组织中用户的越权行为。作为一项安全原则,职责分离在工商业界和政府部门得到了广泛的应用,其目的是保证安全威胁只有通过多个用户之间的
18、串通勾结才能实现。具有不同技能和利益的工作人员分别被分配一项事务中不同的任务,以保证欺诈行为和重大错误只有通过多个用户的勾结才可能发生。本标准支持静态和动态的职责分离。6.4.2 静态职责分离关系在RBAC系统中,一个用户获得了相互冲突的角色的权限就会引起利益冲突。阻止这种利益冲突的一个方法是静态职责分离,即对用户/角色分配施加约束。本标准中定义的静态约束主要是作用于角色,特别是用户/角色分配关系,也就是说,如果用户被分配了一个角色,他/她将不能被分配另一些特定的角色。从策略的角度,静态约束关系提供了一种有效的在RBAC元素集上实施职责分离和其它分离规则的有效手段。静态约束通常要限制那些可能会
19、破坏高层职责分离策略的管理操作。以往的RBAC模型通常通过限制一对角色上的用户分配来定义静态职责分离(一个用户不能同时分配处于SSD关系下的两个角色)。尽管现实世界中确实存在这样的例子,这样定义的SSD在两个方面限制性太强:SSD关系中角色集的成员数(只能为2)和角色集中角色的可能组合情况(每个用户最多只能分配角色集中的一个角色)。在本标准中,静态职责分离通过两个参数定义:一个包含两个或更多角色的角色集和一个大于1的阈值(用户拥有的角色中包含在该角色集中角色的数量小于这个阈值)。例如,一个组织可能要求任何一个用户不能被分配代表采购职能的4个角色中的3个。正如图3所示,静态职责分离可能存在于层次
20、RBAC中。在存在角色层次的情况下,必须注意不要让用户成员的继承违反静态职责分离策略。为此,层次RBAC也被定义为继承静态职责分离约束。在角色层次RBAC中,为了解决可能出现的不一致性,静态职责分离被定义为针对角色的授权用户的约束。图3 层次RBAC下的静态职责分离a) 静态职责分离由一组形如(rs, n)的对构成,其中rs是角色的集合,t是rs的子集,满足任何用户都不能同时被分配rs中的n个或者更多角色,。b) 层次RBAC下的静态职责分离在存在角色层次的情况下,静态职责分离基于角色的授权用户而不是直接分配了该角色的用户进行重新定义,。6.4.3 动态职责分离关系静态职责分离关系和动态职责分
21、离(DSD)关系的目的都是限制用户的可用权限,不过它们施加约束的上下文不同。SSD定义并且施加约束到用户总的权限空间上,而DSD通过约束一个用户会话可以激活的角色来限制用户的可用权限。DSD使用户可用以在不同的时间拥有不同的权限,从而进一步扩展了对最小特权原则的支持。DSD能够保证权限的有效期不超过完成某项职责所需要的时间段,这通常被称为信任的及时撤销。在没有DSD的情况下,动态的权限撤销是非常困难的,因此通常被忽略。SSD解决在给用户分配角色的时候可能存在的利益冲突问题。DSD允许用户同时拥有两个或者更多这样的角色:这些角色在各自独立地被激活时不会产生安全威胁,而同时被激活时就可能会产生违反
22、安全策略的行为。动态职责分离被定义为针对用户会话激活的角色的约束(见图4)。图4 动态职责分离关系由一组形如(rs,n)的对构成,其中rs是角色的集合,满足没有任何主体能激活rs中的n个或更多角色。7 RBAC系统和管理功能规范7.1 概述RBAC功能规范描述了创建和维护RBAC元素集和RBAC关系的管理操作;进行管理查询的管理查看函数;创建和维护用户会话的RBAC属性和进行访问控制决策的系统函数。本标准对这些函数进行了足够细致的定义,以便支持一致性测试和保证的需要,同时给开发者提供了足够的设计灵活性以满足用户的需求。RBAC功能规范使用的Z标记方法由ISO/IEC 13568-2002定义。
23、唯一的例外是模式表示如下:模式名(声明)谓词;谓词。这里使用的大多数抽象数据类型和函数都来自RBAC参考模型,但在必要的时候,将会引入新的抽象数据类型和函数。为了描述方便,这里首先需要引入符号NAME。NAME是个元素为实体标识的抽象数据类型,这些实体可能包含在RBAC系统之中或者之外(角色用户会话等)。7.2 核心RBAC7.2.1 核心RBAC管理函数本节定义了核心RBAC的管理函数。a) AddUser该命令创建一个新的用户。当要待创建用户尚不存在于USERS集合中时,该命令可用。命令执行后,USERS被更新,新创建的用户不拥有任何的会话。下面的模式形式化地描述了AddUser:b) D
24、eleteUser该命令从RBAC数据库中删除一个已经存在的用户。该命令可用当且仅当被删除的用户是USERS数据集的一个成员。USERS数据集UA数据集和assigned_users函数被更新。如果一个正处在会话中的用户被删除,如何处理该用户的会话依赖于具体实现。实际RBAC系统可以等待该会话结束或者强行终止它。下面的模式形式化地描述了DeleteUser:c) AddRole该命令创建一个新的角色。该命令可用当且仅当要创建的角色尚且不存在于ROLES数据集。ROLES数据集assigned_users和assigned_permisssions函数被更新。初始时,新创建的角色没有分配任何用户
25、和权限。下面的模式形式化地描述了AddRole:d) DeleteRole该命令从RBAC数据库中删除一个角色。该命令可用当且仅当被删除的角色是ROLES数据集的成员。如果被删除的角色在某些会话中尚且是激活的,如何处理这些话是一个具体实现需要决定的问题。实际RBAC系统可以等待这样的会话结束或强行终止它们或从会话中删除这个角色然后允许会话继续执行。下面的模式形式化地描述了DeleteRole:e) AssignUser该命令给用户分配角色。该命令可用当且仅当该用户是USERS数据集的成员,该角色是ROLES数据集的成员,并且该角色尚未分配给该用户。数据集UA和函数assigned_users被
26、更新。下面模式形式化地描述了该命令:f) DeassignUser该命令删除一个角色role到用户user的分配。该命令可用当且仅当user是USERS数据集的成员,role是ROLES数据集的成员,并且角色role已经分配给了用户user。如果user正拥有某些会话并且role在这些会话中是激活的,如何处理这样的会话是一个具体实现需要决定的问题。实际RBAC系统可以等待这样一个会话结束,或者强行终止它,或者取消激活该角色。下面模式形式化地描述了该命令:g) GrantPermission该命令给一个角色分配对一个对象执行某个操作的权限。该命令可用当且仅当给定的(操作,对象)代表了一项权限并且
27、该角色是ROLES数据集的成员。在实际实现中,该命令可能实现为授予对应于该角色的组以相应的权限,即修改对象的ACL。下面的模式形式化地定义了该命令:h) RevokePermission该命令从分配给角色的权限集中撤销对某个对象执行某个操作的权限。该命令可用当且仅当(操作,对象)代表一项权限,并且该权限已经分配给了该角色。在实际的实现中,该命令可能实现为撤销对应于该角色的组的权限,即修改对象的ACL。下面的模式形式化地描述了该命令:7.2.2 核心RBAC支持系统函数本节定义了核心RBAC的支持系统函数。a) CreateSession该函数创建一个新的会话,以指定的用户作为会话拥有者,以指定
28、的角色集作为激活角色集。该函数可用当且仅当用户user是USERS数据集的成员并且激活角色集是用户分配的角色集的子集。在实际RBAC实现中,会话的角色集可能对应于一些组。下面的模式形式化的描述了该函数。Session参数是一个由底层系统产生的用于标识会话的标识符。b) DeleteSession该函数删除一个会话。该函数可用当且仅当会话标识符是SESSIONS数据集的成员。下面的模式形式化地描述了该函数。c) AddActiveRole该函数为给定的用户会话增加一个激活角色。该函数可用当且仅当:1) 该用户是USERS数据集的成员;2) 该角色是ROLES数据集的成员;3) 会话标识符是SES
29、SIONS数据集的成员;4) 该角色已经分配给了该用户;5) 该用户拥有该会话。在实现时,该角色可能对应于一个相应的组。下面的模式形式化地描述了该函数:d) DropActiveRole该函数从给定用户会话中删除一个激活角色。该函数可用当且仅当该用户是USERS数据集的成员,会话标识是SESSIONS数据集的成员,该用户是该会话的拥有者并且该角色是该会话的一个激活角色。下面的模式形式化地描述了该函数:e) CheckAccess该函数决定一个给定的会话的主体是否允许对给定的对象执行某个给定的操作并返回一个布尔值。该函数可用当且仅当会话标识符是SESSIONS数据集的成员,该对象是OBJS数据集
30、的成员,该操作是OPS数据集的成员。会话的主体可以对该对象执行该操作当且仅当会话的某个激活角色拥有对应的权限。实际实现可能使用在对象的ACL中的对应于激活角色的组和其相应的权限。下面的模式形式化地描述了该函数:7.2.3 核心RBAC查看函数本节定义了核心RBAC的查看函数。a) AssignedUsers该函数返回被分配给了某个指定角色的用户。该函数可用当且仅当该角色是ROLES数据集的成员。下面的模式形式化地描述了该函数:b) AssignedRoles该函数返回分配给了一个给定用户的角色。该函数可用当且仅当该用户是USER数据集的成员。下面的模式形式化地描述了该函数:7.2.4 核心RB
31、AC高级查看函数本节定义了核心RBAC的高级查看函数。a) RolePermissions该函数返回分配给一个给定角色的权限。该函数可用当且仅当该角色是ROLES数据集的成员。下面的模式形式化地描述了该函数:b) UserPermissions该函数返回一个给定用户的权限。该函数可用当且仅当该用户是USERS数据集的成员。下面的模式形式化地描述了该函数:c) SessionRoles该函数返回给定会话的激活角色。该函数可用当且仅当该会话标识符是SESSIONS数据集的成员。下面的模式形式化地描述了该函数:d) SessionPermissions该函数返回给定会话的权限,即该会话的激活角色拥有
32、的权限。该函数可用当且仅当会话标识符是SESSIONS数据集的成员。下面的模式形式化地描述了该函数:e) RoleOperationsOnObject该函数返回一个给定角色被允许的对给定对象执行的操作。该函数可用当且仅当该角色是ROLES数据集的成员,该对象是OBJS数据集的成员。下面的模式形式化地描述了该函数:f) UserOperationsOnObject该函数返回给定用户被允许的针对给定对象执行的操作。该函数可用当且仅当该用户是USERS数据集的成员,该对象是该OBJS数据集的成员。下面模式形式化地描述了该函数:7.3 层次RBAC7.3.1 通用角色层次7.3.1.1 通用角色层次管
33、理函数7.2.1中的函数在本节当中都是有效的,这里还定义了一些新的函数。a) AddInheritance该命令在两个已经存在的角色r_asc和r_desc之间建立直接继承关系r_ascr_desc。该命令可用当且仅当r_asc和r_desc都是ROLES数据集的成员,r_asc不是r_desc的直接祖先,并且r_desc不继承r_asc(避免产生回路)。以下模式使用了下述记号:该命令的形式化描述如下:b) DeleteInheritance该命令删除已经存在的直接继承关系r_ascr_desc。该命令可用当且仅当r_asc和r_desc是ROLES数据集的成员,r_asc是r_desc的直接
34、祖先。在执行完该命令以后,新的继承关系是新的直接继承关系的自反传递闭包。下面的模式形式化地描述了该命令:c) AddAscendant该命令创建一个新角色r_asc,并作为现存角色r_desc的直接祖先插入到角色层次中去。该命令可用当且仅当r_asc不是ROLES的成员,r_desc是ROLES数据集的成员。注意可用性条件的验证是在AddInheritance中引用的模式AddRole和AddInheritance中进行的。d) AddDescendant该命令创建一个新的角色作为现存角色r_asc的直接后代插入到角色层次中。该命令可用当且仅当r_desc不是ROLES的成员,r_asc是RO
35、LES数据集的成员。注意可用性条件是在AddDescedant中引用的AddRole和AddInheritance中验证的。7.3.1.2 通用角色层次支持系统函数本节扩展了7.2.2条的函数CreateSession和AddActiveRole。7.2.2条的其余函数都保持有效。a) CreateSession该函数为指定用户创建一个新会话,该会话以指定的角色集作为其激活角色集。该函数可用当且仅当:1) 该用户是USERS数据集的成员;2) 指定的激活角色集是该用户授权角色集的子集。注意,即使一个角色在一个会话中是激活的,它的祖先和后代在该会话中未必激活。在实际的RBAC实现中,会话的激活角
36、色集可以实现为与这些角色对应的组。下面的模式形式化地描述了该函数。参数Session实际上是由底层系统产生的。b) AddActiveRole该函数给指定的用户会话增加一个激活角色。该函数可用当且仅当:1) 该用户是USERS数据集的成员;2) 该角色ROLES数据集的成员;3) 该会话标识符是SESSIONS数据集的成员;4) 该角色是该用户的授权角色;5) 该用户拥有该会话。下面的模式形式化地描述了该函数:7.3.1.3 通用角色层次查看函数7.2.3条所有的函数都可用。本节定义了如下查看函数:a) AuthorizedUsers该函数返回拥有给定角色的授权用户。该函数可用当且仅当给定角色
37、是ROLES的成员。下面的模式形式化地描述了该函数:b) AuthorizedRoles该函数返回给定用户的授权角色。该函数可用当且仅当该用户是USERS数据集的成员。下面的模式形式化地描述了该函数:7.3.1.4 通用角色层次高级查看函数本节扩展了7.2.4条的RolePermissions和UserPermissions函数。该条其余函数都保持有效。a) RolePermissions该函数返回给定角色的所有权限。该函数可用当且仅当该角色是ROLES数据集的成员。下面模式形式化地描述了该函数:b) UserPermissions该函数返回给定用户所有授权角色的权限。该函数可用当且仅当该用户
38、是USERS数据集的成员。下面的模式形式化地描述了该函数:c) RoleOperationsOnObject该函数返回角色针对给定对象可以执行的操作集,这些操作有可能是该角色直接分配的和继承来的。该函数可用当且仅当该角色是ROLES数据集的成员,该对象是OBJS的成员。下面的模式形式化地描述了该函数:d) UserOperationsOnObject该函数返回给定用户针对给定对象可以执行的所有操作。该函数可用当且仅当用户是USERS数据集的成员,该对象是OBJS数据集的成员。下面模式形式化地描述了该函数:7.3.2 受限角色层次7.3.2.1 受限角色层次管理函数本节重新定义了7.3.1.1条
39、的AddInheritance函数,该条中所有其它函数保持有效。AddInheritance定义如下:该命令在两个已存在的角色r_asc和r_desc之间创建直接继承关系r_ascr_desc。该命令有效当且仅当a_asc和r_desc是ROLES数据集的成员,r_asc没有后代,r_desc不继承r_asc(避免出现回路)。下面的模式使用了如下记法:形式化地:7.3.2.2 受限角色层次支持系统函数7.3.1.2条定义的函数都有效。7.3.2.3 受限角色层次查看函数7.3.1.3条定义的函数都有效。7.3.2.4 受限角色层次高级查看函数7.3.1.4条定义的函数都有效。7.4 静态职责分
40、离关系7.4.1 静态职责分离本标准中的静态职责分离关系使用一组由角色集和阈值构成的SSD对。本节定义了新的数据类型SSD,该类型可以看作是用来标识SSD对的角色集的名字的集合。函数ssd_set和ssd_card分别用来获得SSD对中的角色集和阈值。7.4.1.1 SSD关系管理函数本节扩展了7.2.1条的AssignUser函数,该条的其余函数保持有效。本节还定义了一系列新的函数。a) AssignUser该命令取代核心RBAC中的同名函数。该命令给用户分配一个角色,其可用当且仅当:1) 该用户是USERS数据集的成员;2) 该角色是ROLES数据集的成员;3) 该用户还没有被分配该角色;
41、4) 所有SSD约束在执行完该命令后仍然被满足。数据集UA和函数assigned_users被更新。下面的模式形式化地描述了该命令:b) CreateSsdSet该命令创建一个命名的SSD角色集合,并设定相应的阈值。该命令可用当且仅当:1) SSD角色集的名称还没有被使用;2) SSD角色集中的角色都是ROLES数据集的成员;3) n是一个大于或等于2自然数,同时还要小于或等于SSD角色集的基数;4) 新的SSD角色集的约束当前是被满足的。下面的模式形式化地描述了该命令:c) DeleteSsdRoleMember该命令从一个命名的SSD角色集中删除一个角色,关联的阈值不发生改变。该命令有效当
42、且仅当:1) SSD角色集已经存在;2) 要删除的角色是该SSD角色集的成员;3) 该SSD角色集关联的阈值小于该角色集的基数。注意:修改后的SSD约束应该当前是被满足的。下面的模式形式化地描述了该命令:d) DeleteSsdSet该命令删除一个SSD角色集。该命令可用当且仅当该SSD角色集存在。下面的模式形式化地描述了该命令:e) SetSsdSetCardinality该命令设定SSD角色集关联的阈值。该命令可用当且仅当:1) 该SSD角色集存在;2) 新的阈值是一个大或者等于2的自然数,它要小于或等于SSD角色集的基数;3) 新的SSD约束当前应该是被满足的。下面模式形式化地描述了该命
43、令:7.4.1.2 静态职责分离支持系统功能7.2.2条中的函数保持有效。7.4.1.3 静态职责分离查看函数7.2.3条中的函数保持有效,此外本节还定义了如下函数:a) SsdRoleSets该函数返回所有SSD角色集的名称。下面的模型形式化地描述了该函数:b) SsdRoleSetRoles该函数返回一个给定SSD角色集中的角色。该函数可用当且仅当该角色集存在。下面的模式形式化地描述了该函数:c) SsdRoleSetCardinality该函数返回与给定SSD角色集关联的阈值。该函数可用当且仅当该角色集存在。下面的函数形式化地描述了该函数:7.4.1.4 静态职责分离高级查看函数7.2.
44、4条中的函数保持有效。7.4.2 通用角色层次静态职责分离7.4.2.1 通用角色层次静态职责分离管理函数本节重新定义了7.3.1.1条的AssignUser及AddInheritance函数和7.4.1.1条的CreateSsdSet,AddSsdRoleMember,SetSsdSetCardinality。这两节中其余的函数保持有效。a) AssignUser该命令取代了核心RBAC静态职责分离中的同名函数。该命令进行用户/角色分配,它可用当且仅当:1) 该用户是USERS数据集的成员;2) 该角色是ROLES数据集的成员;3) 该用户尚且没有被分配该角色;4) 在该命令执行之后所有SS
45、D约束仍然是满足的。数据集UA和函数assigned_users被更新。下面的模式形式化地描述了该命令:b) AddInheritance该命令在两个角色r_asc和r_desc之间建立直接继承关系r_ascr_desc。该命令可用当且仅当:1) r_asc和r_desc都是ROLES数据集的成员;2) r_asc不是r_desc的直接祖先;3) r_desc不继承r_asc;4) SSD约束在该命令执行后仍是满足的。下面的模式使用了如下记法:来形式化地描述该命令。c) CreateSsdSet该命令创建一个命名的SSD角色集合,并设定相应的阈值。该命令可用当且仅当:1) SSD角色集的名称还
46、没有被使用;2) SSD角色集中的角色都是ROLES数据集的成员;3) n是一个大于或等于2自然数,同时还要小于或等于SSD角色集的基数;4) 新的SSD角色集的约束当前是被满足的。下面的模式形式化地描述了该命令:d) AddSsdRoleMember该命令为SSD角色集增加一个角色,该SSD角色集关联的阈值不发生改变。该命令可用当且仅当:1) 该SSD角色集存在;2) 该角色是ROLES数据集的成员,并且尚不属于该SSD角色集;3) 该命令执行之后,SSD约束仍然是满足的。下面的模式形式化地描述了该模式:e) SetSsdSetCardinality该命令设定与给定的SSD角色集关联的阈值。该命令可用当且仅当:1) 该SSD角色集存在;2) 新的阈值是一个大或者等于2的自然数,它小于或等于SSD角色集的基数;3) 该命令执行之后,SSD约束仍然是满足的。下面模式形式化地描述了该命令:7.4.2.2 通用角色层次静态职责分离支持系统函数7.3.1.