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 escompté : l’objectif des tests automatisés est de fournir un moyen programmatique de détecter les problèmes potentiels à un stade précoce et fréquent 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 d’exposition au risque 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. NIST Quality Group
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 Q Developer
L’atelier Security for Developers
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, d’examen de 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.
-
Automated Security Helper (ASH)
est un exemple d’outil d’analyse de sécurité de code open source. -
La réalisation de tests ou d’analyses de code à l’aide d’outils automatisés, tels qu’Amazon Q Developer
intégré aux IDE pour développeurs et la sécurité Amazon CodeGuru pour l’analyse du code lors de la validation, permet aux créateurs d’obtenir des commentaires au bon moment. -
Lorsque vous créez avec AWS Lambda, Amazon Inspector peut vous permettre de scanner le code de l’application dans vos fonctions.
-
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.
-
Pour extraire la nomenclature logicielle dans le cadre de vos pipelines CI/CD, utilisez Amazon Inspector SBOM Generator pour produire des nomenclatures logicielles pour les archives, les images de conteneur, les répertoires, les systèmes locaux et les fichiers binaires Go et Rust compilés au format SBOM CycloneDX.
Ressources
Bonnes pratiques associées :
Documents connexes :
Vidéos connexes :
Exemples connexes :