本系列 文章的 第 1 部分 将侧重介绍基于角色的访问控制(RBAC),讨论如何将根用户的角色、责任和权限委托给多个用户。本文还阐述了如何允许授权用户执行授权命令或文件和设备。
RBAC 更加注重用户。多层安全性(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) 来实现的。
SL 包括两个部分:
- 分类:指示安全性级别
- 分段:分类下面的分组
下面给出了系统定义的 SL 分类:
- TOP SECRET
- SECRET
- CONFIDENTIAL
- IMPLEMENTATION LOW
分段 就是表示分类中的不同部分或分组的字符串。它没有任何层次顺序,但是可用于对分类中的信息流添加限制。它用于理解标签之间的关系,如下表所示。这种关系可控制对文件的访问。
敏感性标签关系
| 关系 | 分类 | 分段 |
|---|---|---|
| 支配 | SL>=SL2 | SL2 的 SL1 分段子集 |
| 平等 | SL1=SL2 | SL1、SL2 分段是相同的 |
| 分离 | NA | 分段中没有匹配 |
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- |
|
|
| isso |
|
| rw-r-r- |
|
|
| isso |
|
| rw-r-r- |
|
|
标签在系统级别上引入了其他的安全层次,这要优于传统的 DAC。使用以下 MLS 经验法则作为参考。
- 访问权限经验法则
- 访问权限的层次结构
访问权限经验法则
- 要读取,进程 SL 必须高于文件 SL
- 要写入,进程 SL 必须等于文件 SL
- 要执行,进程 SL 必须高于文件 SL(与读取访问相同)
- 分离的 SL 不具有访问权
- 同样的规则也适用于 TL
访问权限的层次结构
- 基于 Integrity 标签的完整性检查
- 基于 Sensitivity Label 的敏感性验证
- DAC 权限
除此之外,还可以使用基于 RBAC 的授权和权限来增强安全性。作为一名系统管理员或开发人员,您必须理解自己的需求并相应地配置自己的系统。
如您所见,这个话题并不浅显易懂。请联系技术支持获取额外帮助,或者,如果您对于此话题还有任何疑问,可以与我联系。
学习
- 了解 AIX 高级特性:简便的基于角色的访问控制:本文将向您介绍 AIX 上的新特性-基于角色的访问控制(RBAC)和多级安全性,其中会讨论如何在 AIX 上启用基于角色的访问控制以及如何把根用户的角色、责任和授权分配给多个用户。
- AIX and UNIX 专区:developerWorks 的“AIX and UNIX 专区”提供了大量与 AIX 系统管理的所有方面相关的信息,您可以利用它们来扩展自己的 UNIX 技能。
- AIX and UNIX 新手入门:访问“AIX and UNIX 新手入门”页面可了解更多关于 AIX 和 UNIX 的内容。
- AIX and UNIX 专题汇总:AIX and UNIX 专区已经为您推出了很多的技术专题,为您总结了很多热门的知识点。我们在后面还会继续推出很多相关的热门专题给您,为了方便您的访问,我们在这里为您把本专区的所有专题进行汇总,让您更方便的找到您需要的内容。
- developerWorks 技术活动和网络广播:随时关注 developerWorks 技术活动和网络广播。
-
Podcasts:收听 Podcast 并了解 IBM 技术专家的最新想法。
-
“文档:AIX6.1 Information”。
-
“红皮书:AIX V6 Advanced Security Features
Introduction and Configuration”。
讨论
-
参与 AIX 和 UNIX 论坛:
