了解部署范围

已完成

虚拟机、Azure SQL 逻辑服务器和数据库、存储帐户、虚拟网络以及其他大多数 Azure 资源都需要放在资源组中。 不过,某些资源可以或必须以不同方式进行部署。 通常使用这些资源来控制 Azure 环境的行为。

在本单元中,你将查看 Azure 资源组织的层次结构,并了解如何在不同范围部署某些资源。

Azure 资源层次结构

Azure 具有分层资源结构,包含多个管理级别。 下面是一个图表,其中显示了玩具公司如何组织其 Azure 环境:

Diagram showing an Azure tenant, three management groups, three subscriptions, and four resource groups.

租户对应于 Microsoft Entra 实例。 一个组织通常只有一个 Microsoft Entra 实例。 此实例充当资源层次结构的根。

管理组提供一种方式来组织 Azure 订阅。 每个租户都有一个根管理组,你可以在其下建立自己的管理组层次结构。 你可以为组织的各个部分或具有其自己的安全或监管要求的订阅创建单独的管理组。 可以将策略和访问控制限制应用于管理组,层次结构中该管理组下的所有订阅都将继承这些限制。 管理组不会部署到区域,它们不会影响资源的位置。

订阅充当计费帐户,其中包含资源组和资源。 与管理组类似,订阅没有位置,并且不限制资源的部署位置。

资源组是资源的逻辑容器。 使用资源组,可以将相关资源作为单个单元进行管理和控制。 虚拟机、Azure 应用服务计划、存储帐户和虚拟网络等资源必须置于资源组中。 资源组是在某个位置创建的,这样 Azure 可以跟踪组中资源的元数据,但组内的资源可部署到其他位置。

上面所示的示例是一个非常基本的方案,演示了如何使用管理组。 贵组织可能还会考虑实施登陆区域,这是一组 Azure 资源和配置,需要在 Azure 生产环境中开始。 企业级登陆区域是一种行之有效的方法,可使用管理组和订阅有效地管理 Azure 资源:

Diagram of an enterprise-scale landing-zone architecture, with four management groups and four subscriptions.

无论采用哪种模型,通过了解层次结构的各个级别,都可以开始对如何使用和管理 Azure 环境进行灵活控制。 通过使用 Bicep,你可以使用基础结构即代码的所有优势来管理这些控制。

注意

还有其他一些资源部署在特定范围。 扩展资源部署在另一个 Azure 资源范围内。 例如,资源锁是部署到资源(如存储帐户)的扩展资源。

你已经熟悉如何将资源部署到资源组,我们来看下其他部署范围。

订阅范围资源

你可以在以下情况下将资源部署到订阅:

  • 需要创建一个新的资源组。 资源组实际上只是订阅范围资源。
  • 需要授予对订阅中所有资源的访问权限。 例如,如果 HR 部门有一个包含该部门所有 Azure 资源的 Azure 订阅,你可以创建角色分配,以允许 HR 部门中的每个人读取订阅内容。
  • 你正在使用 Azure Policy,并且想要定义策略或将策略应用于订阅内的所有资源。 例如,玩具公司的研发部门要求你部署一个策略,以限制可在团队订阅中创建的虚拟机 SKU 列表。

管理组范围的资源

可以在以下情况下将资源部署到管理组:

  • 需要授予对管理组层次结构下的任何订阅中所有资源的访问权限。 例如,云运营团队可能需要访问组织中的每个订阅。 可以在根管理组中创建角色分配,这将授予云运营团队对 Azure 中所有内容的访问权限。

    注意

    使用管理组(尤其是根管理组)授予对资源的访问权限时,务必要谨慎。 请记住,层次结构中管理组下的每个资源都将继承角色分配。 确保组织遵循标识管理和身份验证的最佳做法,并确保其遵循最小特权原则;也就是说,不要授予任何不需要的访问权限。

  • 你需要在整个组织中应用策略。 例如,你的组织可能有一个策略,即在任何情况下,都无法在某些地理区域创建资源。 你可以将策略应用于根管理组,以阻止在该区域创建资源。

注意

首次使用管理组之前,请为 Azure 环境设置管理组

租户范围资源

在以下情况下,你可以向租户部署资源:

  • 需要创建 Azure 订阅。 使用管理组时,订阅位于资源层次结构中的管理组下,但订阅部署为租户范围资源。

    注意

    并非所有 Azure 客户都可以使用基础结构即代码创建订阅。 根据你与 Microsoft 的计费关系,这可能无法实现。 有关详细信息,请参阅以编程方式创建 Azure 订阅

  • 正在创建或配置管理组。 为租户启用管理组时,Azure 会创建单个根管理组,你可以在该管理组下创建多个级别的管理组。 可以使用 Bicep 来定义整个管理组层次结构。 还可以将订阅分配给管理组。

    使用 Bicep,可以将部署提交到租户范围。 租户范围的部署需要特殊权限。 但是,在实践中,无需提交租户范围的部署。 在不同范围使用模板来部署租户范围资源会更简单。 你将在本模块的后面部分了解如何做到这一点。

    提示

    无法在租户范围创建策略或角色分配。 但是,如果需要在整个组织中授予访问权限或应用策略,可以将这些资源部署到根管理组。

资源 ID

现在,你已熟悉订阅中资源的资源 ID。 例如,下面是表示资源组(订阅范围资源)的资源 ID:

/subscriptions/f0750bbe-ea75-4ae5-b24d-a92ca601da2c/resourceGroups/ToyDevelopment

下面是同一信息的可视化表示形式:

Screenshot of a Resource ID for a resource group.

订阅本身具有自己的 ID,如下所示:

/subscriptions/f0750bbe-ea75-4ae5-b24d-a92ca601da2c

注意

尽管订阅被视为管理组的子项,但订阅的资源 ID 不包含管理组 ID。 Azure 以不同于其他资源关系的方式跟踪订阅和管理组之间的关系。 这样,你可灵活地在管理组之间移动订阅,而无需更改所有资源 ID。

在管理组或租户范围使用资源时,资源 ID 可能与正常情况略有不同。 它们主要遵循将资源类型与特定资源信息交错的标准模式。 但是,具体格式取决于你使用的资源。

下面是管理组的示例资源 ID:

/providers/Microsoft.Management/managementGroups/ProductionMG

如下所示:

Screenshot of a Resource ID for a management group.

注意

管理组同时具有标识符和显示名称。 显示名称是管理组的人工可读说明。 可以更改显示名称,而不会影响管理组的 ID。

在管理组范围部署资源时,其资源 ID 包括管理组 ID。 下面是在管理组范围创建的角色定义的示例资源 ID:

/providers/Microsoft.Management/managementGroups/ProductionMG/providers/Microsoft.Authorization/roleDefinitions/d79b8492-6f38-49f9-99e6-b2e667d4f3ca

下面是同一 ID 的可视化表示形式:

Screenshot of a Resource ID for a role definition that's deployed at a management group scope.

另一个角色定义可能在订阅范围定义,因此其资源 ID 看起来有点不同:

/subscriptions/f0750bbe-ea75-4ae5-b24d-a92ca601da2c/providers/Microsoft.Authorization/roleDefinitions/d79b8492-6f38-49f9-99e6-b2e667d4f3ca

下面是同一 ID 的可视化表示形式:

Screenshot of a Resource ID for a role definition that's deployed at a subscription scope.

了解 Azure 资源层次结构以及可在每个范围部署的资源类型后,可以决定部署资源的范围。 例如,你可以明智地选择是否应在资源组、订阅或管理组范围创建策略定义。 下一单元将介绍如何创建面向每个范围的 Bicep 文件。