Инструкция по настройке интеграции с DLP-системами
Назначение документа
В данном документе представлено описание механизма отправки запросов в DLP-системы, а также процесс настройки отправки данных в DLP-систему для версии 25.2 и выше.
Документ предназначен для использования системными администраторами.
Дополнительная документация
Архитектура и описание системы VK Teams — в документе представлено описание сервисов, обеспечивающих отправку данных в DLP-систему Solar Dozor, и расположение log-файлов данных сервисов. Не является частью публичной документации, обратитесь к представителю VK Tech, чтобы ознакомиться с документом.
Инструкция по настройке интеграции с DLP-системами SearchInform и InfoWatch — в документе описан механизм отправки запросов в DLP-системы SearchInform и InfoWatch, актуальный для версии 24.9 и ниже. Документ предназначен для использования системными администраторами.
Общее описание
DLP-система — специализированное программное обеспечение, предназначенное для защиты компании от утечек информации.
VK Teams поддерживает интеграцию со следующими поставщиками DLP-систем:
- Solar Dozor
- SearchInform
- InfoWatch
DLP-система | Отправка данных | Получение результата проверки |
---|---|---|
Solar Dozor | Используется протокол ICAP. Метаинформация передается в заголовках, а не в теле запроса. В теле запроса передаётся только проверяемый контент. Содержимое заголовков закодировано Base64 (RFC 2045). |
Результат проверки возвращается в ответе на отправку данных для проверки. |
InfoWatch | Передача данных осуществляется через InfoWatch Traffic Monitor SDK методом pushAPI SDK. Данные, отправляемые сервисом Plumber в DLP-систему InfoWatch, представлены в документации к продукту https://kb.infowatch.com/pages/viewpage.action?pageId=165545261. | Результат проверки возвращается в ответе на HTTP-запрос в проверяющую систему, запрос содержит идентификатор отправленного события. |
SearchInform | Для текстовых сообщений: используется протокол ICAP. Для файлов: HTTP-запрос. |
Для текстовых сообщений: результат проверки возвращается в ответе на ICAP-запрос отправки данных. Для файлов: результат проверки возвращается в ответе на HTTP-запрос отправки данных. |
Режимы проверки отправляемых сообщений:
- Синхронный – адресаты не увидят сообщение, пока не пройдет проверка DLP-системой. В случае негативного результата проверки сообщение не будет показано адресатам.
- Асинхронный — в случае негативного результата проверки в DLP-системе автоматический отзыв сообщения не происходит.
Сообщения проверяются в следующих чатах:
- Личный чат.
- Групповой чат.
- Канал.
- Чаты звонков и чаты обсуждения задач.
Есть два типа запросов, отправляемых в DLP-систему:
- Текстовое сообщение — текстовое сообщение и текстовое сообщение с прикреплённым файлом без проверки файла.
- Файл — фото, видео, аудио, стикер, голосовое сообщение, текстовый и табличный документ, архивы. Ограничений на расширение файла нет. Размер — не более 4 Гб.
Если отправленное сообщение содержит и текст, и файл, контент проверяется на стороне DLP-системы независимо. Проверка файла не блокирует отправку сообщения.
Проверка текстовых сообщений
При отправке пользователем текстового сообщения VK Teams отправляет данные на проверку в DLP-систему. Вместе с текстом сообщения передается информация об отправителе сообщения (user, login, user-agent, IP-адрес), эти параметры учитывается DLP-системой при принятии решения о блокировке сообщения. Также отправляется информация о количестве участников чата. До получения ответа от DLP-системы текстовое сообщение не отображается у адресатов и на других устройствах отправителя.
При получении положительного ответа от DLP-системы текстовое сообщение становится видимым для адресатов. Отправитель сообщения видит, что сообщение получено адресатами.
При получении отрицательного ответа от DLP-системы VK Teams блокирует текстовое сообщение. Заблокированные сообщения отображаются в клиентском приложении отправителя в статусе часов и не синхронизируются с остальными устройствами этого пользователя. Адресаты не видят заблокированное сообщение.
Если ответ DLP-системы сопровождает статус «невозможно провести анализ», это дополнительно фиксируется в журнале на сервере VK Teams, передается извещение в систему мониторинга и VK Teams разрешает или запрещает отправку сообщения в зависимости от настроек интеграции.
При превышении времени ожидания ответа от DLP-системы VK Teams дополнительно отображает предупреждение в логах и передает извещение в систему мониторинга.
Если DLP-система недоступна, VK Teams отображает сбой в логах и передает извещение во внешнюю систему мониторинга по стандартному протоколу. Далее, в зависимости от настроек, VK Teams отправляет сообщения без проверки в DLP-системе либо останавливает отправку сообщений до восстановления доступа к DLP-системе в тех чатах и для тех пользователей, где согласно настройкам проверка необходима.
VK Teams не хранит заблокированные текстовые сообщения. При сигнале от DLP-системы о блокировке, мессенджер не отправляет текстовое сообщение, оно остается (хранится) на устройстве пользователя.
Проверка файлов
При отправке пользователем файла VK Teams отправляет данные на проверку в DLP-систему. При этом ссылка на файл всегда отправляется адресатам, но файл недоступен для просмотра или скачивания, пока не получен ответ от DLP-системы. Для файлов типа картинок также отключена возможность превью, до получения положительного ответа от DLP-системы адресаты видят только «заглушку» файла.
При получении положительного ответа от DLP-системы файл становится доступным для просмотра и скачивания в зависимости от уровня доступа файла:
- External – файл доступен вне корпоративной системы передачи данных (интернет/внешняя среда).
- Internal – файл доступен только в корпоративной системе передачи данных.
Примечание
Правила определения уровня доступа настраиваются администратором организации. По умолчанию в инсталляции не предоставляется никакой конфигурации правил, связывающих эти уровни с конкретными подсетями/клиентами. Настройка описана ниже.
Уровень доступа на скачивание файла определяется по IP-адресу получателя и устройству, с которого он зашёл в VK Teams.
При получении отрицательного ответа от DLP-системы файл недоступен для просмотра и скачивания, но адресатам доступны метаданные файла (название, тип расширения, размер и т. д.).
Если DLP-система недоступна
При ожидании ответа от DLP-системы или если DLP-система недоступна, файл недоступен для просмотра и скачивания, но адресатам доступны метаданные файла.
При ожидании ответа от DLP-системы VK Teams отражает предупреждение в логах и передает извещение в систему мониторинга.
Если DLP-система недоступна, VK Teams отражает сбой в логах и передает извещение во внешнюю систему мониторинга по стандартному протоколу. Далее, в зависимости от настроек, VK Teams отправляет файлы без проверки в DLP-системе либо останавливает отправку файлов до восстановления доступа к DLP-системе.
Если сообщение с заблокированным файлом не было отправлено, оно хранится на устройстве отправителя. Если сообщение было отправлено, оно хранится на устройствах отправителя и получателя без возможности открыть или скачать файл.
Если ответ DLP-системы сопровождает статус «невозможно провести анализ», это дополнительно фиксируется в журнале на сервере VK Teams, и извещение передается в систему мониторинга.
Настройка отправки текстовых сообщений в DLP-систему
Внимание
Все команды в консоли выполняются под пользователем root.
Шаг 1. Активируйте сервис Vahter
Сервис отвечает за интеграцию с DLP-системой и находится в инсталляции в неактивном состоянии.
Чтобы активировать сервис:
- Перейдите в конфигурационный файл /usr/local/etc/k8s/helmwave/projects.yml и удалите из секции disabled сервис Vahter.
-
Запустите деплой сервиса:
-
Проверьте, что сервис запустился:
В выводе консоли pod должен находиться в статусе Running.
Шаг 2. Настройте конфигурацию адаптера к DLP-системе
В конфигурационном файле /usr/local/etc/k8s/helmwave/store/dlp.yml в секции adapters содержатся общие и исключительные параметры для проверки текста и файлов. Секция adapter_manager управляет всеми адаптерами, описанными в секции adapters, и определяет, какой адаптер будет использован.
-
Укажите настройки подключения к DLP-системе:
adapters: solar_dozor: name: solar_dozor enabled: false url: <your_solar_dozor_host.example> icap_client_timeout: 10s topic_url: http://VkTeams check_text_warn_timeout: 1s check_text_disconnect_timeout: 3s check_file_warn_timeout: 1m #используется для отправки файлов в DLP-систему check_file_disconnect_timeout: 10m #используется для отправки файлов в DLP-систему strategy_on_fail: fail debug_mode: false access_levels_recheck: false default_access_level: Internal #используется для отправки файлов в DLP-систему access_levels: #используется для отправки файлов в DLP-систему - Internal - External adapters_manager: icap_debug: false default_adapter_name: solar_dozor
где:
-
name — имя адаптера.
-
enabled — если значение true – включена отправка данных в DLP-систему, если false – выключена.
-
url — адрес ICAP-сервера.
-
icap_client_timeout — таймаут для соединения с ICAP-сервером.
-
topic_url — топик сообщения.
-
check_text_warn_timeout — таймаут, при достижении которого пишется лог о превышении времени проверки текста и увеличивается соответствующая метрика, которая подсчитывает количество превышений этого порога. Необходим для оценки времени реакции DLP-системы.
-
check_text_disconnect_timeout — таймаут, при достижении которого обрывается запрос проверки текста, создается запись в логах и увеличивается соответствующая метрика.
Внимание
Не устанавливайте таймаут более семи секунд, это может привести к проблемам отправки сообщений в клиентских приложениях VK Teams
-
check_file_warn_timeout — используется для отправки файлов в DLP-систему, не изменяйте параметр.
-
check_file_disconnect_timeout — используется для отправки файлов в DLP-систему, не изменяйте параметр.
-
strategy_on_fail — используется для формирования результата проверки текста, когда DLP-система долго не отвечает или недоступна. Параметр может принимать значения:
-
ok — при превышении порога check_text_disconnect_timeout или недоступности DLP-системы в сервис Vahter будет возвращаться успешный ответ, как если бы был получен положительный результат проверки сообщения.
-
block — при превышении порога check_text_disconnect_timeout или недоступности DLP-системы в envoy-плагин Tourniquet будет возвращаться ошибка. Плагин будет интерпретировать ее в соответствии с правилами dlp_resp_blocked_code и dlp_resp_blocked_body.
-
fail — при превышении порога check_text_disconnect_timeout или недоступности DLP-системы в envoy-плагин Tourniquet будет возвращаться ошибка. Плагин будет интерпретировать ее в соответствии с правилами dlp_internal_error_code и dlp_internal_error_body.
-
-
debug_mode — активация режима отладки, который рекомендуется включать при первичной настройке системы, чтобы в случае проблемы в интеграции с DLP-системой работа мессенджера не была затронута. Режим отладки отличается от реального лишь тем, что на проверку текста будет сразу отдан успешный ответ, как если бы DLP-система провела проверку и не нашла бы ничего подозрительного в тексте. Значение true включает режим отладки, значение false выключает.
-
access_levels_recheck — используется для отправки файлов в DLP-систему, не изменяйте параметр.
-
default_access_level — используется для отправки файлов в DLP-систему, не изменяйте параметр.
-
access_levels — используется для отправки файлов в DLP-систему, не изменяйте параметр.
В секции adapters_manager укажите настройки управления адаптерами:
- icap_debug — если true, то включено подробное логирование при общении по протоколу ICAP.
- default_adapter_name — укажите адаптер, используемый по умолчанию.
adapters: info_watch: name: info_watch enabled: false address: <your_infowatch_host.example> token: <your_token> company: VKteams # не меняйте параметр при использовании предоставленного manifest.json, значения должны совпадать с указанными внутри manifest.json imservice: im_VKteams # не меняйте параметр при использовании предоставленного manifest.json, значения должны совпадать с указанными внутри manifest.json capture_server_fqdn: vahter push_api_version: 1.9 push_api_address: <your_infowatch_host.example>:1234/verdict push_api_retry_count: 5 check_text_warn_timeout: 1s check_text_disconnect_timeout: 3s check_file_warn_timeout: 1m #используется для отправки файлов в DLP-систему check_file_disconnect_timeout: 10m #используется для отправки файлов в DLP-систему strategy_on_fail: block debug_mode: false access_levels_recheck: false default_access_level: Internal #используется для отправки файлов в DLP-систему access_levels: #используется для отправки файлов в DLP-систему - Internal - External check_file_chunk_bytes: 100480 #используется для отправки файлов в DLP-систему adapters_manager: default_adapter_name: solar_dozor
где:
-
name — имя адаптера.
-
enabled — если значение true – включена отправка данных в DLP-систему, если false – выключена.
-
address — адрес проверяющего сервера.
-
token — токен доступа.
-
company — наименования компании отправителя. Не меняйте параметр при использовании предоставленного manifest.json, значения должны совпадать с указанными внутри manifest.json.
-
imservice — наименование сервиса отправителя. Не меняйте параметр при использовании предоставленного manifest.json, значения должны совпадать с указанными внутри manifest.json.
-
capture_server_fqdn — наименование сервера отправителя.
-
push_api_version — версия push_api.
-
push_api_address — адрес HTTP-сервера, возвращающего результат проверки.
-
push_api_retry_count — количество попыток получения результата.
-
check_text_warn_timeout — таймаут, при достижении которого пишется лог о превышении времени проверки текста и увеличивается соответствующая метрика, которая подсчитывает количество превышений этого порога. Необходим для оценки времени реакции DLP-системы.
-
check_text_disconnect_timeout — таймаут, при достижении которого обрывается запрос проверки текста, создается запись в логах и увеличивается соответствующая метрика.
Внимание
Не устанавливайте таймаут более семи секунд, это может привести к проблемам отправки сообщений в клиентских приложениях VK Teams
-
check_file_warn_timeout — используется для отправки файлов в DLP-систему, не изменяйте параметр.
-
check_file_disconnect_timeout — используется для отправки файлов в DLP-систему, не изменяйте параметр.
-
strategy_on_fail — используется для формирования результата проверки текста, когда DLP-система долго не отвечает или недоступна. Параметр может принимать значения:
-
ok — при превышении порога check_text_disconnect_timeout или недоступности DLP-системы в сервис Vahter будет возвращаться успешный ответ, как если бы был получен положительный результат проверки сообщения.
-
block — при превышении порога check_text_disconnect_timeout или недоступности DLP-системы в envoy-плагин Tourniquet будет возвращаться ошибка. Плагин будет интерпретировать ее в соответствии с правилами dlp_resp_blocked_code и dlp_resp_blocked_body.
-
fail — при превышении порога check_text_disconnect_timeout или недоступности DLP-системы в envoy-плагин Tourniquet будет возвращаться ошибка. Плагин будет интерпретировать ее в соответствии с правилами dlp_internal_error_code и dlp_internal_error_body.
-
-
debug_mode — активация режима отладки, который рекомендуется включать при первичной настройке системы, чтобы в случае проблемы в интеграции с DLP-системой работа мессенджера не была затронута. Режим отладки отличается от реального лишь тем, что на проверку текста будет сразу отдан успешный ответ, как если бы DLP-система провела проверку и не нашла бы ничего подозрительного в тексте. Значение true включает режим отладки, значение false выключает.
-
access_levels_recheck— используется для отправки файлов в DLP-систему, не изменяйте параметр.
-
default_access_level— используется для отправки файлов в DLP-систему, не изменяйте параметр.
-
access_levels — используется для отправки файлов в DLP-систему, не изменяйте параметр.
-
check_file_chunk_bytes — используется для отправки файлов в DLP-систему, не изменяйте параметр.
В секции adapters_manager укажите настройки управления адаптерами:
- default_adapter_name — укажите адаптер, используемый по умолчанию.
adapters: search_inform: name: search_inform enabled: false url: <your_searchinform_host.example> icap_client_timeout: 600s topic_url: http://VkTeams check_text_warn_timeout: 1s check_text_disconnect_timeout: 5s check_file_warn_timeout: 1s #используется для отправки файлов в DLP-систему check_file_disconnect_timeout: 1500s #используется для отправки файлов в DLP-систему strategy_on_fail: block debug_mode: false default_access_level: Internal #используется для отправки файлов в DLP-систему file_api_retry_count: 10 #используется для отправки файлов в DLP-систему file_api_retry_timeout: 3m #используется для отправки файлов в DLP-систему file_api_login: test #используется для отправки файлов в DLP-систему file_api_password: test #используется для отправки файлов в DLP-систему file_api_auth_address: <searchinform_host.example>:9082 #используется для отправки файлов в DLP-систему file_api_address: <searchinform_host.example>:9086 #используется для отправки файлов в DLP-систему file_api_insecure: true #используется для отправки файлов в DLP-систему adapters_manager: default_adapter_name: search_inform
где:
-
name — имя адаптера.
-
enabled — если значение true – включена отправка данных в DLP-систему, если false – выключена.
-
url — адрес и порт ICAP API проверяющего сервера.
-
icap_client_timeout — таймаут подключения к ICAP-серверу.
-
topic_url — топик сообщения.
-
check_text_warn_timeout — таймаут, при достижении которого пишется лог о превышении времени проверки текста и увеличивается соответствующая метрика, которая подсчитывает количество превышений этого порога. Необходим для оценки времени реакции DLP-системы.
-
check_text_disconnect_timeout — таймаут, при достижении которого обрывается запрос проверки текста, создается запись в логах и увеличивается соответствующая метрика.
Внимание
Не устанавливайте таймаут более семи секунд, это может привести к проблемам отправки сообщений в клиентских приложениях VK Teams
-
check_file_warn_timeout — используется для отправки файлов в DLP-систему, не изменяйте параметр.
-
check_file_disconnect_timeout — используется для отправки файлов в DLP-систему, не изменяйте параметр.
-
strategy_on_fail — используется для формирования результата проверки текста, когда DLP-система долго не отвечает или недоступна. Параметр может принимать значения:
-
ok — при превышении порога check_text_disconnect_timeout или недоступности DLP-системы в сервис Vahter будет возвращаться успешный ответ, как если бы был получен положительный результат проверки сообщения.
-
block — при превышении порога check_text_disconnect_timeout или недоступности DLP-системы в envoy-плагин Tourniquet будет возвращаться ошибка. Плагин будет интерпретировать ее в соответствии с правилами dlp_resp_blocked_code и dlp_resp_blocked_body.
-
fail — при превышении порога check_text_disconnect_timeout или недоступности DLP-системы в envoy-плагин Tourniquet будет возвращаться ошибка. Плагин будет интерпретировать ее в соответствии с правилами dlp_internal_error_code и dlp_internal_error_body.
-
-
debug_mode — активация режима отладки, который рекомендуется включать при первичной настройке системы, чтобы в случае проблемы в интеграции с DLP-системой работа мессенджера не была затронута. Режим отладки отличается от реального лишь тем, что на проверку текста будет сразу отдан успешный ответ, как если бы DLP-система провела проверку и не нашла бы ничего подозрительного в тексте. Значение true включает режим отладки, значение false выключает.
-
default_access_level— используется для отправки файлов в DLP-систему, не изменяйте параметр.
-
file_api_retry_count — используется для отправки файлов в DLP-систему, не изменяйте параметр.
-
file_api_retry_timeout — используется для отправки файлов в DLP-систему, не изменяйте параметр.
-
file_api_login — используется для отправки файлов в DLP-систему, не изменяйте параметр.
-
file_api_password — используется для отправки файлов в DLP-систему, не изменяйте параметр.
-
file_api_auth_address — используется для отправки файлов в DLP-систему, не изменяйте параметр.
-
file_api_address — используется для отправки файлов в DLP-систему, не изменяйте параметр.
-
file_api_insecure — используется для отправки файлов в DLP-систему, не изменяйте параметр.
В секции adapters_manager укажите настройки управления адаптерами:
- default_adapter_name — укажите адаптер, используемый по умолчанию.
-
-
Примените изменения командой:
Шаг 3. Создайте плагин для подключения провайдера
Данный шаг актуален только для DLP-системы InfoWatch. Если вы используете Solar Dozor или SearchInform, перейдите к следующему шагу.
Подключение провайдера данных осуществляется через подключение плагина. В плагине содержится информация о поставщике данных, типы обрабатываемых событий и пользовательские заголовки. Подробнее про регистрацию сторонних компонентов можно посмотреть в документации InfoWatch — https://kb.infowatch.com/pages/viewpage.action?pageId=217787144
Для создания плагина создайте файл manifest.json. Пример manifest.json-файла плагина:
{
"PLUGIN_ID": "346227C2657C4701B86892CAE732805D",
"DISPLAY_NAME": "Плагин для события мессенджера",
"DESCRIPTION": {
"eng": "IM events reception",
"rus": "Прием событий менеджера"
},
"VERSION": "0.0.1",
"VENDOR": "VKteams",
"LICENSE": [
{
"PATH": "licenses/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"
},
{
"NAME": "VKteams_text_chat_name_header",
"NOTE": {
"rus": "Название чата",
"eng": "Chat name"
},
"DATA_CLASS": [
"kChat"
],
"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"
},
{
"NAME": "VKteams_text_chat_id_header",
"NOTE": {
"rus": "ID чата",
"eng": "Chat ID"
},
"DATA_CLASS": [
"kChat"
],
"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"
},
{
"NAME": "VKteams_text_chat_participants_header",
"NOTE": {
"rus": "Количество участников чата",
"eng": "Number of chat participants"
},
"DATA_CLASS": [
"kChat"
],
"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": "number",
"FORMAT": "integer",
"IS_MULTIPLE_VALUE": "1"
},
{
"NAME": "VKteams_message_type_header",
"NOTE": {
"rus": "Тип отправленного сообщения",
"eng": "Message type"
},
"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"
},
{
"NAME": "VKteams_sender_ip_header",
"NOTE": {
"rus": "IP отправителя",
"eng": "Sender IP"
},
"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"
},
{
"NAME": "VKteams_sender_ua_header",
"NOTE": {
"rus": "UA отправителя",
"eng": "Sender UA"
},
"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"
},
{
"NAME": "VKteams_access_level_header",
"NOTE": {
"rus": "Уровень доступа к файлу",
"eng": "File access_level"
},
"DATA_CLASS": [
"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"
}
]
}
Шаг 4. Активируйте envoy-плагин Tourniquet
-
Перейдите в конфигурационный файл /usr/local/etc/k8s/helmwave/projects/istio/values/istio-ingress.yml и убедитесь, что gateway включен:
-
В конфигурационном файле /usr/local/etc/k8s/helmwave/store/dlp.yml установить в поле tourniquetEnabled значение true.
-
Примените изменения командой:
Примечание
Если вы хотите получать IP-адрес клиентского приложения, сделавшего запрос в DLP-систему:
- Перейдите в конфигурационный файл /usr/local/etc/k8s/helmwave/projects/istio/values/istio-ingress.yml.
-
В секцию tourniquet вставьте параметр dlp_ip_source_header. Укажите для него заголовок, который будет использоваться для извлечения IP-адреса клиента, сделавшего запрос.
-
Примените изменения:
-
Проверьте, что плагин запустился:
В выводе консоли pod должен находиться в статусе Running. -
Проверьте логи сервиса на возможные проблемы:
Искать необходимо по названию модуля Tourniquet. Пример проблем в логах:sudo kubectl logs -n istio-ingress $(sudo kubectl get pod -n istio-ingress | grep istio-ingress | awk '{print $1}')
Подобная запись в логах говорит о проблемах в конфигурации — необходимо перепроверить конфигурацию или вернуть конфиг к значению по умолчанию.2024-11-21T13:52:28.946719Z error envoy golang external/envoy/contrib/golang/common/log/cgo.cc:24 failed to parse golang plugin config: dlp_resp_blocked_code: expect float64 while got string thread=14 2024-11-21T13:52:28.946961Z warning envoy config external/envoy/source/extensions/config_subscription/grpc/delta_subscription_state.cc:269 delta config for type.googleapis.com/envoy.config.listener.v3.Listener rejected: Error adding/updating listener(s) 0.0.0.0_80: golang filter failed to parse plugin config: tourniquet /var/lib/im/modules/tourniquet.so
Шаг 5. Отключите Zstandard-сжатие
Для правильной работы модуля Tourniquet необходимо отключить Zstd-сжатие. Для этого:
-
Перейдите в конфигурационный файл /usr/local/nginx-im/html/myteam/myteam-config.json и установите для полей zstd-requests-enabled и zstd-responses-enabled значение false:
-
Перезапустите сервис Godmod:
Настройка отправки файлов в DLP-систему
Внимание
Все команды в консоли выполняются под пользователем root.
Шаг 1. Активируйте сервис Vahter
Сервис отвечает за интеграцию с DLP-системой Solar Dozor через протокол ICAP и находится в инсталляции в неактивном состоянии.
Чтобы активировать сервис:
- Перейдите в конфигурационный файл /usr/local/etc/k8s/helmwave/projects.yml и удалите из секции disabled сервис Vahter.
-
Запустите деплой сервиса:
-
Проверьте, что сервис запустился:
В выводе консоли pod должен находиться в статусе Running.
Шаг 2. Активируйте сервис Multifora
- Перейдите в конфигурационный файл /usr/local/etc/k8s/helmwave/projects.yml и удалите из секции disabled сервис Multifora.
-
Запустите деплой сервиса:
-
Проверьте, что сервис запустился:
В выводе консоли pod должен находиться в статусе Running.
Шаг 3. Настройте конфигурацию адаптера к DLP-системе
В конфигурационном файле /usr/local/etc/k8s/helmwave/store/dlp.yml в секции adapters содержатся общие параметры для проверки текста/файлов и исключительные для текста и файлов. Секция adapter_manager управляет всеми адаптерами, описанными в секции adapters, и определяет, какой адаптер будет использован.
-
Укажите настройки подключения к DLP-системе:
adapters: solar_dozor: name: solar_dozor enabled: false url: <your_solar_dozor_host.example> icap_client_timeout: 10s topic_url: http://VkTeams check_text_warn_timeout: 1s #используется для отправки текстовых сообщений в DLP-систему check_text_disconnect_timeout: 3s #используется для отправки текстовых сообщений в DLP-систему check_file_warn_timeout: 1m check_file_disconnect_timeout: 10m strategy_on_fail: fail debug_mode: false access_levels_recheck: false default_access_level: Internal access_levels: - Internal - External adapters_manager: icap_debug: false default_adapter_name: solar_dozor
где:
-
name — имя адаптера.
-
enabled — если значение true – включена отправка данных в DLP-систему, если false – выключена.
-
url — адрес для интеграции с DLP-системой.
-
icap_client_timeout — таймаут на соединение с DLP-системой.
-
topic_url — тема сообщения в URL-формате.
-
check_text_warn_timeout — используется для отправки текстовых сообщений в DLP-систему, не изменяйте параметр.
-
check_text_disconnect_timeout — используется для отправки текстовых сообщений в DLP-систему, не изменяйте параметр.
Внимание
Не устанавливайте таймаут более семи секунд, это может привести к проблемам отправки сообщений в клиентских приложениях VK Teams
-
check_file_warn_timeout — таймаут, при достижении которого пишется лог о превышении времени проверки файлов и увеличивается соответствующая метрика, которая подсчитывает количество превышений этого порога. Необходим для оценки времени реакции DLP-системы.
-
check_file_disconnect_timeout — таймаут, при достижении которого обрывается запрос проверки файлов, создается запись в логах и увеличивается соответствующая метрика. Параметр check_file_disconnect_timeout должен быть больше параметра max_timeout
-
strategy_on_fail — используется для формирования результата проверки текста, когда DLP-система долго не отвечает или недоступна. Параметр может принимать значения:
-
ok — при превышении порога check_text_disconnect_timeout или недоступности DLP-системы в сервис Vahter будет возвращаться успешный ответ, как если бы был получен положительный результат проверки сообщения.
-
block — при превышении порога check_text_disconnect_timeout или недоступности DLP-системы в envoy-плагин Tourniquet будет возвращаться ошибка. Плагин будет интерпретировать ее в соответствии с правилами dlp_resp_blocked_code и dlp_resp_blocked_body.
-
fail — при превышении порога check_text_disconnect_timeout или недоступности DLP-системы в envoy-плагин Tourniquet будет возвращаться ошибка. Плагин будет интерпретировать ее в соответствии с правилами dlp_internal_error_code и dlp_internal_error_body.
-
-
debug_mode — активация режима отладки, который рекомендуется включать при первичной настройке системы, чтобы в случае проблемы в интеграции с DLP-системой работа мессенджера не была затронута. Режим отладки отличается от реального лишь тем, что на проверку текста будет сразу отдан успешный ответ, как если бы DLP-система провела проверку и не нашла бы ничего подозрительного в тексте. Значение true включает режим отладки, значение false выключает.
-
access_levels_recheck — если значение true, включается логика «перезапросов» доступа к файлу из разных контуров. Пример: пользователь ранее запросил доступ к файлу из корпоративной сети, и DLP-система вернула позитивный результат проверки. Далее пользователь запросил доступ к тому же файлу из внешней сети. Если для параметра установлено значение true, в DLP-систему будет направлен «перезапрос» доступа. Перезапросы выполняются последовательно - от самого доверенного до менее доверенного. Результатом будет минимальный уровень доступа, которым должен обладать пользователь, чтобы просмотреть/скачать файл.
-
default_access_level— уровень доступа к файлам по умолчанию, используется при выключеннном параметре access_levels_recheck.
-
access_levels — уровни доступа к файлу:
- External — файл доступен вне корпоративной системы передачи данных (интернет/внешняя среда).
- Internal — файл доступен только в корпоративной системе передачи данных. Обязательное требование к порядку уровней – от самого доверенного к менее доверенному уровню доступа, иначе будут получены некорректные результаты проверки и «перепроверки».
В секции adapters_manager укажите настройки управления адаптерами:
- icap_debug — если true, то включено подробное логирование при общении по протоколу ICAP.
- default_adapter_name — укажите адаптер, используемый по умолчанию.
adapters: info_watch: name: info_watch enabled: false address: <your_infowatch_host.example> token: <your_token> company: VKteams # не меняйте параметр при использовании предоставленного manifest.json, значения должны совпадать с указанными внутри manifest.json imservice: im_VKteams # не меняйте параметр при использовании предоставленного manifest.json, значения должны совпадать с указанными внутри manifest.json capture_server_fqdn: vahter push_api_version: 1.9 push_api_address: <your_infowatch_host.example>:1234/verdict push_api_retry_count: 5 check_text_warn_timeout: 1s #используется для отправки текстовых сообщений в DLP-систему check_text_disconnect_timeout: 3s #используется для отправки текстовых сообщений в DLP-систему check_file_warn_timeout: 1m check_file_disconnect_timeout: 10m strategy_on_fail: block debug_mode: false access_levels_recheck: false default_access_level: Internal access_levels: - Internal - External check_file_chunk_bytes: 100480 adapters_manager: default_adapter_name: info_watch
где:
-
name — имя адаптера.
-
enabled — если значение true – включена отправка данных в DLP-систему, если false – выключена.
-
address — адрес проверяющего сервера.
-
token — токен доступа.
-
company — наименования компании отправителя. Не меняйте параметр при использовании предоставленного manifest.json, значения должны совпадать с указанными внутри manifest.json.
-
imservice — наименование сервиса отправителя. Не меняйте параметр при использовании предоставленного manifest.json, значения должны совпадать с указанными внутри manifest.json.
-
capture_server_fqdn — наименование сервера отправителя.
-
push_api_version — версия push_api.
-
push_api_address — адрес HTTP-сервера, возвращающего результат проверки.
-
push_api_retry_count — количество попыток получения результата.
-
check_text_warn_timeout — используется для текстовых сообщений файлов в DLP-систему, не изменяйте параметр.
-
check_text_disconnect_timeout — используется для отправки тектовых сообщений в DLP-систему, не изменяйте параметр.
Внимание
Не устанавливайте таймаут более семи секунд, это может привести к проблемам отправки сообщений в клиентских приложениях VK Teams
-
check_file_warn_timeout — таймаут, при достижении которого пишется лог о превышении времени проверки файлов и увеличивается соответствующая метрика, которая подсчитывает количество превышений этого порога. Необходим для оценки времени реакции DLP-системы.
-
check_file_disconnect_timeout — таймаут, при достижении которого обрывается запрос проверки файлов, создается запись в логах и увеличивается соответствующая метрика. Параметр check_file_disconnect_timeout должен быть больше параметра max_timeout.
-
strategy_on_fail — используется для формирования результата проверки текста, когда DLP-система долго не отвечает или недоступна. Параметр может принимать значения:
-
ok — при превышении порога check_text_disconnect_timeout или недоступности DLP-системы в сервис Vahter будет возвращаться успешный ответ, как если бы был получен положительный результат проверки сообщения.
-
block — при превышении порога check_text_disconnect_timeout или недоступности DLP-системы в envoy-плагин Tourniquet будет возвращаться ошибка. Плагин будет интерпретировать ее в соответствии с правилами dlp_resp_blocked_code и dlp_resp_blocked_body.
-
fail — при превышении порога check_text_disconnect_timeout или недоступности DLP-системы в envoy-плагин Tourniquet будет возвращаться ошибка. Плагин будет интерпретировать ее в соответствии с правилами dlp_internal_error_code и dlp_internal_error_body.
-
-
debug_mode — активация режима отладки, который рекомендуется включать при первичной настройке системы, чтобы в случае проблемы в интеграции с DLP-системой работа мессенджера не была затронута. Режим отладки отличается от реального лишь тем, что на проверку текста будет сразу отдан успешный ответ, как если бы DLP-система провела проверку и не нашла бы ничего подозрительного в тексте. Значение true включает режим отладки, значение false выключает.
-
access_levels_recheck — если значение true, включается логика «перезапросов» доступа к файлу из разных контуров. Пример: пользователь ранее запросил доступ к файлу из корпоративной сети, и DLP-система вернула позитивный результат проверки. Далее пользователь запросил доступ к тому же файлу из внешней сети. Если для параметра установлено значение true, в DLP-систему будет направлен «перезапрос» доступа. Перезапросы выполняются последовательно - от самого доверенного до менее доверенного. Результатом будет минимальный уровень доступа, которым должен обладать пользователь, чтобы просмотреть/скачать файл..
-
default_access_level— уровень доступа к файлам по умолчанию, используется при выключеннном параметре access_levels_recheck.
-
access_levels — уровни доступа к файлу:
- External — файл доступен вне корпоративной системы передачи данных (интернет/внешняя среда).
- Internal — файл доступен только в корпоративной системе передачи данных. Обязательное требование к порядку уровней – от самого доверенного к менее доверенному уровню доступа, иначе будут получены некорректные результаты проверки и «перепроверки».
-
check_file_chunk_bytes — размер передаваемых чанков.
В секции adapters_manager укажите настройки управления адаптерами:
- default_adapter_name — укажите адаптер, используемый по умолчанию.
adapters: search_inform: name: search_inform enabled: false url: <your_searchinform_host.example> icap_client_timeout: 600s topic_url: http://VkTeams check_text_warn_timeout: 1s #используется для отправки текстовых сообщений в DLP-систему check_text_disconnect_timeout: 5s #используется для отправки текстовых сообщений в DLP-систему check_file_warn_timeout: 1s check_file_disconnect_timeout: 1500s strategy_on_fail: block debug_mode: false default_access_level: Internal file_api_retry_count: 10 file_api_retry_timeout: 3m file_api_login: test file_api_password: test file_api_auth_address: <searchinform_host.example>:9082 file_api_address: <searchinform_host.example>:9086 file_api_insecure: true adapters_manager: default_adapter_name: search_inform
где:
-
name — имя адаптера.
-
enabled — если значение true – включена отправка данных в DLP-систему, если false – выключена.
-
url — адрес и порт ICAP API проверяющего сервера.
-
icap_client_timeout — таймаут подключения к ICAP-серверу.
-
topic_url — топик сообщения.
-
check_text_warn_timeout — используется для отправки текстовых сообщений в DLP-систему, не изменяйте параметр.
-
check_text_disconnect_timeout — используется для отправки текстовых сообщений в DLP-систему, не изменяйте параметр.
Внимание
Не устанавливайте таймаут более семи секунд, это может привести к проблемам отправки сообщений в клиентских приложениях VK Teams
-
check_file_warn_timeout — таймаут, при достижении которого пишется лог о превышении времени проверки файлов и увеличивается соответствующая метрика, которая подсчитывает количество превышений этого порога. Необходим для оценки времени реакции DLP-системы.
-
check_file_disconnect_timeout — таймаут, при достижении которого обрывается запрос проверки файлов, создается запись в логах и увеличивается соответствующая метрика. Параметр check_file_disconnect_timeout должен быть больше параметра max_timeout.
-
strategy_on_fail — используется для формирования результата проверки текста, когда DLP-система долго не отвечает или недоступна. Параметр может принимать значения:
-
ok — при превышении порога check_text_disconnect_timeout или недоступности DLP-системы в сервис Vahter будет возвращаться успешный ответ, как если бы был получен положительный результат проверки сообщения.
-
block — при превышении порога check_text_disconnect_timeout или недоступности DLP-системы в envoy-плагин Tourniquet будет возвращаться ошибка. Плагин будет интерпретировать ее в соответствии с правилами dlp_resp_blocked_code и dlp_resp_blocked_body.
-
fail — при превышении порога check_text_disconnect_timeout или недоступности DLP-системы в envoy-плагин Tourniquet будет возвращаться ошибка. Плагин будет интерпретировать ее в соответствии с правилами dlp_internal_error_code и dlp_internal_error_body.
-
-
debug_mode — активация режима отладки, который рекомендуется включать при первичной настройке системы, чтобы в случае проблемы в интеграции с DLP-системой работа мессенджера не была затронута. Режим отладки отличается от реального лишь тем, что на проверку текста будет сразу отдан успешный ответ, как если бы DLP-система провела проверку и не нашла бы ничего подозрительного в тексте. Значение true включает режим отладки, значение false выключает.
-
default_access_level — уровень доступа, выставляемый проверенным и допущенным файлам.
-
file_api_retry_count — количество попыток запросов к HTTP API проверяющего сервера.
-
file_api_retry_timeout — таймаут запросов к HTTP API проверяющего сервера.
-
file_api_login — логин авторизации к HTTP API проверяющего сервера.
-
file_api_password — пароль авторизации к HTTP API проверяющего сервера.
-
file_api_auth_address — адрес и порт API-авторизации.
-
file_api_address — пароль авторизации HTTP API проверяющего сервера.
-
file_api_insecure — нужно ли игнорировать ошибки сертификата HTTP API проверяющего сервера.
В секции adapters_manager укажите настройки управления адаптерами:
- default_adapter_name — укажите адаптер, используемый по умолчанию.
-
-
Примените изменения командой:
Шаг 4. Создайте плагин для подключения провайдера
Данный шаг актуален только для DLP-системы InfoWatch. Если вы используете Solar Dozor или SearchInform, перейдите к следующему шагу.
Подключение провайдера данных осуществляется через подключение плагина. В плагине содержится информация о поставщике данных, типы обрабатываемых событий и пользовательские заголовки. Подробнее про регистрацию сторонних компонентов можно посмотреть в документации InfoWatch — https://kb.infowatch.com/pages/viewpage.action?pageId=217787144
Для создания плагина создайте файл manifest.json. Пример manifest.json-файла плагина:
{
"PLUGIN_ID": "346227C2657C4701B86892CAE732805D",
"DISPLAY_NAME": "Плагин для события мессенджера",
"DESCRIPTION": {
"eng": "IM events reception",
"rus": "Прием событий менеджера"
},
"VERSION": "0.0.1",
"VENDOR": "VKteams",
"LICENSE": [
{
"PATH": "licenses/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"
},
{
"NAME": "VKteams_text_chat_name_header",
"NOTE": {
"rus": "Название чата",
"eng": "Chat name"
},
"DATA_CLASS": [
"kChat"
],
"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"
},
{
"NAME": "VKteams_text_chat_id_header",
"NOTE": {
"rus": "ID чата",
"eng": "Chat ID"
},
"DATA_CLASS": [
"kChat"
],
"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"
},
{
"NAME": "VKteams_text_chat_participants_header",
"NOTE": {
"rus": "Количество участников чата",
"eng": "Number of chat participants"
},
"DATA_CLASS": [
"kChat"
],
"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": "number",
"FORMAT": "integer",
"IS_MULTIPLE_VALUE": "1"
},
{
"NAME": "VKteams_message_type_header",
"NOTE": {
"rus": "Тип отправленного сообщения",
"eng": "Message type"
},
"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"
},
{
"NAME": "VKteams_sender_ip_header",
"NOTE": {
"rus": "IP отправителя",
"eng": "Sender IP"
},
"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"
},
{
"NAME": "VKteams_sender_ua_header",
"NOTE": {
"rus": "UA отправителя",
"eng": "Sender UA"
},
"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"
},
{
"NAME": "VKteams_access_level_header",
"NOTE": {
"rus": "Уровень доступа к файлу",
"eng": "File access_level"
},
"DATA_CLASS": [
"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"
}
]
}
Шаг 5. Активируйте envoy-плагин Tourniquet
Включение модуля Tourniquet опционально. Он используется для проверки текстов сообщений, включающих в себя файлы. Отправка файлов сама по себе может производиться изолировано.
Чтобы активировать плагин:
-
Перейдите в конфигурационный файл /usr/local/etc/k8s/helmwave/projects/istio/values/istio-ingress.yml и убедитесь, что gateway включен:
-
В конфигурационном файле /usr/local/etc/k8s/helmwave/store/dlp.yml установить в поле tourniquetEnabled значение true.
-
Примените изменения командой:
Примечание
Если вы хотите получать IP-адрес клиентского приложения, сделавшего запрос в DLP-систему:
- Перейдите в конфигурационный файл /usr/local/etc/k8s/helmwave/projects/istio/values/istio-ingress.yml.
-
В секцию tourniquet вставьте параметр dlp_ip_source_header. Укажите для него заголовок, который будет использоваться для извлечения IP-адреса клиента, сделавшего запрос.
-
Примените изменения:
-
Проверьте, что плагин запустился:
В выводе консоли pod должен находиться в статусе Running. -
Проверьте логи сервиса на возможные проблемы:
Искать необходимо по названию модуля Tourniquet. Пример проблем в логах:sudo kubectl logs -n istio-ingress $(sudo kubectl get pod -n istio-ingress | grep istio-ingress | awk '{print $1}')
Подобная запись в логах говорит о проблемах в конфигурации — необходимо перепроверить конфигурацию или вернуть конфиг к значению по умолчанию.2024-11-21T13:52:28.946719Z error envoy golang external/envoy/contrib/golang/common/log/cgo.cc:24 failed to parse golang plugin config: dlp_resp_blocked_code: expect float64 while got string thread=14 2024-11-21T13:52:28.946961Z warning envoy config external/envoy/source/extensions/config_subscription/grpc/delta_subscription_state.cc:269 delta config for type.googleapis.com/envoy.config.listener.v3.Listener rejected: Error adding/updating listener(s) 0.0.0.0_80: golang filter failed to parse plugin config: tourniquet /var/lib/im/modules/tourniquet.so
Шаг 6. Активируйте сервис Watchman
-
В конфигурационном файле /usr/local/etc/k8s/helmwave/store/dlp.yml установите в поле watchmanEnabled значение true.
-
Примените изменения командой:
-
Проверьте, что сервис запустился:
В выводе консоли pod должен находиться в статусе Running. -
Проверьте логи сервиса на возможные проблемы:
Искать необходимо по названию модуля Watchman. Пример проблем в логах:sudo kubectl logs -n istio-ingress $(sudo kubectl get pod -n istio-ingress | grep istio-ingress | awk '{print $1}')
Подобная запись в логах говорит о проблемах в конфигурации — необходимо перепроверить конфигурацию или вернуть конфиг к значению по умолчанию.2024-11-21T13:52:28.946719Z error envoy golang external/envoy/contrib/golang/common/log/cgo.cc:24 failed to parse golang plugin config: ... 2024-11-21T13:52:28.946961Z warning envoy config external/envoy/source/extensions/config_subscription/grpc/delta_subscription_state.cc:269 delta config for type.googleapis.com/envoy.config.listener.v3.Listener rejected: Error adding/updating listener(s) 0.0.0.0_80: golang filter failed to parse plugin config: watchman /var/lib/im/modules/watchman.so
Шаг 7. Настройте правила доступа к файлам
Модуль Watchman рассматривает запросы на получение доступа к содержимому файла (просмотр и скачивание ) и проставляет к пользовательскому запросу уровень доступа на основе конфигурируемых правил. На данный момент есть два уровня доступа: External или Internal.
Уровень доступа для пользователя определяется по IP-адресу и устройству, с которого был отправлен запрос на доступ к файлу.
Механизм работы правил доступа пользователей к файлу
Правила настраиваются в конфигурационном файле /usr/local/etc/k8s/helmwave/store/dlp.yml в секции watchmanAccessLevels. Пример конфигурации с правилами:
tourniquetEnabled: true
watchmanEnabled: true
watchmanAccessLevels:
- access_level: internal
subnets:
- 192.168.0.1/24
Device: []
OS:
- IOS
Browser: []
- access_level: internal
subnets: []
Device: []
OS: []
Browser:
- Opera
Каждое правило (access_level) состоит из секций селекторов:
- subnets.
- Device.
- OS.
- Browser.
Если секция отсутствует или пуста, проверка на соответствующий признак не будет осуществляться в рамках правила (пример: пустая секция subnets в правиле означает, что под правило попадает любой IP-адрес).
Данные пользователя проверяются на соответствие перечисленным правилам последовательно сверху вниз до первого подошедшего правила. Когда данные пользователя совпадают с данными из селекторов, запросу пользователя присваивается уровень доступа к файлу - External или Internal.
Чтобы настроить правила для определения уровня доступа к файлам:
-
Перейдите в конфигурационный файл /usr/local/etc/k8s/helmwave/store/dlp.yml и укажите правила в секции watchmanAccessLevels.
По умолчанию секция watchmanAccessLevels содержит пустые элементы с ключами External и Internal. Если их оставить как есть, то к каждому запросу пользователя будет применятся уровень доступа External, так как он расположен первым.
Значения в секциях селекторов не чувствительны к регистру. Возможные значения селекторов:
Device:
- mobilе.
- desktop.
- web.
Browser (настраивается для веб-приложений):
- chrome.
- firefox.
- opera.
- ie.
- safari.
- edge.
OS (настраивается для веб-приложений):
- android.
- windows.
- macos.
- ios.
- linux.
Для декстоп-устройств не поддерживается определение операционных систем.
Для мобильных устройств поддерживается определение iOS и Android.
-
Примените изменения командой:
Примечание
Если вы используете правила Watchman для определения уровня доступа, вы можете изменить HTTP-заголовок, который используется для получения IP-адреса клиентского приложения, сделавшего запрос в DLP-систему:
-
Перейдите в конфигурационный файл /usr/local/etc/k8s/helmwave/projects/istio/values/istio-ingress.yml и в секции watchman добавьте следующие поля:
Пример конфигурационного файла:dlp_ip_source_header: "x-forwarded-for" # заголовок, который будет использоваться для извлечения IP-адреса клиента, сделавшего запрос default_access_level: "external" # уровень доступа к файлу, который устанавливается по умолчанию (если ни одно из правил не подошло)
plugins: # ... watchman: defined: {{.Release.Store.watchmanEnabled}} plugin_config: &watchman_plugin_config dlp_access_levels_enable: true # deprecated dlp_access_levels_path_suffixes: [] # deprecated dlp_ip_source_header: "x-forwarded-for" default_access_level: "external" access_levels: {{.Release.Store.watchmanAccessLevels | toYaml | indent 8}} routes: watchman: plugin_config: *watchman_plugin_config
Все значения кроме default_access_level являются техническими, изменять их не рекомендуется.
-
Примените изменения командой:
Шаг 8. Настройте сервис Go-files
Перейдите в конфигурационный файл сервиса Go-files /usr/local/go.files.icq.com/files.icq.com.config.yaml и укажите настройки отправки файлов в DLP-систему:
-
В секции DLPv2 укажите настройки для проверки файлов:
где:DLPv2: dlp_checks_timeout: 20m dlp_access_levels_checks_enable: false dlp_checks_enable: true dlp_status_on_timeout: "Outdated" dlp_access_level_on_timeout: "External"
-
dlp_checks_timeout — таймаут, при достижении которого статус проверки файла переходит в «Outdated» или «Ok», если DLP-система не вернула результат проверки.
-
dlp_access_levels_checks_enable — если true, будет проверяться уровень доступа к файлу с устройства пользователя.
-
dlp_checks_enable — если false, отключается отправка файла на проверку в сервис Vahter и отключается проверка уровня доступа пользователя к файлу.
-
dlp_status_on_timeout — статус, выставляемый при достижении таймаута dlp_checks_timeout, если DLP-система не вернула результат проверки файла.
Доступные значения: «Outdated», «Ok».
-
dlp_access_level_on_timeout — уровень доступа, выставляемый при достижении таймаута dlp_checks_timeout, если DLP-система не вернула результат проверки файла. Доступные значения: Internal, External.
-
-
В секции multifora укажите конфигурация взаимодействия с модулем Multifora:
где:multifora: host: "multifora.vkteams.svc.cluster.local:44447" http_timeout: 10s max_retry: 3 max_timeout: 35s
- host — оставьте этот параметр без изменений.
- http_timeout — таймаут единичных запросов в модуль Multifora.
- max_retry — число ретраев, выполняемых с экспоненциально нарастающей задержкой.
- max_timeout — время, выделяемое на всю серию ретраев.
Внимание
В конфигурационном файле сервиса Go-files /usr/local/go.files.icq.com/files.icq.com.config.yaml есть секция DLP для интеграции VK Teams с другими DLP-системами. Интеграция с Solar Dozor не конфигурируется через эту секцию. Совместная работа нескольких DLP-систем не поддерживается.
-
В секции mysql_cluster_optimize включите миграцию статусов проверки файлов:
mysql_cluster_optimize: login_admin_env_key: FILES_ADMIN_LOGIN password_admin_env_key: FILES_ADMIN_PASSWORD migrations_enabled: true migrations_path: file:////usr/local/go.files.icq.com/migrations
где migrations_enabled — если true, миграция статусов проверки файлов включена.
-
Перезапустите сервис Go-files командой:
Решение проблем
«Грязная» база в сервисе Go-files
Ошибка: Dirty database version 1. Fix and force version
-
По логам сервиса Go-files определите шард (базу), которая стала «грязной» в результате миграций. Например, такое может происходить в случае, когда неправильно написан запрос в файле миграций.
-
Укажите верные настройки миграции в конфигурационном файле сервиса Go-files /usr/local/go.files.icq.com/files.icq.com.config.yaml.
-
Удалите таблицу schema_migrations из шарда.
-
Перезапустить сервис Go-files командой:
Бесконечные ретраи метода отправки сообщений sendIM
Проблема: Статус-код 500 при ответе на sendIM на устройствах iOS и Android вызывает ретрай. Запрос повторяется до момента, пока сервер не вернет статус-код, отличный от 500. Таким образом сервис Vahter может стать недоступным.
Данная проблема может быть связана с недоступностью DLP-системы.
Чтобы решить эту проблему, в конфигурационном файле /usr/local/etc/k8s/helmwave/store/dlp.yml.
-
Укажите для параметра strategy_on_fail значение true. Тогда результат проверки будет положительным при недоступности или ошибке запроса в DLP-систему.
-
Укажите для параметра debug_mode значение true. Результат проверки будет положительным без ожидания ответа на запрос в DLP-системы.
-
Примените изменения командой:
Примечание
Установить параметры можно также через etcd при помощи команд:
etcdctl --endpoints=etcd.im-etcd.svc.cluster.local:2379 put /vars/services/vahter/production/private/service/dlp/solar_dozor/ strategy_on_fail true
etcdctl --endpoints=etcd.im-etcd.svc.cluster.local:2379 put /vars/services/vahter/production/private/service/dlp/solar_dozor/debug_mode true
и применить изменения командой:
Таймауты при проверке текста/файлов
При неправильно конфигурации сервиса Vahter запрос в DLP-систему обрывается по таймауту.
Причины:
-
Низкие значения параметров в конфигурационном файле /usr/local/etc/k8s/helmwave/store/dlp.yml:
- check_text_disconnect_timeout.
- check_file_disconnect_timeout.
- icap_client_timeout — сервис не успел установить соединение с DLP-системой по ICAP.
-
Низкие значения параметра max_timeout в конфигурационном файле сервиса Go-files /usr/local/go.files.icq.com/files.icq.com.config.yaml — не успел сформироваться id файла в облаке.
Решение:
-
Увеличьте таймауты.
При выставлении таймаутов при проверке файлов нужно учитывать, что параметр check_file_disconnect_timeout должен быть больше max_timeout, т.к. при проверки файлов используется контекст с таймаутом, который формируется на основе check_file_disconnect_timeout.
-
Примените изменения командой:
Файлы недоступны для проверки/недоступно файловое хранилище
Получение файлов осуществляется через сервис Go-files, используется механизм ретраев.
Если файлы недоступны для проверки или недоступно файловое хранилище, вы можете изменить настройки взаимодействия сервисов Go-files и Multifora в конфигурационном файле /usr/local/etc/k8s/helmwave/projects/vahter/values/vahter.yml:
files:
host: "{{ .Release.Store.filesComHost }}" #хост Go-files
timeout: 5m #таймаут подключения
retries: #ретраи при получении файла
max_retry: 5 #количество ретраев
max_timeout: 9m #временной промежуток, в который выполняются ретраи
multifora:
address: multifora.vkteams.svc.cluster.local:44438 #хост Multifora, не изменяйте этот параметр
timeout: 3s #таймаут подключения