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*
Надеюсь, что это помогает кому-то, кто ищет подобное решение.