GitLab : Devenir LA solution DevSecOps

Solution libre de « forge » pour le dépôt de code basé, tout comme GitHub, sur le gestionnaire de versions Git, GitLab continue son ascension. Il offre une solution intégrant parfaitement développement (Dev), sécurité (Sec) et « opérations » (Ops). Voyons ce qu’il en est au vu des fonctionnalités des dernières versions (12.8 et 12.9). Lancé en octobre 2011, GitLab CE (Community Edition) est enregistré sous licence MIT. Cela n’empêche pas son éditeur de le distribuer également en version payante. Gnome (l'interface graphique de bureau GNU/Linux) et GIMP (logiciel de retouche photo, le "Photoshop" open source), pour ne citer qu’eux, stockent leur code source sur GitLab. GitLab offre de nombreuses fonctionnalités pratiques et intéressantes, dont notamment un wiki intégré, un site dédié par projet et des capacités d’intégration en continu facilitant l’automatisation. Ses utilisateurs peuvent accéder aisément aux diverses parties de leur projet grâce à de nombreux outils tels qu’une visionneuse de code, des pull-requests ou des fonctions de résolutions de conflits. Le programme est, pour le principal, écrit en Ruby. Le logiciel peut être installé sur votre propre serveur ou utilisé en mode cloud, via Internet. L’interface utilisateur est propre et intuitive, évitant les informations inutiles. Le service inclut un journal d’activités, des révisions de code, le suivi des problèmes, différents wikis et, évidemment, l’intégration en continu. GitLab propose deux types de versions aux développeurs. La première, la version self-hosted (ou self-managed ou encore auto-hébergée) est gratuite mais vous devez télécharger le logiciel et l'installer sur votre propre serveur. La seconde, de type cloud SaaS, permet de disposer des mêmes fonctionnalités sans pour autant devoir installer l’outil. La version self-hosted se décline en 4 sous-versions : Ultimate, Premium, Core et Starter (lire encadré).

Une évolution constante et respectant le principe du CI/CD

GitLab ne plaisante pas avec la livraison en continu. Une nouvelle version sort chaque 22 du mois depuis 101 mois ! Le fait qu’un produit gérant le CI/CD respecte lui-même les préceptes d’une livraison régulière, sans retard et sécurisée est loin d’être négligeable. La dernière version (release) en date, sortie le 22 février, est la 12.8. La 12.9 devait sortir le 22 mars, la 13 le 22 avril, et ainsi de suite. Les nouvelles fonctionnalités sont chargées sur l’application en ligne sur GitLab.com chaque semaine, avec une release packagée disponible le 22 de chaque mois. La rc1 (release candidate n° 1) de la 12.9 est sortie le 10 mars dernier. La sécurité est un sport d’équipe, et si l’équipe est mal organisée ou a du mal à communiquer, cela ne peut pas fonctionner.

Une solution globale DevSecOps

GitLab est une plateforme DevOps open-source complète fournie dans une unique application. De l’idée originelle à la production, GitLab aide les équipes à améliorer le temps du cycle de plusieurs semaines à quelques minutes, à réduire les coûts du processus de développement et à diminuer le fameux TTM (time to market) tout en augmentant la productivité de développement. L’ambition de GitLab est clairement de devenir la première application regroupant tout le cycle de vie DevSecOps. En plus des intégrations natives Kubernetes et de la prise en charge des déploiements multi-cloud, l’éditeur poursuit son support opérationnel avec des outils comme la gestion des incidents, des indicateurs de fonctionnalités et un tableau de bord opérationnel offrant un aperçu des divers projets en cours et de l’état d’avancement de leur livraison. « La version 12 avait déjà marqué une étape clé dans notre cheminement vers la création d’une approche inclusive DevSecOps » souligne David DeSanto, directeur produit Secure & Defend chez GitLab. « Cela doit permettre à chacun de contribuer et fournit aux entreprises la possibilité de profiter d’une approche rationalisée au sein des équipes. » La solution open source cible, en plus des équipes en charge du développement et celles de l’exploitation de logiciels (DevOpS), les équipes responsables de la sécurité informatique (le « Sec » de DevSecOps). L’offre intègre des fonctionnalités de sécurité récemment publiées – telles que les tableaux de bord de sécurité, l’auto-remédiation des pannes et les approbations de sécurité. L’ensemble est complété de fonctionnalités supplémentaires de collaboration (Visual Review, Project Dependency list, Merge Trains, …). Les vulnérabilités détectées sont affichées directement dans la demande (merge request). Pour la partie opérations IT, outre le support du multicloud et des intégrations natives Kubernetes, des fonctionnalités ont également été ajoutées ou renforcées. C’est le cas pour la gestion des incidents. Les features flags permettent d’activer ou de désactiver des fonctionnalités. Encore d’après David DeSanto, « le tableau de bord opérationnel donne un aperçu des projets et de leur état d’avancement. La partie sécurité permet la mise en place d’une évaluation précise, automatisée et en continue de vos applications et services afin de pouvoir identifier de manière proactive leurs vulnérabilités et leurs faiblesses et de réduire ainsi au maximum tout risque en terme de sécurité. La sécurité ne représente pas une étape supplémentaire dans votre processus CI/CD ni un outil additionnel devant y être incorporé. Elle est parfaitement intégrée dans votre cycle DevOps, ce qui vous permet d’adapter vos tests et processus de sécurité divers à votre équipe projet (vos chers développeurs) et non le contraire, ce qui serait une gageure. ». La sécurité est un sport d’équipe, et si l’équipe est mal organisée ou a du mal à communiquer, cela ne peut pas fonctionner.

Planification

GitLab propose une planification et une gestion de portfolio à travers des epics, des groupes (des programmes) et des jalons afin de bien organiser et de suivre la progression du projet applicatif. « Indépendamment de la méthodologie, du cycle en cascade au DevOps, l’approche simple et flexible de GitLab en matière de planification peut aussi bien satisfaire aux besoins des équipes les plus petites jusqu’aux plus grandes structures. GitLab contribue à l’organisation et à la planification des projets » a aussi déclaré David.

Suivi des objectifs à réaliser

L’avancement du projet est planifié, organisé et suivi avec des objectifs, des étiquettes, des « story points » (système de points à base de « poids » typique de la méthode agile Scrum), des jalons (sprints Scrum et releases), le suivi du temps et les dates de recettes. Leur avancement peut être suivi à l’aide de Scrum, de Kanban, de SAFe ou d’autres méthodologies (agiles). Les tableaux de bords Kanban, à la fois efficaces et très souples d’utilisation, permettent de prioriser, gérer et suivre visuellement l’exécution du travail à effectuer. GitLab permet d’estimer, de suivre et d’effectuer des rapports sur le temps passé sur les différents objectifs. Vous pouvez aussi planifier le travail à réaliser en créant des Epics et en leur affectant tous les objectifs correspondants. Vous pouvez planifier et organiser les projets visuellement dans une vue de type feuille de route qui pourra être utilisée pour le suivi (de projet) et la communication. Vous pouvez, grâce aux « objectifs » GitLab, interconnecter les membres de votre équipe à des parties externes directement par email pour le retour d’informations et le support. Inutile pour cela d’employer des outils supplémentaires. Vous pouvez aussi planifier et suivre le testing et la qualité de votre produit.

Outils de branches

Vous pouvez créer, visualiser et gérer le code et les données projet grâce à des outils de gestion de branche. GitLab aide les équipes à concevoir, développer et à gérer en toute sécurité le code et les données projet d’un simple système de contrôle de version distribuée à la mise en œuvre d’itérations rapides et la production de valeur. Les dépôts GitLab fournissent une source « scalable » et unique pour la collaboration sur des projets et le code permettant aux équipes d’être productives sans interrompre leurs workflows (dans le sens de flux opérationnel).

Testing et vérification du code

Il faut contrôler la mise en place de standards de qualité stricts pour le code de production, avec des tests et du reporting automatiques. GitLab aide les équipes qui travaillent sur la livraison à pleinement maîtriser l’intégration en continue afin d’automatiser les builds (compilation), l’intégration et la vérification de leur code. Les principales capacités en termes d’intégration continue employées dans l’industrie offrent le testing automatisé, le testing de sécurité d’analyse statique, le testing de sécurité d’analyse dynamique et l’analyse de qualité du code afin de fournir un retour rapide aux développeurs et aux testeurs sur la qualité de leurs programmes. Avec des pipelines qui permettent le testing et l’exécution en concurrence (en mode parallélisé), les équipes ont rapidement un aperçu sur chaque commit (validation), leur permettant de livrer du code de meilleure qualité bien plus rapidement. La sécurité est un sport d’équipe, et si l’équipe est mal organisée ou a du mal à communiquer, cela ne peut pas fonctionner.

Package

GitLab permet de créer une chaîne d’approvisionnement logiciel cohérente et sûre avec la gestion de package intégrée. GitLab permet aussi aux équipes de développement de packager leurs applications et leurs dépendances, de gérer des containers et de créer des artefacts (toujours au sens Scrum du terme) aisément. Les dépôts privés, d’enregistrement de containers sécurisés et d’artefacts sont intégrés et préconfigurés en externe afin de pouvoir être employés facilement et en toute transparence avec le gestionnaire de code source GitLab et les pipelines CI/CD. L’énorme avantage des pipelines logiciels automatisés est qu’ils fonctionnent librement sans interruption (en mode workflow). « GitLab propose notamment SAST (Static Application Security Testing), DAST (Dynamic Application Security Testing (DAST), le scan de container et le scan de dépendance afin de faciliter la livraison d’applications sécurisées conformes aux licences », toujours selon David DeSanto.

Configuration des applications et de l’infrastructure

GitLab aide les équipes à configurer et à gérer leurs environnements applicatifs. Une intégration très forte avec Kubernetes simplifie la définition et la configuration de l’infrastructure nécessaire au testing et au déploiement de votre application. « Vous pourrez mieux protéger l’accès aux détails de configuration clés de votre infrastructure tels que les données d’identification et d’authentification en employant des « variables secrètes » afin de limiter l’accès uniquement aux utilisateurs et processus autorisés » dixit David.

Surveillance

GitLab propose une surveillance (monitoring) intégrée et la visualisation des modifications du code avec ses conséquences éventuelles. Ainsi vous êtes immédiatement informé des impacts consécutifs à toute modification du code sur votre environnement de production et vous pouvez y répondre plus vite et plus efficacement.

David DeSanto

David est directeur produit "Secure" et "Defend" chez GitLab avec plus de 15 ans d'expérience dans la recherche sur la sécurité et la stratégie produits, en tant que spécialiste de la sécurité réseaux. Avant de rejoindre GitLab, David faisait partie d'une des premières entreprises de services de tests, dirigeant la stratégie et l'organisation produits sécurité ainsi que les groupes de recherche sur la conception des UX et les menaces pour l'ensemble de l'entreprise. Au cours de sa carrière, David a également occupé des postes dans les meilleurs laboratoires de recherche et de test de sécurité du secteur.

Les différentes versions de GitLab

Commençons par la version self-managed : • Core : pour les petites équipes et/ou les projets personnels. • Starter : pour gérer quelques projets mais qui nécessitent  un support professionnel. • Premium : pour les équipes réparties géographiquement qui ont besoin de fonctionnalités avancées, d’une haute disponibilité et d’un support 24h/24 et 7 jours/7. • Ultimate : pour les entreprises qui veulent aligner stratégie et exécution avec un niveau de sécurité et de conformité avancé. La version Cloud SaaS, hébergée sur GitLab.com,  est accessible par inscription gratuite ou payante : • Free : dépôts privés et nombre de collaborateurs illimité par projet. Les projets privés ont accès aux fonctionnalités gratuites et les projets publics aux fonctionnalités  de type Gold. • Bronze : pour les équipes qui ont besoin d’un accès  à des fonctionnalités de type workflow plus avancées. • Silver : pour les projets qui nécessitent des fonctionnalités de type DevOps plus robustes  et un support avancé. • Gold : cette sous-version,  la plus complète, est adaptée  à tous types de jobs CI/CD.

Release

La solution de déploiement et de livraison en continu intégrée à GitLab vous permet de déployer vos applications de façon totalement automatisée, même sur des milliers de machines en simultané. GitLab assiste grandement l’automatisation de la création de release et de livraison d’applications en raccourcissant le processus de livraison, en rationnalisant les processus manuels et en améliorant la vitesse de travail des équipes. Avec la livraison en continue gérée de façon automatisée via des pipelines, les déploiements peuvent être automatisés pour de multiples environnements, évaluation comme production, et le système sait parfaitement quoi faire sans qu’il soit couramment nécessaire d’intervenir – même pour des modèles (patterns) relativement complexes tels que les déploiements à base de canaris (techniques de protection contre l’exécution de code malveillant employées par les compilateurs modernes). « Avec des flags de fonctionnalités, un audit et une traçabilité intégrés, des environnements à la demande et des pages GitLab pour la livraison de contenu statique, vous serez à même de livrer plus vite et avec une sécurité accrue, augmentant ainsi la confiance que vous portent vos clients » toujours d’après David.