Por qué GitOps es esencial para DevSecOps
Publicado: 2022-02-24Las ganancias de DevOps para la automatización, la trazabilidad y, específicamente, la colaboración entre los grupos y las partes interesadas previamente aislados son muy aceptadas. Pero como los grupos de DevOps tienen la tarea significativa de cambiar las operaciones a entornos de Kubernetes en contenedores, las tácticas de DevOps que se intentaron y probaron durante mucho tiempo pueden acortarse. Los problemas de seguridad, y las trampas, también se manifiestan en métodos únicos.
La buena noticia es que GitOps sirve para llenar una serie de lagunas en DevOps para la estabilidad de los entornos distribuidos. Esto se debe al hecho de que los procesos de GitOps son muy propicios para DevSecOps, definidas aquí como las tácticas más efectivas de seguridad que se aplican a todo el ciclo de vida del software.
En este artículo, vislumbramos cómo GitOps ofrece un marco vital para DevSecOps, para las comprobaciones de seguridad que aumentan a través de CI/CD, así como durante las fases de implementación y redacción de la administración de aplicaciones en clústeres de Kubernetes.
Un recurso inmutable solitario de la realidad
GitOps se puede describir como:
Un diseño funcional para Kubernetes y otros sistemas nativos de la nube, que proporciona un conjunto de los mejores procedimientos que unifican la implementación, la administración y el monitoreo de Git para clústeres y propósitos en contenedores.
Un camino hacia una experiencia práctica de desarrollador para manejar programas exactamente donde se utilizan canalizaciones de CI/CD de extremo a extremo y flujos de trabajo de Git para cada operación y desarrollo.
Git es el único recurso de verdad real, ya que la configuración deseada se declara aquí. Hay un agente de GitOps que se ejecuta dentro de Kubernetes, regularmente compara la información real dentro de Kubernetes con la información buscada guardada en Git. Cualquier variación nueva fusionada en el departamento monitoreado en Git se aplica instantáneamente a Kubernetes. Por el contrario, todas las variaciones del manual utilizadas directamente en Kubernetes se revierten mecánicamente al estado ideal declarado en Git. Se elimina la deriva de configuración.
Por lo general, Git se describe acertadamente como el único recurso de la verdad real cuando se aplica a GitOps, gracias a su composición inmutable. Entre otras cosas, ayudará a mantener un límite, que no es contrario a un firewall, que separa las preocupaciones entre CI y CD. De esta manera, la gama de formas involucradas en el avance de la aplicación como parte de CI: solicitudes de extracción, detección, confirmaciones, etc. - sigue estando separado en Git.
Para el desarrollador que crea una solicitud de extracción, la solicitud de extracción, en el momento en que se revisa y permite, se fusiona y se usa de forma rutinaria con el clúster en la próxima reconciliación, lo que generalmente requiere 15 minutos.
De forma predeterminada, el proceso es bidireccional; esto implica que una modificación fabricada directamente en Kubernetes se corresponde en Git cuando se ejecuta el ciclo de reconciliación futura (generalmente cada 15 minutos). Aun así, esta situación es significativamente menor que la mejor, cuando un miembro del equipo de DevOps o, lo que es peor, un intruso de actor negativo hace cambios directamente en los clústeres. Estas variaciones directas al clúster no se han examinado adecuadamente mediante solicitudes y aprobaciones de fusión y, como resultado, violan la teoría de GitOps de que Git actúa como fuente inmutable de verdad del asunto a medida que se produce la desviación.
En lugar de permitir que se produzca una deriva de mitigación, un recurso de verificación de GitOps puede enviar alertas si se producen cambios en el clúster que no se han utilizado inicialmente en Git. Cuando esto sucede, gracias a la pista de auditoría, el código de software en Git puede cambiar las modificaciones defectuosas diseñadas para los clústeres, a través de los controladores en su ubicación implementada en el entorno natural del tiempo de ejecución.
Por el contrario, cuando no se alcanza la inmutabilidad, puede producirse una deriva. Esto podría materializarse en el caso de un ataque a la red o cuando un miembro del equipo de DevOps modifica inadvertidamente la configuración del clúster para que sea diferente de lo que está en Git. La incongruencia se marca cuando esto sucede, mediante el uso del equipo de GitOps correcto, lo que simboliza un DevSecOps por excelencia que presentan los procesos de GitOps.
Las aplicaciones apropiadas automatizan el sistema de verificación continua para garantizar que el punto deseado de la configuración en el repositorio de Git coincida con el estado real en el clúster de Kubernetes. También se utiliza para conciliar y totalizar los despliegues tan pronto como estén efectivamente dedicados en la condición declarada del repositorio.
Gestión de auditoría
Las características de auditoría que presenta GitOps también son cruciales para la ayuda de DevSecOps. Al permanecer en el repositorio de Git como la única fuente de hecho, todas las aplicaciones, el código y las configuraciones se versionan y conservan una ruta de auditoría completa, que es una necesidad principal para cualquier entorno natural protegido. Esta pista de auditoría también se ofrece a menudo tanto a los desarrolladores como a los miembros del personal de operaciones, para que sepan lo que está funcionando en el clúster (la mayoría de los usuarios están restringidos al acceso de solo exploración a la configuración del clúster).
Es posible que el desarrollador no siempre necesite depender de los registros de auditoría tanto como lo hacen las funciones y los clientes del personal de DevSecOps, pero pueden usar la capacidad de comprender qué variaciones han ocurrido y cuál fue el impulso detrás de los cambios en el repositorio que sucedió. . En pocas palabras, para el desarrollador, así como para todos los miembros del personal de DevOps, todo está a solo un registro de Git.
Los registros de auditoría en Git también están disponibles y son muy fáciles de encontrar para los desarrolladores cuando sea necesario. Esto se debe a que la herencia final del proceso se captura en el programa de informe Git, que los desarrolladores entienden.
Con la disponibilidad de la pista de auditoría, también es factible revertir rápidamente los ajustes a las aplicaciones que han provocado dificultades. Esto es especialmente beneficioso cuando los clústeres se han visto comprometidos o mal configurados. En este caso, en lugar de tener que reconstruir un clúster desde cero, la pista de auditoría incluye la información buscada en el repositorio. Luego se implementan la configuración del clúster y los programas con el punto deseado de la pista de auditoría y el procedimiento de reconstrucción es automático.
Número de 'llaves del reino'

Los desarrolladores generalmente dependen de Jenkins, un servidor de automatización, para desarrollar, examinar y ayudar a CI/CD para la fabricación de canalizaciones para entornos de Kubernetes. Sin GitOps, los desarrolladores de otro modo podrían tener acceso inmediato a los clústeres de Kubernetes mientras implementan su código directamente. En otras palabras, los constructores, ya sea que sean parte de la organización o un contratista que opere de forma remota, tendrían acceso inmediato al entorno de producción y tendrían las "llaves del reino", por así decirlo. Esto rara vez es una circunstancia de seguridad ideal.
Todo lo que elegiría, en el caso mencionado anteriormente, es que el usuario inapropiado, o peor aún, un intruso, tenga acceso de comando KubeConfig o Kubectl a los clústeres en la fabricación que podrían ejecutar desde su computadora portátil. Si un atacante ha comprometido el proceso de CI y la credencial establecida, por ejemplo, también puede tener acceso a cualquier clúster al que tenga acceso el sistema de CI.
El simple hecho de que GitOps ayude a evitar que los usuarios, o atacantes, modifiquen las configuraciones del clúster sin dejar ningún rastro es principalmente vital para los equipos de operaciones y seguridad, además de ayudar a minimizar la carga mental del desarrollador. Al obtener el control, por ejemplo, el desarrollador generalmente no debe tener acceso directo a los nodos de Kubernetes y/o a las líneas de comando de kubectl. GitOps concilia casi cualquier cosa que los desarrolladores describan en Git, pero no permitirá el acceso manual a los clústeres de Kubernetes o los entornos de fabricación, excepto que los desarrolladores tengan permisos de control de acceso únicos.
Las funciones DevSecOps de GitOps son una forma de frustrar esta situación de vector de ataque para CD, protegiendo así las "llaves del reino". Cuando los operadores de GitOps, como Flux de código abierto, más sobre esto a continuación, se ejecutan dentro de Kubernetes y, por lo tanto, tienen acceso a los clústeres, los controles de descarga siguen estando dentro del marco de seguridad de Kubernetes. La accesibilidad del consumidor se establece mediante la asignación de privilegios a los espacios de nombres de grupos distintivos y miembros del grupo.
Como ejemplo de cómo DevSecOps y GitOps son notablemente propicios para una persona diferente, la Sección de Defensa de EE. UU. (DoD), Nicolas Chaillan, oficial principal de software de la Fuerza Aérea de EE. UU., describió hace poco cómo DevSecOps y GitOps — con Flux — desempeña un papel vital en el avance de su programa de software que respalda todo el espectro de las fuerzas de seguridad de los EE. UU.
“La seguridad y la protección no son negociables, pero también queremos que la empresa propia del desarrollador mejore la eficiencia y la velocidad”, dijo Chaillan.
Por ejemplo, GitOps es la "clave para nuestro logro en la configuración y el despliegue de Platform One en todo el Departamento de Defensa", afirma el Departamento de Defensa. Según el Departamento de Defensa, System Just one es "una variedad de distribuciones de Kubernetes, infraestructura como libros de código y contenedores reforzados, compatibles con la Fundación de Computación Indígena en la Nube (CNCF) permitidas y reforzadas", con canalizaciones de seguridad integradas.
Cheques y saldos
Los procedimientos de DevSecOps se combinan con los controles y balances de suministro de GitOps. De esta manera, el comando de accesibilidad que brinda ayuda a evitar que el desarrollador, o el intruso, acceda a un repositorio de código de suministro para introducir, por ejemplo, una puerta trasera, un día cero u otra forma de vulnerabilidad durante la duración del CI. procedimiento. Esto se debe simplemente a que todas las solicitudes de extracción son revisadas por pares.
Con DevSecOps compatible con el sistema CI, el uso de controles y equilibrios antes del código se dedica a Git y se implementa en el clúster. El desarrollador normalmente publicará una modificación como una solicitud de extracción, que es revisada por pares. Después de revisarlo y autorizarlo, el código se fusiona en Git y el archivo YAML del estado buscado se modifica en consecuencia.
La condición deseada se aplicará inmediatamente al clúster de Kubernetes. Como se mencionó anteriormente, los equipos GitOps correctos con características DevSecOps realizan un seguimiento constante de la condición precisa en el proceso objetivo, para asegurarse de que corresponda a lo que se declara en Git. Se emite una alerta si hay alguna variación, por lo que se pueden tomar medidas correctivas.
DevSecOps obstinado
Varias herramientas de GitOps son compatibles con DevSecOps. Flux de código abierto, por ejemplo, ayuda a mantener el repositorio de Git como la única fuente inmutable de verdad real. Las capacidades de Flux también se extienden a la regulación de accesibilidad para controles y balances durante CI/CD para código dedicado e implementado.
Para una experiencia Flux mucho más obstinada, el código abierto Weave GitOps Main simplifica las primeras formas de habilitar la automatización de CI/CD en muchos clústeres. El proceso de instalación de un método GitOps y DevSecOps con Weave GitOps Main implica un par de comandos sencillos en una consola.
Weave GitOps Company se ha convertido en la plataforma inicial de GitOps que automatiza el envío constante de aplicaciones y la gestión operativa automática para Kubernetes. a cualquier escala en arquitecturas de nube híbrida, multinube y perimetral.
Todas las herramientas ayudan a automatizar el monitoreo para garantizar que la configuración del clúster normalmente coincida con lo que está en Git para ayudar a evitar la deriva. Un seguimiento de auditoría completo y disponible permite que las reversiones de la configuración de la aplicación y el clúster se realicen sobre una base esencial, sin tener que reconstruir el clúster desde cero.
En resumen, GitOps representa la evolución de DevOps para entornos dispersos de Kubernetes, aunque DevSecOps se ha convertido en una forma importante de mantener la estabilidad de CI/CD para GitOps a lo largo del ciclo de vida de la aplicación.
Steve Waterworth es supervisor de marketing técnico en Weaveworks .