# Endurecimiento de la imagen base


## ¿Qué es el endurecimiento de la imagen base?

El endurecimiento de la imagen base es el proceso de asegurar las capas fundamentales de una
imagen de contenedor al minimizar lo que incluyen y configurarlas con valores predeterminados
centrados en la seguridad. Una imagen base endurecida elimina los componentes innecesarios,
como shells, compiladores y gestores de paquetes, lo que limita la superficie de ataque disponible
y dificulta que un atacante tome el control o escale privilegios dentro del contenedor.

El endurecimiento también implica aplicar mejores prácticas como la ejecución como usuario sin
privilegios (non-root), la reducción de las superficies de escritura y la garantía de la
consistencia a través de la inmutabilidad. Aunque las [Docker Official
Images](/docker-hub/image-library/trusted-content/#docker-official-images)
y las [Docker Verified Publisher
Images](/docker-hub/image-library/trusted-content/#verified-publisher-images)
siguen las mejores prácticas de seguridad, es posible que no estén tan endurecidas como las
Docker Hardened Images, ya que están diseñadas para dar soporte a una gama más amplia de
casos de uso.

## ¿Por qué es importante?

La mayoría de los contenedores heredan su postura de seguridad de la imagen base que utilizan. Si
la imagen base incluye herramientas innecesarias o se ejecuta con privilegios elevados,
cada contenedor construido sobre ella queda expuesto a esos riesgos.

Endurecer la imagen base:

- Reduce la superficie de ataque al eliminar herramientas y librerías que podrían ser explotadas
- Aplica el principio de mínimo privilegio al eliminar el acceso root y restringir lo que el contenedor puede hacer
- Mejora la confiabilidad y la consistencia al evitar cambios y desviaciones en tiempo de ejecución
- Se alinea con las prácticas seguras de la cadena de suministro de software y ayuda a cumplir con los estándares de conformidad

El uso de imágenes base endurecidas es un primer paso crítico para asegurar el software que
construyes y ejecutas en contenedores.

## Qué se elimina y por qué

Las imágenes endurecidas suelen excluir componentes comunes que resultan riesgosos o innecesarios en entornos de producción seguros:

| Componente eliminado | Motivo |
|---|---|
| Shells (por ejemplo, `sh`, `bash`) | Evita que los usuarios o atacantes ejecuten comandos arbitrarios dentro de los contenedores |
| Gestores de paquetes (por ejemplo, `apt`, `apk`) | Deshabilita la capacidad de instalar software después de la construcción, reduciendo desviaciones y exposición |
| Compiladores e intérpretes | Evita la introducción de herramientas que podrían utilizarse para ejecutar o inyectar código malicioso |
| Herramientas de depuración (por ejemplo, `strace`, `curl`, `wget`) | Reduce el riesgo de explotación o filtración de información |
| Librerías o localizaciones no utilizadas | Reduce el tamaño de la imagen y minimiza los vectores de ataque |

## Cómo aplican el endurecimiento de la imagen base las Docker Hardened Images

Las Docker Hardened Images (DHI) aplican los principios de endurecimiento de la imagen base
por diseño. Cada imagen está construida para incluir únicamente lo necesario para su propósito
específico, ya sea para construir aplicaciones (con las etiquetas `-dev` o `-sdk`) o para
ejecutarlas en producción.

### Características de las Docker Hardened Images

Las Docker Hardened Images están construidas para ser:

- Mínimas: Solo se incluyen las librerías y binarios esenciales
- Inmutables: Las imágenes se fijan en el momento de la construcción; no se permiten instalaciones en tiempo de ejecución
- Sin privilegios (non-root) por defecto: Los contenedores se ejecutan como un usuario sin privilegios a menos que se configure lo contrario
- Acotadas por propósito: Se dispone de diferentes etiquetas para desarrollo (`-dev`), construcciones basadas en SDK (`-sdk`) y ejecución en producción

Estas características ayudan a aplicar un comportamiento consistente y seguro en los entornos de desarrollo, pruebas y producción.

### Consideraciones de compatibilidad de las Docker Hardened Images

Debido a que las Docker Hardened Images eliminan muchas herramientas comunes, es posible que no funcionen de inmediato para todos los casos de uso. Es posible que debas:

- Utilizar construcciones en varias etapas (multi-stage builds) para compilar código o instalar dependencias en una imagen `-dev` y copiar el resultado en una imagen de ejecución endurecida
- Reemplazar scripts de shell por binarios de punto de entrada (entrypoint) equivalentes o incluir explícitamente un shell si es necesario
- Utilizar [Docker Debug](/reference/cli/docker/debug/) para inspeccionar o solucionar problemas temporalmente en los contenedores sin alterar la imagen base

Estas compensaciones son intencionadas y ayudan a respaldar las mejores prácticas para construir contenedores seguros, reproducibles y listos para producción.
