Sécuriser l’infrastructure cloud en vue d’un audit PCI
DeveloperSteve Coochin
3 mars 2022
0 minutes de lectureLe processus de certification PCI est assez complet et concerne l’infrastructure, les logiciels et l’accès des employés aux systèmes, notamment aux jeux de données et aux modalités d’accès à ceux-ci. Ces contrôles sont essentiels, non seulement pour l’ensemble du secteur des paiements, mais aussi pour instaurer un climat de confiance avec les utilisateurs, qui savent que leurs données sont protégées. Le processus de conformité PCI comprend une série de contrôles, généralement effectués par un tiers agréé, afin de vérifier que des procédures sécurisées de traitement des données sont en place.
Dans cet article, nous allons voir comment sécuriser votre infrastructure cloud pour la rendre conforme aux exigences PCI.
Quelles sont les exigences de conformité PCI ?
La norme de sécurité des données de l’industrie des cartes de paiement, également appelée PCI DSS, est un ensemble de directives réglementées par le secteur visant à protéger les données sensibles des titulaires de cartes. La norme est gérée par le PCI Security Standards Council, qui en régit toutes les modalités, des règles de conformité aux fournisseurs d’accréditation pour la certification PCI DSS.
Les exigences de conformité PCI couvrent de nombreux points, notamment tous les aspects du cycle de vie du développement logiciel (SDLC). Vous trouverez ici la liste complète. Dans les grandes lignes, les exigences sont les suivantes :
Installer et maintenir une configuration de pare-feu pour protéger les données des titulaires de cartes. Un pare-feu analyse l’ensemble du trafic réseau et bloque l’accès au système depuis les réseaux non fiables.
Modifier les mots de passe système et autres paramètres de sécurité par défaut fournis par les fournisseurs. Ces mots de passe sont faciles à découvrir dans les sources publiques et peuvent être utilisés par des individus malveillants pour accéder aux systèmes sans autorisation.
Protéger les données des titulaires de cartes stockées. Le chiffrement, le hachage, le masquage et la troncature sont autant de méthodes permettant de protéger ces données.
Chiffrer les données des titulaires de cartes lors de leur transmission sur des réseaux publics ouverts. Un chiffrement robuste, qui utilise uniquement des clés et des certificats de confiance, réduit le risque d’attaques malveillantes.
Protéger tous les systèmes contre les logiciels malveillants et mettre régulièrement à jour les antivirus. Un logiciel malveillant peut pénétrer dans un réseau de nombreuses façons, notamment par Internet, les e-mails des employés, les appareils mobiles ou les supports de stockage. Des antivirus à jour ou des logiciels antimalware complémentaires réduisent le risque d’exploitation par des logiciels malveillants.
Développer et maintenir des systèmes et des applications sécurisés. Les vulnérabilités des systèmes et des applications permettent à des individus mal intentionnés d’obtenir des privilèges élevés. Les correctifs de sécurité doivent être installés immédiatement afin de corriger les vulnérabilités, d’empêcher leur exploitation et de protéger les données des titulaires de cartes contre toute compromission.
Limiter l’accès aux données des titulaires de cartes au personnel autorisé uniquement. Des systèmes et des processus doivent restreindre cet accès selon le principe du « besoin d’en connaître ».
Identifier et authentifier les accès aux composants système. Toute personne ayant accès aux composants système doit se voir attribuer un identifiant unique (ID) permettant de responsabiliser les utilisateurs ayant accès aux systèmes de données critiques.
Restreindre l’accès physique aux données des titulaires de cartes. L’accès physique à ces données ou aux systèmes qui les hébergent doit être sécurisé afin d’empêcher tout accès ou retrait non autorisé.
Suivre et surveiller tous les accès aux données des titulaires de cartes et aux ressources réseau. Des mécanismes de journalisation doivent permettre de suivre les activités des utilisateurs, ce qui est essentiel pour prévenir les compromissions de données, les détecter ou en limiter l’impact.
Tester régulièrement les systèmes et les processus de sécurité. De nouvelles vulnérabilités sont découvertes en permanence. Les systèmes, les processus et les logiciels doivent être testés fréquemment afin de détecter les vulnérabilités susceptibles d’être exploitées par des individus malveillants.
Maintenir une politique de sécurité de l’information à l’intention de l’ensemble du personnel. Une politique de sécurité solide aide le personnel à comprendre la sensibilité des données et sa responsabilité dans leur protection.
Exigences PCI propres à l’infrastructure
En examinant plus en détail la liste complète, nous allons nous intéresser dans cet article aux exigences liées plus particulièrement à l’infrastructure dans le cadre du SDLC.
1.3 Interdire tout accès public direct entre Internet et les composants système de l’environnement des données des titulaires de cartes.
Comme l’ont montré de précédentes fuites de données liées à des vulnérabilités, cette exigence souligne qu’il faut s’assurer que les vulnérabilités et les erreurs de configuration ne permettent pas d’accéder sans autorisation aux bases de données centrales. Elle peut également concerner l’accès à des composants accessibles aux utilisateurs ou aux sessions.
2.2.2 Activer uniquement les services, protocoles, démons, etc. nécessaires au fonctionnement du système.
2.2.4 Configurer les paramètres de sécurité du système pour prévenir toute utilisation abusive.
2.2.3 Mettre en œuvre des fonctionnalités de sécurité supplémentaires pour tous les services, protocoles ou démons requis et considérés comme non sécurisés.
5.1.1 S’assurer que les antivirus peuvent détecter, supprimer et contrer tous les types connus de logiciels malveillants.
5.2 S’assurer que tous les mécanismes antivirus sont maintenus comme suit :
Sont maintenus à jour
Effectuent des analyses périodiques
Génèrent des journaux d’audit conservés conformément à l’exigence 10.7 de PCI DSS.
5.3 S’assurer que les mécanismes antivirus sont actifs et que les utilisateurs ne peuvent ni les désactiver ni les modifier, sauf autorisation spécifique de la direction, accordée au cas par cas pour une durée limitée.
Heureusement, ces points peuvent être vérifiés automatiquement en quelques clics et intégrés facilement aux pipelines de processus avec un compte Snyk gratuit.
Simplifier les audits PCI avec Snyk Container et Snyk IaC
J’ai toujours eu un faible pour l’automatisation. En matière de conformité PCI, cela signifie mettre en place des analyses de sécurité efficaces dans vos pipelines CI/CD. Cela peut vous aider de plusieurs façons, notamment en générant des journaux et en identifiant les éléments vulnérables de l’infrastructure.
Il existe plusieurs façons de mettre en place des analyses de sécurité avec Snyk. Prenons quelques exemples avec l’application e-commerce microservices-demo de Google.

Directement depuis le dépôt
Pour suivre les étapes, commencez par créer un fork du dépôt microservices-demo.
Créer un fork du code directement dans votre compte GitHub est un moyen simple de développer sur des plateformes. Vous pouvez ensuite facilement le personnaliser dans différentes branches au cours du développement. Vous pouvez aussi le cloner dans des environnements de développement locaux pour tester et exécuter le code.

Analyse de sécurité avec Snyk
Vous pouvez ensuite tester le code de plusieurs façons. Vous pouvez par exemple utiliser Snyk CLI à la racine du projet. Avec cette méthode, exécutez snyk test pour lancer des tests localisés ou snyk monitor pour surveiller les vulnérabilités en continu.
Vous pouvez également connecter directement le dépôt de code forké à l’application Snyk à l’aide de l’intégration Snyk GitHub. Pour cela, connectez-vous à votre compte Snyk, puis cliquez sur le bouton Add Project dans mon tableau de bord Snyk. Le menu d’ajout rapide de projet propose plusieurs options d’intégration. Vous pouvez aussi cliquer sur Other et rechercher votre plateforme Git.

Une fois l’intégration GitHub connectée, recherchez le dépôt microservices-demo forké et lancez une première analyse.

Une fois le dépôt sélectionné, il sera analysé en continu et les problèmes détectés s’afficheront. Ceux-ci seront répartis en différentes entrées pour chaque composant du projet, ce qui facilitera leur examen approfondi.

Pour le suivi des audits PCI, le plus intéressant est que tous les résultats sont enregistrés dans l’historique de chaque entrée. Celui-ci présente les problèmes détectés et des conseils de correction à chaque analyse, ce qui est très utile lors des audits de conformité PCI.

De plus, Snyk peut s’intégrer aux IDE de développement pour vous aider à détecter les problèmes pendant que vous créez vos applications. C’est très pratique : vous pouvez identifier les problèmes et obtenir des conseils de correction directement pendant que vous codez.
Intégrer la sécurité au pipeline CI/CD
L’automatisation est un atout pour toutes les personnes impliquées dans le SDLC. Elle facilite non seulement les déploiements réguliers, mais aide aussi à définir les étapes et les processus nécessaires à leur réalisation. Un pipeline d’automatisation efficace peut récupérer le code d’une branche Git, puis le préparer et le déployer, avec des tests intégrés à chaque étape.
Le socle de tout SDLC automatisé est le pipeline CI/CD, qui doit être configuré pour se connecter à toutes les composantes de votre SDLC.
Il est fortement recommandé d’intégrer la sécurité à votre pipeline CI/CD, car elle aussi doit être continue. Pour vous y aider, Snyk s’intègre à différents pipelines et à tous les principaux fournisseurs cloud, tels qu’AWS, GCP et Azure. Pour en savoir plus sur les bonnes pratiques d’intégration CI/CD, consultez notre page sur les bonnes pratiques CI/CD.
Exemple de sécurité avec AWS CodePipeline
Pour cet exemple, nous allons intégrer des analyses de sécurité à AWS CodePipeline à l’aide de l’intégration AWS de Snyk.
Commençons par créer un pipeline AWS CodePipeline de base pour déployer l’application de démonstration microservices, puis intégrons Snyk pour effectuer des analyses de sécurité.

Accédez au tableau de bord AWS CodePipelines et cliquez sur Create Pipeline. À l’étape 1, nommez le pipeline et choisissez un rôle de service. À l’étape 2, sélectionnez le dépôt Git contenant le code à déployer. Si vous vous connectez au service Git pour la première fois, suivez les étapes de connexion et accordez les autorisations requises.

Une fois la source du code connectée, choisissez le dépôt et la branche à utiliser pour le processus de déploiement.
Conseil : Si vous vous connectez à GitHub, utilisez la méthode de connexion GitHub version 2. La version 1 de GitHub sera bientôt abandonnée.

Cliquez sur le bouton Next pour passer à l’étape 3, où vous définirez les paramètres de compilation. Pour le fournisseur de compilation, j’utilise généralement AWS CodeBuild, mais vous pouvez également ajouter une connexion Jenkins. Indiquez le nom du projet et les variables d’environnement dont votre application pourrait avoir besoin.

Pour déployer des applications de démonstration simples, vous pouvez sélectionner Single build comme type de compilation. Pour les déploiements plus complexes, Batch build est utile pour répartir la charge sur une infrastructure de plus grande envergure.
À l’étape 4, définissez la configuration de déploiement. Pour cette démonstration, vous pouvez utiliser l’option AWS CodeDeploy, qui s’appuie sur une infrastructure prédéfinie. Les champs suivants vous permettront de choisir l’infrastructure souhaitée et varieront selon votre sélection.

La dernière étape, l’étape 5, vous permet de vérifier la configuration AWS CodePipeline avant de l’enregistrer. Le pipeline lance alors le processus de déploiement, en commençant par récupérer le code à déployer.

Ajouter la sécurité Snyk au pipeline
Ajoutons maintenant une analyse de sécurité Snyk à ce flux à l’aide de l’intégration Snyk AWS CodePipeline. Cliquez sur le nom du pipeline dans le tableau de bord : vous verrez alors chaque étape du processus de déploiement.

Nous allons maintenant ajouter une étape de sécurité à ce flux CodePipeline. Cliquez sur le bouton Edit en haut à droite.

Saisissez ensuite un nom pour l’étape à ajouter. Dans cet exemple, j’utilise security comme nom à afficher dans le flux CodePipeline final.

Cliquez sur Add Stage pour afficher la page de configuration de l’étape. Définissez le nom de l’action, puis recherchez Snyk dans la liste déroulante Action provider, dans la section Invoke.

Dans la section Input artifacts, vous pouvez compiler à partir de SourceArtifact, ce qui déclenchera l’analyse juste avant la compilation de l’application.
Cliquez sur le bouton Connect to Snyk pour afficher la fenêtre d’intégration de Snyk pour AWS CodePipeline.

Une fois connecté, vous reviendrez à la configuration Snyk AWS CodePipelines. Vous pourrez alors définir l’organisation ainsi que les contrôles de blocage en cas de détection d’une vulnérabilité et le niveau de gravité requis.
Cliquez sur Continuer une fois que tout est configuré. Vous reviendrez à la page de modification de l’action. Enfin, saisissez un nom pour les artefacts de sortie et, si vous le souhaitez, les champs d’espace de noms, puis cliquez sur Terminé.

N’oubliez pas ensuite de cliquer sur le bouton Publier la modification pour déployer le changement en production. Le processus de déploiement sera alors relancé et le code analysé au fur et à mesure de son déploiement.

Comme dans l’exemple précédent d’analyse directe du dépôt, tous les journaux d’analyse sont conservés, ce qui est utile pour les audits de conformité PCI. Pour en savoir plus sur les intégrations AWS CodePipeline, consultez cet article de blog : Automatiser l’analyse des vulnérabilités dans AWS CodePipeline avec Snyk.
Sécurisez gratuitement votre infrastructure cloud avec Snyk
Les contrôles de conformité PCI sont une tâche très importante, effectuée une fois par an par un organisme d’accréditation tiers. Le processus est assez détaillé et peut prendre du temps, mais disposer des contrôles et des journaux adéquats permet de l’accélérer et, surtout, de protéger votre application, votre plateforme et vos utilisateurs.
Commencez à sécuriser votre code avec une offre Snyk gratuite : elle inclut l’analyse de vos conteneurs et de votre IaC, la correction automatique des images de base vulnérables et des conseils de correction adaptés aux développeurs pour les erreurs de configuration IaC, directement dans le code.
Sécurisez votre infrastructure dès la source
Snyk automatise la sécurité et la conformité de l’IaC dans vos workflows, et détecte les ressources dont la configuration a dérivé ou qui sont manquantes.
