Azure Synapse Analytics 工作区的加密

本文介绍:

  • Synapse Analytics 工作区中静态数据的加密。
  • 配置 Synapse 工作区以便启用使用客户管理的密钥进行加密。
  • 管理用于对工作区中的数据进行加密的密钥。

静态数据加密

完整的静态加密解决方案可确保数据从不以未加密形式持久保存。 对静态数据进行双重加密可以减轻威胁,这种加密采用两个独立的加密层,防止任何一个加密层遭受威胁。 Azure Synapse Analytics 使用客户管理的密钥为工作区中的数据提供了另一层加密。 此密钥在 Azure Key Vault 中受到保护,这样你就能掌握密钥的管理和轮换。

Azure 服务的第一层加密是通过平台管理的密钥实现的。 默认情况下,Azure 存储帐户中的 Azure 磁盘和数据会自动完成静态加密。 请参阅 Azure 加密概述,了解加密在 Microsoft Azure 中的运用方式。

注意

有些被视为客户内容的项(例如,表名、对象名称和索引名称)可能会在日志文件中传输,以供 Azure 提供支持和排查问题。

Azure Synapse 加密

本部分将帮助你更好地了解如何在 Synapse 工作区中启用并强制实施客户管理的密钥加密。 此加密使用 Azure Key Vault 中生成的现有密钥或新密钥。 使用单个密钥对工作区中的所有数据进行加密。 Synapse 工作区支持具有 2048 和 3072 字节大小的 RSA 密钥。

注意

Synapse 工作区不支持使用 EC 密钥进行加密。

以下 Synapse 组件中的数据是通过在工作区级别配置的客户管理的密钥加密的:

  • SQL 池
    • 专用 SQL 池
    • 无服务器 SQL 池
  • Apache Spark 池
  • Azure 数据工厂集成运行时、管道、数据集。

工作区加密配置

可将工作区配置为在创建工作区时启用使用客户管理的密钥的双重加密。 创建新工作区时,请在“安全性”选项卡上启用使用客户管理的密钥进行双重加密的功能。 你可以选择输入密钥标识符 URI,或从工作区所在的区域中的密钥保管库列表中进行选择。 Key Vault 本身需要启用清除保护。

重要

创建工作区后,无法更改双重加密的配置设置。

此示意图展示的是要为工作区启用使用客户管理的密钥进行双重加密所必须选择的选项。

密钥访问和工作区激活

在使用客户管理的密钥的 Azure Synapse 加密模型中,工作区会根据需要访问 Azure Key Vault 中的密钥以完成加密和解密。 要让工作区能访问这些密钥,可以采用访问策略或 Azure Key Vault RBAC。 通过 Azure Key Vault 访问策略授予权限时,请在创建策略时选择“仅限应用程序”选项(选择工作区的托管标识,且不要将其添加为已授权的应用程序)。

在激活工作区之前,必须向工作区托管标识授予访问密钥保管库所需的权限。 这种分阶段的工作区激活方法可以确保工作区中的数据是通过客户管理的密钥进行加密的。 可以为单个专用 SQL 池启用或禁用加密。 默认情况下,每个专用池均未启用加密。

使用用户分配的托管标识

工作区可配置为使用用户分配的托管标识访问存储在 Azure Key Vault 中的客户管理的密钥。 请配置用户分配的托管标识,以避免在使用通过客户管理的密钥进行的双重加密时分阶段激活 Azure Synapse 工作区。 若要将用户分配的托管标识分配给 Azure Synapse 工作区,则需要“托管标识参与者”内置角色。

注意

当 Azure Key Vault 位于防火墙后面时,无法将用户分配的托管标识配置为访问客户管理的密钥。

此图显示了为了使工作区能够将用户分配的托管标识用于通过客户管理的密钥进行的双重加密而必须选择的选项。

权限

若要加密或解密静态数据,托管标识必须具有以下权限。 同样,如果使用资源管理器模板创建新密钥,则模板的“keyOps”参数必须具有以下权限:

  • 包装密钥(用于在新建密钥时将密钥插入 Key Vault)。
  • 解包密钥(用于获取解密所需的密钥)。
  • 获取(用于读取密钥的公共部分)

工作区激活

如果在创建工作区期间未将用户分配的托管标识配置为访问客户管理的密钥,则工作区会保持“挂起”状态,直到激活成功为止。 必须先激活工作区,然后才能使用完整的功能。 例如,激活成功后,只能创建新的专用 SQL 池。 向工作区托管标识授予对密钥保管库的访问权限,并选择工作区 Azure 门户横幅中的激活链接。 激活成功完成后,工作区便可供使用并保证其中的所有数据都使用客户管理的密钥进行保护。 如前文所述,密钥保管库必须启用清除保护才能激活成功。

此示意图展示的是带有工作区激活链接的横幅。

管理工作区客户管理的密钥

你可以在 Azure 门户的“加密”页中更改用于加密数据的客户管理的密钥。 你还可以在此处使用密钥标识符来选择新密钥,或者从工作区所在的区域里自己有权访问的密钥保管库中进行选择。 如果没有从之前使用的那些密钥保管库中选择密钥,请授予工作区托管标识对新的密钥保管库中的密钥进行“获取”、“包装”和“解包”操作的权限。 工作区将验证其对新密钥保管库的访问权限,并使用新密钥重新加密工作区中的所有数据。

此示意图展示的是 Azure 门户中的工作区加密部分。

重要

更改工作区的加密密钥时,请保留旧密钥,直到将其替换为新密钥。 这样,可在用新密钥重新加密数据之前使用旧密钥解密数据。 SQL 池的状态(联机/脱机)不会影响工作区的客户管理的密钥 (CMK) 的轮换过程。

  • 在 CMK 轮换期间脱机的 SQL 池将使用旧密钥或密钥版本保持加密状态。 如果旧密钥或密钥版本已禁用或过期,则池将无法恢复,因为无法进行解密。 在恢复这些池时,旧密钥或密钥版本必须 1) 已启用,并且 2) 具有设置在将来的到期日期,以便进行解密,然后再使用新密码或密钥版本进行重新加密。

  • 为了确保 CMK 轮换顺利,如果某些 SQL 池在此过程中处于脱机状态,旧密钥或密钥版本应保持启用状态,并且其到期日期设置在将来。 在成功恢复脱机池并使用新密钥或密钥版本重新加密之前,这样做至关重要。

  • 强烈建议不要删除旧密钥或密钥版本,因为可能仍然需要使用它们来解密备份。 另一方面,在使用新密钥或密钥版本重新加密所有 SQL 池后,请禁用旧密钥或密钥版本。 这可确保旧密钥或密钥版本仍可在必要时用于解密旧备份。

用于自动化、定期轮换密钥或对密钥执行操作的 Azure 密钥保管库策略可能会产生新的密钥版本。 你可以选择使用最新版本的有效密钥对工作区中的所有数据进行重新加密。 若要重新加密,请将 Azure 门户中的密钥更改为临时密钥,然后切换回要用于加密的密钥。 例如,若要使用最新版本的有效密钥 Key1 对数据加密进行更新,请将工作区客户管理的密钥更改为临时密钥 Key2。 等待直到使用 Key2 的加密操作完成。 然后将工作区客户管理的密钥切换回 Key1,系统将使用最新版本的 Key1 重新加密工作区中的数据。

注意

创建新密钥版本时,Azure Synapse Analytics 不会自动重新加密数据。 若要确保工作区的一致性,请使用上述过程强制对数据进行重新加密。

使用服务管理的密钥的 SQL 透明数据加密

SQL 透明数据加密 (TDE) 可用于工作区中未启用双重加密的专用 SQL 池。 在此类型的工作区中,服务管理的密钥用于为专用 SQL 池中的数据提供双重加密。 可以为单个专用 SQL 池启用或禁用使用服务管理的密钥的 TDE。

用于 Azure SQL 数据库和 Azure Synapse 的 Cmdlet

若要通过 PowerShell 配置 TDE,用户必须作为 Azure 所有者、参与者或 SQL 安全管理员进行连接。

将以下 cmdlet 用于 Azure Synapse 工作区。

Cmdlet 说明
Set-AzSynapseSqlPoolTransparentDataEncryption 为 SQL 池启用或禁用透明数据加密。
Get-AzSynapseSqlPoolTransparentDataEncryption 获取 SQL 池的透明数据加密状态。
New-AzSynapseWorkspaceKey 将 Key Vault 密钥添加到工作区。
Get-AzSynapseWorkspaceKey 获取工作区的 Key Vault 密钥
Update-AzSynapseWorkspace 为工作区设置透明数据加密保护器。
Get-AzSynapseWorkspace 获取透明数据加密保护器
Remove-AzSynapseWorkspaceKey 将 Key Vault 密钥从工作区移除。