Aus dem Kurs: IT- Sicherheit: Code-Design und -Implementierung – CompTIA Security+ (SY0-601) Teil 2

Software Development Live Cycle (SDLC)

Wir starten diesen Teil des Kurses mit dem Thema Software Development Life Cycle. Der SDLC (eben steht für Software Development Life Cycle) ist ein organisierter Prozess zur Entwicklung einer sicheren Anwendung während der gesamten Projektlaufzeit. Software Development Life Cycle wird unterteilt in Phasen, in diesem Beispiel basierend auf dem Wasserfallmodell. Die Phasen unterscheiden sich in der Planung und Analyse, Software- und Systemdesign, Implementierung, Test, Integration, Bereitstellung und die Wartung. Beim Software Development Life Cycle gilt es Sicherheitsprinzipien anzuwenden. Zuerst einmal das Prinzip der geringsten Berechtigungen, dann aber auch das Prinzip der Verteidigung in die Tiefe, also mehrere Schichten integrieren, um Sicherheit zu gewährleisten. Dann sollten Sie niemals Benutzereingaben vertrauen, also Benutzereingaben sollten validiert werden. Achten Sie darauf, dass Sie die Angriffsfläche minimieren können, indem Sie beispielsweise Standardsicherheitseinstellungen einrichten. Auch wichtig, Sie sollten immer dafür Sorge tragen, dass die Authentizität und Integrität gewährleistet wird. Und Sicherheitsprobleme sollten sofort korrekt behoben werden. Beim Software Development Life Cycle gibt es einen weiteren Ansatz, den sogenannten agilen Ansatz. Beim agilen Ansatz handelt es sich um eine spezielle Methode von SDLC, betont eine ständig adaptive Planung und eine frühe Auslieferung mit kontinuierlicher Verbesserung. Die Entwicklungsmethoden basieren auf Releases und Iterationen. Am Ende jeder Iteration sollte getesteter, funktionierender Code zur Verfügung stehen und ist ausgerichtet auf kurzfristige Ergebnisse. Es gibt einige Prinzipien bei der agilen Entwicklung. Das ist aber nur ein kleiner Auszug, z.B. die Zufriedenstellung des Kunden durch frühzeitige und kontinuierliche Lieferung von gut funktionierender Software. Ein weiterer Punkt ist: Arbeiten Sie während des gesamten Projekts eng miteinander zusammen und überlegen Sie sich, wie Sie effektiver werden können. Ein Programmierer, Systementwickler und der Sicherheitsadministrator sollten immer das CIA-, Confidentiality, Integrity and Availability-Konzept im Hinterkopf haben. Ich werde gleich erklären, was diese englischen Begriffe bedeuten. Confidentiality - Vertraulichkeit, also wir müssen die Wahrung der Vertraulichkeit gewährleisten, Benutzer nur auf Daten zugreifen lassen, für die sie eine Berechtigung haben. Integrity steht für Integrität. Wir müssen die Integrität bewahren, also d.h. sicherstellen, dass Daten nicht manipuliert oder verändert werden. Dann Availability - Verfügbarkeit. Wir müssen die Verfügbarkeit gewährleisten, d.h. also sicherstellen, dass Systeme und Daten bei Bedarf für autorisierte Benutzer zugänglich sind. Die CIA-Konzepte sind wichtig bei der Durchführung eines sicheren Code-Reviews, einem Verfahren zur eingehenden Code-Inspektion.

Inhalt