Actualizando la base de datos CVE
Actualizando la SUSE® Security base de datos de vulnerabilidad CVE
La imagen/pod del escáner realiza los escaneos con su base de datos CVE interna. La imagen del escáner se actualiza en el SUSE® Security registro de Docker Hub con la última base de datos CVE con frecuencia, tan a menudo como a diario si hay actualizaciones. Para actualizar la base de datos CVE utilizada en el escaneo, simplemente descarga y despliega la última imagen del escáner. El número de versión de la última base de datos se puede encontrar listado aquí.
Un contenedor llamado el Actualizador realiza la tarea de reiniciar los pods del escáner para forzar la descarga de la última imagen, lo que actualizará la base de datos CVE. Para comprobar automáticamente si hay actualizaciones y actualizar el escáner, se puede crear un trabajo cron de actualización.
Por defecto, el trabajo cron de actualización que se muestra a continuación se inicia automáticamente a partir de los archivos yaml de despliegue de muestra para Kubernetes y OpenShift. Esto comprobará automáticamente si hay nuevas actualizaciones de la base de datos CVE a través de nuevas versiones del escáner publicadas en el SUSE® Security registro de Docker Hub. Las actualizaciones manuales en despliegues nativos de Docker se muestran a continuación. Para despliegues de OpenShift u otros donde las imágenes deben ser descargadas manualmente de SUSE® Security, se debe descargar el escáner con la etiqueta 'latest' de SUSE® Security para la actualización de la base de datos CVE.
Para el escaneo de registros, si la casilla 'Reescanear después de la actualización de la base de datos CVE' está habilitada, todas las imágenes en ese registro serán reescaneadas después de una actualización de la base de datos CVE. Para el escaneo en tiempo de ejecución, todos los activos en ejecución serán reescaneados después de una actualización de la base de datos CVE si la función de Auto-escaneo está habilitada.
Trabajo Cron de Actualización
Este trabajo cron es desplegado automáticamente por SUSE® Security como parte del despliegue de muestra, por lo que típicamente no es necesario iniciarlo manualmente.
El Actualizador es una imagen de contenedor que, al ejecutarse, reinicia el despliegue del escáner, forzando la descarga de la última imagen del escáner. El Actualizador vuelve a desplegar todos los pods del escáner llevando el despliegue a cero y escalándolo de nuevo.
El ejemplo de trabajo cron neuvector-updater.yaml a continuación para Kubernetes 1.8 y versiones posteriores ejecuta el Actualizador todos los días a medianoche. El horario se puede ajustar según se desee.
Ejemplo de yaml del actualizador:
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 se desplegó el contenedor allinone en lugar del controlador, reemplaza neuvector-svc-controller.neuvector por neuvector-svc-allinone.neuvector |
Para ejecutar el trabajo cron
kubectl create -f neuvector-updater.yaml
Actualizaciones nativas de Docker
|
Siempre utiliza la etiqueta :latest al descargar y ejecutar la imagen del escáner para asegurar que se despliegue la base de datos CVE más reciente. |
Para docker nativo:
docker stop scanner
docker rm <scanner id>
docker pull neuvector/scanner:latest
<docker run command from below>
|
|
Para 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
Ejemplo 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
Y ejemplo 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
Versión de la base de datos CVE
La versión de la base de datos CVE se puede ver en la Consola en la pestaña de Vulnerabilidades. También puedes inspeccionar los registros del contenedor del escáner o de la imagen del Actualizador.
Para utilizar la API REST para consultar la versión:
curl -k -H "Content-Type: application/json" -H "X-Auth-Token: $_TOKEN_" "https://127.0.0.1:10443/v1/scan/scanner"
Salida:
{
"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"
}
]
}
Usando kubectl:
kubectl logs neuvector-scanner-pod-5687dcb6fd-2h4sj -n neuvector | grep version
Resultado de ejemplo:
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
O para 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
Actualizaciones manuales en Kubernetes
A continuación se muestra un ejemplo para actualizar manualmente la base de datos CVE en Kubernetes u OpenShift.
Ejecuta el archivo del Actualizador que se muestra a continuación.
kubectl create -f neuvector-manual-updater.yaml
Archivo de ejemplo
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