[{"data":1,"prerenderedAt":1567},["ShallowReactive",2],{"/fr-fr/blog/how-gitlab-built-a-security-control-framework-from-scratch":3,"navigation-fr-fr":793,"banner-fr-fr":1216,"footer-fr-fr":1225,"blog-post-authors-fr-fr-Davoud Tu":1466,"blog-related-posts-fr-fr-how-gitlab-built-a-security-control-framework-from-scratch":1481,"blog-promotions-fr-fr":1505,"next-steps-fr-fr":1558},{"id":4,"title":5,"authors":6,"body":8,"category":774,"date":775,"description":776,"extension":777,"externalUrl":778,"featured":779,"heroImage":780,"meta":781,"navigation":434,"path":782,"seo":783,"slug":786,"stem":787,"tags":788,"template":791,"updatedDate":778,"__hash__":792},"blogPosts/fr-fr/blog/how-gitlab-built-a-security-control-framework-from-scratch.md","Comment GitLab a créé un framework de contrôle de sécurité de A à Z",[7],"Davoud Tu",{"type":9,"value":10,"toc":759},"minimark",[11,15,18,23,33,42,45,48,56,59,63,66,71,74,80,102,107,115,118,122,125,138,141,145,148,370,377,380,384,387,392,400,411,518,524,527,531,534,557,560,563,574,578,581,585,588,603,607,610,624,628,631,642,646,649,653,656,660,663,667,670,674,677,681,684,688,693,701,706,714,719,730,734,737,743,755],[12,13,14],"p",{},"L'équipe Security Compliance de GitLab a constaté que les frameworks de contrôle de sécurité existants ne permettaient pas la personnalisation nécessaire pour s'adapter à l'environnement multi-produits et cloud-native. Elle a donc décidé de créer son propre framework.",[12,16,17],{},"Découvrez ce que nous avons appris et pourquoi créer son propre framework de contrôle de sécurité personnalisé pourrait convenir à votre programme de conformité.",[19,20,22],"h2",{"id":21},"un-parcours-jalonné-de-frameworks","Un parcours jalonné de frameworks",[12,24,25,26,32],{},"Lorsque j'ai rejoint l'équipe Security Compliance de GitLab en novembre 2022, nous utilisions le ",[27,28,31],"a",{"href":29,"rel":30},"https://securecontrolsframework.com/",[],"Secure Controls Framework"," pour gérer les contrôles de nos certifications externes et nos besoins de conformité interne. Mais à mesure que nos exigences augmentaient, nous avons réalisé que nous avions besoin d'une solution plus complète.",[12,34,35,36,41],{},"Avec l'autorisation Federal Risk and Authorization Management Program (FedRAMP) dans notre roadmap, nous avons choisi d'adopter la norme ",[27,37,40],{"href":38,"rel":39},"https://csrc.nist.gov/pubs/sp/800/53/r5/upd1/final",[],"NIST SP 800-53",". Celle-ci comprend plus de 1 000 contrôles, mais son exhaustivité n'est pas entièrement adaptée à l'environnement de GitLab.",[12,43,44],{},"Nous n'avions pas besoin d'implémenter chaque contrôle NIST, mais uniquement ceux applicables à nos exigences spécifiques. Nous nous sommes concentrés sur la qualité des contrôles plutôt que la quantité. Implémenter des contrôles inutiles n'améliore pas la sécurité ; en réalité, un nombre excessif de contrôles peut fragiliser la sécurité d'un environnement, car les individus trouvent des moyens de contourner des contrôles trop restrictifs ou non pertinents.",[12,46,47],{},"Certains contrôles ne possédaient pas la granularité nécessaire à nos besoins. Par exemple, le contrôle AC-2 « Account Management » de la norme NIST couvre la création et le provisionnement des comptes, la modification et la désactivation des comptes, la suppression et la résiliation des comptes, la gestion des comptes partagés et de groupe, ainsi que la surveillance et la revue des comptes.",[12,49,50,51,55],{},"En pratique, il s'agit d'",[52,53,54],"em",{},"au moins"," six contrôles distincts avec des propriétaires, des procédures de test et des risques différents. Pour des certifications comme SOC 2, chaque activité est testée comme un contrôle séparé, car les exigences en matière de preuves et les contextes opérationnels diffèrent. Le contrôle AC-2 global de la norme NIST ne correspondait pas à la façon dont nous gérions réellement nos contrôles, ni à la façon dont les auditeurs nous évaluaient, et nous avions besoin de contrôles suffisamment granulaires pour refléter notre environnement opérationnel.",[12,57,58],{},"Nous nous retrouvions à personnaliser, ajouter et adapter constamment les contrôles NIST à notre environnement. À un moment donné, nous avons réalisé que nous n'utilisions plus vraiment la norme NIST SP 800-53 : nous étions en train de construire notre propre framework. Nous avons décidé qu'un framework de contrôle personnalisé, adapté à l'environnement de GitLab, permettrait de mieux répondre à notre offre multi-produits et aux besoins de conformité spécifiques de chaque produit.",[19,60,62],{"id":61},"création-du-gitlab-control-framework","Création du GitLab Control Framework",[12,64,65],{},"En cinq étapes méthodiques, nous avons construit notre propre framework de contrôles communs : le GitLab Control Framework (GCF).",[67,68,70],"h3",{"id":69},"_1-analyser-nos-besoins","1. Analyser nos besoins",[12,72,73],{},"Nous avons examiné nos contrôles existants et mis en correspondance chaque exigence de nos certifications externes déjà obtenues, les certifications figurant dans notre roadmap et notre programme de conformité interne :",[12,75,76],{},[77,78,79],"strong",{},"Certifications externes :",[81,82,83,87,90,93,96,99],"ul",{},[84,85,86],"li",{},"SOC 2 de type II",[84,88,89],{},"ISO 27001, ISO 27017, ISO 27018, ISO 42001",[84,91,92],{},"PCI DSS",[84,94,95],{},"TISAX",[84,97,98],{},"Cyber Essentials",[84,100,101],{},"FedRAMP",[12,103,104],{},[77,105,106],{},"Besoins de conformité interne :",[81,108,109,112],{},[84,110,111],{},"Contrôles pour les systèmes critiques non inclus dans la portée des certifications externes",[84,113,114],{},"Contrôles pour les systèmes ayant accès à des données sensibles",[12,116,117],{},"Cette première étape nous a permis d'établir la base de référence : quels contrôles doivent exister pour satisfaire nos obligations de conformité.",[67,119,121],{"id":120},"_2-sinspirer-des-frameworks-du-secteur","2. S'inspirer des frameworks du secteur",[12,123,124],{},"Ensuite, nous avons comparé nos exigences aux frameworks reconnus dans le secteur :",[81,126,127,129,132,135],{},[84,128,40],{},[84,130,131],{},"NIST Cybersecurity Framework (CSF)",[84,133,134],{},"Secure Controls Framework (SCF)",[84,136,137],{},"Common Controls Framework (CCF) d'Adobe et de Cisco",[12,139,140],{},"Étant donné que nous avions déjà adopté des frameworks par le passé, nous souhaitions nous inspirer de leur structure et nous assurer de ne pas négliger des domaines, des contrôles ou des bonnes pratiques de sécurité essentiels.",[67,142,144],{"id":143},"_3-créer-des-domaines-de-contrôle-personnalisés","3. Créer des domaines de contrôle personnalisés",[12,146,147],{},"À la suite de cette analyse, nous avons créé 18 domaines de contrôle personnalisés adaptés à l'environnement de GitLab :",[149,150,151,168],"table",{},[152,153,154],"thead",{},[155,156,157,162,165],"tr",{},[158,159,161],"th",{"align":160},"left","Abréviation",[158,163,164],{"align":160},"Domaine",[158,166,167],{"align":160},"Portée des contrôles",[169,170,171,183,194,205,216,227,238,249,260,271,282,293,304,315,326,337,348,359],"tbody",{},[155,172,173,177,180],{},[174,175,176],"td",{"align":160},"AAM",[174,178,179],{"align":160},"Gestion des audits et de la traçabilité",[174,181,182],{"align":160},"Journalisation, surveillance et tenue des pistes d'audit des activités système",[155,184,185,188,191],{},[174,186,187],{"align":160},"AIM",[174,189,190],{"align":160},"Gestion de l'intelligence artificielle",[174,192,193],{"align":160},"Développement, déploiement et gouvernance des systèmes d'IA",[155,195,196,199,202],{},[174,197,198],{"align":160},"ASM",[174,200,201],{"align":160},"Gestion des actifs",[174,203,204],{"align":160},"Identification, suivi et gestion des actifs de l'organisation",[155,206,207,210,213],{},[174,208,209],{"align":160},"BCA",[174,211,212],{"align":160},"Gestion des sauvegardes, de la continuité et de la disponibilité",[174,214,215],{"align":160},"Continuité d'activité, reprise après sinistre et disponibilité des systèmes",[155,217,218,221,224],{},[174,219,220],{"align":160},"CHM",[174,222,223],{"align":160},"Gestion des changements",[174,225,226],{"align":160},"Gestion des changements apportés aux systèmes, applications et infrastructures",[155,228,229,232,235],{},[174,230,231],{"align":160},"CSR",[174,233,234],{"align":160},"Gestion de la relation de sécurité côté client",[174,236,237],{"align":160},"Communication client, transparence et engagements de sécurité",[155,239,240,243,246],{},[174,241,242],{"align":160},"DPM",[174,244,245],{"align":160},"Gestion de la protection des données",[174,247,248],{"align":160},"Protection de la confidentialité et de l'intégrité des données",[155,250,251,254,257],{},[174,252,253],{"align":160},"EPM",[174,255,256],{"align":160},"Gestion des points d'entrée",[174,258,259],{"align":160},"Sécurisation des appareils et postes de travail des utilisateurs",[155,261,262,265,268],{},[174,263,264],{"align":160},"GPM",[174,266,267],{"align":160},"Gestion de la gouvernance et des programmes",[174,269,270],{"align":160},"Gouvernance de sécurité, politiques et supervision du programme",[155,272,273,276,279],{},[174,274,275],{"align":160},"IAM",[174,277,278],{"align":160},"Gestion de l'identité, de l'authentification et des accès",[174,280,281],{"align":160},"Identité des utilisateurs, mécanismes d'authentification et contrôle des accès",[155,283,284,287,290],{},[174,285,286],{"align":160},"INC",[174,288,289],{"align":160},"Gestion des incidents",[174,291,292],{"align":160},"Détection, réponse et reprise suite aux incidents de sécurité",[155,294,295,298,301],{},[174,296,297],{"align":160},"ISM",[174,299,300],{"align":160},"Gestion de la sécurité de l'infrastructure",[174,302,303],{"align":160},"Sécurité du réseau, des serveurs et de l'infrastructure de base",[155,305,306,309,312],{},[174,307,308],{"align":160},"PAS",[174,310,311],{"align":160},"Gestion de la sécurité des produits et applications",[174,313,314],{"align":160},"Fonctionnalités de sécurité intégrées au produit GitLab, utilisées en interne pour sécuriser le développement de GitLab (protection des branches et scans de sécurité du code)",[155,316,317,320,323],{},[174,318,319],{"align":160},"PSM",[174,321,322],{"align":160},"Gestion de la sécurité du personnel",[174,324,325],{"align":160},"Sécurité, formation et sensibilisation du personnel",[155,327,328,331,334],{},[174,329,330],{"align":160},"SDL",[174,332,333],{"align":160},"Gestion du cycle de développement logiciel et des acquisitions",[174,335,336],{"align":160},"Pratiques de développement logiciel sécurisé et acquisition de logiciels tiers",[155,338,339,342,345],{},[174,340,341],{"align":160},"SRM",[174,343,344],{"align":160},"Gestion des risques de sécurité",[174,346,347],{"align":160},"Évaluation, traitement et gestion des risques",[155,349,350,353,356],{},[174,351,352],{"align":160},"TPR",[174,354,355],{"align":160},"Gestion des risques liés aux tiers",[174,357,358],{"align":160},"Gestion des risques de sécurité liés aux fournisseurs et prestataires",[155,360,361,364,367],{},[174,362,363],{"align":160},"TVM",[174,365,366],{"align":160},"Gestion des menaces et des vulnérabilités",[174,368,369],{"align":160},"Identification et remédiation des vulnérabilités de sécurité",[12,371,372,375],{},[373,374],"br",{},[373,376],{},[12,378,379],{},"Chaque domaine regroupe des contrôles similaires en familles logiques, alignées sur la façon dont le programme de sécurité de GitLab est réellement organisé et opéré. Cette structure offre une approche méthodique pour ajouter, mettre à jour ou supprimer des contrôles à mesure que nos besoins évoluent.",[67,381,383],{"id":382},"_4-ajouter-du-contexte-et-des-données","4. Ajouter du contexte et des données",[12,385,386],{},"Une fois nos domaines définis, nous avons fait face à deux défis majeurs : comment appliquer des contrôles pour plusieurs produits sans dupliquer le framework, et comment capturer un contexte de mise en œuvre pertinent pour réellement exploiter et auditer à grande échelle.",[388,389,391],"h4",{"id":390},"mise-à-léchelle-pour-plusieurs-produits","Mise à l'échelle pour plusieurs produits",[12,393,394,395,399],{},"GitLab propose plusieurs produits : GitLab.com (SaaS multilocataire sur Google Cloud Platform ",[396,397,398],"span",{},"GCP","), GitLab Dedicated (SaaS monolocataire sur AWS) et GitLab Dedicated pour le secteur public (offre FedRAMP monolocataire de GitLab sur AWS). Chaque offre possède une infrastructure, un périmètre de conformité et des exigences d'audit différents. Nous devions prendre en charge des audits spécifiques à chaque produit sans créer des frameworks entièrement séparés.",[12,401,402,403,406,407,410],{},"Nous avons conçu une hiérarchie de contrôles où les ",[77,404,405],{},"contrôles de niveau 1 forment la base du framework"," et définissent ce qui doit être implémenté au niveau organisationnel. Les ",[77,408,409],{},"contrôles de niveau 2 représentent la mise en œuvre"," et contiennent les détails spécifiques des produits et la façon dont chaque exigence est réellement satisfaite.",[412,413,418],"pre",{"className":414,"code":415,"language":416,"meta":417,"style":417},"language-mermaid shiki shiki-themes github-light","%%{init: { \"fontFamily\": \"GitLab Sans\" }}%%\n\ngraph TD\naccTitle: Hiérarchie des contrôles\naccDescr: Les exigences de niveau 1 se déclinent en implémentations de niveau 2.\n\nL1[\"Niveau 1 : framework\u003Cbr/>Ce qui doit être implémenté\"];\nL2A[\"Niveau 2 : GitLab.com\u003Cbr/>Façon d'implémenter\"];\nL2B[\"Niveau 2 : GitLab Dedicated\u003Cbr/>Façon d'implémenter\"];\nL2C[\"Niveau 2 : GitLab Dedicated sect. publ.\u003Cbr/>Façon d'implémenter\"];\nL2D[\"Niveau 2 : entité\u003Cbr/>(hérité par tous)\"];\n\nL1-->L2A;\nL1-->L2B;\nL1-->L2C;\nL1-->L2D;\n","mermaid","",[419,420,421,429,436,442,448,454,459,465,471,477,483,489,494,500,506,512],"code",{"__ignoreMap":417},[396,422,425],{"class":423,"line":424},"line",1,[396,426,428],{"class":427},"sgsFI","%%{init: { \"fontFamily\": \"GitLab Sans\" }}%%\n",[396,430,432],{"class":423,"line":431},2,[396,433,435],{"emptyLinePlaceholder":434},true,"\n",[396,437,439],{"class":423,"line":438},3,[396,440,441],{"class":427},"graph TD\n",[396,443,445],{"class":423,"line":444},4,[396,446,447],{"class":427},"accTitle: Hiérarchie des contrôles\n",[396,449,451],{"class":423,"line":450},5,[396,452,453],{"class":427},"accDescr: Les exigences de niveau 1 se déclinent en implémentations de niveau 2.\n",[396,455,457],{"class":423,"line":456},6,[396,458,435],{"emptyLinePlaceholder":434},[396,460,462],{"class":423,"line":461},7,[396,463,464],{"class":427},"L1[\"Niveau 1 : framework\u003Cbr/>Ce qui doit être implémenté\"];\n",[396,466,468],{"class":423,"line":467},8,[396,469,470],{"class":427},"L2A[\"Niveau 2 : GitLab.com\u003Cbr/>Façon d'implémenter\"];\n",[396,472,474],{"class":423,"line":473},9,[396,475,476],{"class":427},"L2B[\"Niveau 2 : GitLab Dedicated\u003Cbr/>Façon d'implémenter\"];\n",[396,478,480],{"class":423,"line":479},10,[396,481,482],{"class":427},"L2C[\"Niveau 2 : GitLab Dedicated sect. publ.\u003Cbr/>Façon d'implémenter\"];\n",[396,484,486],{"class":423,"line":485},11,[396,487,488],{"class":427},"L2D[\"Niveau 2 : entité\u003Cbr/>(hérité par tous)\"];\n",[396,490,492],{"class":423,"line":491},12,[396,493,435],{"emptyLinePlaceholder":434},[396,495,497],{"class":423,"line":496},13,[396,498,499],{"class":427},"L1-->L2A;\n",[396,501,503],{"class":423,"line":502},14,[396,504,505],{"class":427},"L1-->L2B;\n",[396,507,509],{"class":423,"line":508},15,[396,510,511],{"class":427},"L1-->L2C;\n",[396,513,515],{"class":423,"line":514},16,[396,516,517],{"class":427},"L1-->L2D;\n",[12,519,520,522],{},[373,521],{},[373,523],{},[12,525,526],{},"Cette séparation nous permet de maintenir un seul framework avec des implémentations spécifiques à chaque produit, plutôt que de gérer des frameworks dupliqués pour chaque offre. Les contrôles d'entité s'appliquent à l'ensemble de l'organisation et sont hérités par GitLab.com, GitLab Dedicated et GitLab Dedicated pour le secteur public.",[388,528,530],{"id":529},"ajout-de-contexte-aux-contrôles","Ajout de contexte aux contrôles",[12,532,533],{},"Les frameworks de contrôle traditionnels ne suivent qu'un minimum d'informations : un identifiant de contrôle, une description et un propriétaire. Le GCF adopte une approche différente et sa force réside dans les métadonnées exhaustives que nous associons à chaque contrôle. Au-delà de la simple description du contrôle ou de la déclaration de mise en œuvre, nous suivons les éléments suivants :",[81,535,536,539,542,545,548,551,554],{},[84,537,538],{},"Le propriétaire du contrôle : qui est responsable du contrôle et de son risque ?",[84,540,541],{},"L'environnement : s'applique-t-il à l'ensemble de l'organisation (entité, hérité par toutes les offres produits), à GitLab.com ou à GitLab Dedicated ?",[84,543,544],{},"Les actifs : quels systèmes spécifiques ce contrôle couvre-t-il ?",[84,546,547],{},"La fréquence : à quelle fréquence le contrôle est-il exécuté ou testé ?",[84,549,550],{},"La nature : est-il manuel, semi-automatisé ou entièrement automatisé ?",[84,552,553],{},"La classification : est-il destiné à des certifications externes ou à la gestion des risques internes ?",[84,555,556],{},"Les détails des tests : comment l'évaluons-nous ? Quelles preuves collectons-nous ?",[12,558,559],{},"Ce contexte transforme le GCF d'une simple liste de contrôles en un inventaire de contrôles opérationnel.",[12,561,562],{},"Grâce à cette structure, nous pouvons répondre à des questions telles que :",[81,564,565,568,571],{},[84,566,567],{},"Quels contrôles s'appliquent à GitLab.com pour notre audit SOC 2 par rapport à GitLab Dedicated ? → Filtrer par environnement : GitLab.com",[84,569,570],{},"Quels contrôles l'équipe Infrastructure possède-t-elle ? → Filtrer par propriétaire",[84,572,573],{},"Quels contrôles pouvons-nous automatiser ? → Filtrer par nature : manuel",[67,575,577],{"id":576},"_5-itérer-faire-maturer-et-mettre-à-léchelle","5. Itérer, faire maturer et mettre à l'échelle",[12,579,580],{},"Le GCF n'est pas statique et a été conçu pour évoluer avec notre activité et notre environnement de conformité.",[388,582,584],{"id":583},"obtention-de-nouvelles-certifications","Obtention de nouvelles certifications",[12,586,587],{},"Grâce au contexte opérationnel intégré au GCF, nous pouvons rapidement déterminer le périmètre et les lacunes lors de l'obtention de nouvelles certifications (ISMAP, IRAP, C5, etc.) :",[589,590,591,594,597,600],"ol",{},[84,592,593],{},"Déterminer le périmètre : quel produit en a besoin (GitLab.com, GitLab Dedicated, ou les deux) ?",[84,595,596],{},"Cartographier les exigences : les contrôles existants couvrent-ils déjà les exigences de la nouvelle certification ?",[84,598,599],{},"Identifier les lacunes : quels nouveaux contrôles doivent être créés ?",[84,601,602],{},"Mettre à jour les correspondances : relier les contrôles existants aux exigences de la nouvelle certification.",[388,604,606],{"id":605},"adaptation-aux-nouvelles-réglementations","Adaptation aux nouvelles réglementations",[12,608,609],{},"Lorsque de nouvelles réglementations émergent ou que des exigences existantes changent :",[81,611,612,615,618,621],{},[84,613,614],{},"Examiner les contrôles existants : un contrôle existant couvre-t-il déjà la nouvelle exigence ?",[84,616,617],{},"Mettre à jour ou créer : soit mettre à jour le contrôle existant, soit créer un nouveau contrôle.",[84,619,620],{},"Appliquer le plus strict : lorsque plusieurs certifications ont des exigences similaires, nous implémentons la version la plus stricte conformément à l'approche qui vise à sécuriser une fois pour se conformer à de nombreuses exigences.",[84,622,623],{},"Établir les correspondances entre certifications : relier le contrôle à toutes les exigences de certification pertinentes.",[388,625,627],{"id":626},"gestion-du-cycle-de-vie-des-contrôles","Gestion du cycle de vie des contrôles",[12,629,630],{},"Le framework s'adapte à divers changements :",[81,632,633,636,639],{},[84,634,635],{},"Évolution des exigences : lorsque des certifications mettent à jour leurs exigences, nous examinons les contrôles impactés et mettons à jour les descriptions ou les correspondances.",[84,637,638],{},"Contrôles obsolètes : si une exigence est supprimée ou si un contrôle n'est plus nécessaire, nous le marquons comme obsolète et le retirons de notre calendrier de surveillance.",[84,640,641],{},"Identification de nouveaux risques : les évaluations des risques peuvent révéler des lacunes nécessitant de nouveaux contrôles internes.",[19,643,645],{"id":644},"la-force-des-contrôles-communs-contrôle-unique-exigences-multiples","La force des contrôles communs : contrôle unique, exigences multiples",[12,647,648],{},"Un contrôle de sécurité unique qui permet de se conformer à de nombreuses exigences n'est pas qu'un simple principe : il s'agit d'un processus avec des avantages concrets sur la façon dont nous préparons les audits, accompagnons les propriétaires de contrôles et obtenons de nouvelles certifications. Découvrez les résultats en pratique, en termes de qualité et de chiffres.",[67,650,652],{"id":651},"résultats-concernant-la-qualité","Résultats concernant la qualité",[12,654,655],{},"Depuis la mise en œuvre du GCF, nous avons constaté des améliorations significatives dans notre gestion de la conformité :",[388,657,659],{"id":658},"approche-daudit-intégrée","Approche d'audit intégrée",[12,661,662],{},"Le GCF nous permet de maintenir un seul framework avec des contrôles associés aux exigences de plusieurs certifications, au lieu de gérer des ensembles de contrôles séparés pour chaque audit. Un seul contrôle peut satisfaire simultanément aux exigences SOC 2, ISO 27001 et PCI DSS.",[388,664,666],{"id":665},"préparation-des-audits-plus-rapide","Préparation des audits plus rapide",[12,668,669],{},"Grâce au GCF, nous maintenons une seule liste de demandes consolidée au lieu de listes séparées pour chaque audit. Étant donné que les contrôles ont été définis avec un contexte spécifique, nos listes de demandes indiquent « liste des utilisateurs Okta » au lieu d'une mention générique « liste des utilisateurs en production », ce qui élimine toute ambiguïté et interprétation. Nous ne collectons pas de preuves « N/A » et ne laissons pas aux auditeurs le soin d'interpréter ce que « production » signifie dans notre environnement. Tout est déjà adapté à nos systèmes réels.",[388,671,673],{"id":672},"réduction-de-la-charge-pour-les-parties-prenantes","Réduction de la charge pour les parties prenantes",[12,675,676],{},"Cette intégration réduit directement la charge de travail de nos parties prenantes. Les propriétaires de contrôles n'ont besoin de fournir des éléments qu'une seule fois au lieu de répondre à des demandes séparées des auditeurs SOC 2, ISO et PCI. Lorsque nous collectons des preuves pour les contrôles d'accès, celles-ci conviennent simultanément aux exigences SOC 2, ISO 27001 et PCI DSS. Un seul contrôle, un seul test et une seule preuve sont nécessaires pour satisfaire à de multiples certifications et exigences.",[388,678,680],{"id":679},"analyses-des-lacunes-plus-efficaces","Analyses des lacunes plus efficaces",[12,682,683],{},"Lors de l'obtention de nouvelles certifications ou du lancement de nouvelles fonctionnalités, le contexte opérationnel permet une analyse des lacunes plus efficace. Nous pouvons déterminer quels contrôles existent déjà, ce qui manque et quelle mise en œuvre est nécessaire.",[67,685,687],{"id":686},"résultats-quantifiables","Résultats quantifiables",[12,689,690],{},[77,691,692],{},"Efficacité des contrôles :",[81,694,695,698],{},[84,696,697],{},"Réduction de 58 % des contrôles SOC (de 200 à 84) pour GitLab.com et de 55 % (de 181 à 82) pour GitLab Dedicated",[84,699,700],{},"Un seul framework prend désormais en charge plus de 8 certifications",[12,702,703],{},[77,704,705],{},"Efficacité des audits :",[81,707,708,711],{},[84,709,710],{},"Consolidation de 4 listes de demandes d'audit en 1 seule, réduisant les demandes de 44 % (de 415 à 231)",[84,712,713],{},"Taux d'acceptation des preuves de 95 % avant le début des travaux de terrain pour les audits PCI récents",[12,715,716],{},[77,717,718],{},"Échelle du framework :",[81,720,721,724,727],{},[84,722,723],{},"Plus de 220 contrôles actifs répartis sur 18 domaines personnalisés",[84,725,726],{},"Correspondances avec plus de 1 300 exigences de certification",[84,728,729],{},"Prise en charge de plusieurs offres produits",[19,731,733],{"id":732},"perspectives","Perspectives",[12,735,736],{},"Le GCF continue d'évoluer à mesure que nous ajoutons des contrôles de sécurité et d'IA, obtenons de nouvelles certifications et affinons notre approche.",[12,738,739,742],{},[77,740,741],{},"Pour les professionnels de la conformité des contrôles de sécurité :"," n'hésitez pas à créer votre propre framework si les normes du secteur ne vous conviennent pas. L'investissement initial est largement rentabilisé en termes d'évolutivité, d'efficacité et de contrôles véritablement adaptés à votre environnement. Parfois, le meilleur framework est celui que vous concevez vous-même.",[744,745,746],"blockquote",{},[12,747,748,749,754],{},"Si cet article vous a été utile, consultez notre ",[27,750,753],{"href":751,"rel":752},"https://handbook.gitlab.com/handbook/security/security-assurance/security-compliance/sec-controls/",[],"documentation complète du GitLab Control Framework",", où nous détaillons notre méthodologie pour ce framework, nos domaines de contrôle et nos structures de champs.",[756,757,758],"style",{},"html pre.shiki code .sgsFI, html code.shiki .sgsFI{--shiki-default:#24292E}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"title":417,"searchDepth":431,"depth":431,"links":760},[761,762,769,773],{"id":21,"depth":431,"text":22},{"id":61,"depth":431,"text":62,"children":763},[764,765,766,767,768],{"id":69,"depth":438,"text":70},{"id":120,"depth":438,"text":121},{"id":143,"depth":438,"text":144},{"id":382,"depth":438,"text":383},{"id":576,"depth":438,"text":577},{"id":644,"depth":431,"text":645,"children":770},[771,772],{"id":651,"depth":438,"text":652},{"id":686,"depth":438,"text":687},{"id":732,"depth":431,"text":733},"security-labs","2026-03-24","Découvrez le framework de contrôle personnalisé créé par l'équipe Security Compliance de GitLab, qui couvre plusieurs certifications et produits.","md",null,false,"https://res.cloudinary.com/about-gitlab-com/image/upload/f_auto,q_auto,c_lfill/v1772630163/akp8ly2mrsfrhsb0liyb.png",{},"/fr-fr/blog/how-gitlab-built-a-security-control-framework-from-scratch",{"config":784,"title":785,"description":776,"ogTitle":417},{"noIndex":779},"Comment GitLab a créé un framework de contrôle de sécurité","how-gitlab-built-a-security-control-framework-from-scratch","fr-fr/blog/how-gitlab-built-a-security-control-framework-from-scratch",[789,790],"security","tutorial","BlogPost","dU905ZzgbMTIlelvaloMHlHKuojv5IJdC6l9IhNhx2M",{"logo":794,"freeTrial":799,"sales":804,"login":809,"items":814,"search":1131,"minimal":1167,"duo":1186,"switchNav":1195,"pricingDeployment":1206},{"config":795},{"href":796,"dataGaName":797,"dataGaLocation":798},"/fr-fr/","gitlab logo","header",{"text":800,"config":801},"Commencer un essai gratuit",{"href":802,"dataGaName":803,"dataGaLocation":798},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/fr-fr&glm_content=default-saas-trial/","free trial",{"text":805,"config":806},"Contacter l’équipe commerciale",{"href":807,"dataGaName":808,"dataGaLocation":798},"/fr-fr/sales/","sales",{"text":810,"config":811},"Connexion",{"href":812,"dataGaName":813,"dataGaLocation":798},"https://gitlab.com/users/sign_in/","sign in",[815,844,946,951,1055,1111],{"text":816,"config":817,"menu":819},"Plateforme",{"dataNavLevelOne":818},"platform",{"type":820,"columns":821},"cards",[822,828,836],{"title":816,"description":823,"link":824},"La plateforme d’orchestration intelligente pour le DevSecOps",{"text":825,"config":826},"Explorer notre plateforme",{"href":827,"dataGaName":818,"dataGaLocation":798},"/fr-fr/platform/",{"title":829,"description":830,"link":831},"GitLab Duo Agent Platform","L’IA agentique pour l’ensemble du cycle de développement logiciel",{"text":832,"config":833},"Découvrir GitLab Duo",{"href":834,"dataGaName":835,"dataGaLocation":798},"/fr-fr/gitlab-duo-agent-platform/","gitlab duo agent platform",{"title":837,"description":838,"link":839},"Pourquoi GitLab ?","Découvrez les principales raisons pour lesquelles les entreprises choisissent GitLab",{"text":840,"config":841},"En savoir plus",{"href":842,"dataGaName":843,"dataGaLocation":798},"/fr-fr/why-gitlab/","why gitlab",{"text":845,"left":434,"config":846,"menu":848},"Produit",{"dataNavLevelOne":847},"solutions",{"type":849,"link":850,"columns":854,"feature":925},"lists",{"text":851,"config":852},"Voir toutes les solutions",{"href":853,"dataGaName":847,"dataGaLocation":798},"/fr-fr/solutions/",[855,880,903],{"title":856,"description":857,"link":858,"items":863},"Automatisation","CI/CD et automatisation pour accélérer le déploiement",{"config":859},{"icon":860,"href":861,"dataGaName":862,"dataGaLocation":798},"AutomatedCodeAlt","/fr-fr/solutions/delivery-automation/","automated software delivery",[864,868,871,876],{"text":865,"config":866},"CI/CD",{"href":867,"dataGaLocation":798,"dataGaName":865},"/fr-fr/solutions/continuous-integration/",{"text":829,"config":869},{"href":834,"dataGaLocation":798,"dataGaName":870},"gitlab duo agent platform - product menu",{"text":872,"config":873},"Gestion du code source",{"href":874,"dataGaLocation":798,"dataGaName":875},"/fr-fr/solutions/source-code-management/","Source Code Management",{"text":877,"config":878},"Livraison de logiciels automatisée",{"href":861,"dataGaLocation":798,"dataGaName":879},"Automated software delivery",{"title":881,"description":882,"link":883,"items":888},"Sécurité","Livrez du code plus rapidement sans compromettre la sécurité",{"config":884},{"href":885,"dataGaName":886,"dataGaLocation":798,"icon":887},"/fr-fr/solutions/application-security-testing/","security and compliance","ShieldCheckLight",[889,893,898],{"text":890,"config":891},"Tests de sécurité des applications",{"href":885,"dataGaName":892,"dataGaLocation":798},"Application security testing",{"text":894,"config":895},"Sécurité de la chaîne d’approvisionnement logicielle",{"href":896,"dataGaLocation":798,"dataGaName":897},"/fr-fr/solutions/supply-chain/","Software supply chain security",{"text":899,"config":900},"Conformité logicielle",{"href":901,"dataGaName":902,"dataGaLocation":798},"/fr-fr/solutions/software-compliance/","software compliance",{"title":904,"link":905,"items":910},"Mesures",{"config":906},{"icon":907,"href":908,"dataGaName":909,"dataGaLocation":798},"DigitalTransformation","/fr-fr/solutions/visibility-measurement/","visibility and measurement",[911,915,920],{"text":912,"config":913},"Visibilité et mesures",{"href":908,"dataGaLocation":798,"dataGaName":914},"Visibility and Measurement",{"text":916,"config":917},"Gestion de la chaîne de valeur",{"href":918,"dataGaLocation":798,"dataGaName":919},"/fr-fr/solutions/value-stream-management/","Value Stream Management",{"text":921,"config":922},"Analyses et informations",{"href":923,"dataGaLocation":798,"dataGaName":924},"/fr-fr/solutions/analytics-and-insights/","Analytics and insights",{"title":926,"type":849,"items":927},"GitLab",[928,934,940],{"text":929,"config":930},"Pour les entreprises",{"icon":931,"href":932,"dataGaLocation":798,"dataGaName":933},"Building","/fr-fr/enterprise/","enterprise",{"text":935,"config":936},"Pour les PME",{"icon":937,"href":938,"dataGaLocation":798,"dataGaName":939},"Work","/fr-fr/small-business/","small business",{"text":941,"config":942},"Pour le secteur public",{"icon":943,"href":944,"dataGaLocation":798,"dataGaName":945},"Organization","/fr-fr/solutions/public-sector/","public sector",{"text":947,"config":948},"Tarifs",{"href":949,"dataGaName":950,"dataGaLocation":798,"dataNavLevelOne":950},"/fr-fr/pricing/","pricing",{"text":952,"config":953,"menu":955},"Ressources",{"dataNavLevelOne":954},"resources",{"type":849,"link":956,"columns":960,"feature":1044},{"text":957,"config":958},"Afficher toutes les ressources",{"href":959,"dataGaName":954,"dataGaLocation":798},"/fr-fr/resources/",[961,994,1016],{"title":962,"items":963},"Premiers pas",[964,969,974,979,984,989],{"text":965,"config":966},"Installation",{"href":967,"dataGaName":968,"dataGaLocation":798},"/fr-fr/install/","install",{"text":970,"config":971},"Guides de démarrage",{"href":972,"dataGaName":973,"dataGaLocation":798},"/fr-fr/get-started/","quick setup checklists",{"text":975,"config":976},"Apprentissage",{"href":977,"dataGaLocation":798,"dataGaName":978},"https://university.gitlab.com/","learn",{"text":980,"config":981},"Documentation",{"href":982,"dataGaName":983,"dataGaLocation":798},"https://docs.gitlab.com/","product documentation",{"text":985,"config":986},"Vidéos sur les bonnes pratiques",{"href":987,"dataGaName":988,"dataGaLocation":798},"/fr-fr/getting-started-videos/","best practice videos",{"text":990,"config":991},"Intégrations",{"href":992,"dataGaName":993,"dataGaLocation":798},"/fr-fr/integrations/","integrations",{"title":995,"items":996},"Découvrir",[997,1002,1007,1011],{"text":998,"config":999},"Témoignages clients",{"href":1000,"dataGaName":1001,"dataGaLocation":798},"/fr-fr/customers/","customer success stories",{"text":1003,"config":1004},"Blog",{"href":1005,"dataGaName":1006,"dataGaLocation":798},"/fr-fr/blog/","blog",{"text":1008,"config":1009},"The Source",{"href":1010,"dataGaName":1006,"dataGaLocation":798},"/fr-fr/the-source/",{"text":1012,"config":1013},"Travail à distance",{"href":1014,"dataGaName":1015,"dataGaLocation":798},"https://handbook.gitlab.com/handbook/company/culture/all-remote/","remote",{"title":1017,"items":1018},"Connecter",[1019,1024,1029,1034,1039],{"text":1020,"config":1021},"Services GitLab",{"href":1022,"dataGaName":1023,"dataGaLocation":798},"/fr-fr/services/","services",{"text":1025,"config":1026},"Communauté",{"href":1027,"dataGaName":1028,"dataGaLocation":798},"/community/","community",{"text":1030,"config":1031},"Forum",{"href":1032,"dataGaName":1033,"dataGaLocation":798},"https://forum.gitlab.com/","forum",{"text":1035,"config":1036},"Événements",{"href":1037,"dataGaName":1038,"dataGaLocation":798},"/events/","events",{"text":1040,"config":1041},"Partenaires",{"href":1042,"dataGaName":1043,"dataGaLocation":798},"/fr-fr/partners/","partners",{"config":1045,"title":1048,"text":1049,"link":1050},{"background":1046,"textColor":1047},"url('https://res.cloudinary.com/about-gitlab-com/image/upload/v1777322348/qpq8yrgn8knii57omj0c.png')","#000","Nouveautés de GitLab","Restez informé des dernières fonctionnalités et améliorations.",{"text":1051,"config":1052},"Lire les articles les plus récents",{"href":1053,"dataGaName":1054,"dataGaLocation":798},"/fr-fr/whats-new/","whats new",{"text":1056,"config":1057,"menu":1059},"Société",{"dataNavLevelOne":1058},"company",{"type":849,"columns":1060},[1061],{"items":1062},[1063,1068,1074,1076,1081,1086,1091,1096,1101,1106],{"text":1064,"config":1065},"À propos",{"href":1066,"dataGaName":1067,"dataGaLocation":798},"/fr-fr/company/","about",{"text":1069,"config":1070,"footerGa":1073},"Carrières",{"href":1071,"dataGaName":1072,"dataGaLocation":798},"/jobs/","jobs",{"dataGaName":1072},{"text":1035,"config":1075},{"href":1037,"dataGaName":1038,"dataGaLocation":798},{"text":1077,"config":1078},"Leadership",{"href":1079,"dataGaName":1080,"dataGaLocation":798},"/company/team/e-group/","leadership",{"text":1082,"config":1083},"Manuel",{"href":1084,"dataGaName":1085,"dataGaLocation":798},"https://handbook.gitlab.com/","handbook",{"text":1087,"config":1088},"Relations avec les investisseurs",{"href":1089,"dataGaName":1090,"dataGaLocation":798},"https://ir.gitlab.com/","investor relations",{"text":1092,"config":1093},"Trust Center",{"href":1094,"dataGaName":1095,"dataGaLocation":798},"/fr-fr/security/","trust center",{"text":1097,"config":1098},"Centre pour la transparence de l’IA",{"href":1099,"dataGaName":1100,"dataGaLocation":798},"/fr-fr/ai-transparency-center/","ai transparency center",{"text":1102,"config":1103},"Newsletter",{"href":1104,"dataGaName":1105,"dataGaLocation":798},"/company/contact/#contact-forms","newsletter",{"text":1107,"config":1108},"Presse",{"href":1109,"dataGaName":1110,"dataGaLocation":798},"/press/","press",{"text":1112,"config":1113,"menu":1114},"Nous contacter",{"dataNavLevelOne":1058},{"type":849,"columns":1115},[1116],{"items":1117},[1118,1121,1126],{"text":805,"config":1119},{"href":807,"dataGaName":1120,"dataGaLocation":798},"talk to sales",{"text":1122,"config":1123},"Portail d'assistance",{"href":1124,"dataGaName":1125,"dataGaLocation":798},"https://support.gitlab.com","support portal",{"text":1127,"config":1128},"Portail clients GitLab",{"href":1129,"dataGaName":1130,"dataGaLocation":798},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":1132,"login":1133,"suggestions":1140},"Fermer",{"text":1134,"link":1135},"Pour rechercher des dépôts et des projets, connectez-vous à",{"text":1136,"config":1137},"GitLab.com",{"href":812,"dataGaName":1138,"dataGaLocation":1139},"search login","search",{"text":1141,"default":1142},"Suggestions",[1143,1146,1151,1153,1158,1163],{"text":829,"config":1144},{"href":834,"dataGaName":1145,"dataGaLocation":1139},"GitLab Duo Agent Platform",{"text":1147,"config":1148},"Suggestions de code (IA)",{"href":1149,"dataGaName":1150,"dataGaLocation":1139},"/fr-fr/solutions/code-suggestions/","Code Suggestions (AI)",{"text":865,"config":1152},{"href":867,"dataGaName":865,"dataGaLocation":1139},{"text":1154,"config":1155},"GitLab sur AWS",{"href":1156,"dataGaName":1157,"dataGaLocation":1139},"/fr-fr/partners/technology-partners/aws/","GitLab on AWS",{"text":1159,"config":1160},"GitLab sur Google Cloud",{"href":1161,"dataGaName":1162,"dataGaLocation":1139},"/fr-fr/partners/technology-partners/google-cloud-platform/","GitLab on Google Cloud",{"text":1164,"config":1165},"Pourquoi utiliser GitLab ?",{"href":842,"dataGaName":1166,"dataGaLocation":1139},"Why GitLab?",{"freeTrial":1168,"mobileIcon":1173,"desktopIcon":1178,"secondaryButton":1181},{"text":1169,"config":1170},"Commencer votre essai gratuit",{"href":1171,"dataGaName":803,"dataGaLocation":1172},"https://gitlab.com/-/trials/new/","nav",{"altText":1174,"config":1175},"Icône GitLab",{"src":1176,"dataGaName":1177,"dataGaLocation":1172},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203874/jypbw1jx72aexsoohd7x.svg","gitlab icon",{"altText":1174,"config":1179},{"src":1180,"dataGaName":1177,"dataGaLocation":1172},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203875/gs4c8p8opsgvflgkswz9.svg",{"text":1182,"config":1183},"Commencer",{"href":1184,"dataGaName":1185,"dataGaLocation":1172},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/fr-fr/get-started/","get started",{"freeTrial":1187,"mobileIcon":1191,"desktopIcon":1193},{"text":1188,"config":1189},"En savoir plus sur GitLab Duo",{"href":834,"dataGaName":1190,"dataGaLocation":1172},"gitlab duo",{"altText":1174,"config":1192},{"src":1176,"dataGaName":1177,"dataGaLocation":1172},{"altText":1174,"config":1194},{"src":1180,"dataGaName":1177,"dataGaLocation":1172},{"button":1196,"mobileIcon":1201,"desktopIcon":1203},{"text":1197,"config":1198},"/switch",{"href":1199,"dataGaName":1200,"dataGaLocation":1172},"#contact","switch",{"altText":1174,"config":1202},{"src":1176,"dataGaName":1177,"dataGaLocation":1172},{"altText":1174,"config":1204},{"src":1205,"dataGaName":1177,"dataGaLocation":1172},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1773335277/ohhpiuoxoldryzrnhfrh.png",{"freeTrial":1207,"mobileIcon":1212,"desktopIcon":1214},{"text":1208,"config":1209},"Retour aux tarifs",{"href":949,"dataGaName":1210,"dataGaLocation":1172,"icon":1211},"back to pricing","GoBack",{"altText":1174,"config":1213},{"src":1176,"dataGaName":1177,"dataGaLocation":1172},{"altText":1174,"config":1215},{"src":1180,"dataGaName":1177,"dataGaLocation":1172},{"title":1217,"button":1218,"config":1223},"Découvrez comment l'IA agentique transforme la livraison logicielle",{"text":1219,"config":1220},"Rejoindre GitLab Transcend en direct le 10 juin",{"href":1221,"dataGaName":1222,"dataGaLocation":798},"/fr-fr/events/transcend/virtual/","transcend event",{"layout":1224,"disabled":779},"release",{"data":1226},{"text":1227,"source":1228,"edit":1234,"contribute":1239,"config":1244,"items":1249,"minimal":1457},"Git est une marque déposée de Software Freedom Conservancy et notre utilisation de « GitLab » est sous licence.",{"text":1229,"config":1230},"Afficher le code source de la page",{"href":1231,"dataGaName":1232,"dataGaLocation":1233},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":1235,"config":1236},"Modifier cette page",{"href":1237,"dataGaName":1238,"dataGaLocation":1233},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":1240,"config":1241},"Veuillez contribuer",{"href":1242,"dataGaName":1243,"dataGaLocation":1233},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":1245,"facebook":1246,"youtube":1247,"linkedin":1248},"https://twitter.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[1250,1297,1350,1394,1424],{"title":947,"links":1251,"subMenu":1266},[1252,1256,1261],{"text":1253,"config":1254},"Voir les forfaits",{"href":949,"dataGaName":1255,"dataGaLocation":1233},"view plans",{"text":1257,"config":1258},"GitLab Premium",{"href":1259,"dataGaName":1260,"dataGaLocation":1233},"/fr-fr/pricing/premium/","why premium",{"text":1262,"config":1263},"GitLab Ultimate",{"href":1264,"dataGaName":1265,"dataGaLocation":1233},"/fr-fr/pricing/ultimate/","why ultimate",[1267],{"title":1112,"links":1268},[1269,1272,1275,1277,1282,1287,1292],{"text":1270,"config":1271},"Contacter l'équipe commerciale",{"href":807,"dataGaName":808,"dataGaLocation":1233},{"text":1273,"config":1274},"Assistance GitLab",{"href":1124,"dataGaName":1125,"dataGaLocation":1233},{"text":1127,"config":1276},{"href":1129,"dataGaName":1130,"dataGaLocation":1233},{"text":1278,"config":1279},"Statut",{"href":1280,"dataGaName":1281,"dataGaLocation":1233},"https://status.gitlab.com/","status",{"text":1283,"config":1284},"Conditions d'utilisation",{"href":1285,"dataGaName":1286,"dataGaLocation":1233},"/terms/","terms of use",{"text":1288,"config":1289},"Politique de confidentialité",{"href":1290,"dataGaName":1291,"dataGaLocation":1233},"/fr-fr/privacy/","privacy statement",{"text":1293,"config":1294},"Gérer vos cookies",{"dataGaName":1295,"dataGaLocation":1233,"id":1296,"isOneTrustButton":434},"cookie preferences","ot-sdk-btn",{"title":845,"links":1298,"subMenu":1307},[1299,1303],{"text":1300,"config":1301},"Plateforme DevSecOps",{"href":827,"dataGaName":1302,"dataGaLocation":1233},"devsecops platform",{"text":1304,"config":1305},"Développement assisté par l'IA",{"href":834,"dataGaName":1306,"dataGaLocation":1233},"ai-assisted development",[1308],{"title":1309,"links":1310},"Thèmes",[1311,1315,1320,1325,1330,1335,1340,1345],{"text":865,"config":1312},{"href":1313,"dataGaName":1314,"dataGaLocation":1233},"/fr-fr/topics/ci-cd/","cicd",{"text":1316,"config":1317},"GitOps",{"href":1318,"dataGaName":1319,"dataGaLocation":1233},"/fr-fr/topics/gitops/","gitops",{"text":1321,"config":1322},"DevOps",{"href":1323,"dataGaName":1324,"dataGaLocation":1233},"/fr-fr/topics/devops/","devops",{"text":1326,"config":1327},"Contrôle de version",{"href":1328,"dataGaName":1329,"dataGaLocation":1233},"/fr-fr/topics/version-control/","version control",{"text":1331,"config":1332},"DevSecOps",{"href":1333,"dataGaName":1334,"dataGaLocation":1233},"/fr-fr/topics/devsecops/","devsecops",{"text":1336,"config":1337},"Cloud-native",{"href":1338,"dataGaName":1339,"dataGaLocation":1233},"/fr-fr/topics/cloud-native/","cloud native",{"text":1341,"config":1342},"IA pour la programmation",{"href":1343,"dataGaName":1344,"dataGaLocation":1233},"/fr-fr/topics/devops/ai-for-coding/","ai for coding",{"text":1346,"config":1347},"IA agentique",{"href":1348,"dataGaName":1349,"dataGaLocation":1233},"/fr-fr/topics/agentic-ai/","agentic ai",{"title":1351,"links":1352},"Solutions",[1353,1356,1358,1363,1366,1369,1372,1375,1378,1381,1384,1389],{"text":890,"config":1354},{"href":885,"dataGaName":1355,"dataGaLocation":1233},"Application Security Testing",{"text":877,"config":1357},{"href":861,"dataGaName":862,"dataGaLocation":1233},{"text":1359,"config":1360},"Développement Agile",{"href":1361,"dataGaName":1362,"dataGaLocation":1233},"/fr-fr/solutions/agile-delivery/","agile delivery",{"text":872,"config":1364},{"href":874,"dataGaName":1365,"dataGaLocation":1233},"source code management",{"text":865,"config":1367},{"href":867,"dataGaName":1368,"dataGaLocation":1233},"continuous integration & delivery",{"text":916,"config":1370},{"href":918,"dataGaName":1371,"dataGaLocation":1233},"value stream management",{"text":1316,"config":1373},{"href":1374,"dataGaName":1319,"dataGaLocation":1233},"/fr-fr/solutions/gitops/",{"text":1376,"config":1377},"Entreprises",{"href":932,"dataGaName":933,"dataGaLocation":1233},{"text":1379,"config":1380},"PME",{"href":938,"dataGaName":939,"dataGaLocation":1233},{"text":1382,"config":1383},"Secteur public",{"href":944,"dataGaName":945,"dataGaLocation":1233},{"text":1385,"config":1386},"Éducation",{"href":1387,"dataGaName":1388,"dataGaLocation":1233},"/fr-fr/solutions/education/","education",{"text":1390,"config":1391},"Services financiers",{"href":1392,"dataGaName":1393,"dataGaLocation":1233},"/fr-fr/solutions/finance/","financial services",{"title":952,"links":1395},[1396,1398,1400,1402,1405,1407,1410,1412,1414,1416,1418,1420,1422],{"text":965,"config":1397},{"href":967,"dataGaName":968,"dataGaLocation":1233},{"text":970,"config":1399},{"href":972,"dataGaName":973,"dataGaLocation":1233},{"text":975,"config":1401},{"href":977,"dataGaName":978,"dataGaLocation":1233},{"text":980,"config":1403},{"href":982,"dataGaName":1404,"dataGaLocation":1233},"docs",{"text":1003,"config":1406},{"href":1005,"dataGaName":1006,"dataGaLocation":1233},{"text":1408,"config":1409},"Quoi de neuf",{"href":1053,"dataGaName":1054,"dataGaLocation":1233},{"text":998,"config":1411},{"href":1000,"dataGaName":1001,"dataGaLocation":1233},{"text":1012,"config":1413},{"href":1014,"dataGaName":1015,"dataGaLocation":1233},{"text":1020,"config":1415},{"href":1022,"dataGaName":1023,"dataGaLocation":1233},{"text":1025,"config":1417},{"href":1027,"dataGaName":1028,"dataGaLocation":1233},{"text":1030,"config":1419},{"href":1032,"dataGaName":1033,"dataGaLocation":1233},{"text":1035,"config":1421},{"href":1037,"dataGaName":1038,"dataGaLocation":1233},{"text":1040,"config":1423},{"href":1042,"dataGaName":1043,"dataGaLocation":1233},{"title":1056,"links":1425},[1426,1428,1430,1432,1434,1436,1441,1446,1448,1450,1452],{"text":1064,"config":1427},{"href":1066,"dataGaName":1058,"dataGaLocation":1233},{"text":1069,"config":1429},{"href":1071,"dataGaName":1072,"dataGaLocation":1233},{"text":1077,"config":1431},{"href":1079,"dataGaName":1080,"dataGaLocation":1233},{"text":1082,"config":1433},{"href":1084,"dataGaName":1085,"dataGaLocation":1233},{"text":1087,"config":1435},{"href":1089,"dataGaName":1090,"dataGaLocation":1233},{"text":1437,"config":1438},"Développement durable",{"href":1439,"dataGaName":1440,"dataGaLocation":1233},"/sustainability/","Sustainability",{"text":1442,"config":1443},"Diversité, inclusion et appartenance (DIB)",{"href":1444,"dataGaName":1445,"dataGaLocation":1233},"/fr-fr/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":1092,"config":1447},{"href":1094,"dataGaName":1095,"dataGaLocation":1233},{"text":1102,"config":1449},{"href":1104,"dataGaName":1105,"dataGaLocation":1233},{"text":1107,"config":1451},{"href":1109,"dataGaName":1110,"dataGaLocation":1233},{"text":1453,"config":1454},"Déclaration de transparence sur l'esclavage moderne",{"href":1455,"dataGaName":1456,"dataGaLocation":1233},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"items":1458},[1459,1461,1464],{"text":1283,"config":1460},{"href":1285,"dataGaName":1286,"dataGaLocation":1233},{"text":1462,"config":1463},"Gestion des cookies",{"dataGaName":1295,"dataGaLocation":1233,"id":1296,"isOneTrustButton":434},{"text":1288,"config":1465},{"href":1290,"dataGaName":1291,"dataGaLocation":1233},[1467],{"id":1468,"title":7,"body":778,"config":1469,"content":1472,"description":778,"extension":1475,"meta":1476,"navigation":434,"path":1477,"seo":1478,"stem":1479,"__hash__":1480},"blogAuthors/en-us/blog/authors/davoud-tu.yml",{"template":1470,"gitlabHandle":1471},"BlogAuthor","davoudtu",{"name":7,"config":1473},{"headshot":1474},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1756481763/pfdaqbndnstiqlmxh3ee.png","yml",{},"/en-us/blog/authors/davoud-tu",{},"en-us/blog/authors/davoud-tu","g3EuLKEcyBU5loLkmS7jRVfSPRPMXXqb9GwZgteyNIA",[1482,1490,1498],{"title":1483,"description":1484,"heroImage":1485,"category":774,"date":1486,"authors":1487,"slug":1489,"externalUrl":778},"Créez un framework de tests de détection automatisés avec GitLab CI/CD et GitLab Duo","Découvrez comment l'équipe Signals Engineering de GitLab a conçu le framework WATCH pour valider en continu son pipeline de surveillance de sécurité.","https://res.cloudinary.com/about-gitlab-com/image/upload/f_auto,q_auto,c_lfill/v1772195014/ooezwusxjl1f7ijfmbvj.png","2026-06-08",[1488],"Evan Baltman","automated-detection-testing-framework",{"title":1491,"description":1492,"heroImage":1493,"category":774,"date":1494,"authors":1495,"slug":1497,"externalUrl":778},"Automatiser l'analyse des lacunes de détection avec GitLab Duo Agent Platform","Découvrez comment l'équipe Signals Engineering de GitLab utilise notre plateforme d'IA pour identifier automatiquement les lacunes de détection après chaque incident de sécurité.","https://res.cloudinary.com/about-gitlab-com/image/upload/f_auto,q_auto,c_lfill/v1773147991/op5xyroonltdwqix0x3u.png","2026-05-21",[1496],"Matt Coons","automating-detection-gap-analysis-with-gitlab-duo-agent-platform",{"title":1499,"description":1500,"heroImage":780,"category":774,"date":1501,"authors":1502,"slug":1504,"externalUrl":778},"Sécurité des pipelines : quelles leçons tirer des attaques de la chaîne d'approvisionnement de mars 2026 ?","Découvrez comment les politiques de pipeline centralisées peuvent détecter et bloquer les attaques récentes de la chaîne d'approvisionnement.","2026-04-10",[1503],"Grant Hickman","pipeline-security-lessons-from-march-supply-chain-incidents",{"promotions":1506},[1507,1521,1533,1544],{"id":1508,"categories":1509,"header":1511,"text":1512,"button":1513,"image":1518},"ai-modernization",[1510],"ai","L'IA tient-elle ses promesses à grande échelle ?","Le questionnaire ne prendra pas plus de 5 minutes.",{"text":1514,"config":1515},"Obtenez votre score de maturité IA",{"href":1516,"dataGaName":1517,"dataGaLocation":1006},"/fr-fr/assessments/ai-modernization-assessment/","modernization assessment",{"config":1519},{"src":1520},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/qix0m7kwnd8x2fh1zq49.png",{"id":1522,"categories":1523,"header":1525,"text":1512,"button":1526,"image":1530},"devops-modernization",[1524,1334],"product","Vous contentez-vous de gérer des outils ou de livrer des innovations ?",{"text":1527,"config":1528},"Obtenez votre score de maturité DevOps",{"href":1529,"dataGaName":1517,"dataGaLocation":1006},"/fr-fr/assessments/devops-modernization-assessment/",{"config":1531},{"src":1532},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138785/eg818fmakweyuznttgid.png",{"id":1534,"categories":1535,"header":1536,"text":1512,"button":1537,"image":1541},"security-modernization",[789],"Faut-il sacrifier la rapidité pour garantir la sécurité ?",{"text":1538,"config":1539},"Obtenez votre score de maturité en matière de sécurité",{"href":1540,"dataGaName":1517,"dataGaLocation":1006},"/fr-fr/assessments/security-modernization-assessment/",{"config":1542},{"src":1543},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/p4pbqd9nnjejg5ds6mdk.png",{"id":1545,"paths":1546,"header":1549,"text":1550,"button":1551,"image":1556},"github-azure-migration",[1547,1548],"migration-from-azure-devops-to-gitlab","integrating-azure-devops-scm-and-gitlab","Votre équipe est-elle prête pour la migration de GitHub vers Azure ?","GitHub a déjà commencé sa migration vers Azure. Découvrez ce que cela signifie pour vous.",{"text":1552,"config":1553},"Découvrez les différences entre GitLab et GitHub",{"href":1554,"dataGaName":1555,"dataGaLocation":1006},"/fr-fr/compare/gitlab-vs-github/github-azure-migration/","github azure migration",{"config":1557},{"src":1532},{"header":1559,"blurb":1560,"button":1561,"secondaryButton":1565},"Commencez à développer plus rapidement dès aujourd'hui","Découvrez ce que votre équipe peut accomplir avec la plateforme d'orchestration intelligente pour le DevSecOps.\n",{"text":800,"config":1562},{"href":1563,"dataGaName":803,"dataGaLocation":1564},"https://gitlab.com/-/trial_registrations/new?glm_content=default-saas-trial&glm_source=about.gitlab.com/fr-fr/","feature",{"text":1270,"config":1566},{"href":807,"dataGaName":808,"dataGaLocation":1564},1781392693112]