Skip to content
  • Corey Bryant's avatar
    Add access control support to qemu bridge helper · bdef79a2
    Corey Bryant authored
    
    
    We go to great lengths to restrict ourselves to just cap_net_admin as an OS
    enforced security mechanism.  However, we further restrict what we allow users
    to do to simply adding a tap device to a bridge interface by virtue of the fact
    that this is the only functionality we expose.
    
    This is not good enough though.  An administrator is likely to want to restrict
    the bridges that an unprivileged user can access, in particular, to restrict
    an unprivileged user from putting a guest on what should be isolated networks.
    
    This patch implements an ACL mechanism that is enforced by qemu-bridge-helper.
    The ACLs are fairly simple whitelist/blacklist mechanisms with a wildcard of
    'all'.  All users are blacklisted by default, and deny takes precedence over
    allow.
    
    An interesting feature of this ACL mechanism is that you can include external
    ACL files.  The main reason to support this is so that you can set different
    file system permissions on those external ACL files.  This allows an
    administrator to implement rather sophisticated ACL policies based on
    user/group policies via the file system.
    
    As an example:
    
    /etc/qemu/bridge.conf root:qemu 0640
    
     allow br0
     include /etc/qemu/alice.conf
     include /etc/qemu/bob.conf
     include /etc/qemu/charlie.conf
    
    /etc/qemu/alice.conf root:alice 0640
     allow br1
    
    /etc/qemu/bob.conf root:bob 0640
     allow br2
    
    /etc/qemu/charlie.conf root:charlie 0640
     deny all
    
    This ACL pattern allows any user in the qemu group to get a tap device
    connected to br0 (which is bridged to the physical network).
    
    Users in the alice group can additionally get a tap device connected to br1.
    This allows br1 to act as a private bridge for the alice group.
    
    Users in the bob group can additionally get a tap device connected to br2.
    This allows br2 to act as a private bridge for the bob group.
    
    Users in the charlie group cannot get a tap device connected to any bridge.
    
    Under no circumstance can the bob group get access to br1 or can the alice
    group get access to br2.  And under no cicumstance can the charlie group
    get access to any bridge.
    
    Signed-off-by: default avatarAnthony Liguori <aliguori@us.ibm.com>
    Signed-off-by: default avatarRicha Marwaha <rmarwah@linux.vnet.ibm.com>
    Signed-off-by: default avatarCorey Bryant <coreyb@linux.vnet.ibm.com>
    Signed-off-by: default avatarAnthony Liguori <aliguori@us.ibm.com>
    bdef79a2