19.5. 限制虚拟机用户可以使用哪些操作
在某些情况下,在 RHEL 9 中托管的虚拟机(VM)用户可以默认执行。如果是这种情况,您可以通过将 libvirt
守护进程配置为在主机上使用 polkit
策略工具包来限制虚拟机用户可用的操作。
流程
可选:确保与
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/
目录中找到虚拟化驱动程序的所有配置文件,并取消其中注释了access_drivers = [ "polkit" ]
的行。# find /etc/libvirt/ -name virt*d.conf -exec sed -i 's/#access_drivers = \[ "polkit" \]/access_drivers = \[ "polkit" \]/g' {} +
对于您在上一步中修改的每个文件,请重新启动对应的服务。
例如,如果您修改了
/etc/libvirt/virtqemud.conf
,请重新启动virtqemud
服务。# systemctl try-restart virtqemud
验证
作为您要限制其虚拟机操作的用户,请执行一个受限操作。
例如,如果非特权用户被限制查看在系统会话中创建的虚拟机:
$ virsh -c qemu:///system list --all Id Name State -------------------------------
如果这个命令没有列出任何虚拟机,即使系统上有一个或多个虚拟机,则
polkit
成功地限制了非特权用户的操作。
故障排除
目前,将
libvirt
配置为使用polkit
便能够使用 RHEL 9 web 控制台连接到虚拟机,因为与libvirt-dbus
服务不兼容。如果您需要在 web 控制台中对虚拟机进行精细访问控制,请创建一个自定义 D-Bus 策略。具体说明请参阅红帽知识库中的 如何在 Cockpit 中配置虚拟机的精细控制。
其它资源
-
man polkit
命令 -
有关 polkit 访问控制策略 的
libvirt
上游信息
include::module/virtualization/proc_