Установка, запуск и резервное копирование
Требования к инфраструктуре
Установленные для эксплуатации 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 (Смоленск, Воронеж, Орёл) |
Для установки системы необходимо предварительно установить из стандартных репозиториев Docker и Docker-compose.
Пакет | Версия |
---|---|
Docker | 19.03.0 и выше |
Docker-compose | 1.27.0 и выше |
Установка Docker и Docker-compose
В зависимости от используемой операционной системы предлагается четыре способа установки Docker и Docker-compose:
- Ubuntu/CentOS/RHEL (root Docker).
- Ubuntu/CentOS/RHEL (rootless Docker).
- Astra Linux (root Docker).
- Astra Linux (rootless Docker).
Ubuntu/CentOS/RHEL (root Docker)
-
Обновите на сервере пакеты окружения.
sudo apt update sudo apt upgrade -y
sudo yum -y update
-
Установите последнюю версию Docker.
curl -fsSL https://get.docker.com/ | sudo sh
-
Запустите Docker.
sudo systemctl start docker
-
Убедитесь, что Docker успешно запущен.
sudo systemctl status docker
В командной строке должно отобразиться:
Active: active (running)
. -
Для запуска Docker после перезагрузки сервера используйте следующую команду.
sudo systemctl enable docker
-
Проверьте версию Docker.
sudo docker --version
-
Установите Docker-compose.
VERSION=$(curl --silent https://api.github.com/repos/docker/compose/releases/latest | grep -Po '"tag_name": "\K.*\d') DESTINATION=/usr/local/bin/docker-compose sudo curl -L https://github.com/docker/compose/releases/download/${VERSION}/docker-compose-$(uname -s)-$(uname -m) -o $DESTINATION sudo chmod 755 $DESTINATION
-
Проверьте версию Docker-compose.
sudo /usr/local/bin/docker-compose --version
Ubuntu/CentOS/RHEL (rootless Docker)
-
Обновите на сервере пакеты окружения.
sudo apt update sudo apt upgrade -y
sudo yum -y update
-
Установите последнюю версию Docker.
curl -fsSL https://get.docker.com/ | sudo sh
-
Выполните подготовку для установки rootless Docker.
sudo apt install -y uidmap sudo sh -eux <<EOF echo "$USER:100000:65536" >> /etc/subuid echo "$USER:100000:65536" >> /etc/subgid EOF
-
Установите rootless Docker.
dockerd-rootless-setuptool.sh install
-
Проверьте версию Docker.
docker --version
-
Установите Docker-compose.
VERSION=$(curl --silent https://api.github.com/repos/docker/compose/releases/latest | grep -Po '"tag_name": "\K.*\d') DESTINATION=/usr/local/bin/docker-compose sudo curl -L https://github.com/docker/compose/releases/download/${VERSION}/docker-compose-$(uname -s)-$(uname -m) -o $DESTINATION sudo chmod 755 $DESTINATION
-
Проверьте версию Docker-compose.
/usr/local/bin/docker-compose --version
Astra Linux (root Docker)
-
Обновите на сервере пакеты окружения.
sudo apt update sudo apt upgrade -y
-
Установите последнюю версию Docker.
sudo apt install -y docker.io
-
Запустите Docker.
sudo systemctl start docker
-
Убедитесь, что Docker успешно запущен.
sudo systemctl status docker
В командной строке должно отобразиться:
Active: active (running)
. -
Для запуска Docker после перезагрузки сервера используйте следующую команду.
sudo systemctl enable docker
-
Проверьте версию Docker.
sudo docker --version
-
Установите Docker-compose.
sudo apt update && sudo apt install docker-compose -y
-
Проверьте версию Docker-compose.
docker-compose --version
Astra Linux (rootless Docker)
-
Обновите на сервере пакеты окружения.
sudo apt update sudo apt upgrade -y
-
Установите последнюю версию Docker, а также вспомогательные утилиты.
sudo apt install -y docker.io rootless-helper-astra uidmap curl
-
Запустите Docker от непривилегированного пользователя (замените
<username>
на имя пользователя в системе).sudo systemctl start rootless-docker@<username>
-
Убедитесь, что Docker успешно запущен.
sudo systemctl status rootless-docker@<username>
В командной строке должно отобразиться:
Active: active (running)
. -
Для запуска Docker после перезагрузки сервера используйте следующую команду.
sudo systemctl enable rootless-docker@<username>
-
Проверьте версию Docker.
rootlessenv docker --version
-
Установите Docker-compose.
sudo apt update && sudo apt install docker-compose -y
-
Проверьте версию Docker-compose.
docker-compose --version
Примечание
Для упрощения работы с Docker и Docker-compose рекомендуется добавить следующие alias в файл .bash_aliases в домашней директории пользователя (после выполнения команды необходимо перезайти на хост).
cat << EOF >> ~/.bash_aliases
alias docker='rootlessenv docker'
alias docker-compose='rootlessenv docker-compose'
EOF
Настройка локального firewall
sudo ufw allow 443/tcp
Если БД устанавливается отдельно от AppSec.Hub, на инстансе с БД откройте порт 5432 (PostgreSQL).
sudo ufw allow 5432/tcp
sudo firewall-cmd --permanent --zone=public --add-port=443/tcp
sudo firewall-cmd --reload
sudo firewall-cmd --list-all
Если БД устанавливается отдельно от AppSec.Hub, на инстансе с БД откройте порт 5432 (PostgreSQL).
sudo firewall-cmd --permanent --zone=public --add-port=5432/tcp
Установка AppSec.Hub (root/rootless)
-
Создайте папки.
sudo mkdir -p /opt/apphub/config/hub-core sudo mkdir -p /opt/apphub/config/hub-ui sudo mkdir -p /opt/apphub/config/postgresql sudo mkdir -p /opt/apphub/logs/hub-air sudo mkdir -p /opt/apphub/logs/hub-core sudo mkdir -p /opt/apphub/logs/hub-ui sudo mkdir -p /opt/apphub/ml/local sudo mkdir -p /opt/apphub/logs/postgresql sudo mkdir -p /opt/apphub/postgresql/data sudo mkdir -p /opt/apphub/ssl
-
Создайте конфигурационные файлы.
/opt/apphub/.env /opt/apphub/docker-compose.yml /opt/apphub/config/hub-core/app.properties /opt/apphub/config/hub-core/auth.properties /opt/apphub/config/hub-ui/hub.conf /opt/apphub/config/postgresql/postgresql.conf
Примеры конфигурационных файлов приведены в следующих приложениях.
Файл Приложение .env Приложение 1. Конфигурационный файл .env docker-compose.yml Приложение 9. Пример docker-compose.yml для контейнера AppSec.Hub app.properties Приложение 4. Конфигурационный файл app.properties auth.properties Приложение 12. Конфигурационный файл auth.properties hub.conf Приложение 13. Конфигурационный файл hub.conf postgresql.conf Приложение 14. Конфигурационный файл postgresql.conf -
Выполните настройку конфигурационного файла /opt/apphub/.env, см. «Приложение 1. Конфигурационный файл .env». Укажите следующие параметры:
pgsql_admin_password
— пароль пользователя с административным доступом к основной схеме БД;hub_app_password
— пароль пользователя БД для работы AppSec.Hub;hub_auth_password
— пароль пользователя для сервиса аутентификации AppSec.Hub;hub_adm_password
— пароль пользователя с правами администратора на БД AppSec.Hub;-
hub_bi_password
— пароль пользователя с правами работы с AppSec.Hub DWH;Примечание
Для генерации паролей можно использовать следующую команду.
dd if=/dev/urandom bs=1 count=32 2>/dev/null | base64 -w 0 | rev | cut -b 2-17 | rev
-
MODEL_SECRET_KEY
— ключ шифрования моделей AVC.Примечание
Ключ шифрования моделей AVC необходимо получить у сотрудников компании Swordfish Security.
-
Выполните настройку конфигурационного файла /opt/apphub/config/hub-ui/hub.conf, см. «Приложение 13. Конфигурационный файл hub.conf». Приведен пример конфигурации для HTTPS-соединения, если планируется использовать HTTP, удалите из файла следующий раздел.
listen 4443 ssl; ssl_certificate /etc/ssl/certs/ssl-cert/fullchain1.pem; ssl_certificate_key /etc/ssl/certs/ssl-cert/privkey1.pem; if ($scheme != "https") { return 301 https://$host$request_uri; }
Укажите параметр
server_name
— доменное имя сервера/сервиса, на котором будет развернут AppSec.Hub. -
Выполните настройку конфигурационного файла /opt/apphub/config/hub-core/app.properties, см. «Приложение 4. Конфигурационный файл app.properties».
-
db.hub.url
иdb.presentation.url
— замените значения<pgsql_url>
,<pgsql_port>
и<hub_db_name>
на значения соответствующих переменных из файла .env; -
db.hub.password
иdb.presentation.password
— замените<hub_app_password>
на значение соответствующей переменной из файла .env; -
encrypt.key
— замените<HUBAPP-ENC-KEY>
на значение ключа шифрования паролей, используемых для доступа к инструментам ИБ. Размер ключа — 24 символа;Примечание
Для генерации ключа можно использовать следующую команду.
dd if=/dev/urandom bs=1 count=32 2>/dev/null | base64 -w 0 | rev | cut -b 2-25 | rev
-
hub.app.url
— замените на URL, который будет использоваться для доступа к AppSec.Hub.
-
-
Выполните настройку конфигурационного файла /opt/apphub/config/hub-core/auth.properties, см. «Приложение 12. Конфигурационный файл auth.properties».
db.auth.url
— замените значения<pgsql_url>
,<pgsql_port>
и<hub_db_name>
на значения соответствующих переменных из файла .env.db.auth.password
— замените<hub_auth_password>
на значение переменнойhub_auth_password
из файла .env.jwt.token.signing.key
— замените<HUBAPP-SIGN-KEY>
на значение, полученное в результате выполнения следующей команды.dd if=/dev/urandom bs=1 count=64 2>/dev/null | base64 -w 0 | rev | cut -b 2- | rev
-
Если в качестве доверенных необходимо добавить самоподписанные сертификаты, см. раздел «Добавление самоподписанных сертификатов в качестве доверенных».
-
Назначьте группу и владельца локальных папок.
sudo chown 2000:2000 -R /opt/apphub/config/hub-core sudo chown 101:101 -R /opt/apphub/config/hub-ui sudo chown 70:70 -R /opt/apphub/config/postgresql sudo chown 2000:2000 -R /opt/apphub/logs/hub-air sudo chown 2000:2000 -R /opt/apphub/logs/hub-core sudo chown 101:101 -R /opt/apphub/logs/hub-ui sudo chown 2000:2000 -R /opt/apphub/ml/local sudo chown 70:70 -R /opt/apphub/logs/postgresql sudo chown 70:70 -R /opt/apphub/postgresql/data sudo chown 101:101 -R /opt/apphub/ssl
REMAP_UID=$(cat /etc/subuid | grep -i $USER | awk -F : '{print $2}') UID_2000=$((${REMAP_UID}+1999)) UID_101=$((${REMAP_UID}+100)) UID_70=$((${REMAP_UID}+69)) sudo chown ${UID_2000}:${UID_2000} -R /opt/apphub/config/hub-core sudo chown ${UID_101}:${UID_101} -R /opt/apphub/config/hub-ui sudo chown ${UID_70}:${UID_70} -R /opt/apphub/config/postgresql sudo chown ${UID_2000}:${UID_2000} -R /opt/apphub/logs/hub-air sudo chown ${UID_2000}:${UID_2000} -R /opt/apphub/logs/hub-core sudo chown ${UID_101}:${UID_101} -R /opt/apphub/logs/hub-ui sudo chown ${UID_2000}:${UID_2000} -R /opt/apphub/ml/local sudo chown ${UID_70}:${UID_70} -R /opt/apphub/logs/postgresql sudo chown ${UID_70}:${UID_70} -R /opt/apphub/postgresql/data sudo chown ${UID_101}:${UID_101} -R /opt/apphub/ssl
Установите разрешение на прослушивание привилегированных портов от непривилегированного пользователя.
echo "net.ipv4.ip_unprivileged_port_start=0" | sudo tee -a /etc/sysctl.conf sudo sysctl -p /etc/sysctl.conf
Установка AppSec.Hub на Astra Linux (root/rootless)
-
Создайте папки.
sudo mkdir -p /opt/apphub/config/hub-core sudo mkdir -p /opt/apphub/config/hub-ui sudo mkdir -p /opt/apphub/config/postgresql sudo mkdir -p /opt/apphub/logs/hub-air sudo mkdir -p /opt/apphub/logs/hub-core sudo mkdir -p /opt/apphub/logs/hub-ui sudo mkdir -p /opt/apphub/ml/local sudo mkdir -p /opt/apphub/logs/postgresql sudo mkdir -p /opt/apphub/postgresql/data sudo mkdir -p /opt/apphub/ssl
-
Создайте конфигурационные файлы.
/opt/apphub/.env /opt/apphub/docker-compose.yml /opt/apphub/config/hub-core/app.properties /opt/apphub/config/hub-core/auth.properties /opt/apphub/config/hub-ui/hub.conf /opt/apphub/config/postgresql/postgresql.conf
Примеры конфигурационных файлов приведены в следующих приложениях.
Файл Приложение .env Приложение 1. Конфигурационный файл .env docker-compose.yml Приложение 9. Пример docker-compose.yml для контейнера AppSec.Hub
Примечание: Чтобы открыть docker-compose.yml для AppSec.Hub на Astra Linux, перейдя в приложение по ссылке, пожалуйста, откройте вкладку AppSec.Hub на Astra Linux.app.properties Приложение 4. Конфигурационный файл app.properties auth.properties Приложение 12. Конфигурационный файл auth.properties hub.conf Приложение 13. Конфигурационный файл hub.conf postgresql.conf Приложение 14. Конфигурационный файл postgresql.conf -
Выполните настройку конфигурационного файла /opt/apphub/.env, см. «Приложение 1. Конфигурационный файл .env». Укажите следующие параметры:
pgsql_admin_password
— пароль пользователя с административным доступом к основной схеме БД;hub_app_password
— пароль пользователя БД для работы AppSec.Hub;hub_auth_password
— пароль пользователя для сервиса аутентификации AppSec.Hub;hub_adm_password
— пароль пользователя с правами администратора на БД AppSec.Hub;-
hub_bi_password
— пароль пользователя с правами работы с AppSec.Hub DWH;Примечание
Для генерации паролей можно использовать следующую команду.
dd if=/dev/urandom bs=1 count=32 2>/dev/null | base64 -w 0 | rev | cut -b 2-17 | rev
-
MODEL_SECRET_KEY
— ключ шифрования моделей AVC.Примечание
Ключ шифрования моделей AVC необходимо получить у сотрудников компании Swordfish Security.
-
Выполните настройку конфигурационного файла /opt/apphub/config/hub-ui/hub.conf, см. «Приложение 13. Конфигурационный файл hub.conf». Приведен пример конфигурации для HTTPS-соединения, если планируется использовать HTTP, удалите из файла следующий раздел.
listen 4443 ssl; ssl_certificate /etc/ssl/certs/ssl-cert/fullchain1.pem; ssl_certificate_key /etc/ssl/certs/ssl-cert/privkey1.pem; if ($scheme != "https") { return 301 https://$host$request_uri; }
Укажите параметр
server_name
— доменное имя сервера/сервиса, на котором будет развернут AppSec.Hub. -
Выполните настройку конфигурационного файла /opt/apphub/config/hub-core/app.properties, см. «Приложение 4. Конфигурационный файл app.properties».
-
db.hub.url
иdb.presentation.url
— замените значения<pgsql_url>
,<pgsql_port>
и<hub_db_name>
на значения соответствующих переменных из файла .env. -
db.hub.password
иdb.presentation.password
— замените<hub_app_password>
на значение соответствующей переменной файла .env. -
encrypt.key
— замените<HUBAPP-ENC-KEY>
на значение ключа шифрования паролей, используемых для доступа к инструментам ИБ. Размер ключа — 24 символа;Примечание
Для генерации ключа можно использовать следующую команду.
dd if=/dev/urandom bs=1 count=32 2>/dev/null | base64 -w 0 | rev | cut -b 2-25 | rev
-
hub.app.url
— замените на URL, который будет использоваться для доступа к AppSec.Hub.
-
-
Выполните настройку конфигурационного файла /opt/apphub/config/hub-core/auth.properties, см. «Приложение 12. Конфигурационный файл auth.properties».
db.auth.url
— замените значения<pgsql_url>
,<pgsql_port>
и<hub_db_name>
на значения соответствующих переменных из файла .env.db.auth.password
— замените<hubauth-user-password>
на значение переменнойhub_auth_password
из файла .env.jwt.token.signing.key
— замените<HUBAPP-SIGN-KEY>
на значение, полученное в результате выполнения следующей команды.dd if=/dev/urandom bs=1 count=64 2>/dev/null | base64 -w 0 | rev | cut -b 2- | rev
-
Если в качестве доверенных необходимо добавить самоподписанные сертификаты, см. раздел «Добавление самоподписанных сертификатов в качестве доверенных».
-
Назначьте группу и владельца локальных папок.
sudo chown 2000:2000 -R /opt/apphub/config/hub-core sudo chown 101:101 -R /opt/apphub/config/hub-ui sudo chown 70:70 -R /opt/apphub/config/postgresql sudo chown 2000:2000 -R /opt/apphub/logs/hub-air sudo chown 2000:2000 -R /opt/apphub/logs/hub-core sudo chown 101:101 -R /opt/apphub/logs/hub-ui sudo chown 2000:2000 -R /opt/apphub/ml/local sudo chown 70:70 -R /opt/apphub/logs/postgresql sudo chown 70:70 -R /opt/apphub/postgresql/data sudo chown 101:101 -R /opt/apphub/ssl
REMAP_UID=$(cat /etc/subuid | grep -i $USER | awk -F : '{print $2}') UID_2000=$((${REMAP_UID}+1999)) UID_101=$((${REMAP_UID}+100)) UID_70=$((${REMAP_UID}+69)) sudo chown ${UID_2000}:${UID_2000} -R /opt/apphub/config/hub-core sudo chown ${UID_101}:${UID_101} -R /opt/apphub/config/hub-ui sudo chown ${UID_70}:${UID_70} -R /opt/apphub/config/postgresql sudo chown ${UID_2000}:${UID_2000} -R /opt/apphub/logs/hub-air sudo chown ${UID_2000}:${UID_2000} -R /opt/apphub/logs/hub-core sudo chown ${UID_101}:${UID_101} -R /opt/apphub/logs/hub-ui sudo chown ${UID_2000}:${UID_2000} -R /opt/apphub/ml/local sudo chown ${UID_70}:${UID_70} -R /opt/apphub/logs/postgresql sudo chown ${UID_70}:${UID_70} -R /opt/apphub/postgresql/data sudo chown ${UID_101}:${UID_101} -R /opt/apphub/ssl
Установите разрешение на прослушивание привилегированных портов от непривилегированного пользователя.
echo "net.ipv4.ip_unprivileged_port_start=0" | sudo tee -a /etc/sysctl.conf sudo sysctl -p /etc/sysctl.conf
Запуск AppSec.Hub
cd /opt/apphub
sudo docker-compose up -d
cd /opt/apphub
docker-compose up -d
После запуска AppSec.Hub будет доступен по URL, указанном в файле /opt/apphub/config/hub-core/app.properties (см. параметр hub_url
).
Имя предустановленного пользователя — hubadm
, пароль — qweasd123
.
Остановка AppSec.Hub
cd /opt/apphub
sudo docker-compose down
cd /opt/apphub
docker-compose down
Установка Jenkins (root/rootless)
Master нода
За основу взята сборка Jenkins, запускаемая в rootless Docker. Для сборки используется нода master.
Установлен следующий набор плагинов
ace-editor:latest ant:latest antisamy-markup-formatter:latest apache-httpcomponents-client-4-api:latest authentication-tokens:latest bitbucket:latest blueocean:latest blueocean-autofavorite:latest blueocean-bitbucket-pipeline:latest blueocean-commons:latest blueocean-config:latest blueocean-core-js:latest blueocean-dashboard:latest blueocean-display-url:latest blueocean-events:latest blueocean-github-pipeline:latest blueocean-git-pipeline:latest blueocean-i18n:latest blueocean-jira:latest blueocean-jwt:latest blueocean-personalization:latest blueocean-pipeline-api-impl:latest blueocean-pipeline-editor:latest blueocean-pipeline-scm-api:latest blueocean-rest:latest blueocean-rest-impl:latest blueocean-web:latest bouncycastle-api:latest branch-api:latest build-pipeline-plugin:latest build-timeout:latest build-token-root:latest build-token-trigger:latest checkmarx:latest cloudbees-bitbucket-branch-source:latest cloudbees-folder:latest command-launcher:latest conditional-buildstep:latest configuration-as-code:latest copy-data-to-workspace-plugin:latest credentials:latest credentials-binding:latest dependency-check-jenkins-plugin:latest dependency-track:latest display-url-api:latest docker-commons:latest docker-workflow:latest durable-task:latest email-ext:latest external-monitor-job:latest favorite:latest generic-webhook-trigger:latest git:latest git-client:latest github:latest github-api:latest github-branch-source:latest gitlab-plugin:latest git-server:latest gradle:latest handlebars:latest handy-uri-templates-2-api:latest htmlpublisher:latest jackson2-api:latest javadoc:latest jdk-tool:latest jenkins-design-language:latest jira:latest job-fan-in:latest jquery:latest jquery-detached:latest jsch:latest junit:latest ldap:latest lockable-resources:latest mailer:latest mapdb-api:latest matrix-auth:latest matrix-project:latest maven-plugin:latest mercurial:latest metrics:latest momentjs:latest nested-view:latest nexus-jenkins-plugin:latest nuget:latest pam-auth:latest parameterized-trigger:latest permissive-script-security:latest pipeline-build-step:latest pipeline-graph-analysis:latest pipeline-input-step:latest pipeline-milestone-step:latest pipeline-model-api:latest pipeline-model-declarative-agent:latest pipeline-model-definition:latest pipeline-model-extensions:latest pipeline-rest-api:latest pipeline-stage-step:latest pipeline-stage-tags-metadata:latest pipeline-stage-view:latest plain-credentials:latest pubsub-light:latest resource-disposer:latest run-condition:latest scm-api:latest script-security:latest sloccount:latest sse-gateway:latest ssh-agent:latest ssh-credentials:latest ssh-slaves:latest stash-pullrequest-builder:latest structs:latest subversion:latest text-finder:latest timestamper:latest token-macro:latest trilead-api:latest variant:latest view-job-filters:latest windows-slaves:latest workflow-aggregator:latest workflow-api:latest workflow-basic-steps:latest workflow-cps:latest workflow-cps-global-lib:latest workflow-durable-task-step:latest workflow-job:latest workflow-multibranch:latest workflow-scm-step:latest workflow-step-api:latest workflow-support:latest ws-cleanup:latest
Во время запуска проводятся первоначальные настройки, которые задают учетные данные Администратора и базовый URL Jenkins, импортируют в систему все SSL-сертификаты как доверенные и устанавливают переменные окружения.
Slave нода
За основу взят базовый образ Ubuntu, который также запускается в rootless контейнере, поверх которого установлены утилиты и сборщики, необходимые для проведения сканирований.
Данный образ может работать со следующим списком утилит: mono
, cdxgen
, nuget
, npm
, java
, maven
и gradel
.
При подключении ноды к Jenkins необходимо указать следующие метки: all super jenkins-slave-node-all maven mono npm nodejs docker java python pypi cdxgen
.
Установка
-
Создайте папки.
sudo mkdir -p /opt/jenkins/jenkins_home sudo mkdir -p /opt/jenkins/jenkins-slave-all sudo mkdir -p /opt/jenkins/ssh-pub-keys-all sudo mkdir -p /opt/jenkins/certs sudo mkdir -p /opt/jenkins/docker-certs sudo mkdir -p /opt/jenkins/fortify
-
Сохраните файл с публичным ключом authorized_keys в папку ssh-pub-keys-all.
-
Если в качестве доверенных необходимо добавить самоподписанные сертификаты, сохраните корневой сертификат или сертификаты всех узлов с расширением .crt в папку certs. Более подробная информация приведена в разделе «Безопасная сетевая конфигурация».
-
Если для Docker в качестве доверенных необходимо добавить самоподписанные сертификаты, создайте папку docker-certs/<repo>, где
<repo>
— container registry, который указывается при авторизации.Например
Если необходимо выполнить авторизацию с помощью команды
docker login gitlab.example.com
, создайте директорию docker-certs/gitlab.example.com и сохраните корневой сертификат или сертификат узла в ней. -
Задайте права пользователя на папки и файлы.
sudo chown 1000:1000 -R /opt/jenkins/jenkins_home sudo chmod 775 -R /opt/jenkins/fortify sudo chown 1000:2000 -R /opt/jenkins/fortify sudo chown 2000:2000 -R /opt/jenkins/jenkins-slave-all sudo chmod 600 /opt/jenkins/ssh-pub-keys-all/authorized_keys sudo chown 2000:2000 /opt/jenkins/ssh-pub-keys-all/authorized_keys sudo chmod 755 -R /opt/jenkins/certs/ sudo chown 1000:2000 -R /opt/jenkins/certs/
REMAP_UID=$(cat /etc/subuid | grep -i $USER | awk -F : '{print $2}') UID_2000=$((${REMAP_UID}+1999)) UID_1000=$((${REMAP_UID}+999)) sudo chown ${UID_1000}:${UID_1000} -R /opt/jenkins/jenkins_home sudo chmod 775 -R /opt/jenkins/fortify sudo chown ${UID_1000}:${UID_2000} -R /opt/jenkins/fortify sudo chown ${UID_2000}:${UID_2000} -R /opt/jenkins/jenkins-slave-all sudo chmod 600 /opt/jenkins/ssh-pub-keys-all/authorized_keys sudo chown ${UID_2000}:${UID_2000} /opt/jenkins/ssh-pub-keys-all/authorized_keys sudo chown ${UID_2000}:${UID_2000} -R /opt/jenkins/ssh-pub-keys-all sudo chmod 755 -R /opt/jenkins/certs/ sudo chown ${UID_1000}:${UID_2000} -R /opt/jenkins/certs/
-
Создайте файл /opt/jenkins/.env со следующим содержимым:
jenkins_master=<version> jenkins_node=<version>
где
<version>
— последняя актуальная версия продукта, например —2.1.4
. -
Для корректной работы контейнера docker-in-docker выполните следующие команды.
sudo mkdir /sys/fs/cgroup/systemd sudo mount -t cgroup -o none,name=systemd cgroup /sys/fs/cgroup/systemd
-
Создайте файл /opt/jenkins/docker-compose.yaml, пример см. в «Приложении 10».
Важно!
При использовании rootless Docker на хостовой системе контейнер docker-in-docker начинает работать нестабильно. В качестве альтернативы предлагается использовать внешний Docker-демон, взаимодействие с которым осуществляется через SSH-соединение. Таким образом, проводя операции с Docker-контейнерами в образе node-all (запуск, удаление и т. п.), мы проводим эти операции на удалённом хосте, с которым установлено соединение. Важно, что для обеспечения работоспособности такой системы не обязательно иметь 2 инстанса — можно использовать тот же хост, на котором происходит установка Jenkins. Далее приведена инструкция по конфигурации подключения удалённого Docker-демона.
-
Уберите из docker-compose.yaml сервис docker-in-docker.
-
На отдельном хосте установите rootless Docker (хост может быть тот, на котором устанавливается Jenkins).
-
Создайте SSH-ключи БЕЗ ПАРОЛЯ.
-
Запишите ключ удаленного хоста в файл known_hosts (измените
<domain>
на доменное имя хоста, на котором запущен rootless Docker):ssh-keyscan -H <domain> | sudo tee -a /opt/jenkins/ssh-pub-keys-all/known_hosts
-
Сохраните публичный SSH-ключ в файл /home/<user>/.ssh/authorized_keys на хосте, где запущен rootless Docker (замените
<user>
на имя пользователя на удаленном хосте, от которого запущен Docker). -
Сохраните приватный ключ в файл с названием
id_rsa
в директорию /opt/jenkins/ssh-pub-keys-all на хосте, где устанавливается Jenkins. -
Замените в файле docker-compose.yaml значение переменной
DOCKER_HOST
в сервисах Jenkins и node-all наssh://<user>@<domain>
, где<user>
— имя пользователя, от которого на удаленном хосте запущен Docker, а<domain>
— доменное имя хоста, на котором запущен rootless Docker. -
Если владельцем Docker-сокета является непривилегированный пользователь, установите необходимые права и владельца на добавленные файлы.
REMAP_UID=$(cat /etc/subuid | grep -i $USER | awk -F : '{print $2}') UID_2000=$((${REMAP_UID}+1999)) UID_1000=$((${REMAP_UID}+999)) sudo chmod 600 /opt/jenkins/ssh-pub-keys-all/known_hosts sudo chown ${UID_2000}:${UID_2000} /opt/jenkins/ssh-pub-keys-all/known_hosts sudo chmod 400 /opt/jenkins/ssh-pub-keys-all/id_rsa sudo chown ${UID_2000}:${UID_2000} /opt/jenkins/ssh-pub-keys-all/id_rsa sudo chown ${UID_2000}:${UID_2000} -R /opt/jenkins/ssh-pub-keys-all
-
-
Для корректной работы отдельных утилит и инструментов, например cdxgen, могут потребоваться переменные окружения, которые указываются в файле docker-compose.yaml (раздел environment сервиса jenkins). Перечень переменных окружения контейнера Jenkins приведен в Приложении 11.
Примечание
Для автоматического конфигурирования URL Jenkins и учетных данных Администратора используются переменные окружения:
JENKINS_URL
,JENKINS_ADMIN_USER
,JENKINS_PASSADMIN_PASSWORD
. При запуске Jenkins соответствующие параметры берутся из перечисленных переменных.Если после запуска необходимо скрыть учетные данные Администратора, следует убрать переменные
JENKINS_ADMIN_USER
иJENKINS_ADMIN_PASSPASSWORD
из docker-compose.yaml — текущие учетные данные (username
/password
) будут сохранены в Jenkins и, используя их, можно войти в систему. -
Если необходимо использовать Fortify, предварительно создав файл license/fortify.license с лицензией для него, добавьте в docker-compose.yaml следующий раздел.
fortify-node: image: docker.swordfishsecurity.com/appsechub/sfs-jenkins-slave-fortify:latest container_name: node-fortify user: 2000:2000 networks: - network restart: always environment: - LANG=en_US.utf-8 - "JAVA_OPTS=-DLANG=en_US.UTF-8" volumes: - ./certs:/tmp/certs - ./ssh-pub-keys-all:/home/ubuntu/.ssh - ./jenkins-slave-fortify:/home/ubuntu/jenkins-slave - ./fortify/projects_fortify:/fortify/projects - ./license/fortify.license:/opt/Fortify/Fortify_SCA_and_Apps_21.1.1/fortify.license
-
Выполните настройку HTTPS-соединения, добавив в docker-compose.yaml следующий раздел.
nginx: image: docker.swordfishsecurity.com/public/sfs-nginx:latest container_name: nginx networks: - network volumes: - ./nginx:/etc/nginx/conf.d:ro - ./ssl:/etc/ssl/certs/ssl-cert:ro restart: always ports: - 80:80/tcp - 443:443/tcp
-
Создайте директории.
sudo mkdir /opt/jenkins/nginx sudo mkdir /opt/jenkins/ssl
-
В директории ssl сохраните сертификат в файл fullchain.pem и ключ в файл privkey.pem.
-
В директории nginx создайте конфигурационный файл для reverse-proxy — web.conf и в параметре
server_name
укажите URL Jenkins.server { listen 80; server_name jenkins.company.com; # Укажите URL для доступа к Jenkins. ignore_invalid_headers off; proxy_connect_timeout 600; proxy_send_timeout 600; proxy_read_timeout 600; send_timeout 600; client_max_body_size 100m; location / { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; 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 X-Forwarded-Proto $scheme; proxy_pass http://jenkins:8080; } listen 443 ssl; ssl_certificate /etc/ssl/certs/ssl-cert/fullchain1.pem; ssl_certificate_key /etc/ssl/certs/ssl-cert/privkey1.pem; if ($scheme != "https") { return 301 https://$host$request_uri; } }
-
Для rootless Docker установите разрешение на прослушивание привилегированных портов от непривилегированного пользователя.
echo "net.ipv4.ip_unprivileged_port_start=0" | sudo tee -a /etc/sysctl.conf sudo sysctl -p /etc/sysctl.conf
Запуск
Запуск осуществляется с помощью следующей команды (из директории docker-compose.yaml).
cd /opt/jenkins
sudo docker-compose up -d
После запуска Jenkins будет доступен на порту 8080
.
Важно
После запуска даже у анонимного пользователя будут права администратора. После первого запуска добавьте всех необходимых пользователей (Manage Jenkins › Manage Users) и назначьте им права в матричном системе доступа (Manage Jenkins › Configure Global Security › Authentication › Authorization (Matrix-based security)).
Подключение нод
-
Перед добавлением slave node необходимо добавить приватный SSH-ключ в хранилище секретов Jenkins (Manage Jenkins › Manage Credentials).
Перейдите в Jenkins (поле Store) › Global credentials › Add Credentials и добавьте приватный ключ.
-
Добавьте новый узел Manage Jenkins › Manage Nodes and Clouds › New Node, укажите название и нажмите OK.
-
В меню настроек укажите следующие параметры и нажмите Save.
Параметр Значение Remote root directory /home/ubuntu/jenkins-slave
Labels all super jenkins-slave-node-all maven mono npm nodejs docker java python pypi cdxgen
Host node-all
-
Укажите для slave node порт
2022
(Advanced › Port). -
Укажите переменные окружения.
Переменная Значение LANG en_US.UTF-8
При добавлении slave node Fortify необходимо указать в Jenkins следующую переменную окружения.
Название Значение PATH ${PATH}:/opt/Fortify/Fortify_SCA_and_Apps_21.1.1/bin
При успешном добавлении статус ноды изменится на In Sync.
Важно!
При интеграции AppSec.Hub и Jenkins некоторые сканирования могут заканчиваться неуспешно, если не дать разрешение на исполнение Groovy-скриптам, которые появляются в Jenkins (Manage Jenkins › In-process Script Approval).
Установка Jenkins на Astra Linux (root/rootless)
Master нода
За основу взята сборка Jenkins, запускаемая в rootless Docker. Для сборки используется нода master.
Также установлен следующий набор плагинов
ace-editor:latest ant:latest antisamy-markup-formatter:latest apache-httpcomponents-client-4-api:latest authentication-tokens:latest bitbucket:latest blueocean:latest blueocean-autofavorite:latest blueocean-bitbucket-pipeline:latest blueocean-commons:latest blueocean-config:latest blueocean-core-js:latest blueocean-dashboard:latest blueocean-display-url:latest blueocean-events:latest blueocean-github-pipeline:latest blueocean-git-pipeline:latest blueocean-i18n:latest blueocean-jira:latest blueocean-jwt:latest blueocean-personalization:latest blueocean-pipeline-api-impl:latest blueocean-pipeline-editor:latest blueocean-pipeline-scm-api:latest blueocean-rest:latest blueocean-rest-impl:latest blueocean-web:latest bouncycastle-api:latest branch-api:latest build-pipeline-plugin:latest build-timeout:latest build-token-root:latest build-token-trigger:latest checkmarx:latest cloudbees-bitbucket-branch-source:latest cloudbees-folder:latest command-launcher:latest conditional-buildstep:latest configuration-as-code:latest copy-data-to-workspace-plugin:latest credentials:latest credentials-binding:latest dependency-check-jenkins-plugin:latest dependency-track:latest display-url-api:latest docker-commons:latest docker-workflow:latest durable-task:latest email-ext:latest external-monitor-job:latest favorite:latest generic-webhook-trigger:latest git:latest git-client:latest github:latest github-api:latest github-branch-source:latest gitlab-plugin:latest git-server:latest gradle:latest handlebars:latest handy-uri-templates-2-api:latest htmlpublisher:latest jackson2-api:latest javadoc:latest jdk-tool:latest jenkins-design-language:latest jira:latest job-fan-in:latest jquery:latest jquery-detached:latest jsch:latest junit:latest ldap:latest lockable-resources:latest mailer:latest mapdb-api:latest matrix-auth:latest matrix-project:latest maven-plugin:latest mercurial:latest metrics:latest momentjs:latest nested-view:latest nexus-jenkins-plugin:latest nuget:latest pam-auth:latest parameterized-trigger:latest permissive-script-security:latest pipeline-build-step:latest pipeline-graph-analysis:latest pipeline-input-step:latest pipeline-milestone-step:latest pipeline-model-api:latest pipeline-model-declarative-agent:latest pipeline-model-definition:latest pipeline-model-extensions:latest pipeline-rest-api:latest pipeline-stage-step:latest pipeline-stage-tags-metadata:latest pipeline-stage-view:latest plain-credentials:latest pubsub-light:latest resource-disposer:latest run-condition:latest scm-api:latest script-security:latest sloccount:latest sse-gateway:latest ssh-agent:latest ssh-credentials:latest ssh-slaves:latest stash-pullrequest-builder:latest structs:latest subversion:latest text-finder:latest timestamper:latest token-macro:latest trilead-api:latest variant:latest view-job-filters:latest windows-slaves:latest workflow-aggregator:latest workflow-api:latest workflow-basic-steps:latest workflow-cps:latest workflow-cps-global-lib:latest workflow-durable-task-step:latest workflow-job:latest workflow-multibranch:latest workflow-scm-step:latest workflow-step-api:latest workflow-support:latest ws-cleanup:latest
Во время запуска проводятся первоначальные настройки, которые задают учетные данные Администратора и базовый URL Jenkins, импортируют в систему все SSL-сертификаты как доверенные и устанавливают переменные окружения.
Slave нода
За основу взят базовый образ Ubuntu, который также запускается в rootless контейнере, поверх которого установлены утилиты и сборщики, необходимые для проведения сканирований.
Данный образ может работать со следующим списком утилит: mono
, cdxgen
, nuget
, npm
, java
, maven
и gradel
.
При подключении ноды к Jenkins необходимо указать следующие метки: all super jenkins-slave-node-all maven mono npm nodejs docker java python pypi cdxgen
.
Установка
-
Создайте папки.
sudo mkdir -p /opt/jenkins/jenkins_home sudo mkdir -p /opt/jenkins/jenkins-slave-all sudo mkdir -p /opt/jenkins/ssh-pub-keys-all sudo mkdir -p /opt/jenkins/certs sudo mkdir -p /opt/jenkins/docker-certs sudo mkdir -p /opt/jenkins/fortify
-
Сохраните файл с публичным ключом authorized_keys в папку ssh-pub-keys-all.
-
Если в качестве доверенных необходимо добавить самоподписанные сертификаты, сохраните корневой сертификат или сертификаты всех узлов с расширением .crt в папку certs. Более подробная информация приведена в разделе «Безопасная сетевая конфигурация».
-
Если в качестве доверенных необходимо добавить самоподписанные сертификаты для Docker, создайте папку docker-certs/<repo>, где
<repo>
— container registry, который указывается при авторизации.Пример
Если необходимо выполнить авторизацию с помощью команды
docker login gitlab.example.com
, создайте директорию docker-certs/gitlab.example.com и сохраните корневой сертификат или сертификат узла в ней. -
Установите права пользователя для папок и файлов.
sudo chown 1000:1000 -R /opt/jenkins/jenkins_home sudo chmod 775 -R /opt/jenkins/fortify sudo chown 1000:2000 -R /opt/jenkins/fortify sudo chown 2000:2000 -R /opt/jenkins/jenkins-slave-all sudo chmod 600 /opt/jenkins/ssh-pub-keys-all/authorized_keys sudo chown 2000:2000 /opt/jenkins/ssh-pub-keys-all/authorized_keys sudo chmod 755 -R /opt/jenkins/certs/ sudo chown 1000:2000 -R /opt/jenkins/certs/
REMAP_UID=$(cat /etc/subuid | grep -i $USER | awk -F : '{print $2}') UID_2000=$((${REMAP_UID}+1999)) UID_1000=$((${REMAP_UID}+999)) sudo chown ${UID_1000}:${UID_1000} -R /opt/jenkins/jenkins_home sudo chmod 775 -R /opt/jenkins/fortify sudo chown ${UID_1000}:${UID_2000} -R /opt/jenkins/fortify sudo chown ${UID_2000}:${UID_2000} -R /opt/jenkins/jenkins-slave-all sudo chmod 600 /opt/jenkins/ssh-pub-keys-all/authorized_keys sudo chown ${UID_2000}:${UID_2000} /opt/jenkins/ssh-pub-keys-all/authorized_keys sudo chown ${UID_2000}:${UID_2000} -R /opt/jenkins/ssh-pub-keys-all sudo chmod 755 -R /opt/jenkins/certs/ sudo chown ${UID_1000}:${UID_2000} -R /opt/jenkins/certs/
-
Создайте файл /opt/jenkins/.env со следующим содержимым.
jenkins_master=2.1.4-astra jenkins_node=2.1.4-astra
где
<version>
— последняя актуальная версия продукта, например —2.1.4-astra
. -
Создайте файл /opt/jenkins/docker-compose.yaml (пример — в «Приложении 10»; перейдя по ссылке, пожалуйста, откройте вкладку Jenkins на Astra Linux).
Важно!
Для запуска сканирований Docker-контейнеров необходимо подключить удаленный Docker демон.
-
На отдельном хосте установите rootless Docker (хост может быть тот, на котором устанавливается Jenkins).
-
Создайте SSH-ключи БЕЗ ПАРОЛЯ.
-
Запишите ключ удаленного хоста в файл known_hosts (измените
<domain>
на доменное имя хоста, на котором запущен rootless Docker):ssh-keyscan -H <domain> | sudo tee -a /opt/jenkins/ssh-pub-keys-all/known_hosts
. -
Сохраните публичный SSH-ключ в файл /home/<user>/.ssh/authorized_keys на хосте, где запущен rootless Docker (замените
<user>
на имя пользователя на удаленном хосте, от которого запущен Docker). -
Сохраните приватный ключ в файл с названием
id_rsa
в директорию /opt/jenkins/ssh-pub-keys-all на хосте, где устанавливается Jenkins. -
Замените в файле docker-compose.yaml значение переменной
DOCKER_HOST
в сервисах Jenkins и node-all, укажите<user>
— имя пользователя, от которого на удаленном хосте запущен Docker, и<domain>
— доменное имя хоста, на котором запущен rootless Docker. -
Установить необходимые права и владельца на добавленные файлы:
sudo chmod 600 /opt/jenkins/ssh-pub-keys-all/known_hosts sudo chown 2000:2000 /opt/jenkins/ssh-pub-keys-all/known_hosts sudo chmod 400 /opt/jenkins/ssh-pub-keys-all/id_rsa sudo chown 2000:2000 /opt/jenkins/ssh-pub-keys-all/id_rsa
REMAP_UID=$(cat /etc/subuid | grep -i $USER | awk -F : '{print $2}') UID_2000=$((${REMAP_UID}+1999)) UID_1000=$((${REMAP_UID}+999)) sudo chmod 600 /opt/jenkins/ssh-pub-keys-all/known_hosts sudo chown ${UID_2000}:${UID_2000} /opt/jenkins/ssh-pub-keys-all/known_hosts sudo chmod 400 /opt/jenkins/ssh-pub-keys-all/id_rsa sudo chown ${UID_2000}:${UID_2000} /opt/jenkins/ssh-pub-keys-all/id_rsa sudo chown ${UID_2000}:${UID_2000} -R /opt/jenkins/ssh-pub-keys-all
-
-
Для корректной работы отдельных утилит и инструментов, например cdxgen, могут потребоваться переменные окружения, которые указываются в файле docker-compose.yaml (раздел environment сервиса Jenkins). Перечень переменных окружения контейнера Jenkins приведен в Приложении 11.
Примечание
Для автоматического конфигурирования Jenkins URL и учетных данных Администратора используются переменные окружения
JENKINS_URL
,JENKINS_ADMIN_USER
,JENKINS_ADMIN_PASSWORD
. После старта Jenkins URL и соответствующие учетные данные будут автоматически добавлены из значений этих переменных.Если необходимо скрыть логин и пароль административного пользователя, уберите переменные
JENKINS_ADMIN_USER
иJENKINS_ADMIN_PASSWORD
из файла docker-compose.yaml. Текущийusername
иpassword
будут сохранены в Jenkins и, используя их, можно войти в систему. -
Если необходимо использовать Fortify, предварительно создав файл license/fortify.license с лицензией для него, добавьте в docker-compose.yaml следующий раздел.
fortify-node: image: docker.swordfishsecurity.com/appsechub/sfs-jenkins-slave-fortify:2.1.4-astra container_name: node-fortify user: 2000:2000 networks: - network restart: always environment: - LANG=en_US.utf-8 - "JAVA_OPTS=-DLANG=en_US.UTF-8" - DOCKER_HOST=ssh://<user>@<domain> volumes: - ./certs:/tmp/certs - ./ssh-pub-keys-all:/home/astra/.ssh - ./jenkins-slave-fortify:/home/astra/jenkins-slave - ./fortify/projects_fortify:/fortify/projects - ./license/fortify.license:/opt/Fortify/Fortify_SCA_and_Apps_21.1.1/fortify.license
-
Выполните настройку HTTPS-соединения, добавив в docker-compose.yaml следующий раздел.
nginx: image: docker.swordfishsecurity.com/public/sfs-nginx-astra:latest container_name: nginx networks: - network volumes: - ./nginx:/etc/nginx/conf.d:ro - ./ssl:/etc/ssl/certs/ssl-cert:ro restart: always ports: - 80:8080/tcp - 443:4443/tcp
-
Создайте директории.
sudo mkdir /opt/jenkins/nginx sudo mkdir /opt/jenkins/ssl
-
В директории ssl сохраните сертификат в файл fullchain.pem и ключ в файл privkey.pem.
-
В директории nginx создайте конфигурационный файл для reverse proxy — web.conf и в параметре
server_name
укажите Jenkins URL.server { listen 8080; server_name jenkins.company.com; # Укажите URL для доступа к Jenkins. ignore_invalid_headers off; proxy_connect_timeout 600; proxy_send_timeout 600; proxy_read_timeout 600; send_timeout 600; client_max_body_size 100m; location / { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; 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 X-Forwarded-Proto $scheme; proxy_pass http://jenkins:8080; } listen 4443 ssl; ssl_certificate /etc/ssl/certs/ssl-cert/fullchain.pem; ssl_certificate_key /etc/ssl/certs/ssl-cert/privkey.pem; if ($scheme != "https") { return 301 https://$host$request_uri; } }
-
Для rootless Docker установите разрешение на прослушивание привилегированных портов от непривилегированного пользователя.
echo "net.ipv4.ip_unprivileged_port_start=0" | sudo tee -a /etc/sysctl.conf sudo sysctl -p /etc/sysctl.conf
Запуск
Запуск осуществляется с помощью следующей команды (из директории docker-compose.yaml).
docker login docker.swordfishsecurity.com -u <user> -p <password>
docker-compose up -d
После запуска Jenkins будет доступен на порту 8080
.
Важно
После запуска даже у анонимного пользователя будут права администратора. После первого запуска добавьте всех необходимых пользователей (Manage Jenkins › Manage Users) и назначьте им права в матричном системе доступа (Manage Jenkins › Configure Global Security › Authentication › Authorization (Matrix-based security)).
Подключение нод
-
Перед добавлением slave ноды необходимо добавить приватный SSH-ключ в хранилище секретов Jenkins (Manage Jenkins › Manage Credentials).
Перейдите в Jenkins (поле Store) › Global credentials › Add Credentials и добавьте приватный ключ.
-
Добавьте новый узел Manage Jenkins › Manage Nodes and Clouds › New Node, укажите название и нажмите OK.
-
В меню настроек укажите следующие параметры и нажмите Save.
Параметр Значение Remote root directory /home/astra/jenkins-slave
Labels all super jenkins-slave-node-all maven mono cdxgen npm nodejs docker java python
Host node-all
-
Укажите для slave ноды порт
2022
(Advanced › Port). -
Укажите переменные окружения.
Переменная Значение LANG en_US.UTF-8
-
При добавлении slave ноды Fortify укажите в Jenkins следующую переменную окружения.
Название Значение PATH ${PATH}:/opt/Fortify/Fortify_SCA_and_Apps_21.1.1/bin
При успешном добавлении статус ноды изменится на In Sync.
Важно!
При интеграции AppSec.Hub и Jenkins некоторые сканирования могут завершаться неуспешно, если не дать разрешение на исполнение Groovy-скриптам, которые появляются в Jenkins (Manage Jenkins › In-process Script Approval).
Резервное копирование
- Остановите AppSec.Hub, см. раздел «Остановка AppSec.Hub».
- Сделайте резервную копию директории установки AppSec.Hub (по умолчанию — /opt/apphub).
- Выполните резервное копирование директорий, относящихся к docker volumes, но расположенных за пределами директории установки.
- Запустите 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 (по умолчанию — /opt/apphub).
- Восстановите из резервной копии директории, относящиеся к docker volumes, но расположенные за пределами директории установки (при наличии).
- Запустите AppSec.Hub, см. раздел «Запуск AppSec.Hub».
Выполните базовый тест восстановленной установки:
- Авторизация.
- Просмотр списка инструментов, проверка соединения с ними (Test connection).
- Просмотр списка приложений.
- Просмотр результатов сканирования (Issues) и дефектов ИБ (Defects).
- Выборочный запуск DevSecOps пайплайнов.
- Просмотр результатов нового сканирования.
Настройка антивирусной защиты
На сервере с установленным AppSec.Hub необходимо установить антивирусное программное обеспечение в соответствии с политиками компании в области антивирусной защиты.