计算机安全笔记 四.访问控制
访问控制的含义#
在身份认证的基础上, 依据授权对提出的资源访问请求加以控制.
授权和访问监控.
- 保密性控制: 保证数据资源不被非法读出
- 完整性控制: 保证数据资源不被非法改写或删除
- 可用性控制: 保证网络/系统中所有客体不被非法主体破坏
在保证安全的前提下最大限度共享资源.
核心: 授权控制, 控制不同用户对信息资源的访问权限.
授权控制的要求:
- 一致性: 对信息资源的控制没有二义性, 各种定义之间不冲突
- 统一性:
- 对所有信息资源进行集中管理, 安全策略统一贯彻
- 要求有审计功能, 对所授权记录可以核查
- 尽可能地提供细粒度的控制
访问控制包括:
- 系统访问控制: 为不同用户赋予不同主机资源的访问权限, 属性包括用户, 组, 资源, 权限等
- 网络访问控制: 限制外部对网络服务的访问, 系统内部对外部的访问, 属性包括源 IP 地址, 端口地址, 目的 IP 地址, 端口地址等
- 物理访问控制
最直接的方法: 隔离
基本原则:
- 最小权限原则: 限定每个主体所必须的最小权限
- 多人负责原则: 授权分散化, 保证没有任何个人具有完成任务的全部授权或信息
- 职责分离原则: 将不同的责任分派给不同的人员以期达到互相牵制, 消除一个人执行两项不相容的工作的风险
实现机制:
- 基于访问控制属性
- 基于用户和资源分级
授权#
主体 (用户等) 访问客体 (软硬件资源)
SOA: 主体 Subject, 客体 Object, 访问操作 Access operation
授权: 访问监控器决定是否同意.
主体和客体给出了关注控制的两个选项, 可以规定以下任一种:
- 一个主体允许做什么
- 可以对一个客体做什么
传统上, 多用户操作系统的主要任务是管理文件和资源, 也就是客体, 因此访问控制主要使用第二种方法.
像数据库管理系统这样的面向应用的 IT 系统直接面向终端用户提供服务, 这种系统适当地加入了控制主体行为的机制.
访问操作#
访问权限: 访问的具体形式. BLP 模型有四种访问权限:
- 读 read
- 写 write
- 添加 (盲写) append
- 执行 execute
区分: 数据部分的访问属性和目录部分的访问属性
所有权#
- 自主访问控制 (DAC, Discretionary Access Control) : 为每个资源定义一个所有者, 让所有者规定谁可以访问, 这类策略被称为自主的, 因为访问控制由所有者来处理
- 强制访问控制 (MAC, Mandatory Access Control) : 系统策略规定谁可以访问, 这类策略被称为强制的
访问控制结构#
访问权限可为每个主体和客体的组合单独定义, 即访问控制矩阵.
对于数量众多的主体和客体或者主体和客体的集合频繁改变时, 这种结构管理起来很不方便, 可以采用中间控制层.
| file1 | file2 | file3 | |
|---|---|---|---|
| Alice | {execute} | {execute, read} | |
| Bob | {read, write} | {execute} | {read, write} |
访问控制矩阵是一个抽象概念, 不适用于直接实现, 不方便进行安全管理.
能力表: 访问权限和主体保存在一起
访问控制列表: 访问权限和客体保存在一起
能力: 每个主体被赋予一个能力, 即访问控制矩阵中的主体行
访问控制列表 ACL: 访问控制矩阵中的一列
中间控制#
访问权限的管理依靠单个主体是相当麻烦的, 因此通常将用户置于组中, 并也可以从用户组取得访问权限.
在主体和客体之间引入中间层, 以一种更易管理的方式来表示这种策略.
否定的许可: 规定一个主体不允许执行的访问操作.
可插入的中间层:
- 角色: 系统不再把权限直接给到某个具体的人, 而是给到一个岗位.
- 过程: 一套带有业务逻辑的操作方法, 例如用户不能直接操作数据库, 而是必须通过过程.
- 数据类型: 每个客体 (即数据对象) 都属于一种特定的类型. 系统规定, 某种数据类型只能被专门为它定义的「过程」所访问.
保护环: 通过比较主体与客体的数字进行访问控制决策, 主要用于完整性保护
偏序#
参考数理逻辑与图论.
安全级别上的格.
基于角色的访问控制 RBAC#
- 自主访问控制(DAC)
基于请求者的身份和访问规则 (授权) 控制访问, 规定请求者可以 (或不可以) 做什么 - 强制访问控制(MAC)
通过比较具有安全许可 (表明系统实体有资格访问某种资源) 的安全标签 (表明系统资源的敏感或关键程度) 来控制访问 - 基于角色的访问控制(RBAC)
基于用户在系统中所具有的角色和说明各种角色用户享有哪些访问权的规则来控制访问
将访问权限分配给角色, 用户通过被指派为角色从而获得角色所拥有的访问权限.
RBAC 模型是各类基于角色的访问控制模型的基础, 由 4 个子模型组成:
- RBAC0 基本模型
- RBAC1 层次模型
- RBAC2 约束模型
- RBAC3 统一模型
RBAC0 基本模型#

用户分配 (User Assignment):
- 一个用户可经授权而拥有多个角色
- 一个角色可由多个用户构成
许可分配 (Permission Assignment):
- 每个角色可拥有多种许可
- 每个许可也可授权给多个不同的角色
- 每个操作可施加于多个客体 (受控对象)
- 每个客体也可以接受多个操作
权限被赋予角色, 而不是用户.
RBAC1 层次模型#
角色层次, 权限可以继承.
上面角色包含下面角色的所有访问权及下面角色不具有的其它访问权.
- 一般继承关系仅要求角色继承关系是一个绝对偏序关系, 允许角色间的多继承
- 受限继承关系则进一步要求角色继承关系是一个树结构, 要求角色间单继承
RBAC2 约束模型#
增加约束.
互斥约束支持一个组织中的职责和能力的分离.
互斥角色指一个用户只能被分配给集合中的一个角色.
基数指设置关于角色的最大数值.
先决条件: 用户在分配某个角色之前, 必须先拥有另一个或一组先决条件角色.
RBAC3 统一模型#
RBAC1 和 RBAC2 的合集, 所以 RBAC3 既有角色分层, 也可以增加各种约束.
RBAC 模型的优点#
支持最小权限原则, 责任分离原则. 这些原则是任何组织的管理工作都需要的. 这就使得 RBAC 模型有广泛的应用前景.
支持数据抽象原则和继承概念. 由于目前主流程序设计语言都支持面向对象技术, RBAC 的这一特性便于在实际系统中应用实现.
模型中概念与实际系统紧密对应. RBAC 模型中的角色, 用户和许可权等概念都是实际系统实际存在的实体, 便于设计者建立现存的或待建系统的 RBAC 模型.
RBAC 模型的缺点#
本质是对访问矩阵模型的扩充, 能够很好的解决系统中主体对客体的访问控制, 访问权力的分配与控制问题, 但模型没有提供信息流控制机制, 不能完全满足信息系统的全部安全需求.
没有提供操作顺序控制机制. 很难应用于要求有严格操作次序的实体系统, 例如, 在购物控制系统中要求系统对购买步骤的控制, 在客户未付款之前不应让他把商品拿走.
其他问题: 如是否允许一个正在会话的用户再创建一个新会话, 管理模型不支持用户和许可权的增加与删除等管理工作.
基于任务的访问控制 TBAC#
从应用的角度来解决安全问题, 基于主动式安全模型, 以面向任务的观点来建立安全模型和实现安全机制, 在任务处理的过程中提供动态实时的安全管理.
工作流: 是为完成某一目标而由多个相关的任务 (活动) 构成的业务流程
授权结构体: 由一个或多个授权步组成的结构体
一般授权结构体内的授权步依次执行.
原子授权结构体内部的每个授权步紧密联系, 其中任何一个授权步失败都会导致整个结构体失败.
授权步: 访问控制所能控制的最小单元, 由受托人集 (trustee-set) 和多个许可集 (permissions set) 组成.
受托人集是可被授予执行授权步的用户的集合, 许可集则是受托人集的成员被授予授权步时拥有的访问许可.
当授权步初始化以后, 一个来自受托人集中的成员将被授予授权步, 我们称这个受托人为授权步的执行委托者, 该受托人执行授权步过程中所需许可的集合称为执行者许可集.
任务
依赖: 授权步之间或授权结构体之间的相互关系
TBAC 模型的授权用五元组 (S,O,P,L,AS) 表示.
SOP: 主题, 客体, 许可
L: 生命期 lifecycle, AS: 授权步
支持最小特权和职责分离原则, 也支持数据抽象原则
TBAC 不仅能对不同工作流实行不同的访问控制策略, 而且还能对同一工作流的不同任务实例实行不同的访问控制策略.
基于对象的访问控制 OBAC#
控制策略和控制规则是 OBAC 访问控制的核心所在.
- 将访问控制列表与受控对象或受控对象的属性相关联
- 将访问控制选项设计成为用户, 组或角色及其对应权限的集合
允许对策略和规则进行重用, 继承和派生操作.
当受控对象的属性发生改变, 或受控对象发生继承和派生时, 无须更新访问主体的权限, 只要修改受控对象的相应访问控制项即可, 减少了访问主体的权限管理, 降低了授权数据管理的复杂性.
基于属性的访问控制 ABAC#
允许更大规模的离散式输入进入访问控制决策, 并且提供更大的可能的变量组合集合, 以此来反映更大且更明确的可能规则, 策略或访问限制的集合.
策略 (policy): 是一组用来管理组织内部的允许行为的规则和关系, 其基础是主体所具有的特权, 以及在哪种环境条件下资源或客体需要被保护.
特权 (privilege) 代表主体的授权行为; 它们由机构定义并体现在策略中.
身份, 凭证和访问管理 ICAM#
ICAM: Identity, Credential, Access Management
身份管理: 将属性分配到数字身份上去, 并且将数字身份与个体或 NPE (Non-Practicing Entities, 非执业实体) 连接起来.
凭证是一个对象或数据结构, 将身份 (及可选的附加属性) 权威地绑定到用户所拥有并控制的权标.
访问管理组件对实体被授权访问资源的方法进行管理和控制, 包括逻辑上访问和物理访问.
企业级访问控制设施的支持要素:
- 资源管理
- 特权管理
- 策略管理
身份联合, 身份信息交换
使用控制 Usage CONtrol#
模型

- S: 主体
- ATT (S): 主体属性, 如用户名用户组, 角色, 安全级别等
- O: 客体
- ATT (O): 客体属性
- R: 权限, 主体能够对客体进行控制和执行的特权, 由主体可以对客体进行的访问操作 (如读, 写, 运行) 集组成
- A: Authorization Rules, 授权规则, 允许主体使用客体特定权限必须满足的规则集, 是判定主体是否能够访问客体的决定因素
- B: oBligations, 义务, 主体获得或行使对客体的访问权利前或过程中必须完成的操作
- C: Conditions, 条件, 主体获得或行使对客体的访问权利前或中必须满足的系统或执行环境的强制约束条件
连续性: 授权决策在资源的使用过程中对访问请求进行不间断的或重复的判断
可变性: 属性需随着主体行为而被改变, 这种改变必将影响到主体的下次或本次访问权限的判断
若决策因素为 preA 或 preB , 则属性改变只能在使用前或使用后, 而不可能在使用中.
以条件为决策因素 (preC, onC) 的访问模型中所有更新属性的组合都标为 N, 因为条件只与环境或系统状态有关, 不能改变任何主客体属性.
自主访问控制 DAC#
所有权制, 获得访问许可的主体能够向其它主体转让访问权
可由模型支持

强制访问控制 MAC#
主体属性为安全等级 (clearance), 而客体属性为安全类别 (classificatoin)
给每一个主体和个体都分标签 (机密等级)
由模型支持

基于角色的访问控制策略 RBAC#
用户/角色的映射关系可作为主体属性
角色/许可的映射关系可作为客体属性
由模型支持

信任管理 TM#
解决开放环境下对系统陌生用户的授权问题
数字版权管理 DRM#
义务动作#
零信任#
零信任网络建立在以下 5 个基本假定之上:
- 网络环境一直存在着各类威胁因素
- 网络环境中的威胁不仅仅来自于外部, 甚至内部威胁造成的危害更大
- 传统基于 IP 地址的位置信息条件不足以认定该访问请求安全
- 传统的聚焦于访问主体身份的认证不足以认定该访问请求安全, 即访问主体所使用的设备, 所处的真实地理位置等也需作为认证条件
- 访问控制策略的评判依据需根据实际应用场景, 详细列举影响因子, 设定各影响影子比重, 实现个性化, 动态化策略制定