强制访问控制

强制访问控制是限制访问对象的系统强制执行的方法,它基于对象的灵敏度和用户的许可安全级。 相比之下,自主访问控制由单独的文件所有者而不是系统实施。

MAC 的标签的用法

可信AIX®使用标签系统来执行 MAC。 在可信AIX系统中,所有已命名对象都有敏感度标签 (SL),用于标识对象的敏感度级别。 进程也具有 SL。 进程的 SL 指示进程能够访问哪些级别的敏感信息。 通常,进程具有的灵敏度级别必须等于或大于对象具有的灵敏度级别,这样才能访问对象。 SL 可以用于使只读文件可访问或使常规用户完全不能访问文件。

所有系统对象(例如,文件、IPC 对象、网络连接和进程)都具有 SL。 当创建对象时,将自动为对象设置 SL。 所有的核心转储都被视为对象,并且将由系统自动标注。

在安装TrustedAIX之前存在的对象,在安装TrustedAIX之后访问这些对象时,会收到默认的 "SYSTEM_LOWSLs (SLSL)。 不会在这些对象上永久性地设置 SL。 必须在对象上运行 settxattr 命令才能设置 SL。 对于在可信AIX安装后创建的对象,对象的 SL 设置为创建过程的 SL。

用户和标签

系统通过系统缺省值或特定于用户的设置为每个用户帐户指定一个有效的 SL 范围,并且用户只能在该范围内进行操作。 进程或用户只能在进程或用户的当前灵敏度标签中创建文件和目录,并且只能读取和写入遵循系统强加的 MAC 限制的文件。

MAC 实施

只要进程尝试打开一个文件系统对象、检索文件系统对象的属性、向进程发送信号、通过 STREAM 传送数据或通过网络接口发送或接收包,就将实施“强制访问控制”。 仅当同时满足了 MAC 和 DAC 条件,才可以访问任何文件系统对象。 当用户尝试访问文件时,MAC 限制将在检查 DAC 限制(例如,许可权位或 ACL) 之前实施。

对文件系统对象的访问不仅受对象的 SL 限制,而且还受对象所在的目录的 SL 限制。 因此,文件系统对象可以在不同于对象本身的 SL 的灵敏度级别(目录的 SL) 受到保护。 文件系统对象可以具有位于一个或多个目录中的多个名称(链接)。 尽管每个名称(链接)在与链接指向的文件相同的 SL 受保护,但是对各种链接的有效保护仍可能不同,因为这些链接在具有不同级别保护的目录中。

对象的名称存储在对象所在的目录中。 因此,有权访问该目录的任意进程将可以查看目录中所有对象的名称。 但是,只有具有正确访问权的进程才能从某个对象中读取数据或将数据写入某个对象。

列出并更改 SL

系统上的对象和进程的 SL 可以使用 lstxattr 命令进行查看,并且可以使用 settxattr 命令进行修改。

只有具有正确权限的用户和具有正确特权的进程才能更改文件或进程的 SL。

使用 settxattr 命令时,如果要将文件系统对象 SL 更改为较低级别的 SL,那么用户应该具有 aix.mls.label.sl.downgrade 权限。 要升级文件系统对象 SL,用户应该具有 aix.mls.label.sl.upgrade 权限。 要更改进程的 SL,比如要升级,那么用户应该具有 aix.mls.proc.sl.upgrade 权限;如果要降级,那么用户应该具有 aix.mls.proc.sl.downgrade 权限。

开放式文件描述符上的 MAC

对于读/写和简单文件访问,MAC 检查将在进程访问文件时执行。 在进程具有文件的文件描述符之后,它将可以读取和写入文件,即使进程的 SL 更改为比文件的 SL 更低的级别。 但是,某些操作(例如,设置文件所有者、许可权、标签和特权)将在进程获取了文件描述符之后执行访问检查。

这意味着,当进程使用文件描述符访问文件时,不执行 MAC 检查和分区目录路径解决方案。 文件和/或进程的 SL 可以更改,并且仍然允许访问。