4.4. sVirt 標籤

和其它受 SELinux 保護的服務一樣,sVirt 使用以程序為主的機制、標籤與限制,為客座端提供額外的安全性與控制。根據現有執行中的虛擬機器(動態),標籤會自動套用到系統的資源上;但也可以由系統管理者手動指定(靜態),以符合任何可能存在的特定需求。

4.4.1. sVirt 的標籤類型

以下表格顯示了各種能夠指定給資源的不同 sVirt 標籤(例如虛擬機器程序、映像檔、與共享內容):

表格 4.2. sVirt 標籤

類型SELinux Context描述 / 效用
虛擬機器程序system_u:system_r:svirt_t:MCS1MCS1 是隨機選取的欄位。目前大約支援 500,000 種標籤。
虛擬機器映像檔system_u:object_r:svirt_image_t:MCS1只有擁有同樣 MCS1 欄位的 svirt_t 程序可以讀 / 寫這些映像檔與裝置。
虛擬機器共享讀 / 寫內容system_u:object_r:svirt_image_t:s0所有 svirt_t 程序都可以寫入 svirt_image_t:s0 檔案與裝置。
虛擬機器共享的唯讀內容system_u:object_r:svirt_content_t:s0透過這個標籤,所有 svirt_t 程序都可以讀取檔案與裝置。
虛擬機器映像檔system_u:object_r:virt_content_t:s0映像檔存在時所使用的系統預設標籤。若使用此標籤,svirt_t 虛擬程序將不允許讀取檔案與裝置。

4.4.2. 動態配置

sVirt 搭配 SELinux 時,動態標籤配置是預設的標籤選項。請參見以下動態標籤的範例:
# ps -eZ | grep qemu-kvm

system_u:system_r:svirt_t:s0:c87,c520 27950 ?  00:00:17 qemu-kvm
在這範例中,qemu-kvm 程序的基礎標籤是 system_u:system_r:svirt_t:s0。libvirt 系統已經為這程序產生獨特的 MCS 標籤 c87,c520。這基礎標籤與 MCS 標籤合在一起,形成該程序的完整安全標籤。同樣地,libvirt 會以同樣的 MCS 標籤與基礎標籤來形成映像檔標籤。接下來這映像檔標籤會自動套用到所有虛擬機器所需要存取的所有主機檔案,例如磁碟映像檔、磁碟裝置、PCI 裝置、USB 裝置、以及 kernel/initrd 檔案。透過不同的標籤,每個程序皆會與其它虛擬機器隔離開來。
以下範例顯示了虛擬機器的特有安全標籤(此處加上相對應的 MCS 標籤 c87,c520),套用到 /var/lib/libvirt/images 中的客座端磁碟映像檔:
# ls -lZ /var/lib/libvirt/images/*

  system_u:object_r:svirt_image_t:s0:c87,c520   image1
以下範例顯示了客座端 XML 配置的動態標籤:
<seclabel type='dynamic' model='selinux' relabel='yes'>
  <label>system_u:system_r:svirt_t:s0:c87,c520</label>                  
  <imagelabel>system_u:object_r:svirt_image_t:s0:c87,c520</imagelabel>  
</seclabel>

4.4.3. 使用基礎標籤進行動態配置

要在動態模式中覆寫預設的基礎安全標籤,可以手動配置 XML 客座端配置項目中的 <baselabel> 選項,如以下範例所示:
<seclabel type='dynamic' model='selinux' relabel='yes'>
  <baselabel>system_u:system_r:svirt_custom_t:s0</baselabel>
  <label>system_u:system_r:svirt_custom_t:s0:c87,c520</label>           
  <imagelabel>system_u:object_r:svirt_image_t:s0:c87,c520</imagelabel>  
</seclabel>

4.4.4. 靜態配置搭配動態資源標籤

有些應用程式需要對產生安全標籤進行完整的控制,但仍需要 libvirt 負責資源的標籤。以下客座端 XML 配置示範了靜態配置搭配動態資源標籤:
<seclabel type='static' model='selinux' relabel='yes'>
  <label>system_u:system_r:svirt_custom_t:s0:c87,c520</label>
</seclabel>

4.4.5. 無資源標籤的靜態配置

無資源標籤的靜態配置是允許的,主要用於 MLS 或受到嚴密控制的環境中。靜態標籤允許管理者選擇特定的標籤,包括 MCS/MLS 欄位,供虛擬機器使用。執行靜態標籤的虛擬機器之管理者需負責設定用於映像檔的正確標籤。虛擬機器皆會以該標籤啟始,sVirt 系統永遠不會修改靜態標籤的虛擬機器之內容。以下客座端的 XML 配置展示了這種情況的範例:
<seclabel type='static' model='selinux' relabel='no'>
  <label>system_u:system_r:svirt_custom_t:s0:c87,c520</label>
</seclabel>