Azure 资源管理器的工作原理
跟踪资源创建请求经过 ARM 层的过程,了解资源组作为逻辑容器的作用,并学习 ARM 的基于角色的访问控制和审计记录。
Azure 资源管理器的工作原理 是 CoddyKit 上的免费 Cloud & IT Cert Prep 课时。 这是第 1 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Cloud & IT Cert Prep 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Cloud & IT Cert Prep 课程共包含 4 节课。
什么是 Azure Resource Manager?
Azure Resource Manager (ARM) 是 Azure 的部署和管理服务。您在 Azure 门户、CLI、PowerShell 或 REST API 中执行的每项操作都会经过 ARM。它充当集中式控制平面,负责对每项资源操作进行身份验证、授权和路由。
ARM 请求流程
当您发送创建资源的请求时,ARM 会拦截该请求,通过 Microsoft Entra ID 验证您的身份,检查 RBAC 权限,应用任何 Azure 策略规则,然后将验证通过的请求转发给相应的资源提供程序。资源提供程序(例如 Microsoft.Compute)执行实际操作,并将结果返回给 ARM。
# Example: creating a VM via Azure CLI (routed through ARM)
az vm create \
--resource-group MyRG \
--name MyVM \
--image UbuntuLTS \
--admin-username azureuser资源提供程序和资源类型
Azure 服务通过资源提供程序公开,每个资源提供程序都由一个命名空间标识,例如 Microsoft.Storage 或 Microsoft.Network。每种资源类型(例如 Microsoft.Storage/storageAccounts)都必须先在您的订阅中注册,然后才能创建其实例。大多数资源提供程序会在您首次使用相关服务时自动注册。
# List registered resource providers
az provider list --query "[?registrationState=='Registered'].namespace" -o table
# Register a provider manually
az provider register --namespace Microsoft.Insights资源组作为逻辑容器
资源组是用于存放相关 Azure 资源的逻辑容器。组中的所有资源共享相同的生命周期——您可以同时部署、更新和删除它们。资源组还充当 RBAC 分配和成本跟踪的默认范围。每个 Azure 资源必须且只能属于一个资源组。
# Create a resource group
az group create --name MyResourceGroup --location eastus
# List all resources in a resource group
az resource list --resource-group MyResourceGroup -o tableARM 和基于角色的访问控制
ARM 在每个范围实施基于角色的访问控制(RBAC):管理组、订阅、资源组或单个资源。所有者、参与者和读取者等内置角色涵盖了大多数场景。ARM 从最高范围向下评估角色分配,而拒绝分配可以阻止继承的权限。
# Assign Contributor role at resource group scope
az role assignment create \
--assignee user@contoso.com \
--role 'Contributor' \
--resource-group MyResourceGroupARM 审计跟踪
所有经由 ARM 路由的操作都会记录在 Azure 活动日志中。活动日志会记录执行操作的人员、受影响的资源、操作发生的时间,以及操作是否成功。活动日志默认保留 90 天,并且可以存档到 Storage Account,或流式传输到 Log Analytics 以延长保留时间。
# Query recent ARM operations in activity log
az monitor activity-log list \
--resource-group MyResourceGroup \
--max-events 10 \
--query '[].{time:eventTimestamp, caller:caller, operation:operationName.value, status:status.value}' \
-o table声明式部署与命令式部署
ARM 同时支持声明式和命令式部署方式。声明式部署使用 ARM 模板或 Bicep 描述所需的最终状态;ARM 会确定达到该状态所需的操作。命令式部署则使用 CLI 或 PowerShell 逐步执行命令。声明式部署在可重复性、版本控制和幂等性方面更受推荐。
# Imperative: create storage account step-by-step
az storage account create \
--name mystorageaccount \
--resource-group MyRG \
--location eastus \
--sku Standard_LRS
# Declarative: deploy via ARM template
az deployment group create \
--resource-group MyRG \
--template-file azuredeploy.json \
--parameters @azuredeploy.parameters.json部署模式:Complete 与 Incremental
ARM 模板部署可以在两种模式下运行。Incremental 模式(默认模式)会添加或更新模板中定义的资源,同时保持组中已存在但未在模板中定义的资源不变。Complete 模式会删除资源组中所有未在模板中定义的资源,使资源组与模板完全一致——请谨慎使用。
# Incremental deployment (default)
az deployment group create \
--resource-group MyRG \
--template-file azuredeploy.json \
--mode Incremental
# Complete deployment (deletes unlisted resources!)
az deployment group create \
--resource-group MyRG \
--template-file azuredeploy.json \
--mode CompleteARM 模板结构
ARM 模板是一个包含六个主要部分的 JSON 文档:$schema(模板版本)、contentVersion、parameters(输入)、variables(计算值)、resources(要部署的内容)和 outputs(要返回的值)。resources 数组中的每个对象对应一个 Azure 资源,并分别指定其类型、API 版本、名称、位置和属性。
{
'$schema': 'https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#',
'contentVersion': '1.0.0.0',
'parameters': {},
'variables': {},
'resources': [
{
'type': 'Microsoft.Storage/storageAccounts',
'apiVersion': '2023-01-01',
'name': 'mystorageaccount',
'location': '[resourceGroup().location]',
'sku': { 'name': 'Standard_LRS' },
'kind': 'StorageV2'
}
],
'outputs': {}
}ARM 中的依赖管理
部署多个资源时,ARM 默认可以并行部署相互独立的资源,从而加快部署速度。当一个资源依赖另一个资源时(例如 VM 需要 NIC,而 NIC 需要 VNet),您可以使用 dependsOn 显式声明依赖关系。ARM 会解析依赖关系图,并据此安排操作顺序。
{
'type': 'Microsoft.Network/networkInterfaces',
'name': 'myNic',
'dependsOn': [
'[resourceId("Microsoft.Network/virtualNetworks", "myVNet")]'
],
'properties': {
'ipConfigurations': [{
'name': 'ipconfig1',
'properties': {
'subnet': {
'id': '[resourceId("Microsoft.Network/virtualNetworks/subnets", "myVNet", "mySubnet")]'
}
}
}]
}
}假设部署分析
在运行部署之前,请使用 what-if 操作预览 ARM 将要进行的更改,而不实际执行这些更改。输出会列出将要创建、修改或删除的资源,并根据更改类型使用不同颜色标识。在运行 Complete 模式部署或更改生产环境之前,这项功能尤其有价值。
# Preview changes before deploying
az deployment group what-if \
--resource-group MyRG \
--template-file azuredeploy.json \
--parameters @params.json快速检查
测试您对本课 Microsoft Azure Fundamentals(AZ-900)概念的理解。
课程回顾
本课介绍了:Azure Resource Manager 是管理所有 Azure 资源的集中式管理层;资源组是将共享生命周期的资源归集在一起的逻辑容器;ARM 部署可以在 Incremental 或 Complete 模式下运行,并支持 what-if 预览。接下来,我们将学习编写 ARM 模板。
用 AI 导师学习 Cloud & IT Cert Prep — 免费
在浏览器中编写并运行真实代码,获得全天候 AI 导师的即时帮助,并在网页或应用中继续学习。
- 课程
- 150
- 课程
- 600
常见问题解答
「Azure 资源管理器的工作原理」课时是免费的吗?
是的 — 「Azure 资源管理器的工作原理」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Cloud & IT Cert Prep 课程的其余内容,请升级到 CoddyKit PRO。 Cloud & IT Cert Prep 课程共包含 4 节课。
「Azure 资源管理器的工作原理」这节课中我会学到什么?
跟踪资源创建请求经过 ARM 层的过程,了解资源组作为逻辑容器的作用,并学习 ARM 的基于角色的访问控制和审计记录。 你通过在浏览器中直接运行的动手代码来练习 Cloud & IT Cert Prep,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Cloud & IT Cert Prep 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Cloud & IT Cert Prep 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 1 节课,共 4 节。
「Azure 资源管理器的工作原理」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Cloud & IT Cert Prep 课中编写并运行代码吗?
能。每节 Cloud & IT Cert Prep 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- Azure 资源管理器的工作原理
- 编写 ARM 模板
- Bicep:现代 Azure IaC
- Azure 上的 Terraform