级别: 中级 Rajesh K. Jeyapaul, 技术负责人,AIX 开发支持, IBM
2009 年 8 月 24 日 如果您感觉 RBAC 和 MLS 等新 AIX® 特性过于令人费解,则本文将通过简单的术语和示例帮助您理解它们。本文是分为两部分的 系列 文章的第 2 部分。
 | |
您可以通过访问"AIX 6 资源中心”来了解更多和 AIX 6 相关的内容:
|
|
简介
本系列 文章的 第 1 部分 将侧重介绍基于角色的访问控制(RBAC),讨论如何将根用户的角色、责任和权限委托给多个用户。本文还阐述了如何允许授权用户执行授权命令或文件和设备。
RBAC 更加注重用户。多层安全性(MLS)则专注于系统,其中所有的组件、数据和设备都归类为不同的安全级别。访问基于信息的敏感性和完整性。
本文将通过示例阐述系统在提供多层安全性方面发挥的作用。
多层安全性 (MLS)
多层安全性的主要目的是将信息分类为不同的安全级别,并根据它们的级别来确定访问策略。
通常,Discretionary Access Control (DAC) 是由用户控制的。而 MLS 还提供了一些由系统控制的层,如下所示:
- Mandatory Access Control (MAC)
- Mandatory Integrity Control (MIC)
图 1 展示了这三个访问控制层(DAC、MAC 和 MIC)的关系。
图 1. 三个访问控制层
Mandatory Access Control (MAC)
MAC 由系统控制。它基于对象所保存的信息的敏感性以及主题的敏感性。
表 1. MAC 规则
| PROCESS(主题) | FILE(对象) |
|---|
| READ | TOP SECRET | SECRET | | WRITE | SECRET | SECRET |
假设某个文件被归类为 SECRET,则 SECRET 类别的进程可以写入(WRITE)文件,TOP SECRET 类别的进程可以读取(READ)文件。
MAC 规则表明,敏感性较高的组件可以读取其他组件。相同的级别的组件之间具有写入访问权限。
MAC 在系统中被表示为 Sensitivity Label (SL)。
Mandatory Integrity Control (MIC)
MIC 根据主题和对象的完整性来提供访问控制。完整性是主题和对象可信赖性的度量。
- 如果进程不可信赖,则不应允许它修改系统中的任何信息。
- 如果信息不可信赖,则不应允许进程读取该信息。
MIC 在系统中被表示为 Integrity Labels (TL)。
下面这个示例将帮助您更好地理解 Integrity Label。
| Subject View | SUBJECT | OBJECT | Object View |
|---|
| READ 和 WRITE | 经理 | 经理 | READ 和 WRITE | | WRITE | 经理 | 员工 | NO READ | | NO WRITE | 员工 | 经理 | READ | | READ 和 WRITE | 员工 | 员工 | READ 和 WRITE |
-
相同级别的经理(Manager)之间可以相互共享信息。同样,员工也有 READ 和 WRITE 权限。
-
经理可以传递命令给员工,但员工不能读取经理的(机密)信息。
-
经理可以从员工处获取信息,但员工不能命令 Major。
记住,MIC 和 MAC 都位于 DAC 之上。因此,即使 MIC 和 MAC 的访问条件得到满足,也需要经过必需的 DAC 许可。
下表显示,主题和对象都需要处于相同的层次才能共享(Read 和 Write)信息。这些示例展示了如何通过标记数据、命令和设备等系统组件来添加除基于用户的访问限制之外的访问限制。
| 名称 | 完整性标签 | 注释 |
|---|
| 进程 | Shell | SECRET | 不能写入文件的进程属于高度安全级别 | | 文件 | /etc/security/paswd | TOP SECRET | - |
| 名称 | 敏感性标签 | 注释 |
|---|
| 进程 | Shell | SECRET |
| | 文件 | /etc/hosts | IMPLEMENTATION LOW | - |
通过 MIC 和 MAC,您可以得出以下访问规则:
-
要让进程和文件都具有读取和写入权限,需要将两者归类为相同的级别。
-
要让进程具有读取和执行权限,应该将它归类为比文件高一个级别。
稍后,您将了解关于 Sensitivity Label (SL) 和 Integrity Label (TL) 的详细信息。接下来,文章将讨论系统安全性配置设置细节,其中涉及如何启用和禁用标签。
系统安全性选项
从 AIX V6 开始,您可以配置系统以在操作模式
或配置模式 下运行。
配置系统所使用的命令
| 命令 | 注释 |
|---|
| getrunmode | 系统目前处于 OPERATIONAL MODE(默认输出)。 | | setrunmode -c | 将系统设置为配置模式。当您希望修改标签设置时可以设置为此模式。 | | setrunmode -o | 将系统设置为操作模式。 |
以下示例展示了启用 SL / TL 时为 MAC 和 MIC 配置的系统。
$ getsecconf
OPERATIONAL MODE Security Flags
TRUSTED NETWORK : DISABLED
SL ENFORCEMENT : ENABLED
TL WRITE ENFORCEMENT : ENABLED
TL READ ENFORCEMENT : ENABLED
TLIB : DISABLED
ROOT : DISABLED
|
setsecconf 命令可用于根据您的需要启用和禁用标签。在这个示例输出中,您可以看到 SL 已被禁用,这意味着系统配置为使用 Integrity 标签表示访问许可。
$ setsecconf -o sl=disable
OPERATIONAL MODE Security Flags
TRUSTED NETWORK : DISABLED
SL ENFORCEMENT : DISABLED
TL WRITE ENFORCEMENT : ENABLED
TL READ ENFORCEMENT : ENABLED
TLIB : DISABLED
ROOT : DISABLED
|
可以通过以下命令来理解系统标签。
$ getsyslab
System Minimum Sensitivity Label: IMPLEMENTATION LOW
System Maximum Sensitivity Label: TOP SECRET ALL
System Minimum Integrity Label : TL IMPLEMENTATION LOW
System Maximum Integrity Label : TL TOP SECRET
|
注意:IMPLEMENTATION LOW、TOP SECRET 等标签定义都是系统定义的标签,用于分类文件、进程、设备等。
标签
如前所见,MAC 的执行是通过 Sensitivity Labels (SL) 和 Integrity Labels (TL) 来实现的。
Sensitivity Label (SL)
SL 包括两个部分:
下面给出了系统定义的 SL 分类:
分段 就是表示分类中的不同部分或分组的字符串。它没有任何层次顺序,但是可用于对分类中的信息流添加限制。它用于理解标签之间的关系,如下表所示。这种关系可控制对文件的访问。
敏感性标签关系
| 关系 | 分类 | 分段 |
|---|
| 支配 | SL>=SL2 | SL2 的 SL1 分段子集 | | 平等 | SL1=SL2
|
SL1、SL2 分段是相同的
| | 分离 | NA | 分段中没有匹配
|
Integrity Labels (TL)
Integrity Labels 控制信息的完整性以及访问信息的进程的可信赖性。
与 SL 不同,TL 只有分类而没有分段。系统定义的 Integrity
Labels 分类如下:
-
TOP SECRET
-
SECRET
- CONFIDENTIAL
-
IMPLEMENTATION LOW
标签用于对文件、命令和设备等系统组件进行分类。标签用于添加访问限制,如下所示。
命令和示例
Label Environment 中所使用的命令详细信息
| 命令 | 输出 | 注释 |
|---|
| lstxattr -f /etc/security/passwd | /etc/security/passwd sl=IMPLEMENTATION LOW tl=TL TOP SECRET secflags= | 列出为文件 /etc/security/passwd 定义的标签。完整性标签被分类为 TOP SECRET,这表示希望写入此文件的进程应该分类为 TOP SECRET。低于此级别的进程将无法访问。
| | lstxattr -p $$
| effsl=IMPLEMENTATION LOW maxcl=TOP SECRET ALL mincl=IMPLEMENTATION LOW efftl=TL IMPLEMENTATION LOW maxtl=TL TOP SECRET mintl=TL IMPLEMENTATION LOW | 为当前的 shell 进程列出标签。敏感性和完整性标签的范围分别显示为 maxcl、mincl 和 maxtl、mintl。SL 和 TL 都有与 IMPLEMENTATION LOW 效果相同的标签。这意味着此进程可以读取和写入分类相同的文件。高于此级别的进程将无法访问。 | | settxattr -f sl="SECRET" /etc/security/passwd | - | 它将 passwd 文件的敏感性标签设置为 SECRET 分类。 | | settxattr -p efftl="TL SECRET" $$ | - | 它将当前 shell 的有效 Integrity 标签设置为 SECRET。 |
-
对于进程来说,需要考虑有效标签。根据已经定义的范围,为系统设置有效标签的作用是提供访问权限。这将允许您在登录时以及在特定范围中设置有效标签。
-
文件(数据)没有有效标签。默认情况下,文件在创建时将具有与 shell 进程相类似的分类。
示例 4. 在登录时为 shell 定义安全性标签
login: isso -e SECRET -t "TL IMPLEMENTATION LOW"
isso's Password:
$ lstxattr -p $$
540862 effsl=SECRET maxcl=TOP SECRET ALL mincl=IMPLEMENTATION LOW efftl=TL IMPLEMENTATION
LOW maxtl=TL TOP SECRET mintl=TL IMPLEMENTATION LOW
|
本例展示了如何在登录时为 shell 设置有效 SL 和 TL。
注意,不要为进程设置较高级别的 Integrity 标签,因为这会阻止一些低级别命令的执行。
如果某个文件不可信赖,则当进程属于高级别时将拒绝读取(ACCESS)文件。
| 文件 | SL | TL | 命令 | DAC |
|---|
| /tmp/hello.txt | IMPLEMENTATION LOW | IMPLEMENTATION LOW
| lstxattr -f /tmp/hello.txt | rwxrwxrwx |
| 进程 | SL | 命令 | TL | 命令 | DAC | 注释 |
|---|
| $$ | IMPLEMENTATION LOW | lstxattr -f /tmp/hello.txt | TOP SECRET
| settxattr -p efftl=TL TOP SECRET $$ | rwxrwxrwx | 这将不允许进程自己执行 vi 命令。 |
确保使用 getsecconf 命令启用了 SL、TL Read 和 TL Write。
如果某个进程不可信赖,则进程将拒绝写入(WRITE)高级别的文件。
| 进程 | SL | TL | 命令 | DAC |
|---|
| $$ | IMPLEMENTATION LOW | IMPLEMENTATION LOW
| lstxattr -p $$ | rwxrwxrwx |
| 文件 | SL | 命令 | TL | 命令 | DAC | 注释 |
|---|
| /tmp/hello.txt | IMPLEMENTATION LOW | lstxattr -f /tmp/hello.txt | TOP SECRET
| settxattr -f tl=TL TOP SECRET /tmp/hello.txt | rwxrwxrwx | 如果文件 Integrity 级别为高,则进程将拒绝写入文件。 |
经验法则
-
文件不可信赖,高级进程拒绝读取访问。
-
进程不可信赖:低级进程拒绝写入访问。
下表将结合敏感性和完整性标签帮助您理解不同场景的访问权限和信息流。
| 用户 | 文件标签 | 进程标签 | DAC | 命令 | 注释 |
|---|
| isso |
|
| rw-r-r- |
|
| | isso |
|
| rw-r-r- |
-
settxattr -p effsl=SECRET $$
|
| | isso |
|
| rw-r-r- |
-
settxattr -p efftl=TL SECRET $$
|
-
高进程完整性标签认为较低级别的文件是不可信赖的。尝试读取文件将以失败告终。
| | isso |
|
| rw-r-r- |
-
settxattr -f tl=TL TOP SECRET /tmp/hello
|
-
较高完整性级别的文件认为进程是不可信赖的,因此进程只能获取只读取访问权限
|
结束语
标签在系统级别上引入了其他的安全层次,这要优于传统的 DAC。使用以下 MLS 经验法则作为参考。
访问权限经验法则
-
要读取,进程 SL 必须高于文件 SL
-
要写入,进程 SL 必须等于文件 SL
-
要执行,进程 SL 必须高于文件 SL(与读取访问相同)
-
分离的 SL 不具有访问权
-
同样的规则也适用于 TL
访问权限的层次结构
-
基于 Integrity 标签的完整性检查
-
基于 Sensitivity Label 的敏感性验证
-
DAC 权限
除此之外,还可以使用基于 RBAC 的授权和权限来增强安全性。作为一名系统管理员或开发人员,您必须理解自己的需求并相应地配置自己的系统。
如您所见,这个话题并不浅显易懂。请联系技术支持获取额外帮助,或者,如果您对于此话题还有任何疑问,可以与我联系。
参考资料 学习
讨论
关于作者  | 
|  | Rajesh K. Jeyapaul 拥有软件系统和商业管理硕士学位。他领导印度 Bangalore 的 AIX 开发支持团队,编写过多份 IBM 红皮书。他的专长包括 AIX 问题判断、高可用性、虚拟化和性能。 |
对本文的评价
|