libvirtd:kvm:用户权限 Centos 6

libvirtd:kvm:用户权限 Centos 6

我需要让用户访问控制他们如何使用虚拟机以及他们可以通过基于 KVM 的虚拟机管理程序上的 Virsh 做什么。

到目前为止我从中学到http://wiki.libvirt.org我必须/etc/libvirt/libvirtd.conf为 unix 套接字启用 unix 套接字权限,并创建一个名为 libvirtd 的新组,并将用户添加到其中。一切都很顺利,但是,当我使用这些用户时,我看不到任何虚拟机

virsh list --all

libvirt.ogr 上的文档还提到使用 polkit 和其他技术。

如果有人可以帮助我提供使用简单unix socket permission方法或polikit方法sudoer或任何其他方法的任何实用示例。

我希望以这样的方式拥有用户权限,即来自 virsh 的用户只能执行有限的任务,例如不能做virsh start但不能virsh destroy

答案1

我使用 libvirt wiki 在 CentOS 6.5 上成功使用了 PolicyKit:

http://wiki.libvirt.org/page/SSHPolicyKitSetup

要使它正常工作,缺少的步骤virsh:是将以下内容添加到您的 .bash_profile 中:

if test -x `which virsh`; then
  export LIBVIRT_DEFAULT_URI=qemu:///system
fi

(这是来自这个邮政

此设置还允许从远程计算机上的 virt-manager 无缝使用。

答案2

为了实现正确的 RBAC,您需要一个比 libvirt 更复杂的 VM 管理平台,它仅用于控制 VM 生命周期,除此之外没有其他用途。请查看 oVirt.org 以获得一个很好的示例

答案3

回答我自己的问题。最简单、最容易的解决方案是 sudoers。我们可以用 sudoers 正则表达式做很多事情。我只是添加了一条 sudoer 规则。

保留所有客户机的名称,以便您可以使用某种正则表达式指定它们。就我而言,我保留了所有客户机,即那些我希望由非 root 用户控制的机器,以 vmname- 开头。

以下规则将允许非 root 用户启动并获取控制台虚拟机,但不允许销毁它。

Cmnd_Alias KVMCMD = /usr/bin/virsh list --all,/usr/bin/virsh start vmname*
Cmnd_Alias KVMBAD = virsh destroy vmname*

希望这能帮助那些正在寻找类似解决方案的人。

相关内容