步骤 2:通过软件保护的密钥进行 HSM 保护的密钥迁移

适用于:Active Directory Rights Management Services、Azure信息保护

相关:AIP 统一标签客户端和经典客户端

注意

为了提供统一且简化的客户体验,Azure 门户中的Azure信息保护经典客户端和标签管理在2021年 3 月 31 日已弃用。 不再提供对经典客户端的进一步支持,并且将不再发布维护版本。

经典客户端将于 2022 年 3 月 31 日正式停用并停止运行。

所有当前的 Azure 信息保护经典客户端客户必须迁移到统一Microsoft 信息保护平台,并升级到统一标签客户端。 在迁移博客 中了解更多信息

这些说明是 从 AD RMS迁移到 Azure 信息保护的迁移路径的一部分,仅适用于 AD RMS 密钥受软件保护,并且想要使用 Azure Key Vault 中受 HSM 保护的租户密钥迁移到 Azure 信息保护。

如果这不是所选的配置方案,请返回到步骤 4。从 AD RMS 导出配置数据,将其导入 Azure RMS 并选择其他配置。

将 AD RMS 配置导入 Azure 信息保护的过程由四部分完成,以在 Azure Key Vault 中由 (BYOK) 管理 Azure 信息保护租户密钥。

必须先从 AD RMS 配置数据中提取服务器许可方证书 (SLC) 密钥,然后将密钥转移到本地 nCipher HSM,接下来打包 HSM 密钥,然后将 HSM 密钥转移到 Azure Key Vault,然后授权 Azure Rights Management 服务从 Azure 信息保护访问密钥保管库,然后导入配置数据。

由于 Azure 信息保护租户密钥由 Azure Key Vault 存储和管理,因此,除了 Azure 信息保护,此部分迁移还需要在 Azure Key Vault 中进行管理。 如果 Azure Key Vault 由与组织不同的管理员管理,则必须与该管理员协作完成这些过程。

开始之前,请确保组织具有已在 Azure Key Vault 中创建的密钥保管库,并且支持受 HSM 保护的密钥。 尽管这不是必需的,但我们建议为 Azure 信息保护创建一个专用的密钥保管库。 此密钥保管库将配置为允许 Azure 信息保护中的 Azure Rights Management 服务访问它,因此,此密钥保管库存储的密钥应仅限 Azure 信息保护密钥。

提示

如果对 Azure Key Vault 执行配置步骤,但不熟悉此 Azure 服务,则首先查看 Azure Key Vault 入门会很有用

第 1 部分:从配置数据中提取 SLC 密钥,将密钥导入本地 HSM

  1. Azure Key Vault 管理员:对于要存储在 Azure Key Vault 中的每个导出 SLC 密钥,请使用 Azure Key Vault 文档的实现自带密钥 (BYOK) for Azure Key Vault 部分中的步骤:

    请勿按照步骤生成租户密钥,因为导出的配置数据 (.xml) 文件中已有等效项。 而是运行一个工具,从文件中提取此密钥,并导入到本地 HSM。 运行该工具时,该工具会创建两个文件:

    • 没有密钥的新配置数据文件,然后即可将其导入 Azure 信息保护租户。

    • 密钥容器 (PEM 文件) 密钥,然后即可将其导入本地 HSM。

  2. Azure 信息保护管理员或 Azure Key Vault 管理员:在断开连接的工作站上,从 Azure RMS迁移工具包 运行 TpdUtil 工具。 例如,如果在 E 驱动器上安装该工具,将名为 ContosoTPD.xml:

    E:\TpdUtil.exe /tpd:ContosoTPD.xml /otpd:ContosoTPD.xml /opem:ContosoTPD.pem
    

    如果具有多个 RMS 配置文件,请为这些文件的其余部分运行此工具。

    若要查看此工具的帮助(包括说明、用法和示例),请TpdUtil.exe参数运行

    此命令的其他信息:

    • /tpd: 指定导出的 AD RMS 配置文件的完整路径和名称。 完整参数名称为TpdFilePath。

    • /otpd: 指定不带密钥的配置文件的输出文件名。 完整参数名称为OutPfxFile。 如果不指定此参数,输出文件将默认为带有 后缀的原始文件名_keyless ,并且该文件存储在当前文件夹中。

    • /opem: 指定包含提取的密钥的 PEM 文件的输出文件名。 完整参数名称为 OutPemFile。 如果不指定此参数,输出文件将默认为原始文件名,其后缀为 _key ,并且该文件存储在当前文件夹中。

    • 如果在使用 TpdPassword 完整参数名称或 pw) d short 参数名称 (运行此命令时未指定密码,系统会提示指定密码。

  3. 在同一断开连接的工作站上,根据 nCipher 文档附加并配置 nCipher HSM。 现在,可以使用以下命令将密钥导入附加的 nCipher HSM,需要用自己的文件名替换 ContosoTPD.pem:

    generatekey --import simple pemreadfile=e:\ContosoTPD.pem plainname=ContosoBYOK protect=module ident=contosobyok type=RSA
    

    注意

    如果具有多个文件,请选择与要用于 Azure RMS 中的 HSM 密钥对应的文件,以在迁移后保护内容。

    这会生成如下所示的输出显示:

    密钥生成参数:

    操作执行导入的操作

    应用程序应用程序简单

    验证配置密钥的安全性是

    键入密钥类型 RSA

    pemreadfile PEM 文件,其中包含 RSA 密钥 e:\ContosoTPD.pem

    ident 密钥标识符 contosobyok

    plainname 密钥名称 ContosoBYOK

    密钥已成功导入。

    密钥的路径:C:\ProgramData\nCipher\Key Management Data\local\key_simple_contosobyok

此输出确认私钥现已迁移到本地 nCipher HSM 设备,其加密副本已保存到我们示例中的密钥 ("key_simple_contosobyok") 。

提取 SLC 密钥并导入到本地 HSM 后,可以打包受 HSM 保护的密钥,将其转移到 Azure Key Vault。

重要

完成此步骤后,请从断开连接的工作站安全擦除这些 PEM 文件,以确保未经授权的人员无法访问这些文件。 例如,运行"cipher /w: E",安全地从 E: 驱动器中删除所有文件。

第 2 部分:将 HSM 密钥打包并转移到 Azure Key Vault

Azure Key Vault 管理员:对于要存储在 Azure 密钥保管库中的每个导出的 SLC 密钥,请使用 Azure Key Vault 文档的实现自带密钥 (BYOK) for Azure Key Vault 部分中的步骤:

请勿按照步骤生成密钥对,因为已有密钥。 相反,将运行一个命令 (,在我们的示例中,KeyIdentifier 参数使用本地 HSM ) "contosobyok"密钥。

在将密钥转移到 Azure Key Vault 之前,请确保当创建具有缩减权限的密钥副本(步骤 (4.1) )和加密密钥 (步骤 4.3) 时,KeyTransferRemote.exe 实用程序返回结果:成功。

将密钥上传到 Azure Key Vault 时,会看到显示的密钥属性,包括密钥 ID。 它类似于 https://contosorms-kv.vault.azure.net/keys/contosorms-byok/aaaabbbbcccc111122223333 。 请记下此 URL,因为 Azure 信息保护管理员需要它来告知 Azure Rights Management Service 从 Azure 信息保护使用此密钥作为租户密钥。

然后使用 Set-AzKeyVaultAccessPolicy cmdlet 授权 Azure Rights Management 服务主体访问密钥保管库。 所需的权限包括解密、加密、解包密钥、包装密钥、验证和签名。

例如,如果为 Azure 信息保护创建的密钥保管库名为 contosorms-byok-kv,资源组名为 contosorms-byok-rg,请运行以下命令:

Set-AzKeyVaultAccessPolicy -VaultName "contosorms-byok-kv" -ResourceGroupName "contosorms-byok-rg" -ServicePrincipalName 00000012-0000-0000-c000-000000000000 -PermissionsToKeys decrypt,encrypt,unwrapkey,wrapkey,verify,sign,get

将 HSM 密钥传输到 Azure Key Vault 后,即可导入 AD RMS 配置数据。

第 3 部分:将配置数据导入 Azure 信息保护

  1. Azure 信息保护管理员:在连接 Internet 的工作站和 PowerShell 会话中,复制运行 TpdUtil 工具后删除了 SLC 密钥的新配置文件 (.xml) 。

  2. Upload Import-AipServiceTpd cmdlet .xml每个文件。 例如,如果为加密模式 2 升级了 AD RMS 群集,应至少有一个要导入的文件。

    若要运行此 cmdlet,需要前面为配置文件指定的密码,以及上一步中标识的密钥的 URL。

    例如,使用上一步骤C:\contoso_keyless.xml密钥 URL 值的配置数据文件,首先运行以下代码来存储密码:

     $TPD_Password = Read-Host -AsSecureString
    

    输入指定用于导出配置文件的密码。 然后,运行以下命令并确认要执行此操作:

    Import-AipServiceTpd -TpdFile "C:\contoso_keyless.xml" -ProtectionPassword $TPD_Password –KeyVaultStringUrl https://contoso-byok-kv.vault.azure.net/keys/contosorms-byok/aaaabbbbcccc111122223333 -Verbose
    

    作为此导入的一部分,将导入 SLC 密钥并自动设置为存档。

  3. 上传每个文件时,请运行 Set-AipServiceKeyProperties 以指定导入的密钥与 AD RMS 群集中当前处于活动状态的 SLC 密钥匹配。

  4. 使用 Disconnect-AipServiceService cmdlet 从 Azure Rights Management 服务断开连接:

    Disconnect-AipServiceService
    

如果以后需要确认 Azure 信息保护租户密钥在 Azure Key Vault 中使用的是哪个密钥,请使用 Get-AipServiceKeys Azure RMS cmdlet。

现在,可以转到步骤 5。激活 Azure Rights Management 服务