使用客户管理的密钥加密 Azure 数据工厂

适用于: Azure 数据工厂 Azure Synapse Analytics

提示

试用 Microsoft Fabric 中的数据工厂,这是一种适用于企业的一站式分析解决方案。 Microsoft Fabric 涵盖从数据移动到数据科学、实时分析、商业智能和报告的所有内容。 了解如何免费开始新的试用

Azure 数据工厂对静态数据进行加密,其中包括实体定义和在运行期间缓存的所有数据。 默认情况下,使用随机生成并由 Microsoft 管理的密钥加密数据,该密钥只会分配到数据工厂。 为了获得额外的安全保证,现在可以通过 Azure 数据工厂客户管理的密钥功能启用“创建自己的密钥”(BYOK)。 指定客户管理的密钥时,数据工厂会使用工厂系统密钥和 CMK 加密客户数据。 缺少两者中的任何一个都会导致拒绝访问数据和工厂。

存储客户管理的密钥需要 Azure 密钥保管库。 可以创建自己的密钥并将其存储在密钥保管库中,也可以使用 Azure 密钥保管库 API 来生成密钥。 密钥保管库和数据工厂必须位于同一 Microsoft Entra 租户和同一区域,但可以位于不同订阅中。 有关 Azure 密钥保管库的详细信息,请参阅什么是 Azure 密钥保管库?

关于客户管理的密钥

下图显示了数据工厂如何借助 Microsoft Entra ID 和 Azure 密钥保管库使用客户管理的密钥发出请求:

Diagram showing how customer-managed keys work in Azure Data Factory.

下表说明了图中的编号步骤:

  1. Azure 密钥保管库管理员向与数据工厂关联的托管标识授予对加密密钥的权限
  2. 数据工厂管理员在工厂中启用客户管理的密钥功能
  3. 数据工厂使用与工厂关联的托管标识通过 Microsoft Entra ID 来验证对 Azure 密钥保管库的访问
  4. 数据工厂在 Azure 密钥保管库中使用客户密钥包装工厂加密密钥
  5. 对于读/写操作,数据工厂会将请求发送到 Azure 密钥保管库,以便展开包帐户加密密钥,从而执行加密和解密操作

可通过两种方法将客户管理的密钥加密添加到数据工厂。 一种是在 Azure 门户中创建工厂期间,另一种是在数据工厂 UI 中创建工厂后。

先决条件 - 配置 Azure 密钥保管库并生成密钥

在 Azure 密钥保管库上启用“软删除”和“不清除”

要在数据工厂中使用客户管理的密钥,需要在密钥保管库上设置两个属性,即“软删除”和“不清除” 。 可以在新的或现有的密钥保管库上使用 PowerShell 或 Azure CLI 启用这些属性。 若要了解如何在现有的密钥保管库上启用这些属性,请参阅具有软删除和清除保护的 Azure Key Vault 恢复管理

如果通过 Azure 门户新建 Azure 密钥保管库,可通过如下方式启用“软删除”和“不清除” :

Screenshot showing how to enable Soft Delete and Purge Protection upon creation of Key Vault.

授予数据工厂对 Azure 密钥保管库的访问权限

请确保 Azure 密钥保管库和 Azure 数据工厂位于同一 Microsoft Entra 租户中,并且位于同一区域。 从 Azure Key Vault 访问控制,向数据工厂授予以下权限:获取、展开密钥和包装密钥 。 在数据工厂中启用客户管理的密钥需要这些权限。

在 Azure Key Vault 中生成或上传客户管理的密钥

你可以创建自己的密钥并将其存储在密钥保管库中。 或者,可以使用 Azure Key Vault API 来生成密钥。 数据工厂加密仅支持 RSA 密钥。 有关详细信息,请参阅关于密钥、机密和证书

Screenshot showing how to generate Customer-Managed Key.

启用客户管理的密钥

在数据工厂 UI 中创建工厂后

本部分逐步讲解创建工厂后在数据工厂 UI 中添加客户管理的密钥加密的过程。

注意

客户管理的密钥只能在空数据工厂上配置。 数据工厂不能包含链接服务、管道以及数据流等任何资源。 建议创建工厂后立即启用客户管理的密钥。

重要

此方法不适用于启用了托管虚拟网络的工厂。 如果要加密此类工厂,请考虑备选路由

  1. 请确保数据工厂的托管服务标识 (MSI) 对 Key Vault 具有获取、展开密钥和包装密钥权限 。

  2. 确保数据工厂为空。 数据工厂不能包含链接服务、管道以及数据流等任何资源。 目前,将客户管理的密钥部署到非空工厂将会导致错误。

  3. 若要在 Azure 门户中找到密钥 URI,请导航到 Azure 密钥保管库,然后选择“密钥”设置。 选择所需密钥,然后选择该密钥以查看其版本。 选择密钥版本以查看设置

  4. 复制密钥标识符字段的值,该字段提供了 URIScreenshot of getting key URI from Key Vault.

  5. 启动 Azure 数据工厂门户,然后使用左侧导航栏跳转到数据工厂管理门户

  6. 单击“客户管理的密钥”图标Screenshot how to enable Customer-managed Key in Data Factory UI.

  7. 输入之前复制的客户管理的密钥的 URI

  8. 单击“保存”,然后为数据工厂启用客户管理的密钥加密

在 Azure 门户中创建工厂期间

本部分逐步讲解如何在部署工厂期间在 Azure 门户中添加客户管理的密钥加密。

若要加密工厂,数据工厂需要首先从 Key Vault 中检索客户管理的密钥。 由于工厂部署仍在进行中,因此托管服务标识 (MSI) 尚无法通过 Key Vault 进行身份验证。 因此,若要使用此方法,客户需要将用户分配的托管标识 (UA-MI) 分配到数据工厂。 我们将假定已在 UA-MI 中定义的角色,并通过 Key Vault 进行身份验证。

若要了解有关用户分配的托管标识的详细信息,请参阅托管标识类型用户分配的托管标识的角色分配

  1. 请确保用户分配的托管标识 (UA-MI) 对 Key Vault 具有获取、展开密钥和包装密钥权限

  2. 在“高级”选项卡下,选中“使用客户托管密钥启用加密”复选框Screenshot of Advanced tab for data factory creation experience in Azure portal.

  3. 提供存储在 Key Vault 中的客户管理的密钥的 URL

  4. 选择适当的用户分配的托管标识以通过 Key Vault 进行身份验证

  5. 继续工厂部署

更新密钥版本

新建密钥版本时,请更新数据工厂以使用新版本。 遵循数据工厂 UI 部分中所述的类似步骤,其中包括:

  1. 通过 Azure 密钥保管库门户找到新密钥版本的 URI

  2. 导航到“客户管理的密钥”设置

  3. 替换并粘贴新密钥的 URI

  4. 单击“保存”,数据工厂将立即使用新密钥版本进行加密

使用其他密钥

若要更改用于数据工厂加密的密钥,必须手动更新数据工厂中的设置。 遵循数据工厂 UI 部分中所述的类似步骤,其中包括:

  1. 通过 Azure 密钥保管库门户找到新密钥的 URI

  2. 导航到“客户管理的密钥”设置

  3. 替换并粘贴新密钥的 URI

  4. 单击“保存”,数据工厂将立即使用新密钥进行加密

禁用客户管理的密钥

按照设计,启用客户管理的密钥功能之后,无法删除其他安全步骤。 我们将始终需要使用客户所提供的密钥来加密工厂和数据。

完成相关教程来了解如何在更多方案中使用数据工厂。