18.5. 限制虚拟机用户可以使用哪些操作
在某些情况下,RHEL 10 上托管的虚拟机(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-dbus服务的不兼容性,将libvirt配置为使用polkit可能会无法 使用 RHEL 10 web 控制台 连接到虚拟机。如果您需要在 web 控制台中对虚拟机进行精细访问控制,请创建一个自定义 D-Bus 策略。如需更多信息,请参阅红帽知识库解决方案 如何在 Cockpit 中配置虚拟机的精细控制。