Mitos sobre la tecnología de contenedores

La tecnología de contenedores no es algo nuevo para nosotros. En artículos anteriores hablamos de las ventajas de trabajar con contenedores, y también vimos una comparativa de las tecnologías de contenedores con el concepto serverless. Ahora vamos a derribar algunos mitos que se asocian a esta tecnología.

En post anteriores, hablamos de virtualización a nivel de sistema operativo, algo que nos permite crear aplicaciones empaquetadas junto con sus dependencias y librerías dentro de un contenedor. Este contenedor software, a su vez, puede ejecutarse en otras máquinas independientemente del sistema operativo subyacente, siempre que se den ciertas condiciones.

De las ventajas ya hemos hablado ampliamente. Sin embargo, a pesar de lo que podemos pensar inicialmente, existen ciertos mitos alrededor de la tecnología de contenedores que debemos derribar. Por lo general, los mitos relacionados con la tecnología impiden o dificultan su adaptación y suelen generarse y difundirse por falta de información de calidad.

Mito: las aplicaciones en los contenedores son temporales y no requieren almacenamiento persistente

Es un error bastante grave relacionar el carácter temporal de las aplicaciones en contenedores con que no sea necesario disponer de almacenamiento persistente. De hecho, la temporalidad de las aplicaciones también es una suposición bastante a la ligera. Es cierto que una aplicación que se ejecuta en un contenedor puede ser temporal (no se «instala» físicamente), pero eso es independiente de si esta necesita, o no, almacenamiento físico persistente. Lo entenderemos con un ejemplo.

Supongamos que la aplicación que se ejecuta en cierto contenedor necesita trabajar con datos de usuario que introducimos, o que lee de una fuente externa. O, simplemente, que la aplicación está trabajando con datos críticos. Ahora, supongamos que se produce un apagón, o un desastre que conlleva la pérdida de esos datos que está manejando la aplicación. ¿Qué problemas generará esto? La pérdida de datos confidenciales o sensibles puede traer enormes problemas de reputación a la empresa, o problemas legales por incumplimiento de las normativas. Por tanto, el almacenamiento persistente sí puede ser muy necesario, aunque trabajemos con contenedores.

Mito: los contenedores no están en riesgo y no necesitan ser incluidos en las estrategias de mitigación de riesgos

Las amenazas internas o externas no tienen en cuenta si sus objetivos son temporales o persistentes. Esto es muy importante, pero también se ignora en muchas ocasiones. En el terreno de los contenedores, cualquier fichero escrito en el almacenamiento físico de la máquina en la que se ejecutan es accesible por un atacante que haya comprometido esa máquina… o la aplicación en sí misma.

Un atacante, al acceder con éxito al contenedor o al host del servidor del contenedor, puede acceder al sistema de archivos del contenedor de la misma manera que cualquier otra máquina virtual. Por lo tanto, todas las aplicaciones han de ser incluidas en las estrategias de mitigación de riesgos, sean temporales o persistentes.

Mito: los contenedores son más rápidos que las máquinas virtuales

Se suele creer que las aplicaciones en los contenedores se ejecutan «significativamente más rápido» que si lo hicieran en máquinas virtuales (MV). Si lo pensamos por partes, es cierto que los procesos se ejecutan tan rápido como en el host, lo cual podría sugerir que, en definitiva, es más rápido que ejecutarlo en una MV.

Sin embargo, ejecutar los contenedores tiene cierto impacto en las prestaciones que afectan al rendimiento, por tanto, en este sentido no ha lugar a la comparación de prestaciones. Lo que los contenedores hacen mejor que las MV es la gestión de recursos en el host, que es mucho más eficiente. A diferencia de una máquina virtual, un contenedor no monopoliza una cierta cantidad de memoria, espacio de almacenamiento o tiempo de CPU cada vez que se ejecuta.

Los contenedores tampoco tienen que duplicar un sistema operativo completo para ejecutar una sola aplicación. Esto no significa que las aplicaciones sean más rápidas, pero en entornos con recursos limitados sí puede haber diferencias. Lo que sí es verdad es que un contenedor «arranca» más rápido que una MV, pero eso no determina el rendimiento global.

Mito: los contenedores no son seguros

La base de este mito está en entender que los contenedores no son seguros porque sus aplicaciones se ejecutan bajo el mismo «techo» que el sistema operativo del host. Así, en teoría, sería más fácil escalar privilegios desde el interior de un contenedor para tomar el control del servidor host u otros contenedores. Según la creencia en la que se basa este mito, las máquinas virtuales no tienen esta vulnerabilidad.

Lo que sucede es que este aspecto de diseño de las plataformas de contenedores no las hace fundamentalmente inseguras. Simplemente, estamos ante la situación de que los contenedores no disponen de un mecanismo de seguridad que sí tienen las máquinas virtuales. Los contenedores son cada vez más seguros y, en resumidas cuentas, no existe la evidencia suficiente como para afirmar que esta vulnerabilidad se esté explotando.