Dans le développement logiciel, des mesures rigoureuses de sécurité et de conformité sont indispensables, en particulier dans des secteurs tels que les services financiers, où l'intégrité des données et le respect des réglementations ne sont pas négociables. La séparation des tâches (Separation of Duties) joue un rôle clé dans le maintien de ces normes. Elle garantit qu'aucune personne ne contrôle totalement un processus du début à la fin, réduisant ainsi le risque d'erreurs et d'activités non autorisées. La séparation des tâches atténue les risques liés à la chaîne d'approvisionnement logicielle en empêchant les actes externes et malveillants susceptibles de compromettre l'intégrité du processus de développement logiciel.
L'importance de la séparation des tâches dans le secteur des services financiers
Dans le secteur des services financiers, la séparation des tâches joue un rôle essentiel pour protéger les données sensibles et garantir la conformité réglementaire. Sur le plan stratégique, voici comment la séparation des tâches contribue à ce secteur :
-
Atténuation des risques : en répartissant les responsabilités entre plusieurs personnes exerçant des rôles différents, la séparation des tâches réduit le risque d'erreurs, de fraudes et d'activités non autorisées qui pourraient compromettre l'intégrité des systèmes ou la conformité réglementaire.
-
Renforcement de la responsabilité : une répartition claire des tâches empêche quiconque d'initier, d'autoriser ou d'exécuter un processus complet de manière autonome. Cette transparence améliore la responsabilisation, essentielle pour maintenir la confiance avec les parties prenantes et les organismes régulateurs.
-
Conformité réglementaire : la séparation des tâches aide les entreprises à respecter les réglementations financières afin que les opérations sensibles soient menées dans le respect des règles strictes de surveillance et de contrôle. La conformité à ces normes protège non seulement contre les sanctions, mais préserve aussi la réputation de l'entreprise.
-
Résilience opérationnelle : en décentralisant la prise de décision et l'exécution des tâches, les entreprises deviennent moins vulnérables aux perturbations causées par des erreurs humaines, des actions malveillantes ou des événements inattendus.
Quelles sont les fonctionnalités de séparation des tâches de GitLab ?
GitLab offre des fonctionnalités de séparation des tâches à chaque étape du workflow DevSecOps.
Le diagramme ci-dessus illustre l'intégration de fonctionnalités clés telles que les stratégies d'approbation des merge requests, les fonctionnalités protégées, les autorisations des utilisateurs, les frameworks de conformité et les événements d'audit, lesquelles fonctionnent de concert pour appliquer les principes de la séparation des tâches. Chaque fonctionnalité est détaillée dans les sections suivantes, qui vous expliquent comment mettre en place un environnement de développement sécurisé et conforme.
Les stratégies d'approbation des merge requests
L’un des défis auxquels le secteur des services financiers est confronté est la mise en œuvre des mécanismes d'approbation qui bloquent l'intégration de modifications non autorisées ou non vérifiées. C'est là que les stratégies d'approbation des merge requests entrent en jeu. Elles renforcent la séparation des tâches entre les équipes de sécurité et de développement, en empêchant les développeurs et développeuses d'approuver leurs propres modifications de code, en particulier si elles contiennent des vulnérabilités. Elles veillent également à ce que le code ne soit pas déployé directement dans des environnements de production sans une supervision adéquate.
Lors de l'élaboration d'une stratégie d'approbation, il est conseillé de déterminer qui serait l'approbateur idéal pour garantir la qualité et la sécurité du code. Il peut s'agir d'un utilisateur individuel, d'un groupe tel que l'équipe de sécurité des applications, ou encore d'une personne exerçant une fonction spécifique, tel qu'un chargé de maintenance. Pour ajouter d'autres restrictions, vous devez prendre en compte les fonctionnalités stratégiques clés suivantes :
-
Empêcher l'approbation par l'auteur : cette mesure instaure un garde-fou afin que l'auteur d'une merge request ne puisse pas approuver ses propres modifications. En exigeant une revue de code indépendante, cette stratégie contribue à maintenir l'objectivité et l'impartialité du processus d'approbation.
-
Empêcher les approbations par les utilisateurs ayant ajouté des validations : les utilisateurs qui ajoutent des validations à une merge request ne peuvent pas non plus l'approuver. Cette stratégie renforce le principe de revue de code indépendante, de sorte que les modifications sont examinées par des membres de l'équipe qui n'ont pas directement contribué aux modifications.
-
Empêcher la modification des règles d'approbation : pour préserver l'intégrité du processus d'approbation, GitLab permet aux administrateurs d'empêcher la modification des règles d'approbation au niveau du projet ou de la merge request. Ainsi, une fois les stratégies d'approbation définies, ces règles ne peuvent plus être contournées ou modifiées par des utilisateurs non autorisés.
-
Exiger le mot de passe de l'utilisateur lors de l'approbation : pour encore plus de sécurité, GitLab peut demander aux utilisateurs de saisir leur mot de passe lors de l'approbation d'une merge request.
Afin de maintenir une séparation claire des tâches, il est conseillé de créer un groupe principal distinct destiné à héberger vos stratégies de sécurité, ainsi que les stratégies d'approbation des merge requests. Cette configuration réduit le nombre d'utilisateurs ayant des autorisations héritées et permet un contrôle plus strict de la gestion des stratégies. À partir de ce groupe distinct, vous pouvez relier les projets relatifs aux stratégies de sécurité au niveau du groupe le plus élevé qui correspond à vos objectifs. Ainsi, vous réduisez les frais généraux de gestion des stratégies et garantissez une couverture complète de votre environnement de développement.
Il est également important de noter que lorsqu'une stratégie est activée par défaut, elle s'applique automatiquement à tous les projets au sein des groupes, sous-groupes et projets associés. Si vous souhaitez appliquer des stratégies de manière plus ciblée, GitLab vous recommande de les associer à un label de framework de conformité. Nos clients soumis à de fortes réglementations créent généralement des labels de conformité spécifiques pour répondre aux exigences réglementaires, telles que « SOX » et « PCI ». Associer ces labels à un framework permet également au centre de conformité natif de gérer des stratégies de sécurité adaptées à divers cas d'utilisation.
Les frameworks de conformité et contrôles
Les grandes entreprises évoluant dans des secteurs réglementés rencontrent des défis importants liés au maintien de la conformité. Les processus manuels sont sujets aux erreurs et il peut être difficile de maintenir une application cohérente des stratégies au sein des différentes équipes.
En utilisant les frameworks de conformité de GitLab, ces entreprises peuvent automatiser et administrer des mesures préventives, gérer systématiquement les risques et mettre en œuvre la conformité réglementaire de manière fluide. Ces frameworks permettent d'intégrer des protocoles de sécurité et des jobs personnalisés dans n’importe quel pipeline.
Pour protéger les paramètres de conformité au niveau de l'entreprise, GitLab permet uniquement aux propriétaires de groupes ou de projets d'ajouter ou de supprimer des frameworks de conformité. Cette mesure empêche les équipes de développement ou les responsables de modifier les configurations de conformité sans disposer des autorisations appropriées, ajoutant ainsi un niveau de sécurité supplémentaire. Il est important de noter que lorsqu'une personne dispose des autorisations de chargé de maintenance, elle est autorisée à créer un sous-groupe, elle devient propriétaire de ce sous-groupe et elle peut en modifier le framework de conformité. Pour éviter cela, il convient de limiter le nombre de personnes autorisées à créer des sous-groupes via les paramètres d'autorisations et de gestion des groupes.
La séparation des tâches en fonction des autorisations et des rôles
Pour implémenter efficacement la séparation des tâches dans le secteur des services financiers, il est essentiel d'établir un contrôle d'accès clair et précis. GitLab propose un modèle d'autorisations à plusieurs niveaux avec des rôles prédéfinis : invité, rapporteur, développeur, chargé de maintenance et propriétaire. Chaque rôle dispose d'un ensemble spécifique d'autorisations afin que les personnes concernées puissent accomplir leurs tâches sans outrepasser leurs attributions, évitant ainsi les conflits d'intérêts ou les risques pour la sécurité. GitLab recommande d'attribuer les rôles en suivant le principe du moindre privilège en matière d'accès.
Pour les entreprises ayant besoin d'une gestion plus granulaire, en particulier celles qui utilisent GitLab Ultimate, les rôles personnalisés offrent encore plus de flexibilité. Ces rôles permettent de définir des autorisations spécifiques, adaptées à leurs workflows uniques et aux exigences de conformité associées. Ce système est particulièrement utile pour garantir la séparation des tâches, car aucune personne ne peut effectuer des tâches contradictoires.
Un exemple courant est le rôle de déployeur : il s'agit d'une personne qui a l'autorisation de déployer des jobs, mais pas de modifier ou d'effectuer un push du code. GitLab répond à cette exigence par le biais des environnements protégés qui vous permettent d'inviter des groupes autorisés à déployer des jobs tout en limitant le rôle des utilisateurs à celui de rapporteur. Notez que le job de déploiement doit inclure le mot-clé de l'environnement concerné. Cette configuration permet aux utilisateurs de déployer des jobs sans pouvoir modifier le code, garantissant ainsi le respect des exigences en matière de conformité réglementaire.
En définissant et en appliquant rigoureusement les rôles et autorisations, les entreprises peuvent créer un environnement de développement sécurisé et conforme. Si vous souhaitez examiner les autorisations de vos utilisateurs sur une plus grande échelle, vous pouvez utiliser ce rapport sur les membres d'un groupe. Il vous permet de voir le nombre de membres occupant chaque rôle dans votre environnement et d'évaluer les actions à entreprendre en conséquence.
Les fonctionnalités protégées
GitLab propose plusieurs fonctionnalités « protégées » pour renforcer le contrôle de votre processus de développement. Ces fonctionnalités peuvent s'avérer essentielles pour maintenir la séparation des tâches de sorte que seules les personnes autorisées puissent apporter des modifications importantes.
- Branches protégées : une branche protégée restreint l'accès à un nombre limité de personnes pouvant effectuer un push, fusionner ou effectuer un push forcé vers la branche. Cela s'avère particulièrement utile pour les branches telles que la branche « principale » ou la branche de « production », afin que seuls les utilisateurs autorisés puissent apporter des modifications.
- Tags Git protégés : ces tags permettent de contrôler les personnes autorisées à créer des tags. Cela permet d'éviter les mises à jour ou les suppressions accidentelles une fois le tag créé, préservant ainsi l'intégrité de votre gestion des versions.
- Environnements protégés : il est impératif de restreindre l'accès à certains environnements spécifiques, en particulier les environnements de production, contre tout accès non autorisé. Dans un environnement protégé, seuls les utilisateurs disposant des privilèges appropriés peuvent y effectuer des déploiements, afin de protèger l'environnement contre toute modification involontaire. Cela renvoie à la fonctionnalité du rôle de déployeur mentionnée précédemment, qui permet à certains utilisateurs de déployer des jobs sans pour autant modifier le code, garantissant ainsi la conformité et la sécurité.
- Paquets protégés : l'utilisation de règles de protection des paquets permet de limiter le nombre d'utilisateurs pouvant apporter des modifications à ces paquets. Ces fonctionnalités protégées contribuent collectivement à maintenir un environnement de développement sécurisé et conforme aux principes de la séparation des tâches.
Les événements d'audit et le centre de conformité
Nous avons exploré les stratégies d'approbation, les frameworks de conformité, les rôles et les fonctionnalités protégées. Il nous reste maintenant à découvrir comment GitLab permet de surveiller et d'auditer ces implémentations pour en garantir le respect. Les événements d'audit de GitLab fournissent aux propriétaires et administrateurs un enregistrement détaillé des activités et des modifications, telles que l'activité des utilisateurs et les ajustements apportés au niveau du projet. Cette journalisation est essentielle pour suivre les actions des utilisateurs et repérer tout comportement non autorisé. Le streaming des événements d'audit optimise ce processus en permettant aux entreprises de diffuser des événements d'audit vers des systèmes externes pour une analyse et une alerte en temps réel. Ce faisant, toute altération ou violation des exigences de conformité est détectée, ce qui permet d'y remédier rapidement.
Le centre de conformité de GitLab centralise la gestion et la surveillance des activités de conformité. Il offre une vue d'ensemble de l'état de conformité des projets et des groupes. Ce centre met en évidence les violations des exigences de conformité, telles que le non-respect des règles d'approbation des merge requests ou d'autres stratégies. Les administrateurs peuvent ainsi traiter rapidement les tickets, en certifiant le respect des normes de conformité prédéfinies. Cette approche centralisée simplifie la gestion de la conformité tout en garantissant un niveau élevé de surveillance et de contrôle.
Si vous souhaitez en savoir plus sur la vision de GitLab en matière de séparation des tâches et de conformité, consultez la page Direction du produit GitLab lié à la Gouvernance et la documentation sur la conformité de GitLab.