# Securing Azure With Microsoft Defender

> 本技能指导安全从业者将 Microsoft Defender for Cloud 部署为 Azure、多云和混合环境的云原生应用保护平台（CNAPP）。涵盖为服务器、容器、存储和数据库启用 Defender 计划、配置安全建议、管理安全分数（Secure Score），以及与统一 Defender 门户集成进行集中威胁管理。

- Skill: `killvxk/securing-azure-with-microsoft-defender` (Agent Skill, multi-file: 4 files)
- Install (CLI): `npx skillmds@latest add killvxk/securing-azure-with-microsoft-defender`
- Raw SKILL.md: https://api.skillmd.com/api/skills/killvxk/securing-azure-with-microsoft-defender/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: DevOps & Infra
- License: Apache-2.0
- Author: killvxk (https://skillmd.com/u/killvxk)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/killvxk/securing-azure-with-microsoft-defender

---


# 使用 Microsoft Defender 保护 Azure

## 适用场景

- 在 Azure 订阅和资源组中部署云工作负载保护时
- 建立安全分数（Secure Score）基线并确定安全建议优先级时
- 将威胁保护扩展到包括 AWS 和 GCP 在内的多云环境时
- 为 AKS 集群和 Azure Container Registry 启用容器安全时
- 将 AI 工作负载安全与数据和 AI 安全仪表板集成时

**不适用于**：纯 AWS 环境（参见 implementing-aws-security-hub）、身份提供商配置（参见 managing-cloud-identity-with-okta），或网络层防火墙规则管理（参见 implementing-cloud-waf-rules）。

## 前置条件

- 具有安全管理员（Security Admin）或参与者（Contributor）角色的 Azure 订阅
- 在管理组级别启用适用于 Defender for Cloud 的 Azure Policy 计划
- 已为安全数据收集配置 Log Analytics 工作区
- 已获授权的 Microsoft Defender for Cloud 计划（服务器保护需要 P1 或 P2）

## 工作流程

### 步骤 1：启用 Defender for Cloud 计划

为每种工作负载类型激活 Defender 计划：服务器、容器、App Service、存储、数据库、Key Vault、资源管理器和 DNS。每个计划提供专项威胁检测和漏洞评估。

```powershell
# 启用服务器 Defender Plan 2
az security pricing create --name VirtualMachines --tier Standard --subplan P2

# 启用容器 Defender
az security pricing create --name Containers --tier Standard

# 启用带恶意软件扫描的存储 Defender
az security pricing create --name StorageAccounts --tier Standard \
  --extensions '[{"name":"OnUploadMalwareScanning","isEnabled":"True",
  "additionalExtensionProperties":{"CapGBPerMonthPerStorageAccount":"5000"}}]'

# 启用数据库 Defender
az security pricing create --name SqlServers --tier Standard
az security pricing create --name CosmosDbs --tier Standard

# 启用 Key Vault Defender
az security pricing create --name KeyVaults --tier Standard

# 验证所有已启用的计划
az security pricing list --query "[?pricingTier=='Standard'].{Plan:name, Tier:pricingTier, SubPlan:subPlan}" -o table
```

### 步骤 2：配置多云环境连接器

将 AWS 账户和 GCP 项目连接到 Defender for Cloud，实现跨云提供商的统一安全态势管理。

```powershell
# 创建用于 CSPM 的 AWS 连接器
az security security-connector create \
  --name aws-production-connector \
  --resource-group security-rg \
  --environment-name AWS \
  --hierarchy-identifier "123456789012" \
  --offerings '[{
    "offeringType": "CspmMonitorAws",
    "nativeCloudConnection": {"cloudRoleArn": "arn:aws:iam::123456789012:role/DefenderForCloudRole"}
  }]'

# 创建 GCP 连接器
az security security-connector create \
  --name gcp-production-connector \
  --resource-group security-rg \
  --environment-name GCP \
  --hierarchy-identifier "my-gcp-project-id" \
  --offerings '[{"offeringType": "CspmMonitorGcp"}]'
```

### 步骤 3：审查并确定安全分数建议优先级

分析所有订阅的安全分数。每项建议都包含基于资产暴露、互联网暴露和威胁情报上下文的风险优先级。

```powershell
# 获取当前安全分数
az security secure-score list \
  --query "[].{Name:displayName, Score:current, Max:max, Percentage:percentage}" -o table

# 列出按严重级别排序的不健康建议
az security assessment list \
  --query "[?properties.status.code=='Unhealthy'].{Name:properties.displayName, Severity:properties.metadata.severity, Resources:properties.resourceDetails.id}" \
  --output table

# 获取特定建议详情
az security assessment show \
  --assessment-name "4fb67663-9ab9-475d-b026-8c544cced439" \
  --query "{Name:properties.displayName, Description:properties.metadata.description, Remediation:properties.metadata.remediationDescription}"
```

### 步骤 4：配置自适应应用控制和 JIT 访问

启用即时（Just-In-Time）虚拟机访问，仅在需要时开放管理端口以减少攻击面；部署自适应应用控制（Adaptive Application Controls）以将批准的可执行文件加入白名单。

```powershell
# 启用 JIT 虚拟机访问策略
az security jit-policy create \
  --resource-group production-rg \
  --location eastus \
  --name default \
  --virtual-machines '[{
    "id": "/subscriptions/sub-id/resourceGroups/production-rg/providers/Microsoft.Compute/virtualMachines/web-server-01",
    "ports": [
      {"number": 22, "protocol": "TCP", "allowedSourceAddressPrefix": "10.0.0.0/8", "maxRequestAccessDuration": "PT3H"},
      {"number": 3389, "protocol": "TCP", "allowedSourceAddressPrefix": "10.0.0.0/8", "maxRequestAccessDuration": "PT1H"}
    ]
  }]'

# 申请 JIT 访问
az security jit-policy initiate \
  --resource-group production-rg \
  --location eastus \
  --name default \
  --virtual-machines '[{
    "id": "/subscriptions/sub-id/resourceGroups/production-rg/providers/Microsoft.Compute/virtualMachines/web-server-01",
    "ports": [{"number": 22, "duration": "PT1H", "allowedSourceAddressPrefix": "203.0.113.10"}]
  }]'
```

### 步骤 5：设置安全告警和工作流自动化

配置工作流自动化，在生成安全告警时触发 Logic Apps 或 Azure Functions。为严重（Critical）和高危（High）级别告警设置电子邮件通知。

```powershell
# 创建高严重级别告警的工作流自动化
az security automation create \
  --name high-severity-alert-automation \
  --resource-group security-rg \
  --scopes '[{"description": "生产订阅", "scopePath": "/subscriptions/<sub-id>"}]' \
  --sources '[{
    "eventSource": "Alerts",
    "ruleSets": [{"rules": [{"propertyJPath": "Severity", "propertyType": "String", "expectedValue": "High", "operator": "Equals"}]}]
  }]' \
  --actions '[{
    "logicAppResourceId": "/subscriptions/<sub-id>/resourceGroups/security-rg/providers/Microsoft.Logic/workflows/alert-handler",
    "actionType": "LogicApp"
  }]'

# 配置电子邮件通知
az security contact create \
  --name default \
  --email "soc-team@company.com" \
  --alert-notifications "on" \
  --alerts-to-admins "on"
```

### 步骤 6：启用云安全图和攻击路径分析

使用云安全图（Cloud Security Graph）可视化攻击者可能利用的、通往关键资产的攻击路径。基于实际可利用性而非单个发现的严重级别来确定修复优先级。

```
# 通过 Resource Graph 查询攻击路径
az graph query -q "
  securityresources
  | where type == 'microsoft.security/attackpaths'
  | extend riskLevel = properties.riskLevel
  | extend entryPoint = properties.attackPathDisplayName
  | where riskLevel == 'Critical'
  | project entryPoint, riskLevel, properties.description
  | limit 20
"
```

## 核心概念

| 术语 | 定义 |
|------|------|
| 安全分数（Secure Score） | 基于已实施安全建议百分比的组织安全态势数值度量，按订阅评分并在管理组级别汇总 |
| 云安全图（Cloud Security Graph） | 映射云资源、身份、网络暴露和漏洞之间关系的图数据库，用于识别可利用的攻击路径 |
| 攻击路径分析（Attack Path Analysis） | 攻击者从入口点到高价值目标可遵循的多步骤攻击链可视化，按真实可利用性排定优先级 |
| 即时访问（Just-In-Time Access） | 默认阻止管理端口，仅在经批准的请求下临时开放的安全控制措施，减少虚拟机攻击面 |
| 自适应应用控制（Adaptive Application Controls） | 基于机器学习的允许列表，推荐哪些应用程序应在虚拟机上运行，并对偏差发出告警 |
| Defender CSPM | 增强型云安全态势管理计划，提供无代理扫描、攻击路径分析和云安全图功能 |
| 安全连接器（Security Connector） | 将 AWS 或 GCP 环境连接到 Defender for Cloud 进行多云态势管理的集成节点 |

## 工具与系统

- **Microsoft Defender for Cloud**：核心 CNAPP 平台，跨 Azure、AWS 和 GCP 提供 CSPM、云工作负载保护（CWP）和威胁防护
- **Azure Resource Graph**：用于大规模探索云安全图数据和攻击路径的查询引擎
- **Azure Logic Apps**：工作流自动化平台，用于构建由 Defender 告警触发的修复 Playbook
- **Microsoft Defender 门户**：将 Defender for Cloud 与 XDR、Sentinel 和威胁情报集成的统一安全运营控制台
- **Azure Policy**：将 Defender for Cloud 建议作为合规要求强制执行的治理引擎

## 常见场景

### 场景：具有已知漏洞的互联网暴露 SQL Server

**场景背景**：Defender for Cloud 识别出一个 Azure SQL Server 具有公开端点、未修补的严重 CVE，以及一个同时具有数据库所有者权限的服务主体（Service Principal），该服务主体还能访问包含生产加密密钥的 Key Vault。

**方法**：
1. 审查云安全图中的攻击路径：互联网 -> SQL Server（CVE）-> 服务主体 -> Key Vault
2. 立即将 SQL Server 防火墙限制为仅使用私有端点
3. 通过 Azure Update Management 应用 SQL Server 安全补丁
4. 轮换服务主体凭据，并将其权限范围限定为仅所需的数据库操作
5. 添加 Key Vault 访问策略，要求服务主体通过托管身份（Managed Identity）而非基于密钥的凭据进行认证
6. 在 24 小时内验证 Defender CSPM 中攻击路径已解决

**常见陷阱**：仅关注 SQL 漏洞本身会遗漏通往 Key Vault 的横向移动路径。在未更新应用程序连接字符串的情况下限制端点会导致服务中断。

## 输出格式

```
Microsoft Defender for Cloud 安全报告
=============================================
租户: acme-corp.onmicrosoft.com
监控订阅数: 12
报告日期: 2025-02-23

安全分数: 72/100

DEFENDER 计划状态:
  服务器（P2）:   已启用 - 156 台虚拟机受保护
  容器:           已启用 - 8 个 AKS 集群受保护
  存储:           已启用 - 342 个存储账户，恶意软件扫描激活
  数据库:         已启用 - 23 个 SQL Server，5 个 Cosmos DB 账户
  Key Vault:      已启用 - 18 个密钥库受监控
  AWS 连接器:     已启用 - 3 个账户已连接
  GCP 连接器:     已启用 - 2 个项目已连接

严重攻击路径:
  [AP-001] 互联网 -> 虚拟机（RDP 开放）-> 托管身份 -> 存储（PII 数据）
    风险: 严重 | 受影响资源: 3 | 修复建议: 关闭 RDP，限制托管身份范围
  [AP-002] 互联网 -> App Service（SQL 注入漏洞）-> SQL DB -> 服务主体 -> Key Vault
    风险: 严重 | 受影响资源: 5 | 修复建议: 修补应用，使用私有端点

告警摘要（最近 30 天）:
  严重: 5 | 高危: 23 | 中危: 67 | 低危: 134
  主要告警类型:
    - 可疑登录活动（18）
    - 存储中检测到恶意软件（7）
    - 异常资源部署（12）
```

