Introduction

La mise en place d’un pipeline de CI/CD est devenu critique dans le domaine du développement d’applications. En effet, il permet de s’assurer la même suite d’étape permettant le déploiement de l’application. Cependant, il est important de noter qu’une CI/CD, si celle-ci est mal configuré ou mal designé peut être le point d’entrée de failles de sécurité majeures pouvant affecter vos applications critiques.

Dans cet article, nous allons voir ensemble quelques bonnes pratiques de sécurité permettant de rajouter de la sécurite “by design” à vos pipelines de déploiement.

Compte de services

La première erreur que l’on retrouve le plus dans les petites et moyennes entreprise de développement, est le fait d’utiliser les informations de connexion d’un compte “utilisateur” (lié à une personne dans l’entreprise) lors du déploiement d’application. Ces informations de connexion peuvent être sous la forme login/mot de passe, token d’accès personnel (PAT) , clé SSH etc …

De toute évidence, utiliser des informations de connexion d’un utilisateur pour mettre en place un pipeline de CI/CD est une très mauvaise idée, voici pourquoi :

Afin d’éviter ce type de soucis, il est primordial de créer des compte de services

Les comptes de services sont impersonnels et permettent une meilleure gestion des informations de connexion nécessaires lors de création de pipeline CI/CD. Ces comptes de services peuvent avoir plusieurs formes :

En utilisant ces comptes de services, vous améliorez la stabilité et la sécurité de vos pipelines de CI/CD

Permissions

Un deuxième aspect important lors de la création d’un pipeline de CI/CD est les permissions attribuées aux comptes de services. En effet, lorsque l’on crée un compte de service, il est important de donner seulement les droits utiles aux déploiements. On donnera des permissions à ce service account en utilisant le principe du whitelisting (Aucune permissions à part celle nécessaire aux déploiements).

Donner seulement les permissions nécessaires à un compte de services est pertinent pour :