La arquitectura de microservices proporciona flexibilidad, escalabilidad y la capacidad de cambiar, agregar o eliminar componentes de software sin afectar otras partes de la aplicación.
Además de los ciclos de desarrollo de software más cortos, equipos más pequeños y lenguajes de programación flexibles, le permite escalar o solucionar problemas ciertas funciones o servicios sin interferir con otros componentes.
Por lo general, los microservicios permiten que las grandes aplicaciones monógamas se dividan en servicios independientes independientes. Sin embargo, estos pequeños servicios independientes aumentan el número de componentes, lo que los hace más complejos y difíciles de asegurar.
Monolith-microservices arquitectura imagen rojo
Por lo general, una implementación típica de microservicios incluye capas de hardware, servicio o aplicación, comunicaciones, nubes, virtualización y orquestación. Cada uno tiene requisitos de seguridad específicos, controles y tareas.
- Desafíos de seguridad asociados con microservicios
- Las mejores prácticas para asegurar microservicios
- №1. Asegurar la seguridad desde el principio 👮
- № 2. Use un mecanismo de defensa en profundidad
- №3. Implementación de seguridad a nivel de contenedor 📦
- Las puertas de enlace de API típicas incluyen Nginx, Kong, Tyk, Ambassador, puerta de enlace de API de AWS y más.
- Implemente restricciones basadas en roles, otorgando a los usuarios acceso solo a las API y los servicios que necesitan. Dado que la mayoría de los programas maliciosos a menudo permiten que más personas accedan a un servicio, restringir el acceso solo a los usuarios autorizados reduce los riesgos. Una forma de reducir el impacto es etiquetar las API en función de los usuarios que deberían tener acceso a ellas. Por lo general, las API pueden ser;
- API de zona híbrida: para implementaciones de centros de datos
- Si bien TLS garantiza la integridad y confidencialidad de los datos transmitidos, también permite al cliente identificar el microservicio. Un microservicio cliente generalmente conoce el otro microservicio. Sin embargo, dado que TLS es unidireccional, el microservicio receptor no puede verificar el microservicio del cliente, y los atacantes pueden explotar esta vulnerabilidad. Por otro lado, MTLS proporciona un medio por el cual cada microservicio puede identificar el otro.
- Los gerentes de orquestación le permiten automatizar la configuración, la coordinación y otras tareas de administración de microservicios, además de mejorar la seguridad. Por lo general, las herramientas le permiten administrar múltiples contenedores, restringir el acceso a metadatos, dividir las cargas de trabajo, recopilar registros y más.
- Las herramientas de gestión de orquestación típicas incluyen Kubernetes, Istio, Azure Kubernetes Service (AKS) así.
- La implementación de monitoreo continuo le permite detectar y remediar las amenazas de seguridad de manera oportuna. Hay una amplia gama de soluciones de monitoreo de microservicios disponibles para este propósito, incluidos Prometheus, Statistics, InfluxDB, Logstack y más.
- № 13. Siempre proteja los datos 🛡️
- Conclusión
Desafíos de seguridad asociados con microservicios
Los microservicios son típicamente sistemas generalizados con reglas de acceso complejas, grandes cantidades de tráfico para monitorear y una superficie de ataque más grande. Además, la mayoría de los microservicios en la nube se ejecutan en entornos en la nube, que también tienen diferentes configuraciones y controles de seguridad.
Debido a la gran cantidad de API, puertos y componentes abiertos, los firewalls tradicionales pueden no proporcionar suficiente seguridad. Estos desafíos hacen que los despliegues de microservicios sean más vulnerables a diversas amenazas cibernéticas, como el hombre en el medio, los ataques de inyección, las secuencias de comandos de sitios cruzados, los DDO y otros.
La seguridad de la red es otro desafío asociado con los microservicios. En particular, la gestión de identidad y acceso implica un nuevo nivel de complejidad. Otras vulnerabilidades incluyen código inseguro y defectos en los sistemas de descubrimiento de servicios.
Aunque los microservicios son más difíciles de proteger que las aplicaciones monolíticas, puede protegerlos de manera efectiva desarrollando una buena estrategia y siguiendo las pautas.
Idealmente, la arquitectura requiere un enfoque distribuido que debería cubrir todos los diferentes componentes.
Las áreas típicas para abordar incluyen.
- Aplicación, microservicios y protección del usuario
- Seguridad de gestión de identidad y acceso
- Protección de Datos
- Mejora de la seguridad de la comunicación entre los servicios
- Monitoreo de microservicios y seguridad
Las mejores prácticas para asegurar microservicios
Una de las mejores estrategias es utilizar una combinación de mejores prácticas, herramientas y controles para proteger todo el ecosistema. El enfoque real puede variar según el tipo de servicios, aplicaciones, usuarios, entorno y otros factores.
Si decide usar microservicios, debe asegurarse de cumplir con todos los requisitos de seguridad para servicios, conexiones y datos.
Veamos ahora algunos métodos efectivos para asegurar microservicios.
№1. Asegurar la seguridad desde el principio 👮
Hacer que la seguridad sea parte del ciclo de desarrollo. Idealmente, integre la seguridad en el desarrollo y la implementación de microservicios desde el principio. Este enfoque de seguridad es simple, efectivo y más barato que esperar para agregarlo cuando el desarrollo de software está a punto de finalizar.
№ 2. Use un mecanismo de defensa en profundidad
La defensa en profundidad (DIP) es una técnica en la que aplica múltiples capas de seguridad a sus servicios y datos. Esta práctica dificulta que los atacantes penetraran en múltiples capas, lo que garantiza que sus servicios y datos estén bien protegidos.
A diferencia de las soluciones de defensa perimetral como los firewalls, el concepto de defensa escalonada es diferente. Se basa en una combinación de herramientas como antivirus, firewall, gestión de parches, software anti-spam y otros para proporcionar múltiples capas de seguridad distribuidas en todo el sistema.
Imagen de defensa en capas escalonada: Imperva
En este enfoque, primero debe identificar servicios confidenciales, y luego aplica las capas de seguridad apropiadas a ellos.
№3. Implementación de seguridad a nivel de contenedor 📦
La mayoría de las veces, los microservicios dependen de la tecnología de contenedores. Como tal, asegurar contenedores, tanto interna como externamente, es una forma de reducir la superficie de ataque y los riesgos. Idealmente, seguir el principio de seguridad de menor privilegio es una buena práctica y requiere una combinación de estrategias que incluyen, entre otros;
- Limitar los permisos al mínimo necesario
- Evite la ejecución de servicios y cualquier otra cosa con sudo o cuentas privilegiadas.
- Restringir o controlar el acceso y el consumo de los recursos disponibles. Por ejemplo, restringir el acceso al contenedor a los recursos del sistema operativo ayuda a prevenir el robo o compromiso de datos.
- Para hacer esto, implemente una puerta de enlace API para verificar todas las solicitudes entrantes en busca de problemas de seguridad antes de reenviarlas a los microservicios apropiados. La puerta de enlace API se encuentra entre las aplicaciones cliente y los microservicios. A continuación, restringe el acceso a los microservicios al tiempo que proporciona funciones adicionales de gestión de solicitudes, como autenticación, finalización de SSL, conversión de protocolos, supervisión, enrutamiento de solicitudes, almacenamiento en caché y más.
Con este enfoque, la puerta de enlace API dirige todos los servicios externos a los microservicios y también admite el principio de seguridad en capas.
Imagen de Livebook de puerta de enlace API de microservicios
Las puertas de enlace de API típicas incluyen Nginx, Kong, Tyk, Ambassador, puerta de enlace de API de AWS y más.
Para obtener más información sobre la seguridad de API, consulte nuestra guía Por qué y cómo proteger un punto final de API.
№ 7. API de perfil basadas en la zona de implementación
Implemente restricciones basadas en roles, otorgando a los usuarios acceso solo a las API y los servicios que necesitan. Dado que la mayoría de los programas maliciosos a menudo permiten que más personas accedan a un servicio, restringir el acceso solo a los usuarios autorizados reduce los riesgos. Una forma de reducir el impacto es etiquetar las API en función de los usuarios que deberían tener acceso a ellas. Por lo general, las API pueden ser;
API de Ethernet: para servicios que están abiertos al mundo exterior fuera del centro de datos.
API de Enterprise Zone: destinadas al tráfico privado interno.
API de DMZ: para manejar el tráfico que se origina en Internet.
API de zona híbrida: para implementaciones de centros de datos
№8. Proteger la comunicación entre servicios
Los métodos efectivos incluyen la autenticación y autorización de solicitudes cuando dos microservicios se comunican.
En general, existen tres métodos principales que se pueden utilizar para proteger la comunicación entre servicios. Estos son la confianza en la red, el token web JSON (JWT) y la seguridad de la capa de transporte mutuo (mTLS o Mutual TLS).
Protección de las comunicaciones entre servicios con JWT Image Livebook
De los tres, mTLS es el más popular. En este enfoque, cada microservicio debe contener un par de claves pública y privada. Luego, el microservicio del cliente usa el par de claves para autenticarse en el microservicio receptor a través de mTLS.
Durante la autenticación, cada microservicio crea un certificado. Después de eso, cada microservicio utilizará el certificado del otro para la autenticación.
Si bien TLS garantiza la integridad y confidencialidad de los datos transmitidos, también permite al cliente identificar el microservicio. Un microservicio cliente generalmente conoce el otro microservicio. Sin embargo, dado que TLS es unidireccional, el microservicio receptor no puede verificar el microservicio del cliente, y los atacantes pueden explotar esta vulnerabilidad. Por otro lado, MTLS proporciona un medio por el cual cada microservicio puede identificar el otro.
№ 9. Limitar la tasa 🚏 del tráfico del cliente
- Limitar el tráfico externo evita problemas como los ataques de denegación de servicio (DOS) y cuando algunos clientes consumen una gran parte del ancho de banda de la aplicación. Un enfoque es aplicar varias reglas que puedan rastrear y controlar la tasa de tráfico enviada o recibida de un cliente en función de la dirección IP, el tiempo, etc.
- Configure sus servicios para reducir la velocidad si detectan múltiples intentos de inicio de sesión fallidos en sus API o cualquier otra actividad sospechosa.
- Un sistema lento desalentará a los atacantes y probablemente dejarán de intentar acceder a los servicios. Puede limitar la velocidad utilizando una puerta de enlace API, código o cualquier otro método. Por lo general, la mayoría de los entornos SaaS tienen una limitación de tasa de API para minimizar el abuso del usuario y los ataques.
- №10. Use gerentes de orquestación
Los gerentes de orquestación le permiten automatizar la configuración, la coordinación y otras tareas de administración de microservicios, además de mejorar la seguridad. Por lo general, las herramientas le permiten administrar múltiples contenedores, restringir el acceso a metadatos, dividir las cargas de trabajo, recopilar registros y más.
Algunas herramientas de orquestación tienen características adicionales que permiten a los desarrolladores almacenar y compartir información confidencial, como certificados SSL, claves de cifrado, contraseñas y tokens de identidad.
Dos técnicas ampliamente utilizadas para la orquestación efectiva de microservicios son:
Codificando la orquestación como microservicio
Uso de puertas de enlace API para proporcionar una capa de orquestación
La orquestación a través de una puerta de enlace API no se recomienda debido a problemas que surgen cuando los servicios deben escalar.
Capa de orquestación de microservicios – Imagen globalogic
Las herramientas de gestión de orquestación típicas incluyen Kubernetes, Istio, Azure Kubernetes Service (AKS) así.
Para obtener más información, explore la orquestación de contenedores para DEOPS.
№ 11. Monitorear todos sus sistemas y servicios
Debido a que los microservicios dependen de los sistemas distribuidos, necesita una estrategia de monitoreo robusta y efectiva para todos los componentes individuales.
La implementación de monitoreo continuo le permite detectar y remediar las amenazas de seguridad de manera oportuna. Hay una amplia gama de soluciones de monitoreo de microservicios disponibles para este propósito, incluidos Prometheus, Statistics, InfluxDB, Logstack y más.
Monitoreo dentro de la arquitectura de microservicio
Utilice las herramientas apropiadas para monitorear los sistemas y servicios internos. Algunas mejores prácticas incluyen;
Habilitar el registro de nivel de aplicación. Puede acumular otras herramientas que recopilan registros en el nivel de aplicación, contenedor, red e infraestructura.
- Métricas de utilización de monitor
- Use tendencias en métricas como CPU, memoria, tiempo de respuesta, errores, notificaciones y otras para detectar una actividad inusual indicativa de un ataque existente o potencial.
Auditoría registros en áreas como solicitudes de clientes entrantes, registros de bases de datos, contenedores y otros para identificar inconsistencias o actividad inusual.
№ 12. Automatizar actividades de seguridad
Automatizar procesos de seguridad, como implementar actualizaciones, escaneo de vulnerabilidades, monitoreo, aplicación de políticas y otras actividades. Además, las actualizaciones de pruebas para garantizar que estén seguras y no contienen nuevas vulnerabilidades.
Después de las actualizaciones, el software de seguridad debe ejecutar las pruebas idealmente en todos los contenedores y microservicios para ver si podría haber vulnerabilidades o problemas de seguridad que ocurrieron anteriormente.
№ 13. Siempre proteja los datos 🛡️
Proteja los datos en tránsito y almacenamiento. Idealmente, aplique el uso de HTTPS para todas las comunicaciones para garantizar que los datos transmitidos sean seguros y todos los datos confidenciales están encriptados en reposo. Evite transmitir y almacenar contraseñas de texto sin formato, claves, credenciales y datos confidenciales que están fuera de código.
La mejor estrategia es usar tecnología estándar para cifrar todos los datos confidenciales lo antes posible. Además, descifrar los datos lo más tarde posible para reducir la vulnerabilidad.
Conclusión
Los microservicios se basan en componentes distribuidos para proporcionar beneficios, como una mayor flexibilidad y opciones de implementación. Sin embargo, al usar microservicios, las organizaciones deben ajustar las políticas y estrategias de seguridad interna hacia un enfoque más basado en la nube y distribuido.
- Idealmente, tiene como objetivo reducir la superficie del ataque mediante la protección del entorno, las API, las aplicaciones y los datos de los microservicios.
- toadmin. ru