Informe de evidencia de cambios
Cambios fusionados
Northwind (datos de muestra) · 2 repositorios · ramas protegidas · 15 jul al 13 oct 2026
- Preparado para
- [Firma auditora]
- Repositorios
- northwind/payments-api · northwind/ledger-service
- Cambios en el alcance
- 146 pull requests fusionados en ramas protegidas y 2 pushes directos, capturados de GitHub en el momento en que ocurrieron.
- Registros
- 4.152 registros sellados: registros de cambio, eventos de cambio de control y comprobaciones de código. Firmas verificadas al generar el informe.
- Motor y conjuntos de reglas
- toevan-engine 0.9.4 · Clean Architecture 1.4.0 · Security Essentials 2.14.0
- Personas
- Mostradas como digests de sus cuentas de GitHub en los registros sellados. Las exenciones nombran a quien las solicita y a quien las aprueba.
- Generado
- 13 oct 2026, 11:42 UTC por [nombre]
- Hash del informe
- sha256:3f9a…c21e
Este informe es evidencia para que el auditor la evalúe. Toevan no emite ninguna opinión sobre si los controles están bien diseñados o funcionan con eficacia. Cada dato indica cómo se obtuvo. Los controles fuera del alcance de Toevan se enumeran en la sección de alcance y siguen siendo responsabilidad de la organización.
1. Resumen
Evidencia de proceso · cómo entraron los cambios
Evidencia de código · qué hacen los cambios
Qué se capturó
Toevan capturó las fusiones en ramas protegidas, los cambios en las reglas de revisión, los bypasses y los pushes directos de ambos repositorios tal como GitHub los informó, y selló cada uno en el momento en que ocurrió. En el periodo se fusionaron 146 pull requests y se hicieron 2 commits mediante push directo. Informado + sellado
Puntos de atención
- Dos pushes directos a payments-api/release/v1 el 19 sep, dentro de una ventana de 29 minutos en la que el requisito de revisión estaba desactivado.Proceso
- Tres pull requests fusionados sin la aprobación de alguien distinto del autor: dos en ledger-service antes de que existiera su regla de revisión, uno por bypass de administrador durante la ventana del 19 sep.Proceso
- La regla secret-detection-high falla en código de producción (1 hallazgo), amparada por una exención aprobada hasta el 20 dic.Código, Exenciones
2. Alcance, procedencia y mapeo de controles
Cómo se obtuvo cada dato
- Recalculado
- Toevan lo calculó a partir del propio código o del historial de git.
- Repítalo con las mismas entradas y obtenga el mismo resultado.
- Informado + sellado
- GitHub lo informó; Toevan lo capturó en el evento y lo firmó.
- Fíese de ello tanto como se fía de GitHub. Cualquier cambio posterior es detectable.
- Declarado + sellado
- La organización lo declaró, como un cambio en lo que se comprueba; Toevan firmó la declaración y su historial.
- Vea quién declaró qué, cuándo, y cada cambio posterior.
- Registro de Toevan, sin sellar
- Guardado en la base de datos de Toevan pero no sellado en el libro, como una exención hoy. Ninguna firma lo protege.
- Trátelo como una declaración de Toevan y pida a la organización la aprobación que hay detrás.
- Consumido
- Tomado del registro firmado de otro sistema, como la procedencia de una compilación, y enlazado por commit o digest. Planificado.
- Compruebe el registro original de forma independiente.
- No capturado
- No había una fuente fiable. Toevan no lo infiere.
- Obténgalo de la organización por otros medios.
La evidencia y los controles con los que se relaciona
| Evidencia | Controles relevantes | Obtenido |
|---|---|---|
| Aprobación, revisión independiente, aprobación sobre el commit final | DORA RTS 2024/1774 Art. 17 (planificado) · SOC 2 CC8.1 · ISO 27001 A.8.32 | |
| Checks obligatorios al fusionar; reglas de revisión vigentes; cambios de reglas y bypasses | DORA RTS 2024/1774 Art. 17 (planificado) · SOC 2 CC8.1 · ISO 27001 A.8.32 | |
| Pushes directos a ramas protegidas | SOC 2 CC8.1 · ISO 27001 A.8.4, A.8.32 | |
| Reglas de código: límites de arquitectura, codificación segura, dependencias | ISO 27001 A.8.25, A.8.28 · SOC 2 CC8.1 | |
| Exenciones y cambios de alcance | Excepciones a las reglas anteriores |
No incluido en este informe
- Revisiones de acceso, procesos de altas y bajasOrganizativo
- Monitorización en ejecución, respuesta a incidentesOrganizativo
- Riesgo de terceros de TIC, seguridad físicaOrganizativo
- Despliegues hechos fuera de GitHubOrganizativo
- Cambios hechos fuera de GitHub, como cambios directos en la base de datos o en la consolaOrganizativo
3. Evidencia de proceso
Cómo se revisaron y fusionaron los 146 pull requests fusionados en el periodo, capturado de GitHub en el momento de cada fusión.
| Comprobación | Resultado | Obtenido |
|---|---|---|
| Aprobado por alguien distinto del autor | 143 / 146 · 3 desviaciones | |
| Aprobación dada sobre el commit final | 137 / 143 aprobados · 6 aprobaron un commit anterior | |
| Checks obligatorios superados al fusionar | 146 / 146 | |
| Firmas de commits verificadas por GitHub | 144 / 146 | |
| Reglas de revisión vigentes registradas al fusionar | 146 / 146 |
Desviaciones: fusionados sin aprobación independiente
| PR | Fusionado | Autor | Regla vigente al fusionar | Registro |
|---|---|---|---|---|
| ledger-service #388 | 24 jul | 4be1…09c2 | Ninguna (regla añadida el 02 ago) | rec_51b9e20 |
| ledger-service #391 | 29 jul | c58f…71d0 | Ninguna (regla añadida el 02 ago) | rec_6e07a3d |
| payments-api #1903 | 19 sep 14:12 | 2a6e…f915 | Desactivada de 14:02 a 14:31 (admin) | rec_0c88f14 |
Cambios en los propios controles
| Cuándo (UTC) | Cambio | Por | Registro |
|---|---|---|---|
| 02 ago 09:14 | Regla de revisión aplicada a ledger-service: 2 aprobaciones, checks obligatorios | 9d07…e3a4 | rec_8a2f61c |
| 19 sep 14:02 | Requisito de revisión desactivado en payments-api/release/* | 2a6e…f915 | rec_3f10b9a |
| 19 sep 14:31 | Requisito de revisión reactivado | 2a6e…f915 | rec_3f10c02 |
Pushes directos sin pull request
| Cuándo (UTC) | Rama | Commit | Por | Registro |
|---|---|---|---|---|
| 19 sep 14:09 | payments-api/release/v1 | 7c1e0a2 | 2a6e…f915 | rec_7c1e0a2 |
| 19 sep 14:22 | payments-api/release/v1 | 91d4b3f | 2a6e…f915 | rec_91d4b3f |
Los cambios de control y los pushes directos se capturan como eventos cuando ocurren, así que un hueco entre instantáneas no pasa inadvertido. Las personas se muestran como digests de sus cuentas de GitHub; la independencia se calcula a partir de los ids de cuenta. Informado + sellado
4. Evidencia de código
Lo que hace el código, comprobado leyendo el propio código en la versión exacta fusionada. Las reglas marcadas como con hallazgos se aplican al código de producción; la documentación y los fixtures de prueba quedan fuera del alcance (véase Exenciones).
Clean Architecture 1.4.0 · reglas de diseño
| Regla | Qué comprueba | Última release | Hallazgos |
|---|---|---|---|
| layer-dependency-handlers-to-db | Los controladores de peticiones nunca llaman directamente a la base de datos | Sin hallazgos | 0 |
| service-boundaries | Los servicios se comunican entre sí solo a través de sus interfaces públicas | Sin hallazgos | 0 |
| role-placement-policy | Las abstracciones y sus implementaciones están en las capas que asigna la arquitectura | Sin hallazgos | 0 |
| layer-dependency-policy | Una dependencia entre capas solo se permite donde la política la enumera | Sin hallazgos | 0 |
Security Essentials 2.14.0 · codificación segura
| Regla | Qué comprueba | Última release | Hallazgos |
|---|---|---|---|
| secret-detection-high | Sin credenciales de alta confianza escritas en el código fuente ni en la configuración | Con hallazgos | 1 · exención |
| no-committed-secret-files | Sin .env, claves privadas ni keystores confirmados | Sin hallazgos | 0 |
| vulnerable-dependency | Ninguna dependencia con una vulnerabilidad alta o crítica conocida (OSV.dev) | Sin hallazgos | 0 |
| encryption-at-rest | Almacenamiento y conexiones a bases de datos cifrados | Sin hallazgos | 0 |
| iac-network-segmentation | Ninguna exposición pública de servicios internos | Sin hallazgos | 0 |
| iac-encryption-policy | Opciones de cifrado de almacenamiento activadas en el código de infraestructura | Sin hallazgos | 0 |
| iac-access-control | Sin políticas de acceso con comodines | Sin hallazgos | 0 |
| sensitive-unsafe-log-flow | Los datos sensibles no llegan a los destinos de logging | Sin hallazgos | 0 |
Hasta dónde llegó el análisis
| Repositorio | Cobertura en la última release | Gate | Ejecuciones por debajo del gate en el periodo |
|---|---|---|---|
| payments-api | 97,9 % | 95 % | 0 |
| ledger-service | 96,6 % | 95 % | 0 |
La cobertura es la proporción de los archivos fuente de producción del repositorio que el índice de código analizó en el commit indexado. Por debajo del gate, una ejecución se señala en lugar de registrarse como sin hallazgos. Las versiones del motor y del conjunto de reglas quedan en cada registro, así que cualquier resultado se puede repetir. Recalculado
5. Exenciones y cambios de alcance
Cada decisión que cambió lo que se comprobaba o aceptó una desviación conocida.
| Fecha | Cambio | Solicitada · aprobada | Motivo | Registro |
|---|---|---|---|---|
| 20 sep | Exención: secret-detection-high, payments-api/config/sandbox.yaml (archivo exacto), caduca el 20 dic | c58f…71d0 · 4be1…09c2 | Clave de sandbox sin acceso a producción; rotación programada | rec_b30e7c5 |
Ninguna exención caducó ni se revocó en el periodo. Quien solicita y quien aprueba son cuentas distintas en cada entrada. Las exenciones son registros de Toevan que no se sellan en el libro. Registro de Toevan, sin sellar
Versiones de conjuntos de reglas usadas en el periodo
| Conjunto de reglas | Versión | Desde | Cambio |
|---|---|---|---|
| Clean Architecture | 1.4.0 | 15 jul (todo el periodo) | Sin cambios |
| Security Essentials | 2.13.0 | 15 jul | Sin cambios |
| Security Essentials | 2.14.0 | 12 ago | Reglas actualizadas por Toevan |
6. Registros de cambio
Un cambio completo, tal como lo ve el auditor al muestrear. Todos los registros están en la exportación CSV, y cada sobre firmado está en la rama de evidencia del repositorio de la organización.
rec_5b81d4eEl cambio
- Pull request
- payments-api #1921 · Add tenant check to refund handler
- Informado + sellado
- Autor · fusionado por
- 4be1…09c2 · 9d07…e3a4 · 13 oct 2026, 10:41 UTC en main
- Informado + sellado
- Commit de fusión
- 5b81d4e
- Informado + sellado
- Desplegado en producción
- 13 oct 2026, 11:20 UTC · producción (marca de GitHub) · rec_9e41b07
- Informado + sellado
Evidencia de proceso
- Aprobaciones
- 9d07…e3a4, c58f…71d0 · ambas sobre el commit final e81b2d0
- Informado + sellado
- Independiente del autor
- Sí, por id de cuenta de GitHub
- Recalculado
- Checks obligatorios
- ci/test ✓ · ci/lint ✓ · toevan/gate ✓
- Informado + sellado
- Reglas vigentes
- main-protection: 2 aprobaciones, checks obligatorios, commits firmados
- Informado + sellado
- Firma del commit
- Verificada por GitHub
- Informado + sellado
Evidencia de código
- Reglas de diseño
- 4 / 4 sin hallazgos
- Recalculado
- Codificación segura
- 7 / 8 sin hallazgos · secret-detection-high bajo la exención rec_b30e7c5
- Recalculado
- Cobertura · motor
- 98,1 % (gate 95 %) · toevan-engine 0.9.4
- Recalculado
Camino a producciónPlanificado
- Copiado a la release
- Asignado al original revisado por contenido
- Recalculado
Sello
- Firma
- ECDSA P-256 · sobre DSSE · keyid 8c1f…e0a2
- Registro anterior
- rec_b7e21f0
- Anclaje público
- Registro público Rekor de Sigstore · integrado, voluntario por organización
Más registros (muestra)
| Registro | Cambio | Aprobación independiente | Reglas de código | Sellado (UTC) |
|---|---|---|---|---|
| rec_b7e21f0 | payments-api #1918 | Sí | 11 / 12 · exención | 13 oct 09:58 |
| rec_9d41e02 | ledger-service #412 | Sí | 12 / 12 | 09 oct 16:21 |
| rec_0c88f14 | payments-api #1903 | No · bypass de admin | 12 / 12 | 19 sep 14:12 |
| rec_7c1e0a2 | push directo 7c1e0a2 | No · sin PR | 12 / 12 | 19 sep 14:09 |
7. Cómo comprobar este informe
No necesita confiar en Toevan ni en la organización. Elija la ruta que se ajuste a su función. Solo la tercera necesita herramientas.
| Comprobación | Qué demuestra | Qué no demuestra |
|---|---|---|
| El registro es genuino y no ha cambiado | El registro se firmó con la clave publicada de Toevan y no se ha alterado desde entonces. La cadena de hashes muestra que no se eliminó ninguno. | Que los datos que contiene sean correctos: las dos comprobaciones siguientes lo cubren. |
| La aprobación fue independiente | Quien aprueba y el autor son cuentas de GitHub distintas, recalculado a partir de los ids de cuenta del registro. | Que la revisión en sí fuera adecuada. |
| El resultado de código es reproducible | El mismo commit, la misma versión del motor y la misma versión del conjunto de reglas dan el mismo resultado. | Que las reglas abarquen todos los riesgos del código. |
En la app de la organización
Acceso de auditor de solo lectura, sin acceso al repositorio
- La organización le invita con el rol de auditor: acceso de solo lectura a la lista de evidencias, las exportaciones y los informes.
- Verificar ahora vuelve a comprobar en la app todo el libro, las firmas y las pruebas de cualquier log de transparencia.
- No abre nada más: los repositorios, el código y los hallazgos se rechazan.
Vea cómo lo ejecuta la organización
Pantalla compartida o in situ
- Usted elige las muestras durante la sesión; un ingeniero ejecuta las comprobaciones mientras usted observa.
- Verificación de cada registro muestreado: cadena, firma, sin cambios.
- Cuentas de autor y de aprobador de cada muestra, comparadas en pantalla.
Ejecútelo usted mismo
Especialistas en auditoría de TI con acceso de lectura temporal
- Use git, openssl y el comando toevan, que Toevan facilita a petición. No hace falta una cuenta de Toevan.
- Compruebe que las puntas de rama de una copia coinciden con las puntas registradas en el informe.
- Ejecute los comandos del apéndice y compare con el informe.
8. Ampliaciones planificadasPlanificado
Capas posteriores de la cadena de evidencia. No están en v1.4.0 y nada de este informe depende de ellas. Cada una indica cómo se obtendrán sus datos.
Ramas de producción designadas (v1.4.1)
Ramas que la organización designa como producción, como una rama de release, cada designación declarada y sellada con cada cambio posterior. Cada una recibe la misma población que la rama por defecto: cada commit enumerado directamente desde git y asignado a un registro o señalado.
Correcciones copiadas asignadas por contenido
Una corrección revisada en main y copiada a una rama de release recibe un nuevo ID de commit. Toevan la asignará al original revisado por contenido (git patch-id) y señalará las copias cuyo contenido cambió.
Apéndice · Comandos para revisores técnicos
Los comandos que un ingeniero ejecuta por usted, o que usted ejecuta por su cuenta.
Compruebe que un registro es genuino y no ha cambiado
$ openssl dgst -sha256 -verify toevan.pub \
-signature sig.der \
pae.bin
Verified OK
$ toevan audit verify --path evidence-clone --pub-key toevan.pub
✓ chain intact · 4,152 records
✓ signatures verify under the published keyLos dos archivos salen del sobre DSSE del registro con las líneas sed y printf que imprime la rama de evidencias: la firma y los bytes exactos que se firmaron. Espere “Verified OK” en cada registro que compruebe. Cualquier fallo significa que el registro se alteró o no se firmó con la clave publicada.