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

Azure 开发测试实验室基础设施治理

本文介绍组织中开发测试实验室的资源调配和管理。

资源

调整 Azure 订阅中的开发测试实验室资源

在组织开始使用 Azure 进行一般性的应用程序开发之前,IT 规划人员首先应该评审如何在整个服务产品组合中引入功能。 评审的各个方面应可解决以下问题:

  • 如何衡量与应用程序开发生命周期关联的成本?
  • 组织如何使提议的服务产品与企业安全策略相符?
  • 是否需要通过分段来隔离开发环境和生产环境?
  • 针对长远的轻松管理、稳定性和发展引入了哪些控制措施?

第一项建议的做法是评审组织中对生产订阅和开发订阅做了划分的 Azure 分类。 在下图中,建议的分类能够对开发/测试和生产环境进行逻辑分离。 使用此方法,组织可以引入计费代码来单独跟踪与每个环境关联的成本。 有关详细信息,请参阅出于合规目的监管订阅。 此外,可以使用 Azure 标记来组织资源,以便于跟踪和计费。

第二项建议的做法是在 Azure 企业门户中启用开发测试订阅。 这样,组织便可以运行 Azure 企业订阅中通常不会提供的客户端操作系统。 然后,使用仅支付计算机费用的企业软件,无需担心许可问题。 这可以确保只需根据消耗量支付指定服务的费用,包括 IaaS 中的库映像,例如 Microsoft SQL Server。 企业协议 (EA) 客户和即用即付客户可以分别在此处此处找到有关 Azure 开发测试订阅的详细信息。

Diagram showing how resources alignment with subscriptions.

此模型可让组织灵活地大规模部署 Azure 开发测试实验室。 组织可以支持各个业务单位运作的数百个实验室,其中可以并行运行 100 到 1000 个虚拟机。 这样可以提升集中式企业实验室解决方案的概念,并可以共享相同的配置管理和安全控制原则。

此模型还确保组织不会耗尽其 Azure 订阅关联的资源限制。 有关订阅和服务限制的详细信息,请参阅 Azure 订阅和服务限制、配额与约束。 开发测试实验室预配过程可能会消耗大量的资源组。 可以通过 Azure 开发测试订阅中的支持请求来请求提高限制。 随着开发订阅的用量增加,生产订阅中的资源不受影响。 有关缩放开发测试实验室的详细信息,请参阅开发测试实验室中的缩放配额和限制

需要考虑的常见订阅级限制是如何分配网络 IP 范围,以支持生产和开发订阅。 这些分配应该考虑到不同时间段的发展(假设本地连接或其他网络拓扑需要企业管理其网络堆栈,而不是默认使用 Azure 的实施方案)。 建议的做法是在一些虚拟网络中分配较大的 IP 地址前缀,并将这些虚拟网络分割成多个大型子网,而不是组建多个包含小型子网的虚拟网络。 例如,使用 10 个订阅时,可以定义 10 个虚拟网络(每个订阅对应一个虚拟网络)。 不需要隔离的所有实验室可以共享订阅的虚拟网络中的同一子网。

每个实验室的用户数和每个组织的实验室数

与同一开发项目关联的业务单位和开发组应与同一实验室相关联。 这样,便可以对这两个组应用相同类型的策略、映像和关闭策略。

可能还需要考虑地理边界。 例如,美国 (US) 东北部的开发人员可能会使用美国东部 2 区域中预配的实验室。 另外,位于德克萨斯州达拉斯市和科罗拉多州丹佛市的开发人员可能会定向为使用美国中南部的资源。 如果能够与外部第三方展开协作,则可为这些开发人员分配未由内部开发人员使用的实验室。

还可以将实验室用于 Azure DevOps Projects 中的特定项目。 然后,通过允许访问这两组资源的指定 Microsoft Entra 组应用安全性。 分配到该实验室的虚拟网络可以是用于整合用户的另一个边界。

阻止删除资源

在实验室级别设置适当的权限,以便只有经过授权的用户才能删除资源或更改实验室策略。 应将开发人员放置在“开发测试实验室用户”组中。 开发人员主管或基础结构主管应是“开发测试实验室所有者”。 我们建议仅指定两个实验室所有者。 此策略根据代码存储库的扩展而扩展,以避免损坏。 实验室用户有权使用资源,但不能更新实验室策略。 请参阅以下文章,其中列出了每个内置组在实验室中拥有的角色和权限:在 Azure 开发测试实验室中添加所有者和用户

管理成本和所有权

打算构建开发和测试环境时,成本和所有权是主要的考量。 本部分介绍如何在环境中进行成本优化并落实所有权。

成本优化

开发测试实验室的几项内置功能有助于进行成本优化。 请参阅成本管理与阈值以及策略这两篇文章,了解如何限制用户的活动。

在将开发测试实验室用于开发和测试工作负载时,可以考虑使用企业协议中的 Enterprise 开发/测试订阅权益。 另外,如果是即用即付客户,可以考虑即用即付开发测试套餐

此方法有多种优点:

  • Windows 虚拟机、云服务、HDInsight、应用服务和逻辑应用的开发/测试费率特别低
  • 其他 Azure 服务的企业协议 (EA) 费率也很优惠
  • 可以访问库中的专属开发/测试映像,包括 Windows 8.1 和 Windows 10

只有活动的 Visual Studio 订阅者(标准订阅、年度云订阅和月度云订阅)可使用企业开发/测试订阅中运行的 Azure 资源, 但最终用户也可访问该应用程序来提供反馈或执行验收测试。 只能将此订阅中的资源用于开发和测试应用程序。 无运行时间保证。

如果决定使用开发测试套餐,请将此权益专用于开发和应用程序测试。 订阅内的使用不带有财务支持的 SLA,Azure DevOps 和 HockeyApp 的使用除外。

定义基于角色的跨组织访问权限

中心 IT 部门只应拥有必需的控制,让项目和应用程序团队拥有所需级别的控制。 通常情况下,这意味着中心 IT 部门拥有订阅并负责核心 IT 功能,例如网络配置。 订阅的所有者集应该小。 这些所有者可以在需要时指定其他所有者,或者应用订阅级别的策略,例如“禁止公共 IP”。

部分用户(例如第 1 层或第 2 层支持人员)可能需要在整个订阅中进行访问。 在这种情况下,建议为这些用户提供管理资源所需的“参与者”访问权限,但不提供用户访问权限,也不调整策略。

开发测试实验室资源所有者应该与项目/应用程序团队密切相关。 这些所有者了解计算机和软件要求。 在大多数组织中,此开发测试实验室资源的所有者是项目/开发主管。 此所有者可以管理实验室环境中的用户和策略,可以管理开发测试实验室环境中的所有虚拟机。

将项目和应用程序团队成员添加到“开发测试实验室用户”角色中。 这些用户可以创建虚拟机(前提是遵循实验室和订阅级别的策略)。 用户还可以管理自己的虚拟机,但不能管理属于其他用户的虚拟机。

有关详细信息,请参阅 Azure 企业基架 - 规范性订阅治理

公司策略与合规性

本部分提供有关监管 Azure 开发测试实验室基础结构的公司策略与合规性的指导。

公共与专用项目存储库

公共项目存储库提供初始的一组最常用软件包。 它有助于快速完成部署,避免花费时间来重新生成常用的开发人员工具和加载项。你可以选择部署组织自有的专用存储库。 可以同时使用公共和专用存储库。 还可以选择禁用公共存储库。 部署专用存储库的条件应根据以下问题和注意事项而定:

  • 组织是否必须在其开发测试实验室套餐中提供企业许可的软件? 如果是,则应创建专用存储库。
  • 组织是否开发可提供特定操作的、在总体预配过程中所需的自定义软件? 如果是,则应部署专用存储库。
  • 如果组织的监管策略需要隔离,并且外部存储库不在组织的直接配置管理范畴内,则应部署专用项目存储库。 在此过程中,可以复制公共存储库的初始副本,并将其与专用存储库集成。 然后可以禁用公共存储库,使组织中的任何人都不再可以访问它。 此方法会强制组织中的所有用户只能使用组织批准的单个存储库,并可以最大程度地减少配置偏差。

单个存储库或多个存储库

作为组织总体监管和配置管理策略的一部分,我们建议使用集中式存储库。 使用多个存储库时,它们可能会逐渐变成孤立的非托管软件。 使用中心存储库时,多个团队可对其项目使用此存储库中的项目。 此方法强制实施标准化、安全性和易管理性方面的措施,并消除了重复工作。 在集中化过程中,建议采取以下措施来实现长期管理和可持续性:

  • 将 Azure Repos 与 Azure 订阅用于身份验证和授权的同一 Microsoft Entra 租户相关联。
  • 在集中管理的 Microsoft Entra ID 中创建名为所有开发测试实验室开发人员的组。 应将参与项目开发的任何开发人员置于此组中。
  • 可使用同一个 Microsoft Entra 组来提供对 Azure Repos 存储库和实验室的访问权限。
  • 在 Azure Repos 中,应使用分支或分叉将开发中存储库与主要生产存储库相隔离。 在正确完成代码评审后,使用拉取请求将内容仅添加到主分支。 代码评审员批准更改后,负责主分支维护工作的开发人员主管合并更新的代码。

企业安全策略

组织可以通过以下方式应用公司安全策略:

  • 制定并发布全面的安全策略。 该策略阐述了软件和云资产的可接受用法相关规则。 它还规定了哪些行为肯定会违反策略。
  • 开发自定义映像、自定义项目和部署过程,以便在使用 Active Directory 定义的安全领域内进行协调。 此方法会强制实施企业边界,并规定一套通用的环境控制措施。 开发人员在整个过程中开发和遵循安全开发生命周期时,可以考虑这些针对环境的控制措施。 目标也是使提供的环境不会过度施加限制,从而对开发带来阻碍,而是实施一套合理的控制措施。 包含实验室虚拟机的组织单位 (OU) 的组策略可以是生产环境中的所有组策略的子集。 或者,它们可以是一个用于适当缓解任何所识别到的风险的补充集。

数据完整性

组织可以确保数据完整性,以防止远程开发人员删除代码或者引入恶意软件或未经批准的软件。 可通过多个控制层来缓解在开发测试实验室中进行协作的外部远程顾问、合同工或员工带来的威胁。

如前所述,第一步是必须草拟并制定可接受的使用策略,其中明确阐述了违反策略所造成的后果。

第一个远程访问控制层是通过不与实验室直接连接的 VPN 来应用远程访问策略。

第二个控制层是应用组策略对象集,以防止通过远程桌面进行复制粘贴。 可以实施一个网络策略来禁止环境中的出站服务,例如环境外部的 FTP 和 RDP 服务。 用户定义的路由可以强制将所有 Azure 网络流量发回到本地,但除非通过可以扫描内容和会话的代理进行控制,否则该路由无法考虑到可能允许上传数据的所有 URL。 在支持开发测试实验室的虚拟网络中,公共 IP 可能限制为禁止桥接外部网络资源。

最终,需要在整个组织中应用相同类型的限制,因此,还必须考虑到可移动媒体或者可接受发布内容的外部 URL 使用的所有可能方法。 评审和实施安全策略时,请咨询安全专家。 有关更多建议,请参阅 Microsoft 网络安全性

应用程序迁移和集成

建立开发/测试实验室环境之后,你需要考虑以下问题:

  • 如何在项目团队中使用此环境?
  • 如何在确保遵循任何必需组织策略的同时又能够保持灵活性,为应用程序增加价值?

Azure 市场映像与自定义映像

除非有特定考虑或组织要求,否则默认情况下应使用 Azure 市场映像。 一些常见示例包括:

  • 复杂的软件设置,需要将应用程序作为基本映像的一部分包含在内。
  • 安装和设置应用程序可能需要花费数小时,这没有有效利用 Azure 市场映像上添加的计算时间。
  • 开发人员和测试人员需要快速访问虚拟机,并希望最大限度地缩短新虚拟机的设置时间。
  • 所有计算机必须具备的合规性或法规条件(例如安全策略)。

请仔细考虑使用自定义映像。 自定义映像会引入额外的复杂性,因为你现在必须管理那些底层基础映像的 VHD 文件。 此外,还需要使用软件更新定期修补这些基础映像。 这些更新包括新的操作系统 (OS) 更新,以及软件包本身所需的任何更新或配置更改。

公式与自定义映像

通常,此方案中的决定因素是成本和重用。

如果出现以下情况,可以通过创建自定义映像降低成本:

  • 许多用户或实验室需要映像。
  • 所需的映像在基本映像之上有大量软件。

此解决方案意味着创建一次映像。 自定义映像可减少虚拟机的安装时间。 在安装过程中运行虚拟机不会产生成本。

另一个因素是软件包的更改频率。 如果运行每日内部版本,并要求该软件位于用户的虚拟机上,请考虑使用公式而不是自定义映像。

用于设置网络配置的模式

确保开发和测试虚拟机无法访问公共 Internet 时,需要考虑两个方面 - 入站和出站流量。

入站流量 - 如果虚拟机没有公共 IP 地址,则 Internet 无法访问它。 一种常见方法是设置订阅级别的策略,任何用户都不能创建公共 IP 地址。

出站流量 - 如果要防止虚拟机直接访问公共 Internet 并强制流量通过企业防火墙,则可以使用强制路由通过 Azure ExpressRoute 或 VPN 在本地路由流量。

注意

如果你的代理服务器在没有代理设置的情况下阻止流量,则不要忘记向实验室的项目存储帐户添加例外。

此外,还可以将网络安全组用于虚拟机或子网。 此步骤增添了另一层保护以允许或阻止流量。

新虚拟网络与现有虚拟网络

如果你的 VM 需要与现有基础结构进行交互,则应考虑使用开发测试实验室环境中的现有虚拟网络。 如果使用 ExpressRoute,请将虚拟网络和子网的数量降至最低,以便不会对分配给订阅的 IP 地址空间进行分段。 还应考虑在此处使用虚拟网络对等互连模式(中心辐射型模型)。 此方法在给定区域内的订阅之间启用虚拟网络和子网通信。

每个开发测试实验室环境都可以有自己的虚拟网络,但每个订阅的虚拟网络数有限制。 默认数量为 50,但此限制可以提高到 100。

共享 IP、公用 IP 或专用 IP

如果使用站点到站点 VPN 或快速路由,则考虑使用专用 IP,以便你的计算机可通过内部网络访问,并且无法通过公共 Internet 访问。

注意

实验室所有者可以更改此子网策略,以确保不会有人意外地为其 VM 创建公共 IP 地址。 订阅所有者应创建一个阻止创建公用 IP 的订阅策略。

当使用共享的公共 IP 时,实验室中的虚拟机会共享公共 IP 地址。 当需要避免违反给定订阅的公共 IP 地址限制时,此方法很有用。

实验室限制

应注意几个实验室限制。 后续部分将介绍这些限制。

每个订阅的实验室限制

没有对每个订阅可创建的实验室数量进行限定。 但对每个订阅使用的资源量进行了限定。 可参阅 Azure 订阅的限制和配额如何增加这些限制

每个实验室的 VM 限制

没有对每个实验室可创建的 VM 数量进行限定。 但对每个订阅使用的资源(VM 核心数、公共 IP 地址等)进行了限制。 可参阅 Azure 订阅的限制和配额如何增加这些限制

每个用户或实验室的虚拟机数量限制

在考虑每个用户或每个实验室的虚拟机数量时,主要有三个考虑因素:

  • 团队在实验室资源上花费的总成本。 运行很多计算机很容易。 为了控制成本,一种机制是限制每个用户或每个实验室的 VM 数量
  • 实验室中的虚拟机总数受可用订阅级别配额的影响。 其中一个上限是每个订阅 800 个资源组。 开发测试实验室当前为每个 VM 创建一个新的资源组(除非使用共享的公用 IP)。 如果一个订阅中有 10 个实验室,每个实验室中可容纳大约 79 个虚拟机,即(800 上限 – 10 个实验室自己的 10 个资源组)= 每个实验室 79 个虚拟机。
  • 举例来说,如果实验室通过 Express Route 连接到本地,则可以为 VNet/子网定义可用的 IP 地址空间。 为了确保能够在实验室中创建 VM(出现“无法获取 IP 地址”错误时无法创建),实验室所有者可以根据可用的 IP 地址空间指定每个实验室的最大 VM 数量。

使用 Resource Manager 模板

使用将 Azure 开发测试实验室用于测试环境中的步骤部署资源管理器模板。 从根本上说,将资源管理器模板签入 Azure Repos 或 GitHub Git 存储库,并将模板的专用存储库添加到实验室。

如果使用开发测试实验室托管开发计算机,则此方案可能没有用。 使用此方案来构建代表生产的过渡环境。

每个实验室或每个用户的虚拟机数量选项仅限制在实验室本身中本机创建的计算机数量。 对于包含资源管理器模板的任何环境,此选项不会限制创建。