首页 理论教育 安全上下文与SELinux五元组

安全上下文与SELinux五元组

时间:2023-11-22 理论教育 版权反馈
【摘要】:主体就是进程,进程的安全上下文被记录在内核中进程的task_struct之中。具体来说,就是进程的task_struct有一个成员叫cred,cred中有一个指针成员叫security,security是一个“void*”指针,SELinux会申请内存,将安全上下文相关的数据记录在这里。SELinux中对主体和客体的标记称作安全上下文,也称为安全标签,或干脆简称标签。MLS包含敏感度和组别,有时敏感度和组别分开各算一元,所以也称SELinux的安全上下文为五元组。

安全上下文与SELinux五元组

访问的三要素是主体、操作、客体。访问控制首先要做的事是标记主体和客体。

主体就是进程,进程的安全上下文被记录在内核中进程的task_struct之中。具体来说,就是进程的task_struct有一个成员叫cred,cred中有一个指针成员叫security,security是一个“void*”指针,SELinux会申请内存,将安全上下文相关的数据记录在这里。

978-7-111-54905-5-Part02-4.jpg

978-7-111-54905-5-Part02-5.jpg

客体有很多种,最常用的是文件。文件的安全上下文的基本来源是文件的扩展属性。具体来说,就是存储在文件的名为“security.selinux”的扩展属性之中。

SELinux中对主体和客体的标记称作安全上下文(Security Contexts),也称为安全标签,或干脆简称标签。SELinux的安全上下文的构成是一个四元组,包含:SELinux User、Role、Type MLS。MLS包含敏感度和组别,有时敏感度和组别分开各算一元,所以也称SELinux的安全上下文为五元组。

尽管SELinux的工作机制中包括基于角色的访问控制,但是在SELinux代码中,SELinux角色的作用只是映射为类型,实际的访问控制是基于类型的,如图7-2所示。

978-7-111-54905-5-Part02-6.jpg(www.xing528.com)

图7-2 SELinux角色的作用

这一系列的转换是在用户登录(login)或者用户改变身份(shell命令su)时完成的。暂且不去争论这种设计是否必要,是否可以省略中间环节——SELinux用户和SElinux角色,这种使用场景多半来自遥远的大型机时代。

多级安全的作用是在访问控制中为类型增强定义额外的限制,它不能单独工作。如果类型增强相关的策略允许主体对客体的访问,那么在多级安全生效的情况下,SELinux代码会判断多级安全相关的策略有没有限制此次主体对客体的访问,如果没有,那么允许访问。

三个安全机制中真正能独立起作用的是类型增强,四元组中最重要的是类型。类型增强机制包含两个方面:

(1)类型A的主体可以对类型B的客体进行哪些操作。

(2)主体或客体的类型在什么情况下可以发生变化,可以变为什么值。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈