SecaniDocumentation
OSCAL

Boîte à outils

Aperçu du secani implémenté/oscal Boîte à outils TypeScript alors qu'elle est préparée pour l'open source.

Préparation privée : Lors de la préparation privée, la boîte à outils implémentée reste dans le secani/oscal référentiel avec visibilité privée. @secani/oscal n'est pas publié sur npm, les commandes d'installation ci-dessous sont donc des aperçus des versions futures.

@secani/oscal est une boîte à outils TypeScript indépendante du stockage pour analyser, valider et analyser structurellement les documents OSCAL 1.2.2.

Aperçu de l'installation

Ces commandes réservent le nom du package prévu. Ils ne fonctionneront pas tant que la publication npm n’aura pas été approuvée séparément.

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

Processus OSCAL JSON

L'API implémentée accepte les octets du document, détecte le modèle OSCAL à partir de sa clé racine et valide le JSON analysé par rapport au schéma officiel correspondant.

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 renvoie le type de modèle détecté, la version OSCAL et le document analysé. processor.validate retours { ok, errors }; les résultats du schéma sont des résultats de qualité des données plutôt que des exceptions levées.

Modèles pris en charge

La boîte à outils couvre les huit modèles OSCAL 1.2.2 :

  • Catalogue
  • Profil
  • Définition des composants
  • Plan de sécurité du système
  • Plan d'évaluation
  • Résultats de l'évaluation
  • Plan d'action et jalons
  • Collecte de cartographie

Limites de validation

La validation utilise des validateurs de schéma JSON précompilés et sans évaluation dérivés des schémas officiels NIST OSCAL 1.2.2. Il détecte les problèmes structurels tels que les propriétés requises manquantes et les types non valides. Il ne revendique pas encore la validation complète des contraintes de métaschéma OSCAL, l'unicité de l'UUID, l'intégrité complète des références ou la résolution de profil.

L’analyse et la sérialisation JSON sont désormais implémentées. L’API réserve les valeurs de format "xml" et "yaml", mais l’utilisation de l’une ou l’autre déclenche actuellement une OscalError avec le code ERR_UNSUPPORTED_FORMAT.

Surfaces des emballages

  • @secani/oscal contient les API de processeur stable, de conversion de clé, d'extraction de référence, d'indexation et de mesure.
  • @secani/oscal/testing fournit des appareils compacts valides pour le schéma et un faux processeur pour les tests en aval.
  • @secani/oscal/unstable expose les assistants évolutifs de registre, de chemin et de graphe sémantique sans garanties de version sémantique.
  • @secani/oscal/schemas/*.json expose les huit schémas NIST JSON archivés.

La boîte à outils n'a aucune dépendance d'exécution. Ses validateurs sont générés à l'avance et validés comme du JavaScript ordinaire. Le bundle ESM racine actuel fait environ 4,5 Mo car il comprend les huit validateurs ; Le chargement différé au niveau du modèle est une optimisation future.

Statut du référentiel

Le futur référentiel open source s'appelle secani/oscal. Il reste privé, il n'y a donc intentionnellement pas encore de lien vers un référentiel public. La visibilité publique et la publication npm nécessitent des examens distincts une fois les audits de licence, de sécurité, de provenance, de CI et de package terminés.

Le séparé oscal-cli et secani/oscal-skills les projets restent des travaux futurs et ne sont pas inclus dans la boîte à outils actuelle.