On Wed, Mar 18, 2020 at 5:27 PM Richard Guy Briggs <rgb(a)redhat.com> wrote:
On 2020-03-18 16:56, Paul Moore wrote:
> On Fri, Mar 13, 2020 at 2:59 PM Richard Guy Briggs <rgb(a)redhat.com> wrote:
> > On 2020-03-13 12:29, Paul Moore wrote:
> > > On Thu, Mar 12, 2020 at 3:30 PM Richard Guy Briggs <rgb(a)redhat.com>
wrote:
> > > > On 2020-02-13 16:44, Paul Moore wrote:
> > > > > This is a bit of a thread-hijack, and for that I apologize, but
> > > > > another thought crossed my mind while thinking about this issue
> > > > > further ... Once we support multiple auditd instances, including
the
> > > > > necessary record routing and duplication/multiple-sends (the
host
> > > > > always sees *everything*), we will likely need to find a way to
"trim"
> > > > > the audit container ID (ACID) lists we send in the records.
The
> > > > > auditd instance running on the host/initns will always see
everything,
> > > > > so it will want the full container ACID list; however an auditd
> > > > > instance running inside a container really should only see the
ACIDs
> > > > > of any child containers.
> > > >
> > > > Agreed. This should be easy to check and limit, preventing an
auditd
> > > > from seeing any contid that is a parent of its own contid.
> > > >
> > > > > For example, imagine a system where the host has containers 1
and 2,
> > > > > each running an auditd instance. Inside container 1 there are
> > > > > containers A and B. Inside container 2 there are containers Y
and Z.
> > > > > If an audit event is generated in container Z, I would expect
the
> > > > > host's auditd to see a ACID list of "1,Z" but
container 1's auditd
> > > > > should only see an ACID list of "Z". The auditd
running in container
> > > > > 2 should not see the record at all (that will be relatively
> > > > > straightforward). Does that make sense? Do we have the record
> > > > > formats properly designed to handle this without too much
problem (I'm
> > > > > not entirely sure we do)?
> > > >
> > > > I completely agree and I believe we have record formats that are able
to
> > > > handle this already.
> > >
> > > I'm not convinced we do. What about the cases where we have a field
> > > with a list of audit container IDs? How do we handle that?
> >
> > I don't understand the problem. (I think you crossed your 1/2 vs
> > A/B/Y/Z in your example.) ...
>
> It looks like I did, sorry about that.
>
> > ... Clarifying the example above, if as you
> > suggest an event happens in container Z, the hosts's auditd would report
> > Z,^2
> > and the auditd in container 2 would report
> > Z,^2
> > but if there were another auditd running in container Z it would report
> > Z
> > while the auditd in container 1 or A/B would see nothing.
>
> Yes. My concern is how do we handle this to minimize duplicating and
> rewriting the records? It isn't so much about the format, although
> the format is a side effect.
Are you talking about caching, or about divulging more information than
necessary or even information leaks? Or even noticing that records that
need to be generated to two audit daemons share the same contid field
values and should be generated at the same time or information shared
between them? I'd see any of these as optimizations that don't affect
the api.
Imagine a record is generated in a container which has more than one
auditd in it's ancestry that should receive this record, how do we
handle that without completely killing performance? That's my
concern. If you've already thought up a plan for this - excellent,
please share :)
--
paul moore
www.paul-moore.com