Axe 6 : Modèles
Modèle de catalogue OSCAL
Brouillon
Le GCBoK définit des taxonomies de conformité allemandes comme catalogues OSCAL — une nouveauté sur le marché :
oscal_catalog:
groups:
- id: "gobdControls"
title: "GoBD - Nachvollziehbarkeit"
controls:
- id: "GOBD-01"
title: "Progressive Navigation"
description: "Jeden Geschäftsvorfall rückwärts verfolgbar"
- id: "bsiControls"
title: "BSI IT-Grundschutz Module"
controls:
- id: "APP.3.1.A1"
title: "Datensicherung"
- id: "dsgvoControls"
title: "DSGVO Anförderungen"
controls:
- id: "DSGVO-Art.17"
title: "Recht auf Vergessenwerden"
Modèle de politique OPA
Brouillon
Exemple d'une politique Rego pour la validation des justificatifs :
package gitcover.compliance
deny[msg] {
input.class == "INVOICE"
not input.prev_sha256
msg := "INVOICE muss prev-hash referenzieren"
}
deny[msg] {
input.class == "PAYMENT"
not input.gpg_fingerprint
msg := "PAYMENT muss GPG-signiert sein"
}
allow {
count(deny) == 0
}
Schéma V7GUID
Brouillon
Le schéma de métadonnées V7GUID canonique :
{
"v7guid": "0197a3b2-f3c0-7b00-8001-000000000042",
"class": "INVOICE",
"sha256": "7d4e2f...",
"prev_sha256": "3f2a1c...",
"gpg_fingerprint": "ABCD1234...",
"timestamp_iso": "2026-06-14T11:18:00+02:00",
"gobd_periode": "FY2026"
}
classest l'une dePERSON | INVOICE | PAYMENT | CONTRACT | ...;prev_sha256vautnullpour le justificatif de genèse.
Profondeur de conformité → hiérarchisation des schémas V7GUID
Selon la profondeur d'intégration du dépôt Git et les exigences de conformité, différents schémas JSON V7GUID sont nécessaires. Le GCBoK définit une hiérarchisation des schémas (modèle par niveaux), couplée à VariantId, kind et status :
| Niveau | Exigence de conformité | Champs de schéma requis | VariantId |
kind |
status |
|---|---|---|---|---|---|
| T1 | GoBD/AO uniquement (minimal) | v7guid, class, sha256, prev_sha256, gpg_fingerprint, timestamp_iso, gobd_periode |
10 (conservation de 10 ans §147 AO) |
INVOICE, RECEIPT, CONTRACT |
ACTIVE |
| T2 | PII / RGPD | T1 + tenant_id, org_unit_id, data_category (Art. 9 DSGVO), retention_legal_basis |
11 (niveau de protection RGPD) |
PERSON, HR_DATA |
ACTIVE |
| T3 | NIS2 (infrastructures critiques) | T2 + risk_level, incident_reporting_obligation, supply_chain_tier |
12 (classe de risque NIS2) |
INFRASTRUCTURE, LOG_DATA |
ACTIVE |
| T4 | ISO 27001 (complet) | T3 + control_id (ISO 27001 Annexe A), asset_classification, treatment_plan_ref |
13 (IFRS/HGB + ISO) |
POLICY, AUDIT_EVIDENCE |
ACTIVE |
Principe : « À la fin, seuls des dépôts Git restent » — le repli lors des contrôles/audits consiste en artefacts de code + registres/dictionnaires .gitcover au format JSON/JSONL. Le package de vérification HTML n'est que présentation ; la forensique est le dépôt Git (voir Procédures : préparation à l'audit et le dérivé gcbok-audit-evidence-docs/docs/02-audit-website-als-pruefungsartefakt).
Les fichiers de schéma sont versionnés dans .gitcover/schemas/ du dépôt TOP et sont rendus résolubles via others.json.
Modèle de conteneur DMS
Le conteneur .gc.zip pour GCDMS (ampleur selon le cas d'usage) :
document.gc.zip
├── document.gc.md # Metadaten (SHA-256 des Ur-Dokuments, docUid, v7guid, Taxonomie)
├── document.gc.sig # GPG-Signatur des Manifests
├── document.pdf # Originaldokument (Urdokument)
├── document.json # Maschinenlesbare Extrakte
├── document.xml # Maschinenlesbare Extrakte (z.B. X-Rechnung)
└── attachments/ # Anhänge
Ordre dans le conteneur : Le manifeste (document.gc.md) figure en premier et porte le SHA-256 du document original ; les entrées suivent de manière déterministe (manifeste, signature, document original, extraits, annexes). Ainsi, le conteneur est lisible sans registre et reste en même temps lié à l'object_id DMS (= docUid du sidecar).
Choix du format selon le cas d'usage
| Format | Utilisation |
|---|---|
.gc.json |
Lisible par machine, politiques OPA, export OSCAL |
.gc.md |
Hyperliens, lisible par l'humain, interface web Git |
.gc.yaml |
Fichier de configuration, modifiable par l'humain |
Modèle de sidecar GitCover
Sidecar canonique (*.gc.md) pour un document original numérique. Schéma : https://gitcover.org/schemas/v7g-sidecar-2.0.schema.json ; les métadonnées d'instance suivent record-metadata-1.0.schema.json (ISO 15489).
DocID =
uuidv7(identifiant d'instance) vsv7guid(identifiant de classe/contexte). Les deux sont portés dans le sidecar et reliés viacomposite_key({v7guid}:{uuidv7}). Contenu minimal :sha256du document original.
# GitCover Sidecar - {original_filename}
**SHA-256:** `{sha256}`
**Tenant:** {tenant}
**Kategorie:** {category}
**Sphäre:** {sphere}
**Tags:** {tags}
```json
{
"$schema": "https://gitcover.org/schemas/v7g-sidecar-2.0.schema.json",
"docUid": "{uuidv7}",
"sha256": "{sha256}",
"title": "{original_filename}",
"original_filename": "{original_filename}",
"locations": [
{ "unc_path": "./{tenant}/{path}", "from": "{YYMMDD}", "to": null, "note": "Primärspeicherort" }
],
"v7g_taxonomy": [
{ "v7guid": "{v7guid}", "taxonomy": "{tenant}/{taxonomy}", "valid_from": "{YYMMDD}", "valid_to": null }
],
"gcpn": { "prima_nota_ref": null, "journal_entry_ref": null },
"obsolescence": { "status": "active", "superseded_by": null, "last_checked_at": "{ts}", "last_checked_by": "{user}" },
"verification": { "verified_at": "{ts}", "verified_by": "auto", "method": "sha256_file", "intact": true },
"tags": ["{tag}"],
"sphere": "{sphere}"
}
```
Attribution du DocID : Lorsqu'un document est nouvellement intégré au DMS, l'outil sidecar génère une UUIDv7 à partir d'un argument d'horodatage comme DocID (uuidV7). La source par défaut est le mtime du fichier ; si le nom de fichier ou le contenu fournit une date métier, celle-ci est utilisée (voir Axe 5 : Procédures).