Azure 蓝图和合规性
将策略、角色分配和 ARM 模板打包到可复用的 Azure 蓝图中,以便为新项目快速建立符合要求的环境。
Azure 蓝图和合规性 是 CoddyKit 上的免费 Azure Fundamentals 课时。 这是第 4 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Azure Fundamentals 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Azure Fundamentals 课程共包含 4 节课。
什么是 Azure Blueprint?
Azure Blueprint 是一项服务,可让您定义一组可重复使用的 Azure 治理 Artefact——角色分配、策略分配、ARM 模板和资源组——并将其打包为一个带版本的对象。随后,您可以将 Blueprint 分配给订阅,在几分钟内建立一个配置完整且符合要求的环境。Blueprint 面向需要为新项目、团队或法规要求创建标准化环境的企业。
Blueprint Artefact
Blueprint 由 Artefact 组成,这些 Artefact 是其创建的环境的构建模块。支持的 Artefact 类型包括:资源组(在指定位置创建资源组,作为其他 Artefact 的容器)、ARM 模板(部署任意 Azure 基础结构)、Azure Policy 分配(使用参数应用策略)以及 RBAC 角色分配(向特定用户或组授予访问权限)。Artefact 可以相互依赖,并会按正确顺序部署。
// Blueprint structure example:
// Blueprint: 'ISO27001-LandingZone'
// Artefact 1: Resource Group 'networking-rg'
// Artefact 2: ARM Template (deploy VNet into networking-rg)
// Artefact 3: ARM Template (deploy Log Analytics workspace)
// Artefact 4: Policy Assignment 'ISO 27001' initiative
// Artefact 5: Role Assignment (NetworkAdmins group = Network Contributor)
// Artefact 6: Role Assignment (SecurityTeam = Security Reader)Blueprint 版本控制
Blueprint 支持版本控制,因此您可以同时维护多个已发布的版本。修改 Blueprint 时,您编辑的是草稿。草稿准备就绪后,您可以将其发布为新版本(例如 v1.0、v1.1、v2.0),并附上发行说明。现有 Blueprint assignment 会保留其部署时使用的版本;您可以明确地将 assignment 升级到较新的版本。这样可以在多个订阅之间受控地推出治理变更。
# Create a blueprint definition
az blueprint create \
--name 'ISO27001LandingZone' \
--management-group mg-company \
--description 'ISO 27001 compliant landing zone for new projects'
# Publish a version
az blueprint publish \
--blueprint-name 'ISO27001LandingZone' \
--management-group mg-company \
--version '1.0' \
--change-notes 'Initial release with networking, logging, and ISO policies'Blueprint 参数
Blueprint 支持参数,因此您可以在 assignment 时自定义同一个 Blueprint 定义,而不必为每种变体创建单独的 Blueprint。参数可以在 Blueprint 级别定义并传递给各个 Artefact,也可以直接在每个 Artefact 上定义。例如,可以将 allowedLocations 参数传递给策略 Artefact,让 assignment 者指定每个订阅允许使用哪些 Azure 区域,而无需编辑 Blueprint 定义本身。
// Blueprint parameter defined at blueprint level:
{
'parameters': {
'allowedLocations': {
'type': 'array',
'metadata': {
'displayName': 'Allowed Azure Regions',
'description': 'Locations where resources can be deployed'
}
}
}
}分配 Blueprint
Blueprint assignment 会将已发布的 Blueprint 版本应用到特定订阅。在 assignment 期间,您需要为所有 Blueprint 参数提供值,选择 Blueprint 用于部署 Artefact 的系统分配或用户分配托管标识(该标识需要足够的 RBAC 权限),并选择是否应在部署后锁定 Blueprint Artefact,以防止订阅用户修改。
# Assign a blueprint to a subscription
az blueprint assignment create \
--name 'prod-subscription-baseline' \
--blueprint-version '/providers/Microsoft.Management/managementGroups/mg-company/providers/Microsoft.Blueprint/blueprints/ISO27001LandingZone/versions/1.0' \
--location eastus \
--identity-type SystemAssigned \
--resource-group-value artifact_name=networking-rg name=networking-rg location=eastus \
--lock-mode AllResourcesReadOnlyBlueprint 锁
Blueprint assignment 可以锁定已部署的 Artefact,防止订阅用户修改或删除它们。共有三种锁模式:None(不使用锁)、AllResourcesReadOnly(对所有已部署资源应用 ReadOnly 锁)以及 AllResourcesDoNotDelete(对所有已部署资源应用 CanNotDelete 锁)。Blueprint 锁具有特殊性——只要 Blueprint assignment 仍然存在,即使订阅 Owner 也无法删除这些锁,因此它们提供的保护强于标准资源锁。
符合监管框架
Azure Blueprint 示例库提供了监管合规 Blueprint,涵盖 ISO 27001、NIST SP 800-53、PCI DSS、DoD IL4/IL5、FedRAMP、HIPAA/HITRUST 和 UK OFFICIAL 等框架。这些示例 Blueprint 打包了证明符合各框架所需的策略、角色分配和基础结构配置。组织可以将其作为起点,并根据自身环境进行自定义和添加 Artefact。
Blueprint 与 ARM 模板的比较
ARM 模板和 Blueprint 的用途不同。ARM 模板会在单个资源组或订阅中部署基础结构,但与已部署资源之间没有持续连接。Blueprint assignment 会维护 Blueprint 定义与已部署环境之间的持续关联:您可以跟踪部署状态、升级到新版本,并使用即使 Owner 级 RBAC 也无法绕过的 Blueprint 锁来保护已部署的 Artefact。Blueprint 在 ARM 模板的基础上扩展了面向治理的功能。
Blueprint 与 Azure LandingZone 的比较
Microsoft 的现代 Azure LandingZone 加速器(属于 Cloud Adoption Framework)结合使用 ARM 模板、Bicep、Terraform 和 Azure Policy,而不是 Blueprint。虽然 Blueprint 仍然可用,但 Microsoft 正加大对基于策略的方法和 IaC 的投入,以支持大规模环境。对于复杂的企业部署,现在更推荐使用 CAF LandingZone 方法;Blueprint 仍适用于规模较小且自包含的环境模板。
监视 Blueprint 合规性
在 Azure Blueprint 窗格中,每个 Blueprint assignment 都会显示其部署状态(Succeeded、Failed、Locking)以及每个 Artefact 的合规状态。如果 Artefact 部署失败,您可以查看 ARM 部署错误并重试 assignment。Blueprint 中的策略 Artefact 会通过标准 Azure Policy 合规性仪表板报告其合规状态,因此您可以统一了解部署是否成功以及资源是否持续合规。
# List blueprint assignments and their status
az blueprint assignment list \
--subscription <sub-id> \
--output table
# Get the status of a specific assignment
az blueprint assignment show \
--name 'prod-subscription-baseline' \
--subscription <sub-id>删除 Blueprint assignment
若要停用由 Blueprint 管理的环境,您首先需要删除 Blueprint assignment。这会移除所有已部署 Artefact 上的 Blueprint 锁,并切断 Blueprint 定义与已部署资源之间的关联,但不会删除已部署的资源本身。随后,您需要根据变更管理流程单独清理 ARM 资源。删除 Blueprint 定义前,必须先删除所有 assignment。
# Delete a blueprint assignment (removes locks but not deployed resources)
az blueprint assignment delete \
--name 'prod-subscription-baseline' \
--subscription <sub-id>快速检查
请测试您对本课 Microsoft Azure Fundamentals (AZ-900) 概念的理解。
课程回顾
本课介绍了以下内容:Azure Blueprint 会将策略分配、角色分配、ARM 模板和资源组打包成一个带版本且可重复使用的治理对象;Blueprint 锁可以保护已部署的 Artefact,即使订阅 Owner 也无法修改;以及示例库中的监管合规 Blueprint 可以加快实现 ISO 27001 和 PCI DSS 等框架的合规性。您已完成 Azure 治理课程——接下来将学习 Azure Resource Manager 和基础结构即代码。
常见问题解答
「Azure 蓝图和合规性」课时是免费的吗?
是的 — 「Azure 蓝图和合规性」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Azure Fundamentals 课程的其余内容,请升级到 CoddyKit PRO。 Azure Fundamentals 课程共包含 4 节课。
「Azure 蓝图和合规性」这节课中我会学到什么?
将策略、角色分配和 ARM 模板打包到可复用的 Azure 蓝图中,以便为新项目快速建立符合要求的环境。 你通过在浏览器中直接运行的动手代码来练习 Azure Fundamentals,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Azure Fundamentals 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Azure Fundamentals 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 4 节课,共 4 节。
「Azure 蓝图和合规性」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Azure Fundamentals 课中编写并运行代码吗?
能。每节 Azure Fundamentals 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- 管理组和订阅
- Azure Policy
- 资源标记和资源锁
- Azure 蓝图和合规性