了解部署范围
虚拟机、Azure SQL 逻辑服务器和数据库、存储帐户、虚拟网络和其他大多数 Azure 资源都需要放在资源组中。 但是,某些资源可以或必须以不同的方式进行部署。 这些资源通常用于控制 Azure 环境的行为。
在本单元中,你将查看 Azure 资源组织层次结构,并了解某些资源如何在各种范围内部署。
Azure 资源层次结构
Azure 具有分层资源结构,具有多个级别的管理。 下图显示了玩具公司如何组织其 Azure 环境:
你的租户对应于 Microsoft Entra 实例。 组织通常只有一个Microsoft Entra 实例。 此实例充当资源层次结构的根节点。
管理组 提供了组织 Azure 订阅的方法。 每个租户都有一个根管理组,可以在其下建立自己的管理组层次结构。 你可以为组织的各个部分或具有其自己的安全或治理要求的订阅创建单独的管理组。 可以将策略和访问控制限制应用于管理组,然后层次结构中管理组下面的所有订阅都继承这些限制。 管理组不会部署到区域,并且不会影响资源的位置。
订阅 充当计费帐户,它们包含资源组和资源。 与管理组一样,订阅没有位置,也不会限制部署资源的位置。
资源组 是资源的逻辑容器。 使用资源组,可以将相关资源作为单个单元进行管理和控制。 必须将虚拟机、Azure 应用服务计划、存储帐户和虚拟网络等资源放入资源组中。 资源组是在某个位置创建的,以便 Azure 可以跟踪组中资源的元数据,但可将组内的资源部署到其他位置。
前面演示的示例是一个相当基本的方案,演示如何使用管理组。 组织还可以考虑实施 着陆区域,这是开始使用生产 Azure 环境所需的一组 Azure 资源和配置。 企业规模登陆区域是使用管理组和订阅有效管理 Azure 资源的成熟方法:
无论遵循哪种模型,都可以通过了解层次结构的各个级别,开始对 Azure 环境的使用和管理方式应用灵活的控制。 通过使用 Bicep,可以使用基础结构即代码的所有优势来管理这些控件。
注释
还有一些其他资源在特定范围内部署。 扩展资源 部署在另一个 Azure 资源的范围内。 例如,资源锁是一个扩展资源,该资源部署到存储帐户等资源。
你已熟悉将资源部署到资源组,因此让我们看看部署的其他范围。
订阅范围资源
你可以在以下情况下将资源部署到订阅:
- 需要创建新的资源组。 资源组实际上只是订阅范围资源。
- 需要向订阅中的所有资源授予访问权限。 例如,如果 HR 部门有一个包含所有部门 Azure 资源的 Azure 订阅,则可以创建角色分配,以允许 HR 部门中的所有人读取订阅的内容。
- 你使用的是 Azure Policy,并且想要定义或将策略应用到订阅中的所有资源。 例如,玩具公司的 R&D 部门要求你部署一个策略,以限制可在团队订阅中创建的虚拟机 SKU 列表。
管理组范围的资源
在以下情况下,可以将资源部署到管理组:
需要向属于管理组层次结构的任何订阅中的所有资源授予访问权限。 例如,云运营团队可能需要获得访问组织中每个订阅的权限。 可以在根管理组中创建角色分配,从而授予云运营团队对 Azure 中的所有内容的访问权限。
谨慎
在使用管理组(尤其是根管理组)授予资源访问权限时,请格外小心。 请记住,层次结构中管理组下的每个资源都继承角色分配。 确保组织遵循标识管理和身份验证的最佳做法,并遵循最低特权原则。 也就是说,不要授予任何不需要的访问权限。
你需要在整个组织中应用策略。 例如,你的组织可能有一个策略,即在任何情况下,无法在某些地理区域中创建资源。 可以将策略应用于根管理组,该策略将阻止在该区域中创建资源。
注释
首次使用管理组之前, 请为 Azure 环境设置它们。
租户范围资源
在以下情况下,可以将资源部署到租户:
需要创建 Azure 订阅。 使用管理组时,订阅位于资源层次结构中的管理组下,但订阅部署为租户范围资源。
注释
并非所有 Azure 客户都可以使用基础结构即代码创建订阅。 根据与Microsoft的计费关系,这可能无法实现。 有关详细信息,请参阅以编程方式创建 Azure 订阅。
正在创建或配置管理组。 为租户启用管理组时,Azure 会创建单个根管理组,并且可以在它下创建多个级别的管理组。 可以使用 Bicep 定义整个管理组层次结构。 还可以将订阅分配给管理组。
使用 Bicep,可以将部署提交到租户范围。 租户范围的部署需要特殊权限。 但是,在实践中,无需提交租户范围的部署。 在不同范围使用模板来部署租户范围资源会更简单。 你将在本模块中稍后了解如何完成它。
小窍门
无法在租户范围内创建策略或角色分配。 但是,如果需要在整个组织中授予访问权限或应用策略,可以将这些资源部署到根管理组。
资源 ID
现在,你已熟悉订阅中资源的资源 ID。 例如,下面是表示资源组(订阅范围资源)的资源 ID:
/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/ToyDevelopment
下面是相同信息的可视表示形式:
订阅本身有自己的 ID,如下所示:
/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e
注释
尽管订阅被视为管理组的子项,但订阅的资源 ID 不包含管理组 ID。 Azure 以与其他资源关系不同的方式跟踪订阅和管理组之间的关系。 这样就可以灵活地在管理组之间移动订阅,而无需更改所有资源 ID。
在管理组或租户范围使用资源时,资源 ID 可能与正常情况略有不同。 它们主要遵循将资源类型与特定资源信息交错的标准模式。 但是,特定格式取决于正在使用的资源。
下面是管理组的示例资源 ID:
/providers/Microsoft.Management/managementGroups/ProductionMG
下面是如下所示的内容:
注释
管理组具有标识符和显示名称。 显示名称是管理组的人工可读说明。 可以更改显示名称,而不会影响管理组的 ID。
在管理组范围内部署资源时,其资源 ID 包括管理组 ID。 以下是一个在管理组范围内创建的角色定义的资源 ID 示例:
/providers/Microsoft.Management/managementGroups/ProductionMG/providers/Microsoft.Authorization/roleDefinitions/00000000-0000-0000-0000-000000000000
下面是相同 ID 的可视表示形式:
另一个角色定义可能在订阅范围内定义,因此其资源 ID 看起来稍有不同:
/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/providers/Microsoft.Authorization/roleDefinitions/00000000-0000-0000-0000-000000000000
下面是相同 ID 的可视表示形式:
了解 Azure 资源层次结构和可在每个范围部署的资源类型后,可以就部署资源的范围做出决策。 例如,可以选择是否应在资源组、订阅或管理组的范围内创建策略定义。 下一单元将介绍如何创建面向每个范围的 Bicep 文件。