Для защиты данных чатов от компрометации при размещении в облаке Dion можно использовать гибридную схему.
Гибридная схема размещения предполагает, что компонент DION.Чаты разворачивается таким образом, что часть его функциональных возможностей находится в облаке под централизованным управлением, а другая часть, связанная с шифрованием конфиденциальной информации, разворачивается на локально (сервис dion-crypto-engine). Это позволяет ограничить доступ к конфиденциальной информации в чатах и минимизировать ресурсы локальной инфраструктуры за счет хранения сообщений и вложений в них в облаке.
Пользователь отправляет сообщение, зашифрованное сессионным ключом, выработанным dion-crypto-engine в контуре организации. Затем данные отправляются в сервис dion-crypto-engine, где они перешифровываются с использованием постоянного ключа, который хранится в конфигурации сервиса. Перешифрованные данные пересылаются в облако для хранения. Хранение данных, зашифрованным локальным постоянным ключом, ведется в облаке.
|
Если в контуре организации используется только один экземпляр сервиса dion-crypto-engine и он выходит из строя, работа корпоративных чатов будет нарушена:
Для реализации отказоустойчивости, а также при инсталляциях с численностью пользователей более 4000, потребуется более одного экземпляра dion-crypto-engine. Для балансировки запросов мы рекомендуем использовать сервер reverse proxy.
Система балансировки gRPC-трафика должна соответствовать следующим ключевым требованиям:
Пример конфигурации для nginx:
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
# Настройки соединений
events {
worker_connections 16384;
}
http {
# Базовые настройки
include mime.types;
default_type application/octet-stream;
client_max_body_size 10m;
keepalive_timeout 60;
proxy_intercept_errors on;
# SSL-настройки
ssl_session_cache shared:SSL:50m;
ssl_session_timeout 5m;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES256-GCM-SHA384:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4';
# ssl_prefer_server_ciphers on; # Приоритет безопасных серверных шифров
# Upstream серверы
upstream dc_crypto_engine_upstream {
least_conn;
# Список экземпляров dion-crypto-engin. Укажите
server <IP-адрес_1>:9168 max_fails=3 fail_timeout=30s;
# server <IP-адрес_2>:9168 max_fails=3 fail_timeout=30s;
}
# Основной gRPC сервер (порт 9168)
server {
listen 9168 http2 ssl;
default_type application/grpc;
# TLS конфигурация. Заведите пути к сертификатам
ssl_certificate /crt/cert.crt;
ssl_certificate_key /crt/cert.key;
# Mutual TLS (mTLS) - раскомментировать для включения
# ssl_verify_client on;
# ssl_client_certificate /crt/client_ca.crt;
# Логи
access_log /var/log/nginx/grpc_access.log ;
error_log /var/log/nginx/grpc_error.log debug;
# Healthcheck
location /healthCheck {
access_log off;
return 204 '';
}
# gRPC endpoint
location /dc_crypto_engine.CryptoEngineService {
grpc_pass grpc://dc_crypto_engine_upstream;
}
# Обработчики ошибок
error_page 400 = @grpc_internal;
error_page 401 = @grpc_unauthenticated;
error_page 403 = @grpc_permission_denied;
error_page 404 = @grpc_unimplemented;
error_page 429 = @grpc_unavailable;
error_page 502 = @grpc_unavailable;
error_page 503 = @grpc_unavailable;
error_page 504 = @grpc_unavailable;
# Другие обработчики ошибок
# include /etc/nginx/grpc_errors.conf; # Оставим отдельно для чистоты
}
}
Для пилотной установки мы предлагаем развернуть в качестве балансировщика NGINX в docker-контейнере. Архив содержит образ NGINX c минимальной конфигурацией для запуска. |
Прежде, чем перейти к установке и конфигурированию сервиса, выполните следующие шаги:
sudo apt install ./dion-crypto-engine-v6-2-2.deb
Чтобы сконфигурировать гибридный сервис dion-crypto-engine, выполните следующие действия:
Конфигурация приведена для операционной системы Ubuntu 22.04. |
1. Откройте конфигурационный файл для редактирования:
sudo nano /etc/dion/dion-crypto-engine.yml
Конфигурационный файл содержит несколько блоков, которые отвечают за следующие функции:
listen-grpc
— настройка gRPC-сервера, который запускается при старте dion-crypto-engine. gRPC-сервер принимает различные вызовы для шифрования и дешифрования данных.application
— настройка таких параметров, как ключ шифрования secretkey
, использование DLP, а также размер передаваемых данных (chunk).stubErrorText
— заглушка, используемая, если по каким-то причинам не получается расшифровать сообщение.Требуется заполнить блоки listen-grpc , secretkey . Если вам не требуется DLP, выключите его в блоке application . |
2. Отредактируйте конфигурационный файл согласно комментариям в файле:
listen:
grpc:
# Впишите в переменную host локальный адрес данного экземпляра dion-crypto-engine в кавычках
# Пример заполнения: host: "10.10.10.10"
host: ""
# не меняйте порт
port: 9168
application:
scrambler:
# Впишите в переменную secretKey ключ шифрования данных. НЕ ДОПУСКАТЬ ПОТЕРЮ КЛЮЧА
# В случае утраты ключа расшифровка ранее отправленных сообщений станет невозможной
# Пример заполнения: secretKey: asdfghjklkqw
secretKey:
dlp:
# Для включения DLP измените параметр isEnabled со значения false на значение true
# Дополнительно требуется установка и настройка соответствующего DLP-сервиса
isEnabled: false
fileChunkSize: 64000
# stubErrorText отвечает за появление ошибки в случае, когда не удалось выполнить декодирование сообщения. При необходимости можно изменить текст ошибки
stubErrorText: "Ошибка декодирования"
3. Перезапустите сервис dion-crypto-engine:
sudo systemctl restart dion-crypto-engine
4. Убедитесь, что служба успешно запущена:
sudo systemctl status dion-crypto-engine
После успешного запуска сервиса включите шифрование:
1. Войдите в Панель Администрирования.
2. В разделе Общие настройки → Чаты → Адреса сервиса шифрования укажите публичный IP-адрес и порт, по которым отвечает dion-crypto-engine.
ВАЖНО! При включении шифрования через dion-crypto-engine вся прошлая переписка станет недоступной! |