Ein Überblick – Shifting Left
Einführung der Grundbegriffe
(Entwicklungsphasen, Scrum, Security Champion, …)
Im letzten Beitrag haben wir hauptsächlich über unsere Motivation für unseren BRICKMAKERS SDL (Security Development Lifecycle) gesprochen. Durch die fortschreitende Digitalisierung unserer Gesellschaft gewinnt die Sicherheit digitaler Produkte und Dienstleistungen sowie der damit verbundenen Geschäftsmodelle immer mehr an Bedeutung. Digitale Systeme eröffnen neue Wertschöpfungspotentiale, ermöglichen aber aufgrund ihrer speziellen Eigenschaften auch neue Wege für eine missbräuchliche Nutzung. Daten können “gestohlen” werden, ohne dass sie wirklich weg sind. Ein Angreifender kann einen Datensatz einfach kopieren und für deren Zwecke weiterverwenden, die “Bestohlenen” verfügen aber nach wie vor über denselben Datensatz und können ihn ebenfalls weiter nutzen, meistens sogar, ohne von dem “Diebstahl” irgendetwas mitbekommen zu haben. In diesem Beitrag möchten wir nun einen Überblick über den Aufbau des BRICKMAKERS SDL geben.
Der Name BRICKMAKERS SDL ist von Microsoft Security Development Lifecycle abgeleitet. Andere verbreitete Akronyme und Bezeichnungen sind SSDLC für Secure Systems Development Life Cycle oder AppSec-Program für Application Security Program. Unabhängig vom verwendeten Namen steht hinter all den genannten Begriffen immer das Ziel, Sicherheit als Qualitätseigenschaft eines digitalen Systems, während der Entwicklung von Anfang an und vor allem systematisch zu erzeugen.
Hier bewegen wir uns hauptsächlich im Fachgebiet der Anwendungssicherheit bzw. auf Englisch „Application Security" oder kurz „AppSec", einem Teilgebiet, der deutlich breiter aufgestellten Informationssicherheit (Information Security, InfoSec), welches das Thema aus der Perspektive der Anwendungsentwicklung betrachtet. Natürlich werden hier keine Scheuklappen aufgesetzt, der Informationssicherheit als Ganzes und auch für digitale Produkte können wir immer nur mit einer holistischen Betrachtung gerecht werden. Allerdings ist die Anwendungsentwicklung mit Herausforderungen konfrontiert, die für andere Fachgebiete der IT nicht oder von weniger Bedeutung sind.
Shifting Left
Da digitale Produkte und Dienstleistungen zu einem großen Teil aus Software bestehen, lässt sich ihr Entwicklungslebenszyklus in dieselben Phasen wie für Software einteilen. Das Ziel des BRICKMAKERS SDL ist die systematische Entwicklung sicherer Software, daher orientieren wir uns an den typischen Entwicklungsphasen von Software. Verschiedene Einteilungen können in ihrer Granularität variieren, allgemein wird das Leben einer Software jedoch immer in die folgenden Phasen eingeteilt:
1. Analyse (Requirements)
Analyse des Bedarfs und Erfassung konkreter Anforderungen an eine Lösung.
2. Entwurf (Design)
Erstellen eines Entwurfs für Design und Architektur, basierend auf den Anforderungen.
3. Implementierung (Coding)
Implementierung des Entwurfs unter Berücksichtigung der Anforderungen.
4. Überprüfung (Testing)
Überprüfung der Implementierung, dass alle Anforderungen erfüllt wurden.
5. Veröffentlichung (Release)
Bereitstellen und Inbetriebnahme der Lösung.
Der BRICKMAKERS SDL beinhaltet Werkzeuge bzw. Maßnahmen für jede Phase des Software-Lebenszyklus, um von Anfang an, systematisch eine hohe Sicherheit in dem fertigen Produkt zu erzeugen. Traditionell wurde das Thema Sicherheit praktisch erst während der Überprüfung oder schlimmer noch, erst nach der Veröffentlichung betrachtet. Also ziemlich weit rechts in der üblichen Darstellung der Entwicklungsphasen:
Analyse > Entwurf > Implementierung > Überprüfung > Veröffentlichung
Ziel des BRICKMAKERS SDL ist die systematische Betrachtung des Themas Sicherheit von Anfang an, also schon während der Analysephase. Diese Verschiebung im Entwicklungszyklus wird allgemein als Shift Left, Shifting Left oder auch Pushing Left bezeichnet.
Projektvorgehen
Es besteht allgemein große Einigkeit darüber, dass jede Software alle genannten Phasen in ihrem Entwicklungszyklus immer durchläuft. Etwas mehr Uneinigkeit besteht in den Fragen, wie lange die einzelnen Phasen sind, ob sich einige überlagern und wie der konkrete Ablauf der Phasen ideal zu gestalten ist. Hier kommen Entwicklungsprozessmodelle und Projektvorgehensmodelle ins Spiel: Wasserfallmodell, Spiralmodell, V-Modell, Iteratives Modell, Agiles Modell, RAD Modell, Prototype Modell, Big Bang Modell, etc. Zusätzlich kommen Entwicklungskonzepte wie Test-Drive-Development, Behavior-Driven-Development und DevOps für eine kontinuierliche Weiterentwicklung hinzu, die Einfluss auf die konkrete Gestaltung des Entwicklungslebenszyklus haben.
Wir bei BRICKMAKERS verwenden eine Mischung aus agilem Projektvorgehen und DevOps, meist in Form von Scrum. Hierzu beschreibt der BRICKMAKERS SDL eine Einbettung der verschiedenen Maßnahmen zur systematischen Entwicklung von sicherer Software während der einzelnen Entwicklungsphasen in die Scrum-Aktivitäten und das allgemeine Projektvorgehen.
Scrum ist eine Projektmanagementmethode aus den agilen Vorgehensmodellen. Hierbei wird Wert auf starke Kollaboration mit der Kundschaft und kurze Feedbackzyklen gelegt. Die einzelnen Entwicklungsphasen werden stark verkürzt und finden alle innerhalb eines Sprints statt. Am Ende des Sprints wird ein sogenanntes Inkrement den Kund*innen vorgestellt, um Änderungswünsche zu erfassen. Ein Inkrement stellt einen lauffähigen Teil der gesamten Anwendung dar, es findet quasi eine Teilveröffentlichung statt. Danach startet der nächste Sprint, auf die letzte Phase im Softwareentwicklungszyklus folgt also wieder die erste, es findet eine kontinuierliche Entwicklung statt.
Unsere Scrum-Teams sind cross-funktional, d.h. sie beinhalten alle Fähigkeiten, welche zur Entwicklung der Software notwendig sind. Klassisch bestehen sie bei uns aus:
-
Min. 2 Software-Entwickelnden
Verantwortlich für die technische Planung, Umsetzung und Kontrolle der Software
-
1-2 UX/UI-Designer*innen
Verantwortlich für die Planung und Gestaltung des Bedienungserlebnis der Software
-
1 Proxy Product Owner
Verantwortlich für die fachliche Planung und Gestaltung der Software
-
1 Client Relationship Manager*in
Verantwortlich für die kaufmännische Betrachtung der Entwicklung der Software
-
1 Scrum Master
Verantwortlich für das methodische Vorgehen des Teams während der Entwicklung der Software
Für die Sicherheit der Software sind alle Projektbeteiligten verantwortlich. Das ist notwendig, da die Sicherheit nicht nur durch Fehler beim Programmieren, sondern auch in der Gestaltung des Bedienungskonzepts und der fachlichen Konzeption negativ beeinflusst werden kann. Das Bedienungskonzept könnte zu riskantem Umgang mit Passwörtern verleiten oder bestimmte Rollen innerhalb der Anwendung könnten zu mächtig sein. Daher ist die wichtigste Maßnahme des BRICKMAKERS SDL Security Training für alle Projektbeteiligten. Weiterbildung zu Informationssicherheit allgemein oder Anwendungssicherheit im speziellen bildet die Grundlage für informierte Entscheidungen während der Entwicklung und im Projektablauf.
Dass alle Projektbeteiligten gleichermaßen verantwortlich für die Sicherheit des zu entwickelnden digitalen Produkts sind, ist unsere Idealvorstellung und auch immer unser Ziel. Allerdings ist diese Vorstellung allein im Alltag nicht immer praktikabel und schon aufgrund von Kompetenzunterschieden innerhalb des Teams nicht immer abbildbar. Von einem Auszubildenden kann nicht dasselbe Maß an Verantwortung verlangt werden, wie von einer Entwicklerin mit mehreren Jahren Berufserfahrung. Der BRICKMAKERS SDL definiert daher eine neue Rolle für unsere Scrum Projekte:
-
1 Security Champion
Verantwortlich für die Entwicklung der Anwendungssicherheit der Software
Ein Security Champion trägt die Verantwortung für die Anwendungssicherheit des Produkts. Hierzu ergreift er oder sie selbst aktiv Maßnahmen zur Absicherung der Anwendung, muss aber nicht alles selbst machen. Die Verantwortung liegt darin, dass Sicherungsmaßnahmen durchgeführt werden, egal von wem. Dazu schult und berät der Security Champion alle Projektbeteiligten zu sicherheitsrelevanten Fragen, die während der Entwicklung auftreten und unterstützt bei der Umsetzung.
Der BRICKMAKERS SDL beschreibt auch das notwendige Selbstverständnis des Security Champions für uns als Digitalisierungsagentur. Es soll nicht darum gehen, Funktionswünsche mit dem Hinweis auf Security abzulehnen und zu blockieren, also kein “Security says no!”. Ziel ist es stattdessen gewünschte Funktionen so sicher wie möglich umzusetzen: “Security says yes, but...”
Fortsetzung folgt: In den nächsten Beiträgen werden wir die einzelnen Maßnahmen in den verschiedenen Entwicklungsphasen im Lebenszyklus digitaler Produkte und Dienstleistung zur systematischen Betrachtung ihrer Sicherheit im Detail vorstellen.
Bleibt gespannt!