<br><font size=2 face="sans-serif">Yes, we're looking into adding similar
form of access control in libvirt.</font>
<br>
<br><font size=2 face="sans-serif">The approach we're looking at is to
inject AC as a module that intercepts calls from the libvirt core (libvirt.c)
to the drivers.</font>
<br><font size=2 face="sans-serif">Reason:</font>
<br><font size=2 face="sans-serif">* AC module can be loaded/unloaded on
the fly without need to recompile (can support several different AC-modules
and load the appropriate one during "connect").</font>
<br><font size=2 face="sans-serif">* Making use of (semi-stable) API between
libvirt core and drivers (also hypervisor/storage/network driver independent)</font>
<br><font size=2 face="sans-serif">   * Being in the call-path
also enables AC-module to alter return values (such as filtering lists
of VMs/NETs/Storages based on access rights)</font>
<br><font size=2 face="sans-serif">* Minimal code changes in existing libvirt
code (basically a one-liner in libvirt.c to inject AC)</font>
<br>
<br><font size=2 face="sans-serif">What still is an issue is how to correctly
get the identity of the user, especially over remote connection.</font>
<br><font size=2 face="sans-serif">I guess you have the same problem? (you're
only allowing local usage for now).</font>
<br><font size=2 face="sans-serif">The best way would be to link some user-auth
data with the virConnectPtr, but becomes a bit trickier when authentication
is done prior (like in remote case) to virConnectOpen.</font>
<br>
<br><font size=2 face="sans-serif">You implemented your own RBAC language
to describe the AC-policies.</font>
<br><font size=2 face="sans-serif">Have you looked at possibility to link
with already existing RBAC mechanisms for Linux (like SELinux or maybe
simpler AC-libs)?</font>
<br>
<br><font size=2 face="sans-serif"><br>
Freundliche Grüsse / Best regards</font>
<p>
<p>
<table width=100%>
<tr valign=top>
<td width=66% bgcolor=#4477bb><font size=3 color=white face="sans-serif"><b>Konrad
Eriksson</b></font><font size=2 color=white face="sans-serif"><br>
Trusted Computing / Security & Assurance<br>
<br>
Email: </font><a href=mailto:kon@zurich.ibm.com><font size=2 color=blue face="sans-serif"><u>kon@zurich.ibm.com</u></font></a><font size=2 color=white face="sans-serif"><br>
Phone: +41 (0)44 724 84 28 </font>
<td width=33% bgcolor=#4477bb><img src=cid:_1_07DF11DC07DF0DDC00542780C125754A><font size=2 color=white face="sans-serif"><b><br>
IBM Zurich Research Laboratory</b></font><font size=2 color=blue face="sans-serif"><u><br>
</u></font><a href=http://www.zurich.ibm.com/><font size=2 color=blue face="sans-serif"><u>www.zurich.ibm.com</u></font></a><font size=2 color=white face="sans-serif"><br>
Saeumerstrasse 4<br>
8803 Rueschlikon<br>
Switzerland </font></table>
<br>
<br>
<br>
<br>
<table width=100%>
<tr valign=top>
<td><font size=1 color=#5f5f5f face="sans-serif">From:</font>
<td><font size=1 face="sans-serif">Syunsuke HAYASHI <syunsuke@jp.fujitsu.com></font>
<tr valign=top>
<td><font size=1 color=#5f5f5f face="sans-serif">To:</font>
<td><font size=1 face="sans-serif">libvir-list@redhat.com</font>
<tr>
<td valign=top><font size=1 color=#5f5f5f face="sans-serif">Cc:</font>
<td><font size=1 face="sans-serif">Konrad Eriksson1 <KON@zurich.ibm.com>,
berrange@redhat.com, Atsushi SAKAI <sakaia@jp.fujitsu.com>, INAKOSHI
Hiroya <inakoshi.hiroya@jp.fujitsu.com></font>
<tr valign=top>
<td><font size=1 color=#5f5f5f face="sans-serif">Date:</font>
<td><font size=1 face="sans-serif">01/26/2009 11:25 AM</font>
<tr valign=top>
<td><font size=1 color=#5f5f5f face="sans-serif">Subject:</font>
<td><font size=1 face="sans-serif">[Patch][RFC] Fine grained access control
in libvirt by rbac (0/3)</font></table>
<br>
<hr noshade>
<br>
<br>
<br><tt><font size=2>The series of patches introduces a fine grained access
control to<br>
libvirt.  They enable libvirt to enforce users what operations to
invoke<br>
in role-based way.  Our team found that Konrad and Daniel have similar<br>
interest to ours.  Comments and suggestions are very welcome.<br>
<br>
Patches:<br>
 - Embedding hooks in libvirt (1/3)<br>
 - Access control library (2/3)<br>
 - Example policy files (3/3)<br>
<br>
<br>
<br>
<br>
<br>
</font></tt>
<br>
<br>