23.20. 安全标签
<seclabel>
元素允许控制安全驱动程序的运行。有三种基本操作模式: 'dynamic'
,libvirt 会自动生成唯一的安全标签 "静态"
,其中应用程序/管理员选择标签或 "none"(
其中禁用限制)。使用动态标签生成时,libvirt 将始终自动重新标记与虚拟机关联的任何资源。使用静态标签分配时,管理员或应用程序必须确保在任何资源上正确设置标签,但在需要时可以启用自动重新标记。
如果 libvirt 使用了多个安全驱动程序,则可以使用多个 seclabel 标签,每个驱动程序一个,各个标签引用的安全驱动程序可以通过属性
模型
来定义。顶级安全标签的有效输入 XML 配置有:
图 23.86. 安全标签
<seclabel type='dynamic' model='selinux'/> <seclabel type='dynamic' model='selinux'> <baselabel>system_u:system_r:my_svirt_t:s0</baselabel> </seclabel> <seclabel type='static' model='selinux' relabel='no'> <label>system_u:system_r:svirt_t:s0:c392,c662</label> </seclabel> <seclabel type='static' model='selinux' relabel='yes'> <label>system_u:system_r:svirt_t:s0:c392,c662</label> </seclabel> <seclabel type='none'/>
如果未在输入 XML 中提供
"type"
属性,则将使用安全驱动程序默认设置,这可能是 "无"
或 "动态"。
如果设置了 <baselabel>
但没有设置 'type'
,则类型会假定为 'dynamic'
。当查看带有自动资源重新标记 active 的正在运行的虚拟客户机的 XML 时,将包括额外的 XML 元素 imagelabel
。这是一个只输出的元素,在用户提供的 XML 文档中将忽略它。
可以使用以下值操作以下元素:
类型
-使用静态
、动态
或无
操作来确定 libvirt 是否自动生成唯一的安全标签。model
- 与当前激活的安全模型匹配的有效安全模型名称。重新标记
- 是的,或
没有
。如果使用动态标签分配,则必须始终为yes
。使用静态标签分配时,将默认为no
。<label>
- 如果使用静态标签,则必须指定分配给虚拟域的完整安全标签。内容的格式取决于所使用的安全驱动程序:SELinux
:SELinux 上下文.AppArmor
:Armor 配置集。DAC
: owner 和 group 以冒号分隔。它们可以定义为用户/组名称或 UID/GID。驱动程序将首先尝试将这些值解析为名称,但前导加号可用于强制驱动程序将其解析为 UID 或 GID。
<baselabel>
- 如果使用动态标签,可以选择性地使用它来指定基本安全标签。内容的格式取决于所使用的安全驱动程序。<imagelabel>
- 这是一个输出元素,它显示与虚拟域关联的资源上所使用的安全标签。内容的格式取决于所使用的安全驱动程序。当重新标记生效时,还可以通过禁用标签(如果 NFS 或其它文件系统中缺少安全标签)或请求备用标签(当管理应用创建特殊标签时,可以微调标签)或请求备用标签(在某个域间共享特殊标签时,使用该文件)。当 seclabel 元素附加到特定路径而不是顶级域分配时,只支持属性 relabel 或 sub-element 标签。