Microsoft Fabric 中的 SQL 数据库中的数据加密

适用于:✅Microsoft Fabric 中的 SQL 数据库

重要

此功能目前为预览版

Microsoft Fabric 使用 Microsoft 管理的密钥对所有静态数据进行加密。 所有 SQL 数据库数据存储在远程 Azure 存储帐户中。 为了符合使用 Microsoft 托管密钥的静态加密要求,SQL 数据库使用的每个 Azure 存储帐户都配置了启用 服务端加密

使用由客户管理的密钥,您可以使用您自己的 Azure Key Vault 密钥为 Microsoft Fabric 工作区中的数据添加另一层保护,包括 Microsoft Fabric 中 SQL 数据库中的所有数据。 客户管理的密钥提供更大的灵活性,使你能够管理其轮换、控制访问和使用情况审核。 客户管理的密钥还有助于组织满足数据管理需求,并符合数据保护和加密标准。

  • 为 Microsoft Fabric 中的工作区配置客户管理的密钥时,将使用指定的客户管理的密钥为该工作区中的所有 SQL 数据库(以及)自动启用tempdb。 此过程是完全无缝的,无需手动干预。
    • 虽然加密过程对所有现有 SQL 数据库自动开始,但它不是即时的;持续时间取决于每个 SQL 数据库的大小,较大的 SQL 数据库需要更多时间才能完成加密。
    • 配置客户管理的密钥后,工作区中创建的任何 SQL 数据库也将使用客户管理的密钥进行加密。
  • 如果删除客户管理的密钥,则会为工作区中的所有 SQL 数据库触发解密过程。 与加密一样,解密也取决于 SQL 数据库的大小,可能需要一段时间才能完成。 解密后,SQL 数据库将还原为使用Microsoft管理的密钥进行加密。

透明数据加密在 Microsoft Fabric 中的 SQL 数据库中的工作原理

透明数据加密对数据库、关联的备份和事务日志文件执行实时加密和解密。

  • 此过程在页面级别发生,这意味着在读入内存并重新加密之前解密每一页,然后再写回磁盘。
  • 透明数据加密使用称为数据库加密密钥(DEK)的对称密钥保护整个数据库。
  • 数据库启动时,SQL Server 数据库引擎将解密加密的 DEK,并使用它来管理加密和解密作。
  • DEK 本身由透明数据加密保护器保护,它是客户管理的非对称密钥,特别是在工作区级别配置的客户管理密钥。

Microsoft Fabric 中 SQL 数据库的加密关系图。

备份和还原

使用客户管理的密钥加密 SQL 数据库后,任何新生成的备份也会使用相同的密钥进行加密。

更改密钥后,不会更新 SQL 数据库的旧备份以使用最新密钥。 若要还原使用客户管理的密钥加密的备份,请确保密钥材料在 Azure Key Vault 中可用。 因此,我们建议客户在 Azure Key Vault 中保留客户管理的密钥的所有旧版本,以便可以还原 SQL 数据库备份。

SQL 数据库还原过程将始终遵循客户管理的密钥工作区设置。 下表概述了基于客户管理的密钥设置以及备份是否已加密的各种还原方案。

备份为... 客户管理的密钥工作区设置 还原后加密状态
未加密 Disabled SQL 数据库未加密
未加密 已启用 SQL 数据库使用客户管理的密钥进行加密
使用客户管理的密钥进行加密 Disabled SQL 数据库未加密
使用客户管理的密钥进行加密 已启用 SQL 数据库使用客户管理的密钥进行加密
使用客户管理的密钥进行加密 启用但不同的客户管理密钥 SQL 数据库使用新的客户管理的密钥进行加密

验证客户管理的密钥是否成功

在工作区中启用客户管理的密钥加密后,将加密现有数据库。 启用客户管理的密钥时,工作区中的新数据库也将加密。 若要验证数据库是否已成功加密,请运行以下 T-SQL 查询:

SELECT DB_NAME(database_id) as DatabaseName, * 
FROM sys.dm_database_encryption_keys 
WHERE database_id <> 2;
  • 如果字段显示为 encryption_state_descENCRYPTEDASYMMETRIC_KEY..,则encryptor_type数据库将加密。
  • 如果状态为 ENCRYPTION_IN_PROGRESS,则 percent_complete 列将指示加密状态更改的进度。 如果正在进行状态更改,则 0 会出现这种情况。
  • 如果未加密,数据库将不会显示在查询结果 sys.dm_database_encryption_keys中。

对无法访问的客户管理的密钥进行故障排除

为 Microsoft Fabric 中的工作区配置客户管理的密钥时,SQL 数据库需要持续访问密钥才能保持联机状态。 如果 SQL 数据库无法访问 Azure Key Vault 中的密钥,则最多 10 分钟后,SQL 数据库将开始拒绝所有连接并将其状态更改为“不可访问”。 用户将收到相应的错误消息,例如“数据库 <database ID>.database.fabric.microsoft.com 由于 Azure Key Vault 严重错误而无法访问”。

  • 如果在 30 分钟内还原密钥访问,SQL 数据库将在下一小时内自动修复。
  • 如果在超过 30 分钟后恢复密钥访问,则无法自动恢复 SQL 数据库。 恢复 SQL 数据库需要额外的步骤,并且可能需要大量的时间,具体取决于 SQL 数据库的大小。

使用以下步骤重新验证客户管理的密钥:

  1. 在工作区中,右键单击 SQL 数据库或 ... 上下文菜单。 选择 “设置”。
  2. 选择“加密”(预览版)。
  3. 若要尝试重新验证客户管理的密钥,请选择 “重新验证客户管理的密钥 ”按钮。 如果重新验证成功,还原对 SQL 数据库的访问权限可能需要一些时间。

注释

重新验证一个 SQL 数据库的密钥时,会自动为工作区中的所有 SQL 数据库重新验证密钥。

局限性

在 Microsoft Fabric 中使用 SQL 数据库的客户管理的密钥时的当前限制:

  • Microsoft Fabric 中的 SQL 数据库不支持 4,096 位密钥。 支持的密钥长度为 2,048 位和 3,072 位。
  • 客户管理的密钥必须是 RSA 或 RSA-HSM 非对称密钥。
  • 目前,客户管理的密钥加密在以下区域中可用:
    • 美国:美国东部 2、美国中北部、美国中南部
    • 亚洲:澳大利亚东部、东南亚、阿联酋北部
    • 欧洲:北欧、西欧