SEC11-BP02 Automatisation des tests tout au long du cycle de développement et de publication - AWS Well-Architected Framework

SEC11-BP02 Automatisation des tests tout au long du cycle de développement et de publication

Automatisez les tests des propriétés de sécurité tout au long du cycle de développement et de publication. L'automatisation facilite l'identification systématique et répétée des problèmes potentiels dans les logiciels avant leur diffusion, ce qui réduit le risque de problèmes de sécurité dans les logiciels fournis.

Résultat souhaité : l'objectif des tests automatisés est de fournir un moyen programmatique de détecter les problèmes potentiels de manière précoce et fréquente tout au long du cycle de développement. Lorsque vous automatisez les tests de régression, vous pouvez exécuter à nouveau les tests fonctionnels et non fonctionnels pour vérifier que le logiciel testé précédemment fonctionne toujours comme prévu après une modification. Lorsque vous définissez des tests d'unités de sécurité pour vérifier les erreurs de configuration courantes, telles qu'une authentification défaillante ou manquante, vous pouvez identifier et résoudre ces problèmes dès le début du processus de développement.

L'automatisation des tests utilise des cas de test spécifiques pour la validation de l'application, sur la base des exigences de l'application et de la fonctionnalité souhaitée. Le résultat du test automatisé est basé sur la comparaison entre le résultat du test généré et le résultat attendu, ce qui accélère le cycle de vie global du test. Les méthodologies de test telles que les tests de régression et les suites de tests d'unités sont les mieux adaptées à l'automatisation. L'automatisation des tests des propriétés de sécurité permet aux concepteurs de recevoir des commentaires automatisés sans avoir à attendre un examen de sécurité. Les tests automatisés sous forme d'analyse statique ou dynamique du code peuvent améliorer la qualité du code et aider à détecter les problèmes logiciels potentiels dès le début du cycle de développement.

Anti-modèles courants :

  • Ne pas communiquer les cas de test et les résultats des tests automatisés.

  • Effectuer uniquement les tests automatisés juste avant la mise en production.

  • Automatiser les cas de test avec des exigences qui changent fréquemment.

  • Ne pas fournir de recommandations sur la manière de traiter les résultats des tests de sécurité.

Avantages liés au respect de cette bonne pratique :

  • Réduction de la dépendance à l'égard des personnes qui évaluent les propriétés de sécurité des systèmes.

  • Le fait de disposer de résultats cohérents dans plusieurs domaines de travail améliore la cohérence.

  • Réduction de la probabilité d'introduire des problèmes de sécurité dans les logiciels de production.

  • Un délai plus court entre la détection et la remédiation grâce à une détection plus précoce des problèmes logiciels.

  • Visibilité accrue des comportements systémiques ou répétés dans plusieurs domaines de travail, ce qui peut être utilisé pour apporter des améliorations à l'échelle de l'organisation.

Niveau de risque exposé si cette bonne pratique n'est pas respectée : moyen

Directives d'implémentation

Au fur et à mesure du développement de votre logiciel, adoptez divers mécanismes de test pour vous assurer que vous testez votre application à la fois pour les exigences fonctionnelles, basées sur la logique commerciale de votre application, et pour les exigences non fonctionnelles, qui sont axées sur la fiabilité, la performance et la sécurité de l'application.

Les tests statiques de sécurité des applications (SAST) analysent votre code source à la recherche de schémas de sécurité anormaux et fournissent des indications sur le code sujet aux défauts. Les tests SAST s'appuient sur des données statiques, telles que la documentation (spécifications des exigences, documentation de conception et spécifications de conception) et le code source de l'application, pour tester une série de problèmes de sécurité connus. Les analyseurs de code statique permettent d'accélérer l'analyse de gros volumes de code. Le groupe de qualité NIST propose une comparaison des analyseurs de sécurité du code source, qui comprend des outils open source pour les lecteurs de codes à octets et les lecteurs de code binaire.

Complétez vos tests statiques par des méthodes de sécurité des applications (DAST), qui consistent à effectuer des tests sur l'application en cours d'exécution afin d'identifier les comportements potentiellement inattendus. Les tests dynamiques peuvent détecter des problèmes potentiels qui ne sont pas détectables par l'analyse statique. Les tests effectués aux stades du référentiel de code, de la build et du pipeline vous permettent de vérifier différents types de problèmes potentiels avant qu'ils ne s'introduisent dans votre code. Amazon CodeWhisperer fournit des recommandations sur le code, y compris l'analyse de la sécurité, dans l'IDE du créateur. Amazon CodeGuru Reviewer peut identifier les problèmes critiques, les problèmes de sécurité et les bogues difficiles à trouver pendant le développement de l'application, et fournit des recommandations pour améliorer la qualité du code.

L'atelier sur la sécurité pour les développeurs utilise des outils de développement AWS, tels que AWS CodeBuild, AWS CodeCommit, et AWS CodePipeline, pour l'automatisation de la chaîne de production qui comprend les méthodologies de test SAST et DAST.

Au fur et à mesure que vous progressez dans votre cycle de développement du logiciel, mettez en place un processus itératif qui comprend des révisions périodiques des applications avec votre équipe de sécurité. Les commentaires recueillis lors de ces examens de sécurité doivent être traités et validés dans le cadre de l'examen de l'état de préparation à la mise en production. Ces examens permettent de définir un solide niveau de sécurité des applications et fournissent aux concepteurs des commentaires exploitables pour résoudre les problèmes potentiels.

Étapes d'implémentation

  • Implémentez des outils cohérents d'IDE, de révision du code et de CI/CD qui incluent des tests de sécurité.

  • Réfléchissez à l'étape du cycle de développement du logiciel où il convient de bloquer les pipelines au lieu de simplement avertir les concepteurs que des problèmes doivent être résolus.

  • L'atelier sur la sécurité pour les développeurs fournit un exemple d'intégration des tests statiques et dynamiques dans un pipeline de publication.

  • La réalisation de tests ou d'analyses de code à l'aide d'outils automatisés, tels que Amazon CodeWhisperer intégré aux IDE des développeurs et Amazon CodeGuru Reviewer pour l'analyse du code lors de la validation, aide les concepteurs à obtenir des commentaires au bon moment.

  • Lorsque vous utilisez AWS Lambda pour votre conception, vous pouvez utiliser Amazon Inspector pour analyser le code de l'application dans vos fonctions.

  • L'Atelier CI/CD AWS fournit un point de départ pour construire des pipelines CI/CD sur AWS.

  • Lorsque les tests automatisés sont inclus dans les pipelines CI/CD, vous devez utiliser un système de tickets pour suivre la notification et la résolution des problèmes logiciels.

  • Pour les tests de sécurité susceptibles de donner lieu à des conclusions, un lien vers des conseils pour remédier à la situation aide les concepteurs à améliorer la qualité du code.

  • Analysez régulièrement les résultats des outils automatisés afin de donner la priorité à la prochaine automatisation, à la formation des concepteurs ou à la campagne de sensibilisation.

Ressources

Documents connexes :

Vidéos connexes :

Exemples connexes :