你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。

在 Azure Synapse Analytics 中轮换透明数据加密保护程序

Tip

Microsoft Fabric Data Warehouse是数据湖基础上的企业规模关系仓库,具有未来就绪的体系结构、内置 AI 和新功能。 如果不熟悉数据仓库,请从Fabric Data Warehouse开始。 现有的指定 SQL 池工作负荷可以升级到 Fabric,以跨数据科学、实时分析和报告访问新功能。

适用于:Azure Synapse Analytics 专用 SQL 池(以前称为 SQL DW)

本文介绍了使用 Azure 密钥保管库 的 TDE 保护器的 SQL 服务器的密钥轮换。 轮换某个服务器的逻辑 TDE 保护器,是指切换为一个新的受支持密钥,该密钥用于保护该服务器上的数据库。 根据配置,TDE 保护器可由存储在 Azure 密钥保管库 或 Azure 密钥保管库 Managed HSM 中的受支持的非对称 (RSA) 密钥或对称 (AES) 密钥提供保护。 密钥轮换是一个在线操作,通常只需几秒钟即可完成,因为该操作只解密并重新加密数据库的数据加密密钥,而非整个数据库。

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

注意

本文介绍了独立的专用SQL池(前称SQL DW)。 关于Synapse工作空间中的专用SQL池,请参见Azure Synapse Analytics工作空间的加密。

重要注意事项

  • 至少保留旧密钥版本,至少在数据库备份保留期内。 还原较旧的备份需要当初加密它的保护程序。
  • 即使你切换回服务管理保护器,也要保留旧密钥。
  • 必须在轮换前恢复一个暂停的专用 SQL 池。
  • 密钥库名称和密钥名称的总长度不能超过94个字符。

Prerequisites

  • 本文假设你已经在使用 Azure 密钥保管库 中的密钥作为 Azure SQL 数据库 或 Azure Synapse Analytics 的 TDE 保护器。 欲了解更多,请参见 Customer-managed TDE for Azure Synapse Analytics。
  • 必须安装并运行 Azure PowerShell。

Tip

推荐但是可选操作 - 先在硬件安全模块 (HSM) 或本地密钥存储中创建 TDE 保护器的密钥材料,然后将密钥材料导入到 Azure 密钥保管库。 欲了解更多信息,请参阅使用硬件安全模块(HSM)和 Azure 密钥保管库 的说明。

转到 Azure 门户。

自动密钥轮换

为服务器或数据库配置 TDE 保护程序时,请为 TDE 保护程序启用自动轮换。 你可以从Azure门户启用自动轮换,或者使用以下PowerShell或Azure CLI命令。 当你启用自动轮换时,服务器或数据库会持续检查密钥保管库中用作 TDE 保护器的密钥是否有新版本。 如果服务器或数据库检测到密钥的新版本,它会自动在 24小时内将TDE保护器切换到最新的密钥版本。

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

Azure 门户

使用Azure portal:

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

PowerShell

有关 Az PowerShell 模块安装说明,请参阅安装 Azure PowerShell。

要通过PowerShell实现TDE保护器的自动旋转,请参见以下脚本。 你可以检索 <keyVaultKeyId>(从 Azure 密钥保管库)。

使用 Set-AzSqlServerTransparentDataEncryptionProtector:

Set-AzSqlServerTransparentDataEncryptionProtector -Type AzureKeyVault -KeyId <keyVaultKeyId> `
   -ServerName <logicalServerName> -ResourceGroup <SQLDatabaseResourceGroupName> `
    -AutoRotationEnabled <boolean>

Azure CLI

有关安装当前版本 Azure CLI 的信息,请参见安装 Azure CLI。

要通过使用 Azure CLI 实现 TDE 保护器的自动旋转,请参见以下脚本。

使用 az sql server tde-key set:

az sql server tde-key set --server-key-type AzureKeyVault
                          --auto-rotation-enabled true
                          [--kid] <keyVaultKeyId>
                          [--resource-group] <SQLDatabaseResourceGroupName> 
                          [--server] <logicalServerName>

手动密钥轮换

手动密钥轮换使用以下命令来添加新密钥,该密钥可能使用新的密钥名称,甚至在另一密钥保管库中。 你也可以使用 Azure 门户手动轮换密钥。

当你手动旋转密钥并在 密钥保管库 中创建新的密钥版本(无论是手动还是通过自动密钥轮换策略)时,你必须手动将该密钥版本设置为服务器上的 TDE 保护器。

注意

密钥库名称和密钥名称的总长度不得超过94字符。

Azure 门户

  1. 在 SQL 服务器上打开透明数据加密。
  2. 选择 客户管理密钥。
  3. 选择 客户管理密钥 选项,选择密钥库和密钥作为新的TDE保护器使用。
  4. 选择“保存”。

PowerShell

使用 Add-AzKeyVaultKey 命令将新密钥添加到密钥保管库。

# add a new key to Azure Key Vault
Add-AzKeyVaultKey -VaultName <keyVaultName> -Name <keyVaultKeyName> -Destination <hardwareOrSoftware>

使用以下命令:


# add the new key from Azure Key Vault to the server
Add-AzSqlServerKeyVaultKey -KeyId <keyVaultKeyId> -ServerName <logicalServerName> -ResourceGroup <SQLDatabaseResourceGroupName>
  
# set the key as the TDE protector for all resources under the server
Set-AzSqlServerTransparentDataEncryptionProtector -Type AzureKeyVault -KeyId <keyVaultKeyId> `
   -ServerName <logicalServerName> -ResourceGroup <SQLDatabaseResourceGroupName>

Azure CLI

使用 az keyvault key create 命令将新密钥添加到密钥保管库。

# add a new key to Azure Key Vault
az keyvault key create --name <keyVaultKeyName> --vault-name <keyVaultName> --protection <hsmOrSoftware>

使用以下命令:

# add the new key from Azure Key Vault to the server
az sql server key create --kid <keyVaultKeyId> --resource-group <SQLDatabaseResourceGroupName> --server <logicalServerName>

# set the key as the TDE protector for all resources under the server
az sql server tde-key set --server-key-type AzureKeyVault --kid <keyVaultKeyId> --resource-group <SQLDatabaseResourceGroupName> --server <logicalServerName>

切换 TDE 保护器模式

Azure 门户

使用 Azure 门户将 TDE 保护器从 Microsoft 管理模式切换为 BYOK 模式:

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

PowerShell

  • 要将 TDE 保护器从 Microsoft 托管模式切换到 BYOK 模式,请使用 Set-AzSqlServerTransparentDataEncryptionProtector 命令。

    Set-AzSqlServerTransparentDataEncryptionProtector -Type AzureKeyVault `
         -KeyId <keyVaultKeyId> -ServerName <logicalServerName> -ResourceGroup <SQLDatabaseResourceGroupName>
    
  • 要将 TDE 保护器从 BYOK 模式切换到 Microsoft 托管模式,请使用 Set-AzSqlServerTransparentDataEncryptionProtector 命令。

    Set-AzSqlServerTransparentDataEncryptionProtector -Type ServiceManaged `
         -ServerName <logicalServerName> -ResourceGroup <SQLDatabaseResourceGroupName>
    

Azure CLI

以下示例使用 az sql server tde-key set。

  • 将 TDE 保护器从 Microsoft 管理模式切换到 BYOK (Bring Your Own Key) 模式:

    az sql server tde-key set --server-key-type AzureKeyVault --kid <keyVaultKeyId> --resource-group <SQLDatabaseResourceGroupName> --server <logicalServerName>
    
  • 将 TDE 保护器从“BYOK”模式切换到“Microsoft 托管”:

    az sql server tde-key set --server-key-type ServiceManaged --resource-group <SQLDatabaseResourceGroupName> --server <logicalServerName>