
Создание СЗИ
Для создания СЗИ необходимо нажать кнопку "Добавить".
Последовательность создания СЗИ:
Ввод имени. Важно: не рекомендуется использовать в качестве имени СЗИ фразу "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-адрес инстанса, с которого происходит обращение к СЗИ (запущена задача) |
Важно: чтобы подставить пароль или другие чувствительные данные, необходимо в разделе "Секреты" завести новую переменную, которая будет замаскированна средствами Системы (см. раздел "Создание секрета"). Затем в спецификации необходимо указать $ИМЯ_СЕКРЕТНОЙ_ПЕРЕМЕННОЙ, куда требуется подстановка данных.
Например: 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 | name: connection_limit label: Лимит подключений type: number default: 5 | Лимит подключений к системе анализа |
host | name: host label: Хост type: host default: 127.0.0.1 | Хост, где стоит СЗИ |
insecure_skip_verify | name: insecure_skip_verify label: Игнорировать верификацию безопасного соединения (вкл/выкл) type: bool default: false | |
Маппинг Вкладка глобального маппинга заголовков (расширяет все запросы вовне) и маппингов кодов или вердиктов для отчетности. Тип: map[string]any | ||
request_headers_mapping | name: request_headers_mapping
label: Маппинг заголовков запроса
type: map[text]text
default: { | Глобальное расширение хэдеров для всех шагов воркфлоу
Пример:
"request_headers_mapping": { |
verdict_mapping | блок фиксированной структуры | Маппинг вердикта на общую модель Используется при интерпретации результатов, полученных при прохождении шага в воркфлоу с признаком is_report_step = true |
verdict_mapping.path | name: path label: Путь к вердикту в источнике type: registry default: data.result.verdict | Переменная, из которой берется вердикт |
verdict_mapping.map | name: map
label: Маппинг вердиктов
type: map[text]text
default: { | Маппинг текстовых вердиктов на общую вердиктовую модель.
Используется при интерпретации результатов, полученных при прохождении шага в воркфлоу с признаком is_report_step = true
Пример:
{ |
verdict_mapping.default_verdict | name: default_verdict label: Дефолтный вердикт type: text default: unsupported | Дефолтное значение вердикта (если Система не нашла чему сопоставить) |
Воркфлоу Упорядоченный список шагов, фиксирующий правила: "если шаг упал - следующий не запускается, Система выдает ошибку". Тип: []map[string]any | ||
Воркфлоу: Общие параметры шага | ||
name | name: name label: Имя шага type: text default: upload file | Имя шага |
is_report_step | name: is_report_step label: Шаг с отчетностью(вкл/выкл сбор отчета) type: bool default: false | Признак того, что на шаге будет получено в response отчетность. Важно: В каждом ворфлоу должен быть ровно 1 шаг с is_report_step = true |
kind | name: kind label: Тип шага type: enum:sync|poll|listening default: sync | Тип шага В зависимости от kind в step может быть только какой-то из соответствующих блоков: * sync - шаг с ожиданием ответа сразу (одна попытка, нет условия) * poll - шаг с периодическим опросом (несколько попыток через интервал, есть условие завершения) |
Воркфлоу: блок sync шага (kind=sync) | ||
sync.protocol | name: protocol label: Протокол http запроса type: enum:http|https default: http | Протокол, по которому отправляется http запрос. Для разных протоколов могут появляться и исчезать некоторые поля в секции sync |
sync.icap_protocol | name: icap_protocol label: Протокол icap запроса type: enum:icap|icaps default: icap | Протокол, по которому отправляется icap запрос Для разных протоколов могут появляться и исчезать некоторые поля в секции sync |
sync.port | name: port label: Порт http type: port (numeric, 1, 65535) default: 443 | |
sync.icap_port | name: icap_port label: Порт icap type: port (numeric, 1, 65535) default: 1344 | |
sync.method | name: method label: Метод http запроса type: enum:GET|POST|PUT default: POST | |
sync.icap_method | name: icap_method label: Метод icap запроса type: enum:REQMOD|RESPMOD default: REQMOD | |
sync.path | name: path label: Путь обращения http type: text default: /analyze | Например /path/$TASK_ID |
sync.icap_path | name: icap_path label: Путь обращения icap type: text default: /reqmod | |
sync.headers | name: headers
label: Дополнительные http заголовки
type: json
default: { | Заголовки, отправляемые в http запросе |
sync.icap_headers | name: icap_headers
label: Дополнительные icap заголовки
type: json
default: { | Заголовки, отправляемые в icap запросе |
sync.body | блок параметров описания тела | |
sync.body.mode | name: mode label: Режим передачи данных запроса type: enum:binary|multipart|json default: json | |
sync.body.payload | name: payload label: Шаблон тела запроса type: json 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 | name: success_codes label: Коды успешности type: []number default: [200, 201, 204] | Коды успешности. Если код ответа не входит в этот список - шаг считается проваленным, выдается ошибка |
sync.retry_count | name: retry_count label: Количество попыток подключения type: number default: 1 | |
sync.retry_interval | name: retry_interval label: Интервал между попытками подключения type: time-pair default: {value: 10, period: "second"} | |
sync.retry_timeout | name: retry_timeout label: Таймаут ожидания ответа type: time-pair default: {value: 90, period: "minute"} | |
Воркфлоу: poll блок poll шага (kind=poll) Важно: для icap не поддерживается | ||
poll.protocol | name: protocol label: Протокол запроса type: enum:icap|http|https default: http | Протокол, по которому отправляется запрос Для разных протоколов могут появляться и исчезать некоторые поля в секции poll |
poll.port | name: port label: Порт type: port (numeric, 1, 65535) default: 1 | |
poll.method | name: method label: Метод запроса type: enum:GET|POST|PUT default: POST | |
poll.path | name: path label: Путь обращения type: text default: /result | Допустимо использование spec-переменных |
poll.headers | name: headers
label: Дополнительные заголовки
type: json
default: { | Заголовки, отправляемые в запросе |
poll.body | блок параметров описания тела | |
poll.body.mode | name: mode label: Режим передачи данных запроса type: enum:binary|multipart|json default: json | |
poll.body.payload | name: payload label: Шаблон тела запроса type: json default: { "task_id": "$TASK_ID" } | При mode = json, multipart Шаблон тела запроса Например: "body": { "task_id": "$TASK_ID" } При mode=multipart возможно указание кастомного имени для управляемого поля в multipart запросе. Для этого необходимо добавить в описание шаблона тела запроса "field_name": "<значение по документации, пример curl -F …>" В большинстве случаев не нужно ничего указывать, т.к. дефолт (file) будет работать корректно. |
poll.success_codes | name: success_codes label: Коды успешности type: []number default: [200, 201, 204] | Коды успешности Если код ответа не входит в этот список - шаг считается проваленным, выдается ошибка |
poll.retry_count | name: retry_count label: Количество попыток подключения type: number default: 1 | |
poll.retry_interval | name: retry_interval label: Интервал между попытками подключения type: time-pair default: {value: 10, period: "second"} | |
poll.retry_timeout | name: retry_timeout label: Таймаут ожидания ответа type: time-pair default: {value: 90, period: "minute"} | |
poll.poll_interval a | name: poll_interval label: Таймаут между попытками опроса type: time-pair default: {value: 2, period: "minute"} | Важно: параметр отсутствует в sync |
poll.poll_global_timeout | name: retry_timeout label: Общий таймаут опроса type: time-pair default: {value: 90, period: "minute"} | Важно: параметр отсутствует в sync |
poll.poll_until_path | name: poll_until_path label: Источник условия завершения опроса type: text default: data.status | Важно: параметр отсутствует в sync |
poll.poll_until_op | name: poll_until_op label: Оператор условия завершения опроса type: enum:eq|neq|gt|lt default: eq | Важно: параметр отсутствует в sync |
poll.poll_until_value | name: poll_until_value label: Значение условия завершения опроса type: text default: READY | Важно: параметр отсутствует в sync |
Воркфлоу: extraction [.underline]#Важно:#_ Блок настроек "распаковки" ответа во внутреннюю модель | ||
extraction.extraction_header_mapping | name: extraction_header_mapping
label: Маппинг распаковки заголовков ответа
type: map[text]text
default: { | Маппинг заголовков результата на внутреннюю модель Примеры:
"extraction_header_mapping": { |
extraction.extraction_body_mapping | name: extraction_body_mapping
label: Маппинг распаковки тела ответа
type: map[text]text (возможны вложенности в ключах (типа "res.data.result": "result")
default: "extraction_body_mapping": { | Маппинг тела результата на внутреннюю модель Примеры:
"extraction_body_mapping": { |
extraction.extraction_code_mapping | name: extraction_code_mapping label: Маппинг распаковки http кода ответа type: text 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 | name: extraction_mode label: Режим распаковки ответа type: enum:headers|payload|file|code default: headers | default - headers. В случае payload|file - так же учитыватся headers. В случае code - может учитываться всё остальное, если заполнены маппинги. Важно: Могут встречаться сочетания |
Была ли эта страница полезной?
Спасибо за отзыв!
Спасибо, мы учтём это для улучшения документации.