Как обновить базу уязвимостей в закрытом контуре
Обновление БД CVE без доступа в интернет.
Раздел «ИБ специалисту»: быстрый переход по подразделам
На этой странице
В закрытом контуре кластер не имеет доступа к общедоступным реестрам и базам уязвимостей. Для актуального сканирования образов необходимо периодически обновлять базу уязвимостей через зеркало.
Обновление можно выполнить скриптом update.sh или с помощью патча.
Обновление скриптом update.sh
- В скрипте
update.shнеобходимо заполнить переменныеMIRROR_FQDN,MIRROR_USERNAME,MIRROR_PASSWORD. Значения переменных можно посмотреть на зеркале, в файлеconfig/config.yaml. - Скрипт необходимо запускать без параметров. Он может быть запущен нативно или в контейнере.
Требования к серверу
- Есть доступ до
public.shturval.tech. - Есть доступ до локального зеркала.
- Установлен
curl, добавлен в$PATH(в случае нативного запуска).
Чтобы установить oras, выполните:
curl -L -o /tmp/oras.tgz https://github.com/oras-project/oras/releases/download/v1.3.2/oras_1.3.2_linux_amd64.tar.gz && tar -zxvf /tmp/oras.tgz -C /bin/
Подготовка образа
- Подготовьте скрипт
update.shиDockerfileи загрузите их в зеркало.
Скрипт update.sh:
#!/bin/sh
MIRROR_FQDN=
MIRROR_USERNAME=
MIRROR_PASSWORD=
SHTURVAL_PUBLIC_REPO=public.shturval.tech
oras pull ${SHTURVAL_PUBLIC_REPO}/trivy-db:2
oras push ${MIRROR_FQDN}/trivy-db:2 ./db.tar.gz -u ${MIRROR_USERNAME}:${MIRROR_PASSWORD} --insecure
curl -k -u ${MIRROR_USERNAME}:${MIRROR_PASSWORD} -X POST "https://${MIRROR_FQDN}/service/rest/v1/components?repository=shturval_bin_public" -F "raw.directory=/vulndb/" -F "raw.asset0=@./db.tar.gz" -F "raw.asset0.filename=db.tar.gz"
rm -f db.tar.gz
oras pull ${SHTURVAL_PUBLIC_REPO}/trivy-java-db:1
oras push ${MIRROR_FQDN}/trivy-java-db:1 ./javadb.tar.gz -u ${MIRROR_USERNAME}:${MIRROR_PASSWORD} --insecure
curl -k -u ${MIRROR_USERNAME}:${MIRROR_PASSWORD} -X POST "https://${MIRROR_FQDN}/service/rest/v1/components?repository=shturval_bin_public" -F "raw.directory=/vulndb/" -F "raw.asset0=@./javadb.tar.gz" -F "raw.asset0.filename=javadb.tar.gz"
rm -f javadb.tar.gz
oras pull ${SHTURVAL_PUBLIC_REPO}/trivy-checks:0
oras push ${MIRROR_FQDN}/trivy-checks:0 ./bundle.tar.gz -u ${MIRROR_USERNAME}:${MIRROR_PASSWORD} --insecure
rm -f bundle.tar.gz
oras pull ${SHTURVAL_PUBLIC_REPO}/trivy-checks:1
oras push ${MIRROR_FQDN}/trivy-checks:1 ./bundle.tar.gz -u ${MIRROR_USERNAME}:${MIRROR_PASSWORD} --insecure
rm -f bundle.tar.gz
Пример Dockerfile:
FROM alpine:3
RUN apk add --update --no-cache curl tar gzip
RUN curl -L -o /tmp/oras.tgz https://github.com/oras-project/oras/releases/download/v1.3.2/oras_1.3.2_linux_amd64.tar.gz && tar -zxvf /tmp/oras.tgz -C /bin/
- На ВМ, где размещено зеркало, запустите сборку образа из
Dockerfileв каталоге со скриптомupdate.shиDockerfile, выполнив команду:
docker build -t trivy-updater:latest .
- Запустите скрипт в контейнере, выполнив команду:
docker run -v $(pwd)/update.sh:/bin/update.sh trivy-updater:latest /bin/sh /bin/update.sh
Обновление с патчем
С помощью патча можно добавить в зеркало пакеты или образы без необходимости пересборки бандла или обновления зеркала.
Запросите подготовку патча у менеджера от Штурвала. При обновлении базы Trivy команда Штурвала готовит и передает патч с обновленной БДУ.
- В каталоге с инициализированным зеркалом создайте директорию
shturval-patch, поместите в неё архив с патчем и выполните команду для применения патча:
stm patch apply