On Wed, Nov 09, 2022 at 06:14:58PM +0000, Daniel P. Berrangé wrote:
On Fri, Nov 04, 2022 at 02:56:51PM -0400, Andrea Bolognani wrote:
> IIUC a specific profile (cri-containerd.apparmor.d) is used for
> unprivileged containers such as virt-launcher, but a privileged one
> such as virt-handler falls under the same profile as the host.
>
> This makes some amount of sense to me: unprivileged containers are
> already limited in what they can do by the usual restrictions on user
> processes. Privileged containers, on the other hand, are effectively
> root processes, so it's advisable to be significantly more cautious
> with them.
I still consider that situation to be broken by design. If the
privileged container is running a completely differnt software
stack from the host OS, using the host OS apparmour profile
to confined the container binary is never going to be a reliable
setup. Either the privileged container has to run without
confinement, or it needs to be confined using policy provided
by the container (which is likely not viable anyway).
> Note that this is just my current understanding of the situation, and
> I'm far from an expert when it comes to containers in general and
> their interactions with AppArmor in particular. I recommend taking a
> look at
>
>
https://github.com/kubevirt/kubevirt/pull/8692
>
> and the issues linked therein, which will provide more context coming
> from people who actually know what they're talking about :)
I did read that and it didn't give me any more confidence that
this setup is sensible.
Closing the loop on this one.
After some discussion[1], we have reached the agreement that the
proper way to solve this is to have the node-labeller run in an
unprivileged container, just as the actual VM workload would.
Since doing that requires reworking KubeVirt in non-trivial ways, I
have filed an issue[2] to track this. In the meantime, the user guide
now recommends[3] simply uninstalling libvirt from the host, which is
a simple and effective workaround.
tl;dr SNACK
Thanks everyone for the input!
[1]
https://github.com/kubevirt/kubevirt/pull/8692#issuecomment-1305956638
[2]
https://github.com/kubevirt/kubevirt/issues/8744
[3]
https://github.com/kubevirt/user-guide/pull/618
--
Andrea Bolognani / Red Hat / Virtualization