[{"data":1,"prerenderedAt":1933},["ShallowReactive",2],{"/fr-fr/blog/secure-and-safe-login-and-commits-with-gitlab-yubico":3,"navigation-fr-fr":1155,"banner-fr-fr":1588,"footer-fr-fr":1596,"blog-post-authors-fr-fr-Fernando Diaz":1835,"blog-related-posts-fr-fr-secure-and-safe-login-and-commits-with-gitlab-yubico":1850,"blog-promotions-fr-fr":1872,"next-steps-fr-fr":1924},{"id":4,"title":5,"authors":6,"body":8,"category":1134,"date":1135,"description":1136,"extension":1137,"externalUrl":1138,"faq":1138,"featured":1139,"heroImage":1140,"meta":1141,"navigation":387,"path":1142,"seo":1143,"slug":1145,"stem":1146,"tags":1147,"template":1153,"updatedDate":1138,"__hash__":1154},"blogPosts/fr-fr/blog/secure-and-safe-login-and-commits-with-gitlab-yubico.md","Connexion et commits sécurisés avec GitLab et Yubico",[7],"Fernando Diaz",{"type":9,"value":10,"toc":1125},"minimark",[11,15,25,28,33,36,39,61,64,67,89,93,102,177,184,190,196,202,205,208,221,227,233,240,244,247,252,258,270,276,281,285,288,291,294,298,302,305,308,312,315,318,329,332,352,356,359,364,492,497,510,515,633,638,695,729,822,827,944,951,1040,1043,1049,1054,1063,1067,1070,1121],[12,13,14],"p",{},"Nous vivons à une époque où les violations de données et les attaques de phishing font quotidiennement la une des médias. Ces violations peuvent nuire aux entreprises et entraîner des amendes réglementaires, des temps d'arrêt ou, pire encore, des atteintes à la réputation. En matière d'authentification, les mots de passe constituent la base de la sécurité en ligne depuis des décennies, mais ils s'avèrent de plus en plus inadaptés face aux cybermenaces sophistiquées.",[12,16,17,18,24],{},"GitLab et ",[19,20,23],"a",{"href":21,"rel":22},"https://www.yubico.com/?lang=fr",[],"Yubico"," se sont associés pour renforcer la sécurité du développement logiciel au moyen de mesures d'authentification robustes. Yubico est l'inventeur de la YubiKey, une clé de sécurité qui offre une authentification multifacteur (MFA) résistante au phishing. En implémentant le protocole FIDO Universal 2nd Factor (U2F) et la protection matérielle YubiKey, GitLab offre aux équipes de développement une défense puissante contre les attaques de phishing et autres cybermenaces afin de garantir la sécurité de leur code et de leurs projets. Cette collaboration renforce l'authentification de niveau entreprise dans la plateforme GitLab et aide les équipes de développement à se concentrer sur la création de logiciels et à avoir confiance en l'intégrité de leur compte.",[12,26,27],{},"Découvrez dans cet article comment configurer GitLab pour utiliser les YubiKeys afin de protéger vos équipes contre les menaces en ligne. Vous apprendrez également comment prévenir davantage la falsification de code avec les commits vérifiés de GitLab.",[29,30,32],"h2",{"id":31},"comment-fonctionnent-les-yubikeys","Comment fonctionnent les YubiKeys ?",[12,34,35],{},"Les YubiKeys fonctionnent comme des tokens matériels cryptographiques qui génèrent et stockent des clés privées dans un environnement sécurisé. Ces clés implémentent les protocoles d'authentification FIDO2/WebAuthn, qui peuvent être utilisés comme facteur supplémentaire pour se connecter à GitLab.",[12,37,38],{},"Voici comment la connexion fonctionne :",[40,41,42,46,49,52,55,58],"ol",{},[43,44,45],"li",{},"Vous saisissez votre nom d'utilisateur et votre mot de passe.",[43,47,48],{},"GitLab envoie un défi cryptographique à votre navigateur.",[43,50,51],{},"Votre navigateur demande à la YubiKey de signer ce défi.",[43,53,54],{},"Vous touchez physiquement la YubiKey pour approuver la connexion.",[43,56,57],{},"La YubiKey crée une signature cryptographique unique pour ce service et ce défi spécifiques.",[43,59,60],{},"GitLab vérifie la signature à l'aide de votre clé publique stockée lors de la configuration.",[12,62,63],{},"La plupart des violations de sécurité majeures sont liées à des mots de passe compromis. Une clé YubiKey garantit la sécurité de votre compte contre une violation à distance. En cas de vol de votre mot de passe, votre compte GitLab reste sécurisé.",[12,65,66],{},"La clé YubiKey offre d'autres avantages pour l'authentification sur GitLab :",[68,69,70,77,83],"ul",{},[43,71,72,76],{},[73,74,75],"strong",{},"Protection contre le phishing :"," les sites frauduleux n'auront pas les bonnes clés cryptographiques pour vérifier la réponse.",[43,78,79,82],{},[73,80,81],{},"Aucun secret à voler :"," la clé privée ne quitte jamais la YubiKey.",[43,84,85,88],{},[73,86,87],{},"Sécurité physique :"," une présence physique est requise pour la connexion (vous devez toucher la YubiKey).",[29,90,92],{"id":91},"configuration-de-lauthentification-multifacteur-yubikey-dans-gitlab","Configuration de l'authentification multifacteur YubiKey dans GitLab",[12,94,95,96,101],{},"Voyons maintenant comment configurer une YubiKey pour l'authentification multifacteur dans GitLab. Assurez-vous d'utiliser un ",[19,97,100],{"href":98,"rel":99},"https://support.yubico.com/hc/en-us/articles/360016615020-Operating-system-and-web-browser-support-for-FIDO2-and-U2F",[],"navigateur et un système d'exploitation pris en charge",", car ils offrent une meilleure compatibilité WebAuthn pour les clés de sécurité matérielles.",[40,103,104,111,122,156,166],{},[43,105,106,107,110],{},"Connectez-vous à votre compte GitLab et accédez à vos paramètres utilisateur (cliquez sur votre avatar dans le coin supérieur gauche et sélectionnez ",[73,108,109],{},"Préférences",").",[43,112,113,114,117,118,121],{},"Dans la barre latérale gauche, cliquez sur ",[73,115,116],{},"Compte"," et accédez à la section ",[73,119,120],{},"Authentification à deux facteurs",".",[43,123,124,125,128,129,121,132,134,135,137,138,140,141,153,155],{},"Si vous n'avez pas encore activé l'authentification à deux facteurs, faites-le maintenant.",[126,127],"br",{},"a. Cliquez sur ",[73,130,131],{},"Activer l'authentification à deux facteurs",[126,133],{},"b. Scannez le QR code avec votre application d'authentification.",[126,136],{},"c. Saisissez le code fourni par votre application d'authentification.",[126,139],{},"d. Saisissez votre mot de passe GitLab. Si vous avez besoin d’accéder à votre compte GitLab sans utiliser l'authentification Google, vous devrez peut-être :",[68,142,143,150],{},[43,144,145,146,149],{},"Utiliser l'option ",[73,147,148],{},"Mot de passe oublié"," sur la page de connexion GitLab pour configurer un mot de passe GitLab distinct.",[43,151,152],{},"Contacter votre administrateur GitLab pour configurer une autre méthode de connexion.",[126,154],{},"e. Enregistrez vos codes de récupération dans un endroit sûr.",[43,157,158,159,162,163,121],{},"Une fois l'authentification à deux facteurs activée, revenez à l'écran précédent en cliquant sur ",[73,160,161],{},"Gérer l'authentification à deux facteurs"," et faites défiler jusqu'à la section ",[73,164,165],{},"Enregistrer un token matériel",[43,167,168,169,172,173,176],{},"Cliquez sur le bouton ",[73,170,171],{},"Configurer un nouvel appareil",".\na. Une fenêtre contextuelle de votre navigateur devrait apparaître. ",[73,174,175],{},"Remarque :"," cette image peut varier selon votre navigateur. Si des fenêtres contextuelles de vos gestionnaires de mots de passe s'affichent, ignorez-les.",[12,178,179],{},[180,181],"img",{"alt":182,"src":183},"Demande d'authentification du navigateur (Brave)","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749674606/Blog/Content%20Images/browser_auth_request.png",[12,185,186,187,121],{},"    b. Sélectionnez ",[73,188,189],{},"Utiliser un téléphone, une tablette ou une clé de sécurité",[40,191,193],{"start":192},6,[43,194,195],{},"Une nouvelle fenêtre contextuelle apparaîtra.",[12,197,198],{},[180,199],{"alt":200,"src":201},"Demande de clé de sécurité du navigateur","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749674607/Blog/Content%20Images/browser_security_key_request.png",[12,203,204],{},"    a. Insérez votre YubiKey dans le port USB de votre ordinateur.",[12,206,207],{},"    b. Touchez le contact métallique/bouton sur votre YubiKey lorsque vous y êtes invité. Le champ se remplira automatiquement avec un code à usage unique.",[40,209,211,214],{"start":210},7,[43,212,213],{},"Saisissez votre mot de passe GitLab et attribuez un nom à votre clé.",[43,215,216,217,220],{},"Cliquez sur ",[73,218,219],{},"Enregistrer"," pour ajouter la YubiKey à votre compte.",[12,222,223,224,226],{},"Votre YubiKey est maintenant enregistrée et peut être utilisée comme second facteur d’authentification lors de votre connexion à GitLab. Vous pouvez enregistrer plusieurs YubiKeys sur votre compte à des fins de sauvegarde. ",[73,225,175],{}," le processus peut légèrement varier selon les navigateurs.",[12,228,229],{},[180,230],{"alt":231,"src":232},"Yubikey enregistrée","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749674607/Blog/Content%20Images/yubikey_registered.png",[234,235,236],"center",{},[237,238,239],"i",{},"Enregistrement de la YubiKey",[29,241,243],{"id":242},"comment-se-connecter-avec-une-yubikey-sur-gitlab","Comment se connecter avec une YubiKey sur GitLab ?",[12,245,246],{},"Maintenant que votre  YubiKey est configurée, vous pouvez vous connecter comme suit :",[40,248,249],{},[43,250,251],{},"Accédez à GitLab.com.",[12,253,254],{},[180,255],{"alt":256,"src":257},"Connexion à GitLab","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749674607/Blog/Content%20Images/gitlab_login.png",[40,259,261,267],{"start":260},2,[43,262,263,264,121],{},"Indiquez votre nom d'utilisateur et votre mot de passe, puis cliquez sur le bouton ",[73,265,266],{},"Se connecter",[43,268,269],{},"Vous serez redirigé vers l'écran suivant.",[12,271,272],{},[180,273],{"alt":274,"src":275},"Connexion à l'authentification à deux facteurs GitLab","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749674606/Blog/Content%20Images/2fa_login.png",[12,277,278,279,176],{},"    a. Une fenêtre contextuelle, comme celle ci-dessous, devrait apparaître. ",[73,280,175],{},[12,282,283],{},[180,284],{"alt":200,"src":201},[12,286,287],{},"    b. Insérez votre YubiKey dans le port USB de votre ordinateur.",[12,289,290],{},"    c. Touchez le contact métallique/bouton sur votre YubiKey lorsque vous y êtes invité. Le champ se remplira automatiquement avec un code à usage unique.",[12,292,293],{},"Vous devriez être désormais connecté. Vous serez ensuite redirigé vers votre page GitLab.",[12,295,296,226],{},[73,297,175],{},[29,299,301],{"id":300},"que-se-passe-t-il-si-je-perds-ma-yubikey","Que se passe-t-il si je perds ma YubiKey ?",[12,303,304],{},"Yubico recommande d'utiliser et de conserver une YubiKey de secours. Pensez à votre maison, votre voiture ou votre bureau : vous possédez sûrement une clé de secours dans un endroit sûr. Votre identité numérique devrait bénéficier du même niveau d’attention. Une deuxième YubiKey garantit une sauvegarde rapide et sûre si vous perdez votre clé principale et vous permet également de désactiver facilement la clé perdue et d'ajouter une nouvelle clé principale ou secondaire.",[12,306,307],{},"Si vous n'avez pas ajouté de YubiKey supplémentaire, nous vous recommandons de configurer une autre forme d'authentification à deux facteurs à vos comptes. Dans les deux cas, vous devriez être en mesure d'accéder à votre compte et de retirer la clé perdue. Veuillez noter que sans une clé de sauvegarde ou une autre méthode d'authentification, vous devrez contacter le service/site web afin d'obtenir de l'aide pour récupérer votre compte.",[29,309,311],{"id":310},"commits-vérifiés-de-gitlab","Commits vérifiés de GitLab",[12,313,314],{},"Pour prévenir davantage la falsification de code, vous pouvez également configurer des commits vérifiés. Dans GitLab, ceux-ci utilisent des signatures GPG (GNU Privacy Guard) pour prouver qu’un commit provient réellement de vous. Ce processus ajoute une couche de sécurité en plus de l'authentification et garantit que non seulement votre compte est sécurisé, mais aussi que chaque modification de code peut être vérifiée de façon cryptographique comme provenant de vous.",[12,316,317],{},"Votre YubiKey peut stocker des clés GPG :",[68,319,320,323,326],{},[43,321,322],{},"La clé privée est stockée en toute sécurité sur la YubiKey.",[43,324,325],{},"La clé publique est partagée avec GitLab.",[43,327,328],{},"La paire de clés est utilisée pour signer vos commits.",[12,330,331],{},"Une fois les clés GPG configurées :",[68,333,334,343,346,349],{},[43,335,336,337,342],{},"Lorsque vous effectuez un commit, ",[19,338,341],{"href":339,"rel":340},"https://about.gitlab.com/fr-fr/blog/what-is-git/",[],"Git"," utilise votre clé privée pour créer une signature.",[43,344,345],{},"La clé GPG est accessible depuis la YubiKey connectée.",[43,347,348],{},"La signature est stockée avec les métadonnées du commit.",[43,350,351],{},"GitLab vérifie la signature à l'aide de votre clé publique.",[29,353,355],{"id":354},"configuration-des-commits-vérifiés","Configuration des commits vérifiés",[12,357,358],{},"Voyons comment configurer les commits vérifiés. Dans cet exemple, la clé GPG est stockée dans votre YubiKey et offre une couche de sécurité supplémentaire.",[40,360,361],{},[43,362,363],{},"Installez le logiciel requis.",[365,366,371],"pre",{"className":367,"code":368,"language":369,"meta":370,"style":370},"language-bash shiki shiki-themes github-light","# On macOS\n\nbrew install --cask yubico-yubikey-manager\n\nbrew install gnupg gpg yubikey-manager\n\n\n# On Ubuntu/Debian\n\nsudo apt install gnupg gpg yubikey-personalization\n\n\n# On Windows\n\n# Download and install Gpg4win from https://gpg4win.org\n","bash","",[372,373,374,383,389,407,412,428,432,436,442,447,465,470,475,481,486],"code",{"__ignoreMap":370},[375,376,379],"span",{"class":377,"line":378},"line",1,[375,380,382],{"class":381},"sAwPA","# On macOS\n",[375,384,385],{"class":377,"line":260},[375,386,388],{"emptyLinePlaceholder":387},true,"\n",[375,390,392,396,400,404],{"class":377,"line":391},3,[375,393,395],{"class":394},"s7eDp","brew",[375,397,399],{"class":398},"sYBdl"," install",[375,401,403],{"class":402},"sYu0t"," --cask",[375,405,406],{"class":398}," yubico-yubikey-manager\n",[375,408,410],{"class":377,"line":409},4,[375,411,388],{"emptyLinePlaceholder":387},[375,413,415,417,419,422,425],{"class":377,"line":414},5,[375,416,395],{"class":394},[375,418,399],{"class":398},[375,420,421],{"class":398}," gnupg",[375,423,424],{"class":398}," gpg",[375,426,427],{"class":398}," yubikey-manager\n",[375,429,430],{"class":377,"line":192},[375,431,388],{"emptyLinePlaceholder":387},[375,433,434],{"class":377,"line":210},[375,435,388],{"emptyLinePlaceholder":387},[375,437,439],{"class":377,"line":438},8,[375,440,441],{"class":381},"# On Ubuntu/Debian\n",[375,443,445],{"class":377,"line":444},9,[375,446,388],{"emptyLinePlaceholder":387},[375,448,450,453,456,458,460,462],{"class":377,"line":449},10,[375,451,452],{"class":394},"sudo",[375,454,455],{"class":398}," apt",[375,457,399],{"class":398},[375,459,421],{"class":398},[375,461,424],{"class":398},[375,463,464],{"class":398}," yubikey-personalization\n",[375,466,468],{"class":377,"line":467},11,[375,469,388],{"emptyLinePlaceholder":387},[375,471,473],{"class":377,"line":472},12,[375,474,388],{"emptyLinePlaceholder":387},[375,476,478],{"class":377,"line":477},13,[375,479,480],{"class":381},"# On Windows\n",[375,482,484],{"class":377,"line":483},14,[375,485,388],{"emptyLinePlaceholder":387},[375,487,489],{"class":377,"line":488},15,[375,490,491],{"class":381},"# Download and install Gpg4win from https://gpg4win.org\n",[40,493,494],{"start":260},[43,495,496],{},"Vérifiez le statut GPG de la YubiKey.",[365,498,500],{"className":367,"code":499,"language":369,"meta":370,"style":370},"gpg --card-status\n",[372,501,502],{"__ignoreMap":370},[375,503,504,507],{"class":377,"line":378},[375,505,506],{"class":394},"gpg",[375,508,509],{"class":402}," --card-status\n",[40,511,512],{"start":391},[43,513,514],{},"Générez des clés GPG directement sur la YubiKey (processus plus sécurisé).",[365,516,518],{"className":367,"code":517,"language":369,"meta":370,"style":370},"# Start GPG edit mode\n\ngpg --card-edit\n\n\n# Enter admin mode\n\nadmin\n\n\n# Generate key directly on card\n\n# PIN = '123456' | Admin PIN = '12345678'\n\ngenerate\n\n\n# Follow prompts\n\n# See documentation for more info\n\n#\nhttps://support.yubico.com/hc/en-us/articles/360013790259-Using-Your-YubiKey-with-OpenPGP\n",[372,519,520,525,529,536,540,544,549,553,558,562,566,571,575,580,584,589,594,599,605,610,616,621,627],{"__ignoreMap":370},[375,521,522],{"class":377,"line":378},[375,523,524],{"class":381},"# Start GPG edit mode\n",[375,526,527],{"class":377,"line":260},[375,528,388],{"emptyLinePlaceholder":387},[375,530,531,533],{"class":377,"line":391},[375,532,506],{"class":394},[375,534,535],{"class":402}," --card-edit\n",[375,537,538],{"class":377,"line":409},[375,539,388],{"emptyLinePlaceholder":387},[375,541,542],{"class":377,"line":414},[375,543,388],{"emptyLinePlaceholder":387},[375,545,546],{"class":377,"line":192},[375,547,548],{"class":381},"# Enter admin mode\n",[375,550,551],{"class":377,"line":210},[375,552,388],{"emptyLinePlaceholder":387},[375,554,555],{"class":377,"line":438},[375,556,557],{"class":394},"admin\n",[375,559,560],{"class":377,"line":444},[375,561,388],{"emptyLinePlaceholder":387},[375,563,564],{"class":377,"line":449},[375,565,388],{"emptyLinePlaceholder":387},[375,567,568],{"class":377,"line":467},[375,569,570],{"class":381},"# Generate key directly on card\n",[375,572,573],{"class":377,"line":472},[375,574,388],{"emptyLinePlaceholder":387},[375,576,577],{"class":377,"line":477},[375,578,579],{"class":381},"# PIN = '123456' | Admin PIN = '12345678'\n",[375,581,582],{"class":377,"line":483},[375,583,388],{"emptyLinePlaceholder":387},[375,585,586],{"class":377,"line":488},[375,587,588],{"class":394},"generate\n",[375,590,592],{"class":377,"line":591},16,[375,593,388],{"emptyLinePlaceholder":387},[375,595,597],{"class":377,"line":596},17,[375,598,388],{"emptyLinePlaceholder":387},[375,600,602],{"class":377,"line":601},18,[375,603,604],{"class":381},"# Follow prompts\n",[375,606,608],{"class":377,"line":607},19,[375,609,388],{"emptyLinePlaceholder":387},[375,611,613],{"class":377,"line":612},20,[375,614,615],{"class":381},"# See documentation for more info\n",[375,617,619],{"class":377,"line":618},21,[375,620,388],{"emptyLinePlaceholder":387},[375,622,624],{"class":377,"line":623},22,[375,625,626],{"class":381},"#\n",[375,628,630],{"class":377,"line":629},23,[375,631,632],{"class":394},"https://support.yubico.com/hc/en-us/articles/360013790259-Using-Your-YubiKey-with-OpenPGP\n",[40,634,635],{"start":409},[43,636,637],{},"Exportez votre clé publique.",[365,639,641],{"className":367,"code":640,"language":369,"meta":370,"style":370},"# Get your key ID\n\ngpg --list-secret-keys --keyid-format LONG\n\n\n# Export the public key\n\ngpg --armor --export YOUR_KEY_ID\n",[372,642,643,648,652,665,669,673,678,682],{"__ignoreMap":370},[375,644,645],{"class":377,"line":378},[375,646,647],{"class":381},"# Get your key ID\n",[375,649,650],{"class":377,"line":260},[375,651,388],{"emptyLinePlaceholder":387},[375,653,654,656,659,662],{"class":377,"line":391},[375,655,506],{"class":394},[375,657,658],{"class":402}," --list-secret-keys",[375,660,661],{"class":402}," --keyid-format",[375,663,664],{"class":398}," LONG\n",[375,666,667],{"class":377,"line":409},[375,668,388],{"emptyLinePlaceholder":387},[375,670,671],{"class":377,"line":414},[375,672,388],{"emptyLinePlaceholder":387},[375,674,675],{"class":377,"line":192},[375,676,677],{"class":381},"# Export the public key\n",[375,679,680],{"class":377,"line":210},[375,681,388],{"emptyLinePlaceholder":387},[375,683,684,686,689,692],{"class":377,"line":438},[375,685,506],{"class":394},[375,687,688],{"class":402}," --armor",[375,690,691],{"class":402}," --export",[375,693,694],{"class":398}," YOUR_KEY_ID\n",[40,696,697,726],{"start":414},[43,698,699,700,702,703,121,705,707,708,121,711,713,714,121,717,719,720,722,723,121],{},"Ajoutez la clé publique à GitLab.",[126,701],{},"a. Cliquez sur votre Avatar GitLab et sélectionnez ",[73,704,109],{},[126,706],{},"b. Dans l'onglet latéral, sélectionnez ",[73,709,710],{},"Clés GPG",[126,712],{},"c. Cliquez sur ",[73,715,716],{},"Ajouter une nouvelle clé",[126,718],{},"d. Collez votre clé publique.",[126,721],{},"e. Cliquez sur ",[73,724,725],{},"Ajouter la clé",[43,727,728],{},"Configurez Git.",[365,730,732],{"className":367,"code":731,"language":369,"meta":370,"style":370},"# Set signing key\n\ngit config --global user.signingkey YOUR_KEY_ID\n\n\n# Enable automatic signing\n\ngit config --global commit.gpgsign true\n\n\n# Tell GPG which key to use\n\necho \"default-key YOUR_KEY_ID\" >> ~/.gnupg/gpg.conf\n",[372,733,734,739,743,759,763,767,772,776,790,794,798,803,807],{"__ignoreMap":370},[375,735,736],{"class":377,"line":378},[375,737,738],{"class":381},"# Set signing key\n",[375,740,741],{"class":377,"line":260},[375,742,388],{"emptyLinePlaceholder":387},[375,744,745,748,751,754,757],{"class":377,"line":391},[375,746,747],{"class":394},"git",[375,749,750],{"class":398}," config",[375,752,753],{"class":402}," --global",[375,755,756],{"class":398}," user.signingkey",[375,758,694],{"class":398},[375,760,761],{"class":377,"line":409},[375,762,388],{"emptyLinePlaceholder":387},[375,764,765],{"class":377,"line":414},[375,766,388],{"emptyLinePlaceholder":387},[375,768,769],{"class":377,"line":192},[375,770,771],{"class":381},"# Enable automatic signing\n",[375,773,774],{"class":377,"line":210},[375,775,388],{"emptyLinePlaceholder":387},[375,777,778,780,782,784,787],{"class":377,"line":438},[375,779,747],{"class":394},[375,781,750],{"class":398},[375,783,753],{"class":402},[375,785,786],{"class":398}," commit.gpgsign",[375,788,789],{"class":402}," true\n",[375,791,792],{"class":377,"line":444},[375,793,388],{"emptyLinePlaceholder":387},[375,795,796],{"class":377,"line":449},[375,797,388],{"emptyLinePlaceholder":387},[375,799,800],{"class":377,"line":467},[375,801,802],{"class":381},"# Tell GPG which key to use\n",[375,804,805],{"class":377,"line":472},[375,806,388],{"emptyLinePlaceholder":387},[375,808,809,812,815,819],{"class":377,"line":477},[375,810,811],{"class":402},"echo",[375,813,814],{"class":398}," \"default-key YOUR_KEY_ID\"",[375,816,818],{"class":817},"sD7c4"," >>",[375,820,821],{"class":398}," ~/.gnupg/gpg.conf\n",[40,823,824],{"start":210},[43,825,826],{},"Testons maintenant la configuration en créant un commit test dans un projet :",[365,828,830],{"className":367,"code":829,"language":369,"meta":370,"style":370},"# Make a change in the project\n\n# Add changes\n\ngit add .\n\n\n# Make a test commit\n\ngit commit -S -m \"Test signed commit\"\n\n\n# Verify signature\n\ngit verify-commit HEAD\n\n\n# Push the change\n\ngit push\n",[372,831,832,837,841,846,850,860,864,868,873,877,893,897,901,906,910,920,924,928,933,937],{"__ignoreMap":370},[375,833,834],{"class":377,"line":378},[375,835,836],{"class":381},"# Make a change in the project\n",[375,838,839],{"class":377,"line":260},[375,840,388],{"emptyLinePlaceholder":387},[375,842,843],{"class":377,"line":391},[375,844,845],{"class":381},"# Add changes\n",[375,847,848],{"class":377,"line":409},[375,849,388],{"emptyLinePlaceholder":387},[375,851,852,854,857],{"class":377,"line":414},[375,853,747],{"class":394},[375,855,856],{"class":398}," add",[375,858,859],{"class":398}," .\n",[375,861,862],{"class":377,"line":192},[375,863,388],{"emptyLinePlaceholder":387},[375,865,866],{"class":377,"line":210},[375,867,388],{"emptyLinePlaceholder":387},[375,869,870],{"class":377,"line":438},[375,871,872],{"class":381},"# Make a test commit\n",[375,874,875],{"class":377,"line":444},[375,876,388],{"emptyLinePlaceholder":387},[375,878,879,881,884,887,890],{"class":377,"line":449},[375,880,747],{"class":394},[375,882,883],{"class":398}," commit",[375,885,886],{"class":402}," -S",[375,888,889],{"class":402}," -m",[375,891,892],{"class":398}," \"Test signed commit\"\n",[375,894,895],{"class":377,"line":467},[375,896,388],{"emptyLinePlaceholder":387},[375,898,899],{"class":377,"line":472},[375,900,388],{"emptyLinePlaceholder":387},[375,902,903],{"class":377,"line":477},[375,904,905],{"class":381},"# Verify signature\n",[375,907,908],{"class":377,"line":483},[375,909,388],{"emptyLinePlaceholder":387},[375,911,912,914,917],{"class":377,"line":488},[375,913,747],{"class":394},[375,915,916],{"class":398}," verify-commit",[375,918,919],{"class":398}," HEAD\n",[375,921,922],{"class":377,"line":591},[375,923,388],{"emptyLinePlaceholder":387},[375,925,926],{"class":377,"line":596},[375,927,388],{"emptyLinePlaceholder":387},[375,929,930],{"class":377,"line":601},[375,931,932],{"class":381},"# Push the change\n",[375,934,935],{"class":377,"line":607},[375,936,388],{"emptyLinePlaceholder":387},[375,938,939,941],{"class":377,"line":612},[375,940,747],{"class":394},[375,942,943],{"class":398}," push\n",[12,945,946,947,950],{},"La commande ",[372,948,949],{},"git verify-commit HEAD"," devrait afficher la clé GPG utilisée :",[365,952,954],{"className":367,"code":953,"language":369,"meta":370,"style":370},"gpg: Signature made Wed Feb 26 11:45:00 2025 CST\n\ngpg:                using RSA key YOUR_KEY_ID\n\ngpg: Good signature from “NAME (DESCRIPTION) \u003CEMAIL>\" [ultimate]\n",[372,955,956,985,989,1004,1008],{"__ignoreMap":370},[375,957,958,961,964,967,970,973,976,979,982],{"class":377,"line":378},[375,959,960],{"class":394},"gpg:",[375,962,963],{"class":398}," Signature",[375,965,966],{"class":398}," made",[375,968,969],{"class":398}," Wed",[375,971,972],{"class":398}," Feb",[375,974,975],{"class":402}," 26",[375,977,978],{"class":398}," 11:45:00",[375,980,981],{"class":402}," 2025",[375,983,984],{"class":398}," CST\n",[375,986,987],{"class":377,"line":260},[375,988,388],{"emptyLinePlaceholder":387},[375,990,991,993,996,999,1002],{"class":377,"line":391},[375,992,960],{"class":394},[375,994,995],{"class":398},"                using",[375,997,998],{"class":398}," RSA",[375,1000,1001],{"class":398}," key",[375,1003,694],{"class":398},[375,1005,1006],{"class":377,"line":409},[375,1007,388],{"emptyLinePlaceholder":387},[375,1009,1010,1012,1015,1018,1021,1024,1028,1031,1034,1037],{"class":377,"line":414},[375,1011,960],{"class":394},[375,1013,1014],{"class":398}," Good",[375,1016,1017],{"class":398}," signature",[375,1019,1020],{"class":398}," from",[375,1022,1023],{"class":398}," “NAME",[375,1025,1027],{"class":1026},"sgsFI"," (DESCRIPTION) ",[375,1029,1030],{"class":817},"\u003C",[375,1032,1033],{"class":1026},"EMAIL",[375,1035,1036],{"class":817},">",[375,1038,1039],{"class":398},"\" [ultimate]\n",[12,1041,1042],{},"Une fois le commit effectué dans GitLab, vous devriez voir qu'il est vérifiée comme suit :",[12,1044,1045],{},[180,1046],{"alt":1047,"src":1048},"Le commit est vérifié","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749674607/Blog/Content%20Images/verified.png",[234,1050,1051],{},[237,1052,1053],{},"Commit vérifié avec la clé GPG",[12,1055,1056,1057,1062],{},"Vous pouvez également utiliser l'",[19,1058,1061],{"href":1059,"rel":1060},"https://docs.gitlab.com/api/commits/#get-signature-of-a-commit",[],"API des commits"," pour vérifier la signature d’un commit, ce qui vous permet d'opérationnaliser davantage le workflow de vérification.",[29,1064,1066],{"id":1065},"en-savoir-plus","En savoir plus",[12,1068,1069],{},"Pour en savoir plus sur GitLab et Yubico, consultez ces ressources :",[68,1071,1072,1079,1086,1093,1100,1107,1114],{},[43,1073,1074],{},[19,1075,1078],{"href":1076,"rel":1077},"https://about.gitlab.com/fr-fr/why-gitlab/",[],"Pourquoi choisir GitLab ?",[43,1080,1081],{},[19,1082,1085],{"href":1083,"rel":1084},"https://www.yubico.com/pourquoi-yubico/?lang=fr",[],"Pourquoi choisir Yubico ?",[43,1087,1088],{},[19,1089,1092],{"href":1090,"rel":1091},"https://about.gitlab.com/fr-fr/solutions/application-security-testing/",[],"Solutions de sécurité et de conformité de\nGitLab",[43,1094,1095],{},[19,1096,1099],{"href":1097,"rel":1098},"https://www.yubico.com/works-with-yubikey/catalog/gitlab/",[],"Annonce concernant GitLab dans le catalogue des plateformes compatibles avec YubiKey",[43,1101,1102],{},[19,1103,1106],{"href":1104,"rel":1105},"https://docs.gitlab.com/user/project/repository/signed_commits/",[],"Documentation sur les commits verifiés de GitLab",[43,1108,1109],{},[19,1110,1113],{"href":1111,"rel":1112},"https://docs.gitlab.com/user/project/repository/push_rules/",[],"Règles de push dans\nGitLab",[43,1115,1116],{},[19,1117,1120],{"href":1118,"rel":1119},"https://docs.gitlab.com/user/project/repository/signed_commits/gpg/",[],"Documentation relative à la signature de commits avec des clés GPG",[1122,1123,1124],"style",{},"html pre.shiki code .sAwPA, html code.shiki .sAwPA{--shiki-default:#6A737D}html pre.shiki code .s7eDp, html code.shiki .s7eDp{--shiki-default:#6F42C1}html pre.shiki code .sYBdl, html code.shiki .sYBdl{--shiki-default:#032F62}html pre.shiki code .sYu0t, html code.shiki .sYu0t{--shiki-default:#005CC5}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);}html pre.shiki code .sD7c4, html code.shiki .sD7c4{--shiki-default:#D73A49}html pre.shiki code .sgsFI, html code.shiki .sgsFI{--shiki-default:#24292E}",{"title":370,"searchDepth":260,"depth":260,"links":1126},[1127,1128,1129,1130,1131,1132,1133],{"id":31,"depth":260,"text":32},{"id":91,"depth":260,"text":92},{"id":242,"depth":260,"text":243},{"id":300,"depth":260,"text":301},{"id":310,"depth":260,"text":311},{"id":354,"depth":260,"text":355},{"id":1065,"depth":260,"text":1066},"security","2025-10-01","GitLab et Yubico se sont associés pour renforcer la sécurité du développement logiciel grâce à des mesures d'authentification robustes.","md",null,false,"https://res.cloudinary.com/about-gitlab-com/image/upload/f_auto,q_auto,c_lfill/v1749663259/Blog/Hero%20Images/REFERENCE_-_display_preview_for_blog_images__3_.png",{},"/fr-fr/blog/secure-and-safe-login-and-commits-with-gitlab-yubico",{"config":1144,"title":5,"ogTitle":5,"description":1136,"ogDescription":1136,"ogImage":1140},{"noIndex":1139},"secure-and-safe-login-and-commits-with-gitlab-yubico","fr-fr/blog/secure-and-safe-login-and-commits-with-gitlab-yubico",[1134,1148,1149,1150,1151,1152],"tutorial","DevSecOps platform","integrations","product","features","BlogPost","tOLVk4TGMZ1ojXyWA7561SeOxVjRSWPSfcGGpiPEl-c",{"logo":1156,"freeTrial":1161,"sales":1166,"login":1171,"items":1176,"search":1503,"minimal":1539,"duo":1558,"switchNav":1567,"pricingDeployment":1578},{"config":1157},{"href":1158,"dataGaName":1159,"dataGaLocation":1160},"/fr-fr/","gitlab logo","header",{"text":1162,"config":1163},"Commencer un essai gratuit",{"href":1164,"dataGaName":1165,"dataGaLocation":1160},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/fr-fr&glm_content=default-saas-trial/","free trial",{"text":1167,"config":1168},"Demander une démo",{"href":1169,"dataGaName":1170,"dataGaLocation":1160},"/fr-fr/sales/?contact-topic=request-demo","sales",{"text":1172,"config":1173},"Connexion",{"href":1174,"dataGaName":1175,"dataGaLocation":1160},"https://gitlab.com/users/sign_in/","sign in",[1177,1205,1307,1312,1425,1481],{"text":1178,"config":1179,"menu":1181},"Plateforme",{"dataNavLevelOne":1180},"platform",{"type":1182,"columns":1183},"cards",[1184,1190,1198],{"title":1178,"description":1185,"link":1186},"La plateforme d'orchestration intelligente pour le DevSecOps",{"text":1187,"config":1188},"Explorer notre plateforme",{"href":1189,"dataGaName":1180,"dataGaLocation":1160},"/fr-fr/platform/",{"title":1191,"description":1192,"link":1193},"GitLab Duo Agent Platform","L'IA agentique pour l'ensemble du cycle de développement logiciel",{"text":1194,"config":1195},"Découvrir GitLab Duo",{"href":1196,"dataGaName":1197,"dataGaLocation":1160},"/fr-fr/gitlab-duo-agent-platform/","gitlab duo agent platform",{"title":1199,"description":1200,"link":1201},"Pourquoi GitLab ?","Découvrez les principales raisons pour lesquelles les entreprises choisissent GitLab",{"text":1066,"config":1202},{"href":1203,"dataGaName":1204,"dataGaLocation":1160},"/fr-fr/why-gitlab/","why gitlab",{"text":1206,"left":387,"config":1207,"menu":1209},"Produit",{"dataNavLevelOne":1208},"solutions",{"type":1210,"link":1211,"columns":1215,"feature":1286},"lists",{"text":1212,"config":1213},"Voir toutes les solutions",{"href":1214,"dataGaName":1208,"dataGaLocation":1160},"/fr-fr/solutions/",[1216,1241,1264],{"title":1217,"description":1218,"link":1219,"items":1224},"Automatisation","CI/CD et automatisation pour accélérer le déploiement",{"config":1220},{"icon":1221,"href":1222,"dataGaName":1223,"dataGaLocation":1160},"AutomatedCodeAlt","/fr-fr/solutions/delivery-automation/","automated software delivery",[1225,1229,1232,1237],{"text":1226,"config":1227},"CI/CD",{"href":1228,"dataGaLocation":1160,"dataGaName":1226},"/fr-fr/solutions/continuous-integration/",{"text":1191,"config":1230},{"href":1196,"dataGaLocation":1160,"dataGaName":1231},"gitlab duo agent platform - product menu",{"text":1233,"config":1234},"Gestion du code source",{"href":1235,"dataGaLocation":1160,"dataGaName":1236},"/fr-fr/solutions/source-code-management/","Source Code Management",{"text":1238,"config":1239},"Livraison de logiciels automatisée",{"href":1222,"dataGaLocation":1160,"dataGaName":1240},"Automated software delivery",{"title":1242,"description":1243,"link":1244,"items":1249},"Sécurité","Livrez du code plus rapidement sans compromettre la sécurité",{"config":1245},{"href":1246,"dataGaName":1247,"dataGaLocation":1160,"icon":1248},"/fr-fr/solutions/application-security-testing/","security and compliance","ShieldCheckLight",[1250,1254,1259],{"text":1251,"config":1252},"Tests de sécurité des applications",{"href":1246,"dataGaName":1253,"dataGaLocation":1160},"Application security testing",{"text":1255,"config":1256},"Sécurité de la chaîne d'approvisionnement logicielle",{"href":1257,"dataGaLocation":1160,"dataGaName":1258},"/fr-fr/solutions/supply-chain/","Software supply chain security",{"text":1260,"config":1261},"Conformité logicielle",{"href":1262,"dataGaName":1263,"dataGaLocation":1160},"/fr-fr/solutions/software-compliance/","software compliance",{"title":1265,"link":1266,"items":1271},"Mesures",{"config":1267},{"icon":1268,"href":1269,"dataGaName":1270,"dataGaLocation":1160},"DigitalTransformation","/fr-fr/solutions/visibility-measurement/","visibility and measurement",[1272,1276,1281],{"text":1273,"config":1274},"Visibilité et mesures",{"href":1269,"dataGaLocation":1160,"dataGaName":1275},"Visibility and Measurement",{"text":1277,"config":1278},"Gestion de la chaîne de valeur",{"href":1279,"dataGaLocation":1160,"dataGaName":1280},"/fr-fr/solutions/value-stream-management/","Value Stream Management",{"text":1282,"config":1283},"Analyses et informations",{"href":1284,"dataGaLocation":1160,"dataGaName":1285},"/fr-fr/solutions/analytics-and-insights/","Analytics and insights",{"title":1287,"type":1210,"items":1288},"GitLab",[1289,1295,1301],{"text":1290,"config":1291},"Entreprises",{"icon":1292,"href":1293,"dataGaLocation":1160,"dataGaName":1294},"Building","/fr-fr/enterprise/","enterprise",{"text":1296,"config":1297},"Pour les PME",{"icon":1298,"href":1299,"dataGaLocation":1160,"dataGaName":1300},"Work","/fr-fr/small-business/","small business",{"text":1302,"config":1303},"Pour le secteur public",{"icon":1304,"href":1305,"dataGaLocation":1160,"dataGaName":1306},"Organization","/fr-fr/solutions/public-sector/","public sector",{"text":1308,"config":1309},"Tarifs",{"href":1310,"dataGaName":1311,"dataGaLocation":1160,"dataNavLevelOne":1311},"/fr-fr/pricing/","pricing",{"text":1313,"config":1314,"menu":1316},"Ressources",{"dataNavLevelOne":1315},"resources",{"type":1210,"link":1317,"columns":1321,"feature":1414},{"text":1318,"config":1319},"Afficher toutes les ressources",{"href":1320,"dataGaName":1315,"dataGaLocation":1160},"/fr-fr/resources/",[1322,1354,1381],{"title":1323,"items":1324},"Premiers pas",[1325,1330,1335,1340,1345,1350],{"text":1326,"config":1327},"Installation",{"href":1328,"dataGaName":1329,"dataGaLocation":1160},"/fr-fr/install/","install",{"text":1331,"config":1332},"Guides de démarrage",{"href":1333,"dataGaName":1334,"dataGaLocation":1160},"/fr-fr/get-started/","quick setup checklists",{"text":1336,"config":1337},"Apprentissage",{"href":1338,"dataGaLocation":1160,"dataGaName":1339},"https://university.gitlab.com/","learn",{"text":1341,"config":1342},"Documentation",{"href":1343,"dataGaName":1344,"dataGaLocation":1160},"https://docs.gitlab.com/","product documentation",{"text":1346,"config":1347},"Vidéos sur les bonnes pratiques",{"href":1348,"dataGaName":1349,"dataGaLocation":1160},"/fr-fr/getting-started-videos/","best practice videos",{"text":1351,"config":1352},"Intégrations",{"href":1353,"dataGaName":1150,"dataGaLocation":1160},"/fr-fr/integrations/",{"title":1355,"items":1356},"Découvrir",[1357,1362,1367,1372,1376],{"text":1358,"config":1359},"Témoignages clients",{"href":1360,"dataGaName":1361,"dataGaLocation":1160},"/fr-fr/customers/","customer success stories",{"text":1363,"config":1364},"Blog",{"href":1365,"dataGaName":1366,"dataGaLocation":1160},"/fr-fr/blog/","blog",{"text":1368,"config":1369},"Demo Hub",{"href":1370,"dataGaName":1371,"dataGaLocation":1160},"/fr-fr/demo-hub/","demo hub",{"text":1373,"config":1374},"The Source",{"href":1375,"dataGaName":1366,"dataGaLocation":1160},"/fr-fr/the-source/",{"text":1377,"config":1378},"Travail à distance",{"href":1379,"dataGaName":1380,"dataGaLocation":1160},"https://handbook.gitlab.com/handbook/company/culture/all-remote/","remote",{"title":1382,"items":1383},"Connecter",[1384,1389,1394,1399,1404,1409],{"text":1385,"config":1386},"Services GitLab",{"href":1387,"dataGaName":1388,"dataGaLocation":1160},"/fr-fr/services/","services",{"text":1390,"config":1391},"Contribuer",{"href":1392,"dataGaName":1393,"dataGaLocation":1160},"https://contributors.gitlab.com","contribute",{"text":1395,"config":1396},"Communauté",{"href":1397,"dataGaName":1398,"dataGaLocation":1160},"/community/","community",{"text":1400,"config":1401},"Forum",{"href":1402,"dataGaName":1403,"dataGaLocation":1160},"https://forum.gitlab.com/","forum",{"text":1405,"config":1406},"Événements",{"href":1407,"dataGaName":1408,"dataGaLocation":1160},"/events/","events",{"text":1410,"config":1411},"Partenaires",{"href":1412,"dataGaName":1413,"dataGaLocation":1160},"/fr-fr/partners/","partners",{"config":1415,"title":1418,"text":1419,"link":1420},{"background":1416,"textColor":1417},"url('https://res.cloudinary.com/about-gitlab-com/image/upload/v1777322348/qpq8yrgn8knii57omj0c.png')","#000","Nouveautés de GitLab","Découvrez les dernières fonctionnalités et améliorations.",{"text":1421,"config":1422},"Lire les articles les plus récents",{"href":1423,"dataGaName":1424,"dataGaLocation":1160},"/fr-fr/whats-new/","whats new",{"text":1426,"config":1427,"menu":1429},"Société",{"dataNavLevelOne":1428},"company",{"type":1210,"columns":1430},[1431],{"items":1432},[1433,1438,1444,1446,1451,1456,1461,1466,1471,1476],{"text":1434,"config":1435},"À propos",{"href":1436,"dataGaName":1437,"dataGaLocation":1160},"/fr-fr/company/","about",{"text":1439,"config":1440,"footerGa":1443},"Carrières",{"href":1441,"dataGaName":1442,"dataGaLocation":1160},"/jobs/","jobs",{"dataGaName":1442},{"text":1405,"config":1445},{"href":1407,"dataGaName":1408,"dataGaLocation":1160},{"text":1447,"config":1448},"Leadership",{"href":1449,"dataGaName":1450,"dataGaLocation":1160},"/company/team/e-group/","leadership",{"text":1452,"config":1453},"Manuel",{"href":1454,"dataGaName":1455,"dataGaLocation":1160},"https://handbook.gitlab.com/","handbook",{"text":1457,"config":1458},"Relations avec les investisseurs",{"href":1459,"dataGaName":1460,"dataGaLocation":1160},"https://ir.gitlab.com/overview/default.aspx","investor relations",{"text":1462,"config":1463},"Trust Center",{"href":1464,"dataGaName":1465,"dataGaLocation":1160},"/fr-fr/security/","trust center",{"text":1467,"config":1468},"Centre pour la transparence de l'IA",{"href":1469,"dataGaName":1470,"dataGaLocation":1160},"/fr-fr/ai-transparency-center/","ai transparency center",{"text":1472,"config":1473},"Newsletter",{"href":1474,"dataGaName":1475,"dataGaLocation":1160},"/company/contact/#contact-forms","newsletter",{"text":1477,"config":1478},"Presse",{"href":1479,"dataGaName":1480,"dataGaLocation":1160},"/press/","press",{"text":1482,"config":1483,"menu":1484},"Nous contacter",{"dataNavLevelOne":1428},{"type":1210,"columns":1485},[1486],{"items":1487},[1488,1493,1498],{"text":1489,"config":1490},"Contacter l'équipe commerciale",{"href":1491,"dataGaName":1492,"dataGaLocation":1160},"/fr-fr/sales/","talk to sales",{"text":1494,"config":1495},"Assistance GitLab",{"href":1496,"dataGaName":1497,"dataGaLocation":1160},"https://support.gitlab.com/hc/en-us","support portal",{"text":1499,"config":1500},"Portail clients GitLab",{"href":1501,"dataGaName":1502,"dataGaLocation":1160},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":1504,"login":1505,"suggestions":1512},"Fermer",{"text":1506,"link":1507},"Pour rechercher des dépôts et des projets, connectez-vous à",{"text":1508,"config":1509},"GitLab.com",{"href":1174,"dataGaName":1510,"dataGaLocation":1511},"search login","search",{"text":1513,"default":1514},"Suggestions",[1515,1518,1523,1525,1530,1535],{"text":1191,"config":1516},{"href":1196,"dataGaName":1517,"dataGaLocation":1511},"GitLab Duo Agent Platform",{"text":1519,"config":1520},"Suggestions de code (IA)",{"href":1521,"dataGaName":1522,"dataGaLocation":1511},"/fr-fr/solutions/code-suggestions/","Code Suggestions (AI)",{"text":1226,"config":1524},{"href":1228,"dataGaName":1226,"dataGaLocation":1511},{"text":1526,"config":1527},"GitLab sur AWS",{"href":1528,"dataGaName":1529,"dataGaLocation":1511},"/fr-fr/partners/technology-partners/aws/","GitLab on AWS",{"text":1531,"config":1532},"GitLab sur Google Cloud",{"href":1533,"dataGaName":1534,"dataGaLocation":1511},"/fr-fr/partners/technology-partners/google-cloud-platform/","GitLab on Google Cloud",{"text":1536,"config":1537},"Pourquoi utiliser GitLab ?",{"href":1203,"dataGaName":1538,"dataGaLocation":1511},"Why GitLab?",{"freeTrial":1540,"mobileIcon":1545,"desktopIcon":1550,"secondaryButton":1553},{"text":1541,"config":1542},"Commencer votre essai gratuit",{"href":1543,"dataGaName":1165,"dataGaLocation":1544},"https://gitlab.com/-/trials/new/","nav",{"altText":1546,"config":1547},"Icône GitLab",{"src":1548,"dataGaName":1549,"dataGaLocation":1544},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203874/jypbw1jx72aexsoohd7x.svg","gitlab icon",{"altText":1546,"config":1551},{"src":1552,"dataGaName":1549,"dataGaLocation":1544},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203875/gs4c8p8opsgvflgkswz9.svg",{"text":1554,"config":1555},"Commencer",{"href":1556,"dataGaName":1557,"dataGaLocation":1544},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/fr-fr/get-started/","get started",{"freeTrial":1559,"mobileIcon":1563,"desktopIcon":1565},{"text":1560,"config":1561},"En savoir plus sur GitLab Duo",{"href":1196,"dataGaName":1562,"dataGaLocation":1544},"gitlab duo",{"altText":1546,"config":1564},{"src":1548,"dataGaName":1549,"dataGaLocation":1544},{"altText":1546,"config":1566},{"src":1552,"dataGaName":1549,"dataGaLocation":1544},{"button":1568,"mobileIcon":1573,"desktopIcon":1575},{"text":1569,"config":1570},"/switch",{"href":1571,"dataGaName":1572,"dataGaLocation":1544},"#contact","switch",{"altText":1546,"config":1574},{"src":1548,"dataGaName":1549,"dataGaLocation":1544},{"altText":1546,"config":1576},{"src":1577,"dataGaName":1549,"dataGaLocation":1544},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1773335277/ohhpiuoxoldryzrnhfrh.png",{"freeTrial":1579,"mobileIcon":1584,"desktopIcon":1586},{"text":1580,"config":1581},"Retour aux tarifs",{"href":1310,"dataGaName":1582,"dataGaLocation":1544,"icon":1583},"back to pricing","GoBack",{"altText":1546,"config":1585},{"src":1548,"dataGaName":1549,"dataGaLocation":1544},{"altText":1546,"config":1587},{"src":1552,"dataGaName":1549,"dataGaLocation":1544},{"title":1589,"button":1590,"config":1594},"GitLab Orbit est arrivé : la couche de contexte pour les agents d'IA.",{"text":1066,"config":1591},{"href":1592,"dataGaName":1593,"dataGaLocation":1160},"/fr-fr/gitlab-orbit/","orbit",{"layout":1595,"disabled":1139},"release",{"data":1597},{"text":1598,"source":1599,"edit":1605,"contribute":1610,"config":1614,"items":1619,"minimal":1827},"Git est une marque déposée de Software Freedom Conservancy et notre utilisation de « GitLab » est sous licence.",{"text":1600,"config":1601},"Afficher le code source de la page",{"href":1602,"dataGaName":1603,"dataGaLocation":1604},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":1606,"config":1607},"Modifier cette page",{"href":1608,"dataGaName":1609,"dataGaLocation":1604},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":1390,"config":1611},{"href":1612,"dataGaName":1613,"dataGaLocation":1604},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":1615,"facebook":1616,"youtube":1617,"linkedin":1618},"https://twitter.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[1620,1666,1719,1762,1794],{"title":1308,"links":1621,"subMenu":1636},[1622,1626,1631],{"text":1623,"config":1624},"Voir les forfaits",{"href":1310,"dataGaName":1625,"dataGaLocation":1604},"view plans",{"text":1627,"config":1628},"GitLab Premium",{"href":1629,"dataGaName":1630,"dataGaLocation":1604},"/fr-fr/pricing/premium/","why premium",{"text":1632,"config":1633},"GitLab Ultimate",{"href":1634,"dataGaName":1635,"dataGaLocation":1604},"/fr-fr/pricing/ultimate/","why ultimate",[1637],{"title":1482,"links":1638},[1639,1641,1643,1646,1651,1656,1661],{"text":1489,"config":1640},{"href":1491,"dataGaName":1170,"dataGaLocation":1604},{"text":1494,"config":1642},{"href":1496,"dataGaName":1497,"dataGaLocation":1604},{"text":1644,"config":1645},"Portail clients",{"href":1501,"dataGaName":1502,"dataGaLocation":1604},{"text":1647,"config":1648},"Statut",{"href":1649,"dataGaName":1650,"dataGaLocation":1604},"https://status.gitlab.com/","status",{"text":1652,"config":1653},"Conditions d'utilisation",{"href":1654,"dataGaName":1655,"dataGaLocation":1604},"/terms/","terms of use",{"text":1657,"config":1658},"Politique de confidentialité",{"href":1659,"dataGaName":1660,"dataGaLocation":1604},"/fr-fr/privacy/","privacy statement",{"text":1662,"config":1663},"Gestion des cookies",{"dataGaName":1664,"dataGaLocation":1604,"id":1665,"isOneTrustButton":387},"cookie preferences","ot-sdk-btn",{"title":1206,"links":1667,"subMenu":1676},[1668,1672],{"text":1669,"config":1670},"Plateforme DevSecOps",{"href":1189,"dataGaName":1671,"dataGaLocation":1604},"devsecops platform",{"text":1673,"config":1674},"Développement assisté par l'IA",{"href":1196,"dataGaName":1675,"dataGaLocation":1604},"ai-assisted development",[1677],{"title":1678,"links":1679},"Thèmes",[1680,1684,1689,1694,1699,1704,1709,1714],{"text":1226,"config":1681},{"href":1682,"dataGaName":1683,"dataGaLocation":1604},"/fr-fr/topics/ci-cd/","cicd",{"text":1685,"config":1686},"GitOps",{"href":1687,"dataGaName":1688,"dataGaLocation":1604},"/fr-fr/topics/gitops/","gitops",{"text":1690,"config":1691},"DevOps",{"href":1692,"dataGaName":1693,"dataGaLocation":1604},"/fr-fr/topics/devops/","devops",{"text":1695,"config":1696},"Contrôle de version",{"href":1697,"dataGaName":1698,"dataGaLocation":1604},"/fr-fr/topics/version-control/","version control",{"text":1700,"config":1701},"DevSecOps",{"href":1702,"dataGaName":1703,"dataGaLocation":1604},"/fr-fr/topics/devsecops/","devsecops",{"text":1705,"config":1706},"Cloud-native",{"href":1707,"dataGaName":1708,"dataGaLocation":1604},"/fr-fr/topics/cloud-native/","cloud native",{"text":1710,"config":1711},"IA pour la programmation",{"href":1712,"dataGaName":1713,"dataGaLocation":1604},"/fr-fr/topics/devops/ai-for-coding/","ai for coding",{"text":1715,"config":1716},"IA agentique",{"href":1717,"dataGaName":1718,"dataGaLocation":1604},"/fr-fr/topics/agentic-ai/","agentic ai",{"title":1720,"links":1721},"Solutions",[1722,1725,1727,1732,1735,1738,1741,1744,1746,1749,1752,1757],{"text":1251,"config":1723},{"href":1246,"dataGaName":1724,"dataGaLocation":1604},"Application Security Testing",{"text":1238,"config":1726},{"href":1222,"dataGaName":1223,"dataGaLocation":1604},{"text":1728,"config":1729},"Développement Agile",{"href":1730,"dataGaName":1731,"dataGaLocation":1604},"/fr-fr/solutions/agile-delivery/","agile delivery",{"text":1233,"config":1733},{"href":1235,"dataGaName":1734,"dataGaLocation":1604},"source code management",{"text":1226,"config":1736},{"href":1228,"dataGaName":1737,"dataGaLocation":1604},"continuous integration & delivery",{"text":1277,"config":1739},{"href":1279,"dataGaName":1740,"dataGaLocation":1604},"value stream management",{"text":1685,"config":1742},{"href":1743,"dataGaName":1688,"dataGaLocation":1604},"/fr-fr/solutions/gitops/",{"text":1290,"config":1745},{"href":1293,"dataGaName":1294,"dataGaLocation":1604},{"text":1747,"config":1748},"PME",{"href":1299,"dataGaName":1300,"dataGaLocation":1604},{"text":1750,"config":1751},"Secteur public",{"href":1305,"dataGaName":1306,"dataGaLocation":1604},{"text":1753,"config":1754},"Éducation",{"href":1755,"dataGaName":1756,"dataGaLocation":1604},"/fr-fr/solutions/education/","education",{"text":1758,"config":1759},"Services financiers",{"href":1760,"dataGaName":1761,"dataGaLocation":1604},"/fr-fr/solutions/finance/","financial services",{"title":1313,"links":1763},[1764,1766,1768,1770,1773,1775,1778,1780,1782,1784,1786,1788,1790,1792],{"text":1326,"config":1765},{"href":1328,"dataGaName":1329,"dataGaLocation":1604},{"text":1331,"config":1767},{"href":1333,"dataGaName":1334,"dataGaLocation":1604},{"text":1336,"config":1769},{"href":1338,"dataGaName":1339,"dataGaLocation":1604},{"text":1341,"config":1771},{"href":1343,"dataGaName":1772,"dataGaLocation":1604},"docs",{"text":1363,"config":1774},{"href":1365,"dataGaName":1366,"dataGaLocation":1604},{"text":1776,"config":1777},"Nouveautés",{"href":1423,"dataGaName":1424,"dataGaLocation":1604},{"text":1358,"config":1779},{"href":1360,"dataGaName":1361,"dataGaLocation":1604},{"text":1377,"config":1781},{"href":1379,"dataGaName":1380,"dataGaLocation":1604},{"text":1385,"config":1783},{"href":1387,"dataGaName":1388,"dataGaLocation":1604},{"text":1390,"config":1785},{"href":1392,"dataGaName":1393,"dataGaLocation":1604},{"text":1395,"config":1787},{"href":1397,"dataGaName":1398,"dataGaLocation":1604},{"text":1400,"config":1789},{"href":1402,"dataGaName":1403,"dataGaLocation":1604},{"text":1405,"config":1791},{"href":1407,"dataGaName":1408,"dataGaLocation":1604},{"text":1410,"config":1793},{"href":1412,"dataGaName":1413,"dataGaLocation":1604},{"title":1426,"links":1795},[1796,1798,1800,1802,1804,1806,1811,1816,1818,1820,1822],{"text":1434,"config":1797},{"href":1436,"dataGaName":1428,"dataGaLocation":1604},{"text":1439,"config":1799},{"href":1441,"dataGaName":1442,"dataGaLocation":1604},{"text":1447,"config":1801},{"href":1449,"dataGaName":1450,"dataGaLocation":1604},{"text":1452,"config":1803},{"href":1454,"dataGaName":1455,"dataGaLocation":1604},{"text":1457,"config":1805},{"href":1459,"dataGaName":1460,"dataGaLocation":1604},{"text":1807,"config":1808},"Développement durable",{"href":1809,"dataGaName":1810,"dataGaLocation":1604},"/sustainability/","Sustainability",{"text":1812,"config":1813},"Diversité, inclusion et appartenance (DIB)",{"href":1814,"dataGaName":1815,"dataGaLocation":1604},"/fr-fr/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":1462,"config":1817},{"href":1464,"dataGaName":1465,"dataGaLocation":1604},{"text":1472,"config":1819},{"href":1474,"dataGaName":1475,"dataGaLocation":1604},{"text":1477,"config":1821},{"href":1479,"dataGaName":1480,"dataGaLocation":1604},{"text":1823,"config":1824},"Déclaration de transparence sur l'esclavage moderne",{"href":1825,"dataGaName":1826,"dataGaLocation":1604},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"items":1828},[1829,1831,1833],{"text":1652,"config":1830},{"href":1654,"dataGaName":1655,"dataGaLocation":1604},{"text":1662,"config":1832},{"dataGaName":1664,"dataGaLocation":1604,"id":1665,"isOneTrustButton":387},{"text":1657,"config":1834},{"href":1659,"dataGaName":1660,"dataGaLocation":1604},[1836],{"id":1837,"title":7,"body":1138,"config":1838,"content":1840,"description":1138,"extension":1844,"meta":1845,"navigation":387,"path":1846,"seo":1847,"stem":1848,"__hash__":1849},"blogAuthors/en-us/blog/authors/fernando-diaz.yml",{"template":1839},"BlogAuthor",{"name":7,"config":1841},{"headshot":1842,"ctfId":1843},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749659556/Blog/Author%20Headshots/fern_diaz.png","fjdiaz","yml",{},"/en-us/blog/authors/fernando-diaz",{},"en-us/blog/authors/fernando-diaz","lxRJIOydP4_yzYZvsPcuQevP9AYAKREF7i8QmmdnOWc",[1851,1859,1864],{"title":1852,"description":1853,"heroImage":1854,"category":1134,"date":1855,"authors":1856,"slug":1858,"externalUrl":1138},"Le flow GitLab Duo Security Review détecte les failles logiques que les scanners n'identifient pas","Utilisez le raisonnement de sécurité piloté par l'IA pour détecter les failles d'autorisation, les erreurs de logique métier et les conditions de concurrence pendant la revue de code.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1783980535/t3gez0gpayfndrhncunf.png","2026-07-17",[1857],"Mark Settle","gitlab-duo-security-review-flow",{"title":1860,"description":1861,"heroImage":1854,"category":1134,"date":1855,"authors":1862,"slug":1863,"externalUrl":1138},"Une mise à jour de version fait échouer votre build ? GitLab le corrige !","Mettez à niveau vos dépendances automatiquement, adaptez le code en cas de changements cassants et transférez les modifications pour approbation : découvrez ces fonctionnalités natives uniquement proposées par GitLab, avec un contexte complet.",[1857],"dependency-scanning-auto-remediation",{"title":1865,"description":1866,"heroImage":1867,"category":1134,"date":1868,"authors":1869,"slug":1871,"externalUrl":1138},"GitLab : 5 façons de corriger les niveaux de gravité trompeurs des vulnérabilités","Les scores CVSS par défaut ne reflètent pas vos risques réels. Utilisez les politiques de remplacement de la gravité GitLab pour automatiser les ajustements en fonction des CVE, des CWE, du chemin de fichier et du répertoire.","https://res.cloudinary.com/about-gitlab-com/image/upload/f_auto,q_auto,c_lfill/v1772630163/akp8ly2mrsfrhsb0liyb.png","2026-07-07",[1870],"Grant Hickman","severity-override-vulnerability-management-policy",{"promotions":1873},[1874,1888,1899,1910],{"id":1875,"categories":1876,"header":1878,"text":1879,"button":1880,"image":1885},"ai-modernization",[1877],"ai","L'IA tient-elle ses promesses à grande échelle ?","Le questionnaire ne prendra pas plus de 5 minutes.",{"text":1881,"config":1882},"Obtenez votre score de maturité IA",{"href":1883,"dataGaName":1884,"dataGaLocation":1366},"/fr-fr/assessments/ai-modernization-assessment/","modernization assessment",{"config":1886},{"src":1887},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/qix0m7kwnd8x2fh1zq49.png",{"id":1889,"categories":1890,"header":1891,"text":1879,"button":1892,"image":1896},"devops-modernization",[1151,1703],"Vous contentez-vous de gérer des outils ou de livrer des innovations ?",{"text":1893,"config":1894},"Obtenez votre score de maturité DevOps",{"href":1895,"dataGaName":1884,"dataGaLocation":1366},"/fr-fr/assessments/devops-modernization-assessment/",{"config":1897},{"src":1898},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138785/eg818fmakweyuznttgid.png",{"id":1900,"categories":1901,"header":1902,"text":1879,"button":1903,"image":1907},"security-modernization",[1134],"Faut-il sacrifier la rapidité pour garantir la sécurité ?",{"text":1904,"config":1905},"Obtenez votre score de maturité en matière de sécurité",{"href":1906,"dataGaName":1884,"dataGaLocation":1366},"/fr-fr/assessments/security-modernization-assessment/",{"config":1908},{"src":1909},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/p4pbqd9nnjejg5ds6mdk.png",{"id":1911,"paths":1912,"header":1915,"text":1916,"button":1917,"image":1922},"github-azure-migration",[1913,1914],"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":1918,"config":1919},"Découvrez les différences entre GitLab et GitHub",{"href":1920,"dataGaName":1921,"dataGaLocation":1366},"/fr-fr/compare/gitlab-vs-github/github-azure-migration/","github azure migration",{"config":1923},{"src":1898},{"header":1925,"blurb":1926,"button":1927,"secondaryButton":1931},"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":1162,"config":1928},{"href":1929,"dataGaName":1165,"dataGaLocation":1930},"https://gitlab.com/-/trial_registrations/new?glm_content=default-saas-trial&glm_source=about.gitlab.com/fr-fr/","feature",{"text":1489,"config":1932},{"href":1491,"dataGaName":1170,"dataGaLocation":1930},1786803777025]