借助 Azure SQL 数据库实现透明数据加密

Azure SQL 数据库透明数据加密 (预览版) 无需更改应用程序即可对数据库、关联的备份和事务日志文件执行实时加密和解密,从而帮助防范恶意活动的威胁。

TDE 使用称为数据库加密密钥的对称密钥来加密整个数据库的存储。 在 SQL 数据库中,数据库加密密钥由内置服务器证书保护。 内置服务器证书对每个 SQL 数据库服务器都是唯一的。 如果数据库是 GeoDR 关系,则将它受每个服务器上不同的密钥保护。 如果 2 个数据库连接到同一台服务器,则它们共享相同的内置证书。 Microsoft 至少每 90 天自动轮换这些证书。 有关 TDE 的一般说明,请参阅透明数据加密 (TDE)

Azure SQL数据库不支持 Azure 密钥保管库与 TDE 集成。 在 Azure 虚拟机上运行SQL Server可以使用密钥保管库中的非对称密钥。 有关详细信息,请参阅 Example A: Transparent Data Encryption by Using an Asymmetric Key from the Key Vault

适用于:) 某些区域的 SQL 数据库 V12 (预览版

重要

目前这是预览功能。 我确认并同意,在我的数据库 () 中实现SQL 数据库透明数据加密受许可协议 (预览条款的约束,例如企业协议、Microsoft Azure 协议或 Microsoft Online 订阅协议) ,以及任何适用的 Microsoft Azure 预览版补充使用条款

即使SQL 数据库的版本系列 V12 现已处于正式发布状态,TDE 的状态预览也适用。 在 Microsoft 宣布 TDE 从预览版升级到正式版之前,tDE for SQL 数据库 不适用于生产数据库。 有关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. 阅读预览条款,如果同意条款,请选择“透明数据加密预览条款检查”框,然后单击页面底部附近的“确定”。 返回到“ 数据加密”“预览” 边栏选项卡,此时应启用 “数据加密 ”按钮。

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

    SQLDB_TDE_TermsNewUI

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

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

以下步骤中,假定你已注册预览。

  1. 使用管理员或主数据库中 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)作为具有 VIEW DATABASE STATE 权限的数据库用户连接到SQL 数据库来监视解密的进度。 encryption_state查询sys.dm_database_encryption_keys视图的列。

通过使用 Transact-SQL 禁用 TDE

  1. 使用管理员或主数据库中 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 的设置均以透明方式继承在目标系统上。 这包括涉及以下内容的操作:

  • 地域恢复

  • 自服务时点还原

  • 还原已删除数据库

  • 活动地域复制

  • 创建数据库副本

使用 .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 选项 (Transact-SQL)