
TL;DR
|
Ein Prüfer, der nach Belegen für euren Bereitstellungsprozess fragt, und eine Vorfallanalyse, die nach den Ursachen des Problems sucht, wollen im Grunde dasselbe wissen. Der Unterschied liegt im Zeitpunkt. Der eine entdeckt die Schwachstelle, bevor sie euch etwas kostet. Der andere entdeckt sie mitten in einem Ausfall, während ein Kunde am Telefon hängt.
Entwicklung, Staging und Produktion haben sich still und leise voneinander entfernt, sodass eine Änderung, die in einer Umgebung funktioniert, sich in einer anderen nicht gleich verhält. Das bleibt meist unsichtbar, bis in der Produktivumgebung etwas kaputtgeht, das niemand anderswo reproduzieren kann.
Die Lösung sieht so aus: Jede Umgebung wird anhand derselben Definition bereitgestellt, sodass es zwischen Staging und der Produktivumgebung kein „nahe genug“ gibt, über das man streiten könnte.
Frag dich selbst: Stimmt die Staging-Umgebung mit der Produktivumgebung überein, oder gibt es eine Klasse von Fehlern, die unser Staging aufgrund von Inkonsistenzen zwischen Staging- und Produktivumgebung nicht abfangen kann?
Irgendwo im Release-Prozess gibt es einen Schritt, den jemand manuell ausführen muss: ein Konfigurationsflag, eine Datenbankmigration, ein Cache-Leeren. Das funktioniert gut, bis die Person, die sich normalerweise daran erinnert, nicht da ist.
Die Lösung sieht so aus: Die Release-Pipeline ist vollständig automatisiert und über alle Umgebungen hinweg vereinheitlicht, sodass der Vorgang immer gleich abläuft – egal, ob die richtige Person an diesem Tag darauf achtet oder nicht.
Frag dich selbst: Könnte jemand, der noch nie ein Release durchgeführt hat, dies allein anhand des Runbooks erledigen, ohne die Person anzusprechen, die sich normalerweise darum kümmert?
Wenn du fragst, wer für einen bestimmten Dienst verantwortlich ist, bekommst du mehr als eine Antwort – oder ein Achselzucken. Wenn etwas kaputtgeht, vergehen die ersten zwanzig Minuten damit, herauszufinden, wer sich darum kümmern soll, statt das Problem zu beheben.
So sieht die Lösung aus: Jeder Dienst hat einen klar definierten Verantwortlichen, und die Zugriffsebenen des Projekts spiegeln die Organisationsstruktur wider.
Frag dich selbst: Wenn du drei verschiedene Leute fragen würdest, wem dieser Dienst gehört, würdest du dann drei verschiedene Antworten bekommen? Sind die Verantwortlichen tatsächlich in der Lage, Deploys durchzuführen?
Eine Korrektur durchzusetzen ist der Plan. Ein Rollback ist das, was seit dem letzten Vorfall niemand mehr getestet hat.
So sieht eine behobene Störung aus: Das Rollback ist ein getesteter, eingeübter Vorgang, und backups können eigenständig wiederhergestellt werden.
Frag dich selbst: Wann hat dein Team das letzte Mal ein Rollback durchgeführt und wie erfolgreich war es? Ist das Rollback-Verfahren dokumentiert und getestet?
Die Umgebungsvariablen, Feature-Flags und Infrastruktureinstellungen in der Produktivumgebung haben Änderungen angesammelt, die nie vollständig in die Versionskontrolle zurückgespiegelt wurden. Was tatsächlich läuft und was laut Repo laufen sollte, sind zwei verschiedene Dinge.
So sieht die Lösung aus: Die Konfiguration ist im Code verankert – demselben Code, der überprüft und versioniert wird –, sodass die Produktion niemals unbemerkt von dem abweicht, was dokumentiert ist.
Frag dich selbst: Bin ich zuversichtlich, meine Umgebungen löschen und neu aufbauen zu können?
Für ein Projekt, das vor acht Monaten beendet wurde, wurde Zugriff gewährt und nie widerrufen. Ein Praktikant vom letzten Sommer kann technisch gesehen immer noch in die Produktivumgebung pushen. Niemand behält den Überblick darüber, wer worauf zugreifen darf.
So sieht die Lösung aus: Der Zugriff richtet sich nach der aktuellen Rolle und dem aktuellen Bedarf und wird regelmäßig überprüft, anstatt sich anzuhäufen, bis jemand bei einem Audit danach fragt.
Frag dich selbst: Ist die Zugriffsliste fest im Bereitstellungssystem integriert oder wird der Zugriff manuell verwaltet? Können ehemalige Mitarbeiter immer noch auf deinen Code oder deine Infrastruktur zugreifen?
Manche Deploys sind Routine. Andere sind ein kleines Ereignis, das besondere Vorsicht erfordert, bei dem ein paar Leute in Bereitschaft stehen und ein Slack-Thread mit dem Titel „Nur für den Fall“ läuft. Wenn du nicht vorhersagen kannst, welche Deploys reibungslos verlaufen werden, ist dein Prozess die Variable – nicht das Programmieren.
So sieht es aus, wenn das Problem behoben ist: Deploys sind absichtlich langweilig, weil der Prozess dahinter so konsistent ist, dass sich niemand darauf einstellen muss.
Frag dich selbst: Wenn du auf deine letzten zehn Deploys zurückblickst – hättest du im Voraus vorhersagen können, bei welchen besondere Vorsicht geboten war?
Um das zu beheben, kommt es vor allem darauf an, den Bereitstellungsprozess so konsistent zu gestalten, dass er nicht mehr davon abhängt, wer an diesem Tag gerade aufmerksam ist – und nicht darauf, ein Sicherheitsteam einzustellen oder ein großes Compliance-Programm zu starten.
Genau das ist auch der Fall bei einer standardisierten Plattform wie Upsun Cloud, die dafür entwickelt wurde, dies automatisch für dich zu erledigen: Konsistenz der Umgebungen, Zugriffskontrolle und Rollback werden auf der Plattformebene gehandhabt, anstatt manuell über alle sieben Schwachstellen hinweg verwaltet zu werden.
Bezieht sich diese Liste auf ein bestimmtes Compliance-Framework wie SOC 2 Typ 2 oder ISO 27001?
Nein. Diese sieben Schwachstellen treten unabhängig davon auf, welches Framework die Anforderungen stellt, denn sowohl Auditoren als auch bei der Analyse von Vorfällen wird letztendlich geprüft, wie Software tatsächlich entwickelt und bereitgestellt wird – und nicht nur die Sicherheitskontrollen auf dem Papier.
Welcher dieser sieben Schwachpunkte verursacht die meisten Vorfälle?
Inkonsistente Umgebungen und manuelle Bereitstellungsschritte treten tendenziell am häufigsten auf, da sie sich je nach Tag, Person oder Umgebung am ehesten unterschiedlich verhalten.
Woher weißt du, ob Konfigurationsabweichungen bereits ein Problem sind?
Wenn niemand ohne Überprüfung mit Sicherheit sagen kann, ob die Produktionskonfiguration mit dem übereinstimmt, was in der Versionskontrolle steht, sind wahrscheinlich bereits Abweichungen aufgetreten. Die Diskrepanz bleibt meist verborgen, bis jemand tatsächlich nachprüft.
Musst du alle sieben vor einem Audit beheben?
Nicht unbedingt alle auf einmal, aber es lohnt sich zu wissen, welche der sieben auf dich zutreffen, bevor ein Auditor oder ein Vorfall sie für dich aufdeckt. Es ist meist realistischer, zuerst die risikoreichsten zu beheben, als zu versuchen, alle sieben auf einen Schlag zu beseitigen.