audit2allow
probablemente genera una regla para permitir execheap
a container_t
proceso tipo. Siempre puede generar primero el módulo e inspeccionarlo, antes de cargarlo.
Un posible problema es que ahora cualquier proceso con container_t
tipo ahora tiene permitida la misma operación. Para evitar esto, posiblemente necesite crear su propio tipo personalizado (utilizando container_t
como plantilla) y solo permitir execheap
este tipo especial.
Esta publicación de blog de Dan Walsh explica cómo escribir dicha política personalizada. También puede combinar esto con audit2allow
para generar las reglas reales. Los pasos esenciales son:
Cree una política de contenedor básica, por ejemplo container_execheap
:
policy_module(container_execheap, 1.0)
virt_sandbox_domain_template(container_execheap_t)
virt_sandbox_domain_template
La macro crea el nuevo tipo container_execheap_t
y crea las reglas necesarias para la operación de acoplamiento que el nuevo tipo se puede utilizar como dominio contenedor.
Compile y cargue el módulo de política (el selinux-policy-devel
paquete debe proporcionar los archivos de desarrollo necesarios, incluido el archivo MAKE ):
make -f /usr/selinux/devel/Makefile container_execheap.pp
semodule -i container_execheap.pp
El nuevo tipo se puede configurar para ser un dominio permisivo:
semanage permissive -a container_execheap_t
Para dominios permisivos, las denegaciones AVC se registran pero no se aplican las reglas . De esta manera, es fácil generar las reglas que faltan más tarde usando audit2allow
.
Ejecute su contenedor en este nuevo contexto, algo así como docker run ... --security-opt label:type:container_execheap_t ...
Generar errores esperados. Luego, ejecute audit2allow
para generar reglas que permitan esas operaciones container_execheap_t
. Puede actualizar el mismo .te
archivo de módulo (recuerde aumentar el número de versión) con las nuevas reglas. Compile e instale el módulo actualizado.
Cuando no se generen más errores, vuelva a poner el tipo de contenedor personalizado en modo obligatorio semanage -d container_execheap
.
ps axZ
etc.) que su contenedor se ejecuta en el contexto correcto si desea verificar dos veces después de instalar y configurar su política personalizada.