On 2019-10-21 20:31, Paul Moore wrote:
On Mon, Oct 21, 2019 at 7:58 PM Richard Guy Briggs
<rgb(a)redhat.com> wrote:
> On 2019-10-21 17:43, Paul Moore wrote:
> > On Mon, Oct 21, 2019 at 5:38 PM Richard Guy Briggs <rgb(a)redhat.com>
wrote:
> > > On 2019-10-21 15:53, Paul Moore wrote:
> > > > On Fri, Oct 18, 2019 at 9:39 PM Richard Guy Briggs
<rgb(a)redhat.com> wrote:
> > > > > On 2019-09-18 21:22, Richard Guy Briggs wrote:
> > > > > > Provide a mechanism similar to CAP_AUDIT_CONTROL to
explicitly give a
> > > > > > process in a non-init user namespace the capability to set
audit
> > > > > > container identifiers.
> > > > > >
> > > > > > Use audit netlink message types AUDIT_GET_CAPCONTID 1027
and
> > > > > > AUDIT_SET_CAPCONTID 1028. The message format includes the
data
> > > > > > structure:
> > > > > > struct audit_capcontid_status {
> > > > > > pid_t pid;
> > > > > > u32 enable;
> > > > > > };
> > > > >
> > > > > Paul, can I get a review of the general idea here to see if
you're ok
> > > > > with this way of effectively extending CAP_AUDIT_CONTROL for the
sake of
> > > > > setting contid from beyond the init user namespace where
capable() can't
> > > > > reach and ns_capable() is meaningless for these purposes?
> > > >
> > > > I think my previous comment about having both the procfs and netlink
> > > > interfaces apply here. I don't see why we need two different
APIs at
> > > > the start; explain to me why procfs isn't sufficient. If the
argument
> > > > is simply the desire to avoid mounting procfs in the container, how
> > > > many container orchestrators can function today without a valid
/proc?
> > >
> > > Ok, sorry, I meant to address that question from a previous patch
> > > comment at the same time.
> > >
> > > It was raised by Eric Biederman that the proc filesystem interface for
> > > audit had its limitations and he had suggested an audit netlink
> > > interface made more sense.
> >
> > I'm sure you've got it handy, so I'm going to be lazy and ask:
archive
> > pointer to Eric's comments? Just a heads-up, I'm really *not* a fan
> > of using the netlink interface for this, so unless Eric presents a
> > super compelling reason for why we shouldn't use procfs I'm inclined
> > to stick with /proc.
>
> It was actually a video call with Eric and Steve where that was
> recommended, so I can't provide you with any first-hand communication
> about it. I'll get more details...
Yeah, that sort of information really needs to be on the list.
> So, with that out of the way, could you please comment on the general
> idea of what was intended to be the central idea of this mechanism to be
> able to nest containers beyond the initial user namespace (knowing that
> a /proc interface is available and the audit netlink interface isn't
> necessary for it to work and the latter can be easily removed)?
I'm not entirely clear what you are asking about, are you asking why I
care about nesting container orchestrators? Simply put, it is not
uncommon for the LXC/LXD folks to see nested container orchestrators,
so I felt it was important to support that use case. When we
originally started this effort we probably should have done a better
job reaching out to the LXC/LXD folks, we may have caught this
earlier. Regardless, we caught it, and it looks like we are on our
way to supporting it (that's good).
I'm not asking why you care about container orchestrators.
Are you asking why I prefer the procfs approach to setting/getting
the
audit container ID? For one, it makes it easier for a LSM to enforce
the audit container ID operations independent of the other audit
control APIs. It also provides a simpler interface for container
orchestrators. Both seem like desirable traits as far as I'm
concerned.
I'd like to leave the proc/netlink decision/debate out of this
discussion, though it does need to happen and I was hoping that would
happen on the loginuid/sessionid proc/netlink patch thread.
I'd like your perspective on how the capcontid feature was implemented
(aside from the proc/netlink api issue which was intended to be
consistent across loginuid/sessionid/contid/capcontid). Do you see this
feature as potentially solving the nested container issue in child user
namespaces?
> > > The intent was to switch to the audit netlink
interface for contid,
> > > capcontid and to add the audit netlink interface for loginuid and
> > > sessionid while deprecating the proc interface for loginuid and
> > > sessionid. This was alluded to in the cover letter, but not very clear,
> > > I'm afraid. I have patches to remove the contid and
loginuid/sessionid
> > > interfaces in another tree which is why I had forgotten to outline that
> > > plan more explicitly in the cover letter.
paul moore
- RGB
--
Richard Guy Briggs <rgb(a)redhat.com>
Sr. S/W Engineer, Kernel Security, Base Operating Systems
Remote, Ottawa, Red Hat Canada
IRC: rgb, SunRaycer
Voice: +1.647.777.2635, Internal: (81) 32635