适用于: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。
自动密钥轮换
在为服务器或数据库配置 TDE 保护器时,为 TDE 保护器启用自动轮换。 你可以从Azure门户启用自动轮换,或者使用以下PowerShell或Azure CLI命令。 当你启用自动轮换时,服务器或数据库会持续检查密钥保管库中用作 TDE 保护器的密钥是否有新版本。 如果服务器或数据库检测到密钥的新版本,它会自动在 24小时内将TDE保护器切换到最新的密钥版本。
在已于 Azure 密钥保管库 启用自动密钥轮换的服务器、数据库或托管实例中使用自动轮换,以实现 TDE 密钥的端到端零触控轮换。
Azure 门户
使用Azure portal:
- 浏览到现有服务器或托管实例的“透明数据加密”部分。
- 选择 客户管理的密钥 选项,并选择要用作 TDE 保护程序的密钥保管库和密钥。
- 选中自动旋转复选框。
- 选择“保存”。
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 --server-key-type AzureKeyVault
--auto-rotation-enabled true
[--kid] <keyVaultKeyId>
[--resource-group] <SQLDatabaseResourceGroupName>
[--server] <logicalServerName>
手动密钥轮换
手动密钥轮换使用以下命令来添加新密钥,该密钥可能使用新的密钥名称,甚至在另一密钥保管库中。 你也可以使用 Azure 门户手动轮换密钥。
当你手动旋转密钥并在 密钥保管库 中创建新的密钥版本(无论是手动还是通过自动密钥轮换策略)时,你必须手动将该密钥版本设置为服务器上的 TDE 保护器。
Note
密钥库名称和密钥名称的总长度不得超过94字符。
Azure 门户
- 在 SQL 服务器上打开透明数据加密。
- 选择 客户管理密钥。
- 选择 客户管理密钥 选项,选择密钥库和密钥作为新的TDE保护器使用。
- 选择“保存”。
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>
使用以下命令:
- az sql server 密钥创建
- az sql server tde-key set 命令用于设置 SQL 服务器的透明数据加密 (TDE) 密钥。
# 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 模式:
- 请浏览到现有服务器或托管实例的透明数据加密菜单。
- 选择“客户管理的密钥”选项。
- 选择密钥库和密钥作为TDE保护器使用。
- 选择“保存”。
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>