Microsoft 信息保护 (MIP) SDK 常见问题解答及问题

本文提供了有关常见问题的解答(常见问题解答),以及有关已知问题和常见错误的故障排除指南。

常见问题

元数据存储更改

我们宣布我们将对 Office 文件(Word、Excel、PowerPoint)的标签元数据存储位置进行更改,以支持 Office 365、SharePoint Online 和其他服务中的新功能。

元数据常见问题解答

问题:其他格式是否会受到影响,例如 PDF?

  • 不,只对 Office 文件有影响,尤其是 Word、Excel 和 PowerPoint 文件。

问题:是否需要特定版本的 MIP SDK?

  • MIP SDK 1.7 级更高版本完全兼容。

:是否有使用此存储位置所需的特定版本的 办公室 客户端?

  • 2021 年 9 月之后发布的所有Microsoft 365 应用版客户端都支持此新元数据位置。 在租户管理员启用受保护的共同创作功能之前,不会使用新的存储位置。

:现有元数据是否存储为自定义属性, custom.xml 是否保持最新?

  • 否。 首次在启用新存储位置后保存文档时,标签元数据将移动到新位置。 通过 LabelingOptions.ExtendedProperties 保留写入的元数据保留在 custom.xml中。

:在没有 MIP SDK 的情况下读取标签元数据是否可行?

  • 是的,但你需要实现自己的代码来分析文件并提取信息。

问题:目前,通过从文件中提取键/值对字符串,可以轻松“读取”标签。 是否仍以这种方式读取元数据?

  • 可行,仍可在 Office 文件 XML 中读取元数据。 应用程序必须从策略文件读取共同创作设置,才能知道已启用新功能集。 这定义标签数据的读取/写入位置(custom.xml与labelinfo.xml)。 若要了解执行详细信息,请参阅 MS-OFFCRYPTO:LabelInfo 与自定义文档属性 | Microsoft Docs

:标签如何迁移到新位置?

  • 以下逻辑用于确定读取哪个部分并用于读取或写入标签数据。
操作 功能未启用 功能已启用
读取 custom.xml(未受保护)或 Doc SummaryInfo(受保护)中的标签。 如果 labelinfo.xml 中存在标签,则为有效标签。
如果labelinfo.xml中没有标签,则 custom.xml 或 Doc SummaryInfo 中的标签是有效标签。
所有新标签都将写入 custom.xml(未受保护)或 Doc SummaryInfo(受保护)。 所有新标签都将写入 labelinfo.xml。

文件分析

问题:能否使用文件 SDK 写入当前正在读取的同一个文件吗?

MIP SDK 不支持同时读写同一个文件。 任何标记的文件都 会导致输入文件的副本 ,并应用了标签操作。 应用程序必须使用标记的文件替换原始文件。

SDK 字符串处理

问题:SDK 如何处理字符串,我应该在我的代码中使用哪种字符串类型?

此 SDK 旨在跨平台使用,并使用 UTF-8(Unicode 转换格式 - 8 位)进行字符串处理。 具体的操作指南取决于所使用的平台:

平台 指南
Windows 原生平台 对于 C++ SDK 客户端,使用 C++ 标准库类型 std::string 将字符串传入/传出 API 函数。 与 UTF-8 之间的转换由 MIP SDK 在内部管理。 从 API 返回 std::string 时,如果转换的是字符串,则必须要求使用 UTF-8 编码并相应管理。 在某些情况下,字符串作为 uint8_t 矢量 [如发布许可证 (PL)] 的一部分返回,但应视为不透明的 Blob。

有关详细信息和示例,请参阅:
  • WideCharToMultiByte 函数,帮助将宽字符串转换为多字节,例如 UTF-8。
  • SDK 下载中包含了以下示例文件:
    • file\samples\common\string_utils.cpp 中的示例字符串实用工具函数,用于在宽 UTF-8 字符串之间转换。
    • file\samples\file\main.cpp 中的 wmain(int argc, wchar_t *argv[]) 实现,它使用上述字符串转换函数。
.NET 对于 .NET SDK 客户端,所有字符串都使用默认的 UTF-16 编码,无需进行特殊转换。 与 UTF-16 之间的转换由 MIP SDK 在内部管理。
其他平台 MIP SDK 支持的其他所有平台都原生支持 UTF-8。

内容标记

问题:MIP SDK 是否支持内容标记?

MIP SDK 不支持直接应用内容标记,包括任何文件上的页眉、页脚或水印。 将标签元数据写入文件时,文件 SDK 将写入 contentBits 元数据属性以指示已应用保护(如果已配置)。 它 不会 写入指示已应用页眉、页脚或水印的属性。 当文件在支持内容标记的应用程序中打开时,内容标记配置应由应用程序评估并在保存时写入文件。

Android 上的保护和策略 SDK

:应使用哪个共享库将 MIP SDK 集成到 Android 应用程序中?

MIP SDK Android 二进制文件包括libmip_core.solibmip_protection_sdk.solibmip_upe_sdk.solipmip_unified.solibmip_unified.so 是包含核心、保护和策略共享库的建议库。

合规性

问题:Microsoft 信息保护 SDK FIPS 140-2 是否合规?

尽管 Microsoft 信息保护 SDK 使用 FIPS 140-2 批准的密码,但目前未经 FIPS 140-2 加密库验证。 使用 MIP SDK 的应用程序需要注意,SDK 目前不被视为符合 FIPS。 有关详细信息,请参阅 FIPS 140-2 合规性相关文章。

问题和错误参考

错误:“不支持的文件格式”

问题:尝试保护或标记 PDF 文件时,为什么会遇到以下错误?

不支持的文件格式

此异常是由于尝试保护或标记已经过数字签名或受密码保护的 PDF 文件而引发的。 有关保护和标记 PDF 文件的详细信息,请参阅 Microsoft 信息保护新增对 PDF 加密的支持

错误:“未能分析获取的符合性策略”

问题:下载 MIP SDK 并尝试使用文件示例列举所有标签后,为什么会遇到以下错误?

出现错误:未能分析获取的符合性策略。 失败并显示:[class mip::CompliancePolicyParserException] 未找到标记:策略,NodeType:15,名称:未找到名称,值:,上级:<SyncFile><Content>,correlationId:[34668a40-blll-4ef8-b2af-00005aa674z9]

此错误表明你尚未将标签从 Azure 信息保护迁移到统一标记体验。 请按照如何将 Azure 信息保护标签迁移到统一敏感度标签中的说明迁移标签,然后在 Office 365 安全与合规中心中创建标签策略。

错误:“NoPolicyException:标签策略不包含数据”

问题:尝试通过 MIP SDK 读取标签或列表标签时,为什么会遇到以下错误?

NoPolicyException:标签策略不包含数据、CorrelationId=GUID、CorrelationId.Description=PolicyProfile、NoPolicyError.Category=SyncFile、NoPolicyError.Category=SyncFile

此错误指示标签策略尚未在Microsoft Purview 合规门户中发布。 请按照创建和配置敏感度标签及其策略执行操作,以配置标记策略。

错误:“System.ComponentModel.Win32Exception: LoadLibrary failed”

问题:使用 MIP SDK .NET 包装器时,为什么会遇到以下错误?

System.ComponentModel.Win32Exception: LoadLibrary failed for: [sdk_wrapper_dotnet.dll] when calling MIP.Initialize().

应用程序没有所需的运行时,或者未生成为 Release。 有关更多信息,请参阅确保确保应用具有所需的运行时

错误:“ProxyAuthError exception”

问题:使用 MIP SDK 时,为什么会遇到以下错误?

“ProxyAuthenticatonError: 不支持代理身份验证”

MIP SDK 不支持使用经过身份验证的代理。 要消除此消息,代理管理员应将 Microsoft Purview 信息保护服务终结点设置为绕过代理。 “Office 365 URL 和 IP 地址范围”页面提供了这些终结点的列表。 MIP SDK 要求 *.protection.outlook.com(第 9 行)和 Azure 信息保护服务终结点(第 73 行)绕过代理身份验证。

错误:使用流输出标记图像文件时出现“未知错误”

问题:尝试使用流输出为图像文件类型添加或从中移除标签或保护时,为何会收到“未知错误”?

使用流输出时,流必须具有读写权限才能修改图像文件的标签或保护。

问: 使用 MIP SDK 时是否有基于服务的限制?

在文件 SDK 中使用保护 SDK 或保护操作的保护服务,对于整个组织,每个 10 秒的请求数限制为 7,500 个。 也就是说,如果应用程序 A 每 10 秒生成 4,000 个请求,并且同一组织中的 Applicationaiton B 每 10 秒生成 4,000 个请求,这两个应用程序可能会开始接收 HTTP 429 Too Many Requests 响应。 当收到这些异常时,开发人员必须实现回退期。