Validación de pruebas
En la arquitectura DevSecOps, las pruebas recopiladas durante la canalización de CI deben validarse antes de la implantación para garantizar que los activos cumplen los requisitos de conformidad. Este proceso de validación actúa como una puerta de calidad, impidiendo que los activos no conformes se desplieguen en entornos de fase o producción.
La recopilación de pruebas es un aspecto esencial de la arquitectura de referencia DevSecOps:
- El proceso de IC recopila pruebas de todas las exploraciones o pasos realizados en los activos
- El canal de CD despliega los activos producidos por el canal de CI
- La canalización CC escanea los activos desplegados por la canalización CD
La validación de pruebas admite dos modos de funcionamiento:
- Uso del modo de compuerta por defecto
- Utilización de un archivo de configuración
Modo de compuerta por defecto
Por defecto, el despliegue se bloquea si alguna prueba se encuentra en uno de los siguientes estados:
- Pendiente- La recogida de pruebas está en curso
- Fallo- No se han recogido pruebas o no se ha superado el control de conformidad
Este modo proporciona un control estricto para garantizar que todas las pruebas recopiladas se encuentran en un estado satisfactorio antes de proceder al despliegue.
Modo de archivo de configuración
El modo de archivo de configuración ofrece un marco flexible y personalizable para la validación de pruebas mediante un archivo de configuración específico. Este modo te permite:
- Definir los requisitos específicos de las pruebas por entorno (dev, stage, prod)
- Establezca niveles de declaración de pruebas para controlar el comportamiento del despliegue:
recommendedrequiredrequired_if_present
- Configurar diferentes reglas de validación para diferentes tipos de activos (como imágenes, commits o artefactos)
- Controlar cómo se evalúan las pruebas de múltiples entornos durante la promoción
Ahora, el modo de archivo de configuración también admite la evaluación mediante políticas de OPA (Open Policy Agent). Para obtener más información, consulta « Control de la implementación mediante OPA ».
Comprender los niveles de declaración de las pruebas
1. Modo recomendado:
Cuando las comprobaciones de cumplimiento se marcan como "recomendadas", sirven como advertencias más que como bloqueos. Es decir:
- La ejecución del pipeline continúa aunque fallen las comprobaciones
- La canalización proporciona visibilidad del estado de cumplimiento pero no impone el fallo automático
- Usted es responsable de investigar y resolver todos los problemas señalados
- Todas las comprobaciones de conformidad que fallen o falten deben abordarse y solucionarse durante el proceso de IC
Este enfoque hace hincapié en un modelo de responsabilidad compartida: la canalización proporciona visibilidad de cumplimiento y recomendaciones, pero los equipos deben garantizar activamente que sus procesos de CI generan las pruebas necesarias y abordan cualquier laguna antes del despliegue en producción.
2. Modo requerido:
Las pruebas deben estar presentes en success state. El despliegue se bloquea si faltan pruebas, están pendientes o han fallado.
3. Obligatorio si el modo está presente:
Las pruebas deben estar en success si existen. Este modo:
- Falla sólo si el estado de las pruebas es
failure - Pasa si las pruebas son
success,pending, omissing - Útil para exploraciones opcionales que deben pasar cuando se ejecutan
Agregación de pruebas
La agregación de pruebas es el proceso de recopilación y evaluación de pruebas de conformidad en varios entornos de servicio (desarrollo, fase, producción) para determinar la conformidad general de la aplicación. Durante las ejecuciones del proceso CI/CD, varias herramientas de cumplimiento recopilan pruebas de diferentes tipos de activos (imágenes, confirmaciones, artefactos). Las pruebas se rastrean por separado para cada entorno de servicio, y el sistema agrega los resultados basándose en reglas definidas en su archivo de configuración. El estado de cumplimiento global se determina evaluando todas las pruebas recopiladas con respecto a los requisitos configurados.
Ventajas principales:
- Validación específica del entorno: Diferentes entornos pueden tener diferentes requisitos de pruebas (por ejemplo, stage puede requerir menos comprobaciones que prod)
- Configuración flexible: Personalice qué tipos de pruebas son necesarias, recomendadas o condicionalmente necesarias para cada entorno
- Bloqueo de promociones: Bloquea los despliegues a producción si faltan las pruebas requeridas o fallan en entornos anteriores
- Registro de auditoría: Mantenga un historial de pruebas completo en todos los entornos para la elaboración de informes de cumplimiento de normativas
El siguiente diagrama ilustra cómo fluyen las pruebas a través de los entornos y cómo la agregación determina la preparación para el despliegue:
Secciones del archivo de configuración
Controles previos al despliegue:
- Validar las pruebas producidas por el proceso de IC
- Despliegue de puertas basado en estas comprobaciones
- Autorización automática de la solicitud de cambio si se superan todas las comprobaciones
- Bloqueo de la implantación si fallan las comprobaciones (excepto en el caso de las solicitudes de cambio de
emergency) - Añadir el archivo Config como parte de la solicitud de cambio
Controles posteriores al despliegue:
- Validar las pruebas producidas por el proceso de DC
- Evalúe la canalización basándose en estas comprobaciones
Estructura de las reglas del archivo de configuración
El archivo de configuración utiliza la siguiente estructura JSON para definir las reglas de validación. Cada tipo de prueba puede tener múltiples reglas basadas en tipos de activos y entornos:
Estructura:
- ID del tipo de prueba- Ejemplo:
com.ibm.static-scan- reglas
- Tipo de activo- Ejemplos:
image,commit,artifact - source_environments- Dónde se originan las pruebas
- name- Nombre del entorno (por ejemplo,
ci-pipeline,stage,prod) - región- Región geográfica (opcional)
- name- Nombre del entorno (por ejemplo,
- target_environments- Dónde se validan las pruebas
- name- Nombre del entorno (por ejemplo,
stage,prod) - región- Región geográfica (opcional)
- name- Nombre del entorno (por ejemplo,
- requerido- Las pruebas deben estar presentes en el estado
success; bloquea el despliegue si falta, está pendiente o ha fallado- Herramienta- Tipo de herramienta para la recogida de pruebas (por ejemplo,
SonarQube,owasp-zap,*)
- Herramienta- Tipo de herramienta para la recogida de pruebas (por ejemplo,
- required_if_present- La prueba debe estar en estado
successsi existe; falla sólo en estadofailure; pasa sisuccess,pending, omissing- Herramienta- Tipo de herramienta para la recogida de pruebas (por ejemplo,
SonarQube,owasp-zap,*)
- Herramienta- Tipo de herramienta para la recogida de pruebas (por ejemplo,
- recomendado- El oleoducto registra avisos si faltan pruebas/están pendientes/fallan; no bloquea la implantación
- Herramienta- Tipo de herramienta para la recogida de pruebas (por ejemplo,
SonarQube,owasp-zap,*)
- Herramienta- Tipo de herramienta para la recogida de pruebas (por ejemplo,
Las pruebas recopiladas en el canal CI deben tener su campo de origen establecido en ci-pipeline en el archivo de configuración.
Para obtener explicaciones detalladas sobre los niveles de declaración de pruebas (required, required_if_present, recommended), consulte la sección Config file mode.
Validación de pruebas mediante fichero de configuración
Para implementar el modo de archivo de configuración en su cadena de herramientas, siga estos pasos de configuración:
Paso 1: Activar la validación de pruebas
En las propiedades de su entorno de canalización de CD y CC, establezca la siguiente variable para activar la función de validación de pruebas en sus canalizaciones de despliegue:
opt-in-evidence-checks=1
Paso 2: Configurar la ruta del archivo de validación
Establezca la ruta del archivo de configuración en pipeline-config-repo:
evidence-checks-config-path=validation.json
Si no se define evidence-checks-config-path, el sistema busca automáticamente un archivo con el nombre <region>.<target>.validation.json, <target>.validation.json, o validation.json en el pipeline-config-repo.
Paso 3: Comprobar la configuración
Una vez que la canalización esté en marcha, compruebe que la validación de pruebas basada en el archivo de configuración está activada siguiendo estos pasos:
- Acceso a la canalización- Navegue hasta la canalización de CD específica asociada a su cambio
- Localizar tarea- Busque la tarea etiquetada
prod-change-requesty seleccione el pasochange-request - Revisar tablas- Localice dos tablas críticas buscando estas palabras clave:
- Tabla de alcance de los activos: Búsqueda de
Current pipeline scope(primera tabla) - Tabla de comprobación de pruebas: Búsqueda de
PRE-DEPLOYMENT(segunda tabla)
- Tabla de alcance de los activos: Búsqueda de
Si puede ver estas tablas, confirma que la validación de pruebas basada en el archivo de configuración está activada.
Nota: La evaluación de la tubería también se producirá cuando la comprobación esté activada en las tuberías CD y CC, utilizando el archivo de configuración.
Varias topologías de despliegue
Los siguientes ejemplos demuestran cómo funciona la validación de pruebas en diferentes topologías de despliegue. Cada topología muestra cómo las pruebas recogidas en un entorno se validan al pasar a entornos posteriores.
Entornos de servicio:
masterodev- Desarrollostage- Preproducción (recientemente apoyada)prod- Producción
Promoción de master a prod
{: caption="Caso de uso 1. Promoción de master a prod "caption-side="abajo"}
Inmuebles en Manual Promotion Trigger y Manual CD Trigger
| Nombre | valor |
|---|---|
source-environment |
master |
target-environment |
prod |
target-environment-purpose |
production |
Ejemplo de regla de configuración:
{
"evidence_type_id": "com.ibm.acceptance_tests",
"rules": [
{
"asset_type": "image",
"source_environments": [
{
"name": "ci-pipeline"
}
],
"target_environments": [
{
"name": "prod"
}
],
"required": [],
"required_if_present": [
{
"name": "tool",
"values": [
"*"
],
"description": "Acceptance tests must pass if they are run"
}
],
"recommended": []
}
]
}
Promoción de master a stage y luego a prod
: caption="Caso de uso 2. Promoción de master a stage a prod "caption-side="abajo"}
Propiedades para los entornos « Manual Promotion Trigger » y « Manual CD Trigger » stage
| Nombre | valor |
|---|---|
source-environment |
master |
target-environment |
stage |
target-environment-purpose |
pre_prod |
Propiedades para los entornos « Manual Promotion Trigger » y « Manual CD Trigger » prod
| Nombre | valor |
|---|---|
source-environment |
stage |
target-environment |
prod |
target-environment-purpose |
production |
Ejemplo de regla de configuración:
{
"evidence_type_id": "com.ibm.acceptance_tests",
"rules": [
{
"asset_type": "image",
"source_environments": [
{
"name": "ci-pipeline"
},
{
"name": "stage"
}
],
"target_environments": [
{
"name": "stage"
},
{
"name": "prod"
}
],
"required": [],
"required_if_present": [
{
"name": "tool",
"values": [
"*"
],
"description": "Acceptance tests must pass if they are run"
}
],
"recommended": []
}
]
}
Promoción de master a stage(us-east) a stage(us-south) y luego a prod(us-south)
{: caption="Caso de uso 3. Promoción de master a stage(us-east) a stage(us-south) y luego a prod(us-south) "caption-side="abajo"}
Propiedades para los entornos « Manual Promotion Trigger » y « Manual CD Trigger » stage(us-east)
| Nombre | valor |
|---|---|
source-environment |
master |
target-environment |
stage |
target-environment-purpose |
pre_prod |
region |
us-east |
Propiedades para los entornos « Manual Promotion Trigger » y « Manual CD Trigger » stage(us-south)
| Nombre | valor |
|---|---|
source-environment |
master |
target-environment |
stage |
target-environment-purpose |
pre_prod |
region |
us-south |
Propiedades para los entornos « Manual Promotion Trigger » y « Manual CD Trigger » prod(us-south)
| Nombre | valor |
|---|---|
source-environment |
master |
target-environment |
stage |
target-environment-purpose |
production |
region |
us-south |
source-regions |
us-south |
Ejemplo de regla de configuración:
{
"evidence_type_id": "com.ibm.acceptance_tests",
"rules": [
{
"asset_type": "image",
"source_environments": [
{
"name": "ci-pipeline"
},
{
"name": "stage",
"region": "us-south"
}
],
"target_environments": [
{
"name": "stage",
"region": "us-south"
},
{
"name": "stage",
"region": "us-east"
},
{
"name": "prod",
"region": "us-south"
}
],
"required": [],
"required_if_present": [
{
"name": "tool",
"values": [
"*"
],
"description": "Acceptance tests must pass if they are run"
}
],
"recommended": []
}
]
}
Valores por defecto de la herramienta para las etapas DevSecOps
Los distintos tipos de activos (como imágenes de contenedores, commits de código fuente o artefactos de despliegue) requieren distintos tipos de pruebas. El archivo de configuración permite especificar qué tipos de pruebas deben recopilarse para cada tipo de activo, y el sistema valida que las pruebas adecuadas hayan sido recopiladas por las herramientas correspondientes.
| ID de tipo de pruebas | Herramienta soportada predeterminada | Tipo de artefacto |
|---|---|---|
com.ibm.branch_protection |
cocoa-branch-protection |
repo (confirmación) |
com.ibm.unit_tests |
jest |
repo (confirmación) |
com.ibm.detect_secrets |
detect-secrets |
repo (confirmación) |
com.ibm.code_vulnerability_scan |
Para aplicaciones: cra-tf, cra, mendPara IaC: tfsec, checkov |
repo (confirmar) |
com.ibm.code_bom_check |
cra-bom, mend-bom |
repo (confirmar) |
com.ibm.code_cis_check |
cra-cis |
repo (confirmar) |
com.ibm.peer_review |
peer-review |
repo (confirmar) |
com.ibm.static_scan |
Para aplicaciones: sonarqube, gosecPara IaC: terraform-fmt, terraform-validate, tflint |
repo (confirmar) |
com.ibm.cloud.image_signing |
artifact-signing |
Artefacto (imagen) |
com.ibm.acceptance_tests |
jest |
Artefacto (timón, imagen o carta) |
com.ibm.dynamic_scan |
owasp-zap, owasp-zap-ui |
Artefacto (imagen) |
com.ibm.cloud.image_vulnerability_scan |
va, sysdig, xray |
Artefacto |
com.ibm.prod_change_request |
gitlab |
Artefacto (timón, imagen o carta) |
com.ibm.close_change_request |
gitlab |
Artefacto (timón, imagen o carta) |
| com.ibm.cloud.slsa | tekton-chains | Artefacto (casco, imagen o carta) |
Preguntas más frecuentes
Mi despliegue está bloqueado. ¿Cómo puedo averiguar por qué?
Si su despliegue está bloqueado, siga estos pasos para identificar el problema:
- Acceso a la canalización- Navegue hasta la canalización de CD específica asociada a su cambio
- Localizar tarea- Busque la tarea etiquetada
prod-change-requesty seleccione el pasochange-request - Revisar tablas- Localice dos tablas críticas buscando estas palabras clave:
- Tabla de alcance de los activos: Búsqueda de
Current pipeline scope(primera tabla) - Tabla de comprobación de pruebas: Búsqueda de
PRE-DEPLOYMENT(segunda tabla)
- Tabla de alcance de los activos: Búsqueda de
La Tabla de Comprobación de Pruebas muestra qué elementos de prueba son missing o failed, provocando el bloqueo de su despliegue.
Comprender la tabla de comprobación de pruebas
La tabla de comprobación de pruebas muestra el estado de validación de las pruebas de cada activo. Comprender su estructura le ayudará a solucionar los problemas de cumplimiento.
Estructura de la tabla de activos:
- Columna ID: Clave primaria que identifica cada activo
- Full_id: Id. completo del activo.
- tipo: Tipo del activo
- Columna URI: El activo real (imagen, artefacto, etc.) que se está validando
- Relación: El ID del activo sirve como clave externa (
AssetId) en la tabla de comprobación de pruebas
Estructura de la tabla de comprobación de pruebas:
- AssetId Columna: clave externa que identifica cada activo
- EvidenceTypeId: Especifica qué evidencia de cumplimiento se requiere (por ejemplo, escaneo de vulnerabilidades, pruebas unitarias, revisión por pares)
- Origen de las pruebas: indica de dónde deben proceder (normalmente
ci-pipeline) - Estado: Muestra si las pruebas están presentes, faltan o han fallado para cada activo
Estructura de la tabla resumen de pruebas:
Esta tabla muestra el resumen de pruebas de conformidad de todos los activos y muestra cuántas pruebas faltan, se han superado, han fallado o están pendientes.
¿Cómo se arreglan las pruebas que faltan o fallan?
Una vez identificadas las pruebas que faltan o fallan en la tabla de comprobación de pruebas, utilice este árbol de decisión para resolver el problema. Obsérvese el tipo de prueba específico (por ejemplo, com.ibm.static_scan)
y el tipo de activo (por ejemplo, image, commit).
Pregunta: "¿He configurado mi tubería de CI para recoger [el tipo de prueba] para el [tipo de activo]?"
Si es NO (no lo ha cobrado):
- Pregunte: "¿Es éste un requisito de cumplimiento válido para mi servicio?"
- SÍ, es válido: Implemente la recopilación de pruebas en su proceso de IC
- Añadir las herramientas de exploración o scripts necesarios
- Configurar mecanismos adecuados de notificación de pruebas
- Garantizar que las pruebas están vinculadas al activo correcto
- Consulte la Guía de recogida de pruebas de bienes para más detalles sobre su aplicación
- NO, no es aplicable: Documentar la justificación y escalar
- Póngase en contacto con su punto focal de seguridad
- Explique por qué esta comprobación no se aplica a su servicio
- Proporcionar una justificación clara
- Elimine la comprobación de su archivo de configuración tras la aprobación
Si la respuesta es SÍ (ya ha recogido estas pruebas anteriormente):
- Investiga por qué aparece como ausente en la Tabla de Comprobación de Pruebas
- Posibles problemas a comprobar:
- ¿Se están generando correctamente las pruebas en su canal de CI?
- ¿Se notifica al lugar correcto?
- ¿Está el identificador de activos correctamente vinculado a las pruebas?
- ¿Existen problemas de sincronización entre los procesos de CI y CD?
- ¿Es compatible el formato de las pruebas con los requisitos de validación?
- Comprobación de los registros de canalización para detectar mensajes de error relacionados con la recogida de pruebas o la elaboración de informes
Referencia
Archivo de configuración de ejemplo
{
"version": "2.0",
"pre-deployment": [
{
"evidence_type_id": "com.ibm.prod_change_request",
"rules": [
{
"asset_type": "image",
"source_environments": [
{
"name": "stage"
}
],
"target_environments": [
{
"name": "stage"
},
{
"name": "prod"
}
],
"required": [],
"required_if_present": [
{
"name": "tool",
"values": [
"*"
],
"description": "Change request must be successful if present"
}
],
"recommended": []
}
]
},
{
"evidence_type_id": "com.ibm.acceptance_tests",
"rules": [
{
"asset_type": "commit",
"source_environments": [
{
"name": "ci-pipeline"
},
{
"name": "stage"
},
{
"name": "prod"
}
],
"target_environments": [
{
"name": "stage"
},
{
"name": "prod"
}
],
"required": [],
"required_if_present": [
{
"name": "tool",
"values": [
"*"
],
"description": "Acceptance tests must pass if they are run"
}
],
"recommended": []
},
{
"asset_type": "image",
"source_environments": [
{
"name": "ci-pipeline"
}
],
"target_environments": [
{
"name": "stage"
},
{
"name": "prod"
}
],
"required": [],
"required_if_present": [
{
"name": "tool",
"values": [
"*"
],
"description": "Acceptance tests must pass if they are run"
}
],
"recommended": []
}
]
},
{
"evidence_type_id": "com.ibm.branch_protection",
"rules": [
{
"asset_type": "commit",
"source_environments": [
{
"name": "ci-pipeline"
}
],
"target_environments": [
{
"name": "stage"
},
{
"name": "prod"
}
],
"required": [],
"required_if_present": [
{
"name": "tool",
"values": [
"*"
],
"description": "Branch protection must be successful if present"
}
],
"recommended": []
}
]
},
{
"evidence_type_id": "com.ibm.cloud.slsa",
"rules": [
{
"asset_type": "image",
"source_environments": [
{
"name": "ci-pipeline"
}
],
"target_environments": [
{
"name": "stage"
},
{
"name": "prod"
}
],
"required": [],
"required_if_present": [
{
"name": "tool",
"values": [
"*"
],
"description": "SLSA attestation must be successful if present"
}
],
"recommended": []
}
]
},
{
"evidence_type_id": "com.ibm.dynamic_scan",
"rules": [
{
"asset_type": "image",
"source_environments": [
{
"name": "ci-pipeline"
}
],
"target_environments": [
{
"name": "stage"
},
{
"name": "prod"
}
],
"required": [],
"required_if_present": [
{
"name": "tool",
"values": [
"owasp-zap"
],
"description": "Dynamic scan must pass if OWASP ZAP is run"
}
],
"recommended": [
{
"name": "tool",
"values": [
"*"
],
"description": "Other dynamic scan tools are recommended"
}
]
}
]
},
{
"evidence_type_id": "com.ibm.cloud.verify_signature",
"rules": [
{
"asset_type": "image",
"source_environments": [
{
"name": "stage"
},
{
"name": "prod"
}
],
"target_environments": [
{
"name": "stage"
},
{
"name": "prod"
}
],
"required": [],
"required_if_present": [
{
"name": "tool",
"values": [
"*"
],
"description": "Signature verification must pass if present"
}
],
"recommended": []
}
]
},
{
"evidence_type_id": "com.ibm.cloud.image_vulnerability_scan",
"rules": [
{
"asset_type": "image",
"source_environments": [
{
"name": "ci-pipeline"
}
],
"target_environments": [
{
"name": "stage"
},
{
"name": "prod"
}
],
"required": [],
"required_if_present": [
{
"name": "tool",
"values": [
"*"
],
"description": "Image vulnerability scan must pass if run"
}
],
"recommended": []
}
]
},
{
"evidence_type_id": "com.ibm.peer_review",
"rules": [
{
"asset_type": "commit",
"source_environments": [
{
"name": "stage"
},
{
"name": "prod"
}
],
"target_environments": [
{
"name": "stage"
},
{
"name": "prod"
}
],
"required": [],
"required_if_present": [
{
"name": "tool",
"values": [
"*"
],
"description": "Peer review must be successful if present"
}
],
"recommended": []
}
]
},
{
"evidence_type_id": "com.ibm.unit_tests",
"rules": [
{
"asset_type": "commit",
"source_environments": [
{
"name": "ci-pipeline"
}
],
"target_environments": [
{
"name": "stage"
},
{
"name": "prod"
}
],
"required": [],
"required_if_present": [
{
"name": "tool",
"values": [
"*"
],
"description": "Unit tests must pass if they are run"
}
],
"recommended": []
}
]
},
{
"evidence_type_id": "com.ibm.static_scan",
"rules": [
{
"asset_type": "commit",
"source_environments": [
{
"name": "ci-pipeline"
}
],
"target_environments": [
{
"name": "stage"
},
{
"name": "prod"
}
],
"required": [],
"required_if_present": [
{
"name": "tool",
"values": [
"*"
],
"description": "Static scan must pass if run"
}
],
"recommended": []
}
]
},
{
"evidence_type_id": "com.ibm.detect_secrets",
"rules": [
{
"asset_type": "commit",
"source_environments": [
{
"name": "ci-pipeline"
}
],
"target_environments": [
{
"name": "stage"
},
{
"name": "prod"
}
],
"required": [],
"required_if_present": [
{
"name": "tool",
"values": [
"*"
],
"description": "Detect secrets scan must pass if run"
}
],
"recommended": []
}
]
},
{
"evidence_type_id": "com.ibm.code_vulnerability_scan",
"rules": [
{
"asset_type": "commit",
"source_environments": [
{
"name": "ci-pipeline"
}
],
"target_environments": [
{
"name": "stage"
},
{
"name": "prod"
}
],
"required": [],
"required_if_present": [
{
"name": "tool",
"values": [
"*"
],
"description": "Code vulnerability scan must pass if run"
}
],
"recommended": []
}
]
},
{
"evidence_type_id": "com.ibm.code_cis_check",
"rules": [
{
"asset_type": "commit",
"source_environments": [
{
"name": "ci-pipeline"
}
],
"target_environments": [
{
"name": "stage"
},
{
"name": "prod"
}
],
"required": [],
"required_if_present": [
{
"name": "tool",
"values": [
"*"
],
"description": "CIS check must pass if run"
}
],
"recommended": []
}
]
},
{
"evidence_type_id": "com.ibm.code_bom_check",
"rules": [
{
"asset_type": "commit",
"source_environments": [
{
"name": "ci-pipeline"
}
],
"target_environments": [
{
"name": "stage"
},
{
"name": "prod"
}
],
"required": [],
"required_if_present": [
{
"name": "tool",
"values": [
"*"
],
"description": "BOM check must pass if run"
}
],
"recommended": []
}
]
},
{
"evidence_type_id": "com.ibm.network_compliance",
"rules": [
{
"asset_type": "commit",
"source_environments": [
{
"name": "ci-pipeline"
}
],
"target_environments": [
{
"name": "stage"
},
{
"name": "prod"
}
],
"required": [],
"required_if_present": [
{
"name": "tool",
"values": [
"*"
],
"description": "Network compliance check must pass if run"
}
],
"recommended": []
}
]
},
{
"evidence_type_id": "com.ibm.pipeline_run_data",
"rules": [
{
"asset_type": "generic",
"source_environments": [
{
"name": "ci-pipeline"
}
],
"target_environments": [
{
"name": "stage"
},
{
"name": "prod"
}
],
"required": [],
"required_if_present": [
{
"name": "tool",
"values": [
"*"
],
"description": "Pipeline run data must be successful if present"
}
],
"recommended": []
}
]
},
{
"evidence_type_id": "com.ibm.pipeline_logs",
"rules": [
{
"asset_type": "generic",
"source_environments": [
{
"name": "ci-pipeline"
}
],
"target_environments": [
{
"name": "stage"
},
{
"name": "prod"
}
],
"required": [],
"required_if_present": [
{
"name": "tool",
"values": [
"*"
],
"description": "Pipeline logs must be successful if present"
}
],
"recommended": []
}
]
}
],
"post-deployment": [
{
"evidence_type_id": "com.ibm.prod_change_request",
"rules": [
{
"asset_type": "image",
"source_environments": [
{
"name": "stage"
}
],
"target_environments": [
{
"name": "stage"
},
{
"name": "prod"
}
],
"required": [],
"required_if_present": [
{
"name": "tool",
"values": [
"*"
],
"description": "Change request must be successful if present"
}
],
"recommended": []
}
]
},
{
"evidence_type_id": "com.ibm.acceptance_tests",
"rules": [
{
"asset_type": "commit",
"source_environments": [
{
"name": "stage"
},
{
"name": "prod"
}
],
"target_environments": [
{
"name": "stage"
},
{
"name": "prod"
}
],
"required": [],
"required_if_present": [
{
"name": "tool",
"values": [
"*"
],
"description": "Acceptance tests must pass if they are run"
}
],
"recommended": []
},
{
"asset_type": "image",
"source_environments": [
{
"name": "stage"
},
{
"name": "prod"
}
],
"target_environments": [
{
"name": "stage"
},
{
"name": "prod"
}
],
"required": [],
"required_if_present": [
{
"name": "tool",
"values": [
"*"
],
"description": "Acceptance tests must pass if they are run"
}
],
"recommended": []
}
]
},
{
"evidence_type_id": "com.ibm.pipeline_run_data",
"rules": [
{
"asset_type": "generic",
"source_environments": [
{
"name": "stage"
},
{
"name": "prod"
}
],
"target_environments": [
{
"name": "stage"
},
{
"name": "prod"
}
],
"required": [],
"required_if_present": [
{
"name": "tool",
"values": [
"*"
],
"description": "Pipeline run data must be successful if present"
}
],
"recommended": []
}
]
},
{
"evidence_type_id": "com.ibm.pipeline_logs",
"rules": [
{
"asset_type": "generic",
"source_environments": [
{
"name": "stage"
},
{
"name": "prod"
}
],
"target_environments": [
{
"name": "stage"
},
{
"name": "prod"
}
],
"required": [],
"required_if_present": [
{
"name": "tool",
"values": [
"*"
],
"description": "Pipeline logs must be successful if present"
}
],
"recommended": []
}
]
}
]
}