16.5. 仮想マシンユーザーが使用できるアクションの制限
場合によっては、RHEL 8 でホストされる仮想マシン (VM) のユーザーがデフォルトで実行できるアクションにより、セキュリティーリスクが発生する可能性があります。この場合は、ホストマシンで polkit ポリシーツールキットを使用するように libvirt デーモンを設定して、仮想マシンユーザーに利用可能なアクションを制限できます。
手順
オプション:
libvirtに関連するシステムのpolkit制御ポリシーが必要に応じて設定されていることを確認します。/usr/share/polkit-1/actions/ディレクトリーおよび/usr/share/polkit-1/rules.d/ディレクトリーにある libvirt 関連のファイルすべてを検索します。# ls /usr/share/polkit-1/actions | grep libvirt # ls /usr/share/polkit-1/rules.d | grep libvirtファイルを開き、ルール設定を確認します。
polkit制御ポリシーの構文の読み取りに関する詳細は、man polkitを使用します。libvirt制御ポリシーを変更します。これを行うには、以下を行います。-
/etc/polkit-1/rules.d/ディレクトリーに新しい.rulesファイルを作成します。 このファイルにカスタムポリシーを追加して保存します。
libvirtコントロールポリシーの詳細および例は、アップストリームのlibvirtドキュメント を参照してください。
-
polkitで決定されるアクセスポリシーを使用するように仮想マシンを設定します。これを行うには、
/etc/libvirt/libvirtd.confファイルのaccess_drivers = [ "polkit" ]行のコメントを外します。# sed -i 's/#access_drivers = \[ "polkit" \]/access_drivers = \[ "polkit" \]/' /etc/libvirt/libvirtd.conflibvirtdサービスを再起動します。# systemctl restart libvirtd
検証
VM アクションを制限する予定だったユーザーとして、制限されたアクションの 1 つを実行します。
たとえば、特権のないユーザーがシステムセッションで作成された VM の表示を制限されている場合は、以下を実行します。
$ virsh -c qemu:///system list --all Id Name State -------------------------------お使いのシステムに 1 つ以上の仮想マシンが存在していても、このコマンドで仮想マシンがリスト表示されない場合は、
polkitは特権のないユーザーのアクションを正常に制限します。
トラブルシューティング
現在、
polkitを使用するようにlibvirtを設定すると、libvirt-dbusサービスとの互換性がないため、RHEL 8 Web コンソールを使用 する VM に接続できなくなります。Web コンソールで仮想マシンのきめ細かいアクセス制御が必要な場合は、カスタム D-Bus ポリシーを作成します。詳細は、Red Hat ナレッジベースソリューション How to configure fine-grained control of Virtual Machines in Cockpit を参照してください。