访问控制是信息安全体系的三大支柱之一,与身份认证、安全审计并列构成信息系统的安全保障铁三角。软考信息安全工程师考试中,访问控制模型几乎每年必考,且题型覆盖选择题和案例分析两种形式。很多考生把DAC、MAC、RBAC三种模型混为一谈,遇到BLP模型和Biba模型更是直接放弃。本文从软考命题角度出发,系统梳理访问控制的核心模型及其底层逻辑,帮你在考场上拿稳这部分分数。
访问控制在信息安全领域有严格的定义,即通过某种途径显式地准许或限制主体对客体的访问能力及范围,从而保证信息系统资源在合法范围内被使用。这里涉及三个核心概念:主体、客体和控制策略。
主体是指发起访问请求的主动实体,通常是用户、进程或程序。客体是被访问的被动实体,包括文件、数据库表、内存页面、网络端口等。控制策略则是一套规则集合,规定了哪些主体在什么条件下可以以何种方式访问哪些客体。
要准确理解访问控制,必须先区分它与身份认证的关系。身份认证回答的是"你是谁"的问题,通过口令、指纹、数字证书等手段验证用户身份的真实性。访问控制回答的则是"你能做什么"的问题,在身份认证通过之后,根据预定义的策略决定该用户能否读写某个文件、能否执行某个程序。两者在时间上是先后关系:先认证,后授权。
访问控制系统的设计有四个基本原则需要牢记。最小特权原则要求每个主体只被授予完成其任务所必需的最小权限,不多不少。最小泄露原则要求系统在运行过程中尽可能减少信息不经意泄露的可能性。纵深防御原则要求部署多层访问控制机制,避免单一控制点失效导致全线崩溃。职责分离原则要求将关键操作拆分为多个步骤,由不同角色分别完成,降低内部欺诈风险。
访问控制的实现机制可以分为逻辑控制与物理控制两个层面。逻辑控制通过操作系统权限位、访问控制列表、能力表等软件手段实现。物理控制则通过门禁系统、硬件加密锁、隔离网闸等手段实现。软考中重点关注的是逻辑访问控制,尤以操作系统级和数据库级的实现机制为高频考点。
自主访问控制即Discretionary Access Control,简称DAC,是三种经典模型中最灵活的一种。它的核心思想是:资源的所有者自主决定谁可以访问自己的资源,以及以何种权限访问。
DAC模型的数学基础是访问控制矩阵。矩阵的行代表主体,列代表客体,矩阵元素表示该主体对该客体的访问权限,通常包括读、写、执行、删除等基本操作。直接存储完整的访问控制矩阵虽然概念清晰,但在实际系统中行数和列数都很大,矩阵会变得非常稀疏,造成空间浪费。
工程实践中,DAC通常以两种等价形式实现。第一种是访问控制列表,简称ACL,它以客体为索引,在每个文件或目录上附加一个列表,明确列出哪些用户或用户组拥有哪些权限。Windows操作系统的NTFS权限和Linux文件系统的权限位本质上都是ACL的实现变体。第二种是能力表,它以主体为索引,每个用户持有一张能力表,其中列出该用户可以访问的所有资源及对应权限。能力表相当于给每个用户发了一张通行证清单。
ACL与能力表的选择取决于应用场景。当需要快速查询某个文件能被谁访问时,ACL因为以客体为索引而效率最高。当需要检查某个用户的全部权限范围时,能力表则更直接。现代操作系统通常混合使用两种机制,例如进程打开文件时先从ACL验证权限,确认通过后生成文件描述符,此后的读写操作通过文件描述符即可完成,无需重复查表。
DAC的最大优势在于灵活。文件所有者可以随时调整权限,例如把一个文档设为仅自己可读写、同组用户只读、其他用户不可访问。这种灵活性恰好也是DAC的最大弱点:权限的控制权分散在普通用户手中,系统管理员无法统一管控。恶意软件一旦获得文件所有者的权限,就可以任意修改ACL,将病毒文件授权给所有用户执行,从而造成安全失控。
软考中DAC的命题切入点通常集中在ACL和能力表的对比上。命题人喜欢把ACL说成以主体为中心、把能力表说成以客体为中心,这恰恰是颠倒的,需要警惕。另外,DAC与MAC的对比也是高频考点,两者的核心区别在于权限决定的自主权在谁手里。
强制访问控制即Mandatory Access Control,简称MAC,是一种远比DAC严格的控制模型。在MAC中,访问权限不由资源所有者决定,而是由系统根据预先设定的安全策略强制执行。用户无法绕过或修改这些策略,哪怕他是文件的所有者。
MAC的核心机制是安全标签。系统为每个主体和客体分别打上安全标记,主体的标记称为安全许可,客体的标记称为安全等级。典型的军事安全标签体系分为四个层级:绝密、机密、秘密和公开,分别对应从高到低的敏感度。除了层级标签,MAC还支持范畴标签,即在同一层级内进一步划分不同的领域,例如核武器项目、海军项目、空军项目等,主体只有在具备相应范畴许可时才能访问对应范畴的客体。
BLP模型是MAC体系中最重要、最经典的形式化模型,由David Bell和Leonard LaPadula于二十世纪七十年代提出。BLP模型的核心目标是保证信息的机密性,它通过两条强制规则来实现这一点。
第一条是简单安全特性,又称为不上读规则,即低安全级的主体不能读取高安全级的客体。这条规则确保了高密级信息不会流向低密级主体。第二条是星号特性,又称为不下写规则,即高安全级的主体不能向低安全级的客体写入数据。这条规则防止了高密级主体有意或无意地将敏感信息写入低密级文件,从而被低安全级主体间接获取。
这两条规则合在一起,形成了一个严格的信息流控制机制:信息只能在同级之间流动,或者从低向高流动,但绝不能从高向低流动。软考中有一个经典陷阱需要特别注意:命题人常常把不上读说成不上写、把不下写说成不下读,或者把不向下写写成不向上写,一字之差就是错误答案。关键口诀是读不上、写不下。
Biba模型与BLP模型形成镜像对称关系。BLP关注机密性,Biba关注完整性。在Biba模型中,主体的完整性级别决定了它可以访问哪些客体。
Biba模型同样有两条核心规则:第一条是不下读规则,低完整性主体不能读取高完整性客体,因为从不可信来源读取数据会破坏主体自身的完整性。第二条是不上写规则,高完整性主体不能向低完整性客体写入数据,防止高完整性的数据被低完整性环境污染。口诀与BLP恰好相反:读不下、写不上。
Clark-Wilson模型是另一个关注完整性的形式化模型,其核心思想是将数据分为受约束数据项和不受约束数据项,所有对受约束数据的修改必须经过验证程序的处理。Clark-Wilson模型还引入了职责分离的概念,要求任何修改操作不允许由单一个人独立完成,必须经过两个或以上人员的协作。
中国墙模型则解决商业环境中的利益冲突问题。该模型动态调整访问权限:用户一旦访问过一个公司的敏感信息,系统自动阻止他访问该公司竞争对手的信息,防止内幕交易。这四种模型在软考中经常被放在一起做对比命题。
基于角色的访问控制即Role-Based Access Control,简称RBAC,是当前企业级应用中最主流的访问控制模型。RBAC的核心思想是在用户和权限之间引入角色这一中间层:不直接把权限授予用户,而是将权限授予角色,再通过为用户分配角色来间接授予权限。
RBAC标准定义了从RBAC0到RBAC3四个层次,通常以同心圆的方式理解。RBAC0是基础层,只包含用户、角色、权限和会话四个核心要素。用户通过会话激活角色,在会话持续期间行使角色所关联的权限。这一层已经可以满足大多数中小型系统的需求。
RBAC1在基础层之上增加了角色继承。角色之间可以形成父子层级关系,子角色自动继承父角色的所有权限。例如定义一个员工角色作为基类,包含门禁通行和打印机使用权限,然后定义部门经理角色继承员工角色的全部权限,再额外增加审批权限和预算查看权限。角色继承显著减少了权限分配的重复工作,但过深的继承层级可能导致权限管理的复杂性急剧上升。
RBAC2在
本篇完!