[{"data":1,"prerenderedAt":776},["ShallowReactive",2],{"/fr-fr/blog/how-to-choose-the-right-security-scanning-approach":3,"navigation-fr-fr":38,"banner-fr-fr":442,"footer-fr-fr":452,"blog-post-authors-fr-fr-Matt Genelin|Mathias Ewald":662,"blog-related-posts-fr-fr-how-to-choose-the-right-security-scanning-approach":688,"assessment-promotions-fr-fr":728,"next-steps-fr-fr":767},{"id":4,"title":5,"authorSlugs":6,"body":9,"categorySlug":10,"config":11,"content":15,"description":9,"extension":27,"isFeatured":12,"meta":28,"navigation":29,"path":30,"publishedDate":20,"seo":31,"stem":34,"tagSlugs":35,"__hash__":37},"blogPosts/fr-fr/blog/how-to-choose-the-right-security-scanning-approach.yml","How To Choose The Right Security Scanning Approach",[7,8],"matt-genelin","mathias-ewald",null,"security",{"featured":12,"template":13,"slug":14},false,"BlogPost","how-to-choose-the-right-security-scanning-approach",{"tags":16,"category":10,"body":19,"date":20,"heroImage":21,"title":22,"description":23,"authors":24},[10,17,18],"tutorial","CI/CD","L'intégration de scans de sécurité dans votre pipeline CI/CD est cruciale pour maintenir des applications robustes et sécurisées. Mais qui est responsable de ces scans ? Qui doit s'assurer de leur intégration dans chaque pipeline CI/CD pour tous les projets ? Et qui décide d'accepter ou de corriger les vulnérabilités identifiées ? Pour les organisations qui évoluent dans des secteurs réglementés, ces questions sont primordiales.\n\nDans cet article, vous découvrirez comment GitLab [CI/CD](https://about.gitlab.com/fr-fr/topics/ci-cd/) permet à chaque membre du cycle de développement logiciel d'intégrer des scans de sécurité. Vous découvrirez également les avantages et inconvénients des différentes options pour ajouter des scans aux pipelines de projets GitLab. Des exemples de code vous aideront aussi à lancer rapidement des scans de sécurité sur la plateforme [DevSecOps](https://about.gitlab.com/fr-fr/topics/devsecops/ \"DevSecOps\") de GitLab.\n\n> **[&rarr; Essayez GitLab Ultimate et GitLab Duo Enterprise gratuitement.](https://about.gitlab.com/fr-fr/free-trial/devsecops/?utm_medium=blog&utm_source=blog&utm_campaign=eg_emea_x_trial_x_fr_blog_fr)**\n\n## Les bases de la configuration des scans de sécurité\n\nGitLab utilise des [personas fictifs](https://handbook.gitlab.com/handbook/product/personas/#user-personas) pour décrire le membre d'une équipe qui utiliserait généralement une fonctionnalité ou une approche de sécurité donnée. En vous mettant dans la peau d'un **Software Developer (Sasha)**, d'une **Application Security Engineer (Amy)**, ou d'une **Platform Engineer (Priyanka)**, vous pourrez mieux comprendre les besoins de chaque personne dans votre équipe.\n\nGitLab suit un principe de « pipeline par projet », stocké dans le fichier nommé `.gitlab-ci.yml`. Ce fichier contient la définition du [pipeline CI/CD](https://about.gitlab.com/fr-fr/topics/ci-cd/cicd-pipeline/ \"Pipeline CI/CD\") du projet et est géré par [contrôle de version](https://about.gitlab.com/fr-fr/topics/version-control/ \"contrôle de version\") comme n'importe quel autre fichier du projet. Vous découvrirez ces pipelines de projet, ainsi que les pipelines de conformité et les pipelines de politiques. Bien que les pipelines de conformité et les pipelines de politiques fassent également référence aux fichiers YAML dans les projets GitLab, ils ont généralement un nom de fichier différent et servent à des fins différentes.\n\nSi vous connaissez déjà les scans de sécurité dans GitLab, les pipelines de sécurité disponibles vous paraîtront clairs. Nous aborderons chacune des approches en fonction des critères suivants :\n\n- **Facilité d'utilisation :** à quel point est-il simple d'ajouter des scans de sécurité aux pipelines de projet ? Est-ce une tâche pour Sasha, ou une tâche qu'Amy et Priyanka devraient gérer ?\n\n- **Personnalisation :** à quel niveau peut-on personnaliser les configurations des scanners avec cette approche ? Les configurations par défaut sont utiles et couvrent un large éventail de besoins clients, mais elles nécessitent toujours des ajustements.\n\n- **Application :** cette approche convient-elle aux entreprises opérant dans des secteurs réglementés ou ayant des politiques globales en place ? Pouvons-nous garantir que chaque projet pertinent exécute le scanner X avec la configuration Y ?\n\n## Le mot-clé `include`\n\nLes [mots-clés `include` des pipelines de projet GitLab](https://docs.gitlab.com/ee/ci/yaml/includes.html) permettent d'intégrer des pipelines externes dans le pipeline de projet `.gitlab-ci.yml`. Ce mécanisme est similaire à l'inclusion d'une bibliothèque dans de nombreux langages de programmation. Cette fonctionnalité puissante permet d'intégrer de façon transparente vos propres templates, ainsi que des templates fournis par GitLab, pour servir d'éléments de base dans vos pipelines. Les mots-clés `include` peuvent être utilisés dans les pipelines de projet ou d'autres fichiers de pipeline. Les pipelines de scan de sécurité sont des pipelines externes souvent inclus dans les pipelines de projet GitLab.\n\nVoici les types courants de mots-clés `include`, qui utilisent l'exemple du scanner de sécurité.\n\n### Templates\n\nGitLab propose des [templates](https://gitlab.com/gitlab-org/gitlab/-/tree/master/lib/gitlab/ci/templates/Jobs) prêts à l'emploi qui peuvent être inclus dans un pipeline de projet pour faciliter l'ajout de divers éléments préconçus par les équipes. Voici un exemple de code :\n```yaml\ninclude:\n  - template: Jobs/Secret-Detection.gitlab-ci.yml\n  - template: Jobs/SAST.gitlab-ci.yml\n  - template: Jobs/Dependency-Scanning.gitlab-ci.yml\n  - template: Jobs/Container-Scanning.gitlab-ci.yml\n\n```\nCe code inclut les templates GitLab pour la [détection des secrets](https://docs.gitlab.com/ee/user/application_security/secret_detection/), les [tests statiques de sécurité des applications (SAST)](https://docs.gitlab.com/ee/user/application_security/sast/), l'[analyse des dépendances](https://docs.gitlab.com/ee/user/application_security/dependency_scanning/), et l'[analyse des conteneurs](https://docs.gitlab.com/ee/user/application_security/container_scanning/), le tout en seulement cinq lignes de code.\n\nPour modifier le comportement des jobs inclus via des templates, vous pouvez soit utiliser des variables, soit utiliser les [capacités de merge de propriétés de GitLab](https://docs.gitlab.com/ee/ci/yaml/includes.html#merge-method-for-include).\n\nVous trouverez ci-dessous un exemple de modification du pipeline d'analyse des conteneurs de GitLab à l'aide de variables. Le [template d'analyse des conteneurs](https://gitlab.com/gitlab-org/gitlab/-/blob/59f08760feaab1eb0489f694d4f28408af9c2e8d/lib/gitlab/ci/templates/Jobs/Container-Scanning.gitlab-ci.yml) doit connaître l'emplacement de l'image et utilise la variable `CS_IMAGE` pour ce faire, comme documenté dans le code du template ci-dessus.\n```yaml\nvariables:\n  CS_IMAGE: \"$CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA\"\n\ninclude:\n  - template: Jobs/Container-Scanning.gitlab-ci.yml\n\n```\nLes variables du pipeline de projet sont disponibles pour les template de jobs inclus en définissant la variable `CS_IMAGE` avant le template de pipeline inclus. Le template d'analyse des conteneurs hérite de la valeur de la variable `CS_IMAGE`.\n\nSi nous voulions apporter des modifications à la [propriété `allow_failure` définie](https://gitlab.com/gitlab-org/gitlab/-/blob/59f08760feaab1eb0489f694d4f28408af9c2e8d/lib/gitlab/ci/templates/Jobs/Container-Scanning.gitlab-ci.yml#L38), nous devrions fusionner les propriétés, car les templates de jobs n'utilisent aucune variable pour la valeur. (La propriété `allow_failure` est une propriété généralement disponible pour chaque job de pipeline GitLab. Consultez notre [documentation](https://docs.gitlab.com/ee/ci/yaml/#allow_failure) pour plus de détails.)\n\nDans cet exemple, `allow_failure` est défini sur `false`, ce qui signifie que l'ensemble du pipeline s'arrête en cas d'échec de l'analyse des conteneurs : tout conteneur non scanné ne peut avancer dans le pipeline.\n```yaml\ninclude:\n  # Includes a job called \"container_scanning\"\n  - template: Jobs/Container-Scanning.gitlab-ci.yml\n\n# Define a job with same name for merging\ncontainer_scanning:\n  allow_failure: false\n\n```\nGitLab charge le template de job et, comme défini dans le code du template, enregistre le job `container_scanning`. Comme la définition du pipeline déclare un autre job avec ce nom, GitLab fusionne cette spécification avec le job déjà enregistré.\n\nBien que cette fonctionnalité offre de nombreuses possibilités, elle empêche également de protéger certaines propriétés contre l'écrasement. Nous n'en sommes qu'au point de modification du pipeline de projet, et nous ne pouvons contrôler ce paramètre. Mais vous verrez plus tard que cela peut poser problème lorsque la sécurité doit être appliquée sur un projet.\n\n### Composants\n\nLes templates constituent un excellent point de départ pour partager des pipelines GitLab réutilisables. Pour abstraire davantage le code réutilisable dans l'ensemble d'une organisation ou d'une instance GitLab, GitLab a introduit les [composants](https://docs.gitlab.com/ee/ci/components/). Les composants sont la prochaine étape logique dans l'évolution des pipelines de GitLab. Ils sont conçus pour simplifier la création et l'utilisation de blocs fonctionnels dans les pipelines, ou même pour empaqueter et livrer des pipelines entiers si nécessaire. Ils offrent une interface bien définie, qui accepte des « intrants » pour la configuration. Les composants sont complètement isolés, ce qui en fait d'excellents candidats pour partager le travail au sein d'une organisation et pour servir d'éléments de base consultables et réutilisables.\n \nLes équipes de développement peuvent utiliser le [catalogue CI/CD](https://gitlab.com/explore/catalog) pour parcourir et rechercher la collection de composants GitLab disponibles pour le public. Ces composants sont officiellement créés et maintenus par GitLab. GitLab utilise le catalogue CI/CD [pour publier nos composants livrés](https://gitlab.com/components) tels que les scanners de sécurité aux côtés des composants fournis par la communauté.\n\nLes composants sont consommés de manière similaire aux templates via le mot-clé `include`. Dans un exemple ci-dessus, nous avons montré comment le job d'analyse des conteneurs avait besoin de connaître l'emplacement de l'image. Cet « intrant » utilise le composant `cs_image` pour l'[analyse des conteneurs](https://gitlab.com/components/container-scanning/-/blob/19fd5b83bc631cb9890b4fadb08d31b3150853ce/templates/container-scanning.yml). La configuration équivalente à l'exemple précédent est la suivante :\n```yaml\ninclude:\n  - component: $CI_SERVER_FQDN/components/sast/sast@2.0.2\n  - component: $CI_SERVER_FQDN/components/dependency-scanning/cargo@0.2.0\n  - component: $CI_SERVER_FQDN/components/secret-detection/secret-detection@1.1.2\n  - component: $CI_SERVER_FQDN/components/container-scanning/container-scanning@4.1.0\n    inputs:\n      cs_image: \"$CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA\"\n\n```\nDans cet exemple, le composant SAST est épinglé à la version 2.0.2, le composant d'analyse des dépendances à la version 0.2.0, le composant de détection des secrets à la version 1.1.2 et le composant d'analyse des conteneurs à la version 4.1.0. `~latest` et [d'autres tags sont disponibles](https://docs.gitlab.com/ee/ci/components/#component-versions) pour une utilisation de composants de pointe et d'autres besoins de développement.\n\nQue vous utilisiez des templates ou des composants, votre pipeline pourrait ressembler à l'image ci-dessous. Les quatre premiers jobs de l'étape de test sont le résultat des quatre instructions avec `include` dans le code ci-dessus.\n\n![Un exemple de pipeline](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097984/Blog/Content%20Images/Blog/Content%20Images/image1_aHR0cHM6_1750097983863.png)\n\n### Avantages et inconvénients de l'utilisation du mot-clé `include`\n\n#### Facilité d'utilisation\n\nL'un des avantages de l'utilisation du mot-clé `include` de pipeline dans GitLab est sa facilité d'utilisation. Avec seulement six lignes de code, nous avons inclus quatre scanners de sécurité couramment utilisés. Toute la logique et la configuration complexes sont gérées au sein des templates ou des composants. Ainsi, Sasha gagne du temps grâce à une solution prête à l'emploi.\n\n#### Personnalisation\n\nBien que les templates offrent une flexibilité maximale (variables et merge), il est important de ne pas oublier qu'elles impliquent de grandes responsabilités. La flexibilité des templates permet une personnalisation étendue, mais nécessite une gestion et une supervision minutieuses pour éviter des résultats inattendus.\n\nEn revanche, les composants fournissent un mécanisme plus structuré pour la création, le partage et la maintenance d'éléments de base pour un public plus large. Même s'ils sont moins personnalisables, les composants améliorent la stabilité et la fiabilité, et constituent une fonctionnalité précieuse, réutilisable et reproductible.\n\n#### Application\n\nComme le nom *include* le suggère, le pipeline de projet GitLab doit inclure des templates ou des composants. Bien que les templates soient simples à utiliser, Amy et Priyanka ne peuvent pas être sûres que Sasha les a inclus (correctement). Il est donc nécessaire d'appliquer une utilisation des scanners.\n\n## Les frameworks de conformité\n\nGitLab a identifié l'écart entre l'application des scans de sécurité dans les pipelines de projet et le besoin de [respecter les frameworks de conformité réglementaire](https://about.gitlab.com/blog/meet-regulatory-standards-with-gitlab/) tels que PCI DSS, NIST et bien d'autres. L'introduction des frameworks de conformité en tant que fonctionnalité répond précisément à ce défi.\n\nÀ première vue, un framework de conformité dans GitLab n'est qu'un label attaché à un projet et serait généralement nommé d'après le framework réglementaire qu'il est censé implémenter. Tout prend forme avec le lien entre ce label et le fichier YAML de pipeline de conformité, qui est responsable de la mise en œuvre des étapes nécessaires pour assurer la conformité.\n\nLe mécanisme est simple : chaque fois que le pipeline de projet est déclenché, GitLab exécute le pipeline de conformité à la place. Ce dernier s'exécute avec les [variables CI/CD](https://docs.gitlab.com/ee/ci/variables/) et les [variables CI/CD prédéfinies](https://docs.gitlab.com/ee/ci/variables/predefined_variables.html) du pipeline de projet.\n\nDeux principaux modèles de conception émergent : un « pipeline englobant », où le pipeline de conformité inclut le pipeline de projet, et un « pipeline de remplacement », où il ne l'inclut pas.\n\n**Remarque :** les pipelines de conformité ont été dépréciés dans la version 17.3 de GitLab et devraient être supprimés dans la version 19.0. À ce stade, nous ne recommandons pas d'implémenter cette approche pour les nouvelles plateformes de développement. Cependant, si vous les utilisez déjà, ne manquez pas de consulter les sections ci-dessous.\n\n### Pipelines englobants\n\nDans cette approche, le pipeline de conformité définit ses propres jobs selon des besoins de conformité spécifiques. Il inclut le pipeline de projet de la même manière que les templates dans la section précédente. Cette configuration est possible car les variables CI/CD prédéfinies proviennent du pipeline de projet et permettent au système d'identifier l'emplacement de la définition du pipeline pour l'inclure.\n\nVoici un exemple de ce à quoi pourrait ressembler un pipeline de conformité simple.\n```yaml\ninclude:\n  - component: $CI_SERVER_FQDN/components/sast/sast@2.0.2\n  - component: $CI_SERVER_FQDN/components/dependency-scanning/cargo@0.2.0\n  - component: $CI_SERVER_FQDN/components/secret-detection/secret-detection@1.1.2\n  - component: $CI_SERVER_FQDN/components/container-scanning/container-scanning@4.1.0\n  - project: '$CI_PROJECT_PATH'\n    file: '$CI_CONFIG_PATH'\n    ref: '$CI_COMMIT_SHA'\n\n```\nLes trois dernières lignes incluent le pipeline de projet basé sur les variables disponibles.\n\n### Pipelines de remplacement\n\nContrairement aux pipelines englobants, qui incluent le pipeline de projet, les pipelines de remplacement l'ignorent entièrement et n'exécutent que leurs propres jobs. Ce type de pipeline définit chaque étape et englobe tous les jobs nécessaires pour construire, tester et déployer l'application.\n\nVoici un pipeline de conformité fictif qui illustre cette approche.\n```yaml\nstages: [\"build\", \"test\", \"deploy\"]\n\ninclude:\n  - component: $CI_SERVER_FQDN/components/sast/sast@2.0.2\n  - component: $CI_SERVER_FQDN/components/dependency-scanning/cargo@0.2.0\n  - component: $CI_SERVER_FQDN/components/secret-detection/secret-detection@1.1.2\n  - component: $CI_SERVER_FQDN/components/container-scanning/container-scanning@4.1.0\n\nbuild-job:\n  stage: build\n  script: echo \"Building the container image\"\n\ntest-job:\n  stage: test\n  script: echo \"Running unit tests\"\n\ndeploy-job:\n  stage: deploy\n  script: echo \"Deploying app\"\n\n```\n### Avantages et inconvénients des frameworks de conformité\n\n#### Facilité d'utilisation\n\nBien que les frameworks de conformité ne soient pas très compliqués, ils ne sont pas aussi simples et directs que les mots-clés `include`. Ils sont destinés à être écrits et attribués aux projets par Amy et Priyanka, qui doivent maintenant interagir avec le code YAML du pipeline. Un framework doit être déclaré dans l'espace de nommage principal, des pipelines de conformité doivent être créés et maintenus, et les frameworks de conformité doivent être attachés aux bons projets.\n\n#### Personnalisation\n\nAmy et Priyanka sont les auteures des pipelines de conformité. Comme Sasha dans la section précédente sur les mots-clés `include`, elles ont un contrôle total sur ce qu'elles incluent et comment elles l'incluent : elles peuvent personnaliser les jobs de conformité comme les scanners de sécurité.\n\n#### Application\n\nL'application des pipelines soulève la question de savoir si les équipes de développement peuvent altérer les jobs de sécurité. Dans un environnement avec une forte séparation des tâches, cette nuance nécessite une attention supplémentaire. Pour répondre à cette question, nous devons examiner chaque modèle séparément :\n\n##### Pipelines englobants\n\nComme nous l'avons vu précédemment, les pipelines de projet sont inclus dans les pipelines de conformité. En plus des variables CI/CD au niveau du groupe ou du projet, chaque élément de ce pipeline de projet doit être considéré comme une menace potentielle pour le pipeline de conformité, en particulier les variables et les jobs. Ces derniers peuvent et vont influencer le comportement des jobs de sécurité s'ils sont utilisés de manière malveillante.\n\nVoici un exemple simple pour illustrer le problème.\n\nPipeline de conformité :\n```yaml\ninclude:\n  - template: Jobs/SAST.gitlab-ci.yml\n  - template: Jobs/Secret-Detection.gitlab-ci.yml\n  - project: '$CI_PROJECT_PATH'\n    file: '$CI_CONFIG_PATH'\n    ref: '$CI_COMMIT_SHA'\n\n```\nPipeline de projet :\n```yaml\nvariables:\n  SECRET_DETECTION_DISABLED: true\n\nsemgrep-sast:\n  rules:\n    - when: never\n\n```\nCe pipeline de projet déclare la variable `SECRET_DETECTION_DISABLED` (également possible via des variables CI/CD au niveau du projet ou du groupe), qui est évaluée dans le template de détection de secrets inclus. De plus, les trois dernières lignes utilisent le mécanisme de merge vu précédemment, qui n'exécute pas le job.\n\nLes deux remplacements pourraient être évités en utilisant des composants. Ces derniers peuvent être sujets à de telles attaques en raison des valeurs par défaut de leurs intrants, qui utilisent aussi souvent des variables. Voyons comment cette vulnérabilité pourrait être exploitée.\n\nPipeline de conformité :\n```yaml\ninclude:\n  - component: $CI_SERVER_FQDN/components/sast/sast@2.0.2\n  - component: $CI_SERVER_FQDN/components/secret-detection/secret-detection@1.1.2\n  - project: '$CI_PROJECT_PATH'\n    file: '$CI_CONFIG_PATH'\n    ref: '$CI_COMMIT_SHA'\n\n```\nPipeline de projet :\n```yaml\nvariables:\n  CI_TEMPLATE_REGISTRY_HOST: \"docker.io\"\n\n```\nPour comprendre ce fonctionnement, regardez la [ligne 6 du composant du scanner SAST](https://gitlab.com/components/sast/-/blob/main/templates/sast.yml?ref_type=heads#L6) :\n```yaml\nspec:\n  inputs:\n    stage:\n      default: test\n    image_prefix:\n      default: \"$CI_TEMPLATE_REGISTRY_HOST/security-products\"\n\n```\nL'intrant `image_prefix` utilise `CI_TEMPLATE_REGISTRY_HOST` pour construire la valeur par défaut. En définissant cette variable sur une fausse valeur de la même manière que nous avons défini `SECRET_DETECTION_DISABLED` sur `true` auparavant, Sasha peut faire en sorte que le job charge une mauvaise image et casse les SAST.\n\nPour empêcher cette capacité de remplacement par une personne ayant un rôle de développeur, privilégiez les composants au lieu des templates. Vous pourrez ainsi corriger de nombreuses failles introduites par les développeurs. Pour garantir la conformité, codez en dur les valeurs pour les intrants des composants.\n\n##### Pipelines de remplacement\n\nLes développeurs ne peuvent pas injecter du code de pipeline réel dans le pipeline de conformité. Cependant, les pipelines de conformité s'exécutent avec les variables CI/CD du projet. Par conséquent, toute variable au niveau du groupe ou du projet pourrait modifier le comportement du pipeline de conformité. Avec `SECRET_DETECTION_DISABLED` défini sur `true` dans les variables CI/CD du projet, le pipeline de conformité suivant peut être modifié à nouveau :\n```yaml\nstages: [\"build\", \"test\", \"deploy\"]\n\ninclude:\n  - template: Jobs/SAST.gitlab-ci.yml\n  - template: Jobs/Secret-Detection.gitlab-ci.yml\n\nbuild-job: ...\ntest-job: ...\ndeploy-job: ...\n```\nLes composants peuvent résoudre ce problème, mais, comme auparavant, les intrants des composants peuvent utiliser des variables CI/CD définies par les développeurs. Les auteurs de pipelines de conformité doivent identifier et gérer ces situations.\n\n## Politiques\n\nLes lacunes des pipelines de conformité ont entraîné la création de [politiques](https://docs.gitlab.com/ee/user/application_security/policies/). GitLab a introduit les politiques comme la voie à suivre en matière de gestion de la conformité. Les auteurs stockent un ensemble de politiques dans un projet séparé sous forme de fichiers YAML et les appliquent aux projets au niveau du groupe ou du projet. Amy et Priyanka peuvent cibler des projets individuels avec des exigences spécifiques, mais aussi assurer la conformité dans toute l'organisation. L'accès au projet contenant les politiques peut être contrôlé au sein du projet de politiques et audité dans GitLab.\n\nIl existe différents types de politiques pour différents usages. Ceux qui nous intéressent sont les politiques d'exécution des scans (SEP) et les politiques d'exécution des pipelines (PEP).\n### Politiques d'exécution des scans\nComme leur nom l'indique, les SEP exigent qu'un scan particulier, ou un ensemble de scans, soit exécuté dans le cadre du pipeline de projet et injectent les jobs de scan respectifs dans les pipelines des projets associés. Elles incluent le [template](https://gitlab.com/gitlab-org/gitlab/-/tree/master/lib/gitlab/ci/templates/Jobs) respectif dans le pipeline selon les variables et les règles définies par Amy et Priyanka.\n\nGitLab aide les auteurs de politiques avec une interface utilisateur complète en plus d'un workflow [Git](https://about.gitlab.com/fr-fr/blog/2024/10/08/what-is-git/ \"Qu'est-ce que Git ?\") basé sur YAML. La capture d'écran et l'extrait de code suivants illustrent un exemple très basique d'une SEP :\n![Exemple de politiques d'exécution des scans](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097984/Blog/Content%20Images/Blog/Content%20Images/image2_aHR0cHM6_1750097983864.png)\n```yaml\nname: Secret Scanner\ndescription: ''\nenabled: true\nactions:\n- scan: secret_detection\nrules:\n- type: pipeline\n  branches:\n  - \"*\"\n\n```\nPour plus de détails sur les paramètres des SEP dans l'interface utilisateur et YAML, veuillez vous référer à notre [documentation](https://docs.gitlab.com/ee/user/application_security/policies/scan_execution_policies.html).\n\n#### Avantages et inconvénients des politiques d'exécution des scans\n\n##### Facilité d'utilisation\n\nLes SEP sont un mécanisme léger et facile à utiliser qui applique la sécurité sur les [pipelines CI/CD](https://about.gitlab.com/fr-fr/topics/ci-cd/cicd-pipeline/ \"Qu'est-ce qu'un pipeline CI/CD ?\") existants et nouveaux dans l'organisation ou à un niveau granulaire. Le support de l'interface utilisateur en fait un outil viable pour tous les personas pertinents.\n\n##### Personnalisation\n\nLes SEP sont limitées aux jobs de scanner prédéfinis, et il n'est pas possible d'étendre cette liste avec des jobs personnalisés à ce stade. Cette limitation peut être restrictive pour les équipes avec des exigences de scan uniques.\n\n##### Application\n\nUne fois qu'une SEP est appliquée à un projet (directement ou indirectement), Sasha n'a aucun moyen de se débarrasser de ce job de scan. Cependant, il peut y avoir des moyens (intentionnels ou non) de manipuler le comportement du job de scan.\n\nLes jobs injectés via les SEP sont généralement réceptifs aux variables CI/CD et respectent les règles générales de [précédence des variables](https://docs.gitlab.com/ee/ci/variables/index.html#cicd-variable-precedence). Pour cette injection, les politiques intègrent une logique qui refuse les modifications de certaines variables prédéfinies comme décrit [ici](https://docs.gitlab.com/ee/user/application_security/policies/scan_execution_policies.html#cicd-variables) et refuse généralement la configuration de variables qui suivent certains templates tels que `_DISABLED` ou `_EXCLUDED_PATHS`.\n\nMalgré ces mesures de sécurité, une utilisation inconsidérée des politiques peut entraîner des falsifications: dans notre test, nous avons pu définir une variable CI/CD au niveau du projet `SECURE_ANALYZERS_PREFIX` sur une mauvaise valeur (un emplacement inexistant). Comme vous pouvez le voir [ici](https://gitlab.com/gitlab-org/gitlab/-/blob/a2d4b8df0095c1363a105a1fa212daf227eca063/lib/gitlab/ci/templates/Jobs/Secret-Detection.gitlab-ci.yml), le template de détection des secrets l'utilise pour construire l'emplacement de l'image du scanner.\n\nBien que le job de scan soit inclus dans l'exécution du pipeline, il échoue très tôt et, par conséquent, ne fournit aucun résultat. En raison de la [configuration](https://gitlab.com/gitlab-org/gitlab/-/blob/a2d4b8df0095c1363a105a1fa212daf227eca063/lib/gitlab/ci/templates/Jobs/Secret-Detection.gitlab-ci.yml#L18) `allow_failure: true`, le pipeline continuera à s'exécuter et finira par exécuter un job de déploiement.\n\nÉtant donné que les variables SEP ont la plus haute précédence parmi les variables, il existe une solution facile pour réduire la surface d'attaque de la politique : codez simplement en dur la valeur correcte dans votre fichier YAML de politique ou via l'interface utilisateur :\n```yaml\n- name: Secret Scanner\n  actions:\n  - scan: secret_detection\n    variables:\n      SECURE_ANALYZERS_PREFIX: registry.gitlab.com/security-products\n\n```\n### Politiques d'exécution des pipelines\n\nLes SEP permettent l'injection d'un ensemble de jobs liés à la sécurité dans n'importe quel pipeline de projet. En revanche, les PEP appliquent des configurations de pipeline entières aux projets et offrent beaucoup plus de flexibilité en ce qui concerne la personnalisation des contraintes de sécurité.\n\nIl existe deux méthodes pour implémenter ces politiques, appelées « actions » : `inject` et `override`. Ces actions fonctionnent de manière similaire aux templates que nous avons vus dans la section des frameworks de conformité et fournissent des moyens flexibles d'améliorer et d'appliquer les normes de sécurité au sein du workflow de développement.\n\n#### Injection de pipelines\n\nL'injection de pipelines implique l'ajout des jobs et autres éléments définis dans le pipeline de politique dans le pipeline de projet. Actuellement, les jobs ne doivent être injectés que dans des étapes réservées, à savoir `.pipeline-policy-pre` et `.pipeline-policy-post` pour éviter des résultats imprévisibles.\n\nGitLab gère en toute efficacité les conflits de nommage entre les jobs ou les variables dans les pipelines de politique et de projet en construisant chaque pipeline de manière isolée avant de les combiner. Cette approche garantit la transparence du processus d'intégration et n'impacte pas les workflows ou les configurations existants.\n\n![Scan de sécurité – image4](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097984/Blog/Content%20Images/Blog/Content%20Images/image4_aHR0cHM6_1750097983865.png)\n\nLa capture d'écran ci-dessus montre un exemple de pipeline de politique injecté. Les jobs du pipeline de projet contiennent le préfixe `prj-` pour faciliter l'identification.\n\n#### Pipelines de remplacement\n\nDans cette approche, le pipeline de projet est entièrement remplacé par le pipeline de politique. Cette méthode est similaire aux pipelines de conformité qui n'incluent pas le fichier `.gitlab-ci.yml` du projet. Malgré le remplacement, les pipelines s'exécutent en utilisant les variables CI/CD du projet et maintiennent la cohérence avec les configurations spécifiques au projet. Le pipeline de conformité que nous avons utilisé précédemment peut également servir de pipeline de politique :\n```yaml\nstages: [\"build\", \"test\", \"deploy\"]\n\ninclude:\n  - component: $CI_SERVER_FQDN/components/sast/sast@2.0.2\n  - component: $CI_SERVER_FQDN/components/dependency-scanning/cargo@0.2.0\n  - component: $CI_SERVER_FQDN/components/secret-detection/secret-detection@1.1.2\n  - component: $CI_SERVER_FQDN/components/container-scanning/container-scanning@4.1.0\n\nbuild-job:\n  stage: build\n  script: echo \"Building the container image\"\n\ntest-job:\n  stage: test\n  script: echo \"Running unit tests\"\n\ndeploy-job:\n  stage: deploy\n  script: echo \"Deploying app\"\n\n```\nL'image ci-dessous montre un pipeline légèrement plus complet que le pipeline fictif ci-dessus :\n\n![Pipeline plus complet](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097984/Blog/Content%20Images/Blog/Content%20Images/image3_aHR0cHM6_1750097983866.png)\n\n**Remarque :** cette approche ne fonctionne actuellement pas avec les SEP.\n\nCependant, l'existence d'un Dockerfile n'est pas toujours un indicateur valide, car les équipes peuvent développer sans Dockerfile en utilisant Cloud Native Buildpacks, Heroku Buildpacks, Kaniko ou d'autres outils. Les pipelines gérés ne rencontrent pas ce défi, car ils sont plus contrôlés et centralisés.\n\n### Projets avec plusieurs images de conteneurs\n\nPour les projets qui produisent plusieurs images de conteneurs, plusieurs jobs de scan de conteneurs seraient nécessaires pour une couverture adéquate. Cette approche soulève les mêmes questions qu'auparavant : « Comment savons-nous qu'il y en a plusieurs ? » et « La source de cette information est-elle digne de confiance ? ». Si nous voulions nous appuyer sur l'existence de `Dockerfile`, une [approche dynamique](https://docs.gitlab.com/ee/ci/pipelines/downstream_pipelines.html#dynamic-child-pipelines) avec un job de scan de conteneurs pour chaque `Dockerfile` détecté serait nécessaire.\n\n## Utilisez les scans de sécurité\n\nDans cet article, vous avez découvert diverses approches pour ajouter des scans de sécurité aux pipelines CI/CD et exploré leur facilité d'utilisation, leur personnalisation et leur application. Vous avez appris qu'un auteur de pipeline chargé de la conformité du projet doit garder quelques éléments à l'esprit pendant le processus pour éviter des surprises par la suite. Nous vous recommandons de créer un petit espace de test sur votre instance GitLab, puis d'exécuter quelques tests pour reproduire les principaux points de cet article.\n\nGitLab fournit une assistance en fonction des besoins. Toutes les approches sont faciles à implémenter grâce à la fonctionnalité intégrée de la plateforme. Il existe plusieurs façons de sécuriser vos jobs de scan, et si vous avez des questions, n'hésitez pas à ouvrir un ticket auprès de notre assistance.\n\n**Testez les scans de sécurité dès aujourd'hui !**\n> **[&rarr; Essayez GitLab Ultimate et GitLab Duo Enterprise gratuitement.](https://about.gitlab.com/fr-fr/free-trial/devsecops/?utm_medium=blog&utm_source=blog&utm_campaign=eg_emea_x_trial_x_fr_blog_fr)**","2025-01-02","https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097969/Blog/Hero%20Images/Blog/Hero%20Images/AdobeStock_282096522_securitycompliance.jpeg_1750097968823.jpg","Scans de sécurité : comment choisir la bonne approche","Découvrez les principes de base, les configurations, ainsi que les avantages et les inconvénients des scans de sécurité.",[25,26],"Matt Genelin","Mathias Ewald","yml",{},true,"/fr-fr/blog/how-to-choose-the-right-security-scanning-approach",{"config":32,"ogImage":21,"title":22,"description":33},{"noIndex":12},"GitLab propose plusieurs méthodes de scan pour les pipelines CI/CD. Découvrez les bases, configurations et avantages/inconvénients de chaque approche.","fr-fr/blog/how-to-choose-the-right-security-scanning-approach",[10,17,36],"cicd","oqJK6prVhjGP9ByaGW9-PkASINUq_1dt470gzba7-D0",{"data":39},{"logo":40,"freeTrial":45,"sales":50,"login":55,"items":60,"search":369,"minimal":404,"duo":423,"pricingDeployment":432},{"config":41},{"href":42,"dataGaName":43,"dataGaLocation":44},"/fr-fr/","gitlab logo","header",{"text":46,"config":47},"Commencer un essai gratuit",{"href":48,"dataGaName":49,"dataGaLocation":44},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/fr-fr&glm_content=default-saas-trial/","free trial",{"text":51,"config":52},"Contacter l'équipe commerciale",{"href":53,"dataGaName":54,"dataGaLocation":44},"/fr-fr/sales/","sales",{"text":56,"config":57},"Connexion",{"href":58,"dataGaName":59,"dataGaLocation":44},"https://gitlab.com/users/sign_in/","sign in",[61,88,184,189,290,350],{"text":62,"config":63,"cards":65},"Plateforme",{"dataNavLevelOne":64},"platform",[66,72,80],{"title":62,"description":67,"link":68},"La plateforme d'orchestration intelligente pour le DevSecOps",{"text":69,"config":70},"Découvrir notre plateforme",{"href":71,"dataGaName":64,"dataGaLocation":44},"/fr-fr/platform/",{"title":73,"description":74,"link":75},"GitLab Duo Agent Platform","L'IA agentique pour l'ensemble du cycle de développement logiciel",{"text":76,"config":77},"Découvrir GitLab Duo",{"href":78,"dataGaName":79,"dataGaLocation":44},"/fr-fr/gitlab-duo-agent-platform/","gitlab duo agent platform",{"title":81,"description":82,"link":83},"Choisir GitLab","Découvrez les principales raisons pour lesquelles les entreprises choisissent GitLab",{"text":84,"config":85},"En savoir plus",{"href":86,"dataGaName":87,"dataGaLocation":44},"/fr-fr/why-gitlab/","why gitlab",{"text":89,"left":29,"config":90,"link":92,"lists":96,"footer":166},"Produit",{"dataNavLevelOne":91},"solutions",{"text":93,"config":94},"Voir toutes les solutions",{"href":95,"dataGaName":91,"dataGaLocation":44},"/fr-fr/solutions/",[97,121,144],{"title":98,"description":99,"link":100,"items":105},"Automatisation","CI/CD et automatisation pour accélérer le déploiement",{"config":101},{"icon":102,"href":103,"dataGaName":104,"dataGaLocation":44},"AutomatedCodeAlt","/fr-fr/solutions/delivery-automation/","automated software delivery",[106,109,112,117],{"text":18,"config":107},{"href":108,"dataGaLocation":44,"dataGaName":18},"/fr-fr/solutions/continuous-integration/",{"text":73,"config":110},{"href":78,"dataGaLocation":44,"dataGaName":111},"gitlab duo agent platform - product menu",{"text":113,"config":114},"Gestion du code source",{"href":115,"dataGaLocation":44,"dataGaName":116},"/fr-fr/solutions/source-code-management/","Source Code Management",{"text":118,"config":119},"Livraison de logiciels automatisée",{"href":103,"dataGaLocation":44,"dataGaName":120},"Automated software delivery",{"title":122,"description":123,"link":124,"items":129},"Sécurité","Livrez du code plus rapidement sans compromettre la sécurité",{"config":125},{"href":126,"dataGaName":127,"dataGaLocation":44,"icon":128},"/fr-fr/solutions/application-security-testing/","security and compliance","ShieldCheckLight",[130,134,139],{"text":131,"config":132},"Tests de sécurité des applications",{"href":126,"dataGaName":133,"dataGaLocation":44},"Application security testing",{"text":135,"config":136},"Sécurité de la chaîne d'approvisionnement logicielle",{"href":137,"dataGaLocation":44,"dataGaName":138},"/fr-fr/solutions/supply-chain/","Software supply chain security",{"text":140,"config":141},"Conformité logicielle",{"href":142,"dataGaName":143,"dataGaLocation":44},"/fr-fr/solutions/software-compliance/","Software Compliance",{"title":145,"link":146,"items":151},"Mesures",{"config":147},{"icon":148,"href":149,"dataGaName":150,"dataGaLocation":44},"DigitalTransformation","/fr-fr/solutions/visibility-measurement/","visibility and measurement",[152,156,161],{"text":153,"config":154},"Visibilité et mesures",{"href":149,"dataGaLocation":44,"dataGaName":155},"Visibility and Measurement",{"text":157,"config":158},"Gestion de la chaîne de valeur",{"href":159,"dataGaLocation":44,"dataGaName":160},"/fr-fr/solutions/value-stream-management/","Value Stream Management",{"text":162,"config":163},"Données d'analyse et informations clés",{"href":164,"dataGaLocation":44,"dataGaName":165},"/fr-fr/solutions/analytics-and-insights/","Analytics and insights",{"title":167,"items":168},"GitLab pour",[169,174,179],{"text":170,"config":171},"Entreprises",{"href":172,"dataGaLocation":44,"dataGaName":173},"/fr-fr/enterprise/","enterprise",{"text":175,"config":176},"PME",{"href":177,"dataGaLocation":44,"dataGaName":178},"/fr-fr/small-business/","small business",{"text":180,"config":181},"Secteur public",{"href":182,"dataGaLocation":44,"dataGaName":183},"/fr-fr/solutions/public-sector/","public sector",{"text":185,"config":186},"Tarifs",{"href":187,"dataGaName":188,"dataGaLocation":44,"dataNavLevelOne":188},"/fr-fr/pricing/","pricing",{"text":190,"config":191,"link":193,"lists":197,"feature":277},"Ressources",{"dataNavLevelOne":192},"resources",{"text":194,"config":195},"Afficher toutes les ressources",{"href":196,"dataGaName":192,"dataGaLocation":44},"/fr-fr/resources/",[198,231,249],{"title":199,"items":200},"Premiers pas",[201,206,211,216,221,226],{"text":202,"config":203},"Installation",{"href":204,"dataGaName":205,"dataGaLocation":44},"/fr-fr/install/","install",{"text":207,"config":208},"Guides de démarrage",{"href":209,"dataGaName":210,"dataGaLocation":44},"/fr-fr/get-started/","quick setup checklists",{"text":212,"config":213},"Apprentissage",{"href":214,"dataGaLocation":44,"dataGaName":215},"https://university.gitlab.com/","learn",{"text":217,"config":218},"Documentation sur le produit",{"href":219,"dataGaName":220,"dataGaLocation":44},"https://docs.gitlab.com/","product documentation",{"text":222,"config":223},"Vidéos sur les bonnes pratiques",{"href":224,"dataGaName":225,"dataGaLocation":44},"/fr-fr/getting-started-videos/","best practice videos",{"text":227,"config":228},"Intégrations",{"href":229,"dataGaName":230,"dataGaLocation":44},"/fr-fr/integrations/","integrations",{"title":232,"items":233},"Découvrir",[234,239,244],{"text":235,"config":236},"Témoignages clients",{"href":237,"dataGaName":238,"dataGaLocation":44},"/fr-fr/customers/","customer success stories",{"text":240,"config":241},"Blog",{"href":242,"dataGaName":243,"dataGaLocation":44},"/fr-fr/blog/","blog",{"text":245,"config":246},"Travail à distance",{"href":247,"dataGaName":248,"dataGaLocation":44},"https://handbook.gitlab.com/handbook/company/culture/all-remote/","remote",{"title":250,"items":251},"Connecter",[252,257,262,267,272],{"text":253,"config":254},"Services GitLab",{"href":255,"dataGaName":256,"dataGaLocation":44},"/fr-fr/services/","services",{"text":258,"config":259},"Communauté",{"href":260,"dataGaName":261,"dataGaLocation":44},"/community/","community",{"text":263,"config":264},"Forum",{"href":265,"dataGaName":266,"dataGaLocation":44},"https://forum.gitlab.com/","forum",{"text":268,"config":269},"Événements",{"href":270,"dataGaName":271,"dataGaLocation":44},"/events/","events",{"text":273,"config":274},"Partenaires",{"href":275,"dataGaName":276,"dataGaLocation":44},"/fr-fr/partners/","partners",{"backgroundColor":278,"textColor":279,"text":280,"image":281,"link":285},"#2f2a6b","#fff","L'avenir du développement logiciel. Tendances et perspectives.",{"altText":282,"config":283},"carte promo The Source",{"src":284},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758208064/dzl0dbift9xdizyelkk4.svg",{"text":286,"config":287},"Lire les articles les plus récents",{"href":288,"dataGaName":289,"dataGaLocation":44},"/fr-fr/the-source/","the source",{"text":291,"config":292,"lists":294},"Société",{"dataNavLevelOne":293},"company",[295],{"items":296},[297,302,308,310,315,320,325,330,335,340,345],{"text":298,"config":299},"À propos",{"href":300,"dataGaName":301,"dataGaLocation":44},"/fr-fr/company/","about",{"text":303,"config":304,"footerGa":307},"Carrières",{"href":305,"dataGaName":306,"dataGaLocation":44},"/jobs/","jobs",{"dataGaName":306},{"text":268,"config":309},{"href":270,"dataGaName":271,"dataGaLocation":44},{"text":311,"config":312},"Leadership",{"href":313,"dataGaName":314,"dataGaLocation":44},"/company/team/e-group/","leadership",{"text":316,"config":317},"Équipe",{"href":318,"dataGaName":319,"dataGaLocation":44},"/company/team/","team",{"text":321,"config":322},"Manuel",{"href":323,"dataGaName":324,"dataGaLocation":44},"https://handbook.gitlab.com/","handbook",{"text":326,"config":327},"Relations avec les investisseurs",{"href":328,"dataGaName":329,"dataGaLocation":44},"https://ir.gitlab.com/","investor relations",{"text":331,"config":332},"Centre de confiance",{"href":333,"dataGaName":334,"dataGaLocation":44},"/fr-fr/security/","trust center",{"text":336,"config":337},"Centre pour la transparence de l'IA",{"href":338,"dataGaName":339,"dataGaLocation":44},"/fr-fr/ai-transparency-center/","ai transparency center",{"text":341,"config":342},"Newsletter",{"href":343,"dataGaName":344,"dataGaLocation":44},"/company/contact/#contact-forms","newsletter",{"text":346,"config":347},"Presse",{"href":348,"dataGaName":349,"dataGaLocation":44},"/press/","press",{"text":351,"config":352,"lists":353},"Nous contacter",{"dataNavLevelOne":293},[354],{"items":355},[356,359,364],{"text":51,"config":357},{"href":53,"dataGaName":358,"dataGaLocation":44},"talk to sales",{"text":360,"config":361},"Portail d’assistance",{"href":362,"dataGaName":363,"dataGaLocation":44},"https://support.gitlab.com","support portal",{"text":365,"config":366},"Portail clients GitLab",{"href":367,"dataGaName":368,"dataGaLocation":44},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":370,"login":371,"suggestions":378},"Fermer",{"text":372,"link":373},"Pour rechercher des dépôts et des projets, connectez-vous à",{"text":374,"config":375},"gitlab.com",{"href":58,"dataGaName":376,"dataGaLocation":377},"search login","search",{"text":379,"default":380},"Suggestions",[381,383,388,390,395,400],{"text":73,"config":382},{"href":78,"dataGaName":73,"dataGaLocation":377},{"text":384,"config":385},"Suggestions de code (IA)",{"href":386,"dataGaName":387,"dataGaLocation":377},"/fr-fr/solutions/code-suggestions/","Code Suggestions (AI)",{"text":18,"config":389},{"href":108,"dataGaName":18,"dataGaLocation":377},{"text":391,"config":392},"GitLab sur AWS",{"href":393,"dataGaName":394,"dataGaLocation":377},"/fr-fr/partners/technology-partners/aws/","GitLab on AWS",{"text":396,"config":397},"GitLab sur Google Cloud ",{"href":398,"dataGaName":399,"dataGaLocation":377},"/fr-fr/partners/technology-partners/google-cloud-platform/","GitLab on Google Cloud",{"text":401,"config":402},"Pourquoi utiliser GitLab ?",{"href":86,"dataGaName":403,"dataGaLocation":377},"Why GitLab?",{"freeTrial":405,"mobileIcon":410,"desktopIcon":415,"secondaryButton":418},{"text":406,"config":407},"Commencer votre essai gratuit",{"href":408,"dataGaName":49,"dataGaLocation":409},"https://gitlab.com/-/trials/new/","nav",{"altText":411,"config":412},"Icône GitLab",{"src":413,"dataGaName":414,"dataGaLocation":409},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203874/jypbw1jx72aexsoohd7x.svg","gitlab icon",{"altText":411,"config":416},{"src":417,"dataGaName":414,"dataGaLocation":409},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203875/gs4c8p8opsgvflgkswz9.svg",{"text":419,"config":420},"Commencer",{"href":421,"dataGaName":422,"dataGaLocation":409},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/fr-fr/get-started/","get started",{"freeTrial":424,"mobileIcon":428,"desktopIcon":430},{"text":425,"config":426},"En savoir plus sur GitLab Duo",{"href":78,"dataGaName":427,"dataGaLocation":409},"gitlab duo",{"altText":411,"config":429},{"src":413,"dataGaName":414,"dataGaLocation":409},{"altText":411,"config":431},{"src":417,"dataGaName":414,"dataGaLocation":409},{"freeTrial":433,"mobileIcon":438,"desktopIcon":440},{"text":434,"config":435},"Retour aux tarifs",{"href":187,"dataGaName":436,"dataGaLocation":409,"icon":437},"back to pricing","GoBack",{"altText":411,"config":439},{"src":413,"dataGaName":414,"dataGaLocation":409},{"altText":411,"config":441},{"src":417,"dataGaName":414,"dataGaLocation":409},{"title":443,"button":444,"config":449},"Découvrez comment l'IA agentique transforme la livraison logicielle",{"text":445,"config":446},"Regarder GitLab Transcend maintenant",{"href":447,"dataGaName":448,"dataGaLocation":44},"/fr-fr/events/transcend/virtual/","transcend event",{"layout":450,"icon":451,"disabled":29},"release","AiStar",{"data":453},{"text":454,"source":455,"edit":461,"contribute":466,"config":471,"items":476,"minimal":653},"Git est une marque déposée de Software Freedom Conservancy et notre utilisation de « GitLab » est sous licence",{"text":456,"config":457},"Afficher le code source de la page",{"href":458,"dataGaName":459,"dataGaLocation":460},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":462,"config":463},"Modifier cette page",{"href":464,"dataGaName":465,"dataGaLocation":460},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":467,"config":468},"Veuillez contribuer",{"href":469,"dataGaName":470,"dataGaLocation":460},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":472,"facebook":473,"youtube":474,"linkedin":475},"https://twitter.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[477,500,554,586,621],{"title":62,"links":478,"subMenu":483},[479],{"text":480,"config":481},"Plateforme DevSecOps",{"href":71,"dataGaName":482,"dataGaLocation":460},"devsecops platform",[484],{"title":185,"links":485},[486,490,495],{"text":487,"config":488},"Voir les forfaits",{"href":187,"dataGaName":489,"dataGaLocation":460},"view plans",{"text":491,"config":492},"Pourquoi choisir GitLab Premium ?",{"href":493,"dataGaName":494,"dataGaLocation":460},"/fr-fr/pricing/premium/","why premium",{"text":496,"config":497},"Pourquoi choisir GitLab Ultimate ?",{"href":498,"dataGaName":499,"dataGaLocation":460},"/fr-fr/pricing/ultimate/","why ultimate",{"title":501,"links":502},"Solutions",[503,508,511,513,518,523,527,530,533,538,540,542,544,549],{"text":504,"config":505},"Transformation digitale",{"href":506,"dataGaName":507,"dataGaLocation":460},"/fr-fr/topics/digital-transformation/","digital transformation",{"text":509,"config":510},"Sécurité et conformité",{"href":126,"dataGaName":133,"dataGaLocation":460},{"text":118,"config":512},{"href":103,"dataGaName":104,"dataGaLocation":460},{"text":514,"config":515},"Développement agile",{"href":516,"dataGaName":517,"dataGaLocation":460},"/fr-fr/solutions/agile-delivery/","agile delivery",{"text":519,"config":520},"Transformation cloud",{"href":521,"dataGaName":522,"dataGaLocation":460},"/fr-fr/topics/cloud-native/","cloud transformation",{"text":524,"config":525},"SCM",{"href":115,"dataGaName":526,"dataGaLocation":460},"source code management",{"text":18,"config":528},{"href":108,"dataGaName":529,"dataGaLocation":460},"continuous integration & delivery",{"text":157,"config":531},{"href":159,"dataGaName":532,"dataGaLocation":460},"value stream management",{"text":534,"config":535},"GitOps",{"href":536,"dataGaName":537,"dataGaLocation":460},"/fr-fr/solutions/gitops/","gitops",{"text":170,"config":539},{"href":172,"dataGaName":173,"dataGaLocation":460},{"text":175,"config":541},{"href":177,"dataGaName":178,"dataGaLocation":460},{"text":180,"config":543},{"href":182,"dataGaName":183,"dataGaLocation":460},{"text":545,"config":546},"Formation",{"href":547,"dataGaName":548,"dataGaLocation":460},"/fr-fr/solutions/education/","education",{"text":550,"config":551},"Services financiers",{"href":552,"dataGaName":553,"dataGaLocation":460},"/fr-fr/solutions/finance/","financial services",{"title":190,"links":555},[556,558,561,563,566,568,571,574,576,578,580,582,584],{"text":202,"config":557},{"href":204,"dataGaName":205,"dataGaLocation":460},{"text":559,"config":560},"Guides de démarrage rapide",{"href":209,"dataGaName":210,"dataGaLocation":460},{"text":212,"config":562},{"href":214,"dataGaName":215,"dataGaLocation":460},{"text":217,"config":564},{"href":219,"dataGaName":565,"dataGaLocation":460},"docs",{"text":240,"config":567},{"href":242,"dataGaName":243},{"text":569,"config":570},"Histoires de réussite client",{"href":237,"dataGaLocation":460},{"text":572,"config":573},"Histoires de succès client",{"href":237,"dataGaName":238,"dataGaLocation":460},{"text":245,"config":575},{"href":247,"dataGaName":248,"dataGaLocation":460},{"text":253,"config":577},{"href":255,"dataGaName":256,"dataGaLocation":460},{"text":258,"config":579},{"href":260,"dataGaName":261,"dataGaLocation":460},{"text":263,"config":581},{"href":265,"dataGaName":266,"dataGaLocation":460},{"text":268,"config":583},{"href":270,"dataGaName":271,"dataGaLocation":460},{"text":273,"config":585},{"href":275,"dataGaName":276,"dataGaLocation":460},{"title":291,"links":587},[588,590,593,595,597,599,601,605,610,612,614,616],{"text":298,"config":589},{"href":300,"dataGaName":293,"dataGaLocation":460},{"text":591,"config":592},"Emplois",{"href":305,"dataGaName":306,"dataGaLocation":460},{"text":311,"config":594},{"href":313,"dataGaName":314,"dataGaLocation":460},{"text":316,"config":596},{"href":318,"dataGaName":319,"dataGaLocation":460},{"text":321,"config":598},{"href":323,"dataGaName":324,"dataGaLocation":460},{"text":326,"config":600},{"href":328,"dataGaName":329,"dataGaLocation":460},{"text":602,"config":603},"Sustainability",{"href":604,"dataGaName":602,"dataGaLocation":460},"/sustainability/",{"text":606,"config":607},"Diversité, inclusion et appartenance (DIB)",{"href":608,"dataGaName":609,"dataGaLocation":460},"/fr-fr/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":331,"config":611},{"href":333,"dataGaName":334,"dataGaLocation":460},{"text":341,"config":613},{"href":343,"dataGaName":344,"dataGaLocation":460},{"text":346,"config":615},{"href":348,"dataGaName":349,"dataGaLocation":460},{"text":617,"config":618},"Déclaration de transparence sur l'esclavage moderne",{"href":619,"dataGaName":620,"dataGaLocation":460},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"title":351,"links":622},[623,626,631,633,638,643,648],{"text":624,"config":625},"Échanger avec un expert",{"href":53,"dataGaName":54,"dataGaLocation":460},{"text":627,"config":628},"Aide",{"href":629,"dataGaName":630,"dataGaLocation":460},"https://support.gitlab.com/hc/en-us/articles/11626483177756-GitLab-Support","get help",{"text":365,"config":632},{"href":367,"dataGaName":368,"dataGaLocation":460},{"text":634,"config":635},"Statut",{"href":636,"dataGaName":637,"dataGaLocation":460},"https://status.gitlab.com/","status",{"text":639,"config":640},"Conditions d'utilisation",{"href":641,"dataGaName":642},"/terms/","terms of use",{"text":644,"config":645},"Déclaration de confidentialité",{"href":646,"dataGaName":647,"dataGaLocation":460},"/fr-fr/privacy/","privacy statement",{"text":649,"config":650},"Préférences en matière de cookies",{"dataGaName":651,"dataGaLocation":460,"id":652,"isOneTrustButton":29},"cookie preferences","ot-sdk-btn",{"items":654},[655,657,660],{"text":639,"config":656},{"href":641,"dataGaName":642,"dataGaLocation":460},{"text":658,"config":659},"Politique de confidentialité",{"href":646,"dataGaName":647,"dataGaLocation":460},{"text":649,"config":661},{"dataGaName":651,"dataGaLocation":460,"id":652,"isOneTrustButton":29},[663,676],{"id":664,"title":25,"body":9,"config":665,"content":667,"description":9,"extension":27,"meta":671,"navigation":29,"path":672,"seo":673,"stem":674,"__hash__":675},"blogAuthors/en-us/blog/authors/matt-genelin.yml",{"template":666},"BlogAuthor",{"name":25,"config":668},{"headshot":669,"ctfId":670},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749664522/Blog/Author%20Headshots/matty_genelin.png","6x9dTYZik3lSViI8hu6dYQ",{},"/en-us/blog/authors/matt-genelin",{},"en-us/blog/authors/matt-genelin","BNd-jZWck4DOyJIDc9GI-734vQkyzXJgudpPaFgn5pM",{"id":677,"title":26,"body":9,"config":678,"content":679,"description":9,"extension":27,"meta":683,"navigation":29,"path":684,"seo":685,"stem":686,"__hash__":687},"blogAuthors/en-us/blog/authors/mathias-ewald.yml",{"template":666},{"name":26,"config":680},{"headshot":681,"ctfId":682},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749664526/Blog/Author%20Headshots/mathias_ewald_headshot.png","7vLTPhU3yvh4xTToXcLpg9",{},"/en-us/blog/authors/mathias-ewald",{},"en-us/blog/authors/mathias-ewald","6h3mh_Isl2z7n-akRG5H9ijs9YS5wqTMLWKfyPjjDyQ",[689,701,715],{"content":690,"config":699},{"tags":691,"category":10,"body":692,"date":693,"heroImage":694,"authors":695,"description":697,"title":698},[10,17],"Les vulnérabilités dans les conteneurs n'attendent pas votre prochain\ndéploiement. Elles peuvent apparaître à tout moment, de la création d'une\nimage à l'exécution des conteneurs en production. Pour remédier à ce\nproblème, GitLab propose plusieurs approches d'analyse des conteneurs,\nchacune conçue pour une étape spécifique du cycle de développement logiciel ([SDLC](https://about.gitlab.com/fr-fr/blog/what-is-sdlc/ \"Qu'est-ce que le SDLC ?\")).\n\n\nDans ce guide, nous explorons les différents types d'analyse de conteneurs proposés par GitLab, vous expliquons comment les activer et vous partageons les configurations les plus courantes pour bien démarrer.\n\n\n## Qu'est-ce que l'analyse des conteneurs ? \n\n\nLes vulnérabilités de sécurité présentes dans les images de conteneurs constituent un risque tout au long du cycle de vie applicatif. Les images de base, les paquets de systèmes d'exploitation et les dépendances applicatives peuvent tous receler des vulnérabilités activement exploitées par des attaquants. L'analyse des conteneurs permet de détecter ces risques en amont, avant qu'ils n'atteignent l'environnement de production, et propose des pistes de remédiation le cas échéant.\n\n\nL'analyse des conteneurs est un élément essentiel de l'analyse de la composition logicielle (SCA), qui vous aide à comprendre et à sécuriser les dépendances externes dont vos applications conteneurisées dépendent.\n\n\n## 5 types d'analyses de conteneurs dans GitLab\n\n\nGitLab propose cinq approches distinctes d'analyse de conteneurs, chacune répondant à un objectif précis dans votre stratégie de sécurité.\n\n\n### 1. Analyse des conteneurs dans le pipeline\n\n\n* Fonctionnement : analyse les images de conteneurs lors de l'exécution du [pipeline CI/CD](https://about.gitlab.com/fr-fr/topics/ci-cd/cicd-pipeline/ \"Qu'est-ce qu'un pipeline CI/CD ?\") afin de détecter les vulnérabilités avant le déploiement\n\n* Cas d'utilisation idéal : contrôles de sécurité en amont (shift-left) pour bloquer les images vulnérables avant qu'elles n'atteignent la production\n\n* Disponibilité : version gratuite de GitLab, GitLab Premium et GitLab Ultimate (avec des fonctionnalités supplémentaires dans GitLab Ultimate)\n\n* [Documentation](https://docs.gitlab.com/user/application_security/container_scanning/)\n\n\nGitLab utilise le scanner de sécurité Trivy pour analyser les images de conteneurs et rechercher de vulnérabilités connues. Lors de l'exécution du pipeline, le scanner examine vos images et génère un rapport détaillé.\n\n\n#### Activer l'analyse des conteneurs dans le pipeline\n\n\n**Option A : merge request préconfigurée**\n\n\n* Accédez à **Sécurisation > Configuration de la sécurité** dans votre projet.\n\n* Repérez la ligne « Analyse de conteneurs ».\n\n* Sélectionnez **Configurer avec une merge request**.\n\n* Une merge request intégrant la configuration nécessaire est automatiquement créée.\n\n\n**Option B : configuration manuelle**\n\n\n* Ajoutez le contenu suivant à votre fichier `.gitlab-ci.yml` :\n\n\n```yaml\ninclude:\n  - template: Jobs/Container-Scanning.gitlab-ci.yml\n```  \n\n\n#### Configurations courantes\n\n\n**Analyser une image spécifique :**\n\n\nPour analyser une image spécifique, remplacez la variable `CS_IMAGE` dans le job `container_scanning`.\n\n\n```yaml\ninclude:\n  - template: Jobs/Container-Scanning.gitlab-ci.yml\n\ncontainer_scanning:\n  variables:\n    CS_IMAGE: myregistry.com/myapp:latest\n```\n\n\n**Filtrer par seuil de gravité :**\n\n\nPour n'afficher que les vulnérabilités dépassant un certain niveau de gravité, remplacez la variable `CS_SEVERITY_THRESHOLD` dans le job `container_scanning`. Dans l'exemple ci-dessous, seules les vulnérabilités d'un niveau de gravité **Élevé** ou supérieur seront affichées.\n\n\n```yaml\ninclude:\n  - template: Jobs/Container-Scanning.gitlab-ci.yml\n\ncontainer_scanning:\n  variables:\n    CS_SEVERITY_THRESHOLD: \"HIGH\"\n```\n\n\n#### Consulter les vulnérabilités dans une merge request\n\n\nL'affichage direct des vulnérabilités détectées par l'analyse des conteneurs au sein des merge requests rend les revues de sécurité plus fluides et plus efficaces. Une fois l'analyse des conteneurs configurée dans votre pipeline CI/CD, GitLab affiche automatiquement les vulnérabilités détectées dans le [widget Sécurité](https://docs.gitlab.com/user/project/merge_requests/widgets/#application-security-scanning) de la merge request.\n\n\n![Vulnérabilités détectées lors de l'analyse des conteneurs affichées dans la merge request](https://res.cloudinary.com/about-gitlab-com/image/upload/v1772547514/lt6elcq6jexdhqatdy8l.png \"Vulnérabilités détectées lors de l'analyse des conteneurs affichées dans la merge request\")\n\n\n* Accédez à n'importe quelle merge request et faites défiler jusqu'à la section « Analyse de sécurité » pour obtenir un résumé des vulnérabilités nouvellement introduites et existantes détectées dans vos images de conteneurs.\n\n* Cliquez sur une **vulnérabilité** pour accéder à des informations détaillées, notamment le niveau de gravité, les paquets affectés et les recommandations de remédiation disponibles.\n\n\n![GitLab Security – détails dans la merge request](https://res.cloudinary.com/about-gitlab-com/image/upload/v1772547514/hplihdlekc11uvpfih1p.png)\n\n\n![GitLab Security – détails dans la merge request](https://res.cloudinary.com/about-gitlab-com/image/upload/v1772547513/jnxbe7uld8wfeezboifs.png \"Détails d'une vulnérabilité détectée par l'analyse des conteneurs dans la merge request\")\n\n\nCette visibilité permet aux équipes de développement et de sécurité de détecter et de traiter les vulnérabilités des conteneurs avant qu'elles n'atteignent la production : la sécurité devient une composante à part entière du processus de revue de code plutôt qu'un contrôle distinct.\n\n\n#### Consulter les vulnérabilités dans le rapport de vulnérabilités\n\n\nAu-delà des revues dans les merge requests, GitLab met à disposition un [rapport de vulnérabilités](https://docs.gitlab.com/user/application_security/vulnerability_report/) centralisé, qui offre aux équipes de sécurité une visibilité complète sur l'ensemble des résultats de l'analyse des conteneurs dans votre projet.\n\n\n![Rapport de vulnérabilités avec classement selon l'analyse des conteneurs](https://res.cloudinary.com/about-gitlab-com/image/upload/v1772547524/gagau279fzfgjpnvipm5.png \"Rapport de vulnérabilités avec classement selon l'analyse des conteneurs\")\n\n\n* Accédez à ce rapport via **Sécurité et conformité > Rapport de vulnérabilités** dans la barre latérale de votre projet.\n\n* Vous y trouverez une vue agrégée de toutes les vulnérabilités de conteneurs détectées dans vos branches, avec des options de filtrage permettant de trier les vulnérabilités par gravité, statut, type de scanner ou image de conteneur spécifique.\n\n* Cliquez sur une vulnérabilité pour accéder à sa page dédiée.\n\n\n![Page de vulnérabilité – vue 1](https://res.cloudinary.com/about-gitlab-com/image/upload/v1772547520/e1woxupyoajhrpzrlylj.png)\n\n\n![Page de vulnérabilité – vue 2](https://res.cloudinary.com/about-gitlab-com/image/upload/v1772547521/idzcftcgjc8eryixnbjn.png)\n\n\n![Page de vulnérabilité – vue 3](https://res.cloudinary.com/about-gitlab-com/image/upload/v1772547522/mbbwbbprtf9anqqola10.png \"Détails d'une vulnérabilité détectée par l'analyse des conteneurs\")\n\n\nLes [détails de la vulnérabilité](https://docs.gitlab.com/user/application_security/vulnerabilities/) indiquent précisément les images et couches de conteneurs concernées pour faciliter la traçabilité jusqu'à la source du problème. Vous pouvez assigner des vulnérabilités à des membres de l'équipe, modifier leur statut (détectée, confirmée, résolue, rejetée), ajouter des commentaires pour faciliter la collaboration et associer des tickets connexes pour suivre la remédiation.\n\n\nCe workflow transforme la [gestion des vulnérabilités](https://about.gitlab.com/fr-fr/blog/what-is-vulnerability-management/ \"Qu'est-ce que la gestion des vulnérabilités ?\"), autrefois cantonnée à des tableurs, en une composante intégrée de votre processus de développement, garantissant que les résultats de sécurité des conteneurs sont suivis, priorisés et résolus de manière systématique.\n\n\n#### Consulter la liste des dépendances\n\n\nLa [liste des dépendances](https://docs.gitlab.com/user/application_security/dependency_list/) de GitLab fournit une nomenclature logicielle complète ([SBOM](https://about.gitlab.com/fr-fr/blog/the-ultimate-guide-to-sboms/ \"Qu'est-ce qu'une SBOM ?\")) qui répertorie chaque composant de vos images de conteneurs afin d'offrir une transparence totale sur votre [chaîne d'approvisionnement logicielle](https://about.gitlab.com/fr-fr/blog/software-supply-chain-security-guide-why-organizations-struggle/).\n\n\n* Accédez à **Sécurité et conformité > Liste des dépendances** pour consulter l'inventaire de tous les paquets, bibliothèques et dépendances détectés par l'analyse des conteneurs dans votre projet.\n\n* Cet affichage répertorie les éléments qui s'exécutent réellement dans vos conteneurs, des paquets du système d'exploitation de base aux dépendances applicatives.\n\n\n![Liste des dépendances de GitLab](https://res.cloudinary.com/about-gitlab-com/image/upload/v1772547513/vjg6dk3nhajqamplroji.png \"Liste des dépendances de GitLab (SBOM)\")\n\n\nVous pouvez filtrer la liste par gestionnaire de paquets, type de licence ou statut de vulnérabilité afin d'identifier rapidement les composants qui présentent des risques de sécurité ou des problèmes de conformité. Chaque entrée de dépendance affiche les vulnérabilités associées pour traiter les problèmes de sécurité dans le contexte des composants logiciels réels, plutôt que comme des résultats isolés.\n\n\n### 2. Analyse des conteneurs pour le registre\n\n\n* Fonctionnement : analyse automatiquement les images envoyées vers le registre de conteneurs de GitLab (GitLab Container Registry) avec le tag `latest`\n\n* Cas d'utilisation idéal : surveillance continue des images du registre, sans déclenchement manuel du pipeline\n\n* Disponibilité : GitLab Ultimate uniquement\n\n* [Documentation](https://docs.gitlab.com/user/application_security/container_scanning/#container-scanning-for-registry)\n\n\nLorsque vous effectuez un push d'une image de conteneur avec le tag `latest`, le bot de politique de sécurité de GitLab déclenche automatiquement une analyse sur la branche par défaut. Contrairement à l'analyse dans le pipeline, cette approche fonctionne conjointement avec l'analyse continue des vulnérabilités pour surveiller les nouveaux avis de sécurité publiés.\n\n\n#### Activer l'analyse des conteneurs pour le registre\n\n\n1. Accédez à **Sécurisation > Configuration de la sécurité**.\n\n2. Faites défiler jusqu'à la section **Analyse des conteneurs pour le registre**.\n\n3. Activez la fonctionnalité.\n\n\n![Analyse des conteneurs pour le registre](https://res.cloudinary.com/about-gitlab-com/image/upload/v1772547512/vntrlhtmsh1ecnwni5ji.png \"Bouton d'activation de l'analyse des conteneurs pour le registre\")\n\n\n#### Prérequis\n\n\n* Rôle de Chargé de maintenance ou supérieur dans le projet\n\n* Le projet ne doit pas être vide (au moins un commit sur la branche par défaut est requis)\n\n* Les notifications du registre de conteneurs doivent être configurées\n\n* La base de données de métadonnées des paquets doit être configurée (activée par défaut sur GitLab.com)\n\n\nLes vulnérabilités apparaissent sous l'onglet **Vulnérabilités du registre de conteneurs** dans votre rapport de vulnérabilités.\n\n\n### 3. Analyse multi-conteneurs\n\n\n* Fonctionnement : analyse plusieurs images de conteneurs en parallèle au sein d'un même pipeline\n\n* Cas d'utilisation idéal : [architectures de microservices](https://about.gitlab.com/fr-fr/blog/what-are-the-benefits-of-a-microservices-architecture/ \"Qu'est-ce qu'une architecture de microservices ?\") et projets avec plusieurs images de conteneurs\n\n* Disponibilité : version gratuite de GitLab, GitLab Premium et GitLab Ultimate (actuellement en version bêta)\n\n* [Documentation](https://docs.gitlab.com/user/application_security/container_scanning/multi_container_scanning/)\n\n\nL'analyse multi-conteneurs utilise des pipelines enfants dynamiques pour exécuter des analyses simultanées afin de réduire considérablement le temps d'exécution global du pipeline lorsque plusieurs images doivent être analysées.\n\n\n#### Activer l'analyse multi-conteneurs\n\n\n1. Créez un fichier `.gitlab-multi-image.yml` à la racine de votre dépôt :\n\n\n```yaml\nscanTargets:\n  - name: alpine\n    tag: \"3.19\"\n  - name: python\n    tag: \"3.9-slim\"\n  - name: nginx\n    tag: \"1.25\"\n```\n\n\n2. Incluez le template dans votre fichier `.gitlab-ci.yml` :\n\n\n```yaml\ninclude:\n  - template: Jobs/Multi-Container-Scanning.latest.gitlab-ci.yml\n```\n\n\n#### Configuration avancée\n\n\n**Analyser des images depuis des registres privés :**\n\n\n```yaml\nauths:\n  registry.gitlab.com:\n    username: ${CI_REGISTRY_USER}\n    password: ${CI_REGISTRY_PASSWORD}\n\nscanTargets:\n  - name: registry.gitlab.com/private/image\n    tag: latest\n```\n\n\n**Inclure les informations de licence :**\n\n\n```yaml\nincludeLicenses: true\n\nscanTargets:\n  - name: postgres\n    tag: \"15-alpine\"\n```\n\n\n### 4. Analyse continue des vulnérabilités\n\n\n* Fonctionnement : crée automatiquement des vulnérabilités lors de la publication de nouveaux avis de sécurité, sans nécessiter l'exécution de pipeline\n\n* Cas d'utilisation idéal : surveillance proactive de la sécurité entre les déploiements\n\n* Disponibilité : GitLab Ultimate uniquement\n\n* [Documentation](https://docs.gitlab.com/user/application_security/continuous_vulnerability_scanning/)\n\n\nL'analyse traditionnelle ne détecte les vulnérabilités qu'au moment où elle est effectuée. Mais que se passe-t-il lorsqu'une nouvelle vulnérabilité et exposition commune (CVE) est publiée le lendemain pour un paquet analysé la veille ? L'analyse continue des vulnérabilités résout ce problème en surveillant la base de données d'avis de GitLab et en enregistrant automatiquement les vulnérabilités lorsque de nouveaux avis affectent vos composants.\n\n\n#### Fonctionnement\n\n\n1. Votre job d'analyse des conteneurs ou d'analyse des dépendances génère une SBOM CycloneDX.\n\n2. GitLab enregistre les composants de votre projet à partir de cette SBOM.\n\n3. Lors de la publication de nouveaux avis, GitLab vérifie si vos composants sont concernés.\n\n4. Les vulnérabilités sont automatiquement créées dans votre rapport de vulnérabilités.\n\n\n#### Points importants\n\n\n* Les analyses s'exécutent via des jobs en arrière-plan (Sidekiq), et non via des pipelines CI.\n\n* Seules les alertes publiées au cours des 14 derniers jours sont prises en compte pour la détection de nouveaux composants.\n\n* Les vulnérabilités utilisent « GitLab SBoM Vulnerability Scanner » comme nom de scanner.\n\n* Pour marquer des vulnérabilités comme résolues, vous devez toujours exécuter une analyse basée sur un pipeline.\n\n\n### 5. Analyse opérationnelle des conteneurs\n\n\n* Fonctionnement : analyse les conteneurs en cours d'exécution dans votre cluster [Kubernetes](https://about.gitlab.com/fr-fr/blog/kubernetes-the-container-orchestration-solution/ \"Qu'est-ce que Kubernetes ?\") selon une cadence planifiée\n\n* Cas d'utilisation idéal : surveillance de la sécurité après déploiement et détection des vulnérabilités au moment de l'exécution\n\n* Disponibilité : GitLab Ultimate uniquement\n\n* [Documentation](https://docs.gitlab.com/user/clusters/agent/vulnerabilities/)\n\n\nL'analyse opérationnelle des conteneurs comble l'écart entre la sécurité au moment du build et la sécurité à l'exécution. Grâce à l'agent GitLab pour Kubernetes, cette approche analyse les conteneurs réellement en cours d'exécution dans vos clusters pour détecter les vulnérabilités qui apparaissent après le déploiement.\n\n\n#### Activer l'analyse opérationnelle des conteneurs\n\n\nSi vous utilisez l'[agent GitLab pour Kubernetes](https://docs.gitlab.com/user/clusters/agent/install/), vous pouvez ajouter le contenu suivant à votre fichier de configuration de l'agent :\n\n\n```yaml\ncontainer_scanning:\n  cadence: '0 0 * * *'  # Daily at midnight\n  vulnerability_report:\n    namespaces:\n      include:\n        - production\n        - staging\n```\n\n\nVous pouvez également créer une [politique d'exécution des analyses](https://docs.gitlab.com/user/clusters/agent/vulnerabilities/#enable-via-scan-execution-policies) qui impose une analyse selon un planning défini par l'agent GitLab pour Kubernetes.\n\n\n![Politique d'exécution des analyses – analyse opérationnelle des conteneurs](https://res.cloudinary.com/about-gitlab-com/image/upload/v1772547515/gsgvjcq4sas4dfc8ciqk.png \"Conditions d'une politique d'exécution des analyses pour l'analyse opérationnelle des conteneurs\")\n\n\n#### Consulter les résultats\n\n\n* Accédez à **Opération > Clusters Kubernetes**.\n\n* Sélectionnez l'onglet **Agent** et choisissez votre agent.\n\n* Sélectionnez ensuite l'onglet **Sécurité** pour consulter les vulnérabilités du cluster.\n\n* Les résultats apparaissent également sous l'onglet **Vulnérabilités opérationnelles** dans le **rapport de vulnérabilités**.\n\n\n## Renforcer la posture de sécurité avec les politiques de sécurité de GitLab\n\n\nLes politiques de sécurité de GitLab vous permettent d'appliquer des normes de sécurité cohérentes dans l'ensemble de vos workflows de conteneurs, grâce à des contrôles automatisés pilotés par des politiques. Ces politiques intègrent la sécurité en amont en intégrant les exigences directement dans votre pipeline de développement afin de garantir que les vulnérabilités sont détectées et traitées avant que le code n'atteigne l'environnement de production.\n\n\n#### Politiques d'exécution des scans et des pipelines\n\n\nLes [politiques d'exécution des scans](https://docs.gitlab.com/user/application_security/policies/scan_execution_policies/) automatisent le moment et la manière dont l'analyse des conteneurs s'exécute dans vos projets. Définissez des politiques qui déclenchent des analyses de conteneurs sur chaque merge request, planifiez des analyses récurrentes de votre branche principale, et plus encore. Ces politiques assurent une couverture complète sans que les équipes de développement aient à configurer manuellement l'analyse dans le pipeline CI/CD de chaque projet.\n\n\nVous pouvez préciser les versions de scanner à utiliser et configurer les paramètres de scan de manière centralisée pour garantir la cohérence dans toute votre organisation tout en vous adaptant aux nouvelles menaces qui pèsent sur la sécurité des conteneurs.\n\n\n![Configuration d'une politique d'exécution des scans](https://res.cloudinary.com/about-gitlab-com/image/upload/v1772547517/z36dntxslqem9udrynvx.png \"Configuration d'une politique d'exécution des scans\")\n\n\nLes [politiques d'exécution des pipelines](https://docs.gitlab.com/user/application_security/policies/pipeline_execution_policies/) offrent des contrôles flexibles pour injecter (ou remplacer) des jobs personnalisés dans un pipeline en fonction de vos besoins en matière de conformité.\n\n\nCes politiques permettent d'injecter automatiquement des jobs d'analyse des conteneurs dans votre pipeline, de faire échouer les builds lorsque les vulnérabilités de conteneurs dépassent votre seuil de tolérance au risque, de déclencher des contrôles de sécurité supplémentaires pour des branches ou des tags spécifiques, ou encore d'imposer des exigences de conformité pour les images de conteneurs destinées aux environnements de production. Les politiques d'exécution des pipelines agissent comme des garde-fous automatisés pour appliquer vos normes de sécurité de manière cohérente dans l'ensemble de vos déploiements de conteneurs, sans intervention manuelle.\n\n\n![Politique d'exécution des pipelines](https://res.cloudinary.com/about-gitlab-com/image/upload/v1772547517/ddhhugzcr2swptgodof2.png \"Actions d'une politique d'exécution de pipeline\")\n\n\n#### Politiques d'approbation des merge requests\n\n\nLes [politiques d'approbation des merge requests](https://docs.gitlab.com/user/application_security/policies/merge_request_approval_policies/) imposent des contrôles de sécurité : les approbateurs désignés examinent et valident les merge requests contenant des vulnérabilités de conteneurs.\n\n\nConfigurez des politiques qui bloquent le merge lorsque des vulnérabilités de gravité critique ou élevée sont détectées, ou qui exigent l'approbation de l'équipe de sécurité pour toute merge request introduisant de nouveaux résultats liés aux conteneurs. Ces politiques empêchent les images de conteneurs vulnérables de progresser dans votre pipeline tout en préservant la vélocité de développement pour les changements à faible risque.\n\n\n![Politique d'approbation des merge requests avec blocage dans la merge request](https://res.cloudinary.com/about-gitlab-com/image/upload/v1772547513/hgnbc1vl4ssqafqcyuzg.png \"Politique d'approbation des merge requests avec blocage dans la merge request\")\n\n\n## Choisir la bonne approche\n\n\n| Type d'analyse | Utilisation | Avantage clé |\n|--------------|-------------|-------------|\n| Analyse dans le pipeline | À chaque build | Contrôles de sécurité en amont, blocage des builds vulnérables |\n| Analyse de registre | Surveillance continue | Détection des nouvelles CVE dans les images stockées |\n| Analyse multi-conteneurs | Microservices | Analyse en parallèle, pipelines plus rapides |\n| Analyse continue des vulnérabilités | Entre les déploiements | Surveillance proactive des avis |\n| Analyse opérationnelle | Surveillance en production | Détection des vulnérabilités dans l'environnement d'exécution |\n\n\nPour une approche complète en matière de sécurité, combinez plusieurs approches : l'analyse dans le pipeline pour détecter les problèmes pendant le développement, l'analyse des conteneurs pour le registre afin d'assurer une surveillance continue et l'analyse opérationnelle pour la visibilité en production.\n\n\n## Lancez-vous dès aujourd'hui\n\n\nActivez l'analyse dans le pipeline pour commencer à appliquer des mesures de sécurité dans les conteneurs :\n\n\n1. Accédez à **Sécurisation > Configuration de la sécurité** dans votre projet.\n\n2. Cliquez sur **Configurer avec une merge request** pour lancer l'analyse des conteneurs.\n\n3. Fusionnez la merge request.\n\n4. Votre prochain pipeline inclura l'analyse des vulnérabilités.\n\n\nAjoutez ensuite des analyses supplémentaires en fonction de vos exigences de sécurité et de votre abonnement GitLab.\n\n\nLa sécurité des conteneurs n'est pas une tâche ponctuelle, mais un processus continu. Grâce aux capacités complètes d'analyse des conteneurs de GitLab, vous pouvez détecter les vulnérabilités à chaque étape du cycle de vie de vos conteneurs, du build à l'exécution.\n\n\n> Pour en savoir plus sur la façon dont GitLab peut contribuer à renforcer votre posture de sécurité, consultez la [page sur les solutions de sécurité et de gouvernance de GitLab](https://about.gitlab.com/fr-fr/solutions/application-security-testing/).\n","2026-04-13","https://res.cloudinary.com/about-gitlab-com/image/upload/f_auto,q_auto,c_lfill/v1772721753/frfsm1qfscwrmsyzj1qn.png",[696],"Fernando Diaz","Découvrez les différentes méthodes d'analyse des conteneurs proposées par GitLab et apprenez à sécuriser vos conteneurs à chaque étape de leur cycle de vie.","Analyse des conteneurs de GitLab : le guide complet",{"featured":12,"template":13,"slug":700},"complete-guide-to-gitlab-container-scanning",{"content":702,"config":713},{"title":703,"description":704,"authors":705,"heroImage":707,"date":708,"body":709,"category":10,"tags":710},"GitLab 18.10 introduit le classement et la remédiation avec l'IA native","Découvrez les fonctionnalités de GitLab Duo Agent Platform qui réduisent le bruit, identifient les vulnérabilités les plus importantes et transforment les résultats en propositions de remédiation.",[706],"Alisa Ho","https://res.cloudinary.com/about-gitlab-com/image/upload/v1773843921/rm35fx4gylrsu9alf2fx.png","2026-03-19","GitLab 18.10 introduit de nouvelles fonctionnalités de sécurité basées sur l'IA, conçues pour améliorer la qualité et la rapidité de la [gestion des vulnérabilités](https://about.gitlab.com/fr-fr/blog/what-is-vulnerability-management/ \"Qu'est-ce que la gestion des vulnérabilités ?\"). Ensemble, ces fonctionnalités contribuent à réduire le temps que les équipes de développement consacrent à l'analyse des faux positifs et intègrent la remédiation automatisée directement dans leur workflow, afin qu'elles puissent corriger les vulnérabilités sans connaissances spécialisées dans la sécurité.\n\nVoici les nouveautés :\n\n* [**La détection des faux positifs pour les tests statiques de sécurité des applications (SAST)**](https://docs.gitlab.com/user/application_security/vulnerabilities/false_positive_detection/) **est désormais en disponibilité générale.** Ce flow utilise un [grand modèle de langage (LLM)](https://about.gitlab.com/fr-fr/blog/large-language-model/ \"Qu'est-ce qu'un LLM ?\") pour le raisonnement agentique afin de déterminer la probabilité qu'une vulnérabilité soit un faux positif et permet ainsi aux équipes de sécurité et de développement de se concentrer en priorité sur la correction des vulnérabilités critiques.\n* [**La résolution des vulnérabilités SAST avec l'IA agentique**](https://docs.gitlab.com/user/application_security/vulnerabilities/agentic_vulnerability_resolution/) **est désormais disponible en version bêta.** La résolution des vulnérabilités SAST avec l'IA agentique crée automatiquement une merge request avec un correctif proposé pour les vulnérabilités SAST vérifiées, ce qui réduit le délai de remédiation et limite le besoin d'une expertise approfondie en sécurité.\n* [**La détection des faux positifs pour les secrets**](https://docs.gitlab.com/user/application_security/vulnerabilities/secret_false_positive_detection/) **est désormais disponible en version bêta.** Ce flow applique la même réduction de bruit basée sur l'IA à la détection des secrets, en signalant les secrets factices et de test afin de réduire l'effort de revue.\n\nCes flows sont disponibles pour les clients [GitLab Ultimate](https://about.gitlab.com/fr-fr/pricing/ultimate/ \"GitLab Ultimate\") qui utilisent GitLab Duo Agent Platform.\n\n## Réduire le temps de classement grâce à la détection des faux positifs SAST\n\nLes scanners SAST traditionnels signalent chaque modèle de code suspect qu'ils détectent, indépendamment de l'accessibilité des chemins de code ou de la prise en charge du risque par les frameworks. Sans contexte d'exécution, ils ne peuvent pas distinguer une véritable vulnérabilité d'un code sûr qui semble simplement dangereux.\n\nLes équipes de développement peuvent ainsi passer des heures à examiner des résultats qui s'avèrent être des faux positifs. Au fil du temps, cette situation peut éroder la confiance dans le rapport et ralentir les équipes chargées de corriger les risques réels.\n\nAprès chaque scan SAST, GitLab Duo Agent Platform analyse automatiquement les nouveaux résultats de gravité critique et élevée, et y associe :\n\n* Un score de confiance indiquant la probabilité que le résultat soit un faux positif\n* Une explication générée par l'IA qui décrit le raisonnement\n* Un badge visuel qui permet de distinguer facilement les faux positifs probables des résultats probablement réels dans l'interface utilisateur\n\nCes résultats apparaissent dans le [rapport de vulnérabilités](https://docs.gitlab.com/user/application_security/vulnerability_report/), comme illustré ci-dessous. Vous pouvez filtrer le rapport pour vous concentrer sur les résultats qui ne sont pas des faux positifs, afin que les équipes consacrent leur temps à traiter les vulnérabilités réelles plutôt qu'à classer des résultats sans importance. \n\n![Rapport de vulnérabilités](https://res.cloudinary.com/about-gitlab-com/image/upload/v1773844787/i0eod01p7gawflllkgsr.png)\n\n\nL'évaluation de GitLab Duo Agent Platform est une recommandation. Vous gardez le contrôle sur chaque faux positif pour déterminer sa validité, et vous pouvez vérifier le raisonnement de l'agent à tout moment pour renforcer votre confiance dans le modèle.\n\n\n## Transformer les vulnérabilités en correctifs automatisés\n\nSavoir qu'une vulnérabilité est réelle ne représente que la moitié du travail. La remédiation nécessite encore de comprendre le chemin de code, de rédiger un correctif sécurisé et de s'assurer que rien d'autre n'est affecté.\n\nSi la vulnérabilité est identifiée comme probablement réelle par le flow SAST False Positive Detection, le flow Agentic SAST Vulnerability Resolution effectue automatiquement les étapes suivantes :\n\n1. Lecture du code vulnérable et du contexte environnant depuis votre dépôt\n2. Génération de correctifs proposés de haute qualité\n3. Validation des correctifs par des tests automatisés\n4. Ouverture d'une merge request avec un correctif proposé comprenant :\n   * Les modifications concrètes du code\n   * Un score de confiance\n   * Une explication des changements apportés et leur justification\n\nDans cette démonstration, vous verrez comment GitLab peut automatiquement traiter une vulnérabilité SAST, de la détection jusqu'à la création d'une merge request prête à être examinée. Observez comment l'agent lit le code, génère et valide un correctif, puis ouvre une merge request avec des modifications claires et explicites, afin que les équipes de développement puissent corriger le problème plus rapidement sans être des experts en sécurité.\n\n\u003Ciframe src=\"https://player.vimeo.com/video/1174573325?badge=0&amp;autopause=0&amp;player_id=0&amp;app_id=58479\" frameborder=\"0\" allow=\"autoplay; fullscreen; picture-in-picture; clipboard-write; encrypted-media; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" style=\"position:absolute;top:0;left:0;width:100%;height:100%;\" title=\"GitLab 18.10 AI SAST False Positive Auto Remediation\">\u003C/iframe>\u003Cscript src=\"https://player.vimeo.com/api/player.js\">\u003C/script>\n\nComme pour toute suggestion générée par l'IA, il est recommandé d'examiner attentivement la merge request proposée avant de procéder au merge.\n\n## Identifier les secrets réels\nLa détection des secrets n'est utile que si les équipes font confiance aux résultats. Lorsque les rapports regorgent d'identifiants de test, de valeurs de remplacement et de tokens d'exemple, les équipes de développement risquent de perdre du temps à examiner des informations superflues au lieu de corriger les expositions réelles. Cette situation peut ralentir la remédiation des vulnérabilités et réduire la confiance dans le scan.\n\nLa détection des faux positifs pour les secrets aide les équipes à se concentrer sur les secrets importants afin de réduire les risques plus rapidement. Lors de l'exécution sur la branche par défaut, le flow effectue automatiquement les étapes suivantes :\n\n1. Analyse de chaque résultat pour repérer les identifiants de test, les valeurs d'exemple et les secrets factices potentiels\n2. Attribution d'un score de confiance qui indique si le résultat représente un risque réel ou un probable faux positif\n3. Génération d'une explication justifiant pourquoi le secret est considéré comme réel ou comme un faux positif\n4. Ajout d'un badge dans le rapport de vulnérabilités pour que les équipes de développement puissent voir le statut en un seul coup d'œil\n\nLes équipes de développement peuvent également déclencher cette analyse manuellement depuis le rapport de vulnérabilités en sélectionnant **« Vérifier les faux positifs »** sur n'importe quel résultat de détection de secrets, ce qui leur permet d'éliminer les résultats sans risque et de se concentrer plus rapidement sur les véritables secrets.\n\n## Adoptez la sécurité basée sur l'IA dès aujourd'hui\n\nGitLab 18.10 introduit des fonctionnalités couvrant l'ensemble du workflow de gestion des vulnérabilités, de la réduction du bruit lié aux faux positifs dans les scans SAST et la détection des secrets à la génération automatique de merge requests avec des correctifs proposés.\n\nPour découvrir comment la sécurité basée sur l'IA peut réduire le temps de revue et transformer les résultats en correctifs prêts à être fusionnés, [commencez un essai gratuit de GitLab Duo Agent Platform dès maintenant](https://about.gitlab.com/gitlab-duo-agent-platform/?utm_medium=blog&utm_source=blog&utm_campaign=eg_emea_x_trial_x_fr_blog_fr).",[711,10,712],"product","features",{"featured":12,"template":13,"slug":714},"gitlab-18-10-brings-ai-native-triage-and-remediation",{"content":716,"config":726},{"tags":717,"category":10,"body":719,"date":720,"heroImage":721,"authors":722,"description":724,"title":725},[10,17,711,718],"google","L'authentification unique (SSO) simplifie l'authentification des utilisateurs et en améliore la sécurité, car ces derniers peuvent accéder à plusieurs applications avec un seul identifiant. Pour les organisations qui utilisent à la fois GitLab et Google Workspace, l'intégration d'une authentification unique basée sur le protocole SAML rationalise la gestion des accès et garantit une collaboration fluide au sein des équipes.\n\nDans ce guide, nous vous présenterons la configuration de l'authentification SAML entre Google Workspace et GitLab.com, en incluant la synchronisation automatique des groupes qui associe les groupes Google Workspace aux rôles GitLab. À la fin de ce processus, vos utilisateurs pourront se connecter à GitLab avec leurs identifiants Google, et leurs autorisations refléteront automatiquement leurs adhésions aux groupes Google.\n\n**Remarque** : ce guide se concentre sur GitLab.com (version SaaS). Si vous utilisez GitLab Self-Managed, le processus de configuration diffère légèrement. Consultez la [documentation officielle GitLab relative au protocole SAML pour les instances auto-gérées](https://docs.gitlab.com/integration/saml/) pour obtenir des instructions détaillées.\n\n## Prérequis\n\nAvant de commencer, assurez-vous de disposer des éléments suivants :\n\n* **Google Workspace** avec un accès super-administrateur\n* **GitLab.com** avec un abonnement de niveau GitLab Premium ou GitLab Ultimate\n* **Rôle de propriétaire** dans un groupe principal GitLab\n* Des utilisateurs déjà existants dans Google Workspace (ils seront créés automatiquement dans GitLab lors de leur première connexion)\n\n## Comprendre l'architecture\n\nLorsque vous configurez l'authentification unique basée sur le protocole SAML avec la synchronisation de groupe, voici ce qui se produit :\n\n1. **Flux d'authentification** : les utilisateurs accèdent à l'URL d'authentification SSO de GitLab et sont redirigés vers Google Workspace pour s'authentifier.\n2. **Assertion SAML** : après une authentification réussie, Google envoie une réponse SAML contenant les détails de l'utilisateur et ses adhésions aux groupes.\n3. **Provisionnement automatique** : GitLab crée le compte utilisateur (si nécessaire) et l'assigne aux groupes en fonction de ses adhésions aux groupes Google.\n4. **Synchronisation des autorisations** : chaque fois que les utilisateurs se connectent, GitLab met à jour leurs adhésions aux groupes et leurs rôles pour qu'elles correspondent à leurs groupes Google actuels.\n\nCette configuration offre plusieurs avantages :\n\n* **Contrôle d'accès centralisé** : vous pouvez gérer l'accès des utilisateurs via les groupes Google Workspace.\n* **Provisionnement automatique** : les nouveaux utilisateurs obtiennent un accès à GitLab dès leur première connexion.\n* **Autorisations dynamiques** : les rôles des utilisateurs se mettent à jour automatiquement en fonction des modifications de l'adhésion aux groupes.\n* **Sécurité renforcée** : vous pouvez exploiter les fonctionnalités de sécurité d'authentification de Google.\n* **Réduction de la charge administrative** : il n'est pas nécessaire de gérer manuellement les adhésions aux groupes GitLab.\n\n## Partie 1 : obtenir vos valeurs de configuration SAML GitLab\n\nTout d'abord, vous devrez collecter certaines informations depuis GitLab que vous utiliserez lors de la création de l'application SAML dans Google Workspace. Voici les étapes à suivre :\n\n### Étape 1 : accéder aux paramètres SAML de votre groupe GitLab\n\n1. Connectez-vous à **GitLab.com**.\n2. Accédez à votre **groupe principal** (remarque : l'authentification SSO SAML ne peut être configurée qu'au niveau du groupe principal, pas dans les sous-groupes).\n3. Dans la barre latérale gauche, sélectionnez **Paramètres > Authentification unique SAML**.\n\n### Étape 2 : copier les URL requises\n\nSur la page des paramètres relatifs à l'authentification unique SAML, vous verrez trois URL importantes. Copiez-les et enregistrez-les dans un endroit accessible, vous en aurez bientôt besoin :\n\n* **URL du service consommateur d'assertion** : c'est ici que Google enverra les réponses SAML.\n\n  * Format : `https://gitlab.com/groups/your-group/-/saml/callback`\n* **Identifiant** : également appelé ID de l'entité, il identifie de manière unique votre groupe GitLab.\n\n  * Format : `https://gitlab.com/groups/your-group`\n* **URL de l'authentification unique GitLab** : c'est l'URL que vos utilisateurs utiliseront pour se connecter.\n\n  * Format : `https://gitlab.com/groups/your-group/-/saml/sso`\n\n\u003Cfigure>\n  \u003Cimg src=\"https://res.cloudinary.com/about-gitlab-com/image/upload/v1769090029/lrw6jbn7ussjze6lxg5o.png\" alt=\"Paramètres d'authentification unique SAML GitLab\">\n  \u003Cfigcaption>\u003Cem>Paramètres d'authentification unique SAML GitLab\u003C/em>\u003C/figcaption>\n\u003C/figure>\n\nVous allez maintenant créer une application SAML personnalisée dans Google Workspace qui se connecte à votre groupe GitLab.\n\n### Étape 3 : accéder à la console d'administration Google\n\n1. Ouvrez un nouvel onglet de navigateur et connectez-vous à la [console d'administration Google](https://admin.google.com/) avec un compte super-administrateur.\n2. Cliquez sur l'icône **Menu** (☰) en haut à gauche.\n3. Accédez à **Applications > Applications Web et mobiles**.\n4. Cliquez sur **Ajouter une application > Ajouter une application SAML personnalisée**.\n\n\u003Cp>\u003C/p>\n\n\u003Cfigure>\n  \u003Cimg src=\"https://res.cloudinary.com/about-gitlab-com/image/upload/v1769090026/c2inhqzppdbszysupjcd.png\" alt=\"Application SAML personnalisée Google\">\n  \u003Cfigcaption>\u003Cem>Application SAML personnalisée Google\u003C/em>\u003C/figcaption>\n\u003C/figure>\n\n### Étape 4 : configurer le nom de l'application\n\n1. Dans le champ **Nom de l'application**, saisissez GitLab (ou le nom de votre choix).\n2. Facultatif : téléchargez un **logo GitLab** comme icône d'application pour faciliter l'identification de l'application.\n3. Cliquez sur **Continuer**.\n\n### Étape 5 : télécharger les détails du fournisseur d'identité Google\n\nSur la page **Détails du fournisseur d'identité Google**, vous devrez enregistrer deux éléments :\n\n1. **URL d'authentification SSO** : copiez cette URL. Elle indique à GitLab où envoyer les demandes d'authentification.\n\n   * Format d'exemple : `https://accounts.google.com/o/saml2/idp?idpid=C1234abcd`\n2. **Certificat** : cliquez sur le bouton **Télécharger** pour enregistrer le fichier de certificat.\n\n   * Le fichier sera nommé comme l'exemple suivant : `GoogleIDPCertificate-gitlab.pem`.\n   * Enregistrez ce fichier dans un endroit où vous pourrez facilement le retrouver. Vous en aurez besoin dans la section suivante.\n3. Cliquez sur **Continuer**.\n\n### Étape 6 : configurer les détails du fournisseur de services\n\nC'est ici que vous utiliserez les URL GitLab que vous avez copiées à l'étape 2. Saisissez les informations suivantes :\n\n| **Champ** | **Valeur** | **Description** |\n|-----------|-----------|-----------------|\n| **URL ACS** | Votre URL du service consommateur d'assertion GitLab | Où Google envoie les réponses SAML |\n| **ID d'entité** | Votre identifiant GitLab | Identifiant unique pour votre groupe GitLab |\n| **URL de démarrage** | Laisser vide | Non requis pour cette configuration |\n| **Format de l'ID du nom** | Sélectionnez **E-MAIL** | Format de l'identifiant utilisateur |\n| **ID du nom** | Sélectionnez **Informations de base > Adresse e-mail principale** | L'adresse e-mail principale de l'utilisateur sera utilisée comme identifiant |\n| **Réponse signée** | Laissez décoché | GitLab ne requiert pas de réponses signées par défaut |\n\n\u003Cfigure style=\"margin: 24px 0;\">\n  \u003Cimg src=\"https://res.cloudinary.com/about-gitlab-com/image/upload/v1769090028/kaui5vj14gkftbfgsbnz.png\" alt=\"Détails de l'application SAML GitLab\">\n  \u003Cfigcaption>\u003Cem>Détails de l'application SAML GitLab\u003C/em>\u003C/figcaption>\n\u003C/figure>\n\nCliquez sur **Continuer** une fois que vous avez terminé.\n\n### Étape 7 : configurer le mappage des attributs\n\nLe mappage des attributs indique à Google quelles informations utilisateur envoyer à GitLab. Vous configurerez à la fois les attributs des utilisateurs de base et l'adhésion aux groupes.\n\n#### Attributs de base\n\nAjoutez ces trois mappages d'attributs en cliquant sur **Ajouter un mappage** pour chacun :\n\n| **Attribut de l'annuaire Google** | **Attribut de l'application** |\n|-----------------------------------|-------------------------------|\n| Adresse e-mail principale | email |\n| Prénom | first_name |\n| Nom | last_name |\n\n#### Configuration de l'adhésion aux groupes\n\nIl s'agit de la configuration critique qui permet la synchronisation automatique des groupes :\n\n1. Faites défiler jusqu'à la section **« Adhésion aux groupes (facultatif) »**.\n2. Sous **« Groupes Google »**, cliquez sur **« Rechercher un groupe »**.\n3. Recherchez et sélectionnez chaque groupe Google Workspace que vous souhaitez synchroniser avec GitLab.\n\n   * Vous pouvez sélectionner jusqu'à 75 groupes\n   * Exemples : Ingénierie, DevOps, Équipe plateforme, Équipe sécurité\n4. Sous **« Attribut de l'application »**, saisissez exactement : `groups`.\n5. Cliquez sur **Terminer**.\n\n\u003Cp>\u003C/p>\n\n\u003Cfigure>\n  \u003Cimg src=\"https://res.cloudinary.com/about-gitlab-com/image/upload/v1769090027/ksuebt9uoe3w5cdzsjkl.png\" alt=\"Mappage des attributs de l'application SAML GitLab\">\n  \u003Cfigcaption>\u003Cem>Mappage des attributs de l'application SAML GitLab\u003C/em>\u003C/figcaption>\n\u003C/figure>\n\n> **Important** : le nom de l'attribut de l'application **DOIT** être exactement `groups` (minuscules). C'est ce que GitLab s'attend à recevoir dans la réponse SAML. Toute autre valeur ou majuscule empêchera la synchronisation des groupes.\n\n### Étape 8 : activer l'application pour les utilisateurs\n\nVotre application SAML est créée mais pas encore activée. Pour la rendre disponible aux utilisateurs :\n\n1. Dans la console d'administration Google, repérez votre application **GitLab** dans la liste des applications Web et mobiles.\n2. Cliquez sur l'application pour accéder aux détails.\n3. Dans la barre latérale gauche, cliquez sur **Accès utilisateur**.\n4. Sélectionnez l'une des options suivantes :\n\n   * **ACTIVÉ pour tous** : active l'application pour tous les utilisateurs de votre organisation\n   * **ACTIVÉ pour certaines unités organisationnelles** :  sélectionnez des unités organisationnelles spécifiques\n5. Cliquez sur **Enregistrer**.\n\n**Remarque** : les modifications peuvent nécessiter jusqu'à 24 heures, mais prennent généralement effet en quelques minutes.\n\n## Partie 3 : convertir le certificat au format d'empreinte SHA-1\n\nGitLab requiert une empreinte de certificat SHA-1, mais le téléchargement du certificat de Google n'inclut pas directement ce format. Vous devrez le convertir.\n\n### Étape 9 : convertir le certificat\n\nVous avez deux options pour convertir le certificat au format requis.\n\n#### Option 1 : outil de conversion en ligne\n\nIl s'agit d'une méthode viable si vous êtes à l'aise avec l'utilisation d'un outil tiers :\n\n1. **Localisez le fichier de certificat** que vous avez téléchargé à l'étape 5 :\n\n   * Vérifiez votre dossier Téléchargements\n   * Le fichier aura un nom similaire à `GoogleIDPCertificate-gitlab.pem`\n2. **Ouvrez le fichier** dans un éditeur de texte :\n\n   * Mac : **Clic droit > Ouvrir avec > TextEdit**\n   * Windows : **Clic droit > Ouvrir avec > Bloc-notes**\n   * Linux : utilisez votre éditeur de texte préféré\n3. **Copiez TOUT le contenu** du fichier, y compris l'en-tête et le pied de page :\n\n```\n-----BEGIN CERTIFICATE-----\nMIIDdDCCAlygAwIBAgIGAXqD...\n(plusieurs lignes de texte encodé)\n...kE7RnF6yQ==\n-----END CERTIFICATE-----\n```\n\n4. **Accédez à** : un outil de conversion d'empreinte SHA-1 comme [celui-ci](https://www.samltool.com/fingerprint.php).\n5. **Collez le contenu du certificat** dans la zone de texte.\n6. **Sélectionnez « SHA-1 »** dans le menu déroulant de l'algorithme (et non SHA-256 !).\n7. Cliquez sur **« Calculer l'empreinte »**.\n8. **Copiez l'empreinte résultante** : elle sera au format : `XX:XX:XX:XX:XX:...`.\n\n#### Option 2 : conversion en ligne de commande\n\nSi vous préférez utiliser la ligne de commande :\n\n**Pour Mac, Linux ou Windows avec WSL :**\n\n```bash\ncd ~/Downloads\nopenssl x509 -noout -fingerprint -sha1 -inform pem -in \"GoogleIDPCertificate-gitlab.pem\"\n```\n\nLes données de sortie afficheront :\n\n```\nSHA1 Fingerprint=XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX\n```\n\nCopiez tout ce qui se trouve après `SHA1 Fingerprint=`.\n\n## Partie 4 : finaliser la configuration SAML GitLab\n\nMaintenant que vous disposez de l'URL d'authentification SSO Google et de l'empreinte du certificat, vous pouvez finaliser la configuration côté GitLab.\n\n### Étape 10 : saisir les détails du fournisseur d'identité Google\n\nRetournez à votre onglet de navigateur GitLab (**Paramètres > Authentification unique SAML**) et procédez comme suit :\n\n1. **URL de l'authentification SSO du fournisseur d'identité** :\n\n   * Collez l'URL de l'authentification SSO que vous avez copiée depuis Google à l'étape 5.\n2. **Empreinte du certificat** :\n\n   * Collez l'empreinte SHA-1 que vous avez générée à l'étape 9.\n   * Vérifiez que le format est correct : 59 caractères avec des deux-points (XX:XX:XX:...).\n3. **Activer l'authentification SAML pour ce groupe** :\n\n   * Cochez cette case pour activer l'authentification SSO SAML.\n\n\u003Cp>\u003C/p>\n\n\u003Cfigure>\n  \u003Cimg src=\"https://res.cloudinary.com/about-gitlab-com/image/upload/v1769090027/ncoeqrdu7aahyuflrq7b.png\" alt=\"Configuration SAML GitLab avec les valeurs SAML Google\">\n  \u003Cfigcaption>\u003Cem>Configuration SAML GitLab avec les valeurs SAML Google\u003C/em>\u003C/figcaption>\n\u003C/figure>\n\n### Étape 11 : configurer les paramètres de sécurité (recommandé)\n\nPour renforcer la sécurité, envisagez d'activer ces options supplémentaires :\n\n* **Mettre en œuvre l'authentification unique SSO pour l'activité Web de ce groupe**\n\n  * Cette option oblige les utilisateurs à s'authentifier via SAML pour accéder à l'interface Web GitLab.\n* **Mettre en œuvre l'authentification unique SSO pour les activités de [Git](https://about.gitlab.com/fr-fr/blog/what-is-git/ \"Qu'est-ce que Git ?\") et du proxy de dépendance pour ce groupe**\n\n  * Cette option exige l'authentification SAML pour les opérations Git et l'accès au proxy de dépendances.\n\nCliquez sur **Enregistrer les modifications** pour appliquer votre configuration.\n\n### Étape 12 : tester la configuration SAML\n\nAvant de procéder à la synchronisation des groupes, vérifiez que l'authentification SAML de base fonctionne :\n\n1. Ouvrez une fenêtre de navigation privée ou incognito.\n2. Accédez à votre URL d'authentification SSO GitLab.\n\n   * Format : `https://gitlab.com/groups/your-group/-/saml/sso`\n3. Vous devriez être redirigé vers la page de connexion Google.\n4. Connectez-vous avec un compte Google Workspace qui a accès à l'application GitLab.\n5. Après une authentification réussie, vous devriez être redirigé vers GitLab.\n\n**Si le test réussit**, vous pouvez procéder à la configuration de la synchronisation des groupes.\n\n**Si le test échoue**, vérifiez les points suivants :\n\n* Vérifiez que l'empreinte du certificat est au format SHA-1 (et non SHA-256).\n* Confirmez que l'URL de l'authentification SSO est correcte.\n* Assurez-vous que l'utilisateur a accès à l'application SAML GitLab dans la console d'administration Google.\n* Vérifiez que l'URL ACS et l'ID de l'entité correspondent exactement.\n\n## Partie 5 : configurer la synchronisation des groupes SAML\n\nIl est maintenant temps de mapper vos groupes Google Workspace aux rôles GitLab afin que les autorisations soient automatiquement gérées en fonction de l'adhésion aux groupes.\n\n### Étape 13 : configurer le rôle d'adhésion par défaut\n\nComme bonne pratique de sécurité, définissez un rôle par défaut minimal pour les utilisateurs qui se connectent mais n'appartiennent à aucun groupe mappé :\n\n1. Dans votre groupe GitLab, accédez à **Paramètres > Général**.\n2. Développez la section **Permissions et fonctionnalités du groupe**.\n3. Sous **Rôle d'adhésion par défaut**, sélectionnez **Accès minimal ou Invité**.\n4. Cliquez sur **Enregistrer les modifications**.\n\n\u003Cp>\u003C/p>\n\n\u003Cfigure>\n  \u003Cimg src=\"https://res.cloudinary.com/about-gitlab-com/image/upload/v1769097587/syi0jeaspzt9tki0w9nd.png\" alt=\"Paramètre d'adhésion par défaut de l'authentification SSO SAML GitLab\">\n  \u003Cfigcaption>\u003Cem>Paramètre d'adhésion par défaut de l'authentification SSO SAML GitLab\u003C/em>\u003C/figcaption>\n\u003C/figure>\n\n### Étape 14 : créer des liens de groupe SAML\n\nLes liens de groupe SAML représentent les mappages entre les groupes Google Workspace et les rôles GitLab. Voici comment les créer :\n\n1. Dans votre groupe GitLab, accédez à **Paramètres > Liens de groupe SAML**.\n2. Cliquez sur **« Ajouter un nouveau lien de groupe SAML »**.\n\nPour chaque groupe Google Workspace que vous souhaitez synchroniser :\n\n**Nom du groupe SAML** :\n\n* Saisissez le **nom exact** de votre groupe Google Workspace\n* Il est **sensible à la casse** et doit correspondre parfaitement\n* Exemple : Ingénierie (et non ingénierie)\n* Pour trouver le nom exact : Console d'administration Google > Annuaire > Groupes\n\n**Niveau d'accès** : sélectionnez le rôle GitLab approprié :\n\n* **Accès minimal** : peut voir que le groupe existe\n* **Invité** :  peut afficher les tickets et laisser des commentaires\n* **Rapporteur** : peut récupérer le code, afficher les tickets et créer de nouveaux tickets\n* **Développeur** : peut effectuer un push du code, créer des merge requests et gérer les tickets\n* **Chargé de maintenance** : peut gérer les paramètres du projet et les membres\n* **Propriétaire** : il possède le contrôle administratif complet sur le groupe\n\n3. Cliquez sur **Enregistrer**.\n4. **Répétez ce processus** pour chaque groupe Google Workspace que vous souhaitez mapper.\n\n**Remarque** : les règles de synchronisation des groupes SAML sont appliquées chaque fois qu'un utilisateur se connecte. Si l'adhésion d'un utilisateur à un groupe Google correspond à une règle de synchronisation, son rôle GitLab sera automatiquement défini sur le niveau d'accès configuré, même si vous l'avez modifié manuellement. Par exemple, si vous configurez une règle de synchronisation qui accorde un accès « Chargé de maintenance » puis que vous promouvez manuellement un utilisateur à « Propriétaire », il sera automatiquement rétrogradé à « Chargé de maintenance » » lors de sa prochaine connexion SAML.\n\n**Bonnes pratiques** : pour maintenir des niveaux d'accès personnalisés pour des utilisateurs spécifiques, effectuez l'une des actions suivantes :\n\n* Utilisez la synchronisation de groupe SAML uniquement sur votre groupe principal et gérez manuellement les autorisations dans les sous-groupes.\n* Créez des groupes Google séparés pour les utilisateurs qui nécessitent des autorisations élevées.\n* Évitez de configurer des règles de synchronisation qui entreraient en conflit avec les affectations de rôles manuelles.\n\n\u003Cfigure>\n  \u003Cimg src=\"https://res.cloudinary.com/about-gitlab-com/image/upload/v1769090028/etjoaiuyhnqh4gnjqcha.png\" alt=\"Configuration des liens de groupe SAML GitLab\">\n  \u003Cfigcaption>\u003Cem>Configuration des liens de groupe SAML GitLab\u003C/em>\u003C/figcaption>\n\u003C/figure>\n\n### Exemple de configuration de mappage de groupes\n\nVoici un exemple pratique de la façon dont vous pourriez structurer vos mappages de groupes :\n\n| **Groupe Google Workspace** | **Rôle GitLab** | **Objectif** |\n|------------------------------|-----------------|--------------|\n| Administrateur GitLab | Propriétaire | Accès administratif complet |\n| Équipe d'ingénierie | Chargé de maintenance | Peut gérer les projets et les paramètres |\n| Équipe de développement | Développeur | Peut écrire et effectuer un push du code |\n| Équipe d'assurance qualité | Développeur | Peut tester et gérer les tickets |\n| Prestataires | Rapporteur | Accès en lecture seule au code |\n| Tous les employés | Accès minimal | Visibilité de base |\n\n### Étape 15 : vérifier les liens de groupe\n\nAprès avoir créé tous vos liens de groupe :\n\n1. Examinez la liste complète des liens de groupe SAML dans **Paramètres > Liens de groupe SAML**.\n2. Vérifiez que chaque **nom de groupe SAML** correspond exactement au groupe Google Workspace correspondant.\n3. Vérifiez que chaque **niveau d'accès** est approprié pour l'objectif prévu.\n4. Vérifiez les fautes de frappe ou les espaces supplémentaires.\n\n## Partie 6 : tester la configuration complète\n\nIl est maintenant temps de tester l'ensemble de la configuration, y compris la synchronisation des groupes.\n\n### Étape 16 : tester avec un utilisateur réel\n\nChoisissez un utilisateur de test qui répond à ces critères :\n\n* Possède un compte Google Workspace\n* Est membre d'au moins un groupe Google Workspace que vous avez configuré\n* A l'application SAML GitLab activée dans la console d'administration Google\n* Idéalement, est quelqu'un d'autre que vous (pour garantir un test réaliste)\n\nPour effectuer le test :\n\n1. **Ouvrez une fenêtre de navigation privée ou incognito**\n2. **Accédez à votre URL d'authentification SSO GitLab** :\n\n   * `https://gitlab.com/groups/your-group/-/saml/sso`\n3. **Connectez-vous** avec les identifiants Google Workspace de l'utilisateur de test\n4. L'utilisateur devrait être :\n\n   * Authentifié avec succès\n   * Redirigé vers GitLab\n   * Ajouté automatiquement au groupe GitLab\n   * Assigné au rôle approprié en fonction de son adhésion au groupe Google\n\n### Étape 17 : vérifier l'adhésion au groupe et l'attribution de rôle\n\nDans votre compte administrateur GitLab :\n\n1. Accédez à votre groupe dans GitLab.\n2. Sélectionnez **Gestion > Membres** dans la barre latérale gauche.\n3. Trouvez l'utilisateur de test dans la liste des membres.\n4. Vérifiez les points suivants :\n\n   * L'utilisateur apparaît dans la liste des membres.\n   * L'utilisateur a le **rôle maximum** correct en fonction de son/ses groupe(s) Google.\n   * La colonne **Source** affiche un indicateur SAML.\n\n\u003Cp>\u003C/p>\n\n\u003Cfigure>\n  \u003Cimg src=\"https://res.cloudinary.com/about-gitlab-com/image/upload/v1769090026/hiov7kiukidsiyscfesg.png\" alt=\"Utilisateur SAML vérifié ajouté\">\n  \u003Cfigcaption>\u003Cem>Utilisateur SAML vérifié ajouté\u003C/em>\u003C/figcaption>\n\u003C/figure>\n\n## Partie 7 : configurer l'accès aux sous-groupes (facultatif)\n\nPour les grandes organisations, vous souhaiterez peut-être fournir un contrôle d'accès plus granulaire en utilisant les sous-groupes GitLab. Les liens de groupe SAML peuvent être configurés à n'importe quel niveau de votre hiérarchie de groupes pour vous permettre de mapper différents groupes Google Workspace à des équipes ou projets spécifiques.\n\n### Comprendre la structure des sous-groupes GitLab\n\nGitLab prend en charge les hiérarchies de groupes imbriqués qui peuvent refléter votre structure organisationnelle :\n\n```\nacme-corp/                          ← Top-level group (SAML configured here)\n├── engineering/                    ← Subgroup\n│   ├── backend/                   ← Nested subgroup\n│   └── frontend/                  ← Nested subgroup\n├── marketing/                      ← Subgroup\n└── operations/                     ← Subgroup\n```\n\n### Créer des sous-groupes\n\nSi vous devez créer des sous-groupes supplémentaires :\n\n1. Accédez à votre **groupe parent** (par exemple, acme-corp).\n2. Cliquez sur le bouton **Nouveau sous-groupe**.\n3. Configurez le sous-groupe :\n\n   * **Nom du sous-groupe** : nom affiché (par exemple, Ingénierie)\n   * **URL du sous-groupe** : slug d'URL (par exemple, ingenierie)\n   * **Niveau de visibilité** : choisissez Privé, Interne ou Public\n4. Cliquez sur **Créer un sous-groupe**.\n5. Répétez le processus pour les autres sous-groupes si nécessaire.\n\n### Configurer les liens de groupe SAML pour les sous-groupes\n\nSuivez les étapes ci-dessous pour configurer les liens de groupe SAML pour les sous-groupes.\n\n#### Ajouter de nouveaux groupes Google à l'application SAML (si nécessaire)\n\nSi vous ajoutez de nouveaux groupes Google Workspace pour l'accès aux sous-groupes :\n\n1. Accédez à **Console d'administration Google > Applications > Applications Web et mobiles > GitLab**.\n2. Cliquez sur **Mappage des attributs SAML**.\n3. Faites défiler jusqu'à **« Adhésion aux groupes (facultatif) »**.\n4. Ajoutez vos nouveaux groupes (par exemple, équipe backend, équipe frontend).\n5. Vérifiez que l'**« Attribut de l'application »** est toujours `groups`.\n6. Cliquez sur **Enregistrer**.\n\n#### Mapper les groupes Google aux sous-groupes\n\n1. **Accédez au sous-groupe spécifique** dans GitLab\n\n   * Exemple : acme-corp/engineering/backend\n2. Accédez à **Paramètres > Liens de groupe SAML**.\n3. Cliquez sur **« Ajouter un nouveau lien de groupe SAML »**.\n4. Configurez le mappage :\n\n   * **Nom du groupe SAML** : équipe backend (nom exact du groupe Google Workspace)\n   * **Niveau d'accès** : Développeur (ou le rôle de votre choix)\n5. Cliquez sur **Enregistrer**.\n\nRépétez ce processus pour tous les sous-groupes et leurs groupes Google correspondants.\n\n### Exemple d'accès multi-niveaux\n\nVoici comment les autorisations pourraient fonctionner à différents niveaux :\n\n#### Groupe principal : acme-corp\n\nLiens de groupe SAML :\n\n* « Administrateurs de l'entreprise » → Propriétaire\n* « Tous les collaborateurs » → Accès minimal\n\n#### Sous-groupe : acme-corp/engineering\n\nLiens de groupe SAML :\n\n* « Responsables ingénierie » → Propriétaire\n* « Équipe ingénierie » → Chargé de maintenance\n\n#### Sous-groupe imbriqué : acme-corp/engineering/backend\n\nLiens de groupe SAML :\n\n* « Responsables backend » → Chargé de maintenance\n* « Équipe backend » → Développeur\n\n### Héritage et combinaison des autorisations\n\nComprendre le comportement des autorisations est important :\n\n* **Calcul du rôle** : à chaque niveau, les utilisateurs reçoivent le **rôle le plus élevé** de tous leurs groupes Google.\n* **Héritage** : les autorisations plus élevées au niveau des groupes parents sont transmises aux sous-groupes enfants.\n* **Indépendance** : chaque niveau calcule les autorisations en fonction de ses propres liens de groupe et des autorisations héritées.\n* **Aucune limitation** : les autorisations inférieures au niveau des groupes parents ne restreignent PAS les autorisations supérieures au niveau des groupes enfants.\n\n**Exemples de scénarios** :\n\n**Utilisateur A** (membre de l'équipe backend uniquement) :\n\n* acme-corp : accès minimal (depuis « Tous les collaborateurs » par défaut)\n* acme-corp/engineering : accès minimal (hérité du groupe parent)\n* acme-corp/engineering/backend : Développeur (depuis le mappage « Équipe backend »)\n\n**Utilisateur B** (membre des responsables ingénierie et de l'équipe backend) :\n\n* acme-corp : accès minimal (depuis « Tous les collaborateurs » par défaut)\n* acme-corp/engineering : Propriétaire (depuis le mappage « Responsables ingénierie »)\n* acme-corp/engineering/backend : Propriétaire (hérité du groupe parent, qui est supérieur à Développeur)\n\n## Comment fonctionne la synchronisation ?\n\nComprendre les mécanismes de synchronisation des groupes SAML vous aide à gérer le système efficacement.\n\n### Calendrier de synchronisation\n\n* **Synchronisation** : les adhésions aux groupes se mettent à jour **chaque fois** qu'un utilisateur se connecte via SAML.\n* **Fréquence** : les modifications ne sont pas continues, elles ne se produisent qu'à la connexion.\n* **Direction** : la synchronisation est **unidirectionnelle** de Google Workspace vers GitLab.\n* **Première connexion** : le compte utilisateur est créé automatiquement et les groupes sont affectés.\n* **Connexions suivantes** : les adhésions aux groupes existantes sont mises à jour pour correspondre aux groupes Google actuels.\n\n### Priorité et combinaison des rôles\n\nSi un utilisateur appartient à plusieurs groupes Google Workspace :\n\n* GitLab évalue **tous** les groupes de l'utilisateur à chaque niveau de la hiérarchie.\n* L'utilisateur obtient le **rôle le plus élevé** de l'un de ses groupes.\n* Ce calcul se produit indépendamment à chaque niveau (groupe principal, sous-groupes, etc.).\n\n**Exemple** :\n\n* Utilisateur dans « Développeurs » (rôle Développeur) + « Responsables tech » (rôle Chargé de maintenance) → **Chargé de maintenance**\n\n### Modifications automatiques de rôle\n\nLe système gère automatiquement les modifications d'adhésion :\n\n* **Utilisateur ajouté à un groupe Google** : rôle mis à niveau lors de la prochaine connexion.\n* **Utilisateur supprimé d'un groupe Google** : rôle recalculé en fonction des groupes restants lors de la prochaine connexion.\n* **Utilisateur supprimé de tous les groupes mappés** : revient au rôle d'adhésion par défaut lors de la prochaine connexion.\n* **Utilisateur ajouté à des groupes supplémentaires** : obtient le rôle le plus élevé de tous les groupes lors de la prochaine connexion.\n\n### Calendrier de propagation\n\nVoici le calendrier de propagation à prendre en compte :\n\n* **Modifications Google Workspace** : peuvent prendre jusqu'à 24 heures pour se propager, bien qu'elles ne prennent généralement que quelques minutes.\n* **Synchronisation GitLab** : se produit immédiatement lorsque l'utilisateur se connecte après que les modifications Google sont actives.\n* **Tests** : demandez aux utilisateurs de se déconnecter et de se reconnecter pour tester les modifications d'autorisations.\n\n## Comprendre le cycle de vie des utilisateurs et les cas particuliers\n\n### Que se passe-t-il lorsque vous supprimez un utilisateur de GitLab ?\n\n**Suppression des autorisations uniquement** : si vous supprimez un utilisateur des projets GitLab mais laissez son compte actif et qu'il est toujours dans les groupes Google autorisés :\n\n* Il conserve le même compte (même ID d'utilisateur et nom d'utilisateur).\n* Lorsqu'il se connecte via SAML, ses adhésions aux groupes sont automatiquement restaurées.\n* Il retrouve les autorisations en fonction de ses adhésions actuelles aux groupes Google.\n\n**Blocage du compte** :\n\n* Le compte existe mais est verrouillé.\n* L'utilisateur ne peut pas se connecter même s'il est dans les groupes Google.\n* Peut être débloqué ultérieurement, en préservant tout l'historique.\n\n**Suppression du compte** :\n\n* Le compte est définitivement supprimé.\n* Si l'utilisateur se connecte à nouveau (tout en étant toujours dans les groupes Google), GitLab crée un **compte entièrement nouveau**.\n* Le nouveau compte a un ID d'utilisateur différent sans aucune connexion avec l'ancien.\n\n### Processus de désactivation approprié\n\nPour révoquer définitivement l'accès d'un utilisateur, suivez ces étapes :\n\n1. **Supprimez l'utilisateur des groupes Google Workspace** pour empêcher l'authentification.\n2. **Bloquez l'utilisateur dans GitLab** pour empêcher la recréation du compte et préserver les pistes d'audit.\n3. **Supprimez le compte (facultatif)** seulement si vous êtes certain que l'utilisateur ne reviendra pas.\n\n> **Important** : supprimer un utilisateur uniquement de GitLab sans le supprimer des groupes Google signifie qu'il peut simplement se reconnecter et obtenir un nouvel accès.\n\n### Propagation de l'adhésion aux groupes Google\n\nSelon [la documentation de Google](https://support.google.com/a/answer/11143403), les modifications d'adhésion aux groupes peuvent prendre jusqu'à 24 heures pour se propager, bien qu'elles se produisent généralement en quelques minutes.\n\n### Scénarios de recréation de compte\n\n| **Scénario** | **Utilisateur toujours dans les groupes Google ?** | **Que se passe-t-il lors de la connexion** |\n|--------------|-----------------------------------------------------|---------------------------------------------|\n| Autorisations supprimées | Oui | Même compte, adhésions aux groupes restaurées |\n| Compte bloqué | Oui | La connexion échoue |\n| Compte supprimé | Oui | Nouveau compte créé avec un nouvel ID utilisateur |\n| Suppression des groupes Google | Non | La connexion échoue chez Google |\n\n## Dépannage des problèmes courants\n\nMême une configuration minutieuse peut entraîner des problèmes. Voici des solutions pour remédier aux problèmes les plus courants.\n\n### Les utilisateurs ne sont pas ajoutés aux groupes\n\n**Problème** : l'utilisateur se connecte avec succès via SAML mais n'apparaît dans aucun groupe GitLab, ou apparaît seulement avec le rôle par défaut.\n\n**Causes possibles et solutions** :\n\n1. **Les noms de groupe ne correspondent pas exactement**\n\n   * Vérifiez l'orthographe et les majuscules dans Google Workspace et GitLab.\n   * Recherchez les espaces supplémentaires avant ou après les noms de groupe.\n   * Vérifiez le nom exact dans Console d'administration Google > Annuaire > Groupes.\n2. **L'utilisateur n'est pas réellement dans le groupe Google**\n\n   * Vérifiez l'adhésion : Console d'administration Google > Annuaire > Groupes > Groupe > Membres.\n   * N'oubliez pas que l'adhésion aux groupes imbriqués pourrait être exclue.\n3. **Les groupes ne sont pas configurés dans l'application SAML**\n\n   * Vérifiez que les groupes sont sélectionnés dans le mappage des attributs SAML Google.\n   * Confirmez que l'« Attribut de l'application » est défini sur `groups` (minuscules).\n   * Réalisez un test de connexion SAML pour inspecter la réponse SAML.\n4. **Problème de calendrier ou de cache**\n\n   * Attendez 24 heures pour que les modifications Google se propagent complètement.\n   * Demandez à l'utilisateur de se déconnecter complètement de GitLab et Google.\n   * Effacez le cache du navigateur et réessayez.\n   * L'utilisateur doit se connecter via l'URL d'authentification unique SAML, pas la connexion GitLab normale.\n\n### L'utilisateur a un rôle incorrect\n\n**Problème** : l'utilisateur a accès mais possède le mauvais niveau d'autorisation.\n\n**Causes possibles et solutions** :\n\n1. **L'utilisateur appartient à plusieurs groupes**\n\n   * Rappel : les utilisateurs obtiennent le rôle **le plus élevé** de tous leurs groupes.\n   * Vérifiez tous les groupes Google auxquels l'utilisateur appartient.\n   * Examinez toutes les configurations de liens de groupe SAML à tous les niveaux.\n2. **Lien de groupe SAML mal configuré**\n\n   * Vérifiez le paramètre Niveau d'accès dans Paramètres > Liens de groupe SAML.\n   * Recherchez les mappages de groupes en double qui pourraient entrer en conflit.\n3. **L'utilisateur ne s'est pas connecté depuis les modifications**\n\n   * Les rôles ne se mettent à jour que lorsque les utilisateurs se connectent via SAML.\n   * Demandez à l'utilisateur de se déconnecter complètement et de se reconnecter via l'URL d'authentification SSO.\n4. **Autorisations héritées des groupes parents**\n\n   * Vérifiez les liens de groupe SAML dans les groupes parents.\n   * N'oubliez pas que les rôles plus élevés au niveau des groupes parents sont transmis aux groupes enfant.\n\n### L'authentification SAML échoue complètement\n\n**Problème** : les utilisateurs ne peuvent pas du tout se connecter ou reçoivent des messages d'erreur pendant l'authentification.\n\n**Causes possibles et solutions** :\n\n1. **Empreinte de certificat incorrecte**\n\n   * Vérifiez que vous avez utilisé le format SHA-1, et non SHA-256.\n   * Vérifiez que l'empreinte a le format correct avec des deux-points.\n   * Régénérez un certificat en utilisant l'outil en ligne ou la commande OpenSSL.\n2. **URL d'authentification unique incorrecte**\n\n   * Vérifiez à nouveau l'URL d'authentification unique copiée depuis Google.\n   * Assurez-vous qu'il n'y a pas d'espaces ou de caractères supplémentaires.\n3. **Incompatibilité de l'URL ACS ou de l'ID de l'entité**\n\n   * Vérifiez que l'URL ACS dans la console d'administration Google correspond exactement à GitLab.\n   * Confirmez que l'ID de l'entité correspond entre les deux systèmes.\n4. **L'utilisateur n'a pas d'accès à l'application**\n\n   * Vérifiez les paramètres d'accès utilisateur dans la console d'administration Google.\n   * Vérifiez que l'unité organisationnelle de l'utilisateur a l'application activée.\n   * Confirmez que l'application est activée pour les utilisateurs appropriés.\n5. **Certificat expiré**\n\n   * Vérifiez les dates de validité du certificat.\n   * Téléchargez un nouveau certificat si nécessaire.\n\n### Attribut de groupe manquant dans la réponse SAML\n\n**Problème** : les utilisateurs peuvent se connecter, mais la synchronisation des groupes ne fonctionne pas.\n\n**Causes possibles et solutions** :\n\n1. **Groupes non sélectionnés dans la configuration Google**\n\n   * Retournez à **Console d'administration Google > Applications > GitLab > Mappage des attributs**.\n   * Vérifiez que les groupes sont sélectionnés sous « Adhésion aux groupes ».\n   * Confirmez que l'« Attribut de l'application » est exactement `groups` (minuscules).\n2. **L'utilisateur n'est dans aucun groupe configuré**\n\n   * Seuls les groupes auxquels l'utilisateur appartient sont envoyés dans la réponse SAML.\n   * Ajoutez l'utilisateur à au moins un groupe sélectionné pour effectuer un test.\n3. **La configuration ne s'est pas propagée**\n\n   * Attendez jusqu'à 24 heures pour que les modifications prennent effet.\n   * Essayez de vous déconnecter de la console d'administration Google et de vous reconnecter.\n4. **Faute de frappe dans le nom de l'attribut de l'application**\n\n   * Le nom de l'attribut doit être exactement `groups` (minuscules).\n   * Une lettre majuscule ou un espace supplémentaire cassera la fonctionnalité.\n\n## Bonnes pratiques pour gérer la synchronisation de groupe SAML\n\nSuivez ces recommandations pour maintenir une configuration sécurisée et efficace.\n\n### Bonnes pratiques de sécurité\n\n1. **Maintenir un accès d'urgence**\n\n   * Conservez au moins un compte Propriétaire qui utilise l'authentification par mot de passe (pas SAML).\n   * Vous aurez un accès d'urgence si la configuration SAML ne fonctionne plus.\n   * Stockez ces identifiants de façon sécurisée.\n2. **Utiliser le principe du moindre privilège**\n\n   * Définissez l'adhésion par défaut sur Accès minimal.\n   * Accordez uniquement des autorisations plus élevées via des mappages de groupes explicites.\n   * Examinez et auditez régulièrement les adhésions aux groupes.\n3. **Activer les options d'application**\n\n   * Activez les options « Mettre en œuvre l'authentification unique SSO ».\n   * Cela empêche les utilisateurs de contourner l'authentification unique.\n   * Les exceptions doivent être rares et bien documentées.\n4. **Effectuer des audits de sécurité réguliers**\n\n   * Examinez tous les trimestre les adhésions aux groupes Google Workspace.\n   * Vérifiez chaque année les mappages de liens de groupe SAML.\n   * Surveillez les journaux d'audit GitLab pour détecter les schémas d'accès inhabituels.\n\n## Résumé et prochaines étapes\n\nFélicitations ! Vous avez configuré avec succès l'authentification unique basée sur le protocole SAML et la synchronisation automatique des groupes entre Google Workspace et GitLab. Votre configuration offre désormais :\n\n* **Une authentification transparente** : les utilisateurs se connectent avec leurs identifiants Google Workspace.\n* **Un provisionnement automatique** : les comptes utilisateur sont créés lors de la première connexion sans intervention manuelle.\n* **Des autorisations dynamiques** : les adhésions aux groupes et les rôles se mettent à jour automatiquement en fonction des groupes Google Workspace.\n* **Un contrôle d'accès centralisé** : gérez tous les accès via vos groupes Google Workspace existants.\n* **Une sécurité renforcée** : exploitez l'infrastructure d'authentification de Google et appliquez des politiques cohérentes.\n* **Une réduction de la charge administrative** : éliminez la gestion manuelle des utilisateurs et des autorisations dans GitLab.\n\n### Fonctionnement correct\n\nLorsque les utilisateurs accèdent à GitLab :\n\n1. Ils accèdent à votre URL d'authentification SSO GitLab.\n2. Ils s'authentifient avec leurs identifiants Google Workspace.\n3. Ils sont automatiquement ajoutés aux groupes GitLab appropriés.\n4. Ils reçoivent des autorisations basées sur leurs adhésions aux groupes Google.\n5. Leurs autorisations se mettent à jour chaque fois qu'ils se connectent.\n\n### Ressources supplémentaires\n\n* [Documentation concernant l'authentification unique basée sur le protocole SAML de GitLab](https://docs.gitlab.com/ee/user/group/saml_sso/)\n* [Documentation concernant la synchronisation des groupes SAML GitLab](https://docs.gitlab.com/ee/user/group/saml_sso/group_sync.html)\n* [Configuration de l'application SAML sur Google Workspace](https://support.google.com/a/answer/6087519?hl=fr&sjid=14836880554957868479-NA)\n* [Outil d'empreinte de certificat SAML](https://www.samltool.com/fingerprint.php)","2026-03-12","https://res.cloudinary.com/about-gitlab-com/image/upload/v1759320418/xjmqcozxzt4frx0hori3.png",[723],"Omid Khan","Découvrez comment automatiser le provisionnement des utilisateurs et synchroniser les autorisations avec les groupes Google dans ce guide détaillé.","Comment configurer l'authentification SSO SAML GitLab avec Google Workspace",{"featured":12,"template":13,"slug":727},"how-to-set-up-gitlab-saml-sso-with-google-workspace",{"promotions":729},[730,744,756],{"id":731,"categories":732,"header":734,"text":735,"button":736,"image":741},"ai-modernization",[733],"ai-ml","Is AI achieving its promise at scale?","Quiz will take 5 minutes or less",{"text":737,"config":738},"Get your AI maturity score",{"href":739,"dataGaName":740,"dataGaLocation":243},"/assessments/ai-modernization-assessment/","modernization assessment",{"config":742},{"src":743},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/qix0m7kwnd8x2fh1zq49.png",{"id":745,"categories":746,"header":748,"text":735,"button":749,"image":753},"devops-modernization",[711,747],"devsecops","Are you just managing tools or shipping innovation?",{"text":750,"config":751},"Get your DevOps maturity score",{"href":752,"dataGaName":740,"dataGaLocation":243},"/assessments/devops-modernization-assessment/",{"config":754},{"src":755},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138785/eg818fmakweyuznttgid.png",{"id":757,"categories":758,"header":759,"text":735,"button":760,"image":764},"security-modernization",[10],"Are you trading speed for security?",{"text":761,"config":762},"Get your security maturity score",{"href":763,"dataGaName":740,"dataGaLocation":243},"/assessments/security-modernization-assessment/",{"config":765},{"src":766},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/p4pbqd9nnjejg5ds6mdk.png",{"header":768,"blurb":769,"button":770,"secondaryButton":774},"Commencez à développer plus rapidement dès aujourd'hui","Découvrez ce que votre équipe peut accomplir avec la plateforme d'orchestration intelligente pour le DevSecOps.\n",{"text":46,"config":771},{"href":772,"dataGaName":49,"dataGaLocation":773},"https://gitlab.com/-/trial_registrations/new?glm_content=default-saas-trial&glm_source=about.gitlab.com/fr-fr/","feature",{"text":51,"config":775},{"href":53,"dataGaName":54,"dataGaLocation":773},1777310031049]