SecaniDokumentation
OSCAL

Toolkit

Vorschau auf das implementierte TypeScript-Toolkit secani/oscal während seiner Vorbereitung auf Open Source.

Private Vorbereitung: Während der privaten Vorbereitung verbleibt das implementierte Toolkit im Repository secani/oscal mit privater Sichtbarkeit. @secani/oscal ist nicht auf npm veröffentlicht, daher sind die folgenden Installationsbefehle Vorschauen auf eine zukünftige Veröffentlichung.

@secani/oscal ist ein speicherunabhängiges TypeScript-Toolkit zum Parsen, Validieren und strukturellen Analysieren von OSCAL-1.2.2-Dokumenten.

Installationsvorschau

Diese Befehle reservieren den geplanten Paketnamen. Sie funktionieren erst, nachdem die npm-Veröffentlichung separat genehmigt wurde.

pnpm add @secani/oscal
npm install @secani/oscal
yarn add @secani/oscal
bun add @secani/oscal

OSCAL-JSON verarbeiten

Die implementierte API nimmt Dokument-Bytes entgegen, erkennt das OSCAL-Modell anhand seines Rootschlüssels und validiert das geparste JSON gegen das entsprechende offizielle Schema.

import { createOscalProcessor } from "@secani/oscal";

const processor = createOscalProcessor();
const bytes = new TextEncoder().encode(jsonSource);
const document = processor.parse(bytes, "json");
const result = processor.validate(document.json);

if (!result.ok) {
  console.error(result.errors);
}

processor.parse gibt den erkannten Modelltyp, die OSCAL-Version und das geparste Dokument zurück. processor.validate gibt { ok, errors } zurück; Schemafeststellungen sind Ergebnisse zur Datenqualität und keine ausgelösten Ausnahmen.

Unterstützte Modelle

Das Toolkit deckt alle acht OSCAL-1.2.2-Modelle ab:

  • Catalog
  • Profile
  • Component Definition
  • System Security Plan
  • Assessment Plan
  • Assessment Results
  • Plan of Action and Milestones
  • Mapping Collection

Validierungsgrenzen

Die Validierung verwendet vorkompilierte, eval-freie JSON-Schema-Validatoren, die aus den offiziellen NIST-OSCAL-1.2.2-Schemas abgeleitet sind. Sie erkennt strukturelle Probleme wie fehlende erforderliche Eigenschaften und ungültige Typen. Sie erhebt noch keinen Anspruch auf vollständige Validierung der OSCAL-Metaschema-Einschränkungen, UUID-Eindeutigkeit, vollständige Referenzintegrität oder Profile-Auflösung.

JSON-Parsing und -Serialisierung sind bereits implementiert. Die API reserviert die Formatwerte "xml" und "yaml", doch die Verwendung eines dieser Werte löst derzeit einen OscalError mit dem Code ERR_UNSUPPORTED_FORMAT aus.

Paketoberflächen

  • @secani/oscal enthält den kuratierten stabilen Prozessor sowie APIs für Schlüsselkonvertierung, Referenzextraktion, Indizierung und Messungen.
  • @secani/oscal/testing stellt schemakonforme kompakte Fixtures und einen Fake-Prozessor für nachgelagerte Tests bereit.
  • @secani/oscal/unstable stellt sich weiterentwickelnde Registry-, Pfad- und Semantic-Graph-Hilfsfunktionen ohne Garantien zur semantischen Versionierung bereit.
  • @secani/oscal/schemas/*.json stellt die acht eingecheckten NIST-JSON-Schemas bereit.

Das Toolkit hat keine Laufzeitabhängigkeiten. Seine Validatoren werden vorab generiert und als gewöhnliches JavaScript eingecheckt. Das aktuelle Root-ESM-Bundle ist ungefähr 4.5 MB groß, weil es alle acht Validatoren enthält; Lazy Loading auf Modellebene ist eine zukünftige Optimierung.

Repository-Status

Das zukünftige Open-Source-Repository heißt secani/oscal. Es bleibt privat, daher gibt es bewusst noch keinen öffentlichen Repository-Link. Öffentliche Sichtbarkeit und npm-Veröffentlichung erfordern separate Prüfungen, nachdem Lizenzierung, Sicherheit, Provenienz, CI und Paket-Audits abgeschlossen sind.

Die separaten Projekte oscal-cli und secani/oscal-skills bleiben zukünftige Arbeiten und sind nicht im aktuellen Toolkit enthalten.