Flatcar Container Linux
Flatcar Container Linux es, como su nombre sugiere, una distribución Linux mínima diseñada para ejecutar contenedores y ninguna otra cosa. Así de simple. Flatcar se basa en muchos de los conceptos relacionados con el desarrollo de aplicaciones nativas de la nube, ofreciendo una infraestructura inmutable que se vuelve a implementar con cada nueva compilación de su código.
Mientras nuestra aplicación se ejecuta no deseamos que el sistema operativo cambie, por tanto, este tipo de distribución se configura antes del despliegue, con una partición del sistema de sólo lectura. Flatcar se puede configurar de manera que se apliquen automáticamente los parches de seguridad, pero también pueden formar parte del proceso de compilación y despliegue. En todo caso, se proporcionan las herramientas precisas para gestionar el proceso de actualización, gestionando qué instancias pueden actualizarse, cuándo pueden ejecutarse las actualizaciones y con qué frecuencia deben aplicarse.
Una solución específica y mínima de gestión de contenedores es muy buena idea porque reduce enormemente los riesgos de seguridad. Al separar completamente los hosts, que se ejecutan sobre el mismo hardware, pero sin duda aislados desde el punto de vista lógico, la superficie de ataque disponible es mínima.
Existen versiones para tres canales de actualización diferentes: Estable, Beta y Alfa. La opción lógica para las aplicaciones en producción debería ser el canal Estable, mientras que Beta y Alpha se recomiendan para pruebas y desarrollo.
Los sistemas operativos inmutables
Flatcar forma parte de los conocidos como sistemas operativos inmutables, que son aquellos en los que algunos o todos los sistemas de archivos del sistema operativo son de solo lectura, y esa característica no se puede cambiar.
Estos sistemas operativos inmutables ofrecen muchas ventajas, porque, como mínimo, son intrínsecamente más seguros. La mayor parte de los ataques y exploits dependen de la escritura o modificación de archivos, con lo cual, al impedir estos cambios por pura construcción del SO, nos estaremos librando de un porcentaje enorme de amenazas.
En el caso de que un atacante encontrase y aprovechase un exploit, bastaría con un simple reinicio del sistema para eliminar cualquier rastro del malware que fuese inyectado.
Otra característica de los sistemas inmutables es que son más fáciles de administrar y actualizar que una distribución “completa”. Es lógico, son sistemas mínimos que tienen necesidades más localizadas. De esta forma, las imágenes del sistema operativo ni se parchean ni se actualizan, sino que se reemplazan de forma atómica. No hay medias tintas en este reemplazo, puesto que, o bien se completa con éxito, o bien fracasa: no hay posibilidad de actualizaciones parciales.
Al prescindir de cualquier módulo o funcionalidad que no tenga que ver exclusivamente con su objetivo, los sistemas inmutables son más estables que los SO convencionales. Por construcción, se dejan fuera muchos de los vectores que introducen inestabilidad en un sistema (por desgracia, la mayor parte de esos vectores tienen origen humano).
Características principales de Flatcar
Dado que Flatcar es un sistema operativo inmutable, la primera característica que podemos destacar es esa, precisamente: que la imagen del sistema operativo no va a cambiar a menos que se recompile. Es decir, nunca va a cambiar mientras se están ejecutando las aplicaciones. El punto de montaje /usr es una partición de sólo lectura y no se permiten otros paquetes. De esta manera hay menos posibilidades de fugas de información, ya sean intencionadas como accidentales.
Por otro lado, tenemos la capacidad de Flatcar de controlar infraestructuras globales a gran escala, gracias a las herramientas que incorpora. Las políticas de actualización, las instancias de grupo y las versiones pueden gestionarse de manera sencilla con poca complicación.
Flatcar reduce los problemas de dependencia y complejidad porque no existe el gestor de paquetes. Las dependencias y bibliotecas se envían en imágenes de contenedor, sin más.
Por último, pero no menos importante, está la seguridad, ya que el hecho de que la partición sea de sólo lectura y al incluir tan sólo lo necesario, se eliminan vulnerabilidades de seguridad de alto impacto y se reduce la superficie de ataque, tal y como comentamos con anterioridad.