Puntos clave: Proteger los contenedores Docker está esencial para mantener un entorno de TI resiliente. Las prácticas recomendadas incluyen el uso de imágenes base mínimas de confianza, la actualización regular de versiones de Docker e implementación del acceso de usuario con menos privilegios para Reduce vulnerabilidades.
- Mantén los contenedores pobres retirando los componentes no utilizados.
- Escanea regularmente las imágenes de Docker en busca de vulnerabilidades y actualizaciones.
La contenedorización de aplicaciones implica empaquetar el código de la aplicación en un contenedor virtual con sus dependencias: las librerías, frameworks y archivos de configuración necesarios. Este enfoque facilita la portabilidad y opera de forma coherente en diversos entornos e infraestructuras informáticas, sin perder eficiencia.
Una plataforma de contenedores particularmente popular están Docker. Las organizaciones utilizan Docker para desarrollar aplicaciones que son:
- Optimizado de forma eficiente
- Altamente escalable
- Portátil
- Ágil
A través de sus entornos de ejecución ligeros, los contenedores Docker comparten sistemas operativos subyacentes con aplicaciones que soportan un entorno DevOps. Siendo un elemento crítico del framework Cloud-Native, Docker aporta numerosos beneficios al ciclo de vida de tu desarrollo de software (SDLC). Pero esos beneficios no están exentos de riesgos. Ti probablemente te enfrentarás a complejidades, especialmente en lo que respecta a la seguridad del framework Docker.
Por defecto, los contenedores Docker son seguros. Sin embargo, están imprescindible que te conozcan posibles vulnerabilidades para adoptar un enfoque que proteja frente a posibles riesgos de seguridad.
Así que, en este artículo, analizaremos las mejores prácticas para asegurar una arquitectura basada en Docker en tres áreas clave:
- Infraestructura
- Imágenes
- Acceso y autenticación
Vamos a Obtén adelante.
(
Asegurando la infraestructura Docker
Los contenedores son unidades virtualizadas que pueden alojar aplicaciones. Para ello, los contenedores contienen:
- Binarios de código
- Archivos de configuración
- Dependencias relacionadas
Dado que los contenedores forman la base de una configuración nativa en la nube, protegerlos contra posibles vectores de ataque está una actividad crítica a lo largo de todo el ciclo de vida del contenedor. Un enfoque holístico para asegurar un marco así está Protege no solo el contenedor Docker sino también su infraestructura subyacente.
Vamos a analizar el mejor enfoque para asegurar infraestructuras y Ve cómo funciona.
Actualiza tu versión de Docker regularmente
Lo primero: Asegúrate de que tu versión de Docker están actualizada. Las versiones obsoletas son susceptibles a ataques de seguridad. Las nuevas versiones suelen incluir parches y correcciones de errores que solucionan vulnerabilidades de versiones anteriores.
Lo mismo ocurre con el entorno anfitrión: asegurarse de que las aplicaciones de soporte son actualizadas y libres de errores conocidos o lagunas de seguridad.
Mantén recipientes delgados y limpios
Un entorno de contenedores extendido amplía la superficie de ataque y están comparativamente más propenso a brechas de seguridad que las configuraciones lean. Para evitar esto, configura tus contenedores contengan solo los componentes necesarios que los mantengan operativos como te pretendes:
- Paquetes de software
- Bibliotecas
- Archivos de configuración
Además, revisa rutinariamente las instancias del host para contenedores y bases no utilizadas e descarta aquellas que no estén en uso.
Configura APIs y red
Docker Engine utiliza APIs HTTP para comunicarse a través de una red. Las APIs mal configuradas conllevan fallos de seguridad que los hackers pueden explotar.
Para evitar esto, Protege tus contenedores configurando de forma segura la API que restringe su exposición pública. Un enfoque están imponer la comunicación cifrada habilitando la autenticación basada en certificados.
(Obtén más detalles sobre cómo proteger las APIs de Docker.)
Limitar el uso de los recursos del sistema
Establezca un límite en la proporción de recursos de infraestructura que puede utilizar cada contenedor. Estos recursos de infraestructura incluyen:
- CPU
- Memoria
- Ancho de banda de red
Docker utiliza Grupos de Control que limitan la asignación y distribución de recursos entre los diferentes procesos. Este enfoque evita que un contenedor comprometido consuma recursos excesivos que podrían interrumpir la entrega del servicio en caso de una brecha de seguridad.
Mantener el aislamiento del huésped
Ejecuta contenedores con diferentes requisitos de seguridad en hosts separados.
Mantener el aislamiento de contenedores a través de diferentes espacios de nombres sirve para Protege los datos críticos de un ataque en toda regla. Este enfoque también evita que vecinos ruidosos consuman recursos excesivos en aislamiento basado en pools para afectar a los servicios de otros contenedores.
Restringir capacidades de contenedores
Por defecto, los contenedores Docker pueden mantener y adquirir privilegios adicionales que pueden o no ser necesarios para ejecutar sus servicios principales.
Como mejor práctica, te debería limitar los permisos de un contenedor solo a lo que están necesario para ejecutar sus aplicaciones. Para ello, utiliza el comando para eliminar todos los privilegios del contenedor Docker:
$ docker run --cap-drop ALL
A continuación, añade privilegios específicos al contenedor con la bandera --cap-add. Este enfoque restringe que los contenedores Docker obtengan privilegios innecesarios que Obtén durante brechas de seguridad.
Llamadas al sistema de filtros
Aplica filtros de llamadas al sistema que te permitan elegir qué llamadas pueden realizarse los contenedores al núcleo de Linux.
Este enfoque permite un modo de computación seguro, reduciendo así posibles puntos de exposición para evitar errores de seguridad, especialmente para evitar la explotación de vulnerabilidades del Kernel.
Asegurando imágenes Docker
Ahora, pasemos a las mejores prácticas de seguridad más allá de la infraestructura.
Las imágenes Docker son plantillas de código ejecutable que son utilizadas para Crear contenedores y aplicaciones anfitrionas. Una imagen Docker consiste en bibliotecas de tiempo de ejecución y el sistema de archivos raíz, lo que convierte a la imagen en uno de los fundamentos más críticos de un contenedor Docker.
Aquí son algunas buenas prácticas a seguir para asegurar imágenes Docker.
Utiliza imagen confiable
Obtén imágenes base de Docker solo de fuentes confiables que son actualizadas y correctamente configuradas.
Además, asegúrate de que las imágenes de Docker son firmadas correctamente activando la función de Confianza de Contenido de Docker para filtrar fuentes dudosas y no seguras.
Escanea imágenes regularmente
Es crucial mantener un perfil de seguridad robusto de las imágenes Docker y escanearlas rutinariamente en busca de vulnerabilidades. Haz esto además del escaneo inicial antes de descargar una imagen para asegurarte de que está segura de usar.
Con escaneos de imagen regulares, te también puede minimizar la exposición mediante:
- Auditoría de archivos y directorios críticos
- Manteniéndolos actualizados con los últimos parches de seguridad
Favorece imágenes base mínimas
Evita usar imágenes genéricas de Docker más grandes en lugar de más pequeñas para minimizar vulnerabilidades de seguridad. Esto ofrece dos resultados valiosos:
- Reduce la superficie de ataque
- Elimina las configuraciones por defecto que son más susceptibles a hackear
Gestión de acceso y autenticación
La última categoría para Docker Security implica acceso y autenticación.
Proteger el Daemon Docker mediante Control de Acceso están conocido a menudo como aplicar la primera capa de seguridad. Sin asegurar el Daemon Docker, todo está siempre vulnerable:
- Las operaciones subyacentes
- Aplicaciones
- Funciones empresariales
Implementar el usuario con menos privilegios
Por defecto, los procesos dentro de los contenedores Docker tienen privilegios raíz que les otorgan acceso administrativo tanto al contenedor como al host. Esto expone a los contenedores y al host subyacente a vulnerabilidades de seguridad que los hackers podrían explotar.
Para evitar estas vulnerabilidades, configura un usuario con privilegios mínimos que conceda solo los privilegios necesarios para ejecutar contenedores. Alternativamente, restringe configuraciones en tiempo de ejecución que prohíban la utiliza de un usuario privilegiado.
Utiliza una herramienta de gestión de secretos
Nunca almacenes secretos en un archivo Docker que puedan permitir a un usuario con acceso al archivo extraviar, usar mal o comprometer la seguridad de todo un framework.
Las mejores prácticas estándar están Cifra de forma segura secretos clave en herramientas de terceros, como el Hashicorp Vault. te puede utiliza este mismo enfoque para otros secretos de contenedor más allá de las credenciales de acceso.
Limitar el acceso directo a archivos contenedor
Los contenedores transitorios requieren actualizaciones constantes y correcciones de errores. Como resultado, estos archivos contenedor son expuestos cada vez que un usuario accede a ellos.
Como mejor práctica, mantén los registros del contenedor fuera del contenedor. Esto reduce drásticamente el uso directo y consistente de los archivos del contenedor. También permite a tu equipo solucionar problemas sin acceder a los registros dentro de un directorio del contenedor.
Permite la comunicación cifrada
Limitar el acceso de Docker Daemon solo a un puñado de usuarios clave. Además, limitar el acceso directo a archivos contenedor aplicando el acceso solo por SSH para usuarios generales.
Utiliza Certificados TLS para cifrar la comunicación a nivel de host. También es esencial desactivar los puertos no utilizados y mantener los predeterminados expuestos solo para uso interno.
Proteger Docker protege tu entorno informático
La seguridad en un entorno informático están una misión crítica que nunca te debe pasar por alto.
Para asegurar un framework nativo en la nube, el primer paso siempre están teniendo en cuenta las vulnerabilidades de los elementos clave de tu framework. Por ello, las organizaciones deben mantener un perfil de seguridad robusto que se centre en los contenedores y su infraestructura subyacente.
Aunque los enfoques para implementar la seguridad de extremo a extremo puedan variar, el objetivo siempre está teniendo en cuenta los puntos vulnerables y adoptar las mejores prácticas que mitiguen los riesgos.
Lecturas relacionadas
Guía Docker
Estas publicaciones son mías y no representan necesariamente la posición, estrategias u opinión de BMC.