你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

如何安全地将 Azure 机器学习与 Azure Synapse 集成

本文将介绍如何从 Azure Synapse 安全地与 Azure 机器学习集成。 通过这种集成,你可以通过 Azure Synapse 工作区中的笔记本使用 Azure 机器学习。 使用 Azure 虚拟网络保护这两个工作区之间的通信。

先决条件

  • Azure 订阅。

  • Azure 机器学习工作区与虚拟网络建立专用终结点连接。 以下工作区依赖项服务还必须与虚拟网络建立专用终结点连接:

    • Azure 存储帐户

      提示

      存储帐户有三个单独的专用终结点:blob、文件和 dfs 各一个。

    • Azure Key Vault

    • Azure 容器注册表

    生成此配置的一个快速而简单的方法是使用 Microsoft Bicep 或 HashiCorp Terraform 模板

  • 在托管虚拟网络中使用托管专用终结点的 Azure Synapse 工作区。 有关详细信息,请参阅 Azure Synapse Analytics 托管虚拟网络

    警告

    具有数据外泄保护的 Synapse 工作区当前不支持 Azure 机器学习集成。 配置 Azure Synapse 工作区时,请勿启用数据外泄保护。 有关详细信息,请参阅 Azure Synapse Analytics 托管虚拟网络

    备注

    本文中的步骤基于以下假设:

    • Azure Synapse 工作区与 Azure 机器学习工作区位于不同的资源组中。
    • Azure Synapse 工作区使用 托管虚拟网络。 托管虚拟网络保护 Azure Synapse 与 Azure 机器学习之间的连接安全。 它不限制对 Azure Synapse 工作区的访问。 你将通过公共 Internet 访问工作区。

了解网络通信

在此配置中,Azure Synapse 使用托管专用终结点和虚拟网络。 托管虚拟网络和专用终结点通过限制到虚拟网络的网络流量来保护从 Azure Synapse 到 Azure 机器学习的内部通信。 它不会限制客户端与 Azure Synapse 工作区之间的通信。

Azure 机器学习不提供托管的专用终结点或虚拟网络,而是使用用户托管的专用终结点和虚拟网络。 在此配置中,内部和客户端/服务通信均限制为虚拟网络。 例如,如果想要从虚拟网络外部直接访问 Azure 机器学习工作室,请使用以下选项之一:

  • 在虚拟网络中创建 Azure 虚拟机,并使用 Azure Bastion 连接它。 然后从 VM 连接到 Azure 机器学习。
  • 创建 VPN 网关或使用 ExpressRoute 将客户端连接到虚拟网络。

由于 Azure Synapse 工作区可公开访问,因此你无需创建 VPN 网关等功能即可连接到它。 Synapse 工作区通过虚拟网络安全连接到 Azure 机器学习。 Azure 机器学习及其资源在虚拟网络中会受到保护。

添加数据源时,还可以在虚拟网络后面保护它们。 例如,通过虚拟网络安全连接到 Azure 存储帐户或 Data Lake Store Gen 2。

有关详细信息,请参阅以下文章:

配置 Azure Synapse

重要

在执行这些步骤之前,需要一个配置为使用托管虚拟网络的 Azure Synapse 工作区。 有关详细信息,请参阅 Azure Synapse Analytics 托管虚拟网络

  1. 从 Azure Synapse Studio 创建新的 Azure 机器学习链接服务

  2. 创建并发布链接服务后,在 Azure Synapse Studio 中,依次选择“管理”、“托管专用终结点”和“+ 新建”。

    Screenshot of the managed private endpoints dialog.

  3. 在“新建托管专用终结点”页上,搜索“Azure 机器学习”,然后选择该磁贴。

    Screenshot of selecting Azure Machine Learning.

  4. 当系统提示你选择 Azure 机器学习工作区时,请使用之前添加的“Azure 订阅”和“Azure 机器学习工作区”作为链接服务。 选择“创建”以创建终结点。

    Screenshot of the new private endpoint dialog.

  5. 在创建终结点之前,该终结点将作为“预配”列出。 创建终结点后,“审批”列将列出“挂起”状态。 你将在配置 Azure 机器学习部分批准此终结点。

    备注

    在下面的屏幕截图中,已为与此 Synapse 工作区关联的 Azure Data Lake Storage Gen 2 创建了托管专用终结点。 有关如何创建 Azure Data Lake Storage Gen 2 并为其启用专用终结点的信息,请参阅使用托管 VNet 预配和保护链接服务

    Screenshot of the managed private endpoints list.

创建 Spark 池

为验证 Azure Synapse 与 Azure 机器学习之间的集成是否正常,你将使用 Apache Spark 池。 有关创建 Spark 池的信息,请参阅创建 Spark 池

配置 Azure 机器学习

  1. Azure 门户,选择你的 Azure 机器学习工作区,然后选择“网络”。

  2. 选择“专用终结点”,然后选择在前面步骤中创建的终结点。 它的状态应为“挂起”。 选择“批准”以批准终结点连接。

    Screenshot of the private endpoint approval.

  3. 在页面左侧,选择“访问控制(IAM)”。 选择“+ 添加”,然后选择“角色分配”。

    Screenshot of the role assignment.

  4. 依次选择“特权管理员角色”、“参与者”、“下一步”

    Screenshot of selecting contributor.

  5. 选择“用户、组或服务主体”,然后选择“+ 选择成员”。 输入先前创建的标识的名称,选择它,然后使用“选择”按钮。

    Screenshot of assigning the role.

  6. 选择“查看 + 分配”,验证此信息,然后选择“查看 + 分配”按钮。

    提示

    Azure 机器学习工作区可能需要几分钟时间来更新凭据缓存。 在更新凭据缓存之前,在尝试从 Synapse 访问 Azure 机器学习工作区时,你可能会收到错误。

验证连接性

  1. 在 Azure Synapse Studio 中,选择“开发”,然后选择“+ Notebook”。

    Screenshot of adding a notebook.

  2. 在“附加到”字段中,选择 Azure Synapse 工作区的 Apache Spark 池,并在第一个单元格中输入以下代码:

    from notebookutils.mssparkutils import azureML
    
    # getWorkspace() takes the linked service name,
    # not the Azure Machine Learning workspace name.
    ws = azureML.getWorkspace("AzureMLService1")
    
    print(ws.name)
    

    重要

    此代码片段使用 SDK v1 连接到链接的工作区,然后打印工作区信息。 在打印输出中,显示的值是 Azure 机器学习工作区的名称,不是在 getWorkspace() 调用中使用的链接服务名称。 有关使用 ws 对象的详细信息,请参阅 Workspace 类引用。

后续步骤