Skip to content
  • Daniel P. Berrangé's avatar
    qemu-nbd: add support for authorization of TLS clients · b25e12da
    Daniel P. Berrangé authored and Eric Blake's avatar Eric Blake committed
    
    
    Currently any client which can complete the TLS handshake is able to use
    the NBD server. The server admin can turn on the 'verify-peer' option
    for the x509 creds to require the client to provide a x509 certificate.
    This means the client will have to acquire a certificate from the CA
    before they are permitted to use the NBD server. This is still a fairly
    low bar to cross.
    
    This adds a '--tls-authz OBJECT-ID' option to the qemu-nbd command which
    takes the ID of a previously added 'QAuthZ' object instance. This will
    be used to validate the client's x509 distinguished name. Clients
    failing the authorization check will not be permitted to use the NBD
    server.
    
    For example to setup authorization that only allows connection from a client
    whose x509 certificate distinguished name is
    
       CN=laptop.example.com,O=Example Org,L=London,ST=London,C=GB
    
    escape the commas in the name and use:
    
      qemu-nbd --object tls-creds-x509,id=tls0,dir=/home/berrange/qemutls,\
                        endpoint=server,verify-peer=yes \
               --object 'authz-simple,id=auth0,identity=CN=laptop.example.com,,\
                         O=Example Org,,L=London,,ST=London,,C=GB' \
               --tls-creds tls0 \
               --tls-authz authz0 \
    	   ....other qemu-nbd args...
    
    NB: a real shell command line would not have leading whitespace after
    the line continuation, it is just included here for clarity.
    
    Reviewed-by: default avatarJuan Quintela <quintela@redhat.com>
    Signed-off-by: default avatarDaniel P. Berrange <berrange@redhat.com>
    Message-Id: <20190227162035.18543-2-berrange@redhat.com>
    Reviewed-by: Eric Blake's avatarEric Blake <eblake@redhat.com>
    [eblake: split long line in --help text, tweak 233 to show that whitespace
    after ,, in identity= portion is actually okay]
    Signed-off-by: Eric Blake's avatarEric Blake <eblake@redhat.com>
    b25e12da