web-dev-qa-db-ja.com

libvirtd:kvm:ユーザー権限Centos 6

仮想マシンの使用方法と、KVMベースのハイパーバイザーでVirshを介して実行できること)をユーザーアクセス制御する必要があります。

これまでのところ、 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を実行できないなど、限られたタスクしか実行できないようなユーザー権限が必要です。

2
chandank

私自身の質問に答えます。最も簡単で単純な解決策はsudoersです。 sudoersの正規表現で多くのことができます。 sudoerルールを1つ追加しただけです。

ある種の正規表現を使用して指定できるように、すべてのゲストマシン名を保持します。私の場合、vmname-で始まる、root以外のユーザーがコントローラーにしたいすべてのゲストマシンを保持しました。

以下のルールは、root以外のユーザーがコンソールを起動して仮想マシンを取得することを許可し、それを破棄することを許可しません。

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

これが同様の解決策を探している人に役立つことを願っています。

0
chandank

Libvirtwikiを使用してCentOS6.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からの非常にシームレスな使用も可能になります。

1
rockpenguin

適切なRBACを実現するには、libvirtよりも高度なVM管理プラットフォームが必要です。libvirtはVMライフサイクルを制御するためのものであり、他にはほとんどありません。良い例としてoVirt.org

0
dyasny