要使用迁移 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 的用户也无法使用该工具。 但是,其数据位置不在德国数据中心的身处德国的用户可以使用它。