この記事はAIによって翻訳されました

保存データの暗号化

はじめに

DocSpaceが提供するデータの静止時暗号化機能は、DocSpace内の機密データのセキュリティを確保することができます。

暗号化とは、ディスク上に保存されたデータの機密性を維持するために情報を可逆的に変換することです。したがって、侵入者がハードディスクに保存されたデータにアクセスできたとしても、それが暗号化されているため、読むことはできません。

暗号化は、ONLYOFFICEインスタンス内のデータ全体に対してEncrypt-then-MAC型の暗号化(AES-256-CBC + HMAC-SHA256)に基づいており、AES-256国際データ暗号化標準に準拠しています。DocSpace内のデータの暗号化には、CipherMode.CBC対称アルゴリズムを使用したAES-256暗号化タイプが使用され、SHA256ハッシュ関数とHMACメッセージ認証コードのスクリーニングがペアになって、暗号化データの整合性と真正性を検証します。

この機能はサーバーバージョンのみで利用可能です。DiscDataStore(ローカルディスクのみ。s3や他のクラウドサービスには実装されていません)でのみ動作します。

重要セキュリティ上の理由から、暗号化されたデータと暗号化キーを同じマシンに保存することは推奨されません。したがって、DocSpaceサービスとディスクストレージを異なるマシンに分散する必要があります。唯一のオプションは、別のマシンを外部ドライブとしてマウントすることです。

SSHFSを使用したリモートマシンディスクのマウント

DocSpaceがDEBパッケージを使用してインストールされている場合に、Linuxでディスクをマウントするオプションを考えてみましょう。

SSHFS(Secure SHell FileSystem)は、SSHプロトコル(正確にはそのSFTP拡張)を介してリモートでファイルを管理するために使用されるLinux(およびFUSE(Filesystem in Userspace)実装がある他のオペレーティングシステム)のクライアントプログラムで、ローカルコンピュータ上にあるかのように動作します。

  • HostAはDocSpaceを持つアプリケーションサーバーホストです
  • 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

DocSpaceサービスを停止します:

sudo systemctl stop 'docspace-*' --all

DocSpaceデータを一時ディレクトリに移動し、マウント前にソースディレクトリを空にします:

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ファイルが作成されます。

テストファイルを削除し、DocSpaceデータを復元します:

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

DocSpaceサービスを開始します:

sudo systemctl start 'docspace-*' --all

アプリケーションを起動した後、インターフェースでの動作(ファイルのダウンロード、開く、アバターの変更、ライセンスのアップロード)を確認してください。

同様に、ログのフォルダーをマウントすることができます。

暗号化プロセスの準備

暗号化手順を開始する前に、いくつかの準備を行う必要があります。

  1. DocSpaceで、左下のオプションアイコンメニューをクリックし、左側のパネルでスペース -> スペース管理メニュー項目を選択します。
  2. 設定 -> バックアップセクションに切り替え、自動データバックアップ機能を無効にします。
  3. ハードドライブに十分な空き容量があることを確認します。
重要構成からmachinekeyを保存することをお勧めします。たとえば、DocSpaceを再インストールする場合、異なるmachinekeyでは暗号化されたデータに接続できません。

DocSpaceがDEBパッケージを使用してインストールされている場合、/etc/onlyoffice/docspace/appsettings.production.jsonファイル内のcore.machinekey値を見つけます。

準備が整ったら、次のステップに進むことができます。

ストレージの暗号化

  1. スペース管理 -> 設定 -> ストレージセクションに切り替えます。
  2. 暗号化プロセスが開始されるときにすべてのアクティブユーザーにメールで通知するために、スペースが利用できなくなることをユーザーに通知するチェックボックスをオンにします。
    暗号化プロセスが正常に完了すると、すべてのアクティブユーザーにもメール通知が送信されます。 暗号化プロセス中にエラーが発生した場合、すべての管理者(ユーザーに通知オプションに関係なく)に暗号化プロセスの失敗がメールで通知されます。
  3. ストレージを暗号化ボタンをクリックし、OKをクリックして暗号化プロセスを開始します。

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

ストレージを暗号化 ストレージを暗号化
重要暗号化が開始されるたびに新しいパスワードが生成されます。パスワードが何らかの理由で漏洩した場合、すべてのデータを復号化して再暗号化する必要があります。
重要暗号化メカニズムが有効になっている場合、新しく作成されたデータアーカイブのバックアップコピーには復号化されたファイルが含まれます。そのようなコピーが復元されると、ファイルは再びディスク上で暗号化されます。
重要サービスの実行中に問題が発生した場合(重大なエラー、サービスの停止、電源のオフなど)、すべてのスペースがブロックされたままになります。それらはデータベースで手動で修正する必要があります:UPDATE tenants_tenants SET status='0' WHERE status='6';

ストレージの復号化

DocSpaceでデータを復号化するには、

  1. スペース管理 -> 設定 ストレージセクション。
  2. スペースが利用できなくなることをユーザーに通知するチェックボックスをオンにして、復号化プロセスが開始されるときにすべてのアクティブユーザーにメールで通知します。
    復号化プロセスが正常に完了すると、すべてのアクティブユーザーにもメール通知が送信されます。復号化プロセス中にエラーが発生した場合、ユーザーに通知オプションに関係なく、すべての管理者に復号化失敗の通知がメールで送信されます。
  3. ストレージを復号化ボタンをクリックし、OKをクリックして復号化プロセスを開始します。
    ストレージを復号化 ストレージを復号化

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

次の項目が含まれている記事:タグ:
すべてのタグを見る