GB/T 25062-2010 信息安全技术 鉴别与授权 基于角色的访问控制模型与管理规范
- 名 称:GB/T 25062-2010 信息安全技术 鉴别与授权 基于角色的访问控制模型与管理规范 - 下载地址2
- 下载地址:[下载地址2]
- 提 取 码:
- 浏览次数:3
发表评论
加入收藏夹
错误报告
目录| 新闻评论(共有 0 条评论) |
资料介绍
ICS 35● 040 L 80
中 华 人 民 共 和 国 国 家 标 准
GB/T 25062—2010
信息安全技术 鉴别与授权
基于角色的访问控制模型与管理规范
Information security technology—Authentication and authorization—
Role-based access control model and management specification
2010-09-02 发布 201 1-02-01 实施
中华人民共和国国家质量监督检验检疫总局中 国 国 家 标 准 化 管 理 委 员 会
发
布
GB/T 25062—2010
目 次
前言 Ⅲ
引言 Ⅳ
1 范围 1
2 规范性引用文件 1
3 术语和定义 1
4 缩略语 2
5 一致性 2
6 RBAC参考模型 2
6 . 1 概述 2
6 . 2 核心 RBAC 3
6 . 3 层次 RBAC 4
6 . 4 带约束的 RBAC 5
7 RBAC系统和管理功能规范 6
7 . 1 概述 6
7 . 2 核心 RBAC 7
7 . 3 层次 RBAC 11
7 . 4 静态职责分离关系 14
7 . 5 动态职责分离 18
附录 A (资料性附录) 功能规范概述 23
A. 1 概述 23
A. 2 核心 RBAC的功能规范 23
A. 3 层次 RBAC功能规范 24
A. 4 静态职责分离关系功能规范 24
A. 5 动态职责分离关系功能规范 25
A. 6 功能规范包 26
附录 B (资料性附录) 组件原理 27
B. 1 概述 27
B. 2 核心 RBAC 27
B. 3 层次 RBAC 27
B. 4 静态职责分离关系 27
B. 5 动态职责分离 28
附录 C (资料性附录) Z语言示例 29
I
GB/T 25062—2010
前 言
本标准的附录 A、附录 B 和附录 C 为资料性附录。
本标准由全国信息安全标准化技术委员会(SAC/TC260)提出并归 口 。
本标准起草单位:中国科学院软件研究所'信息安全共性技术国家工程研究中心。
本标准主要起草人:冯登国、徐震、翟征德、张敏、张凡、黄亮、庄湧。
Ⅲ
GB/T 25062—2010
引 言
主流 IT产品供应商开始在他们的数据库管理系统、安全管理系统、网络操作系统等产品中大量实现基于角色的访问控制功能'然而却没有对其特征集达成一致 。缺乏广为接受的模型'导致了对基于角色的访问控制效用和含义理解的不规范性和不确定性 。本标准参照 ANSI INCITS359-2004 ' 使用一个参考模型来定义基于角色的访问控制的特征'并描述这些特征的功能规范'通过以上方法来解决这些不规范与不确定的问题 。
Ⅳ
GB/T 25062—2010
信息安全技术 鉴别与授权
基于角色的访问控制模型与管理规范
1 范围
本标准规定了基于角色的访问控制(RBAC)模型 、RBAC系统和管理功能规范 。
本标准适用于信息系统中 RBAC子系统的设计和实现'相关系统的测试和产品采购亦可参照使用 。
2 规范性引用文件
下列文件中的条款通过本标准的引用而成为本标准的条款 。凡是注 日 期的引用文件'其随后所有的修改单(不包括勘误的内容)或修订版均不适用于本标准'然而'鼓励根据本标准达成协议的各方研究是否可使用这些文件的最新版本 。凡是不注 日期的引用文件'其最新版本适用于本标准 。
ISO/IEC 13568:2002 信息技术 Z 形式规范注释语法、形式系统和语义学
3 术语和定义
下列术语和定义适用于本标准 。
3 . 1
组件 component
这里是指四个 RBAC特征集之 一 : 核心 RBAC、层次 RBAC、静态职责分离关系、动态职责分离关系 。
3 . 2
对象 object
需要进行访问控制的系统资源'例如文件、打印机、终端、数据库记录等 。
3 . 3
操作 operation
一个程序的可执行映像 ' 当被调用时为用户执行某些功能 。
3 . 4
权限 permission
对受 RBAC保护的一个或多个对象执行某个操作的许可 。
3 . 5
角色 role
组织语境中的一个工作职能'被授予角色的用户将具有相应的权威和责任 。
3 . 6
用户 user
人、机器、网络 、自主智能代理等'进行资源或服务访问的实施主体 。
3 . 7
会话 session
从用户到其激活的角色集合的一个映射 。
3 . 8
职责分离 separation of duty
限制用户获得存在利益冲突的权限集的约束'例如用户不能同时获得会计和审计的权限 。
1
GB/T 25062—2010
4 缩略语
下列缩略语适用于本标准:
RBAC
SSD
DSD
USERS
ROLES
OBJS
OPS
SESSIONS
PRMS
ACL
基于角色的访问控制(Role Based Access Control)静态职责分离(Static Separation of Duty)
动态职责分离(Dynamic Separation of Duty)用户集(User Set)
角色集(Role Set)
对象集(Object Set)
操作集(Operation Set)
会话集(Session Set)
权限集(Privilege Management Set)
访问控制列表(Access Control List)
5
一致性
对于特定的应用'并非所有的 RBAC特征都是必要的 。 因此'本标准提供了一种通过对功能组件和同一功能组件内的特征进行选择' 以组装构成所需要的 RBAC特征的方法 。本标准首先定义了一个RBAC的特征核心集合 ' 任何其他的特征包都必须包含这一核心特征集 。 在构建 RBAC特征包时'角色层次'静态约束(静态职责分离) '动态约束(动态职责分离)是可选组件 。
6 RBAC参考模型
6 . 1 概述
RBAC参考模型通过四个 RBAC模型组件来进行定义— 核心 RBAC、角色层次 RBAC、静态职责分离关系、动态职责分离关系 。
核心 RBAC定义了能够完整地实现一个 RBAC系统所必需的元素 、元素集和关系的最小集合 ' 其中包括最基本的用户/角色分配和权限/角色分配关系 。此外'它还引入了角色激活的概念作为计算机系统中用户会话的一个组成部分 。核心 RBAC对于任何 RBAC系统而言都是必需的'其他 RBAC组件彼此相互独立并且可以被独立地实现 。
角色层次 RBAC组件支持角色层次 。角色层次从数学上讲是一个定义角色之间级别关系的偏序 '高级别的角色获得低级别角色的权限'低级别角色获得高级别角色的用户成员 。 此外'层次 RBAC还引入了角色的授权用户和授权权限的概念 。
静态职责分离针对用户/角色分配定义了角色间的互斥关系 。 由于可能与角色继承产生不一致'静态职责分离关系组件在没有角色层次和存在角色层次的情况下分别进行了定义 。
动态职责分离关系针对用户会话中可以激活的角色定义了互斥关系 。
每个模型组件都由下列子组件来定义:
a) 一些基本元素集 ;
b) 一些基于上述基本元素集的 RBAC关系 ;
c) 一些映射函数'在给定来自某个元素集的实例元素的情况下能够得到另一个元素集的某些实例元素 。
RBAC参考模型给出了一种 RBAC特征的分类'可以基于这些分类的特征构建一系列 RBAC特征包 。本标准的主要 目 的不是试图定义 RBAC特征的全集'而是致力于提供一组标准的术语来定义已有的模型和商业产品中最主要的 RBAC特征 。
2
GB/T 25062—2010
6 . 2 核心 RBAC
核心 RBAC的元素集和关系在图 1 中进行了定义 。核心 RBAC包含了 5 个基本的数据元素:用户集(USERS) 、角色集(ROLES) 、对象集(OBJS) 、操作集(OPS) 、权限集(PRMS) 。权限被分配给角色 '角色被分配给用户'这是 RBAC的基本思想 。 角色命名了用户和权限之间的多对多的关系 。 此外'核心 RBAC中还包含了用户会话集'会话是从用户到该用户的角色集的某个激活角色子集的映射 。
角色是组织上下文中的一个工作职能'被授予了角色的用户将具有相应的权威和责任 。权限是对某个或某些受 RBAC保护的对象执行操作的许可 。操作是一个程序的可执行映像'被调用时能为用户执行某些功能 。操作和对象的类型依赖于具体系统'例如在一个文件系统中'操作可以包含读、写、执行;在数据库管理系统中 '操作包含 select 、insert 、delete 、update 等 。
访问控制机制的核心功能是保护系统资源 。与以前的访问控制模型一致' RBAC模型中的对象是包含或接收信息的实体 。对一个实现 RBAC 的系统'对象可以代表信息容器(如操作系统中的文件和目录或数据库 中 的 表、视 图、字 段) ' 或 者 诸 如 打 印 机、磁 盘 空间 、CPU 周 期 等 可 耗 尽 的 系 统 资 源 。 RBAC覆盖的对象包括所有在分配给角色的权限中出现的对象 。
RBAC中一个很重要的概念是角色的相关分配关系 。 图 1 中给出了用户分配关系(UA)和权限分配关系(PA) 。 图中的箭头表示关系是多对多的(例如'一个用户可以被分配给多个角色并且一个角色可以被分配给多个用户) 。这种安排带来了给角色分配权限和给角色分配用户时的灵活性和细粒度 。如果没有这些'就有可能造成给用户分配过多的对资源的访问权限;能够更灵活地控制对资源的访问权限也有助于最小特权原则的实施 。
图 1 核心 RBAC
用户在建立一个会话的时候可以激活他/她所被分配的角色的某个子集 。一个会话只能与一个用户关联'一个用户可能同时拥有多个会话 。 函数 session-roles 返回一个会话激活的角色'函数 session- user 给出会话的用户 。在用户的会话中保持激活状态的角色的权限构成了用户的可用权限 。 以下为核心 RBAC规范:
a) USERS' ROLES' OPS' OBJS分别代表:用户集、角色集、操作集、对象集 ;
b) UA≤ USERS× ROLES ' 一个多对多的映射 ' 代表用户/角色分配关系 ;
c) assigned-users(r: ROLES) → 2USERS ' 一个映射'给出分配了角色 r 的用户 ' assigned-users(r) = {u ∈ USERS | (u ' r) ∈ UA} ;
d) PRMS≤ 2 (OPS×OBS) '权限集 ;
e) PA≤ PERMS× ROLES ' 一个多对多的映射 ' 代表权限/角色分配关系 ;
f) assigned-permissions(r: ROLES) → 2 PRMS ' 一 个 映 射 ' 给 出 分 配 给 角 色 r 的 权 限 ' assigned-permissions(r) = {p ∈ PRMS | (p ' r) ∈ PA} ;
g) ops(p: PRMS) → {op ≤ OPS} '权限到操作的映射'给出与权限 p 关联的操作 ;
h) obs(p: PRMS) → {ob ≤ OBS} '权限到对象的映射'给出与权限 p 关联的对象 ;
i) SESSIONS '会话集 ;
j) session-user(s: SESSIONS) → USERS ' 一个从会话 s 到对应用户的映射 ;
3
GB/T 25062—2010
k) session—roles(s: SESSIONS) → 2ROLES ' 一个从会话 s 到其激活的角色集的映射 ' session—roles(s) ≤ {r ∈ ROLES | (session—users(s) ' r) ∈ UA} ;
l) a℃ail—session—perms(s: SESSIONS) → 2 PRMS ' 一 个 从 会 话 s 到 它 拥 有 的 权 限 集 的 映 射 ' a℃ail—session—perms(s) =Ur∈ session—roles(s) assigned—permission(r) 。
6 . 3 层次 RBAC
6 . 3 . 1 导引
如图 2 所示'层次 RBAC引入了角色层次 。角色层次通常被作为 RBAC模型的重要部分'并且经常在 RBAC商业产品中得以实现 。角色层次可以有效地反映组织内权威和责任的结构 。
角色层次定义了角色间的继承关系 。继承通常是从权限的角度来说的'例如'如果角色 r1“ 继承 ”角色 r2 '角色 r2 的所有权限都同时为角色 r1 所拥有 。在某些分布式 RBAC实现中'角色层次是集中管理的'而权限/角色分配却是非集中管理的 。对这些系统'角色层次的管理主要是从用户成员包含关系的角度进行的:如果角色 r1 的所有用户都隐含地成为角色 r2 的用户'则称角色 r1“包含”角色 r2 。这种用户成员包含关系隐含了这样一个事实:角色 r1 的用户将拥有角色 r2 的所有权限 。然而角色 r1 和角色 r2 之间的权限继承关系并不对它们的用户分配做任何假设 。
本标准认可两种类型的角色层次—通用角色层次和受限角色层次 。通用角色层次支持任意偏序关系'从而支持角色之间的权限和用户成员的多重继承 。受限角色层次通过施加限制来得到一个简单的树结构(即:一个角色可以拥有一个或多个直接祖先'但只能有一个直接后代) 。
6 . 3 . 2 通用角色层次
通用角色层次的规范在核心 RBAC的基础上扩展如下内容:
a) RH ≤ ROLES× ROLES是一个称为继承的角色之间的偏序关系'记作 ≥ 。如果 r1 ≥r2 '则角色 r1 拥有角色 r2 的所有权限并且角色 r1 的用户都将是角色 r2 的用户 ;
b) authori≈ed—users(r: ROLES) → 2USERS ' 一个在角色层次存在的情况下从角色到该角色的授权用户的映射 ' authori≈ed—users(r) = { u ∈ USERS | r, ≥ r Λ (u ' r, ) ∈ UA} ;
c) authori≈ed—permissions(r: ROLES) → 2 PRMS ' 一个在角色层次存在的情况下从角色到其授权权限的映射 ' authori≈ed—permissions(r) ={p ∈ PRMS | r ≥ r, Λ (p ' r, ) ∈ PA} 。
图 2 层次 RBAC
通用角色层次支持多重继承的概念'从而使得一个角色可以从两个或者更多其他角色继承权限或用户成员 。多重继承具有两个重要的性质 。第一'多重继承使得可以通过从几个低级别的角色来构建较高级别角色的方式来定义角色间的关系以反映组织和事务的结构 。第二'多重继承使得可以一致地对待用户/角色分配关系和角色/角色继承关系 。用户也可以被包含在角色层次中'并且仍然用 ≥来代表用户/角色分配以及用户对角色权限的继承 。
在受限角色层次中 ' 一个角色只能有一个直接后代 。尽管受限角色层次不支持权限的多重继承'但与层次 RBAC 比较却具有管理上的优势 。
4
GB/T 25062—2010
如果r1 ≥r2 并且这两个角色之间不存在其他的角色(即不存在不同于角色r1 和角色r2 的角色r3 '满足 r1 ≥r3 ≥r2 ) '则 r1 是 r2 的直接祖先'记作 r1 >>r2 。
6 . 3 . 3 受限角色层次
受到下述限制的通用角色层次: Yr ' r1 ' r2 ∈ ROLES' r >> r1 Λ r >> r2 → r1 = r2 。
角色层次可以用偏序图来表示 。 图中的节点代表角色'如果 r1 是 r2 的直接后代'则存在从 r1 指向r2 的有向箭头 。在角色层次的偏序图上 ' rx ≥ry 当且仅当存在从 rx 到 ry 的有向路径 。 由于角色之间的偏序关系是传递和反对称的'所以不存在有向回路 。通常'角色层次图上的箭头与角色间的继承关系相一致都是自上而下的'因此角色用户成员的继承是自上而下的'而角色权限的继承是自下而上的 。
6 . 4 带约束的 RBAC
6 . 4 . 1 概述
带约束的 RBAC模型增加了职责分离关系 。职责分离关系可以被用来实施利益冲突(Conflict of Interest)策略(防止某个人或某些人同时对于不同的某些个人、某些集团或组织以及某种事物在忠诚度和利害关系上发生矛盾的策略)以防止组织中用户的越权行为 。
作为一项安全原则'职责分离在工商业界和政府部门得到了广泛的应用'其目的是保证安全威胁只有通过多个用户之间的串通勾结才能实现 。具有不同技能和利益的工作人员分别被分配一项事务中不同的任务'以保证欺诈行为和重大错误只有通过多个用户的勾结才可能发生 。本标准支持静态和动态的职责分离 。
6 . 4 . 2 静态职责分离关系
在 RBAC系统中 ' 一个用户获得了相互冲突的角色的权限就会引起利益冲突 。 阻止这种利益冲突的一个方法是静态职责分离'即对用户/角色分配施加约束 。
本标准中定义的静态约束主要是作用于角色'特别是用户/角色分配关系 ' 也就是说'如果用户被分配了一个角色'他/她将不能被分配另一些特定的角色 。从策略的角度'静态约束关系提供了一种有效的在 RBAC元素集上实施职责分离和其他分离规则的有效手段 。静态约束通常要限制那些可能会破坏高层职责分离策略的管理操作 。
以往的 RBAC模型通常通过限制一对角色上的用户分配来定义静态职责分离(一个用户不能同时分配处于 SSD关系下的两个角色) 。尽管现实世界中确实存在这样的例子'这样定义的 SSD在两个方面限制性太强: SSD关系中角色集的成员数(只能为 2)和角色集中角色的可能组合情况(每个用户最多只能分配角色集中的一个角色) 。在本标准中'静态职责分离通过两个参数定义:一个包含两个或更多角色的角色集和一个大于 1 的阈值(用户拥有的角色中包含在该角色集中角色的数量小于这个阈值) 。例如'一个组织可能要求任何一个用户不能被分配代表采购职能的 4 个角色中的 3 个 。
正如图 3 所示'静态职责分离可能存在于层次 RBAC中 。在存在角色层次的情况下'必须注意不要让用户成员的继承违反静态职责分离策略 。为此'层次 RBAC也被定义为继承静态职责分离约束 。在角色层次 RBAC中'为了解决可能出现的不一致性'静态职责分离被定义为针对角色的授权用户的约束 。
图 3 层次 RBAC下的静态职责分离
5
GB/T 25062—2010
静态职责分离和层次 RBAC下的静态职责分离分别定义如下:
a) 静态职责分离
SD ≤ (2ROLES × N) 由一组形如(rs ' n)的对构成 ' 其中 rs 是角色的集合 ' t 是 rs 的子集'n≥2 '满足任何用户都不能同时被分配 rs 中的n 个或者更多角色 ' V (rs ' n) ∈ SD ' Vt ≤ rs: | t | ≥ n→ ∩ r∈ tassigned-users(r) =⑦ 。
b) 层次 RBAC下的静态职责分离
在存在角色层次的情况下'静态职责分离基于角色的授权用户而不是直接分配了该角色的用户进行重新定义 ' V (rs ' n) ∈ SD ' Vt ≤ rs : | t | ≥ n→ ∩ r∈ t authorized-users(r) =⑦ 。
6 . 4 . 3 动态职责分离关系
静态职责分离关系和动态职责分离(DSD)关系的 目 的都是限制用户的可用权限'不过它们施加约束的上下文不同 。SSD定义并且施加约束到用户总的权限空间上'而 DSD通过约束一个用户会话可以激活的角色来限制用户的可用权限 。DSD使用户可用以在不同的时间拥有不同的权限'从而进一步扩展了对最小特权原则的支持 。DSD能够保证权限的有效期不超过完成某项职责所需要的时间段'这通常被称为信任的及时撤销 。在没有 DSD 的情况下'动态的权限撤销是非常困难的'因此通常被忽略 。
SSD解决在给用户分配角色的时候可能存在的利益冲突问题 。DSD允许用户同时拥有两个或者更多这样的角色:这些角色在各自独立地被激活时不会产生安全威胁'而同时被激活时就可能会产生违反安全策略的行为 。
动态职责分离被定义为针对用户会话激活的角色的约束'如图 4 所示 。
图 4 动态职责分离关系
DSD ≤ 2 ROLES × N 由一组形如(rs ' n)的对构成 ' 其中 rs 是角色的集合 ' n ≥ 2 '满足没有任何主体能激活 rs 中的n 个或更多角色 。
(Vrs ∈ 2 ROLES ' n ∈ N ' (rs ' n) ∈ DSD→ n ≥ 2 Λ rs ≥ n Λ Vs ∈ SESSIONS' Vrs ∈ 2 ROLES ' ) Vrole-subset ∈ 2 ROLES ' Vn ∈ N ' (rs ' n) ∈ DSD ' role-subset ≤ rs ' role-subset ≤
(session-roles(s) → role-subset < n ,
7 RBAC系统和管理功能规范
7 . 1 概述
RBAC功能规范描述了创建和维护 RBAC元素集和 RBAC关系的管理操作;进行管理查询的管理查看函数;创建和维护用户会话的 RBAC属性和进行访问控制决策的系统函数 。本标准对这些函数进行了足够细致的定义' 以便支持一致性测试和保证的需要'同时给开发者提供了足够的设计灵活性以满足用户的需求 。
RBAC功能规范使用的 Z 标记方法由 ISO/IEC13568:2002 定义 。 唯一的例外是模式表示如下:模式名(声明)< 谓词 ; … … ;谓词 D 。
这里使用的大多数抽象数据类型和函数都来 自 RBAC参考模型 ' 但在必要的时候'将会引入新的
6
GB/T 25062—2010
抽象数据类型和函数 。为了描述方便'这里首先需要引入符号 NAME。 NAME是个元素为实体标识的抽象数据类型'这些实体可能包含在 RBAC系统之中或者之外(角色、用户、会话等) 。
7 . 2 核心 RBAC
7 . 2 . 1 核心 RBAC管理函数
本条定义了核心 RBAC的管理函数 。
a) AddUser
该命令创建一个新的用户 。 当要待创建用户尚不存在于 USERS集合中时'该命令可用 。命令执行后'USERS被更新'新创建的用户不拥有任何的会话 。下面的模式形式化地描述了 AddUser:
AddUser(user: NAME)<
user 呋 USERS
USERS, =USERS U {user} D
b) DeleteUser
该命令从 RBAC 数据库中删除一个已经存在的 用 户 。 该 命 令 可 用当 且 仅 当 被 删 除 的 用 户 是USERS数据集的一个成员 。USERS数据集、UA 数据集和 assigned-users 函数被更新 。 如果一个正处在会话中的用户被删除'如何处理该用户的会话依赖于具体实现 。 实际 RBAC系统可以等待该会话结束或者强行终止它 。下面的模式形式化地描述了 DeleteUser:
DeleteUser(user: NAME)<
user ∈ USERS
[ Ys ∈ SESSIONS . user = session-user(s) → DeleteSession(s)]
UA, =UA/{r: ROLES . user →r}
assigned-users , = {r: ROLES . r → (assigned-users(r)/{user})}
USERS, =USERS/{user} D
c) AddRole
该命令创建一个新的角色 。 该命令可用当且仅当要创建的角色尚且不存在于 ROLES数据集 。 ROLES数据集、assigned-users 和 assigned-permisssions 函数被更新 。初始时'新创建的角色没有分配任何用户和权限 。下面的模式形式化地描述了 AddRole:
AddRole(role : NAME)<
role 呋 ROLES
ROLES, =ROLES U {role}
assigned-users , =assigned-users U {role → ⑦}
assigned-permissions , =assigned-permissions U {role → ⑦} D d) DeleteRole
该命令从 RBAC数据库中删除一个角色 。该命令可用当且仅当被删除的角色是 ROLES数据集的成员 。如果被删除的角色在某些会话中尚且是激活的'如何处理这些话是一个具体实现需要决定的问题 。实际 RBAC系统可以等待这样的会话结束或强行终止它们或从会话中删除这个角色然后允许会话继续执行 。下面的模式形式化地描述了 DeleteRole:
DeleteRole(role : NAME)<
role ∈ ROLES
[ Ys ∈ SESSIONS . role ∈ session-roles(s) → DeleteSession(s)]
UA, =UA/{u:USERS . u →role}
assigned-users , =assigned-users/{role →assigned-users(role)}
PA, =PA/{op : OPS' obj : OBJS . (op ' obj) → role}
assigned-permissions , =assigned-permissions/{role →assigned-permissions(role)} ROLES, =ROLES/{role} D
7
GB/T 25062—2010
e) AssignUser
该命令给用户分配角色 。该命令可用当且仅当该用户是 USERS数据集的成员'该角色是 ROLES数据集的成员'并且该角色尚未分配给该用户 。数据集 UA 和函数 assigned-users 被更新 。 下面模式形式化地描述了该命令:
AssignUser(user ' role : NAME)<
user ∈ USERS;role ∈ ROLES; (user →role) 呋 UA
UA, =UA U { user →role}
assigned-users , =assigned-users/{role →assigned-users(role)} U
{role → (assigned-users(role) U {user})} D f) DeassignUser
该命令删除一个角色 role 到用户 user 的分配 。该命令可用当且仅当 user 是 USERS数据集的成员 ' role 是 ROLES数据集的成员'并且角色 role 已经分配给了用户 user 。
如果 user 正拥有某些会话并且 role 在这些会话中是激活的'如何处理这样的会话是一个具体实现需要决定的问题 。实际 RBAC系统可以等待这样一个会话结束 ' 或者强行终止它'或者取消激活该角色 。下面模式形式化地描述了该命令:
DeassignUser(user ' role : NAME)<
user ∈ USERS;role ∈ ROLES; (user →role) ∈ UA
[ Ys: SESSIONS . user = session-user(s) Λ role ∈ session-roles(s) → DeleteSession(s)] UA, =UA/{user →role}
assigned-users , =assigned-users/{role →assigned-users(roles)} U
{role → (assigned-users(role)/{user})} D g) Grantpermission
该命令给一个角色分配对一个对象执行某个操作的权限 。该命令可用当且仅当给定的(操作'对象)代表了一项权限并且该角色是 ROLES数据集的成员 。在实际实现中'该命令可能实现为授予对应于该角色的组以相应的权限'即修改对象的 ACL。下面的模式形式化地定义了该命令:
GrantPermission(object ' operation ' role : NAME)<
(operation ' object ) ∈ PERMS;role ∈ ROLES
PA, = PA U {(operation ' object ) → role}
assigned-permissions , =assigned-permissions/{role →assigned-permissions(roles)} U {role → (assigned-permissions(role) U {(operation ' object )})} D
h) Revokepermission
该命令从分配给角色的权限集中撤销对某个对象执行某个操作的权限 。该命令可用当且仅当(操作'对象)代表一项权限'并且该权限已经分配给了该角色 。在实际的实现中'该命令可能实现为撤销对应于该角色的组的权限'即修改对象的 ACL。
下面的模式形式化地描述了该命令:
Re℃okePermission(operation ' object ' role : NAME)<
(operation ' object ) ∈ PERMS; role ∈ ROLES;((operation ' object ) → role) ∈ PA
PA, =PA/{(operation ' object ) → role}
assigned-permissions , =assigned-permissions/{role →assigned-permissions(roles)} U {role → (assigned-permissions(role)/{(operation ' object )})} D
7 . 2 . 2 核心 RBAC支持系统函数
本条定义了核心 RBAC的支持系统函数 。
a) CreateSession
8
GB/T 25062—2010
该函数创建一个新的会话' 以指定的用户作为会话拥有者' 以指定的角色集作为激活角色集 。该函数可用当且仅当用户 user 是 USERS数据集的成员并且激活角色集是用户分配的角色集的子集 。在实际 RBAC实现中'会话的角色集可能对应于一些组 。
下面的模式形式化地描述了该函数 。 Session 参数是一个由底层系统产生的用于标识会话的标识符 。
createSession(user : NAME; ars :2NAMES ; session: NAME)<
user ∈ USERS; ars ≤ {r: ROLES | (user →r) ∈ UA} ; session 呋 SESSIONS
SESSIONS, = SESSIONS U {session}
session-user , = session-user U {session →user}
session-roles , = session-roles U {session →ars} D
b) DeleteSession
该函数删除一个会话 。该函数可用当且仅当会话标识符是 SESSIONS数据集的成员 。 下面的模式形式化地描述了该函数 。
DeleteSession(session: NAME)<
session ∈ SESSIONS
session-user , = session-user/{session →session-user(session)}
session-roles , = session-role/{session →session-roles(session)}
SESSIONS, =SESSIONS/{session} D c) AddActiveRole
该函数为给定的用户会话增加一个激活角色 。该函数可用当且仅当:
1) 该用户是 USERS数据集的成员 ;
2) 该角色是 ROLES数据集的成员 ;
3) 会话标识符是 SESSIONS数据集的成员 ;
4) 该角色已经分配给了该用户 ;
5) 该用户拥有该会话 。
在实现时'该角色可能对应于一个相应的组 。下面的模式形式化地描述了该函数:
AddActi℃eRole(user ' session ' role : NAME)<
user ∈ USERS; session ∈ SESSIONS;role ∈ ROLES; session ∈ user-sessions(user) (user →role) ∈ UA; role 呋 session-roles(session)
session-roles , = session-roles/{session →session-roles(session)} U
{session → (session-roles(session) U {role})} D
d) DropActiveRole
该函数从给定用户会话中删除一个激活角色 。该函数可用当且仅当该用户是 USERS数据集的成员 '会话标识是 SESSIONS数据集的成员'该用户是该会话的拥有者并且该角色是该会话的一个激活角色 。下面的模式形式化地描述了该函数:
DropActi℃eRole(user ' session ' role : NAME) D
user ∈ USERS;role ∈ ROLES; session ∈ SESSIONS
session ∈ user-sessions(user) ; role ∈ session-roles(session)
session-roles , = session-role/{session →session-role(session)} U
{session → (session-roles(session)/{role}) D e) CheckAccess
该函数决定一个给定的会话的主体是否允许对给定的对象执行某个给定的操作并返回一个布尔值 。该函数可用当且仅当会话标识符是 SESSIONS数据集的成员'该对象是 OBJS数据集的成员'该
9
GB/T 25062—2010
操作是 OpS数据集的成员 。会话的主体可以对该对象执行该操作当且仅当会话的某个激活角色拥有对应的权限 。实际实现可能使用在对象的 ACL中的对应于激活角色的组和其相应的权限 。下面的模式形式化地描述了该函数:
checkAccess(session ' operation ' object : NAME; result : BOOLEAN)<
session ∈ SESSIONS;operation ∈ OPS;object ∈ OBJS
result = ( 3 r: ROLES . r ∈ session-roles(session) Λ ((operation ' object ) → r) ∈ PA) D
7 . 2 . 3 核心 RBAC查看函数
本条定义了核心 RBAC的查看函数 。
a) AssignedUsers
该函数返回被分配给了某个指定角色的用户 。该函数可用当且仅当该角色是 ROLES数据集的成员 。下面的模式形式化地描述了该函数:
AssignedUsers(role: NAME; result :2USERS )<
role ∈ ROLES
result = {u:USERS | (u →role) ∈ UA} D
b) AssignedRoles
该函数返回分配给了一个给定用户的角色 。该函数可用当且仅当该用户是 USER数据集的成员 。下面的模式形式化地描述了该函数:
AssignedRoles(user: NAME; result :2USERS )<
user ∈ USERS
result = {r: ROLES | (user →r) ∈ UA} D
7 . 2 . 4 核心 RBAC高级查看函数
本条定义了核心 RBAC的高级查看函数 。
a) Rolepermissions
该函数返回分配给一个给定角色的权限 。该函数可用当且仅当该角色是 ROLES数据集的成员 。下面的模式形式化地描述了该函数:
RolePermission(role: NAME; result :2 PERMS )<
role ∈ ROLES
result ={op : OPS; obj : OBJS | ((op ' obj) → role) ∈ PA} D b) Userpermissions
该函数返回一个给定用户的权限 。该函数可用当且仅当该用户是 USERS数据集的成员 。下面的模式形式化地描述了该函数:
UserPermission(user: NAME; result :2 PERMS )<
user ∈ USERS
result = {r: ROLES; op : OPS; obj : OBJS | (user →r) ∈ UA Λ ((op ' obj) → r) ∈ PA . (op ' obj)} D c) SessionRoles
该函数返回给定会话的激活角色 。该函数可用当且仅当该会话标识符是 SESSIONS数据集的成员 。下面的模式形式化地描述了该函数:
SessionRoles(session: NAME; result :2ROLES)<
session ∈ SESSIONS
result = session-roles(session) D
d) Sessionpermissions
该函数返回给定会话的权限'即该会话的激活角色拥有的权限 。该函数可用当且仅当会话标识符是 SESSIONS数据集的成员 。下面的模式形式化地描述了该函数:
10
GB/T 25062—2010
Sessionpermissions(session: NAME; result :2 pERMS )<
session ∈ SESSIONS
result = {r: ROLES; op ∈ OpS; obj ∈ OBJS | r ∈ session-roles(session) Λ ((op ' obj) → r) ∈ pA . (op ' obj)} D
e) RoleOperationsOnObject
该函数返回一个给定角色 被 允 许 的 对 给 定 对 象 执 行 的 操 作 。 该 函 数 可 用当 且 仅 当 该 角色 是ROLES数据集的成员'该对象是 OBJS数据集的成员 。下面的模式形式化地描述了该函数:
RoleOperationsOnObject (role: NAME; obj : NAME; result :2 OpS)<
role ∈ ROLES
obj ∈ OBJS
result ={op : OpS | ((op ' obj) → role) ∈ pA} D f) UserOperationsOnObject
该函数返回给定用户被允许的针对给定对象执行的操作 。该函数可用当且仅当该用户是 USERS数据集的成员'该对象是该 OBJS数据集的成员 。下面模式形式化地描述了该函数:
UserOperationsOnObject (user: NAME; obj : NAME;result :2 OpS)<
user ∈ USERS
obj ∈ OBJS
result = {r: ROLES; op : OpS | (user →r) ∈ UA Λ ((op ' obj) → r) ∈ pA . op} D
7 . 3 层次 RBAC
7 . 3 . 1 通用角色层次
7 . 3 . 1 . 1 通用角色层次管理函数
7 . 2 . 1 中的函数在本条当中都是有效的'这里还定义了一些新的函数 。
a) AddInheritance
该命令在两个已经存在的角色r-asc 和 r-desc 之间建立直接继承关系r-asc>>r-desc 。该命令可用当且仅当 r-asc 和 r-desc 都是 ROLES数据集的成员 ' r-asc 不是r-desc 的直接祖先'并且 r-desc 不继承r-asc(避免产生回路) 。 以下模式使用了下述记号:
≥ = =≥
>>= =>>
该命令的形式化描述如下:
AddInheritance(r-asc ' r-desc : NAME)<
r-asc ∈ ROLES; r-desc ∈ ROLES; —(r-asc >> r-desc) ; 一(r-desc ≥ r-asc)
≥ ’ =≥u (r'q: ROLES | r ≥ r-asc Λ r-desc ≥ q . r →q} D b) DeleteInheritance
该命令删除已经存在的直接继承关系 r-asc>>r-desc 。该命令可用当且仅当 r-asc 和 r-desc 是ROLES数据集的成员 ' r-asc 是 r-desc 的直接祖先 。在执行完该命令以后'新的继承关系是新的直接继承关系的 自反传递闭包 。下面的模式形式化地描述了该命令:
DeleteInheritance(r-asc ' r-desc : NAME)<
r-asc ∈ ROLES; r-desc ∈ ROLES; r-asc >> r-desc
≥ ’ = (>> /{r-asc →r-desc}) * D
c) AddAscendant
该命令创建一个新角色 r-asc'并作为现存角色 r-desc 的直接祖先插入到角色层次中去 。该命令可用当且仅当 r-asc 不是 ROLES的成员 ' r-desc 是 ROLES数据集的成员 。注意可用性条件的验证是在 AddInheritance 中引用的模式 AddRole 和 AddInheritance 中进行的 。
11
GB/T 25062—2010
AddAscendant (r一asc ' r一desc : NAME)<
AddRole(r一asc)
AddInheritance(r一asc ' r一desc) D
d) AddDescendant
该命令创建一个新的角色作为现存角色 r一asc 的直接后代插入到角色层次中 。该命令可用当且仅当 r一desc 不是 ROLES的成员 ' r一 asc 是 ROLES数据集的成员 。 注意可用性条件是在 AddDescedant中引用的 AddRole 和 AddInheritance 中验证的 。
AddDescendant (r一asc ' r一desc : NAME)<
AddRole(r一desc)
AddInheritance(r一asc ' r一desc) D
7 . 3 . 1 . 2 通用角色层次支持系统函数
本条扩展了 7 . 2 . 2 的函数 createSession 和 AddActiveRole 。7 . 2 . 2 条的其余函数都保持有效 。
a) createSession
该函数为指定用户的创建一个新会话'该会话以指定的角色集作为其激活角色集 。该函数可用当且仅当:
1) 该用户是 USERS数据集的成员 ;
2) 指定的激活角色集是该用户授权角色集的子集 。 注意 ' 即使一个角色在一个会话中是激活的'它的祖先和后代在该会话中未必激活 。 在实际的 RBAc实现中'会话的激活角色集可以实现为与这些角色对应的组 。
下面的模式形式化地描述了该函数 。参数 Session实际上是由底层系统产生的 。
createSession(user : NAME; ars :2NAME ; session: NAME)<
user ∈ USERS; ars ≤ {r'q: ROLES | (user →q) ∈ UA Λ q ≥ r . r} ; session 呋 SESSIONS SESSIONS, = SESSIONS U {session}
session一user , = session一user U {session →user}
session一roles , = session一roles U {session →ars} D
b) AddActiveRole
该函数给指定的用户会话增加一个激活角色 。该函数可用当且仅当:
1) 该用户是 USERS数据集的成员 ;
2) 该角色 ROLES数据集的成员 ;
3) 该会话标识符是 SESSIONS数据集的成员 ;
4) 该角色是该用户的授权角色 ;
5) 该用户拥有该会话 。
下面的模式形式化地描述了该函数:
AddActi℃eRole(user ' session ' role : NAME)<
user ∈ USERS; session ∈ SESSIONS;role ∈ ROLES; user = session一user(session)
user ∈ authorized 一users(role) ; role 呋 session一roles(session)
session一roles , = session一roles/{session →session一roles(session)} U
{session → (session一roles(session) U {role})} D
7 . 3 . 1 . 3 通用角色层次查看函数
7 . 2 . 3 所有的函数都可用 。本条定义了如下查看函数:
a) AuthorizedUsers
该函数返回拥有给定角色的授权用户 。该函数可用当且仅当给定角色是 ROLES的成员 。下面的模式形式化地描述了该函数:
12
GB/T 25062—2010
AuthorizedUsers(role: NAME; result :2USERS )<
role ∈ ROLES
result =authorized—users(role) D
b) AuthorizedRoles
该函数返回给定用户的授权角色 。该函数可用当且仅当该用户是 USERS数据集的成员 。下面的模式形式化地描述了该函数:
AuthorizedRoles(user: NAME; result :2ROLES)<
user ∈ USERS
result =(r'q: ROLES | (user →q) ∈ UA Λ q ≥ r} D
7 . 3 . 1 . 4 通用角色层次高级查看函数
本条扩展了 7 . 2 . 4 的 Rolepermissions 和 Userpermissions 函数 。该条其余函数都保持有效 。
a) Rolepermissions
该函数返回给定角色的所有权限 。该函数可用当且仅当该角色是 RoLES数据集的成员 。下面模式形式化地描述了该函数:
Rolepermissions(role: NAME; result :2 pERMS )< role ∈ ROLES
result ={q: ROLES; op : OpS; obj : OBJS | (role ≥ q) Λ ((op ' obj) →q) ∈ pA . (op ' obj)} D
b) Userpermissions
该函数返回给定用户所有授权角色的权限 。 该函数可用当且仅当该用户是 USERS数据集的成员 。下面的模式形式化地描述了该函数:
Userpermission(user: NAME; result :2 pERMS )< user ∈ USERS
result ={r'q: ROLES; op : OpS; obj : OBJS | (user →q) ∈ UA Λ (q ≥ r) Λ ((op ' obj) → r) ∈ pA . (op ' obj)} D
c) Roleoperationsonobject
该函数返回角色针对给定对象可以执行的操作集'这些操作有可能是该角色直接分配的和继承来的 。该函数可用当且仅当该角色是 RoLES数据集的成员'该对象是 oBJS的成员 。 下面的模式形式化地描述了该函数:
RoleOperationsOnObject (role: NAME; obj : NAME; result :2 OpS)<
role ∈ ROLES
obj ∈ OBJS
result ={q: ROLES; op : OpS | (role ≥ q) Λ ((op ' obj) →q) ∈ pA . op} D d) Useroperationsonobject
该函数返回给定用户针对给定对象可以执行的所有操作 。该函数可用当且仅当用户是 USERS数据集的成员'该对象是 oBJS数据集的成员 。下面模式形式化地描述了该函数:
UserOperationsOnObject (user: NAME; result :2 OpS)< user ∈ USERS
obj ∈ OBJS
result ={r'q: ROLES; op : OpS | (user →q) ∈ UA Λ (q ≥ r) Λ ((op ' obj) → r) ∈ pA . op} D 7 . 3 . 2 受限角色层次
7 . 3 . 2 . 1 受限角色层次管理函数
本条重新定义了 7. 3. 1 . 1 的 AddInheritance 函数'该条中所有其他函数保持有效 。AddInheritance定义如下:
13
GB/T 25062—2010
该命令在两个已存在的角色r-asc 和 r-desc 之间创建直接继承关系r-asc>>r-desc 。该命令有效当且仅当 r-asc 和 r-desc 是 ROLES数据集的成员 ' r-asc 没有后代 ' r-desc 不继承r-asc(避免出现回路) 。下面的模式使用了如下记法:
≥ = =>—
>>= =>>
形式化地:
AddInheritance(r-asc ' r-desc : NAME)<
r-asc ∈ ROLES; r-desc ∈ ROLES; Yr ∈ ROLES . (r-asc >> r) ; (r-desc ≥ r-asc) ≥ ’ =≥U (r'q: ROLES | r ≥ r-asc Λ r-desc ≥ q . r →q} D
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 静态职责分离关系
7 . 4 . 1 静态职责分离
本标准中的静态职责分离关系使用一组由角色集和阈值构成的 SSD对 。本条定义了新的数据类型 SSD'该类型可以看作是用来标识 SSD对的角色集的名字的集合 。
函数 ssd-set 和 ssd-card 分别用来获得 SSD对中的角色集和阈值 。
ssd-set : SD → 2 ROLES
ssd-card : SD → N
Y ssd ∈ SD . ssd-card(ssd) ≥ 2 Λ ssd-card(ssd) ≤| ssd-set (ssd) | 7 . 4 . 1 . 1 SSD关系管理函数
本条扩展了 7 . 2 . 1 的 AssignUser 函数'该条的其余函数保持有效 。 本条还定义了一系列新的函数 。
a) AssignUser
该命令取代核心 RBAC中的同名函数 。该命令给用户分配一个角色'其可用当且仅当:
1) 该用户是 USERS数据集的成员 ;
2) 该角色是 ROLES数据集的成员 ;
3) 该用户还没有被分配该角色 ;
4) 所有 SSD约束在执行完该命令后仍然被满足 。
数据集 UA和函数 assigned-users 被更新 。下面的模式形式化地描述了该命令:
AssignUser(user ' role : NAME)<
user ∈ USERS;role ∈ ROLES; (user →role) 呋 role
Y ssd 呋 SD us assigned-users(r) U us) =⑦ UA’ =UA U { user →role}
assigned-users’ =assigned-users/{role →assigned-users(role)} U
{role → (assigned-users(role) U {user})} D
b) CreateSsdSet
该命令创建一个命名的 SSD角色集合'并设定相应的阈值 。该命令可用当且仅当:
14
GB/T 25062—2010
1) SSD角色集的名称还没有被使用 ;
2) SSD角色集中的角色都是 ROLES数据集的成员 ;
3) n是一个大于或等于 2 自然数'同时还要小于或等于 SSD角色集的基数 ;
4) 新的 SSD角色集的约束当前是被满足的 。
下面的模式形式化地描述了该命令:
createSsdSet (set -name : NAME; role-set :2NAMES ; n: N)<
set -name 呋 SD ; (n ≥ 2) Λ (n≤| role-set | ) ; role-set ≤ ROLES
15
∩
r∈ subset
subset ≤role-set
|subset | = n
assigned-users(r) =⑦
SD’ = SD U { set -name}
ssd-set’ = ssd-set U { set -name →role-set }
ssd-card’ = ssd-card U { set -name →n} D
c) DeleteSsdRoleMember
该命令从一个命名的 SSD角色集中删除一个角色'关联的阈值不发生改变 。该命令有效当且仅当:
1) SSD角色集已经存在 ;
2) 要删除的角色是该 SSD角色集的成员 ;
3) 该 SSD角色集关联的阈值小于该角色集的基数 。
注意:修改后的 SSD约束应该当前是被满足的 。下面的模式形式化地描述了该命令:
DeleteSsdRoleMember(set -name : NAME;role : NAME)<
set -name ∈ SD; role ∈ ssd-set (set -name) ; ssd-card(set -name) <| ssd-set (set -name) | ssd-set’ = ssd-set /{ set -name →ssd-set (set -name)} U
{ set -name → {ssd-set (set -name)/{role})} D
d) DeleteSsdSet
该命令删除一个 SSD角色集 。该命令可用当且仅当该 SSD角色集存在 。下面的模式形式化地描述了该命令:
DeleteSsdSet (set -name : NAME)<
set -name ∈ SD
ssd-card’ = ssd-card/{ set -name →ssd-card(set -name)}
ssd-set’ = ssd-set /{ set -name →ssd-set (set -name)}
SD’ = SD/{ set -name} D
e) SetSsdSetcardinality
该命令设定 SSD角色集关联的阈值 。该命令可用当且仅当:
1) 该 SSD角色集存在 ;
2) 新的阈值是一个大或者等于 2 的 自然数'它要小于或等于 SSD角色集的基数 ;
3) 新的 SSD约束当前应该是被满足的 。
下面模式形式化地描述了该命令:
SetSsdcardinality(set -name : NAME;n: N)
set -name ∈ SD ; (n ≥ 2) Λ (n≤| ssd-set (set -name) | )
subset assigned-users(r) =⑦
ssd-card’ = ssd-card/{ set -name →ssd-card(set -name)} U { set -name →n} D
7 . 4 . 1 . 2 静态职责分离支持系统功能
7 . 2 . 2 中的函数保持有效 。
GB/T 25062—2010
7 . 4 . 1 . 3 静态职责分离查看函数
7 . 2 . 3 中的函数保持有效'此外本节还定义了如下函数:
a) SsdRoleSets
该函数返回所有 SSD角色集的名称 。下面的模型形式化地描述了该函数:
SsdRoleSets(result :2NAME)< result = SD D
b) SsdRoleSetRoles
该函数返回一个给定 SSD角色集中的角色 。该函数可用当且仅当该角色集存在 。下面的模式形式化地描述了该函数:
SsdRoleSetRoles(set -name: NAME; result :2ROLES)<
set -name ∈ SD
result = ssd-set (set -name) D
c) SsdRoleSetcardinality
该函数返回与给定 SSD角色集关联的阈值 。该函数可用当且仅当该角色集存在 。下面的函数形式化地描述了该函数:
SsdRoleSetcardinality(set -name : NAME; result : N)<
set -name ∈ SD
result = ssd-card(set -name) D
7 . 4 . 1 . 4 静态职责分离高级查看函数
7 . 2 . 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) 在该命令执行之后所有 SSD约束仍然是满足的 。
数据集 UA和函数 assigned-users 被更新 。下面的模式形式化地描述了该命令:
AssignUser(user ' role : NAME)<
user ∈ USERS;role ∈ ROLES; (user →role) 呋 UA
16
Y ssd ∈ SD . ∩
r∈ subset
subset ≤ sd-set ( sd)
|subset | = sd-card( sd)
au=if r=role then {user} else ⑦
(authori≈ed-users(r) U au) =⑦
UA, =UA U { user →role}
assigned-users , =assigned-users/{role →assigned-users(role)} U
{role → (assigned-users(role) U {user})} D
b) AddInheritance
该命令在两个角色 r-asc 和 r-desc 之间建立直接继承关系 r-asc>>r-desc 。该命令可用当且仅当:
1) r-asc 和 r-desc 都是 ROLES数据集的成员 ;
2) r-asc 不是 r-desc 的直接祖先 ;
3) r-desc 不继承 r-asc ;
GB/T 25062—2010
4) SSD约束在该命令执行后仍是满足的 。
下面的模式使用了如下记法:
≥ = =≥
>>= =>>
来形式化地描述该命令 。
AddInheritance(r-asc ' r-desc : NAME)<
r-asc ∈ ROLES; r-desc ∈ ROLES; (r-asc >> r-desc) ; (r-desc ≥ r-asc)
17
Y ssd ∈ SD . ∩
r∈ subset
subset ≤ sd-set ( sd)
|subset | = sd-card( sd)
au=if r = r-desc then authori≈ed-users(r-asc) else ⑦
(authori≈ed-users(r) U au) =⑦
≥ , =≥U {r'q: ROLES | r ≥ r-asc Λ r-desc ≥ q . r →q} D
c) createSsdSet
该命令创建一个命名的 SSD角色集合'并设定相应的阈值 。该命令可用当且仅当:
1) SSD角色集的名称还没有被使用 ;
2) SSD角色集中的角色都是 ROLES数据集的成员 ;
3) n是一个大于或等于 2 自然数'同时还要小于或等于 SSD角色集的基数 ;
4) 新的 SSD角色集的约束当前是被满足的 。
下面的模式形式化地描述了该命令:
createSsdSet (set -name : NAME; role-set :2NAMES ; n: N)<
set -name 呋 SD ; (n ≥ 2) Λ (n≤| role-set | ) ; role-set ≤ ROLES
∩
r∈ subset
subset ≤role-set
|subset | = n
authori≈ed-users(r) =⑦
SD, = SD U { set -name}
ssd-set , = ssd-set U { set -name →role-set }
ssd-card , = ssd-card U { set -name →n} D
d) AddSsdRoleMember
该命令为 SSD角色集增加一个角色'该 SSD角色集关联的阈值不发生改变 。
该命令可用当且仅当:
1) 该 SSD角色集存在 ;
2) 该角色是 ROLES数据集的成员'并且尚不属于该 SSD角色集 ;
3) 该命令执行之后'SSD约束仍然是满足的 。
下面的模式形式化地描述了该模式:
AddSsdRoleMember(set -name : NAME;role : NAME)<
set -name ∈ SD;role ∈ ROLES;role 呋 ssd-set (set -name)
∩ authori≈ed-users(r) =⑦
r∈ subset
subset ≤ sd-set ( set-name) U {role}
|subset | = n
ssd-set , = ssd-set /{ set -name →ssd-set (set -name)} U
{ set -name → (ssd-set (set -name) U {role})} D e) SetSsdSetcardinality
该命令设定与给定的 SSD角色集关联的阈值 。该命令可用当且仅当:
1) 该 SSD角色集存在 ;
2) 新的阈值是一个大或者等于 2 的 自然数'它小于或等于 SSD角色集的基数 ;
3) 该命令执行之后'SSD约束仍然是满足的 。
GB/T 25062—2010
下面模式形式化地描述了该命令:
SetSsdcardinality(set —name : NAME;n: N)<
set —name ∈ SD ; (n ≥ 2) Λ (n ≤| ssd—set (set —name) | )
∩ authori≈ed—users(r) =⑦
r∈ subset
subset ≤ sd—set ( set —name)
|subset | = n
ssd—card , = ssd—card/{ set —name →ssd—card(set —name)} U { set —name →n} D
7 . 4 . 2 . 2 通用角色层次静态职责分离支持系统函数
7 . 3 . 1 . 2 的函数都保持有效 。
7 . 4 . 2 . 3 通用角色层次静态职责分离查看函数
7 . 3 . 1 . 3 和 7 . 4. 1 . 3 的函数保持有效 。
7 . 4 . 2 . 4 通用角色层次静态职责分离高级查看函数
7 . 3 . 1 . 4 的函数保持有效 。
7 . 4 . 3 受限角色层次静态职责分离关系
7 . 4 . 3 . 1 受限角色层次静态职责分离管理函数
本条重新定义了 7 . 4. 2 . 1 的 AddInheritance 函数' 7 . 4. 2 . 1 其余的函数保持有效 。AddInheritance定义如下:
该命令在两个现存的角色 r—asc 和 r—desc 之间建立直接继承关系 r—asc>>r—desc 。该命令可用当且仅当: r—asc 和 r—desc 都是 ROLES数据集的成员 ' r—asc 没有后代 ' r—desc不继承r—asc(避免出现回路) 。
下面的模式使用如下的记法:
≥ = =≥
>>= =>>
形式化地描述了该命令:
AddInheritance(r—asc ' r—desc : NAME)<
r—asc ∈ ROLES; r—desc ∈ ROLES; Yr ∈ ROLES . 一(r—asc >> r) ; 一(r—desc ≥ r—asc)
18
Y ssd ∈ SD . ∩
r∈ subset
subset ≤ sd—set ( sd)
|subset | = sd—card( sd)
au=if r = r—desc then authori≈ed—users(r—asc) else ⑦
(authori≈ed—users(r) U au) =⑦
≥ , =≥U {r'q: ROLES | r ≥ r—asc Λ r—desc ≥ q . r →q} D
7 . 4 . 3 . 2 受限角色层次静态职责分离支持系统函数
7 . 4. 2 . 2 的函数保持有效 。
7 . 4 . 3 . 3 受限角色层次静态职责分离查看函数
7 . 3 . 2 . 3 和 7 . 4. 1 . 3 的函数保持有效 。
7 . 4 . 3 . 4 受限角色层次静态职责分离高级查看函数
7 . 3 . 2 . 4 的函数保持有效 。
7 . 5 动态职责分离
7 . 5 . 1 动态职责分离
本标准中的动态职责分离关系使用一组由角色集和阈值的构成的 DSD对 。本条定义了新的数据类型 DSD'该类型可以看作是用来标识 DSD对的角色集的名字的集合 。
函数 dsd—set 和 dsd—card 分别用来获得 DSD对中的角色集和阈值 。
dsd—set : DSD → 2 ROLES
dsd—card : DSD → N
Ydsd ∈ SD . dsd—card(dsd) ≥ 2 Λ dsd—card(dsd) ≤| dsd—set (dsd) | 7 . 5 . 1 . 1 动态职责分离关系管理函数
7 . 2 . 1 的函数保持有效'此外本条还定义了如下函数:
a) createDsdSet
GB/T 25062—2010
该命令创建一个命名的 DSD角色集合'并设定相应的阈值 。该 DSD约束要求 DSD角色集中任何n个或者更多角色不能都在某个用户会话过程中被激活 。该命令可用当且仅当:
1) DSD角色集的名称还没有被使用 ;
2) DSD角色集中的角色都是 ROLES数据集的成员 ;
3) n是一个大于或等于 2 自然数'同时还要小于或等于 DSD角色集的基 ;
4) 新的 DSD角色集的约束当前是被满足的 。
下面模式形式化地描述了该命令:
createDsdSet (set -name : NAME; role-set :2NAMES ; n: N)<
set -name 呋 DSD ; (n ≥ 2) Λ (n≤| role-set | ) ; role-set ≤ ROLES
Ys: SESSIONS; role-subset :2role-set . role-subset ≤ session-roles(s) → | role-subset | < n DSD’ = DSD U { set -name}
dsd-set’ =dsd-set /{ set -name →role-set }
dsd-card’ =dsd-card U { set -name →n} D
b) AddDsdRoleMember
该命令为一个给定的 DSD角色集增加一个角色' DSD角色集关联的阈值不发生改变 。该命令有效当且仅当:
1) 该 DSD角色集存在 ;
2) 该角色是 ROLES数据集的成员'并且尚不属于该 DSD角色集 ;
3) 该命令执行之后'DSD约束仍然是满足的 。
下面模式形式化地描述了该模式:
AddDsdRoleMember(set -name : NAME;role : NAME)<
set -name ∈ DSD;role ∈ ROLES;role 呋 dsd-set (set -name)
Ys: SESSIONS; role-subset :2dsd-set ( set-name) U {role} .
role-subset ≤ session-roles(s) → | role-subset | < dsd-card(set -name)
dsd-set’ =dsd-set /{ set -name →dsd-set (set -name)} U
{ set -name → (dsd-set (set -name) U {role})} D
c) DeleteDsdRoleMember
该命令从 DSD角色集中删除一个角色'其关联的阈值不发生改变 。该命令有效当且仅当:
1) DSD角色集已经存在 ;
2) 要删除的角色是该 DSD角色集的成员 ;
3) 该 DSD角色集关联的阈值小于该角色集的成员数 。
注意:修改后的 DSD约束当前应该是被满足的 。下面的模式形式化地描述了该命令:
DeleteDsdRoleMember(set -name : NAME;role : NAME)<
set -name ∈ DSD; role ∈ dsd-set (set -name) ; dsd-card(set -name) <| dsd-set (set -name) | dsd-set’ =dsd-set /{ set -name →dsd-set (set -name)} U
{ set -name → (dsd-set (set -name)/{role})} D
d) DeleteDsdSet
该命令删除一个 DSD角色集 。该命令可用当且仅当该 DSD角色集存在 。下面的模式形式化地描述了该命令:
DeleteDsdSet (set -name : NAME)<
set -name ∈ DSD
dsd-card’ =dsd-card/{ set -name →dsd-card(set -name)}
dsd-set’ =dsd-set /{ set -name →dsd-set (set -name)}
DSD’ =DSD/{ set -name} D
19
GB/T 2506
相关推荐
- GB∕T 12818-2021 铁路客车组装后的检查与试验规则
- GB/T 43063-2023 集成电路 CMOS图像传感器测试方法 正式版
- GB/T 33145-2023 大容积钢质无缝气瓶
- GB∕T 3480.2-2021 直齿轮和斜齿轮承载能力计算 第2部分:齿面接触强度(点蚀)计算
- GB∕T 41111-2021 气焊用非合金钢及热强钢填充丝
- GB/T 24176-2009 金属材料 疲劳试验 数据统计方案与分析方法
- GB/T 11348.5-2008 旋转机械转轴径向振动的测量和评定 第5部分:水力发电厂和泵站机组
- GB/Z 43075-2023 液压传动连接 标识与命名 正式版
- [清晰版] GB/T 11348.2-2012 旋转机械转轴径向振动的测量和评定 第2部分:50MW以上,额定转速1500rmin、1800rmin、3000rmin、3600rmin陆地安装的汽轮机
- GB/T 44309-2024 陶瓷岩板

