{ "surface": "report", "manifest": { "version": 1, "surface": "report", "title": "ASSESSOR – Ist-Zustand", "description": "High-Level-Ist-Zustand des aktuellen ASSESSOR aus Quellcode und Projektdokumentation.", "generatedAt": "2026-09-09T12:00:00+02:00", "blocks": [ { "id": "title", "type": "markdown", "body": "# ASSESSOR – Ist-Zustand" }, { "id": "executive-summary", "type": "markdown", "body": "## Executive Summary\n\n- ASSESSOR ist aktuell eine lokale Browseranwendung mit Node-Backend und PostgreSQL; Oberfläche und API laufen same-origin.\n- Standardberichte werden aus fünf Formatfamilien verarbeitet: CSV/Text, HTML, Excel, JSON und XML.\n- Eigene Profile bestehen für Purple Knight, PingCastle, CIS-CAT Pro und Maester; unbekannte strukturierte Quellen laufen über das generische Profil.\n- GPO-Backups und Microsoft Security Baselines werden über einen separaten spezialisierten Analysepfad verarbeitet.\n- Sichtbares Ergebnis sind vereinheitlichte Findings, Evidenzen, Umgebungsdaten und Policy-Vergleiche in Client Info, Work, Result DB und Pathfinder." }, { "id": "inputs", "type": "markdown", "body": "## Unterstützte Eingaben\n\n- **CSV/Text:** .csv und .txt; Komma, Semikolon, Tabulator und Pipe.\n- **HTML:** .html und .htm; Tabellen und erkannte statische Berichtsdaten.\n- **Excel:** .xlsx und .xls; Arbeitsblätter werden übernommen, Formeln nicht ausgeführt.\n- **JSON:** .json; Objekte und Arrays werden tabellarisch strukturiert.\n- **XML:** .xml; hierarchische Strukturen ohne aktive externe XML-Konstrukte.\n- **Scannerprofile:** Purple Knight, PingCastle, CIS-CAT Pro, Maester und Generic.\n- **GPO/Baseline:** GPO-Backup als ZIP oder unterstützte Ordnerauswahl; Microsoft Security Baseline als ZIP.\n- **GPO-Artefakte:** Registry.pol, GptTmpl.inf, audit.csv sowie ausgewählte Group Policy Preferences für Registry, Services, Laufwerkszuordnungen und lokale Benutzer/Gruppen." }, { "id": "scanner-specifics", "type": "markdown", "body": "## Scannerbezogene Besonderheiten\n\n- **Purple Knight:** HTML und tabellarische Exporte; Findings, Detailtabellen, Zusammenfassungen und ausgewählte Umgebungskennzahlen.\n- **PingCastle:** HTML liefert Risk Rules und Details; XML liefert eigenständige strukturierte Berichtsdaten und Kontext, aber nicht die vollständige HTML-Findingansicht.\n- **CIS-CAT Pro:** HTML mit Benchmark-Ergebnissen, Regelstatus, Evidenztabellen, Summary-Abgleich und System-/Benchmarkkontext.\n- **Maester:** HTML mit sicher lesbarem statischem Ergebnisobjekt sowie tabellarische/Excel-Ausgaben; Tests, Status, Ergebnistext und Berichtskontext.\n- **Generic:** strukturierte Tabellen/Objekte; fachliche Feldzuordnung nur bei ausreichender Erkennung oder Nutzerbestätigung." }, { "id": "flow", "type": "markdown", "body": "## Datenstrecke: sichtbarer Start- bis Endpunkt\n\n1. **Start:** Berichtdateien im Data Hub auswählen oder GPO-/Baseline-Import starten.\n2. **Eingangskontrolle:** Format, Signatur, Ressourcenlimits und unsichere Inhalte lokal prüfen.\n3. **Strukturierung:** Formatadapter erzeugt ein gemeinsames Zwischenmodell.\n4. **Erkennung:** Tool, Ergebnistabelle und fachliche Felder mit Konfidenz bestimmen; unsichere Zuordnungen bestätigen lassen.\n5. **Normalisierung:** Status, Severity, Titel, Kategorien, Evidenz, Referenzen und Kontext in das kanonische Modell überführen; Originalwerte und Provenienz erhalten.\n6. **Persistenz:** Bestätigten Import atomar als Projekt, Assessment, Scanlauf, Findings, Evidenz, Diagnosen und Historie in PostgreSQL speichern.\n7. **Endpunkt:** Gewählten Client/Timeslot in Client Info, Work, Result DB und Pathfinder anzeigen." }, { "id": "capabilities", "type": "markdown", "body": "## Weitere Fähigkeiten\n\n- **Datahub:** Clients/Projekte, Mehrdatei-Vorschau, Tool-/Formatprüfung, Importdiagnosen, Dublettenhinweise, Reimport/Ersatzläufe, Historie und Timeslots.\n- **Client Info:** Umgebungsfakten, Overall Score, Security Domains, deviation-basierte Priority Findings, Assessment Gaps, Statuskontext und Source Overview.\n- **Work:** Reports als Standardansicht sowie Matrix, Grid und Raw Data; Suche, Sortierung und dynamische Filter.\n- **Finding-Bearbeitung:** Bookmark, Reviewstatus, Priorität, Owner/Team, Fälligkeit, Voraussetzungen, Rollen, Next Step, Evidenzkriterien, Kommentar und Reportmarkierungen.\n- **Vergleich:** Neue, fortbestehende, behobene und wiederkehrende Befunde über Scanläufe/Timeslots.\n- **Result DB:** Vereinheitlichte Scanner-, Kontext- und Policy-Ergebnisse mit Facetten, Details und JSONL-Export.\n- **Pathfinder:** Deviation-basierter Graph mit Kategorie-, Asset-, MITRE ATT&CK- und D3FEND-Beziehungen.\n- **GPO-Analyse:** Baselinevergleich mit Misconfigured, Match/Passed, Not configured, Conflicts, Duplicates und Review required.\n- **Exporte:** Sichere CSV, ASSESSOR-Snapshot als JSON, Result DB als JSONL und HTML-basierter Aktions-/Dashboardexport.\n- **Betrieb:** Backend-Health, DB-Strukturansicht, versionierte Migrationen und technische Verarbeitungsdiagnosen." }, { "id": "security", "type": "markdown", "body": "## Sicherheit und Betriebsgrenzen\n\n- Lokale Verarbeitung ohne externe Uploads, Telemetrie, CDN-Abhängigkeiten oder automatische externe APIs.\n- Importiertes HTML wird nicht ausgeführt; aktive Inhalte werden entfernt.\n- XML mit DTD/ENTITY/SYSTEM/PUBLIC, Excel mit VBA oder verschlüsselten Archiven und nicht statisch lesbare Maester-Ausdrücke werden abgelehnt.\n- Standardgrenzen: 100 MiB je Datei, 140 MiB je Request und 50 Dateien je Batch; zusätzlich Zeit-, Speicher-, Mengen- und Parallelitätsgrenzen.\n- PostgreSQL ist die kanonische lokale Datenhaltung; kein stiller Fallback bei konfigurierter, aber nicht erreichbarer Datenbank.\n- Noch kein freigegebener Mehrbenutzer-Firmenbetrieb: HTTPS, SSO, Rollen und Autorisierung gehören zu Phase 14." }, { "id": "maturity", "type": "markdown", "body": "## Reifegrad des Umsetzungsplans\n\n- **15 Phasen/Teilphasen abgeschlossen:** Phase 0 bis 13A.\n- **2 Teilphasen in Arbeit:** 13B GPO/Baseline-Analyse und 13C Scanner Context/Environment Inventory.\n- **1 Phase offen:** Phase 14 Mehrbenutzer- und Firmenbetrieb." }, { "id": "phase-chart-block", "type": "chart", "chartId": "phase-status" }, { "id": "next-steps", "type": "markdown", "body": "## Empfohlene nächste Schritte\n\n- Phase 13B gegen die definierten GPO-/Baseline-Akzeptanzkriterien abschließen.\n- Phase 13C für alle unterstützten Scannerprofile vervollständigen.\n- Vor Firmenbetrieb Phase 14 mit HTTPS, SSO, Rollen, Autorisierung, Betriebsüberwachung sowie Backup/Restore umsetzen.\n- Format- und Profilkompatibilität weiter mit synthetischen Referenzberichten und Vollständigkeitsabgleichen absichern." }, { "id": "questions", "type": "markdown", "body": "## Offene Fragen\n\n- Welche Scanner oder Reportvarianten sollen als Nächstes ein eigenes Profil erhalten?\n- Welche zusätzlichen GPO-Artefaktarten sind fachlich zwingend?\n- Wird zusätzlich eine Capability-Matrix „Format × Tool × sichtbare Felder“ benötigt?" }, { "id": "caveats", "type": "markdown", "body": "## Caveats\n\n- Stand: aktueller Workspace am 09.09.2026; Basis sind Quellcode, Sicherheitsdokumentation und Umsetzungsplan, keine Kundendaten.\n- „Parsebar“ heißt strukturell lesbar; vollständige Findings setzen ein passendes Profil oder bestätigtes Mapping voraus.\n- GPO/Baseline und Environment sind nutzbar, die zugehörigen Phasen 13B und 13C bleiben aber in Arbeit.\n- High-Level-Ist-Zustand, kein Feld-für-Feld- oder Parser-Testnachweis." } ], "charts": [ { "id": "phase-status", "title": "Umsetzungsstatus nach Phasen", "type": "bar", "dataset": "phase_status", "encodings": { "x": { "field": "status", "type": "nominal", "title": "Status" }, "y": { "field": "anzahl", "type": "quantitative", "title": "Anzahl Phasen/Teilphasen" } }, "options": { "orientation": "vertical", "grouping": "grouped", "showLegend": false }, "source": { "id": "phase-status-values", "label": "Aus dem ASSESSOR-Umsetzungsplan abgeleitete Statuszählung", "query": { "engine": "static-sql", "description": "Zählt die dokumentierten Phasen und Teilphasen nach Status; Grundlage: docs/IMPLEMENTATION_PLAN.md.", "sql": "SELECT status, anzahl, umfang FROM (VALUES ('Abgeschlossen', 15, 'Phase 0–13A'), ('In Arbeit', 2, 'Phase 13B und 13C'), ('Offen', 1, 'Phase 14')) AS phase_status(status, anzahl, umfang)" } } } ], "sources": [ { "id": "implementation-plan", "label": "ASSESSOR Umsetzungsplan", "path": "docs/IMPLEMENTATION_PLAN.md" }, { "id": "import-code", "label": "Importengine und Toolprofile", "path": "src/importers; src/profiles" }, { "id": "app-code", "label": "Anwendungsbereiche und sichtbare Datenprojektionen", "path": "src/app; src/features" }, { "id": "backend-code", "label": "Backend, GPO-Analyse und Persistenz", "path": "server; src/persistence; src/api" }, { "id": "security-docs", "label": "Sicherheitsmodell und Importgrenzen", "path": "SECURITY.md; docs/IMPORT_SECURITY_LIMITS.md" } ] }, "snapshot": { "version": 1, "generatedAt": "2026-09-09T12:00:00+02:00", "status": "ready", "datasets": { "phase_status": [ { "status": "Abgeschlossen", "anzahl": 15, "umfang": "Phase 0–13A" }, { "status": "In Arbeit", "anzahl": 2, "umfang": "Phase 13B und 13C" }, { "status": "Offen", "anzahl": 1, "umfang": "Phase 14" } ] } }, "sources": [ { "id": "implementation-plan", "label": "ASSESSOR Umsetzungsplan", "path": "docs/IMPLEMENTATION_PLAN.md" }, { "id": "import-code", "label": "Importengine und Toolprofile", "path": "src/importers; src/profiles" }, { "id": "app-code", "label": "Anwendungsbereiche und sichtbare Datenprojektionen", "path": "src/app; src/features" }, { "id": "backend-code", "label": "Backend, GPO-Analyse und Persistenz", "path": "server; src/persistence; src/api" }, { "id": "security-docs", "label": "Sicherheitsmodell und Importgrenzen", "path": "SECURITY.md; docs/IMPORT_SECURITY_LIMITS.md" } ] }