Кладезь
Система обеспечивает шифрование канала между агентом синхронизации на локальном компьютере и сервером.
Шифрование должно быть как с применением алгоритмов ГОСТ, так и RSA
ФУНКЦИОНАЛ СИСТЕМЫ
Защита соединения с клиентскими приложениями
Защита соединения, от клиентского приложения до хранилища, осуществляется TLS-протоколом с использованием ГОСТ/RSA
Уникальность решения в том, что клиентские приложения могут использовать КриптоПро CSP или иной сертифицированный СКЗИ для установки TLS-соединений.
На стороне сервера необходим прокси-сервер, обеспечивающий TLS termination и дальнейшее распределение трафика по серверам Системы. Рекомендуем использовать КриптоПро NGate или Континент TLS VPN
Подсистемы бизнес-логики
Все подсистемы должны быть выполнены таким образом, чтобы позволять балансировку запросов и, при необходимости, расширение кластера веб-серверов.
В случае использования Linux-стека каждая подсистема может быть выполнена в виде Docker-образа и затем размножена одной из систем оркестрации (Kubernetes, Docker Swarm и пр.)
Подсистема аутентификации и авторизации
Для аутентификации пользователей в системе предлагается использовать только federated аутентификацию. В этом случае задача сбора credentials и их проверка полностью убирается из системы, нужно только проверять поступающие билеты с именами/группами пользователей.
Авторизация пользователей проводится при запросах на скачивание/загрузку файлов по коротким ссылкам согласно назначенным правам, а также при управлении файлами и папками.
Когда система предлагает использовать только federated аутентификацию, то задача сбора credentials и их проверка полностью убирается из системы, нужно только проверять поступающие билеты с именами/группами пользователей
Авторизация пользователей проводится при запросах на скачивание/загрузку файлов по коротким ссылкам согласно назначенным правам, а также при управлении файлами и папками
Подсистема закачки/скачивания файлов
Представляет собой веб-сервер или кластер для обслуживания статического контента. При скачивании файлов на входе получает короткие ссылки в командах HTTP GET, проверяет наличие и верность заголовков аутентификации/авторизации в запросе и в случае успеха отгружает пользователю кусок файла, взятый из подсистемы хранения файлов. Загрузка файлов выполняется командой HTTP POST. Заголовки аутентификации сверяются с подсистемой аутентификации, в случае их отсутствия пользователь редиректится на сервер identity provider согласно правилам federated аутентификации.
Подсистема закачки/скачивания файлов
Включает в себя веб-сервера для отгрузки пользователям Single Page Application (SPA) административного dashboard, а также обслуживания REST API для перемещения/удаления файлов, создания коротких ссылок и прочих операций. Также содержит базу данных для хранения пользователей и назначенных прав на короткие ссылки.
Подсистема хранения файлов
Доступ к файловому хранилищу Системы ограничивается административно, так чтобы файлы не были доступны напрямую через локальную сеть предприятия. Для каждого пользователя заведена папка, в которой лежат его файлы. Доступ к файлам осуществляется через веб-сервер подсистемы загрузки/скачивания файлов.
Доступ к файлам из подсистемы бизнес-логики выполняется на уровне монтирования дисков в файловую систему веб-серверов по протоколам SMB/iSCSI/etc
Общая схема решения
-
чтение и запись своих файлов/папок в хранилище
-
создание коротких ссылок на файлы/папки для обмена с другими пользователями
-
чтение по короткой ссылке, если при создании ссылки задан доступ права на чтение
-
доступ на чтение по короткой ссылке, если это разрешено при создании ссылки, для сторонних пользователей
Интеграция клиентских приложений
Для улучшения UX необходимо, чтобы хранилище было доступно из максимально широкого числа приложений, как на десктопе, так и на мобильных устройствах.
Именно для этого нужны клиенты под разные платформы.
Android/iOS
Клиент для Android должен реализовывать “Document Provider” в рамках “Storage Access Framework”. Тогда все приложения Android смогут прозрачно использовать хранилище, помимо Google Drive будет видно и хранилище Системы.
Клиент для iOS должен реализовывать FileProvider, в этом случае из всех приложений при вызове UI открытия файлов будет доступно хранилище Системы, аналогично тому, как это происходит с iCloud
Операционные системы Windows, Linux, macOS, Браузеры
- Клиент для Windows должен обеспечить появление диска или папки в файловой системе ОС (например, как в Secret Disk)
- Клиент для Linux должен обеспечить монтирование хранилища в файловую систему ОС
- Клиент для macOS должен обеспечить монтирование хранилища в файловую систему ОС
- Доступ через веб-интерфейс нужен для управления файлами и ссылками на них без участия клиентских приложений. Также, должна быть возможность скачивания файлов браузером