Pourquoi GitOps est essentiel pour DevSecOps
Publié: 2022-02-24Les gains de DevOps pour l'automatisation, la traçabilité et plus particulièrement la collaboration entre les groupes et les parties prenantes préalablement cloisonnés sont largement acceptés. Mais comme les groupes DevOps sont considérablement chargés de déplacer les opérations vers des environnements Kubernetes conteneurisés, les longues tactiques DevOps tentées et testées peuvent raccourcir. Les problèmes de sécurité - et les pièges - se manifestent également dans des méthodes uniques.
La bonne nouvelle est que GitOps sert à combler une sélection de lacunes dans DevOps pour la stabilité des environnements distribués. Cela est dû au fait que les processus GitOps sont très propices à DevSecOps, définis ici comme les tactiques de sécurité les plus efficaces qui s'appliquent à l'ensemble du cycle de vie du logiciel.
Dans cet article, nous avons un aperçu de la façon dont GitOps offre un cadre vital pour DevSecOps, pour les contrôles de sécurité qui augmentent grâce au CI/CD, ainsi qu'à travers les phases de rédaction-déploiement de l'administration des applications sur les clusters Kubernetes.
Une ressource unique et immuable de la réalité
GitOps peut être décrit comme :
Une conception fonctionnelle pour Kubernetes et d'autres systèmes cloud indigènes, fournissant un ensemble des meilleures procédures qui unifient le déploiement, la gestion et la surveillance de Git pour les clusters et les objectifs conteneurisés.
Une voie vers une expérience pratique de développeur pour prendre en charge des programmes où les pipelines CI / CD de bout en bout et les flux de travail Git sont utilisés pour chaque opération et développement.
Git est la seule source de vérité réelle, car la configuration souhaitée est déclarée ici. Il existe un agent GitOps qui s'exécute dans Kubernetes, il compare régulièrement le point réel à l'intérieur de Kubernetes avec le point recherché enregistré dans Git. Toutes les nouvelles variantes fusionnées dans le département surveillé de Git sont instantanément appliquées à Kubernetes. Inversement, toutes les variantes du manuel utilisées pour Kubernetes sont automatiquement ramenées à l'état idéal déclaré dans Git. La dérive de configuration est éliminée.
Git est généralement décrit à juste titre comme la seule ressource de vérité réelle telle qu'elle s'applique à GitOps, grâce à sa composition immuable. Entre autres choses, cela aidera à maintenir une frontière - non contraire à un pare-feu - qui sépare les préoccupations entre CI et CD. De cette façon, l'éventail des moyens impliqués dans l'avancement de l'application dans le cadre de CI - demandes d'extraction, filtrage, validations, etc. - continuez à être séparé sur Git.
Pour le développeur qui crée une demande d'extraction, la demande d'extraction, au moment examiné et autorisé, est fusionnée et systématiquement utilisée pour le cluster lors de la réconciliation à venir, ce qui nécessite généralement 15 minutes.
Par défaut, le processus est bidirectionnel — cela implique qu'une modification fabriquée directement sur Kubernetes est réciproque sur Git lorsque la future boucle de réconciliation s'exécute (généralement toutes les 15 minutes). Même ainsi, cette situation est nettement inférieure à la meilleure, lorsqu'un membre de l'équipe DevOps ou, pire encore, un intrus acteur négatif apportera immédiatement des modifications aux clusters. Ces variations directes vers le cluster n'ont pas été correctement vérifiées au moyen de demandes de fusion et d'approbations, et par conséquent violent la théorie GitOps selon laquelle Git sert de source immuable de vérité sur le sujet lorsque la dérive se produit.
Au lieu d'empêcher la dérive de se produire, une ressource de vérification GitOps peut envoyer des alertes si des modifications sont apportées au cluster qui n'ont pas été initialement utilisées dans Git. Lorsque cela se produit, grâce à la piste d'audit, le code logiciel sur Git peut alors échanger les modifications défectueuses conçues pour les clusters, via les contrôleurs dans son point déployé dans l'environnement naturel d'exécution.
Inversement, lorsque l'immuabilité n'est pas atteinte, une dérive peut se produire. Cela peut se matérialiser lors d'une attaque contre le réseau ou lorsqu'un membre de l'équipe DevOps modifie par inadvertance la configuration du cluster afin qu'elle soit différente de ce qui se trouve sur Git. L'incongruité est signalée lorsque cela se produit - grâce à l'utilisation du bon équipement GitOps - symbolisant ainsi un DevSecOps par excellence que les processus GitOps présentent.
Des applications appropriées automatisent le système de vérification continue pour s'assurer que le point de sortie souhaité de la configuration sur le référentiel Git correspond à l'état réel dans le cluster Kubernetes. Il permet également de réconcilier et de totaliser les déploiements dès qu'ils sont effectivement dédiés dans l'état déclaré du référentiel.
Gérer les audits
Les fonctionnalités d'audit présentées par GitOps sont également cruciales pour l'aide DevSecOps. En restant sur le référentiel Git comme seule source de faits, toutes les applications, le code et les configurations sont versionnés et conservent un chemin d'audit complet, ce qui est une nécessité principale pour tout environnement naturel protégé. Cette piste d'audit est également généralement proposée aux développeurs et aux membres du personnel d'exploitation, afin qu'ils remarquent ce qui fonctionne dans le cluster (la plupart des utilisateurs sont limités à l'accès par navigation uniquement à la configuration du cluster).
Le développeur n'a peut-être pas toujours besoin de dépendre des pistes d'audit autant que les fonctions et les clients du personnel DevSecOps, mais ils peuvent utiliser la capacité de comprendre quelles variations se sont produites et ce qui a motivé les ajustements du référentiel qui se sont produits. . En un mot, pour le développeur - ainsi que pour tous les membres du personnel DevOps - tout n'est qu'à un journal Git.
Des pistes d'audit sur Git sont également disponibles et très simples à rechercher pour les constructeurs si nécessaire. Cela est dû au fait que l'héritage final du processus est capturé dans le programme de rapport Git, que les constructeurs comprennent.
Grâce à la disponibilité de la piste d'audit, il est également possible d'annuler rapidement les ajustements apportés aux applications qui ont déclenché des difficultés. Ceci est particulièrement avantageux lorsque les clusters ont été compromis ou mal configurés. Dans ce cas, au lieu d'avoir à reconstruire un cluster à partir de zéro, la piste d'audit se compose du point recherché dans le repo. La configuration du cluster et les programmes avec le point souhaité de la piste d'audit sont alors déployés et la procédure de reconstruction est automatique.
Nombre de "clés du royaume"

Les constructeurs dépendent généralement de Jenkins, un serveur d'automatisation, pour développer, examiner et aider CI/CD pour la fabrication de pipelines pour les environnements Kubernetes. Sans GitOps, les développeurs pourraient dans tous les cas avoir un accès immédiat aux clusters Kubernetes lorsqu'ils déploient directement leur code. En d'autres termes, les constructeurs - qu'ils fassent partie de l'organisation ou qu'ils soient un entrepreneur opérant à distance - auraient un accès immédiat à l'environnement de sortie et auraient les «clés du royaume», pour ainsi dire. Il s'agit rarement d'une situation de sécurité idéale.
Tout ce qu'il choisirait, dans le cas mentionné précédemment, c'est que l'utilisateur inapproprié - ou pire encore, un intrus - ait accès aux commandes KubeConfig ou Kubectl aux clusters en fabrication qu'ils pourraient exécuter à partir de leur ordinateur portable. Si un attaquant a compromis le processus CI et les informations d'identification établies, par exemple, il peut également avoir accès à n'importe quel cluster auquel le système CI a accès.
Le simple fait que GitOps aide à empêcher les utilisateurs - ou les attaquants - de modifier les configurations de cluster sans laisser de trace est principalement vital pour les équipes d'exploitation et de sécurité - en plus de contribuer à minimiser la charge mentale du développeur. Par get manage, par exemple, le développeur n'a généralement pas besoin d'avoir un accès direct aux nœuds Kubernetes et/ou aux lignes de commande kubectl. GitOps réconcilie donc à peu près tout ce que les constructeurs décrivent dans Git, mais ne permet pas l'accès manuel aux clusters Kubernetes ou aux environnements de fabrication, sauf que les constructeurs disposent d'autorisations de contrôle d'accès uniques.
DevSecOps de GitOps est un moyen de contrecarrer cette situation de vecteur d'attaque pour les CD, protégeant ainsi les "clés du royaume". Lorsque les opérateurs GitOps, tels que Open Source Flux - plus à ce sujet ci-dessous - s'exécutent à l'intérieur de Kubernetes et ont donc accès aux clusters, les contrôles d'accès restent dans le cadre de sécurité de Kubernetes. L'accessibilité du consommateur est établie en attribuant des privilèges aux espaces de noms de groupes distincts et de membres de groupe.
Comme exemple de la façon dont DevSecOps et GitOps sont remarquablement propices à une personne différente, la US Section of Defense (DoD), Nicolas Chaillan, principal responsable des logiciels informatiques de l'US Air Power, a récemment décrit comment DevSecOps et GitOps - avec Flux - joue un rôle essentiel dans l'avancement de son logiciel qui prend en charge l'ensemble du spectre des forces de sécurité américaines.
"La sûreté et la sécurité ne sont pas négociables, mais nous voulons également que l'entreprise indépendante du développeur améliore son efficacité et sa rapidité", a déclaré Chaillan.
À titre d'exemple, GitOps est la "clé de notre réussite dans la mise en place et le déploiement de Platform Just one dans l'ensemble du DoD", affirme le DoD. Selon le DoD, System Just one est "un assortiment de distributions Kubernetes autorisées et renforcées conformes à la Cloud Indigenous Computing Foundation (CNCF), d'infrastructures sous forme de manuels de code et de conteneurs renforcés", avec des pipelines de sécurité intégrés.
Contrôles et soldes
Les procédures DevSecOps se combinent avec les contrôles et bilans d'approvisionnement GitOps. De cette façon, la commande d'accessibilité qu'il donne aide à empêcher le développeur - ou l'intrus - d'accéder à un référentiel de code d'approvisionnement afin d'introduire, à titre d'illustration, une porte dérobée, un jour zéro ou encore une autre forme de vulnérabilité pendant la durée du CI. procédure. C'est simplement parce que toutes les demandes d'extraction sont examinées par des pairs.
Avec DevSecOps prenant en charge le système CI, les freins et contrepoids utilisés en amont du code sont dédiés sur Git et déployés dans le cluster. Le développeur publiera généralement une modification sous forme de demande d'extraction, qui est examinée par des pairs. Après examen et autorisation, le code est fusionné sur Git, et le fichier YAML de l'état recherché est ensuite modifié en conséquence.
La condition souhaitée sera immédiatement appliquée au cluster Kubernetes. Comme mentionné précédemment, un équipement GitOps correct avec des fonctionnalités DevSecOps garde constamment une trace de l'état précis dans le processus d'objectif, pour s'assurer qu'il rend la pareille à ce qui est déclaré sur Git. Une alerte est émise en cas d'écart, ce qui permet de prendre des mesures correctives.
DevSecOps opiniâtre
Une quantité d'instruments GitOps assistent DevSecOps. Open supply Flux, par exemple, aide à maintenir le référentiel Git en tant que seule source immuable de vérité réelle. Les capacités de Flux s'étendent également à la régulation de l'accessibilité pour les freins et contrepoids pendant le CI/CD pour le code dédié et déployé.
Pour une rencontre Flux beaucoup plus opiniâtre, la source ouverte Weave GitOps Main simplifie les premiers moyens d'activer l'automatisation CI/CD dans de nombreux clusters. Le système de mise en place d'une méthode GitOps et DevSecOps avec Weave GitOps Main implique quelques commandes simples sur une console.
Weave GitOps Company est devenue la plate-forme GitOps initiale qui automatise l'envoi régulier d'applications et la gestion opérationnelle automatique pour Kubernetes à n'importe quelle échelle dans les architectures de cloud hybride, multi-cloud et de périphérie.
Tous quelques outils aident à automatiser la surveillance pour garantir que la configuration du cluster correspond normalement à ce qui se trouve sur Git pour éviter la dérive. Une piste d'audit complète et disponible permet de produire des restaurations d'application et de configuration de cluster sur une base essentielle, sans avoir à reconstruire le cluster à partir de zéro.
En résumé, GitOps représente l'évolution de DevOps pour les environnements Kubernetes dispersés, bien que DevSecOps soit apparu comme un moyen important de maintenir la stabilité CI/CD pour GitOps, tout au long du cycle de vie de l'application.
Steve Waterworth est superviseur du marketing technique chez Weaveworks .