Перейти к основному содержимому

Шифрование хранимых данных

Введение​

Функция Зашифровать хранимые данные в ONLYOFFICE Apps позволяет обеспечить безопасность конфиденциальных данных в вашем рабочем пространстве.

Шифрование — это обратимое преобразование информации для сохранения конфиденциальности данных, хранящихся на диске. Таким образом, даже если злоумышленникам удастся получить доступ к данным, хранящимся на жестком диске, они не смогут их прочитать, так как данные зашифрованы.

Шифрование основано на типе шифрования Encrypt-then-MAC (AES-256-CBC + HMAC-SHA256) всего массива данных внутри экземпляра ONLYOFFICE и соответствует международному стандарту шифрования данных AES-256. Для шифрования данных в ONLYOFFICE Apps используется тип шифрования AES-256 с симметричным алгоритмом CipherMode.CBC, а хэш-функция SHA256 в паре с кодом аутентификации сообщений HMAC проверяет целостность и подлинность зашифрованных данных.

Эта функция доступна только для серверных версий. Она работает только для DiscDataStore (только локальный диск. Не реализована для s3 и других облачных сервисов).

Важно

Из соображений безопасности не рекомендуется хранить зашифрованные данные и ключи шифрования на одной машине. Поэтому необходимо разнести службы ONLYOFFICE Apps и дисковое хранилище на разные машины. Единственный вариант — подключить другую машину в качестве внешнего диска.

Подключение диска удаленной машины через SSHFS​

Рассмотрим вариант подключения диска в Linux, когда ONLYOFFICE Apps установлен из DEB-пакетов.

SSHFS (Secure SHell FileSystem) — это клиентская программа для Linux (и других операционных систем, для которых есть реализация FUSE (Filesystem in Userspace)), используемая для удаленного управления файлами по протоколу SSH (точнее, его расширению SFTP) так, как если бы они находились на локальном компьютере.

  • HostA — хост сервера приложений с ONLYOFFICE Apps
  • HostB — хост файлового хранилища
  • /var/www/onlyoffice/Data/ — путь к папке с данными на HostA
  • /app/onlyoffice/data — путь к папке с данными на HostB
  • apps — имя непривилегированного пользователя на HostA
  • datauser — имя непривилегированного пользователя на HostB

Шаг 1. Настройка HostB​

Установите обновления в системе и перезагрузите ее:

sudo su
apt update
apt upgrade
reboot

Создайте и настройте непривилегированного пользователя и целевую папку:

sudo su
adduser datauser
mkdir /app/onlyoffice/data
chown datauser:datauser /app/onlyoffice/data

Шаг 2. Настройка HostA​

Установите обновления и необходимые пакеты в системе и перезагрузите ее:

sudo su
apt update
apt upgrade
apt install sshfs
reboot

Остановите службы ONLYOFFICE Apps:

sudo systemctl stop 'apps-*' --all

Переместите данные ONLYOFFICE Apps во временный каталог, чтобы исходный каталог был пуст перед подключением:

mkdir /var/www/onlyoffice/tmp
mv /var/www/onlyoffice/Data/* /var/www/onlyoffice/tmp/

Создайте непривилегированного пользователя, сгенерируйте ключи и подготовьте точку подключения:

sudo su
adduser apps
ssh-keygen -t ed25519 -f /root/.ssh/id_ed25519 -C "key_for_hostb_connection"

Выведите открытый ключ на экран HostA, чтобы скопировать его на HostB:

sudo su
cat /root/.ssh/id_ed25519.pub

Пример вывода:

root@sftp-test-01:~# cat /root/.ssh/id_ed25519.pub
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBsDV25Pg8yB1QHeTZXJGphGTDhfqQQKVetcqvhk0dkf key_for_hostb_connection

Ключ, выведенный командой cat, необходимо скопировать и вставить в файл /home/datauser/.ssh/authorized_keys на HostB.

Проверьте подключение с помощью ключа с HostA к HostB:

ssh -i /root/.ssh/id_ed25519 datauser@hostB

Если предыдущий шаг выполнен правильно, должно открыться подключение к HostB. Его можно закрыть командой exit.

Проверьте подключение диска:

sshfs -o reconnect,ServerAliveInterval=15,ServerAliveCountMax=3 datauser@hostB:/app/onlyoffice/data/ /var/www/onlyoffice/Data/
touch /var/www/onlyoffice/Data/test.txt
umount /var/www/onlyoffice/Data

После выполнения этих команд файл test.txt должен появиться в папке /app/onlyoffice/data на HostB. Если файл появился, подключение работает правильно, и можно переходить к окончательной настройке.

Узнайте ID непривилегированного пользователя и внесите изменения в файл /etc/fstab:

sudo id -u apps

Эта команда выведет uid пользователя apps, который необходимо подставить в параметры uid и gid в строке подключения:

sshfs#datauser@hostB:/app/onlyoffice/data /var/www/onlyoffice/Data fuse _netdev,users,allow_other,IdentityFile=/root/.ssh/id_ed25519,ServerAliveInterval=15,ServerAliveCountMax=3,reconnect,uid=1000,gid=1000,umask=0022 0 0

Эту строку необходимо добавить в файл /etc/fstab. После добавления строки подключите папку через /etc/fstab и проверьте ее:

sudo su
systemctl daemon-reload
mount -a
su apps
touch /var/www/onlyoffice/Data/test2.txt

Если все процедуры выполнены правильно, файл test2.txt будет создан в папке /app/onlyoffice/data на HostB.

Удалите тестовые файлы и восстановите данные ONLYOFFICE Apps:

rm /var/www/onlyoffice/Data/test*.txt
mv /var/www/onlyoffice/tmp/* /var/www/onlyoffice/Data/
rmdir /var/www/onlyoffice/tmp

Запустите службы ONLYOFFICE Apps:

sudo systemctl start 'apps-*' --all

После запуска приложения проверьте работу в интерфейсе (скачивание, открытие файлов, смена аватара, загрузка лицензии).

Обратите внимание

Аналогичным образом можно подключить папку с журналами.

Подготовка к процессу шифрования​

Перед началом процедуры шифрования необходимо выполнить некоторые предварительные действия.

  1. В вашем рабочем пространстве нажмите меню Значок параметров в левом нижнем углу и выберите пункт Пространства -> Управление пространствами на левой панели.
  2. Перейдите в раздел Настройки -> Резервное копирование и отключите функцию Автоматическое резервное копирование.
  3. Убедитесь, что на жестком диске достаточно места.
Важно

Рекомендуется сохранить machinekey из конфигурации. Например, если вы переустановите ONLYOFFICE Apps, то не сможете подключиться к зашифрованным данным с другим machinekey.

Если ONLYOFFICE Apps установлен из пакетов DEB или RPM, найдите значение core.machinekey в файле /etc/onlyoffice/apps/appsettings.<community|enterprise|developer>.json, подставив фактически установленную редакцию.

После завершения предварительной подготовки можно переходить к следующему шагу.

Шифрование хранилища​

  1. Перейдите в раздел Управление пространствами -> Настройки -> Хранилище.

  2. Установите флажок Уведомить пользователей о том, что пространство будет недоступно, чтобы уведомить всех активных пользователей по электронной почте о начале процесса шифрования.

    Обратите внимание

    После успешного завершения процесса шифрования все активные пользователи также получат уведомления по электронной почте. Если во время процесса шифрования произойдет ошибка, все администраторы (независимо от параметра Уведомить пользователей) получат уведомления по электронной почте о неудачном шифровании.

  3. Нажмите кнопку Зашифровать хранилище, а затем ОК, чтобы запустить процесс шифрования.

Время, необходимое для завершения процедуры, зависит от объема данных. Во время процесса шифрования все пространства будут недоступны. Как только шифрование завершится, данные рабочего пространства станут доступны для работы.

Шифрование хранилища

Важно

Новый пароль генерируется при каждом запуске шифрования. Если ваш пароль по какой-либо причине был скомпрометирован, необходимо расшифровать все данные и зашифровать их заново.

Важно

Когда механизм шифрования включен, во вновь созданной резервной копии архива данных файлы будут расшифрованы. При восстановлении такой копии файлы на диске снова будут зашифрованы.

Важно

Если во время работы службы возникают проблемы (критические ошибки, служба остановлена, отключено электричество и т. д.), все пространства останутся заблокированными. Исправить это можно только вручную в базе данных: UPDATE tenants_tenants SET status='0' WHERE status='6';

Расшифровка хранилища​

Чтобы расшифровать данные в вашем рабочем пространстве,

  1. Перейдите в раздел Управление пространствами -> Настройки -> Хранилище.

  2. Установите флажок Уведомить пользователей о том, что пространство будет недоступно, чтобы уведомить всех активных пользователей по электронной почте о начале процесса расшифровки.

    Обратите внимание

    После успешного завершения процесса расшифровки все активные пользователи также получат уведомления по электронной почте. Если во время процесса расшифровки произойдет ошибка, все администраторы (независимо от параметра Уведомить пользователей) получат уведомления по электронной почте о неудачной расшифровке.

  3. Нажмите кнопку Расшифровать хранилище, а затем ОК, чтобы запустить процесс расшифровки.

    Расшифровка хранилища

Время, необходимое для завершения процедуры, зависит от объема данных. Во время процесса расшифровки все пространства будут недоступны. Как только расшифровка завершится, данные рабочего пространства станут доступны для работы.