RHEL 6 KVM 使本地主机用户能够仅管理其虚拟机

RHEL 6 KVM 使本地主机用户能够仅管理其虚拟机

我在一台 RHEL6 机器上运行 KVM,该机器目前运行 4 个客户虚拟机。我的任务是找到一种方法,让本地用户(主机本地)仅对其分配的虚拟机拥有管理权,无论是通过 virt-manager 还是其他服务。

例如,假设主机上有一个名为“foo”的本地用户,我们已将客户虚拟机“bar”提供给他使用。我想知道是否有办法让“foo”能够通过 ssh 进入主机并运行 virt-manager(或其他服务)来管理其虚拟机,但限制其访问权限,以便他们只能查看/管理“bar”,而不能查看/管理其他 3 个虚拟机。

我们正在运行此虚拟化服务器来为研究小组托管多个虚拟机,我们希望能够让每个研究小组都能够启动/停止自己的虚拟机,但出于安全原因,我们希望能够限制他们只能访问分配给他们的虚拟机。我们不想授予他们在主机上的任何其他管理权限。

这可能吗?或者有应用程序可以做到这一点吗?如果是这样,有人能给我指出正确的方向吗?我对管理服务器和虚拟机还很陌生,所以我不太确定从哪里开始寻找(谷歌也没有给我任何东西)。

答案1

如果绕过 libvirt,您可以使用基本的 unix 权限来执行此操作。要运行 kvm,您需要对 /dev/kvm、您正在使用的块设备具有读写权限,并且能够使用网络分路器设备。因此,

  • 如果尚不存在 kvm 组,则创建一个,将所有用户添加到该组,将 /dev/kvm 设置为 0660 权限,并由该组拥有。
  • 将每个虚拟机使用的块设备或磁盘映像的所有权授予相应的用户。
  • 使用 tunctl 为每个虚拟机创建一个具有所有者设置的持久 tap 设备,并将其添加到适当的网桥。

然后用户就可以以自己的身份运行 kvm 命令行,使用他们想要的任何机制,例如kvm -foo -bar &在屏幕内部。

缺点:

  • 允许用户通过创建自己的磁盘映像和使用user网络设备来运行更多虚拟机。但除了资源使用之外,这实际上并不会带来任何安全风险。
  • 不使用 RedHat 所支持的 libvirt。不过,我从来都不是 libvirt 的忠实粉丝;它不会为您提供所有 kvm 功能,而且实际上没有太多额外的用处,除非您试图对底层 virt 技术保持中立。

答案2

一个简单的解决方案可能是弄清楚用户需要在他们的 VM 上执行哪些任务,并添加非常具体的 sudo 规则来允许这些命令,或者添加一个以 root 身份运行这些命令但知道您的特定安全要求的辅助脚本。

相关内容