GitLab CI/CD
Introducción
Un test puede ser realizado de manera externa autenticando una cuenta de StrikeOne Admin desde GitLab y después llamando al orquestrador de tests con los parámetros apropiados. El ejemplo de más abajo muestra una manera de ejecutar tests desde un Job de GitLab CI/CD.
Ejecución Remota de un Test
Introducción
Para ejecutar un test, usted requiere de un token de autorización. Usted puede generar un API Token desde el apartado de Integraciones de su perfil de StrikeOne Admin. El token de autorización permitirá realizar llamadas subsecuentes a otros endpoints.
Después, se debe llamar al orquestrador de tests. Esta request POST requiere un body que incluya el campo externalData que contenga los campos testName, parsedDomainId, parsedScanId y tool. Ambas IDs parseadas para el dominio y el escaneo se pueden obtener directamente yendo a la pestaña de Dominios y de Escaneos de un activo.
Los siguientes valores son válidos para el campo tool:
openvasowasp_zapdep_checknucleigitleaks
IMPORTANTE
Algunas herramientas requieren, o aceptan, más argumentos para su ejecución. La lista es la siguiente:
OWASP Dependency Check (
dep_check) y GitLeaks (gitleaks) requieren un objetotoolDataadicional que sea includo además deexternalData. Este objeto contendrá el campoprojectUrl(la URL del repositorio, incluyendo el usuario y el token),projectName(el nombre del repositorio) yprojectRepo(la rama a clonar, si se está usando curl el campo es opcional).Nuclei (
nuclei) acepta un objetotoolDataadicional que sea incluido además deexternalData. Este objeto puede contener el campotemplatesque corresponde a un string con la lista de templates a utilizar por Nuclei. Este campo es concatenado al argumento-ntspara ser utilizado por Nuclei al ejecutarse.
Si el test fue creado con éxito, /api/vm/tests/external/execute retornará un código 200.
Requisitos
Ninguno.
Ejemplo de Job de GitLab CI/CD
strikeone-test:
stage: test
script:
- echo "Ejecutar Test de StrikeOne"
- RES=$(curl --request POST https://assessment.strikeone.io/api/vm/tests/external/execute --header "Content-Type:application/json" --header "Authorization:Bearer ${SO_API_TOKEN}" --data-raw '{"externalData":{"testName":"Test iniciado desde GitLab","parsedDomainId":"192079240","parsedScanId":"192079369","tool":"owasp_zap"}}')
- echo RES is $RES
