Gitlab
Analyse des vulnérabilités pendant le pipeline de construction Gitlab
SUSE® Security peut être configuré pour analyser les vulnérabilités déclenchées dans le pipeline de construction Gitlab. Il existe un plug-in Gitlab ici qui peut être configuré et utilisé. Veuillez suivre les instructions sur le site de Gitlab pour utiliser le plug-in.
L’analyse peut également utiliser SUSE® Security l’API REST en configurant le script fourni ci-dessous pour accéder au contrôleur.
De plus, assurez-vous qu’il y a un SUSE® Security conteneur de scanner déployé et configuré pour se connecter à l’Allinone ou au contrôleur. Dans la version 4.0 et ultérieure, le conteneur NeuVector Scanner doit être déployé séparément de l’allinone ou du contrôleur.
Analyse pendant le pipeline de construction Gitlab en utilisant l’API REST
Utilisez le script suivant, configuré pour vos SUSE® Security identifiants de connexion, pour déclencher les analyses de vulnérabilités.
########################
# Scanning Job
########################
{product-name}_Scan:
image: docker:latest
stage: test
#the runner tag name is nv-scan
tags:
- nv-scan
services:
- docker:dind
before_script:
- apk add curl
- apk add jq
variables:
DOCKER_DAEMON_PORT: 2376
DOCKER_HOST: "tcp://$CI_SERVER_HOST:$DOCKER_DAEMON_PORT"
#the name of the image to be scanned
NV_TO_BE_SCANNED_IMAGE_NAME: "nv_demo"
#the tag of the image to be scanned
NV_TO_BE_SCANNED_IMAGE_TAG: "latest"
#for local, set NV_REGISTRY=""
#for remote, set NV_REGISTRY="[registry URL]"
NV_REGISTRY_NAME: ""
#the credential to login to the docker registry
NV_REGISTRY_USER: ""
NV_REGISTRY_PASSWORD: ""
#{product-name} image location
NV_IMAGE: "10.1.127.3:5000/neuvector/controller"
NV_PORT: 10443
NV_LOGIN_USER: "admin"
NV_LOGIN_PASSWORD: "admin"
NV_LOGIN_JSON: '{"password":{"username":"$NV_LOGIN_USER","password":"$NV_LOGIN_PASSWORD"}}'
NV_SCANNING_JSON: '{"request":{"registry":"$NV_REGISTRY","username":"$NV_REGISTRY_NAME","password":"$NV_REGISTRY_PASSWORD","repository":"$NV_TO_BE_SCANNED_IMAGE_NAME","tag":"$NV_TO_BE_SCANNED_IMAGE_TAG"}}'
NV_API_AUTH_URL: "https://$CI_SERVER_HOST:$NV_PORT/v1/auth"
NV_API_SCANNING_URL: "https://$CI_SERVER_HOST:$NV_PORT/v1/scan/repository"
script:
- echo "Start neuvector scanner"
- docker run -itd --privileged --name neuvector.controller -e CLUSTER_JOIN_ADDR=$CI_SERVER_HOST -p 18301:18301 -p 18301:18301/udp -p 18300:18300 -p 18400:18400 -p $NV_PORT:$NV_PORT -v /var/neuvector:/var/neuvector -v /var/run/docker.sock:/var/run/docker.sock -v /proc:/host/proc:ro -v /sys/fs/cgroup/:/host/cgroup/:ro $NV_IMAGE
- |
_COUNTER_="0"
while [ -z "$TOKEN" -a "$_COUNTER_" != "12" ]; do
_COUNTER_=$((( _COUNTER_ + 1 )))
sleep 5
TOKEN=`(curl -s -f $NV_API_AUTH_URL -k -H "Content-Type:application/json" -d $NV_LOGIN_JSON || echo null) | jq -r '.token.token'`
if [ "$TOKEN" = "null" ]; then
TOKEN=""
fi
done
- echo "Scanning ..."
- sleep 20
- curl $NV_API_SCANNING_URL -s -k -H "Content-Type:application/json" -H "X-Auth-Token:$TOKEN" -d $NV_SCANNING_JSON | jq .
- echo "Logout"
- curl $NV_API_AUTH_URL -k -X 'DELETE' -H "Content-Type:application/json" -H "X-Auth-Token:$TOKEN"
after_script:
- docker stop neuvector.controller
- docker rm neuvector.controller