Eje 6: Plantillas
Plantilla de catálogo OSCAL
Borrador
El GCBoK define taxonomías de cumplimiento alemanas como catálogos OSCAL, una novedad en el mercado:
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"
Plantilla de política OPA
Borrador
Ejemplo de una política Rego para la validación de comprobantes:
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
}
Esquema V7GUID
Borrador
El esquema canónico de metadatos V7GUID:
{
"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"
}
classes uno dePERSON | INVOICE | PAYMENT | CONTRACT | ...;prev_sha256esnullpara el comprobante génesis.
Profundidad de cumplimiento → Estratificación del esquema V7GUID
Según la profundidad de integración del repositorio Git y el nivel de exigencia de cumplimiento, se necesitan diferentes esquemas JSON V7GUID. El GCBoK define una estratificación de esquemas (modelo por niveles) que está vinculada a VariantId, kind y status:
| Nivel | Exigencia de cumplimiento | Campos de esquema requeridos | VariantId |
kind |
status |
|---|---|---|---|---|---|
| T1 | GoBD/AO únicamente (mínimo) | v7guid, class, sha256, prev_sha256, gpg_fingerprint, timestamp_iso, gobd_periode |
10 (conservación durante 10 años §147 AO) |
INVOICE, RECEIPT, CONTRACT |
ACTIVE |
| T2 | PII / RGPD | T1 + tenant_id, org_unit_id, data_category (Art. 9 DSGVO), retention_legal_basis |
11 (nivel de protección del RGPD) |
PERSON, HR_DATA |
ACTIVE |
| T3 | NIS2 (infraestructuras críticas) | T2 + risk_level, incident_reporting_obligation, supply_chain_tier |
12 (clase de riesgo NIS2) |
INFRASTRUCTURE, LOG_DATA |
ACTIVE |
| T4 | ISO 27001 (completo) | T3 + control_id (Anexo A de ISO 27001), asset_classification, treatment_plan_ref |
13 (IFRS/HGB + ISO) |
POLICY, AUDIT_EVIDENCE |
ACTIVE |
Principio: “Al final solo quedan repositorios Git” — el fallback en comprobaciones/auditorías son artefactos de código + registros/diccionarios .gitcover en formato JSON/JSONL. El paquete HTML de verificación es solo presentación; la forense es el repositorio Git (véase Procedimientos: preparación para auditorías y el derivado gcbok-audit-evidence-docs/docs/02-audit-website-als-pruefungsartefakt).
Los archivos de esquema están versionados en .gitcover/schemas/ del repositorio TOP y se hacen resolubles mediante others.json.
Plantilla de contenedor DMS
El contenedor .gc.zip para GCDMS (alcance según el caso de uso):
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
Orden en el contenedor: El manifiesto (document.gc.md) ocupa el primer lugar y lleva el SHA-256 del documento original; las entradas siguen de forma determinista (manifiesto, firma, documento original, extractos, adjuntos). Así, el contenedor es legible sin registro y al mismo tiempo permanece vinculado al object_id del DMS (= docUid del sidecar).
Selección de formato según el caso de uso
| Formato | Uso |
|---|---|
.gc.json |
Legible por máquina, políticas OPA, exportación OSCAL |
.gc.md |
Hipervínculos, legible para humanos, interfaz web de Git |
.gc.yaml |
Archivo de configuración, editable por humanos |
Plantilla de sidecar de GitCover
Sidecar canónico (*.gc.md) para un documento original digital. Esquema: https://gitcover.org/schemas/v7g-sidecar-2.0.schema.json; los metadatos de la instancia siguen record-metadata-1.0.schema.json (ISO 15489).
DocID =
uuidv7(identificador de instancia) frente av7guid(identificador de clase/contexto). Ambos se incluyen en el sidecar y se enlazan mediantecomposite_key({v7guid}:{uuidv7}). Contenido mínimo:sha256del documento 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}"
}
```
Asignación de DocID: Cuando el documento se incorpora de nuevo al DMS, la herramienta de sidecar genera un UUIDv7 a partir de un argumento TimeStamp como DocID (uuidV7). La fuente predeterminada es la mtime del archivo; si el nombre del archivo o el contenido proporciona una fecha de negocio, se utiliza esta (véase Eje 5: Procedimientos).