7.2. sVirt のラベリング
SELinux の保護下にある他のサービスと同様に、sVirt はプロセスベースのメカニズムと制約を使用して、ゲストインスタンス全体に追加のセキュリティー層を提供します。通常の使用では、sVirt が背後で作動していることすら分かりません。 このセクションはで、sVirt のラベル付け機能について説明します。
以下の出力にあるように、sVirt を使用すると各仮想マシンのプロセスにラベル付けが行なわれ、動的生成のレベルで稼働するようになります。各プロセスは異なるレベルで他の仮想マシンから隔離されています。
~]# ps -eZ | grep qemu
system_u:system_r:svirt_t:s0:c87,c520 27950 ? 00:00:17 qemu-kvm
system_u:system_r:svirt_t:s0:c639,c757 27989 ? 00:00:06 qemu-system-x86
以下の出力で示すように、 実際のディスクイメージは、 プロセスに一致するよう自動的にラベル付けされます。
~]# ls -lZ /var/lib/libvirt/images/*
system_u:object_r:svirt_image_t:s0:c87,c520 image1
以下の表では、sVirt の使用時に割り当て可能な各種のラベルの概要を示しています。
タイプ | SELinux コンテキスト | 説明 |
---|---|---|
仮想マシンプロセス | system_u:system_r:svirt_t:MCS1 | MCS1 は無作為に選択されたフィールドです。現在は、約 50 万のラベルがサポートされています。 |
仮想マシンのイメージ | system_u:object_r:svirt_image_t:MCS1 | これらのイメージファイルやデバイスの読み取り/書き込みができるのは、同じ MCS フィールドが付いた svirt_t プロセスだけです。 |
仮想マシンの共有読み取り/書き込みコンテンツ | system_u:object_r:svirt_image_t:s0 | svirt_t プロセスはすべて、svirt_image_t:s0 のファイルおよびデバイスに書き込みすることができます。 |
仮想マシンのイメージ | system_u:object_r:virt_content_t:s0 | イメージが存在する場合に使用されるシステムのデフォルトラベル。svirt_t 仮想プロセスは、このラベルの付いたファイル/デバイスの読み取りはできません。 |
sVirt の使用時に、静的なラベル付けを行なうこともできます。 静的なラベルを使用すると、管理者は仮想化ゲストに特殊なラベルを選択することができます。これには MCS/MLS フィールドも含まれます。静的にラベル付けした仮想化ゲストを実行する場合は、管理者はイメージファイルにも正しいラベルを設定する必要があります。仮想マシンは常にそのラベルで起動し、静的にラベル付けした仮想化マシンのコンテンツの修正を sVirt システムが行なうことはありません。 これにより、sVirt コンポーネントが MLS 環境で実行できるようになります。また、要件に応じてひとつのシステム上で異なる機密性レベルを持つ複数の仮想マシンを実行することもできます。