一、访问控制的基本概念
1)基本目标:依据授权对提出的资源访问请求进行控制,防止对任何资源进行未授权的访问。
2)访问控制模型基本组成:
3)三要素:
主体(subject):访问的发起者,通常为进程或用户。
客体(object):可供访问的各种软硬件资源。
策略(policy):定义了主体对客体的权限,是访问控制的核心。
4)访问控制框架:
二、自主访问控制DAC
1)自主访问控制(Discretionary Access Control, DAC):是一种最为普遍的访问控制手段,是指对某个客体具有拥有权(或控制权)的主体能够将对该客体的一种访问权或多种访问权自主地授予其它主体,并随时可以将这些权限回收。
所谓自主就是指具有某种访问权力的主体能够自己决定是否将访问权限授予其他主体。
2)特点:根据主体的身份和授权来决定访问模式。
3)缺点:安全性差;用户数量多时,访问控制策略会很庞大;修改麻烦。
三、强制访问控制MAC
1)强制访问控制(Mandatory Access Control,MAC):系统对所有主体及其所控制的客体(进程、文件、段、设备等)指定敏感标记,系统根据主体和客体的敏感标记来决定访问模式。敏感标记一般由密级和范畴组成。如:
所谓“强制”是指安全标签由系统管理员人为设置或由操作系统设置,用户和他们的进程不能修改。
MAC通过安全标签实现单向信息流通模式。
2)BLP(Bell-LaPadula)模型——保护机密性
- 每个主体和客体都划分一个密级 A;
- 每个主体和客体都划分一个业务范围 C;
- 设SC为全体安全级别<A,C>的集合:
SC= <A,C>
- 定义二元关系≤如下,并称关系≤为支配 :
SC= <A,C> , SC’=<A’,C’>,
若 A≤A’ and C⊆C’
则 SC ≤ SC’,称为SC‘支配SC。
- 在[SC, ≤]中定义运算⊕、⊙如下:
<A,C> ⊕ <A’,C’> = <max(A,A’),C ∪ C’> ,
<A,C> ⊙ <A’,C’> = <min(A,A’),C ∩ C’> 。
- 向下读:主体s对客体o具有读访问权-->当且仅当s支配o,即<As,Cs> ≥ <Ao,Co>。
例如:设军官A和文件F1的安全级别为
F1:< secret ,NATO 、NUCLEAR >,
A:< topsecret ,NATO 、NUCLEAR 、NMD>,
则军官A可以阅读文件F1。
- 向上写:主体s对客体o具有写访问权-->当且仅当o支配s,即<As,Cs> ≤ <Ao,Co>。
例如,设军官B和文件F2的安全级别为
F2:< secret ,NATO 、NUCLEAR >,
B:< topsecret ,NATO 、NUCLEAR 、NMD>,
则军官B不可以写文件F2。
- 优点:更安全,可以阻止某些类型的木马攻击。
- 缺点:对用户限制较多,灵活性较差;主要保护机密性,缺乏对完整性的保护。
3)BIBA完整性模型 ——保护完整性
设I是表示主客体完整性等级的一个函数,则访问规则是:
- 写规则(不能向上写):对任意的主体s和客体o,当且仅当l(s) ≥ l(o),允许写操作。
这一规则不允许一个主体向更高等级的可信任客体进行写入,以防止不正确的或者是伪造的信息。
- 读规则(不能向下读):对任意的主体s和客体o,当且仅当l(s) ≤ l(o),允许读操作。
这一规则不允许一个主体读更低层次的数据,防止低级数据“污染”主体,降低其完整性级别。
- 优点:简单性;容易与BLP模型结合(在标记中增加完整性标记)。
- 缺点:完整性标签确定的困难性;实施的复杂性。
4)DAC和MAC的应用
- 在C级操作系统中应用DAC访问控制模型。
- 在B级以上操作系统中应用MAC,或将MAC和DAC联合应用。
四、基于角色的访问控制RBAC
基于角色的访问控制(Role-Based Access Control,RBAC)的基本思想是:根据用户担任的角色来确定用户在系统中的访问权限。一个用户必须扮演某种角色,还必须激活这一角色,才能对一个客体进行访问或执行某种操作。如图所示:
1)RBAC的基本概念 :
- 用户(User):访问计算机资源的主体。用户集合为 U。
- 角色(Role):代表一种资格。角色集合为 R.
- 权限(Permission):对客体的操作权力。权限集合为 P.
- 用户分配(User Assignment):将用户与角色关联。用户分配集合为UA={(u,r)|u∈U, r∈R} 。用户u与角色r关联后,将拥有r的权限。
- 权限分配(Permission Assignm):将角色与权限关联。权限分配集合为PA={(p,r)|p∈P, r∈R} 。权限 p与角色 r关联后,角色 r将拥有权限 p。
- 激活角色(Active Role):角色只有激活才能起作用。通过会话激活角色。角色激活要满足安全约束。
- 会话(Session):用户要访问系统资源时,必须先建立一个会话。一次会话只对应一个用户,一次会话可激活多个角色。
2)RBAC的基本机制:
- 授权机制:
a.分为两步:将权限分配给角色(权限分配)-->将角色分配给用户(用户分配)。
b.授权要满足安全约束条件。
c.角色分级,高级角色可继承低级角色的访问权限。
- 用户与角色的关系(多对多)
a.一个用户可担任多个角色
b.一个角色可分配给多个用户
- 角色和权限的关系(多对多)
a.一个角色可拥有多个权限
b.一个权限可分配给多个角色
- 角色和角色的关系(分级关系)
a.直接继承:相邻角色之间的继承
b.间接继承:非相邻角色之间的继承
- 安全约束
a.职责分离约束:合理划分任务和相关权限,以保证多用户协同工作的安全性。
b.角色互斥约束:如果一组角色是互斥的,那么一个用户或同一个访问权限只能被分配给其中的一个角色。利用角色互斥约束可实现职责分离。
c.最小特权约束:只给角色分配完成某工作所需的最小权力。
d.角色激活约束:
激活数约束:限制一个角色同时授权和激活的数量。
激活时间约束:限制一个角色激活的时间。
3)RBAC96模型:包括4个层次
- RBAC0:基础模型
- RBAC1:在RBAC0的基础上增加了角色分级
- RBAC2:在RBAC0的基础上增加了角色和权限约束
- RBAC3:集成了RBAC1和RBAC2
4)优缺点:
- 优点:便于授权管理;增强了安全性;便于工作分级;便于任务分担。
- 缺点:复杂的权限校验,对性能有一定影响。
五、访问控制机制
0)访问控制矩阵:
矩阵的每一行对应一个主体,每一列对应一个客体。行与列交叉点上的元素表示主体对客体所拥有的所有权力的集合。
1)访问控制列表(Access Control List, ACL):
通常将访问控制矩阵表示为存在于计算机中的一张表(ACL),表示用户对特定对象的访问权限。一般的访问权限包括读文件、写文件和执行文件。
2)能力表
保护能力表的几种方法:
- 标签:标签有两种状态——set、unset。如果是set,则普通进程能够读这个字但不能修改。否则,普通进程能够读和修改这个字。只有特权模式下的处理器才能够修改标签。
- 受保护内存:能力表被存储在一个内存页中,进程能够读取但不能改变这些内存。
- 密码学方法: 为保证能力表的完整性,每一个能力表都有一个与之相关的密码校验和,该校验和加密保存,密钥由操作系统掌管。
3)锁与钥匙:客体由一个密钥加密(锁),主体拥有解密密钥(钥匙)。例如:
- O’=(E1(o),…… ,En(o))
客体O的副本被n个密钥加密,每个主体一个密钥。n个主体可同时访问数据。
- O’=E1(…… En(o) …… )
客体O被n个密钥迭代加密,每个主体一个密钥。只有当n个主体的访问请求同时发生时,数据才能够被访问。
4)保护环:
保护环是一种层次结构的特权方式。最内层具有最小环号的环具有最高的特权,而在最外层的具有最大环号的具有最小特权。
五、Chinese Wall模型
1)基本思想:将可能会产生访问冲突的数据分成不同的数据集,任何主体同一时刻只能访问一个数据集。
2)属性:
- 用户只能访问那些与已经拥有的信息不冲突的信息
- 主体能够对一个客体写访问的前提,是主体未对其他数据集的客体进行读访问
3)清洁信息:
- 清除敏感信息
- 清洁信息可在系统中自由流动
六、Windows安全模型和访问控制机制
Windows采用的是微内核 (microkernel) 结构和模块化的系统设计,安全子系统位于内核模式,主要任务是身份认证和访问控制。
1)Windows安全模型的构成
① 登录过程 (logon process, LP) 。接受本地用户或者远程用户的登录请求,处理用户信息,为用户做一些初始化工作。
② 本地安全授权机构 (local security authority, LSA)。管理本地安全策略和审计策略,为用户生成SID和访问令牌,是整个安全子系统的核心。
③ 安全账号管理器 (security account manager, SAM) 。维护SAM数据库。
④ 安全引用监视器 (security reference monitor, SRM) 。检查存取合法性,防止非法存取和修改。
2)Windows的安全概念
① 安全标识 (security identifier,SID) 。安全标识和账号唯一对应,在账号创建时创建,账号删除时删除,而且永不再用。安全标识与对应用户和组的账号信息一同存储在SAM数据库里。
② 访问令牌 (access token) 。当用户登录时,本地安全授权机构(LSA)为用户创建一个访问令牌,包括用户名、所在组、SID等信息。以后,用户的所有程序都将拥有访问令牌的拷贝。
③ 主体。用户登录后便拥有了一个访问令牌,用户进行的操作和访问令牌一同构成一个主体。
④ 对象、资源、共享资源。对象的实质是封装了数据和处理过程的一系列信息集合体;资源是用于网络环境的对象;共享资源是在网络上共享的对象。
⑤ 安全描述符 (security descriptor,SD) 。Windows系统为共享资源创建的安全描述符包含了该对象的一组安全属性,分为4个部分:
- 拥有者SID
- 对象所在组SID
- 自主访问控制表 (DACL),该对象的访问控制表,由对象的所有者控制。
- 系统访问控制表 (SACL),定义操作系统将产生何种审计信息,由系统的安全管理员控制。
其中,安全描述符中的每一个访问控制表 (ACL) 都由访问控制项 (ACEs) 组成,用来描述用户或者组对某对象的访问或审计权限。
ACEs权限包含:读、修改、执行、完全控制等。
ACEs授权类型:Access Allowed、Access Denied和System Audit。前两种用于自主访问控制;后一种用于记录安全日志。
⑥ 安全标识SID VS 安全描述符
安全标识SID——与访问主体(账号)一一对应。
安全描述符——包含访问客体(对象/资源)的安全属性。
3)Windows的访问控制过程
① 当一个账号被创建时,Windows为它分配一个SID,并与其他账号信息一起存入SAM数据库。
② 每次用户登录时,登录主机 (通常为工作站) 的系统首先把用户输入的用户名、口令和用户希望登录的服务器域信息送给安全账号管理器,安全账号管理器将这些信息与SAM数据库中的信息进行比较。
③ 若比较结果匹配,服务器发给工作站允许访问的信息,并返回用户的SID和用户所在组的SID,工作站系统为用户生成一个进程。
④ 然后,本地安全授权机构(LSA)为用户创建访问令牌,访问令牌中有当前用户的SID,用户所在组的SID以及一些权限标志(Privilege)。 此后,用户每新建一个进程,都将访问令牌复制作为该进程的访问令牌。
⑤ 当用户或者用户的进程要访问某个对象时,安全引用监视器(SRM)将用户/进程的访问令牌中的SID与对象安全描述符中的自主访问控制表进行比较,从而决定用户是否有权访问对象。
⑥ SID VS 访问令牌
SID对应账号的整个有效期,在账号创建时创建,账号删除时删除。
访问令牌只对应某一次账号登录(系统出问题后重启)。
七、Linux基本访问控制机制
1)Linux与Windows的异同
相同点:自主访问控制
不同点:
Windos的访问控制是通过ACL实现的。
Linux的访问控制策略一般通过文件系统实现。文件系统提供了三种基本权限:读(r)、写(w)和执行(x)。每个文件对应三种特定的用户或用户组,分别是拥有者,组成员,其他用户。用户组体现了一点角色的概念。
2)用户和组
- /etc/passwd /etc/gpasswd是系统用户(组)配置文件,存储了系统中所有用户(组)的基本信息
- /etc/shadow /etc/gshadow文件用于存储Linux系统中用户的密码信息,又称为“影子文件”
3)文件权限
- 属主、属组、其他
- 读、写、执行
- 两种表示形式:数字(0~7)、字母(rwx)
4)Umask掩码:设置用户创建目录和文件时的默认权限。
例如:Umask022,对应的目录权限是777-022=755,文件权限是666-022=644。
5)SUID (Set User ID) / SGID (Set Group ID):使文件在执行时具有文件所有者或属组的权限。
八、SELinux
1)基本概念:SELinux是Security-Enhanced Linux的简称,是一种基于 域-类型 模型(domain-type)的强制访问控制(MAC)安全系统。
2)传统Linux的不足:
- 存在特权用户root:任何人只要得到root的权限,对于整个系统都可以为所欲为。这一点Windows也一样。
- 对于文件的访问权划分不够细:在Linux系统里,对于文件的操作,只有「所有者」,「所有组」,「其他」这3类的划分。
- SUID程序的权限升级:如果设置了SUID权限的程序有了漏洞的话,很容易被攻击者所利用。
- DAC(Discretionary Access Control)问题:文件目录的所有者可以对文件进行所有的操作,这给系统整体的管理带来不便。
3)SELinux的优点:
- 更严格和细粒度的访问控制
- 对进程和用户只赋予最小的权限
- 防止权限升级
4)SELinux安全策略的分类——MAC、TE
TE(Type Enforcement):对所有的文件都赋予一个叫type的文件类型标签,对于所有的进程也赋予一个叫domain的标签。访问控制授权的依据主要是域对类型所拥有的访问权限。
5)SELinux的安全上下文:在SELinux当中,所有操作系统访问控制都是以关联的客体和主体的某种访问控制属性为基础。文章来源:https://www.toymoban.com/news/detail-640460.html
- 这种访问控制属性叫做安全上下文
- 所有的客体以及主体都有与其有关联的安全上下文
- 一个安全上下文由三部分组成:用户、角色和类型标识符
6)SELinux的三种状态:文章来源地址https://www.toymoban.com/news/detail-640460.html
- Enforcing:强制模式,只要是违反安全策略的行动都会被禁止,并作为内核信息记录。
- Permissive:宽容模式,违反策略的行动不会被禁止,但是会提示警告信息。
- Disabled:禁用SELinux。
到了这里,关于信息安全系统导论第四章访问控制的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!