В этом руководстве описаны лучшие практики создания пользовательского инструмента для массового импорта файлов, зашифрованных на стороне клиента (CSE), с использованием API Google Drive.
Рассмотрите Drive для настольных компьютеров для самостоятельной миграции.
Пользователь может импортировать файлы со своего локального компьютера с помощью настольного приложения Drive . Оно полностью поддерживает шифрование на стороне клиента и позволяет пользователям самостоятельно шифровать и загружать файлы. Создание собственного инструмента, как описано в этом руководстве, необходимо только для крупномасштабного, автоматизированного или многопользовательского массового импорта.
Прежде чем начать
Вам необходимо понимать, как управлять отдельным файлом, зашифрованным на стороне клиента. Ознакомьтесь с разделом «Управление отдельными файлами CSE» , чтобы изучить основные шаги шифрования, загрузки/выгрузки и расшифровки, включая генерацию токенов и взаимодействие со службой списков контроля доступа по ключу (KACLS).
Authenticate using a service account
При взаимодействии с API Google Drive используйте учетную запись службы с делегированием полномочий на уровне домена . Это позволит вашему приложению имитировать действия пользователей, что даст вам возможность программно перебирать их и загружать файлы непосредственно от их имени.
Recreate the directory structure
Разработайте инструмент импорта, который будет рекурсивно обходить исходные файлы и папки, чтобы зеркально отобразить существующую структуру каталогов на Google Диске. В общих чертах процесс выглядит следующим образом:
- Для каждой исходной директории создайте соответствующую папку на Диске.
- Зашифруйте и загрузите файлы из каталога в созданную папку на Диске.
- Repeat the process for subdirectories.
Upload files to the right place
Всегда загружайте файлы в папку «Мой диск» соответствующего пользователя или на доступный общий диск. Чтобы найти идентификатор общего диска или папки, найдите его статически по веб-адресу Google Диска или динамически, используя методы drives.list и files.list .
Preventing duplicates
Google Drive позволяет нескольким файлам в одной папке иметь одинаковое имя. Сгенерируйте идентификаторы для ваших файлов перед загрузкой. Для этого можно использовать метод files.generateIds из API Google Drive.
Сохраняя эти предварительно сгенерированные идентификаторы, ваш импортер сможет попытаться загрузить каждый файл по его конкретному идентификатору. Если файл с таким идентификатором уже существует, ваш инструмент может безопасно пропустить его. Использование предварительно сгенерированных идентификаторов поможет вашему инструменту восстановиться после сбоя.
Перед каждой загрузкой запрашивайте токен CSE.
Вызывайте generateCseToken для каждого файла непосредственно перед обертыванием ключа и загрузкой файла. Такой подход гарантирует, что токен точно отражает текущее состояние связанных метаданных, которое может меняться.
Use resumable uploads for large files
Используйте возобновляемую загрузку через Drive API для переноса больших файлов. Возобновляемая загрузка позволяет импортеру повторять неудачные фрагменты во время перебоев в сети, вместо того чтобы перезапускать загрузку всего файла.
Restore sharing permissions
Если вашему инструменту массового импорта необходимо сохранить права доступа, сначала зашифруйте и загрузите файл, а затем вызовите метод permissions.create . Права доступа не применяются во время самой загрузки файла.
Обработка истечения срока действия токена
При длительных операциях ваш скрипт может столкнуться с ошибками аутентификации из-за истечения срока действия токена. Реализуйте логику для автоматического обновления токенов доступа и повторной попытки загрузки. Для получения более подробной информации см. пример с открытым исходным кодом , демонстрирующий, как зашифровать и загрузить один файл.
Validate imported files thoroughly
После массового импорта выполните тщательную проверку. Google не может расшифровать и проверить ваши файлы на стороне сервера. В разделе «Проверка импортированных файлов» подробно описаны несколько методов выборочной проверки отдельных файлов.
Дополнительный метод проверки в больших масштабах, особенно полезный после массового импорта, включает использование официального инструмента расшифровки . Сначала загрузите зашифрованное содержимое с Google Диска с помощью Google Takeout. Затем попробуйте расшифровать его с помощью инструмента расшифровки. Этот процесс помогает выявить файлы, которые не удается расшифровать, указывая на потенциальные проблемы в логике шифрования или обертывания ключей вашего инструмента импорта.
Разберитесь в ограничениях и квотах.
На файлы, зашифрованные на стороне клиента, распространяются стандартные ограничения и квоты Google Диска. Обратите внимание на ограничения общего доступа к дискам , общие ограничения на файлы и папки , а также на то, как управлять своей квотой . Кроме того, ваш инструмент импорта должен учитывать ограничения скорости, установленные вашей службой списков контроля доступа по ключу (KACLS) и вашим поставщиком идентификационных данных (IdP).