From: "Daniel P. Berrangé" <berrange@redhat.com>
To: "Philippe Mathieu-Daudé" <philmd@redhat.com>
Cc: qemu-devel@nongnu.org, "Markus Armbruster" <armbru@redhat.com>,
"Dr. David Alan Gilbert" <dgilbert@redhat.com>,
"Gerd Hoffmann" <kraxel@redhat.com>,
"Andreas Färber" <afaerber@suse.de>
Subject: Re: [Qemu-devel] [PATCH v5 10/11] authz: add QAuthZPAM object type for authorizing using PAM
Date: Fri, 19 Oct 2018 12:04:48 +0100 [thread overview]
Message-ID: <20181019110448.GM13722@redhat.com> (raw)
In-Reply-To: <d8312d1b-4c21-65f7-72eb-380a91f4459f@redhat.com>
On Fri, Oct 19, 2018 at 12:02:57PM +0200, Philippe Mathieu-Daudé wrote:
> On 09/10/2018 15:04, Daniel P. Berrangé wrote:
> > From: "Daniel P. Berrange" <berrange@redhat.com>
> >
> > Add an authorization backend that talks to PAM to check whether the user
> > identity is allowed. This only uses the PAM account validation facility,
> > which is essentially just a check to see if the provided username is permitted
> > access. It doesn't use the authentication or session parts of PAM, since
> > that's dealt with by the relevant part of QEMU (eg VNC server).
> >
> > Consider starting QEMU with a VNC server and telling it to use TLS with
> > x509 client certificates and configuring it to use an PAM to validate
> > the x509 distinguished name. In this example we're telling it to use PAM
> > for the QAuthZ impl with a service name of "qemu-vnc"
> >
> > $ qemu-system-x86_64 \
> > -object tls-creds-x509,id=tls0,dir=/home/berrange/security/qemutls,\
> > endpoint=server,verify-peer=yes \
> > -object authz-pam,id=authz0,service=qemu-vnc \
> > -vnc :1,tls-creds=tls0,tls-authz=authz0
> >
> > This requires an /etc/pam/qemu-vnc file to be created with the auth
> > rules. A very simple file based whitelist can be setup using
> >
> > $ cat > /etc/pam/qemu-vnc <<EOF
> > account requisite pam_listfile.so item=user sense=allow file=/etc/qemu/vnc.allow
> > EOF
> >
> > The /etc/qemu/vnc.allow file simply contains one username per line. Any
> > username not in the file is denied. The usernames in this example are
> > the x509 distinguished name from the client's x509 cert.
> >
> > $ cat > /etc/qemu/vnc.allow <<EOF
> > CN=laptop.berrange.com,O=Berrange Home,L=London,ST=London,C=GB
> > EOF
> >
> > More interesting would be to configure PAM to use an LDAP backend, so
> > that the QEMU authorization check data can be centralized instead of
> > requiring each compute host to have file maintained.
> >
> > The main limitation with this PAM module is that the rules apply to all
> > QEMU instances on the host. Setting up different rules per VM, would
> > require creating a separate PAM service name & config file for every
> > guest. An alternative approach for the future might be to not pass in
> > the plain username to PAM, but instead combine the VM name or UUID with
> > the username. This requires further consideration though.
> >
> > Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
> > ---
> > authz/Makefile.objs | 3 +
> > authz/pamacct.c | 149 ++++++++++++++++++++++++++++++++++++++++
> > authz/trace-events | 3 +
> > configure | 37 ++++++++++
> > include/authz/pamacct.h | 100 +++++++++++++++++++++++++++
> > qemu-options.hx | 35 ++++++++++
> > 6 files changed, 327 insertions(+)
> > create mode 100644 authz/pamacct.c
> > create mode 100644 include/authz/pamacct.h
[snip]
> Since this one links another lib, can we have a simple unit test?
I would like to have been able to test this, but AFAICT, it is not
possible to test without having the pam service config file added
into /etc/pam.d/, which we obviously can't do from a unit test
in QEMU :-(
> Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
> Tested-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Regards,
Daniel
--
|: https://berrange.com -o- https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org -o- https://fstop138.berrange.com :|
|: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|
next prev parent reply other threads:[~2018-10-19 11:05 UTC|newest]
Thread overview: 39+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-10-09 13:04 [Qemu-devel] [PATCH v5 00/11] Add a standard authorization framework Daniel P. Berrangé
2018-10-09 13:04 ` [Qemu-devel] [PATCH v5 01/11] util: add helper APIs for dealing with inotify in portable manner Daniel P. Berrangé
2018-10-09 13:04 ` [Qemu-devel] [PATCH v5 02/11] qom: don't require user creatable objects to be registered Daniel P. Berrangé
2018-10-10 15:11 ` Philippe Mathieu-Daudé
2018-10-18 18:04 ` Philippe Mathieu-Daudé
2018-10-09 13:04 ` [Qemu-devel] [PATCH v5 03/11] hw/usb: don't set IN_ISDIR for inotify watch in MTP driver Daniel P. Berrangé
2018-10-10 17:00 ` Philippe Mathieu-Daudé
2018-10-09 13:04 ` [Qemu-devel] [PATCH v5 04/11] hw/usb: fix const-ness for string params " Daniel P. Berrangé
2018-10-10 15:12 ` Philippe Mathieu-Daudé
2018-10-09 13:04 ` [Qemu-devel] [PATCH v5 05/11] hw/usb: switch MTP to use new inotify APIs Daniel P. Berrangé
2018-10-09 13:04 ` [Qemu-devel] [PATCH v5 06/11] authz: add QAuthZ object as an authorization base class Daniel P. Berrangé
2018-10-18 18:03 ` Philippe Mathieu-Daudé
2018-10-09 13:04 ` [Qemu-devel] [PATCH v5 07/11] authz: add QAuthZSimple object type for easy whitelist auth checks Daniel P. Berrangé
2018-10-18 17:53 ` Philippe Mathieu-Daudé
2018-10-19 12:31 ` Daniel P. Berrangé
2018-10-19 9:56 ` Philippe Mathieu-Daudé
2018-10-19 12:32 ` Daniel P. Berrangé
2018-10-09 13:04 ` [Qemu-devel] [PATCH v5 08/11] authz: add QAuthZList object type for an access control list Daniel P. Berrangé
2018-10-19 9:18 ` Philippe Mathieu-Daudé
2018-10-19 9:20 ` Daniel P. Berrangé
2018-10-19 9:33 ` Philippe Mathieu-Daudé
2018-10-19 13:13 ` Daniel P. Berrangé
2018-10-19 9:57 ` Philippe Mathieu-Daudé
2018-10-19 12:41 ` Daniel P. Berrangé
2018-10-19 12:55 ` Philippe Mathieu-Daudé
2018-10-09 13:04 ` [Qemu-devel] [PATCH v5 09/11] authz: add QAuthZListFile object type for a file " Daniel P. Berrangé
2018-10-19 9:41 ` Philippe Mathieu-Daudé
2018-10-19 12:53 ` Daniel P. Berrangé
2018-10-19 12:57 ` Philippe Mathieu-Daudé
2018-10-09 13:04 ` [Qemu-devel] [PATCH v5 10/11] authz: add QAuthZPAM object type for authorizing using PAM Daniel P. Berrangé
2018-10-19 10:02 ` Philippe Mathieu-Daudé
2018-10-19 11:04 ` Daniel P. Berrangé [this message]
2018-10-19 11:54 ` Philippe Mathieu-Daudé
2018-10-19 12:55 ` Daniel P. Berrangé
2018-10-19 12:58 ` Philippe Mathieu-Daudé
2018-10-09 13:04 ` [Qemu-devel] [PATCH v5 11/11] authz: delete existing ACL implementation Daniel P. Berrangé
2018-10-19 6:10 ` Philippe Mathieu-Daudé
2018-10-18 15:19 ` [Qemu-devel] [PATCH v5 00/11] Add a standard authorization framework Daniel P. Berrangé
2018-10-19 10:06 ` Philippe Mathieu-Daudé
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20181019110448.GM13722@redhat.com \
--to=berrange@redhat.com \
--cc=afaerber@suse.de \
--cc=armbru@redhat.com \
--cc=dgilbert@redhat.com \
--cc=kraxel@redhat.com \
--cc=philmd@redhat.com \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.