
Estoy ejecutando minikube en un host MacOSX con un hipervisor VirtualBox. Comparte una carpeta (/Usuarios) con el host. ¿Para qué y qué tan seguro es esto, lo suficientemente seguro como para ejecutar mi clúster en línea?
Supongo que es difícil escapar de un contenedor y luego de un pod y luego de la VM, pero entré allí simplemente con minikube ssh
y, no estaba al tanto de la carpeta compartida y de que el shell me permite explorar el host.
Respuesta1
No, no es seguro. Imagine tener un pod implementado con una imagen de contenedor que se creó con una directiva de demonio USER en Dockerfile, lo que hace que el contenedor se ejecute bajo el usuario del demonio. ¿Qué pasa si un atacante obtiene acceso a su registro de imágenes y coloca una imagen diferente bajo la misma etiqueta? La imagen del atacante está configurada para ejecutarse como usuario root. Cuando Kubernetes programa una nueva instancia de su pod, Kubelet descargará la imagen del atacante y ejecutará cualquier código que haya introducido en ella. Aunque los contenedores están en su mayoría aislados del sistema host, ejecutar sus procesos como root todavía se considera una mala práctica. Por ejemplo, cuando un directorio de host se monta en el contenedor, si el proceso que se ejecuta en el contenedor se ejecuta como raíz, tiene acceso completo al directorio montado, mientras que si se ejecuta como no raíz, no lo tendrá. Para evitar el escenario de ataque descrito anteriormente, puede especificar que el contenedor del pod debe ejecutarse como un usuario no root, como se muestra en la siguiente lista.
apiVersion: v1
kind: Pod
metadata:
name: pod-run-as-non-root
spec:
containers:
- name: main
image: alpine
command: ["/bin/sleep", "999999"]
securityContext:
runAsNonRoot: true