Oбновление 2024.3.2 до 2024.4.1
AppSec.Hub
AppSec.Hub (UI/Core)
-
Остановите AppSec.Hub.
cd /opt/apphub sudo docker-compose down
Важно!
В связи с изменением адреса репозитория после выключения docker-compose необходимо заново выполнить авторизацию с помощью команды
docker login
.Пожалуйста, используйте следующий адрес репозитория:
registry.appsec.global
. -
Создайте папки.
sudo mkdir -p /opt/apphub/db-data/ sudo mkdir -p /opt/apphub/docker/pythonpath_dev
-
Создайте конфигурационный файл /opt/apphub/docker/docker-bootstrap.sh (см. «Приложение 18. Конфигурационный файл metrics docker-bootstrap.sh»).
-
Создайте конфигурационный файл /opt/apphub/docker/docker-init.sh (см. «Приложение 19. Конфигурационный файл metrics docker-init.sh») и выполните его настройку. В скрипте инициализации базы данных metrics, в секции, определяющей администратора БД metrics:
superset fab create-admin \ --username admin \ --firstname Superset \ --lastname Admin \ --email admin@superset.com \
укажите следующие параметры:
--username
— логин пользователя с правами администратора БД metrics;--firstname
— имя пользователя с правами администратора БД metrics;--lastname
— фамилия пользователя с правами администратора БД metrics;--email
— электронная почта пользователя с правами администратора БД metrics.
-
Создайте конфигурационный файл /opt/apphub/docker/.env (см. «Приложение 20. Конфигурационный файл metrics .env») и выполните его настройку. Укажите следующие параметры:
DATABASE_PASSWORD
,POSTGRES_PASSWORD
— пароль пользователя с административным доступом к основной схеме БД metrics.ADMIN_PASSWORD
— пароль пользователя администратора metrics, по умолчанию будет иметь значениеadmin
. Этот пароль необходимо поменять и задать такое же значение для пароляmetrics.password
на шагах 10 и 12 данной процедуры обновления.SUPERSET_SECRET_KEY
— установите для этого параметра значение, полученное в результате выполнения следующей команды:openssl rand -base64 42
.
-
Создайте конфигурационный файл /opt/apphub/docker/pythonpath_dev/superset_config.py (см. «Приложение 21. Конфигурационный файл metrics superset_config.py»).
-
Назначьте группу и владельца для созданных папкок.
sudo chown 70:70 -R /opt/apphub/db-data sudo chown 100:1000 -R /opt/apphub/docker/ sudo chmod u+x /opt/apphub/docker/docker-bootstrap.sh sudo chmod u+x /opt/apphub/docker/docker-init.sh
export REMAP_UID=$(cat /etc/subuid | grep -i $USER | awk -F : '{print $2}') export UID_70=$((${REMAP_UID}+69)) export UID_1000=$((${REMAP_UID}+999)) sudo chown ${UID_70}:${UID_70} -R /opt/apphub/db-data sudo chown ${UID_1000}:${UID_1000} -R /opt/apphub/docker/ sudo chmod u+x /opt/apphub/docker/docker-bootstrap.sh sudo chmod u+x /opt/apphub/docker/docker-init.sh
sudo chown 70:70 -R /opt/apphub/db-data sudo chown 1000:1000 -R /opt/apphub/docker/ sudo chmod u+x /opt/apphub/docker/docker-bootstrap.sh sudo chmod u+x /opt/apphub/docker/docker-init.sh
export REMAP_UID=$(cat /etc/subuid | grep -i $USER | awk -F : '{print $2}') export REMAP_GID=$(cat /etc/subgid | grep -i $USER | awk -F : '{print $2}') export UID_70=$((${REMAP_UID}+69)) export GID_70=$((${REMAP_GID}+69)) export UID_2000=$((${REMAP_UID}+1999)) export GID_2000=$((${REMAP_GID}+1999)) sudo chown ${UID_70}:${GID_70} -R /opt/apphub/db-data sudo chown ${UID_2000}:${GID_2000} -R /opt/apphub/docker/ sudo chmod u+x /opt/apphub/docker/docker-bootstrap.sh sudo chmod u+x /opt/apphub/docker/docker-init.sh
-
Добавьте в конец файла config/hub-core/app.properties следующую строку (см. «Приложение 4. Конфигурационный файл app.properties»).
hub.config.bulkIssuesThreadPoolQueueCapacity=${config.bulkIssuesThreadPoolQueueCapacity:100}
-
Добавьте в файл /opt/apphub/config/hub-ui/hub.conf следующие строки (см. «Приложение 13. Конфигурационный файл hub.conf»).
location /embedded/ { proxy_set_header X-Forwarded-Port 443; proxy_set_header X-Forwarded-Proto https; proxy_set_header X-Forwarded-Scheme https; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Scheme https; proxy_set_header upgrade-insecure-requests 1; proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://hub-superset:8088/embedded/; } location /static/ { proxy_set_header X-Forwarded-Port 443; proxy_set_header X-Forwarded-Proto https; proxy_set_header X-Forwarded-Scheme https; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Scheme https; proxy_set_header upgrade-insecure-requests 1; proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://hub-superset:8088/static/; } location /api/ { proxy_set_header X-Forwarded-Port 443; proxy_set_header X-Forwarded-Proto https; proxy_set_header X-Forwarded-Scheme https; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Scheme https; proxy_set_header upgrade-insecure-requests 1; proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://hub-superset:8088/api/; } location /superset/ { proxy_set_header X-Forwarded-Port 443; proxy_set_header X-Forwarded-Proto https; proxy_set_header X-Forwarded-Scheme https; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Scheme https; proxy_set_header upgrade-insecure-requests 1; proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://hub-superset:8088/superset/; }
-
Добавьте в конец файла /opt/apphub/config/hub-core/auth.properties следующие строки (см. «Приложение 12. Конфигурационный файл auth.properties») и для пароля
metrics_password
укажите значение, заданное на шаге 5 данной процедуры обновления.metrics.username=${hub.metrics.username:admin} metrics.password=${hub.metrics.password:admin}
-
В конфигурационном файле /opt/apphub/.env (см. «Приложение 1. Конфигурационный файл .env») добавьте в список
hub_metrics_version
,hub_metrics_bridge_version
иhub_metrics_pgtt_version
и укажите новые версии образов.hub_core_version=2024.4.1 hub_ui_version=2024.4.1 hub_air_version=2024.4.1 hub_db_version=2024.4.1 hub_gateway_version=2024.4.1 hub_issue_rule_version=2024.4.1 hub_issue_version=2024.4.1 hub_sso_version=2024.4.1 hub_metrics_version=2024.4.1 hub_metrics_bridge_version=2024.4.1 hub_metrics_pgtt_version=2024.4.1
-
Добавьте в конец файла /opt/apphub/.env следующие строки (см. «Приложение 1. Конфигурационный файл .env») и укажите значения параметров
metrics_pg_password
,metrics_db_password
,metrics_password
иpgtt_scheduler_db_password
. Для пароляmetrics_password
необходимо указать значение, заданное на шаге 5 данной процедуры обновления.metrics_pg_user=metrics metrics_pg_password="changeit" metrics_pg_url=metrics-db metrics_db_password="changeit" metrics_host=http://hub-superset metrics_port=8088 metrics_username=admin metrics_password="changeit" metrics_database_url="postgresql+psycopg2://metrics_user:%s@metrics-db:5432/metrics_data" pgtt_pghost=metrics-db pgtt_pgport=5432 pgtt_pguser=scheduler pgtt_scheduler_db_password="changeit" pgtt_pgdatabase=metrics_data
-
В конфигурационный файл docker-compose.yml для AppSec.Hub (см. «Приложение 9. Пример docker-compose.yml для контейнера AppSec.Hub») добавьте следующие строки в начале файла:
x-metrics-image: &metrics-image registry.appsec.global/appsechub/hub-metrics:${hub_metrics_version} x-metrics-depends-on: &metrics-depends-on - metrics-db x-metrics-volumes: &metrics-volumes # /app/pythonpath_docker will be appended to the PYTHONPATH in the final container - ./docker:/app/docker - metrics_home:/app/metrics_home
а также следующие строки перед секцией
networks:
в конце файла:metrics-db: env_file: - path: docker/.env # default required: true - path: docker/.env-local # optional override required: false image: registry.appsec.global/public/sfs-postgresql:13.2.2-alpine networks: - net-hub container_name: metrics-db restart: unless-stopped environment: - POSTGRES_USER=metrics - POSTGRES_DB=metrics - PGDATA=/var/lib/postgresql/data volumes: - ./db-data:/var/lib/postgresql/data deploy: resources: limits: memory: 600M pids: 400 metrics: env_file: - path: docker/.env # default required: true - path: docker/.env-local # optional override required: false image: *metrics-image networks: - net-hub container_name: hub-superset command: ["/app/docker/docker-bootstrap.sh", "app-gunicorn"] user: "root" restart: unless-stopped depends_on: *metrics-depends-on volumes: *metrics-volumes deploy: resources: limits: memory: 600M pids: 400 metrics-init: image: *metrics-image networks: - net-hub container_name: metrics-init command: ["/app/docker/docker-init.sh"] env_file: - path: docker/.env # default required: true - path: docker/.env-local # optional override required: false depends_on: metrics-db: condition: service_healthy user: "root" volumes: *metrics-volumes healthcheck: disable: true deploy: resources: limits: memory: 300M pids: 400 metrics-appsechub-bridge: container_name: 'metrics-appsechub-bridge' image: registry.appsec.global/appsechub/hub-metrics-bridge:${hub_metrics_bridge_version} networks: - net-hub depends_on: metrics-db: condition: service_healthy environment: PG_USER: ${metrics_pg_user} PGPASSWORD: ${metrics_pg_password} PG_URL: ${metrics_pg_url} SCHEDULER_DB_PASSWORD: ${pgtt_scheduler_db_password} METRICS_DB_PASSWORD: ${metrics_db_password} REMOTE_HOST_DB: ${pgsql_url} REMOTE_PORT_DB: ${pgsql_port} REMOTE_DB: ${hub_db_name} REMOTE_USER_DB: hubadm REMOTE_PASSWORD_DB: ${hub_adm_password} METRICS_HOST: ${metrics_host} METRICS_PORT: ${metrics_port} METRICS_USERNAME: ${metrics_username} METRICS_PASSWORD: ${metrics_password} METRICS_DATABASE_URL: ${metrics_database_url} CHRON: "0 * * * *" CONSUL_HOST: http://consul CONSUL_PORT: 8500 CONSUL_TOKEN: ${consul_token} restart: on-failure:5 deploy: resources: limits: memory: 600M pids: 400 pg-timetable: image: registry.appsec.global/appsechub/hub-metrics-pg-timetable:${hub_metrics_pgtt_version} networks: - net-hub container_name: 'pg-timetable' environment: - PGTT_PGHOST=${pgtt_pghost} - PGTT_PGPORT=${pgtt_pgport} - PGTT_PGUSER=${pgtt_pguser} - PGTT_PGPASSWORD=${pgtt_scheduler_db_password} - PGTT_PGDATABASE=${pgtt_pgdatabase} command: '-c=metrics-worker' depends_on: metrics-db: condition: service_healthy deploy: resources: limits: memory: 100M pids: 400 volumes: metrics_home: external: false db_home: external: false db-data: driver: local
-
Загрузите новые версии контейнеров. Для этого в папке, указанной при установке (по умолчанию — /opt/apphub), выполните следующую команду.
docker-compose pull
-
После загрузки образов запустите систему.
docker-compose up -d
Helm чарт
Примечание
Версия Helm чарта Appsec.Hub: 0.2.4.
Список изменений в Helm чарте Appsec.Hub
-
Изменения в именовании и структуре проекта:
- Проведена переработка структуры проекта и изменение именования компонентов.
-
Модуль hubcore:
- Конфигурационные файлы app_properties, auth_properties, product_properties теперь настраиваются через раздел
hubcore.options
, при этом большинство параметров имеют значения по умолчанию, но для некоторых значение необходимо указать вручную. - Переменную
JAVA_OPTS
теперь рекомендуется использовать для передачи дополнительных параметров и флагов. - Следующие опции были переименованы:
replicaCount
теперь называетсяreplicas
.volumes
переименована вextraVolumes
.volumeMounts
теперь называетсяextraVolumeMounts
.
- Конфигурационные файлы app_properties, auth_properties, product_properties теперь настраиваются через раздел
-
Модуль hubui:
- Добавлена новая опция
selectedNginxConf
, которая позволяет переключаться между конфигурациями Nginx. Возможные значения:- "default" — метрики выключены (значение по умолчанию).
- "metrics" — метрики включены.
- Добавлена опция
customNginxConfs
, позволяющая полностью переопределить конфигурацию Nginx.
- Добавлена новая опция
-
Документация Helm чарта:
- Добавлены подробные описания параметров Helm чарта для удобства настройки и использования.
-
Репозиторий образов:
- Изменено имя репозитория для образов на
registry.appsec.global
.
- Изменено имя репозитория для образов на
-
Добавлен новый модуль метрик.
AppSec.Hub Engine (Jenkins)
Важно!
Начиная с версии 2024.4.1, если планируется использование инструментов PT Application Inspector или CodeScoring, необходимо подготовить Docker-образ по инструкции, приведенной в разделе «Добавление в Docker-образ hub-engine агентов Johnny и PT AISA».
-
Остановите Jenkins.
cd /opt/jenkins sudo docker-compose down
-
Укажите новые версии образов в файле .env.
hub_engine_manager_version=2024.4.1 hub_engine_version=2024.4.1
-
Загрузите новые версии контейнеров.
docker-compose pull
-
После загрузки образов запустите систему.
docker-compose up -d