¿Qué es Zero Trust o Confianza Cero?
Comencemos con una breve explicación de los conceptos principales. Definamos, ¿qué es Zero Trust?
Básicamente Confianza Cero quiere decir que nuestras arquitecturas deben ser creadas para no confiar en nada ni en nadie; todos los usuarios, dispositivos IoT, móviles, redes, etc. deben ser autenticados y autorizados antes de poder transaccionar en nuestras redes.
El concepto de Confianza Cero, no es un concepto nuevo ya que desde mucho antes del 2010 los que nos dedicamos
a pruebas de seguridad venimos pregonando que no se debe confiar en usuarios, dispositivos, etc.,
simplemente porque están dentro de lo que se considera el perímetro, "de este lado del Firewall", erróneamente
mucha gente de IT piensa en términos de fuera del perímetro y dentro del perímetro y que el Firewall nos
protege de todo lo que hay afuera, una vez dentro no hay de que preocuparse, pues ya han pasado los "estrictos"
controles de que se tienen para protegernos de lo externo. Una y otra vez nos damos cuenta que esto está muy alejado
de la realidad.
Sin embargo decir no confíes en nada ni en nadie se dice fácil, pero implementarlo no lo es. Zero Trust no es
un producto es un paradigma, así que ningún vendor podría decir que tiene toda la solución para convertir a
las organizaciones en Zero Trust, implementar este nuevo paradigma conlleva muchas cuestiones en este artículo vamos a
hablar en específico de Microservicios. Ahora bien.
¿Qué son los Microservicios?
Los Microservicios son un estilo de arquitectura que descompone las aplicaciones en fragmentos pequeños al
contrario de hacer una aplicación que haga todo el trabajo por sí misma, lo que se conoce como monolito.
Este paradigma promete hacer que los desarrollos de software sean más fáciles de crear, sean más
integrados y sean más fáciles de mantener.
Los micro servicios son:
Altamente mantenibles y testeables
Tienen un bajo grado de acoplamiento
Desplegables independientemente
Organizado en torno a las capacidades del negocio
Pertenecen a un equipo pequeño
Es lo contrario a aplicaciones monolíticas donde toda la funcionalidad esta dentro de una "gran" aplicación
si algo falla, toda la aplicación falla, si hay que cambiar algo, se debe detener todo, etc.
Ambos paradigmas de monolitos y microservicios tienen sus pros y contras y sus casos de uso, dependiendo
de las necesidades y ecosistema.
Los microservicios no son la panacea pero, para cierto tipo de aplicaciones han venido a revolucionar la
industria del software.
¿Qué son las APIs?
Regularmente se emplea indistintamente Microservicio con APIs, pero no son los mismo, la definición de API es: Application Programming Interface o Interfaz de Aplicación Programable, es como las aplicaciones se comunican entre sí, las APIs son el medio por el cual se comunican algunos microservicios, las APIs han existido desde el inicio de la informática, los Sistemas Operativos utilizan API calls por ejemplo.Para abonar a la confusión, también a veces se usa indistintamente API con Web Service y tampoco son lo mismo, un API puede no ser un Web Service pero un Web Service siempre es un API. :)
Cada vez que usas Facebook, envías un mensaje, checas el clima, haces una transferencia, estas usando APIs.
¿Pero cómo protejo mis APIs en mi red interna?
Habíamos mencionado que en Confianza Cero realmente debemos dejar de pensar en red interna y red externa, todo deber ser considerado inseguro hasta que se demuestre lo contrario, no importa de donde venga o de quien venga todo deber autenticarse y autorizarse explícitamente para poder operar.Una buena practica para asegurar las APIs es emplear mTLS o mutual TLS para autentificación mutua y JWTs (JSON Web Token).
¿Qué es mTLS?
Creo que la mayoría estamos familiarizados con el funcionamiento de TLS que son los certificados que nos aparece en nuestro browser y nos dicen que la página que estámos visitando es quien dice ser y además cifra los datos en tránsito. En el caso de nuestro browser solo un participante se autentifica: el servidor o sitio con el que nos estamos comunicando, pero nosotros no nos autentificamos con él, en cambio con mTLS como su nombre lo dice la autentificación es mutua, de este modo ambas partes saben que están hablando con alguien autorizado pues cuentan con los certificados criptográficos para probarlo.¿Que es un JWT?
Ya resolvimos la parte de la autentificación entre APIs con mTLS, ahora para la parte de autorización donde le decimos al cliente que tipo de permisos tiene o cuál es su nivel de acceso. Emplearemos JWTs, que simplemente son archivos de texto en formato JSON que son firmados digitalmente lo que asegura la integridad de lo que se comunica, los JWT también pueden ser cifrados pero con mTLS regularmente no es necesario.Conclusión:
Con mTLS y JWTs podremos lograr una arquitectura de Confianza Zero y proveer autentificación y autorización con un alto grado de confianza para nuestras APIs y microservicios.Estén atentos pues planeamos llevar a cabo una demostración empleando Python de como lo llevamos a la practica y puedan usar este mismo patrón con cualquier lenguaje.
Escrito Por:
Luis Moreno
Security Architect