Oбновление 2.1.X до 2023.1
AppSec.Hub (UI/Core)
-
Остановите AppSec.Hub.
sudo docker-compose down
-
Сгенерируйте ключ подписи jwt-токена, который в дальнейшем будет указываться в сервисе gateway (команду выполнить на локальной машине).
dd if=/dev/urandom bs=1 count=64 2>/dev/null | base64 -w 0 | rev | cut -b 3- | rev
-
Добавьте в конфигурационный файл docker-compose.yaml следующие сервисы.
consul: image: docker.swordfishsecurity.com/public/sfs-consul:1.14.4 container_name: consul volumes: - ./consul-data:/consul/data - ./config/consul/server.json:/consul/config/server.json networks: - net-hub healthcheck: test: curl -f http://localhost:8500 ports: - "8500:8500" - "8600:8600/tcp" - "8600:8600/udp" command: "agent -server -bootstrap -ui -client=0.0.0.0 -bind=127.0.0.1 -config-file=/consul/config/server.json" restart: on-failure:5 pids_limit: 300 security_opt: - no-new-privileges cpu_shares: 1024 deploy: resources: limits: memory: 300M gateway: image: docker.swordfishsecurity.com/appsechub/gateway:${gateway_version} container_name: gateway environment: - TZ=Europe/Moscow - JWT_TOKEN=${gateway_jwt_token} - CONSUL_HOST=http://consul - CONSUL_PORT=8500 - CONSUL_TOKEN=${consul_token} links: - consul - hub-core depends_on: hub-core: condition: service_healthy networks: - net-hub pids_limit: 400 security_opt: - no-new-privileges cpu_shares: 2048 restart: on-failure:5 deploy: resources: limits: memory: 1536M issue-rule: image: docker.swordfishsecurity.com/appsechub/issue-rule:${issue_rule_version} container_name: issue-rule environment: - TZ=Europe/Moscow - CONSUL_HOST=http://consul - CONSUL_PORT=8500 - CONSUL_TOKEN=${consul_token} - DB_URL=jdbc:postgresql://${pgsql_url}/${hub_db_name} - DB_USERNAME=hubapp - DB_PASSWORD=${hub_app_password} networks: - net-hub links: - flyway-db depends_on: flyway-db: condition: service_completed_successfully restart: on-failure:5 read_only: true pids_limit: 400 security_opt: - no-new-privileges cpu_shares: 768 deploy: resources: limits: memory: 600M
Пример docker-compose.yml приведен в «Приложение 9. Пример docker-compose.yml для контейнера appsec.hub».
-
Укажите очерёдность запуска контейнеров. Добавьте в сервисы выделенные блоки.
hub-core
Пример
hub-core: image: docker.swordfishsecurity.com/appsechub/hub-core:${hub_core_version} container_name: hub-core links: - consul depends_on: consul: condition: service_healthy networks: - net-hub environment: - 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 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 #- ./certs/rootCA.crt:/etc/ssl/certs/self-signed/rootCA.crt #- ./certs/cacerts:/usr/lib/jvm/java-11-amazon-corretto/lib/security/cacerts 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
Пример
hub-ui: image: docker.swordfishsecurity.com/appsechub/hub-ui:${hub_ui_version} container_name: hub-ui links: - hub-core - gateway depends_on: hub-core: condition: service_healthy gateway: condition: service_healthy networks: - net-hub ports: - ${IP_EXTERNAL}:80:8080/tcp - ${IP_EXTERNAL}:443:4443/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
-
Добавьте следующие строки в файл /opt/apphub/config/hub-core/app.properties.
-
В конфигурационном файле config/hub-ui/hub.conf замените значение параметра
proxy_pass
сhttp://hub-core:8080/hub/
наhttp://gateway:8080/hub/
. Пример конфигурационного файла приведен в разделе «Приложение 13. Конфигурационный файл hub.conf».location /hub/ { proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Server $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; add_header X-Frame-Options SAMEORIGIN; proxy_pass http://gateway:8080/hub/; }
-
Добавьте необходимые секреты в файл .env.
gateway_version=2023.1 issue_rule_version=2023.1 gateway_jwt_token=<сгенерированный ключ подписи jwt-токена для сервиса gateway> consul_token=<пока остаётся пустым>
Пример файла .env см. в «Приложении 1. Конфигурационный файл .env».
-
Создайте необходимые директории (команды выполнять из директории, где установлен AppSec.Hub).
mkdir -p consul-data mkdir -p config/consul
После создания директорий необходимо создать конфигурационный файл для сервиса consul — config/consul/server.json со следующим содержимым.
-
Запустите сервис consul и создайте токен доступа (команды выполнять из директории, где установлен AppSec.Hub).
sudo docker-compose up -d consul sleep 20 sudo docker exec -it consul sh -c "consul acl bootstrap | grep -i secretid" sudo docker-compose down
-
Скопируйте значение поля
SecretID
и добавьте в переменныеconsul_token
файла .env иhub.consul.token
файлаapp.properties
. -
Запустите AppSec.Hub.
sudo docker-compose up -d
AppSec.Hub Engine (Jenkins)
-
Остановите Jenkins.
cd /opt/jenkins sudo docker-compose down
-
Укажите новые версии образов в файле .env.
jenkins_master=2023.1.2 jenkins_node=2023.1.2
-
Загрузите новые версии контейнеров.
docker-compose pull
-
После загрузки образов запустите систему.
docker-compose up -d