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

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

常见问题

元数据存储更改

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

元数据常见问题解答

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

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

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

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

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

  • 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 函数。 MIP SDK 在内部管理与 UTF-8 的转换。 从 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 编码,无需进行特殊转换。 MIP SDK 在内部管理与 UTF-16 的转换。
其他平台 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.so lipmip_unified.solibmip_unified.so 是包含核心、保护和策略共享库的建议库。

合规性

:Microsoft 信息保护 SDK 联邦信息处理标准 (FIPS) 140-2 是否合规?

请参阅 FIPS 140-2 验证

问题和错误参考

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

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

不支持的文件格式

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

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

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

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

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

如果已发布标记策略,请确保用户帐户包含在标签策略配置的发布到部分的任何组中。 有关详细信息,请查看 “创建和发布敏感度标签”。

外部用户(包括来宾用户)无法访问其他组织的标签策略。 若要容纳这些用户,请实现重试机制。 如果引发 a NoPolicyException ,请将 FileEngineSettings 属性 ProtectionOnlyEngine 设置为 true,然后重试请求。 标记操作将不适用于该 IFileEngine 实例,但保护操作将可用。

错误:“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 中的保护操作,对于整个组织而言,每个请求数限制为 7,500 个。 也就是说,如果应用程序 A 每 10 秒生成 4,000 个请求,并且同一组织中的应用程序 B 每 10 秒生成 4,000 个请求,则这两个应用程序都可能开始接收 HTTP 429 Too Many Requests 响应。 当收到这些异常时,开发人员必须实现回退期。