Pourquoi l'infrastructure a besoin de ses propres politiques
Vous avez un pipeline CI/CD solide. Votre application se construit, se teste et se déploie sans accroc. L'équipe se sent en confiance pour livrer des modifications plusieurs fois par jour. Puis quelqu'un ouvre une pull request pour ajouter un groupe de sécurité dans AWS. Ils ont besoin que l'application soit accessible depuis Internet. Pressés, ils ouvrent le port 22 vers 0.0.0.0/0. Maintenant, n'importe qui dans le monde peut tenter de se connecter en SSH à votre serveur. En quelques minutes, des bots commencent à forcer les mots de passe.
Ce n'est pas un scénario hypothétique. Cela arrive tous les jours dans des organisations qui gèrent leur infrastructure sans garde-fous.
Votre pipeline applicatif est peut-être parfait. Mais votre application ne tourne pas sur du vide. Elle tourne sur des serveurs, des bases de données, des équilibreurs de charge, des réseaux et du stockage. Ces ressources doivent être créées, configurées et maintenues. Et les ressources d'infrastructure comportent des risques fondamentalement différents de ceux du code applicatif.
Les problèmes que les politiques d'infrastructure résolvent
Regardons quelques scénarios courants qui se jouent dans les équipes réelles.
Les erreurs de sécurité arrivent sous pression. Un développeur doit exposer un point d'API. Il ajoute une règle de groupe de sécurité. Dans son esprit, il fait simplement fonctionner l'application. Il ne réalise pas qu'il vient d'ouvrir le SSH à Internet entier. Le temps que quelqu'un s'en aperçoive, le serveur peut déjà être compromis.
Les fuites de coûts sont silencieuses et cumulatives. Un ingénieur lance une instance EC2 pour des tests. Il choisit le type d'instance le plus gros parce qu'il est disponible. Il n'y a aucune limite sur ce qu'il peut choisir. L'instance tourne pendant une semaine avant que quelqu'un ne la remarque. Quand la facture cloud mensuelle arrive, l'équipe financière voit un pic inattendu. Une instance oubliée a consommé un budget qui aurait dû aller ailleurs.
Le chaos de nommage rend les opérations plus difficiles. Chaque entreprise a sa propre convention pour nommer les ressources : préfixe du projet, environnement, région. Mais sans application, chacun nomme les choses à sa manière. Quand une autre équipe doit trouver une ressource pour déboguer, elle ne peut pas distinguer les unes des autres. Quand les scripts d'automatisation analysent les noms de ressources, ils cassent parce que le format est incohérent.
Les violations de conformité coûtent cher. Votre entreprise peut être soumise à PCI DSS, HIPAA ou SOC 2. Ces normes exigent des contrôles spécifiques sur l'infrastructure. Si quelqu'un crée accidentellement une ressource en dehors de la région approuvée, ou stocke des données dans un bucket non chiffré, l'entreprise peut faire face à des amendes ou perdre ses certifications.
La formation et les procédures opérationnelles standard ne peuvent pas empêcher ces problèmes à elles seules. Les gens font des erreurs, surtout sous la pression des délais. Ce dont vous avez besoin, c'est d'un mécanisme automatisé qui détecte les violations avant qu'elles ne se produisent.
Ce que signifie réellement une politique d'infrastructure
Une politique d'infrastructure est un ensemble de règles qui définissent ce qui est autorisé et ce qui est interdit lors de la création ou de la modification de ressources d'infrastructure. Ces règles ne sont pas des documents épinglés au mur. Elles sont lisibles par machine, vérifiées automatiquement dans votre pipeline, et donnent un retour direct au développeur qui effectue la modification.
Considérez-la comme un garde-fou. Un garde-fou ne vous empêche pas de conduire. Il vous maintient sur la route pour que vous puissiez conduire plus vite sans craindre de tomber dans le ravin. De bonnes politiques d'infrastructure fonctionnent de la même manière. Elles permettent aux équipes d'aller vite parce qu'elles connaissent les limites de sécurité. Elles n'ont pas besoin de craindre de faire une erreur car la politique les avertira avant que l'erreur n'atteigne la production.
Pourquoi les politiques applicatives ne suffisent pas
Vous avez peut-être déjà des politiques pour votre code applicatif. Des règles de linting. Des exigences de revue de code. Des seuils de couverture de tests. Tout cela est important, mais cela ne couvre pas l'infrastructure.
Le code applicatif et l'infrastructure ont des profils de risque différents :
- Un bug applicatif affecte généralement les utilisateurs. Des fonctionnalités cassent. Des erreurs apparaissent. Des données sont corrompues.
- Une erreur d'infrastructure peut avoir un impact plus large. Les coûts cloud peuvent exploser. Des ports peuvent s'ouvrir au public. Des données peuvent fuir. Des ressources peuvent violer les règles de conformité.
L'impact n'est pas seulement technique. Il est financier et juridique. Un seul bucket S3 mal configuré peut exposer des données clients et déclencher des amendes réglementaires. Une seule instance surdimensionnée peut gaspiller des milliers de dollars par mois.
Les politiques d'infrastructure traitent ces risques directement. Elles vérifient les erreurs de configuration de sécurité, les violations de coûts, les conventions de nommage, les exigences de balisage et les règles de conformité. Elles s'exécutent dans le cadre de votre pipeline d'infrastructure, avant que toute modification ne soit appliquée.
Comment les politiques s'intègrent dans votre flux de travail
La façon la plus efficace d'appliquer les politiques d'infrastructure est via votre pipeline CI/CD. Quand quelqu'un ouvre une pull request qui modifie le code d'infrastructure, le pipeline exécute des vérifications de politique en même temps que vos tests habituels. Si une politique est violée, le pipeline échoue. Le développeur reçoit un message clair expliquant quelle règle a été enfreinte et comment la corriger.
Le diagramme ci-dessous montre comment les vérifications de politique s'intègrent dans un pipeline d'infrastructure typique :
Cette approche présente plusieurs avantages :
- Retour rapide. Les développeurs découvrent les problèmes avant que la modification n'atteigne la production.
- Application cohérente. Chaque modification passe par les mêmes vérifications. Pas d'exception.
- Piste d'audit. Vous pouvez voir quelles modifications ont passé ou échoué aux vérifications de politique.
- Adoption progressive. Vous pouvez commencer avec quelques politiques critiques et étendre au fil du temps.
Certaines équipes craignent que les politiques ne les ralentissent. En pratique, c'est l'inverse qui se produit. Quand les équipes connaissent les limites, elles vont plus vite. Elles n'ont pas besoin de s'arrêter pour demander "Est-ce que c'est autorisé ?" ou d'attendre une revue de sécurité. La politique répond à ces questions automatiquement.
Liste de contrôle pratique pour commencer
Si vous débutez avec les politiques d'infrastructure, voici une courte liste pour vous aider à démarrer :
- Commencez par la sécurité. Bloquez les ports SSH, RDP et bases de données publics. Exigez le chiffrement des données au repos et en transit. Limitez les permissions IAM au moindre privilège.
- Ajoutez des contrôles de coûts. Limitez les types d'instance autorisés. Fixez des tailles de ressources maximales. Exigez l'arrêt automatique pour les ressources non liées à la production.
- Appliquez le nommage et le balisage. Exigez des noms de ressources cohérents. Rendez obligatoires les tags pour le propriétaire, l'environnement et le centre de coûts.
- Vérifiez les règles de conformité. Limitez les régions autorisées. Exigez des paramètres de chiffrement spécifiques. Bloquez les ressources qui violent les normes réglementaires.
- Intégrez dans votre pipeline. Exécutez les vérifications de politique sur chaque pull request. Faites échouer la build en cas de violation. Fournissez des messages d'erreur clairs.
Commencez par les politiques les plus critiques. Ajoutez-en d'autres à mesure que votre équipe se familiarise. L'objectif n'est pas de bloquer toutes les erreurs possibles. L'objectif est d'empêcher celles qui causent le plus de dégâts.
L'essentiel à retenir
Votre pipeline applicatif n'est que la moitié de l'histoire. L'infrastructure qui exécute votre application a besoin de ses propres garde-fous automatisés. Sans eux, une seule ressource mal configurée peut coûter de l'argent, exposer des données ou violer la conformité. Les politiques d'infrastructure transforment ces risques en vérifications automatisées qui détectent les problèmes avant qu'ils ne se produisent. Commencez par la sécurité et les coûts. Ajoutez le nommage et la conformité. Intégrez-les dans votre pipeline. Votre équipe ira plus vite parce qu'elle saura que les limites sont sûres.