grundschutz-viewer — der Grundschutz++-Katalog neben dem, was deine Dokumente darüber sagen.
Ein Prüfergebnis in OSCAL ist JSON. Wer wissen will, wie es um eine Anforderung steht, braucht Profil, Sicherheitsplan, Prüfergebnisse und POA&M zugleich, dazu den Katalog des BSI. grundschutz-viewer liest diese Dokumente und schreibt daraus eine einzige HTML-Seite. Sie braucht keinen Server und lässt sich offline lesen. Je Anforderung zeigt sie den Stand, die Messung, die Maßnahme mit Termin und den Verlauf über alle Läufe.
- Status: v0.1.0 seit Oktober 2026, gebaut für die Kette von grundschutz-worksheets; in meinem ISMS noch nicht im Einsatz
- Installation:
go install github.com/ohartwig/grundschutz-viewer/cmd/grundschutz-viewer@latest - Voraussetzung: Go 1.26 zum Bauen, OSCAL-Dokumente aus grundschutz-worksheets oder eigene
- Lizenz: MIT · keine Abhängigkeiten außer der Standardbibliothek
Nachweise, die niemand liest
Bisher
- Der Stand einer Anforderung steht im Sicherheitsplan, die Messung im Prüfergebnis, die Frist im POA&M
- Ob ein Import auf die richtige Datei zeigt, prüft beim Lesen niemand
- Was sich seit gestern geändert hat, sieht man nur im Diff zweier JSON-Dateien
- Wer nicht mit JSON arbeitet, bekommt eine Tabelle, die jemand von Hand abgeschrieben hat
Mit grundschutz-viewer
- Eine Seite über alle Läufe: Stand, Messung, Maßnahme und Termin stehen bei der Anforderung
- Jeder Import wird gesucht und gegen die SHA-256 geprüft, die er nennt; die Seite sagt, was nicht passt oder fehlt
- Der Verlauf zeigt je Lauf, welche Anforderungen sich geändert haben, und je Anforderung, wann
- Die Datei lässt sich verschicken und offline öffnen, ohne Server und ohne Konto
Passt das zu meinen Nachweisen?
Nutze es wenn …
- du deinen Grundschutz++-Stand als OSCAL führst, etwa mit grundschutz-worksheets
- Prüfungen jede Nacht laufen und du sehen willst, was sich seit der letzten Nacht geändert hat
- Leute ohne JSON-Kenntnisse den Stand lesen sollen, ohne dass jemand eine Tabelle pflegt
- die Ansicht ohne Server auskommen soll, als Datei im Artefakt einer Pipeline
Nutze es nicht wenn …
- du ein Werkzeug suchst, in dem man den Stand bearbeitet: die Seite zeigt nur an
- dein Katalog nicht Grundschutz++ ist: andere OSCAL-Kataloge sind nicht getestet
- du eine Ansicht für viele Systeme zugleich brauchst: eine Seite zeigt einen Sicherheitsplan
- du eine englische Oberfläche brauchst: die Seite ist deutsch, wie der Katalog
Warum eine Seite statt einer Anwendung
grundschutz-worksheets schreibt die OSCAL-Kette: Profil, Prüfplan, Prüfergebnisse, Sicherheitsplan und POA&M. Gelesen werden diese Dateien von Werkzeugen, nicht von Menschen. Der Viewer macht sie für Menschen lesbar. Er soll dort laufen, wo die Nachweise entstehen: als ein Schritt in der Pipeline, der eine Datei ins Artefakt legt.
Deshalb gibt es keinen Server, keine Datenbank und kein Konto. Die Daten stehen in der Seite, die Seite steht für sich. Welcher Katalog gilt, aus welchem Commit der BSI-Bibliothek und mit welchen Parameterwerten, liest er aus dem Profil. Eine eigene Einstellung dafür gibt es nicht. Die Spalte zu ISO 27001 stammt aus einer Mapping-Sammlung unter den Eingaben. Fehlt sie, nimmt der Viewer das Mapping des BSI zum selben Commit wie der Katalog.
So entsteht die Seite
Der Viewer liest einen Ordner mit allen Unterordnern. Ein Ordner je Lauf ergibt den Verlauf:
grundschutz-viewer -o grundschutz.html runs/
Einzelne Dateien gehen auch, gemischt mit Ordnern:
grundschutz-viewer -o grundschutz.html security-plan.json results-*.json profile.json
Statt der Explorer-Ansicht gibt es das Register, eine Übersicht nach Praxis mit eigenen Reitern für Prüfungen, Maßnahmenplan, Normen und Gefährdungen:
grundschutz-viewer -view register -o register.html runs/
Ein Lauf ist ein Sicherheitsplan und die Dokumente daneben. Der neueste Lauf ist der Stand, den die Seite zeigt. Jeder Lauf davor ist ein Punkt im Verlauf. Fehlt ein Import unter den Eingaben, meist der Katalog des BSI, holt der Viewer ihn, prüft die SHA-256 und legt ihn in einen Cache. Mit -offline holt er nichts.
So sieht es aus
Die Bilder zeigen Beispieldaten einer erfundenen Firma, Example GmbH, über sieben nächtliche Läufe. Gemessen haben die fünf Prüfungen aus grundschutz-checks, dazu kommen eine Bewertung von Hand und ein Maßnahmenplan mit Terminen.
Die Übersicht nennt den Stand des neuesten Laufs und darunter jeden Lauf davor, mit den Anforderungen, die sich in ihm geändert haben. In der Akte einer Anforderung steht ihr Verlauf: ein Kästchen je Lauf, der älteste links, und darunter, wann die Messung umschlug. Das Register ordnet dieselben Anforderungen nach Praxis.



Die Dokumentation
Bedienung und Ansichten
Installation, die drei Schalter, Explorer und Register, mit Screenshots aus Beispieldaten.
Läufe und Importe
Was als Lauf zählt, wie die Läufe geordnet werden und in welcher Reihenfolge ein Import gesucht wird: daneben, nach SHA-256, nach Dateiname.
Die Kette davor
grundschutz-worksheets schreibt die Dokumente, die der Viewer liest: Profil, Prüfplan, Prüfergebnisse, Sicherheitsplan und POA&M.
Go-Modul
Go 1.26 oder neuer
github.com/ohartwig/grundschutz-viewer: ein Binary, nur mit der Standardbibliothek. Installation mit go install, Versionen als Git-Tags.
Grundschutz++ als Code einführen?
Ich helfe beim Aufbau der Kette: erst ein Profil und eine Prüfung, dann der Rest.