原来接触好久的安全管理基于RBAC模型

测试已工作五年,系统中总有个安全管理功能:1) 有操作集有角色有用户;2) 用户可以有多个角色,每个角色可以分配给不同的用户;3) 每个角色可以有多个操作集,每个操作集可以分给多个角色;4) 操作集可以自己定义也有预定义的,角色也是有一样的,用户一般只预定义一个admin用户。认证可以是本地认证,也可以是外部认证比如ldap /ldaps或radius等服务器。此外用户还绑定账户规则:定义了什么时间段有权限登录,哪些服务器(主机IP)可以登录等等。

意外发现:接触这么久的安全管理竟基于RBAC模型,那什么是RBAC呢?

RBAC(Role-Based Access Control)基于角色访问控制有4个模型:RBAC0、RBAC1、RBAC2、RBAC3。RBAC0为最基本的权限功能。RBAC1在RBAC0基础上增加角色分层的概念,一个角色可以继承另外一个角色。RBAC2在RBAC0基础上增加一些限制:互斥角色、角色的最大用户数上限、角色使用的先决条件。RBAC3包含RBAC0,RBAC1和RBAC2。

安全模型的4个要素:

User :可以访问某系统的用户,关联一个唯一的用户id。

Role: 一个或多个操作权限的集合。

Permission:对一个或多个对象的特定访问模式,相当于访问权限和授权。

Session:用户与被分配用户的角色集的激活子集之间的映射。

用户和角色是多对多的关系,用户可以有多个角色,每个角色可以分配给不同的用户。角色和操作集也是多对多的关系,每个角色可以有多个操作集,每个操作集可以分给多个角色。session在1个用户和1至多个角色之间定义一个临时的一对多关系。

这就是最基本的安全模型RBAC0。

然而管理角色权限比运维角色的有更多访问资源的权限,运维角色权限是管理角色的一个子集。这样的角色层次结构利用继承概念使一个角色隐式包含一个从属角色关联的访问权限。角色分层提供一个映射角色层次结构的方法。

这就是角色分层的安全模型RBAC1。

角色有一定的分层结构(从属关系),但也有角色操作权限重叠的时候,这就需要角色之间增加限制。都有哪些限制条件呢?互斥角色,角色的最大用户数上限和先决条件

1) 互斥角色限制

互斥角色只能给一个用户只能分配一个角色。这个限制可以是静态的也可以是动态的。互斥角色的限制保证职责和权限的分离。

互斥角色的拥有以下属性:

      a) 一个用户只能分配一个角色在动态的session或静态的session中(session不好理解:用户和角色的映射关系)。

      b) 任何权限都只能分配给一个角色。

互斥角色为了增加不同技能的个人或不同的工作职能之间串通的难度,以阻碍安全政策。

2) 角色的最大用户数上限

一个项目组或一个部门,一般都只有一个负责人,那么项目负责人角色或部门主管角色通常仅限于单个用户。系统需要对用户分配的角色数量或用户为单个会话激活的角色数量施加约束。

3) 先决条件限制

一个用户分配给某个高权限角色的前提是已经分配给某个低权限的角色。先决条件可用于构建最小权限概念的实现。

这就是限制的安全模型RBAC2。

RBAC3在RBAC0基础上,包含了RBAC1的角色分层和RBAC2的角色限制功能。

NIST RBAC规范

2001年随着RBAC社区进一步改善,已被美国国家标准协会ANSI/INCITS(国际信息技术标准委员会)采纳为ANSI INCITS 359-2004。

NIST标准的主要创新是引入了RBAC系统和管理功能规范,该规范定义了RBAC系统所需的功能。

该规范的好处

        a) 该规范为供应商提供了功能基准,指出必须向用户提供哪些功能以及这些功能的通用编程接口。

        b) 该规范指导用户开发需求文档和统一评估供应商产品。

        c) 该规范还提供了一个基线系统,研究人员和实施人员可以在其上构建增强功能。

规范定义了3类功能:

        a)  管理功能Administrative functions: 提供增加删除的能力以及维护RBAC元素和关系。

        b) 支持系统功能Supporting system functions: 提供session管理(配置用户和角色映射关系)和访问控制决策making access control decisions。

      c)  查看功能Review functions: 提供RBAC元素和关系的查询功能。

NIST RBAC模型包含4个组件:

core RBAC,hierarchical RBAC,static separation of duty (SSD) relations,dynamic separation of duty (DSD) relations。

Core RBAC

core RBAC的核心元素和RBAC0一样是: users, roles, permissions, and sessions。

NIST RBAC模型引入两个从属实体(Object 和Operation)来阐述权限Permission,相关定义如下:

对象Object: 受访问控制的任何系统资源,如文件,打印,终端和数据库记录等。比如爱奇艺视频APP上的VIP视频,没有VIP会员只能看前5分钟。

操作Operation: 程序可执行的映象,在调用时为用户执行某些功能。比如爱奇艺视频APP上只有VIP可以操作连续签到获取VIP。

权限Permission: 控制一个或多个RBAC受保护对象的操作。

Core RBAC的管理功能包括 用户的增加删除;角色的增加删除; 用户角色关系(给用户分配角色:session)的增加删除;角色权限关系的增加删除。

支持系统功能包括创建一个用户和一个默认角色的会话session;会话中增加和删除角色;检查会话是否有权限对某个资源对象执行某个请求操作;

查看功能包括查看模型的所有元素和它们的关系,包括用户,角色,用户分配,角色分配和session元素。

Core RBAC是最基本的模型,具有当前RBAC系统的常见功能。

Hierarchical RBAC

Hierarchical RBAC引用之前提到的RBAC1的继承概念。如果角色r1继承角色r2的所有权限且拥有角色r1权限的所有用户也同时拥有角色r2的权限,则角色r1为r2的后代。

NIST model模型定义了两种角色层次结构:

      a) 常规角色层次结构:允许角色层次结构的任意部分排序。支持多重继承,一个角色可以从多个从属角色中继承权限,多个角色可以从同一从属角色继承权限。

      b) 有限的层次结构:施加限制导致更简单的角色树结构。限制使一个角色有一个或多个直属父代,但仅限于一个直属后代。

      角色层次结构的基本原理是继承属性极大地简化了权限关系的定义。角色可以具有重叠的操作权限,意味着属于不同角色的用户可能拥有一些相同的操作权限。为了避免从头开始定义多个角色以适应各种用户,角色层次结构用于许多商业实现中。常规角色层次结构为此提供了最强大的工具,限制的层次结构也很有用,可以更简单地实现角色层次结构。

Hierarchical RBAC给Core RBAC增加了4个管理功能:两个角色间直属继承关系的增加 ;两个角色间直属继承关系的删除;创建一个现有角色的直属后代;创建一个现有角色的直属父代。

Hierarchical RBAC查看功能使管理者有查看操作权限,查看用户和角色之间直接或间接的关系。

Static Separation of Duty(SSD) Relations静态分离关系

SSD和DSD是NIST RBAC model中两个限制性的组件。这些限制以职责关系分离的形式,用于执行可能产生的利益冲突政策,以防止用户超出其角色(职位)的合理权限级别。

SSD定义了互斥角色的集合,比如一个用户分配互斥角色集合中某个角色那么就不能分配该集合中另外的角色。 此外SSD还设置了角色集合的用户数最大上限。SSD简单地定义为(role set, n) ,意味着没有用户可以分配到比n更多的角色集合。

SSD管理功能:创建或删除角色集;增加删除角色成员。

SSD功能查看功能:用于查看现有SSD集合属性。

Dynamic Separation of Duty Relations动态分离关系

和SSD一样,DSD限制了一个用户可用的操作权限。 DSD规范对用户会话内或跨用户会话内激活的角色设置constraints(角色的用户最大数上限),来限制权限的可用性。DSD定义constraints为(role set, n),意味着没有用户会话可以从角色集中激活比n个更多的角色。

DSD使管理员能够在不重叠的时间范围内为用户指定某些功能。 与SSD一样,DSD管理功能:DSD关系的增删,查看功能:DSD关系的查看。

参考:Role-Based Access Control in Computer Security

你可能感兴趣的:(原来接触好久的安全管理基于RBAC模型)