Gérer les droits IAM de manière scalable
Lors de la création d’une entreprise, il est fréquent de donner les mêmes droits à tout le monde par simplicité. Avec le scaling et la prise en compte des besoins de sécurité, cela peut devenir difficile à corriger, car on ne sait plus dire qui a besoin de quels droits.
Problèmes les plus courants :
- Il arrive souvent que les droits soient mal définis, ne respectant pas le principe du "Least Privilege" (principe de fournir aux utilisateurs uniquement les droits nécessaires pour accomplir leur travail). Certains utilisateurs peuvent se voir attribuer des droits excessifs, ce qui compromet la sécurité d’une entreprise.
- La gestion des droits n'est parfois pas centralisée, ce qui signifie que les droits sont dispersés dans différents systèmes tels que Git, le cloud provider, ou des produits annexes comme Metabase. Cette fragmentation rend la gestion des droits complexe et sujette aux erreurs.
- Les employés changent fréquemment d'équipe ou de rôle, mais conservent souvent leurs anciens droits, ce qui peut entraîner des autorisations inutiles.
- Les processus d'onboarding et d'offboarding sont souvent effectués manuellement, ce qui est une source d’erreurs humaines.
Nos conseils :
- Maintenez des politiques atomiques simples avec des droits minimaux en utilisant une combinaison astucieuse de rôles et de groupes, indépendamment de la hiérarchie de votre scale-up.
- Centralisez la gestion des droits à mesure du scaling et que de nouveaux outils sont ajoutés à votre environnement.
- Créez une identité unique pour chaque application.
- Mettez en place des alertes pour détecter les utilisateurs ou les rôles qui ne sont pas utilisés sur l’infrastructure de votre scale-up.
- Établissez un système de JIT (Just-In-Time) pour l'accès en production : les droits sont attribués uniquement lorsque cela est nécessaire, réduisant ainsi les risques de sécurité au sein de votre scale-up.
On vous conseille de commencer par des droits un peu plus larges au départ et de les réduire progressivement au fil du temps à l'aide des outils de gestion des droits IAM.
Par exemple, sur l’IAM de GCP, la fonctionnalité “Security insights” permet de savoir combien de droits ne sont pas utilisés par vos utilisateurs et comptes de service. Vous pouvez affiner au fur et à mesure en retirant les droits inutiles.
Gérer efficacement les secrets
Lors du scaling d’une entreprise, il est important de bien prendre en compte la gestion des secrets. Il peut arriver que de mauvaises pratiques aient été mises en place : développeurs qui partagent le même mot de passe de connexion pour une DB, microservices qui partagent les mêmes secrets de connexion au Cloud, ...
Il est important de vite prendre cet enjeu en compte avant qu’il ne devienne trop fastidieux à corriger pour votre scale-up.
Problèmes les plus courants :
- Les secrets ne sont pas tous gérés au même endroit et sont parfois dupliqués dans différents systèmes tels que Git, Vault, Secret Manager ou un gestionnaire de mots de passe. Cela peut créer un environnement complexe où il est difficile de maintenir la cohérence des secrets, en particulier entre les environnements de production et de non-production. Cela est de plus en plus vrai lors du scaling d’une entreprise, car le nombre de secrets à gérer s’accroît.
- Les secrets sont souvent réutilisés par plusieurs entités, qu'il s'agisse d'applications ou d'utilisateurs humains. Cette pratique augmente le risque d’attaque sur différents services si un secret est compromis.
- Il existe encore de nombreux secrets long terme en circulation : leur période de validité est excessive. Cela accroît le risque potentiel en cas de divulgation.
- Certaines mauvaises pratiques cryptographiques sont observées, telles que l'utilisation d'algorithmes obsolètes ou un mauvais usage de la cryptographie symétrique.
Nos conseils :
- Utilisez un secret différent pour chaque usage spécifique.
- Utilisez une solution centralisée pour tous les secrets (e.g. Vault).
- Détectez au plus tôt les secrets en clair dans le code. Pour cela, vous pouvez utiliser des outils spécifiques pour détecter si un développeur tente de publier un secret en clair dans le code. Gitleaks, TruffleHog ou GitGuardian peuvent être utilisés pour alerter les développeurs lorsqu’ils essayent de publier des secrets.
- Privilégiez les secrets temporaires : JIT access, OIDC.
- Privilégiez l’injection de secrets en variable d’environnement.
On recommande d’utiliser les outils Vault et Boundary pour votre scale-up ! Ils offrent une solution de JIT access très performante !
Outiller sa CICD en outil DevSecops
Si les bonnes pratiques DevSecOps n’ont pas été mises en place à la création d’une entreprise, une dette technique commence à s’accumuler après quelques années d’existence et avec le scaling de votre entreprise. Utiliser les bons outils DevSecOps est important pour la réduire.
Problèmes les plus courants :
- Il est difficile de savoir quels outils utiliser. Il existe beaucoup d’outils de sécurité, et déterminer lesquels sont essentiels pour votre environnement spécifique et les hiérarchiser en fonction de leur importance est compliqué.
- Même si vous identifiez les outils nécessaires, leur adoption par les équipes de développement peut être compliquée. Les développeurs peuvent résister au changement ou ne pas comprendre pleinement l'importance des outils de sécurité.
- Une fois les outils mis en place, il est difficile de les maintenir dans le temps. Les mises à jour et les correctifs doivent être appliqués pour rester efficaces.
- Il peut aussi être difficile de décider entre investir dans des solutions commerciales ou d'utiliser des outils open source gratuits. Chacune de ces approches présente des avantages et des inconvénients.
Nos conseils :
- Impliquez les développeurs lors de l’ajout d’outils. Leur participation active peut augmenter l'acceptation des outils au sein de l'équipe.
- Établissez un ordre d'adoption des outils en fonction de leur priorité pour votre scale-up. Par exemple, commencez par la détection des secrets, puis passez à la mise à jour des dépendances, au scan des images Docker, et enfin au scan de code.
- Propagez la configuration des outils de sécurité sur tous les dépôts de votre scale-up en utilisant des templates de pipelines centralisés. Cela garantit une cohérence dans l'application des contrôles de sécurité.
- Utilisez CODEOWNER file pour éviter le bypass des checks de sécurité. Cette fonctionnalité permet de définir des propriétaires de fichiers dans un dépôt. Cela peut empêcher les développeurs de contourner les vérifications de sécurité en modifiant directement les fichiers.
- Mieux vaut des briques open source simples et automatiques que rien du tout ! Plutôt que de rechercher des solutions complexes, privilégiez pour votre scale-up des outils open source simples mais automatisés. Ils peuvent fournir une sécurité de base sans introduire de complexité inutile.
Pour éviter de ralentir les pipelines de déploiement, on vous conseille d'avoir un pipeline de sécurité en parallèle pour vos environnements de développement. De cette manière elle sera non bloquante.
Par contre, en production utilisez un pipeline en série pour interdire le déploiement non sécurisé. Cela permet de maintenir la sécurité sans perturber le rythme de développement.
Configurer sa CICD de manière sécurisée
Avec le scaling de votre entreprise, vous pouvez devenir cible d’attaques. Votre CI/CD peut alors être compromise. C’est pourquoi il est important de la configurer de manière sécurisée.
Problèmes les plus courants :
- Trop de droits sur la CI/CD : les runners privilégiés peuvent être déclenchés par n'importe quel développeur, et des secrets avec des droits administratifs sont partagés par tous les dépôts.
- La 2FA et la signature des commits ne sont pas activées. Ce sont des mesures de sécurité importantes pour renforcer l'authentification et la traçabilité des modifications apportées au code.
- Les pipelines ont des droits trop étendus sur l'infrastructure cloud.
- Les pipelines utilisent des secrets à long terme qui peuvent être obtenus par les développeurs. Le risque en cas de fuite de ces secrets devient alors important.
Nos conseils :
- Mettez en place les bonnes pratiques dès le départ : activez la 2FA et encouragez l'utilisation de la signature de commit dès le début du développement. Cela crée une culture de sécurité dans votre scale-up.
- Séparez les dépôts en groupes en fonction de leur importance et des droits dont ils ont besoin. Cela permet de mieux contrôler les autorisations au sein de votre scale-up.
- Utilisez OIDC pour authentifier les runners. L'authentification des runners CI/CD avec OIDC renforce la sécurité en s'assurant que seuls les runners autorisés peuvent déclencher des pipelines.
- Considérez le passage à un système de déploiement plus sécurisé, tel qu'ArgoCD, qui offre des mécanismes de déploiement plus contrôlés et sécurisés.
- Utilisez des outils tels que Kyverno pour permettre aux développeurs d'être autonomes dans leurs tâches de CI/CD tout en maintenant un environnement sécurisé.
Protéger l’accès aux applications internes
Il est courant dans les scale-up de trouver des applications internes et des environnements de développement qui ne sont pas protégés. Si les données de production sont répliquées en développement, un attaquant peut tirer parti d’une vulnérabilité pour obtenir toutes les données de la production ! Il est donc primordial de protéger ces applications.
Problèmes les plus courants :
- Les CTO ne mesurent pas l’impact d’exposer les environnements de développement, pourtant c’est un risque important puisque la plupart des entreprises se font attaquer via ces environnements.
- Les applications dites "internes" sont exposées publiquement sur Internet, ce qui les rend vulnérables aux menaces extérieures.
- Les mesures de protection sur les applications internes sont souvent moins rigoureuses que sur les environnements de production.
Nos conseils :
- Optez pour la solution de protection la plus simple et efficace pour les applications internes de votre scale-up. Ccela peut inclure un filtrage réseau ou la mise en place d'une brique d'authentification en façade.
- N'exposez que les endpoints qui ont vocation à être publics. Limitez l'exposition des endpoints des applications internes aux seuls éléments qui ont réellement besoin d'être accessibles depuis Internet. Cela réduit la surface d'attaque de votre scale-up.
- L'authentification unique (SSO) peut être déployée en façade de tous les outils internes pour simplifier la gestion des accès et faciliter le processus d’offboarding lorsque des utilisateurs quittent votre scale-up.
On vous recommande oauth2-proxy, qui est un composant open source ajoutant une authentification OAuth2 en façade de vos applications.
Conclusion
En conclusion, la sécurité est d'une importance capitale pour une scale-up, car elle constitue la fondation sur laquelle reposent la confiance des clients et la pérennité de l'entreprise.
On espère que nos conseils vous auront éclairés sur les stratégies à suivre pour prendre en compte la sécurité dans le scaling de votre entreprise !