加密静态数据
简介
协作空间提供的静态数据加密功能可确保您协作空间中敏感数据的安全性。
加密是为维护磁盘存储数据机密性而进行的可逆信息转换。因此,即使入侵者成功获取硬盘存储数据,由于数据已加密,他们也无法读取。
加密基于 Encrypt-then-MAC 加密类型(AES-256-CBC + HMAC-SHA256),对 ONLYOFFICE 实例内的全部数据进行加密,符合 AES-256 国际数据加密标准。协作空间使用带 CipherMode.CBC 对称算法的 AES-256 加密类型进行数据加密,同时通过 SHA256 哈希函数与 HMAC 消息认证码验证加密数据的完整性和真实性。
此功能仅适用于服务器版本,且仅支持 DiscDataStore(仅限本地磁盘,未在 s3 及其他云服务中实现)。
通过 SSHFS 挂载远程机器磁盘
我们以通过 DEB 包安装协作空间时,在 Linux 系统挂载磁盘的方案为例。
SSHFS(安全外壳文件系统)是 Linux(及其他支持 FUSE(用户空间文件系统)实现的操作系统)的客户端程序,用于通过 SSH 协议(更准确说是其 SFTP 扩展)远程管理文件,如同操作本地文件。
- HostA 是运行协作空间的应用程序服务器主机
- HostB 是文件存储主机
- /var/www/onlyoffice/Data/ 是 HostA 上的数据文件夹路径
- /app/onlyoffice/data 是 HostB 上的数据文件夹路径
- docspace 是 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
停止协作空间服务:
sudo systemctl stop 'docspace-*' --all
将协作空间数据移至临时目录,确保挂载前源目录为空:
mkdir /var/www/onlyoffice/tmp
mv /var/www/onlyoffice/Data/* /var/www/onlyoffice/tmp/
创建非特权用户、生成密钥并准备挂载点:
sudo su
adduser docspace
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
文件夹中应出现 text.txt
文件。若文件出现,则挂载正常,可继续最终配置。
获取非特权用户 ID 并修改 /etc/fstab
文件:
sudo id -u docspace
此命令显示 docspace 用户的 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 docspace
touch /var/www/onlyoffice/Data/test2.txt
若所有操作正确,HostB 的 /app/onlyoffice/data
文件夹中将创建 test2.txt
文件。
删除测试文件并恢复协作空间数据:
rm /var/www/onlyoffice/Data/test*.txt
mv /var/www/onlyoffice/tmp/* /var/www/onlyoffice/Data/
rmdir /var/www/onlyoffice/tmp
启动协作空间服务:
sudo systemctl start 'docspace-*' --all
应用启动后,请在界面中检查功能(下载、打开文件、更改头像、上传许可证)。
准备加密过程
开始加密流程前,需执行若干预备步骤。
- 在协作空间中,点击左下角
菜单,在左侧面板选择空间 -> 空间管理 菜单项。
- 切换到设置 -> 备份 部分,禁用自动数据备份功能。
- 确保硬盘有足够空间。
若协作空间通过 DEB 包安装,请在 /etc/onlyoffice/docspace/appsettings.production.json
文件中查找 core.machinekey
值。
预备工作完成后,可继续下一步。
加密存储
- 切换到空间管理 -> 设置 -> 存储 部分。
- 勾选通知用户空间将不可用复选框,加密过程开始时将通过邮件通知所有活跃用户。
加密过程成功完成后,所有活跃用户也将收到邮件通知。 若加密过程出错,所有管理员(无论是否勾选通知用户选项)都将收到加密失败的邮件通知。
- 点击加密存储按钮,然后点击确定启动加密过程。
该过程所需时间取决于数据量。加密期间所有空间将不可用。加密完成后,协作空间数据将恢复可用。


UPDATE tenants_tenants SET status='0' WHERE status='6';
解密存储
要解密协作空间中的数据:
- 切换到空间管理 -> 设置 -> 存储部分。
- 勾选通知用户空间将不可用复选框,解密过程开始时将通过邮件通知所有活跃用户。
解密过程成功完成后,所有活跃用户也将收到邮件通知。若解密过程出错,所有管理员(无论是否勾选通知用户选项)都将收到解密失败的邮件通知。
- 点击解密存储按钮,然后点击确定启动解密过程。
该过程所需时间取决于数据量。解密期间所有空间将不可用。解密完成后,协作空间数据将恢复可用。
简介
协作空间提供的静态数据加密功能可确保您协作空间中敏感数据的安全性。
加密是为维护磁盘存储数据机密性而进行的可逆信息转换。因此,即使入侵者成功获取硬盘存储数据,由于数据已加密,他们也无法读取。
加密基于 Encrypt-then-MAC 加密类型(AES-256-CBC + HMAC-SHA256),对ONLYOFFICE 实例内的全部数据进行加密,符合 AES-256 国际数据加密标准。协作空间使用带 CipherMode.CBC 对称算法的 AES-256 加密类型进行数据加密,同时通过 SHA256 哈希函数与 HMAC 消息认证码验证加密数据的完整性和真实性。
此功能仅适用于服务器版本,且仅支持 DiscDataStore(仅限本地磁盘,未在 s3 及其他云服务中实现)。
通过 SSHFS 挂载远程机器磁盘
我们以通过 DEB 包安装协作空间时,在 Linux 系统挂载磁盘的方案为例。
SSHFS(安全外壳文件系统)是 Linux(及其他支持 FUSE(用户空间文件系统)实现的操作系统)的客户端程序,用于通过 SSH 协议(更准确说是其 SFTP 扩展)远程管理文件,如同操作本地文件。
- HostA是运行协作空间的应用程序服务器主机
- HostB是文件存储主机
- /var/www/onlyoffice/Data/是 HostA 上的数据文件夹路径
- /app/onlyoffice/data是 HostB 上的数据文件夹路径
- docspace是 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
停止协作空间服务:
sudo systemctl stop 'docspace-*' --all
将协作空间数据移至临时目录,确保挂载前源目录为空:
mkdir /var/www/onlyoffice/tmp
mv /var/www/onlyoffice/Data/* /var/www/onlyoffice/tmp/
创建非特权用户、生成密钥并准备挂载点:
sudo su
adduser docspace
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
文件夹中应出现 text.txt
文件。若文件出现,则挂载正常,可继续最终配置。
获取非特权用户 ID 并修改 /etc/fstab
文件:
sudo id -u docspace
此命令显示 docspace 用户的 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 docspace
touch /var/www/onlyoffice/Data/test2.txt
若所有操作正确,HostB 的 /app/onlyoffice/data
文件夹中将创建 test2.txt
文件。
删除测试文件并恢复协作空间数据:
rm /var/www/onlyoffice/Data/test*.txt
mv /var/www/onlyoffice/tmp/* /var/www/onlyoffice/Data/
rmdir /var/www/onlyoffice/tmp
启动协作空间服务:
sudo systemctl start 'docspace-*' --all
应用启动后,请在界面中检查功能(下载、打开文件、更改头像、上传许可证)。
准备加密过程
开始加密流程前,需执行若干预备步骤。
- 在协作空间中,点击左下角
菜单,在左侧面板选择空间 -> 空间管理 菜单项。
- 切换到设置 -> 备份 部分,禁用自动数据备份功能。
- 确保硬盘有足够空间。
若协作空间通过 DEB 包安装,请在 /etc/onlyoffice/docspace/appsettings.production.json
文件中查找 core.machinekey
值。
预备工作完成后,可继续下一步。
加密存储
- 切换到空间管理 -> 设置 -> 存储 部分。
- 勾选通知用户空间将不可用复选框,加密过程开始时将通过邮件通知所有活跃用户。
加密过程成功完成后,所有活跃用户也将收到邮件通知。 若加密过程出错,所有管理员(无论是否勾选通知用户选项)都将收到加密失败的邮件通知。
- 点击加密存储按钮,然后点击确定启动加密过程。
该过程所需时间取决于数据量。加密期间所有空间将不可用。加密完成后,协作空间数据将恢复可用。


UPDATE tenants_tenants SET status='0' WHERE status='6';
解密存储
要解密协作空间中的数据:
- 切换到空间管理 -> 设置 -> 存储 部分。
- 勾选通知用户空间将不可用复选框,解密过程开始时将通过邮件通知所有活跃用户。
解密过程成功完成后,所有活跃用户也将收到邮件通知。若解密过程出错,所有管理员(无论是否勾选通知用户选项)都将收到解密失败的邮件通知。
- 点击解密存储按钮,然后点击确定启动解密过程。
该过程所需时间取决于数据量。解密期间所有空间将不可用。解密完成后,协作空间数据将恢复可用。