CVEデータベースの更新
SUSE® Security CVE脆弱性データベースの更新
スキャナーのイメージ/ポッドは、内部CVEデータベースを使用してスキャンを実行します。スキャナーのイメージは、SUSE® Security Docker Hubレジストリ上で、最新のCVEデータベースとともに頻繁に更新されます。更新がある場合は、毎日更新されることもあります。スキャンに使用するCVEデータベースを更新するには、最新のスキャナーイメージをプルしてデプロイするだけです。最新のデータベースバージョン番号は、 こちらにリストされています。
NeuVector Updaterと呼ばれるコンテナが、最新のイメージをプルするためにスキャナーポッドを再起動するタスクを実行します。これによりCVEデータベースが更新されます。自動的に更新を確認し、スキャナーを更新するには、NeuVector Updaterのcronジョブを作成できます。
デフォルトでは、以下に示すNeuVector Updaterのcronジョブは、KubernetesおよびOpenShiftのサンプルデプロイメントyamlファイルから自動的に開始されます。これにより、SUSE® Security Docker Hubレジストリに公開された新しいスキャナーのバージョンを通じて、新しいCVEデータベースの更新が自動的に確認されます。Dockerネイティブデプロイメントの手動更新は以下に示されています。OpenShiftデプロイメントや、SUSE® Securityから手動でイメージをプルする必要がある他のデプロイメントの場合、CVEデータベースを更新するために、'latest’タグの付いたスキャナーをSUSE® Securityからプルする必要があります。
レジストリスキャンの場合、'CVE DB更新後に再スキャン’のボックスが有効になっていると、CVEデータベースの更新後にそのレジストリ内のすべてのイメージが再スキャンされます。 ランタイムスキャンの場合、Auto-Scan機能が有効になっていると、CVEデータベースの更新後にすべての実行中のアセットが再スキャンされます。
NeuVector Updaterのcronジョブ
このcronジョブは、サンプルデプロイメントの一部としてSUSE® Securityによって自動的にデプロイされるため、手動で開始する必要は通常ありません。
NeuVector Updaterは、実行されるとスキャナーのデプロイメントを再起動し、最新のスキャナーイメージをプルすることを強制するコンテナイメージです。NeuVector Updaterは、デプロイメントをゼロにしてから再スケーリングすることによって、すべてのスキャナーポッドを再デプロイします。
以下のKubernetes 1.8以降のcronジョブサンプルneuvector-updater.yamlは、毎日真夜中にNeuVector Updaterを実行します。スケジュールは必要に応じて調整できます。
サンプルNeuVector 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
|
コントローラーの代わりにallinoneコンテナがデプロイされた場合は、neuvector-svc-controller.neuvectorをneuvector-svc-allinone.neuvectorに置き換えてください。 |
cronジョブを実行するために
kubectl create -f neuvector-updater.yaml
Dockerネイティブ更新
|
最新のCVEデータベースがデプロイされるように、スキャナーイメージをプルおよび実行する際は、常に:latestタグを使用してください。 |
Dockerネイティブの場合:
docker stop scanner
docker rm <scanner id>
docker pull neuvector/scanner:latest
<docker run command from below>
|
`docker rm -f <scanner id>`を使用して、実行中のスキャナーを強制停止および削除することもできます。 |
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
サンプル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
およびサンプル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データベースバージョン
CVEデータベースバージョンは、脆弱性タブのコンソールで確認できます。スキャナーコンテナのログやNeuVector Updaterイメージを確認することもできます。
REST APIを使用してバージョンを照会するには:
curl -k -H "Content-Type: application/json" -H "X-Auth-Token: $_TOKEN_" "https://127.0.0.1:10443/v1/scan/scanner"
出力:
{
"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"
}
]
}
kubectlを使用する:
kubectl logs neuvector-scanner-pod-5687dcb6fd-2h4sj -n neuvector | 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
または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
Kubernetesでの手動アップデート
以下は、KubernetesまたはOpenShiftでCVEデータベースを手動で更新するための例です。
以下のUpdaterファイルを実行してください
kubectl create -f neuvector-manual-updater.yaml
サンプルファイル
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