Назад | Перейти на главную страницу

Назначение виртуальной машины KVM пользователю (авторизация пользователя KVM)

Я хотел бы дать своему другу виртуальную машину на моем выделенном сервере, и я хочу, чтобы он мог перезапустить виртуальную машину или изменить iso - поэтому в основном я хотел бы те же функции, что и поставщик хостинга виртуальных машин, например Линод. Думаю, самым простым решением было бы предоставить ему учетную запись оболочки, но как ограничить оболочку? Можно ли ограничить libvirt для моего случая использования?

Я не знаю, как сделать это напрямую, но вы можете установить панель управления, например Proxmox и дайте ему доступ через это.

libvirt не имеет никакого контроля доступа пользователей к отдельным виртуальным машинам, поэтому лучшим вариантом будет, вероятно, написать серию сценариев оболочки вокруг virsh (один для перезагрузки виртуальной машины, один для ее остановки, один для запуска, третий для изменения ISO image и все, что вам нужно), а затем предоставьте своему другу sudo доступ к этим сценариям из его учетной записи.

Сценарии оболочки должны быть написаны с жестко заданными значениями (например, для имени виртуальной машины) и тщательной проверкой любых данных, предоставленных пользователем. например убедитесь, что если он предоставляет имя файла ISO-образа, то это на самом деле ISO-образ и что у него есть доступ для чтения к нему.

например если виртуальная машина называется «FriendVM», то сценарий перезагрузки может выглядеть так:

#! /bin/sh
# Script Name: Reboot-FriendVM.sh

virsh reboot FriendVM

Предоставление ему доступа sudo к этому сценарию позволит ему перезагрузить ТОЛЬКО эту конкретную виртуальную машину. Он бы запустил это так: sudo Reboot-FriendVM.sh

Подобные сценарии-оболочки вокруг virsh start и virsh destroy легко экстраполировать. Сценарий для изменения образа ISO будет немного сложнее и оставлен в качестве упражнения для читателя :)

Другой вариант этой идеи, если вы не хотите писать много маленьких скриптов, - написать один скрипт с ограниченным набором возможностей virsh, которые работают только на его виртуальной машине, и предоставить ему sudo доступ к этому. например назовите это рвирш.

Это простой, минималистичный способ, достаточный для выполнения работы без излишеств.

Если у вас есть больше времени, вы можете также изучить программное обеспечение для управления виртуализацией, такое как openstack, google's ganeti, opennebula и другие. Однако они делают НАМНОГО больше, чем просто добавляют контроль доступа пользователей, и их изучение потребует значительного количества времени и усилий.

К большому сожалению, для этого не существует стабильного, "чистого" и безопасного для обновлений способа - кроме использования веб-интерфейса или написания собственного.

Если вы уже используете libvirt и следуете предложению веб-панели, сделанному другими, вам может показаться интересным Karesansui: http://karesansui-project.info

Proxmox - AFAIK самое простое и функциональное решение для управления средой виртуализации.

Веб-менеджер Ganeti + Ganeti (в настоящее время изучающий его) также кажется очень красивым и мощным.