Integración de Ostorlab con Jenkins
1. Generar una nueva clave API
El primer paso es generar una clave API. Para hacerlo, simplemente siga los siguientes pasos:
Vaya a report.ostorlab.co
Haga clic en el botón Menu

Haga clic en Integrations/API para expandir

Haga clic en API Keys

Haga clic en New para generar una nueva clave API

Copie la clave API. También puede agregar un nombre y una fecha de caducidad a su clave.

No olvide hacer clic en el botón guardar para guardar su clave.

2. Añadir la clave API de Ostorlab a las credenciales de Jenkins
Desde el panel de control principal de Jenkins, haga clic en el botón Add Credentials.

En la lista desplegable Kind, seleccione Secret text.

Introduzca apiKey en el campo ID.

Introduzca su clave API en el campo Secret.

Introduzca una descripción para identificar la clave

Haga clic en create para guardar las credenciales.

Proyecto Freestyle
Para definir un trabajo de Jenkins en su proyecto freestyle, siga los siguientes pasos:
En su Build Environment, añada un enlace de Secret text a la configuración de su proyecto de Jenkins e introduzca la siguiente información:

Añada un paso de construcción "Run Ostorlab Security Scanner" a la configuración de su proyecto de Jenkins.

E introduzca la siguiente información:
el file_path a la aplicación móvil que desea escanear.

Haga clic en Advanced settings para configurar su ejecución:

Introduzca el scan_title.

Seleccione si la platform es Android o iOS.

Seleccione el scan_profile a utilizar para el escaneo. Puede elegir entre Fast Scan para un análisis estático rápido o Full Scan para un análisis estático, dinámico y de backend completo.

wait_for_results que suspende el trabajo hasta que el análisis de seguridad se complete o se agote el tiempo de espera.

max_wait_minutes que es la duración de la espera antes de que el trabajo se agote el tiempo de espera.

break_build_on_higher_security_risk_threshold, si se selecciona, el trabajo de Jenkins fallará si el riesgo de los hallazgos es igual o superior a los umbrales especificados.

security_risk_threshold, umbral de riesgo mínimo que provocará que una construcción falle.

credentials, que se utilizarán durante las pruebas dinámicas.
El nombre se corresponde con el ID o la etiqueta del campo en la vista (Por ejemplo username o password).
El valor se corresponde con la entrada a escribir en el campo.

Inicie sus construcciones móviles y verá el riesgo del escaneo en la carpeta de artefactos (artifacts).

Pipeline de Jenkins
Además, también puede realizar la integración en el caso de un Pipeline de Jenkins.
Aquí un paso de muestra para ejecutar el escaneo:

pipeline {
agent any
environment {
apiKey = credentials('apiKey')
jsonCredentials = "${params.Credentials}"
}
parameters { string(name: 'Credentials', defaultValue: '[{"name": "username", "value": "MyUsername"}, {"name": "password", "value": "MyPassword"}]', description: '') }
stages {
stage('security-test') {
steps {
step([$class: 'OPlugin', apiKey:env.apiKey, Jsoncredentials:env.jsonCredentials, filePath: '/home/asasas/IdeaProjects/ostorlab-plugin/work/workspace/as/InsecureBankv2.apk',
scanProfile: 'Fast Scan', platform: 'android'])
}
}
}
}
La lista de parámetros admitidos:
- filePath: (Obligatorio) Introduzca la ruta de la aplicación móvil.
- apiKey: (Obligatorio) Introduzca la clave API para autenticar las solicitudes API.
- scanProfile: Seleccione el perfil de escaneo a ejecutar. Puede elegir entre Fast Scan para un análisis estático rápido o Full Scan para un análisis estático, dinámico y de backend completo.
- platform: Establezca el tipo de plataforma [android, iOS].
- waitForResults: (Opcional) Suspenda el trabajo hasta que el análisis de seguridad se complete o se agote el tiempo de espera.
- waitMinutes: (Opcional) Duración de la espera antes de que el trabajo se agote el tiempo de espera.
- breakBuildOnScore: (Opcional) Si se establece en verdadero, el paso fallará si el riesgo de los hallazgos es igual o superior a los umbrales.
- riskThreshold: (Opcional) Umbral de riesgo mínimo que provocará que una construcción falle.
- JsonCredentials: (Opcional) Credenciales a utilizar para las pruebas dinámicas. Debe ser una cadena como un JSON válido:
[{"name": "username", "value": "MyUsername"}, {"name": "password", "value": "MyPassword"}] - title: (Opcional) Introduzca el título del escaneo.