spinner

Incrementa la seguridad de tus aplicaciones con Kata Containers

Existe una tecnología reciente de la cual se ha estado hablando mucho últimamente en los foros técnicos y que ha llevado a la Tribu de Cloud Privada a realizar un análisis por medio de una prueba de concepto controlada, revisando su estado actual, pros y contras respecto a la seguridad y rendimiento. Esta tecnología es conocida como Kata Containers.

 

En la vida de todo informático, en algún momento se ha enfrentado a la problemática de instalar alguna aplicación que necesita de la existencia de ciertas dependencias que no son compatibles con lo que ya se tiene desplegado, se conoce como “matrix from hell”. ¿Qué quiere decir? Que generalmente los desarrolladores cuando trabajan en su entorno local, se enfocan en ciertas versiones de software que tienen disponibles, sin estar conscientes que en Producción se encuentra una versión incompatible con lo que están haciendo, generando horas extras de adecuaciones a un software que ya funcionaba como era requerido. Estos problemas de compatibilidad que afectan desde simples librerías hasta sistemas complejos, han dado lugar a los contenedores. Lo que se busca con ellos es independizar de alguna forma a las aplicaciones, sin embargo empaquetar estas aplicaciones en contenedores ha descuidado la parte de la seguridad, que hoy en día cobra mucha importancia.

El poder de los contenedores

Los contenedores son una tecnología muy poderosa que permite aislar una aplicación junto con su entorno de ejecución “build, ship, and run anywhere”. Además permite que la división de funciones de desarrollo y operaciones se unifiquen, de tal forma que la misma persona que desarrolla, despliegue sus componentes, alineado con la filosofía DevOps. Permite empaquetar un producto de software listo para utilizarse en cualquier entorno productivo con únicamente lo necesario para ese fin, lo que facilita la rapidez en su despliegue y su replicación automática, ideal para un entorno cloud.

Los contenedores explotan dos características inherentes del propio kernel del Sistema Operativo Linux: la primera cgroups que permite restringir ciertos recursos de cómputo (por ejemplo, de procesador asignado a un proceso) y la segunda namespaces que permite aislar recursos (por ejemplo procesos que corran sin ser capaces de ver otros procesos, o un grupo de interfaces de red que no pueda ver el resto de interfaces disponibles).

Los contenedores son el nuevo paradigma de despliegue y distribución de aplicaciones. Aquí podemos ver el caso del despliegue de OpenStack+ Kolla, en donde se instala OpenStack basando su despliegue en contenedores.

¿Qué problemas de seguridad nos encontramos?

Los contenedores por defecto corren con permisos de administrador, y aunque no es lo recomendable, si no se tiene la administración adecuada, puede abrirse una gran brecha que posibilite a usuarios maliciosos tomar ventaja de esta condición. Al compartir un mismo kernel para todos los contenedores se tiene el riesgo de que un usuario malintencionado pueda subir de privilegios (convertirse en administrador) y comprometer el sistema, escapando del contenedor al que tiene acceso. Existen incluso imágenes de contenedores que pueden ser descargadas de un repositorio público y que pueden traer una puerta trasera, que disponibiliza un acceso por shell al equipo atacado, donde se está ejecutando ese contenedor. También se puede manipular el socket destinado para docker o el de un contenedor con la bandera privileged habilitada que le da más capacidades a los contenedores, y con ello permite instalar un módulo del kernel desde el propio contenedor de manera dinámica.

¿Puede ser Kata Containers la solución en seguridad?

Por todo lo anterior el aislamiento por software no es suficiente ya que si se compromete el host donde se ejecuta un determinado contenedor, se compromete el propio host donde reside este contenedor y por consecuencia, todos los contenedores que se ejecutan en este mismo. Kata Containers busca dotar de una capa más de aislamiento pero a nivel hardware, por medio de una máquina virtual ligera, esta capa extra de aislamiento es mucho más difícil de vulnerar, ejecutando cada contenedor en su propia máquina virtual. Esto significa que cada contenedor tiene su propio kernel, por lo que si éste es comprometido, el ataque se queda en esa capa, teniendo que emplearse un nuevo ataque para comprometer al host donde reside.

También permite que este aislamiento extra sea transparente para la forma en la que se operan los contenedores, disponibiliza un runtime distinto a runc, que es lo que hace la magia, y que obviamente requiere de una especificación extendida donde se puede indicar el hypervisor y kernel a emplear, con la posibilidad de utilizar una configuración a la medida de acuerdo a las necesidades.

Kata Containers como tecnología a considerar

Está tecnología cumple con uno de sus principales objetivos, y es que es muy fácil de utilizar, únicamente se configura el runtime de Kata y con ello cualquier operación sobre contenedores, por default, brindará esta capa extra de seguridad a los contenedores. Sin embargo, en las pruebas de stress que se hicieron sobre un contenedor que disponibiliza un servidor WEB NGINX, se evidenció un rendimiento muy por debajo del que tiene un contenedor normal, que aunque ya se esperaba, por el simple hecho de la existencia de un agente de Kata dentro de la propia máquina virtual que consume recursos, no se esperaba que fuera tan bajo en cuanto a tiempos de respuesta, errores y throughput. Los resultados de las pruebas runc vs QEMU fueron los siguientes: los tiempos de respuesta fueron de 567 ms vs 20508 ms, en throughput 185 vs 116 peticiones por segundo, y finalmente el porcentaje de errores fue de 0.3%, vs 11% de errores.

Cabe destacar que se decidió emplear un hypervisor de tipo 2 (hosted hypervisor) que es QEMU, el cual es el que brinda más características y por ende consume más recursos. El atractivo de Kata es que es tan versátil que se puede utilizar algún hypervisor más ligero como NEMU o Firecracker y con ello mejorar el rendimiento.

Sin duda Kata Containers es una tecnología que debe considerarse si se pretende tener un poco más de seguridad dejando a un lado, por ahora, el rendimiento.

Las opiniones vertidas por el autor son enteramente suyas y no siempre representan la opinión de BBVA Next Technologies.

¿Quieres saber que más cosas hacemos en BBVA Next Technologies?