SEC11-BP06 Déploiement programmatique de logiciels - Pilier Sécurité

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 ou AWS CDK pour définir votre infrastructure, puis utilisez AWS CodeBuild et AWS CodePipeline pour effectuer des opérations CI/CD.

É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 :