1、ICS 35.040 L 80 GB 中华人民主t/、和国国家标准G/T 25062-2010 信息安全技术鉴别与授权基于角色的访问控制模型与管理规范Information security technology-Authentication and authorization 一Role-based access control model and management specification 2010-09-02发布2011-02-01实施号扭币鸟伽中华人民共和国国家质量监督检验检茂总局中国国家标准化管理委员会发布G/T 25062-2010 目次前言.皿引言.N I 范围.2 规范性
2、引用文件.3 术语和定义.4 缩略语.25 一致性6 RBAC参考模型.6. 1 概述6. 2 核心RBAC6.3 层次RBAC46.4 带约束的RBAC7 RBAC系统和管理功能规范-7.1 概述.7.2 核心RBAC77.3 层次RBAC7.4 静态职责分离关系147.5 动态职责分离四附录A(资料性附录)功能规范概述nA.1 椒述nA.2 核心RBAC的功能规范. . . . . . . . . . 23 A.3 层次RBAC功能规范MA.4 静态职责分离关系功能规范MA.5 动态职责分离关系功能规范25A.6 功能规范包m附录B(资料性附录)组件原理.27 旦1概述 U B.2 核心R
3、BAC27B.3 层次RBAC27B. 4 静态职责分离关系B.5 动态职责分离 n 附录C(资料性附录)Z语言示例mI G/T 25062-2010 目。吕本标准的附录A、附录B和附录C为资料性附录。本标准由全国信息安全标准化技术委员会(SAC/TC260)提出并归口。本标准起草单位:中国科学院软件研究所,信息安全共性技术国家工程研究中心。本标准主要起草人:冯登国、徐震、瞿征德、张敏、张凡、黄亮、庄溃。E GB/T 25062-2010 51 -EH 主流IT产品供应商开始在他们的数据库管理系统、安全管理系统、网络操作系统等产品中大量实现基于角色的访问控制功能,然而却没有对其特征集达成一致。
4、缺乏广为接受的模型,导致了对基于角色的访问控制效用和含义理解的不规范性和不确定性。本标准参照ANSIINCITS 359-2004,使用一个参考模型来定义基于角色的访问控制的特征,并描述这些特征的功能规范,通过以上方法来解决这些不规范与不确定的问题。N GB/T 25062-2010 信息安全技术鉴别与授权基于角色的访问控制模型与管理规范1 范围本标准规定了基于角色的访问控制(RBAC)模型、RBAC系统和管理功能规范。本标准适用于信息系统中RBAC子系统的设计和实现,相关系统的测试和产品采购亦可参照使用。2 规范性引用文件下列文件中的条款通过本标准的引用而成为本标准的条款。凡是注日期的引用文
5、件,其随后所有的修改单(不包括勘误的内容)或修订版均不适用于本标准,然而,鼓励根据本标准达成协议的各方研究是否可使用这些文件的最新版本。凡是不注日期的引用文件,其最新版本适用于本标准。ISO/IEC 13568: 2002 信息技术Z形式规范注释语法、形式系统和语义学3 术语和定义下列术语和定义适用于本标准。3. 1 组件component 这里是指四个RBAC特征集之一:核心RBAC、层次RBAC、静态职责分离关系、动态职责分离关系。3.2 对象。均ect需要进行访问控制的系统资源,例如文件、打印机、终端、数据库记录等。3.3 操作operation 一个程序的可执行映像,当被调用时为用户执
6、行某些功能。3.4 权限permission 对受RBAC保护的一个或多个对象执行某个操作的许可。3.5 角色role 组织语境中的一个工作职能,被授予角色的用户将具有相应的权威和责任。3.6 用户user 人、机器、网络、自主智能代理等,进行资源或服务访问的实施主体。3. 7 会话session 从用户到其激活的角色集合的一个映射。3.8 职责分离separation of duty 限制用户获得存在利益冲突的权限集的约束,例如用户不能同时获得会计和审计的权限。1 GB/T 25062一20104 缩畸语下列缩略语适用于本标准:RBAC SSD DSD USERS ROLES OBJS OP
7、S SESSIONS PRMS ACL 5 一致性基于角色的访问控制(RoleBased Access Control) 静态职责分离(StaticSeparation of Duty) 动态职责分离(DynamicSeparation of Duty) 用户集(UserSet) 角色集(RoleSet) 对象集(ObjectSet) 操作集(OperationSet) 会话集(SessionSet) 权限集(PrivilegeManagem巳ntSet) 访问控制列表(AccessControl List) 对于特定的应用,并非所有的RBAC特征都是必要的。因此,本标准提供了一种通过对功能组
8、件和同一功能组件内的特征进行选择,以组装构成所需要的RBAC特征的方法。本标准首先定义了一个RBAC的特征核心集合,任何其他的特征包都必须包含这一核心特征集。在构建RBAC特征包时,角色层次,静态约束(静态职责分离),动态约束(动态职责分离)是可选组件。6 RBAC参考模型6. 1 概述RBAC参考模型通过四个RBAC模型组件来进行定义一核心RBAC、角色层次RBAC、静态职责分离关系、动态职责分离关系。核心RBAC定义了能够完整地实现一个RBAC系统所必需的元素、元素集和关系的最小集合,其中包括最基本的用户/角色分配和权限/角色分配关系。此外,它还引入了角色激活的概念作为计算机系统中用户会话
9、的一个组成部分。核心RBAC对于任何RBAC系统而言都是必需的,其他RBAC组件彼此相互独立并且可以被独立地实现。角色层次RBAC组件支持角色层次。角色层次从数学上讲是一个定义角色之间级别关系的偏序,高级别的角色获得低级别角色的权限,低级别角色获得高级别角色的用户成员。此外,层次RBAC还引入了角色的授权用户和授权权限的概念。静态职责分离针对用户/角色分配定义了角色间的互斥关系。由于可能与角色继承产生不一致,静态职责分离关系组件在没有角色层次和存在角色层次的情况下分别进行了定义。动态职责分离关系针对用户会话中可以激活的角色定义了互斥关系。每个模型组件都由下列子组件来定义:a) 一些基本元素集;
10、b) 一些基于上述基本元素集的RBAC关系;c) 一些映射函数,在给定来自某个元素集的实例元素的情况下能够得到另一个元素集的某些实例元素。RBAC参考模型给出了一种RBAC特征的分类,可以基于这些分类的特征构建一系列RBAC特征包。本标准的主要目的不是试图定义RBAC特征的全集,而是致力于提供一组标准的术语来定义已有的模型和商业产品中最主要的RBAC特征。G/T 25062-2010 6.2 核心RAC核心RBAC的元素集和关系在图1中进行了定义。核心RBAC包含了5个基本的数据元素:用户集(USERS)、角色集(ROLES)、对象集(OBJS)、操作集(OPS)、权限集(PRMS)。权限被分
11、配给角色,角色被分配给用户,这是RBAC的基本思想。角色命名了用户和权限之间的多对多的关系。此外,核心RBAC中还包含了用户会话集,会话是从用户到该用户的角色集的某个激活角色子集的映射。角色是组织上下文中的一个工作职能,被授予了角色的用户将具有相应的权威和责任。权限是对某个或某些受RBAC保护的对象执行操作的许可。操作是一个程序的可执行映像,被调用时能为用户执行某些功能。操作和对象的类型依赖于具体系统,例如在一个文件系统中,操作可以包含读、写、执行;在数据库管理系统中,操作包含select、insert、delete、update等。访问控制机制的核心功能是保护系统资源。与以前的访问控制模型一
12、致,RBAC模型中的对象是包含或接收信息的实体。对一个实现RBAC的系统,对象可以代表信息容器(如操作系统中的文件和目录或数据库中的表、视图、宇段),或者诸如打印机、磁盘空间、CPU周期等可耗尽的系统资源。RBAC覆盖的对象包括所有在分配给角色的权限中出现的对象。RBAC中一个很重要的概念是角色的相关分配关系。图1中给出了用户分配关系(UA)和权限分配关系(PA)。图中的箭头表示关系是多对多的(例如,一个用户可以被分配给多个角色并且一个角色可以被分配给多个用户)。这种安排带来了给角色分配权限和给角色分配用户时的灵活性和细粒度。如果没有这些,就有可能造成给用户分配过多的对资源的访问权限;能够更灵
13、活地控制对资源的访问权限也有助于最小特权原则的实施。(session roles) 图1核心RAC用户在建立一个会话的时候可以激活他/她所被分配的角色的某个子集。一个会话只能与一个用户关联,一个用户可能同时拥有多个会话。函数session_roles返回一个会话激活的角色,函数sesslOnuser给出会话的用户。在用户的会话中保持激活状态的角色的权限构成了用户的可用权限。以下为核心RBAC规范:a) USERS ,ROLES , OP S , OBJ S分别代表:用户集、角色集、操作集、对象集;b) UA C USERS X ROLES ,一个多对多的映射,代表用户/角色分配关系;c) as
14、signed一旷s(r:ROLES)2USERS,一个映射,给出分配了角色r的用户,assigned一旷s(r)= uUSERS I (u,r)UA ; d) PRMS C 2(OPSXOBS) ,权限集;e) PA C PERMS X ROLES ,一个多对多的映射,代表权限/角色分配关系;f) igned_permissions(r:ROLES)2FRMS,一个映射,给出分配给角色T的权限,signed_permissions(r) = PRMS I (户,r)PA; g) ops (:PRMS)op C OPS ,权限到操作的映射,给出与权限关联的操作;h) obs (户:PRMS)dJ
15、C OBS ,权限到对象的映射,给出与权限关联的对象;i) SESSIONS,会话集;j) session_er(s:SESSIONS)USERS,一个从会话5到对应用户的映射;3 GB/T 25062-2010 k) session _roles (s: SESSIONS)2ROLES,一个从会话5到其激活的角色集的映射,应ssion_ roles (s) E二r仨ROLESI (session_ers(s) ,r)UA ; 1) avail_session_户erms(s: SESSIONS)2PMS,一个从会话5到它拥有的权限集的映射,avail_session_erms (5) =U
16、TEssion_roles(s)创signed _perm ission (r)。6.3 层次RBAC6.3.1 导引如图2所示,层次RBAC引入了角色层次。角色层次通常被作为RBAC模型的重要部分,并且经常在RBAC商业产品中得以实现。角色层次可以有效地反映组织内权威和责任的结构。角色层次定义了角色间的继承关系。继承通常是从权限的角度来说的,例如,如果角色r1继承角色r2,角色r2的所有权限都同时为角色rl所拥有。在某些分布式RBAC实现中,角色层次是集中管理的,而权限/角色分配却是非集中管理的。对这些系统,角色层次的管理主要是从用户成员包含关系的角度进行的:如果角色rj的所有用户都隐含地成
17、为角色r2的用户,则称角色TI包含角色r20这种用户成员包含关系隐含了这样一个事实:角色rj的用户将拥有角色的所有权限。然而角色rj和角色r2之间的权限继承关系并不对它们的用户分配做任何假设。本标准认可两种类型的角色层次一通用角色层次和受限角色层次。通用角色层次支持任意偏序关系,从而支持角色之间的权限和用户成员的多重继承。受限角色层次通过施加限制来得到一个简单的树结构(即:一个角色可以拥有一个或多个直接祖先,但只能有一个直接后代)。6.3.2 通用角色层次通用角色层次的规范在核心RBAC的基础上扩展如下内容:a) RH c ROLES X ROLES是一个称为继承的角色之间的偏序关系,记作注。
18、如果rj注r2,则角色rl拥有角色r2的所有权限并且角色町的用户都将是角色r2的用户;b) uthorized一ers(r:ROLES)2USERS,一个在角色层次存在的情况下从角色到该角色的授权用户的映射,authorized_users(r) = u E USERS I r兰r八(u,r)UA; c) authorized _perm ission s (r :ROLES)2RMS,一个在角色层次存在的情况下从角色到其授权权限的映射,authorized_permissions(r) = PRMS I r 注TF八(户,r)PA。(session users) 角色层次(RH) (sess
19、ion roles) 图2层次RBAC通用角色层次支持多重继承的概念,从而使得一个角色可以从两个或者更多其他角色继承权限或用户成员。多重继承具有两个重要的性质。第一,多重继承使得可以通过从几个低级别的角色来构建较高级别角色的方式来定义角色间的关系以反映组织和事务的结构。第二,多重继承使得可以一致地对待用户/角色分配关系和角色/角色继承关系。用户也可以被包含在角色层次中,并且仍然用注来代表用户/角色分配以及用户对角色权限的继承。在受限角色层次中,一个角色只能有一个直接后代。尽管受限角色层次不支持权限的多重继承,但与层次RBAC比较却具有管理上的优势。GB/T 25062-2010 如果rj注r2
20、并且这两个角色之间不存在其他的角色(即不存在不同于角色rj和角色r2的角色巧,满足rj注r32兰r2),则rj是r2的直接祖先,记作rj-r2。6.3.3 受限角色层次受到下述限制的通用角色层次:V r ,rj ,r2ROLES ,r - -rj八r- -r2斗rj=r2 0 角色层次可以用偏序图来表示。图中的节点代表角色,如果rj是r2的直接后代,则存在从rj指向r2的有向箭头。在角色层次的偏序图上,rx注ry当且仅当存在从rx到ry的有向路径。由于角色之间的偏序关系是传递和反对称的,所以不存在有向回路。通常,角色层次图上的箭头与角色间的继承关系相一致都是自上而下的,因此角色用户成员的继承是
21、自上而下的,而角色权限的继承是自下而上的。6.4 带约束的RBAC6.4. 1 概述带约束的RBAC模型增加了职责分离关系。职责分离关系可以被用来实施利益冲突(ConflictOf Interest)策略(防止某个人或某些人同时对于不同的某些个人、某些集团或组织以及某种事物在忠诚度和利害关系上发生矛盾的策略)以防止组织中用户的越权行为。作为一项安全原则,职责分离在工商业界和政府部门得到了广泛的应用,其目的是保证安全威胁只有通过多个用户之间的串通勾结才能实现。具有不同技能和利益的工作人员分别被分配一项事务中不同的任务,以保证欺诈行为和重大错误只有通过多个用户的勾结才可能发生。本标准支持静态和动态
22、的职责分离。6.4.2 静态职责分离关系在RBAC系统中,一个用户获得了相互冲突的角色的权限就会引起利益冲突。阻止这种利益冲突的一个方法是静态职责分离,即对用户/角色分配施加约束。本标准中定义的静态约束主要是作用于角色,特别是用户/角色分配关系,也就是说,如果用户被分配了一个角色,他/她将不能被分配另一些特定的角色。从策略的角度,静态约束关系提供了一种有效的在RBAC元素集上实施职责分离和其他分离规则的有效手段。静态约束通常要限制那些可能会破坏高层职责分离策略的管理操作。以往的RBAC模型通常通过限制一对角色上的用户分配来定义静态职责分离(一个用户不能同时分配处于SSD关系下的两个角色)。尽管
23、现实世界中确实存在这样的例子,这样定义的SSD在两个方面限制性太强:SSD关系中角色集的成员数(只能为2)和角色集中角色的可能组合情况(每个用户最多只能分配角色集中的一个角色)。在本标准中,静态职责分离通过两个参数定义:一个包含两个或更多角色的角色集和一个大于1的阔值(用户拥有的角色中包含在该角色集中角色的数量小于这个阔值)。例如,一个组织可能要求任何一个用户不能被分配代表采购职能的4个角色中的3个。正如图3所示,静态职责分离可能存在于层次RBAC中。在存在角色层次的情况下,必须注意不要让用户成员的继承违反静态职责分离策略。为此,层次RBAC也被定义为继承静态职责分离约束。在角色层次RBAC中
24、,为了解决可能出现的不一致性,静态职责分离被定义为针对角色的授权用户的约束。、飞、角色层次一一-I、卢.-/(RH) 气、(session roles) 图3层次RBAC下的静态职责分离5 GB/T 25062-2010 静态职责分离和层次RBAC下的静态职责分离分别定义如下:a) 静态职责分离SSD c (2ROLES X N)由一组形如(rs,的的对构成,其中rs是角色的集合,t是门的子集,n二三2,满足任何用户都不能同时被分配rs中的n个或者更多角色,v (衍,n)SSD,V t 二:I t |二三n=门rE,assigned一ers(r)=。b) 层次RBAC下的静态职责分离在存在角色
25、层次的情况下,静态职责分离基于角色的授权用户而不是直接分配了该角色的用户进行重新定义,V (rs ,n) E SSD , V t C: I t I二n丰n巾authorized_阳ers(r)=。6.4.3 动态职责分离关系静态职责分离关系和动态职责分离(DSD)关系的目的都是限制用户的可用权限,不过它们施加约束的上下文不同。SSD定义并且施加约束到用户总的权限空间上,而DSD通过约束一个用户会话可以激活的角色来限制用户的可用权限。DSD使用户可用以在不同的时间拥有不同的权限,从而进一步扩展了对最小特权原则的支持。DSD能够保证权限的有效期不超过完成某项职责所需要的时间段,这通常被称为信任的及
26、时撤销。在没有DSD的情况下,动态的权限撤销是非常困难的,因此通常被忽略。SSD解决在给用户分配角色的时候可能存在的利益冲突问题。DSD允许用户同时拥有两个或者更多这样的角色:这些角色在各自独立地被激活时不会产生安全威胁,而同时被激活时就可能会产生违反安全策略的行为。动态职责分离被定义为针对用户会话激活的角色的约束,如图4所示。(session roles) 图4动态职责分离关系DSD C 2ROLES X N由一组形如(rs,n)的对构成,其中rs是角色的集合,n二三2,满足没有任何主体能激活rs中的n个或更多角色。:巳巳Uh川忖E2 刊叩N川川(nS2八川川川Irs川山口叫心卢|怪凶刘注h
27、川川n川川川八川川Vs5泛d皿臼I肌O创NV role_ 旦剿lb加set 2俨RO饥ILE,臼S,V n N,(rs,n) E: DSD ,role_s拟ubsetc 二r.s ,role_s拟ubset旦二se日ion_roles(s)=I role_subset 1 该命令从RBAC数据库中删除一个已经存在的用户。该命令可用当且仅当被删除的用户是USERS数据集的一个成员。USERS数据集、UA数据集和assigned_users函数被更新。如果一个正处在会话中的用户被删除,如何处理该用户的会话依赖于具体实现。实际RBAC系统可以等待该会话结束或者强行终止它。下面的模式形式化地描述了De
28、leteU ser : c) AddRole DeleteUser(user :NAME) 该命令创建一个新的角色。该命令可用当且仅当要创建的角色尚且不存在于ROLES数据集。ROLES数据集、assigned_users和assigned_permisssions函数被更新。初始时,新创建的角色没有分配任何用户和权限。下面的模式形式化地描述了AddRole:AddRole(role :NAME) d) DeleteRole 该命令从RBAC数据库中删除一个角色。该命令可用当且仅当被删除的角色是ROLES数据集的成员。如果被删除的角色在某些会话中尚且是激活的,如何处理这些话是一个具体实现需要决
29、定的问题。实际RBAC系统可以等待这样的会话结束或强行终止它们或从会话中删除这个角色然后允许会话继续执行。下面的模式形式化地描述了DeleteRole:DeleteRole (role : NAME) DeleteSession (s) UA =UA u:USERS u同,roleassigned_users =assigned_users role同assigned_users (role) PA=PAo户:OPS,obj:OBJS. (0户,obj)同roleassigned_permissions =ssigned一户ermissionsrole同assigned_permissions
30、 (role) ROLES =ROLES role t 7 GB/T 25062-2010 e) Assign U ser 该命令给用户分配角色。该命令可用当且仅当该用户是USERS数据集的成员,该角色是ROLES数据集的成员,并且该角色尚未分配给该用户。数据集UA和函数assigned_users被更新。下面模式形式化地描述了该命令:Assign User (er ,role: NAME) 。DeassignUser该命令删除一个角色role到用户user的分配。该命令可用当且仅当user是USERS数据集的成员,role是ROLES数据集的成员,并且角色role已经分配给了用户user。如
31、果user正拥有某些会话并且role在这些会话中是激活的,如何处理这样的会话是一个具体实现需要决定的问题。实际RBAC系统可以等待这样一个会话结束,或者强行终止它,或者取消激活该角色。下面模式形式化地描述了该命令:Deassign User (user; role : NAME) g) GrantPermission 该命令给一个角色分配对一个对象执行某个操作的权限。该命令可用当且仅当给定的(操作,对象)代表了一项权限并且该角色是ROLES数据集的成员。在实际实现中,该命令可能实现为授予对应于该角色的组以相应的权限,即修改对象的ACL下面的模式形式化地定义了该命令:。antPermission
32、(object,。eration,role : NAM E) h) RevokePermission 该命令从分配给角色的权限集中撤销对某个对象执行某个操作的权限。该命令可用当且仅当(操作,对象)代表一项权限,并且该权限已经分配给了该角色。在实际的实现中,该命令可能实现为撤销对应于该角色的组的权限,即修改对象的ACL。下面的模式形式化地描述了该命令:RevokePermission (0户eration,object ,role :NAME) 7.2.2 核心RBAC支持系统函数本条定义了核心RBAC的支持系统函数。a) CreateSession 8 G/T 25062-2010 该函数创建
33、一个新的会话,以指定的用户作为会话拥有者,以指定的角色集作为激活角色集。该函数可用当且仅当用户user是USERS数据集的成员并且激活角色集是用户分配的角色集的子集。在实际RBAC实现中,会话的角色集可能对应于一些组。下面的模式形式化地描述了该函数。Session参数是一个由底层系统产生的用于标识会话的标识符。CreateSession (er :NAME ;ars :2NAMES ;session :NAME) user E USERS ;ars C r:ROLES I (user同r)仨UA;session tf_ SESSIONS SESSIONS =SESSIONS U session
34、 session_user = session_user U session f user session roles = session_roles U session同ars b) DeleteSession 该函数删除一个会话。该函数可用当且仅当会话标识符是SESSIONS数据集的成员。下面的模式形式化地描述了该函数。DeleteSession (session : NAME) sesszonSESSIONS 5855ion-userF=5655io-町er session同session_user (session) session_roles = session_role sessi
35、on同session_roles (session) SESSIONS =SESSIONSsession c) AddActiveRole 该函数为给定的用户会话增加一个激活角色。该函数可用当且仅当=1) 该用户是USERS数据集的成员;2) 该角色是ROLES数据集的成员;3) 会话标识符是SESSIONS数据集的成员;4) 该角色已经分配给了该用户;5) 该用户拥有该会话。在实现时,该角色可能对应于一个相应的组。下面的模式形式化地描述了该函数:AddActiveRole (user ,把ssion,role :NAME) userUSERS ;session E SESSIONS ;TOl
36、e仨ROLES; sessionus旷野ssions(user) (user同role)仨UA; role tf_ session roles (session) ession _roles = session _TOles session同session_roles (session) U session同(session_roles(session)U role) d) DropActiveRole 该函数从给定用户会话中删除一个激活角色。该函数可用当且仅当该用户是USERS数据集的成员,会话标识是SESSIONS数据集的成员,该用户是该会话的拥有者并且该角色是该会话的一个激活角色。下面的
37、模式形式化地描述了该函数:DroActiveRole (user , session ,role : NAME) userUSERS;TOle ROLES ;sessionSESSIONS sesszonuser _sessions (阳er); role E session_roles (session) session_rol肘,=session_rolesession同session_role(session) U session同(session_TOles (session) role ) 巳)CheckAccess 该函数决定一个给定的会话的主体是否允许对给定的对象执行某个给定的操
38、作并返回一个布尔值。该函数可用当且仅当会话标识符是SESSIONS数据集的成员,该对象是OBJS数据集的成员,该GB/T 25062-2010 操作是OPS数据集的成员。会话的主体可以对该对象执行该操作当且仅当会话的某个激活角色拥有对应的权限。实际实现可能使用在对象的ACL中的对应于激活角色的组和其相应的权限。下面的模式形式化地描述了该函数:eckAccess (session ,。eration,object :NAME ;result : BOOLEAN) 7.2.3 核心RBAC查看函数本条定义了核心RBAC的查看函数。a) AssignedUsers 该函数返回被分配给了某个指定角色的
39、用户。该函数可用当且仅当该角色是ROLES数据集的成员。下面的模式形式化地描述了该函数=b) AssignedRoles AssignedUsers (role : NAME ; result : 2USf: RS) 该函数返回分配给了一个给定用户的角色。该函数可用当且仅当该用户是USER数据集的成员。下面的模式形式化地描述了该函数:AssignedRoles (user: NA儿.fE; result : 2USERS) 7.2.4 核心RBAC高级查看函数本条定义了核心RBAC的高级查看函数。a) RolePermissions 该函数返回分配给一个给定角色的权限。该函数可用当且仅当该角色
40、是ROLES数据集的成员。下面的模式形式化地描述了该函数=RolePermission Crole : NAME ; result : 2PERMS) b) UserPermissions 该函数返回一个给定用户的权限。该函数可用当且仅当该用户是USERS数据集的成员。下面的模式形式化地描述了该函数:UserPermission (user: NAME ;reslt :2PERMS) c) SessionRoles 该函数返回给定会话的激活角色。该函数可用当且仅当该会话标识符是SESSIONS数据集的成员。下面的模式形式化地描述了该函数:SessionRoles Csession : NAME
41、; result : 2 ROLES ) d) SessionPermissions 该函数返回给定会话的权限,即该会话的激活角色拥有的权限。该函数可用当且仅当会话标识符是SESSIONS数据集的成员。下面的模式形式化地描述了该函数:GB/T 25062-2010 SessionPermissions (session : NAME ; result: 2PERMS) sessionSESSIONS result = r:ROLES ;opOPS ;objOBJS I rsession _roles (session)八(op,obj)同r)PA (0户,obj)1 e) RoleOperat
42、ionsOnObject 该函数返回一个给定角色被允许的对给定对象执行的操作。该函数可用当且仅当该角色是ROLES数据集的成员,该对象是OBJS数据集的成员。下面的模式形式化地描述了该函数:RoleOperationsOn Object (role :NAME ;obj : NAME ;result: 20PS) role ROLES objOBJS result = o: OP S I ( op ,ob j )同role)仨PA1 f) UserOperationsOnObject 该函数返回给定用户被允许的针对给定对象执行的操作。该函数可用当且仅当该用户是USERS数据集的成员,该对象是该
43、OBJS数据集的成员。下面模式形式化地描述了该函数:UserOperationsOn Ob ject (er :NAME ;obj :NAME ;result :20PS) user E USERS objOBJS result = r:ROLES ;op: OPS I (user同r)UA八(0户,obj)同r)仨PA.。1 7.3 层次RBAC7.3.1 通用角色层次7.3. 1. 1 通用角色层次管理函数7.2.1中的函数在本条当中都是有效的,这里还定义了一些新的函数。a) Addlnheritance 该命令在两个已经存在的角色r_asc和r_desc之间建立直接继承关系r_asc-r
44、 _desc。该命令可用当且仅当rasc和rdesc都是ROLES数据集的成员,r_asc不是r_desc的直接祖先,并且rdesc不继承r_asc(避免产生回路)。以下模式使用了下述记号:= =-该命令的形式化描述如下=Addlnheritance (r _asc ,r _desc : NAME) T一cROLES ; r _desc ROLES ;-, (r _asc r _desc) ;-, (r _desc二三r_asc) 泣=二三U(r ,q:ROLES I r二三rasc 八r_desc二三q r同q1b) Deletelnheritance 该命令删除已经存在的直接继承关系r_a
45、sc - -r _desc。该命令可用当且仅当rasc和rdesc是ROLES数据集的成员,r_asc是rdesc的直接祖先。在执行完该命令以后,新的继承关系是新的直接继承关系的自反传递闭包。下面的模式形式化地描述了该命令:c) AddAscendant Deletelnheritance (r _asc ,r _desc: NAME) r_ascROLES ; r _descROLES ; r _asc r _desc 二三=( r_asc同r_desc ) 1 该命令创建一个新角色rasc,并作为现存角色rdesc的直接祖先插入到角色层次中去。该命令可用当且仅当rasc不是ROLES的成员
46、,rdesc是ROLES数据集的成员。注意可用性条件的验证是在Addlnheritance中引用的模式AddRole和Addlnheritance中进行的。11 G/T 25062-2010 d) AddDescendant AddAscendant (r asc ,r desc: NAME) 该命令创建一个新的角色作为现存角色r_asc的直接后代插入到角色层次中。该命令可用当且仅当r_desc不是ROLES的成员,r_asc是ROLES数据集的成员。注意可用性条件是在AddDescedant中引用的AddRole和Addlnheritance中验证的。AddDescendant(r asc ,r desc:NAME) 7.3. 1. 2 通用角色层次支持系统函数本条扩展了7.2.