Atribua a VM KVM a um usuário (autorização do usuário KVM)

3

Eu gostaria de dar ao meu amigo uma VM no meu servidor dedicado, e quero que ele possa reiniciar a VM ou alterar a iso - então, basicamente, eu gostaria dos mesmos recursos que um provedor de hospedagem de VM, por exemplo, Linode Eu acho que a solução mais fácil seria dar-lhe uma conta de shell, mas como restringir o shell? É possível restringir a libvirt para meu caso de uso?

    
por user1320304 23.07.2012 / 20:12

4 respostas

1

O libvirt não tem nenhum controle de acesso do usuário sobre VMs individuais, então sua melhor opção é provavelmente escrever uma série de scripts wrapper em torno de virsh (um para reiniciar a VM, um para pará-lo, um para iniciá-lo, um para mude a imagem ISO, e o que mais você precisar), e então dê ao seu amigo sudo acesso a esses scripts a partir de sua conta de login.

Os scripts do wrapper devem ser escritos com valores codificados (por exemplo, para o nome da VM) e uma verificação cuidadosa de quaisquer dados fornecidos pelo usuário. por exemplo. Certifique-se de que, se ele fornecer um nome de arquivo de imagem ISO, ele seja, na verdade, uma imagem ISO e que tenha acesso de leitura a ele.

por exemplo. se a VM for chamada de "FriendVM", um script de reinicialização pode ter esta aparência:

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

virsh reboot FriendVM

Dar a ele acesso sudo a esse script permitirá que ele reinicie APENAS aquela VM em particular. Ele executaria da seguinte forma: sudo Reboot-FriendVM.sh

Scripts de wrapper semelhantes em torno de 'virsh start', 'virsh destroy' são fáceis de extrapolar a partir disso. Um script para alterar a imagem ISO seria um pouco mais complicado e é deixado como um exercício para o leitor:)

Outra variação desta idéia, se você não quer escrever muitos pequenos scripts, é escrever um único script com um subconjunto restrito de recursos do virsh que funcionam apenas em sua VM e lhe dão acesso ao sudo. por exemplo. chame isso de rvirsh.

Essa é a maneira simples e minimalista, apenas o suficiente para fazer o trabalho sem frescuras.

Se você tiver mais tempo para gastar, também poderá procurar softwares de gerenciamento de virtualização como o openstack, o google's ganeti, o opennebula e outros. Eles fazem muito mais do que apenas adicionar o controle de acesso do usuário, e aprendê-los exigirá uma quantidade significativa de tempo e esforço.

    
por 24.07.2012 / 01:29
1

Eu não sei de nenhuma maneira de fazer isso diretamente, embora você possa instalar um painel de controle como Proxmox e dar-lhe acesso através disso.

    
por 23.07.2012 / 20:14
0

Infelizmente, não há nenhuma maneira que seja estável, "limpa" e atualizada-segura para fazer isso - além de usar uma interface web ou escrever a sua própria.

    
por 23.07.2012 / 20:25
0

Se você já estiver usando o libvirt, e seguindo a sugestão do Painel Web feita por outros, você pode achar o Karesansui interessante: link

O Proxmox é o AFAIK, a solução de gerenciamento de ambientes de virtualização mais fácil e eficiente.

O Ganeti + Ganeti Web Manager (atualmente estudando-o) também parece muito bom e poderoso.

    
por 25.07.2012 / 10:56