Atualizando o Banco de Dados CVE
Atualizando o SUSE® Security Banco de Dados de Vulnerabilidade CVE
A imagem/pod do Scanner executa as varreduras com seu banco de dados CVE interno. A imagem do scanner é atualizada no SUSE® Security registro do Docker Hub com o banco de dados CVE mais recente com frequência, inclusive diariamente se houver atualizações. Para atualizar o banco de dados CVE utilizado na varredura, basta puxar e implantar a imagem mais recente do Scanner. O número da versão mais recente do banco de dados pode ser encontrado listado aqui.
Um contêiner chamado Updater realiza a tarefa de reiniciar os pods do scanner para forçar a obtenção da imagem mais recente, que atualizará o banco de dados CVE. Para verificar automaticamente se há atualizações e atualizar o scanner, um trabalho cron de atualização pode ser criado.
Por padrão, o trabalho cron de atualização mostrado abaixo é iniciado automaticamente a partir dos arquivos yaml de implantação de exemplo para Kubernetes e OpenShift. Isso verificará automaticamente novas atualizações do banco de dados CVE através de novas versões do scanner publicadas no SUSE® Security registro do Docker Hub. Atualizações manuais em implantações nativas do Docker são mostradas abaixo. Para implantações do OpenShift ou outras onde as imagens precisam ser puxadas manualmente de SUSE® Security, o scanner com a tag 'latest' deve ser puxado de SUSE® Security para atualizar o banco de dados CVE.
Para digitalização de registro, se a caixa 'Reanalisar após atualização do DB CVE' estiver habilitada, todas as imagens nesse registro serão reanalisadas após uma atualização do banco de dados CVE. Para digitalização em tempo de execução, todos os ativos em execução serão reanalisados após uma atualização do banco de dados CVE se o recurso Auto-Scan estiver habilitado.
Trabalho Cron de Atualização
Este trabalho cron é implantado automaticamente por SUSE® Security como parte da implantação de exemplo, portanto, normalmente não é necessário iniciar manualmente.
O Updater é uma imagem de contêiner que, quando executada, reinicia a implantação do scanner, forçando a obtenção da imagem mais recente do Scanner. O atualizador reimplanta todos os pods do scanner levando a implantação a zero e escalonando-a novamente.
O exemplo de cron job neuvector-updater.yaml abaixo para Kubernetes 1.8 e posterior executa o atualizador todos os dias à meia-noite. A programação pode ser ajustada conforme desejado.
Exemplo de yaml do atualizador:
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
|
Se o contêiner allinone foi implantado em vez do controlador, substitua neuvector-svc-controller.neuvector por neuvector-svc-allinone.neuvector |
Para executar o cron job
kubectl create -f neuvector-updater.yaml
Atualizações Nativas do Docker
|
Sempre use a tag :latest ao puxar e executar a imagem do scanner para garantir que o banco de dados CVE mais recente seja implantado. |
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
Exemplo 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
E exemplo 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
Versão do Banco de Dados CVE
A versão do banco de dados CVE pode ser vista no Console na aba de Vulnerabilidades. Você também pode inspecionar os logs do contêiner do scanner ou da imagem do atualizador.
Para usar a API REST para consultar a versão:
curl -k -H "Content-Type: application/json" -H "X-Auth-Token: $_TOKEN_" "https://127.0.0.1:10443/v1/scan/scanner"
Saída:
{
"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
Saída de exemplo:
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 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
Atualizações Manuais no Kubernetes
Abaixo está um exemplo de como atualizar manualmente o banco de dados CVE no Kubernetes ou OpenShift.
Execute o arquivo do atualizador abaixo
kubectl create -f neuvector-manual-updater.yaml
Arquivo de exemplo
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