La flexibilidad, la escalabilidad y la capacidad de cambiar, agregar o eliminar componentes de software sin afectar otras áreas del programa son características del diseño de microservicios.

Le permite ampliar o solucionar problemas de determinadas funciones o servicios sin afectar a los demás componentes, además de ciclos de desarrollo de software más rápidos, menos equipos y opciones de lenguaje de programación flexibles.

En general, los microservicios permiten la división de importantes aplicaciones monolíticas en servicios separados que se pueden implementar de forma independiente. Sin embargo, debido a que hay más componentes debido a estos servicios independientes más pequeños, existe más complejidad y dificultad para salvaguardarlos.

Las capas de hardware, servicio o aplicación, comunicación, nube, virtualización y orquestación a menudo se incluyen en una configuración típica de microservicios. Cada uno de ellos tiene exigencias, medidas y dificultades de seguridad únicas.

Dificultades con la seguridad de los microservicios

Los microservicios suelen tener restricciones de acceso sofisticadas, más tráfico que observar y una superficie de ataque más amplia. También suelen ser sistemas geográficamente dispersos. Además, la mayoría de los microservicios basados ​​en la nube se ejecutan en entornos que contienen una variedad de configuraciones y restricciones de seguridad.

Es posible que los firewalls tradicionales no ofrezcan suficiente protección debido a la gran cantidad de API, puertos y componentes expuestos. Estos problemas aumentan la susceptibilidad de las instalaciones de microservicios a una variedad de peligros en línea, incluidos intermediarios, ataques de inyección, secuencias de comandos entre sitios, DDoS y otros. Por lo tanto, la seguridad de las aplicaciones nativas de la nube es extremadamente importante.

Otro problema con los microservicios es la seguridad de la red. En particular, la identificación y el control de acceso adquieren un nuevo nivel de complejidad. La programación insegura y las fallas en los mecanismos de descubrimiento de servicios son ejemplos de otras vulnerabilidades.

Los microservicios son más difíciles de proteger que las aplicaciones monolíticas, pero aun así puedes salvaguardarlos de manera efectiva si desarrollas un plan sólido y sigues las prácticas recomendadas.

Mejores prácticas para la seguridad de microservicios

Uno de los mejores enfoques es utilizar una combinación de mejores prácticas, tecnologías y controles para salvaguardar todo el ecosistema. Dependiendo del tipo de servicios, aplicaciones, usuarios, entorno y otras consideraciones, la estrategia real puede variar.

Si desea emplear microservicios, debe asegurarse de que se cumplan todos los requisitos de los servicios, conexiones y datos en términos de seguridad.

Examinemos ahora algunos procedimientos sólidos de seguridad de microservicios.

Privilegios mínimos

Los contenedores se utilizan ampliamente en la arquitectura de microservicios y protegerlos desde adentro hacia afuera es crucial para minimizar la superficie de ataque y los riesgos asociados. Uno de los principios de seguridad esenciales para las aplicaciones basadas en contenedores es el principio de privilegio mínimo . Este principio implica otorgar el mínimo de autorización y acceso necesarios para que un proceso ejecute sus tareas.

Microservicios en arquitecturas nativas de la nube: consideraciones clave 1

Seguir el principio de privilegio mínimo implica varias prácticas, como evitar el uso de cuentas privilegiadas o sudo para ejecutar servicios o realizar otras operaciones. En cambio, lo mejor es limitar los permisos otorgados a servicios o aplicaciones en contenedores solo a los necesarios. Esto puede incluir restringir el acceso a archivos confidenciales, evitar la instalación de paquetes innecesarios y regular el uso de recursos para evitar abusos o ataques de agotamiento de recursos.

Para implementar el principio de privilegio mínimo, los desarrolladores deben adoptar varias soluciones, como herramientas de orquestación de contenedores que admitan control de acceso basado en roles (RBAC) y límites de recursos, mallas de servicios que proporcionen autenticación y autorización mTLS, y soluciones de gestión de identidad y acceso (IAM ) .

Autenticación multifactor

La implementación de la autenticación multifactor mejora la seguridad del front-end. Además de su nombre de usuario y contraseña, los usuarios también deberán proporcionar otra forma de identificación, como un código enviado por mensaje de texto a sus teléfonos o una dirección de correo electrónico predeterminada. Dado que no podrán realizar la segunda autenticación, la estrategia dificulta que los atacantes que podrían estar utilizando credenciales robadas o comprometidas accedan a los microservicios.

Token de acceso y autorización de usuario

La autorización y el control de acceso son requisitos críticos para muchas aplicaciones y servicios que implementan microservicios. Un marco de autorización como OAuth 2.0 y OpenID puede garantizar la seguridad de sus microservicios procesando tokens de forma segura. Esto permite que programas de terceros accedan a datos de usuario u otros servicios.

Durante la implementación, la aplicación principal a menudo solicita el permiso del usuario para permitir que el servicio de terceros acceda a los recursos necesarios. Cuando el usuario otorga permiso, el programa genera un token de acceso para la sesión. Este token se utiliza para autenticar solicitudes posteriores, lo que garantiza que solo se procesen las solicitudes autorizadas.

Puerta de enlace API

Los microservicios a menudo constan de una serie de partes que están dispersas en varias redes y a las que pueden acceder una variedad de clientes y sistemas. La vulnerabilidad y las amenazas a la seguridad aumentan cuando los microservicios quedan expuestos. Crear un punto de entrada único y seguro que le permita concentrar todo el acceso de los clientes y otros sistemas es una técnica para protegerlos.

Microservicios en arquitecturas nativas de la nube: consideraciones clave 2

Implemente una puerta de enlace API para verificar todas las solicitudes entrantes en busca de fallas de seguridad antes de reenviarlas a los microservicios adecuados para lograrlo. Entre las aplicaciones cliente y los microservicios se encuentra la puerta de enlace API. Luego, restringe el acceso a los microservicios al tiempo que ofrece funciones adicionales de administración de solicitudes como monitoreo, enrutamiento de solicitudes, almacenamiento en caché, terminación SSL, traducción de protocolos, autenticación y más.

Comunicación entre servicios

Cuando dos microservicios interactúan, los métodos efectivos requieren solicitudes de autenticación y autorización.

Para proteger las conexiones entre servicios, puede emplear principalmente tres métodos diferentes. Incluyen Mutual Transport Layer Security (mTLS o Mutual TLS), JSON Web Token (JWT) y Trust the network.

Supervisión

Debido a la naturaleza dispersa de los microservicios, debe contar con una estrategia de monitoreo sólida para cada componente.

Al utilizar la supervisión continua, puede identificar y resolver rápidamente las amenazas a la seguridad. A esto contribuyen Prometheus, Statsd, InfluxDB, Logstash y otras herramientas para monitorear microservicios.

Protección de Datos

Los microservicios dependen de componentes distribuidos para ofrecer ventajas como mayor flexibilidad y opciones de implementación. Sin embargo, las organizaciones deben cambiar las reglas y tácticas de seguridad internas hacia un enfoque más distribuido y nativo de la nube cuando utilizan microservicios.

Reduzca la superficie de ataque mientras protege el entorno para microservicios, API, aplicaciones y datos.

Automatizar las prácticas de seguridad

Automatice las operaciones de seguridad, incluida la implementación de parches, el análisis de vulnerabilidades, la supervisión, la aplicación de políticas y otras tareas. Verifique también las actualizaciones para asegurarse de que sean seguras y no creen nuevas vulnerabilidades.

Después de las actualizaciones, lo ideal es que el software de seguridad realice comprobaciones en todos los contenedores y microservicios para determinar si puede haber habido posibles fallos de seguridad.

Resumen

El uso de microservicios puede resultar muy beneficioso para las organizaciones, ya que ofrecen ventajas como mayor flexibilidad y opciones de implementación. Por eso es aconsejable considerar su uso. Sin embargo, las organizaciones que utilizan microservicios deben estar preparadas para cambiar las reglas y tácticas de seguridad internas hacia un enfoque más distribuido y nativo de la nube.

Si bien la compensación puede no parecer insignificante, el cambio le permite reducir la superficie de ataque y al mismo tiempo proteger el entorno para microservicios, API, aplicaciones y datos. Por tanto, en definitiva, se convierte en una inversión que merece la pena.