{"id":448,"date":"2026-03-24T08:03:07","date_gmt":"2026-03-24T07:03:07","guid":{"rendered":"https:\/\/secure-pipelines.com\/?p=448"},"modified":"2026-07-06T20:08:29","modified_gmt":"2026-07-06T19:08:29","slug":"pipeline-hardening-secure-ci-cd-build-deployment-environments","status":"publish","type":"post","link":"https:\/\/secure-pipelines.com\/fr\/pipeline-hardening\/pipeline-hardening-secure-ci-cd-build-deployment-environments\/","title":{"rendered":"Durcissement des pipelines : comment s\u00e9curiser les environnements de build et de d\u00e9ploiement CI\/CD"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Les pipelines CI\/CD sont devenus la colonne vert\u00e9brale de la livraison logicielle moderne. Ils compilent le code, ex\u00e9cutent les tests, g\u00e8rent les secrets, provisionnent l&rsquo;infrastructure et d\u00e9ploient les applications en production. Pourtant, ce r\u00f4le central en fait l&rsquo;un des composants les plus privil\u00e9gi\u00e9s \u2014 et les plus vis\u00e9s \u2014 de toute votre pile technologique. Un pipeline compromis n&rsquo;affecte pas un seul syst\u00e8me ; il peut se propager en cascade \u00e0 travers chaque environnement, chaque artifact et chaque client que votre logiciel atteint.<\/p>\n\n<p class=\"wp-block-paragraph\">Des attaques tr\u00e8s m\u00e9diatis\u00e9es de la cha\u00eene d&rsquo;approvisionnement \u2014 SolarWinds, Codecov et les diverses compromissions de packages npm\/PyPI \u2014 ont d\u00e9montr\u00e9 que les attaquants ciblent de plus en plus le processus de build et de d\u00e9ploiement lui-m\u00eame plut\u00f4t que l&rsquo;application en cours d&rsquo;ex\u00e9cution. Lorsqu&rsquo;un pipeline est compromis, l&rsquo;attaquant obtient la capacit\u00e9 d&rsquo;injecter du code malveillant dans des artifacts de confiance, d&rsquo;exfiltrer des secrets \u00e0 grande \u00e9chelle et de se d\u00e9placer lat\u00e9ralement entre les environnements avec les m\u00eames privil\u00e8ges \u00e9lev\u00e9s que ceux dont dispose le pipeline.<\/p>\n\n<p class=\"wp-block-paragraph\">Le durcissement des pipelines est la pratique syst\u00e9matique consistant \u00e0 r\u00e9duire la surface d&rsquo;attaque, \u00e0 appliquer le moindre privil\u00e8ge et \u00e0 mettre en place des contr\u00f4les de d\u00e9fense en profondeur \u00e0 chaque \u00e9tape de votre workflow CI\/CD. Ce guide couvre les domaines essentiels du durcissement des pipelines \u2014 de l&rsquo;isolation des runners et de la protection des secrets \u00e0 l&rsquo;application des politiques et aux contr\u00f4les de d\u00e9ploiement \u2014 avec des conseils de mise en \u0153uvre pratiques et des liens vers des labs pratiques o\u00f9 appliquer chaque concept.<\/p>\n\n<h2 class=\"wp-block-heading\">Pourquoi les pipelines sont des cibles de grande valeur<\/h2>\n\n<p class=\"wp-block-paragraph\">Avant de plonger dans les techniques de durcissement, il est important de comprendre pourquoi les pipelines CI\/CD repr\u00e9sentent des cibles aussi attrayantes pour les adversaires. Les pipelines fonctionnent g\u00e9n\u00e9ralement avec des privil\u00e8ges \u00e9lev\u00e9s qui d\u00e9passent de loin ce que d\u00e9tient un d\u00e9veloppeur individuel. Ils disposent d&rsquo;un acc\u00e8s en \u00e9criture aux registres d&rsquo;artifacts, d&rsquo;identifiants de d\u00e9ploiement pour les environnements de production, d&rsquo;un acc\u00e8s aux coffres de secrets et de l&rsquo;autorit\u00e9 pour modifier l&rsquo;infrastructure. Cette concentration de privil\u00e8ges cr\u00e9e un point unique de compromission dont le rayon d&rsquo;impact s&rsquo;\u00e9tend \u00e0 l&rsquo;ensemble du cycle de vie de la livraison logicielle.<\/p>\n\n<p class=\"wp-block-paragraph\">Consid\u00e9rez ce \u00e0 quoi un pipeline typique peut acc\u00e9der : d\u00e9p\u00f4ts de code source, registres de d\u00e9pendances, container registries, identifiants de fournisseurs cloud, cha\u00eenes de connexion aux bases de donn\u00e9es, cl\u00e9s API de services tiers, identifiants de clusters Kubernetes et cibles de d\u00e9ploiement dans les environnements de d\u00e9veloppement, de staging et de production. Un attaquant qui prend le contr\u00f4le du pipeline obtient de fait un acc\u00e8s simultan\u00e9 \u00e0 toutes ces ressources.<\/p>\n\n<p class=\"wp-block-paragraph\">De plus, les pipelines traitent des entr\u00e9es non fiables \u2014 pull requests de contributeurs externes, mises \u00e0 jour de d\u00e9pendances, charges utiles de webhooks \u2014 \u00e0 l&rsquo;aide de code qui fait souvent l&rsquo;objet d&rsquo;un examen de s\u00e9curit\u00e9 moins pouss\u00e9 que l&rsquo;application elle-m\u00eame. Les fichiers de configuration de pipeline, les scripts shell et les actions personnalis\u00e9es sont rarement soumis \u00e0 la m\u00eame rigueur de revue de code que le code applicatif de production, ce qui cr\u00e9e des angles morts que les attaquants peuvent exploiter.<\/p>\n\n<h2 class=\"wp-block-heading\">Isolation des runners : le fondement de la s\u00e9curit\u00e9 des pipelines<\/h2>\n\n<p class=\"wp-block-paragraph\">Le runner de build \u2014 l&rsquo;environnement de calcul o\u00f9 s&rsquo;ex\u00e9cutent les jobs du pipeline \u2014 est la fronti\u00e8re de s\u00e9curit\u00e9 la plus fondamentale de votre syst\u00e8me CI\/CD. Si les runners ne sont pas correctement isol\u00e9s, toute autre mesure de durcissement peut \u00eatre contourn\u00e9e. La strat\u00e9gie d&rsquo;isolation des runners repose sur une d\u00e9cision de conception critique : runners \u00e9ph\u00e9m\u00e8res ou persistants.<\/p>\n\n<h3 class=\"wp-block-heading\">Runners persistants : le risque<\/h3>\n\n<p class=\"wp-block-paragraph\">Les runners persistants (\u00e0 longue dur\u00e9e de vie) conservent un \u00e9tat entre les ex\u00e9cutions de jobs. Cela signifie que les artifacts, les identifiants, les variables d&rsquo;environnement et les modifications du syst\u00e8me de fichiers d&rsquo;un job peuvent potentiellement \u00eatre accessibles aux jobs suivants. Les runners persistants cr\u00e9ent plusieurs risques de s\u00e9curit\u00e9 :<\/p>\n\n<ul class=\"wp-block-list\">\n<li><strong>Fuite de donn\u00e9es entre jobs :<\/strong> les secrets ou tokens \u00e9crits sur le disque pendant un build restent accessibles aux builds ult\u00e9rieurs.<\/li>\n<li><strong>Empoisonnement de la cha\u00eene d&rsquo;approvisionnement :<\/strong> un job malveillant peut modifier les outils de build, injecter des backdoors dans des caches partag\u00e9s ou alt\u00e9rer l&rsquo;environnement du runner lui-m\u00eame.<\/li>\n<li><strong>Mouvement lat\u00e9ral :<\/strong> des runners compromis qui persistent sur le r\u00e9seau offrent aux attaquants un point d&rsquo;ancrage pour explorer les syst\u00e8mes adjacents.<\/li>\n<li><strong>Lacunes dans la piste d&rsquo;audit :<\/strong> lorsque plusieurs jobs partagent le m\u00eame runner au fil du temps, attribuer des modifications ou des compromissions pr\u00e9cises devient difficile.<\/li>\n<\/ul>\n\n<h3 class=\"wp-block-heading\">Runners \u00e9ph\u00e9m\u00e8res : la r\u00e9f\u00e9rence absolue<\/h3>\n\n<p class=\"wp-block-paragraph\">Les runners \u00e9ph\u00e9m\u00e8res sont cr\u00e9\u00e9s \u00e0 neuf pour chaque job et d\u00e9truits imm\u00e9diatement apr\u00e8s son ach\u00e8vement. Cette approche offre de solides garanties d&rsquo;isolation : chaque job d\u00e9marre dans un environnement propre et sain, et toute modification \u2014 intentionnelle ou malveillante \u2014 est automatiquement \u00e9cart\u00e9e. Les avantages incluent :<\/p>\n\n<ul class=\"wp-block-list\">\n<li><strong>Aucune contamination entre jobs :<\/strong> chaque job s&rsquo;ex\u00e9cute dans un environnement vierge, sans \u00e9tat r\u00e9siduel des ex\u00e9cutions pr\u00e9c\u00e9dentes.<\/li>\n<li><strong>Persistance r\u00e9duite pour les attaquants :<\/strong> m\u00eame si un job est compromis, la surface d&rsquo;attaque dispara\u00eet lorsque le runner est d\u00e9truit.<\/li>\n<li><strong>Builds coh\u00e9rents et reproductibles :<\/strong> les environnements \u00e9ph\u00e9m\u00e8res \u00e9liminent les probl\u00e8mes de type \u00ab \u00e7a marche sur mon runner \u00bb caus\u00e9s par la d\u00e9rive d&rsquo;\u00e9tat accumul\u00e9e.<\/li>\n<li><strong>Conformit\u00e9 simplifi\u00e9e :<\/strong> des environnements propres facilitent la d\u00e9monstration que les builds n&rsquo;ont pas \u00e9t\u00e9 alt\u00e9r\u00e9s.<\/li>\n<\/ul>\n\n<h3 class=\"wp-block-heading\">Actions Runner Controller (ARC) pour Kubernetes<\/h3>\n\n<p class=\"wp-block-paragraph\">Pour les organisations qui utilisent Kubernetes, <strong>Actions Runner Controller (ARC)<\/strong> fournit une solution robuste pour des runners GitHub Actions \u00e9ph\u00e9m\u00e8res et \u00e0 mise \u00e0 l&rsquo;\u00e9chelle automatique. ARC provisionne dynamiquement des pods runner en r\u00e9ponse aux demandes des workflows et les d\u00e9truit une fois chaque job termin\u00e9. Cette approche combine les avantages d&rsquo;isolation des runners \u00e9ph\u00e9m\u00e8res avec les atouts op\u00e9rationnels de l&rsquo;orchestration Kubernetes.<\/p>\n\n<p class=\"wp-block-paragraph\">Les consid\u00e9rations de durcissement cl\u00e9s lors du d\u00e9ploiement d&rsquo;ARC incluent : utiliser des pools de n\u0153uds d\u00e9di\u00e9s pour les workloads de runners, appliquer des politiques r\u00e9seau Kubernetes pour restreindre les communications runner-\u00e0-runner et runner-\u00e0-cluster, configurer des pod security standards pour emp\u00eacher l&rsquo;\u00e9l\u00e9vation de privil\u00e8ges, et utiliser des syst\u00e8mes de fichiers racine en lecture seule lorsque c&rsquo;est possible. Pour un parcours complet du d\u00e9ploiement et de la configuration s\u00e9curis\u00e9s d&rsquo;ARC, consultez notre lab pratique : <a href=\"https:\/\/secure-pipelines.com\/fr\/ci-cd-security\/lab-ephemeral-self-hosted-runners-actions-runner-controller\/\">Runners auto-h\u00e9berg\u00e9s \u00e9ph\u00e9m\u00e8res avec Actions Runner Controller<\/a>.<\/p>\n\n<h3 class=\"wp-block-heading\">Techniques d&rsquo;isolation suppl\u00e9mentaires des runners<\/h3>\n\n<p class=\"wp-block-paragraph\">Au-del\u00e0 des runners \u00e9ph\u00e9m\u00e8res, des couches d&rsquo;isolation suppl\u00e9mentaires renforcent votre posture de s\u00e9curit\u00e9 :<\/p>\n\n<ul class=\"wp-block-list\">\n<li><strong>Isolation au niveau de la VM :<\/strong> ex\u00e9cutez chaque job dans une machine virtuelle d\u00e9di\u00e9e (par exemple, des microVM Firecracker) pour une s\u00e9paration au niveau mat\u00e9riel.<\/li>\n<li><strong>Sandboxing des conteneurs :<\/strong> utilisez gVisor ou Kata Containers pour ajouter une couche d&rsquo;isolation suppl\u00e9mentaire entre les conteneurs et le noyau de l&rsquo;h\u00f4te.<\/li>\n<li><strong>Groupes et labels de runners :<\/strong> segmentez les runners par niveau de confiance \u2014 utilisez des pools de runners s\u00e9par\u00e9s pour les pull requests provenant de forks et pour les builds de branches de confiance.<\/li>\n<li><strong>Workload identity :<\/strong> attribuez des identit\u00e9s cloud distinctes aux diff\u00e9rents pools de runners, en veillant \u00e0 ce qu&rsquo;un runner traitant des pull requests ne puisse pas acc\u00e9der aux identifiants de d\u00e9ploiement en production.<\/li>\n<\/ul>\n\n<h2 class=\"wp-block-heading\">Moindre privil\u00e8ge : r\u00e9duire les permissions des pipelines<\/h2>\n\n<p class=\"wp-block-paragraph\">Le principe du moindre privil\u00e8ge est peut-\u00eatre la strat\u00e9gie de durcissement la plus d\u00e9terminante que vous puissiez appliquer aux pipelines CI\/CD. Chaque pipeline, chaque job et chaque \u00e9tape devrait fonctionner avec l&rsquo;ensemble minimal absolu de permissions requis pour accomplir sa t\u00e2che \u2014 et rien de plus.<\/p>\n\n<h3 class=\"wp-block-heading\">P\u00e9rim\u00e8tre des tokens<\/h3>\n\n<p class=\"wp-block-paragraph\">La plupart des plateformes CI\/CD fournissent des tokens automatiques (par exemple, <code>GITHUB_TOKEN<\/code> dans GitHub Actions) qui accordent un acc\u00e8s au d\u00e9p\u00f4t et aux ressources associ\u00e9es. Par d\u00e9faut, ces tokens comportent souvent des permissions trop larges. Le durcissement exige un p\u00e9rim\u00e8tre explicite :<\/p>\n\n<pre><code># GitHub Actions: Restrict default token permissions\npermissions:\n  contents: read\n  packages: read\n\njobs:\n  deploy:\n    permissions:\n      contents: read\n      deployments: write\n      id-token: write  # Only for OIDC-based authentication<\/code><\/pre>\n\n<p class=\"wp-block-paragraph\">D\u00e9clarez les permissions au niveau du workflow avec des valeurs par d\u00e9faut minimales, puis n&rsquo;accordez de permissions suppl\u00e9mentaires qu&rsquo;aux jobs sp\u00e9cifiques qui en ont besoin. Ainsi, une \u00e9tape de build compromise ne peut pas abuser des identifiants de d\u00e9ploiement si ceux-ci ne sont disponibles que pour le job de d\u00e9ploiement.<\/p>\n\n<h3 class=\"wp-block-heading\">S\u00e9paration des responsabilit\u00e9s<\/h3>\n\n<p class=\"wp-block-paragraph\">Le durcissement des pipelines va au-del\u00e0 des permissions de tokens : il concerne aussi la fa\u00e7on dont les responsabilit\u00e9s sont r\u00e9parties dans le pipeline. Les principes essentiels incluent :<\/p>\n\n<ul class=\"wp-block-list\">\n<li><strong>S\u00e9parer build et d\u00e9ploiement :<\/strong> le job qui compile le code ne devrait pas \u00eatre le m\u00eame que celui qui d\u00e9ploie en production. Utilisez des jobs s\u00e9par\u00e9s, avec des identifiants et des portes d&rsquo;approbation distincts.<\/li>\n<li><strong>S\u00e9parer la CI de la CD :<\/strong> les workflows de build et de test devraient avoir des jeux de permissions diff\u00e9rents de ceux des workflows de d\u00e9ploiement. Un runner de test n&rsquo;a aucune raison de d\u00e9tenir des identifiants cloud de production.<\/li>\n<li><strong>Acc\u00e8s aux pipelines bas\u00e9 sur les r\u00f4les :<\/strong> tous les d\u00e9veloppeurs n&rsquo;ont pas besoin de pouvoir modifier les d\u00e9finitions de pipeline, approuver les d\u00e9ploiements ou acc\u00e9der aux logs de production.<\/li>\n<li><strong>Artifacts immuables :<\/strong> les jobs de build produisent des artifacts sign\u00e9s ; les jobs de d\u00e9ploiement les consomment et les v\u00e9rifient. Le job de d\u00e9ploiement ne reconstruit jamais \u2014 il d\u00e9ploie uniquement des artifacts pr\u00e9-construits et v\u00e9rifi\u00e9s.<\/li>\n<\/ul>\n\n<p class=\"wp-block-paragraph\">Pour une exploration plus approfondie de la mise en \u0153uvre de la s\u00e9paration des responsabilit\u00e9s et du moindre privil\u00e8ge dans vos pipelines, lisez notre guide d\u00e9taill\u00e9 : <a href=\"https:\/\/secure-pipelines.com\/fr\/ci-cd-security\/separation-of-duties-least-privilege-ci-cd-pipelines\/\">S\u00e9paration des responsabilit\u00e9s et moindre privil\u00e8ge dans les pipelines CI\/CD<\/a>.<\/p>\n\n<h2 class=\"wp-block-heading\">Protection des secrets : pr\u00e9venir les fuites et r\u00e9duire l&rsquo;exposition<\/h2>\n\n<p class=\"wp-block-paragraph\">Les secrets \u2014 cl\u00e9s API, identifiants de bases de donn\u00e9es, cl\u00e9s de signature, tokens de fournisseurs cloud \u2014 sont le nerf de la guerre des op\u00e9rations de pipeline et la cible principale des attaquants. Une strat\u00e9gie compl\u00e8te de protection des secrets traite de la fa\u00e7on dont les secrets sont stock\u00e9s, inject\u00e9s, cadr\u00e9s, renouvel\u00e9s et surveill\u00e9s.<\/p>\n\n<h3 class=\"wp-block-heading\">Bonnes pratiques de gestion des secrets<\/h3>\n\n<ul class=\"wp-block-list\">\n<li><strong>Gestionnaires de secrets externes :<\/strong> utilisez des plateformes d\u00e9di\u00e9es de gestion des secrets comme HashiCorp Vault, AWS Secrets Manager, Azure Key Vault ou Google Secret Manager plut\u00f4t que de vous reposer uniquement sur le stockage de secrets int\u00e9gr\u00e9 \u00e0 votre plateforme CI\/CD. Les gestionnaires externes offrent de meilleures capacit\u00e9s d&rsquo;audit, de rotation et de contr\u00f4le d&rsquo;acc\u00e8s.<\/li>\n<li><strong>Injection de secrets juste-\u00e0-temps :<\/strong> les secrets devraient \u00eatre inject\u00e9s dans le pipeline au moment o\u00f9 ils sont n\u00e9cessaires et uniquement pour la dur\u00e9e requise. \u00c9vitez d&rsquo;\u00e9crire les secrets sur le disque ou de les passer via des variables d&rsquo;environnement qui persistent d&rsquo;une \u00e9tape \u00e0 l&rsquo;autre.<\/li>\n<li><strong>Rotation des secrets :<\/strong> mettez en place une rotation automatis\u00e9e de tous les identifiants de pipeline. Des identifiants de courte dur\u00e9e r\u00e9duisent la fen\u00eatre d&rsquo;opportunit\u00e9 en cas de compromission d&rsquo;un secret.<\/li>\n<li><strong>Limitez la port\u00e9e des secrets \u00e0 des environnements pr\u00e9cis :<\/strong> les secrets de production ne devraient \u00eatre accessibles que depuis les jobs de d\u00e9ploiement en production, pas depuis les jobs de test ou de build.<\/li>\n<\/ul>\n\n<p class=\"wp-block-paragraph\">Pour des sch\u00e9mas complets d&rsquo;int\u00e9gration des gestionnaires de secrets \u00e0 vos pipelines CI\/CD, consultez notre guide : <a href=\"https:\/\/secure-pipelines.com\/fr\/ci-cd-security\/secrets-management-ci-cd-pipelines-patterns-vault-2\/\">Gestion des secrets dans les pipelines CI\/CD : sch\u00e9mas avec Vault<\/a>.<\/p>\n\n<h3 class=\"wp-block-heading\">F\u00e9d\u00e9ration OIDC : \u00e9liminer les identifiants \u00e0 longue dur\u00e9e de vie<\/h3>\n\n<p class=\"wp-block-paragraph\">L&rsquo;une des avanc\u00e9es les plus importantes en mati\u00e8re de s\u00e9curit\u00e9 des pipelines est l&rsquo;adoption de la f\u00e9d\u00e9ration OpenID Connect (OIDC) pour l&rsquo;authentification cloud. Au lieu de stocker des identifiants cloud \u00e0 longue dur\u00e9e de vie sous forme de secrets de pipeline, OIDC permet au pipeline d&rsquo;\u00e9changer un token de courte dur\u00e9e, sign\u00e9 cryptographiquement, contre des identifiants cloud temporaires.<\/p>\n\n<p class=\"wp-block-paragraph\">Les avantages sont consid\u00e9rables :<\/p>\n\n<ul class=\"wp-block-list\">\n<li><strong>Aucun identifiant statique \u00e0 voler :<\/strong> il n&rsquo;y a aucune cl\u00e9 API ou cl\u00e9 de compte de service \u00e0 longue dur\u00e9e de vie stock\u00e9e dans le syst\u00e8me CI\/CD.<\/li>\n<li><strong>Politiques de confiance \u00e0 grain fin :<\/strong> les fournisseurs cloud peuvent restreindre l&rsquo;\u00e9change de tokens \u00e0 des d\u00e9p\u00f4ts, des branches, des environnements ou m\u00eame des fichiers de workflow sp\u00e9cifiques.<\/li>\n<li><strong>Expiration automatique :<\/strong> les identifiants temporaires expirent en quelques minutes, ce qui r\u00e9duit consid\u00e9rablement l&rsquo;impact d&rsquo;une \u00e9ventuelle fuite.<\/li>\n<li><strong>Piste d&rsquo;audit :<\/strong> chaque \u00e9change d&rsquo;identifiants est journalis\u00e9 avec l&rsquo;ensemble du contexte : pipeline demandeur, branche et commit.<\/li>\n<\/ul>\n\n<pre><code># GitHub Actions OIDC with AWS\njobs:\n  deploy:\n    permissions:\n      id-token: write\n      contents: read\n    steps:\n      - uses: aws-actions\/configure-aws-credentials@v4\n        with:\n          role-to-assume: arn:aws:iam::123456789012:role\/deploy-role\n          aws-region: us-east-1\n          # No static AWS keys needed!<\/code><\/pre>\n\n<h3 class=\"wp-block-heading\">Pr\u00e9vention des fuites de secrets<\/h3>\n\n<p class=\"wp-block-paragraph\">M\u00eame avec une bonne gestion des secrets, des fuites peuvent survenir via les logs du pipeline, les messages d&rsquo;erreur, les uploads d&rsquo;artifacts ou des \u00e9tapes mal configur\u00e9es. Mettez en place plusieurs couches de pr\u00e9vention des fuites :<\/p>\n\n<ul class=\"wp-block-list\">\n<li><strong>Hooks de pre-commit :<\/strong> utilisez des outils comme <code>gitleaks<\/code>, <code>trufflehog<\/code>, ou <code>detect-secrets<\/code> pour intercepter les secrets avant qu&rsquo;ils n&rsquo;entrent dans le d\u00e9p\u00f4t.<\/li>\n<li><strong>Secret scanning dans le pipeline :<\/strong> ex\u00e9cutez la d\u00e9tection de secrets comme \u00e9tape du pipeline pour rep\u00e9rer les secrets dans le contenu g\u00e9n\u00e9r\u00e9, les fixtures de test ou les fichiers de configuration.<\/li>\n<li><strong>Expurgation des logs :<\/strong> assurez-vous que le masquage des logs int\u00e9gr\u00e9 \u00e0 votre plateforme CI\/CD est actif pour tous les secrets enregistr\u00e9s, et ajoutez un masquage personnalis\u00e9 pour les identifiants g\u00e9n\u00e9r\u00e9s dynamiquement.<\/li>\n<li><strong>Filtrage des sorties :<\/strong> analysez les sorties du pipeline, les artifacts et les images de conteneurs \u00e0 la recherche de secrets inclus par accident avant leur publication.<\/li>\n<\/ul>\n\n<p class=\"wp-block-paragraph\">Notre lab pratique d\u00e9taille la mise en \u0153uvre de ces contr\u00f4les de bout en bout : <a href=\"https:\/\/secure-pipelines.com\/fr\/ci-cd-security\/lab-detecting-preventing-secret-leaks-ci-cd-pipelines\/\">D\u00e9tecter et pr\u00e9venir les fuites de secrets dans les pipelines CI\/CD<\/a>.<\/p>\n\n<h2 class=\"wp-block-heading\">Restrictions r\u00e9seau : contr\u00f4ler les communications pendant le build<\/h2>\n\n<p class=\"wp-block-paragraph\">Une dimension souvent n\u00e9glig\u00e9e du durcissement des pipelines est le contr\u00f4le des ressources r\u00e9seau auxquelles les jobs de build peuvent acc\u00e9der. Par d\u00e9faut, la plupart des runners disposent d&rsquo;un acc\u00e8s Internet sans restriction, ce qui cr\u00e9e des occasions d&rsquo;attaques par confusion de d\u00e9pendances, d&rsquo;exfiltration de donn\u00e9es et de communication de commande et contr\u00f4le depuis des \u00e9tapes de build compromises.<\/p>\n\n<h3 class=\"wp-block-heading\">Contr\u00f4les r\u00e9seau pendant le build<\/h3>\n\n<p class=\"wp-block-paragraph\">La mise en place de contr\u00f4les r\u00e9seau pendant le processus de build r\u00e9duit consid\u00e9rablement la surface d&rsquo;attaque :<\/p>\n\n<ul class=\"wp-block-list\">\n<li><strong>Filtrage des sorties (egress) :<\/strong> restreignez l&rsquo;acc\u00e8s r\u00e9seau sortant des runners de build aux seuls endpoints approuv\u00e9s \u2014 le miroir de votre registre de packages, votre container registry et les API sp\u00e9cifiques n\u00e9cessaires au build.<\/li>\n<li><strong>Filtrage DNS :<\/strong> utilisez des contr\u00f4les au niveau DNS pour emp\u00eacher les runners de r\u00e9soudre des domaines non autoris\u00e9s, ce qui bloque l&rsquo;exfiltration de donn\u00e9es par tunneling DNS.<\/li>\n<li><strong>R\u00e9seau priv\u00e9 :<\/strong> placez les runners dans des sous-r\u00e9seaux priv\u00e9s sans acc\u00e8s direct \u00e0 Internet. Faites transiter le trafic approuv\u00e9 par un proxy ou une passerelle NAT avec journalisation.<\/li>\n<li><strong>Miroir de registres :<\/strong> maintenez des miroirs internes des registres de packages externes (npm, PyPI, Maven Central, Docker Hub) pour r\u00e9duire la d\u00e9pendance \u00e0 l&rsquo;acc\u00e8s r\u00e9seau externe et disposer d&rsquo;un point de contr\u00f4le pour la v\u00e9rification des d\u00e9pendances.<\/li>\n<\/ul>\n\n<h3 class=\"wp-block-heading\">Builds herm\u00e9tiques<\/h3>\n\n<p class=\"wp-block-paragraph\">L&rsquo;expression ultime du contr\u00f4le r\u00e9seau pendant le build est le build herm\u00e9tique \u2014 un build qui n&rsquo;a aucun acc\u00e8s r\u00e9seau et repose enti\u00e8rement sur des d\u00e9pendances pr\u00e9-t\u00e9l\u00e9charg\u00e9es et v\u00e9rifi\u00e9es. Les builds herm\u00e9tiques offrent la plus forte garantie contre les attaques de la cha\u00eene d&rsquo;approvisionnement pendant la phase de build, car le processus de build ne peut pas t\u00e9l\u00e9charger de d\u00e9pendances inattendues ou alt\u00e9r\u00e9es.<\/p>\n\n<p class=\"wp-block-paragraph\">La mise en place de builds herm\u00e9tiques comporte plusieurs \u00e9tapes :<\/p>\n\n<ol class=\"wp-block-list\">\n<li><strong>Vendoring ou pr\u00e9-t\u00e9l\u00e9chargement des d\u00e9pendances :<\/strong> toutes les d\u00e9pendances sont t\u00e9l\u00e9charg\u00e9es et v\u00e9rifi\u00e9es dans une \u00e9tape s\u00e9par\u00e9e et audit\u00e9e, avant le d\u00e9but du build.<\/li>\n<li><strong>D\u00e9connexion r\u00e9seau :<\/strong> l&rsquo;\u00e9tape de build proprement dite s&rsquo;ex\u00e9cute sans aucun acc\u00e8s r\u00e9seau \u2014 toutes les entr\u00e9es requises sont disponibles localement.<\/li>\n<li><strong>Environnements de build reproductibles :<\/strong> les cha\u00eenes d&rsquo;outils de build sont \u00e9pingl\u00e9es \u00e0 des versions pr\u00e9cises et distribu\u00e9es sous forme d&rsquo;images de conteneurs ou de snapshots de VM v\u00e9rifi\u00e9s.<\/li>\n<li><strong>Stockage adressable par contenu :<\/strong> les d\u00e9pendances sont r\u00e9f\u00e9renc\u00e9es par leur hachage cryptographique, et non par des tags de version mutables.<\/li>\n<\/ol>\n\n<p class=\"wp-block-paragraph\">Des syst\u00e8mes de build comme Bazel et Buck2 prennent en charge nativement les builds herm\u00e9tiques. Pour les autres outils de build, vous pouvez approcher des builds herm\u00e9tiques en utilisant des politiques r\u00e9seau au niveau des conteneurs (par exemple, les <code>NetworkPolicy<\/code> de Kubernetes) ou des r\u00e8gles de pare-feu qui bloquent toute sortie pendant l&rsquo;\u00e9tape de build.<\/p>\n\n<h2 class=\"wp-block-heading\">Application des politiques : des portes de s\u00e9curit\u00e9 automatis\u00e9es<\/h2>\n\n<p class=\"wp-block-paragraph\">Les revues de s\u00e9curit\u00e9 manuelles ne passent pas \u00e0 l&rsquo;\u00e9chelle face \u00e0 la v\u00e9locit\u00e9 des pipelines CI\/CD modernes. L&rsquo;application des politiques automatise les d\u00e9cisions de s\u00e9curit\u00e9 en codifiant les exigences de s\u00e9curit\u00e9 de votre organisation sous forme de politiques lisibles par machine, \u00e9valu\u00e9es automatiquement \u00e0 chaque \u00e9tape du pipeline.<\/p>\n\n<h3 class=\"wp-block-heading\">Policy as Code avec OPA et Rego<\/h3>\n\n<p class=\"wp-block-paragraph\">L&rsquo; <strong>Open Policy Agent (OPA)<\/strong> et son langage de politiques <strong>Rego<\/strong> se sont impos\u00e9s comme le standard de facto du policy-as-code dans les environnements cloud-native. Dans le contexte des pipelines CI\/CD, OPA peut appliquer des politiques dans plusieurs domaines :<\/p>\n\n<ul class=\"wp-block-list\">\n<li><strong>Politiques d&rsquo;images de conteneurs :<\/strong> garantir que seules des images provenant de registres approuv\u00e9s sont d\u00e9ploy\u00e9es, que les images de base sont \u00e0 jour et qu&rsquo;aucune image ne s&rsquo;ex\u00e9cute en root.<\/li>\n<li><strong>Validation des manifestes Kubernetes :<\/strong> v\u00e9rifier que les d\u00e9ploiements incluent des limites de ressources, des contextes de s\u00e9curit\u00e9, des politiques r\u00e9seau et les labels requis.<\/li>\n<li><strong>Conformit\u00e9 de l&rsquo;Infrastructure as Code :<\/strong> contr\u00f4ler les plans Terraform ou les templates CloudFormation par rapport \u00e0 des r\u00e9f\u00e9rences de s\u00e9curit\u00e9 avant d&rsquo;appliquer les changements.<\/li>\n<li><strong>Politiques de configuration des pipelines :<\/strong> valider que les fichiers de workflow incluent les \u00e9tapes de s\u00e9curit\u00e9 requises (analyse, signature, portes d&rsquo;approbation) avant d&rsquo;autoriser leur ex\u00e9cution.<\/li>\n<\/ul>\n\n<h3 class=\"wp-block-heading\">Conftest pour des contr\u00f4les de politiques int\u00e9gr\u00e9s au pipeline<\/h3>\n\n<p class=\"wp-block-paragraph\"><strong>Conftest<\/strong> est un outil de test b\u00e2ti sur OPA qui simplifie l&rsquo;int\u00e9gration des contr\u00f4les de politique dans les pipelines CI\/CD. Conftest peut valider des formats de donn\u00e9es structur\u00e9s \u2014 YAML, JSON, HCL, Dockerfile, et plus \u2014 par rapport \u00e0 des politiques Rego, ce qui le rend id\u00e9al pour v\u00e9rifier les manifestes Kubernetes, les configurations Terraform, les Dockerfiles et les d\u00e9finitions de pipeline elles-m\u00eames.<\/p>\n\n<pre><code># Example Rego policy: Deny containers running as root\npackage main\n\ndeny[msg] {\n  input.kind == \"Deployment\"\n  container := input.spec.template.spec.containers[_]\n  not container.securityContext.runAsNonRoot\n  msg := sprintf(\"Container '%s' must set runAsNonRoot: true\", [container.name])\n}<\/code><\/pre>\n\n<p class=\"wp-block-paragraph\">Pour un guide approfondi de la mise en \u0153uvre du policy-as-code dans vos pipelines CI\/CD avec OPA, Rego et Conftest, consultez : <a href=\"https:\/\/secure-pipelines.com\/fr\/ci-cd-security\/policy-as-code-ci-cd-opa-rego-security-gates-2\/\">Policy as Code en CI\/CD : OPA, Rego et portes de s\u00e9curit\u00e9<\/a>.<\/p>\n\n<h3 class=\"wp-block-heading\">Application des politiques en couches<\/h3>\n\n<p class=\"wp-block-paragraph\">Une application efficace des politiques op\u00e8re \u00e0 plusieurs niveaux :<\/p>\n\n<ul class=\"wp-block-list\">\n<li><strong>Pre-commit :<\/strong> interceptez les violations de politique avant que le code n&rsquo;entre dans le d\u00e9p\u00f4t (linters, formateurs, scanners de secrets).<\/li>\n<li><strong>Portes de pull request :<\/strong> ex\u00e9cutez les contr\u00f4les de politique en tant que status checks obligatoires qui doivent r\u00e9ussir avant la fusion.<\/li>\n<li><strong>Validation pendant le build :<\/strong> validez les artifacts, les configurations et les d\u00e9pendances pendant le processus de build.<\/li>\n<li><strong>Admission avant d\u00e9ploiement :<\/strong> utilisez les contr\u00f4leurs d&rsquo;admission Kubernetes (Gatekeeper, Kyverno) comme point d&rsquo;application final avant que les workloads n&rsquo;atteignent le cluster.<\/li>\n<li><strong>Application au runtime :<\/strong> surveillez les workloads en cours d&rsquo;ex\u00e9cution pour d\u00e9tecter les d\u00e9rives de politique et alerter ou rem\u00e9dier automatiquement.<\/li>\n<\/ul>\n\n<h2 class=\"wp-block-heading\">Contr\u00f4les de d\u00e9ploiement : prot\u00e9ger les environnements de production<\/h2>\n\n<p class=\"wp-block-paragraph\">La phase de d\u00e9ploiement repr\u00e9sente le point o\u00f9 les actions du pipeline impactent directement les syst\u00e8mes de production et les utilisateurs finaux. Durcir les contr\u00f4les de d\u00e9ploiement est essentiel pour emp\u00eacher les changements non autoris\u00e9s, limiter le rayon d&rsquo;impact et permettre une reprise rapide en cas de probl\u00e8me.<\/p>\n\n<h3 class=\"wp-block-heading\">Portes et approbations d&rsquo;environnement<\/h3>\n\n<p class=\"wp-block-paragraph\">Les r\u00e8gles de protection d&rsquo;environnement cr\u00e9ent des points de contr\u00f4le obligatoires avant que les d\u00e9ploiements ne puissent se poursuivre :<\/p>\n\n<ul class=\"wp-block-list\">\n<li><strong>R\u00e9viseurs requis :<\/strong> d\u00e9signez les personnes ou \u00e9quipes qui doivent approuver les d\u00e9ploiements vers les environnements sensibles (staging, production).<\/li>\n<li><strong>D\u00e9lais d&rsquo;attente :<\/strong> introduisez des d\u00e9lais obligatoires avant l&rsquo;ex\u00e9cution des d\u00e9ploiements, offrant une fen\u00eatre pour la revue et l&rsquo;intervention.<\/li>\n<li><strong>Restrictions de branche :<\/strong> limitez les branches qui peuvent d\u00e9clencher des d\u00e9ploiements vers des environnements sp\u00e9cifiques \u2014 par exemple, seule la branche <code>main<\/code> peut d\u00e9ployer en production.<\/li>\n<li><strong>Fen\u00eatres de d\u00e9ploiement :<\/strong> restreignez les d\u00e9ploiements \u00e0 des fen\u00eatres de maintenance approuv\u00e9es, \u00e9vitant les changements pendant les pics de trafic ou en dehors des heures ouvr\u00e9es, lorsque la capacit\u00e9 de support est limit\u00e9e.<\/li>\n<\/ul>\n\n<h3 class=\"wp-block-heading\">GitOps : des d\u00e9ploiements d\u00e9claratifs et auditables<\/h3>\n\n<p class=\"wp-block-paragraph\">GitOps \u00e9l\u00e8ve Git au rang de source unique de v\u00e9rit\u00e9 pour l&rsquo;\u00e9tat de l&rsquo;infrastructure et des applications. Un mod\u00e8le de d\u00e9ploiement GitOps offre de solides b\u00e9n\u00e9fices en mati\u00e8re de durcissement :<\/p>\n\n<ul class=\"wp-block-list\">\n<li><strong>Piste d&rsquo;audit compl\u00e8te :<\/strong> chaque modification de l&rsquo;\u00e9tat d\u00e9sir\u00e9 est un commit Git, ce qui fournit un enregistrement immuable de qui a chang\u00e9 quoi, quand et pourquoi.<\/li>\n<li><strong>D\u00e9ploiement bas\u00e9 sur le pull :<\/strong> l&rsquo;agent de d\u00e9ploiement (par exemple, Argo CD, Flux) r\u00e9cup\u00e8re l&rsquo;\u00e9tat d\u00e9sir\u00e9 depuis Git et r\u00e9concilie le cluster, ce qui \u00e9limine le besoin pour le pipeline CI de d\u00e9tenir les identifiants du cluster.<\/li>\n<li><strong>D\u00e9tection de d\u00e9rive :<\/strong> les contr\u00f4leurs GitOps comparent en continu l&rsquo;\u00e9tat r\u00e9el \u00e0 l&rsquo;\u00e9tat d\u00e9sir\u00e9, d\u00e9tectant et signalant (ou annulant) les modifications manuelles non autoris\u00e9es.<\/li>\n<li><strong>Simplicit\u00e9 du rollback :<\/strong> annuler un d\u00e9ploiement est aussi simple qu&rsquo;annuler un commit Git \u2014 le contr\u00f4leur GitOps se r\u00e9concilie automatiquement vers l&rsquo;\u00e9tat pr\u00e9c\u00e9dent.<\/li>\n<\/ul>\n\n<h3 class=\"wp-block-heading\">Livraison progressive : d\u00e9ploiements canary et blue-green<\/h3>\n\n<p class=\"wp-block-paragraph\">Les strat\u00e9gies de livraison progressive limitent le rayon d&rsquo;impact des d\u00e9ploiements en exposant progressivement les changements au trafic de production :<\/p>\n\n<ul class=\"wp-block-list\">\n<li><strong>D\u00e9ploiements canary :<\/strong> routez un faible pourcentage du trafic (par exemple, 5 %) vers la nouvelle version tout en surveillant les taux d&rsquo;erreur, la latence et les m\u00e9triques m\u00e9tier. Annulez automatiquement si des anomalies sont d\u00e9tect\u00e9es.<\/li>\n<li><strong>D\u00e9ploiements blue-green :<\/strong> maintenez deux environnements de production identiques. D\u00e9ployez sur l&rsquo;environnement inactif, validez, puis basculez le trafic. L&rsquo;environnement pr\u00e9c\u00e9dent reste disponible pour un rollback instantan\u00e9.<\/li>\n<li><strong>Feature flags :<\/strong> d\u00e9couplez le d\u00e9ploiement de la mise en service en utilisant des feature flags pour contr\u00f4ler quels utilisateurs voient les nouvelles fonctionnalit\u00e9s. Cela permet de d\u00e9ployer du code en production sans l&rsquo;activer tant que vous n&rsquo;\u00eates pas certain qu&rsquo;il fonctionne correctement.<\/li>\n<\/ul>\n\n<p class=\"wp-block-paragraph\">Des outils comme Argo Rollouts, Flagger et Istio fournissent des capacit\u00e9s de livraison progressive automatis\u00e9e qui s&rsquo;int\u00e8grent \u00e0 votre pipeline CI\/CD pour imposer des pratiques de d\u00e9ploiement s\u00fbres.<\/p>\n\n<h2 class=\"wp-block-heading\">Surveillance et d\u00e9tection<\/h2>\n\n<p class=\"wp-block-paragraph\">Le durcissement ne concerne pas uniquement la pr\u00e9vention \u2014 il exige aussi la capacit\u00e9 de d\u00e9tecter les anomalies, d&rsquo;enqu\u00eater sur les incidents et de r\u00e9pondre aux menaces visant l&rsquo;infrastructure de votre pipeline. Une surveillance compl\u00e8te ferme la boucle de r\u00e9troaction, en garantissant que vos mesures de durcissement fonctionnent et en vous alertant lorsqu&rsquo;elles \u00e9chouent.<\/p>\n\n<h3 class=\"wp-block-heading\">Journalisation d&rsquo;audit des pipelines<\/h3>\n\n<p class=\"wp-block-paragraph\">Capturez et centralisez les logs d&rsquo;audit de chaque composant de votre infrastructure CI\/CD :<\/p>\n\n<ul class=\"wp-block-list\">\n<li><strong>Logs d&rsquo;ex\u00e9cution des pipelines :<\/strong> qui a d\u00e9clench\u00e9 chaque ex\u00e9cution de pipeline, sur quelle branche, quel commit, quelles entr\u00e9es ont \u00e9t\u00e9 fournies.<\/li>\n<li><strong>Logs d&rsquo;acc\u00e8s aux secrets :<\/strong> chaque acc\u00e8s aux gestionnaires de secrets devrait \u00eatre journalis\u00e9 avec l&rsquo;identit\u00e9 demandeuse, l&rsquo;horodatage et le secret pr\u00e9cis consult\u00e9.<\/li>\n<li><strong>Logs de d\u00e9ploiement :<\/strong> enregistrez chaque \u00e9v\u00e9nement de d\u00e9ploiement avec la version de l&rsquo;artifact, l&rsquo;environnement cible, les approbateurs et le r\u00e9sultat.<\/li>\n<li><strong>Logs de changement de configuration :<\/strong> suivez les modifications des d\u00e9finitions de pipeline, des configurations de runners et des param\u00e8tres d&rsquo;environnement.<\/li>\n<\/ul>\n\n<h3 class=\"wp-block-heading\">D\u00e9tection d&rsquo;anomalies<\/h3>\n\n<p class=\"wp-block-paragraph\">Au-del\u00e0 de la journalisation, mettez en place une d\u00e9tection active des comportements suspects du pipeline :<\/p>\n\n<ul class=\"wp-block-list\">\n<li><strong>Sch\u00e9mas de build inhabituels :<\/strong> des builds d\u00e9clench\u00e9s \u00e0 des heures inhabituelles, depuis des branches inattendues ou par des comptes anormalement actifs.<\/li>\n<li><strong>Anomalies de ressources :<\/strong> des builds consommant des quantit\u00e9s inhabituelles de CPU, de m\u00e9moire ou de bande passante r\u00e9seau peuvent indiquer du cryptominage ou de l&rsquo;exfiltration de donn\u00e9es.<\/li>\n<li><strong>Changements de d\u00e9pendances :<\/strong> des changements inattendus dans les versions de d\u00e9pendances r\u00e9solues, de nouvelles d\u00e9pendances provenant de sources inconnues ou des d\u00e9pendances r\u00e9cup\u00e9r\u00e9es depuis des registres inhabituels.<\/li>\n<li><strong>\u00c9checs de contr\u00f4les de politique :<\/strong> une augmentation soudaine des violations de politique peut indiquer une tentative de contournement des contr\u00f4les de s\u00e9curit\u00e9.<\/li>\n<li><strong>Sch\u00e9mas d&rsquo;acc\u00e8s aux secrets :<\/strong> des secrets consult\u00e9s en dehors des sch\u00e9mas de build normaux ou depuis des \u00e9tapes de pipeline inattendues.<\/li>\n<\/ul>\n\n<h3 class=\"wp-block-heading\">M\u00e9triques de s\u00e9curit\u00e9 et tableaux de bord<\/h3>\n\n<p class=\"wp-block-paragraph\">Suivez les m\u00e9triques cl\u00e9s qui indiquent la sant\u00e9 et la posture de s\u00e9curit\u00e9 de votre infrastructure de pipeline :<\/p>\n\n<ul class=\"wp-block-list\">\n<li>Pourcentage de pipelines utilisant des runners \u00e9ph\u00e9m\u00e8res<\/li>\n<li>Nombre d&rsquo;identifiants \u00e0 longue dur\u00e9e de vie par rapport \u00e0 l&rsquo;authentification bas\u00e9e sur OIDC<\/li>\n<li>Temps moyen de rotation des secrets compromis<\/li>\n<li>Taux de conformit\u00e9 aux politiques sur l&rsquo;ensemble des ex\u00e9cutions de pipeline<\/li>\n<li>Pourcentage de d\u00e9ploiements utilisant la livraison progressive<\/li>\n<li>Nombre de constats de s\u00e9curit\u00e9 issus des \u00e9tapes d&rsquo;analyse du pipeline<\/li>\n<\/ul>\n\n<h2 class=\"wp-block-heading\">Feuille de route de mise en \u0153uvre<\/h2>\n\n<p class=\"wp-block-paragraph\">Le durcissement des pipelines est un parcours, pas un projet ponctuel. Les organisations devraient adopter une approche incr\u00e9mentale, en priorisant les contr\u00f4les en fonction du risque et de la complexit\u00e9 de mise en \u0153uvre. La feuille de route suivante propose une s\u00e9quence pratique pour faire m\u00fbrir la posture de s\u00e9curit\u00e9 de vos pipelines.<\/p>\n\n<h3 class=\"wp-block-heading\">Phase 1 : fondations (semaines 1-4)<\/h3>\n\n<ul class=\"wp-block-list\">\n<li>Auditez les permissions existantes des pipelines et r\u00e9duisez-les au moindre privil\u00e8ge.<\/li>\n<li>Activez et imposez le p\u00e9rim\u00e8tre des tokens (par exemple, des blocs <code>permissions:<\/code> restrictifs dans GitHub Actions).<\/li>\n<li>Mettez en place le secret scanning dans les hooks de pre-commit et les pipelines CI.<\/li>\n<li>Inventoriez tous les identifiants \u00e0 longue dur\u00e9e de vie et cr\u00e9ez un plan de migration vers des identifiants de courte dur\u00e9e.<\/li>\n<li>Activez la journalisation d&rsquo;audit pour les ex\u00e9cutions de pipeline et les acc\u00e8s aux secrets.<\/li>\n<\/ul>\n\n<h3 class=\"wp-block-heading\">Phase 2 : isolation et secrets (semaines 5-8)<\/h3>\n\n<ul class=\"wp-block-list\">\n<li>Migrez vers des runners \u00e9ph\u00e9m\u00e8res (ARC pour les environnements Kubernetes, ou l&rsquo;\u00e9quivalent pour votre plateforme).<\/li>\n<li>Mettez en place la f\u00e9d\u00e9ration OIDC pour l&rsquo;authentification aupr\u00e8s des fournisseurs cloud, en \u00e9liminant les identifiants cloud statiques.<\/li>\n<li>Configurez des pools de runners s\u00e9par\u00e9s pour les workloads non fiables (par exemple, les pull requests provenant de forks).<\/li>\n<li>Int\u00e9grez une gestion des secrets externe (Vault, solutions cloud-natives) avec injection juste-\u00e0-temps.<\/li>\n<\/ul>\n\n<h3 class=\"wp-block-heading\">Phase 3 : politiques et contr\u00f4les r\u00e9seau (semaines 9-12)<\/h3>\n\n<ul class=\"wp-block-list\">\n<li>Mettez en place des contr\u00f4les policy-as-code avec OPA\/Conftest pour les manifestes Kubernetes, les plans Terraform et les Dockerfiles.<\/li>\n<li>D\u00e9ployez le filtrage des sorties et des restrictions r\u00e9seau pour les runners de build.<\/li>\n<li>Ajoutez des status checks obligatoires de conformit\u00e9 aux politiques sur les pull requests.<\/li>\n<li>Commencez \u00e0 \u00e9valuer et \u00e0 mettre en place des builds herm\u00e9tiques pour les composants critiques.<\/li>\n<\/ul>\n\n<h3 class=\"wp-block-heading\">Phase 4 : durcissement du d\u00e9ploiement (semaines 13-16)<\/h3>\n\n<ul class=\"wp-block-list\">\n<li>Mettez en place des r\u00e8gles de protection d&rsquo;environnement avec approbations requises et restrictions de branche.<\/li>\n<li>Adoptez GitOps pour les workflows de d\u00e9ploiement, en sortant les identifiants du cluster du pipeline CI.<\/li>\n<li>D\u00e9ployez la livraison progressive (canary ou blue-green) pour les d\u00e9ploiements en production.<\/li>\n<li>Mettez en place la signature et la v\u00e9rification des artifacts sur toute la cha\u00eene du build au d\u00e9ploiement.<\/li>\n<\/ul>\n\n<h3 class=\"wp-block-heading\">Phase 5 : surveillance et am\u00e9lioration continue (en continu)<\/h3>\n\n<ul class=\"wp-block-list\">\n<li>D\u00e9ployez la d\u00e9tection d&rsquo;anomalies pour le comportement des pipelines.<\/li>\n<li>Construisez des tableaux de bord de s\u00e9curit\u00e9 suivant les m\u00e9triques cl\u00e9s de s\u00e9curit\u00e9 des pipelines.<\/li>\n<li>Menez r\u00e9guli\u00e8rement des \u00e9valuations de s\u00e9curit\u00e9 des pipelines et des tests d&rsquo;intrusion.<\/li>\n<li>R\u00e9visez et mettez \u00e0 jour les politiques en fonction des nouvelles menaces et des enseignements tir\u00e9s.<\/li>\n<\/ul>\n\n<h2 class=\"wp-block-heading\">Labs pratiques<\/h2>\n\n<p class=\"wp-block-paragraph\">La th\u00e9orie est essentielle, mais c&rsquo;est l&rsquo;exp\u00e9rience pratique qui fait la diff\u00e9rence. Les labs pratiques suivants vous permettent de mettre en \u0153uvre les techniques de durcissement abord\u00e9es dans ce guide dans des environnements r\u00e9alistes :<\/p>\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/secure-pipelines.com\/fr\/ci-cd-security\/lab-ephemeral-self-hosted-runners-actions-runner-controller\/\"><strong>Runners auto-h\u00e9berg\u00e9s \u00e9ph\u00e9m\u00e8res avec ARC<\/strong><\/a> \u2014 D\u00e9ployez Actions Runner Controller sur Kubernetes, configurez des pods runner \u00e9ph\u00e9m\u00e8res, appliquez des pod security standards et v\u00e9rifiez l&rsquo;isolation des runners.<\/li>\n<li><a href=\"https:\/\/secure-pipelines.com\/fr\/ci-cd-security\/lab-detecting-preventing-secret-leaks-ci-cd-pipelines\/\"><strong>D\u00e9tecter et pr\u00e9venir les fuites de secrets<\/strong><\/a> \u2014 Mettez en place des hooks de pre-commit avec gitleaks, int\u00e9grez le secret scanning dans les pipelines CI, mettez en \u0153uvre l&rsquo;expurgation des logs et r\u00e9agissez aux fuites d\u00e9tect\u00e9es.<\/li>\n<li><a href=\"https:\/\/secure-pipelines.com\/fr\/ci-cd-security\/secrets-management-ci-cd-pipelines-patterns-vault-2\/\"><strong>Sch\u00e9mas de gestion des secrets avec Vault<\/strong><\/a> \u2014 Int\u00e9grez HashiCorp Vault \u00e0 vos pipelines CI\/CD, mettez en \u0153uvre des secrets dynamiques, configurez l&rsquo;authentification bas\u00e9e sur OIDC et mettez en place une rotation automatis\u00e9e.<\/li>\n<li><a href=\"https:\/\/secure-pipelines.com\/fr\/ci-cd-security\/policy-as-code-ci-cd-opa-rego-security-gates-2\/\"><strong>Policy as Code avec OPA et Rego<\/strong><\/a> \u2014 \u00c9crivez des politiques Rego pour les manifestes Kubernetes et les plans Terraform, int\u00e9grez Conftest dans les pipelines CI et mettez en \u0153uvre le contr\u00f4le d&rsquo;admission avec Gatekeeper.<\/li>\n<li><a href=\"https:\/\/secure-pipelines.com\/fr\/ci-cd-security\/separation-of-duties-least-privilege-ci-cd-pipelines\/\"><strong>S\u00e9paration des responsabilit\u00e9s et moindre privil\u00e8ge<\/strong><\/a> \u2014 Configurez des permissions de workflow granulaires, mettez en \u0153uvre la s\u00e9paration entre les \u00e9tapes de build et de d\u00e9ploiement, et mettez en place des r\u00e8gles de protection d&rsquo;environnement.<\/li>\n<\/ul>\n\n<h2 class=\"wp-block-heading\">Outils et ressources<\/h2>\n\n<p class=\"wp-block-paragraph\">Les outils et frameworks suivants soutiennent le durcissement des pipelines dans les domaines couverts par ce guide :<\/p>\n\n<h3 class=\"wp-block-heading\">Isolation des runners<\/h3>\n\n<ul class=\"wp-block-list\">\n<li><strong>Actions Runner Controller (ARC) :<\/strong> gestion de runners \u00e9ph\u00e9m\u00e8res et \u00e0 mise \u00e0 l&rsquo;\u00e9chelle automatique, native \u00e0 Kubernetes, pour GitHub Actions.<\/li>\n<li><strong>Firecracker :<\/strong> microVM l\u00e9g\u00e8res pour des workloads de conteneurs et de fonctions s\u00e9curis\u00e9s et multi-locataires.<\/li>\n<li><strong>gVisor :<\/strong> noyau applicatif fournissant une isolation suppl\u00e9mentaire des conteneurs sans la surcharge d&rsquo;une VM compl\u00e8te.<\/li>\n<li><strong>Kata Containers :<\/strong> VM l\u00e9g\u00e8res qui s&rsquo;int\u00e8grent de fa\u00e7on transparente aux \u00e9cosyst\u00e8mes de conteneurs.<\/li>\n<\/ul>\n\n<h3 class=\"wp-block-heading\">Secrets et identit\u00e9<\/h3>\n\n<ul class=\"wp-block-list\">\n<li><strong>HashiCorp Vault :<\/strong> gestion centralis\u00e9e des secrets avec secrets dynamiques, int\u00e9gration OIDC et journalisation d&rsquo;audit compl\u00e8te.<\/li>\n<li><strong>External Secrets Operator :<\/strong> op\u00e9rateur Kubernetes qui synchronise les secrets des gestionnaires externes vers les secrets Kubernetes.<\/li>\n<li><strong>SPIFFE\/SPIRE :<\/strong> framework d&rsquo;identit\u00e9 de charge de travail pour \u00e9tablir la confiance entre services sans identifiants statiques.<\/li>\n<\/ul>\n\n<h3 class=\"wp-block-heading\">D\u00e9tection de secrets<\/h3>\n\n<ul class=\"wp-block-list\">\n<li><strong>gitleaks :<\/strong> scanner de secrets rapide et l\u00e9ger pour les d\u00e9p\u00f4ts Git et les pipelines CI.<\/li>\n<li><strong>trufflehog :<\/strong> analyse approfondie des secrets dans l&rsquo;historique Git, les buckets S3 et d&rsquo;autres sources de donn\u00e9es.<\/li>\n<li><strong>detect-secrets :<\/strong> l&rsquo;outil de Yelp pour d\u00e9tecter et pr\u00e9venir les secrets dans le code, avec une approche par baseline pour g\u00e9rer les constats.<\/li>\n<\/ul>\n\n<h3 class=\"wp-block-heading\">Application des politiques<\/h3>\n\n<ul class=\"wp-block-list\">\n<li><strong>Open Policy Agent (OPA) :<\/strong> moteur de politiques polyvalent dot\u00e9 du langage de politiques Rego.<\/li>\n<li><strong>Conftest :<\/strong> outil de test de politiques convivial pour les d\u00e9veloppeurs, b\u00e2ti sur OPA, pour les fichiers de configuration structur\u00e9s.<\/li>\n<li><strong>Gatekeeper :<\/strong> contr\u00f4leur de politiques natif Kubernetes, b\u00e2ti sur OPA, pour le contr\u00f4le d&rsquo;admission.<\/li>\n<li><strong>Kyverno :<\/strong> moteur de politiques natif Kubernetes dot\u00e9 d&rsquo;un langage de politiques bas\u00e9 sur YAML.<\/li>\n<\/ul>\n\n<h3 class=\"wp-block-heading\">D\u00e9ploiement et GitOps<\/h3>\n\n<ul class=\"wp-block-list\">\n<li><strong>Argo CD :<\/strong> livraison continue d\u00e9clarative bas\u00e9e sur GitOps pour Kubernetes.<\/li>\n<li><strong>Flux :<\/strong> bo\u00eete \u00e0 outils GitOps pour Kubernetes avec prise en charge de Helm, Kustomize et de la livraison progressive.<\/li>\n<li><strong>Argo Rollouts :<\/strong> strat\u00e9gies de d\u00e9ploiement avanc\u00e9es (canary, blue-green, exp\u00e9rimentation) pour Kubernetes.<\/li>\n<li><strong>Flagger :<\/strong> op\u00e9rateur de livraison progressive qui automatise les d\u00e9ploiements canary avec int\u00e9gration au service mesh.<\/li>\n<\/ul>\n\n<h3 class=\"wp-block-heading\">S\u00e9curit\u00e9 de la cha\u00eene d&rsquo;approvisionnement<\/h3>\n\n<ul class=\"wp-block-list\">\n<li><strong>Sigstore (Cosign, Fulcio, Rekor) :<\/strong> signature et v\u00e9rification sans cl\u00e9 pour les images de conteneurs et les artifacts logiciels.<\/li>\n<li><strong>Framework SLSA :<\/strong> Supply-chain Levels for Software Artifacts \u2014 un framework pour garantir l&rsquo;int\u00e9grit\u00e9 des artifacts logiciels tout au long de la cha\u00eene d&rsquo;approvisionnement.<\/li>\n<li><strong>in-toto :<\/strong> framework pour s\u00e9curiser l&rsquo;int\u00e9grit\u00e9 des cha\u00eenes d&rsquo;approvisionnement logicielles en v\u00e9rifiant chaque \u00e9tape.<\/li>\n<\/ul>\n\n<h2 class=\"wp-block-heading\">Conclusion<\/h2>\n\n<p class=\"wp-block-paragraph\">Les pipelines CI\/CD comptent parmi les composants les plus privil\u00e9gi\u00e9s et les plus sensibles des organisations logicielles modernes. Leur position centrale dans le cycle de vie de la livraison logicielle \u2014 au contact du code source, des secrets, de l&rsquo;infrastructure et des environnements de production \u2014 en fait des cibles attrayantes et impose un durcissement rigoureux.<\/p>\n\n<p class=\"wp-block-paragraph\">Les domaines de durcissement couverts dans ce guide \u2014 isolation des runners, moindre privil\u00e8ge, protection des secrets, restrictions r\u00e9seau, application des politiques, contr\u00f4les de d\u00e9ploiement et surveillance \u2014 forment une strat\u00e9gie compl\u00e8te de d\u00e9fense en profondeur. Aucun contr\u00f4le isol\u00e9 ne suffit \u00e0 lui seul. Chaque couche traite une cat\u00e9gorie de risque diff\u00e9rente, et ensemble elles r\u00e9duisent consid\u00e9rablement la probabilit\u00e9 et l&rsquo;impact d&rsquo;une compromission de pipeline.<\/p>\n\n<p class=\"wp-block-paragraph\">Commencez par les fondamentaux : r\u00e9duisez les permissions, \u00e9liminez les secrets \u00e0 longue dur\u00e9e de vie et passez \u00e0 des runners \u00e9ph\u00e9m\u00e8res. Ajoutez ensuite progressivement l&rsquo;application des politiques, les contr\u00f4les r\u00e9seau et les strat\u00e9gies de d\u00e9ploiement avanc\u00e9es. Utilisez la feuille de route de mise en \u0153uvre comme guide, mais adaptez-la au profil de risque sp\u00e9cifique de votre organisation, \u00e0 votre outillage existant et \u00e0 votre maturit\u00e9 op\u00e9rationnelle.<\/p>\n\n<p class=\"wp-block-paragraph\">Plus important encore, traitez la s\u00e9curit\u00e9 des pipelines comme une pratique continue, et non comme un projet ponctuel. Le paysage des menaces \u00e9volue, de nouvelles techniques d&rsquo;attaque \u00e9mergent et votre infrastructure change au fil du temps. Des \u00e9valuations r\u00e9guli\u00e8res, des politiques mises \u00e0 jour et une surveillance continue garantissent que vos mesures de durcissement restent efficaces \u00e0 mesure que votre organisation et ses menaces \u00e9voluent.<\/p>\n\n<p class=\"wp-block-paragraph\">Explorez les labs pratiques r\u00e9f\u00e9renc\u00e9s tout au long de ce guide pour mettre ces concepts en pratique. Rien ne remplace l&rsquo;exp\u00e9rience directe de la construction, du contournement et du durcissement des pipelines qui livrent votre logiciel au monde.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Les pipelines CI\/CD sont devenus la colonne vert\u00e9brale de la livraison logicielle moderne. Ils compilent le code, ex\u00e9cutent les tests, g\u00e8rent les secrets, provisionnent l&rsquo;infrastructure et d\u00e9ploient les applications en production. Pourtant, ce r\u00f4le central en fait l&rsquo;un des composants les plus privil\u00e9gi\u00e9s \u2014 et les plus vis\u00e9s \u2014 de toute votre pile technologique. Un &#8230; <a title=\"Durcissement des pipelines : comment s\u00e9curiser les environnements de build et de d\u00e9ploiement CI\/CD\" class=\"read-more\" href=\"https:\/\/secure-pipelines.com\/fr\/pipeline-hardening\/pipeline-hardening-secure-ci-cd-build-deployment-environments\/\" aria-label=\"En savoir plus sur Durcissement des pipelines : comment s\u00e9curiser les environnements de build et de d\u00e9ploiement CI\/CD\">Lire la suite<\/a><\/p>\n","protected":false},"author":1,"featured_media":1194,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[51],"tags":[],"post_folder":[],"class_list":["post-448","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-pipeline-hardening"],"_links":{"self":[{"href":"https:\/\/secure-pipelines.com\/fr\/wp-json\/wp\/v2\/posts\/448","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=448"}],"version-history":[{"count":6,"href":"https:\/\/secure-pipelines.com\/fr\/wp-json\/wp\/v2\/posts\/448\/revisions"}],"predecessor-version":[{"id":1195,"href":"https:\/\/secure-pipelines.com\/fr\/wp-json\/wp\/v2\/posts\/448\/revisions\/1195"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/secure-pipelines.com\/fr\/wp-json\/wp\/v2\/media\/1194"}],"wp:attachment":[{"href":"https:\/\/secure-pipelines.com\/fr\/wp-json\/wp\/v2\/media?parent=448"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/secure-pipelines.com\/fr\/wp-json\/wp\/v2\/categories?post=448"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/secure-pipelines.com\/fr\/wp-json\/wp\/v2\/tags?post=448"},{"taxonomy":"post_folder","embeddable":true,"href":"https:\/\/secure-pipelines.com\/fr\/wp-json\/wp\/v2\/post_folder?post=448"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}