Compartir comentarios
Las respuestas se generan en base a la documentación.

Tipos disponibles de Docker Hardened Images

Docker Hardened Images (DHI) es un catálogo completo de imágenes de contenedor endurecidas para la seguridad, construidas para satisfacer diversas necesidades de desarrollo y producción.

Puedes explorar el catálogo DHI en Docker Hub o utilizar la CLI de DHI para examinar las imágenes, etiquetas y metadatos disponibles desde la línea de comandos.

Imágenes de framework y aplicación

DHI incluye una selección de frameworks populares e imágenes de aplicación, cada uno de ellos endurecido y mantenido para garantizar la seguridad y el cumplimiento. Estas imágenes se integran en los flujos de trabajo existentes, para que los desarrolladores puedan concentrarse en construir aplicaciones sin comprometer la seguridad.

Por ejemplo, podrías encontrar repositorios como los siguientes en el catálogo DHI:

  • node: framework para aplicaciones Node.js
  • python: framework para aplicaciones Python
  • nginx: imagen de servidor web

Distribuciones de imágenes base

Las Docker Hardened Images están disponibles en diferentes opciones de imagen base, lo que te proporciona flexibilidad para elegir la que mejor se adapte a tu entorno y a los requisitos de tu carga de trabajo:

  • Imágenes basadas en Debian: Una buena opción si ya estás trabajando en entornos basados en glibc. Debian se utiliza ampliamente y ofrece una sólida compatibilidad en muchos ecosistemas de lenguajes y sistemas empresariales.

  • Imágenes basadas en Alpine: Una opción más pequeña y ligera que utiliza musl libc. Estas imágenes tienden a ser de tamaño reducido y, por lo tanto, se descargan más rápido y tienen una huella menor.

Cada imagen mantiene una capa de ejecución mínima y segura mediante la eliminación de componentes no esenciales como shells, gestores de paquetes y herramientas de depuración. Esto ayuda a reducir la superficie de ataque al mismo tiempo que conserva la compatibilidad con los entornos de ejecución comunes. Para mantener esta base ligera y segura, DHI estandariza Debian para las imágenes basadas en glibc, lo que proporciona una amplia compatibilidad a la vez que minimiza la complejidad y la sobrecarga de mantenimiento.

Algunos ejemplos de etiquetas son:

  • 3.9.23-alpine3.21: imagen basada en Alpine para Python 3.9.23
  • 3.9.23-debian12: imagen basada en Debian para Python 3.9.23

Si tienes dudas sobre cuál elegir, comienza con la base con la que ya estés familiarizado. Debian suele ofrecer la compatibilidad más amplia.

Variantes de desarrollo y de tiempo de ejecución

Para adaptarse a las diferentes etapas del ciclo de vida de la aplicación, DHI ofrece todas las imágenes de frameworks de lenguaje y una selección de imágenes de aplicación en dos variantes:

  • Imágenes de desarrollo (-dev): Equipadas con las herramientas y librerías de desarrollo necesarias, estas imágenes facilitan la construcción y prueba de aplicaciones en un entorno seguro. Incluyen un shell, un gestor de paquetes, un usuario root y otras herramientas necesarias para el desarrollo.

  • Imágenes de tiempo de ejecución (runtime): Sin herramientas de desarrollo, estas imágenes contienen únicamente los componentes esenciales necesarios para ejecutar aplicaciones, lo que garantiza una superficie de ataque mínima en producción.

Esta separación admite construcciones en varias etapas (multi-stage builds), lo que permite a los desarrolladores compilar código en un entorno de construcción seguro y desplegarlo utilizando una imagen de ejecución ligera.

Por ejemplo, podrías encontrar etiquetas como las siguientes en un repositorio DHI:

  • 3.9.23-debian12: imagen de ejecución para Python 3.9.23
  • 3.9.23-debian12-dev: imagen de desarrollo para Python 3.9.23

Variantes FIPS y STIG

Suscripción: Docker Hardened Images Select o Enterprise

Algunas Docker Hardened Images incluyen una variante -fips. Estas variantes utilizan módulos criptográficos que han sido validados bajo FIPS 140, un estándar del gobierno de los EE. UU. para operaciones criptográficas seguras.

Las variantes FIPS están diseñadas para ayudar a las organizaciones a cumplir con los requisitos regulatorios y de conformidad relacionados con el uso criptográfico en entornos sensibles o regulados.

Puedes reconocer las variantes FIPS por su etiqueta que incluye -fips.

Por ejemplo:

  • 3.13-fips: variante FIPS de la imagen de Python 3.13
  • 3.9.23-debian12-fips: variante FIPS de la imagen de Python 3.9.23 basada en Debian

Las variantes FIPS se pueden utilizar de la misma manera que cualquier otra Docker Hardened Image y son ideales para equipos que operan en industrias reguladas o bajo marcos de cumplimiento que requieren validación criptográfica.

Además de las variantes FIPS, algunas Docker Hardened Images también incluyen variantes listas para STIG (STIG-ready). Estas imágenes se escanean contra perfiles personalizados basados en STIG y vienen con atestaciones de escaneo STIG firmadas para respaldar auditorías e informes de cumplimiento. Para identificar las variantes listas para STIG, busca la indicación STIG en la columna Compliance de la lista de etiquetas de imagen en el catálogo de Docker Hub.

Variantes de compatibilidad

Algunas Docker Hardened Images incluyen una variante de compatibilidad. Estas variantes proporcionan herramientas y configuraciones adicionales para casos de uso específicos sin sobrecargar las imágenes base mínimas.

Las variantes de compatibilidad se crean para admitir:

  • Compatibilidad con Helm charts: Aplicaciones desplegadas a través de Helm charts y Kubernetes que requieren configuraciones de ejecución específicas o utilidades para una integración directa con los Helm charts populares.

  • Casos de uso de aplicaciones especiales: Aplicaciones que necesitan herramientas opcionales no incluidas en la imagen mínima.

Al ofrecerlas como variantes de imagen independientes, DHI garantiza que las imágenes mínimas sigan siendo ligeras y seguras, al tiempo que proporciona las herramientas que necesitas en variantes dedicadas. Este enfoque mantiene una superficie de ataque mínima para despliegues estándar a la vez que admite requisitos especializados cuando es necesario.

Puedes reconocer las variantes de compatibilidad por su etiqueta que incluye -compat.

Utiliza variantes de compatibilidad cuando tu despliegue requiera herramientas adicionales más allá del entorno de ejecución mínimo, como cuando utilices Helm charts o aplicaciones con requisitos de herramientas específicos.