Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
SEC11-BP06 Déploiement programmatique de logiciels
Dans la mesure du possible, procédez à des déploiements de logiciels par programme. Cette approche réduit la probabilité qu’un déploiement échoue ou qu’une erreur humaine entraîne un problème inattendu.
Résultat escompté : la version de votre charge de travail que vous testez est la version que vous déployez, et le déploiement est effectué de manière cohérente à chaque fois. Vous externalisez la configuration de votre charge de travail, ce qui vous permet de déployer dans différents environnements sans modification. Vous utilisez la signature cryptographique de vos packages logiciels pour vérifier que rien ne change d’un environnement à l’autre.
Anti-modèles courants :
-
Déploiement manuel d’un logiciel en production.
-
Modification manuelle d’un logiciel pour l’adapter à des environnements différents.
Avantages liés au respect de cette bonne pratique :
-
Confiance accrue dans le processus de lancement des logiciels.
-
Réduction du risque que l’échec d’une modification affecte l’entreprise.
-
Augmentation de la cadence de lancement en raison de la diminution du risque de changement.
-
Capacité de restauration automatique en cas d’événements inattendus au cours du déploiement.
-
Capacité à prouver par chiffrement que le logiciel testé est celui qui est déployé.
Niveau d’exposition au risque si cette bonne pratique n’est pas respectée : élevé
Directives d’implémentation
Pour maintenir une infrastructure d’applications robuste et fiable, mettez en œuvre des pratiques de déploiement sécurisées et automatisées. Cette pratique implique de supprimer l’accès humain persistant aux environnements de production, d’utiliser des outils CI/CD pour les déploiements et d’externaliser les données de configuration spécifiques à l’environnement. En suivant cette approche, vous pouvez améliorer la sécurité, réduire le risque d’erreurs humaines et rationaliser le processus de déploiement.
Vous pouvez créer votre structure de Compte AWS pour supprimer l’accès humain persistant aux environnements de production. Cette pratique minimise le risque de modifications non autorisées ou accidentelles, ce qui améliore l’intégrité de vos systèmes de production. Au lieu d’un accès humain direct, vous pouvez utiliser des outils CI/CD tels que AWS CodeBuild
Pour renforcer encore la sécurité et la traçabilité, vous pouvez signer vos packages d’applications après les avoir testés et valider ces signatures lors du déploiement. Pour ce faire, utilisez des outils cryptographiques tels que AWS Signer ou AWS Key Management Service (AWS KMS)
En outre, votre équipe peut concevoir votre charge de travail pour obtenir des données de configuration spécifiques à l’environnement à partir d’une source externe, telle que AWS Systems Manager Parameter Store. Cette pratique sépare le code d’application des données de configuration, ce qui vous permet de gérer et de mettre à jour les configurations indépendamment sans modifier le code d’application lui-même.
Pour rationaliser le provisionnement et la gestion de l’infrastructure, envisagez d’utiliser des outils d’infrastructure en tant que code (IaC) tels qu’AWS CloudFormation
Envisagez d’utiliser des déploiements canary pour valider la réussite du déploiement de votre logiciel. Les déploiements canary impliquent le déploiement de modifications sur un sous-ensemble d’instances ou d’utilisateurs avant leur déploiement dans l’environnement de production tout entier. Vous pouvez ainsi surveiller l’impact des modifications et revenir en arrière si nécessaire, ce qui minimise le risque de problèmes généralisés.
Suivez les recommandations décrites dans le livre blanc Organisation de votre environnement AWS à l’aide de comptes multiples. Ce livre blanc fournit des conseils sur la manière de séparer les environnements (par exemple de développement, intermédiaire et de production) dans des Comptes AWS distincts, ce qui améliore encore la sécurité et l’isolation.
Étapes d’implémentation
-
Configurez la structure de Compte AWS :
-
Suivez les instructions du livre blanc Organisation de votre environnement AWS à l’aide de comptes multiples pour créer des Comptes AWS distincts pour les différents environnements (par exemple, de développement, intermédiaire et de production).
-
Configurez les contrôles d’accès et les autorisations appropriés pour chaque compte afin de limiter l’accès humain direct aux environnements de production.
-
-
Implémentez un pipeline CI/CD :
-
Configurez un pipeline CI/CD à l’aide de services tels qu’AWS CodeBuild
et AWS CodePipeline . -
Configurez le pipeline pour créer, tester et déployer automatiquement votre code d’application dans les environnements respectifs.
-
Intégrez des référentiels de code au pipeline CI/CD pour le contrôle des versions et la gestion du code.
-
-
Signez et vérifiez les packages d’applications :
-
Utilisez AWS Signer ou AWS Key Management Service (AWS KMS)
pour signer vos packages d’application une fois qu’ils ont été testés et validés. -
Configurez le processus de déploiement pour vérifier les signatures des packages d’applications avant de les déployer dans les environnements cibles.
-
-
Externalisez les données de configuration :
-
Stockez les données de configuration spécifiques à l’environnement dans AWS Systems Manager Parameter Store.
-
Modifiez votre code d’application pour récupérer les données de configuration depuis Parameter Store pendant le déploiement ou l’exécution.
-
-
Mettez en œuvre une infrastructure en tant que code (IaC) :
-
Utilisez des outils d’infrastructure en tant que code tels qu’AWS CloudFormation
ou AWS CDK pour définir et gérer votre infrastructure en tant que code. -
Créez des modèles CloudFormation ou des scripts CDK pour provisionner et configurer les ressources AWS nécessaires pour votre application.
-
Intégrez l’infrastructure en tant que code à votre pipeline CI/CD pour déployer automatiquement les modifications d’infrastructure en même temps que les modifications du code d’application.
-
-
Mettez en œuvre des déploiements canary :
-
Configurez votre processus de déploiement pour prendre en charge les déploiements canary, dans lesquels les modifications sont appliquées à un sous-ensemble d’instances ou d’utilisateurs avant d’être déployées dans l’environnement de production tout entier.
-
Utilisez des services tels qu’AWS CodeDeploy
ou AWS ECS pour gérer les déploiements canary et surveiller l’impact des modifications. -
Mettez en œuvre des mécanismes de restauration pour pouvoir rétablir la version stable précédente si des problèmes sont détectés au cours du déploiement canary.
-
-
Surveillez et auditez :
-
Configurez des mécanismes de surveillance et de journalisation pour suivre les déploiements, les performances des applications et les modifications de l’infrastructure.
-
Utilisez des services tels qu’Amazon CloudWatch
et AWS CloudTrail pour collecter et analyser des journaux et des métriques. -
Mettez en œuvre des audits et des contrôles de conformité pour vérifier le respect des bonnes pratiques de sécurité et des exigences réglementaires.
-
-
Améliorez continuellement :
-
Passez en revue et mettez à jour régulièrement vos pratiques de déploiement et incorporez les commentaires et les enseignements tirés des déploiements précédents.
-
Automatisez autant que possible le processus de déploiement afin de réduire les interventions manuelles et les erreurs humaines potentielles.
-
Collaborez avec des équipes interfonctionnelles (par exemple, des opérations ou de la sécurité) pour aligner et améliorer continuellement les pratiques de déploiement.
-
En suivant ces étapes, vous pouvez mettre en œuvre des pratiques de déploiement sécurisées et automatisées dans votre environnement AWS, ce qui améliore la sécurité, réduit le risque d’erreurs humaines et rationalise le processus de déploiement.
Ressources
Bonnes pratiques associées :
Documents connexes :
Vidéos connexes :
Exemples connexes :