保存データの暗号化
はじめに
ONLYOFFICE Appsが提供するデータの静止時暗号化機能は、ワークスペース内の機密データのセキュリティを確保することができます。
暗号化とは、ディスク上に保存されたデータの機密性を維持するために情報を可逆的に変換することです。したがって、侵入者がハードディスクに保存されたデータにアクセスできたとしても、それが暗号化されているため、読むことはできません。
暗号化は、ONLYOFFICEインスタンス内のデータ全体に対してEncrypt-then-MAC型の暗号化(AES-256-CBC + HMAC-SHA256)に基づいており、AES-256国際データ暗号化標準に準拠しています。ONLYOFFICE Apps内のデータの暗号化には、CipherMode.CBC対称アルゴリズムを使用したAES-256暗号化タイプが使用され、SHA256ハッシュ関数とHMACメッセージ認証コードのスクリーニングがペアになって、暗号化データの整合性と真正性を検証します。
この機能はサーバーバージョンのみで利用可能です。DiscDataStore(ローカルディスクのみ。s3や他のクラウドサービスには実装されていません)でのみ動作します。
セキュリティ上の理由から、暗号化されたデータと暗号化キーを同じマシンに保存することは推奨されません。したがって、ONLYOFFICE Appsサービスとディスクストレージを異なるマシンに分散する必要があります。唯一のオプションは、別のマシンを外部ドライブとしてマウントすることです。
SSHFSを使用したリモートマシンディスクのマウント
ONLYOFFICE AppsがDEBパッケージを使用してインストールされている場合に、Linuxでディスクをマウントするオプションを考えてみましょう。
SSHFS(Secure SHell FileSystem) は、SSHプロトコル(正確にはそのSFTP拡張)を介してリモートでファイルを管理するために使用されるLinux(およびFUSE(Filesystem in Userspace)実装がある他のオペレーティングシステム)のクライアントプログラムで、ローカルコンピュータ上にあるかのように動作します。
- 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値を見つけます。その際、実際にインストールされているエディションに置き換えてください。
準備が整ったら、次のステップに進むことができます。
ストレージの暗号化
-
スペース管理 -> 設定 -> ストレージセクションに切り替えます。
-
暗号化プロセスが開始されるときにすべてのアクティブユーザーにメールで通知するために、スペースが利用できなくなることをユーザーに通知するチェックボックスをオンにします。
注記暗号化プロセスが正常に完了すると、すべてのアクティブユーザーにもメール通知が送信されます。暗号化プロセス中にエラーが発生した場合、すべての管理者(ユーザーに通知オプションに関係なく)に暗号化プロセスの失敗がメールで通知されます。
-
ストレージを暗号化ボタンをクリックし、OKをクリックして暗号化プロセスを開始します。
手順の完了に必要な時間はデータ量に依存します。暗号化プロセス中はすべてのスペースが利用できません。暗号化が終了すると、ワークスペースのデータは作業可能になります。

暗号化が開始されるたびに新しいパスワードが生成されます。パスワードが何らかの理由で漏洩した場合、すべてのデータを復号化して再暗号化する必要があります。
暗号化メカニズムが有効になっている場合、新しく作成されたデータアーカイブのバックアップコピーには復号化されたファイルが含まれます。そのようなコピーが復元されると、ファイルは再びディスク上で暗号化されます。
サービスの実行中に問題が発生した場合(重大なエラー、サービスの停止、電源のオフなど)、すべてのスペースがブロックされたままになります。それらはデータベースで手動で修正する必要があります:UPDATE tenants_tenants SET status='0' WHERE status='6';
ストレージの復号化
ワークスペースでデータを復号化するには、
-
スペース管理 -> 設定 -> ストレージセクションに切り替えます。
-
スペースが利用できなくなることをユーザーに通知するチェックボックスをオンにして、復号化プロセスが開始されるときにすべてのアクティブユーザーにメールで通知します。
注記復号化プロセスが正常に完了すると、すべてのアクティブユーザーにもメール通知が送信されます。復号化プロセス中にエラーが発生した場合、ユーザーに通知オプションに関係なく、すべての管理者に復号化失敗の通知がメールで送信されます。
-
ストレージを復号化ボタンをクリックし、OKをクリックして復号化プロセスを開始します。

手続きの完了に必要な時間はデータ量に依存します。復号化プロセス中はすべてのスペースが利用できません。復号化が終了すると、ワークスペースのデータは作業可能になります。