使用 Azure SQL 数据库进行透明数据加密

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

  1. 访问 Azure 门户, https://portal.azure.com 并使用 Azure 管理员或参与者帐户登录。

  2. 在左侧横幅上,单击“ 浏览”,然后单击“ SQL 数据库”。

  3. 在左窗格中选择 SQL 数据库 后,单击用户数据库。

  4. 在数据库边栏选项卡中,单击“ 所有设置”。

  5. “设置” 边栏选项卡中,单击 “透明数据加密”(预览) 部分以打开 “透明数据加密预览 ”边栏选项卡。 如果尚未注册 TDE 预览版,则在完成注册之前,数据加密设置将被禁用。

  6. 单击 “预览条款”。

  7. 阅读预览版条款,如果同意条款,请选中 “透明数据加密Preview 条款 ”复选框,然后单击页面底部附近的 “确定 ”。 返回到 “数据加密PREVIEW ”边栏选项卡,此时应启用 “数据加密 ”按钮。

  8. “数据加密预览” 边栏选项卡中,将 “数据加密 ”按钮移动到 “打开”,然后单击“ 保存 ”(页面顶部)以应用设置。 加密状态将近似于透明数据加密的进度。

    SQLDB_TDE_TermsNewUI

    还可以通过使用 SQL Server Management Studio 等查询工具(如具有 VIEW DATABASE STATE 权限的数据库用户)连接到 SQL 数据库来监视加密进度。 查询encryption_statesys.dm_database_encryption_keys视图的列。

使用 Transact-SQL 在 SQL 数据库上启用 TDE

以下步骤假设你已注册预览版。

  1. 使用作为 master 数据库中 dbmanager 角色的管理员或成员的登录名连接到数据库。

  2. 执行以下语句以创建数据库加密密钥并加密数据库。

    -- 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
    
  3. 若要监视 SQL 数据库的加密进度,具有 VIEW DATABASE STATE 权限的数据库用户可以查询encryption_statesys.dm_database_encryption_keys视图的列。

使用 PowerShell 在 SQL 数据库上启用 TDE

使用 Azure PowerShell 可以运行以下命令以打开/关闭 TDE。 运行命令之前,必须将帐户连接到 PS 窗口。 以下步骤假设你已注册预览版。 有关 PowerShell 的其他信息,请参阅 如何安装和配置 Azure PowerShell

  1. 若要启用 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"
    
  2. 若要禁用 TDE:

    Set-AzureSqlDatabaseTransparentDataEncryption -ServerName "myserver" -ResourceGroupName "Default-SQL-WestUS" -DatabaseName "database1" -State "Disabled"
    Switch-AzureMode -Name AzureServiceManagement
    

解密 SQL 数据库上的 TDE 保护的数据库

使用 Azure 门户禁用 TDE

  1. 访问 Azure 门户, https://portal.azure.com 并使用 Azure 管理员或参与者帐户登录。

  2. 在左侧横幅上,单击“ 浏览”,然后单击“ SQL 数据库”。

  3. 在左窗格中选择 SQL 数据库 后,单击用户数据库。

  4. 在数据库边栏选项卡中,单击“ 所有设置”。

  5. “设置” 边栏选项卡中,单击 “透明数据加密”(预览) 部分以打开 “透明数据加密预览 ”边栏选项卡。

  6. “透明数据加密预览” 边栏选项卡中,将 “数据加密 ”按钮移动到 “关闭”,然后单击“ 保存 ”(页面顶部)应用设置。 加密状态将近似于透明数据解密的进度。

    您也可以使用查询工具(如 Management Studio),以数据库用户身份连接到 SQL 数据库并具备 VIEW DATABASE STATE 权限,来监视解密进度。 查询sys.dm_database_encryption_keys视图的某个encryption_state列。

使用 Transact-SQL 禁用 TDE

  1. 请使用作为 master 数据库中 dbmanager 角色的管理员或成员的登录名来连接到数据库。

  2. 执行以下语句来解密数据库。

    -- Enable encryption
    ALTER DATABASE [AdventureWorks] SET ENCRYPTION OFF;
    GO
    
  3. 若要监视 SQL 数据库的加密进度,具有 VIEW DATABASE STATE 权限的数据库用户可以查询encryption_statesys.dm_database_encryption_keys视图的列。

在 SQL 数据库上使用受 TDE 保护的数据库

无需解密数据库即可在 Azure 中执行作。 源数据库或主数据库上 TDE 的设置均以透明方式继承在目标系统上。 这包括涉及以下操作:

  • 地域恢复

  • Self-Service 时间点还原

  • 还原已删除的数据库

  • 主动Geo_Replication

  • 创建数据库副本

在使用 .Bacpac 文件时移动受 TDE 保护的数据库。

在 Azure SQL 数据库门户或 SQL Server 导入和导出向导中使用导出数据库函数导出受 TDE 保护的数据库时,不会加密数据库的内容。 内容存储在未加密的 .bacpac 文件中。 确保正确保护 .bacpac 文件,并在完成新数据库的导入后启用 TDE。

使用 EKM 启用 TDE

另请参阅

透明数据加密(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)