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

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

本文介绍了使用 Azure 密钥保管库 的 TDE 保护器的 SQL 服务器的密钥轮换。 轮换某个服务器的逻辑 TDE 保护器,是指切换为一个新的受支持密钥,该密钥用于保护该服务器上的数据库。 密钥轮换是一个在线操作,通常只需几秒钟即可完成,因为该操作只解密并重新加密数据库的数据加密密钥,而非整个数据库。

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

Note

本文介绍了独立的专用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。

转到 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保护器的自动旋转,请参见以下脚本。 你可以从 Azure 密钥保管库 检索<keyVaultKeyId>。

使用 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 保护器。

Note

密钥库名称和密钥名称的总长度不得超过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 <Software>

使用以下命令:


# 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 <Software>

使用以下命令:

# 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>