Seguridad de microservicios: 6 prácticas recomendadas
10 de febrero de 2022
0 minutos de lecturaAdemás de adoptar implementaciones en contenedores, muchos equipos de desarrollo han comenzado a usar una arquitectura de microservicios. Los microservicios permiten a los equipos desarrollar e implementar aplicaciones de forma más ágil y lanzar funciones de manera independiente. Esto acorta los ciclos de desarrollo, ofrece más libertad para elegir las tecnologías y mejora la resiliencia del software.
Aunque los microservicios pueden ser una excelente forma de modernizar aplicaciones monolíticas, este enfoque también puede introducir riesgos de seguridad. Analicemos a fondo la seguridad de los microservicios y algunas prácticas recomendadas que conviene tener en cuenta.
¿Qué es la seguridad de los microservicios?
La seguridad de los microservicios es la estrategia que utilizan los equipos de desarrollo y seguridad para minimizar los riesgos asociados con la arquitectura de aplicaciones basada en microservicios. Este esfuerzo incluye crear microservicios seguros y garantizar que se comuniquen entre sí de forma segura.
Los microservicios —componentes de software independientes que pueden implementarse por separado— facilitan y hacen más eficiente el escalamiento de aplicaciones grandes. Esto se debe a que estos servicios independientes se pueden actualizar con mucha más facilidad y los desarrolladores pueden elegir la pila tecnológica adecuada para cada componente. Como los microservicios se pueden implementar de forma independiente, las organizaciones también pueden escalar ciertos aspectos de la aplicación sin tener que escalarla por completo, lo que reduce el uso de recursos y los costos.
Al mismo tiempo, la posibilidad de crear e implementar microservicios de forma rápida e independiente implica riesgos de seguridad. Si los equipos de desarrollo no siguen las prácticas recomendadas de programación segura, cada nueva implementación de un microservicio podría introducir riesgos para la aplicación en general.
6 prácticas recomendadas para la seguridad de los microservicios
Como ya vimos, la seguridad de los microservicios es un enfoque para mejorar la postura de seguridad general de una aplicación. Estas son seis prácticas recomendadas que debes tener en cuenta al implementar la seguridad de los microservicios.
1. Diseña con seguridad desde el inicio
La mayoría de las aplicaciones basadas en microservicios se implementan cuando las organizaciones modernizan sistemas monolíticos. Por eso, la fase de diseño es una oportunidad ideal para mejorar la seguridad de las aplicaciones heredadas. Al diseñar una arquitectura de microservicios, los equipos de desarrollo y seguridad deben priorizar la seguridad de las aplicaciones para que estas tengan una base adecuada y se mantengan seguras a medida que crecen y evolucionan.
Diseñar software seguro requiere tener en cuenta la seguridad en cada capa de una aplicación, empezando por su arquitectura. El modelado de amenazas es un proceso que examina el diseño de las operaciones del sistema y el flujo de datos entre subsistemas o microservicios. Esto permite a los equipos identificar posibles puntos débiles y mitigarlos desde las primeras etapas del diseño.
En una arquitectura basada en microservicios, es fundamental proteger contra amenazas el código y los componentes de código abierto de la aplicación, así como los contenedores y la infraestructura donde se ejecutan los microservicios. Además, los microservicios deben poder comunicarse entre sí sin riesgos de seguridad.
2. Adopta una cultura DevSecOps
Una de las principales ventajas de los microservicios es que los equipos de desarrollo pueden implementar componentes de software individuales con mayor rapidez, sin tener que volver a implementar toda la aplicación. Si bien esto permite a los equipos de DevOps crear aplicaciones más rápido, también puede introducir riesgos de seguridad. Por eso es fundamental cambiar la mentalidad e incorporar pruebas de seguridad durante el proceso de desarrollo.
Por eso, un enfoque de DevSecOps —que integra las medidas de seguridad directamente en el proceso de desarrollo y en el entorno de compilación e integración continua— es fundamental para reducir los riesgos. DevSecOps promueve la automatización y establece una responsabilidad compartida para entregar software seguro sin sacrificar la velocidad de desarrollo. De hecho, este enfoque incluso puede reducir el costo y el tiempo necesarios para entregar software seguro, ya que los desarrolladores no tendrán que adaptar los controles de seguridad después de la implementación.
3. Integra herramientas de seguridad de aplicaciones
Un aspecto clave de DevSecOps es integrar herramientas de seguridad de aplicaciones en un pipeline automatizado de integración continua y entrega continua (CI/CD). Al integrar estas herramientas en los pipelines de CI/CD, las organizaciones pueden adelantar las pruebas de seguridad y reducir el tiempo y el esfuerzo necesarios para mejorar la postura de seguridad de una aplicación. Esto se debe a que es más fácil para los desarrolladores corregir problemas de seguridad directamente en su IDE mientras escriben código que hacerlo después.
Por ejemplo, las pruebas estáticas de seguridad de aplicaciones (SAST) permiten a los equipos de desarrollo encontrar y corregir problemas de seguridad en el código fuente de una aplicación en una etapa más temprana del ciclo de vida del desarrollo de software (SDLC). Así, las organizaciones pueden revisar cada cambio nuevo en un microservicio antes de que el código llegue a producción.
Empieza con Capture the Flag
Aprende a resolver desafíos de Capture the Flag viendo nuestro taller virtual introductorio a pedido.
4. Implementa el análisis de dependencias
Además de los microservicios, el software moderno suele utilizar muchos componentes de código abierto. En la mayoría de los casos, el código abierto del que depende una aplicación supera ampliamente al código personalizado que escriben los equipos de desarrollo. Sin embargo, estas dependencias de terceros pueden contener vulnerabilidades que afectan el perfil de riesgo de una aplicación.
Como cada microservicio suele usar una pila tecnológica distinta, a los desarrolladores les resulta difícil dar seguimiento a los componentes de terceros y asegurarse de que sean seguros. Con una herramienta de gestión de seguridad de código abierto, los equipos de desarrollo pueden encontrar y corregir con más facilidad las posibles vulnerabilidades del código abierto que utilizan.
Empieza con los desafíos de Capture the Flag
Aprende a resolver desafíos de captura la bandera con nuestro taller virtual introductorio a pedido.
5. Usa contenedores seguros
Como las aplicaciones basadas en microservicios constan de decenas o incluso cientos de componentes diferentes, los equipos de desarrollo suelen usar contenedores para facilitar las implementaciones. Por eso, la seguridad de contenedores es esencial para mantener seguros los microservicios e implementar seguridad nativa de la nube.
La seguridad de contenedores va mucho más allá de las imágenes en las que se basan. También incluye el registro de contenedores donde se almacenan las imágenes y las herramientas de orquestación utilizadas. Analizar el registro de contenedores en busca de imágenes vulnerables es fundamental para reducir el riesgo de que varios microservicios utilicen la misma imagen base. Otra forma de garantizar que los microservicios se implementen de forma segura es eliminar las configuraciones incorrectas y otros riesgos asociados con herramientas de orquestación de contenedores como Kubernetes.
6. Crea gateways de API
En una arquitectura de microservicios, las API son el principal medio de comunicación entre componentes de software independientes, por lo que son una de las áreas más vulnerables de una aplicación.
Un gateway de API es una herramienta que se encuentra entre un cliente y un conjunto de servicios de backend. Esta herramienta de gestión de API se encarga de la autenticación, la limitación de velocidad y otras tareas para proteger la API contra el uso indebido. A su vez, los gateways de API pueden proteger una aplicación basada en microservicios contra el acceso no deseado de terceros y el gran volumen de tráfico asociado con un ataque de denegación de servicio (DoS).
Preguntas frecuentes sobre la seguridad de los microservicios
¿Los microservicios son más seguros?
Aunque el tamaño y la complejidad de una aplicación determinan su perfil de riesgo, muchas veces una arquitectura de microservicios es más segura que una aplicación monolítica. Como los microservicios están desacoplados, las vulnerabilidades suelen limitarse a un componente específico, en lugar de afectar a toda la aplicación.
Al usar una autenticación adecuada para la comunicación entre servicios, las aplicaciones basadas en microservicios también pueden tener más controles de seguridad que las aplicaciones monolíticas. Por último, cuando se descubre una vulnerabilidad, es mucho más fácil aplicar un parche y volver a implementar el microservicio para mitigar rápidamente el riesgo de seguridad.
¿Cómo se protegen los microservicios?
Para proteger los microservicios, es necesario diseñar una arquitectura de aplicaciones eficaz desde el inicio. Los componentes de software individuales suelen desarrollarse e implementarse con rapidez, por lo que integrar la seguridad de las aplicaciones directamente en el proceso de desarrollo es fundamental para entregar una aplicación segura basada en microservicios. El panorama de amenazas evoluciona constantemente, así que es esencial usar herramientas automatizadas de seguridad de aplicaciones para detectar y corregir continuamente las vulnerabilidades que podrían poner en riesgo una aplicación.
Descubre cómo Coveo integró Snyk en su canalización de implementación de microservicios para ayudar a escalar las prácticas de DevSecOps en toda su empresa.
