Mise à jour de la base de données CVE
Mise à jour de la SUSE® Security base de données des vulnérabilités CVE
L’image/pod du scanner effectue les analyses avec sa base de données CVE interne. L’image du scanner est mise à jour sur le SUSE® Security registre Docker Hub avec la dernière base de données CVE, fréquemment, voire quotidiennement en cas de mises à jour. Pour mettre à jour la base de données CVE utilisée dans l’analyse, il suffit de tirer et de déployer la dernière image du scanner. Le dernier numéro de version de la base de données peut être trouvé listé ici.
Un conteneur appelé l’Updater effectue la tâche de redémarrer les pods du scanner afin de forcer le tirage de la dernière image, ce qui mettra à jour la base de données CVE. Pour vérifier automatiquement les mises à jour et mettre à jour le scanner, un travail cron de mise à jour peut être créé.
Par défaut, le travail cron de mise à jour montré ci-dessous est automatiquement démarré à partir des fichiers yaml de déploiement d’exemple pour Kubernetes et OpenShift. Cela vérifiera automatiquement les nouvelles mises à jour de la base de données CVE à travers de nouvelles versions du scanner publiées sur le SUSE® Security registre Docker Hub. Les mises à jour manuelles sur les déploiements natifs Docker sont montrées ci-dessous. Pour les déploiements OpenShift ou d’autres où les images doivent être tirées manuellement depuis SUSE® Security, le scanner avec le tag 'latest' doit être tiré depuis SUSE® Security pour mettre à jour la base de données CVE.
Pour le scan de registre, si la case 'Rescanner après mise à jour de la base de données CVE' est activée, toutes les images dans ce registre seront rescannées après une mise à jour de la base de données CVE. Pour le scan en temps réel, tous les actifs en cours d’exécution seront rescannés après une mise à jour de la base de données CVE si la fonction Auto-Scan est activée.
Travail Cron de mise à jour
Ce travail cron est déployé par SUSE® Security automatiquement dans le cadre du déploiement d’exemple, il n’est donc généralement pas nécessaire de le démarrer manuellement.
L’Updater est une image de conteneur qui, lorsqu’elle est exécutée, redémarre le déploiement du scanner, forçant le tirage de la dernière image du scanner. L’updater redéploie tous les pods du scanner en ramenant le déploiement à zéro, puis en le rééchelonnant.
L’exemple de tâche cron neuvector-updater.yaml ci-dessous pour Kubernetes 1.8 et ultérieur exécute la mise à jour chaque jour à minuit. Le calendrier peut être ajusté selon les besoins.
Exemple de mise à jour yaml :
apiVersion: batch/v1
kind: CronJob
metadata:
name: neuvector-updater-pod
namespace: neuvector
spec:
schedule: "0 0 * * *"
jobTemplate:
spec:
template:
metadata:
labels:
app: neuvector-updater-pod
spec:
containers:
- name: neuvector-updater-pod
image: neuvector/updater
imagePullPolicy: Always
command:
- /bin/sh
- -c
- TOKEN=`cat /var/run/secrets/kubernetes.io/serviceaccount/token`; /usr/bin/curl -kv -X PATCH -H "Authorization:Bearer $TOKEN" -H "Content-Type:application/strategic-merge-patch+json" -d '{"spec":{"template":{"metadata":{"annotations":{"kubectl.kubernetes.io/restartedAt":"'`date +%Y-%m-%dT%H:%M:%S%z`'"}}}}}' 'https://kubernetes.default/apis/apps/v1/namespaces/neuvector/deployments/neuvector-scanner-pod'
restartPolicy: Never
|
Si le conteneur allinone a été déployé au lieu du contrôleur, remplacez neuvector-svc-controller.neuvector par neuvector-svc-allinone.neuvector |
Pour exécuter la tâche cron
kubectl create -f neuvector-updater.yaml
Mises à jour Docker Native
|
Utilisez toujours le tag :latest lors du tirage et de l’exécution de l’image du scanner pour garantir que la dernière base de données CVE est déployée. |
Pour docker natif :
docker stop scanner
docker rm <scanner id>
docker pull neuvector/scanner:latest
<docker run command from below>
|
|
Pour docker-compose
docker-compose -f file.yaml down
docker-compose -f file.yaml pull // pre-pull the image before starting the scanner
docker-compose -f file.yaml up -d
Exemple de docker run
docker run -td --name scanner -e CLUSTER_JOIN_ADDR=controller_node_ip -e CLUSTER_ADVERTISED_ADDR=node_ip -e SCANNER_DOCKER_URL=tcp://192.168.1.10:2376 -p 18402:18402 -v /var/run/docker.sock:/var/run/docker.sock:ro neuvector/scanner:latest
Et exemple de docker-compose
Scanner:
image: neuvector/scanner:latest
container_name: scanner
environment:
- SCANNER_DOCKER_URL=tcp://192.168.1.10:2376
- CLUSTER_JOIN_ADDR=controller_node_ip
- CLUSTER_ADVERTISED_ADDR=node_ip
ports:
- 18402:18402
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
Version de la base de données CVE
La version de la base de données CVE peut être consultée dans la Console dans l’onglet Vulnérabilités. Vous pouvez également inspecter les journaux du conteneur du scanner ou de l’image de l’Updater.
Pour utiliser l’API REST pour interroger la version :
curl -k -H "Content-Type: application/json" -H "X-Auth-Token: $_TOKEN_" "https://127.0.0.1:10443/v1/scan/scanner"
Sortie :
{
"scanners": [
{
"cvedb_create_time": "2020-07-07T10:34:04Z",
"cvedb_version": "1.950",
"id": "0f043705948557828ac1831ee596588a0d050950113117ddd19ecd604982f4d9",
"port": 18402,
"server": "127.0.0.1"
},
{
"cvedb_create_time": "2020-07-07T10:34:04Z",
"cvedb_version": "1.950",
"id": "9fa02c644d603f59331c95735158d137002d32a75ed1014326f5039f38d4d717",
"port": 18402,
"server": "192.168.9.95"
}
]
}
Utiliser kubectl :
kubectl logs neuvector-scanner-pod-5687dcb6fd-2h4sj -n neuvector | grep version
Exemple de sortie :
2020-09-15T00:00:57.909|DEBU|SCN|memdb.ReadCveDb: New DB found - update=2020-09-14T10:37:56Z version=2.04
2020-09-15T00:01:10.06 |DEBU|SCN|main.scannerRegister: - entries=47016 join=neuvector-svc-controller.neuvector:18400 version=2.040
Ou pour docker :
docker logs <scanner container id or name> | grep version
2020-09-15T00:00:57.909|DEBU|SCN|memdb.ReadCveDb: New DB found - update=2020-09-14T10:37:56Z version=2.04
2020-09-15T00:01:10.06 |DEBU|SCN|main.scannerRegister: - entries=47016 join=neuvector-svc-controller.neuvector:18400 version=2.040
Mises à jour manuelles sur Kubernetes
Voici un exemple pour mettre à jour manuellement la base de données CVE sur Kubernetes ou OpenShift.
Exécutez le fichier de l’Updater ci-dessous
kubectl create -f neuvector-manual-updater.yaml
Fichier d’exemple
apiVersion: v1
kind: Pod
metadata:
name: neuvector-updater-pod
namespace: neuvector
spec:
containers:
- name: neuvector-updater-pod
image: neuvector/updater
imagePullPolicy: Always
command:
- /bin/sh
- -c
- TOKEN=`cat /var/run/secrets/kubernetes.io/serviceaccount/token`; /usr/bin/curl -kv -X PATCH -H "Authorization:Bearer $TOKEN" -H "Content-Type:application/strategic-merge-patch+json" -d '{"spec":{"template":{"metadata":{"annotations":{"kubectl.kubernetes.io/restartedAt":"'`date +%Y-%m-%dT%H:%M:%S%z`'"}}}}}' 'https://kubernetes.default/apis/apps/v1/namespaces/neuvector/deployments/neuvector-scanner-pod'
restartPolicy: Never