Endurecimiento de imágenes: sin root y base mínima
Una imagen que funciona no es necesariamente una imagen segura para desplegar. En esta lección nos enfocamos en un solo tema: reducir lo que se puede atacar. Ejecutaremos el contenedor como un usuario no-root: el valor por defecto en un contenedor es root, y la instrucción USER nos baja a un usuario
Dale a un trabajador solo las llaves que necesita (no-root), y mantén pequeña la caja de herramientas (base mínima) — así, incluso si alguien entra por la fuerza, tiene menos llaves y menos herramientas con las que jugar.
- usuario no-root (USER)
- Ejecutar el proceso del contenedor bajo un usuario con privilegios limitados en lugar de root. La instrucción USER en un Dockerfile lo establece y reduce el daño (blast radius) si un atacante logra ejecutar código.
- imagen base mínima
- Una base pequeña como alpine o distroless con pocos paquetes y herramientas. Cuanto menos se instale en la imagen, menos vulnerabilidades posibles y una superficie de ataque (attack surface) más pequeña.
- escaneo de imágenes (CVE)
- Una comprobación automática de la imagen contra una base de datos de vulnerabilidades conocidas (CVE) en sus librerías y su base. El escaneo señala paquetes vulnerables, por lo que se fijan versiones y se actualiza.