qemu-e2k/ui
Daniel P. Berrange 55cf09a02b vnc: allow specifying a custom authorization object name
The VNC server has historically had support for ACLs to check both the
SASL username and the TLS x509 distinguished name. The VNC server was
responsible for creating the initial ACL, and the client app was then
responsible for populating it with rules using the HMP 'acl_add' command.

This is not satisfactory for a variety of reasons. There is no way to
populate the ACLs from the command line, users are forced to use the
HMP. With multiple network services all supporting TLS and ACLs now, it
is desirable to be able to define a single ACL that is referenced by all
services.

To address these limitations, two new options are added to the VNC
server CLI. The 'tls-authz' option takes the ID of a QAuthZ object to
use for checking TLS x509 distinguished names, and the 'sasl-authz'
option takes the ID of another object to use for checking SASL usernames.

In this example, we setup two authorization rules. The first allows any
client with a certificate issued by the 'RedHat' organization in the
'London' locality. The second ACL allows clients with either the
'joe@REDHAT.COM' or  'fred@REDHAT.COM' kerberos usernames. Both checks
must pass for the user to be allowed.

    $QEMU -object tls-creds-x509,id=tls0,dir=/home/berrange/qemutls,\
                  endpoint=server,verify-peer=yes \
          -object authz-simple,id=authz0,policy=deny,\
                  rules.0.match=O=RedHat,,L=London,rules.0.policy=allow \
          -object authz-simple,id=authz1,policy=deny,\
                  rules.0.match=fred@REDHAT.COM,rules.0.policy=allow \
                  rules.0.match=joe@REDHAT.COM,rules.0.policy=allow \
          -vnc 0.0.0.0:1,tls-creds=tls0,tls-authz=authz0,
	       sasl,sasl-authz=authz1 \
          ...other QEMU args...

Reviewed-by: Juan Quintela <quintela@redhat.com>
Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
Message-id: 20190227145755.26556-2-berrange@redhat.com
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
2019-03-11 08:39:02 +01:00
..
icons
keycodemapdb@6b3d716e2b
shader
cocoa.m ui/cocoa: Perform UI operations only on the main thread 2019-03-04 16:47:31 +00:00
console-gl.c
console.c
curses_keys.h curses: support wide input 2019-03-11 08:39:02 +01:00
curses.c curses: support wide input 2019-03-11 08:39:02 +01:00
cursor_hidden.xpm
cursor_left_ptr.xpm
cursor.c
egl-context.c
egl-headless.c
egl-helpers.c
gtk-egl.c
gtk-gl-area.c
gtk.c ui/gtk: Fix the license information 2019-02-21 11:45:19 +01:00
input-keymap.c
input-legacy.c
input-linux.c
input.c
kbd-state.c kbd-state: don't block auto-repeat events 2019-02-21 10:13:19 +01:00
keymaps.c
keymaps.h
Makefile.objs display: add -display spice-app launching a Spice client 2019-02-22 07:42:59 +01:00
qemu-pixman.c
qemu-x509.h
qemu.desktop
sdl2-2d.c
sdl2-gl.c
sdl2-input.c sdl2: drop qemu_input_event_send_key_qcode call 2019-02-21 10:43:10 +01:00
sdl2.c
shader.c
spice-app.c display: add -display spice-app launching a Spice client 2019-02-22 07:42:59 +01:00
spice-core.c spice: use a default name for the server 2019-02-21 14:09:17 +01:00
spice-display.c spice: set device address and device display ID in QXL interface 2019-02-21 10:15:26 +01:00
spice-input.c
trace-events
vgafont.h
vnc_keysym.h
vnc-auth-sasl.c authz: delete existing ACL implementation 2019-02-26 15:32:19 +00:00
vnc-auth-sasl.h authz: delete existing ACL implementation 2019-02-26 15:32:19 +00:00
vnc-auth-vencrypt.c authz: delete existing ACL implementation 2019-02-26 15:32:19 +00:00
vnc-auth-vencrypt.h
vnc-enc-hextile-template.h
vnc-enc-hextile.c
vnc-enc-tight.c
vnc-enc-tight.h
vnc-enc-zlib.c
vnc-enc-zrle.c
vnc-enc-zrle.h
vnc-enc-zrle.inc.c
vnc-enc-zywrle-template.c
vnc-enc-zywrle.h
vnc-jobs.c
vnc-jobs.h
vnc-palette.c
vnc-palette.h
vnc-stubs.c
vnc-ws.c authz: delete existing ACL implementation 2019-02-26 15:32:19 +00:00
vnc-ws.h
vnc.c vnc: allow specifying a custom authorization object name 2019-03-11 08:39:02 +01:00
vnc.h authz: delete existing ACL implementation 2019-02-26 15:32:19 +00:00
x_keymap.c
x_keymap.h