Red Hat Training

A Red Hat training course is available for RHEL 8

15.4. 限制虚拟机用户可以使用哪些操作

在某些情况下,在 RHEL 8 上托管的虚拟机(VM)用户可以执行的默认操作可能会导致安全隐患。如果是这种情况,您可以通过配置 libvirt 守护进程配置来在主机上使用 polkit 策略工具包来限制虚拟机用户可用的操作。

流程

  1. 可选: 确保与 libvirt 有关的系统 polkit 控制策略根据您的偏好而设置。

    1. /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
    2. 打开文件并检查规则设置。

      有关读取 polkit 控制策略的语法的信息,请使用 man polkit

    3. 修改 libvirt 控制策略。要做到这一点:

      1. /etc/polkit-1/rules.d/ 目录中创建一个新的 .rules 文件。
      2. 将自定义策略添加到此文件中,并保存。

        有关 libvirt 控制策略的更多信息和示例,请参阅 libvirt 上游文档

  2. 配置您的虚拟机,以使用由 polkit 确定的访问策略。

    为此,请取消对 /etc/libvirt/libvirtd.conf 文件中的 access_drivers = [ "polkit" ] 行的注释。

    # sed -i 's/#access_drivers = \[ "polkit" \]/access_drivers = \[ "polkit" \]/' /etc/libvirt/libvirtd.conf
  3. 重新启动 libvirtd 服务。

    # systemctl restart libvirtd

验证

  • 作为您要限制其虚拟机操作的用户,请执行一个受限操作。

    例如,如果非特权用户被限制查看在系统会话中创建的虚拟机:

    $ virsh -c qemu:///system list --all
    Id   Name           State
    -------------------------------

    如果这个命令没有列出任何虚拟机,即使系统上有一个或多个虚拟机,则 polkit 成功地限制了非特权用户的操作。

故障排除

  • 目前,配置 libvirt 以使用 polkit,使它不可能使用 RHEL 8 web 控制台 连接到虚拟机,因为与 libvirt-dbus 服务不兼容。

    如果您需要在 web 控制台中对虚拟机进行精细访问控制,请创建一个自定义 D-Bus 策略。具体说明请参阅红帽知识库中的 如何在 Cockpit 中配置虚拟机的精细控制

其它资源