dorfteich/docs/vs-nfd/00-analyse-auftrag.md
Claude Opus 5 fd07f716f6
All checks were successful
CI / Lint, typecheck, test (pull_request) Successful in 4m42s
CI / Build container images (pull_request) Successful in 1m11s
CI / Auth e2e pack (pull_request) Successful in 7m47s
CI / Import/export fidelity gate (pull_request) Successful in 55s
CD / Build and push images (push) Successful in 18s
CD / Deploy to Test (push) Successful in 14s
CD / Smoke tests against Test (push) Successful in 1m16s
CD / Promote to Int (push) Successful in 11s
CI / Lint, typecheck, test (push) Successful in 4m50s
CI / Build container images (push) Has been skipped
CI / Auth e2e pack (push) Successful in 7m38s
CI / Import/export fidelity gate (push) Successful in 56s
docs: VS-NfD readiness planning (ist-aufnahme, plan, ADRs 0019-0026, issue drafts)
Add docs/vs-nfd/: the analysis brief, the as-is assessment (42 findings,
all verified against the code), the prioritized action plan rev. 2 with
issue references written back to every checkbox, the two-stage issue/ADR
brief, and the full reviewed draft used to create the forge state.

Add eight proposed ADRs 0019-0026 covering the VS-NfD architecture
decisions: no security base functions (par. 52 VSA anchor), HKDF token
key separation, external authentication, page classification, read-access
audit trail (variant A), reproducible offline deployment, plugin trust
model, and backup target restriction.

Forge state created alongside this commit: 11 labels, milestones M24-M31,
issues #188-#236 (docs-only change, no code touched).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0168Ph5uBmHm8X28CSVpbpnJ
2026-07-30 01:48:05 +02:00

5.8 KiB

Analyse-Auftrag: VS-NfD-Ist-Aufnahme Dorfteich

Diese Datei in das Repo legen (z. B. docs/vs-nfd/00-analyse-auftrag.md) und Claude Code anweisen: „Arbeite docs/vs-nfd/00-analyse-auftrag.md ab."


Rahmen

Ziel des Vorhabens: Dorfteich soll in einer nach VSA freigegebenen IT-Umgebung einer Bundesbehörde betrieben werden können — Einstufung VS-NfD. Es wird keine eigene BSI-Zulassung angestrebt.

Leitprinzip, an dem alles zu messen ist: Dorfteich darf keine Sicherheitsgrundfunktion im Sinne von §52 VSA selbst implementieren. Verschlüsselung, Authentisierung, Netzabschluss und Datenträgerschutz gehören auf die Plattform der Behörde. Jede Stelle, an der die Anwendung selbst schützt statt zu delegieren, ist ein Befund.

Diese Analyse ist read-only. Keine Codeänderungen, keine Refactorings, keine Bugfixes. Nur Befunde.


Arbeitsweise

  • Jeder Befund braucht einen Fundort: pfad/zur/datei.ts:123.
  • Wo du unsicher bist, schreib „unklar" statt zu raten. Eine ehrliche Wissenslücke ist brauchbar, eine erfundene Antwort ist gefährlich.
  • Keine Verbesserungsvorschläge im Fließtext — dafür gibt es die Spalte „Handlungsbedarf".
  • Bewertungsskala pro Befund:
    • OK — unkritisch, keine Anpassung nötig
    • ANPASSEN — muss geändert werden, aber überschaubar
    • BLOCKIEREND — verhindert den Einsatz, bis es gelöst ist
    • UNKLAR — nicht abschließend bewertbar

1. Sicherheitsgrundfunktionen (höchste Priorität)

Beantworte präzise, was die Anwendung selbst tut:

  1. Authentisierung — Gibt es eine eigene Benutzer-/Passwortdatenbank? Welches Hashing-Verfahren? Existiert bereits OIDC-/SAML-/LDAP-Anbindung oder Unterstützung für Client-Zertifikate / Reverse-Proxy-Header?
  2. Session-Verwaltung — Eigene Implementierung oder Framework? Wo liegen Sessions (Cookie, Server, Redis)? Wie lange gültig?
  3. Kryptographie — Wird irgendwo im Code selbst ver-/entschlüsselt oder signiert? Suche nach eigenen Krypto-Aufrufen, nicht nur nach Bibliotheken. Falls ja: Was, womit, warum?
  4. Zugriffskontrolle — Wie ist das Berechtigungsmodell aufgebaut? Wo wird es durchgesetzt (zentral im Middleware-Layer oder verstreut)? Gibt es Pfade, die es umgehen (API, Suche, Export, Anhänge)?
  5. Integrität — Gibt es Prüfsummen, Signaturen, Manipulationsschutz?

2. Datenhaltung

  1. Wo liegen Seiteninhalte — Datenbank, Filesystem, beides?
  2. Wo liegen Anhänge und hochgeladene Dateien?
  3. Existiert ein Volltextsuchindex? Welche Technologie, wo persistiert er, und enthält er Klartext der Seiteninhalte?
  4. Welche weiteren Kopien der Inhalte entstehen im Betrieb — Caches, Thumbnails, Vorschaubilder, Render-Artefakte, Temp-Dateien?
  5. Wie ist die Revisions-/Versionshistorie abgelegt?

3. Löschen und Vernichtung

  1. Was passiert beim Löschen einer Seite — Soft- oder Hard-Delete?
  2. Werden dabei erfasst: Revisionen, Anhänge, Suchindex, Caches, Thumbnails, Papierkorb, Backlinks?
  3. Gibt es einen Weg, eine Seite samt aller Spuren rückstandsfrei zu entfernen? Falls nein: Was bleibt konkret übrig und wo?

4. Ausgehende Verbindungen

  1. Liste jede Stelle, an der die Anwendung eine Verbindung nach außen aufbaut oder aufbauen könnte: Update-Checks, Telemetrie, Analytics, Crash-Reporting, Lizenzprüfung, Link-Vorschauen, oEmbed, Avatar-Dienste, Karten, externe Schriften, Icons, Skripte.
  2. Prüfe auch die gepinnten Fremdmodule (Editor, Flowchart) — laden diese zur Laufzeit etwas nach?
  3. Backups: Wohin kann konfiguriert werden? Gibt es eine Einschränkung oder ist jedes Ziel erlaubt? Werden Backups verschlüsselt, und wenn ja, wie?
  4. Läuft die Anwendung vollständig ohne Internetzugang? Was bricht?

5. Ausgabekanäle (für die Kennzeichnungspflicht)

  1. Liste alle Wege, auf denen Inhalte die Anwendung verlassen: Web-Ansicht, Druck, PDF-/DOCX-Export, API, Feeds, Suchergebnisse, Anhang-Download, Backup.
  2. Gibt es bereits ein Metadatenmodell pro Seite, in das eine Einstufung aufgenommen werden könnte? Wie ist es strukturiert, und wird es an die Ausgabekanäle durchgereicht?
  3. Wo genau müsste eingegriffen werden, damit ein Kopf-/Fußaufdruck in allen Ausgaben erscheint? Nenne die konkreten Stellen.

6. Protokollierung

  1. Was wird heute protokolliert — nur Änderungen oder auch Lesezugriffe?
  2. Wohin (Datei, stdout, DB)? Ist Syslog-/SIEM-Export möglich?
  3. Ist die Aufbewahrungsdauer konfigurierbar?
  4. Landen Inhalte oder personenbezogene Daten in Logs, die dort nicht hingehören?

7. Lieferkette

  1. Erzeuge eine vollständige Abhängigkeitsliste mit Versionen und Lizenzen.
  2. Welche Abhängigkeiten sind nicht aus EU-/DACH-Quellen oder haben einen unklaren Maintainer-Status?
  3. Sind alle Versionen tatsächlich gepinnt — auch transitiv (Lockfiles)?
  4. Wie läuft das Deployment: Container-Images (welche Basis?), Pakete, Quellcode? Wäre eine Offline-Installation möglich?

8. Betriebsmodell

  1. Ist die Anwendung mandantenfähig oder Single-Tenant?
  2. Welche Konfiguration ist zur Laufzeit änderbar, welche nur beim Deploy?
  3. Gibt es Funktionen, die ein Betreiber hart abschalten kann (Feature-Flags)?

Ergebnis

Schreibe das Resultat nach docs/vs-nfd/10-ist-aufnahme.md mit folgendem Aufbau:

  1. Management-Zusammenfassung — max. 15 Zeilen. Wie weit ist Dorfteich vom Ziel entfernt? Was sind die drei größten Brocken?
  2. Befundtabelle — je Zeile: Nr. | Thema | Fundort | Ist-Zustand | Bewertung | Handlungsbedarf | grobe Aufwandsschätzung (S/M/L)
  3. Detailbefunde — pro Kapitel oben, mit Codeauszügen wo hilfreich
  4. Offene Punkte — was du nicht klären konntest und warum

Sortiere die Befundtabelle nach Bewertung: BLOCKIEREND zuerst.