加密静态数据

简介

协作空间提供的静态数据加密功能可确保您协作空间中敏感数据的安全性。

加密是为维护磁盘存储数据机密性而进行的可逆信息转换。因此,即使入侵者成功获取硬盘存储数据,由于数据已加密,他们也无法读取。

加密基于 Encrypt-then-MAC 加密类型(AES-256-CBC + HMAC-SHA256),对 ONLYOFFICE 实例内的全部数据进行加密,符合 AES-256 国际数据加密标准。协作空间使用带 CipherMode.CBC 对称算法的 AES-256 加密类型进行数据加密,同时通过 SHA256 哈希函数与 HMAC 消息认证码验证加密数据的完整性和真实性。

此功能仅适用于服务器版本,且仅支持 DiscDataStore(仅限本地磁盘,未在 s3 及其他云服务中实现)。

重要提示出于安全考虑,不建议将加密数据与加密密钥存储在同一机器上。因此需要将 ONLYOFFICE 协作空间服务与磁盘存储分配到不同机器。唯一方案是将另一台机器挂载为外部驱动器。

通过 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,需将其替换到挂载行的 uidgid 参数中:

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

应用启动后,请在界面中检查功能(下载、打开文件、更改头像、上传许可证)。

同样方式可挂载日志文件夹。

准备加密过程

开始加密流程前,需执行若干预备步骤。

  1. 在协作空间中,点击左下角 选项图标 菜单,在左侧面板选择空间 -> 空间管理 菜单项。
  2. 切换到设置 -> 备份 部分,禁用自动数据备份功能。
  3. 确保硬盘有足够空间。
重要提示建议保存配置中的 machinekey。例如,若重装协作空间,将无法使用不同的 machinekey 连接加密数据。

若协作空间通过 DEB 包安装,请在 /etc/onlyoffice/docspace/appsettings.production.json 文件中查找 core.machinekey 值。

预备工作完成后,可继续下一步。

加密存储

  1. 切换到空间管理 -> 设置 -> 存储 部分。
  2. 勾选通知用户空间将不可用复选框,加密过程开始时将通过邮件通知所有活跃用户。
    加密过程成功完成后,所有活跃用户也将收到邮件通知。 若加密过程出错,所有管理员(无论是否勾选通知用户选项)都将收到加密失败的邮件通知。
  3. 点击加密存储按钮,然后点击确定启动加密过程。

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

加密存储加密存储
重要提示每次启动加密时都会生成新密码。若密码意外泄露,需解密所有数据后重新加密。
重要提示启用加密机制后,新创建的备份副本将包含解密文件。恢复此类副本时,文件将在磁盘上重新加密。
重要提示若服务运行时出现问题(严重错误、服务停止、断电等),所有空间将保持锁定状态。仅能通过数据库手动修复:UPDATE tenants_tenants SET status='0' WHERE status='6';

解密存储

要解密协作空间中的数据:

  1. 切换到空间管理 -> 设置 -> 存储部分。
  2. 勾选通知用户空间将不可用复选框,解密过程开始时将通过邮件通知所有活跃用户。
    解密过程成功完成后,所有活跃用户也将收到邮件通知。若解密过程出错,所有管理员(无论是否勾选通知用户选项)都将收到解密失败的邮件通知。
  3. 点击解密存储按钮,然后点击确定启动解密过程。
    解密存储解密存储

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

简介

协作空间提供的静态数据加密功能可确保您协作空间中敏感数据的安全性。

加密是为维护磁盘存储数据机密性而进行的可逆信息转换。因此,即使入侵者成功获取硬盘存储数据,由于数据已加密,他们也无法读取。

加密基于 Encrypt-then-MAC 加密类型(AES-256-CBC + HMAC-SHA256),对ONLYOFFICE 实例内的全部数据进行加密,符合 AES-256 国际数据加密标准。协作空间使用带 CipherMode.CBC 对称算法的 AES-256 加密类型进行数据加密,同时通过 SHA256 哈希函数与 HMAC 消息认证码验证加密数据的完整性和真实性。

此功能仅适用于服务器版本,且仅支持 DiscDataStore(仅限本地磁盘,未在 s3 及其他云服务中实现)。

重要提示出于安全考虑,不建议将加密数据与加密密钥存储在同一机器上。因此需要将ONLYOFFICE 协作空间服务与磁盘存储分配到不同机器。唯一方案是将另一台机器挂载为外部驱动器。

通过 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,需将其替换到挂载行的 uidgid 参数中:

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

应用启动后,请在界面中检查功能(下载、打开文件、更改头像、上传许可证)。

同样方式可挂载日志文件夹。

准备加密过程

开始加密流程前,需执行若干预备步骤。

  1. 在协作空间中,点击左下角 选项图标 菜单,在左侧面板选择空间 -> 空间管理 菜单项。
  2. 切换到设置 -> 备份 部分,禁用自动数据备份功能。
  3. 确保硬盘有足够空间。
重要提示建议保存配置中的 machinekey。例如,若重装协作空间,将无法使用不同的 machinekey 连接加密数据。

若协作空间通过 DEB 包安装,请在 /etc/onlyoffice/docspace/appsettings.production.json 文件中查找 core.machinekey 值。

预备工作完成后,可继续下一步。

加密存储

  1. 切换到空间管理 -> 设置 -> 存储 部分。
  2. 勾选通知用户空间将不可用复选框,加密过程开始时将通过邮件通知所有活跃用户。
    加密过程成功完成后,所有活跃用户也将收到邮件通知。 若加密过程出错,所有管理员(无论是否勾选通知用户选项)都将收到加密失败的邮件通知。
  3. 点击加密存储按钮,然后点击确定启动加密过程。

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

加密存储加密存储
重要提示每次启动加密时都会生成新密码。若密码意外泄露,需解密所有数据后重新加密。
重要提示启用加密机制后,新创建的备份副本将包含解密文件。恢复此类副本时,文件将在磁盘上重新加密。
重要提示若服务运行时出现问题(严重错误、服务停止、断电等),所有空间将保持锁定状态。仅能通过数据库手动修复:UPDATE tenants_tenants SET status='0' WHERE status='6';

解密存储

要解密协作空间中的数据:

  1. 切换到空间管理 -> 设置 -> 存储 部分。
  2. 勾选通知用户空间将不可用复选框,解密过程开始时将通过邮件通知所有活跃用户。
    解密过程成功完成后,所有活跃用户也将收到邮件通知。若解密过程出错,所有管理员(无论是否勾选通知用户选项)都将收到解密失败的邮件通知。
  3. 点击解密存储按钮,然后点击确定启动解密过程。
    解密存储解密存储

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

在您自己的服务器上托管 ONLYOFFICE 文档,或在云端使用

文章: 标签:
浏览所有标签