| name | implementing-azure-defender-for-cloud |
| description | 实施 Microsoft Defender for Cloud,为虚拟机、容器、数据库和存储启用云安全态势管理和工作负载保护,配置安全建议,并通过自动修复设置自适应安全控制。
|
| domain | cybersecurity |
| subdomain | cloud-security |
| tags | ["cloud-security","azure","defender-for-cloud","cspm","cwpp","security-recommendations"] |
| version | 1.0 |
| author | mahipal |
| license | Apache-2.0 |
实施 Azure Defender for Cloud
适用场景
- 跨 Azure 订阅启用全面安全监控时
- 为虚拟机(VM)、容器、SQL、存储和 Key Vault 实施云工作负载保护时
- 合规要求需要针对监管框架进行持续评估时
- 构建响应检测到的威胁的自适应安全控制时
- 集中来自 Azure 原生和混合工作负载的安全发现结果时
不适用于:仅针对非 Azure 工作负载的保护(使用 AWS Security Hub 或 GCP SCC)、应用级安全测试(使用 Azure DevOps DAST/SAST),或特定于身份的保护(使用 Microsoft Defender for Identity)。
前置条件
- 具有参与者(Contributor)或安全管理员(Security Admin)角色的 Azure 订阅
- 已启用 Azure Policy 用于合规评估
- 用于诊断数据收集的 Log Analytics 工作区
- 已通过 Azure Arc 连接混合服务器用于混合服务器保护
- Defender 计划的定价层已设置为标准版(Standard),免费版仅提供 CSPM)
工作流程
步骤 1:启用 Defender for Cloud 计划
为需要保护的每种工作负载类型启用相应的 Defender 计划。
az security pricing create --name CloudPosture --tier standard
az security pricing create --name VirtualMachines --tier standard \
--subplan P2
az security pricing create --name Containers --tier standard
az security pricing create --name StorageAccounts --tier standard \
--subplan PerStorageAccount
az security pricing create --name SqlServers --tier standard
az security pricing create --name KeyVaults --tier standard
az security pricing create --name AppServices --tier standard
az security pricing list \
--query "[].{Plan:name, Tier:pricingTier, SubPlan:subPlan}" -o table
步骤 2:配置安全代理自动预置
启用监控代理到 VM 和容器的自动部署。
az security auto-provisioning-setting update \
--name default --auto-provision on
az security workspace-setting create \
--name default \
--target-workspace "/subscriptions/SUB_ID/resourceGroups/RG/providers/Microsoft.OperationalInsights/workspaces/SecurityWorkspace"
az security setting update \
--name Sentinel \
--setting-kind DataExportSettings
az security auto-provisioning-setting list -o table
步骤 3:审查并优先处理安全建议
获取安全建议,并根据安全评分影响确定修复优先级。
az security secure-score list \
--query "[].{Name:displayName, Current:current, Max:max, Percentage:percentage}" -o table
az security assessment list \
--query "[?status.code=='Unhealthy'].{Name:displayName, Severity:metadata.severity, Category:metadata.category, ResourceCount:status.cause}" \
-o table
az security assessment list \
--query "[?status.code=='Unhealthy'] | sort_by(@, &metadata.severity)" \
-o table
az security assessment show \
--name ASSESSMENT_ID \
--query "{Name:displayName, Description:metadata.description, Severity:metadata.severity, Remediation:metadata.remediationDescription}"
az security secure-score-controls list \
--query "[].{Control:displayName, CurrentScore:current, MaxScore:max, NotHealthy:notHealthyResourceCount}" \
-o table
步骤 4:配置合规仪表盘
启用合规标准并监控跨订阅的遵从情况。
az security regulatory-compliance-standards list \
--query "[].{Standard:name, State:state}" -o table
az security regulatory-compliance-standards update \
--name "CIS-Azure-2.0" --state "Enabled"
az security regulatory-compliance-standards update \
--name "PCI-DSS-4.0" --state "Enabled"
az security regulatory-compliance-standards update \
--name "NIST-SP-800-53-R5" --state "Enabled"
az security regulatory-compliance-controls list \
--standard-name "CIS-Azure-2.0" \
--query "[].{Control:id, Description:displayName, State:state, PassedResources:passedResources, FailedResources:failedResources}" \
-o table
az security regulatory-compliance-assessments list \
--standard-name "CIS-Azure-2.0" \
--control-name "2.1" \
--query "[?state=='Failed'].{Assessment:id, State:state}" -o table
步骤 5:设置安全告警和自动化
配置告警通知和自动响应工作流。
az security contact create \
--name "SecurityTeam" \
--email "security-ops@company.com" \
--phone "+1-555-0199" \
--alert-notifications on \
--alerts-to-admins on
az security alert list \
--query "[?status=='Active'].{Name:alertDisplayName, Severity:severity, Time:timeGeneratedUtc, Status:status}" \
-o table
az security automation create \
--name "high-severity-alert-response" \
--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-response\",
\"actionType\":\"LogicApp\"
}]"
步骤 6:实施自适应应用控制和 JIT 虚拟机访问
配置用于运行时安全的高级工作负载保护功能。
az security jit-policy create \
--resource-group "production-rg" \
--name "jit-policy" \
--virtual-machines "[{
\"id\":\"/subscriptions/SUB_ID/resourceGroups/production-rg/providers/Microsoft.Compute/virtualMachines/web-server-01\",
\"ports\":[
{\"number\":22,\"protocol\":\"TCP\",\"allowedSourceAddressPrefix\":\"*\",\"maxRequestAccessDuration\":\"PT3H\"},
{\"number\":3389,\"protocol\":\"TCP\",\"allowedSourceAddressPrefix\":\"*\",\"maxRequestAccessDuration\":\"PT3H\"}
]
}]"
az security jit-policy initiate \
--resource-group "production-rg" \
--name "jit-policy" \
--virtual-machines "[{
\"id\":\"VM_ID\",
\"ports\":[{\"number\":22,\"endTimeUtc\":\"2026-02-23T15:00:00Z\",\"allowedSourceAddressPrefix\":\"10.0.1.50\"}]
}]"
az security adaptive-application-controls list \
--query "[].{Group:displayName, Recommendation:recommendationAction, VMCount:vmRecommendations|length(@)}" \
-o table
核心概念
| 术语 | 定义 |
|---|
| Microsoft Defender for Cloud | Azure 原生安全平台,在 Azure、混合和多云环境中提供 CSPM(云安全态势管理)和 CWP(云工作负载保护) |
| 安全评分(Secure Score) | 基于已实施安全建议百分比的组织安全态势数值衡量指标 |
| 安全建议(Security Recommendation) | Defender for Cloud 提供的可操作指导,用于改善安全态势,按严重程度和安全评分影响排列优先级 |
| Defender 计划(Defender Plan) | 针对特定资源类型启用高级威胁检测的工作负载专用保护层(服务器、容器、SQL、存储等) |
| 实时虚拟机访问(Just-In-Time VM Access) | 默认阻止管理端口(SSH/RDP)并按需授予限时访问权限的功能,可降低攻击面 |
| 自适应应用控制(Adaptive Application Controls) | 基于机器学习的白名单机制,推荐哪些应用程序应允许在 VM 上运行 |
工具与系统
- Microsoft Defender for Cloud:具备 CSPM、CWP 和合规能力的中央安全平台
- Azure Policy:Defender for Cloud 用于评估和强制执行安全配置的治理服务
- Log Analytics 工作区:Defender 代理收集的安全遥测数据的后端数据存储
- Azure Logic Apps:由 Defender 告警触发的事件响应工作流自动化
- Azure Arc:将 Defender for Cloud 保护扩展到混合和多云服务器及 Kubernetes 集群
常见场景
场景:跨多订阅企业推广 Defender for Cloud
场景背景:一家拥有 20 个 Azure 订阅的企业需要启用具有服务器、容器和 SQL 保护的 Defender for Cloud,同时针对 CIS Azure 2.0 建立合规基线。
方法:
- 使用 Azure Policy 计划在所有订阅中启用 CSPM 计划(CloudPosture)
- 在生产订阅上启用 Defender for Servers P2、Containers 和 SQL
- 配置自动预置,将 Log Analytics 代理部署到所有虚拟机
- 启用 CIS Azure 2.0 和 PCI DSS 4.0 合规标准
- 创建安全联系人,配置告警通知到 SOC 团队
- 通过 Logic Apps 为高严重性告警设置工作流自动化
- 为所有生产服务器启用 JIT 虚拟机访问,消除持久化 SSH/RDP 暴露
- 为管理层创建每周安全评分报告
常见陷阱:Defender for Servers P2 按服务器每小时计费。对于拥有大量虚拟机的环境,成本可能快速增加。开发订阅使用 Defender for Servers P1,仅在生产环境使用 P2。代理自动预置可能与 SCCM 或其他工具管理的现有代理部署产生冲突。
输出格式
Microsoft Defender for Cloud 部署报告
=================================================
组织: Acme Corp
订阅数量: 20(12 个生产,8 个非生产)
部署日期: 2026-02-23
已启用的 DEFENDER 计划:
CloudPosture (CSPM): 20 / 20 个订阅
Servers P2: 12 / 20(仅生产)
Containers: 12 / 20(仅生产)
SQL: 12 / 20(仅生产)
Storage: 20 / 20 所有订阅
Key Vault: 20 / 20 所有订阅
安全评分:
当前: 62%(基线)
目标: 90 天内达到 80%
合规状态(CIS Azure 2.0):
合规控制项: 78 / 142(55%)
不合规控制项: 52 / 142
不适用: 12 / 142
建议:
严重: 8 条建议影响 34 个资源
高: 24 条建议影响 89 个资源
中: 56 条建议影响 234 个资源
低: 34 条建议影响 112 个资源
安全告警(过去 7 天):
高严重性: 3
中严重性: 12
低严重性: 28