加密静态数据
简介
ONLYOFFICE Apps提供的静态数据加密功能可确保您工作空间中敏感数据的安全性。
加密是为维护磁盘存储数据机密性而进行的可逆信息转换。因此,即使入侵者成功获取硬盘存储数据,由于数据已加密,他们也无法读取。
加密基于 Encrypt-then-MAC 加密类型(AES-256-CBC + HMAC-SHA256),对 ONLYOFFICE 实例内的全部数据进行加密,符合 AES-256 国际数据加密标准。ONLYOFFICE Apps 使用带 CipherMode.CBC 对称算法的 AES-256 加密类型进行数据加密,同时通过 SHA256 哈希函数与 HMAC 消息认证码验证加密数据的完整性和真实性。
此功能仅适用于服务器版本,且仅支持 DiscDataStore(仅限本地磁盘,未在 s3 及其他云服务中实现)。
出于安全考虑,不建议将加密数据与加密密钥存储在同一机器上。因此需要将 ONLYOFFICE Apps服务与磁盘存储分配到不同机器。唯一方案是将另一台机器挂载为外部驱动器。
通过 SSHFS 挂载远程机器磁盘
我们以通过 DEB 包安装 ONLYOFFICE Apps 时,在 Linux 系统挂载磁盘的方案为例。
SSHFS(安全外壳文件系统) 是 Linux(及其他支持 FUSE(用户空间文件系统)实现的操作系统)的客户端程序,用于通过 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 命令输出的密钥必须复制并粘贴到 HostB 的 /home/datauser/.ssh/authorized_keys 文件中。
测试从 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
执行这些命令后,HostB 的 /app/onlyoffice/data 文件夹中应出现 test.txt 文件。若文件出现,则挂载正常,可继续最终配置。
获取非特权用户 ID 并修改 /etc/fstab 文件:
sudo id -u apps
此命令显示 apps 用户的 uid,需将其替换到挂载行的 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
若所有操作正确,HostB 的 /app/onlyoffice/data 文件夹中将创建 test2.txt 文件。
删除测试文件并恢复 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
应用启动后,请在界面中检查功能(下载、打开文件、更改头像、上传许可证)。
同样方式可挂载日志文件夹。
准备加密过程
开始加密流程前,需执行若干预备步骤。
- 在工作空间中,点击左下角
菜单,在左侧面板选择空间 -> 空间管理菜单项。
- 切换到设置 -> 备份部分,禁用自动数据备份功能。
- 确保硬盘有足够空间。
建议保存配置中的 machinekey。例如,若重装 ONLYOFFICE Apps,将无法使用不同的 machinekey 连接加密数据。
若 ONLYOFFICE Apps 通过 DEB 或 RPM 包安装,请在 /etc/onlyoffice/apps/appsettings.<community|enterprise|developer>.json 文件中查找 core.machinekey 值,并替换为实际安装的版本。
预备工作完成后,可继续下一步。
加密存储
-
切换到空间管理 -> 设置 -> 存储部分。
-
勾选通知用户空间将不可用复选框,加密过程开始时将通过邮件通知所有活跃用户。
备注加密过程成功完成后,所有活跃用户也将收到邮件通知。若加密过程出错,所有管理员(无论是否勾选通知用户选项)都将收到加密失败的邮件通知。
-
点击加密存储按钮,然后点击确定启动加密过程。
该过程所需时间取决于数据量。加密期间所有空间将不可用。加密完成后,工作空间数据将恢复可用。

每次启动加密时都会生成新密码。若密码意外泄露,需解密所有数据后重新加密。
启用加密机制后,新创建的备份副本将包含解密文件。恢复此类副本时,文件将在磁盘上重新加密。
若服务运行时出现问题(严重错误、服务停止、断电等),所有空间将保持锁定状态。仅能通过数据库手动修复:UPDATE tenants_tenants SET status='0' WHERE status='6';
解密存储
要解密工作空间中的数据:
-
切换到空间管理 -> 设置 -> 存储部分。
-
勾选通知用户空间将不可用复选框,解密过程开始时将通过邮件通知所有活跃用户。
备注解密过程成功完成后,所有活跃用户也将收到邮件通知。若解密过程出错,所有管理员(无论是否勾选通知用户选项)都将收到解密失败的邮件通知。
-
点击解密存储按钮,然后点击确定启动解密过程。

该过程所需时间取决于数据量。解密期间所有空间将不可用。解密完成后,工作空间数据将恢复可用。