Seguridad en tecnologías Docker

Docker es un sistema de contenedores que ofrece una forma sencilla de empaquetar y aislar el software. Simplifica la instalación de aplicaciones complejas al proporcionar un sistema de archivos completo con todo lo necesario en un solo paquete. La idea detrás de Docker es facilitar a los programadores la creación y el despliegue de aplicaciones construidas a partir de componentes, dándoles al mismo tiempo la posibilidad de utilizar los componentes de otras personas. Docker proporciona un entorno aislado que permite evitar las interacciones entre los programas, haciendo que cada programa sea independiente del sistema operativo subyacente. Son muchos los beneficios de usar Docker para la empresa, pero ¿qué hay de las desventajas? Aquí le mostramos algunas maneras de evaluar si Docker será beneficioso para la empresa.

¿Cuáles son las ventajas de utilizar Docker?

Docker proporciona un nivel de abstracción entre el sistema subyacente y la aplicación. Esto significa que es fácil empaquetar aplicaciones de cualquier entorno y desplegarlas en cualquier lugar. No tiene que preocuparse de cómo se integrará su aplicación con el sistema operativo actual. El enfoque de contenedores de Docker también garantiza que sus aplicaciones estén aisladas unas de otras, evitando conflictos o dependencias. También cabe destacar que Docker está hecho para desarrolladores por desarrolladores: sus creadores son programadores y entienden lo que los programadores necesitan en un entorno.

Docker es un software de código abierto desarrollado para ofrecer una alternativa a las máquinas virtuales. La principal ventaja del software es la portabilidad de los contenedores, que se ejecutan en cualquier ordenador, independientemente del sistema operativo. Docker utiliza contenedores que incluyen sólo el software y los recursos necesarios para la ejecución de la aplicación. El contenedor puede trasladarse a otro servidor con un sistema operativo sin que se interrumpa la funcionalidad del contenedor.

¿Cuáles son las desventajas de usar Docker?

El uso de Docker tiene muchas ventajas, pero también hay desventajas en esta tecnología. Puede ser difícil configurar y utilizar Docker, ya que requiere tener un conocimiento del sistema operativo subyacente. También es importante tener en cuenta que Docker sólo puede utilizarse en sistemas basados en Linux. Aunque Docker fue diseñado para sistemas basados en Linux, no funcionará para realizar contenedores en máquinas Windows o en Macintosh.

¿De qué se compone la tecnología de Docker?

Cada contenedor consiste en un sistema encapsulado que se comporta como una máquina independiente y puede estar aislado de otros contenedores. Mediante la utilización de un conjunto de tecnologías se permite:

  • Que la aplicación tenga una vista de los recursos del sistema operativo (namespaces).
  • Limitar y medir los recursos que se encuentran disponibles en el SO (cgroups).
  • Disponer en el contenedor una vista ficticia de un sistema para el mismo, creando su propio entorno de ejecución root y home(chroot).

¿Cómo podemos proteger el entorno host que trabaja con Docker?

La evaluación de seguridad en Docker permite verificar los controles de seguridad presentes y configurados cuando se despliega Docker en un entorno de una organización. Se debe utilizar para evaluar la postura de seguridad del despliegue y ayudar a identificar las áreas de mejora.

Para poder asegurar un entorno de trabajo con Docker, el primer paso es analizar el Kernel de Linux del sistema operativo (SO) anfitrión, recordemos que no existe un SO completo en cada uno de los contenedores. Existen varias herramientas de código abierto para analizar el Kernel, como puede ser Lynis u OpenVAS, capaces de proporcionar un informe completo de fallos y recomendaciones a realizar para securizar el sistema.

La siguiente recomendación que se puede seguir para aislar aún más el entorno Docker añadiendo una capa extra de seguridad, es instalarlo sobre una máquina virtual, en lugar de en el propio sistema anfitrión.

Por defecto, Docker requiere privilegios de administrador (root) para crear y administrar los diferentes contenedores. Un script malicioso puede aprovechar este vector de ataque para realizar una escalada de privilegios en un host Linux. Para prevenir este vector de ataque, se pueden descartar capacidades como setgid y setuid para evitar que otros programas o procesos cambien su Identificador de Usuario (UID) o Grupo (GID) a otro distinto. Esto se podrá conseguir cuando se ejecuta el comando docker run añadiendo los parámetros --cap-drop SETGID y --cap-drop SETUID.

Otra opción recomendable es crear un usuario propio para administrar las operaciones de Docker, en lugar de usar un usuario administrador o root. Esto será tan sencillo como crear un usuario (groupadd) y añadirlo al grupo docker (usermod).

También se recomienda administrar los contenedores con Namespaces. Esto es un espacio de nombres que puede evitar que los contenedores se ejecuten como usuarios privilegiados, haciendo un mapeo entre los uid y gid del sistema anfitrión y del contenedor. Esta opción se habilitará mediante las funcionalidades de subuid y subgid.

Por último, y para evitar denegaciones de servicio por excesivo consumo de recursos de los contenedores, se recomienda administrar Docker mediante cgroups. Dado que un entorno productivo puede tener más de un contenedor, es posible asignar recursos del host a los contenedores mediante cgroups. Estos grupos de control permiten definir jerarquías en las que se agrupan los procesos de manera que un administrador puede definir con gran detalle la manera en la que se asignan los recursos como cpu, entrada/salida (I/O) o memoria.

Tags

He leído y acepto la política de privacidad
Acepto recibir emails sobre actividades de recruiting NTT DATA