教程:如何使用模板创建安全工作区

模板提供了一种简便方法来创建可重现服务部署。 模板将定义要创建的内容,以及你在使用模板时需提供的一些信息。 例如,你可以为 Azure 机器学习工作区指定一个唯一名称。

本教程介绍如何使用 Microsoft BicepHashicorp Terraform 模板创建 Azure 虚拟网络并在该网络下保护以下 Azure 资源。

  • Azure 机器学习工作区
    • Azure 机器学习计算实例
    • Azure 机器学习计算群集
  • Azure 存储帐户
  • Azure Key Vault
  • Azure Application Insights
  • Azure 容器注册表
  • Azure Bastion 主机
  • Azure 机器学习数据科学虚拟机 (DSVM)

Bicep 模板还会创建 Azure Kubernetes 服务 (AKS) 群集以及一个单独针对该 AKS 群集的资源组。

提示

可以使用 Azure 机器学习托管虚拟网络,而不是执行本文中的步骤。 使用托管虚拟网络,Azure 机器学习可处理工作区和托管计算的网络隔离作业。 还可以为工作区所需的资源(例如 Azure 存储帐户)添加专用终结点。 有关详细信息,请参阅工作区托管网络隔离

若要查看 Bicep 或 Terraform 信息,请选择以下部分中的“Bicep”或“Terraform”选项卡。

先决条件

  • Azure 订阅提供 Azure 机器学习的免费版或付费版。 如果没有 Azure 订阅,可在开始前创建一个试用帐户

  • 在开发环境中安装的 Git,用于克隆模板存储库。 如果没有 git 命令,可以从 https://git-scm.com/ 安装 Git。

  • Azure CLI 或 Azure PowerShell 命令行。

  • 根据设置 Bicep 开发和部署环境中的说明安装的 Azure CLI 或 Azure PowerShell Bicep 命令行工具。

  • 包含 Bicep 模板“Azure 机器学习端到端安全设置”的 GitHub 存储库,你可通过运行以下命令在本地克隆并切换到该模板:

    git clone https://github.com/Azure/azure-quickstart-templates
    cd azure-quickstart-templates/quickstarts/microsoft.machinelearningservices/machine-learning-end-to-end-secure
    

了解模板

Bicep 模板由 modules 子目录中的 main.bicep 和其他 *.bicep 文件组成。 下表描述了每个文件负责的内容:

文件 说明
main.bicep 将参数和变量传递给 modules 子目录中的其他模块。
vnet.bicep 定义 Azure 虚拟网络和子网。
nsg.bicep 定义虚拟网络的网络安全组规则。
bastion.bicep 定义 Azure Bastion 主机和子网。 借助 Azure Bastion,你可以使用 Web 浏览器轻松访问虚拟网络中的虚拟机 (VM)。
dsvmjumpbox.bicep 定义 DSVM。 Azure Bastion 用于通过 Web 浏览器访问此 VM。
storage.bicep 定义工作区用于默认存储的 Azure 存储帐户。
keyvault.bicep 定义工作区使用的 Azure Key Vault。
containerregistry.bicep 定义工作区使用的 Azure 容器注册表。
applicationinsights.bicep 定义工作区使用的 Azure Application Insights 实例。
machinelearningnetworking.bicep 定义工作区的专用终结点和域名系统 (DNS) 区域。
machinelearning.bicep 定义 Azure 机器学习工作区。
machinelearningcompute.bicep 定义 Azure 机器学习计算群集和计算实例。
privateaks.bicep 定义 AKS 群集实例。

重要

每项 Azure 服务都有自己的 API 版本集。 示例模板可能不会使用 Azure 机器学习和其他资源的最新 API 版本。 使用模板之前,应将其修改为使用最新的 API 版本。

有关特定服务的 API 的信息,请查看 Azure REST API 参考中的服务信息。 有关最新 Azure 机器学习 API 版本的信息,请参阅 Azure 机器学习 REST API

若要更新 API 版本,请查找资源类型的 Microsoft.MachineLearningServices/<resource> 条目,并将其更新为最新版本。

重要

DSVM 和 Azure Bastion 是连接到本教程中的安全工作区的简单方法。 在生产环境中,最好使用 Azure VPN 网关Azure ExpressRoute 直接从本地网络访问虚拟网络中的资源。

配置模板

若要部署 Bicep 模板,请确保位于 main.bicep 文件所在的 machine-learning-end-end-secure 目录中,并运行以下命令:

  1. 若要创建新的 Azure 资源组,请运行以下示例命令,但要将 <myrgname> 替换为资源组名称,将 <location> 替换为要使用的 Azure 区域。

    • Azure CLI:

      az group create --name <myrgname> --location <location>
      
    • Azure PowerShell:

      New-AzResourceGroup -Name <myrgname> -Location <location>
      
  2. 若要部署模板,请使用以下命令,但要将 <myrgname> 替换为创建的资源组的名称,将 <pref> 替换为要在创建所需资源时使用的唯一前缀。 将 <mydsvmpassword> 替换为 DSVM 跳转框登录帐户的安全密码,在以下示例中该密码为 azureadmin

    提示

    prefix 必须包含不超过 5 个字符,其中不能全是数字也不能包含字符 ~!@#$%^&*()=+_[]{}\|;:.'",<>/?

    • Azure CLI:

      az deployment group create \
          --resource-group <myrgname> \
          --template-file main.bicep \
          --parameters \
          prefix=<pref> \
          dsvmJumpboxUsername=azureadmin \
          dsvmJumpboxPassword=<mydsvmpassword>
      
    • Azure PowerShell:

      $dsvmPassword = ConvertTo-SecureString "<mydsvmpassword>" -AsPlainText -Force
      New-AzResourceGroupDeployment -ResourceGroupName <myrgname> `
          -TemplateFile ./main.bicep `
          -prefix "<pref>" `
          -dsvmJumpboxUsername "azureadmin" `
          -dsvmJumpboxPassword $dsvmPassword
      

      警告

      应避免在脚本或命令行中使用纯文本字符串。 纯文本可以显示在事件日志和命令历史记录中。 有关详细信息,请参阅 ConvertTo-SecureString

重要

DSVM 和任何计算资源都将按其运行的小时数计费。 为了避免产生额外的费用,应在不使用这些资源时使其停止运行。 有关详细信息,请参阅以下文章:

连接到工作区

部署完成后,请使用以下步骤连接到 DSVM:

  1. Azure 门户中,选择与模板一起使用的 Azure 资源组。 然后选择模板创建的 DSVM。 如果在查找时遇到问题,请使用筛选器部分来筛选虚拟机的类型。

    筛选和选择 VM 的屏幕截图。

  2. 在 DSVM“概述”页面中,选择“连接”,然后从下拉列表中选择“通过 Bastion 进行连接”。

    选择使用 Bastion 进行连接的屏幕截图。

  3. 看到提示后,提供配置模板时指定的用户名和 VM 密码,然后选择“连接”

    重要

    首次连接到 DSVM 桌面时,系统会打开一个 PowerShell 窗口并运行脚本。 请等待该脚本执行完成,然后再继续执行下一步。

  4. 从 DSVM 桌面启动 Microsoft Edge,并输入 https://studio.ml.azure.cn 作为地址。 登录到 Azure 订阅,然后选择模板创建的工作区。 此时会显示工作区的工作室。

故障排除

当 DSVM 跳转框的名称超过 15 个字符或包含以下字符之一时,可能会出现以下错误:~!@#$%^&*()=+_[]{}\|;:.'",<>/?

错误: Windows 计算机名称的长度不能超过 15 个字符,并且不能全为数字或包含以下字符: ~ ! @ # $ % ^ & * ( ) = + _ [ ] { } \ | ; : . ' " , <> / ?.

Bicep 模板将使用提供给模板的前缀值以编程方式生成跳转框名称。 若要确保名称不超过 15 个字符,并且不包含任何无效字符,请使用不超过 5 个字符的前缀,并且不使用字符 ~!@#$%^&*()=+_[]{}\|;:.'",<>/?

若要继续初步了解 Azure 机器学习,请参阅快速入门:Azure 机器学习入门

若要详细了解常见的安全工作区配置和输入/输出要求,请参阅 Azure 机器学习安全工作区流量流