{"id":441,"date":"2026-03-24T08:07:09","date_gmt":"2026-03-24T07:07:09","guid":{"rendered":"https:\/\/secure-pipelines.com\/?p=441"},"modified":"2026-03-25T12:39:31","modified_gmt":"2026-03-25T11:39:31","slug":"complete-guide-ci-cd-pipeline-security","status":"publish","type":"post","link":"https:\/\/secure-pipelines.com\/fr\/ci-cd-security\/complete-guide-ci-cd-pipeline-security\/","title":{"rendered":"Le Guide Complet de la S\u00e9curit\u00e9 des Pipelines CI\/CD"},"content":{"rendered":"<h2>Introduction<\/h2>\n<p>Les pipelines CI\/CD constituent l&#8217;\u00e9pine dorsale de la livraison logicielle moderne. Ils automatisent le parcours du commit de code jusqu&#8217;au d\u00e9ploiement en production, permettant aux \u00e9quipes de livrer plus rapidement, de mani\u00e8re plus fiable et avec une plus grande confiance. Mais cette puissance s&#8217;accompagne d&#8217;un compromis critique : <strong>les pipelines sont de plus en plus la cible principale d&#8217;attaquants sophistiqu\u00e9s<\/strong>.<\/p>\n<p>R\u00e9fl\u00e9chissez \u00e0 ce qu&#8217;un pipeline CI\/CD manipule. Il r\u00e9cup\u00e8re le code source, r\u00e9sout les d\u00e9pendances, acc\u00e8de aux secrets et aux identifiants, construit des artefacts, les pousse vers des registres et d\u00e9ploie sur l&#8217;infrastructure de production. Un seul pipeline compromis peut donner \u00e0 un attaquant acc\u00e8s \u00e0 <em>tout<\/em> \u2014 code source, secrets, comptes cloud, donn\u00e9es clients et syst\u00e8mes de production.<\/p>\n<p>Ce guide fournit une vue d&#8217;ensemble compl\u00e8te de la s\u00e9curit\u00e9 des pipelines CI\/CD : ce qui est en jeu, o\u00f9 se trouvent les risques et comment construire des pipelines s\u00e9curis\u00e9s de la source \u00e0 la production. Que vous soyez un ing\u00e9nieur s\u00e9curit\u00e9 renfor\u00e7ant des pipelines existants ou une \u00e9quipe DevOps en construisant de nouveaux, ceci est votre r\u00e9f\u00e9rence compl\u00e8te pour comprendre et mettre en \u0153uvre la s\u00e9curit\u00e9 CI\/CD.<\/p>\n<p>Nous couvrirons l&#8217;ensemble du paysage \u2014 de la mod\u00e9lisation des menaces et des surfaces d&#8217;attaque \u00e0 la gestion des secrets, l&#8217;int\u00e9grit\u00e9 des artefacts, l&#8217;application des politiques et le durcissement sp\u00e9cifique aux plateformes. Tout au long du guide, nous renverrons vers des guides d\u00e9taill\u00e9s, des travaux pratiques et des ressources concr\u00e8tes qui vous permettront d&#8217;approfondir chaque sujet.<\/p>\n<h2>Pourquoi les Pipelines CI\/CD Sont une Priorit\u00e9 S\u00e9curitaire<\/h2>\n<p>Les pipelines CI\/CD occupent une position unique et dangereuse dans l&#8217;infrastructure moderne. Ce sont des <strong>syst\u00e8mes d&#8217;automatisation avec un acc\u00e8s privil\u00e9gi\u00e9<\/strong> \u00e0 pratiquement toutes les ressources critiques de votre organisation. Comprendre pourquoi ils comptent commence par comprendre ce qu&#8217;ils peuvent atteindre.<\/p>\n<h3>Les Pipelines Sont des Cibles de Haute Valeur<\/h3>\n<p>Un pipeline CI\/CD typique a acc\u00e8s \u00e0 :<\/p>\n<ul>\n<li><strong>Les d\u00e9p\u00f4ts de code source<\/strong> \u2014 y compris les d\u00e9p\u00f4ts priv\u00e9s, les algorithmes propri\u00e9taires et la configuration<\/li>\n<li><strong>Les secrets et identifiants<\/strong> \u2014 cl\u00e9s API, identifiants de fournisseurs cloud, mots de passe de bases de donn\u00e9es, cl\u00e9s de signature<\/li>\n<li><strong>L&#8217;infrastructure cloud<\/strong> \u2014 comptes AWS, GCP, Azure avec des permissions de d\u00e9ploiement<\/li>\n<li><strong>Les environnements de production<\/strong> \u2014 acc\u00e8s direct au d\u00e9ploiement sur les syst\u00e8mes en production servant les clients<\/li>\n<li><strong>Les registres d&#8217;artefacts<\/strong> \u2014 registres de conteneurs, d\u00e9p\u00f4ts de paquets, stockage de binaires<\/li>\n<li><strong>Les r\u00e9seaux internes<\/strong> \u2014 les runners se trouvent souvent \u00e0 l&#8217;int\u00e9rieur de r\u00e9seaux priv\u00e9s avec une connectivit\u00e9 \u00e9tendue<\/li>\n<\/ul>\n<p>Un pipeline compromis ne donne pas simplement aux attaquants un point d&#8217;ancrage \u2014 il leur donne <strong>les cl\u00e9s du royaume<\/strong>. La compromission d&#8217;un pipeline est l&#8217;un des moyens les plus efficaces pour r\u00e9aliser un mouvement lat\u00e9ral \u00e0 travers une organisation enti\u00e8re.<\/p>\n<h3>Attaques R\u00e9elles Contre les Pipelines<\/h3>\n<p>Ce n&#8217;est pas th\u00e9orique. Certains des incidents de s\u00e9curit\u00e9 les plus significatifs de ces derni\u00e8res ann\u00e9es ont \u00e9t\u00e9 des attaques contre les pipelines et la cha\u00eene d&#8217;approvisionnement :<\/p>\n<ul>\n<li><strong>SolarWinds (2020)<\/strong> \u2014 Les attaquants ont compromis le syst\u00e8me de build de SolarWinds Orion, injectant du code malveillant dans des mises \u00e0 jour logicielles sign\u00e9es qui ont \u00e9t\u00e9 distribu\u00e9es \u00e0 environ 18 000 organisations, dont des agences gouvernementales am\u00e9ricaines. L&#8217;attaque est rest\u00e9e ind\u00e9tect\u00e9e pendant des mois car le code malveillant \u00e9tait ins\u00e9r\u00e9 pendant le processus de build, ce qui signifie que le d\u00e9p\u00f4t de code source semblait propre.<\/li>\n<li><strong>Codecov (2021)<\/strong> \u2014 Les attaquants ont modifi\u00e9 le script Bash Uploader de Codecov en exploitant une faille dans la cr\u00e9ation d&#8217;images Docker. Pendant plus de deux mois, le script compromis a exfiltr\u00e9 des variables d&#8217;environnement \u2014 y compris des secrets CI\/CD, des jetons API et des identifiants \u2014 depuis des milliers d&#8217;environnements CI utilisant Codecov.<\/li>\n<li><strong>CircleCI (2023)<\/strong> \u2014 L&#8217;ordinateur portable d&#8217;un ing\u00e9nieur a \u00e9t\u00e9 compromis via un malware, ce qui a donn\u00e9 aux attaquants acc\u00e8s \u00e0 un jeton de session de production CircleCI. \u00c0 partir de l\u00e0, les attaquants ont acc\u00e9d\u00e9 aux variables d&#8217;environnement, jetons et cl\u00e9s des clients stock\u00e9s dans la plateforme CircleCI. Chaque secret stock\u00e9 dans CircleCI devait \u00eatre consid\u00e9r\u00e9 comme compromis.<\/li>\n<li><strong>GitHub Actions (en cours)<\/strong> \u2014 De multiples incidents impliquant des actions tierces compromises, des identifiants GITHUB_TOKEN vol\u00e9s et des attaques de la cha\u00eene d&#8217;approvisionnement via les d\u00e9pendances d&#8217;actions continuent de d\u00e9montrer que la s\u00e9curit\u00e9 des pipelines est une menace persistante et \u00e9volutive.<\/li>\n<\/ul>\n<p>Le fil conducteur de tous ces incidents : <strong>les attaquants ciblent le pipeline lui-m\u00eame, pas l&#8217;application<\/strong>. Les mesures de s\u00e9curit\u00e9 applicative traditionnelles \u2014 WAFs, protection des endpoints, surveillance en temps r\u00e9el \u2014 n&#8217;aident pas lorsque le vecteur d&#8217;attaque est le syst\u00e8me de build et de d\u00e9ploiement.<\/p>\n<h3>Le Probl\u00e8me d&#8217;Asym\u00e9trie<\/h3>\n<p>Il existe une asym\u00e9trie fondamentale dans la s\u00e9curit\u00e9 CI\/CD. Les pipelines sont con\u00e7us pour \u00eatre <strong>permissifs et rapides<\/strong>. Ils ont besoin d&#8217;un acc\u00e8s large pour faire leur travail. La s\u00e9curit\u00e9, en revanche, exige <strong>restriction et v\u00e9rification<\/strong>. Combler cet \u00e9cart \u2014 maintenir la v\u00e9locit\u00e9 du pipeline tout en appliquant des fronti\u00e8res de s\u00e9curit\u00e9 \u2014 est le d\u00e9fi central de la s\u00e9curit\u00e9 CI\/CD.<\/p>\n<h2>La Surface d&#8217;Attaque CI\/CD<\/h2>\n<p>Avant de pouvoir s\u00e9curiser un pipeline, vous devez comprendre o\u00f9 il peut \u00eatre attaqu\u00e9. La surface d&#8217;attaque CI\/CD est large, couvrant de multiples syst\u00e8mes, fronti\u00e8res de confiance et domaines organisationnels.<\/p>\n<h3>Cartographier la Surface d&#8217;Attaque<\/h3>\n<p>La surface d&#8217;attaque CI\/CD comprend :<\/p>\n<ol>\n<li><strong>Les d\u00e9p\u00f4ts de code source<\/strong> \u2014 contournement de la protection des branches, pull requests malveillantes, comptes d\u00e9veloppeurs compromis, modifications non autoris\u00e9es des d\u00e9finitions de pipeline<\/li>\n<li><strong>Les d\u00e9finitions de pipeline<\/strong> \u2014 Ex\u00e9cution de pipeline empoisonn\u00e9 (PPE), o\u00f9 les attaquants modifient les fichiers de configuration CI (par ex., <code>.github\/workflows\/<\/code>, <code>.gitlab-ci.yml<\/code>, <code>Jenkinsfile<\/code>) via des pull requests ou des pushs sur des branches<\/li>\n<li><strong>Les environnements de build<\/strong> \u2014 runners partag\u00e9s, caches de build persistants, outils de build compromis, \u00e9vasions de conteneurs depuis les conteneurs de build<\/li>\n<li><strong>Les d\u00e9pendances<\/strong> \u2014 confusion de d\u00e9pendances, typosquatting, paquets upstream compromis, d\u00e9pendances transitives malveillantes<\/li>\n<li><strong>Les secrets et identifiants<\/strong> \u2014 acc\u00e8s aux secrets trop large, identifiants \u00e0 longue dur\u00e9e de vie, secrets fuit\u00e9s dans les logs, secrets accessibles aux builds de d\u00e9p\u00f4ts fork\u00e9s<\/li>\n<li><strong>Les artefacts<\/strong> \u2014 artefacts de build falsifi\u00e9s, images non sign\u00e9es, registres compromis, empoisonnement d&#8217;artefacts<\/li>\n<li><strong>Les cibles de d\u00e9ploiement<\/strong> \u2014 d\u00e9ploiement non autoris\u00e9, portes d&#8217;approbation manquantes, s\u00e9paration insuffisante des environnements<\/li>\n<\/ol>\n<h3>Le Top 10 OWASP des Risques de S\u00e9curit\u00e9 CI\/CD<\/h3>\n<p>Le projet <strong>OWASP Top 10 CI\/CD Security Risks<\/strong> fournit un cadre structur\u00e9 pour comprendre ces menaces. Il catalogue les risques les plus critiques, notamment les m\u00e9canismes de contr\u00f4le de flux insuffisants, la gestion inad\u00e9quate des identit\u00e9s et des acc\u00e8s, l&#8217;abus de la cha\u00eene de d\u00e9pendances, l&#8217;ex\u00e9cution de pipeline empoisonn\u00e9 et l&#8217;hygi\u00e8ne insuffisante des identifiants. Chaque risque correspond \u00e0 des sch\u00e9mas d&#8217;attaque r\u00e9els et fournit des recommandations concr\u00e8tes pour l&#8217;att\u00e9nuation.<\/p>\n<p>Pour une analyse approfondie des raisons pour lesquelles les pipelines sont la surface d&#8217;attaque principale et comment les attaquants les exploitent, consultez notre analyse d\u00e9taill\u00e9e : <a href=\"https:\/\/secure-pipelines.com\/fr\/threats-attacks\/ci-cd-pipelines-primary-attack-surface\/\">Pourquoi les Pipelines CI\/CD Sont la Surface d&#8217;Attaque Principale<\/a>.<\/p>\n<h2>Fronti\u00e8res de Confiance et Mod\u00e8les d&#8217;Ex\u00e9cution<\/h2>\n<p>L&#8217;un des aspects les plus fondamentaux \u2014 et les plus fr\u00e9quemment mal compris \u2014 de la s\u00e9curit\u00e9 CI\/CD est celui des <strong>fronti\u00e8res de confiance<\/strong>. Chaque pipeline op\u00e8re dans un ensemble d&#8217;hypoth\u00e8ses de confiance, et les violations de ces hypoth\u00e8ses sont l\u00e0 o\u00f9 la s\u00e9curit\u00e9 s&#8217;effondre.<\/p>\n<h3>Questions Cl\u00e9s pour Chaque Pipeline<\/h3>\n<p>Pour chaque ex\u00e9cution de pipeline, vous devriez \u00eatre en mesure de r\u00e9pondre :<\/p>\n<ul>\n<li><strong>Qui a d\u00e9clench\u00e9 ce pipeline ?<\/strong> \u2014 \u00c9tait-ce un d\u00e9veloppeur interne, un contributeur externe, un job planifi\u00e9 ou une mise \u00e0 jour automatique de d\u00e9pendance ?<\/li>\n<li><strong>Quel code est ex\u00e9cut\u00e9 ?<\/strong> \u2014 S&#8217;agit-il de code provenant d&#8217;une branche de confiance, d&#8217;une pull request d&#8217;un fork, d&#8217;une action tierce ou d&#8217;une d\u00e9pendance r\u00e9solue dynamiquement ?<\/li>\n<li><strong>Quelle identit\u00e9 le pipeline assume-t-il ?<\/strong> \u2014 Quels comptes de service, r\u00f4les cloud ou jetons de plateforme sont disponibles pendant l&#8217;ex\u00e9cution ?<\/li>\n<li><strong>\u00c0 quelles ressources le pipeline peut-il acc\u00e9der ?<\/strong> \u2014 Quels secrets, infrastructures, registres et environnements sont atteignables ?<\/li>\n<\/ul>\n<h3>Mod\u00e8les de Confiance en CI\/CD<\/h3>\n<p>Diff\u00e9rents d\u00e9clencheurs de pipeline portent des niveaux de confiance fondamentalement diff\u00e9rents :<\/p>\n<ul>\n<li><strong>Push sur une branche prot\u00e9g\u00e9e<\/strong> \u2014 Confiance \u00e9lev\u00e9e. Le code a pass\u00e9 la revue et les r\u00e8gles de protection de branche.<\/li>\n<li><strong>Pull request d&#8217;un collaborateur<\/strong> \u2014 Confiance moyenne. L&#8217;auteur du code est connu mais les modifications n&#8217;ont pas \u00e9t\u00e9 fusionn\u00e9es.<\/li>\n<li><strong>Pull request d&#8217;un fork<\/strong> \u2014 Confiance faible. Le code provient d&#8217;un contributeur externe et pourrait contenir n&#8217;importe quoi.<\/li>\n<li><strong>Jobs planifi\u00e9s\/cron<\/strong> \u2014 Confiance variable. D\u00e9pend du code et des d\u00e9pendances r\u00e9solus au moment de l&#8217;ex\u00e9cution.<\/li>\n<li><strong>D\u00e9clenchement manuel<\/strong> \u2014 D\u00e9pend de qui a d\u00e9clench\u00e9 et des param\u00e8tres fournis.<\/li>\n<\/ul>\n<p>Le principe essentiel : <strong>les permissions du pipeline et l&#8217;acc\u00e8s aux secrets doivent \u00eatre calibr\u00e9s au niveau de confiance du d\u00e9clencheur<\/strong>. Une pull request d&#8217;un fork ne devrait jamais avoir acc\u00e8s aux identifiants de d\u00e9ploiement en production.<\/p>\n<h3>Mod\u00e8les d&#8217;Ex\u00e9cution<\/h3>\n<p>Les diff\u00e9rentes plateformes CI\/CD g\u00e8rent l&#8217;isolation d&#8217;ex\u00e9cution diff\u00e9remment. Comprendre le mod\u00e8le d&#8217;ex\u00e9cution \u2014 que les builds s&#8217;ex\u00e9cutent dans des VM partag\u00e9es, des conteneurs \u00e9ph\u00e9m\u00e8res ou des serveurs persistants \u2014 impacte directement votre posture de s\u00e9curit\u00e9. Les environnements d&#8217;ex\u00e9cution partag\u00e9s cr\u00e9ent des risques de contamination entre builds, de vol d&#8217;identifiants et d&#8217;empoisonnement du cache.<\/p>\n<p>Pour une exploration compl\u00e8te des mod\u00e8les d&#8217;ex\u00e9cution CI\/CD et de leurs implications en mati\u00e8re de s\u00e9curit\u00e9, consultez : <a href=\"https:\/\/secure-pipelines.com\/fr\/?p=479\">Mod\u00e8les d&#8217;Ex\u00e9cution CI\/CD, Hypoth\u00e8ses de Confiance et Guide de S\u00e9curit\u00e9<\/a>.<\/p>\n<h2>Gestion des Secrets<\/h2>\n<p>S&#8217;il y a un domaine qui m\u00e9rite le plus d&#8217;attention dans la s\u00e9curit\u00e9 CI\/CD, c&#8217;est la <strong>gestion des secrets<\/strong>. La compromission des identifiants est syst\u00e9matiquement la cause n\u00b01 des incidents de s\u00e9curit\u00e9 CI\/CD. Une mauvaise hygi\u00e8ne des secrets \u2014 identifiants cod\u00e9s en dur, acc\u00e8s trop large, jetons \u00e0 longue dur\u00e9e de vie, secrets expos\u00e9s au code non fiable \u2014 est derri\u00e8re pratiquement chaque br\u00e8che majeure de pipeline.<\/p>\n<h3>Le Probl\u00e8me des Secrets en CI\/CD<\/h3>\n<p>Les pipelines ont besoin de secrets pour fonctionner. Ils ont besoin d&#8217;identifiants pour r\u00e9cup\u00e9rer le code, r\u00e9soudre les d\u00e9pendances priv\u00e9es, acc\u00e9der aux API cloud, pousser les artefacts et d\u00e9ployer en production. Le d\u00e9fi est de fournir ces identifiants de mani\u00e8re s\u00e9curis\u00e9e :<\/p>\n<ul>\n<li><strong>Minimiser l&#8217;exposition<\/strong> \u2014 Les secrets ne doivent \u00eatre disponibles que pour les \u00e9tapes sp\u00e9cifiques qui en ont besoin<\/li>\n<li><strong>Limiter la dur\u00e9e de vie<\/strong> \u2014 Les identifiants doivent \u00eatre de courte dur\u00e9e et automatiquement renouvel\u00e9s<\/li>\n<li><strong>Restreindre la port\u00e9e<\/strong> \u2014 Chaque identifiant ne doit avoir que les permissions minimales requises<\/li>\n<li><strong>Pr\u00e9venir les fuites<\/strong> \u2014 Les secrets ne doivent pas appara\u00eetre dans les logs, les artefacts, les messages d&#8217;erreur ou les variables d&#8217;environnement accessibles au code non fiable<\/li>\n<\/ul>\n<h3>Approches de Gestion des Secrets<\/h3>\n<p>Il existe un spectre de maturit\u00e9 pour la gestion des secrets en CI\/CD :<\/p>\n<h4>Niveau 1 : Secrets Natifs de la Plateforme<\/h4>\n<p>Chaque plateforme CI\/CD fournit un m\u00e9canisme int\u00e9gr\u00e9 de gestion des secrets \u2014 les secrets GitHub Actions, les variables GitLab CI, le magasin d&#8217;identifiants Jenkins. Ceux-ci fournissent un chiffrement de base au repos et un masquage dans les logs. C&#8217;est un bon point de d\u00e9part mais avec des limitations : ils sont sp\u00e9cifiques \u00e0 la plateforme, difficiles \u00e0 auditer et offrent g\u00e9n\u00e9ralement un contr\u00f4le d&#8217;acc\u00e8s \u00e0 gros grain.<\/p>\n<h4>Niveau 2 : Gestionnaires de Secrets Externes<\/h4>\n<p>L&#8217;int\u00e9gration avec des outils d\u00e9di\u00e9s de gestion des secrets \u2014 <strong>HashiCorp Vault<\/strong>, <strong>AWS Secrets Manager<\/strong>, <strong>Azure Key Vault<\/strong>, <strong>Google Secret Manager<\/strong> \u2014 fournit une gestion centralis\u00e9e, des politiques d&#8217;acc\u00e8s \u00e0 grain fin, la journalisation d&#8217;audit et la rotation automatique. Vault, en particulier, excelle dans la g\u00e9n\u00e9ration d&#8217;identifiants dynamiques et de courte dur\u00e9e, limit\u00e9s \u00e0 des ex\u00e9cutions de pipeline sp\u00e9cifiques.<\/p>\n<h4>Niveau 3 : OIDC et F\u00e9d\u00e9ration d&#8217;Identit\u00e9 de Charge de Travail<\/h4>\n<p>Le standard d&#8217;excellence pour les identifiants CI\/CD est d&#8217;<strong>\u00e9liminer enti\u00e8rement les secrets \u00e0 longue dur\u00e9e de vie<\/strong>. En utilisant OIDC (OpenID Connect) et la f\u00e9d\u00e9ration d&#8217;identit\u00e9 de charge de travail, les pipelines peuvent s&#8217;authentifier aupr\u00e8s des fournisseurs cloud en utilisant leur identit\u00e9 de plateforme \u2014 sans aucun secret stock\u00e9. GitHub Actions, GitLab CI et d&#8217;autres plateformes peuvent \u00e9changer leurs jetons OIDC contre des identifiants cloud de courte dur\u00e9e limit\u00e9s \u00e0 des d\u00e9p\u00f4ts, branches et environnements sp\u00e9cifiques.<\/p>\n<p>Cette approche fournit :<\/p>\n<ul>\n<li>Aucun secret \u00e0 voler \u2014 les identifiants sont g\u00e9n\u00e9r\u00e9s \u00e0 la demande et expirent en quelques minutes<\/li>\n<li>Limitation fine de la port\u00e9e \u2014 l&#8217;acc\u00e8s peut \u00eatre restreint \u00e0 des d\u00e9p\u00f4ts, branches et environnements de d\u00e9ploiement sp\u00e9cifiques<\/li>\n<li>Auditabilit\u00e9 compl\u00e8te \u2014 chaque \u00e9change d&#8217;identifiants est journalis\u00e9 avec le contexte du pipeline<\/li>\n<\/ul>\n<h3>Bonnes Pratiques de Gestion des Secrets<\/h3>\n<ul>\n<li>Ne jamais coder en dur les secrets dans les d\u00e9finitions de pipeline, le code source ou les Dockerfiles<\/li>\n<li>Utiliser des secrets limit\u00e9s par environnement pour s\u00e9parer les identifiants de staging et de production<\/li>\n<li>Mettre en place la d\u00e9tection de secrets dans les hooks pre-commit et en CI pour capturer les expositions accidentelles<\/li>\n<li>Pr\u00e9f\u00e9rer OIDC\/la f\u00e9d\u00e9ration d&#8217;identit\u00e9 de charge de travail aux identifiants stock\u00e9s partout o\u00f9 c&#8217;est possible<\/li>\n<li>Utiliser des secrets dynamiques (par ex., identifiants de base de donn\u00e9es dynamiques Vault) g\u00e9n\u00e9r\u00e9s par ex\u00e9cution de pipeline<\/li>\n<li>Renouveler tous les identifiants \u00e0 longue dur\u00e9e de vie selon un calendrier r\u00e9gulier et imm\u00e9diatement apr\u00e8s toute suspicion de compromission<\/li>\n<li>Ne jamais exposer les secrets aux builds de pull requests provenant de forks<\/li>\n<\/ul>\n<p>Pour des conseils de mise en \u0153uvre d\u00e9taill\u00e9s, consultez nos guides approfondis :<\/p>\n<ul>\n<li><a href=\"https:\/\/secure-pipelines.com\/fr\/?p=473\">Gestion des Secrets dans les Pipelines CI\/CD : Patterns et Int\u00e9gration Vault<\/a><\/li>\n<li><a href=\"https:\/\/secure-pipelines.com\/fr\/?p=480\">Identifiants de Courte Dur\u00e9e et F\u00e9d\u00e9ration d&#8217;Identit\u00e9 de Charge de Travail en CI\/CD<\/a><\/li>\n<\/ul>\n<h2>Int\u00e9grit\u00e9 des Artefacts et S\u00e9curit\u00e9 de la Cha\u00eene d&#8217;Approvisionnement<\/h2>\n<p>S\u00e9curiser ce qui <em>entre<\/em> dans votre pipeline (code, d\u00e9pendances, secrets) n&#8217;est que la moiti\u00e9 du combat. Vous devez aussi s\u00e9curiser ce qui en <em>sort<\/em> \u2014 les artefacts que votre pipeline produit et d\u00e9ploie. L&#8217;int\u00e9grit\u00e9 des artefacts garantit que ce que vous d\u00e9ployez est exactement ce que vous avez construit, sans falsification en cours de route.<\/p>\n<h3>Le Probl\u00e8me de la Cha\u00eene d&#8217;Approvisionnement<\/h3>\n<p>Le logiciel moderne ne se compose pas uniquement de votre code. Une application typique comprend des centaines, voire des milliers de d\u00e9pendances, d&#8217;images de base, d&#8217;outils de build et d&#8217;int\u00e9grations tierces. Chacun de ces \u00e9l\u00e9ments est un maillon de la cha\u00eene d&#8217;approvisionnement, et chacun peut \u00eatre compromis. Les attaques de la cha\u00eene d&#8217;approvisionnement ciblent ces maillons \u2014 en injectant du code malveillant dans les d\u00e9pendances, en falsifiant les artefacts de build ou en compromettant les registres.<\/p>\n<h3>Signature d&#8217;Images de Conteneurs avec Sigstore et Cosign<\/h3>\n<p>La signature d&#8217;images de conteneurs fournit une preuve cryptographique qu&#8217;une image a \u00e9t\u00e9 construite par un pipeline de confiance et n&#8217;a pas \u00e9t\u00e9 falsifi\u00e9e. <strong>Sigstore<\/strong> et son outil <strong>Cosign<\/strong> ont consid\u00e9rablement simplifi\u00e9 la signature d&#8217;images en fournissant la signature sans cl\u00e9 \u2014 utilisant les identit\u00e9s OIDC (comme l&#8217;identit\u00e9 d&#8217;un pipeline CI\/CD) pour signer les artefacts sans g\u00e9rer de cl\u00e9s de signature \u00e0 longue dur\u00e9e de vie.<\/p>\n<p>Dans un pipeline s\u00e9curis\u00e9, chaque image de conteneur devrait \u00eatre :<\/p>\n<ol>\n<li><strong>Sign\u00e9e<\/strong> au moment du build en utilisant l&#8217;identit\u00e9 v\u00e9rifi\u00e9e du pipeline<\/li>\n<li><strong>V\u00e9rifi\u00e9e<\/strong> au moment du d\u00e9ploiement avant d&#8217;\u00eatre admise en production<\/li>\n<li><strong>Rejet\u00e9e<\/strong> si la signature ne correspond pas \u00e0 une identit\u00e9 ou une politique de confiance<\/li>\n<\/ol>\n<h3>Provenance et Attestations avec SLSA et in-toto<\/h3>\n<p><strong>SLSA<\/strong> (Supply-chain Levels for Software Artifacts) fournit un cadre pour am\u00e9liorer progressivement l&#8217;int\u00e9grit\u00e9 de la cha\u00eene d&#8217;approvisionnement. Au c\u0153ur de SLSA se trouve la <strong>provenance<\/strong> \u2014 un enregistrement v\u00e9rifiable de comment, o\u00f9 et par qui un artefact a \u00e9t\u00e9 construit.<\/p>\n<p>Le framework <strong>in-toto<\/strong> compl\u00e8te SLSA en fournissant un moyen de d\u00e9finir et de v\u00e9rifier l&#8217;ensemble de la cha\u00eene d&#8217;approvisionnement logicielle \u2014 du code source \u00e0 travers le build jusqu&#8217;au d\u00e9ploiement. Chaque \u00e9tape de la cha\u00eene produit des attestations qui peuvent \u00eatre v\u00e9rifi\u00e9es par rapport \u00e0 une disposition pr\u00e9d\u00e9finie.<\/p>\n<p>Concepts cl\u00e9s :<\/p>\n<ul>\n<li><strong>Provenance<\/strong> \u2014 m\u00e9tadonn\u00e9es lisibles par machine d\u00e9crivant le build : quelles entr\u00e9es ont \u00e9t\u00e9 utilis\u00e9es, quel syst\u00e8me de build a \u00e9t\u00e9 ex\u00e9cut\u00e9, quelles sorties ont \u00e9t\u00e9 produites<\/li>\n<li><strong>Attestations<\/strong> \u2014 d\u00e9clarations sign\u00e9es concernant un artefact (par ex., \u00ab cette image a \u00e9t\u00e9 construite \u00e0 partir de ce commit par ce pipeline \u00bb)<\/li>\n<li><strong>V\u00e9rification<\/strong> \u2014 contr\u00f4les automatis\u00e9s au moment du d\u00e9ploiement qui rejettent les artefacts sans provenance valide<\/li>\n<\/ul>\n<h3>Nomenclature Logicielle (SBOM)<\/h3>\n<p>Un SBOM fournit un inventaire complet de tous les composants d&#8217;un artefact logiciel \u2014 chaque biblioth\u00e8que, d\u00e9pendance et version d&#8217;outil. Les SBOMs permettent :<\/p>\n<ul>\n<li><strong>Le suivi des vuln\u00e9rabilit\u00e9s<\/strong> \u2014 lorsqu&#8217;un nouveau CVE est publi\u00e9, vous pouvez imm\u00e9diatement identifier quels artefacts sont concern\u00e9s<\/li>\n<li><strong>La conformit\u00e9 des licences<\/strong> \u2014 v\u00e9rification automatis\u00e9e que tous les composants respectent les exigences de licence<\/li>\n<li><strong>La r\u00e9ponse aux incidents<\/strong> \u2014 \u00e9valuation rapide du rayon d&#8217;impact lorsqu&#8217;une compromission de la cha\u00eene d&#8217;approvisionnement est d\u00e9couverte<\/li>\n<\/ul>\n<h3>Builds Reproductibles<\/h3>\n<p>Les builds reproductibles garantissent que le m\u00eame code source et les m\u00eames instructions de build produisent toujours le m\u00eame artefact de sortie, bit pour bit. Cette propri\u00e9t\u00e9 permet de v\u00e9rifier ind\u00e9pendamment qu&#8217;un artefact publi\u00e9 correspond \u00e0 son code source d\u00e9clar\u00e9, \u00e9liminant toute une classe d&#8217;attaques sur les syst\u00e8mes de build.<\/p>\n<p>Pour des conseils de mise en \u0153uvre d\u00e9taill\u00e9s sur l&#8217;int\u00e9grit\u00e9 des artefacts, consultez :<\/p>\n<ul>\n<li><a href=\"https:\/\/secure-pipelines.com\/fr\/?p=476\">Signature et V\u00e9rification d&#8217;Images de Conteneurs avec Sigstore et Cosign<\/a><\/li>\n<li><a href=\"https:\/\/secure-pipelines.com\/fr\/?p=474\">Provenance des Artefacts et Attestations avec SLSA et in-toto<\/a><\/li>\n<li><a href=\"https:\/\/secure-pipelines.com\/fr\/ci-cd-security\/build-integrity-reproducible-builds-ci-cd\/\">Int\u00e9grit\u00e9 des Builds et Builds Reproductibles en CI\/CD<\/a><\/li>\n<\/ul>\n<h2>Application des Politiques<\/h2>\n<p>Les contr\u00f4les de s\u00e9curit\u00e9 ne sont efficaces que s&#8217;ils sont <strong>appliqu\u00e9s de mani\u00e8re coh\u00e9rente et automatique<\/strong>. Les revues de s\u00e9curit\u00e9 manuelles ne passent pas \u00e0 l&#8217;\u00e9chelle. Les checklists sont oubli\u00e9es. La solution est le <strong>Policy as Code<\/strong> \u2014 encoder vos exigences de s\u00e9curit\u00e9 sous forme de politiques lisibles par machine, \u00e9valu\u00e9es automatiquement \u00e0 chaque ex\u00e9cution de pipeline.<\/p>\n<h3>Policy as Code avec OPA et Rego<\/h3>\n<p>L&#8217;<strong>Open Policy Agent (OPA)<\/strong> et son langage de politique <strong>Rego<\/strong> sont devenus le standard de facto pour l&#8217;application des politiques dans les environnements cloud-natifs. Dans un contexte CI\/CD, OPA vous permet d&#8217;\u00e9crire des politiques qui \u00e9valuent les entr\u00e9es, configurations et sorties du pipeline par rapport \u00e0 vos exigences de s\u00e9curit\u00e9.<\/p>\n<p>V\u00e9rifications de politiques courantes en CI\/CD :<\/p>\n<ul>\n<li><strong>Politiques d&#8217;images de conteneurs<\/strong> \u2014 pas de tags <code>latest<\/code>, les images doivent provenir de registres approuv\u00e9s, pas d&#8217;ex\u00e9cution en root<\/li>\n<li><strong>Politiques de d\u00e9ploiement Kubernetes<\/strong> \u2014 limites de ressources requises, pas de conteneurs privil\u00e9gi\u00e9s, les politiques r\u00e9seau doivent exister<\/li>\n<li><strong>Politiques d&#8217;Infrastructure as Code<\/strong> \u2014 pas de buckets S3 publics, chiffrement activ\u00e9, groupes de s\u00e9curit\u00e9 correctement d\u00e9limit\u00e9s<\/li>\n<li><strong>Politiques de pipeline<\/strong> \u2014 approbation requise avant le d\u00e9ploiement en production, tous les tests doivent passer, r\u00e9sultats de scan de vuln\u00e9rabilit\u00e9s dans les seuils acceptables<\/li>\n<\/ul>\n<h3>Conftest pour l&#8217;\u00c9valuation des Politiques CI\/CD<\/h3>\n<p><strong>Conftest<\/strong> est un utilitaire qui facilite l&#8217;ex\u00e9cution de politiques OPA\/Rego contre des donn\u00e9es de configuration structur\u00e9es dans les pipelines CI\/CD. Il prend en charge YAML, JSON, HCL, Dockerfile et bien d&#8217;autres formats, ce qui le rend suffisamment polyvalent pour valider les manifestes Kubernetes, les plans Terraform, les Dockerfiles et les configurations de pipeline.<\/p>\n<p>Une \u00e9tape typique d&#8217;application des politiques dans un pipeline :<\/p>\n<ol>\n<li>R\u00e9cup\u00e9rer les politiques depuis un d\u00e9p\u00f4t central de politiques (versionn\u00e9 et r\u00e9vis\u00e9)<\/li>\n<li>Ex\u00e9cuter Conftest contre les fichiers de configuration pertinents<\/li>\n<li>Faire \u00e9chouer le pipeline si des politiques obligatoires sont viol\u00e9es<\/li>\n<li>G\u00e9n\u00e9rer un rapport d&#8217;\u00e9valuation des politiques comme artefact du pipeline<\/li>\n<\/ol>\n<h3>Portes de S\u00e9curit\u00e9<\/h3>\n<p>Au-del\u00e0 des politiques de configuration, une s\u00e9curit\u00e9 CI\/CD efficace n\u00e9cessite des <strong>portes de s\u00e9curit\u00e9 automatis\u00e9es<\/strong> \u2014 des points de contr\u00f4le dans le pipeline o\u00f9 les crit\u00e8res de s\u00e9curit\u00e9 doivent \u00eatre satisfaits avant de poursuivre. Celles-ci comprennent :<\/p>\n<ul>\n<li><strong>Portes d&#8217;analyse statique<\/strong> \u2014 le code doit passer l&#8217;analyse SAST sans r\u00e9sultats critiques<\/li>\n<li><strong>Portes de d\u00e9pendances<\/strong> \u2014 aucun CVE critique ou \u00e9lev\u00e9 connu dans les d\u00e9pendances<\/li>\n<li><strong>Portes de scan d&#8217;images<\/strong> \u2014 les images de conteneurs doivent passer le scan de vuln\u00e9rabilit\u00e9s<\/li>\n<li><strong>Portes de conformit\u00e9<\/strong> \u2014 les configurations d&#8217;infrastructure doivent respecter les standards de conformit\u00e9<\/li>\n<li><strong>Portes d&#8217;approbation<\/strong> \u2014 les d\u00e9ploiements en production n\u00e9cessitent une approbation humaine explicite<\/li>\n<\/ul>\n<p>Pour un guide complet sur la mise en \u0153uvre de l&#8217;application des politiques dans vos pipelines, consultez : <a href=\"https:\/\/secure-pipelines.com\/fr\/?p=477\">Policy as Code en CI\/CD : OPA, Rego et Portes de S\u00e9curit\u00e9<\/a>.<\/p>\n<h2>Bonnes Pratiques de Durcissement des Pipelines<\/h2>\n<p>Au-del\u00e0 des domaines sp\u00e9cifiques couverts ci-dessus, il existe des pratiques de durcissement fondamentales qui s&#8217;appliquent \u00e0 toutes les plateformes et architectures CI\/CD. Ces pratiques r\u00e9duisent votre surface d&#8217;attaque, limitent le rayon d&#8217;impact et rendent vos pipelines r\u00e9silients face \u00e0 une compromission.<\/p>\n<h3>Permissions Minimales (Principe du Moindre Privil\u00e8ge)<\/h3>\n<p>Chaque composant de votre pipeline devrait op\u00e9rer avec les <strong>permissions minimales requises<\/strong> pour remplir sa fonction :<\/p>\n<ul>\n<li><strong>Jetons de plateforme<\/strong> \u2014 Le <code>GITHUB_TOKEN<\/code> de GitHub devrait \u00eatre limit\u00e9 en lecture seule par d\u00e9faut, avec des permissions en \u00e9criture accord\u00e9es uniquement aux \u00e9tapes sp\u00e9cifiques qui en ont besoin<\/li>\n<li><strong>Identifiants cloud<\/strong> \u2014 Les r\u00f4les IAM devraient \u00eatre limit\u00e9s \u00e0 des ressources et actions sp\u00e9cifiques, pas des politiques larges comme <code>AdministratorAccess<\/code><\/li>\n<li><strong>Acc\u00e8s aux registres<\/strong> \u2014 L&#8217;acc\u00e8s en \u00e9criture (push) devrait \u00eatre restreint aux pipelines de d\u00e9ploiement, pas \u00e0 chaque build CI<\/li>\n<li><strong>Acc\u00e8s aux d\u00e9p\u00f4ts<\/strong> \u2014 Les comptes de service de pipeline ne devraient avoir acc\u00e8s qu&#8217;aux d\u00e9p\u00f4ts dont ils ont besoin<\/li>\n<\/ul>\n<h3>Environnements de Build \u00c9ph\u00e9m\u00e8res<\/h3>\n<p>Les environnements de build devraient \u00eatre <strong>\u00e9ph\u00e9m\u00e8res<\/strong> \u2014 cr\u00e9\u00e9s \u00e0 neuf pour chaque ex\u00e9cution de pipeline et d\u00e9truits ensuite. Les serveurs de build persistants accumulent de l&#8217;\u00e9tat, des identifiants en cache et des compromissions potentielles au fil du temps. Les runners \u00e9ph\u00e9m\u00e8res garantissent :<\/p>\n<ul>\n<li>Aucune contamination entre builds \u2014 chaque build d\u00e9marre proprement<\/li>\n<li>Aucun identifiant persistant \u2014 rien ne survit au-del\u00e0 du build<\/li>\n<li>Surface d&#8217;attaque r\u00e9duite \u2014 aucun service \u00e0 longue dur\u00e9e de vie \u00e0 cibler<\/li>\n<li>Environnements coh\u00e9rents \u2014 pas de d\u00e9rive de configuration<\/li>\n<\/ul>\n<h3>\u00c9pinglage des Actions et Plugins<\/h3>\n<p>Les actions tierces, plugins et composants r\u00e9utilisables devraient \u00eatre <strong>\u00e9pingl\u00e9s \u00e0 des versions sp\u00e9cifiques et immuables<\/strong> \u2014 de pr\u00e9f\u00e9rence par SHA de commit, pas par tag mutable. L&#8217;\u00e9pinglage par tag (par ex., <code>v1<\/code>) est vuln\u00e9rable au d\u00e9tournement de tag, o\u00f9 un attaquant pousse du code malveillant et d\u00e9place le tag pour pointer vers celui-ci.<\/p>\n<pre><code># Mauvais : Tag mutable, vuln\u00e9rable au d\u00e9tournement\n- uses: actions\/checkout@v4\n\n# Bon : \u00c9pingl\u00e9 \u00e0 un SHA de commit immuable\n- uses: actions\/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1<\/code><\/pre>\n<h3>Protection des Branches et Contr\u00f4les de Fusion<\/h3>\n<p>Les r\u00e8gles de protection des branches sont votre premi\u00e8re ligne de d\u00e9fense contre les modifications de code non autoris\u00e9es :<\/p>\n<ul>\n<li>Exiger des revues de pull request avant la fusion vers les branches prot\u00e9g\u00e9es<\/li>\n<li>Exiger la r\u00e9ussite des v\u00e9rifications de statut (la CI doit passer) avant la fusion<\/li>\n<li>Exiger des commits sign\u00e9s pour une paternit\u00e9 v\u00e9rifi\u00e9e<\/li>\n<li>Restreindre qui peut pousser vers les branches prot\u00e9g\u00e9es<\/li>\n<li>Emp\u00eacher les force pushs qui pourraient r\u00e9\u00e9crire l&#8217;historique<\/li>\n<li>Exiger un historique lin\u00e9aire pour maintenir l&#8217;auditabilit\u00e9<\/li>\n<\/ul>\n<h3>Contr\u00f4les de D\u00e9ploiement<\/h3>\n<p>Les d\u00e9ploiements en production devraient avoir des garde-fous suppl\u00e9mentaires :<\/p>\n<ul>\n<li><strong>R\u00e8gles de protection d&#8217;environnement<\/strong> \u2014 exiger une approbation manuelle pour les d\u00e9ploiements en production<\/li>\n<li><strong>Gels de d\u00e9ploiement<\/strong> \u2014 capacit\u00e9 \u00e0 stopper les d\u00e9ploiements pendant les incidents ou les p\u00e9riodes de gel des changements<\/li>\n<li><strong>D\u00e9ploiements canary et progressifs<\/strong> \u2014 limiter le rayon d&#8217;impact en d\u00e9ployant les changements graduellement<\/li>\n<li><strong>Capacit\u00e9s de rollback<\/strong> \u2014 rollback automatis\u00e9 lorsque les health checks de d\u00e9ploiement \u00e9chouent<\/li>\n<\/ul>\n<h3>S\u00e9paration des Responsabilit\u00e9s<\/h3>\n<p>Aucune personne ou syst\u00e8me unique ne devrait contr\u00f4ler l&#8217;ensemble du pipeline du commit de code au d\u00e9ploiement en production. Mettez en \u0153uvre la s\u00e9paration des responsabilit\u00e9s en :<\/p>\n<ul>\n<li>Exigeant une revue de code par quelqu&#8217;un d&#8217;autre que l&#8217;auteur<\/li>\n<li>S\u00e9parant les permissions CI (build\/test) des permissions CD (d\u00e9ploiement)<\/li>\n<li>Utilisant des identifiants s\u00e9par\u00e9s pour les diff\u00e9rentes \u00e9tapes du pipeline<\/li>\n<li>Exigeant une approbation multi-parties pour les changements sensibles<\/li>\n<\/ul>\n<p>Pour des conseils d\u00e9taill\u00e9s sur le durcissement de vos pipelines, consultez :<\/p>\n<ul>\n<li><a href=\"https:\/\/secure-pipelines.com\/fr\/ci-cd-security\/separation-of-duties-least-privilege-ci-cd-pipelines\/\">S\u00e9paration des Responsabilit\u00e9s et Principe du Moindre Privil\u00e8ge dans les Pipelines CI\/CD<\/a><\/li>\n<li><a href=\"https:\/\/secure-pipelines.com\/fr\/ci-cd-security\/defensive-patterns-mitigations-ci-cd-pipeline-attacks\/\">Sch\u00e9mas D\u00e9fensifs et Att\u00e9nuations pour les Attaques de Pipelines CI\/CD<\/a><\/li>\n<\/ul>\n<h2>Recommandations Sp\u00e9cifiques aux Plateformes<\/h2>\n<p>Bien que les principes de la s\u00e9curit\u00e9 CI\/CD soient universels, chaque plateforme a son propre mod\u00e8le de s\u00e9curit\u00e9, ses fonctionnalit\u00e9s et ses pi\u00e8ges. Voici un bref aper\u00e7u des principales plateformes avec des liens vers des guides d\u00e9taill\u00e9s.<\/p>\n<h3>GitHub Actions<\/h3>\n<p>GitHub Actions est la plateforme CI\/CD la plus largement adopt\u00e9e pour l&#8217;open source et de nombreux projets commerciaux. Les consid\u00e9rations de s\u00e9curit\u00e9 cl\u00e9s comprennent :<\/p>\n<ul>\n<li><strong>Permissions du GITHUB_TOKEN<\/strong> \u2014 d\u00e9finir les <code>permissions<\/code> au niveau du workflow avec des valeurs par d\u00e9faut en lecture seule, en accordant l&#8217;\u00e9criture uniquement l\u00e0 o\u00f9 c&#8217;est n\u00e9cessaire<\/li>\n<li><strong>Gestion des forks<\/strong> \u2014 <code>pull_request_target<\/code> est extr\u00eamement dangereux s&#8217;il est mal utilis\u00e9 ; pr\u00e9f\u00e9rer <code>pull_request<\/code> pour le code non fiable<\/li>\n<li><strong>\u00c9pinglage des actions<\/strong> \u2014 \u00e9pingler toutes les actions tierces par SHA de commit<\/li>\n<li><strong>Protection d&#8217;environnement<\/strong> \u2014 utiliser des environnements avec des r\u00e9viseurs requis et des politiques de branche de d\u00e9ploiement<\/li>\n<li><strong>OIDC<\/strong> \u2014 utiliser le fournisseur OIDC de GitHub pour l&#8217;authentification sans cl\u00e9 vers AWS, GCP et Azure<\/li>\n<li><strong>Workflows r\u00e9utilisables<\/strong> \u2014 centraliser les patterns de s\u00e9curit\u00e9 dans des workflows r\u00e9utilisables maintenus par l&#8217;\u00e9quipe s\u00e9curit\u00e9<\/li>\n<\/ul>\n<h3>GitLab CI<\/h3>\n<p>GitLab CI offre une int\u00e9gration profonde avec la plateforme DevSecOps plus large de GitLab. Les consid\u00e9rations de s\u00e9curit\u00e9 cl\u00e9s comprennent :<\/p>\n<ul>\n<li><strong>Variables prot\u00e9g\u00e9es<\/strong> \u2014 marquer les variables sensibles comme prot\u00e9g\u00e9es et masqu\u00e9es ; restreindre aux branches\/tags prot\u00e9g\u00e9s<\/li>\n<li><strong>Runners prot\u00e9g\u00e9s<\/strong> \u2014 utiliser des runners prot\u00e9g\u00e9s pour les d\u00e9ploiements en production, des runners partag\u00e9s pour les builds CI<\/li>\n<li><strong>Pipelines de merge request<\/strong> \u2014 utiliser <code>rules: - if: $CI_PIPELINE_SOURCE == \"merge_request_event\"<\/code> pour contr\u00f4ler ce qui s&#8217;ex\u00e9cute sur les contributions externes<\/li>\n<li><strong>OIDC\/Jetons d&#8217;identit\u00e9<\/strong> \u2014 GitLab prend en charge les jetons OIDC via le mot-cl\u00e9 <code>id_tokens<\/code> pour l&#8217;authentification cloud sans cl\u00e9<\/li>\n<li><strong>Cadres de conformit\u00e9<\/strong> \u2014 utiliser les fonctionnalit\u00e9s de pipeline de conformit\u00e9 de GitLab pour imposer les jobs requis<\/li>\n<\/ul>\n<h3>Tekton<\/h3>\n<p>Tekton est un framework CI\/CD natif Kubernetes qui offre des propri\u00e9t\u00e9s de s\u00e9curit\u00e9 uniques gr\u00e2ce \u00e0 son architecture :<\/p>\n<ul>\n<li><strong>Isolation native Kubernetes<\/strong> \u2014 chaque TaskRun s&#8217;ex\u00e9cute dans son propre Pod, fournissant une isolation au niveau conteneur par d\u00e9faut<\/li>\n<li><strong>Limitation des comptes de service<\/strong> \u2014 utiliser des comptes de service Kubernetes d\u00e9di\u00e9s pour chaque pipeline avec des permissions RBAC minimales<\/li>\n<li><strong>Tekton Chains<\/strong> \u2014 signature automatique des artefacts et g\u00e9n\u00e9ration de provenance, fournissant la conformit\u00e9 SLSA nativement<\/li>\n<li><strong>Bundles OCI<\/strong> \u2014 distribuer les d\u00e9finitions de pipeline sous forme d&#8217;artefacts OCI pour le versionnage et la v\u00e9rification d&#8217;int\u00e9grit\u00e9<\/li>\n<li><strong>Contr\u00f4le d&#8217;admission<\/strong> \u2014 int\u00e9gration avec les contr\u00f4leurs d&#8217;admission Kubernetes (par ex., Kyverno, Gatekeeper) pour l&#8217;application des politiques<\/li>\n<\/ul>\n<p>Consultez les aide-m\u00e9moire et travaux pratiques sp\u00e9cifiques aux plateformes sur notre site pour des conseils d\u00e9taill\u00e9s et pratiques pour chaque plateforme.<\/p>\n<h2>Feuille de Route de Mise en \u0152uvre<\/h2>\n<p>La mise en \u0153uvre de la s\u00e9curit\u00e9 CI\/CD ne se fait pas du jour au lendemain. Voici une approche par phases qui vous am\u00e8ne de la visibilit\u00e9 de base \u00e0 l&#8217;application compl\u00e8te.<\/p>\n<h3>Phase 1 : Visibilit\u00e9 (Semaines 1-4)<\/h3>\n<p>On ne peut pas s\u00e9curiser ce qu&#8217;on ne voit pas. Commencez par un inventaire et une \u00e9valuation complets :<\/p>\n<ul>\n<li><strong>Auditer tous les pipelines<\/strong> \u2014 inventorier chaque pipeline CI\/CD de votre organisation, y compris les syst\u00e8mes CI parall\u00e8les que les \u00e9quipes ont pu mettre en place de mani\u00e8re ind\u00e9pendante<\/li>\n<li><strong>Cartographier l&#8217;utilisation des secrets<\/strong> \u2014 identifier chaque secret, identifiant et jeton utilis\u00e9 dans les pipelines. Documenter leur port\u00e9e, dur\u00e9e de vie et calendrier de renouvellement<\/li>\n<li><strong>Scanner les expositions<\/strong> \u2014 ex\u00e9cuter des outils de d\u00e9tection de secrets contre les d\u00e9p\u00f4ts, les d\u00e9finitions de pipeline et les logs de build pour trouver les identifiants fuit\u00e9s<\/li>\n<li><strong>\u00c9valuer les permissions<\/strong> \u2014 examiner tous les comptes de service, r\u00f4les IAM et jetons de plateforme pour les permissions excessives<\/li>\n<li><strong>Documenter les fronti\u00e8res de confiance<\/strong> \u2014 cartographier quels pipelines peuvent acc\u00e9der \u00e0 quels environnements, secrets et ressources<\/li>\n<\/ul>\n<h3>Phase 2 : Fondations (Semaines 5-12)<\/h3>\n<p>Mettre en place les contr\u00f4les de s\u00e9curit\u00e9 fondamentaux qui r\u00e9duisent le plus de risques avec le moins de complexit\u00e9 :<\/p>\n<ul>\n<li><strong>Mettre en \u0153uvre le moindre privil\u00e8ge<\/strong> \u2014 r\u00e9duire tous les identifiants aux permissions minimales requises. D\u00e9finir le <code>GITHUB_TOKEN<\/code> en lecture seule par d\u00e9faut. Limiter les identifiants cloud \u00e0 des ressources sp\u00e9cifiques<\/li>\n<li><strong>\u00c9pingler toutes les d\u00e9pendances<\/strong> \u2014 \u00e9pingler les actions tierces par SHA de commit, verrouiller les versions des d\u00e9pendances, \u00e9pingler les images de base par digest<\/li>\n<li><strong>S\u00e9curiser la gestion des secrets<\/strong> \u2014 migrer vers OIDC\/la f\u00e9d\u00e9ration d&#8217;identit\u00e9 de charge de travail lorsque c&#8217;est possible. Mettre en place des gestionnaires de secrets externes pour tout le reste. Renouveler tous les identifiants<\/li>\n<li><strong>Activer la protection des branches<\/strong> \u2014 exiger la revue de code, les v\u00e9rifications de statut et les commits sign\u00e9s sur toutes les branches prot\u00e9g\u00e9es<\/li>\n<li><strong>D\u00e9ployer des runners \u00e9ph\u00e9m\u00e8res<\/strong> \u2014 remplacer les serveurs de build persistants par des runners \u00e9ph\u00e9m\u00e8res en environnement propre<\/li>\n<\/ul>\n<h3>Phase 3 : Int\u00e9grit\u00e9 (Semaines 13-20)<\/h3>\n<p>Construire la confiance que les artefacts sont authentiques et non falsifi\u00e9s :<\/p>\n<ul>\n<li><strong>Mettre en place la signature des artefacts<\/strong> \u2014 signer toutes les images de conteneurs et les artefacts de build avec Cosign en utilisant la signature sans cl\u00e9<\/li>\n<li><strong>G\u00e9n\u00e9rer la provenance<\/strong> \u2014 produire la provenance SLSA pour tous les artefacts de build, les liant \u00e0 leur source, syst\u00e8me de build et param\u00e8tres<\/li>\n<li><strong>Cr\u00e9er des SBOMs<\/strong> \u2014 g\u00e9n\u00e9rer des SBOMs pour tous les artefacts, permettant une r\u00e9ponse rapide aux vuln\u00e9rabilit\u00e9s<\/li>\n<li><strong>Imposer la v\u00e9rification de signature<\/strong> \u2014 configurer les contr\u00f4leurs d&#8217;admission (Kyverno, Gatekeeper, Sigstore policy-controller) pour rejeter les images non sign\u00e9es ou non v\u00e9rifi\u00e9es<\/li>\n<li><strong>\u00c9tablir des builds reproductibles<\/strong> \u2014 travailler vers des builds reproductibles pour les artefacts critiques<\/li>\n<\/ul>\n<h3>Phase 4 : Application (Semaines 21-30)<\/h3>\n<p>Automatiser l&#8217;application de la s\u00e9curit\u00e9 pour qu&#8217;elle soit coh\u00e9rente, \u00e9volutive et ne d\u00e9pende pas de la conformit\u00e9 individuelle :<\/p>\n<ul>\n<li><strong>Mettre en \u0153uvre le Policy as Code<\/strong> \u2014 d\u00e9finir les politiques de s\u00e9curit\u00e9 en OPA\/Rego et les appliquer avec Conftest dans chaque pipeline<\/li>\n<li><strong>D\u00e9ployer des contr\u00f4leurs d&#8217;admission<\/strong> \u2014 appliquer des politiques d&#8217;ex\u00e9cution dans Kubernetes qui valident les images, configurations et d\u00e9ploiements<\/li>\n<li><strong>Automatiser les v\u00e9rifications de conformit\u00e9<\/strong> \u2014 int\u00e9grer la validation de conformit\u00e9 dans les pipelines avec la collecte automatis\u00e9e de preuves<\/li>\n<li><strong>Mettre en place des portes de s\u00e9curit\u00e9<\/strong> \u2014 ajouter des points de contr\u00f4le de s\u00e9curit\u00e9 obligatoires qui bloquent la progression dans le pipeline lorsque les crit\u00e8res ne sont pas satisfaits<\/li>\n<li><strong>Surveillance continue<\/strong> \u2014 mettre en place des alertes pour les violations de politique, les comportements anormaux de pipeline et les modifications non autoris\u00e9es<\/li>\n<\/ul>\n<h2>Travaux Pratiques<\/h2>\n<p>La th\u00e9orie est essentielle, mais c&#8217;est par la pratique que les comp\u00e9tences en s\u00e9curit\u00e9 se construisent. Nous proposons des travaux pratiques qui vous permettent de mettre en \u0153uvre chaque concept couvert dans ce guide dans un vrai environnement CI\/CD :<\/p>\n<ul>\n<li><a href=\"https:\/\/secure-pipelines.com\/fr\/ci-cd-security\/lab-hardening-github-actions-workflows-permissions-pinning-secrets\/\">Travaux Pratiques de S\u00e9curit\u00e9 GitHub Actions<\/a> \u2014 Exercices pratiques pour s\u00e9curiser les workflows GitHub Actions, incluant les permissions de jetons, l&#8217;\u00e9pinglage d&#8217;actions et la configuration OIDC<\/li>\n<li><a href=\"https:\/\/secure-pipelines.com\/fr\/ci-cd-security\/lab-securing-gitlab-ci-pipelines-protected-variables-runners-environments\/\">Travaux Pratiques de S\u00e9curit\u00e9 GitLab CI<\/a> \u2014 Exercices pratiques pour durcir les pipelines GitLab CI, les variables prot\u00e9g\u00e9es et la s\u00e9curit\u00e9 des merge requests<\/li>\n<li><a href=\"https:\/\/secure-pipelines.com\/fr\/ci-cd-security\/lab-secure-build-pipeline-tekton-tekton-chains\/\">Travaux Pratiques de S\u00e9curit\u00e9 Tekton<\/a> \u2014 S\u00e9curit\u00e9 des pipelines natifs Kubernetes avec Tekton, incluant Chains pour la signature et la provenance<\/li>\n<li><a href=\"https:\/\/secure-pipelines.com\/fr\/ci-cd-security\/secrets-management-ci-cd-pipelines-patterns-vault-2\/\">Travaux Pratiques d&#8217;Int\u00e9gration Vault CI\/CD<\/a> \u2014 Int\u00e9grer HashiCorp Vault avec les pipelines CI\/CD pour les secrets dynamiques et la gestion des identifiants<\/li>\n<li><a href=\"https:\/\/secure-pipelines.com\/fr\/ci-cd-security\/lab-signing-verifying-container-images-cosign-github-actions\/\">Travaux Pratiques de Signature d&#8217;Images de Conteneurs avec Cosign<\/a> \u2014 Signer, v\u00e9rifier et imposer les signatures d&#8217;images de conteneurs avec Sigstore Cosign<\/li>\n<li><a href=\"https:\/\/secure-pipelines.com\/fr\/ci-cd-security\/lab-enforcing-kubernetes-policies-opa-conftest-ci-cd-2\/\">Travaux Pratiques d&#8217;Application des Politiques OPA<\/a> \u2014 \u00c9crire et appliquer des politiques OPA\/Rego dans les pipelines CI\/CD avec Conftest<\/li>\n<li><a href=\"https:\/\/secure-pipelines.com\/fr\/ci-cd-security\/lab-generating-verifying-slsa-provenance-container-images\/\">Travaux Pratiques de Provenance SLSA<\/a> \u2014 G\u00e9n\u00e9rer et v\u00e9rifier la provenance SLSA pour les artefacts de build<\/li>\n<li><a href=\"https:\/\/secure-pipelines.com\/fr\/threats-attacks\/ci-cd-threat-modeling-trust-boundaries-attack-paths\/\">Travaux Pratiques de Mod\u00e9lisation des Menaces de Pipeline<\/a> \u2014 Mod\u00e9liser les menaces d&#8217;un pipeline CI\/CD pour identifier les risques et prioriser les att\u00e9nuations<\/li>\n<\/ul>\n<h2>Outils et Ressources<\/h2>\n<p>L&#8217;\u00e9cosyst\u00e8me de s\u00e9curit\u00e9 CI\/CD comprend un ensemble croissant d&#8217;outils sp\u00e9cialis\u00e9s. Voici les cat\u00e9gories essentielles et les outils cl\u00e9s :<\/p>\n<h3>D\u00e9tection et Gestion des Secrets<\/h3>\n<ul>\n<li><strong>GitLeaks \/ TruffleHog<\/strong> \u2014 scanner les d\u00e9p\u00f4ts et l&#8217;historique des commits pour les secrets expos\u00e9s<\/li>\n<li><strong>HashiCorp Vault<\/strong> \u2014 secrets dynamiques, gestion des identifiants et chiffrement en tant que service<\/li>\n<li><strong>AWS Secrets Manager \/ GCP Secret Manager \/ Azure Key Vault<\/strong> \u2014 gestion des secrets cloud-native<\/li>\n<\/ul>\n<h3>Int\u00e9grit\u00e9 des Artefacts<\/h3>\n<ul>\n<li><strong>Sigstore (Cosign, Fulcio, Rekor)<\/strong> \u2014 signature sans cl\u00e9, autorit\u00e9 de certification et journal de transparence<\/li>\n<li><strong>in-toto<\/strong> \u2014 framework d&#8217;int\u00e9grit\u00e9 de la cha\u00eene d&#8217;approvisionnement<\/li>\n<li><strong>Framework SLSA<\/strong> \u2014 niveaux de s\u00e9curit\u00e9 de la cha\u00eene d&#8217;approvisionnement et provenance<\/li>\n<li><strong>Syft \/ Trivy<\/strong> \u2014 g\u00e9n\u00e9ration de SBOM et scan de vuln\u00e9rabilit\u00e9s<\/li>\n<\/ul>\n<h3>Application des Politiques<\/h3>\n<ul>\n<li><strong>OPA \/ Conftest<\/strong> \u2014 moteur de politique polyvalent pour la validation de configuration<\/li>\n<li><strong>Kyverno<\/strong> \u2014 moteur de politique natif Kubernetes<\/li>\n<li><strong>Gatekeeper<\/strong> \u2014 int\u00e9gration OPA pour le contr\u00f4le d&#8217;admission Kubernetes<\/li>\n<\/ul>\n<h3>Scan de S\u00e9curit\u00e9 des Pipelines<\/h3>\n<ul>\n<li><strong>Checkov<\/strong> \u2014 scan d&#8217;Infrastructure as Code (Terraform, CloudFormation, Kubernetes)<\/li>\n<li><strong>StepSecurity Harden-Runner<\/strong> \u2014 s\u00e9curit\u00e9 d&#8217;ex\u00e9cution pour GitHub Actions<\/li>\n<li><strong>Snyk<\/strong> \u2014 scan de s\u00e9curit\u00e9 orient\u00e9 d\u00e9veloppeur pour le code, les d\u00e9pendances et les conteneurs<\/li>\n<\/ul>\n<p>Pour des comparaisons d\u00e9taill\u00e9es d&#8217;outils et des recommandations, visitez notre <a href=\"https:\/\/secure-pipelines.com\/fr\/resources\/\">page Ressources<\/a>.<\/p>\n<h2>Conclusion<\/h2>\n<p>La s\u00e9curit\u00e9 des pipelines CI\/CD n&#8217;est ni un outil unique, ni une pratique isol\u00e9e, ni un effort ponctuel. C&#8217;est une <strong>discipline compl\u00e8te<\/strong> qui couvre l&#8217;ensemble du cycle de livraison logicielle \u2014 du commit du d\u00e9veloppeur \u00e0 travers le build, les tests, l&#8217;empaquetage et le d\u00e9ploiement en production.<\/p>\n<p>Les points cl\u00e9s \u00e0 retenir de ce guide :<\/p>\n<ol>\n<li><strong>Les pipelines sont des cibles de haute valeur<\/strong> \u2014 ils ont un acc\u00e8s privil\u00e9gi\u00e9 \u00e0 tout. Traitez-les avec la m\u00eame rigueur s\u00e9curitaire que les syst\u00e8mes de production.<\/li>\n<li><strong>Comprenez vos fronti\u00e8res de confiance<\/strong> \u2014 sachez qui d\u00e9clenche vos pipelines, quel code s&#8217;ex\u00e9cute et quelles ressources sont accessibles \u00e0 chaque \u00e9tape.<\/li>\n<li><strong>Les secrets sont votre plus grand risque<\/strong> \u2014 \u00e9liminez les identifiants \u00e0 longue dur\u00e9e de vie partout o\u00f9 c&#8217;est possible. Utilisez OIDC, l&#8217;identit\u00e9 de charge de travail et les secrets dynamiques.<\/li>\n<li><strong>V\u00e9rifiez l&#8217;int\u00e9grit\u00e9 des artefacts<\/strong> \u2014 signez tout, g\u00e9n\u00e9rez la provenance, cr\u00e9ez des SBOMs et imposez la v\u00e9rification au d\u00e9ploiement.<\/li>\n<li><strong>Automatisez l&#8217;application<\/strong> \u2014 encodez les exigences de s\u00e9curit\u00e9 en Policy as Code. Les processus manuels ne passent pas \u00e0 l&#8217;\u00e9chelle et ne r\u00e9sistent pas \u00e0 la pression des d\u00e9lais.<\/li>\n<li><strong>Durcissez progressivement<\/strong> \u2014 utilisez la feuille de route par phases pour am\u00e9liorer syst\u00e9matiquement votre posture de s\u00e9curit\u00e9 sans perturber la v\u00e9locit\u00e9 de livraison.<\/li>\n<\/ol>\n<p>La surface d&#8217;attaque est large, mais les solutions m\u00fbrissent rapidement. L&#8217;\u00e9cosyst\u00e8me Sigstore, le framework SLSA, OPA\/Conftest, la f\u00e9d\u00e9ration OIDC et les contr\u00f4leurs d&#8217;admission Kubernetes fournissent une bo\u00eete \u00e0 outils robuste pour construire des pipelines v\u00e9ritablement s\u00e9curis\u00e9s.<\/p>\n<p>Commencez l\u00e0 o\u00f9 vous en \u00eates. Auditez votre \u00e9tat actuel, mettez en place les fondations et ajoutez progressivement les contr\u00f4les d&#8217;int\u00e9grit\u00e9 et d&#8217;application. Chaque \u00e9tape que vous franchissez comble une br\u00e8che que les attaquants pourraient exploiter.<\/p>\n<p>Explorez les guides d\u00e9taill\u00e9s, les travaux pratiques et les ressources r\u00e9f\u00e9renc\u00e9s tout au long de cet article pour approfondir chaque sujet. Les pipelines s\u00e9curis\u00e9s ne se construisent pas en un jour \u2014 mais avec les bonnes connaissances et les bons outils, ils sont tout \u00e0 fait \u00e0 votre port\u00e9e.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Introduction Les pipelines CI\/CD constituent l&#8217;\u00e9pine dorsale de la livraison logicielle moderne. Ils automatisent le parcours du commit de code jusqu&#8217;au d\u00e9ploiement en production, permettant aux \u00e9quipes de livrer plus rapidement, de mani\u00e8re plus fiable et avec une plus grande confiance. Mais cette puissance s&#8217;accompagne d&#8217;un compromis critique : les pipelines sont de plus en &#8230; <a title=\"Le Guide Complet de la S\u00e9curit\u00e9 des Pipelines CI\/CD\" class=\"read-more\" href=\"https:\/\/secure-pipelines.com\/fr\/ci-cd-security\/complete-guide-ci-cd-pipeline-security\/\" aria-label=\"En savoir plus sur Le Guide Complet de la S\u00e9curit\u00e9 des Pipelines CI\/CD\">Lire la suite<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[49],"tags":[],"post_folder":[],"class_list":["post-441","post","type-post","status-publish","format-standard","hentry","category-ci-cd-security"],"_links":{"self":[{"href":"https:\/\/secure-pipelines.com\/fr\/wp-json\/wp\/v2\/posts\/441","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/secure-pipelines.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/secure-pipelines.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/secure-pipelines.com\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/secure-pipelines.com\/fr\/wp-json\/wp\/v2\/comments?post=441"}],"version-history":[{"count":5,"href":"https:\/\/secure-pipelines.com\/fr\/wp-json\/wp\/v2\/posts\/441\/revisions"}],"predecessor-version":[{"id":867,"href":"https:\/\/secure-pipelines.com\/fr\/wp-json\/wp\/v2\/posts\/441\/revisions\/867"}],"wp:attachment":[{"href":"https:\/\/secure-pipelines.com\/fr\/wp-json\/wp\/v2\/media?parent=441"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/secure-pipelines.com\/fr\/wp-json\/wp\/v2\/categories?post=441"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/secure-pipelines.com\/fr\/wp-json\/wp\/v2\/tags?post=441"},{"taxonomy":"post_folder","embeddable":true,"href":"https:\/\/secure-pipelines.com\/fr\/wp-json\/wp\/v2\/post_folder?post=441"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}