DevOps...


Copio el link y el texto original, el post me lo envió Pablo y que me pareció 100% exacto, hago una interpretación libre.

http://www.vitavonni.de/blog/201503/2015031201-the-sad-state-of-sysadmin-in-the-age-of-containers.html


Mi interpretación.

LA TRISTE SITUACIÓN DE LOS SYSADMINS EN LA ERA DE LOS CONTENEDORES.

La administración de sistemas operativos está en un estado lamentable. Es un lío/follón/desastre.

Yo no me quejo de los administradores de sistemas de la vieja escuela. Ellos saben cómo mantener los sistemas en funcionamiento, gestionarlos y mantenerlos actualizados.
Este reclamo es hacia contenedores, máquinas virtuales prearmadas y el lío/desastre increíble que provocan porque su concepto carece de las nociones de "confianza" y "mejoras".

Consideremos por ejemplo Hadoop. Nadie parece saber cómo armar un servidor Hadoop desde cero.
Es un lío/desastre increíble de dependencias, requisitos de versiones y herramientas de compilación.

Ninguna de estas herramientas fashion/modernas se compilan/construyen usando el tradicional comando "make".
Cada herramienta tiene su propio, incompatible y no portable "metodo de es dia" para compilarse/construirse/instalarse.

Y ya nadie parece capaz de compilar las cosas desde cero/scratch, todos acaban por descargar binarios precompilados de sitios web aleatorios.
A menudo, sin ningún tipo de autenticación o firma.

Es el paraíso de la NSA y los virus.

Ya no necesitas explotar algún agujero de seguridad, simplemente hacer una "APP"/Aplicación, una máquina virtual o un contenedor Docker... y tendrás gente que descargue tu código binario malicioso en sus redes.

La página wiki de Haddop de Debian es un buen ejemplo típico. Básicamente, en 2010 la gente ha renunciado a poder construir Haddop desde las fuentes o paquetes Debian y a cambio ofrecen bonitos empaquetados.
(Debian aclara que no incluye paquetes de Haddop justamente por las dependencias https://wiki.debian.org/Hadoop )

Para construir Apache Bigtop, aparentemente, primero necesitas instalar Puppet3, Bajemos datos mágicos de internet, luego trata de hacer un "sudo" a Puppet para habilitar los backdoors de la NSA (por ejemplo, el proceso bajará e instalará una versión precompilada y vieja de JDK, porque considera que usted es demasiado estúpido para instalar Java)

Y luego esperemos que el compilado no lance 200 lineas de una traza inútil.
No es una broma/de coña. Tratará de ejecutar comandos, como por ejemplo,

/bin/bash -c "wget ​​http://www.scala-lang.org/files/archive/scala-2.10.3.deb; dpkg -x ./scala-2.10.3.deb /"
(invoca al shell bash, baja un .DEB en la carpeta local del usuario, lo instala y listo)

Tenga en cuenta que ni siquiera instalara el paquete correctamente, en cambio lo extrae en la carpeta home del usuario.
La descarga no compruebe ninguna firma, ni siquiera certificados SSL. (Fuente: El Manifiesto de Bigtop Puppet)

Aunque el compilado funcionase, implicará que Maven descargue código binario sin firmar de Internet y que lo use para generar un compilado.

En lugar de escribir/utilizar una arquitectura clara y modular, en estos dias todo muta en un gran lio de dependencias inter-conectadas.

La última ves que lo verifiqué, el classpath de Hadoop estaba formado por 100 Jars, apuesto que ahora estará en 150, aún sin usar el otro desastre de GranMezclaNuevaCosasSimplesUnidasElasticSearch (o cualquier otro componente de Apache)

EL término "Stack" es la nueva denominación/sinónimo de "no tengo idea de que estoy usando realmente".

Mavi, Ivy y SBT son las herramientas necesarias para que su sistema descargue datos binarios de internet y los ejecute/corra en su ordenador/equipo.

Y con los contenedores el desastre/caos es aun mayor.

¿ Alguna vez trató de aplicar un parche de seguridad a un contenedor ?
En esencia, el enfoque de Docker se reduce a descargar binarios sin firmar, correrlos y usted deseando que no contengan/instalen ningún backdoor en la red de tu empresa.

Siento como si estuviera en los '90 descargando Shareware para windows.
(una época donde aparecían millones de programas shareware que se descargaban de internet y se probaban durante unos dias, algunos de ellos con virus, troyanos y demás riesgos, donde se debía reinstalar Windows cada mes por la cantidad de basuras metidas que había, incluídas las que enviaba Ms también)

¿ Cuando aparecerá la primera imagen de Docker en la que contenga instalado el Ask ToolBar?
Que es AskToolbar
¿ O cuando aparecerá el primer gusano/worm distribuido mediante una imagen defectuosa/mal-armada de Docker ?

En el pasado, las distribuciones Linux trataban de proveerte un sistema operativo seguro. Con paquetes firmados, construidos mediante la confianza de la red (grupos colaborativos trabajando en diferentes partes del mundo, auditándose mutuamente, identificando y arreglando fallos).
Algunos aún trabajando en compilados que puedan ser reproducibles.

Pero entonces "todo se Windowizó" (copió las costumbres que exsiten en el entorno Windows), Las "Aplicaciones" estaban de moda, que podías bajar y probar sin preocuparte por temas de seguridad, o la posibilidad de actualizar la aplicación a la siguiente versión.
Porque solo "vives una ves esta vida". (concepto de vivir a lo loco porque te acabarás muriendo, mejor rápido que bien)

Actualización: estas costumbres empezaron mucho antes que exista "Docker", hoy en dia Docker es el "curl | sudo bash", es otra manera de bajar "algo" de internet y darle acceso al shell con todos los permisos.
Eso está bien (en un equipo de pruebas), pero es una barbaridad descargar y correr un programa desconocido en tu DataCenter.

Lo que esta ocurriendo es malo, MUY MALO. Antes los Administradores de Sistemas se esforzaban para evitar agujeros de seguridad, hoy se autodenominan "DevOps" (mitad desarrollador y mitad Operador) y alegremente ellos mismos introducen esos agujeros en sus redes.






The sad state of sysadmin in the age of containers

System administration is in a sad state. It in a mess.

I'm not complaining about old-school sysadmins. They know how to keep systems running, manage update and upgrade paths.
This rant is about containers, prebuilt VMs, and the incredible mess they cause because their concept lacks notions of "trust" and "upgrades".

Consider for example Hadoop. Nobody seems to know how to build Hadoop from scratch. It's an incredible mess of dependencies, version requirements and build tools.

None of these "fancy" tools still builds by a traditional make command. Every tool has to come up with their own, incomptaible, and non-portable "method of the day" of building.

And since nobody is still able to compile things from scratch, everybody just downloads precompiled binaries from random websites. Often without any authentication or signature.

NSA and virus heaven. You don't need to exploit any security hole anymore. Just make an "app" or "VM" or "Docker" image, and have people load your malicious binary to their network.

The Hadoop Wiki Page of Debian is a typical example. Essentially, people have given up in 2010 to be able build Hadoop from source for Debian and offer nice packages.

To build Apache Bigtop, you apparently first have to install puppet3. Let it download magic data from the internet. Then it tries to run sudo puppet to enable the NSA backdoors (for example, it will download and install an outdated precompiled JDK, because it considers you too stupid to install Java.) And then hope the gradle build doesn't throw a 200 line useless backtrace.
I am not joking. It will try to execute commands such as e.g.

/bin/bash -c "wget http://www.scala-lang.org/files/archive/scala-2.10.3.deb ; dpkg -x ./scala-2.10.3.deb /"

Note that it doesn't even install the package properly, but extracts it to your root directory. The download does not check any signature, not even SSL certificates. (Source: Bigtop puppet manifests)

Even if your build would work, it will involve Maven downloading unsigned binary code from the internet, and use that for building.

Instead of writing clean, modular architecture, everything these days morphs into a huge mess of interlocked dependencies. Last I checked, the Hadoop classpath was already over 100 jars. I bet it is now 150, without even using any of the HBaseGiraphFlumeCrunchPigHiveMahoutSolrSparkElasticsearch (or any other of the Apache chaos) mess yet.
Stack is the new term for "I have no idea what I'm actually using".

Maven, ivy and sbt are the go-to tools for having your system download unsigned binary data from the internet and run it on your computer.

And with containers, this mess gets even worse.

Ever tried to security update a container?
Essentially, the Docker approach boils down to downloading an unsigned binary, running it, and hoping it doesn't contain any backdoor into your companies network.

Feels like downloading Windows shareware in the 90s to me.

When will the first docker image appear which contains the Ask toolbar? The first internet worm spreading via flawed docker images?

Back then, years ago, Linux distributions were trying to provide you with a safe operating system. With signed packages, built from a web of trust. Some even work on reproducible builds.

But then, everything got Windows-ized. "Apps" were the rage, which you download and run, without being concerned about security, or the ability to upgrade the application to the next version. Because "you only live once".

Update: it was pointed out that this started way before Docker: »Docker is the new 'curl | sudo bash'«. That's right, but it's now pretty much mainstream to download and run untrusted software in your "datacenter".

That is bad, really bad. Before, admins would try hard to prevent security holes, now they call themselves "devops" and happily introduce them to the network themselves!


Comentarios

Entradas populares