sVirt与Docker的安全支持
1. libvirt的类别选择与集群主机限制
在启动新的虚拟机时,libvirt代码会随机选择两个类别,检查这些类别是否在其自身范围内,以及这两个类别是否已分配给其他虚拟机。若已分配,则会继续选择新的类别对,直至找到可用的类别对。
在集群环境中,libvirt支持管理跨多个主机的环境,并能将虚拟机从一个主机迁移到另一个主机。当libvirt使用SELinux时,理想情况下每个主机应运行相同的SELinux策略(或至少使用相同解释的策略),否则无法保证域级别的安全模型定义。不过,这并非强制要求。管理员可以使用libvirt为使用相同SELinux策略的主机打标签,确保虚拟机仅在具有相同SELinux策略(或策略解释)的主机之间迁移。
为实现这一点,libvirt引入了解释域(DOI)的概念。与NetLabel/CIPSO中的DOI类似,libvirt使用整数来区分具有不同策略实现的系统。例如,启用MLS策略的主机可分配DOI值为1,而启用默认MCS策略的主机使用DOI值为0。
DOI设置可通过编辑/etc/libvirt中的虚拟化配置文件进行配置,并使用virsh capabilities命令查看:
# virsh capabilities Connecting to uri: qemu:///system <capabilities> <host> ... <secmodel> <model>selin