OneDrive for Business 和 SharePoint Online 迁移 API 加密

要使用迁移 API,必须在 Azure 中具有临时存储容器。 此 Azure 容器只能由对其具有 SAS 密钥访问权限的人员打开。 此功能的目标是允许将静态加密内容传递给 API,这意味着即使恶意用户有权访问容器,他也无法使用其内容。

Azure Blob 容器中存储的内容

迁移 API 需要 Azure 容器进行内容传递以及日志和队列报告。 总之,它可以拆分为以下存储桶:

内容

  • 文件
  • 清单
    • 元数据
    • 权限
    • 列表项目
    • 分类
    • 日志(由 SharePoint Online 创建,用于报告迁移结果)
  • 队列
    • 实时进度报告

什么是加密功能?

使用加密参数时,上面列出的所有内容都将进行静态加密,并且需要保留密钥才能读取日志和实时进度。

主要好处是使设法破坏 Azure 容器的恶意用户无法使用内容。

这会对性能造成较小的影响。 使用 API 时,此功能为可选,建议仅将其用于最为机密的信息,因为它确实会在一定程度上降低迁移速度。 一旦迁移作业完成,Microsoft 就会销毁密钥;如果丢失,则无法恢复密钥,甚至无法从支持中恢复密钥。

作为第三方开发人员,应该如何利用加密功能?

调用 API

用于调用迁移作业的方法在末尾具有不同的名称和附加参数。 新名称是:CreateMigrationJobEncrypted

新参数是:EncryptionOption

现在,它仅支持接收 AES256CBC 加密密钥。

示例:

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

额外要求

对于加密,必须对每个文件进行加密并为其分配 IV。 加密方法应遵循 AES CBC 256 标准。 必须为每个文件(包括包中的清单)生成唯一的加密随机 IV,并且应作为属性存储在每个文件上。 使用 AesCryptoServiceProvider.GenerateIV 方法为每个文件生成唯一的随机 IV。

  • 名称:[IV]
  • :[IV 的 Base64encoded 字节数组]

加密时读取队列

使用加密选项时,队列中的消息也会进行加密。

务必记住作业 ID。 如果没有用于作业的特定密钥,你将无法读取该消息。

这是队列消息中的 JSON 内容

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

消息解密后,它们将与没有加密的 API 相同。

注意

迁移不适用于由中国世纪互联运营的Office 365用户。 同样,使用数据被信任方(德国电信)的德国云的 Office 365 的用户也无法使用该工具。 但是,其数据位置不在德国数据中心的身处德国的用户可以使用它。