你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
Tip
Microsoft Fabric Data Warehouse是数据湖基础上的企业规模关系仓库,具有未来就绪的体系结构、内置 AI 和新功能。 如果不熟悉数据仓库,请从Fabric Data Warehouse开始。 现有的指定 SQL 池工作负荷可以升级到 Fabric,以跨数据科学、实时分析和报告访问新功能。
适用于:Azure Synapse Analytics 专用 SQL 池(以前称为 SQL DW)
透明数据加密(TDE)通过加密数据库文件、事务日志文件和处于静态状态的备份,保护专用的SQL池免受恶意离线活动。 加密和解密是实时进行的,不需要应用的更改。
您必须手动启用 Azure Synapse Analytics 独立专用 SQL 池的 TDE。
TDE 对页面级数据执行实时 I/O 加密和解密。 将每个页面读入内存时会将其解密,在写入磁盘之前会将其加密。 TDE 使用称为数据库加密密钥 (DEK) 的对称密钥加密整个数据库的存储。 在数据库启动时,已加密的 DEK 被解密,然后用于解密和重新加密 SQL Server 数据库引擎进程中的数据库文件。 TDE保护器保护DEK。 TDE 保护程序可以是服务管理的证书(服务管理的透明数据加密)。
对于 Azure Synapse,你在服务器层设置 TDE 保护器,所有与该服务器关联的数据库都会继承它。
注意
本文介绍了托管在 逻辑服务器上的独立专用SQL池(前称SQL DW)。 关于Synapse工作空间中的专用SQL池,请参见Azure Synapse Analytics工作空间的加密。
TDE的工作原理
TDE通过使用对称数据库加密密钥(DEK)来加密数据库页面。 DEK存储在数据库启动记录中,TDE保护器保护它。 该保护程序是服务管理的证书。
你在逻辑服务器上配置TDE保护器,该服务器上的专用SQL池会继承它。 每页在读取到内存时都会被解密,并在写入存储前进行加密。
服务管理的 TDE
在 Azure 中,TDE 的默认设置是 DEK 受内置服务器证书保护。 内置服务器证书对于每个服务器都是唯一的,使用的加密算法是 AES 256 在密码块链(CBC)模式下。 如果某个数据库存在异地复制关系,则主数据库和异地辅助数据库将受主数据库的父服务器密钥保护。 如果两个数据库连接到同一个服务器,则它们也共享相同的内置证书。 Microsoft 根据内部安全策略每年自动轮换这些证书一次,根密钥由 Microsoft 内部机密存储保护。 客户可以在 Microsoft 信任中心提供的独立第三方审核报告中验证 SQL 数据库和 SQL 托管实例是否符合内部安全策略。 Microsoft 还可按需无缝移动和管理密钥,以实现异地复制和还原。
客户管理的 TDE
在客户管理的TDE中,保护器是一个非对称密钥,你在Azure 密钥保管库或Azure 密钥保管库 Managed HSM中控制它。 你可以控制密钥创建、访问权限、轮换、备份和删除。 密钥不会离开密钥库。
撤销逻辑服务器对密钥的访问会使加密专用的SQL池无法访问。 通过软删除、清除保护、监控和最小权限访问来保护密钥存储。
Azure Synapse 需要被授予对客户拥有的密钥保管库的访问权限,才能解密和加密 DEK。 如果撤销了服务器对该密钥保管库的权限,则数据库将无法访问,并且所有数据都是加密的。
关于需求和建议,请参见 Azure Synapse Analytics 的客户管理 TDE 。
移动一个受透明数据加密保护的数据库
对于 Azure 中的操作,不需要解密数据库。 源数据库或主数据库上 TDE 的设置均以透明方式继承在目标系统上。 包括的操作涉及到:
- 异地还原
- 自助时间点还原
- 还原已删除的数据库
- 主动异地复制
- 创建数据库副本
将受 TDE 保护的数据库导出到 BACPAC 文件时,不会加密数据库的导出内容。 如果导入现有空数据库,加密取决于是否在该数据库上启用了 TDE。
管理透明数据加密
Azure 门户
要启用或禁用TDE,请在Azure门户中打开专用SQL池,选择透明数据加密,并保存所需的状态。 要配置客户管理的保护器,请在逻辑服务器上打开透明数据加密,并从 Azure 密钥保管库 中选择密钥。 在用户数据库下查找 TDE 设置。 默认情况下,使用服务器级别加密密钥。 将为包含数据库的服务器自动生成 TDE 证书。
PowerShell
使用 PowerShell 管理 TDE。
Important
Az 模块替换 AzureRM。 所有未来的开发都针对模块 Az.Sql。
若要通过 PowerShell 配置 TDE,用户必须作为 Azure 所有者、参与者或 SQL 安全管理员进行连接。
请使用以下 Az.Sql cmdlets:
| Cmdlet | Purpose |
|---|---|
| Set-AzSqlDatabaseTransparentDataEncryption | 启用或禁用专用 SQL 池的 TDE。 |
| Get-AzSqlDatabaseTransparentDataEncryption | 获取当前的TDE状态。 |
| Add-AzSqlServerKeyVaultKey | 给逻辑服务器添加一个键。 |
| Get-AzSqlServerKeyVaultKey | 列出逻辑服务器可用的键。 |
| Set-AzSqlServerTransparentDataEncryptionProtector | 设置服务器的TDE保护器。 |
| Get-AzSqlServerTransparentDataEncryptionProtector | 获取当前的 TDE 保护程序。 |
| Remove-AzSqlServerKeyVaultKey | 从逻辑服务器中移除一个键。 |
Transact-SQL
使用 Transact-SQL 管理 TDE。
使用管理员或 dbmanager 角色成员的登录名连接到 master 数据库。
| 命令 | Description |
|---|---|
| ALTER DATABASE (Azure SQL 数据库) |
SET ENCRYPTION ON/OFF 加密或解密数据库 |
| sys.dm_database_encryption_keys | 返回有关数据库的加密状态及其关联的数据库加密密钥的信息 |
| sys.dm_pdw_nodes_database_encryption_keys(系统.dm_pdw节点数据库加密密钥) | 返回有关每个 Azure Synapse 节点的加密状态及其关联的数据库加密密钥的信息 |
不能使用 Transact-SQL 将 TDE 保护程序从 Azure 密钥保管库 切换到密钥。 请使用 PowerShell 或 Azure 门户。
REST API
以下SQL管理资源适用于逻辑服务器和专用SQL池。
若要通过 REST API 配置 TDE,必须以 Azure 所有者、参与者或 SQL 安全管理员的身份建立连接。
对于 Azure Synapse Analytics 独立专用 SQL 池,请使用以下一组命令:
| 命令 | Description |
|---|---|
| 创建或更新服务器 | 将 Microsoft Entra ID(以前称为 Azure Active Directory)中的标识添加到服务器中。 (用于授予对 Azure 密钥保管库 的访问权限) |
| 创建或更新服务器密钥 | 将 Azure 密钥保管库 密钥添加到服务器。 |
| 删除服务器密钥 | 从服务器中删除 Azure 密钥保管库 密钥。 |
| 获取服务器密钥 | 从服务器获取特定的 Azure 密钥保管库 密钥。 |
| 按服务器列出服务器密钥 | 获取服务器的 Azure 密钥保管库 密钥。 |
| 创建或更新加密保护器 | 为服务器设置 TDE 保护器。 |
| 获取加密保护器 | 获取服务器的 TDE 保护器。 |
| 按服务器列出加密保护器 | 获取服务器的 TDE 保护器。 |
| 创建或更新透明数据加密配置 | 启用或禁用数据库的 TDE。 |
| 获取透明数据加密配置 | 获取数据库的 TDE 配置。 |
| 列出透明数据加密配置结果 | 获取数据库的加密结果。 |