
Создание СЗИ
Для создания СЗИ необходимо нажать кнопку "Добавить".
Последовательность создания СЗИ:
Ввод имени. Важно: не рекомендуется использовать в качестве имени СЗИ фразу "WRONG RECORD", т.к. она зарезервирована Системой;
Выбор шаблона (см. раздел Шаблоны СЗИ);
В зависимости от шаблона во вкладках "Общие настройки", "Маппинг" и "Воркфлоу" появляются поля, предзаполненные значениями по умолчанию;
Выполняется заполнение полей;
Сохранение созданного СЗИ;
Созданное СЗИ представляет собой:
имя СЗИ и
конкретное заполнение настроек шаблона, в которых отсутствует лишняя информация, но присутствует конкретное значение.

Имена встроенных переменных, которые всегда есть в контексте задачи на сканирование файла, приведены в таблице ниже. При выявлении указанных переменных в тексте спецификации Система подставит вычисленные в динамике значения.
| Имя встроенной переменной | Комментарий |
|---|---|
$CHAIN_ID | ID цепочки |
$FILE_NAME | имя файла, который передается на анализ |
$FILE_CHECKSUM | sha256 checksum файла |
$FILE_SIZE | размер файла в байтах |
$FILE_MIME_TYPE | mime-type файла (если заполнено в мета-информации, полученной с файлом из источника) |
$FILE_CREATED | дата создания файла (если заполнено в мета-информации, полученной с файлом из источника) |
$FILE_EXTENSION | расширение файла (если заполнено в мета-информации, полученной с файлом из источника) |
$FILE_MODIFIED | время изменения файла (если заполнено в мета-информации, полученной с файлом из источника) |
$INSTANCE_HOSTNAME | хост или IP-адрес инстанса, с которого происходит обращение к СЗИ (запущена задача) |
$IS_ARCHIVE | $IS_ARCHIVE является ли файл архивом |
$PASSWORD_PROTECTED | является ли файл запароленным архивом |
Важно: чтобы подставить пароль или другие чувствительные данные, необходимо в разделе "Секреты" завести новую переменную, которая будет замаскированна средствами Системы (см. раздел "Создание секрета"). Затем в спецификации необходимо указать $ИМЯ_СЕКРЕТНОЙ_ПЕРЕМЕННОЙ, куда требуется подстановка данных.
Например: PT_SANDBOX_API_KEY добавлен в разделе "Секреты", после чегор эту переменную можно использовать в URL, заголовках и теле запроса и других местах с помощью $PT_SANDBOX_API_KEY.
Возможные типы парметров, приведены в таблице ниже.
| Тип переменной | Комментарии |
|---|---|
text | текст |
number | число |
host | адрес сервера |
port | порт (число от 1 до 65535) |
json | гибкое поле |
enum:val1|val2|… | перечисление элементов, Например:, enum:sync|async|listening |
[]number | список чисел |
[]text | список строк |
map[<key type (text)>]<value type (text, number, etc.)> | мэппинг с типизированными ключами и значениями |
time-pair | выбор числа и выбор периода |
registry | переменная из спецификации распаковки тела или заголовков ответа у шага с признаком is_report_step=true |
Форма настройки интеграции с конкретным СЗИ зависит от выбранного шаблона. Модель описания шаблона интеграции приведена в таблице ниже.
| Параметр | Шаблон и значение | Комментарии |
|---|---|---|
Общие настройки. Тип: map[string]any | ||
connection_limit | default: 5 | Лимит подключений к системе анализа |
host | default: 127.0.0.1 | Настоящий (внешний) ip хоста, где стоит СЗИ, который необходимо указать вместо 127.0.0. |
insecure_skip_verify | default: false | |
Маппинг Вкладка глобального маппинга заголовков (расширяет все запросы вовне) и маппингов кодов или вердиктов для отчетности. Тип: map[string]any | ||
request_headers_mapping | default: { | Глобальное расширение хэдеров для всех шагов воркфлоу
Пример:
"request_headers_mapping": { |
verdict_mapping | блок фиксированной структуры | Маппинг вердикта на общую модель Используется при интерпретации результатов, полученных при прохождении шага в воркфлоу с признаком is_report_step = true |
verdict_mapping.path | default: data.result.verdict | Переменная, из которой берется вердикт |
verdict_mapping.map | default: { | Маппинг текстовых вердиктов на общую вердиктовую модель.
Используется при интерпретации результатов, полученных при прохождении шага в воркфлоу с признаком is_report_step = true
Пример:
{ |
verdict_mapping.default_verdict | default: unsupported | Дефолтное значение вердикта (если Система не нашла чему сопоставить) |
Воркфлоу Упорядоченный список шагов, фиксирующий правила: "если шаг упал - следующий не запускается, Система выдает ошибку". Тип: []map[string]any | ||
Воркфлоу: Общие параметры шага | ||
name | default: upload file | Имя шага |
is_report_step | default: false | Признак того, что на шаге будет получено в response отчетность. Важно: В каждом ворфлоу должен быть ровно 1 шаг с is_report_step = true |
kind | default: sync | Тип шага В зависимости от kind в step может быть только какой-то из соответствующих блоков: * sync - шаг с ожиданием ответа сразу (одна попытка, нет условия) * poll - шаг с периодическим опросом (несколько попыток через интервал, есть условие завершения) * listening - шаг с включением "слушалки", на которой Система пассивно ждет поступления чего-то |
Воркфлоу: блок sync шага (kind=sync) | ||
sync.protocol | default: http | Протокол, по которому отправляется http запрос. Для разных протоколов могут появляться и исчезать некоторые поля в секции sync |
sync.icap_protocol | default: icap | Протокол, по которому отправляется icap запрос Для разных протоколов могут появляться и исчезать некоторые поля в секции sync |
sync.port | default: 443 | |
sync.icap_port | default: 1344 | |
sync.method | default: POST | |
sync.icap_method | default: REQMOD | |
sync.path | default: /analyze | Например /path/$TASK_ID |
sync.icap_path | default: /reqmod | |
sync.headers | default: { | Заголовки, отправляемые в http запросе |
sync.icap_headers | default: { | Заголовки, отправляемые в icap запросе |
sync.icap_options_enabled | default: true | Запрашивать возможности сервера перед отправкой файлов. True/False |
sync.icap_preview_mode | default: auto | auto/disabled/fixed |
sync.icap_preview_bytes | default: 0 | number >=0 (параметр доступен для изменения только при fixed в sync.icap_preview_mode |
sync.body | блок параметров описания тела | |
sync.body.mode | default: json | |
sync.body.payload | default: { "file_content": "$FILE_CONTENT" } | Важно: При mode = json, multipart Шаблон тела запроса (может быть пустым, в зависимости от режима body_mode) Например:: "payload": { "api_key": "", "scenario_id": "", "check_service": "", "file_content": "$FILE_CONTENT" } При mode=multipart возможно указание кастомного имени для управляемого поля в multipart запросе Для этого необходимо добавить в описание шаблона тела запроса "field_name": "<значение по документации, пример curl -F …>" В большинстве случаев не требует ничего указывать, т.к. будет корректно работать дефолт (file) |
sync.success_codes | default: [200, 201, 204] | Коды успешности. Если код ответа не входит в этот список - шаг считается проваленным, выдается ошибка |
sync.retry_count | default: 1 | |
sync.retry_interval | default: {value: 10, period: "second"} | |
sync.retry_timeout | default: {value: 90, period: "minute"} | |
Воркфлоу: poll блок poll шага (kind=poll) Важно: для icap не поддерживается | ||
poll.protocol | default: http | Протокол, по которому отправляется запрос Для разных протоколов могут появляться и исчезать некоторые поля в секции poll |
poll.port | name: port label: Порт type: port (numeric, 1, 65535) default: 1 | |
poll.method | default: POST | |
poll.path | default: /result | Допустимо использование spec-переменных |
poll.headers | default: { | Заголовки, отправляемые в запросе |
poll.body | блок параметров описания тела | |
poll.body.mode | default: json | |
poll.body.payload | default: { "task_id": "$TASK_ID" } | При mode = json, multipart Шаблон тела запроса Например: "body": { "task_id": "$TASK_ID" } При mode=multipart возможно указание кастомного имени для управляемого поля в multipart запросе. Для этого необходимо добавить в описание шаблона тела запроса "field_name": "<значение по документации, пример curl -F …>" В большинстве случаев не нужно ничего указывать, т.к. дефолт (file) будет работать корректно. |
poll.success_codes | default: [200, 201, 204] | Коды успешности Если код ответа не входит в этот список - шаг считается проваленным, выдается ошибка |
poll.retry_count | default: 1 | |
poll.retry_interval | default: {value: 10, period: "second"} | |
poll.retry_timeout | default: {value: 90, period: "minute"} | |
poll.poll_interval a | default: {value: 2, period: "minute"} | Важно: параметр отсутствует в sync |
poll.poll_global_timeout | type: time-pair default: {value: 90, period: "minute"} | Важно: параметр отсутствует в sync |
poll.poll_until_path | default: data.status | Важно: параметр отсутствует в sync |
poll.poll_until_op | default: eq | Важно: параметр отсутствует в sync |
poll.poll_until_value | default: READY | Важно: параметр отсутствует в sync |
Воркфлоу: extraction [.underline]#Важно:#_ Блок настроек "распаковки" ответа во внутреннюю модель | ||
extraction.extraction_header_mapping | default: { | Маппинг заголовков результата на внутреннюю модель Примеры:
"extraction_header_mapping": { |
extraction.extraction_body_mapping | default: "extraction_body_mapping": { | Маппинг тела результата на внутреннюю модель Примеры:
"extraction_body_mapping": { |
extraction.extraction_code_mapping | default: "$RESPONSE_CODE" | Маппинг кода ответа в переменную registry. В первую очередь выполняется поиск инкапсулированных http кодов и при их наличии происходит размещение в переменную. Если http кодов нет, тогда выполняется поиск признаков (кодов) в других местах (icap status code, icap headers etc.), и используя внутреннюю модель маппинга сущностей (Icap status code…) в http коды, выполняется преобразование и присваиваем переменной. Например: (Icap_status_code=200 → http_code=403). |
extraction.extraction_mode | default: headers | default - headers. В случае payload|file - так же учитыватся headers. В случае code - может учитываться всё остальное, если заполнены маппинги. Важно: Могут встречаться сочетания |
Была ли эта страница полезной?
Спасибо за отзыв!
Спасибо, мы учтём это для улучшения документации.