Рекомендации по массовому импорту файлов, зашифрованных на стороне клиента.

В этом руководстве описаны лучшие практики создания пользовательского инструмента для массового импорта файлов, зашифрованных на стороне клиента (CSE), с использованием API Google Drive.

Рассмотрите Drive для настольных компьютеров для самостоятельной миграции.

Пользователь может импортировать файлы со своего локального компьютера с помощью настольного приложения Drive . Оно полностью поддерживает шифрование на стороне клиента и позволяет пользователям самостоятельно шифровать и загружать файлы. Создание собственного инструмента, как описано в этом руководстве, необходимо только для крупномасштабного, автоматизированного или многопользовательского массового импорта.

Прежде чем начать

Вам необходимо понимать, как управлять отдельным файлом, зашифрованным на стороне клиента. Ознакомьтесь с разделом «Управление отдельными файлами CSE» , чтобы изучить основные шаги шифрования, загрузки/выгрузки и расшифровки, включая генерацию токенов и взаимодействие со службой списков контроля доступа по ключу (KACLS).

Аутентификация с использованием служебной учетной записи.

При взаимодействии с API Google Drive используйте учетную запись службы с делегированием полномочий на уровне домена . Это позволит вашему приложению имитировать действия пользователей, что даст вам возможность программно перебирать их и загружать файлы непосредственно от их имени.

Воссоздайте структуру каталогов.

Разработайте инструмент импорта, который будет рекурсивно обходить исходные файлы и папки, чтобы зеркально отобразить существующую структуру каталогов на Google Диске. В общих чертах процесс выглядит следующим образом:

  1. Для каждой исходной директории создайте соответствующую папку на Диске.
  2. Зашифруйте и загрузите файлы из каталога в созданную папку на Диске.
  3. Повторите процесс для подкаталогов.

Загрузите файлы в нужное место.

Всегда загружайте файлы в папку «Мой диск» соответствующего пользователя или на доступный общий диск. Чтобы найти идентификатор общего диска или папки, найдите его статически по веб-адресу Google Диска или динамически, используя методы drives.list и files.list .

Предотвращение дубликатов

Google Drive позволяет нескольким файлам в одной папке иметь одинаковое имя. Сгенерируйте идентификаторы для ваших файлов перед загрузкой. Для этого можно использовать метод files.generateIds из API Google Drive.

Сохраняя эти предварительно сгенерированные идентификаторы, ваш импортер сможет попытаться загрузить каждый файл по его конкретному идентификатору. Если файл с таким идентификатором уже существует, ваш инструмент может безопасно пропустить его. Использование предварительно сгенерированных идентификаторов поможет вашему инструменту восстановиться после сбоя.

Перед каждой загрузкой запрашивайте токен CSE.

Вызывайте generateCseToken для каждого файла непосредственно перед обертыванием ключа и загрузкой файла. Такой подход гарантирует, что токен точно отражает текущее состояние связанных метаданных, которое может меняться.

Используйте функцию возобновления загрузки для больших файлов.

Используйте возобновляемую загрузку через Drive API для переноса больших файлов. Возобновляемая загрузка позволяет импортеру повторять неудачные фрагменты во время перебоев в сети, вместо того чтобы перезапускать загрузку всего файла.

Восстановить права доступа

Если вашему инструменту массового импорта необходимо сохранить права доступа, сначала зашифруйте и загрузите файл, а затем вызовите метод permissions.create . Права доступа не применяются во время самой загрузки файла.

Обработка истечения срока действия токена

При длительных операциях ваш скрипт может столкнуться с ошибками аутентификации из-за истечения срока действия токена. Реализуйте логику для автоматического обновления токенов доступа и повторной попытки загрузки. Для получения более подробной информации см. пример с открытым исходным кодом , демонстрирующий, как зашифровать и загрузить один файл.

Тщательно проверьте импортированные файлы.

После массового импорта выполните тщательную проверку. Google не может расшифровать и проверить ваши файлы на стороне сервера. В разделе «Проверка импортированных файлов» подробно описаны несколько методов выборочной проверки отдельных файлов.

Дополнительный метод проверки в больших масштабах, особенно полезный после массового импорта, включает использование официального инструмента расшифровки . Сначала загрузите зашифрованное содержимое с Google Диска с помощью Google Takeout. Затем попробуйте расшифровать его с помощью инструмента расшифровки. Этот процесс помогает выявить файлы, которые не удается расшифровать, указывая на потенциальные проблемы в логике шифрования или обертывания ключей вашего инструмента импорта.

Разберитесь в ограничениях и квотах.

На файлы, зашифрованные на стороне клиента, распространяются стандартные ограничения и квоты Google Диска. Обратите внимание на ограничения общего доступа к дискам , общие ограничения на файлы и папки , а также на то, как управлять своей квотой . Кроме того, ваш инструмент импорта должен учитывать ограничения скорости, установленные вашей службой списков контроля доступа по ключу (KACLS) и вашим поставщиком идентификационных данных (IdP).