轮换透明数据加密 (TDE) 保护程序

适用于:Azure SQL 数据库Azure SQL 托管实例

本文介绍使用 Azure 密钥保管库 中的 TDE 保护器对服务器进行的密钥轮换。 轮换某个服务器的逻辑 TDE 保护器,是指切换为一个新的受支持密钥,该密钥用于保护该服务器上的数据库。 密钥轮换是一种联机操作,应该只需数秒即可完成,因为此操作只在解密数据库的数据加密密钥后重新将其加密,而不是对整个数据库进行操作。

本文讨论了在服务器上轮换 TDE 保护器的自动方法和手动方法。

轮换 TDE 保护器时的重要注意事项

  • 更改/轮换 TDE 保护器后,数据库的旧备份(包括已备份的日志文件)不会更新为使用最新的 TDE 保护器。 若要从 Azure 密钥保管库 还原使用 TDE 保护程序加密的备份,请确保密钥材料可用于目标服务器。 因此,我们建议在 Azure 密钥保管库 中保留 TDE 保护程序的所有旧版本,以便可以还原数据库备份。

  • 即使从客户管理的密钥(CMK)切换到服务管理的密钥,也会保留 Azure 密钥保管库 中以前使用的所有密钥。 这可确保使用存储在 Azure 密钥保管库 中的 TDE 保护程序还原数据库备份,包括备份日志文件。

  • 除了旧备份以外,事务日志文件可能还需要访问较旧的 TDE 保护器。 若要确定是否有任何剩余的日志仍需要旧密钥,请在执行密钥轮换后,使用 (DMV) sys.dm_db_log_info 动态管理视图 (DMV)。 此 DMV 返回有关事务日志的虚拟日志文件 (VLF) 的信息及其 VLF 的加密密钥指纹。

  • 将旧密钥保留在Azure 密钥保管库中,并根据在数据库上配置为备份保留策略的一部分的备份保留期将其提供给服务器。 这种做法有助于确保服务器上的任何长期保留(LTR)备份仍能通过使用旧密钥恢复。

  • 可以通过将配置切换为使用存储在 Azure 密钥保管库 中的新密钥来轮换 TDE 保护器。 根据Azure SQL产品/服务和支持的配置,可能包括:

    • 切换到同一密钥的新密钥版本
    • 切换到其他密钥

先决条件

  • 本文假设你已经使用Azure 密钥保管库中的密钥作为Azure SQL 数据库或Azure SQL 托管实例的TDE保护器。 参见提供 BYOK 支持的透明数据加密。
  • 必须安装并运行 Azure PowerShell。

转到 Azure 门户

自动密钥轮换

为服务器或数据库配置 TDE 保护程序时,可以从 Azure 门户或使用以下 PowerShell 或 Azure CLI 命令启用 TDE 保护程序的自动轮换。 启用后,服务器或数据库将持续检查密钥保管库,获取用作 TDE 保护程序的任何新版本的密钥。 如果检测到新版密钥,服务器或数据库上的 TDE 保护程序将在24 小时内自动轮换到最新密钥版本。

服务器、数据库或托管实例中的自动轮换可用于 Azure 密钥保管库中的自动密钥轮换,以启用 TDE 密钥的端到端零触摸轮换。

注意

如果服务器或托管实例在启用自动轮换之前配置了异地复制,请参阅 配置 TDE 保护程序的自动轮换时的异地复制注意事项。

使用 Azure 门户:

  1. 浏览到现有服务器或托管实例的“透明数据加密”部分。
  2. 选择“客户管理的密钥”选项,并选择要用作 TDE 保护器的密钥保管库和密钥。
  3. 选中“自动旋转密钥”复选框。
  4. 选择“保存”。

透明数据加密的自动轮换密钥配置的屏幕截图。

数据库级别的自动密钥轮换

你也可以在Azure SQL 数据库的数据库层面启用自动密钥轮换。 当你想为服务器上的一个或部分数据库启用自动密钥轮换时,这种方法非常有用。 有关详细信息,请参阅使用数据库级别客户管理的密钥进行 TDE 标识和密钥管理。

要使用 PowerShell 在数据库级别为 TDE 保护程序启用自动轮换,请参阅以下命令。 使用-EncryptionProtectorAutoRotation参数并设置为$true以启用自动密钥轮换,或者设置为$false以禁用自动密钥轮换。

Set-AzSqlDatabase -ResourceGroupName <resource_group_name> -ServerName <server_name> -DatabaseName <database_name> -EncryptionProtectorAutoRotation:$true

异地复制配置的自动密钥轮换

在将主服务器设置为将 TDE 与 CMK 配合使用的 Azure SQL 数据库异地复制配置中,还需要将辅助服务器配置为使用 CMK 启用 TDE,并使用与主服务器相同的密钥。

使用 Azure 门户:

  1. 浏览到主服务器的“透明数据加密”部分。

  2. 选择“客户管理的密钥”选项,并选择要用作 TDE 保护器的密钥保管库和密钥。

  3. 选中“自动旋转密钥”复选框。

  4. 选择“保存”。

    主服务器上异地复制方案中透明数据加密的自动轮换密钥配置的屏幕截图。

  5. 浏览到辅助服务器的“透明数据加密”部分。

  6. 选择“客户管理的密钥”选项,并选择要用作 TDE 保护器的密钥保管库和密钥。 使用与主服务器相同的密钥。

  7. 取消选中“将此密钥设置为默认的 TDE 保护程序”。

  8. 选择“保存”。

    辅助服务器上用于异地复制场景中透明数据加密的密钥自动轮换配置的屏幕截图。

当密钥在主服务器上轮换时,它会自动传输到辅助服务器。

注意

如果将主服务器上的同一密钥保管库密钥用作次级服务器上的默认 TDE 保护器,请确保自动轮换密钥已在两台服务器上启用。 如果不启用此设置,自动旋转工作流程可能会进入错误状态,阻止继续手动旋转按键操作。

为每个服务器使用不同的密钥

在 Azure 门户中使用 CMK 配置 TDE 时,可以使用不同的密钥保管库密钥配置主服务器和辅助服务器。 在 Azure 门户中,用于保护主服务器的密钥也与保护已复制到辅助服务器的主数据库的密钥相同,这并不明显。 但是,可以使用 PowerShell、Azure CLI 或 REST API 获取有关服务器上使用的密钥的详细信息。 这表明自动轮换密钥已从主服务器传输到辅助服务器。

下面是使用 PowerShell 命令检查密钥轮换后从主服务器传输到辅助服务器的密钥的示例。

  1. 在主服务器上执行以下命令,以显示某台服务器的密钥详细信息:

    Get-AzSqlServerKeyVaultKey -ServerName <logicalServerName> -ResourceGroupName <SQLDatabaseResourceGroupName> 
    
  2. 你应该会看到与下列内容相似的结果:

    ResourceGroupName : <SQLDatabaseResourceGroupName> 
    ServerName        : <logicalServerName> 
    ServerKeyName     : <keyVaultKeyName> 
    Type              : AzureKeyVault 
    Uri               : https://<keyvaultname>.vault.azure.cn/keys/<keyName>/<GUID> 
    Thumbprint        : <thumbprint> 
    CreationDate      : 12/13/2022 8:56:32 PM
    
  3. 在辅助服务器上执行相同的 Get-AzSqlServerKeyVaultKey 命令:

    Get-AzSqlServerKeyVaultKey -ServerName <logicalServerName> -ResourceGroupName <SQLDatabaseResourceGroupName> 
    
  4. 如果辅助服务器的默认 TDE 保护程序使用的密钥与主服务器不同,应会显示两个(或多个)密钥。 第一个密钥是默认的 TDE 保护程序,第二个密钥是用于保护复制数据库的主服务器中使用的密钥。

  5. 当密钥在主服务器上轮换时,它会自动传输到辅助服务器。 如果在主服务器上再次运行 Get-AzSqlServerKeyVaultKey,应会显示两个密钥。 第一个密钥是原始密钥,第二个密钥是作为密钥轮换的一部分生成的当前密钥。

  6. 在辅助服务器上运行 Get-AzSqlServerKeyVaultKey 命令,也应显示与主服务器中相同的密钥。 这将确认主服务器上的轮换密钥会自动传输到辅助服务器,并用于保护数据库副本。

手动密钥轮换

手动密钥轮换使用以下命令来添加新密钥,该密钥可能使用新的密钥名称,甚至在另一密钥保管库中。 使用此方法时支持将同一密钥添加到不同的密钥保管库来支持高可用性和异地灾难恢复方案。 手动密钥轮换也可以使用 Azure 门户完成。

如果使用手动密钥轮换,当密钥保管库中生成新的密钥版本时(在密钥保管库中手动操作或通过自动密钥轮换策略),必须将同一版本手动设置为服务器上的 TDE 保护器。

注意

Key Vault 名称和密钥名称的总长度不能超过 94 个字符。

使用 Azure 门户:

  1. 请浏览到现有服务器或托管实例的透明数据加密菜单。
  2. 选择“客户管理的密钥”选项,并选择要用作新的 TDE 保护器的密钥保管库和密钥。
  3. 选择“保存”。

透明数据加密的手动轮换密钥配置的屏幕截图。

切换 TDE 保护器模式

使用 Azure 门户将 TDE 保护器从“Microsoft 托管”切换到“BYOK”模式:

  1. 请浏览到现有服务器或托管实例的透明数据加密菜单。
  2. 选择“客户管理的密钥”选项。
  3. 选择要用作 TDE 保护器的密钥保管库和密钥。
  4. 选择“保存”。

Azure Synapse Analytics 中的 TDE

有关在Azure Synapse Analytics中旋转TDE保护器的信息,请参见“旋转TDE保护器”。 有关 Synapse 工作区内专用 SQL 池的透明数据加密的文档,请参阅 Azure Synapse Analytics 加密。