Índice de temas
Qué son Kubernetes
A medida que las organizaciones adoptan cada vez más un enfoque nativo de la nube para desarrollar y escalar aplicaciones; los contenedores y Kubernetes están desempeñando un papel fundamental en la gestión de las crecientes complejidades al permitir que las cargas de trabajo se lleven a cabo en entornos multi-cloud.
Sin embargo, una encuesta reciente realizada a profesionales de DevOps reveló que el 94% había experimentado al menos un incidente de seguridad de Kubernetes en el último año, y el 59% considera que la seguridad es su mayor preocupación a la hora de utilizar Kubernetes y contenedores. Mientras que cada vez más equipos de DevOps recurren a Kubernetes para satisfacer las demandas de escalabilidad de su organización, no se deben pasar por alto principios básicos como la seguridad y la protección de datos.
Despliegue de Kubernetes
A los desarrolladores se les pide que creen aplicaciones más grandes y escalables en entornos más dinámicos. Por lo tanto, para el equipo de operaciones o de infraestructura, mantenerse al día con las cambiantes prácticas de desarrollo de software puede suponer un trabajo a tiempo completo. Kubernetes son sólo el último reto (y posiblemente el más complejo), pero su objetivo sigue siendo el mismo: ¿cómo podemos reducir el riesgo, minimizar los costes y ofrecer un mejor resultado empresarial en general?
Los equipos de desarrollo son los “pioneros”, exploran nuevos terrenos y construyen algo donde antes no existía nada. Por su parte, los equipos de operaciones e infraestructura son los “colonizadores”, llegan en una segunda oleada para consolidar los nuevos desarrollos y asegurarse de que sobrevivan a largo plazo. Este es exactamente el caso de Kubernetes. Cuando Kubernetes se encuentra en la fase de virtualización o adopción, normalmente recae sobre los equipos de operaciones la responsabilidad de los resultados reales para el negocio.
Sin embargo, es mucho pedir que estos equipos entiendan las particularidades de Kubernetes y de los contenedores. Incluso con la nueva tecnología, es necesario respetar los principios básicos: la seguridad, las copias de seguridad y la recuperación siguen siendo necesarias. No obstante, son los requisitos técnicos los únicos que pueden suponer un reto.
Seguridad en Kubernetes y Zero Trust
Como programa nativo de la nube, muchos de los desafíos de seguridad para Kubernetes provienen de la naturaleza dispersa de la arquitectura de la nube. Las diferentes cargas de trabajo pueden ejecutarse en varias ubicaciones diferentes, incluyendo multi-cloud, así como servidores locales y externos. Esto no solo aumenta enormemente el panorama de amenazas en el que puede producirse un ataque o un error, sino que también puede suponer grandes retos de visibilidad, lo que dificulta la supervisión de los contenedores y la detección de problemas.
Mientras Kubernetes está diseñado para ser seguro, respondiendo únicamente a las solicitudes que puede autenticar y autorizar, también ofrece a los desarrolladores opciones de configuración a medida, lo que realmente significa que solo es tan seguro como las políticas RBAC (control de acceso basado en roles) que configuran los desarrolladores. Kubernetes también utiliza lo que se conoce como una “red plana” que permite a los grupos de contenedores (o pods) comunicarse con otros contenedores por defecto. Esto plantea problemas de seguridad ya que, en teoría, los atacantes que comprometen un pod pueden acceder a otros recursos en el mismo clúster.
A pesar de esta complejidad, la solución para mitigar este riesgo es bastante sencilla: una estrategia de Zero Trust. Con una superficie de ataque tan grande, un diseño de red bastante abierto y cargas de trabajo ubicadas en diferentes entornos, una arquitectura de Zero Trust, que nunca confía y siempre verifica, es crucial cuando se construye con Kubernetes.
El principio de la arquitectura de Zero Trust consiste en alejar el foco de la seguridad del perímetro de una aplicación, y aplicar esos principios en todo su recorrido. Todas las solicitudes internas se consideran sospechosas y se exige la autenticación de arriba a abajo. Esta estrategia ayuda a mitigar el riesgo al suponer que las amenazas existen en la red en todo momento, por lo que mantiene constantemente procedimientos de seguridad estrictos en torno a cada usuario, dispositivo y conexión. Para la arquitectura fluida y descentralizada de Kubernetes esto es imprescindible.
Backup y recuperación
Otro principio básico que se necesita para mitigar los riesgos de las aplicaciones de Kubernetes es el backup y la recuperación. Este es un concepto muy conocido, pero hay muchas formas a la hora de hacer backup de Kubernetes y contenedores. Estos diferentes requisitos para el backup de datos se deben a que Kubernetes, es fundamentalmente diferente de otras arquitecturas, por ejemplo, no tiene aplicaciones de mapeo a los servidores o máquinas virtuales.
Los sistemas de copia de seguridad de Kubernetes también deben estar centrados en las aplicaciones en lugar de en la infraestructura. Esto se debe a la filosofía DevOps y a los principios de “shift left”, que esencialmente significan que el desarrollador tiene más control sobre la infraestructura y los despliegues. Otros requisitos exclusivos de las copias de seguridad de Kubernetes son la escala de la aplicación, las lagunas de protección y la integración del ecosistema.
Al recuperar entornos de Kubernetes, se necesita un plan de ejecución detallado que identifique las dependencias del clúster, actualice las aplicaciones para reflejar los nuevos componentes de almacenamiento y traduzca el plan en las interfaces de programación de aplicaciones (API) de Kubernetes pertinentes. Mientras el backup requiere una solución nativa de Kubernetes a medida, estos procesos de recuperación siguen siendo fundamentales para la salud de la empresa a largo plazo. La restauración eficiente y la recuperación de desastres no son negociables en el entorno actual, ya que las interrupciones cuestan aproximadamente 1.459 euros por minuto.
Sin embargo, más allá de esto, el backup tiene un enorme valor en términos de pruebas y propósitos de desarrollo, y a la hora de permitir la movilidad de las aplicaciones. La movilidad de las aplicaciones se refiere a la capacidad de migrar una aplicación a un entorno diferente, ya sea en las instalaciones, las nubes, los clústeres o las distribuciones de Kubernetes. Esto es cada vez más importante dado que los entornos de TI se vuelven cada vez más complejos y las empresas necesitan responder a nuevos requisitos empresariales, adoptando nuevas plataformas tecnológicas u optimizando los costes.
Preparados para el cambio
A pesar de que Kubernetes presenta nuevos retos técnicos; en última instancia, cuanto más cambian las cosas, más permanecen igual. Los equipos de operaciones e infraestructura están más que acostumbrados a incorporar nuevas herramientas en componentes tecnológicos en constante expansión y principios básicos como la mitigación de riesgos a través de la protección de datos moderna, siguen cumpliendo su propósito.
Una vez establecidas estas capacidades, los equipos de operaciones pueden empezar a mirar más allá y explorar el valor de sus datos a través de actividades como las pruebas y la optimización. Gracias a una copia de seguridad sólida que admita la movilidad de las aplicaciones, los equipos también pueden recorrer un largo camino para preparar las aplicaciones para el futuro, garantizando que los servicios puedan aprovechar más fácilmente la próxima ola de cambios. Aunque Kubernetes es la herramienta actual que está cambiando el panorama del desarrollo, seguramente no será la última.