libvirtd: kvm: Пользовательские разрешения Centos 6

Мне нужно иметь контроль доступа пользователей к тому, как они могут использовать виртуальные машины и что они могут делать через Virsh на гипервизоре на основе KVM.

До сих пор я узнал от http://wiki.libvirt.org/, что мне нужно включить разрешения сокетов unix на /etc/libvirt/libvirtd.conf для сокета unix и создайте новую группу с именем libvirtd и добавьте в нее пользователей. Так что все прошло нормально, с этими пользователями я не вижу виртуальных машин, когда я

virsh list --all

В документации на libvirt.ogr также упоминается использование polkit и других методов.

Если кто-то может помочь мне с любым рабочим примером использования простого unix socket permission метод или polikit или же sudoer метод или любой другой метод.

Я хотел бы иметь права пользователя таким образом, чтобы пользователь из virsh мог выполнять только ограниченные задачи, такие как не могу virsh start но не могу virsh destroy,

3 ответа

Я имел успех с использованием PolicyKit на CentOS 6.5 с помощью вики libvirt:

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

Недостающий шаг, чтобы заставить его работать с virsh: это добавить следующее в ваш.bash_profile:

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

(это из этого поста)

Эта настройка также позволяет использовать бесшовное использование virt-manager на удаленном компьютере.

Для правильного RBAC вам понадобится более сложная платформа управления виртуальными машинами, чем libvirt, которая предназначена для управления жизненным циклом виртуальной машины, и немного больше на самом деле. Посмотрите на oVirt.org для хорошего примера

Отвечая на мой собственный вопрос. Самое простое и простое решение - sudoers. Мы можем многое сделать с помощью регулярных выражений sudoers. Я просто добавил одно правило sudoer.

Сохраняйте имена всех гостевых машин таким образом, чтобы вы могли указать их, используя какое-то регулярное выражение. В моем случае я сохранил все гостевые машины, те, которые я хочу контролировать не от имени пользователя root, начиная с vmname-.

Приведенное ниже правило позволит пользователям без прав root запускать и получать консоль vm, а не уничтожать ее.

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

Надеюсь, что это помогает кому-то, кто ищет подобное решение.

Другие вопросы по тегам