mjEdit unterstützt den vollständigen OSCAL v1.2.1-Standard mit spezialisierten Editoren für jeden Dokumenttyp.

Alle 8 OSCAL-Dokumenttypen

Dokumenttyp Kürzel Funktion mjEdit-Feature
Katalog catalog Kontrollrahmenwerk definieren Gruppen/Controls browsen, bearbeiten, erstellen
Profil profile Baseline-Auswahl treffen Controls auswählen, Tailoring, Parameter setzen
System Security Plan ssp System dokumentieren Komponenten, Inventar, Control-Implementierung
Assessment Plan ap Prüfung planen Prüfmethoden, Scope, Zeitrahmen definieren
Assessment Results ar Ergebnisse dokumentieren Findings, Observationen, Evidenz erfassen
Plan of Action & Milestones poam Maßnahmen verfolgen Remediation-Items, Fristen, Status-Tracking
Component Definition component Bausteine definieren Wiederverwendbare Komponentenbibliotheken
Mapping Collection mapping Frameworks mappen Bidirektionale Control-Zuordnung zwischen Standards

Das OOP-Prinzip: Komponenten als Klassen, Inventar als Instanzen

mjEdit bildet die OSCAL-Architektur intuitiv ab – angelehnt an objektorientierte Programmierung:

Komponente = Klasse (Blueprint)

"Apache HTTP Server" – Typ: Software, Beschreibung: Webserver

Inventar-Item = Instanz (konkretes Asset)

"Apache 2.4.58 auf Server web-01" – IP: 192.168.1.10, FQDN: web-01.example.com

Im SSP-Tab wird ein Inventar-Item-Dialog geöffnet, im Tab „Komponenten" werden die zugehörigen Software-/Hardware-Bausteine per Multi-Select verknüpft. mjEdit erzeugt automatisch die implemented-components-Referenz mit component-uuid.

Automatische OSCAL-Dokumentketten

Sie müssen Dokumente nicht einzeln erstellen. mjEdit kann die gesamte Compliance-Kette automatisch generieren:

( Katalog (BSI/NIST) → Profil ) → System Security Plan → Assessment Plan → Assessment Results → POA&M

Jeder Schritt übernimmt UUID-Referenzen automatisch, setzt Metadata (Title, Version, last-modified) korrekt und validiert gegen das OSCAL v1.2.1 Schema.

Evidenz-Workflow mit Status-Tracking: SSP → AP → AR

Der Nachweis, dass ein geplanter Beleg tatsächlich geprüft wurde, ist der Kern jeder Auditierbarkeit – und der fehleranfälligste Punkt in der Praxis. mjEdit macht diesen Workflow explizit sichtbar: Drei prominente Tree-Knoten verbinden den System Security Plan, den Assessment Plan und die Assessment Results zu einer lückenlosen Evidenzkette.

Drei Dokumente – drei dedizierte Tree-Knoten

Dokument Tree-Knoten Funktion
SSP 📎 Evidenz-Verlinkungen (pro implemented-requirement) Welche Belege werden für diese Kontrolle gesammelt?
AP 📎 Geplante Evidenzen Welche Belege müssen geprüft werden? (via validation-status-Property)
AR 🧷 Aus AP zu prüfende Evidenzen (X/Y geprüft) Live-Status ✅ geprüft / ⏳ ausstehend pro Beleg

Beim Öffnen eines Assessment-Results lädt mjEdit den verknüpften Assessment Plan automatisch über import-ap.href und gleicht die geplanten Evidenzen aus dem AP-back-matter gegen alle observation.relevant-evidence[].href-Anker im AR ab. Das Ergebnis ist sofort sichtbar: Wie viele der X geplanten Belege wurden bereits dokumentiert?

Ein-Klick-Observation für ausstehende Belege

Statt eine Observation manuell aufzubauen, genügt ein Rechtsklick auf einen ⏳-Knoten im AR-Tab:

„📋 Observation für diese Evidenz erstellen"

mjEdit erzeugt eine vollständige, OSCAL v1.2.1-konforme Observation – mit UUID, collected-Zeitstempel, methods: ["EXAMINE"] und dem schemakonformen Anker:

"relevant-evidence": [
  {
    "href": "#<uuid-der-ap-ressource>",
    "description": "Beleg aus AP-Planung"
  }
]

Optional setzt mjEdit props[name=evidence-source, value=ap] als Herkunftsmarkierung.

Warum ist das so wertvoll?

  • Keine Lücken mehr: Das Audit-Team sieht sofort, welche der geplanten Belege noch nicht dokumentiert wurden – ohne manuelle Listen oder Tabellen.
  • Automatische OSCAL-Konformität: Die generierten Observations folgen exakt dem NIST-OSCAL-v1.2.1-Schema – relevant-evidence.href als #uuid-Anker ist schemakonform und werkzeugübergreifend verarbeitbar.
  • Vollständige Nachvollziehbarkeit: Die Kette SSP (Anforderung) → AP (Planung) → AR (Nachweis) ist direkt aus der Dateistruktur ableitbar – ohne proprietäre Datenbank.
  • Cross-Document-Linking: mjEdit lädt den AP beim Öffnen des AR automatisch nach und zeigt den aktuellen Prüfstand in Echtzeit.

Batch-Generierung für Server-Landschaften per KI mittels MCP-Protokoll

Mit oscal_generate_batch_tailored_chain wird für eine Server-Landschaft – z. B. aus 8 Servern – eine komplette Dokumentkette pro System erzeugt:

  • 8 Server → 8 Unterverzeichnisse (benannt nach system_id)
  • je 6 OSCAL-Dokumente: Profil → Component-Definition → SSP → Assessment Plan → Assessment Results → POA&M
  • = 48 validierte Dokumente in einem Aufruf

Pro Server (target) lassen sich u. a. festlegen: System-ID, Name, Beschreibung, Plattform/OS, server-spezifische Control-Auswahl (Tailoring), Schutzniveau (sensitivity_level), Rollen, Parties, Komponenten-Definition, Assessment-Actions sowie inventory_items mit Hostname, FQDN, IPv4/IPv6- und MAC-Adressen. Gemeinsame Felder (shared_roles, shared_parties, shared_sensitivity_level) gelten für alle Systeme und können pro Target überschrieben werden.

Schema-Validierung auf drei Ebenen

Ebene Mechanismus Zeitpunkt
1. Pydantic-Modelle Python-basierte Datenvalidierung Bei Erstellung und Bearbeitung
2. JSON-Schema NIST OSCAL v1.2.1 Schemas Auf Wunsch oder vor dem Speichern
3. Referenz-Integrität UUID/Href/Control-ID Prüfung Bei Validierungs-Aufforderung

Automatische OSCAL-Dokumenten-Heilung

OSCAL-Dokumente entstehen heute aus vielen Quellen: NIST-Beispielen, BSI-Konvertern, KI-Pipelines, älteren Generatoren oder manueller Bearbeitung in einem beliebigen JSON-Editor. Die Folge sind in der Praxis schemawidrige oder veraltete Strukturen – z. B. verbotene Felder wie description auf Statement-Ebene im SSP, fehlende Pflichtfelder wie import-ap im Assessment-Result, Datetime-Werte ohne Zeitzonen-Suffix oder NIST-Pre-1.2.1-Container wie system-interconnections.

mjEdit löst dieses Problem mit einer dokumenttyp-spezifischen, idempotenten Heilungslogik, die jeweils beim Öffnen und beim Speichern automatisch aufgerufen wird:

Dokumenttyp Heilung (Auszug)
SSP system-ids, responsible-parties, by-components reparieren · Statement-descriptionby-components[this-system].description · system-interconnectionscomponents[type=interconnection] · import-component-definitionsback-matter.resources · verbotene Top-Level entfernen
Assessment Results Pflichtfeld import-ap ergänzen · assessment-platforms ergänzen · Zeitzonen-Suffix bei start/end erzwingen
POA&M Legacy-remarksprops[name=legacy-remarks] (verlustfrei)
Component-Definition Erkennung und Konvertierung älterer Strukturformate
Mapping-Collection NIST-konforme Anpassungen für provenance und map-entry vor der Schema-Validierung

Warum ist das wichtig?

  • Verlustfrei: Inhalte werden migriert, nicht gelöscht. Text aus verbotenen Feldern wandert in semantisch passende Zielstrukturen.
  • Idempotent: Mehrfaches Öffnen und Speichern erzeugt identische Ergebnisse.
  • Konsistente Validierung: Da die Heilung sowohl beim Open als auch beim Save (und vor jeder manuellen Validierung) läuft, sieht der Validator exakt das, was später in der Datei steht.
  • Statistiken im Log: Jede Save-Operation protokolliert, wie viele Felder migriert wurden (z. B. statement_descriptions_migrated: 3, legacy_system_interconnections_migrated: 2).
  • Round-Trip-fähig: Migrierte Inhalte erscheinen beim nächsten Öffnen wieder im passenden Dialog.

Empfehlung für „erbliche" OSCAL-Dateien: Ein OSCAL-Dokument aus einem fremden Tool oder einem alten Bestand muss nicht mühsam manuell schema-fix gemacht werden. Einmal in mjEdit öffnen, einmal speichern – fertig. Beim nächsten Schema-Lauf ist es OSCAL v1.2.1-konform.

Vorinstallierte Compliance-Frameworks

  • BSI IT-Grundschutz++ (2.128 Controls)
  • NIST SP 800-53 (468 Controls)
  • BSI-Kriterienkatalog C5 nach Christop Puppe (noch in Arbeit)
  • BSI-Kriterienkatalog 200-x Kompendium 2023 nach Christop Puppe (noch in Arbeit)

Mapping-Collection — Offline-KI-gestützt

Das Mapping-Tab ist eines der herausragenden Alleinstellungsmerkmale von mjEdit: Controls aus zwei OSCAL-Dokumenten (Source ↔ Target) werden systematisch aufeinander abgebildet – z. B. NIST SP 800-53 ↔ BSI IT-Grundschutz, C5 ↔ ISO 27001 oder BSI 200-x Kompendium 2023 ↔ BSI IT-Grundschutz++.

Warum ist das so wertvoll?

Ein manuelles Mapping zwischen zwei umfangreichen Control-Katalogen ist eine der zeitaufwändigsten und fehleranfälligsten Aufgaben in der Compliance-Arbeit:

  • Ein vollständiges Mapping zwischen z. B. NIST SP 800-53 (468 Controls) und BSI IT-Grundschutz++ (2.128 Controls) bedeutet im Worst Case fast eine Million Paar-Vergleiche – pro Vergleich Lesen, Verstehen, Bewerten, Dokumentieren.
  • Ohne Werkzeug rechnet man pro Mapping-Projekt mit mehreren Personenwochen bis -monaten; mit mjEdit + KI-Vorschlägen reduziert sich der Aufwand auf wenige Tage – die Person bewertet nur noch die KI-Vorschläge statt das Rad neu zu erfinden.
  • Das Ergebnis ist maschinenlesbar (OSCAL JSON), schema-validiert, versionierbar und über Jahre wiederverwendbar – kein Excel-Friedhof mehr.

Wie arbeitet die KI – und was heißt „offline"?

Die KI-Funktionen laufen vollständig lokal in mjEdit. Es wird ein quelloffenes, multilinguales Sentence-Transformer-Modell (paraphrase-multilingual-MiniLM-L12-v2) verwendet, das beim ersten Aufruf einmalig auf den Rechner geladen und danach offline genutzt wird.

Datenschutz first: Kein Control-Text, kein Katalog und kein Mapping-Vorschlag verlässt jemals den Rechner. Keine Cloud, kein API-Key, keine Token-Kosten – damit auch für hochregulierte Bereiche (BSI, Behörden, KRITIS) einsetzbar.

Auto-Suggest mit vier Methoden

mjEdit bietet im Mapping-Editor einen Knopf „Vorschläge erzeugen". Die Methode lässt sich pro Lauf einstellen:

Methode Verfahren Wann nutzen?
syntactic String-/Text-Ähnlichkeit (SequenceMatcher über normalisierte Titel + Statements) Sehr ähnliche Frameworks, identische Sprache, bekannte Wortwahl
semantic Vergleich mehrsprachiger Vektor-Embeddings (Bedeutungs-Ähnlichkeit) Unterschiedliche Wortwahl, unterschiedliche Sprachen (DE/EN/FR/IT)
functional Funktionale Ähnlichkeit (Wirkungsabsicht eines Controls, nicht die Formulierung) Strukturell sehr verschiedene Frameworks (z. B. NIST → BSI)
auto Kaskade Semantic → Functional → Syntactic, bis ein Treffer über Schwelle liegt Standard für die meisten Projekte – holt aus jedem Pärchen das Beste

Zusätzlich:

  • Auto-Akzeptanz-Toggle: Vorschläge oberhalb der konfigurierbaren Schwelle (Standard 0,4) werden direkt übernommen – die Person prüft nur noch Grenzfälle.
  • Sprachübergreifend: Source auf Deutsch, Target auf Englisch? Das Embedding-Modell beherrscht Cross-Language-Semantik nativ.
  • Bulk-Operationen, Schema-Validierung, Markdown-Export für Reviews und Reports.

Beispiele für Mapping-Treffer

Source (NIST SP 800-53) Target (BSI IT-Grundschutz) Methode Score
AC-2 Account Management ORP.4.A1 Regelung für Benutzerkonten semantic 0,82
IA-2 Identification and Authentication (Org. Users) ORP.4.A8 Regelung des Passwortgebrauchs functional 0,71
AU-2 Event Logging OPS.1.1.5.A1 Protokollierung syntactic 0,68
SC-7 Boundary Protection NET.1.1.A2 Sicherheits-Gateway (Firewall) semantic 0,74

Konkreter Use Case: BSI 200-x Kompendium 2023 → BSI IT-Grundschutz++

Aufgabenstellung: „Wie können die Inhalte des bestehenden BSI-IT-Grundschutz-Kompendiums 2023 für den neuen Grundschutz++ einfließen? Welche Inhalte welcher Bausteine sollten in welche Praktiken vom Grundschutz++ übernommen werden – und wo entstehen Lücken?"

Mit mjEdit lässt sich diese Frage in einem klar strukturierten 9-Schritt-Prozess beantworten:

1. Aufgabenstellung präzisieren

Source = BSI 200-x Kompendium 2023 (Bausteine), Target = BSI IT-Grundschutz++ (Praktiken). Geltungsbereich (z. B. nur die Bausteine ORP.* und OPS.*), Schutzbedarfsklassen und Sprachausrichtung festlegen.

2. Source-Katalog zuschneiden

Das vollständige Kompendium 2023 wird in mjEdit als OSCAL-Katalog geöffnet. Über den Katalog-Editor werden Bereiche, die nicht in den Vergleich einfließen sollen (z. B. veraltete Bausteine), markiert.

3. Source-Profil erstellen → resolven → zugeschnittenen Katalog ableiten

  • Im Profil-Editor wird ein Source-Profil erstellt: include-controls für die relevanten Bausteine, add-Modifikationen für Anmerkungen/Ergänzungen aus der eigenen Organisation.
  • Per Profile-Resolution entsteht ein aufgelöstes Profil (alle Vererbungen, Tailoring-Regeln und Modifikationen sind ausgewertet).
  • Daraus wird mit einem Klick ein zugeschnittener Source-Katalog als eigenständige catalog.json exportiert – die saubere Vergleichs-Basis für das Mapping.

4. Target-Katalog zuschneiden

Analog wird der Grundschutz++ Katalog (2.128 Controls) geöffnet und auf den relevanten Praktik-Umfang gefiltert (z. B. nur die Praktiken passend zum Geltungsbereich aus Schritt 1).

5. Target-Profil erstellen → resolven → zugeschnittenen Katalog ableiten

Wie Schritt 3, nur für das Target. Das aufgelöste Target-Profil sorgt dafür, dass Anmerkungen, organisationsspezifische Parameter und Ergänzungen sauber im zugeschnittenen Target-Katalog landen.

6. Mapping-Datei erstellen

Datei → Neu → OSCAL Mapping Collection. Die leere Mapping-Collection bekommt zwei resource-Einträge mit relativen href-Pfaden zu den beiden zugeschnittenen Katalogen aus Schritt 3 und 5.

7. Source- und Target-Katalog im Mapping-Tab auswählen

Im Mapping-Tab werden beide Kataloge geladen. mjEdit zeigt links die Source-Controls, rechts die Target-Controls, in der Mitte die Mapping-Tabelle mit Spalten für Methode, Begründung (matching-rationale), Beziehung (equivalent, subset-of, superset-of, intersects-with) und Statement-Vorschau.

8. Das automatische Mapping

Methode auto auswählen, Schwelle z. B. auf 0,5 setzen, „Vorschläge erzeugen" drücken. mjEdit durchläuft pro Source-Control die Kaskade Semantic → Functional → Syntactic und schreibt für jedes Pärchen den besten Treffer mitsamt Score und Methode in die Tabelle. Mit aktivierter Auto-Akzeptanz wandern Treffer über Schwelle direkt in die Mapping-Collection; alles darunter landet in der Reviewspalte.

Bei z. B. 250 Source- × 350 Target-Controls werden so 87.500 Pärchen-Bewertungen in wenigen Minuten erledigt – ein Aufwand, der manuell nicht leistbar wäre.

9. Ergebnis verwenden – Reports & Folgeartefakte generieren

Aus der fertigen Mapping-Collection lassen sich per Klick automatisch ableiten:

  • Resolved Profile (Tailoring auf Basis des Mappings)
  • SSP-Vorschlag (System Security Plan mit übernommenen Implementierungen)
  • Cross-Reference-Bericht (Markdown/CSV: welcher Source-Control deckt welchen Target-Control)
  • Gap-Analyse (welche Target-Praktiken sind durch keine Source abgedeckt → Handlungsbedarf)
  • Component-Definition-Stub (wiederverwendbare Komponente mit Mapping-Referenzen)
  • POA&M-Stub (für jede Lücke ein Eintrag mit Maßnahmen-Vorschlag)

Welchen Nutzen ziehen die einzelnen Rollen aus dem Mapping?

Rolle Erkenntnis aus dem Mapping
CISO / Compliance-Manager Wie viele Kontrollen sind durch das bestehende Framework bereits abgedeckt? Wo liegen die größten Lücken?
ISMS-Verantwortliche/r Welche Praktiken aus Grundschutz++ erfordern eine Neu-Implementierung, welche sind „nur" Re-Mapping?
Auditor/in Nachvollziehbare, schema-validierte Begründung pro Mapping (matching-rationale + Score) statt Bauchgefühl.
Architekt/in Component-Definition-Stub als technische Vorlage für Tools, Plattformen, Cloud-Dienste.
Projektleiter/in Migration Gap-Analyse + POA&M zeigen Aufwand, Reihenfolge und Priorisierung der Migrationsschritte.
Datenschutzbeauftragte/r Lokale Verarbeitung – sensible Compliance-Inhalte bleiben on-premise.

Kurz: aus einer mehrmonatigen manuellen Excel-Tabelle wird ein reproduzierbarer, KI-gestützter, schema-validierter Workflow von wenigen Tagen – mit prüfbaren Folgeartefakten für die gesamte Compliance-Kette.