В данном документе представлено описание механизма отправки запросов в DLP-системы SearchInform и InfoWatch, а также процесс активации отправки данных в DLP-систему.
Документ предназначен для использования системными администраторами.
Архитектура и описание системы — в документе описаны сервисы, обеспечивающие отправку данных в DLP-систему. Не является частью публичной документации, обратитесь к представителю VK Tech, чтобы ознакомиться с документом.
Инструкция по настройке интеграции с DLP-системами — в документе описан механизм отправки запросов в DLP-системы, а также процесс настройки отправки данных в DLP-системы для релиза 26.1. Документ предназначен для использования системными администраторами.
DLP-система — специализированное программное обеспечение, предназначенное для защиты компании от утечек информации. Со стороны Мессенджер и ВКС в DLP-систему отправляются запросы при отправке пользователями сообщений или загрузке файлов.
Есть два типа запросов, отправляемых в DLP-систему:
- message — обычное текстовое сообщение;
- file — файл, загруженный пользователем.
Ниже представлены схемы взаимодействия сервисов Мессенджер и ВКС при отправке сообщений/файлов во внешнюю DLP-систему заказчика.
При отправке данных типа message (схема выше) сообщение пользователя сохраняется в хранилище сервиса Saws и в сервисе Gbld-mchat (для групповых чатов)/Gbld-st (для 1-to-1). Далее сообщение складывается в очередь для отправки в DLP-систему. Очередь реализована в сервисе Resort и обрабатывается сервисом Plumber.
Plumber — сервис отправки данных в DLP-систему, запускается в Kubernetes.
При отправке данных типа file (схема выше) файл пользователя сохраняется в сервисе Go-files. Далее сообщение складывается в очередь сервиса Resort и обрабатывается сервисом Plumber.
При отправке пользователем сообщения с прикрепленным файлом (message + file, схема выше) файл сохраняется в сервисе Go-files. Далее сервис Go-files возвращает хеш файла, после чего сообщение пользователя сохраняется в сервисах Saws и Gbld-mchat /Gbld-st с хешем файла и обрабатывается сервисами Resort и Plumber.
После отправки данных в DLP-систему сервис Plumber присваивает запросу статус в зависимости от результата отправки.
Мессенджер и ВКС поддерживает интеграцию со следующими поставщиками DLP-систем:
- SearchInform
- InfoWatch
Описание взаимодействия с DLP-системами и настройка интеграции представлены ниже.
Схема взаимодействия с DLP-системой компании SearchInform представлена ниже.
Передача данных осуществляется по протоколу ICAP.
При отправке данных типа message сервис Plumber формирует HTTP-запрос со следующими параметрами:
-
"url" — http://vkteams/;
-
тело запроса в json-формате. Пример:
{"sender" : "dev1@example.com", // отправитель сообщения"chat" : "123@chat.agent", // получатель сообщения (может быть как чатом, так и идентификатором пользователя)"hash" : "23r2312fr3", // идентификатор файла, если был отправлен"text" : "Hello!", // текст сообщения"parts": "[{\"mediaType\": \"text\", \"text\": \"https://files-n-asemyonov.v3.im-sandbox.devmail.ru/get/gPgpOYSoNTm1Rbn2O6aE4V6332d3281bb wef\", \"captionedContent\": {\"caption\": \"wef\", \"url\": \"https://files-n-asemyonov.v3.im-sandbox.devmail.ru/get/gPgpOYSoNTm1Rbn2O6aE4V6332d3281bb\"}}]", // системная информация о сообщении"ip": "192.168.1.1", // ip отправителя"mid": 12341, // идентификатор сообщения} -
заголовок Content-Type — "application/json".
Далее полученный HTTP-запрос упаковывается внутрь ICAP ReqMod-запроса. Добавляются следующие заголовки:
- X-Authenticated-User // отправитель сообщения
- X-Client-IP // ip адрес отправителя письма
Файлы отправляются в DLP-систему, когда файл загружен на сервер Мессенджер и ВКС. Запрос в DLP-систему отправляется в формате multipart. При отправке данных типа file сервис Plumber формирует HTTP-запрос со следующими параметрами:
- "file" — информация о содержимом файла:
- заголовок Content-Disposition — "form-data; name="file"; filename="{имяФайла}";
- заголовок Content-Type — "application/octet-stream";
- содержимое файла.
- "hash" — информация об идентификаторе файла:
- заголовок Content-Disposition — "form-data; name="hash";
- hash файла.
Схема взаимодействия с DLP-системой компании InfoWatch представлена ниже.
Передача данных в DLP-систему осуществляется через InfoWatch Traffic Monitor SDK методом pushAPI SDK.
Данные, отправляемые сервисом Plumber в DLP-систему InfoWatch, представлены в документации к продукту https://kb.infowatch.com/pages/viewpage.action?pageId=165545261.
Связывание событий
DLP-система от InfoWatch использует плагины для подключения дополнительных перехватчиков. При сценарии «Отправка сообщения с файлом» необходимо связывать события общим признаком. Связь выставляется добавлением заголовка с хешем файла в каждое событие при данном сценарии. Подробное описание представлено в документации к плагинам продукта по ссылке https://kb.infowatch.com/pages/viewpage.action?pageId=165546582.
Для создания плагина необходимо создать файл manifest.json, содержащий информацию о плагине. Пример файла manifest.json представлен ниже:
{"PLUGIN_ID": "346227C2657C4701B86892CAE732805D","DISPLAY_NAME": "Плагин для события мессенджера","DESCRIPTION": {"eng": "IM events reception","rus": "Прием событий менеджера"},"VERSION": "0.0.1","VENDOR": "VKteams","LICENSE": [{"PATH": "license/tm_license.license"}],"PATTERN_SEARCH_LICENSE": {"operator": "and","conditions": [{ "common_name": "VKteams"},{ "object_type": "im_VKteams"},{ "protocol": "NONE"}]},"ADDS_SERVICES": {"SERVICE_TYPE": [{ "SERVICE_MNEMO": "im_VKteams", "DATA_CLASS": [ "kChat", "kFileExchange" ], "ICON": "icon/acme_messenger.png", "LOCALE": { "rus": "Мессенджер VKteams", "eng": "VKteams messenger" }, "CONTACT_TYPE": [ { "MNEMO": "im_VKteams", "SCOPE": [ "person" ], "ICON": "icon/acme_messenger.png", "LOCALE": { "rus": "Аккаунт VKteams", "eng": "VKteams account" } } ]}]},"OBJECT_HEADER": [{ "NAME": "VKteams_file_hash_header", "NOTE": { "rus": "Хеш файла", "eng": "File hash" }, "DATA_CLASS": ["kChat", "kFileExchange"], "USE_IN_POLICY": "1", "USE_IN_QUERY": "1", "USE_IN_NOTIFICATION": "1", "USE_IN_LIST": "1", "USE_IN_SHOW": "1", "USE_IN_DETAIL": "1", "TYPE": "string", "FORMAT": "string", "IS_MULTIPLE_VALUE": "1"}]}
-
Перейдите в веб-интерфейс Установщика
http://server-address:8888, где server-address — IP-адрес машины, на которую производится установка, либо ее доменное имя. -
Нажмите на кнопку в правом верхнем углу и выберите пункт Продукты.
-
В списке продуктов выберите Мессенджер, включите опцию Интеграция с DLP системой v1.
-
Нажмите на кнопку Сохранить.
-
На главной странице Установщика нажмите Добавить и выберите Распределение продуктов Helm.
-
В секции «vkteamsDlpv1» выберите кластер и укажите пространство для установки.
-
Нажмите на кнопку Сохранить.
-
Укажите в конфигурационном файле сервиса Plumber /usr/local/etc/k8s/helmwave/projects/plumber/values/plumber.yml значение секции prefixes:
etcd:endpoints: {{.Release.Store.etcdEndpoints}}prefixes: ["EXAMPLE"]timeout: 5s -
Установите значения по ключам в ETCD. На сервере Мессенджера выполните команды:
etcdctl --endpoints=[ХОСТ_ETCD]:[ПОРТ_ETCD] put /vars/services/plumber/[PREFIXES]/public/service/DLP/system {имя DLP-системы}etcdctl --endpoints=[ХОСТ_ETCD]:[ПОРТ_ETCD] put /vars/services/plumber/[PREFIXES]/public/service/DLP/address {endpoint DLP-сервера}, где:
-
PREFIXES — значение соответствующей секции в конфигурационном файле сервиса Plumber /usr/local/etc/k8s/helmwave/projects/plumber/values/plumber.yml;
-
имя DLP-системы.
icap— если SearchInform илиinfowatch— если InfoWatch.
В случае настройки интеграции с DLP-системой InfoWatch также дополнительно необходимо указать следующие ключи:
КлючЗначениеDLP/tokenТокен доступа. Используется в случае настройки интеграции с InfoWatch. Необходимо получить в админ-панели сервиса InfoWatch.DLP/companyИмя компании из лицензии. Используется в случае настройки интеграции с InfoWatch.DLP/imserviceИмя сервиса в плагине, указанное в manifest.json. Используется в случае настройки интеграции с InfoWatch.Пример команды для DLP-системы SearchInform:
etcdctl --endpoints=etcd.im-etcd.svc.cluster.local:2379 put /vars/services/plumber/development/public/service/DLP/address icap:\/\/90.239.107.151:1344/requestПример команды для DLP-системы InfoWatch:
etcdctl --endpoints=etcd.im-etcd.svc.cluster.local:2379 put /vars/services/plumber/development/public/service/DLP/address infowatch.beicq.net:9101 -
При необходимости изменить настройки по умолчанию — в конфигурационном файле сервиса Plumber /usr/local/etc/k8s/helmwave/projects/plumber/values/plumber.yml изменить или добавить строчки:
dlpClient:timeout: 5s // таймаут отправки данных в dlpdebug: false //детализация логовfiles:url: "files-c.<DOMAIN>" // адрес сервиса Go-files, откуда можно скачать отправляемый файлtimeout: 5s // таймаут на загрузку файла
Включите сервис Plumber — в конфигурационном файле /usr/local/etc/k8s/helmwave/projects.yml удалите строчку с сервисом Plumber.
-
На главной странице в строке состояния установки нажмите на кнопку меню и выберите Запустить проверку.
-
После завершения проверки запустите автоустановку нажав на
.
Технический писатель: Дерябин Дмитрий