用于 Azure 信息保护的“创建自己的密钥”(BYOK) 的详细信息

注意

你是否想要了解 Microsoft Purview 信息保护(以前称为 Microsoft 信息保护 (MIP))方面的信息?

Azure 信息保护加载项已停用,并替换为 Microsoft 365 应用和服务中内置的标签。 详细了解其他 Azure 信息保护组件的支持状态

新的 Microsoft 信息保护 客户端(不含加载项)目前为预览版,并计划正式发布

具有 Azure 信息保护订阅的组织可以选择为其租户配置自己的密钥,来代替 Microsoft 生成的默认密钥。 此配置通常称为“创建自己的密钥”(BYOK)。

BYOK 和使用情况日志记录可无缝地适用于与 Azure 信息保护使用的 Azure Rights Management 服务集成的应用程序。

支持的应用程序包括:

  • Microsoft SharePoint 或 Microsoft 365 等云服务

  • 运行通过 RMS 连接器使用 Azure Rights Management 服务的 Exchange 和 SharePoint 应用程序的本地服务

  • Office 2019、Office 2016 和 Office 2013 等客户端应用程序

提示

必要时,使用其他本地密钥提高特定文档的安全性。 有关详细信息,请参阅双重密钥加密 (DKE) 保护(仅限统一标记客户端)。

Azure Key Vault 密钥存储

客户生成的密钥必须存储在 Azure Key Vault 中,才能用于实现 BYOK 保护。

注意

如果在 Azure Key Vault 中使用受 HSM 保护的密钥,需要具备 Azure Key Vault 高级服务层,此服务层每月会产生额外的订阅费。

共享密钥保管库和订阅

建议将专用的密钥保管库用于租户密钥。 专用的密钥保管库有助于确保其他服务执行的调用不会导致超出服务限制。 如果超出存储租户密钥的密钥保管库的服务限制,可能会导致产生 Azure Rights Management 服务响应时间限制。

由于不同的服务具有不一样的密钥管理要求,因此 Microsoft 还建议将专用的 Azure 订阅用于密钥保管库。 专用的 Azure 订阅作用如下:

  • 有助于防止错误配置

  • 在不同服务具有不同管理员的情况下更加安全

若要与使用 Azure Key Vault 的其他服务共享 Azure 订阅,请确保该订阅共享一组共同的管理员。 确认使用该订阅的所有管理员都十分了解他们可访问的每一个密钥,这意味着他们错误配置密钥的可能性较低。

示例:当 Azure 信息保护租户密钥的管理员与 Office 365 客户密钥和 CRM Online 的密钥管理员相同时,使用共享的 Azure 订阅。 如果这些服务的密钥管理员不同,建议使用专用的订阅。

使用 Azure 密钥保管库的好处

Azure Key Vault 为众多使用加密的基于云的服务和本地服务提供集中一致的密钥管理解决方案。

除管理密钥外,Azure 密钥保管库还为安全管理员提供其他使用加密的服务和应用程序的存储、访问、管理证书和机密(如密码)的相同管理体验。

将租户密钥存储在 Azure Key Vault 中有以下优点:

优点 说明
内置接口 Azure 密钥保管库为密钥管理提供了大量内置接口,包括 PowerShell、CLI、REST API 和 Azure 门户。

其他服务和工具已经与密钥保管库集成,以优化用于执行特定任务的功能(如监视)。

例如,使用 Operations Management Suite Log Analytics 分析密钥使用情况日志,设置在满足指定条件时发出警报等。
角色分隔 Azure Key Vault 提供角色分隔,这是一种公认的安全性最佳做法。

角色分隔可确保 Azure 信息保护管理员能够专注处理优先级最高的事项,包括管理数据分类和保护,以及用于满足特定安全或合规性要求的加密密钥和策略。
主密钥位置 Azure Key Vault 可在不同的位置使用,并支持对主密钥驻留位置存在限制的组织。

有关详细信息,请参阅 Azure 网站上的可用产品(按区域)页。
独立安全域 Azure Key Vault 对位于北美、EMEA(欧洲、中东和非洲)和亚洲等地区的数据中心使用独立安全域。

Azure Key Vault 还使用 Azure 的其他实例,如 Microsoft Azure 德国和 Azure 政府。
统一体验 Azure Key Vault 还支持安全管理员存储、访问和管理使用加密的其他服务的证书和机密(如密码)。

将 Azure Key Vault 用于租户密钥时,可为管理上述所有方面的管理员提供无缝的用户体验。

若要获取最新更新并了解其他服务如何使用 Azure Key Vault,请访问 Azure Key Vault 团队博客

BYOK 的使用情况日志记录

对 Azure Rights Management 服务发出请求的每一个应用程序都会生成使用日志。

虽然使用情况日志记录是可选的,但建议使用 Azure 信息保护提供的近乎实时的使用情况日志,以便准确了解租户密钥的使用时间和方式。

若要详细了解 BYOK 的密钥使用情况日志记录,请参阅在 Azure 信息保护中记录和分析保护使用情况

提示

为增加保障,可以交叉引用 Azure 信息保护使用情况日志记录和 Azure Key Vault 日志记录。 密钥保管库日志提供了一种可靠的方法来独立监视密钥是否仅供 Azure Rights Management 服务使用。

如有必要,可通过删除密钥保管库上的权限来立即撤销对密钥的访问权限。

创建和存储密钥的可用选项

注意

若要详细了解托管 HSM 产品/服务以及保管库和密钥的设置方法,请参阅 Azure Key Vault 文档

下文提供了关于授予密钥授权的其他说明。

BYOK 支持在 Azure Key Vault 中或在本地创建的密钥。

如果密钥是在本地创建的,则必须将其传输或导入到密钥保管库中,并将 Azure 信息保护配置为使用此密钥。 可在 Azure Key Vault 中执行任何其他密钥管理操作。

创建和存储自己的密钥的可用选项:

  • 在 Azure Key Vault 中创建。 在 Azure Key Vault 中创建密钥并将其存储为受 HSM 保护的密钥或受软件保护的密钥。

  • 在本地创建。 在本地创建密钥,然后使用下面的选项之一将其传输到 Azure Key Vault:

    • 受 HSM 保护的密钥,作为受 HSM 保护的密钥传输。 这是用户选择的最典型方式。

      尽管此方式产生的管理开销最多,但可能需要组织遵守特定的规定。 Azure 密钥库使用的 HSM 具有 FIPS 140 验证

    • 作为受 HSM 保护的密钥转换并传输到 Azure Key Vault 的受软件保护的密钥。 仅当从 Active Directory Rights Management Services (AD RMS) 迁移时才支持此方法。

    • 在本地创建为受软件保护的密钥,作为受软件保护的密钥传输到 Azure Key Vault。 此方式需要 .PFX 证书文件。

例如,要执行以下操作才能使用在本地创建的密钥:

  1. 根据组织的 IT 策略和安全策略在本地生成租户密钥。 此密钥是主副本。 它保留在本地,你需要对它进行备份。

  2. 创建主密钥的副本,然后将此它从 HSM 安全传输到 Azure Key Vault。 在整个过程中,密钥的主副本始终不会脱离硬件保护边界。

完成传输后,此密钥的副本受 Azure Key Vault 保护。

导出受信任的发布域

如果你曾决定停止使用 Azure 信息保护,则需要使用受信任的发布域 (TPD) 解密由 Azure 信息保护进行保护的内容。

但是,如果将 BYOK 用于 Azure 信息保护密钥,则不支持导出 TPD。

请务必提前创建适当的 TPD,以便为此方案做准备。 有关详细信息,请参阅如何准备 Azure 信息保护“云退出”计划

为 Azure 信息保护租户密钥实现 BYOK

使用下面的步骤实现 BYOK:

  1. 查看 BYOK 先决条件
  2. 选择密钥保管库位置
  3. 创建并配置密钥

BYOK 的先决条件

根据不同的系统配置,BYOK 先决条件会有所不同。 请根据需要验证系统是否符合下面的先决条件:

要求 说明
Azure 订阅 所有配置均需要它。
有关详细信息,请参阅验证是否具有兼容 BYOK 的 Azure 订阅
适用于 Azure 信息保护的 AIPService PowerShell 模块 所有配置均需要它。
有关详细信息,请参阅安装 AIPService PowerShell 模块
用于 BYOK 的 Azure Key Vault 先决条件 如果使用在本地创建的受 HSM 保护的密钥,确保同时符合 Azure Key Vault 文档中列出的用于 BYOK 的先决条件
Thales 固件版本 11.62 如果你要通过使用软件密钥到硬件密钥从 AD RMS 迁移到 Azure 信息保护,并且将 Thales 固件用于 HSM,则必须具有 Thales 固件版本 11.62。
针对受信任的 Microsoft 服务绕过防火墙 如果包含租户密钥的密钥保管库使用适用于 Azure Key Vault 的虚拟网络服务终结点,则必须允许受信任的 Microsoft 服务绕过防火墙。
有关详细信息,请参阅适用于 Azure Key Vault 的虚拟网络服务终结点

验证是否具有兼容 BYOK 的 Azure 订阅

你的 Azure 信息保护租户必须具有 Azure 订阅。 如果还没有订阅,可以注册免费帐户。 但是,若要使用受 HSM 保护的密钥,必须具备 Azure Key Vault 高级服务层。

要使用 Azure Key Vault,具有提供对 Microsoft Entra 配置和 Azure Rights Management 自定义模板配置的访问权限的免费 Azure 订阅还不够。

要确认你的 Azure 订阅是否与 BYOK 兼容,请使用 Azure PowerShell cmdlet 进行以下验证:

  1. 以管理员身份启动 Azure PowerShell 会话。

  2. 使用 Connect-AzAccount,以 Azure 信息保护租户全局管理员身份登录。

  3. 将显示的令牌复制到剪贴板。 然后,在浏览器中转到 https://microsoft.com/devicelogin ,并输入复制的令牌。

    有关详细信息,请参阅使用 Azure PowerShell 登录

  4. 在 PowerShell 会话中,输入 Get-AzSubscription,然后确认是否显示以下值:

    • 你的订阅名称和 ID
    • 你的 Azure 信息保护租户 ID
    • 状态为“已启用”的确认信息

    如果没有显示任何值,并且返回到提示,则表示没有可用于 BYOK 的 Azure 订阅。

选择密钥保管库位置

创建密钥保管库以包含要用作 Azure 信息的租户密钥的密钥时,必须指定一个位置。 此位置为 Azure 区域或 Azure 实例。

首先使选择满足合规性,然后在最大程度上降低网络延迟:

  • 如果你出于合规性原因选择了 BYOK 密钥方式,那么这些合规性要求可能还会规定可以使用哪个 Azure 区域或实例来存储 Azure 信息保护租户密钥。

  • 为实施保护而执行的所有加密调用都与 Azure 信息保护密钥关联。 因此,你可能需要在 Azure 信息保护租户所在的同一个 Azure 区域或实例中创建密钥保管库,以最大程度地减少这些调用所需的网络延迟。

若要标识 Azure 信息保护租户的位置,请使用 Get-AipServiceConfiguration PowerShell cmdlet 并从 URL 中标识区域。 例如:

LicensingIntranetDistributionPointUrl : https://5c6bb73b-1038-4eec-863d-49bded473437.rms.na.aadrm.com/_wmcs/licensing

可以从 rms.na.aadrm.com 中标识区域,在此示例中,它位于北美

建议使用下表列出的 Azure 区域和实例,以最大程度地减少网络延迟:

Azure 区域或实例 建议的密钥保管库位置
rms.na.aadrm.com 美国中北部或美国东部
rms.eu.aadrm.com 北欧或西欧
rms.ap.aadrm.com​ 东亚或东南亚
rms.sa.aadrm.com 美国西部或美国东部
rms.govus.aadrm.com​ 美国中部或美国东部 2
rms.aadrm.us US Gov 弗吉尼亚州或 US Gov 亚利桑那州
rms.aadrm.cn “中国东部 2”或“中国北部 2”

创建并配置密钥

重要

有关特定于托管 HSM 的信息,请参阅通过 Azure CLI 实现对托管 HSM 密钥的密钥授权

创建 Azure Key Vault 和你要用于 Azure 信息保护的密钥。 有关详细信息,请参阅 Azure Key Vault 文档

为 BYOK 配置 Azure Key Vault 和密钥时,请注意以下事项:

密钥长度要求

创建密钥时,请确保密钥长度为 2048 位(建议)或 1024 位。 Azure 信息保护不支持其他的密钥长度。

注意

1024 位的密钥被认为无法为活动租户密钥提供充分的保护。

Microsoft 不认可使用较短的密钥长度(如 1024 位 RSA 密钥)以及相关的使用无法提供充分保护的协议(如 SHA-1)的行为。

在本地创建受 HSM 保护的密钥并将其传输到密钥保管库

要在本地创建受 HSM 保护的密钥并将其作为受 HSM 保护的密钥传输到密钥保管库,按照 Azure Key Vault 文档中的过程操作:如何为 Azure Key Vault 生成和传输受 HSM 保护的密钥

为了让 Azure 信息保护使用传输的密钥,必须允许该密钥执行所有密钥保管库操作,包括:

  • 加密
  • decrypt
  • wrapKey
  • unwrapKey
  • sign
  • verify

默认情况下,允许所有密钥保管库操作。

要检查特定密钥的允许操作,运行以下 PowerShell 命令:

(Get-AzKeyVaultKey -VaultName <key vault name> -Name <key name>).Attributes.KeyOps

如有必要,使用 Update-AzKeyVaultKey 和“KeyOps”参数添加允许的操作。

为 Azure 信息保护配置密钥 ID

Azure Key Vault 中存储的每个密钥都有一个密钥 ID。

密钥 ID 是一个 URL,其中包含密钥保管库名称、密钥容器、密钥名称和密钥版本。 例如:https://contosorms-kv.vault.azure.net/keys/contosorms-byok/aaaabbbbcccc111122223333

通过指定密钥保管库 URL,可将 Azure 信息保护配置为使用相应密钥。

授权 Azure Rights Management 服务使用密钥

Azure Rights Management 服务必须经过授权才能使用密钥。 Azure Key Vault 管理员可以通过 Azure 门户或 Azure PowerShell 实现此授权。

使用 Azure 门户实现密钥授权
  1. 登录到 Azure 门户,转到“密钥保管库”><你的密钥保管库名称>>“访问策略”>“新增”。

  2. 从“添加访问策略”窗格的“根据模板配置(可选)”列表框中,选择“Azure 信息保护 BYOK”,然后单击“确定” 。

    所选模板具有以下配置:

    • “选择主体”值设置为“Microsoft Rights Management 服务”。
    • 已选择的“密钥权限”包括“获取”、“解密”和“签名” 。
使用 PowerShell 实现密钥授权

运行密钥保管库 PowerShell cmdlet Set-AzKeyVaultAccessPolicy,并通过使用 GUID 00000012-0000-0000-c000-000000000000 向 Azure Rights Management 服务主体授予权限。

例如:

Set-AzKeyVaultAccessPolicy -VaultName 'ContosoRMS-kv' -ResourceGroupName 'ContosoRMS-byok-rg' -ServicePrincipalName 00000012-0000-0000-c000-000000000000 -PermissionsToKeys decrypt,sign,get
通过 Azure CLI 实现对托管 HSM 密钥的密钥授权

若要向 Azure Rights Management 服务主体授予“托管 HSM 加密”用户的用户权限,请运行以下命令:

az keyvault role assignment create --hsm-name "ContosoMHSM" --role "Managed HSM Crypto User" --assignee-principal-type ServicePrincipal --assignee https://aadrm.com/ --scope /keys/contosomhskey

其中:

  • ContosoMHSM 是示例 HSM 名称。 运行此命令时,请将此值替换为你自己的 HSM 名称。

借助“托管 HSM 加密用户”用户角色,用户能够获得对密钥的解密、签名和获取权限,这些权限是使用托管 HSM 功能所必需的。

将 Azure 信息保护配置为使用密钥

完成上述所有步骤后,即可配置 Azure 信息保护,以将此密钥用作组织的租户密钥。

使用 Azure RMS cmdlet 运行以下命令:

  1. 连接到 Azure Rights Management 服务并登录:

    Connect-AipService
    
  2. 运行 Use-AipServiceKeyVaultKey cmdlet,并指定密钥 URL。 例如:

    Use-AipServiceKeyVaultKey -KeyVaultKeyUrl "https://contosorms-kv.vault.azure.net/keys/contosorms-byok/<key-version>"
    

    重要

    在本示例中,<key-version> 是要使用的密钥版本。 如果不指定版本,则默认使用当前版本的密钥,看起来此命令有效。 但是,如果后来对密钥进行了更新或续订,则即使你再次运行 Use-AipServiceKeyVaultKey 命令,Azure Rights Management 服务也将停止为你的租户工作。

    请视需要使用 Get-AzKeyVaultKey 命令,以获取当前密钥的版本号。

    例如:Get-AzKeyVaultKey -VaultName 'contosorms-kv' -KeyName 'contosorms-byok'

    若要确认为 Azure 信息保护正确设置了密钥 URL,请在 Azure Key Vault 中运行 Get-AzKeyVaultKey 命令,以显示密钥 URL。

  3. 如果 Azure Rights Management 服务已激活,请运行 Set-AipServiceKeyProperties,以指示 Azure 信息保护将此密钥用作 Azure Rights Management 服务的活动租户密钥。

Azure 信息保护现已配置为使用你的密钥,而不是 Microsoft 自动为你的租户创建的默认密钥。

后续步骤

配置 BYOK 保护后,请继续参阅租户根密钥入门,详细了解如何使用和管理密钥。