Шифрование OneDrive для бизнеса и API миграции SharePoint Online

Для использования API миграции требуется контейнер временного хранения в Azure. Этот контейнер Azure можно открыть только при наличии ключа доступа SAS к контейнеру. Цель этой функции — разрешить передавать зашифрованное неактивное содержимое в API, что означает, что даже если злоумышленник имеет доступ к контейнеру, он не сможет использовать его содержимое.

Что хранится в контейнере BLOB-объектов Azure

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

Контент

  • Файлы
  • Манифест
    • Метаданные
    • Разрешения
    • Элементы списка
    • Таксономия
    • Журналы (созданные SharePoint Online для отправки отчета о результатах миграции)
  • Очередь
    • Отчет о ходе выполнения в режиме реального времени

Что такое функция шифрования?

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

Это делает содержимое бесполезным для злоумышленника, которому удастся взломать контейнер Azure.

Плата за это преимущество — небольшая потеря производительности. Эта функция является необязательной при использовании API, и ее рекомендуется использовать только для наиболее конфиденциальной информации, так как она приводит к незначительному снижению скорости миграции. Майкрософт уничтожает ключ после завершения задания миграции, и его невозможно восстановить в случае потери, даже если обратиться в службу поддержки.

Как воспользоваться функцией шифрования, если я сторонний разработчик?

Вызов API

Метод вызова задания миграции имеет другое имя и дополнительный параметр в конце. Новое имя — CreateMigrationJobEncrypted

Новый параметр — EncryptionOption

В настоящее время поддерживается только получение ключа шифрования AES256CBC.

Пример:

    public Guid CreateMigrationJobEncrypted(
        Guid gWebId,
        string azureContainerSourceUri,
        string azureContainerManifestUri,
        string azureQueueReportUri,
        EncryptionOption AES256CBCKey)

Дополнительное требование

Для шифрования каждому файлу должна быть присвоена независимая переменная. Метод шифрования должен соответствовать стандарту AES CBC 256. Для каждого файла, включая манифесты в пакете, должен быть создан уникальный, криптографически случайный IV, который должен храниться в качестве свойства для каждого файла. Используйте метод AesCryptoServiceProvider.GenerateIV для создания уникального случайного iv для каждого файла.

  • Имя: [IV]
  • Значение: [массив байтов base64encoded iv]

Чтение очереди при шифровании

При использовании функции шифрования сообщения в очереди также будут зашифрованы.

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

Ниже показано содержимое JSON в сообщении очереди

{"Label": "Encrypted"},
{"JobId": "[JobId value]"},
{"IV": "[IV value in base64format]"},
{"Content": "[encrypted message in base64string]"}

После того как сообщения будут расшифрованы, они будут точно такими же, как и при использовании API без шифрования.

Примечание.

Миграция недоступна для пользователей Office 365, управляемых компанией 21Vianet в Китае. Оно также недоступно для пользователей Office 365, использующих немецкое облако с доверенным лицом, работающим с данными, German Telekom. Тем не менее, средство поддерживается для пользователей в Германии, чьи данные хранятся не в немецком центре обработки данных.