script collect-evidence
El collect-evidence script ayuda a los adoptantes, usuarios y colaboradores a enviar sus datos de cumplimiento al flujo de datos de gestión de cambios de DevSecOps.
El script lleva a cabo las tareas siguientes:
- Intenta procesar los archivos adjuntos como resultados y crea problemas de incidencias a partir de dichos resultados. Se da soporte a un número limitado de formatos de salida de herramienta.
- Si se encuentran problemas, el script evalúa sus periodos de gracia (fechas de vencimiento) y estados de exención.
- Crea un activo de pruebas en el bloqueador de pruebas.
- Crea la propia prueba y adjunta los problemas y los archivos adjuntos proporcionados.
Para un estado de success o failure, si no se pasa ningún archivo adjunto dentro de collect-evidence, los registros de interconexión para esa tarea en particular y la etapa se capturan como un archivo adjunto.
El script collect-evidence lo proporciona la interconexión. No es necesario instalarlo. El script tiene las siguientes dependencias:
- bash
libstdc++biblioteca compartidalibgccbiblioteca compartida
Asegúrese de que las dependencias estén instaladas en la imagen base que utiliza esta herramienta para notificar pruebas.
Arquitectura de comando CLI
La funcionalidad collect-evidence está disponible a través de dos interfaces:
- Shell Script Wrapper (
collect-evidence): Interfaz de script bash tradicional que proporciona compatibilidad con versiones anteriores - Comando CLI directo (
cocoa locker evidence collect): Interfaz CLI nativa con acceso a todas las funciones
Versión Toggle
El script de shell collect-evidence admite dos versiones de implementación que pueden conmutarse mediante la propiedad de entorno collect-evidence-version:
| Versión | Implementación | Estado | Descripción |
|---|---|---|---|
v1 |
Heredado | Disponible | Implementación original basada en bash con total compatibilidad con versiones anteriores |
v2 |
Basado en CLI | Valor predeterminado | Implementación moderna que envuelve el comando CLI cocoa locker evidence collect |
Uso
El script collect-evidence requiere los parámetros siguientes:
--tool-typeEl ID de la herramienta que proporciona datos de pruebas. Por ejemplo: «owasp-zap-ui», «cra»--evidence-typeEl identificador del tipo de prueba. Por ejemplo:com.ibm.image_vulnerability_scan,com.ibm.unit_tests--asset-keyLa clave en los activos de pipelinectl. Para los mandatos siguientesload_artifact <key>oload_repo <key>--asset-typeEl tipo de activo de pipelinectl y puede ser uno de los tipos siguientes:repo,artifact--statusEl estado de las pruebas y puede ser uno de los siguientes:success,pending,failure--assetsEspecifique varios pares de clave de activo y tipo de activo. Por ejemplo, puede utilizar--assets asset-key1:asset-type1 --assets asset-key2:asset-type2. Si utiliza esta opción, no especifique la clave de activo y el tipo de activo por separado.
El siguiente parámetro es opcional:
--attachmentEl archivo que se procesará como resultado y se adjuntará a las pruebas. El parámetro se puede especificar varias veces para varios archivos. Para la firma de imágenes, asegúrese de que se adjunta el archivo de firma utilizando el parámetro --attachment. El archivo de firma debe incluir los detalles de la firma, como el ID de la clave, el algoritmo y el resumen firmado. Los formatos más habituales son JSON o TXT.--metaMetadatos arbitrarios que se añadirán a las pruebas. El parámetro acepta pares 'clave = valor' y se puede especificar varias veces. Puede incluir metadatos relevantes para el proceso de firma de la imagen, como el entorno de firma o cualquier configuración específica utilizada durante la firma.--additional-commentEl comentario que se añade a un problema si una interconexión ha fallado.
Utiliza el siguiente comando para obtener ayuda:
collect-evidence --help
Valor de retorno
collect-evidence genera la serie de estado de pruebas evaluada en STDOUT (uno de success, failure o pending). Este valor evaluado depende de los archivos adjuntos de resultados procesados,
los problemas de incidencias encontrados y la posible corrección de dichos problemas, por ejemplo, tener una fecha de vencimiento establecida o una etiqueta exenta. Para obtener más información, consulte Problemas de incidencia.
# example on how to read the output into a variable in bash
read -r status < <(collect-evidence "${evidence_params[@]}")
echo $status # success
Cambio a v2 (implementación basada en CLI)
Para utilizar la nueva implementación basada en CLI, establezca la propiedad de entorno en su canalización:
collect-evidence-version=v2
Uso directo del comando CLI
cocoa locker evidence collect \
--tool-type "sonarqube" \
--evidence-type "com.ibm.static_scan" \
--assets "app-repo:repo" \
--status "success" \
--attachment ./sonarqube-result.json \
--pipeline-run-id "${PIPELINE_RUN_ID}" \
--pipeline-namespace "ci" \
--incident-org "my-org" \
--incident-repo "compliance-issues"
cocoa locker evidence collect \
--tool-type "detect-secrets" \
--evidence-type "com.ibm.detect_secrets" \
--assets "app-repo:repo" \
--status "success" \
--pipeline-run-id "${PIPELINE_RUN_ID}" \
--pipeline-namespace "ci" \
--incident-org "my-org" \
--incident-repo "compliance-issues"
cocoa locker evidence collect \
--tool-type "va" \
--evidence-type "com.ibm.cloud.image_vulnerability_scan" \
--assets "image-0:artifact" \
--status "success" \
--pipeline-run-id "${PIPELINE_RUN_ID}" \
--attachment image-0_va-report.json \
--pipeline-namespace "ci" \
--incident-org "my-org" \
--incident-repo "compliance-issues"
Para obtener una referencia completa del comando CLI y todos los parámetros disponibles, consulte la recopilación de pruebas de casilleros de cacao.
Uso de ejemplo
collect-evidence \
--tool-type "sonarqube" \
--evidence-type "com.ibm.static_scan" \
--asset-type "repo" \
--asset-key "app-repo" \
--status "success" \
--attachment ./sonarqube-result-1.json \
--attachment ./sonarqube-result-2.json \
--meta environment=staging
collect-evidence \
--tool-type "ciso-code-signing" \
--evidence-type "com.ibm.cloud.image_signing" \
--asset-type "artifact" \
--asset-key "signed-image" \
--status "success" \
--attachment ./signature.json \ # The signature details in JSON format
--attachment "./${artifact}.fingerprint" \ # The fingerprint is a hash value generated from the artifact, ensuring integrity and authenticity.
--meta environment=production
Puede utilizar directamente el comando cocoa locker evidence collect:
cocoa locker evidence collect \
--tool-type "sonarqube" \
--evidence-type "com.ibm.static_scan" \
--assets "app-repo:repo" \
--status "success" \
--attachment ./sonarqube-result.json \
--pipeline-run-id "${PIPELINE_RUN_ID}" \
--pipeline-namespace "ci" \
--incident-org "my-org" \
--incident-repo "compliance-issues"
Formatos de herramienta soportados
La implementación actual actualmente da soporte a las herramientas siguientes (proporcionadas como parámetro --tool-type ):
| Nombre de la herramienta | Descripción |
|---|---|
cra |
IBM Analizador de riesgos de código |
cra-cis |
IBM Analizador de riesgos de código CIS |
va |
Vulnerability Advisor para IBM Cloud Container Registry |
gosec |
GoLang Escáner de seguridad |
xray |
JFrog Xray - Exploración de vulnerabilidades y seguridad de contenedores |
owasp-zap |
Proxy de ataque OWASP Zed (ZAP) |
owasp-zap-ui |
Interfaz de usuario de OWASP Zed Attack Proxy (ZAP UI) |
sonarqube |
SonarQube escanear |
peer-review |
Revisión inter pares |
twistlock |
TwistLock |
cims |
Escáner múltiple de imágenes de contenedores (CIMS) |
mend |
Mend Scan |
mend-sast |
Reparar el escaneo SAST |
checkov |
Escaneo Checkov |
cra-tf |
Analizador de riesgos de código para Terraform |
tfsec |
Escáner de seguridad Terraform |
fips-scanner |
Escáner FIPS (normas federales de tratamiento de la información) |
detect-secrets |
Detección de secretos |
ciso-code-signing |
Herramienta de firma de código CISO |
sysdig |
Escaneo Sysdig |
cyclonedx |
CycloneDX formato. La detección de herramientas para la gestión de incidencias se realizará a partir de los metadatos de CycloneDX aquí |
grype |
Grype Scan |
CycloneDX Metadata utiliza la detección de herramientas para la gestión de incidencias.
Si se llama al script collect-evidence con un tipo de herramienta que no está soportado, el script no intenta procesar los archivos adjuntos. Además, el manejo de problemas se omite y la recopilación de pruebas no se detiene.
Si el script proporciona un archivo adjunto desde una herramienta soportada, pero el archivo adjunto no se puede procesar, el manejo de problemas se omite y la recopilación de pruebas no se detiene.
Tipo de prueba
Puede establecer el tipo de pruebas utilizando el parámetro --evidence-type. Puede establecer cualquier tipo, pero IBM Cloud® Compliance Manager da soporte a los siguientes tipos de pruebas:
com.ibm.unit_testscom.ibm.detect_secretscom.ibm.branch_protectioncom.ibm.static_scancom.ibm.code_vulnerability_scancom.ibm.code_bom_checkcom.ibm.code_cis_checkcom.ibm.cloud.image_vulnerability_scancom.ibm.cloud.image_signingcom.ibm.dynamic_scancom.ibm.cloud.image_signingcom.ibm.acceptance_testscom.ibm.prod_change_requestcom.ibm.close_change_reques
Recopilación de tipos de pruebas y cartografía de herramientas
| Tipo de prueba ID | Herramienta compatible por defecto | Origen | Propiedad | Activo recomendado | Problemas |
|---|---|---|---|---|---|
com.ibm.branch_protection |
cocoa-branch-protection |
IC | Plataforma | repo | Cuestiones no relacionadas con incidentes |
com.ibm.unit_tests |
jest |
Relaciones Públicas/Comunicación Corporativa | Usuario | repo | Cuestiones no relacionadas con incidentes |
com.ibm.detect_secrets |
detect-secrets |
PR/CI/CC | Plataforma | repo | Incidentes y no incidentes |
com.ibm.code_vulnerability_scan |
cra-tf, cra, mend Para infraestructura como código: tfsec, checkov |
IC | Plataforma | repo | Incidentes y no incidentes |
com.ibm.code_bom_check |
cra-bom, sbom-utility |
PR/CI/CC | Plataforma | repo | Incidentes y no incidentes |
com.ibm.code_cis_check |
cra-cis |
PR/CI/CC | Plataforma | repo | Cuestiones no relacionadas con incidentes |
com.ibm.peer_review |
peer-review |
IC | Plataforma | repo | Cuestiones no relacionadas con incidentes |
com.ibm.static_scan |
sonarqube, gosec Para la infraestructura como código: terraform-fmt, terraform-validate, tflint |
CI/CC | Plataforma | repo | Incidentes y no incidentes |
com.ibm.cloud.image_signing |
artifact-signing |
IC | Plataforma | repo | Cuestiones no relacionadas con incidentes |
com.ibm.acceptance_tests |
jest |
IC | Usuario | artefacto | Cuestiones no relacionadas con incidentes |
com.ibm.dynamic_scan |
owasp-zap, owasp-zap-ui |
IC | Plataforma | artefacto | Incidentes y no incidentes |
com.ibm.cloud.image_vulnerability_scan |
va, sysdig, xray |
CI/CC | Plataforma | artefacto | Incidentes y no incidentes |
com.ibm.prod_change_request |
gitlab |
CD | Plataforma | artefacto | Cuestiones no relacionadas con incidentes |
com.ibm.close_change_request |
gitlab |
CD | Plataforma | artefacto | Cuestiones no relacionadas con incidentes |
com.ibm.cloud.slsa |
tekton-chains |
IC | Plataforma | artefacto | Cuestiones no relacionadas con incidentes |
com.ibm.cloud.verify_signature |
ciso-code-signing |
CD | Plataforma | artefacto | Cuestiones no relacionadas con incidentes |
com.ibm.pipeline_logs |
N/D | CI/CD/CC | Plataforma | N/D | N/D |
com.ibm.pipeline_run_data |
N/D | CI/CD/CC | Plataforma | N/D | N/D |
com.ibm.network_compliance |
IC | Plataforma | repo | Incidentes y no incidentes |
Cuando falla un escaneado o cuando no se pueden analizar los archivos adjuntos, la herramienta crea automáticamente una incidencia sin incidencias para rastrear el fallo.
Requisitos de activos
Las pruebas que se recopilan con esta herramienta forman parte del trabajo de recopilación de pruebas de V2 y de las actualizaciones del casillero de pruebas relacionadas.
Este nuevo método se centra en las pruebas basadas en activos, lo que significa que las pruebas están conectadas al artefacto y al repositorio a través de las exploraciones y pruebas que se ejecutan en dichos artefactos o repositorios, y que han generado resultados para las pruebas. Por ejemplo:
- Un repositorio con una determinada confirmación se convierte en un activo de confirmación, que se explora, creando pruebas para el activo de confirmación.
- Utilizando el mismo repositorio y confirmación, se crea una imagen. La imagen se convierte en un activo relacionado con el activo de origen, el repositorio y la confirmación.
- La imagen se explora y se crean pruebas. Todos los resultados de exploración se conectan a través de las pruebas, su activo y los activos relacionados.
Para que todo esto funcione conjuntamente, los activos que se proporcionan con los parámetros --asset-type y --asset-key deben cumplir algunos requisitos:
Activos de repo añadidos utilizando el mandato save_repo
Consulte la referencia de mandato para obtener información de uso exacta.
Campos obligatorios:
urlEl repositorio URL.commitEl SHA de confirmación.
Activos de artifact añadidos utilizando el mandato save_artifact
Consulte la referencia de mandato para obtener información de uso exacta.
Campos obligatorios:
nameEl nombre del artefacto. Por ejemplo, para una imagen incluya registro, espacio de nombres e imagen (ejemplo:us.icr.io/team-images/service).digestEl resumen del artefacto (ejemplo:sha256:a2292ed2b82c7a51d7d180c3187dbb0f7cc9ab385a68484c4f117e994acd6192).
Cambios necesarios en save_artefacto para no imágenes: Ahora la recopilación de pruebas da soporte a todos los tipos de activos. Para recopilar pruebas para trabajar en cualquier tipo de activo
save_artifact Deberías guardar explícitamente el archivo con el formato « type », por ejemplo, en un archivo zip
save_artifact artifact-1 type=zip .... En collect evidence script, el asset-type debe ser artefacto y el tipo se consulta desde el artefacto. Para que este proceso funcione, se ha modificado la adición de activos
de casillero de cacao para añadir activos de cualquier tipo. Una vez guardado, el script de recopilación de pruebas se puede llamar como se indica a continuación:
collect-evidence --tool-type toolType --evidence-type artifact --asset-key artifact-1 ...
Consulte nuestra aplicación de muestra para ver un ejemplo de implementación para deployment tipo https://us-south.git.cloud.ibm.com/open-toolchain/hello-compliance-app
Con estos cambios, el script de recopilación de pruebas procesa todos los tipos de artefactos, incluidos los artefactos de imagen y no de imagen.
Varios activos en recopilación-pruebas
Mediante el uso de las pruebas de recopilación, puede configurar la recopilación simultánea de pruebas para varios activos. La recopilación de pruebas se inicia utilizando el distintivo --assets, que especifica varios pares de clave
de activo y tipo de activo. Por ejemplo, input --assets asset-key1:asset-type1 --assets asset-key2:asset-type2. Si elige esta opción, no indique la clave de activo y el tipo de activo por separado.
Recuerde estos puntos clave sobre la colección de varios activos:
status,attachment,tool-type,evidence-typeyupload-logsson constantes en todos los activos.- De forma predeterminada, cuando designa varios activos, el proceso de pruebas sigue el flujo heredado. Si especifica un único activo, el proceso de pruebas se produce a través de un flujo específico de la herramienta o adjunto.
- En caso de anomalía, se crean problemas por activo. Estos problemas se cierran cuando se vuelve a ejecutar correctamente la recopilación de pruebas. El cierre se correlaciona con los activos que ha especificado.
- Se genera un archivo de pruebas singular, que cuenta con un ID que engloba todos los activos combinados.