本文内容
适用于:Azure SQL 数据库
Azure SQL 托管实例
Azure Synapse Analytics
本文逐步介绍如何使用 Azure Key Vault 中的密钥对 Azure SQL 数据库或 Azure Synapse Analytics 启用透明数据加密 (TDE)。 要了解更多关于 TDE 与 Azure Key Vault 集成(即自带密钥 (BYOK) 支持)的信息,请访问使用 Azure Key Vault 中由客户管理的密钥进行 TDE。 若要查找有关如何使用 Azure Key Vault 的客户管理的密钥启用 TDE 的 Azure 门户说明,请参阅创建使用用户分配的托管标识和客户管理的 TDE 配置的服务器。
本文适用于 Azure SQL 数据库、Azure SQL 托管实例和 Azure Synapse Analytics 专用 SQL 池。 有关 Synapse 工作区内专用 SQL 池的透明数据加密的文档,请参阅 Azure Synapse Analytics 加密。
备注
Microsoft Entra ID 以前称为 Azure Active Directory (Azure AD)。
- 必须有一个 Azure 订阅,并且是该订阅的管理员。
- 必须安装并运行 Azure PowerShell。
- 创建用于 TDE 的 Azure Key Vault 和密钥。
- Key Vault 的 PowerShell 说明
- Key Vault 必须包含用于 TDE 的以下属性:
- 软删除和清除保护
- Key Vault 的 PowerShell 说明
- 密钥必须包含用于 TDE 的以下特性:
- 激活日期(如果已设置)必须是过去的日期和时间
- 到期日期(若已设置)必须是将来的日期和时间
- 密钥必须处于“已启用”状态
- 能够执行“获取”、“包装密钥”和“解包密钥”操作
有关 Az PowerShell 模块安装说明,请参阅安装 Azure PowerShell。
有关 Key Vault 的具体信息,请参阅 Key Vault 的 PowerShell 说明和如何将 Key Vault 软删除与 PowerShell 配合使用。
如果具有现有服务器,请执行以下操作将 Microsoft Entra 标识添加到服务器:
$server = Set-AzSqlServer -ResourceGroupName <SQLDatabaseResourceGroupName> -ServerName <LogicalServerName> -AssignIdentity
如果要创建服务器,请在创建服务器期间,结合 -Identity 标记使用 New-AzSqlServer cmdlet 来添加 Microsoft Entra 标识:
$server = New-AzSqlServer -ResourceGroupName <SQLDatabaseResourceGroupName> -Location <RegionName> `
-ServerName <LogicalServerName> -ServerVersion "12.0" -SqlAdministratorCredentials <PSCredential> -AssignIdentity
将 Key Vault 中的密钥用于 TDE 之前,请使用 Set-AzKeyVaultAccessPolicy cmdlet 向服务器授权 Key Vault 的访问权限。
Set-AzKeyVaultAccessPolicy -VaultName <KeyVaultName> `
-ObjectId $server.Identity.PrincipalId -PermissionsToKeys get, wrapKey, unwrapKey
- 使用 Get-AzKeyVaultKey cmdlet 从密钥保管库中检索密钥 ID
- 使用 Add-AzSqlServerKeyVaultKey cmdlet 将 Key Vault 中的密钥添加到服务器。
- 使用 Set-AzSqlServerTransparentDataEncryptionProtector cmdlet 将密钥设置为所有服务器资源的 TDE 保护器。
- 使用 Get-AzSqlServerTransparentDataEncryptionProtector cmdlet 确认已按预期配置了 TDE 保护器。
备注
Key Vault 名称和密钥名称的总长度不能超过 94 个字符。
提示
Key Vault 中的示例 KeyId: https://contosokeyvault.vault.azure.cn/keys/Key1/<key-id>
# add the key from Key Vault to the server
Add-AzSqlServerKeyVaultKey -ResourceGroupName <SQLDatabaseResourceGroupName> -ServerName <LogicalServerName> -KeyId <KeyVaultKeyId>
# set the key as the TDE protector for all resources under the server
Set-AzSqlServerTransparentDataEncryptionProtector -ResourceGroupName <SQLDatabaseResourceGroupName> -ServerName <LogicalServerName> `
-Type AzureKeyVault -KeyId <KeyVaultKeyId>
# confirm the TDE protector was configured as intended
Get-AzSqlServerTransparentDataEncryptionProtector -ResourceGroupName <SQLDatabaseResourceGroupName> -ServerName <LogicalServerName>
使用 Set-AzSqlDatabaseTransparentDataEncryption cmdlet 来启用 TDE。
Set-AzSqlDatabaseTransparentDataEncryption -ResourceGroupName <SQLDatabaseResourceGroupName> `
-ServerName <LogicalServerName> -DatabaseName <DatabaseName> -State "Enabled"
现已使用 Key Vault 中的加密密钥为数据库或数据仓库启用了 TDE。
使用 Get-AzSqlDatabaseTransparentDataEncryption 获取数据库或数据仓库的加密状态。
# get the encryption state of the database
Get-AzSqlDatabaseTransparentDataEncryption -ResourceGroupName <SQLDatabaseResourceGroupName> `
-ServerName <LogicalServerName> -DatabaseName <DatabaseName> `
使用 Set-AzSqlDatabaseTransparentDataEncryption cmdlet 来禁用 TDE。
Set-AzSqlDatabaseTransparentDataEncryption -ServerName <LogicalServerName> -ResourceGroupName <SQLDatabaseResourceGroupName> ` -DatabaseName <DatabaseName> -State "Disabled"
使用 Get-AzSqlServerKeyVaultKey cmdlet 可返回已添加到服务器的 Key Vault 密钥列表。
# KeyId is an optional parameter, to return a specific key version Get-AzSqlServerKeyVaultKey -ServerName <LogicalServerName> -ResourceGroupName <SQLDatabaseResourceGroupName>
使用 Remove-AzSqlServerKeyVaultKey 可从服务器中删除 Key Vault 密钥。
# the key set as the TDE Protector cannot be removed Remove-AzSqlServerKeyVaultKey -KeyId <KeyVaultKeyId> -ServerName <LogicalServerName> -ResourceGroupName <SQLDatabaseResourceGroupName>
如果找不到密钥库,请确保您使用的是正确的订阅。
Get-AzSubscription -SubscriptionId <SubscriptionId>
如果无法将新密钥添加到服务器,或者无法将新密钥更新为 TDE 保护程序,请检查以下内容:
- 密钥不应有到期日期。
- 密钥必须支持“获取”、“包装密钥”和“解包密钥”操作。
- 了解如何轮换服务器的 TDE 保护器以符合安全要求:使用 PowerShell 轮换透明数据加密保护器。
- 了解如何删除可能遭到入侵的 TDE 保护程序:删除可能泄露的密钥。