访问控制是信息安全领域中的一个关键概念,用于限制对资源的访问。根据不同的标准和实现方式,访问控制可以分为几种主要类型:
-
自主访问控制 (Discretionary Access Control, DAC):
- 在DAC模型中,资源的所有者可以自行决定谁能够访问他们的资源。
- 用户可以根据自己的判断来授予或撤销其他用户的访问权限。
- 例子:Unix/Linux 文件系统权限设置。
-
强制访问控制 (Mandatory Access Control, MAC):
- 在MAC模型中,访问决策基于系统定义的安全策略,这些策略由系统管理员设定,并且用户不能更改。
- 系统会为每个主体(如用户)和客体(如文件)分配安全标签,然后根据这些标签之间的关系来决定访问权限。
- 例子:Bell-LaPadula 模型、Biba 模型。
-
基于角色的访问控制 (Role-Based Access Control, RBAC):
- RBAC 根据用户在组织内的角色来分配权限。
- 角色是一组权限的集合,通过将用户分配给一个或多个角色来简化权限管理。
- 例子:企业内部系统中的管理员、经理、员工等角色。
-
基于规则的访问控制 (Rule-Based Access Control, RuBAC):
- 在这种模型中,访问决策基于预定义的规则集。
- 规则可能包括时间、地点、用户行为等多种因素。
- 例子:防火墙规则、网络入侵检测系统。
-
基于属性的访问控制 (Attribute-Based Access Control, ABAC):
- ABAC 是一种更细粒度的访问控制方法,它考虑了更多关于主体、客体以及环境的信息。
- 访问决策基于一系列属性,如用户属性、资源属性、环境条件等。
- 例子:XACML (eXtensible Access Control Markup Language)。
-
基于上下文的访问控制:
- 这种类型的访问控制不仅考虑用户的身份和角色,还考虑当前的上下文信息,比如位置、设备类型、时间等。
- 它可以看作是ABAC的一种特例,特别强调了动态上下文信息的作用。
-
多级安全 (Multilevel Security, MLS):
- 多级安全是一种特殊的MAC形式,主要用于处理敏感信息,确保不同级别的信息不会被未经授权的人访问。
- 通常用于军事和政府机构中。
典型的强制访问控制模型:
-
Bell-LaPadula 模型:
- 主要关注信息的保密性。
- 两个主要原则:简单安全属性(无向下读)和*属性(无向上写)。
- 防止敏感信息从高安全级别流向低安全级别。
-
Biba 模型:
- 与Bell-LaPadula模型相对,Biba模型更侧重于信息的完整性保护。
- 包括完整性约束(无向上读)和*完整属性(无向下写)。
- 防止未经授权的数据修改,确保数据不会被篡改或破坏。
-
Clark-Wilson 模型:
- 强调数据的完整性而非保密性。
- 通过认证过程、转换程序和一致性检查等机制来保证数据的正确性和完整性。
- 适用于需要防止未授权修改的数据处理环境,如金融交易系统。
-
Chinese Wall 模型(又称多边安全模型):
- 处理利益冲突情况下的信息安全问题。
- 例如,在金融服务中,顾问不应同时接触两家竞争公司的机密信息。
- 该模型允许用户在一定条件下访问不同利益集团的信息,但会阻止潜在的利益冲突访问。
-
Lattice-Based Access Control:
- 使用格结构来表示不同的安全级别及其之间的关系。
- 格结构可以用来表示复杂的访问控制需求,比如多个维度的安全级别组合。
-
Type Enforcement (TE):
- 在SELinux(Security-Enhanced Linux)中实现的一种方法。
- TE为每个对象分配类型,并通过策略规定哪些类型的主体可以访问哪些类型的客体。
- 提供了非常细粒度的访问控制能力。
典型的DAC(自主访问控制)模型:
-
访问控制列表 (Access Control List, ACL):
- 每个对象(如文件、目录)都有一个关联的ACL,列出了允许或拒绝访问该对象的主体及其权限。
- 例如,在Windows文件系统中,每个文件或目录都有一个安全描述符,其中包含了多个访问控制条目(ACE),定义了不同用户的读、写、执行等权限。
-
权限位 (Permission Bits):
- 这种方法常见于Unix/Linux文件系统中,使用一组位来表示不同的权限类型。
- 对于每个文件或目录,通常有三组权限:用户(文件所有者)、组和其他人。
- 每组权限又分为读、写和执行三种操作权限。
- 例如,
-rwxr-xr--
表示文件所有者有读、写、执行权限,同组成员只有读和执行权限,其他用户只有读权限。
-
访问控制矩阵 (Access Control Matrix):
- 理论上,访问控制矩阵是一个二维表格,行代表主体(用户或进程),列代表客体(文件或其他资源),单元格中的值表示特定主体对特定客体的访问权限。
- 实际实现时,由于矩阵可能非常大且稀疏,通常会采用优化的数据结构来存储,比如能力表(capabilities)或ACLs。
-
能力 (Capabilities):
- 能力机制为每个主体分配一个或多个令牌,这些令牌允许主体以特定方式访问特定客体。
- 与ACL相比,能力更侧重于主体拥有的权限,而不是客体上的访问控制信息。
- 在某些操作系统中,能力可以被用来增强安全性,因为它减少了对全局访问控制信息的依赖。
-
所有权 (Ownership):
- 在一些简单的系统中,访问控制可以通过所有权来实现。
- 只有资源的所有者才能更改该资源的访问权限,并且可以指定哪些用户能够访问该资源。
- 例如,在一些数据库系统中,表的所有者可以授予其他用户对该表的特定操作权限。