Запуск Docker-контейнера c FAST-нодой в режиме тестирования

Режим тестирования FAST-ноды предполагает выполнение теста безопасности с использованием существующего набора запросов, а также создание и выполнение тестовых запросов для целевого приложения.

Необходимые сведения

Для выполнения описанных в этом документе действий вам потребуется токен.

Далее будут использоваться следующие демонстрационные значения:

  • идентификатор набора запросов rec_0001;
  • идентификатор теста безопасности tr_1234;
  • идентификатор базового запроса bl_7777.

Установка docker-compose

Для демонстрации работы FAST-ноды в режиме тестирования в данном руководстве будет использоваться docker-compose. Инструкции по установке вы можете прочитать здесь.

Переменные в режиме тестирования

В таблице ниже приведены параметры (переменные окружения), которые вы можете использовать в режиме тестирования FAST-ноды:

Параметр Значение Обязателен
WALLARM_API_TOKEN Токен, полученный ранее в облаке Валарм. Да
WALLARM_API_HOST Адрес используемого API-сервера Валарм.
Возможные значения:
us1.api.wallarm.com — для американского облака;
api.wallarm.com — для европейского облака;
api.wallarm.ru — для российского облака.
Да
CI_MODE Режим работы FAST-ноды.
Необходимое значение: testing.
Да
WORKERS Количество конкурентных потоков, извлекающих базовые запросы из набора запросов и выполняющих тесты безопасности.
По умолчанию: 10.
Нет
TEST_RECORD_ID Идентификатор набора запросов.
По умолчанию: пустое значение.
Нет
TEST_RUN_NAME Имя теста безопасности.
По умолчанию имя будет формата: "TestRun Sep 24 12:31 UTC".
Нет
TEST_RUN_DESC Описание теста безопасности.
По умолчанию: пустое значение.
Нет
TEST_RUN_POLICY_ID Идентификатор политики тестирования.
По умолчанию: отсутствует (используется политика тестирования по умолчанию).
Нет
TEST_RUN_RPS Ограничение на количество тестовых запросов в секунду (requests per second, RPS) в рамках теста безопасности.
По умолчанию: не ограничено.
Возможные значения: от 1 до 1000.
Нет
TEST_RUN_STOP_ON_FIRST_FAIL Остановка FAST-ноды при первом проваленном тестовом запросе.
Возможные значения: true, false.
По умолчанию: false.
Нет
TEST_RUN_URI URI тестируемого приложения
(IP-адрес тестируемого приложения в процессе CI/CD может меняться).
Например, httр://app-test:3000 — URL приложения app-test, развернутого с помощью docker-compose.
Нет
BUILD_ID Идентификатор рабочего процесса CI/CD, который позволяет нескольким FAST-нодам работать одновременно (в параллельных рабочих процессах CI/CD) через одну и ту же ноду в облаке. Подробнее здесь. Нет
FILE_EXTENSIONS_TO_EXCLUDE Расширения статических файлов, которые необходимо исключить из теста безопасности.
Доступно перечисление (через|):
FILE_EXTENSIONS_TO_EXCLUDE='jpg|ico|png'
Нет
PROCESSES Количество процессов, которые может использовать FAST‑нода. Каждый процесс использует количество потоков, указанное в переменной WORKERS.
Значение по умолчанию: 1.
Специальное значение: auto, равное половине от количества ЦПУ в системе. Для получения количества ЦПУ используется команда nproc.
Нет

Смотрите также

Переменные окружения, неспецифичные для конкретного режима работы FAST-ноды вы можете посмотреть здесь.

Получение идентификатора политики тестирования

Если вы планируете использовать собственную политику тестирования, то создайте ее в облаке Валарм. Вы можете передать ее идентификатор FAST-ноде с помощью параметра TEST_RUN_POLICY_ID.

Если вы планируете использовать политику по умолчанию, не используйте параметр TEST_RUN_POLICY_ID при запуске FAST-ноды.

Создание политики

Пример создания политики тестирования приведен в руководстве «Быстрый старт».

Получение идентификатора набора запросов

Чтобы в режиме тестирования использовать конкретный набор запросов, вы можете передать FAST-ноде его идентификатор, используя параметр TEST_RECORD_ID. Таким образом, нет необходимости каждый раз сначала запускать FAST-ноду в режиме записи, а можно использовать заранее сформированный набор запросов и с помощью него проводить тесты безопасности многократно (разными нодами и с разными политиками тестирования).

Получить идентификатор набора запросов вы можете в интерфейсе портала Валарм или из лога FAST-ноды в режиме записи. Если вы не используете параметр TEST_RECORD_ID, то FAST-нода будет использовать последний записанный набор.

Запуск FAST-ноды в режиме тестирования

Для запуска FAST-ноды в режиме тестирования можно воспользоваться тем же файлом docker-compose.yaml, что и в режиме записи. При этом важно изменить переменную CI_MODE и присвоить ей значение testing. Это можно сделать, изменив значение в файле docker-compose.yaml или передав значение переменной при запуске Docker-контейнера через опцию -e:

docker-compose run --rm -e CI_MODE=testing fast

Получение отчета о тестировании

Чтобы получить отчет c результатами теста, при запуске Docker-контейнера примонтируйте директорию для выгрузки отчета через опцию -v {DIRECTORY_FOR_REPORTS}:/opt/reports/.

При завершении тестирования в папке {DIRECTORY_FOR_REPORTS} сформируются файлы с отчетами: краткий <TEST RUN NAME>.<UNIX TIME>.txt и детальный <TEST RUN NAME>.<UNIX TIME>.json.

Опции docker-compose

Используя опцию -e можно передавать любые другие переменные для режима тестирования, которые были описаны ранее. В приведенной команде также используется опция --rm для автоматического удаления контейнера после завершения его работы.

При успешном выполнения этой команды в терминал будут выведены подобные сообщения:

 __      __    _ _
 \ \    / /_ _| | |__ _ _ _ _ __
  \ \/\/ / _` | | / _` | '_| '  \
   \_/\_/\__,_|_|_\__,_|_| |_|_|_|
            ___ _   ___ _____
           | __/_\ / __|_   _|
           | _/ _ \\__ \ | |
           |_/_/ \_\___/ |_|

Loading...
INFO synccloud[13]: Registered new instance 16dd487f-3d40-4834-xxxx-8ff17842d60b
INFO [1]: Loaded 0 custom extensions for fast scanner
INFO [1]: Loaded 44 default extensions for fast scanner
INFO [1]: Use TestRecord#rec_0001 for creating TestRun
INFO [1]: TestRun#tr_1234 created

В данном случае FAST-нода сообщает о том, что создан и запущен тест безопасности с идентификатором tr_1234 на основе набора запросов с идентификатором rec_0001.

Далее целевому приложению будут отправляться сформированные тестовые запросы. В терминал при этом будут поступать подобные сообщения:

INFO [1]: Running a test set for the baseline #bl_7777
INFO [1]: Test set for the baseline #bl_7777 is running
INFO [1]: Retrieving the baseline request Hit#["hits_production_202_20xx10_v_1", "AW2xxxxxW26"]
INFO [1]: Use TestPolicy with name 'Default Policy'

Из приведенного консольного вывода ясно, что запущен набор тестовых запросов (test set) для базового запроса с номером bl_7777. Так как вручную не задавался идентификатор политики тестирования, то используется политика тестирования по умолчанию с именем Default Policy.

Завершение работы FAST-ноды в режиме тестирования

В зависимости от результатов тестирования целевого приложения на уязвимости работа FAST-ноды может завершиться по-разному.

Если в ходе тестирования были выявлены уязвимости, то завершающие сообщения FAST-ноды будут подобны следующим:

INFO [1]: Found 4 vulnerabilities, marking the test set for baseline #bl_7777 as failed
ERROR [1]: TestRun#tr_1234 failed

В данном случае найдено четыре уязвимости. Набор тестовых запросов (test set) для базового запроса с идентификатором bl_7777 и тест безопасности с идентификатором tr_1234 считаются проваленными (failed).

Если в ходе тестирования уязвимости выявлены не были, то завершающие сообщения FAST-ноды будут подобны следующим:

INFO [1]: No issues found. Test set for baseline #bl_7777 passed.
INFO [1]: TestRun#tr_1234 passed

В этом случае набор тестов для базового запроса с идентификатором bl_7777 и тест безопасности с идентификатором tr_1234 считаются пройденными (passed).

Обратите внимание

Из приведенных примеров не следует, что выполнялся только один набор тестовых запросов — такие наборы формируются для каждого базового запроса, при условии, что он удовлетворяет политике тестирования. В целях демонстрации приведено сообщение для последнего набора тестовых запросов, сформированного для базового запроса с идентификатором bl_7777.

После завершения процесса тестирования с тем или иным результатом, FAST-нода завершает свою работу и возвращает процессу CI/CD-инструмента определенный код завершения (exit code):

  • Если все тестовые запросы были пройдены и не было непредвиденных ошибок, то возвращается exit code = 0.
  • Если найдены уязвимости или возникли непредвиденные ошибки в работе FAST-ноды, то exit code = 1.

Несмотря на то, что контейнер с FAST-нодой в режиме тестирования будет остановлен автоматически после завершения тестов безопасности, вы можете воспользоваться описанными ранее методами для остановки контейнера.

В приведенном примере при запуске контейнера использовалась опция --rm, поэтому удаление контейнера произойдет автоматически.

results matching ""

    No results matching ""

    results matching ""

      No results matching ""