Important
2026 年 7 月 11 日,蓝图(预览版)将弃用。 将现有蓝图定义和分配迁移到 模板规格。 蓝图构件将被转换为 ARM JSON 模板或 Bicep 文件,以用于定义部署堆栈。 若要了解如何将工件编写为 ARM 资源,请参阅:
正如工程师或建筑师使用蓝图勾勒出项目的设计参数一样,通过 Azure 蓝图,云架构师和中心信息技术组同样可以定义一组可重复的 Azure 资源,这些资源实现并遵守组织的标准、模式和要求。 通过 Azure 蓝图,开发团队可以快速生成和构建新环境,并确信这些生成的环境符合组织规定,还可以使用一组有助于加快开发和交付过程的内置组件(如网络)。
蓝图是一种声明性方法,用于协调各个资源模板和其他项目的部署,例如:
- 角色分配
- 策略任务分配
- Azure 资源管理器模板(ARM 模板)
- 资源组
Azure 蓝图服务由全球分布的 Azure Cosmos DB 提供支持。 蓝图对象将复制到多个 Azure 区域。 无论 Azure 蓝图将资源部署到哪个区域,此复制提供的对蓝图对象的访问都具有低延迟、高可用性和一致性。
与 ARM 模板的不同之处
此服务旨在帮助进行环境设置。 此设置通常包括一组资源组、策略、角色分配和 ARM 模板部署。 蓝图是一个将这些 artifact 类型整合在一起的软件包,并允许你对该软件包进行组合和版本控制,包括通过持续集成和持续交付(CI/CD)管道。 最终,每一项都可通过一次可审计且可跟踪的操作分配到某个订阅中。
几乎所有要包含在 Azure 蓝图中部署的内容都可以使用 ARM 模板完成。 但是,ARM 模板是 Azure 中不原生存在的文档 - 每个模板均存储在本地、源代码管理或模板(预览版)中。 该模板用于部署一个或多个 Azure 资源,但部署了这些资源后,资源与模板之间就不再存在有效的连接或关系。
使用 Azure 蓝图,蓝图定义(应该部署的对象)和蓝图分配(已部署的对象)之间的关系仍然存在 。 此连接支持改进部署的跟踪和审核。 Azure 蓝图也能一次性升级由同一蓝图管理的多个订阅。
无需在 ARM 模板和蓝图之间进行选择。 每个蓝图都可以包含零个或多个 ARM 模板 构件。 此支持意味着可以在 Azure 蓝图中重复使用以前开发和维护 ARM 模板库的工作成果。
与 Azure Policy 的不同之处
蓝图是一个包或容器,用于组合与 Azure 云服务、安全性和设计的实现相关的一组针对目标的标准、模式和要求,这些标准、模式和要求可以重复使用以确保一致性和符合性。
策略是默认允许和显式拒绝系统,侧重于部署期间的资源属性,用于现有资源。 它会验证订阅中的资源是否符合要求和标准,以此为云治理提供支持。
如果在蓝图中包含策略,则可以在分配蓝图期间创建适当的模式或设计。 纳入该策略可确保只能对环境进行已批准或预期内的更改,从而保障持续符合蓝图的设计意图。
策略可以作为蓝图定义中众多项目之一包含在内。 蓝图还支持在策略和计划中使用参数。
蓝图定义
蓝图由工件组成。 Azure 蓝图目前支持将以下资源用作构件:
| 资源 | 层次结构选项 | Description |
|---|---|---|
| 资源组 | Subscription | 创建新资源组以供蓝图中的其他项目使用。 通过这些占位符资源组,你可以按照所需方式组织资源,并为包含的策略和角色分配项目以及 ARM 模板提供范围限制。 |
| ARM 模板 | 订阅、资源组 | 模板(包括嵌套模板和链接模板)用于构成复杂的环境。 示例环境:SharePoint 场、Azure 自动化状态配置或 Log Analytics 工作区。 |
| 策略分配 | 订阅、资源组 | 允许将策略或计划分配给该蓝图所分配到的订阅。 该策略或计划必须位于蓝图定义位置的范围内。 若策略或计划具有参数,则在创建蓝图时或在蓝图分配期间分配这些参数。 |
| 角色分配 | 订阅、资源组 | 将现有用户或组添加到内置角色,以确保始终为正确的人员提供正确的资源访问权限。 可为整个订阅定义角色分配,也可将其嵌套到蓝图所包含的特定资源组。 |
Note
每个项目的大小不得超过 2 MB。 如果项目超过 2 MB,你将收到 HTTP 500 错误(内部服务器错误)。
蓝图定义所在位置
创建蓝图定义时,将定义蓝图的保存位置。 蓝图可以保存到你具有参与者访问权限的管理组或订阅。 如果该位置是管理组,则该蓝图可分配到该管理组下的任何子订阅。
蓝图参数
蓝图可以将参数传递给策略/计划或 ARM 模板。 将 artifact 添加到蓝图时,作者可以决定是为每个蓝图分配提供预先定义的值,还是允许每个蓝图分配在分配时提供值。 这种灵活性提供了这样的选项:为蓝图的所有用途定义一个预先确定的值,或者在分配时再作出该决定。
Note
蓝图可以有自己的参数,但目前只能为从 REST API 而不是从门户生成的蓝图创建这些参数。
有关更多信息,请参阅蓝图参数。
蓝图发布
首次创建蓝图时,将视其为处于“草稿”模式。 当它可以被分配时,需要将其发布。 发布需要定义“版本”字符串(字母、数字和连字符,最大长度为 20 个字符)以及可选的“更改注释” 。 版本可将其与同一蓝图后续的更改区分开来,并允许对每个版本进行分配。 这种版本控制也意味着,可将同一蓝图的不同版本分配给同一订阅。 当对蓝图进行其他更改时,已发布版本仍然存在,未发布的更改也仍然存在。 更改完成后,更新后的蓝图将以新的唯一版本发布,现在也可以被分配。
蓝图分配
可将蓝图的每个已发布版本(名称长度上限为 90 个字符)分配给现有的管理组或订阅。 在门户中,该蓝图会将 Version 默认为最近 Published 的版本。 如果存在项目参数或蓝图参数,则在分配过程中定义参数。
Note
将蓝图定义分配给管理组意味着该管理组中存在分配对象。 工件部署的目标仍然是某个订阅。 若要执行管理组分配,必须按照创建或更新 REST API 进行操作,而且请求正文必须包含 properties.scope 的值才能定义目标订阅。
Azure 蓝图中的权限
通过Azure基于角色的访问控制(Azure RBAC)管理蓝图权限。
无需专用Azure RBAC 权限即可读取或查看蓝图定义。 蓝图定义旨在由他们管理的主体发现,因此租户中任何经过身份验证的主体都可以列出和读取管理组范围的蓝图定义、其版本及其项目(包括通过 REST API),即使对该管理组没有角色分配也是如此。 读取存储在订阅中的蓝图定义需要对该订阅具有读取访问权限。 创建、发布、分配、更新和删除蓝图始终需要本文中所述的权限。
Important
由于租户中任何经过身份验证的主体都可以读取蓝图定义,因此不要直接将机密或其他敏感信息存储在蓝图定义或其参数 defaultValue中。 对于机密信息,请使用由 secureString 提供支持的 secureObject 或 参数,这些引用会将机密值保留在 密钥保管库 中,而不是保存在蓝图中。
要创建蓝图,帐户需要以下权限:
-
Microsoft.Blueprint/blueprints/write- 创建蓝图定义 -
Microsoft.Blueprint/blueprints/artifacts/write- 在蓝图定义上创建项目 -
Microsoft.Blueprint/blueprints/versions/write- 发布蓝图
要删除蓝图,帐户需要以下权限:
Microsoft.Blueprint/blueprints/deleteMicrosoft.Blueprint/blueprints/artifacts/deleteMicrosoft.Blueprint/blueprints/versions/delete
Note
必须在保存该蓝图定义的管理组或订阅作用域内授予蓝图定义权限,或从该作用域继承该权限。
要分配或取消分配蓝图,帐户需要以下权限:
-
Microsoft.Blueprint/blueprintAssignments/write- 分配蓝图 -
Microsoft.Blueprint/blueprintAssignments/delete- 取消分配蓝图
Note
由于蓝图分配是在订阅级别创建的,因此必须在订阅范围内授予蓝图分配和取消分配权限,或者这些权限可继承到订阅范围。
以下内置角色可用:
| Azure角色 | Description |
|---|---|
| Owner | 除了其他权限以外,还包括所有与 Azure 蓝图相关的权限。 |
| Contributor | 除了其他权限以外,还可以创建和删除蓝图定义,但不具有蓝图分配权限。 |
| 蓝图贡献者 | 可以管理蓝图定义,但不能分配它们。 |
| 蓝图操作员 | 可以指定现有已发布的蓝图,但不能创建新的蓝图定义。 仅当使用用户分配的托管标识完成分配时,蓝图分配才有效。 |
若这些内置角色不适合安全需求,请考虑创建自定义角色。
Note
如果使用系统分配的托管标识,则 Azure 蓝图的服务主体需要在分配的订阅上具有所有者角色才能启用部署。 若使用门户,则会自动为部署授予和撤消此角色。 若使用 REST API,则必须手动授予此角色,但在部署完成后仍会自动撤消此角色。 如果使用用户分配的托管标识,则只有创建蓝图分配的用户需要拥有 Microsoft.Blueprint/blueprintAssignments/write 权限,而此权限包含在“所有者”和“蓝图操作员”这两个内置角色中。
命名限制
某些字段存在以下限制:
| 对象 | 领域 | 允许的字符 | 最大 长度 |
|---|---|---|---|
| 蓝图 | Name | 字母、数字、连字符和下划线 | 48 |
| 蓝图 | Version | 字母、数字、连字符和句点 | 20 |
| 蓝图分配 | Name | 字母、数字、连字符和下划线 | 90 |
| 蓝图产物 | Name | 字母、数字、连字符和句点 | 48 |
Azure 蓝图停用
Azure 蓝图(预览版)将于 2027 年 1 月 31 日停用,从 2026 年 7 月 31 日开始分阶段停用。 请在停用日期之前将蓝图定义和分配迁移到Azure 部署堆栈(推荐)和模板规范。 有关分阶段时间线、影响和迁移指南,请参阅: