Запуск 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 ""