Collabora CODEの保存済みドキュメントをストレージ暗号化で保護する

Collabora Online Development Edition (CODE) を使用する際に、保存されているドキュメントを暗号化するには、CODE エディタではなく、ファイルストレージプラットフォームまたは基盤となるディスクで暗号化を有効にしてください。Collabora は WOPI ストレージホストから提供されたドキュメントを開きますが、保存されたコピーの保護はホストの責任となります。その結果、暗号化されたストレージ、作業中の編集内容、および復元可能なファイルが実現します。

実際にファイルを保存しているシステムを特定する

一般的な導入例では、ファイルストレージにNextcloudまたは他のWOPI互換サービスを使用し、ブラウザベースの編集にはCODEを使用します。ドキュメントは、承認された編集セッション中にこれらのコンポーネント間を移動します。HTTPSを有効にすると接続は保護されますが、保存されたコピーは暗号化されません。Collaboraのセキュリティ概要では、ストレージは統合制御されていると説明されており、サーバー構成テンプレートにはWOPI、TLS、およびオプションのキャッシュと隔離の設定が記載されています。

変更を加える前に、WOPIホストがドキュメントファイルをどこに書き込むか、ローカルディスクを使用するか外部オブジェクトストレージを使用するか、そしてCODE自体がどこで実行されるかを記録してください。バックアップ、スナップショット、プレビュー、スワップ、コンテナボリュームも記録してください。メインディレクトリ外のコピーは保護されない可能性があります。

リスクに見合った暗号化方式を選択してください。

Linuxサーバーのローカルディスク上のドキュメントの場合、LUKSなどのディスクまたはボリューム暗号化が通常は最も簡単な選択肢です。ボリュームがロックされている間、電源オフ状態のドライブの盗難を含め、基盤となるストレージを保護します。Ubuntuのフルディスク暗号化に関するドキュメントでは、LUKSはアプリケーション設定ではなく、ブロックレベルの暗号化であると説明されています。新しい暗号化ボリュームを使用するか、テスト済みの移行を使用してください。LUKSを初期化すると、既存のデータが失われる可能性があります。

Nextcloudがサードパーティのストレージにファイルを保存し、ストレージプロバイダーがその内容を読み取れないようにする必要がある場合は、Nextcloudのサーバーサイド暗号化(SSE)がより適している可能性があります。SSEは、サポートされているファイルの内容をバックエンドストレージに保存する前に暗号化します。暗号化キーはNextcloud内に保持されるため、侵害されたサーバーまたは管理者は復号化されたファイルにアクセスできてしまいます。Nextcloudは、ローカルストレージにはディスク暗号化を検討することをお勧めします。

アプリケーション管理者でさえドキュメントを読み取れないようにする必要がある場合、ロック解除ディスク暗号化も通常のSSEもその要件を満たしません。サポートされているクライアント側またはエンドツーエンドの暗号化ワークフローを評価し、ブラウザでの編集が引き続き可能であることを確認してください。すべての暗号化されたドキュメントがCODEで共同で開くことができると想定しないでください。

ストレージホストで暗号化を有効にする

オプションA:ローカルボリュームを暗号化する

新規Linux環境を構築する場合は、ドキュメントをインポートする前に、暗号化されたストレージ上にファイルデータと関連するサービスボリュームをプロビジョニングしてください。ロック解除用の秘密情報と復旧情報はサーバー外に保管し、管理者のアクセスを制限し、再起動またはロック解除の手順をテストしてください。既存システムの場合は、バックアップを確認し、ダウンタイム中に移行を行ってください。クラウドボリュームまたはオブジェクトストレージの暗号化は、プロバイダーと連携して設定してください。

lsblk -fブロックデバイスの種類を識別し、実際のデータディレクトリを支えるファイルシステムを識別するために使用しますfindmnt -T /path/to/document/data。データディレクトリから暗号化されたデバイスへのパスを確認してください。インストールするcryptsetupだけではファイルシステムは暗号化されません。

オプションB:Nextcloudのサーバー側暗号化を有効にする

Nextcloud SSEが適切な場合は、サーバー側暗号化ガイドに従ってください。変更を加える前に、Nextcloudの設定、データベース、ファイル、および暗号化キーをバックアップしてください。コンテンツを暗号化する前に、キーモードを決定してください。現在のガイドでは、ほとんどのデプロイメントにおいて、サーバー制御のマスターキーがデフォルトとして説明されています。

  1. アプリでNextcloudのデフォルト暗号化モジュールを有効にし、管理設定でサーバー側の暗号化を有効にするか、またはドキュメントに記載されているoccコマンドを使用してください。
  2. 通常の Linux インストールでは、Web サーバー アカウントとして Nextcloud インストール ディレクトリからコマンドを実行します。sudo -E -u www-data php occ app:enable encryption次に、を実行しsudo -E -u www-data php occ encryption:enableます。ユーザーと実行方法は、パッケージに合わせて変更してください。Docker デプロイメントでは、適切なコンテナ内でコマンドを使用します。
  3. sudo -E -u www-data php occ encryption:status機能と選択されたモジュールを確認するには、実行してください。有効化フラグが表示されているからといって、既存のすべてのファイルが暗号化されているとは限りません。
  4. ユーザーによるファイルアクセスを制限したメンテナンス期間を設定し、sudo -E -u www-data php occ encryption:encrypt-all既存のファイルに対処するために実行してください。この操作には時間がかかる場合があり、公式の暗号化コマンドのリファレンスには、メンテナンスモードを管理し、対話型ターミナルが必要であると記載されています。

SSE は、ファイル名、フォルダ、既存のごみ箱ファイル、一部の古いバージョン、サムネイル、プレビュー、検索インデックス、および特定のアプリケーションデータを除外します。必要に応じて、除外項目を個別に保護してください。暗号化キーのバックアップを保護してください。重要なキーやインスタンスシークレットを紛失すると、復旧が永久に不可能になる可能性があります。

CODEのホストを保護し、編集パスを安全に保つ

WOPIホストが保存されたドキュメントを暗号化する場合でも、CODEマシンを個別に評価してください。Collaboraはアクティブなドキュメント処理をメモリ指向としており、CODEを永続的なドキュメントリポジトリとして位置付けていません。ただし、公開されているcoolwsd.xmlテンプレートには、オプションの隔離ファイルとキャッシュファイルの設定が含まれているため、すべての一時的なアーティファクトが存在しないと想定するのではなく、実際のデプロイメントを検査してください。コンテナのランタイムストレージ、マウントされたボリューム、システムスワップ、クラッシュダンプ、およびバックアップには、適切な暗号化または保持制御を適用してください。

ブラウザ、CODE、およびWOPIサービス間ではHTTPS接続を維持し、接続可能なWOPIホストを制限してください。NextcloudのOffice設定ドキュメントでは、 WOPIリクエストを想定されるCollaboraサーバーのIPアドレスに限定することを推奨しています。これらのアクセス制御は保存時の暗号化に取って代わるものではありませんが、暗号化されたストレージシステムがプレーンテキストを不正な編集者に渡すことを防ぐのに役立ちます。

Collaboraのローカルファイルシステムストレージモードを本番環境で安易に有効にしないでください。公式SDKではファイルシステムストレージはテスト専用オプションとして説明されており、WOPIの使用が推奨されています。認証と保存バックの動作が一貫性を保つよう、通常のストレージ統合を維持してください。

結果が十分かどうか確認してください

受け入れテストには、機密性の低いサンプルファイルを使用してください。ストレージサービス経由でファイルをアップロードし、CODEで開き、1行編集して保存し、エディタを閉じて再度開きます。この一連の操作が成功すれば、編集機能が正常に動作していることを確認できますが、保存時の暗号化が証明されるわけではありません。

  • ストレージの検証:実際のドキュメントディレクトリが意図した暗号化ボリュームに解決されること、またはストレージサービスが期待される暗号化構成を報告することを確認します。SSEの場合、制御されたテストと承認されたバックエンドアクセスを使用して、バックエンドが保持するデータがストレージアプリケーションのキーなしでは読み取れないことを確認します。
  • 既存ファイルのカバレッジ:移行がencryption:encrypt-all正常に完了したことを確認してください。新しくアップロードされたファイルのみをテストしないでください。
  • 二次コピー:バックアップ、スナップショット、プレビューデータ、ログ、およびCODEホストストレージが、同じ保護要件を満たしているかどうかを確認します。
  • 復元性:サンプルとその必要なキーを別のテスト環境に復元し、CODE を介してドキュメントが開いて保存されることを確認します。

ストレージプロバイダやアプリケーションがコンテンツを復号化できないようにする必要がある場合、保護対象のデータカテゴリが暗号化範囲外にある場合、または鍵の復元が証明できない場合は、別の方法に切り替えてください。保存時の暗号化は、主にストレージの損失や不正なバックエンド読み取りによるリスクを軽減しますが、侵害されたライブサーバー、正規ユーザーがファイルをダウンロードする場合、または盗まれたアカウントが開かれたドキュメントを読み取る場合を、それ自体で阻止することはできません。

コメントを残す

Nextcloud LDAPとActive Directoryログインの設定

NextcloudをLDAPまたはActive Directoryに接続し、ユーザーおよびグループフィルタを使用してアクセスを制限し、展開前に安全な認証を検証してください。

Nextcloudユーザーに二段階認証を必須にする

サポートされている2要素認証プロバイダーを有効にし、アカウント復旧の準備を行った後、すべてのユーザーまたは選択したNextcloudグループに対して2要素認証を必須にします。

Collabora CODEの保存済みドキュメントをストレージ暗号化で保護する

Collabora CODEで編集されたファイルは、ストレージ層を暗号化し、一時データを保護し、暗号化と復元を検証することで安全に保護されます。

Collabora CODEをARM64上で正しいイメージを使って実行しましょう

Collabora CODEをARM64上で正しいイメージを使って実行しましょう

ホストアーキテクチャを確認し、CODEタグがARM64を公開していることを確認し、強制的に設定されているAMD64設定を削除し、イメージエラーを権限の問題やメモリの問題から切り離してください。

Collabora OnlineをownCloud Infinite Scaleに接続する

Collabora OnlineとownCloud Infinite Scale間のWOPI接続を設定し、適切なサービスURLを構成して、ドキュメントの編集内容が保存されることを確認します。

Collabora CODEにおけるWOPIを介したブロックファイルのエクスポート

Collabora Online CODEでドキュメントのエクスポートを防止するには、WOPIのDisableExport権限を設定し、ホストとエディタがその権限を適用していることを確認してください。

CollaboraをNginxの背後に配置してもWebSocketが壊れないようにする方法

CollaboraをNginxの背後に配置してもWebSocketが壊れないようにする方法

NginxのTLS終端、Collaboraのルート、およびWebSocketヘッダーを設定し、実際のドキュメントを開く前に公開エンドポイントをテストしてください。

コード編集セッションが10分で終了しないようにする

10分間のCODE切断の原因をプロキシ、ロードバランサー、またはWebSocketパスまで追跡し、タイムアウトを修正してセッションが接続された状態を維持することを確認してください。

Helmを使用してKubernetes上にCollabora CODEをデプロイする

Collabora公式Helmチャートをインストールし、WOPIアクセスとイングレスアフィニティを設定し、一般的な設定ミスがないかデプロイメントを確認します。

Collaboraの空白ドキュメントをトレースして、問題のあるレイヤーを特定する

Collaboraの空白ドキュメントをトレースして、問題のあるレイヤーを特定する

Collaboraが空白のドキュメントを開く理由を特定するために、ブラウザのリクエスト、WOPIログ、およびターゲットを絞ったプロキシチェックを使用し、証拠に合った修正方法を選択してください。