信息系统安全 第五章 访问控制

信息系统安全 第五章 访问控制

访问控制概述

访问控制机制与系统安全模型

引用监控器(The Reference Monitor)的概念是经典安全模型的最初雏形。一个基本的安全机制是 3A 即身份认证(Authentication)、访问控制(Authorization)和审计(Audit)。

它包括以下基本要素:

  • 明确定义的主体、客体
  • 描述主体如何访问客体的一个授权收据库
  • 约束主体对客体访问尝试的引用监控器
  • 识别和验证主体和客体的可信子系统
  • 审计引用监控器活动的审计子系统

访问控制就是在主体身份得到认证后,根据授权数据库中预先定义的安全策略对主体行为进行限制的机制和手段。

访问控制的基本概念

访问控制常常以身份认证作为前提,在此基础上实施各种访问控制策略和规范合法用户在系统中的行为。

访问控制包括两个重要的过程,其一是授权,通过授权设定合法用户对资源的访问权限规则集;其二是访问监控,根据预先设定的规则对用户访问某项资源(目标)的行为进行控制。

访问控制的主要概念:

  • 主体(Subject):访问操作的主动发起者
  • 客体(Object):被访问的对象
  • 访问(Access):信息在主体和客体之间流动的一种交互方式
  • 访问控制策略:主体对客体的访问规则集
    • 最小特权原则:主体所需权利的最小化原则,最大限度限制主体行为
    • 最小泄露原则:主体所需知道的信息最小化原则
    • 多级安全策略:主客体分配一定的安全级别:绝密、秘密、机密、限制和无级别,主客体的数据流向和权限控制不允许信息从高级别向低级别流动为原则

访问控制包括三个任务:授权、确定访问权限、实施访问权限。

策略语言

策略语言是描述安全策略的语言,分为:

  • 高级安全策略语言:使用抽象的方法表达对实体的约束策略,采用数学的或程序化的策略表示形式
    • 如:DTEL
  • 低级安全策略语言:根据系统中程序的输入或调用选项来表达约束
    • 如:xhosts

访问控制策略

自主访问控制

自主访问控制(DAC, Discretionary Access Control)是指资源(客体)所有者对其拥有的资源,可自主地将访问权限分发给其他主体。

DAC 通常有三种实现机制,即访问控制矩阵(Access Control Matrix)、访问控制列表(ACLs, Access Control Lists)和访问控制能力表(ACCLs, Access Control Capabilities Lists)。

访问控制矩阵

利用二维矩阵规定了任意主体和任意客体间的访问权限。行代表主体的访问权限属性,列代表客体的访问权限属性,每一格代表所在行的主体对所在列的客体的访问授权。如下所示:

注:R 是读、W 是写、Own 是拥有者。

访问控制矩阵清晰描述了任意主体对任意客体的访问权限。但是在较大系统中,很多单元格可能为空,造成较大的存储空间浪费。

访问控制列表

按访问控制矩阵的列实施对系统中客体的访问控制。每个客体有一个访问控制列表,用来说明有权访问该客体的所有主体及访问权限。如下:

很容易的判断出对于特定客体的授权访问,哪些主体可以访问并有哪些访问权限。

访问能力表

按访问控制矩阵的行实施对系统中客体的访问控制。能力(Capability)是为主体提供的、对客体具有特定访问权限的不可伪造的标志。如下:

但即使是一个简单的文件权限查询,也要花费大量的时间查询每个用户的能力表。

DAC 的缺陷:

  • 用户自主地将自己客体的访问操作权限授权给别的客体,权力多次转授后,一旦转授给不可信主体,那么客体信息就会泄漏
  • 无法抵御特洛伊木马攻击,木马窃取敏感文件方法有两种:
    • 通过修改敏感文件的访问权限,DAC 下使合法用户运行一段程序修改自己文件的访问权限
    • 利用合法用户读敏感文件的机会,把文件内容复制到入侵者的临时目录下

优点:授权机制灵活。

强制访问策略

强制访问控制(MAC, Mandatory Access Control)将授权归于系统管理,并确保授权状态的变化始终处于系统的控制下。在 MAC 中,每个主体和客体都被赋予一定的安全属性,且只能由管理部门或操作系统按照严格的规则设定。当一个主体访问一个客体时,MAC 通过比较主体和客体的安全属性来决定访问是否允许。

强制访问控制模型

支配:

  • 主体对客体的支配,是指主体的保密级别不小于客体的保密级别,主体的范畴集包含客体的全部范畴。
  • 客体对主体的支配,是指客体的保密级别不小于主体的保密级别,客体的范畴集包含主体的全部范畴。
BLP 模型

Bell-LaPadula(BLP)模型是遵守军事安全策略的多级安全模型,主要用于解决面向机密性的访问控制问题。

BLP 模型中,主客体的安全属性由两部分组成:保密级别和范畴集(该安全级设计的领域)。保密级别是线性排列的,如:公开 < 秘密 < 机密 < 绝密,范畴则是相互独立和无序的。

BLP 模型有两个基本规则:

  • 简单安全性:一个主体对客体进行读操作的必要条件是主体的安全级支配客体的安全级,即主体只能向下读,不能上读。
  • * 特性:一个主体对客体进行写访问的必要条件是客体的安全级支配主体的安全级,即主体只能向上写,不能下写。

BLP 模型的 MAC 可以改概括为不允许“上读,下写”。保密性要求只有高保密级的主体能够读低保密级客体的内容,否则会造成高保密级的客体的信息泄露;高保密级别的主体对低保密级别的客体进行写操作也会造成信息泄露。

Biba 模型

在某种意义上,完整性比机密性更加重要。其三个操作原则是:

  • 职责隔离(Separation of Duty):一个重要的功能由多个人员完成
  • 功能隔离(Separation of Function):单独一人不能承担某一重要过程中的互补任务
  • 审计(Auditing):可恢复性和可追踪行要求维护审计记录

主要目的是保护数据的完整性。每个主体和客体被分配一个完整性属性,由一个完整性级别(integrity level)和一个范畴集构成。信息只能从高完整性等级向低完整性等级流动。

对一个客体的不可靠信息流则会破坏该客体的完整性。这个不可靠的信息可能来自一个更低完整性级别的主体或者一个更低完整性级别的客体。

其访问模式分为 observe、modify、invoke 分别对应 BLP 中的 read、write、execute。记主体的完整性级别为 f(S),客体的完整性级别为 f(O)

实施策略一般分为三种:low-water-mark policy、ring policy、strict policy。

  • LWM policy
    • $ if Observe(S,O) then f(S)=min(f(S),f(O)) $,读完之后,主体完整性发生变化
    • \(Subject\ S\ can\ modify\ object\ O\ only\ if\ f(O)\leq f(S)\)
    • \(Subject\ S_1\ can\ invoke\ subject\ S_2\ only\ if\ f(S_2)\leq f(S_1)\)
    • 如果从客体 \(O_1\) 到客体 \(O_n\) 之间存在信息传输路径,那么策略要求 \(f(O_{i+1})\leq f(O_1)\),对于所有的 i > 1。
    • 主体对某些较低或不相容的完整级别的客体执行 observe 操作后,会降低自身的完整级别。有可能减少主体课存取的客体集,是原来可行的某些操作不可行,这时可以采取改客体完整性级别、不更改完整性级别审计追踪记录等方法。
  • Ring policy
    • 不考虑完整性级别,任何主体可读任何客体
    • \(Subject\ S\ can\ modify\ object\ O\ only\ if\ f(O)\leq f(S)\)
    • \(Subject\ S_1\ can\ invoke\ subject\ S_2\ only\ if\ f(S_2)\leq f(S_1)\)
    • 提高了系统灵活性,但对完整性保证度不高,不包括主体或客体任何经验记录,只阻止直接修改。
  • Strict Integrity Policy
    • Simple integrity:\[Subject\ S\ can\ observe\ object\ O\ only\ if\ f(S)\leq f(O)\]
    • Integrity * property:\(Subject\ S\ can\ modify\ object\ O\ only\ if\ f(O)\leq f(S)\)
    • Invocation property:\(Subject\ S_1\ can\ invoke\ subject\ S_2\ only\ if\ f(S_2)\leq f(S_1)\)

MAC 机制设计与实现

安全级的标识和赋值

主体的安全级:以用户身份运行的进程的安全级。

客体的安全级:

  • 文件、有名管道:创建进程的安全级,且必须等于其父目录的安全级,保存在相应的磁盘 inode 结点和内存 inode 结点中。
  • 进程、消息队列、信号量集合和共享存储区:创建进程的安全级,保存在内存相应的数据索引结构中。
  • 目录:创建进程的安全级,且必须大于或等于其父目录的安全级,保存在相应的磁盘 inode 结点和内存 inode 结点中。

设备的安全级:系统须在设备安全文件档中说明系统中每个设备的安全属性,如设备的最高安全级、最低安全级等。设备工作时还具有一个当前安全级,为调用该设备的用户进程、系统进程或系统服务进程的安全级,而且必须在设备允许的最高安全级和最低安全级范围之内。

MAC 规则的具体实施

设 L(S) 和 L(O) 分别为主体与客体的安全级,则在系统中实施的强制存取控制规则为:

\[\begin{align} if\ L(S) \geq L(O)\ then\ Read(S,O)\ or\ Execute(S,O);\\ if\ L(S) = L(O)\ then\ Write(S,O)\ or\ Append(S,O); \end{align}\]

其中,安全级由密级和类别两部分组成。分别以 S.l、S.c 表示主体的密级和类别,O.l、O.c 表示客体的密级和类别,授权规则可表示如下:

\[\begin{align} if\ S.l \geq O.l \ and\ O.c \subseteq S.c \ then\ Read(S,O)\ or\ Execute(S,O);\\ if\ S.l = O.l\ and\ S.c=O.c\ then\ Write(S,O)\ or\ Append(S,O); \end{align}\]

写操作一般伴随着读操作,所以用 =

基于角色的访问控制

基于角色的访问控制(Role-based Access Control, RBAC):根据用户在组织内所处的角色进行授权与访问控制。

RBAC 模型

RBAC0

基本模型,核心模型,定义了任何 RBAC 系统所需的最小需求。包括五个基本部分:用户级 USERS,对象集 OBJECTS,操作集 OPERATORS,权限集 PERMISSIONS,角色集 ROLES 和会话集 SESSIONS。操作集和客体集构成权限集 PERMISSIONS。

  • 用户分配(UA,User Assignment)
    • 用户与角色多对多的关系
  • 特权分配(PA,Permission Assignment)
    • 权限与角色多对多的关系
  • 用户会话(US,Users Sessions)
    • 用户和会话一对多的关系
  • 激活/取活角色(SR,Sessions Roles)
    • 会话和角色一对一的关系
RBAC1

在 RBAC0 基础上增加了角色等级(Role Hierarchies)的概念。

两种方式继承:

  • 受限继承
    • 一个角色只能继承某一个角色
  • 多重继承
    • 一个角色可以继承多个角色,也可被多个角色继承
RBAC2

在 RBAC0 的基础上增加了限制(Constraints)的概念,提供职责分离机制。

  • 静态职责分离
    • 若两个角色之间存在 SSD 约束,那么不能同时获得这两个角色,即排他性
    • 不能再已有 SSD 约束关系的两个角色之间定义继承关系
  • 动态职责分离
    • 权限约束作用域用户会话激活阶段
    • 若两个角色之间存在 DSD 约束关系,系统可将这两个角色分配给同一个用户,但不能在一个会话中同时激活
RBAC3

包含了 RBAC1 和 RBAC2,依传递性也间接包含了 RBAC0。

RBAC 的特点和应用优势

  • 便于授权管理
    • 角色变动低于个体的变动
    • 角色比用户组灵活
      • 角色集合具有继承性
      • 用户组是用户的集合,不涉及授权许可;角色即是用户的集合,又是授权的集合
  • 便于实施职责分离
  • 便于实施职责分离
  • 便于实施最小权限原则

灵活性、方便性和安全性。

Comments

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×