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 souhaité : éloigner les personnes des données est un principe clé pour construire en toute sécurité dans le AWS Cloud. Ce principe s'applique également à la manière dont vous déployez votre logiciel.
Ne pas dépendre d'individus pour déployer un logiciel vous permet d'être certain que ce que vous déployez correspond à ce que vous avez testé, et que le déploiement est effectué de manière cohérente à chaque fois. Il ne doit pas être nécessaire de modifier un logiciel afin qu'il fonctionne dans différents environnements. L'utilisation des principes du développement d'applications à douze facteurs, en particulier l'externalisation de la configuration, vous permet de déployer le même code dans plusieurs environnements sans avoir à le modifier. Le chiffrement de la signature des packages logiciels permet de vérifier que rien n'a changé d'un environnement à l'autre. Le résultat global de cette approche est de réduire les risques dans votre processus de changement et d'améliorer la cohérence des versions du logiciel.
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 de risque exposé si cette bonne pratique n'est pas respectée : élevé
Directives d'implémentation
Créez la structure de votre Compte AWS de manière à supprimer la récurrence de l'accès de personnes à partir d'environnements et utilisez des outils CI/CD pour effectuer des déploiements. Concevez vos applications de manière à ce que les données de configuration spécifiques à l'environnement soient obtenues à partir d'une source externe, telle que AWS Systems Manager Parameter Store. Signez les packages après les avoir testés et validez ces signatures lors du déploiement. Configurez vos pipelines CI/CD pour transmettre le code de l'application et utilisez des tests Canary pour confirmer le succès du déploiement. Utilisez des outils tels que AWS CloudFormation
Étapes d'implémentation
-
Créez des pipelines CI/CD bien définis pour rationaliser le processus de déploiement.
-
Utilisez AWS CodeBuild
et AWS Code Pipeline pour fournir une capacité CI/CD afin de faciliter l'intégration des tests de sécurité dans vos pipelines. -
Suivez les conseils sur la séparation des environnements dans le livre blanc Organisation de votre environnement AWS à l'aide de plusieurs comptes.
-
Vérifiez que personne n'a accès aux environnements dans lesquels des charges de travail de production sont en cours d'exécution.
-
Architecturez vos applications de manière à prendre en charge l'externalisation des données de configuration.
-
Envisagez un modèle de déploiement bleu/vert.
-
Implémentez des tests Canary pour valider la réussite du déploiement du logiciel.
-
Utilisez des outils cryptographiques tels AWS Signer ou AWS Key Management Service (AWS KMS)
pour signer et vérifier les packages logiciels que vous déployez.
Ressources
Bonnes pratiques associées :
Documents connexes :
Vidéos connexes :
Exemples connexes :