このガイドでは、Drive API を使用してクライアントサイド暗号化(CSE)ファイルを一括インポートするカスタムツールを作成するためのベスト プラクティスについて説明します。
セルフサービス移行にはパソコン版ドライブを検討する
ユーザーは、 パソコン版ドライブ クライアントを使用して、ローカルマシンからファイルをインポートできます。クライアントサイド暗号化を完全にサポートしており、ユーザーは自分でファイルを暗号化してアップロードできます。このガイドで説明するカスタムツールの作成は、大規模な無人またはマルチユーザーの一括インポートの場合にのみ必要です。
始める前に
クライアントサイド暗号化された単一のファイルを管理する方法を理解しておく必要があります。トークンの生成や鍵アクセス制御リスト サービス(KACLS)とのやり取りなど、暗号化、アップロード/ダウンロード、復号の基本的な手順については、 個々の CSE ファイルを管理するをご覧ください。
サービス アカウントを使用して認証する
Drive API を操作する場合は、ドメイン全体の委任を使用するサービス アカウント を使用します。これにより、アプリケーションがユーザーになりすますことができるため、プログラムでユーザーをループ処理して、ユーザーに代わってファイルを直接アップロードできます。
ディレクトリ構造を再作成する
既存のディレクトリ構造をドライブにミラーリングするように、ソースファイルとフォルダを再帰的にトラバースするインポート ツールを設計します。大まかな手順は次のとおりです。
- ソース ディレクトリごとに、対応するドライブ フォルダを作成します。
- ディレクトリのファイルを暗号化して、作成したドライブ フォルダにアップロードします。
- サブディレクトリに対してこのプロセスを繰り返します。
適切な場所にファイルをアップロードする
常に、正しいユーザーのマイドライブまたはアクセス可能な共有ドライブにファイルをアップロードしてください。共有ドライブまたはフォルダの ID を確認するには、ドライブのウェブ URL から静的に確認するか、drives.list メソッドと files.list メソッドを使用して動的に確認します。
重複を防ぐ
ドライブでは、同じフォルダ内の複数のファイルでまったく同じファイル名を共有できます。アップロードする前にファイルの ID を生成します。 これを行うには、Drive API の files.generateIds メソッドを使用します。
事前に生成された ID を保存することで、インポーターは各ファイルを特定の ID にアップロードできます。その ID のファイルがすでに存在する場合、ツールは安全にスキップできます。事前に生成された ID を使用すると、ツールがクラッシュから復旧するのに役立ちます。
アップロードする前に CSE トークンをリクエストする
鍵のラップとファイルのアップロードの直前に、ファイルごとに generateCseToken を呼び出します。この方法では、トークンが関連するメタデータの現在の状態を正確に反映します。メタデータは変更される可能性があります。
大きなファイルには再開可能なアップロードを使用する
大きなファイルを移行する場合は、Drive API の再開可能な アップロード を使用します。再開可能なアップロードを使用すると、インポーターはファイル全体のアップロードを再開するのではなく、ネットワークの中断中に失敗したチャンクを再試行できます。
共有権限を復元する
一括インポート ツールで共有権限を保持する必要がある場合は、まずファイルを暗号化してアップロードし、次に permissions.create メソッドを呼び出します。
ファイルのアップロード中に共有権限は適用されません。
トークンの有効期限を処理する
長時間実行されるオペレーションの場合、トークンの有効期限が切れると、スクリプトで認証エラーが発生することがあります。アクセス トークンを自動的に更新してアップロードを再試行するロジックを実装します。詳細については、単一のファイルを暗号化してアップロードする方法を示すオープンソース の例をご覧ください。
インポートしたファイルを徹底的に検証する
一括インポート後に徹底的な検証を行います。Google は、サーバー側でファイルを復号して検証することはできません。インポートしたファイルを検証するセクションでは、個々のファイルをスポットチェックするいくつかの方法について説明します。
大規模な検証を行うもう 1 つの方法(特に一括 インポート後に役立ちます)は、公式の 復号 ツールを使用することです。 まず、Google Takeout を使用して、暗号化されたコンテンツをドライブからダウンロードします。次に、復号ツールを使用して復号を試みます。このプロセスにより、復号できないファイルを特定できます。これは、インポート ツールの暗号化または鍵のラップのロジックに問題があることを示しています。
上限と割り当てについて
クライアントサイド暗号化されたファイルには、ドライブの標準の上限と割り当てが適用されます。共有ドライブの上限、ファイルとフォルダの一般的な上限、割り当ての管理方法に注意してください。また、インポート ツールは、鍵アクセス制御リスト サービス(KACLS)と ID プロバイダ(IdP)からのレート制限を処理する必要があります。