8.2. sVirt のラベル付け
SELinux の保護下にあるその他のサービスと同様、sVirt はプロセスベースのメカニズムと制限を使用して、ゲストインスタンスに対してセキュリティーの層を追加します。通常の使用では、sVirt がバックグラウンドで動作していることに気付くことさえありません。本セクションでは、sVirt のラベリング機能を説明します。
以下の出力に示すように、sVirt を使用すると、各仮想マシン (VM) プロセスにラベルが付けられ、動的に生成されたレベルで実行されます。各プロセスは、レベルが異なる他の仮想マシンから分離されています。
~]#
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 は、ランダムに選択された MCS フィールドです。現在は、約 500,000 のラベルがサポートされています。 |
仮想マシンのイメージ | 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 システムは静的なラベルの付いた仮想マシンのコンテンツを決して変更しません。これにより、MLS 環境で sVirt コンポーネントを実行できます。要件に応じて、システムに応じて異なる感度レベルで複数の仮想マシンを実行することもできます。