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

Microsoft Dev Box 部署指南

在本文中,你将了解规划和实现 Microsoft Dev Box 部署的过程、配置选项和注意事项。

部署 Microsoft Dev Box 需要组织中不同角色的参与。 每个角色都有特定的职责和要求。 在开始实现 Microsoft Dev Box 之前,请务必向不同角色收集所有要求,因为它们会影响 Microsoft Dev Box 中不同组件的配置设置。 在概述要求后,便可以完成在组织中推出 Dev Box 的部署步骤

组织角色和职责

Dev Box 服务在设计时考虑了 3 个组织角色:平台工程师、开发团队主管和开发人员。 根据组织的规模和结构,其中一些角色可能由同一人员或团队兼任。

在组织中部署 Microsoft Dev Box 的过程中,每个角色都有特定的责任:

  • 平台工程师:与 IT 管理员合作,为开发人员团队配置开发人员基础结构和工具。 这包括以下任务:

    • 配置 Microsoft Entra ID,从而为开发团队主管和开发人员启用标识和身份验证
    • 在组织的 Azure 订阅中创建和管理开发人员中心
    • 在开发人员中心内创建和管理网络连接、开发箱定义和计算库
    • 在开发人员中心内创建和管理项目
    • 在组织的 Azure 订阅中创建和配置其他 Azure 资源
    • 为开发箱配置 Microsoft Intune 设备配置,并向 Dev Box 用户分配许可证
    • 配置网络设置以启用对组织资源的安全访问和连接
    • 配置用于授权访问开发箱的安全设置
  • 开发团队主管:帮助创建和管理开发人员体验。 这包含以下任务:

    • 在项目中创建和管理开发箱池
    • 为平台工程师提供相关意见,以支持其在开发人员中心创建和管理开发箱定义
  • 开发人员:在所分配到的项目内自助负责一个或多个开发箱。

    • 在开发人员门户中基于项目开发箱池创建和管理开发箱
    • 使用远程桌面客户端(如 Windows App)连接到开发箱

显示 Dev Box 平台工程师、团队主管和开发人员的角色和职责的示意图。

定义 Microsoft Dev Box 要求

在组织中为 Microsoft Dev Box 部署做准备时,必须首先定义最终用户和 IT 治理要求。 例如,开发团队是否分散在不同地理位置,是否备有安全策略,是否在特定的计算资源上进行标准化等。

Microsoft Dev Box 为各个不同的组件提供了多种配置选项,以便你根据自己的特定需求优化部署。 根据这些要求,你可以微调组织的具体 Dev Box 部署计划和实现步骤。

例如,如果开发团队需要访问公司资源(例如中央数据库),则这会影响开发箱池的网络配置,并且可能需要额外的 Azure 网络组件。

下表列出了在配置 Dev Box 组件时可能会影响 Microsoft Dev Box 部署的要求和注意事项。

类别 要求 注意事项
开发团队建制 异地分布式团队。 开发箱池的网络连接所对应的 Azure 区域将决定开发箱的托管位置。 为了优化开发人员计算机与其开发箱之间的延迟,请在离开发箱用户所在位置最近的地方托管一个开发箱。 如果你有多个异地分布式团队,则可以创建多个网络连接和关联的开发箱池来适配每个区域。
具有不同团队主管和权限的多个项目。 在开发人员中心内,开发项目的权限在项目级别进行控制。 如果需要分别单独控制不同的开发团队,请考虑创建新项目。
开发箱配置 不同的团队对其开发箱有不同的软件要求。 创建一个或多个开发箱定义,以表示组织中不同的操作系统/软件/硬件要求。 开发箱定义将使用特定的 VM 映像,该映像可以根据具体用途生成。 例如,为数据科学家创建一个开发箱定义,该定义具有数据科学工具和 GPU 资源。 开发箱定义将在整个开发人员中心内共享。 在项目中创建开发箱池时,你可以从开发箱定义列表中进行选择。
多个计算/资源配置。 开发箱定义结合了 VM 映像和用于开发箱的计算资源。 请根据项目中的计算资源要求创建一个或多个开发箱定义。 在项目中创建开发箱池时,你可以从开发箱定义列表中进行选择。
开发人员可以自定义其开发箱。 对于基于开发人员的自定义(例如配置源代码管理存储库或开发人员工具设置),你可以启用开发箱自定义
在特定于组织的 VM 映像上进行标准化。 配置开发人员中心时,可以指定一个或多个包含特定于组织的 VM 映像的 Azure 计算库。 使用计算库,可以确保仅使用已批准的 VM 映像来创建开发箱。
标识和访问 使用 Microsoft Entra ID 实现的仅限云的用户管理。 用户管理解决方案会影响可用于创建开发箱池的网络选项。 使用 Microsoft Entra ID 时,可以在 Microsoft 托管网络和使用自己的网络之间进行选择。
用户使用 Active Directory 帐户登录。 如果在 Active Directory 域服务中管理用户,则需要使用 Microsoft Entra 混合加入来与 Microsoft Dev Box 集成。 因此,无法在创建开发箱池时使用“Microsoft 托管网络”选项,并且需要使用 Azure 网络来启用混合网络连接。
网络和连接 访问其他 Azure 资源。 如果你需要访问其他 Azure 资源,则需要设置 Azure 网络连接。 因此,无法在创建开发箱池时使用“Microsoft 托管网络”选项。
访问公司资源(混合连接)。 若要访问公司资源,你需要配置 Azure 网络连接,然后使用第三方 VPN、Azure VPN 或 Azure ExpressRoute 配置混合连接。 因此,无法在创建开发箱池时使用“Microsoft 托管网络”选项。
自定义路由。 如果你需要自定义路由,则需要设置 Azure 网络连接。 因此,无法在创建开发箱池时使用“Microsoft 托管网络”选项。
网络安全性 使用网络安全组 (NSG) 配置流量限制。 如果你需要网络安全组限制入站或出站流量时,则需要设置 Azure 网络连接。 因此,无法在创建开发箱池时使用“Microsoft 托管网络”选项。
使用防火墙。 若要使用防火墙或应用程序网关,则需要设置 Azure 网络连接。 因此,无法在创建开发箱池时使用“Microsoft 托管网络”选项。
设备管理 将对开发箱的访问权限限制为仅允许托管设备或基于地理位置。 你可以使用 Microsoft Intune 创建动态设备组和条件访问策略。 了解如何配置 Intune 条件访问策略
在不同的设备上配置设备设置和功能。 预配开发箱后,可以像管理 Microsoft Intune 中的任何其他设备一样对其进行管理。 你可以创建设备配置文件来打开和关闭不同的设置。

部署 Microsoft Dev Box

定义要求后,可以开始部署 Microsoft Dev Box。 Microsoft Dev Box 包含多种 Azure 资源,例如开发人员中心、项目、开发箱定义等。 Dev Box 还依赖于其他 Azure 服务和 Microsoft Intune。 详细了解 Microsoft Dev Box 体系结构

部署 Microsoft Dev Box 涉及跨 Azure、Intune 和基础结构创建和配置多个服务。 以下部分提供了在组织中部署 Microsoft Dev Box 的不同步骤。 某些步骤是可选的,取决于特定的组织设置。

步骤 1:配置 Azure 订阅

订阅是 Azure 中管理、计费和缩放的一个单位。 由于组织和治理设计、资源配额和容量以及成本管理等原因,你可能拥有一个或多个 Azure 订阅。 详细了解有关创建 Azure 订阅的注意事项

每个 Azure 订阅都链接到单个 Microsoft Entra 租户,该租户充当 Azure 订阅的标识提供者 (IdP)。 Microsoft Entra 租户用于对用户、服务和设备进行身份验证。

每个 Dev Box 用户都需要 Microsoft Intune 许可证。 包含 Dev Box Azure 资源(开发人员中心、项目等)的 Azure 订阅需要与 Microsoft Intune 位于同一租户中。

步骤 2:配置网络组件

开发箱需要网络连接才能访问资源。 你可以选择是使用 Microsoft 托管的网络连接,还是你在自己的订阅中创建的 Azure 网络连接。 使用 Azure 网络连接时,你需要在 Azure 中配置相应的网络组件,而且还可能需要在组织的网络基础结构中进行该配置。

可能需要配置的网络组件示例:

  • Azure 虚拟网络 (VNET)
  • 配置虚拟网络对等
  • 配置网络安全组 (NSG)
  • 配置防火墙,例如 Azure 防火墙或其他防火墙
  • 配置 Azure ExpressRoute
  • 配置 VPN 或网关

如果你有以下要求,则需要使用 Azure 网络连接并相应地配置网络:

  • 从开发箱访问本地资源,例如许可服务器、打印机、版本控制系统或其他
  • 访问其他 Azure 资源,例如 Cosmos DB 数据库、AKS 群集等
  • 通过防火墙或网络安全组 (NSG) 来限制访问
  • 定义自定义网络路由规则
  • 不在 Microsoft Entra ID 中进行用户管理

通过 Microsoft Entra 混合联接连接到本地资源时,请与 Azure 网络拓扑专家合作。 最佳做法是实现中心辐射型网络拓扑。 中心是连接到本地网络的中心点;你可以使用 Express Route、站点到站点 VPN 或点到站点 VPN。 分支是包含开发箱的虚拟网络。 将开发箱虚拟网络对等互连到本地连接的虚拟网络,以提供对本地资源的访问权限。 中心辐射型拓扑可帮助你管理网络流量和安全性。

网络规划应包括所需的 IP 地址数及其跨 VNET 分布的估计值。 Azure 网络连接运行状况检查需要额外的免费 IP 地址。 每个开发箱都需要 1 个额外的 IP 地址。你需要两个用于运行状况检查和 Dev Box 基础结构的 IP 地址。

详细了解 Microsoft Dev Box 网络要求

步骤 3:配置安全组以实现基于角色的访问控制

Microsoft Dev Box 使用 Azure 基于角色的访问控制 (Azure RBAC) 来授予对服务中功能的访问权限:

  • 授予项目管理员在 Microsoft Dev Box 项目上执行管理任务的权限(“项目管理员”角色)
  • 授予开发箱用户在 Dev Box 项目中创建和管理其开发箱的权限(“Dev Box 用户”角色)

请考虑在 Microsoft Entra ID 中创建安全组,以便为每个项目的管理员和用户授予或撤消访问权限。 通过使用安全组,可以委托独立于他们对 Azure 资源的权限授予访问权限的任务。 例如,可以将为开发箱用户授予访问权限的任务委托给该项目的开发团队主管。

详细了解 Microsoft Entra ID 组

步骤 4:创建开发人员中心

若要开始使用 Microsoft Dev Box,请先创建开发人员中心。 Microsoft Dev Box 中的开发人员中心提供了一个集中位置,用于管理项目的集合、可用的开发箱映像和大小的配置,以及用于启用对组织资源的访问的网络设置。

在以下情况下,可以考虑创建多个开发人员中心:

  • 如果希望特定配置可用于一部分项目。 一个开发人员中心中的所有项目都将共享相同的开发箱定义、网络连接、目录和计算库。

  • 如果不同的用户需要负责和维护 Azure 中的开发人员中心资源。

注意

开发人员中心所在的 Azure 区域无法决定开发箱的位置。

详细了解如何 为 Microsoft Dev Box 创建开发人员中心

步骤 5:配置网络连接

网络连接可控制开发箱的创建和托管位置,并让你能够连接到其他 Azure 或公司资源。 可使用 Microsoft 托管的网络连接或自带 Azure 网络连接,具体取决于你的控制级别。

Microsoft 托管的网络连接以 SaaS 方式提供网络连接。 Microsoft 管理开发箱的网络基础结构和相关服务。 Microsoft 托管的网络是纯云部署,支持 Microsoft Entra 联接。 此选项与 Microsoft Entra 混合联接模型不兼容。

本步骤将创建一个 Microsoft 托管的网络连接并将其分配给特定的开发人员中心项目。 你可以为每个项目创建多个网络连接。 在一个项目中创建的网络连接不会与其他项目共享。

此外,可以使用 Azure 网络连接(自带网络)来连接到 Azure 虚拟网络,并选择性地连接到公司资源。 使用 Azure 网络连接,可以管理和控制整个网络设置和配置。 可以将 Microsoft Entra 联接选项或 Microsoft Entra 混合联接选项用于 Azure 网络连接,让你能够连接到本地 Azure Active Directory 域服务。

你需要创建 Azure 网络连接并将其分配给开发人员中心。 一个开发人员中心中的所有项目都将共享该开发人员中心的网络连接。

在以下情况下,请考虑创建单独的网络连接:

  • 开发人员或团队位于不同的地理区域。 网络连接区域将决定开发箱的托管位置。
  • 开发人员或团队需要访问 Azure 资源。 请考虑基于使用场景创建单独的 Azure 网络连接(例如访问源代码管理服务器,或访问 Web 应用和数据库服务器)。
  • 开发人员或团队需要访问公司本地资源。 请创建 Azure 网络连接并将其配置为混合连接。
  • 开发箱用户需要使用其 Active Directory 帐户进行身份验证。 请创建 Azure 网络连接并将其配置为混合连接。

步骤 6:创建计算库

默认情况下,开发箱定义可以使用任何与 Azure 市场中的 Dev Box 兼容的虚拟机 (VM) 映像。 你可以向开发人员中心分配一个或多个 Azure 计算库,以控制开发人员中心的所有项目都可以使用的 VM 映像。

Azure Compute Gallery 是用于管理和共享映像的服务。 库是存储在 Azure 订阅中的存储库,可帮助你围绕映像资源构建结构和组织。

在以下情况下,请考虑使用 Azure 计算库:

  • 开发团队可以在受支持的映像版本上标准化,直到较新的版本通过验证。
  • 开发团队可以使用映像定义的最新版本,以确保他们在创建开发箱时始终收到最新的映像。
  • 开发团队可以选择为其项目或使用场景预配置了软件组件和配置的各种映像。 例如,用于数据科学项目、前端 Web 开发等的映像。
  • 你想要在单个位置维护映像,并在不同开发人员中心、项目和池中使用这些映像。

创建自定义 VM 映像时,还要考虑使用开发箱自定义任务来限制 VM 映像变体的数量,并使开发人员能够自行微调其开发箱配置。 例如,你可以创建常规用途开发映像,然后使用自定义来允许开发人员将其配置为适用于特定开发任务并预配置其源代码存储库。

详细了解如何为开发人员中心配置计算库

步骤 7:附加目录

开发箱用户可以使用设置任务来自定义其开发箱,例如安装其他软件、克隆存储库等。 这些任务将作为开发箱创建过程的一部分运行。 通过使用开发箱自定义和设置任务,可以减少需要为项目维护的 VM 映像数。

设置任务在目录中定义,该目录可以是 GitHub 存储库或 Azure DevOps 存储库。 请将一个或多个目录附加到开发人员中心。 所有任务都可用于在开发人员中心的所有项目中创建的所有开发箱。

Microsoft 提供了一个快速入门目录,可帮助你开始使用自定义功能。 此目录包括一组默认任务,用于定义常见设置任务,例如使用 WinGet 或 Chocolatey 安装软件、克隆存储库、配置应用程序或运行 PowerShell 脚本。

在以下情况下,请考虑附加目录:

  • 开发箱用户对其开发箱具有单独的自定义要求
  • 你希望为开发团队提供一组标准化选项来自定义其开发箱
  • 你希望限制要维护的 VM 映像和开发箱定义的数量

如果快速入门目录中的任务不足以满足需求,请考虑创建新目录。 你可以同时将快速入门目录和自己的目录附加到开发人员中心。

了解如何创建开发箱自定义

步骤 8:创建开发箱定义

开发箱定义通过指定 VM 映像、计算资源(例如内存和 CPU/GPU)以及存储来包含开发箱的配置。

你可以在开发人员中心级别配置开发箱定义。 开发人员中心的所有项目都将共享开发人员中心中内的开发箱定义。

在以下情况下,请考虑创建一个或多个开发箱定义:

  • 开发团队需要不同的 VM 映像,因为他们需要另一个操作系统版本或其他应用程序。
  • 开发团队具有不同的计算资源要求。 例如,数据科学团队可能需要一个包含 GPU 的开发箱,而数据库管理员则可能需要一台具有大量存储和内存的计算机。

请考虑与开发箱定义关联的计算资源的成本,以评估部署的总成本。

步骤 9:创建项目

在 Microsoft Dev Box 中,创建项目并将其与开发人员中心相关联。 项目通常与组织中的开发项目相对应。 例如,可以创建一个项目用于开发业务线应用程序,创建另一个项目用于开发公司网站。

在项目中,定义可供开发箱用户用于创建开发箱的开发箱池列表。 在项目级别,你可以指定开发箱用户可创建的开发箱数上限。

Microsoft Dev Box 使用 Azure 基于角色的访问控制 (Azure RBAC) 来在项目级别授予对功能的访问权限:

  • 授予项目管理员在 Microsoft Dev Box 项目上执行管理任务的权限(“项目管理员”角色)
  • 授予开发箱用户在 Dev Box 项目中创建和管理其开发箱的权限(“Dev Box 用户”角色)

请考虑使用 Microsoft Entra ID 组来管理项目的开发箱用户和管理员的访问权限。

在以下情况下,请考虑创建开发人员中心项目:

  • 你希望为开发团队提供一组针对其软件开发项目的标准化云开发人员工作站
  • 你拥有多个具有单独的项目管理员和访问权限的开发项目

详细了解如何创建和管理项目

步骤 10:创建开发箱池

在项目中,项目管理员可以创建一个或多个开发箱池。 开发箱用户使用开发人员门户来选择用于创建其开发箱的开发箱池。

开发箱池会将开发箱定义与网络连接进行链接。 你可以从 Microsoft 托管连接或自己的 Azure 网络连接中进行选择。 网络连接的位置将决定开发箱的托管位置。 请考虑创建一个具有最接近开发箱用户的网络连接的开发箱池。

为了降低运行开发箱的成本,你可以在开发箱池中配置开发箱,使其每天在预定义的时间关闭。

在以下情况下,请考虑创建开发箱池:

  • 为开发团队所需的每个开发箱定义创建开发箱池。
  • 为了降低网络延迟,请为拥有开发箱用户的每个地理位置都创建一个开发箱池。 选择离开发箱用户最近的网络连接。
  • 为需要访问其他 Azure 资源或本地资源的开发人员创建开发箱池。 在配置开发箱池时,请从开发人员中心内的 Azure 网络连接列表中进行选择。

详细了解如何创建和管理开发箱池

步骤 11:配置 Microsoft Intune

Microsoft Dev Box 使用 Microsoft Intune 来管理开发箱。 请使用 Microsoft Intune 管理中心来配置与 Dev Box 部署相关的 Intune 设置。

注意

每个 Dev Box 用户都需要一个 Microsoft Intune 许可证,并且可以创建多个开发箱。

设备配置

预配开发箱后,可以像 Microsoft Intune 中的任何其他 Windows 设备一样对其进行管理。 例如,可以创建设备配置文件来在 Windows 中打开和关闭不同的设置,或者将应用和更新推送到用户的开发箱。

配置条件访问策略

你可以使用 Intune 来配置条件访问策略,以控制对开发箱的访问。 对于开发箱,通常配置条件访问策略来限制谁可以访问开发箱、他们可以执行的操作以及他们可从何处访问。 若要配置条件访问策略,可以使用 Microsoft Intune 来创建动态设备组和条件访问策略。

Microsoft Dev Box 中条件访问的一些使用方案包括:

  • 限制仅受管理设备可以访问开发箱
  • 限制从开发箱复制/粘贴的功能
  • 限制仅从某些地理区域访问开发箱

了解如何为 Dev Box 配置条件访问策略

特权管理

你可以为开发箱配置 Microsoft Intune Endpoint Privilege Management (EPM),使开发箱用户不需要本地管理权限。 Microsoft Intune Endpoint Privilege Management 允许组织的用户以标准用户身份(没有管理员权限)运行并完成需要提升的权限的任务。 需要管理权限的任务通常是应用程序安装(如 Microsoft 365 应用程序)、更新设备驱动程序和运行某些 Windows 诊断。

详细了解如何为 Microsoft Dev Box 配置 Microsoft Intune Endpoint Privilege Management