6.0 KiB
Timeslot comparison capability audit
Stand: 2026-09-11. Phase 8, Paket P0/P1. Code- und synthetisches Fixture-Audit; ergänzend wurde der vom Nutzer ausdrücklich vollständig freigegebene Mandant Dummy ausschließlich lesend geprüft. Es gab keine Datenmutation.
Ergebnis
Die aktuelle kanonische Persistenz bewahrt Tool-/Regel-ID, optional ein generisch gemapptes affectedAsset, Originalfelder und Provenienz. Sie bewahrt außerdem scannergebundene Ziel-/Benchmarkbeobachtungen für die Scoreprojektion. Diese Angaben reichen nicht pauschal für eine objektgenaue Gegenprüfung: Der Assetwert besitzt keinen deklarierten Typ oder Namensraum, Score-Scope und Finding-Vorkommen sind nicht allgemein über einen versionierten Vergleichsvertrag verbunden, und kein Profil deklariert derzeit eine vollständige Negativnachweissemantik je Regel/Objekt.
| Quelle | Unterstützte Formate/Pfade | Erhaltener übergeordneter Scope | Ergebnispopulation | Objektgenaue Behebung aus heutigem Bestand |
|---|---|---|---|---|
| Purple Knight | CSV/Excel/HTML über generische Tabellen plus native Summary-/HTML-Extraktion | forest.name; AD-native Scorequelle |
complete für Scoreberechnung |
Nicht allgemein belegt. asset ist heuristisch gemappt; Typ/Namensraum und vollständige Objektpopulation fehlen |
| PingCastle | XML/HTML über Healthcheck-Extractor | domain.fqdn |
findings-only |
Abwesenheit beweist keine Behebung. Native Regel-ID ist erforderlich, aber Ergebnislisten enthalten nur ausgelöste Regeln |
| CIS-CAT | HTML sowie generische Tabellen/Objektpfade | host.name und benchmark.name |
complete für Scoreberechnung |
Scopevergleich grundsätzlich möglich; regel-/objektbezogener Negativnachweis und Namespaceregel noch nicht deklariert |
| Maester | Excel/CSV/HTML über generische Tabellen bzw. HTML-Extractor | entra.tenant_id |
complete für Scoreberechnung |
Tenant-/Regelvergleich grundsätzlich möglich; asset ist keine verpflichtende, typisierte Zielidentität und vollständige Negativsemantik fehlt |
| Generisch | CSV/Excel/JSON/XML/HTML über registrierte Formatadapter und generischen Extractor | kein verifizierter Zielscope | unknown |
Nicht automatisch vergleichbar; Titel, Position oder untypisierter Assettext dürfen keine Behebung beweisen |
| GPO/Baseline | Eigener versionierter Ingestion-, Identity-, Snapshot-, Evaluation- und Finding-Pfad | Projekt, Environment Profile, Kontext/Baseline/Setting und Backupreferenzen | explizite Complete/Partial/Blocked- und Evidencezustände | Fachlich reichere Identitäten vorhanden, aber ohne RSoP/GP Results keine allgemeine Aussage über effektive Anwendung; eigener Policyvertrag bleibt maßgeblich |
Die älteren comparisonKeys bleiben vorerst als Legacydeklaration vorhanden. Zusätzlich muss jetzt jedes Scannerprofil einen versionierten timeslotComparison-Vertrag besitzen. Purple Knight, PingCastle, CIS-CAT und Maester sind zunächst ausschließlich scopeweit freigegeben; das generische Profil ist nicht automatisch vergleichbar. Kein aktuelles Profil erlaubt Behebung durch bloße Abwesenheit. Die neue sichere Engine konsumiert diese Verträge; die bisherige Produktprojektion konsumiert sie noch nicht.
Ergänzende Bestandsvalidierung mit Dummy
- Purple Knight besitzt im aktiven Bestand Regel-IDs und für jedes Ergebnis einen
affectedAsset-Wert. Die Werte sind jedoch nur die ErgebnisbereicheADbeziehungsweiseHybrid (AD), keine stabilen Host-/Objektidentitäten. Der Vertrag bleibt deshalb korrekt aufforest.nameund Scopegranularität begrenzt. - CIS-CAT besitzt
host.name,benchmark.nameundreport.generated_at; PingCastle besitztdomain.fqdnundreport.generated_at; Purple Knight besitztforest.nameundreport.generated_at. Der aktive Maester-Excel-Lauf besitzt keinen gespeichertenentra.tenant_id- oder Reportzeitnachweis und ist nach dem neuen Vertrag aktuell nicht vergleichbar. - Dummy enthält mehrere supersedierte Reimporte derselben Scannerquellen. Die Läufe besitzen weder
startedAtnochcompletedAt; ihre Importzeiten unterscheiden sich. Diese Importzeiten dürfen und werden nicht als neue Sicherheitsbeobachtung verwendet. - Die derzeit aktiven Dummy-Quellen liegen nicht als zwei vollständig vergleichbare A/B-Timeslots desselben Scanners vor. Dummy kann daher aktuell keinen realen Fortschrittswert abnehmen; er bestätigt stattdessen die Fail-closed-Grenzen für Scope, Reportzeit und Reimport.
Versionierungsentscheidung für den ersten Schnitt
Der neue Domänenvertrag in src/domain/timeslot-comparison.ts ist additiv und wird noch nicht von Import, Persistenz, bestehender Vergleichsengine oder UI verwendet. Er verändert keine gespeicherten Fakten und benötigt deshalb für diesen ersten Schnitt weder Processing-Manifest noch Reimport.
Sobald ein Profil Objekt-/Scopefelder neu extrahiert, anders mappt oder eine neue Vollständigkeits-/Negativnachweisaussage aus dem Quellformat ableitet, gilt REIMPORT_POLICY.md: append-only Parser-/Extractor-/Profil-/Mappingversion und Reimportmarkierung nur für die betroffenen historischen Verträge. Bereits vollständig gespeicherte, verifizierbare Fakten dürfen später über eine getrennt versionierte Vergleichsprojektion neu ausgewertet werden; fehlende Evidenz darf nicht rekonstruiert werden.
P1-Profilstand und offene Entscheidungen
- Scopegranularität, notwendige Scopeeigenschaften, Reportzeitquellen, Ergebnisart und Diagnosepolitik sind für alle registrierten Profile deklariert und synthetisch validiert. Objektgranularität bleibt für alle aktuellen Scannerprofile gesperrt.
completeträgt bei keinem aktuellen Profil automatisch eine negative Regel-/Objektaussage. Abwesenheit bleibtunverified-absent, bis ein formatspezifischer vollständiger Negativnachweis synthetisch belegt und versioniert ist.- Scannerdiagnosen nach Einfluss auf Identität, Einzelresultat, Abdeckung und Gesamtscore klassifizieren.
- GPO-Vergleichsvertrag getrennt auf vorhandene Policy-Identitäten und Wirksamkeitsgrenzen abbilden; keine Scanner-Sonderlogik in React.