Azure SQL 数据库透明数据加密(预览版)通过对数据库、关联的备份和事务日志文件执行实时加密和解密,而无需更改应用程序,帮助防范恶意活动的威胁。
TDE 使用称为数据库加密密钥的对称密钥来加密整个数据库的存储。 在 SQL 数据库中,数据库加密密钥受内置服务器证书的保护。 对于每个 SQL 数据库服务器,内置服务器证书是唯一的。 如果数据库处于 GeoDR 关系中,则它受每个服务器上的不同密钥的保护。 如果 2 个数据库连接到同一服务器,则它们共享相同的内置证书。 Microsoft至少每 90 天自动轮换这些证书。 有关 TDE 的一般说明,请参阅透明数据加密(TDE)。
Azure SQL 数据库不支持 Azure Key Vault 与 TDE 的集成。 在 Azure 虚拟机上运行的 SQL Server 可以使用 Key Vault 中的非对称密钥。 有关详细信息,请参阅 示例 A:使用 Key Vault 中的非对称密钥进行透明数据加密。
适用于:SQL 数据库 V12(某些区域中的预览版)。 |
重要
这是一项预览功能。 我承认并同意,在我的数据库中实施 SQL 数据库透明数据加密受许可协议(例如企业协议、Microsoft Azure 协议或Microsoft在线订阅协议)以及 Microsoft Azure 预览版的任何适用的补充使用条款的约束。
即使在已宣布 SQL 数据库 V12 版本系列正式发布的部分地区,TDE 的状态预览仍然适用。 在 Microsoft 宣布将 TDE for SQL 数据库从预览版提升到正式版之前,不应在生产数据库中使用 TDE。 有关 SQL 数据库 V12 的详细信息,请参阅 Azure SQL 数据库中的新增功能。
权限
若要注册预览版并通过 Azure 门户、REST API 或使用 PowerShell 配置 TDE,必须作为 Azure 所有者、参与者或 SQL 安全管理器进行连接。
若要使用 Transact-SQL 配置 TDE,需要满足以下条件:
您必须已经注册 TDE 预览版。
若要创建数据库加密密钥,你必须是 SQL 数据库管理员,或者必须是 master 数据库中 dbmanager 角色的成员,并且对数据库具有 CONTROL 权限。
若要使用 SET 选项执行 ALTER DATABASE 语句,只需在 dbmanager 角色中具有成员身份。
注册 TDE 预览版并在数据库上启用 TDE
访问 Azure 门户, https://portal.azure.com 并使用 Azure 管理员或参与者帐户登录。
在左侧横幅上,单击“ 浏览”,然后单击“ SQL 数据库”。
在左窗格中选择 SQL 数据库 后,单击用户数据库。
在数据库边栏选项卡中,单击“ 所有设置”。
在 “设置” 边栏选项卡中,单击 “透明数据加密”(预览) 部分以打开 “透明数据加密预览 ”边栏选项卡。 如果尚未注册 TDE 预览版,则在完成注册之前,数据加密设置将被禁用。
单击 “预览条款”。
阅读预览版条款,如果同意条款,请选中 “透明数据加密Preview 条款 ”复选框,然后单击页面底部附近的 “确定 ”。 返回到 “数据加密PREVIEW ”边栏选项卡,此时应启用 “数据加密 ”按钮。
在 “数据加密预览” 边栏选项卡中,将 “数据加密 ”按钮移动到 “打开”,然后单击“ 保存 ”(页面顶部)以应用设置。 加密状态将近似于透明数据加密的进度。
还可以通过使用 SQL Server Management Studio 等查询工具(如具有 VIEW DATABASE STATE 权限的数据库用户)连接到 SQL 数据库来监视加密进度。 查询
encryption_state
sys.dm_database_encryption_keys视图的列。
使用 Transact-SQL 在 SQL 数据库上启用 TDE
以下步骤假设你已注册预览版。
使用作为 master 数据库中 dbmanager 角色的管理员或成员的登录名连接到数据库。
执行以下语句以创建数据库加密密钥并加密数据库。
-- Create the database encryption key that will be used for TDE. CREATE DATABASE ENCRYPTION KEY WITH ALGORITHM = AES_256 ENCRYPTION BY SERVER CERTIFICATE ##MS_TdeCertificate##; -- Enable encryption ALTER DATABASE [AdventureWorks] SET ENCRYPTION ON; GO
若要监视 SQL 数据库的加密进度,具有 VIEW DATABASE STATE 权限的数据库用户可以查询
encryption_state
sys.dm_database_encryption_keys视图的列。
使用 PowerShell 在 SQL 数据库上启用 TDE
使用 Azure PowerShell 可以运行以下命令以打开/关闭 TDE。 运行命令之前,必须将帐户连接到 PS 窗口。 以下步骤假设你已注册预览版。 有关 PowerShell 的其他信息,请参阅 如何安装和配置 Azure PowerShell。
若要启用 TDE,请返回 TDE 状态并查看加密活动。
Switch-AzureMode -Name AzureResourceManager Set-AzureSqlDatabaseTransparentDataEncryption -ServerName "myserver" -ResourceGroupName "Default-SQL-WestUS" -DatabaseName "database1" -State "Enabled" Get-AzureSqlDatabaseTransparentDataEncryption -ServerName "myserver" -ResourceGroupName "Default-SQL-WestUS" -DatabaseName "database1" Get-AzureSqlDatabaseTransparentDataEncryptionActivity -ServerName "myserver" -ResourceGroupName "Default-SQL-WestUS" -DatabaseName "database1"
若要禁用 TDE:
Set-AzureSqlDatabaseTransparentDataEncryption -ServerName "myserver" -ResourceGroupName "Default-SQL-WestUS" -DatabaseName "database1" -State "Disabled" Switch-AzureMode -Name AzureServiceManagement
解密 SQL 数据库上的 TDE 保护的数据库
使用 Azure 门户禁用 TDE
访问 Azure 门户, https://portal.azure.com 并使用 Azure 管理员或参与者帐户登录。
在左侧横幅上,单击“ 浏览”,然后单击“ SQL 数据库”。
在左窗格中选择 SQL 数据库 后,单击用户数据库。
在数据库边栏选项卡中,单击“ 所有设置”。
在 “设置” 边栏选项卡中,单击 “透明数据加密”(预览) 部分以打开 “透明数据加密预览 ”边栏选项卡。
在 “透明数据加密预览” 边栏选项卡中,将 “数据加密 ”按钮移动到 “关闭”,然后单击“ 保存 ”(页面顶部)应用设置。 加密状态将近似于透明数据解密的进度。
您也可以使用查询工具(如 Management Studio),以数据库用户身份连接到 SQL 数据库并具备 VIEW DATABASE STATE 权限,来监视解密进度。 查询sys.dm_database_encryption_keys视图的某个
encryption_state
列。
使用 Transact-SQL 禁用 TDE
请使用作为 master 数据库中 dbmanager 角色的管理员或成员的登录名来连接到数据库。
执行以下语句来解密数据库。
-- Enable encryption ALTER DATABASE [AdventureWorks] SET ENCRYPTION OFF; GO
若要监视 SQL 数据库的加密进度,具有 VIEW DATABASE STATE 权限的数据库用户可以查询
encryption_state
sys.dm_database_encryption_keys视图的列。
在 SQL 数据库上使用受 TDE 保护的数据库
无需解密数据库即可在 Azure 中执行作。 源数据库或主数据库上 TDE 的设置均以透明方式继承在目标系统上。 这包括涉及以下操作:
地域恢复
Self-Service 时间点还原
还原已删除的数据库
主动Geo_Replication
创建数据库副本
在使用 .Bacpac 文件时移动受 TDE 保护的数据库。
在 Azure SQL 数据库门户或 SQL Server 导入和导出向导中使用导出数据库函数导出受 TDE 保护的数据库时,不会加密数据库的内容。 内容存储在未加密的 .bacpac 文件中。 确保正确保护 .bacpac 文件,并在完成新数据库的导入后启用 TDE。
相关的 SQL Server 主题
另请参阅
透明数据加密(TDE)CREATE CREDENTIAL(Transact-SQL)CREATE ASYMMETRIC KEY(Transact-SQL)CREATE DATABASE ENCRYPTION KEY(Transact-SQL)ALTER DATABASE(Transact-SQL)ALTER DATABASE SET Options(Transact-SQL)