Evidencia de Puerta de Decisión + Arquitectura de Anclaje
Audience: Engineers implementing or reviewing evidence trust enforcement, Audiencia: Ingenieros que implementan o revisan la aplicación de confianza en la evidencia, la validación de firmas y el comportamiento de la política de anclaje.
Tabla de Contenidos
- Resumen Ejecutivo
- Modelo de Evidencia
- Líneas de confianza y requisitos
- Política de Confianza del Proveedor (Firmas)
- Política de Divulgación de Evidencias
- Configuración de la Política de Anclaje
- Validación de Anclaje en el Plano de Control
- Verificación de Anclaje de Runpack
- Evidencia Afirmada (Preverificación)
- Referencia Cruzada Archivo por Archivo
Resumen Ejecutivo
La puerta de decisión separa confianza (evidencia verificada vs. evidencia afirmada) de integridad (anclas y firmas). Los carriles de confianza controlan si la evidencia es elegible para la evaluación de la puerta, mientras que las políticas de anclaje y las firmas proporcionan enlaces verificables a sistemas externos. La aplicación se lleva a cabo en dos lugares:
- Control plane runtime: applies trust requirements and validates anchors Tiempo de ejecución del plano de control: aplica requisitos de confianza y valida anclas cuando está configurado.
- Verificador de Runpack: reproduce las verificaciones de políticas de anclaje fuera de línea.
La divulgación de evidencia se controla por separado en la capa de herramientas. F:crates/decision-gate-core/src/core/evidence.rs L97-L257 F:crates/decision-gate-core/src/runtime/engine.rs L511-L618 F:crates/decision-gate-core/src/runtime/engine.rs L983-L1018 F:crates/decision-gate-core/src/runtime/runpack.rs L519-L567 F:crates/decision-gate-mcp/src/tools.rs L2294-L2334
Modelo de Evidencia
Los tipos de evidencia fundamentales definen las cargas útiles canónicas y los metadatos de integridad:
EvidenceResultcarries a value, trust lane, hash, anchor, and optionalEvidenceResultlleva un valor, un canal de confianza, un hash, un ancla y una firma opcional.EvidenceAnchorcontiene un tipo de ancla y un valor de ancla codificado en JSON.EvidenceAnchorPolicyasigna proveedores a los tipos y campos de anclaje requeridos.
F:crates/decision-gate-core/src/core/evidence.rs L175-L257
Líneas de Confianza y Requisitos
Las vías de confianza son una red de dos niveles:
Verificado(predeterminado) para evidencia proporcionada por el proveedor.Afirmadopara evidencia proporcionada por el cliente.
TrustRequirement especifica el carril mínimo aceptable y se aplica por condición y puerta. Si la evidencia no cumple con el requisito, se convierte en un resultado Unknown con un error de trust_lane.
F:crates/decision-gate-core/src/core/evidence.rs L97-L141 F:crates/decision-gate-core/src/runtime/engine.rs L730-L746 F:crates/decision-gate-core/src/runtime/engine.rs L1573-L1593
La configuración del plano de control expone:
- global
trust_requirement - sobrescrituras por proveedor (a través de
provider_trust_overrides)
F:crates/decision-gate-core/src/runtime/engine.rs L111-L145
Política de Confianza del Proveedor (Firmas)
La federación de evidencia MCP aplica la política de confianza del proveedor antes de que los resultados lleguen a la evaluación del plano de control:
TrustPolicy::Auditacepta resultados no firmados.TrustPolicy::RequireSignaturerequiresEvidenceSignatureand validatesTrustPolicy::RequireSignaturerequiereEvidenceSignaturey valida las firmas ed25519 utilizando las claves públicas configuradas.
Evaluación de políticas:
- Se rechazan las firmas faltantes, los esquemas no soportados o las claves no autorizadas.
- Si falta el hash de evidencia, se calcula a partir de la carga útil canónica.
- Si el hash de evidencia está presente, debe coincidir con el hash de carga útil canónica.
F:crates/decision-gate-mcp/src/evidence.rs L122-L210 F:crates/decision-gate-mcp/src/evidence.rs L628-L701
Política de Divulgación de Evidencias
La divulgación de evidencia se aplica en el momento de evidence_query:
evidence.allow_raw_valuescontrola la divulgación global de valores en bruto.evidence.require_provider_opt_inrequiere además la opción de participación del proveedor.- Los proveedores optan por participar a través de
ProviderConfig.allow_raw.
Si no se permiten valores en bruto, la respuesta de la herramienta redacta value y content_type, pero retiene hashes y anclajes. F:crates/decision-gate-config/src/config.rs L1226-L1234 F:crates/decision-gate-mcp/src/tools.rs L2294-L2334 F:crates/decision-gate-mcp/src/evidence.rs L138-L196
Configuración de la Política de Anclaje
La configuración de la política de anclaje se expresa en la configuración de MCP como anchors.providers[{provider_id, anchor_type, required_fields}]. La configuración se valida y se convierte en el EvidenceAnchorPolicy en tiempo de ejecución utilizado por el plano de control y el verificador de runpack. Los identificadores de proveedor deben ser únicos y recortados para evitar la aplicación ambigua de anclajes. F:crates/decision-gate-config/src/config.rs L1378-L1466
Validación de Anclaje en el Plano de Control
Cuando se configura un requisito de anclaje para un proveedor:
- Los resultados de evidencia deben incluir
evidence_anchor. anchor_typedebe coincidir con el requisito.anchor_valuedebe ser un objeto JSON canónico con los campos escalares requeridos.- Gate evaluation evidence records are stored in canonical condition order to Los registros de evidencia de evaluación de puertas se almacenan en orden de condición canónica para mantener los artefactos de ejecución determinísticos a través de las ejecuciones.
Para el proveedor json incorporado, los anclajes utilizan file_path_rooted con los campos requeridos root_id y path. El valor de path se normaliza a una ruta relativa de estilo POSIX bajo la raíz configurada para mantener estables los hashes de runpack en diferentes plataformas.
Los anclajes inválidos resultan en un error de proveedor anchor_invalid y el resultado de evidencia se convierte en un resultado verificado vacío para su evaluación. F:crates/decision-gate-core/src/runtime/engine.rs L730-L755 F:crates/decision-gate-core/src/runtime/engine.rs L983-L1018
Verificación de Anclaje de Runpack
Verificaciones de ejecución de Runpack realizan comprobaciones de políticas de anclaje fuera de línea:
- Los registros de evaluación de especificaciones de escenario y de puertas se cargan desde los artefactos de runpack.
- El mapeo de condición a proveedor se deriva de la especificación.
- Los anclajes de evidencia en los registros de evaluación de puertas se validan contra la política.
Los errores se recopilan y se informan en el informe de verificación. F:crates/decision-gate-core/src/runtime/runpack.rs L519-L567 F:crates/decision-gate-core/src/runtime/runpack.rs L579-L612
Evidencia Afirmada (Preverificación)
Precheck utiliza evidencia afirmada sin contactar a los proveedores:
- Los valores de carga útil están envueltos como
EvidenceResultcon carrilAsserted. - Control plane applies trust requirements per condition/gate, which can force
El plano de control aplica requisitos de confianza por condición/puerta, lo que puede forzar la evidencia afirmada a
Desconocidodependiendo de la configuración.
F:crates/decision-gate-mcp/src/tools.rs L2663-L2707 F:crates/decision-gate-core/src/runtime/engine.rs L511-L618
Referencia Cruzada Archivo por Archivo
| Área | Archivo | Notas |
|---|---|---|
| Modelo de evidencia + carriles de confianza | crates/decision-gate-core/src/core/evidence.rs | Tipos canónicos para carriles de confianza, anclajes, políticas. |
| Aplicación de confianza + validación de anclajes | crates/decision-gate-core/src/runtime/engine.rs | Aplica requisitos de confianza y valida anclajes. |
| Verificación de anclajes de Runpack | crates/decision-gate-core/src/runtime/runpack.rs | Validación fuera de línea contra la política de anclajes. |
| Política de firma del proveedor | crates/decision-gate-mcp/src/evidence.rs | Análisis de TrustPolicy + aplicación de firma. |
| Política de divulgación de evidencia | crates/decision-gate-mcp/src/tools.rs | Redacción de evidencia en bruto para evidence_query. |
| Superficie de configuración | crates/decision-gate-config/src/config.rs | configuración de evidence.* y anchors.*. |