GitLab Container Scanning es una herramienta esencial para mantener la seguridad y la integridad de las aplicaciones en contenedores. Familiarizarse con esta técnica y emplearla se vuelve aún más crítico a medida que las organizaciones avanzan hacia la adopción de la contenedorización para la implementación de software.
Este artículo tratará en profundidad GitLab Container Scanning, su funcionamiento, los formatos de contenedores compatibles y cómo las mejores prácticas y los ejemplos reales pueden ayudar a facilitar su configuración para proyectos. Con las mejores prácticas destacadas a lo largo de todo el artículo, esta guía ofrece una comprensión de GitLab Container Scanning que garantiza procesos de desarrollo seguros con un flujo de trabajo fluido.
Comprender el escaneo de contenedores de GitLab
Comprender el escaneo de contenedores de GitLab es fundamental para aquellos que desean proteger aplicaciones en contenedores utilizando GitLab o que buscan hacerlo utilizando otras plataformas de contenedorización como Docker. El escaneo de contenedores de GitLab sirve como comprobación de seguridad, ya que comprueba cada componente del software en busca de vulnerabilidades que los atacantes podrían aprovechar, ¡actuando como un antivirus en sus componentes básicos!
La inspección consiste en examinar minuciosamente el software contenido en los contenedores para detectar cualquier problema o riesgo potencial que pueda existir en su interior. Este paso es crucial a la hora de desarrollar software moderno; los contenedores suelen estar formados por componentes dispares de múltiples fuentes que deben cumplir con las normas de seguridad para mantener la integridad dentro de su aplicación.
GitLab Container Scanning puede ser muy valioso para el desarrollo de software, ya que proporciona una protección esencial a las aplicaciones de software en contenedores. La identificación temprana de vulnerabilidades ayuda a mantener la seguridad de los sistemas, lo que proporciona tranquilidad tanto a los desarrolladores como a las partes interesadas.
¿Cómo funciona GitLab Container Scanning?
GitLab Container Scanning puede identificar y resolver automáticamente las vulnerabilidades dentro de las imágenes de contenedores, lo que proporciona la tranquilidad de saber que cualquier vulnerabilidad dentro de estas imágenes se ha solucionado de forma rápida y fiable. A continuación se detalla su funcionamiento:
El escaneo de contenedores de GitLab se puede integrar fácilmente en el proceso de integración continua/despliegue continuo (CI/CD), lo que convierte el proceso de escaneo en una parte integral de cada compilación y envío, y no en un evento aislado. Esto garantiza que las comprobaciones de seguridad se conviertan en una parte continua del desarrollo, en lugar de algo que se hace una sola vez.
Utilización de bases de datos de vulnerabilidades
Esta herramienta compara los componentes con bases de datos de vulnerabilidades conocidas para detectar vulnerabilidades conocidas dentro de los paquetes de software o bibliotecas utilizados en los contenedores. Esto permite identificar fácilmente las amenazas conocidas que puedan existir en ellos.
Generación de un informe
GitLab Container Scanning genera un informe completo al finalizar, en el que se describen las vulnerabilidades detectadas y sus categorías de gravedad, y se sugieren soluciones o estrategias de mitigación cuando es necesario.
Automatización de respuestas
GitLab Container Scanning permite a los usuarios configurar respuestas automáticas en función de cómo esté configurado; estas podrían incluir la creación de incidencias para que los equipos de desarrollo las aborden o incluso la detención de CI/CD pipeline si se descubren vulnerabilidades críticas, para garantizar que ningún código inseguro llegue a la fase de producción.
Corrección y supervisión continua
Nuestra herramienta de supervisión continua ayuda a la corrección continua mediante el escaneo continuo de las actualizaciones de los contenedores a medida que se producen, la comprobación automática de las vulnerabilidades que pueden surgir al implementar los cambios y la garantía de una protección continua contra las nuevas vulnerabilidades que surgen con el tiempo.
Guía de mercados de la CNAPP
Obtenga información clave sobre el estado del mercado de CNAPP en esta guía de mercado de Gartner para plataformas de protección de aplicaciones nativas de la nube.
Guía de lecturaFormato de contenedor compatible con GitLab
Cuando nos referimos a la compatibilidad de GitLab con el escaneo de contenedores de determinados formatos, nos referimos al análisis de su estructura específica y la disposición de los datos que contienen. Las herramientas de escaneo Trivy y Grype son ampliamente compatibles con diversas distribuciones de Linux, por lo que las vulnerabilidades se pueden identificar rápidamente en todos los entornos.
Herramientas de escaneo de código abierto:
- Trivy (un escáner de vulnerabilidades de código abierto para contenedores y sistemas operativos): Trivy es un escáner de vulnerabilidades de código abierto consolidado, diseñado específicamente para contenedores y sistemas operativos, que ofrece capacidades de escaneo ligeras pero exhaustivas para identificar vulnerabilidades en muchas distribuciones de Linux.
- Grype: Grype proporciona datos precisos sobre vulnerabilidades en imágenes de contenedores. Como herramienta de análisis, Grype complementa a Trivy examinando minuciosamente las amenazas de seguridad con datos precisos y prácticos sobre vulnerabilidades.
Distribuciones Linux compatibles
Es de suma importancia comprender la diferencia entre el formato de contenedor y las distribuciones. Los contenedores almacenan datos dentro de los contenedores, mientras que las distribuciones se refieren a diferentes variantes del sistema operativo Linux que permiten que los servicios Trivy y Grype de GitLab sean compatibles. GitLab es compatible con una impresionante lista de distribuciones; aquí hay un breve resumen:
- Alma Linux: escaneado con Trivy
- Alpine Linux: compatible con Grype y Trivy
- Amazon Linux: compatible con Grype y Trivy
- BusyBox: escaneado con Grype
- CentOS: compatible con Grype y Trivy
- CBL-Mariner: Escaneado con Trivy
- Debian: Compatible con Grype y Trivy
- Distroless: Compatible con Grype y Trivy
- Oracle Linux: compatible con Grype y Trivy
- Photon OS: escaneado con Trivy
- Red Hat (RHEL): compatible con Grype y Trivy
- Rocky Linux: escaneado con Trivy
- SUSE: escaneado por Trivy
- Ubuntu: compatible con Grype y Trivy
La importancia de la compatibilidad con una amplia distribución
En GitLab Container Scanning, entendemos que la importancia de la compatibilidad con una amplia distribución es cada vez más crucial, ya que las aplicaciones en contenedores ganan popularidad entre los desarrolladores, que a menudo seleccionan diferentes distribuciones de Linux en función del rendimiento, la seguridad, la compatibilidad o sus preferencias personales. Al ser compatible con múltiples distribuciones simultáneamente, GitLab Container Scanning garantiza que los desarrolladores puedan seguir manteniendo la seguridad de las aplicaciones independientemente del entorno seleccionado, lo que refuerza aún más nuestro compromiso de ofrecer una seguridad integral para las cargas de trabajo en contenedores.
¿Cómo configurar GitLab para el escaneo de contenedores?
La implementación de GitLab para el escaneo de contenedores es un proceso eficiente que facilita el escaneo automático de vulnerabilidades para sus aplicaciones en contenedores. A continuación, se ofrece una descripción general de cómo puede lograrlo:
1. Habilitar el escaneo de contenedores a través de una solicitud de fusión automática
GitLab 14.9 hace que sea sencillo y rápido habilitar el escaneo de contenedores a través de una solicitud de fusión automatizada; a continuación se explica cómo hacerlo:
- Navega hasta el proyecto deseado.
- Ve a Seguro > Configuración de seguridad.
- En la fila Escaneo de contenedores, selecciona Configurar con una solicitud de fusión.
Una vez activado, este proceso generará una solicitud de fusión automática que contiene los cambios necesarios para habilitar el escaneo de contenedores. Solo tienes que revisarla antes de fusionarla para completar la configuración del escaneo de contenedores.
2. Configuración a través del archivo .gitlab-ci.yml:
La configuración manual del escaneo de contenedores requiere añadir la plantilla correspondiente a su archivo .gitlab-ci.yml:
include: - template: Security/Container-Scanning.gitlab-ci.yml Esta plantilla añade una tarea de escaneo de contenedores a su canalización CI/CD que escanea las imágenes de Docker en busca de vulnerabilidades y guarda los resultados como un artefacto de informe de escaneo de contenedores.
Un ejemplo de .gitlab-ci.yml que compila y analiza imágenes de Docker podría ser el siguiente.
include: - template: Jobs/Build.gitlab-ci.yml - template: Security/Container-Scanning.gitlab-ci.yml container_scanning: variables: CS_DEFAULT_BRANCH_IMAGE: $CI_REGISTRY_IMAGE/$CI_DEFAULT_BRANCH:$CI_COMMIT_SHA 3. Personalización de la configuración del escaneo de contenedores
GitLab te permite personalizar la forma en que se escanean los contenedores para adaptarlos a tus necesidades específicas, desde una salida mejorada y la autenticación con el registro específico hasta la obtención de resultados más detallados.
Para habilitar la salida detallada, por ejemplo, edita tu .gitlab-ci.yml como corresponda:
include: - template: Security/Container-Scanning.gitlab-ci.yml variables: SECURE_LOG_LEVEL: 'debug' 4. Escaneo de una imagen en un registro remoto:
También puede escanear imágenes ubicadas en un registro distinto al de los proyectos utilizando la siguiente configuración:
include: - template: Security/Container-Scanning.gitlab-ci.yml container_scanning: variables: CS_IMAGE: example.com/user/image:tag Establecer GitLab Container Scanning es una experiencia intuitiva y fácil de usar, desde las solicitudes de fusión automatizadas hasta la configuración manual. GitLab integra las comprobaciones de seguridad en el flujo de trabajo de desarrollo de los desarrolladores con sus potentes herramientas de escaneo, lo que convierte a GitLab en un elemento esencial en el desarrollo de software moderno y seguro.
Mejores prácticas para el escaneo de contenedores de GitLab
1. Actualizar regularmente las herramientas de escaneo
Es fundamental que las herramientas de escaneo como Trivy y Grype se mantengan actualizadas para que puedan detectar nuevas vulnerabilidades tan pronto como surjan, sin dejar de ser compatibles con cualquier cambio realizado por las distribuciones compatibles. Las actualizaciones periódicas garantizan que esto suceda.
2. Integre el escaneo en las primeras fases del desarrollo
Cuanto antes se incorpore el análisis de contenedores a su ciclo de desarrollo, antes se podrán identificar y corregir las vulnerabilidades. La inclusión de GitLab Container Scanning en su canalización de integración continua (CI) garantiza que los escaneos se realicen automáticamente con cada envío de código, lo que se convierte en parte de su flujo de trabajo de desarrollo y contribuye a una identificación y resolución más rápida de las vulnerabilidades.
3. Adapte los escaneos a sus necesidades
No todos los proyectos requieren análisis idénticos. Adaptarlos a los requisitos de su proyecto —en cuanto a niveles de detalle, selección de determinados registros o configuración de variables— puede hacer que el análisis sea mucho más rápido y eficiente. Utilice las funciones de personalización del archivo .gitlab-ci.yml para ajustar los análisis con precisión.
4. Revise y actúe sobre los informes de análisis con regularidad
No basta con ejecutar análisis, también hay que revisar y abordar rápidamente los resultados. La revisión periódica de los artefactos del informe de análisis de contenedores, combinada con una corrección sistemática, garantiza que las vulnerabilidades se identifiquen rápidamente y se traten en consecuencia. La integración del flujo de trabajo de corrección en los procesos de desarrollo existentes puede ayudar en esta tarea de corrección tan importante.
Flujo de trabajo de corrección con GitLab Container Scanning
El flujo de trabajo de corrección de GitLab Container Scanning abarca varios pasos diseñados para identificar las vulnerabilidades de las imágenes de contenedores y resolverlas de manera eficiente y sistemática. Un flujo de trabajo típico podría ser algo así:
- Determinar las vulnerabilidades: GitLab proporciona la función Container Scanning y análisis de seguridad con Trivy o Grype; una vez descubiertas las vulnerabilidades, se generará un informe exhaustivo que las detalla todas como parte de este paso.
- Analizar los resultados: En este paso, se debe realizar una revisión en profundidad de los resultados de los informes de escaneo de contenedores para proporcionar detalles sobre la gravedad, el tipo y el origen de las vulnerabilidades que requieren atención inmediata. Se debe dar prioridad a los problemas inmediatos para su resolución inmediata.
- Priorizar la corrección: Basándose en esta evaluación, se debe dar prioridad a los problemas según corresponda. Las cuestiones de alta prioridad suelen centrarse en las vulnerabilidades que suponen una amenaza inmediata para las aplicaciones, aunque también pueden influir factores como el impacto y la facilidad de explotación.
- Elaborar un plan de corrección: Después de priorizar las vulnerabilidades, se debe diseñar un plan de corrección eficaz para abordar cada una de ellas. Este plan incluye las medidas necesarias para mitigar eficazmente cada vulnerabilidad, lo que puede implicar la instalación de actualizaciones, la realización de modificaciones o la alteración directa de partes del código.
- Implementar correcciones: Una vez que se cuenta con un plan, se deben llevar a cabo acciones correctivas utilizando solicitudes de fusión de GitLab que modifiquen el código, la configuración o las dependencias que afectan a las bases de código afectadas; la colaboración entre los desarrolladores, los equipos de seguridad y otros actores clave suele ser esencial para llevar a cabo este proceso con éxito.
- Prueba de la corrección: Tras la aplicación de las correcciones, es fundamental realizar comprobaciones de verificación adicionales para asegurarse de que se han solucionado las vulnerabilidades sin crear nuevos problemas. Volver a escanear las imágenes de los contenedores o realizar pruebas adicionales puede ayudar a verificar si las medidas correctivas han eliminado con éxito las vulnerabilidades y no han creado agujeros de seguridad.
- Supervisión y mejora continua: Los flujos de trabajo de corrección no se producen de la noche a la mañana; la supervisión, el análisis y la revisión continuos garantizan la viabilidad a largo plazo. La adopción de un enfoque iterativo garantiza su viabilidad a largo plazo.
Ejemplos y casos de uso del mundo real
1. Banca
La seguridad en las aplicaciones bancarias es de suma importancia. Los métodos tradicionales de detección de vulnerabilidades a menudo no logran detectarlas a tiempo; al añadir GitLab Container Scanning al proceso de integración continua/implementación continua de las aplicaciones bancarias, es posible realizar inspecciones y correcciones en tiempo real, lo que permite una solución mucho más sólida que no solo refuerza la seguridad general, sino que fomenta la confianza y el cumplimiento normativo en todo el sector.
2. Sanidad
Los sistemas sanitarios manejan datos confidenciales que deben protegerse de acuerdo con estrictas directrices normativas, pero las comprobaciones manuales a menudo pueden resultar engorrosas y propensas a errores. Al adoptar GitLab Container Scanning para evaluaciones de vulnerabilidades y como parte de los procesos continuos de presentación de informes de cumplimiento, las organizaciones sanitarias pueden optimizar GitLab Container Scanning para protegerse contra las infracciones, al tiempo que simplifican considerablemente el proceso de presentación de informes.
3. Startups tecnológicas
Las startups tecnológicas a menudo se enfrentan a la dificultad de equilibrar el rápido desarrollo y el mantenimiento de los estándares de seguridad. GitLab Container Scanning puede ayudar a las empresas a alinear ambos procesos; el escaneo continuo de vulnerabilidades de las aplicaciones en contenedores permite ciclos de desarrollo más rápidos al tiempo que protege la seguridad, lo que da a las startups la agilidad para innovar sin dejar de mantener una postura de seguridad sólida.
Vea SentinelOne en acción
Descubra cómo la seguridad en la nube basada en IA puede proteger su organización en una demostración individual con un experto en productos SentinelOne.
DemostraciónConclusión
GitLab Container Scanning se ha convertido en una parte invaluable del panorama del desarrollo moderno, ya que proporciona a las organizaciones un medio sencillo para detectar de forma rápida y fiable las vulnerabilidades dentro de las aplicaciones en contenedores. Al integrarse perfectamente en sus procesos de desarrollo y proporcionar visibilidad sobre las vulnerabilidades en las primeras fases de los procesos de desarrollo, las organizaciones pueden incorporar la seguridad en su proceso de desarrollo, mitigando los riesgos y aumentando la postura de seguridad general.
GitLab Container Scanning es un elemento integral de una estrategia DevSecOps eficaz, que fomenta un entorno de mejora continua de la seguridad. Este valioso activo garantiza que la seguridad siga estando a la vanguardia de la innovación, desde el cumplimiento de la normativa o la protección de los datos de los clientes hasta el mantenimiento de ciclos de desarrollo ágiles y la satisfacción de las diversas necesidades de seguridad en todos los sectores o casos de uso.
"Preguntas frecuentes sobre el escaneo de contenedores de GitLab
El escaneo de contenedores de GitLab ejecuta una comprobación de vulnerabilidades en las imágenes de contenedores durante el CI/CD. Utiliza escáneres como Trivy para examinar cada capa, desde los paquetes del sistema operativo base hasta las dependencias de las aplicaciones, antes de que las imágenes lleguen a producción. Se habilita incluyendo la plantilla CI de escaneo de contenedores de GitLab o mediante una solicitud de fusión con un solo clic.
Los resultados aparecen como artefactos JSON y en la pestaña Seguridad de su canalización, señalando las CVE peligrosas y las versiones caducadas del sistema operativo.
Detecta CVE conocidas en tu imagen base y paquetes del sistema operativo, además, si está habilitado, fallos de bibliotecas específicas de lenguaje (por ejemplo, paquetes Java o Python). También señala los sistemas operativos que han llegado al final de su vida útil y que ya no reciben actualizaciones de seguridad. El escáner Trivy subyacente se basa en fuentes de asesoramiento como NVD, rastreadores de seguridad de distribuciones y la propia base de datos de asesoramiento de GitLab para identificar y clasificar las vulnerabilidades según la puntuación CVSS y la explotabilidad.
Añade la plantilla integrada de GitLab a tu .gitlab-ci.yml.
include:
- template: Jobs/Container-Scanning.gitlab-ci.yml
Como alternativa, ve a Secure > Security configuration en tu proyecto, haz clic en Configure with a merge request y fusiona. Esto inyecta los trabajos necesarios en tu canalización. No se necesita ningún script adicional si ya ha compilado y enviado su imagen de Docker al registro del proyecto
Después de ejecutar tu canalización, abre Compilación > Canalizaciones, selecciona la ejecución y elige la pestaña Seguridad. Allí verás la gravedad de cada hallazgo, la puntuación CVSS, la probabilidad de explotación (EPSS) y las instrucciones de corrección. El informe de escaneo sin procesar (gl-container-scanning-report.json), además de un SBOM de CycloneDX (gl-sbom-report.cdx.json), están disponibles en Job Artifacts.
En el nivel Ultimate, también verá resultados en línea en las solicitudes de fusión y un informe de vulnerabilidades consolidado en la rama predeterminada.
Sí. Cada entrada de vulnerabilidad incluye una descripción que explica el problema, su impacto y los pasos de corrección recomendados, como actualizaciones de paquetes o cambios de configuración. En el nivel Ultimate, GitLab puede incluso generar parches de corrección automática, solicitudes de fusión que actualizan tu Dockerfile o el manifiesto del paquete a versiones corregidas por ti.
Crea un archivo vulnerability-allowlist.yml en la raíz de tu repositorio. Enumera los ID de CVE (a nivel global o por imagen) que hayas confirmado como falsos positivos. GitLab excluirá esos CVE de futuros informes de análisis y los marcará como "Aprobados" en el registro de tareas. De este modo, la pestaña Seguridad se centrará en los riesgos reales sin ocultar los problemas genuinos.

