信息安全 - 访问控制
一、基础知识
访问控制是控制对资源访问的过程,它通过提供对授权主体的访问并防止未经授权的访问尝试,以保护机密性、完整性和可用性。
访问控制的三个原则
1)知其所需(Need to know): 只授予用户访问执行工作所必需的资源权限。比如只给软件工程师开放他正在参与项目的代码库访问权限,而非完整代码库。
2)最小特权(Least Privilege)
每个程序和系统用户都应该具有完成任务所必需的最小权限集合。比如不能为了简便给普通用户开放管理员权限。
3)特权分离原则(Separation of Privilege)
细分特权,分配给多个主体,确保个体无法单独控制关键职能或系统。比如,负责创建账号的工程师不能同时负责审批账号。电影中常见的核弹发射需要双人控制,是特权分离原则的一个实际例子。
二、访问控制四要素
图1-访问控制四要素三、身份标识
系统向用户颁发标识时要满足以下几点
每个值都应当是唯一的,便于问责
应当遵循一个标准的命名方案
标识值不应描述用户的职位和任务
标识值不应在用户之间共享
四、身份验证
身份验证是证明用户是他自己所声称的那个人,身份验证可以利用如下三种因素
图2-身份验证知识点对生物识别信息的使用,请参考这里
五、访问授权
常见的有四种访问控制模型,分别用不同的方法来控制主体访问客体的方式。在这里主体(Subject)是发起访问需求的系统或用户, 客体(Object)是要被访问的资源(数据,系统,或物理资源)。
自主访问控制(DAC - Discretionary Access Control)
它是由资源所有者自主决策来分配访问权限,比如小区内有一千户家庭,每个家庭的入户门禁的权限控制都是由该家庭自主决定。
大部分操作系统都是基于DAC模型,由每个文件的owner自主设置访问权限。
其他所有的控制模型,都属于非自主访问控制。
强制访问控制(MAC-Mandatory Access Control)
它是一种基于安全标签的系统,每个主体和客体都有附加的安全标签,系统基于主体和客体的标签,以及系统安全策略对访问请求作出决策。
比如具有绝密安全许可的用户,请求访问某绝密文件,系统给予授权。
MAC适合用于军事机构等对进行要求高的环境
基于角色的访问控制(RBAC - Role-based Access Control)
根据组织的业务模式,创建不同的角色,为每个角色分配所需的资源访问权限。再根据不同用户在组织内扮演的角色,将其分配到特定角色,进而获得所需的权限。
比如:组织中有IT,财务,HR等不同角色,每个角色被授予相应系统的权限。新的HR员工Alice加入后,只需将其账号分配到HR角色上,就可以获得所需的HR系统权限。
RBAC的最大好处是更简单的账号配置流程,减少管理成本,适合流动率高的组织。
基于属性的访问控制(ABAC-Attribute-based Access Control)
使用系统中所具有的任何属性共同来创建允许的访问规则,提供更多的灵活性。
主体可用的属性:职位,部门,入职年限,项目团队成员,地点
客体可用的属性:敏感性分级,位置,创建人,类型
动作属性: 审查,批准,评论,存档
上下文背景:时间,项目状态
访问控制矩阵
它是一种数据结构,用于存储主体和客体对应的访问权限关系。
访问控制列表(ACL-Access Control List)
用在操作系统,应用程序以及路由器中,它是针对单个客体的,约定了不同主体针对该客体的访问权限。
图3-ACL示例能力表(Capability Table)
它指定了单个主体对不同客体所具有的访问权限。
能力表是从用户的维度看权限,而ACL是从资源的角度看权限。
六、可问责性
配置可问责性的原因: 跟踪个体的恶意行为,监测入侵、重现事件,提供法律追索条件以及生成问题报告。
要实现可问责性,需要通过记录用户和系统的活动,并且对这些记录进行审计。
Audit Trail(审计轨迹)是与公司资源与数据相关的每项动作和活动的详细日志,当组织需要内部调查或面临外部审计时,审计轨迹能提供完整的信息支持。
七、访问控制措施
物理访问控制措施
边界安全:不同区域的进出身份验证
计算机控制: 上锁,USB屏蔽
工作区域分隔&控制区域:基于敏感度区分不同区域,实施不同的安全控制
技术性控制措施
系统访问
网络架构
网络访问
加密技术
审计
八、身份管理
身份管理(Identity Management)是指使用不同产品对用户进行自动化的身份标识,身份认证和授权。
数字身份的组成包括属性(部门,角色,许可等),权利(可获得的资源,已有的授权)和特征(生物识别信息,身高,体重等)。 IdM系统需要将这些身份信息集中在一起。
新用户身份证明与注册
当要在IAM系统中增加一个新用户时,有如下几个动作
1. 身份证明-identity proofing
比如新员工报道,HR需要对方提供身份证明文件(身份证,驾照,出生证明等)。或者是国内注册常用的手机和验证码做使命验证。
在线机构可能会使用基于知识的验证(knowledge-based authentication)来要求用户证明身份。比如银行开立账户时,要求用户提供购车/购房的状态信息,并和其他机构做交叉验证来证明用户真实身份。
2. 注册 - registration
完成身份证明后,在IAM中为用户创立账号,并设置密码。如果后续使用生物识别信息进行账号登录,那在注册阶段还需完成生物信息的首次采集。比如:新员工首次在门禁系统中录入个人指纹信息。
oAuth
它是一种面向第三方的开放授权标准,它不提供身份验证
用于支持用户授权网站访问他在其他网站的资源,比如授权Linkedin访问用户在认证网站上的证书信息。证书网站通过提供授权码给Linkedin,允许它获取该用户的信息。
联合身份管理 FIM
是一种便携式身份,该身份及其相关联的权利可跨越业务边界使用
SAML-安全断言标记语言支持不同系统间传递身份验证信息
XACML-可扩展访问控制标记语言包含资产的安全策略和访问权限
OIDC - OpenID Connect 是基于oAuth2.0协议构建的身份验证层
Web应用程序可通过OIDC使用第三方IdP对用户进行身份验证,并且从该IdP获取有关用户的信息。
SSO
单点登录功能允许用户只输入一次凭证,就能访问网络中的所有资源。
SSO实现方式
1. Kerberos
Kerberos的优势:1. 不需要传递密码,都是基于ticket做身份认证,保证了密钥安全性
2. 客户端和服务都需要进行身份验证
3. Ticket可以复用,不用每次都有KDC参与
安全风险: 1. KDC会是个单点故障点
2. 通过Golden Ticket攻击可以伪造TGT
2. 域
同一个域名下,通过cookie和session共享机制也可实现SSO
参考资料:
CISSP Official Study Guide - 第九版英文版 及 第八版中文版