保护敏感和机密信息在商业领域、军事、情报机构和政府等领域都是至关重要的。在同一台计算机上放置不同安全级别的信息构成了真正的威胁。如果为不同安全级别的信息购买相应的系统,这代价是相当昂贵的。为了解决此问题,需要一个机制,使在不同的安全级别的用户同时访问系统时,系统没有信息污染的恐惧。
多级来源于防卫社会的安全分类:秘密,机密,绝密(Confidential, Secret, and Top Secret)。
个人必须被授予适当的许可才可以看到分类信息。那些具有秘密许可的人仅被授权查看秘密文件;他们不能查看机密或绝密信息。适用于数据流操作从低层次向高层次的规则,而不是反。信息安全级别如下图所示:
从下到上,其级别为从低到高。
BLP: Bell-La Padula Model,即“no read up, no write down”,如下图所示:
从上面的讨论可知,subject和object被打上安全级别(SL)的标记,它由以下两类实体组成:
1) Sensitivity: — 一个等级属性,如:"Secret" or "Top Secret".
2) Categories: — 一个非等级属性集合,如:"US Only" or "UFO".
一个安全级别(SL)有一个Sensitivity,可能有0个或多个Categories。SL例子如下所示:
{ Secret / UFO, Crypto }, { Top Secret / UFO, Crypto, Stargate } and { Unclassified }
注:等级属性Sensitivity之后有0个或多个Categories。既有Categories又有Sensitivity的原因是Sensitivity可在须知的基础上做更进一步的划分。如一个进程被设置为“Secret”,它可能不需要访问“Warp Drive”项目。
Objects和Subjects的SL名字分别如下:
• Classifications: objects的安全级别(SL)叫做分类
• Clearances: subjects的安全级别(SL)叫做许可
从而,objects被打上分类标记;而subjects用指定的许可进行操作。
SELinux使用BLP(Bell-La Padula)模型,辅以类型强制(TE: Type Enforcement)以确保其完整性。简言之,MLS策略确保有适当许可(clearance)的Subject访问特定分类(classification)的Object。
例如,在MLS策略下,系统需要知道如何处理以下请求:
有 {Top Secret / UFO, Rail gun }许可的进程可以写具有{Top Secret / UFO } 分类的文件吗?
被执行的MLS模型和策略将决定此答案。(需要考虑如:把Rail gun类的信息泄漏到此文件的问题)
在SELinux下的Type Enforcement(TE)是一个更加灵活和更具表现力的安全策略,在许多情况下,TE比MLS更适合。
但是,在一些场景中,MLS是仍然是必须的。如:一个文件服务器上存有混合分类的数据,且客户以不同的许可连接此服务器。这将导致在一个简单的系统中,需要大量的安全级别和一个强隔离所有数据。这种场景就是SELinux包含MLS作为一个安全模型且作为TE的附属物的原因。