<?xml version="1.0" encoding="UTF-8"?>
<Vorgabendokument>
  <Typ>Standard IT-Sicherheit</Typ>
  <Nummer>R0129</Nummer>
  <Name>Standard DevSecOps</Name>
  <Autoren>
    <Autor>Adrian A. Baumann</Autor>
    <Autor>Anthony Kalbermatten</Autor>
    <Autor>Emily Hentgen</Autor>
    <Autor>Fritz Weyermann</Autor>
    <Autor>Jan Hohenauer</Autor>
    <Autor>Levent Ildeniz</Autor>
    <Autor>Mantas Meleskevicius</Autor>
    <Autor>Oliver Eichenberger</Autor>
    <Autor>Ray Miller</Autor>
    <Autor>Roger Solioz</Autor>
    <Autor>Thomas Surachi Burkhalter</Autor>
  </Autoren>
  <Pruefende>
    <Pruefender>Adrian A. Baumann</Pruefender>
  </Pruefende>
  <Gueltigkeit>
    <Von/>
    <Bis/>
  </Gueltigkeit>
  <SignaturCSO/>
  <Geltungsbereich>
    <Abschnitt typ="text">Die Sicherheitsanforderung dient unter anderem als Grundlage zur Freigabe des CHECK-Prozesses. Sie dient darüber hinaus als Umsetzungsempfehlung für die Vorgaben der Sicherheits-Richtlinien im BIT. Die Anforderungen müssen bereits während der Planungs- und Entscheidungsprozesse berücksichtigt werden. Fehlen IT-Richtlinien zu bestimmten Technologien, gelten die Umsetzung der Best-Practices der Hersteller und die CIS-Benchmark’s des jeweiligen Produktes. Bei der Umsetzung der Sicherheitsanforderungen sind die relevanten Gesetze (insbesondere das Gesetz über die Informationssicherheit beim Bund und die dazugehörende Verordnung) einzuhalten. Die IT-Grundschutzanforderungen des Staatssekretariats für Sicherheitspolitik (SEPOS) sind zwingend. Ausnahmen sind schriftlich zu dokumentieren und durch den ISBO VE zu genehmigen.</Abschnitt>
  </Geltungsbereich>
  <Einleitung>
    <Abschnitt typ="text">**DevSecOps** ist die Methode zur automatisierten Integration von Sicherheitstools in den DevOps-Prozess. Bei DevSecOps geht es nicht nur um die Werkzeuge, sondern auch um das erforderliche Wissen über die Verwendung dieser Werkzeuge und wie die Sicherheitsvorgaben überprüft und nachgewiesen werden können. Dies führt zu einer kulturellen Veränderung der normalen Funktionsweise von DevOps. Durch effizientere Zusammenarbeit und Schaffung einer Sicherheitskultur kann in der gesamten DevOps-Kreislaufkette die Sicherheit erhöht werden.</Abschnitt>
    <Abschnitt typ="text">Dieser Standard unterliegt den Definitionen des Zentraldokuments für Standards IT-Sicherheit. Ziel &amp; Zweck, Änderungswesen etc. sind da definiert und werden hier nicht wiederholt.</Abschnitt>
    <Abschnitt typ="text">Einige relevante Sicherheitsvorgaben im Zusammenhang mit DevSecOps werden in anderen Standards vorgegeben. Besonders hervorzuheben sind hier:</Abschnitt>
    <Abschnitt typ="liste ungeordnet">R0097 Anwendungsentwicklung
[R0126](../R0126/) Container
R0123 Sicherheitsdokumente</Abschnitt>
  </Einleitung>
  <Ziel/>
  <Grundlagen/>
  <Changelog/>
  <Anhaenge>
    <Anhang/>
  </Anhaenge>
  <Verantwortlich>Information Security Management BIT</Verantwortlich>
  <Klassifizierung/>
  <Glossar/>
  <Vorgaben>
    <Vorgabe>
      <Nummer>1</Nummer>
      <Titel>Einhaltung der Entwicklungsrichtlinien</Titel>
      <Thema>Anwendungen</Thema>
      <Kurztext>
        <Abschnitt typ="text">Die Entwicklungsrichtlinien und Guidelines müssen eingehalten werden. Siehe hierzu auch den «Best Practice Leitfaden Development»

Der Quelltext soll einer Reihe formaler Prüfungen unterzogen werden.</Abschnitt>
      </Kurztext>
      <Langtext>
        <Abschnitt typ="text">Die Entwicklungsrichtlinien und Guidelines müssen eingehalten werden. Siehe hierzu auch die Sicherheitsvorgaben zur Softwareentwicklung

Der Quelltext soll einer Reihe formaler Prüfungen unterzogen werden. Dabei ist insbesondere folgendes zu beachten (nicht abschliessend):</Abschnitt>
        <Abschnitt typ="liste ungeordnet">Umgebungsvariablen (Secrets, Env) überprüfen 
Passwörter und andere Credentials dürfen nicht im Klartext enthalten sein</Abschnitt>
        <Abschnitt typ="text">Die Reviews sollten laufend im Rahmen der Pull Requests erfolgen, wenn Features oder Bug Fixes entwickelt werden.
Eine konsequente Nutzung von Pull Requests während der Entwicklung sollte mit Approval (Genehmigung) durch eine andere Person aus dem DevOps-Team erfolgen. Zusätzlich besteht ein Quality Gate (keine High/Critical-Befunde) in der Pipeline aus der statischen Code-Analyse (SonarQube).</Abschnitt>
      </Langtext>
      <Referenzen>
        <Referenz>Security-by-Design-Prinzip</Referenz>
        <Referenz>Standards BIT</Referenz>
      </Referenzen>
      <Gueltigkeit>
        <Von>2026-02-11</Von>
        <Bis/>
      </Gueltigkeit>
      <Checklistenfragen>
        <Frage>Ein Vier-Augen-Prinzip für PRs ist in Kraft.</Frage>
        <Frage>Es sind keine Secrets im Code gespeichert.</Frage>
      </Checklistenfragen>
      <Stichworte/>
    </Vorgabe>
    <Vorgabe>
      <Nummer>2</Nummer>
      <Titel>Security Code Review</Titel>
      <Thema>Anwendungen</Thema>
      <Kurztext>
        <Abschnitt typ="text">Sensitive Funktionen müssen im vier-Augen-Prinzip auf Sicherheit geprüft werden.</Abschnitt>
      </Kurztext>
      <Langtext>
        <Abschnitt typ="text">Für sensitive Funktionen in Programmcode muss eine manuelle Prüfung auf Sicherheit erfolgen. Diese darf nicht vom Autor des Codes selbst durchgeführt werden.</Abschnitt>
      </Langtext>
      <Referenzen>
        <Referenz>Security-by-Design-Prinzip</Referenz>
      </Referenzen>
      <Gueltigkeit>
        <Von>2026-02-11</Von>
        <Bis/>
      </Gueltigkeit>
      <Checklistenfragen>
        <Frage>Security Code Reviews erfolgen durch unabhängige Reviewer und sind dokumentiert.</Frage>
      </Checklistenfragen>
      <Stichworte/>
    </Vorgabe>
    <Vorgabe>
      <Nummer>3</Nummer>
      <Titel>Security Requirements und Threat Modeling</Titel>
      <Thema>Anwendungen</Thema>
      <Kurztext>
        <Abschnitt typ="text">Security Requirements und Threat Modeling müssen für Anwendungen definiert und durchgeführt werden.</Abschnitt>
      </Kurztext>
      <Langtext>
        <Abschnitt typ="text">Für neue Anwendungen sowie für grössere Änderungen müssen Security Requirements definiert werden. Zusätzlich muss ein Threat Modeling durchgeführt werden, um Bedrohungen systematisch zu identifizieren und Gegenmassnahmen abzuleiten.

Mindestens erforderlich:</Abschnitt>
        <Abschnitt typ="liste ungeordnet">Security-Anforderungen pro Feature, Release oder Komponente definieren
Threat Modeling vor Major Releases oder Architekturänderungen durchführen
Risiken und Gegenmassnahmen dokumentieren</Abschnitt>
      </Langtext>
      <Referenzen>
        <Referenz>T4 (Schwachstellen und Verwundbarkeiten)</Referenz>
      </Referenzen>
      <Gueltigkeit>
        <Von>2026-02-11</Von>
        <Bis/>
      </Gueltigkeit>
      <Checklistenfragen>
        <Frage>Die Security-Anforderungen sind definiert.</Frage>
        <Frage>Risiken und deren Behandlung sind dokumentiert.</Frage>
      </Checklistenfragen>
      <Stichworte/>
    </Vorgabe>
    <Vorgabe>
      <Nummer>4</Nummer>
      <Titel>Supply Chain Security</Titel>
      <Thema>Anwendungen</Thema>
      <Kurztext>
        <Abschnitt typ="Abschnittstyp">Die Integrität von Source Code und Build-Artefakten muss sichergestellt werden.</Abschnitt>
      </Kurztext>
      <Langtext>
        <Abschnitt typ="text">Die Entwicklungs-Supply-Chain muss gegen Manipulation geschützt werden. Die Nachvollziehbarkeit und Integrität von Code, Dependencies und Build-Artefakten muss gewährleistet sein.

Dies kann mit folgenden Punkten umgesetzt werden:</Abschnitt>
        <Abschnitt typ="liste ungeordnet">Commits sollten digital signiert werden
Dependencies müssen auf fixe Versionen gepinnt werden (kein ":latest")</Abschnitt>
      </Langtext>
      <Referenzen>
        <Referenz>O2.1</Referenz>
      </Referenzen>
      <Gueltigkeit>
        <Von>2026-02-11</Von>
        <Bis/>
      </Gueltigkeit>
      <Checklistenfragen>
        <Frage>Commits sind digital signiert.</Frage>
        <Frage>Es sind keine Abhängigkeiten mit ":latest" getaggt.</Frage>
        <Frage>Alle Abhängigkeiten sind mit fixen Versionen getaggt.</Frage>
      </Checklistenfragen>
      <Stichworte/>
    </Vorgabe>
    <Vorgabe>
      <Nummer>1</Nummer>
      <Titel>Kontrolle der Sicherheitsdokumente</Titel>
      <Thema>Informationen</Thema>
      <Kurztext>
        <Abschnitt typ="text">Die Sicherheitsdokumente aller DevSecOps-Vorhaben müssen vollständig sein und regelmässig geprüft werden.</Abschnitt>
      </Kurztext>
      <Langtext>
        <Abschnitt typ="text">Die Sicherheitsdokumente aller DevSecOps-Vorhaben müssen vollständig sein. Bei grösseren sicherheitsrelevanten Anpassungen am Schutzobjekt, oder spätestens nach fünf
Jahren, müssen die Dokumente auf Aktualität geprüft und gegebenenfalls überarbeitet werden. Die Anforderungen an die Dokumente befinden sich im Zentraldokument "Standard IT-Sicherheit".</Abschnitt>
      </Langtext>
      <Referenzen>
        <Referenz>Art. 6: Art. 6 Informationssicherheit</Referenz>
        <Referenz>Art. 27: Art. 27 Sicherheitsverfahren</Referenz>
      </Referenzen>
      <Gueltigkeit>
        <Von>2026-02-11</Von>
        <Bis/>
      </Gueltigkeit>
      <Checklistenfragen>
        <Frage>Die Sicherheitsdokumente sind vorhanden und aktuell.</Frage>
      </Checklistenfragen>
      <Stichworte/>
    </Vorgabe>
    <Vorgabe>
      <Nummer>2</Nummer>
      <Titel>Design- und Architektur-Review</Titel>
      <Thema>Informationen</Thema>
      <Kurztext>
        <Abschnitt typ="text">Design und Architektur müssen in regelmässigen Abständen geprüft und angepasst werden</Abschnitt>
      </Kurztext>
      <Langtext>
        <Abschnitt typ="text">Damit die Sicherheitsmassnahmen an den aktuellen Stand der Technik angepasst werden können, müssen Design und Architektur in regelmässigen Abständen geprüft und modernisiert werden. Dabei sind insbesondere auch Sicherheitsaspekte zu berücksichtigen.

Nachfolgende Elemente sind zu überprüfen:</Abschnitt>
        <Abschnitt typ="liste ungeordnet">Architekturskizze
Solution Design
Konzeptionelle Fehler und Verwundbarkeiten
Die Ergebnisse der Datenflussanalyse
Schnittstellen zu anderen Komponenten
Zugangspunkte
Abhängigkeiten
Rollen und Berechtigungskonzept</Abschnitt>
      </Langtext>
      <Referenzen>
        <Referenz>Security-by-Design-Prinzip</Referenz>
      </Referenzen>
      <Gueltigkeit>
        <Von>2026-02-11</Von>
        <Bis/>
      </Gueltigkeit>
      <Checklistenfragen>
        <Frage>Die Architektur-Dokumentation ist aktuell.</Frage>
        <Frage>Architektur-Reviews werden periodisch durchgeführt.</Frage>
      </Checklistenfragen>
      <Stichworte/>
    </Vorgabe>
    <Vorgabe>
      <Nummer>3</Nummer>
      <Titel>Secret Management</Titel>
      <Thema>Informationen</Thema>
      <Kurztext>
        <Abschnitt typ="text">Secrets müssen in einem dafür geeigneten System verwaltet werden.</Abschnitt>
      </Kurztext>
      <Langtext>
        <Abschnitt typ="text">Secrets müssen sicher verwaltet und gespeichert werden. Dazu ist eine geeignete Secret-Management-Lösung einzusetzen, z.B. HashiCorp Vault. Als Secrets gelten unter anderem</Abschnitt>
        <Abschnitt typ="liste ungeordnet">Passwörter
Private Schlüssel
API Tokens für andere Dienste</Abschnitt>
      </Langtext>
      <Referenzen>
        <Referenz>Need-to-Know-Prinzip</Referenz>
        <Referenz>Stand der Technik</Referenz>
      </Referenzen>
      <Gueltigkeit>
        <Von>2026-02-11</Von>
        <Bis/>
      </Gueltigkeit>
      <Checklistenfragen>
        <Frage>Zugriff auf Secrets ist rollenbasiert eingeschränkt.</Frage>
        <Frage>Zentrales Secret-Management-System ist im Einsatz</Frage>
        <Frage>Secrets sind nicht in Code oder Config abgelegt.</Frage>
      </Checklistenfragen>
      <Stichworte/>
    </Vorgabe>
    <Vorgabe>
      <Nummer>1</Nummer>
      <Titel>Anwendung SAST und DAST</Titel>
      <Thema>Systeme</Thema>
      <Kurztext>
        <Abschnitt typ="text">Applikationen müssen regelmässig durch statische und dynamische Codeanalyse auf Schwachstellen untersucht werden.</Abschnitt>
      </Kurztext>
      <Langtext>
        <Abschnitt typ="text">Applikationen und Infrastruktur müssen mittels SAST im Minimum auf die aktuellen OWASP Top 10 und allgemeine Good- und Best-Practices getestet werden.
Schwerwiegende oder kritische Befunde sind zwingend vor einem Deployment zu beheben. Falls dies nicht möglich ist, ist eine entsprechende Ausnahmenbewilligung vom ISBO einzuholen.

Alle identifizierten Schwachstellen müssen zentral verwaltet werden. Deren Behebung muss geplant werden, wenn keine entsprechende Ausnahmebewilligung vorliegt.</Abschnitt>
      </Langtext>
      <Referenzen>
        <Referenz>T4 (Schwachstellen und Verwundbarkeiten)</Referenz>
      </Referenzen>
      <Gueltigkeit>
        <Von>2026-02-11</Von>
        <Bis/>
      </Gueltigkeit>
      <Checklistenfragen>
        <Frage>Schwachstellen werden zentral verwaltet.</Frage>
      </Checklistenfragen>
      <Stichworte/>
    </Vorgabe>
    <Vorgabe>
      <Nummer>2</Nummer>
      <Titel>Secret Scanning</Titel>
      <Thema>Systeme</Thema>
      <Kurztext>
        <Abschnitt typ="text">Container-Images und Repositories müssen auf offengelegte Geheimnisse überprüft werden</Abschnitt>
      </Kurztext>
      <Langtext>
        <Abschnitt typ="text">Alle Container-Images, Dateisysteme und Git-Repositories müssen auf offengelegte Geheimnisse wie Passwörter, API-Schlüssel, Token etc. gescannt werden.

Das Source-Code-Repository muss auf bekannte Geheimnistypen überprüft werden, um das betrügerische Verwenden von Geheimnissen zu verhindern, die aus Versehen committet wurden. Bei der Prüfung gefundene Secrets müssen unverzüglich deaktiviert (geändert oder revoziert) werden, dies ist entsprechend im Repository zu dokumentieren.</Abschnitt>
      </Langtext>
      <Referenzen>
        <Referenz>T2: Konfiguration und Einstellung</Referenz>
      </Referenzen>
      <Gueltigkeit>
        <Von>2026-02-11</Von>
        <Bis/>
      </Gueltigkeit>
      <Checklistenfragen>
        <Frage>Container Image Secret Scanning ist aktiv.</Frage>
        <Frage>Repository Secret Scanning ist aktiv.</Frage>
        <Frage>Secret-Leaks werden dokumentiert.</Frage>
      </Checklistenfragen>
      <Stichworte/>
    </Vorgabe>
    <Vorgabe>
      <Nummer>3</Nummer>
      <Titel>Security Unit Tests durchführen</Titel>
      <Thema>Systeme</Thema>
      <Kurztext>
        <Abschnitt typ="text">Security-Unit-Tests müssen im Rahmen der Entwicklung durch die Entwickler (bzw. die Lieferanten) erstellt und gepflegt werden.</Abschnitt>
      </Kurztext>
      <Langtext>
        <Abschnitt typ="text">Security-Unit-Tests müssen im Rahmen der Entwicklung durch die Entwickler (bzw. die Lieferanten) erstellt und gepflegt werden. 

Logische Fehler in der Webanwendung können damit identifiziert und korrigiert werden.

Idealerweise werden die Unit-Tests in den Commit-Workflow eingefügt, so dass sie vor jedem Commit durchlaufen und den Commit im Fall von "Fail"-Status abbrechen.</Abschnitt>
      </Langtext>
      <Referenzen>
        <Referenz>T4 (Schwachstellen und Verwundbarkeiten)</Referenz>
      </Referenzen>
      <Gueltigkeit>
        <Von>2026-02-11</Von>
        <Bis/>
      </Gueltigkeit>
      <Checklistenfragen>
        <Frage>Security Unit Tests sind implementiert.</Frage>
      </Checklistenfragen>
      <Stichworte/>
    </Vorgabe>
    <Vorgabe>
      <Nummer>4</Nummer>
      <Titel>Container Image Scanning</Titel>
      <Thema>Systeme</Thema>
      <Kurztext>
        <Abschnitt typ="text">Vor der ersten produktiven Verwendung muss ein Container Image auf Schwachstellen gescannt werden, anschliessend periodisch.</Abschnitt>
      </Kurztext>
      <Langtext>
        <Abschnitt typ="text">Container Images müssen regelmässig und automatisiert auf Schwachstellen und Fehlkonfigurationen überprüft werden. Bei der Verwendung von Container Images ist sicherzustellen, dass deren jeweilige Integrität geprüft wird, damit nur geprüfte Container Images verwendet werden. Deployments mit Produktionsdaten sind nicht erlaubt, wenn im Container Image Schwachstellen mit CVSS grösser oder gleich 7 vorhanden sind. Ausnahmen werden durch den ISBO behandelt.

Der aktuelle Sicherheitsstand jedes Container Images muss zentral einsehbar sein.</Abschnitt>
      </Langtext>
      <Referenzen>
        <Referenz>T4 (Schwachstellen und Verwundbarkeiten)</Referenz>
      </Referenzen>
      <Gueltigkeit>
        <Von>2026-02-11</Von>
        <Bis/>
      </Gueltigkeit>
      <Checklistenfragen>
        <Frage>Container Image Scanning ist automatisiert.</Frage>
        <Frage>Scan erfolgt vor Erstdeployment und periodisch.</Frage>
        <Frage>Images mit CVSS ≥ 7 werden nicht deployed oder sind genehmigt.</Frage>
      </Checklistenfragen>
      <Stichworte/>
    </Vorgabe>
    <Vorgabe>
      <Nummer>5</Nummer>
      <Titel>Automatisierte Deployments</Titel>
      <Thema>Systeme</Thema>
      <Kurztext>
        <Abschnitt typ="text">Es darf ausschliesslich mit automatisierten Prozessen auf produktive Systeme deployed werden.</Abschnitt>
      </Kurztext>
      <Langtext>
        <Abschnitt typ="text">Deployments müssen als Konfigurationen/Code vorliegen (Infrastructure-as-Code) und entsprechend in einem Versionierungssystem (z.B. Bitbucket) geführt werden. Es darf ausschliesslich automatisiert auf produktive Systeme deployed werden – manuelle Eingriffe sind nur in Ausnahmefällen gestattet und müssen dokumentiert werden.</Abschnitt>
      </Langtext>
      <Referenzen>
        <Referenz>Stand der Technik</Referenz>
      </Referenzen>
      <Gueltigkeit>
        <Von>2026-02-11</Von>
        <Bis/>
      </Gueltigkeit>
      <Checklistenfragen>
        <Frage>Deployments erfolgen ausschliesslich über Pipeline</Frage>
        <Frage>Manuelle Produktionsdeployments sind dokumentiert und genehmigt</Frage>
      </Checklistenfragen>
      <Stichworte/>
    </Vorgabe>
    <Vorgabe>
      <Nummer>1</Nummer>
      <Titel>Software Composition Analysis (SCA)</Titel>
      <Thema>Technik</Thema>
      <Kurztext>
        <Abschnitt typ="text">Jede verwendete Abhängigkeit muss mindestens einmal pro Woche (idealerweise häufiger) auf Schwachstellen gescannt werden. Der Scan sollte vollständig automatisiert als Teil der Pipeline ablaufen.</Abschnitt>
      </Kurztext>
      <Langtext>
        <Abschnitt typ="text">Jede verwendete Abhängigkeit muss mindestens einmal pro Woche (idealerweise häufiger) auf Schwachstellen gescannt werden. Der Scan sollte vollständig automatisiert als Teil der Pipeline ablaufen.</Abschnitt>
        <Abschnitt typ="liste ungeordnet">Bibliotheken und vergleichbare Abhängigkeiten müssen mittels Vulnerablity Scanning auf Sicherheitslücken getestet werden.
Schwerwiegende oder gar kritische Befunde sind zwingend vor einem Deployment zu beheben oder eine Ausnahmebewilligung einzuholen.
Alle identifizierten Schwachstellen müssen zentral verwaltet werden und entweder deren Behebung geplant oder eine Ausnahmebewilligung eingeholt werden.
Deployments mit Produktionsdaten sind nicht erlaubt, wenn Komponenten mit CVSS grösser oder gleich 7 (Critical) eingesetzt werden. Der Scan sollte vollständig automatisiert als Teil der Pipeline ablaufen. Bei schwerwiegenden Sicherheitsproblemen wird die Pipeline unterbrochen und schlägt fehl, bis das Problem behoben ist.</Abschnitt>
      </Langtext>
      <Referenzen>
        <Referenz>T4 (Schwachstellen und Verwundbarkeiten)</Referenz>
      </Referenzen>
      <Gueltigkeit>
        <Von>2026-02-11</Von>
        <Bis/>
      </Gueltigkeit>
      <Checklistenfragen>
        <Frage>Dependencies werden mindestens wöchentlich gescannt.</Frage>
      </Checklistenfragen>
      <Stichworte/>
    </Vorgabe>
  </Vorgaben>
</Vorgabendokument>
