Eje 4: Técnicas
OSCAL - Open Security Controls Assessment Language
OSCAL transforma la documentación de cumplimiento de Word/Excel en formatos JSON/YAML legibles por máquina con cuatro capas:
- Catalogs - Definiciones de controles (NIST 800-53, ISO 27001, BSI IT-Grundschutz)
- Profiles - Líneas base específicas de la organización
- Implementation Layer - System Security Plans, Component Definitions
- Assessment Layer - Assessment Results, POA&M
El BSI documenta oficialmente: «OSCAL es compatible con los estándares internacionales». El GCBoK define las taxonomías de cumplimiento alemanas (GoBD, BSI, DSGVO) como catálogos OSCAL - algo que hasta ahora no existe en el mercado.
OPA / Rego - Policy as Code
Open Policy Agent con el lenguaje Rego. Las reglas de cumplimiento se implementan como código que se verifica automáticamente contra el Git-State.
VPRM - Verifiable Process Reward Model
En el contexto del GCBoK, OPA/Rego actúa como VPRM: los guardrails para agentes de IA surgen de un conjunto de reglas determinista, no del Prompt-Engineering. De este modo, los agentes de IA no se protegen mediante Prompt-Constraints, sino mediante validación de código.
Firma GPG
Cada commit de Git relevante para el cumplimiento se firma con GPG. La firma vincula:
- Identidad (GPG-Fingerprint = actor)
- Contenido (Commit-Hash = datos)
- Momento (Commit-Timestamp = cuándo)
A partir de los metadatos .v7g.md, los GPG-Fingerprints se vinculan a los V7GUIDs - las identidades permanecen a prueba de falsificación incluso cuando un agente de IA manipula la estructura semántica.
Arquitectura de keyring GPG para la trazabilidad forense
Para que las firmas GPG sigan siendo verificables a largo plazo — también años después de su creación, tras la expiración o revocación de la clave, y al reconstruir a partir de archivos git bundle/ZIP — las claves públicas deben formar parte del repositorio. El GCBoK define para ello un patrón de keyring en el repositorio:
Estructura: .gitcover/keys/
.gitcover/
├── keys/
│ ├── team-lead.asc # Öffentliche Schlüssel von Team-Leads
│ ├── service-accounts/ # CI/CD, Bots, Automation
│ └── identities/ # Personenbezogene Schlüssel (nur PII-Repos)
│ ├── person-a.asc
│ └── person-a_governikus.pdf # Identitätsnachweis pgp.governikus.de
├── trusted-keys.gpg # Gesammelter Keyring (optional, für Verifier)
└── compliance/ # GoBD/DSGVO-Dokumente
Modelo de dos niveles: TOP-Repo vs. PII-Repo
| Nivel | Repositorio | Contenido | Relevancia DSGVO |
|---|---|---|---|
| Organizativo | TOP-Repo (Tenant Organizational Platform) | Claves de Team-Leads, Service-Accounts, bots de CI/CD, ancla de confianza trusted-keys.gpg |
Sin datos personales — conforme al DSGVO |
| Personal | PII-Repo (Personal Identifiable Information) | Claves de desarrolladores, pruebas de identidad (confirmaciones de Governikus), GPG-Fingerprints personales | PII — acceso solo mediante Org-Unit-Claims (véase abajo) |
Esta separación refleja los dos niveles de responsabilidad para PII:
- Legal — nivel de tenant (entidad jurídica, p. ej. GCC, GCD, CFP)
- Organizativo — PMO/Divisions/Departments/Locations (≈ AD Organizational Unit)
Verificación aislada del keyring local
Un verificador (o un auditor 10 años después) verifica sin dependencia del keyring GPG local:
# Nur Repository-Schlüssel nutzen, lokalen Keyring ignorieren
gpg --no-default-keyring --keyring .gitcover/keys/team-lead.asc \
--verify-commit <commit-hash>
--no-default-keyring: Ignora~/.gnupg/--keyring: Utiliza exclusivamente la clave del repositorio- La clave pública estaba en el repositorio en el momento del commit → valor probatorio reconstruible forensemente
Validez temporal y ciclo de vida de las claves
La pregunta «¿Era válida la firma en el momento del commit?» se responde mediante la integración en el repositorio:
- La clave pública está presente en la Git-History del commit
- Incluso con una expiración/revocación actual de la clave: el commit demuestra que la clave era de confianza en aquel momento
git bundletransporta los repos incluidas las claves y las pruebas → unidad forense portátil, independiente de una infraestructura activa
Relevancia para la documentación de procedimientos GoBD y NIS2
- GoBD (§ 146 AO, documentación de procedimientos): La arquitectura de keyring forma parte de la documentación de procedimientos — describe cómo se generan, archivan y verifican las pruebas de identidad de forma a prueba de auditoría. El patrón de «clave en el repositorio» cumple los requisitos de GoBD de comprobabilidad e inmutabilidad de la vinculación de identidad.
- NIS2 (derechos de acceso, Art. 21): La separación TOP/PII-Repo y el control de acceso basado en Org-Units (vía OIDC-Claims
tenant_id+ Org-Unit-Claim) implementan el principio de mínimo privilegio. Solo los roles autorizados (vía Org-Unit-Claim) obtienen acceso a los PII-Repos y, con ello, a las claves personales.
Véase también: La serie de artículos «Instrucciones de procedimiento GoBD para Git» en el GCBoK (Módulo 3: Integridad criptográfica, Módulo 4: Firmas & Autenticidad) profundiza en estos temas. El proyecto de investigación GitCover.IdP (BSFZ 288-335-338/2026-1) examina la integración del IdP.
uuidV7 - UUID Version 7
UUID Version 7 compatible con RFC-4122: basada en el tiempo, ordenable, resistente a colisiones. La extensión específica de GitCover con identificadores de clase de 14 bits convierte las UUIDs en V7GUIDs (véase Conceptos).
Git como IdP - Identity Provider
Repositorios Git basados en Gitea como Single Source of Truth (SSoT) para un sistema integrado de gestión de identidades y accesos (IAM). El proyecto de investigación reconocido por el BSFZ examina si las organizaciones/equipos Git pueden representar OAuth2-Clients y permisos y gestionar >1.000 usuarios de forma eficiente.
Responsabilidad de dos niveles para PII (Legal + Organizativo)
Los datos personales (PII) están sujetos en el GitCover-Stack a una doble responsabilidad que se refleja en la arquitectura de repositorios y en los OIDC-Claims:
| Nivel | Scope | Tipo de repositorio | OIDC-Claim | Ejemplo |
|---|---|---|---|---|
| 1. Legal | Tenant (entidad jurídica) | TOP-Repo + PII-Repo | tenant_id (basado en V7GUID) |
GCC, GCD, CFP, ADA |
| 2. Organizativo | PMO / Division / Department / Location | PII-Repo (de grano fino) | org_unit_id (≈ AD Organizational Unit) |
GCC-Portfolio, GCD-IT, CFP-Sales |
- Legal (nivel de tenant): La entidad jurídica es el responsable en materia de protección de datos (Art. 4 Nr. 7 DSGVO). La
tenant_idse deriva de forma determinista de la V7GUID del directorio TOP (véase Conceptos: Registro central de tenants). - Organizativo (PMO/Org-Unit): Dentro de un tenant, varias unidades organizativas (PMOs, departamentos, ubicaciones) pueden ser responsables de forma independiente de subconjuntos de PII. Esto corresponde a la estructura de las Active-Directory-Organizational-Units. La asignación se realiza mediante el Custom Claim
org_unit_id, que en laothers.jsondel tenant se mapea a rutas de repositorio.
Jerarquía de claims en la Inlet-Pipeline
La Inlet-Pipeline (véase Procedimientos: Aislamiento de tenants lee la others.json según el User-Claim e inyecta las rutas permitidas:
{
"tenant_id": "0197a3b2-f3c0-7b00-8001-000000000042",
"org_unit_id": "ORG-1-Portfolio",
"allowed_repos": [
"TOP",
"PII/ORG-1-Portfolio"
]
}
Así, un usuario con org_unit_id = ORG-1-Portfolio obtiene acceso al PII-Repo del portfolio, pero no a PII/ORG-2-IT — incluso con el mismo tenant_id.
Véase también: El proyecto de investigación sobre GitCover.IdP se describe en Proyectos de investigación. La arquitectura de keyring (TOP vs. PII) se describe arriba bajo «Arquitectura de keyring GPG».