Read in English · Leer en español · Lire en français
Abschnitt 8.1 von 8.8 · Mittelstufe · 20 Min. Lesezeit
Sicherheitsprinzipien für Architekten
Videolektion
5 Min. · auf Englisch gesprochen, mit UntertitelnNur anhören (Audio)
Transkript lesen
Die meisten schweren Sicherheitsvorfälle entstehen nicht durch raffinierte Angriffe auf die Kryptografie. Sie entstehen aus Designentscheidungen über Vertrauen, die niemand ausdrücklich getroffen hat. Diese Lektion gibt Ihnen die Prinzipien, um sie bewusst zu treffen.
Denken Sie daran, wie eine Bankfiliale geschützt ist. Es gibt eine verschlossene Eingangstür, und das Personal hat nur Schlüssel für die Räume, die es braucht. Den Tresor können nur zwei Personen gemeinsam öffnen. Es gibt Kameras und eine Alarmanlage, die die Polizei ruft. Und all das war von Anfang an eingeplant. Softwaresicherheit funktioniert genauso: Architekten entscheiden früh, wo die verschlossenen Türen sind, wer welche Schlüssel bekommt und was passiert, wenn ein Schloss versagt.
Das Grundvokabular ist die CIA-Triade. Auf der Essenslieferplattform umfasst Vertraulichkeit die Adressen der Kunden, die Live-Standorte der Kuriere und die Bankverbindungen der Restaurants für Auszahlungen. Integrität umfasst Preise, Erstattungen und Auszahlungen. Ein Angreifer, der den Preis eines Gerichts auf null setzt, hat nichts Geheimes gelesen, aber echten Schaden angerichtet. Verfügbarkeit zählt am meisten während der Abendspitze. Benennen Sie für jedes Asset die Eigenschaften, die zählen, denn sie geraten in Konflikt. Fail-closed schützt Daten, kostet aber Verfügbarkeit. Eine öffentliche Speisekarte kann per Fail-open auf eine zwischengespeicherte Kopie ausweichen, eine Erstattung dagegen muss fail-closed sein.
Neunzehnhundertfünfundsiebzig veröffentlichten Jerome Saltzer und Michael Schroeder acht Designprinzipien, die bis heute die Grundlage sicheren Designs sind, weil es in ihnen um Struktur geht, nicht um Technologie. Hier sind fünf davon. Sparsamkeit der Mechanismen: Halten Sie Sicherheit klein und einfach. Eine gemeinsame, gut geprüfte Autorisierungsbibliothek statt Prüfungen, die in jedem Service anders geschrieben sind. Ausfallsichere Standardwerte: Im Zweifel oder wenn etwas ausfällt, lautet die Antwort Nein. Eine nicht erreichbare Policy Engine bedeutet Ablehnen. Vollständige Zugriffsprüfung: Prüfen Sie jeden Zugriff, jedes Mal. Der Bestellservice prüft bei jeder Anfrage, ob diesem Kunden diese Bestellung gehört. Trennung von Privilegien: Verlangen Sie zwei unabhängige Bedingungen, wie zwei Schlüssel. Eine große Erstattung braucht eine zweite Freigabe. Und Least Privilege: nur die nötigen Rechte, und nur so lange wie nötig. Das Datenbankkonto des Speisekarten-Service kann die Zahlungsdaten nicht lesen.
Defense in Depth schichtet unabhängige Kontrollen, sodass ein einzelnes Versagen das Asset nicht offenlegt. Hier sind die Schichten auf dem Bestellpfad der Plattform. Die Kunden-App liegt außerhalb der Vertrauensgrenze. Sie spricht mit der Plattform nur über HTTPS, und nichts auf dem Gerät gilt als vertrauenswürdig. Innen fängt die Edge Verkehrsfluten ab und wendet Rate Limits an. Das API-Gateway prüft bei jedem Token Signatur, Ablauf, Audience und Scope. Der Bestellservice prüft, ob dieser Kunde diese Bestellung sehen darf. Selbst wenn das Gateway einen Bug hat, kann also kein Kunde die Bestellung eines anderen lesen. Die Datenbank nutzt ein Konto mit Least Privilege und ist im Ruhezustand verschlüsselt, die Backups mit eigenen Schlüsseln. Logging und Alarmierung über alle Schichten sollten auffangen, was durchkommt. Das Schlüsselwort ist unabhängig: Zwei Schichten, die aus demselben Grund versagen, sind eine Schicht, die zweimal gezeichnet wurde.
Secure by Default heißt, dass jede Schwächung des Schutzes eine bewusste Handlung erfordert. Enthält die gemeinsame Service-Vorlage bereits Token-Validierung und Sicherheits-Logging, startet jeder neue Service sicher. Manche nennen das eine Paved Road. Die Angriffsfläche ist alles, was ein Angreifer erreichen kann. Einen ungenutzten Endpoint zu entfernen, senkt das Risiko günstiger als jede zusätzliche Kontrolle. Eine Vertrauensgrenze ist die Stelle, an der sich das Vertrauen ändert, und genau dort gehören Authentifizierung, Autorisierung und Eingabevalidierung hin. Alles auf dem Gerät des Kunden steht unter der Kontrolle des Angreifers, deshalb ist das Ausblenden eines Buttons keine Autorisierung.
Wenden wir die Prinzipien an. Ein erster Entwurf für Support-Erstattungen lässt jeden Mitarbeitenden jede Bestellung erstatten, in beliebiger Höhe. Mit Least Privilege dürfen Mitarbeitende nur Bestellungen in ihrem eigenen Markt erstatten, und das Tool kann nie Kartendaten lesen. Mit ausfallsicheren Standardwerten wird die Erstattung abgelehnt, wenn eine Prüfung fehlschlägt oder in ein Timeout läuft. Kein Ausweichpfad überspringt die Prüfungen. Mit vollständiger Zugriffsprüfung gleicht der Zahlungsservice jede Erstattung selbst mit der ursprünglichen Belastung ab, statt dem Tool zu vertrauen. Mit Trennung von Privilegien brauchen Erstattungen über hundert Pfund oder eine dritte Erstattung an denselben Kunden innerhalb einer Woche eine Freigabe durch Vorgesetzte. Und jede Erstattung landet in einem Audit-Log, an das nur angefügt werden kann. Nun sind unehrliche Mitarbeitende oder jemand, der das Konto eines Mitarbeitenden übernommen hat, auf kleine, protokollierte Erstattungen in einem Markt beschränkt.
Architekten verantworten Entscheidungen, die Teams übergreifen und teuer zu ändern sind: Vertrauensgrenzen, das Identitäts- und Autorisierungsmodell und welche Daten mit welchen Schlüsseln verschlüsselt werden. Die Teams verantworten die korrekte Anwendung: Autorisierung an jedem Endpoint und Objekt, Eingabevalidierung und aktuelle Abhängigkeiten. Und die OWASP Top Ten, die Liste der Risiken für Webanwendungen des Open Worldwide Application Security Project, sind eine Sensibilisierungsliste, keine Norm. Sie hilft Ihnen zu prüfen, dass nichts Großes fehlt.
Der vollständige Abschnitt enthält alle acht Prinzipien, die Tabelle der OWASP Top Ten und den sicheren Entwicklungslebenszyklus. Als Nächstes lernen Sie in Abschnitt acht Punkt zwei, wie man ein Bedrohungsmodell für einen Entwurf erstellt. Bis gleich.
Was Sie wissen müssen
- Sicherheit ist eine Qualität der Struktur: Wo Vertrauensgrenzen verlaufen, welche Komponente was tun darf und wohin Daten fließen, entscheidet über die meisten Sicherheitseigenschaften, und die meisten Sicherheitsvorfälle nutzen solche Entscheidungen aus, nicht die Kryptografie.
- Vertraulichkeit, Integrität und Verfügbarkeit sowie Authentizität, Verantwortlichkeit und Nichtabstreitbarkeit müssen je Asset benannt werden, weil sie in Konflikt geraten: Fail-closed schützt Daten, kostet aber Verfügbarkeit.
- Die Prinzipien von Saltzer und Schroeder aus dem Jahr 1975 (Sparsamkeit der Mechanismen, ausfallsichere Standardwerte, vollständige Zugriffsprüfung, offenes Design, Trennung von Privilegien, Least Privilege, möglichst wenige gemeinsame Mechanismen, psychologische Akzeptanz) bleiben die Grundlage sicheren Designs.
- Defense in Depth schichtet unabhängige Kontrollen, sodass ein einzelnes Versagen kein Asset offenlegt; sichere Voreinstellungen und eine Paved Road machen den einfachen Weg zum sicheren.
- Verkleinern Sie die Angriffsfläche und setzen Sie Authentifizierung, Autorisierung und Validierung an jede Vertrauensgrenze; alles auf dem Client liegt außerhalb der Grenze.
- Die OWASP Top 10:2025 sind eine Sensibilisierungsliste, keine Norm; das SSDF von NIST (SP 800-218) beschreibt einen sicheren Entwicklungslebenszyklus, und Architekten verantworten die teamübergreifenden Sicherheitsentscheidungen, während die Teams für deren korrekte Anwendung verantwortlich sind.
Sicherheit als Qualität der Struktur
Kapitel 2 hat Sicherheit als Qualitätsmerkmal eingeführt: die Fähigkeit des Systems, Daten und Funktionen vor unbefugter Nutzung zu schützen und zugleich den Befugten zu dienen, ausgedrückt durch testbare Sicherheitsszenarien, die einen Angreifer, einen Angriff, ein Ziel und eine messbare Reaktion benennen. Dieses Kapitel geht den nächsten Schritt und fragt, wie Architektur diese Qualität hervorbringt. Die Antwort lautet: Die meisten Sicherheitseigenschaften werden durch die Struktur entschieden, also dadurch, welche Komponenten es gibt, welche davon welchen anderen vertrauen, wo Daten gespeichert und kopiert werden und durch welche wenigen Punkte jede Anfrage laufen muss.
Betrachten Sie, wie reale Sicherheitsvorfälle entstehen. Ein Angreifer ändert die Bestellnummer in einer URL und sieht die Adresse eines anderen Kunden, weil der Service geprüft hat, ob der Benutzer angemeldet ist, aber nicht, ob die Bestellung ihm gehört. Ein Storage-Bucket mit Datenbankexporten ist aus dem Internet lesbar, weil vor Jahren eine Voreinstellung geändert wurde. Ein interner Reporting-Service akzeptiert jede Anfrage aus dem Netzwerk, sodass ein einziger kompromittierter Laptop jeden Kundendatensatz erreicht. Keiner dieser Fälle braucht raffinierte Kryptografie, um ausgenutzt zu werden; jeder ist eine Designentscheidung über Vertrauen, die niemand ausdrücklich getroffen hat. Security by Design heißt, diese Entscheidungen bewusst, früh und schriftlich zu treffen und es dann schwer zu machen, sie versehentlich zu verletzen.
Sicherheitsarchitektur steht deshalb neben den anderen Querschnittsanliegen aus Abschnitt 8 von arc42: ein Identitätsmodell, ein Autorisierungsmodell, ein Datenschutzkonzept und ein Logging-Konzept, an die sich jedes Team hält. Der Rest dieses Abschnitts legt das Vokabular und die Prinzipien fest, auf denen die übrigen Abschnitte des Kapitels aufbauen.
Vertraulichkeit, Integrität und Verfügbarkeit in einem realen System
Die CIA-Triade ist der Ausgangspunkt. Auf der Essenslieferplattform umfasst Vertraulichkeit die Namen, Adressen, Telefonnummern und Bestellhistorien der Kunden, die Live-Standorte und Ausweisdokumente der Kuriere, die Bankverbindungen der Restaurants für Auszahlungen und die eigenen Secrets der Plattform. Integrität umfasst Preise, Warenkorbsummen, Erstattungen, Kurierauszahlungen und die Speisekarte, die ein Kunde sieht: Ein Angreifer, der den Preis eines Gerichts auf null setzen oder die Auszahlungen eines Restaurants auf sein eigenes Bankkonto umleiten kann, hat nichts Geheimes gelesen, aber ernsten Schaden angerichtet. Verfügbarkeit zählt am meisten während der Abendspitze, wenn ein Denial-of-Service-Angriff oder eine Ransomware-Infektion jede Minute Umsatz kostet.
ISO/IEC 25010:2023 ergänzt Authentizität (Identitäten lassen sich nachweisen), Verantwortlichkeit (Aktionen lassen sich auf den zurückführen, der sie ausgeführt hat), Nichtabstreitbarkeit (es lässt sich nachweisen, dass Aktionen stattgefunden haben) und Widerstandsfähigkeit (das Produkt arbeitet auch unter Angriff wie vorgesehen weiter). Architekten sollten für jedes Asset benennen, welche Eigenschaften zählen, weil sie in verschiedene Richtungen ziehen. Fail-closed schützt Vertraulichkeit und Integrität, kostet aber Verfügbarkeit: Ist der Autorisierungsservice ausgefallen, lehnt ein Fail-closed-Bestellservice Bestellungen ab. Fail-open bewahrt die Verfügbarkeit und setzt alles andere aufs Spiel. Die richtige Wahl unterscheidet sich je Vorgang: Die Anzeige einer öffentlichen Speisekarte kann per Fail-open auf eine zwischengespeicherte Kopie ausweichen, eine Erstattung dagegen muss fail-closed sein.
Die Designprinzipien von Saltzer und Schroeder
1975 veröffentlichten Jerome Saltzer und Michael Schroeder, gestützt auf ihre Erfahrung mit dem Betriebssystem Multics am MIT, in The Protection of Information in Computer Systems acht Designprinzipien für Schutzmechanismen. Ein halbes Jahrhundert später sind sie noch immer die meistzitierte Grundlage sicheren Designs, weil es in ihnen um Struktur geht und nicht um Technologie. Die Tabelle formuliert jedes Prinzip neu und gibt ein modernes Beispiel von der Essenslieferplattform.
Die acht Designprinzipien mit modernen Beispielen
| Prinzip | Was es verlangt | Modernes Beispiel |
|---|---|---|
| Sparsamkeit der Mechanismen | Das Sicherheitsdesign so klein und einfach wie möglich halten, damit es gründlich geprüft und getestet werden kann. | Eine gemeinsame, gut geprüfte Autorisierungsbibliothek oder Policy Engine statt Berechtigungsprüfungen, die in jedem Service anders von Hand geschrieben sind. |
| Ausfallsichere Standardwerte | Zugriff auf ausdrückliche Erlaubnis stützen; im Zweifel oder wenn etwas ausfällt, lautet die Antwort Nein. | Ein neuer API-Endpoint bleibt gesperrt, bis eine Policy den Zugriff gewährt; eine nicht erreichbare Policy Engine bedeutet Ablehnen, nicht Erlauben. |
| Vollständige Zugriffsprüfung | Jeden Zugriff auf jedes Objekt jedes Mal prüfen, nicht nur beim ersten Mal. | Der Bestellservice prüft bei jedem GET /orders/{id} die Eigentümerschaft, statt jeder ID von einem angemeldeten Benutzer zu vertrauen; zwischengespeicherte Entscheidungen verfallen schnell. |
| Offenes Design | Sicherheit darf nicht davon abhängen, dass das Design geheim ist; geheim sein sollten nur Schlüssel und Passwörter. | Veröffentlichte Algorithmen (AES, TLS 1.3) und Standardprotokolle (OAuth 2.0), die sicher bleiben, auch wenn Angreifer den Quellcode lesen. |
| Trennung von Privilegien | Wo möglich, zwei unabhängige Bedingungen (zwei Schlüssel) verlangen, bevor Zugriff gewährt wird. | Erstattungen über einem Schwellenwert brauchen eine zweite Freigabe; ein Produktions-Release braucht sowohl ein Code-Review als auch eine erfolgreiche Pipeline; Anmeldung mit mehreren Faktoren. |
| Least Privilege | Jedem Programm und jedem Benutzer nur die Rechte geben, die für die Aufgabe nötig sind, und nur so lange wie nötig. | Das Datenbankkonto des Speisekarten-Service kann das Zahlungsschema nicht lesen; die Cloud-Rolle eines Build-Jobs kann Images pushen, aber keine Cluster löschen. |
| Möglichst wenige gemeinsame Mechanismen | Mechanismen, die Benutzer gemeinsam nutzen, minimieren, weil jeder gemeinsame Mechanismus ein Weg ist, über den Informationen abfließen können. | Getrennte Caches, Queues oder Connection-Pools je Mandant oder Vertrauensstufe; ein gemeinsamer Cache mit unachtsam gewählten Cache-Keys liefert die Daten eines Benutzers an einen anderen aus. |
| Psychologische Akzeptanz | Schutz muss leicht richtig zu benutzen sein, sonst umgehen ihn die Menschen. | Passkeys statt komplizierter Passwortregeln; sichere Voreinstellungen in der Plattform; Warnungen, die selten sind und deshalb gelesen werden. |
Defense in Depth
Defense in Depth bedeutet, mehrere unabhängige Kontrollen übereinanderzuschichten, sodass das Versagen oder Umgehen einer einzelnen das Asset nicht offenlegt. Die Idee stammt aus dem militärischen Festungsbau und ist in der funktionalen Sicherheit ebenso Standardpraxis wie in der IT-Sicherheit. Ihr Wert hängt ganz am Wort unabhängig: Zwei Schichten, die aus demselben Grund versagen, etwa zwei Services, die beide einem gefälschten Header vertrauen, sind eine Schicht, die zweimal gezeichnet wurde.
Das Diagramm zeigt die Schichten auf dem Bestellpfad der Essenslieferplattform. Hat die Token-Validierung des Gateways einen Bug, verhindert die Prüfung auf Objektebene im Bestellservice trotzdem, dass ein Kunde die Bestellung eines anderen liest. Stiehlt ein Angreifer die Disk-Snapshots der Datenbank, schützt sie die Verschlüsselung im Ruhezustand mit Schlüsseln, die anderswo liegen. Versagt all das, sollte das Monitoring das ungewöhnliche Anfragemuster bemerken, und jemand sollte reagieren. Defense in Depth ist auch die ehrliche Antwort auf die Frage „Was, wenn diese Kontrolle versagt?“, die jedes Bedrohungsmodell stellt.
Secure by Default und Security by Design
Ein Produkt ist Secure by Default, wenn seine Konfiguration im Auslieferungszustand die sichere ist, sodass jede Schwächung des Schutzes eine bewusste Handlung erfordert. Viele große Sicherheitsvorfälle gingen auf unsichere Voreinstellungen zurück, die nie geändert wurden: Datenbanken, die ohne Passwort im Internet erreichbar waren, Administratorkonsolen mit Werkszugangsdaten, Storage-Buckets, die sich mit einer einzigen Einstellung öffentlich machen ließen. Die Anbieter haben reagiert: Seit April 2023 werden zum Beispiel neue Amazon-S3-Buckets mit eingeschaltetem Block Public Access und deaktivierten Access Control Lists angelegt. 2023 veröffentlichten die US-amerikanische Cybersecurity and Infrastructure Security Agency (CISA) und Partnerbehörden aus mehreren Ländern gemeinsame Leitlinien, die Hersteller drängen, Produkte Secure by Design und Secure by Default zu gestalten, und 2024 startete die CISA eine freiwillige Secure-by-Design-Selbstverpflichtung für Softwarehersteller.
Für Architekten gilt Secure by Default für die Plattform ebenso wie für Produkte. Enthält die gemeinsame Service-Vorlage bereits Token-Validierung, strukturiertes Sicherheits-Logging, einen Container-Benutzer ohne Root-Rechte und ein Datenbankkonto mit Least Privilege, startet jeder neue Service sicher, und Teams müssen sich ausdrücklich dagegen entscheiden, was im Review sichtbar wird. Das nennen manche Organisationen eine Paved Road: Der einfachste Weg ist zugleich der sichere.
Eng damit verwandt ist die Frage, wie sich ein System verhält, wenn etwas schiefgeht. Die OWASP Top 10:2025 haben eine Kategorie für den fehlerhaften Umgang mit Ausnahmesituationen aufgenommen, zu der auch Fail-open gehört: ein Fehler in einer Berechtigungsprüfung, der abgefangen und ignoriert wird, ein Timeout, das standardmäßig „erlaubt“ ergibt, ein Parsing-Fehler, der die Validierung überspringt. Ausfallsichere Standardwerte, im Code angewendet, bedeuten, dass jeder Ausnahmepfad in einer Sicherheitsentscheidung in einer Ablehnung endet.
Angriffsfläche und Vertrauensgrenzen
Die Angriffsfläche ist alles, was ein Angreifer erreichen und beeinflussen kann: öffentliche Endpoints und ihre Parameter, offene Ports, Datei-Uploads, Message Queues, die Eingaben von Partnern annehmen, Webhooks, Administratorkonsolen, mobile Apps, die sich dekompilieren lassen, sowie der Code von Drittanbietern und die Menschen, denen das System vertraut. Michael Howard bei Microsoft machte Anfang der 2000er-Jahre die Idee bekannt, sie zu messen; die praktische Regel lautet, sie so klein wie möglich zu halten und genau zu wissen, was dazugehört. Einen ungenutzten Endpoint zu entfernen, einen Administratorport zum Internet hin zu schließen oder ein Feature abzuschalten, das niemand nutzt, senkt das Risiko günstiger als jede zusätzliche Kontrolle. Jede Wahl eines Architekturstils in Kapitel 6 hat hier einen Sicherheitspreis: Jeder neue, über das Netzwerk erreichbare Service bringt Endpoints, Zugangsdaten und Datenverkehr hinzu, die geschützt werden müssen.
Eine Vertrauensgrenze ist die Stelle, an der Daten oder Steuerung zwischen Teilen mit unterschiedlichem Vertrauens- oder Berechtigungsniveau wechseln. Die offensichtlichste liegt zwischen dem Internet und der Plattform, aber es gibt viele weitere: zwischen der Kunden-App und der API, zwischen dem Tablet eines Restaurants und dem Speisekarten-Service, zwischen Services verschiedener Teams, zwischen der Plattform und einem Zahlungsanbieter, zwischen Anwendungscode und Datenbank sowie zwischen normalen Benutzern und Administratoren. Vertrauensgrenzen sind wichtig, weil dort die Prüfungen hingehören: Authentifizierung, Autorisierung, Eingabevalidierung und Ausgabekodierung finden statt, wenn Daten eine Grenze überqueren, nie unter der Annahme, die andere Seite habe es schon erledigt. Die Vertrauensgrenzen in ein Datenflussdiagramm einzuzeichnen, ist der erste Schritt der Bedrohungsmodellierung.
Die OWASP Top 10 als Sensibilisierungsliste
Die OWASP Top 10 sind die Rangliste der kritischsten Sicherheitsrisiken für Webanwendungen des Open Worldwide Application Security Project, zusammengestellt aus eingereichten Schwachstellendaten und einer Umfrage in der Community. Die aktuelle Ausgabe, die OWASP Top 10:2025, ist die achte. Gegenüber der Ausgabe von 2021 bleibt Broken Access Control auf Platz eins und umfasst nun auch Server-Side Request Forgery, Security Misconfiguration steigt auf Platz zwei, die frühere Kategorie Vulnerable and Outdated Components wird zu Software Supply Chain Failures erweitert, und eine neue Kategorie behandelt Mishandling of Exceptional Conditions.
OWASP Top 10:2025 und die architektonischen Hebel
| Kategorie | Was schiefgeht | Architektonischer Hebel |
|---|---|---|
| A01 Broken Access Control | Benutzer handeln außerhalb ihrer Berechtigungen, etwa indem sie durch Ändern einer ID die Bestellung eines anderen Kunden lesen; umfasst Server-Side Request Forgery. | Ein Autorisierungsmodell, standardmäßig ablehnen, Prüfungen auf Objektebene in jedem Service, eingeschränkter ausgehender Netzwerkzugriff. |
| A02 Security Misconfiguration | Unsichere Voreinstellungen, offener Speicher, ausführliche Fehlerseiten, unnötige Features, die eingeschaltet bleiben. | Infrastructure as Code, gehärtete Vorlagen, automatisierte Policy-Prüfungen in der Pipeline. |
| A03 Software Supply Chain Failures | Verwundbare oder kompromittierte Abhängigkeiten, Build-Werkzeuge und Vertriebskanäle. | Inventar der Abhängigkeiten (SBOM), Pinning, signierte Herkunftsnachweise; siehe Sicherheit der Software-Lieferkette. |
| A04 Cryptographic Failures | Unverschlüsselte sensible Daten, schwache Algorithmen, schlechter Umgang mit Schlüsseln. | Datenklassifizierung, TLS überall, ein KMS und Envelope Encryption. |
| A05 Injection | Nicht vertrauenswürdige Daten werden als Code interpretiert: SQL, Betriebssystembefehle, Cross-Site-Scripting. | Parametrisierte Abfragen, kontextbezogene Ausgabekodierung, sichere Framework-APIs. |
| A06 Insecure Design | Fehlende oder unwirksame Kontrollen, die sich auch durch noch so korrektes Programmieren nicht beheben lassen. | Bedrohungsmodellierung, sichere Entwurfsmuster, Missbrauchsfälle neben den User Stories. |
| A07 Authentication Failures | Credential Stuffing, schwache Wiederherstellungsabläufe, Fehler im Session-Handling. | Ein zentraler Identity Provider, MFA oder Passkeys, Rate Limits bei der Anmeldung. |
| A08 Software or Data Integrity Failures | Code, Updates oder Daten vertrauen, ohne ihre Integrität zu prüfen, etwa unsignierte Updates oder unsichere Deserialisierung. | Signaturprüfung, Integritätsprüfungen für Daten, die Grenzen überqueren. |
| A09 Security Logging and Alerting Failures | Angriffe werden nicht aufgezeichnet oder zwar aufgezeichnet, aber nie bemerkt oder bearbeitet. | Ein Standard für Sicherheits-Logging, Alarmierung, Runbooks für Incidents. |
| A10 Mishandling of Exceptional Conditions | Uneinheitlich behandelte Fehler, Systeme mit Fail-open, Fehlermeldungen, die Details preisgeben. | Fail-closed, zentrale Fehlerbehandlung, Ressourcenlimits. |
Behandeln Sie die Liste als das, was sie laut OWASP ist: ein Dokument zur Sensibilisierung, keine Norm. Sie ist nützlich für Schulungen, um zu prüfen, ob ein Bedrohungsmodell nicht eine ganze Klasse von Problemen übersehen hat, und für Gespräche mit Stakeholdern. Sie ist keine vollständige Sammlung von Anforderungen, und „Wir sind OWASP-Top-10-konform“ bedeutet wenig. Für überprüfbare Anforderungen listet der Application Security Verification Standard (ASVS) von OWASP testbare Kontrollen auf drei Strengestufen auf, und die separate OWASP API Security Top 10 behandelt API-spezifische Risiken wie Broken Object Level Authorization.
Ein sicherer Entwicklungslebenszyklus und Shift Left
Ein sicherer Entwicklungslebenszyklus baut Sicherheitsaktivitäten in jede Phase der Auslieferung ein, statt sich auf einen Test kurz vor dem Release zu verlassen. Microsoft machte seinen Security Development Lifecycle 2004 verbindlich, nach dem Trustworthy-Computing-Memo von Bill Gates aus dem Jahr 2002, und die Idee verbreitete sich in der ganzen Branche. Die aktuelle Referenz ist das Secure Software Development Framework (SSDF) von NIST, SP 800-218, dessen Version 1.1 im Februar 2022 veröffentlicht wurde; im Dezember 2025 legte NIST einen Entwurf einer Überarbeitung (Version 1.2) zur Kommentierung vor, der zum Zeitpunkt des Schreibens noch nicht final war. Das SSDF gliedert die Praktiken in vier Gruppen: die Organisation vorbereiten (Rollen, Schulung, Toolchains, Sicherheitsanforderungen), die Software schützen (Code und Build-Integrität schützen, Herkunftsnachweise aufbewahren), gut gesicherte Software produzieren (so entwerfen, dass die Sicherheitsanforderungen erfüllt werden, Bedrohungsmodelle erstellen, prüfen und testen, standardmäßig sicher konfigurieren) und auf Schwachstellen reagieren (erkennen, beheben und die Grundursachen analysieren, damit dieselbe Klasse nicht wiederkehrt). Es beschreibt Ergebnisse, statt Werkzeuge vorzuschreiben, und ist deshalb eine gute Checkliste für einen Architekten, der einen Auslieferungsprozess bewertet.
Shift Left heißt, Sicherheitsarbeit nach vorn zu verlagern: Sicherheitsanforderungen und Missbrauchsfälle zusammen mit den User Stories, Bedrohungsmodellierung im Design, statische Analyse und Secret-Scanning bei jedem Commit, Abhängigkeitsprüfungen in der Pipeline. Das wirtschaftliche Argument kennen Sie aus Kapitel 1: Eine fehlende Autorisierungsprüfung, die im Design-Review gefunden wird, kostet eine Stunde; derselbe Fehler, nach einem Sicherheitsvorfall gefunden, kostet eine Meldung an die Aufsichtsbehörden. Fachleute sind uneins, wie weit man das treiben sollte. Befürworter sagen, Entwickler, die Sicherheit verstehen, schreiben weniger Schwachstellen. Kritiker weisen darauf hin, dass es Entwicklungsteams mit minderwertigen Befunden überflutet, wenn man ihnen einfach Sicherheitswerkzeuge vorschaltet, und Sicherheit zur Teilzeitaufgabe aller und zur Expertise von niemandem macht; sie plädieren für sichere Voreinstellungen in der Plattform (die Paved Road), damit der sichere Weg keinen Zusatzaufwand erfordert, und für Sicherheitsfachleute, die dort eingebunden sind, wo das Risiko am höchsten ist. Die meisten reifen Organisationen tun beides und testen und überwachen außerdem weiterhin in der Produktion, weshalb manche inzwischen davon sprechen, Sicherheit überall hin zu verlagern („Shift Everywhere“).
Was Architekten verantworten und was Entwicklungsteams verantworten
Sicherheitsarbeit ist geteilt, und Unklarheit darüber, wer was verantwortet, ist selbst eine Schwachstelle. Der Architekt verantwortet Entscheidungen, die Teamgrenzen überschreiten und teuer zu ändern sind; die Teams verantworten deren korrekte Anwendung. Ein verbreitetes Muster ist ein kleines zentrales Sicherheitsteam, das Standards setzt und die Sicherheitsdienste der Plattform betreibt, Security Champions in jedem Produktteam, die Bedrohungsmodellierung und Reviews leiten, und Architekten, die dafür sorgen, dass die strukturellen Entscheidungen getroffen und festgehalten werden.
Aufteilung der Sicherheitsverantwortung
| Anliegen | Architekt (und Sicherheitsarchitektur) | Entwicklungsteams |
|---|---|---|
| Vertrauensgrenzen und Datenflüsse | Sie festlegen, dokumentieren und bei wichtigen Änderungen die Bedrohungsmodellierung leiten. | Den Code mit ihnen im Einklang halten; Änderungen ansprechen, die eine Grenze verschieben. |
| Identität und Zugriff | Identity Provider, Token-Modell, Autorisierungsmodell und den Ort der Policy-Entscheidung wählen. | Autorisierung an jedem Endpoint und jedem Objekt durchsetzen und testen. |
| Datenschutz | Daten klassifizieren; entscheiden, was wo mit welchen Schlüsseln verschlüsselt wird; KMS und Secrets-Vault wählen. | Die freigegebenen Bibliotheken nutzen; nie Secrets und nie unnötig personenbezogene Daten loggen. |
| Umgang mit Ein- und Ausgaben | Strategie für Validierung und Kodierung an Grenzen festlegen; gemeinsame Bibliotheken bereitstellen. | In jedem Handler validieren, kodieren und parametrisieren. |
| Abhängigkeiten und Build | Pipeline-Kontrollen, freigegebene Quellen und SBOM-Policy festlegen. | Abhängigkeiten aktuell halten; auf Warnungen innerhalb der vereinbarten Fristen reagieren. |
| Erkennung und Reaktion | Sicherheits-Logging, Audit-Events und Rollen für Incidents festlegen. | Die vereinbarten Events ausgeben; Schwachstellen innerhalb der vereinbarten Service-Levels beheben. |
Ausgearbeitetes Beispiel
Ausgearbeitetes Beispiel: die Prinzipien auf eine Erstattungsfunktion für den Support anwenden
Support-Mitarbeitende der Essenslieferplattform müssen Kunden für fehlgeschlagene Lieferungen über das Backoffice-Tool Geld erstatten können. Ein erster Entwurf lässt jeden Mitarbeitenden den Erstattungs-Endpoint des Zahlungsservice mit beliebiger Bestellnummer und beliebigem Betrag aufrufen. Die Tabelle zeigt, wie die Prinzipien den Entwurf umgestalten.
| Least Privilege | Mitarbeitende erhalten eine refund:create-Berechtigung nur für Bestellungen in ihrem eigenen Markt; die Service-Identität des Backoffice-Tools darf die Erstattungs-API aufrufen, aber nie Kartendaten lesen. |
|---|---|
| Ausfallsichere Standardwerte | Schlägt die Policy-Prüfung oder das Nachschlagen der Bestellung fehl oder läuft in ein Timeout, wird die Erstattung mit dem Hinweis „Bitte erneut versuchen“ abgelehnt; es gibt keinen Ausweichpfad, der Prüfungen überspringt. |
| Vollständige Zugriffsprüfung | Der Zahlungsservice selbst prüft jede Erstattung erneut gegen die ursprüngliche Belastung (die Erstattung darf den eingezogenen Betrag abzüglich früherer Erstattungen nicht übersteigen), statt dem Backoffice-Tool zu vertrauen. |
| Trennung von Privilegien | Erstattungen über £100 oder eine dritte Erstattung an denselben Kunden innerhalb einer Woche brauchen die Freigabe einer Vorgesetzten oder eines Vorgesetzten im selben Tool. |
| Sparsamkeit der Mechanismen | Nutzt die vorhandene Policy Engine und Audit-Bibliothek der Plattform; für Erstattungen wird kein eigener Berechtigungscode für Sonderfälle geschrieben. |
| Psychologische Akzeptanz | Die Freigabe wird mit einem Klick angefordert; Gründe werden aus einer kurzen Liste gewählt, damit die Kontrolle ehrliche Mitarbeitende nicht ausbremst. |
| Verantwortlichkeit | Jede Erstattung wird in ein Append-only-Audit-Log geschrieben, mit Mitarbeitendem, freigebender Person, Bestellung, Betrag und Grund. |
| Defense in Depth | Das Backoffice-Tool ist nur über Single Sign-on mit Phishing-resistenter MFA von verwalteten Geräten aus erreichbar. |
Sowohl unehrliche Mitarbeitende als auch ein Angreifer, der das Konto eines Mitarbeitenden übernommen hat, sind nun auf kleine, protokollierte Erstattungen in einem Markt beschränkt.
Der Preis ist eine kurze Verzögerung bei großen Erstattungen und etwas zusätzliche Designarbeit, was weit billiger ist, als diese Kontrollen nachzurüsten, nachdem Betrug entdeckt wurde.
Prüfen Sie Ihr Verständnis
Warum hängt Defense in Depth davon ab, dass die Schichten unabhängig sind?
Versagen zwei Schichten aus demselben Grund, etwa weil beide demselben gefälschten Header vertrauen, überwindet ein einziger Angriff beide, sodass sie nicht mehr Schutz bieten als eine einzelne Schicht.
Welches Prinzip von Saltzer und Schroeder wird verletzt, wenn ein Service prüft, ob ein Benutzer angemeldet ist, aber nicht, ob die angefragte Bestellung ihm gehört?
Vollständige Zugriffsprüfung: Jeder Zugriff auf jedes Objekt muss auf Berechtigung geprüft werden, nicht nur die Tatsache, dass der Benutzer sich authentifiziert hat.
Ein Team sagt, seine Anwendung sei „OWASP-Top-10-konform“. Was ist an dieser Aussage falsch?
Die Top 10 sind eine Sensibilisierungsliste von Risikokategorien, keine Norm mit testbaren Anforderungen; für eine Überprüfung braucht man etwas wie OWASP ASVS und ein Bedrohungsmodell des tatsächlichen Systems.
Nennen Sie ein Beispiel für Fail-open und erklären Sie, warum es gefährlich ist.
Eine Berechtigungsprüfung, die ein Timeout der Policy Engine als „erlaubt“ wertet. Ein Angreifer, der die Policy Engine verlangsamen oder lahmlegen kann, erhält dann Zugriff auf alles, was sie schützt.
Quellen und weiterführende Literatur
Haben Sie eine Frage zu diesem Abschnitt? ArchitectBot, der KI-Lernassistent des Kurses, antwortet zuerst aus dem Kurs.
Fragen: „Welche Sicherheitsentscheidungen in unserem Entwurf der Essenslieferplattform sollte ein Architekt zentral treffen, und welche sollte jedes Team selbst treffen?“