Установка, запуск и обновление AppSec.Hub
Требования к инфраструктуре
Установленные для эксплуатации AppSec.Hub технические средства должны быть совместимы между собой и поддерживать сетевой протокол TCP/IP.
Рекомендуемые технические характеристики серверного оборудования:
- Процессор: 4×CPU 2 ГГц.
- Оперативная память: 16 Гб.
- Свободное дисковое пространство: 150 Гб для размещения прикладных систем и баз данных AppSec.Hub.
ПО поддерживает следующие типы ОС для полноценного функционирования.
| Операционная система | Архитектура | Платформа |
|---|---|---|
| Linux | 64-bit | Ubuntu Server 18.04.6 x64 |
| Linux | 64-bit | Centos/RHEL 7 и выше |
| Linux | 64-bit | Astra Linux SE 1.7 (Смоленск, Воронеж) |
Процесс установки
Проверка инфраструктуры
Дополнительные пакеты, которые необходимо установить на сервере AppSec.Hub перед началом инсталляции AppSec.Hub:
- Docker версии 19.03.3 и выше.
- Docker-compose версии 1.29.2 и выше.
Проверить версию установленных пакетов Docker и Docker-compose можно с помощью команд:
docker --version
docker-compose ––version
Установка AppSec.Hub
Программа AppSec.Hub разворачивается в инфраструктуре с использованием контейнеров Docker.
Настройте соединение с репозиторием, в котором выложен дистрибутив AppSec.Hub:
docker login docker.yourcompany.ru
Скачайте инсталляционный образ:
docker pull docker.yourcompany.ru/hub-installer:<version>
Запустите инсталляцию командой:
docker container run \
-v /hub/install/path:/opt/apphub \
-v /root/.docker/config.json:/root/.docker/config.json \
-v /var/run/docker.sock:/var/run/docker.sock \
-e REPAIR_DB_ENABLE="disable" \
-e REPAIR_DW_ENABLE="disable" \
--rm \
--name hub-updater \
-ti \
docker.yourcompany.ru/hub-installer:<version>
где:
/hub/install/path— папка, куда будут скопированы конфигурационные файлы, этот параметр можно поменять, в этом случае мы рекомендуем указать директорий/opt/apphub. При совпадении имен файлов содержимое папки будет очищено. В этой же папке будет по умолчанию расположена папка с БД. В процессе установки автоматически заполняются конфигурационные параметры в .env файле, описанные в разделе «Приложение 1. Конфигурационный файл .env», и конфигурационные параметры в app.properties файле, описанные в разделе «Приложение 4. Конфигурационный файл app.properties»;-v ~/.docker/config.json— путь к файлу, куда записываются данные после docker login;-e REPAIR_DB_ENABLE="disable"— режим восстановления hub-db;-e REPAIR_DW_ENABLE="disable"— режим восстановления hub-dw;version— версия релиза, который необходимо установить;- в файлах .env и app.properties будут сгенерированы пароли и ключи;
- в процессе инсталляции будет предложено ввести URL или IP адрес вашего сервера, по которому будет доступен веб интерфейс AppSec.Hub. Это значение в дальнейшем будет использоваться для интеграции с другими инструментами, такими как Jenkins, TeamCity и т. д.;
- в процессе инсталляции так же будет предложено внести в базу данных системы демо-данные.
Запуск AppSec.Hub
В папке /hub/install/path выполните команды:
docker-compose up -d
После выполнения этой команды подождите примерно 2–3 минуты. AppSec.Hub будет доступен через веб-интерфейс по указанному вами URL или IP адресу сервера.
Остановка AppSec.Hub
В папке /hub/install/path выполните команду:
docker-compose down
Обновление системы
- Остановите AppSec.Hub, см. раздел «Остановка AppSec.Hub».
- Укажите новые версии образов в файле .env.
-
Загрузите новые версии контейнеров. Для этого в папке, указанной при установке (см. раздел «Установка AppSec.Hub», по умолчанию /opt/apphub) выполните следующую команду.
docker-compose pull -
После загрузки образов запустите систему, см. раздел «Запуск AppSec.Hub».
Также возможно обновление системы путем выполнения следующей команды.
docker container run \
-v /hub/install/path:/opt/apphub \
-v /var/run/docker.sock:/var/run/docker.sock \
-e REPAIR_DB_ENABLE="disable" \
-e REPAIR_DW_ENABLE="disable" \
--rm \
--name hub-updater \
-ti \
docker.swordfishsecurity.com/hub-installer:last
В отдельных случая особенности сетевой конфигурации и/или требования безопасности не позволяют обновить AppSec.Hub указанными выше способами — следует придерживаться изложенного ниже порядка действий.
-
Остановите AppSec.Hub, см. раздел «Остановка AppSec.Hub».
-
В файл docker-compose.yaml, который находится в директории установки AppSec.Hub (по умолчанию, /opt/apphub), добавьте следующий раздел.
flyway-db: image: docker.swordfishsecurity.com/hub-db:${hub_db_version} container_name: flyway-db networks: - net-hub environment: - hubadmPassword=${hub_adm_password} - hubappPassword=${hub_app_password} - hubbiPassword=${hub_bi_password} - hubauthPassword=${hub_auth_password} - hubdbName=${hub_db_name} - PGPASSWORD=${pgsql_admin_password} - PGUSER=postgres - PG_URL=${pgsql_url} - PG_PORT=${pgsql_port} - REPAIR_DB_ENABLE=disable - REPAIR_DW_ENABLE=disableВажно
Убедитесь, что все значения параметров, используемых в добавляемом фрагменте (
${hub_adm_password},${hub_app_password}и т. д.), не удалены из файла .env. При необходимости добавьте их вновь.Важно
Убедитесь, что значения параметров
networksв добавляемом разделе и в конце файла docker-compose.yaml аналогичны — в нашем примереnet-hub.Пример раздела
networksв конце файла docker-compose.yaml.networks: net-hub: driver: "bridge" driver_opts: com.docker.network.driver.mtu: 1400 ipam: driver: default config: - subnet: 172.20.0.0/16Пример получившегося docker-compose.yaml. Нажмите, чтобы просмотреть.
version: '3.9' services: hub-core: image: docker.swordfishsecurity.com/hub-core:${hub_core_version} container_name: hub-core networks: - net-hub environment: - "CATALINA_OPTS=-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005" - UMASK=0022 - HUB_LOG_LEVEL=debug - TZ=Europe/Moscow tmpfs: - /usr/local/tomcat/temp/:uid=2000,gid=2000 - /usr/local/tomcat/work/:uid=2000,gid=2000 ports: - ${IP_EXTERNAL}:5005:5005 volumes: - ./logs/hub-core:/usr/local/tomcat/logs - ./config/hub-core/app.properties:/usr/local/tomcat/webapps/hub/WEB-INF/classes/app.properties - ./config/hub-core/auth.properties:/usr/local/tomcat/webapps/hub/WEB-INF/classes/auth.properties pids_limit: 400 security_opt: - no-new-privileges restart: on-failure:5 read_only: true cpu_shares: 1024 deploy: resources: limits: memory: 3000M hub-ui: image: docker.swordfishsecurity.com/hub-ui:${hub_ui_version} container_name: hub-ui networks: - net-hub ports: - ${IP_EXTERNAL}:80:8080/tcp - ${IP_EXTERNAL}:81:81/tcp - ${IP_EXTERNAL}:443:4443/tcp - ${IP_EXTERNAL}:5602:5602/tcp environment: - TZ=Europe/Moscow volumes: - ./config/hub-ui/:/etc/nginx/conf.d/:ro - ./logs/hub-ui/:/var/log/nginx - ./ssl:/etc/ssl/certs/ssl-cert:ro pids_limit: 100 security_opt: - no-new-privileges restart: on-failure:5 read_only: true tmpfs: - /tmp - /var/cache/nginx/ cpu_shares: 512 deploy: resources: limits: memory: 100M node-exporter: image: nexus.service.swordfishsecurity.com:8084/sfs-node-exporter:v1.0.1 container_name: prometheus_exporter user: root restart: always volumes: - /proc:/host/proc:ro - /sys:/host/sys:ro - /:/rootfs:ro,rslave command: - --path.procfs=/host/proc - --path.sysfs=/host/sys - --collector.filesystem.ignored-mount-points - ^/(sys|proc|dev|host|etc|/rootfs/var/lib/docker/containers|rootfs/var/lib/docker/overlay2|rootfs/run/docker/netns|rootfs/var/lib/docker/aufs)($$|/) - --path.rootfs=/rootfs ports: - '9100:9100' cap_add: - SYS_TIME postgresql: image: docker.swordfishsecurity.com/sfs-postgres:13.2.2-alpine container_name: postgresql volumes: - /opt/apphub/postgresql/data:/data - ./config/postgresql/postgresql.conf:/data/postgresql.conf - ./logs/postgresql:/data/logs networks: - net-hub ports: - ${IP_EXTERNAL}:5432:5432/tcp environment: # - POSTGRES_HOST_AUTH_METHOD=trust - POSTGRES_PASSWORD=${pgsql_admin_password} - TZ=Europe/Moscow pids_limit: 100 security_opt: - no-new-privileges restart: on-failure:5 read_only: true tmpfs: - /var/run/postgresql/ - /var/cache cpu_shares: 1024 deploy: resources: limits: memory: 300M flyway-db: image: docker.swordfishsecurity.com/hub-db:${hub_db_version} container_name: flyway-db networks: - net-hub environment: - hubadmPassword=${hub_adm_password} - hubappPassword=${hub_app_password} - hubbiPassword=${hub_bi_password} - hubauthPassword=${hub_auth_password} - hubdbName=${hub_db_name} - PGPASSWORD=${pgsql_admin_password} - PGUSER=postgres - PG_URL=${pgsql_url} - PG_PORT=${pgsql_port} - REPAIR_DB_ENABLE=disable - REPAIR_DW_ENABLE=disable #volumes: # - /opt/apphub/demo-hubdb-191208.sql:/opt/sql/dump.pgdata depends_on: - postgresql hub-air: image: docker.swordfishsecurity.com/hub-air:${hub_air_version} container_name: hub-air volumes: - /opt/apphub/logs/hub-air/logs:/opt/py-model/logs # - ./ml:/opt/py-model/ml - ./ml/local:/opt/py-model/ml/local environment: - TZ=Europe/Moscow - LOG_LEVEL=DEBUG - LOG_FILE=1 - LOG_BASE_PATH=/opt/py-model/logs/avc_prediction.log - MODEL_USE_ENCRYPTION=${MODEL_USE_ENCRYPTION} - MODEL_SECRET_KEY="${MODEL_SECRET_KEY}" #- AUTH_EXPIRED="" #days #- AUTH_SECRET_KEY="" #- AUTH_USE="1" networks: - net-hub pids_limit: 100 security_opt: - no-new-privileges restart: on-failure:5 read_only: true cpu_shares: 512 deploy: resources: limits: memory: 150M fluentd: image: docker.swordfishsecurity.com/public/fluentd-v1.12.1:latest container_name: fluentd user: root environment: - TZ=Europe/Moscow volumes: - ./logs/hub-core:/var/log-core:ro - ./logs/hub-ui:/var/log-ui:ro - ./logs/hub-air:/var/log-ml:ro - ./logs/postgresql:/var/log-postgresql:ro - /var/log:/var/log-system:ro - ./fluentd/fluent.conf:/fluentd/etc/fluent.conf:ro networks: net-hub: driver: "bridge" driver_opts: com.docker.network.driver.mtu: 1400 ipam: driver: default config: - subnet: 172.20.0.0/16 -
Запустите AppSec.Hub, см. раздел «Запуск AppSec.Hub».
Резервное копирование
Для резервного копирования необходимо:
- Остановить AppSec.Hub, см. раздел «Остановка AppSec.Hub».
- Сделать резервную копию директории установки AppSec.Hub (по умолчанию,
/opt/apphub). - Выполнить резервное копирование директорий, относящихся к docker volumes, но расположенных за пределами директории установки.
- Запустить AppSec.Hub, см. раздел «Запуск AppSec.Hub».
Восстановление из резервной копии
Для восстановления необходимо проделать следующие шаги:
- Если на сервере ранее был установлен AppSec.Hub:
- Остановить AppSec.Hub, см. раздел «Остановка AppSec.Hub».
- Переместить или переименовать директорию установки AppSec.Hub (по умолчанию,
/opt/apphub). - Переместить или переименовать директории, относящиеся к docker volumes, но расположенные за пределами директории установки (если такие имеются).
- Восстановить из резервной копии установочную директорию AppSec.Hub (по умолчанию,
/opt/apphub). - Восстановить из резервной копии директории, относящиеся к docker volumes, но расположенные за пределами директории установки.
- Запустить AppSec.Hub, см. раздел «Запуск AppSec.Hub».
- Если на сервере ранее не был установлен AppSec.Hub
- Восстановить из резервной копии установочную директорию AppSec.Hub (по умолчанию,
/opt/apphub). - Восстановить из резервной копии директории, относящиеся к docker volumes, но расположенные за пределами директории установки (если такие имеются).
- Запустить AppSec.Hub, см. раздел «Запуск AppSec.Hub».
- Восстановить из резервной копии установочную директорию AppSec.Hub (по умолчанию,
Выполните базовый тест восстановленной установки:
- Авторизация.
- Просмотр списка инструментов, проверка соединения с ними (Test connection).
- Просмотр списка приложений.
- Просмотр результатов сканирования (Issues) и дефектов ИБ (Defects).
- Выборочный запуск DevSecOps пайплайнов.
- Просмотр результатов нового сканирования.
Настройка антивирусной защиты
На сервере с установленным AppSec.Hub необходимо установить антивирусное программное обеспечение в соответствии с политиками компании в области антивирусной защиты.