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

Oбновление 2024.3.2 до 2024.4.1

AppSec.Hub

AppSec.Hub (UI/Core)

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

    cd /opt/apphub
    sudo docker-compose down
    

    Важно!

    В связи с изменением адреса репозитория после выключения docker-compose необходимо заново выполнить авторизацию с помощью команды docker login.

    Пожалуйста, используйте следующий адрес репозитория: registry.appsec.global.

  2. Создайте папки.

    sudo mkdir -p /opt/apphub/db-data/
    sudo mkdir -p /opt/apphub/docker/pythonpath_dev
    
  3. Создайте конфигурационный файл /opt/apphub/docker/docker-bootstrap.sh (см. «Приложение 18. Конфигурационный файл metrics docker-bootstrap.sh»).

  4. Создайте конфигурационный файл /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.
  5. Создайте конфигурационный файл /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.
  6. Создайте конфигурационный файл /opt/apphub/docker/pythonpath_dev/superset_config.py (см. «Приложение 21. Конфигурационный файл metrics superset_config.py»).

  7. Назначьте группу и владельца для созданных папкок.

    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
    
  8. Добавьте в конец файла config/hub-core/app.properties следующую строку (см. «Приложение 4. Конфигурационный файл app.properties»).

    hub.config.bulkIssuesThreadPoolQueueCapacity=${config.bulkIssuesThreadPoolQueueCapacity:100}
    
  9. Добавьте в файл /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/;
    }
    
  10. Добавьте в конец файла /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}
    
  11. В конфигурационном файле /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
    
  12. Добавьте в конец файла /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
    
  13. В конфигурационный файл 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
    
  14. Загрузите новые версии контейнеров. Для этого в папке, указанной при установке (по умолчанию — /opt/apphub), выполните следующую команду.

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

    docker-compose up -d
    

Helm чарт

Примечание

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

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

  1. Изменения в именовании и структуре проекта:

    • Проведена переработка структуры проекта и изменение именования компонентов.
  2. Модуль hubcore:

    • Конфигурационные файлы app_properties, auth_properties, product_properties теперь настраиваются через раздел hubcore.options, при этом большинство параметров имеют значения по умолчанию, но для некоторых значение необходимо указать вручную.
    • Переменную JAVA_OPTS теперь рекомендуется использовать для передачи дополнительных параметров и флагов.
    • Следующие опции были переименованы:
      • replicaCount теперь называется replicas.
      • volumes переименована в extraVolumes.
      • volumeMounts теперь называется extraVolumeMounts.
  3. Модуль hubui:

    • Добавлена новая опция selectedNginxConf, которая позволяет переключаться между конфигурациями Nginx. Возможные значения:
      • "default" — метрики выключены (значение по умолчанию).
      • "metrics" — метрики включены.
    • Добавлена опция customNginxConfs, позволяющая полностью переопределить конфигурацию Nginx.
  4. Документация Helm чарта:

    • Добавлены подробные описания параметров Helm чарта для удобства настройки и использования.
  5. Репозиторий образов:

    • Изменено имя репозитория для образов на registry.appsec.global.
  6. Добавлен новый модуль метрик.

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=2024.4.1
    hub_engine_version=2024.4.1
    
  3. Загрузите новые версии контейнеров.

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

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