Перейти к содержанию

Обновление 2025.1.2 до 2025.1.3

Обновление AppSec.Hub (UI/Core) в Kubernetes

Примечание

Версия Helm-чарта Appsec.Hub: 0.2.7.

  1. Скачайте новый Helm-чарт.

    helm pull helm pull oci://registry.appsec.global/appsechub/hub-helm/appsechub --version 0.2.7
    
  2. Извлеките файлы из архива.

    tar -xvf tar -xvf appsechub-0.2.7.tgz && cd appsechub
    
  3. Сравните два файла values.yaml (текущий и новый из архива) для выявления изменений.

    diff -y --suppress-common-lines /path/to/actual/values.yaml /path/to/new/values.yaml
    
  4. Заполните новый файл values.yaml вашими значениями, в соответствии с требованиями вашей среды.

  5. Обновите развертывание.

    helm upgrade --install appsechub . --namespace "appsechub" --create-namespace -f values.yaml
    

Список изменений в Helm-чарте Appsec.Hub

  1. Переработан модуль hub-engine, добавлена возможность использования как hub-engine ноды, так и агента сканирования hub-pipline-agent, не требующего установки Jenkins.

  2. Добавлены модули hub-pipeline, rabbitmq, hub-pipline-agent.

Обновление AppSec.Hub (UI/Core) в Docker

Обновление при установке AppSec.Hub и Jenkins на одном хосте

  1. Остановите AppSec.Hub.

    cd /opt/apphub
    sudo docker-compose down
    
  2. Добавьте в конец файла config/hub-core/app.properties следующую строку (см. «Приложение 4. Конфигурационный файл app.properties»).

    hub.osa.issues.import.cron.expression=${osa.issues.import.cron.expression:0 0 5 * * *}
    
  3. В конфигурационном файле /opt/apphub/.env (см. «Приложение 1. Конфигурационный файл .env») укажите новые версии образов:

    hub_core_version=2025.1.3
    hub_ui_version=2025.1.3
    hub_air_version=2025.1.3
    hub_db_version=2025.1.3
    hub_gateway_version=2025.1.3
    hub_issue_rule_version=2025.1.3
    hub_issue_version=2025.1.3
    hub_sso_version=2025.1.3
    hub_metrics_version=2025.1.3
    hub_metrics_bridge_version=2025.1.3
    

    И добавьте строки для версий образов новых микросервисов:

    hub_pipeline_version=2025.1.3
    rabbitmq_version=3.13-management-alpine
    hub_pipeline_agent_version=2025.1.3
    
  4. Добавьте следующие строки в конец файла /opt/apphub/.env (см. «Приложение 1. Конфигурационный файл .env»), указав переменные и значения параметров в соответствии с вашим окружением:

    # Директория для хранения архивов сканов для hub-pipeline-agent
    ARCHIVE_FOLDER=/app/archive_folder
    # Директория для временного хранения файлов сканов
    SCANS_FOLDER=/app/scans_folder        
    # Переменные для регистрации микросервисов hub-pipeline-agent и hub-pipeline на consul
    # Если у вас этот блок определен выше - пропустите
    CONSUL_HOST=http://consul
    CONSUL_PORT="8500"
    CONSUL_TOKEN="changeit"
    # Ключ для шифрования логинов и паролей для микросервисов AppSec.Hub
    # Должен совпадать с ключом hub-core
    ENCRYPTION_KEY="changeit"
    # Используется для шифрования траффика между контейнерами
    # В данный момент в бета-режиме
    GRPC_USE_TLS=false
    # Количество блоков с переменными GRPC_ADDRESS, GRPC_ID, GRPC_NAME, GRPC_PORT и GRPC_TAGS - по количеству пайплайн-агентов,
    # под каждый агент должен быть создан свой блок
    # GRPC_PORT для каждого контейнера уникальный (50052, 50053, 50054, etc.)
    GRPC_ADDRESS=hub-pipeline-agent-1
    GRPC_ID=hub-pipeline-agent-1
    GRPC_NAME=hub-pipeline-agent-1
    GRPC_PORT="50052"
    GRPC_TAGS=["hub-pipeline-agent-1", "grpc-service"]
    # Настройки логирования hub-pipeline-agent
    LOG_LEVEL=INFO
    # Имя, хост и порт для hub-pipeline
    PIPELINE_SERVICE_NAME=grpc-pipeline-50053
    PIPELINE_SERVICE_HOST=hub-pipeline
    PIPELINE_SERVICE_PORT=50053
    # Переменные для подключения hub-pipeline-agent и hub-pipeline к rabbitmq
    RABBITMQ_MANAGEMENT_PORT="15672"
    RABBITMQ_HOST=rabbitmq
    RABBITMQ_AMQP_PORT=5672
    RABBITMQ_PASSWORD="changeit"
    RABBITMQ_PORT="5672"
    RABBITMQ_ROUTING_KEY=super
    RABBITMQ_USERNAME=user
    RABBITMQ_USER=user
    # Используется для шифрования траффика hub-pipeline
    # В данный момент в бета-режиме
    USE_GRPC_SECURITY=false
    GRPC_AUTHORITY=<адрес хоста(url), на котором установлены пайплайн-агенты>
    
  5. В конфигурационном файле docker-compose.yml для AppSec.Hub (см. «Приложение 9. Пример docker-compose.yml для контейнера AppSec.Hub») добавьте выделенную строку для сервиса hub-issue и измените предыдущие строки, связанные с consul:

        hub-issue:
            image: registry.appsec.global/appsechub/hub-issue:${hub_issue_version}
            container_name: hub-issue
            environment:
                - TZ=Europe/Moscow
                - CONSUL_HOST=${CONSUL_HOST}
                - CONSUL_PORT=${CONSUL_PORT}
                - CONSUL_TOKEN=${CONSUL_TOKEN}
                - DB_URL=jdbc:postgresql://${pgsql_url}/${hub_db_name}
                - HUBAPP_USERNAME=hubapp
                - HUBAPP_PASSWORD=${hub_app_password}
                - ENCRYPT_KEY=${ENCRYPTION_KEY}
    
  6. В конфигурационном файле docker-compose.yml для AppSec.Hub (см. «Приложение 9. Пример docker-compose.yml для контейнера AppSec.Hub») добавьте следующие сервисы:

    rabbitmq:
      image: registry.appsec.global/public/rabbitmq:${rabbitmq_version}
      container_name: rabbitmq
      environment:
        - RABBITMQ_DEFAULT_USER=${RABBITMQ_USERNAME}
        - RABBITMQ_DEFAULT_PASS=${RABBITMQ_PASSWORD}
      networks:
        - net-hub
      volumes:
        - ./rabbit:/var/lib/rabbitmq
      ports:
        - 15672:15672
        - 5672:5672
      restart: on-failure:5
      security_opt:
        - no-new-privileges
      cpu_shares: 1024
      deploy:
          resources:
              limits:
                  memory: 300M
    
    hub-pipeline:
      image: registry.appsec.global/appsechub/hub-pipeline:${hub_pipeline_version}
      container_name: hub-pipeline
      environment:
        - PG_USER=postgres
        - PGPASSWORD=${pgsql_admin_password}
        - PG_URL=${pgsql_url}
        - HUB_URL=${HUB_URL}
        - TZ=Europe/Moscow
        - CONSUL_HOST=${CONSUL_HOST}
        - CONSUL_PORT=${CONSUL_PORT}
        - CONSUL_TOKEN=${CONSUL_TOKEN}
        - DB_URL=jdbc:postgresql://${pgsql_url}/pipeline_db
        - HUBAPP_USERNAME=hubapp
        - HUBAPP_PASSWORD=${hub_app_password}
        - RABBITMQ_HOST=${RABBITMQ_HOST}
        - RABBITMQ_AMQP_PORT=${RABBITMQ_AMQP_PORT}
        - RABBITMQ_USERNAME=${RABBITMQ_USERNAME}
        - RABBITMQ_PASSWORD=${RABBITMQ_PASSWORD}
        - USE_GRPC_SECURITY=${USE_GRPC_SECURITY}
        - GRPC_AUTHORITY=${GRPC_AUTHORITY}
      cpu_shares: 768
      deploy:
          resources:
              limits:
                  memory: 1000M
                  pids: 400
    
    hub-pipelne-agent-1:
        image: registry.appsec.global/appsechub/hub-pipeline-agent:${hub_pipeline_agent_version}
        container_name: hub-pipeline-agent-1
        networks:
            - net-hub
        user: 2000:2000
        environment:
            - LOG_LEVEL=${LOG_LEVEL}
            - ENCRYPTION_KEY=${ENCRYPTION_KEY}
            - SCANS_FOLDER=${SCANS_FOLDER}
            - ARCHIVE_FOLDER=${ARCHIVE_FOLDER}
            - RABBITMQ__HOST=${RABBITMQ_HOST}
            - RABBITMQ__PORT=${RABBITMQ_PORT}
            - RABBITMQ_MANAGEMENT_PORT=${RABBITMQ_MANAGEMENT_PORT}
            - RABBITMQ__USER=${RABBITMQ_USER}
            - RABBITMQ__PASSWORD=${RABBITMQ_PASSWORD}
            - RABBITMQ__ROUTING_KEY=${RABBITMQ_ROUTING_KEY}
            - CONSUL__HOST=${CONSUL_HOST}
            - CONSUL__PORT=${CONSUL_PORT}
            - CONSUL__TOKEN=${CONSUL_TOKEN}
            - GRPC__ID=${GRPC_ID}
            - GRPC__NAME=${GRPC_NAME}
            - GRPC__TAGS=${GRPC_TAGS}
            - GRPC__PORT=${GRPC_PORT}
            - GRPC__ADDRESS=${GRPC_ADDRESS}
            - GRPC__USE_TLS=${GRPC_USE_TLS}             
            - LANG=en_US.utf-8
            - DOCKER_HOST=tcp://docker-in-docker:2375
            # Переменные для доступа к hub-pipeline
            - PIPELINE_SERVICE_NAME=${PIPELINE_SERVICE_NAME}            
            - PIPELINE_SERVICE_HOST=${PIPELINE_SERVICE_HOST}
            - PIPELINE_SERVICE_PORT=${PIPELINE_SERVICE_PORT}
        volumes:
            - ./ssh-pub-keys-all:/home/ubuntu/.ssh
            - /etc/localtime:/etc/localtime
            - /etc/timezone:/etc/timezone
            - ./certs:/tmp/certs
        restart: on-failure:5
        cpu_shares: 2048
        deploy:
            resources:
                limits:
                    memory: 3072M
    
    docker-in-docker:
        image: registry.appsec.global/public/sfs-docker:19.03.3-dind
        container_name: docker-in-docker
        privileged: true
        volumes:
            - ./docker-certs:/etc/docker/certs.d
            - /sys/fs/cgroup:/sys/fs/cgroup
        environment:
            - DOCKER_TLS_CERTDIR=
        networks:
            - net-hub
        pids_limit: 100
        restart: on-failure:5
        cpu_shares: 512
        deploy:
            resources:
                limits:
                    memory: 512M
                    pids: 100
    

    Файл docker-compose.yml должен содержать количество сервисов hub-pipelne-agent по количеству пайплайн-агентов, под каждый агент должен быть создан свой сервис. Пример фрагмента файла docker-compose.yml для конфигурации с использованием двух пайплайн-агентов:

    ...
    # Для hub-pipelne-agent-1:
    - GRPC__ID=${GRPC_ID_1}
    - GRPC__NAME=${GRPC_NAME_1}
    - GRPC__TAGS=${GRPC_TAGS_1}
    - GRPC__PORT=${GRPC_PORT_1}
    - GRPC__ADDRESS=${GRPC_ADDRESS_1}
    ...
    # Для hub-pipelne-agent-2:
    - GRPC__ID=${GRPC_ID_2}
    - GRPC__NAME=${GRPC_NAME_2}
    - GRPC__TAGS=${GRPC_TAGS_2}
    - GRPC__PORT=${GRPC_PORT_2}
    - GRPC__ADDRESS=${GRPC_ADDRESS_2}
    ...
    
  7. Загрузите новые версии контейнеров. Для этого в папке, указанной при установке (по умолчанию — /opt/apphub), выполните следующую команду.

    docker-compose pull
    
  8. После загрузки образов запустите систему.

    docker-compose up -d
    

Обновление при установке AppSec.Hub и Jenkins на разных хостах

Важно!

При установке AppSec.Hub и Jenkins на разных хостах сервис `hub-pipelne-agent` при установке должен быть установлен на отдельной ноде.
  1. Остановите AppSec.Hub.

    cd /opt/apphub
    sudo docker-compose down
    
  2. Добавьте в конец файла config/hub-core/app.properties следующую строку (см. «Приложение 4. Конфигурационный файл app.properties»).

    hub.osa.issues.import.cron.expression=${osa.issues.import.cron.expression:0 0 5 * * *}
    
  3. В конфигурационном файле /opt/apphub/.env (см. «Приложение 1. Конфигурационный файл .env») укажите новые версии образов:

    hub_core_version=2025.1.3
    hub_ui_version=2025.1.3
    hub_air_version=2025.1.3
    hub_db_version=2025.1.3
    hub_gateway_version=2025.1.3
    hub_issue_rule_version=2025.1.3
    hub_issue_version=2025.1.3
    hub_sso_version=2025.1.3
    hub_metrics_version=2025.1.3
    hub_metrics_bridge_version=2025.1.3
    

    И добавьте строки:

    hub_pipeline_version=2025.1.3
    rabbitmq_version=3.13-management-alpine
    
  4. Выполните последовательность шагов, описанных в разделе «Настройка пайплайн-агентов на удаленном хосте с безопасным соединением TLS».

  5. Выполните последовательность шагов, описанных в разделе «Настройка SSL-соединения для доступа в hub-pipeline».

  6. Загрузите новые версии контейнеров. Для этого в папке, указанной при установке (по умолчанию — /opt/apphub), выполните следующую команду.

    docker-compose pull
    
  7. После загрузки образов запустите систему.

    docker-compose up -d
    

Oбновление AppSec.Hub Engine (Jenkins)

Важно!

Начиная с версии 2024.4.1, если планируется использование инструментов PT Application Inspector или CodeScoring, необходимо подготовить Docker-образ по инструкции, приведенной в разделе «Добавление в Docker-образ hub-engine агентов Johnny и PT AISA».

  1. Остановите Jenkins.

    cd /opt/jenkins
    sudo docker-compose down
    
  2. Укажите новые версии образов в файле .env.

    hub_engine_manager_version=2025.1.3
    hub_engine_version=2025.1.3
    
  3. Загрузите новые версии контейнеров.

    docker-compose pull
    
  4. После загрузки образов запустите систему.

    docker-compose up -d
    
К началу