SEC11-BP02 Automatisieren des Testens während des Entwicklungs- und Veröffentlichungslebenszyklus - AWS Well-Architected Framework

SEC11-BP02 Automatisieren des Testens während des Entwicklungs- und Veröffentlichungslebenszyklus

Automatisieren Sie das Testen der Sicherheitseigenschaften während des Entwicklungs- und Veröffentlichungslebenszyklus. Automatisierung vereinfacht die kontinuierliche und wiederholbare Identifizierung potenzieller Probleme. Dadurch wird das Risiko von Sicherheitsproblemen in der bereitgestellten Software verringert.

Gewünschtes Ergebnis: Das Ziel von automatisiertem Testen ist, eine programmatische Möglichkeit zur frühen Erkennung von potenziellen Problemen – häufig im Laufe des Entwicklungslebenszyklus – zu bieten. Wenn Sie Regressionstests automatisieren, können Sie funktionale und nicht funktionale Tests erneut durchführen, um zu überprüfen, ob zuvor getestete Software nach einer Änderung weiterhin wie erwartet funktioniert. Wenn Sie Sicherheitstests für Komponenten definieren, um nach häufigen Fehlkonfigurationen zu suchen, wie einer fehlerhaften oder fehlenden Authentifizierung, können Sie diese Fehler früh im Entwicklungsprozess identifizieren und beheben.

Testautomatisierung verwendet speziell entwickelte Testfälle zur Anwendungsvalidierung auf Basis der Anforderungen und der gewünschten Funktionalität der Anwendung. Das Ergebnis von automatisiertem Testen basiert auf dem Vergleich zwischen der erstellten Testausgabe und der erwarteten Ausgabe, wodurch der gesamte Lebenszyklus des Testens beschleunigt wird. Testmethoden wie Regressionstests und Modultest-Suites eignen sich am besten zur Automatisierung. Durch die Automatisierung des Testens von Sicherheitseigenschaften können Entwickler automatisiertes Feedback erhalten, ohne auf eine Sicherheitsüberprüfung warten zu müssen. Automatisierte Tests in Form von statischer oder dynamischer Codeanalyse können die Qualität von Code erhöhen und dabei helfen, potenzielle Softwareprobleme früh im Entwicklungslebenszyklus zu erkennen.

Typische Anti-Muster:

  • Testfälle und Testergebnisse des automatisierten Testens werden nicht kommuniziert.

  • Automatisiertes Testen wird erst unmittelbar vor einer Veröffentlichung durchgeführt.

  • Testfälle werden mit sich häufig ändernden Anforderungen automatisiert.

  • Es wird keine Anleitung für den Umgang mit den Ergebnissen von Sicherheitstests bereitgestellt.

Vorteile der Nutzung dieser bewährten Methode:

  • Verringerte Abhängigkeit von Menschen, die die Sicherheitseigenschaften eines Systems evaluieren

  • Konsistente Erkenntnisse bei mehreren Arbeitsabläufen für mehr Konsistenz

  • Geringere Wahrscheinlichkeit, dass Sicherheitsprobleme in Produktionssoftware gelangen

  • Kürzeres Zeitfenster zwischen der Erkennung und Behebung von Softwareproblemen, da sie früher entdeckt werden

  • Erhöhte Sichtbarkeit von systemischem oder wiederholtem Verhalten bei mehreren Arbeitsabläufen, dank derer organisationsweite Verbesserungen vorangetrieben werden können

Risikostufe, wenn diese bewährte Methode nicht eingeführt wird: Mittel

Implementierungsleitfaden

Setzen Sie während der Entwicklung Ihrer Software unterschiedliche Mechanismen für das Testen von Software ein, um sicherzustellen, dass Sie Ihre Anwendung sowohl auf funktionale Anforderungen (basierend auf Ihrer Geschäftslogik) als auch auf nicht funktionale Anforderungen testen, die sich auf die Zuverlässigkeit, Leistung und Sicherheit der Anwendung konzentrieren.

Bei statischen Anwendungssicherheitstests (SAST) wird Ihr Quellcode auf ungewöhnliche Sicherheitsmuster untersucht und es werden Hinweise auf fehleranfälligen Code bereitgestellt. SAST nutzt statische Eingaben wie etwa die Dokumentation (Anforderungsspezifikationen, Designdokumentation und Designspezifikationen) und den Anwendungscode, um Tests in Bezug auf eine Reihe von bekannten Sicherheitsproblemen durchzuführen. Statische Code-Analyzer helfen dabei, die Analyse großer Codemengen zu beschleunigen. Die NIST Quality Group bietet einen Vergleich von Quellcode-Sicherheitsanalysen, der Open-Source-Tools für Bytecode-Scanner und Binärcode-Scanner umfasst.

Ergänzen Sie Ihr statisches Testen mit Methoden für dynamische Anwendungssicherheitstests (DAST). Hierbei wird die Anwendung bei ihrer Ausführung getestet, um potenzielles unerwartetes Verhalten zu identifizieren. Dynamisches Testen kann verwendet werden, um potenzielle Probleme zu erkennen, die über die statische Analyse nicht gefunden werden können. Das Testen in der Code-Repository-, Build- und Pipeline-Phase ermöglicht es Ihnen, nach unterschiedlichen Arten potenzieller Fehler in Ihrem Code zu suchen. Amazon CodeWhisperer bietet Codeempfehlungen (einschließlich Sicherheitsscans) in der IDE des Entwicklers. Amazon CodeGuru Reviewer kann kritische Fehler, Sicherheitsprobleme und schwer zu findende Bugs während der Anwendungsentwicklung identifizieren und bietet Empfehlungen zur Verbesserung der Codequalität.

Der Workshop Security for Developers verwendet AWS-Entwickler-Tools, wie AWS CodeBuild, AWS CodeCommit und AWS CodePipeline für die Automatisierung der Veröffentlichungs-Pipeline, die SAST- und DAST-Testmethoden umfasst.

Richten Sie beim Durchlaufen Ihres Softwareentwicklungs-Lebenszyklus einen iterativen Prozess ein, der regelmäßige Anwendungsüberprüfungen mit Ihrem Sicherheitsteam enthält. Aus diesen Sicherheitsüberprüfungen gewonnenes Feedback sollte behandelt und im Rahmen der Bereitschaftsüberprüfung Ihrer Softwareversion validiert werden. Diese Überprüfungen schaffen einen robusten Sicherheitsstatus der Anwendungen und bieten Entwicklern umsetzbares Feedback, um Maßnahmen zum Beheben von Problemen zu ergreifen.

Implementierungsschritte

  • Implementieren Sie eine konsistente IDE, eine Codeüberprüfung und CI/CD-Tools mit Sicherheitstests.

  • Überlegen Sie, wo im Softwareentwicklungs-Lebenszyklus Pipelines blockiert werden können, anstatt Entwickler darüber zu informieren, dass Probleme behoben werden müssen.

  • Der Workshop Security for Developers bietet ein Beispiel für die Integration von statischem und dynamischem Testen in eine Veröffentlichungs-Pipeline.

  • Die Durchführung von Tests oder Codeanalysen mithilfe von automatisierten Tools wie Amazon CodeWhisperer, das in Entwickler-IDEs integriert ist, und Amazon CodeGuru Reviewer für das Scannen von Code beim Commit ermöglicht es Entwicklern, Feedback zur richtigen Zeit zu erhalten.

  • Beim Entwickeln mithilfe von AWS Lambda können Sie Amazon Inspector verwenden, um den Anwendungscode in Ihren Funktionen zu scannen.

  • Wenn automatisiertes Testen in CI/CD-Pipelines enthalten ist, sollten Sie ein Ticket-System verwenden, um die Meldung und Behebung von Softwareproblemen nachzuverfolgen.

  • Bei Sicherheitstests, die möglicherweise Erkenntnisse liefern, sollten Sie Lösungsanweisungen bereitstellen, damit Entwickler die Codequalität verbessern können.

  • Analysieren Sie regelmäßig die Erkenntnisse automatisierter Tools, um die nächste Automatisierung, Entwicklerschulung oder Sensibilisierungskampagne zu planen.

Ressourcen

Zugehörige Dokumente:

Zugehörige Videos:

Zugehörige Beispiele: