Sicherer Entwicklungslebenszyklus – Muster

Weitere Informationen zu Well-Architected Trust → Secure Development Lifecycle

Die Sicherheit muss über den gesamten Entwicklungslebenszyklus hinweg integriert sein, vom ersten Entwurf bis zur Bereitstellung und zum Betrieb. Mit diesen Mustern werden Sicherheitspraktiken für Schichten links aktiviert, häufige Schwachstellen behoben und Ihre Bereitstellungspipelines geschützt.

Muster

Wohin schauenWie gut aussieht
Entwicklung | Tooling✅ IDE-Sicherheitsscan im Entwickler-Workflow integriert
Entwicklung | Design✅ Die Bedrohungsmodellierung wurde während der Designphase mit der STRIDE-Methodik abgeschlossen
Entwicklung | Anforderungen✅ In Benutzerartikeln und Akzeptanzkriterien enthaltene Sicherheitsanforderungen
Entwicklung | Quellcodeverwaltung✅ Pre-Commit-Hooks erzwingen Sicherheitsrichtlinien (Geheimnisscan, Codeanalyse)
Entwicklung | Schulung✅ Entwicklersicherheitsschulung wird regelmäßig aktualisiert, um sich ändernden Bedrohungen Rechnung zu tragen
Entwicklung | CI/CD✅ Automatisierte Sicherheitstests in der CI/CD-Pipeline schlagen fehl und basieren auf wichtigen Ergebnissen
Entwicklung | Codeüberprüfung✅ Für Authentifizierung, Autorisierung und Datenzugriffscode erforderliche Überprüfungen durch gleichrangige Personen
Entwicklung | Codeanalyse✅ Sichere Codierungsstandards, die durch Linters und statische Analysen erzwungen werden
Entwicklung | Abhängigkeiten✅ Scannen der Abhängigkeitsanfälligkeit wird bei jedem Commit ausgeführt
Entwicklung | Testen✅ Umfang der Penetrationstests enthält neue Funktionen vor der Veröffentlichung der allgemeinen Geschäftsbedingungen

Antimuster

Wohin schauenWie schlecht sieht
Entwicklung | Testen⚠️ Sicherheitstests werden vor der Veröffentlichung auf manuelle Überprüfung zurückgestellt
Entwicklung | Schulung⚠️ Sicherheitsschulung nur einmal während der Einarbeitung
Entwicklung | Codeüberprüfung⚠️ Sicherheitsteam überprüft Code nach der Zusammenführung
Entwicklung | Design⚠️ Bedrohungsmodelle werden nicht aktualisiert, wenn sich die Architektur ändert
Entwicklung | Quellcodeverwaltung⚠️ Geheimscan deaktiviert, um falsch positive Werte zu reduzieren
Entwicklung | CI/CD⚠️ Sicherheitsergebnisse werden ignoriert, wenn Veröffentlichungsfristen drohen

Muster

Wohin schauenWie gut aussieht
Injektion✅ SOQL-Abfragen verwenden Bindungsvariablen, um die Injektion zu verhindern
Injektion✅ Benutzereingabe vor Verwendung in SOQL-, SOSL- oder dynamischen Abfragen validiert und bereinigt
Injektion✅ Dynamische SOQL nur auf vertrauenswürdige Eingaben beschränkt
Zugriffssteuerung✅ CRUD- und FLS-Berechtigungen werden mithilfe von Security.stripInaccessible() erzwungen
XSS✅ Lightning-Komponenten entkommen beim Benutzeroberflächen-Rendering benutzergeneriertem Inhalt
Injektion✅ Externe API-Integrationen validieren und bereinigen alle Eingaben
Zugriffssteuerung✅ Gastbenutzerzugriff minimiert und stark eingeschränkt
Authentifizierung✅ Für die externe Authentifizierung verwendete Anmeldeinformationen mit Namen (keine hartcodierten Anmeldeinformationen)
Authentifizierung✅ OAuth 2.0-Flows, die ordnungsgemäß mit PKCE implementiert wurden
Sitzungsverwaltung✅ Sitzungssicherheitsrichtlinien erzwingen Zeitüberschreitung und IP-Einschränkungen
Konfiguration✅ Sicherheitsintegritätsprüfung vierteljährlich überprüft und Ergebnisse mit hohem Risiko korrigiert
Zugriffssteuerung✅ Geprüfte benutzerdefinierte Metadaten und Berechtigungen zum Verhindern einer Überprivilegiertheit

Antimuster

Wohin schauenWie schlecht sieht
Injektion⚠️ SOQL-Abfragen, die mithilfe der Zeichenfolgenverkettung mit Benutzereingabe erstellt wurden
Zugriffssteuerung⚠️ Gastbenutzerprofilen, denen die Berechtigungen “Erstellen”, “Aktualisieren” oder “Löschen” erteilt wurden
XSS⚠️ Lightning-Komponenten verwenden in Vorlagen Ausdrücke ohne Escape
Authentifizierung⚠️ Externe Integrationen verwenden hartcodierte Anmeldeinformationen im Code
Protokollierung⚠️ Debug-Protokolle enthalten sensible Daten wie Kennwörter oder personenbezogene Daten
Zugriffssteuerung⚠️ FLS- und CRUD-Überprüfungen wurden ausgelassen, da “wir alle Benutzer steuern”
Konfiguration⚠️ Ergebnisse der Sicherheitsintegritätsprüfung ignoriert oder auf unbestimmte Zeit verschoben

Muster

Wohin schauenWie gut aussieht
Pipeline | Quellcodeverwaltung✅ Zweigstellenschutzregeln erzwingen erforderliche Überprüfungen und Statusprüfungen
Pipeline | Zugriffssteuerung✅ Bereitstellungs-Pipelines verwenden Service-Accounts mit minimal erforderlichen Berechtigungen
Pipeline | Geheimnisse✅ In sicheren Tresoren gespeicherte Geheimnisse (nie in Quellcodeverwaltungs- oder Umgebungsvariablen)
Pipeline | Bereitstellung✅ Produktionsbereitstellungen erfordern manuelles Genehmigungstor von autorisiertem Personal
Pipeline | Überwachung✅ Bereitstellungsprotokolle erfassen, wer was wann bereitgestellt hat, mit Genehmigungsprotokollen
Pipeline | Validierung✅ Die Validierung vor der Bereitstellung beinhaltet Sicherheitsscans und Compliance-Prüfungen
Pipeline | Zugriffssteuerung✅ Für den administrativen Pipeline-Zugriff erforderliche Multi-Faktor-Authentifizierung
Pipeline | Überwachung✅ Änderungen an der Pipeline-Konfiguration lösen Benachrichtigungen des Sicherheitsteams aus
Pipeline | Validierung✅ Die automatische Validierung nach der Bereitstellung bestätigt, dass die erwarteten Sicherheitssteuerungen aktiv sind
Pipeline | Abhängigkeiten✅ Abhängigkeitsaktualisierungen wurden vor der Bereitstellung auf Sicherheitsauswirkungen hin ausgewertet

Antimuster

Wohin schauenWie schlecht sieht
Pipeline | Geheimnisse⚠️ Zur Versionskontrolle verpflichtete Geheimnisse (auch wenn sie später entfernt werden)
Pipeline | Quellcodeverwaltung⚠️ Jeder kann ohne Überprüfung mit der Haupt-/Produktionszweigstelle zusammenführen
Pipeline | Zugriffssteuerung⚠️ Bereitstellungspipelines werden mit Berechtigungen auf Administratorebene ausgeführt
Pipeline | Bereitstellung⚠️ Produktionsbereitstellungen vollständig automatisiert ohne Genehmigungstore
Pipeline | Überwachung⚠️ Bereitstellungsprotokolle erfassen nicht, wer Änderungen initiiert oder genehmigt hat
Pipeline | Validierung⚠️ Fehlerhafte Sicherheitsscans wurden ignoriert oder umgangen, um Fristen einzuhalten
Pipeline | Überwachung⚠️ Änderungen an der Pipeline-Konfiguration werden nicht verfolgt oder überprüft
Pipeline | Validierung⚠️ Nach der Bereitstellung wird nur die Funktionsrichtigkeit überprüft

Muster

Wohin schauenWie gut aussieht
Testen | Statische Analyse✅ Salesforce Code Analyzer wird in Entwickler-IDEs für sofortiges Feedback und in CI/CD-Pipelines als automatisierte Gates ausgeführt
Testen | Penetrationstests✅ Penetrationstests für benutzerdefinierte Anwendungen, die nicht vertrauenswürdigen Benutzern angezeigt werden, insbesondere Experience Cloud-Sites und öffentlich zugänglichen APIs
Testen | Einheitentests✅ Sicherheitsorientierte Apex Einheitentests werden als Benutzer mit unterschiedlichen Berechtigungsprofilen ausgeführt
Testen | Abhängigkeiten✅ Die Abhängigkeitsüberprüfung überwacht AgentExchange-Pakete und JavaScript-Bibliotheken auf bekannte Schwachstellen
Testen | Sicherheitsüberprüfung✅ Statische Analyseberichte, die für jede AppExchange- oder AgentExchange-Sicherheitsüberprüfung erstellt wurden
Testen | Sicherheitsüberprüfung✅ Dynamischer Scanbericht (Penetrationstest), der erstellt wird, wenn eine Lösung eine Webanwendung oder einen Drittanbieterservice integriert
Testen | Abhängigkeiten✅ Sicherheitshinweise für installierte Pakete, die abonniert und überwacht wurden

Antimuster

Wohin schauenWie schlecht sieht
Testen | Abdeckung⚠️ Sicherheitstests basieren auf einer einzelnen Technik wie der statischen Analyse allein
Testen | Einheitentests⚠️ Apex Tests validieren das Funktionsverhalten, werden jedoch niemals als Benutzer mit niedrigeren Rechten ausgeführt
Testen | Sicherheitsüberprüfung⚠️ AppExchange oder AgentExchange-Übermittlung ohne die erforderliche statische Analyse oder dynamische Scanberichte vorbereitet
Testen | PenetrationstestsPenetrationstests für öffentlich zugängliche Experience Cloud-Sites und APIs übersprungen

Siehe auch: