Копирование теста безопасности

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

Для копирования с помощью API вам потребуются:

  • токен;
  • идентификатор существующего набора запросов.

Для копирования с помощью веб-интерфейса вам потребуется аккаунт Валларм.

При необходимости вы можете получить детальную информацию о токене и наборе запросов.

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

  • токен token_Qwe12345,
  • идентификатор набора запросов rec_0001.

Скопированный тест безопасности использует существующий набор запросов.

Используйте этот вариант создания тестов безопасности, если требуется провести тестирование целевого приложения с использованием записанных ранее базовых запросов.

Правила копирования теста безопасности

При копировании необходимо учитывать следующее:

  • Вы можете указать любую политику тестирования при копировании: она не обязана совпадать с политикой, использованной для оригинального теста безопасности.
  • Вы можете скопировать тест безопасности, находящийся в любом из следующих состояний: failed, interrupted, passed, paused, running. Описание этих состояний находится здесь.
  • Нельзя копировать тест с использованием пустого набора запросов (в котором не содержится базовых запросов).
  • Нельзя копировать тест с использованием набора запросов, в который ведется запись базовых запросов.

    Если вы попытаетесь скопировать такой тест безопасности с помощью запроса к API, то API-сервер вернет ответ с кодом 400 (Bad Request) и сообщением об ошибке следующего вида:

     {
       "status": 400,
       "body": {
         "test_record_id": {
         "error": "not_ready_for_cloning",
         "value": rec_0001
         }
       }
     }
    

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

Копирование теста безопасности с помощью API

Скопируйте тест безопасности и запустите его, используя следующий запрос к API:

POST

Копировать тест безопасности

https://us1.api.wallarm.com/v1/test_run
Запрос к API POST /v1/test_run
Авторизация запроса: Нужна С помощью токена
HTTP-заголовок с токеном: X-WallarmAPI-Token Служит для передачи значения токена
Параметры: name (обязательный параметр) Имя теста безопасности
test_record_id (обязательный параметр) Идентификатор существующего набора запросов
desc Детальное описание теста безопасности.
Значение по умолчанию: пустая строка
policy_id Идентификатор политики тестирования.
Если этот параметр будет отсутствовать в запросе, то будет использована политика тестирования по умолчанию.
file_extensions_to_exclude Позволяет с помощью регулярного выражения задать типы файлов, которые будут исключены из процесса проверки.
Например, если указать расширение ico, то проверка базового запроса GET /favicon.ico не будет проведена, а сам базовый запрос будет пропущен.
Формат регулярного выражения:
- .: любой символ в любом количестве (от нуля и выше);
- x*: символ x в любом количестве (от нуля и выше);
- x?: единичное вхождение символа x (или его отсутствие);
- единичное расширение (например, jpg);
- несколько расширений, разделенных вертикальной чертой: jpg | png.
Значение по умолчанию: пустая строка (проверяются файлы с любым расширением).
stop_on_first_fail Параметр, определяющий поведение FAST при обнаружении уязвимости.
true: остановить выполнение тестов при первой обнаруженной уязвимости.
false: обработать все поступившие в рамках запуска базовые запросы вне зависимости от факта обнаружения уязвимостей.
Значение по умолчанию: false
skip_duplicated_baselines Параметр, позволяющий не обрабатывать дубликаты базового запроса (если пришло несколько одинаковых базовых запросов — создавать тестовые запросы только для первого из них).
true: пропускать дублирующиеся базовые запросы.
false: создавать тестовые запросы для каждого базового запроса.
Значение по умолчанию: true
rps_per_baseline Ограничение на количество тестовых запросов в секунду (requests per second, RPS), которые могут быть отправлены для одного базового запроса в рамках теста безопасности.
Минимальное значение: 1.
Максимальное значение: 500.
Значение по умолчанию: null (RPS не ограничено)
rps Глобальное ограничение на количество тестовых запросов в секунду (requests per second, RPS), которые могут быть отправлены в рамках теста безопасности.
Минимальное значение: 1.
Максимальное значение: 1000.
Значение по умолчанию: null (RPS не ограничено)



Пример запроса:

curl --request POST \
  --url https://us1.api.wallarm.com/v1/test_run \
  --header 'Content-Type: application/json' \
  --header 'Host: us1.api.wallarm.com' \
  --header 'X-WallarmAPI-Token: token_Qwe12345' \
  --data '{
    "name":"demo-testrun",
    "test_record_id":"rec_0001"
}'

Пример ответа: идет копирование теста безопасности

{
  "status": 200,
  "body": {
    "id": tr_1234,
    "name": "demo-testrun",
    ...
    "state": "cloning",
    ...
    "test_record_id": "rec_0001",
    ...
}

Состояние cloning означает, что в данный момент времени происходит процесс клонирования базовых запросов из исходного теста безопасности (идентификатор tr_1234) в его копию.

Пример ответа: ошибка копирования

{
  "status": 400,
  "body": {
    "test_record_id": {
      "error": "not_ready_for_cloning",
      "value": "rec_0001"
    }
  }
}

Ошибка not_ready_for_cloning означает, что невозможно клонировать базовые запросы из исходного теста безопасности в его копию, так как все еще идет процесс записи в набор запросов rec_0001.

При успешном выполнении запроса к API вы получите ответ от сервера, который содержит:

  • id: идентификатор копии теста безопасности (например, tr_1234).

    Вам потребуется значение этого параметра на следующих этапах работы с FAST.

  • state: состояние теста безопасности.

    Только что скопированный тест будет находиться в состоянии cloning. После успешного завершения процедуры копирования состояние изменится на running.

    Описание всех возможных значений параметра state находится здесь.

Копирование теста безопасности с помощью веб-интерфейса

Чтобы скопировать тест безопасности с помощью веб-интерфейса портала Валарм, выполните следующие действия:

  1. Войдите на портал с помощью вашего аккаунта Валарм и перейдите на вкладку «Запуски тестов».
  2. Выберите тест безопасности, который вы хотите скопировать, и откройте меню действий справа от него.
  3. Выберите пункт меню «Создать аналогичный тест».

    Пункт меню «Создать аналогичный тест»

  4. В появившейся боковой панели задайте:

    • имя копии теста безопасности;
    • политику, которая будет использоваться при выполнении теста;
    • ноду, на которой будет выполняться тест.

    Боковая панель копирования теста

    При необходимости вы также можете задать дополнительные параметры, находящиеся под спойлером «Дополнительные настройки»:

    • Галочка «Остановить при первом непройденном тесте» определяет, остановится ли выполнение теста безопасности после обнаружения первой уязвимости.
    • Галочка «Пропускать повторяющиеся запросы» определяет, будут ли проигнорированы дубликаты полученных ранее базовых запросов. Если галочка поставлена, то при получении базового запроса, полностью совпадающего с каким-либо другим, записанным ранее, на его основе не будут созданы тестовые запросы, а в консоли FAST-ноды будет выведено следующее сообщение: [info] The baseline #8921 is duplicated and already was processed.
    • Галочка «Пропустить файлы с расширениями» позволяет с помощью регулярного выражения задать типы файлов, которые будут исключены из процесса проверки.

      Например, если указать расширение ico, то проверка базового запроса GET /favicon.ico не будет проведена, а сам запрос будет пропущен.

      Регулярное выражение может состоять из следующих взаимоисключающих элементов:

      • .: любой символ в любом количестве (от нуля и выше);
      • x*: символ x в любом количестве (от нуля и выше);
      • x?: единичное вхождение символа x (или его отсутствие);
      • единичное расширение (например, jpg);
      • несколько расширений, разделенных вертикальной чертой или запятой (например, jpg | png или jpg, png).


      Если параметр не задан, то будет выполнена проверка файлов с любым расширением.

    • Бегунок «RPS на запуск тестов» устанавливает верхнее ограничение на количество запросов в секунду, отправляемых приложению FAST-нодой в этом тесте безопасности. Данная настройка может принимать значения от 1 до 1000. Значение по умолчанию — 1000.

    • Бегунок «RPS на базовый запрос» устанавливает верхнее ограничение на количество запросов в секунду, отправляемых приложению, для одного базового запроса. Данная настройка может принимать значения от 1 до 500. Значение по умолчанию — 500.
    • Бегунок «Остановить запись базовых запросов через» устанавливает ограничение на время записи (ожидание) базовых запросов при их отсутствии. Данная настройка может принимать значения от 5 мин до 1 день (24 часа). Значение по умолчанию — 30 мин.

  5. Убедитесь, что пункт «Use baselines from <имя набора запросов, который будет переиспользован>» отмечен галочкой.

    Переиспользование набора запросов

    Обратите внимание, что в этом пункте используется именно имя набора запросов, а не имя теста безопасности.

    Зачастую имя набора запросов не задается: например, при создании теста без указания параметра test_record_name имя набора запросов совпадает с именем теста безопасности.

    На скриншоте выше приведен пример, когда при копировании используется набор запросов с именем, не эквивалентным имени теста безопасности, где этот набор запросов использовался (набор запросов MY TEST RECORD использовался в тесте DEMO TEST RUN).

  6. Запустите тест, нажав на кнопку «Создать и запустить».

results matching ""

    No results matching ""