netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Paul Moore <paul@paul-moore.com>
To: "Serge E. Hallyn" <serge@hallyn.com>
Cc: Tycho Andersen <tycho@tycho.ws>,
	Richard Guy Briggs <rgb@redhat.com>,
	containers@lists.linux-foundation.org, linux-api@vger.kernel.org,
	Linux-Audit Mailing List <linux-audit@redhat.com>,
	linux-fsdevel@vger.kernel.org,
	LKML <linux-kernel@vger.kernel.org>,
	netdev@vger.kernel.org, netfilter-devel@vger.kernel.org,
	sgrubb@redhat.com, omosnace@redhat.com, dhowells@redhat.com,
	simo@redhat.com, Eric Paris <eparis@parisplace.org>,
	ebiederm@xmission.com, nhorman@tuxdriver.com
Subject: Re: [PATCH ghak90 V6 02/10] audit: add container id
Date: Thu, 30 May 2019 15:29:32 -0400	[thread overview]
Message-ID: <CAHC9VhThLiQzGYRUWmSuVfOC6QCDmA75BDB7Eg7V8HX4x7ymQg@mail.gmail.com> (raw)
In-Reply-To: <20190530170913.GA16722@mail.hallyn.com>

On Thu, May 30, 2019 at 1:09 PM Serge E. Hallyn <serge@hallyn.com> wrote:
> On Wed, May 29, 2019 at 06:39:48PM -0400, Paul Moore wrote:
> > On Wed, May 29, 2019 at 6:28 PM Tycho Andersen <tycho@tycho.ws> wrote:
> > > On Wed, May 29, 2019 at 12:03:58PM -0400, Paul Moore wrote:
> > > > On Wed, May 29, 2019 at 11:34 AM Tycho Andersen <tycho@tycho.ws> wrote:
> > > > > On Wed, May 29, 2019 at 11:29:05AM -0400, Paul Moore wrote:
> > > > > > On Wed, May 29, 2019 at 10:57 AM Tycho Andersen <tycho@tycho.ws> wrote:
> > > > > > > On Mon, Apr 08, 2019 at 11:39:09PM -0400, Richard Guy Briggs wrote:

...

> > > > > > The current thinking
> > > > > > is that you would only change the audit container ID from one
> > > > > > set/inherited value to another if you were nesting containers, in
> > > > > > which case the nested container orchestrator would need to be granted
> > > > > > CAP_AUDIT_CONTROL (which everyone to date seems to agree is a workable
> > > > > > compromise).
> > >
> > > won't work in user namespaced containers, because they will never be
> > > capable(CAP_AUDIT_CONTROL); so I don't think this will work for
> > > nesting as is. But maybe nobody cares :)
> >
> > That's fun :)
> >
> > To be honest, I've never been a big fan of supporting nested
> > containers from an audit perspective, so I'm not really too upset
> > about this.  The k8s/cri-o folks seem okay with this, or at least I
> > haven't heard any objections; lxc folks, what do you have to say?
>
> I actually thought the answer to this (when last I looked, "some time" ago)
> was that userspace should track an audit message saying "task X in
> container Y is changing its auditid to Z", and then decide to also track Z.
> This should be doable, but a lot of extra work in userspace.
>
> Per-userns containerids would also work.  So task X1 is in containerid
> 1 on the host and creates a new task Y in new userns;  it continues to
> be reported in init_user_ns as containerid 1 forever;  but in its own
> userns it can request to be known as some other containerid.  Audit
> socks would be per-userns, allowing root in a container to watch for
> audit events in its own (and descendent) namespaces.
>
> But again I'm sure we've gone over all this in the last few years.
>
> I suppose we can look at this as a "first step", and talk about
> making it user-ns-nestable later.  But agreed it's not useful in a
> lot of situations as is.

[REMINDER: It is an "*audit* container ID" and not a general
"container ID" ;)  Smiley aside, I'm not kidding about that part.]

I'm not interested in supporting/merging something that isn't useful;
if this doesn't work for your use case then we need to figure out what
would work.  It sounds like nested containers are much more common in
the lxc world, can you elaborate a bit more on this?

As far as the possible solutions you mention above, I'm not sure I
like the per-userns audit container IDs, I'd much rather just emit the
necessary tracking information via the audit record stream and let the
log analysis tools figure it out.  However, the bigger question is how
to limit (re)setting the audit container ID when you are in a non-init
userns.  For reasons already mentioned, using capable() is a non
starter for everything but the initial userns, and using ns_capable()
is equally poor as it essentially allows any userns the ability to
munge it's audit container ID (obviously not good).  It appears we
need a different method for controlling access to the audit container
ID.

Punting this to a LSM hook is an obvious thing to do, and something we
might want to do anyway, but currently audit doesn't rely on the LSM
for proper/safe operation and I'm not sure I want to change that now.

The next obvious thing is to create some sort of access control knob
in audit itself.  Perhaps an auditctl operation that would allow the
administrator to specify which containers, via their corresponding
audit container IDs, are allowed to change their audit container ID?
The permission granting would need to be done in the init userns, but
it would allow containers with a non-init userns the ability to change
their audit container ID.  We would probably still want a
ns_capable(CAP_AUDIT_CONTROL) restriction in this case.

Does anyone else have any other ideas?

-- 
paul moore
www.paul-moore.com

  reply	other threads:[~2019-05-30 19:29 UTC|newest]

Thread overview: 87+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-04-09  3:39 [PATCH ghak90 V6 00/10] audit: implement container identifier Richard Guy Briggs
2019-04-09  3:39 ` [PATCH ghak90 V6 01/10] audit: collect audit task parameters Richard Guy Briggs
2019-04-09  3:39 ` [PATCH ghak90 V6 02/10] audit: add container id Richard Guy Briggs
2019-05-29 14:57   ` Tycho Andersen
2019-05-29 15:29     ` Paul Moore
2019-05-29 15:34       ` Tycho Andersen
2019-05-29 16:03         ` Paul Moore
2019-05-29 22:28           ` Tycho Andersen
2019-05-29 22:39             ` Paul Moore
2019-05-30 17:09               ` Serge E. Hallyn
2019-05-30 19:29                 ` Paul Moore [this message]
2019-05-30 21:29                   ` Tycho Andersen
2019-05-30 23:26                     ` Paul Moore
2019-05-31  0:20                       ` Richard Guy Briggs
2019-05-31 12:44                         ` Paul Moore
2019-06-03 20:24                           ` Steve Grubb
2019-06-18 22:12                             ` Paul Moore
2019-06-18 22:46                               ` Richard Guy Briggs
2019-07-08 18:12                       ` Richard Guy Briggs
2019-07-08 20:43                         ` Paul Moore
2019-07-15 21:09                         ` Paul Moore
2019-07-16 15:37                           ` Richard Guy Briggs
2019-07-16 16:08                             ` Paul Moore
2019-07-16 16:26                               ` Richard Guy Briggs
2019-07-08 18:05                   ` Richard Guy Briggs
2019-07-15 21:04                     ` Paul Moore
2019-07-16 22:03                       ` Richard Guy Briggs
2019-07-16 23:30                         ` Paul Moore
2019-07-18  0:51                           ` Richard Guy Briggs
2019-07-18 21:52                             ` Paul Moore
2019-07-19 16:00                               ` Eric W. Biederman
2019-07-20  2:19                                 ` James Bottomley
2019-07-19 15:32                             ` Eric W. Biederman
2019-07-08 17:51       ` Richard Guy Briggs
2019-07-15 20:38         ` Paul Moore
2019-07-16 19:38           ` Richard Guy Briggs
2019-07-16 21:39             ` Paul Moore
2019-07-19 16:07   ` Eric W. Biederman
2019-04-09  3:39 ` [PATCH ghak90 V6 03/10] audit: read container ID of a process Richard Guy Briggs
2019-07-19 16:03   ` Eric W. Biederman
2019-07-19 17:05     ` Richard Guy Briggs
2019-04-09  3:39 ` [PATCH ghak90 V6 04/10] audit: log container info of syscalls Richard Guy Briggs
2019-05-29 22:15   ` Paul Moore
2019-05-30 13:08     ` Ondrej Mosnacek
2019-05-30 14:08       ` Richard Guy Briggs
2019-05-30 14:34         ` Paul Moore
2019-04-09  3:39 ` [PATCH ghak90 V6 05/10] audit: add contid support for signalling the audit daemon Richard Guy Briggs
2019-04-09 12:57   ` Ondrej Mosnacek
2019-04-09 13:40     ` Paul Moore
2019-04-09 13:48       ` Neil Horman
2019-04-09 14:00         ` Ondrej Mosnacek
2019-04-09 14:07         ` Paul Moore
2019-04-09 13:53       ` Richard Guy Briggs
2019-04-09 14:08         ` Paul Moore
2019-04-09 13:46     ` Neil Horman
2019-04-09  3:39 ` [PATCH ghak90 V6 06/10] audit: add support for non-syscall auxiliary records Richard Guy Briggs
2019-04-09  3:39 ` [PATCH ghak90 V6 07/10] audit: add containerid support for user records Richard Guy Briggs
2019-04-09  3:39 ` [PATCH ghak90 V6 08/10] audit: add containerid filtering Richard Guy Briggs
2019-05-29 22:16   ` Paul Moore
2019-05-30 14:19     ` Richard Guy Briggs
2019-05-30 14:34       ` Paul Moore
2019-05-30 20:37         ` Richard Guy Briggs
2019-05-30 20:45           ` Paul Moore
2019-05-30 21:10             ` Richard Guy Briggs
2019-04-09  3:39 ` [PATCH ghak90 V6 09/10] audit: add support for containerid to network namespaces Richard Guy Briggs
2019-05-29 22:17   ` Paul Moore
2019-05-30 14:15     ` Richard Guy Briggs
2019-05-30 14:32       ` Paul Moore
2019-04-09  3:39 ` [PATCH ghak90 V6 10/10] audit: NETFILTER_PKT: record each container ID associated with a netNS Richard Guy Briggs
2019-04-11 11:31 ` [PATCH ghak90 V6 00/10] audit: implement container identifier Richard Guy Briggs
2019-04-22 11:38 ` Neil Horman
2019-04-22 13:49   ` Paul Moore
2019-04-23 10:28     ` Neil Horman
2019-05-28 21:53     ` Daniel Walsh
2019-05-28 22:25       ` Richard Guy Briggs
2019-05-28 22:26       ` Paul Moore
2019-05-28 23:00         ` Steve Grubb
2019-05-29  0:43           ` Richard Guy Briggs
2019-05-29 12:02             ` Daniel Walsh
2019-05-29 13:17               ` Paul Moore
2019-05-29 14:07                 ` Daniel Walsh
2019-05-29 14:33                   ` Paul Moore
2019-05-29 13:14             ` Paul Moore
2019-05-29 22:26     ` Paul Moore
2019-05-30 13:08       ` Steve Grubb
2019-05-30 13:35         ` Paul Moore
2019-05-30 14:08           ` Richard Guy Briggs

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=CAHC9VhThLiQzGYRUWmSuVfOC6QCDmA75BDB7Eg7V8HX4x7ymQg@mail.gmail.com \
    --to=paul@paul-moore.com \
    --cc=containers@lists.linux-foundation.org \
    --cc=dhowells@redhat.com \
    --cc=ebiederm@xmission.com \
    --cc=eparis@parisplace.org \
    --cc=linux-api@vger.kernel.org \
    --cc=linux-audit@redhat.com \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=netdev@vger.kernel.org \
    --cc=netfilter-devel@vger.kernel.org \
    --cc=nhorman@tuxdriver.com \
    --cc=omosnace@redhat.com \
    --cc=rgb@redhat.com \
    --cc=serge@hallyn.com \
    --cc=sgrubb@redhat.com \
    --cc=simo@redhat.com \
    --cc=tycho@tycho.ws \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).