Cloud & IT Cert Prep · 课时

Azure 资源管理器的工作原理

跟踪资源创建请求经过 ARM 层的过程,了解资源组作为逻辑容器的作用,并学习 ARM 的基于角色的访问控制和审计记录。

第 1 / 4 课13 个步骤

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 table

ARM 和基于角色的访问控制

ARM 在每个范围实施基于角色的访问控制(RBAC):管理组、订阅、资源组或单个资源。所有者、参与者和读取者等内置角色涵盖了大多数场景。ARM 从最高范围向下评估角色分配,而拒绝分配可以阻止继承的权限。

# Assign Contributor role at resource group scope
az role assignment create \
  --assignee user@contoso.com \
  --role 'Contributor' \
  --resource-group MyResourceGroup

ARM 审计跟踪

所有经由 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 Complete

ARM 模板结构

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 反馈 — 无需本地设置。

此课程中的所有课时

  1. Azure 资源管理器的工作原理
  2. 编写 ARM 模板
  3. Bicep:现代 Azure IaC
  4. Azure 上的 Terraform
← 返回 Cloud & IT Cert Prep