Aktualisierung der CVE-Datenbank
Aktualisierung der SUSE® Security CVE-Schwachstellendatenbank
Das Scanner-Image/pod führt die Scans mit seiner internen CVE-Datenbank durch. Das Scanner-Image wird häufig, so oft wie täglich, mit der neuesten CVE-Datenbank im SUSE® Security Docker Hub-Registry aktualisiert, wenn es Updates gibt. Um die in der Analyse verwendete CVE-Datenbank zu aktualisieren, ziehen Sie einfach das neueste Scanner-Image und stellen Sie es bereit. Die neueste Versionsnummer der Datenbank ist hier aufgeführt.
Ein Container namens Updater führt die Aufgabe aus, die Scanner-Pods neu zu starten, um einen Pull des neuesten Images zu erzwingen, was die CVE-Datenbank aktualisiert. Um automatisch nach Updates zu suchen und den Scanner zu aktualisieren, kann ein Updater-Cron-Job erstellt werden.
Standardmäßig wird der unten gezeigte Updater-Cron-Job automatisch aus den Beispiel-Implementierungs-YAML-Dateien für Kubernetes und OpenShift gestartet. Dies überprüft automatisch die Verfügbarkeit neuer CVE-Datenbank-Updates anhand der neuen Scanner-Versionen, die im SUSE® Security Docker Hub-Registry veröffentlicht werden. Manuelle Updates bei Docker-nativen Implementierungen sind unten aufgeführt. Für OpenShift-Implementierungen oder andere, bei denen Images manuell von SUSE® Security gezogen werden müssen, sollte der Scanner mit dem 'latest'-Tag von SUSE® Security gezogen werden, um die CVE-Datenbank zu aktualisieren.
Für das Scannen von Registries, wenn das Kästchen 'Nach CVE-DB-Update erneut scannen' aktiviert ist, werden alle Images in dieser Registry nach einem Update der CVE-Datenbank erneut gescannt. Für das Scannen zur Laufzeit werden alle laufenden Assets nach einem Update der CVE-Datenbank erneut gescannt, wenn die Auto-Scan-Funktion aktiviert ist.
Updater-Cron-Job
Dieser Cron-Job wird automatisch von SUSE® Security als Teil der Beispiel-Implementierung bereitgestellt, sodass er normalerweise nicht manuell gestartet werden muss.
Der Updater ist ein Container-Image, das, wenn es ausgeführt wird, die Scanner-Implementierung neu startet und den Pull des neuesten Scanner-Images erzwingt. Der Updater setzt alle Scanner-Pods neu ein, indem er die Implementierung auf null setzt und sie wieder hochskaliert.
Die Cron-Job-Vorlage neuvector-updater.yaml unten für Kubernetes 1.8 und höher führt den Updater jeden Tag um Mitternacht aus. Der Zeitplan kann nach Belieben angepasst werden.
Beispiel für Updater-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
|
Wenn der All-in-One-Container anstelle des Controllers bereitgestellt wurde, ersetzen Sie neuvector-svc-controller.neuvector durch neuvector-svc-allinone.neuvector |
Um den Cron-Job auszuführen
kubectl create -f neuvector-updater.yaml
Docker Native Updates
|
Verwenden Sie immer das Tag :latest, wenn Sie das Scanner-Image ziehen und ausführen, um sicherzustellen, dass die neueste CVE-Datenbank bereitgestellt wird. |
Für Docker Native:
docker stop scanner
docker rm <scanner id>
docker pull neuvector/scanner:latest
<docker run command from below>
|
|
Für 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
Beispiel für 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
Und Beispiel für 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
CVE-Datenbankversion
Die CVE-Datenbankversion kann in der Konsole im Tab "Schwachstellen" eingesehen werden. Sie können auch die Protokolle des Scanner-Containers oder das Aktualisierungs-Image überprüfen.
Um die REST-API zu verwenden, um die Version abzufragen:
curl -k -H "Content-Type: application/json" -H "X-Auth-Token: $_TOKEN_" "https://127.0.0.1:10443/v1/scan/scanner"
Ausgabe:
{
"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"
}
]
}
Verwendung von kubectl:
kubectl logs neuvector-scanner-pod-5687dcb6fd-2h4sj -n neuvector | grep version
Beispielausgabe:
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
Oder für 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
Manuelle Aktualisierungen auf Kubernetes
Im Folgenden finden Sie ein Beispiel für das manuelle Aktualisieren der CVE-Datenbank auf Kubernetes oder OpenShift.
Führen Sie die untenstehende Aktualisierungsdatei aus
kubectl create -f neuvector-manual-updater.yaml
Beispiel-Datei
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