访问控制
1 描述
- 在物理安全和信息安全领域,访问控制(Access Control, AC)是对一个地方或其他资源的一个选择性限制访问。访问的含义可能是消费、进入或者使用。授权访问一个资源叫做鉴权(authorization)
- 锁和登录凭证是访问控制两种类似的机制
2 计算机安全
- 在计算机安全领域,通常的访问控制包括身份认证、授权和审计。一个更狭义的访问控制值包含访问批准,即系统决定允许或拒绝一个已认证的主体的访问请求,基于该主体被授权访问的内容
- 身份认证和访问控制通常合并成一个操作,以便于基于成功的身份认证,或基于一个匿名的访问令牌批准访问。身份认证方法和令牌包括密码、生物扫描、物理钥匙、电子钥匙和设备、隐藏路径、社会障碍、人类和自动系统的监控
- 在所有的访问控制模型中,可以对系统执行操作的实体称为主体,访问需要控制的资源实体称作对象。主体和对象应当做软件实体,而不是人类用户:所有的人类用户只能通过他们控制的软件实体影响系统
- 从 2014 年起,访问控制模型趋于两类
- 基于能力的模型(capability-based model):对一个对象持有不可伪造的引用或能力提供了对该对象的访问(差不多类似于持有一个房子的钥匙批准访问该房子)。通过一个安全的通道传递这个能力给另一个组来传递访问权限
- 基于 ACL(Access control lists) 的模型(ACL-based model):主体访问一个对象取决于主体的身份是否出现在跟对象相关的列表(差不多类似于一个私人派对的门卫会检查 ID 看是否在客人名单上)。通过编辑列表传递访问权限。(不同的 ACL 系统对于谁或者什么负责编辑列表以及如何编辑列表有不同的惯例)
- 基于能力和基于 ACL 的模型都有机制允许将访问权限授予一组主体的所有成员
- 访问控制系统提供基本的服务,包括售授权(authorization)、身份识别和认证(identification and authentication, I&A)、访问批准(access approval)和问责(accountability)
- 授权:指定一个主体可以做的
- 身份识别和认证:确保只有合法的主体可以登录系统
- 访问批准:基于授权策略,介个用户可以访问的资源,在操作中授权访问
- 问责:识别一个主体(或与一个用户相关的所有主体)做过的
3 访问控制模型
访问控制模型 | 描述 |
---|---|
基于属性的访问控制(Attribute-based access control, ABAC) | 通过使用策略评估属性(用户属性、资源属性和环境条件)授予访问权限 |
自主访问控制(Discretionary access control, DAC) | 由数据所有者确定谁可以访问指定的资源 |
基于历史的访问控制(History-based access control, HBAC) | 根据请求组的历史活动(行为、请求时间间隔、请求内容等)实时评估授予或取消访问权限。比如,当请求间隔超过一秒一个时,可以授予或取消对服务或数据源的访问权限 |
基于身份的访问控制(Identity-based access control, IBAC) | 网络管理员使用此模型可基于个人需求更加有效地管理活动和访问 |
强制访问控制(Mandatory access control, MAC) | 用户没有太多自由确定谁可以访问他们的文件。由系统对用户创建的对象进行统一的强制性控制 |
基于组织的访问控制(Organization-based access control, OrBAC) | 允许策略设计者定义一个与实现无关的安全策略 |
基于角色的访问控制(Role-based access control, RBAC) | 根据工作标题允许访问。RBAC 在提供对对象的访问时很大程度上忽略了自由。例如,一个人类资源专家不应该允许创建网络账户,此角色应该保留给网络管理员 |
基于规则的访问控制(Rule-based access control, RAC) | 大部分基于上下文。比如只允许学生在一天的一部分时间段使用实验室 |
基于责任的访问控制(Responsibility based access control) | 基于分配给一个演员或业务角色的责任访问信息 |
4 基于角色的访问控制 vs 基于属性的访问控制
4.1 基于角色的访问控制
- RBAC 是基于定义组织内的雇佣角色和对应特权的访问控制方法。模型的思想是每个雇员被分配一个角色。每个角色有一组权限和限制。一个雇员只有他们在系统中的角色有相关权限才可以访问对象和执行操作
- 例如:一个公司的会计应允许访问财务信息,但是不应访问客户联系信息或信用卡数据
- 一个用户可被分配一个或多个角色。当有新雇员时,很容易给他们分配一个角色。当有人离开公司,也不需要修改角色参数或中心策略
- 几个主要的组成部分
- 用户:可以访问系统的个人(有 UID)
- 角色:命名的工作职能(表明授权级别)
- 权限:等于访问权利
- 会话:用户和角色直接的映射,表明用户在一个工作时间上下文被分配的角色
- 对象:需要权限访问的系统资源
- 操作:在受保护的网络的任何操作
- 基本规则
- 只有一个主体被分配了对象,此用户才可以执行一个操作
- 身份识别和认证不属于操作
- 所有的用户行为通过操作完成
- RBAC 的实现有 4 个等级
- 扁平的 RBAC:实现 RBAC 模型的基本功能。为所有的用户和权限分配角色。用户通过获得角色取得权限。可以根据公司需求有足够多的角色和权限。可分配一个用户多个角色,也可分配一个角色给多个用户
- 分层的 RBAC:在角色结构内实现分层。分层建立了角色之间的关系。高等级角色的用户拥有低等级角色用户的权限。高等级用户可将低等级角色分配给他的下属
- 受限的 RBAC:给安全系统增加了职责分离(SOD, separation of duties)。当一个单一的职责分布在几个雇员时,SOD 是一个众所周知的安全实践。这个对于大中型企业是十分重要的。职责分离保证没有工作会给系统引入虚假的改变,且这些改变没有人可以审计或修正
- 对称的 RBAC:支持权限-角色审查和用户-角色审查。它允许识别分配给已有角色的权限(反之亦然)。比如,通过识别一个终止雇员的权限,管理员可以撤回该雇员的权限,然后重新分配角色给其他用户,而权限是相同的或者不同的
- 难点在于定义角色。需要考虑一个用户完成任务需要的所有权限及该角色的层级。如果赋予一个角色太多权限,会破坏最小权限原则,导致权限误用
- RBAC 通常应用在小型和中型企业。这些组织通常是简单的工作流、有限的角色和比较简单的等级,使得可以有效地确定和描述用户角色
4.2 基于属性的访问控制
- ABAC 由 RBAC 演变而来。模型基于为系统内的元素创建一系列属性。中心策略定义了执行任何操所需的用户和对象属性的组合
- 主要的组件包括
- 属性:网络中所有元素的特点。一个属性可以是
- 用户特点:雇佣者位置,部门,IP 地址,许可级别等
- 对象特点:类型,创建者,敏感度,所需的许可级别等
- 行为类型:读,写,编辑,拷贝,粘贴等
- 环境特点:时间,星期,位置等
- 主体:网络中可执行操作的所有用户或资源。为一个主体分配属性以定义它的许可级别
- 对象:网络中存储的所有数据。为对象分配属性以描述和识别它们
- 操作:网络中任何主体执行的行为
- 策略:允许或限制信息检索系统中的所有行为的一系列规则。规则是基于所有元素(用户、资源、环境)的属性的“If/Then”语句
- ABAC 适用于各种大小的奇特,但是更多应用域大型组织。ABAC 的部署和配置阶段比 RBAC 需要更多时间和经理,因为安全管理员需要定义系统的所有属性。一开始,需要为每个系统组件手动分配属性
- 与 RBAC 相比,ABAC 是一个更加细粒度的访问控制模型
4.3 选择基于属性的访问控制/基于角色的访问控制
4.3.1 RBAC 的优缺点
- 优点
- 主要的优点是公司不需要授予或废除个人的访问权限,而是基于角色将用户绑定到一起
- 为小中型公司创建一系列角色不是很难
- 缺点
- 为大公司创建一系列角色是困难的
- 在用户开始工作之前,不能使用系统未知的参数创建规则
- 权限只能分配给用户角色,而不包括对象和操作
- 可以限制系统内对一些行为的访问,但是不是限制对一些数据的访问
4.3.2 ABAC 的优缺点
- 优点
- 主要优点是基于每个系统组件的属性而不是用户的角色授权。因此,可以描述任何复杂度的业务规则。当需要限制一些数据是工作时间段内可访问的,可以通过简单的策略实现
- 可以评估授权系统还未创建的主体和资源属性
- 缺点
- 因为需要指定和维护策略,所以系统配置是困难的
- 几乎不可能确定所有给定的雇佣角色承担的风险
4.3.3 总结
特点 | RBAC | ABAC |
---|---|---|
灵活性 | Y(适用于小中型组织) | Y |
可扩展性 | - | Y |
简单性 | 易于为小公司建立角色和权限,但是对于大公司难以维护 | 开始的时候难以创建所有策略,易于维护和支持 |
对简单规则的支持 | Y | Y |
对复杂规则的支持 | Y | Y |
对包含动态参数的规则的支持 | - | Y |
自定义用户权限 | -(每个自定义都需要创建一个新角色) | Y |
粒度 | 低 | 高 |
- 结合 RBAC 和 ABAC:公司在开始通常实现一个扁平的 RBAC。这个模型易于设置和维护。随着组织成长以及管理更多敏感数据,公司意识到需要更加复杂的访问控制系统。RBAC 和 ABAC 可以一起使用,其中 RBAC 负责粗粒度的工作,ABAC 实现细粒度的部分
- 这个模型也称作 RBAC-A。有三个方法处理角色和属性之间的关系
- 以属性为中心:一个角色称为其中一个用户属性的名字。它类似一个工作标题。这个模型中的角色属性用于标记一个中心位置所需的一系列属性
- 以角色为中心:增加属性以限制角色。这个模型中的属性可以减少用户可得的权限。这个方式可以增加数据的安全性
- 动态角色:属性(例如一天的时间)可用于决定主体的角色。这种情况下,一个用户的角色可以由动态属性完全确定