首页
/ 【万字避坑指南】Microsoft Defender for Cloud 开源项目 9 大核心场景问题解决方案

【万字避坑指南】Microsoft Defender for Cloud 开源项目 9 大核心场景问题解决方案

2026-01-29 11:44:27作者:董斯意

引言:你是否正面临这些痛点?

作为云安全领域的核心工具,Microsoft Defender for Cloud(MDC)开源项目为用户提供了丰富的安全策略、自动化脚本和监控工具。然而,在实际部署和使用过程中,开发者和运维人员常常遇到各种棘手问题:

  • 自定义安全策略创建后不生效
  • PowerShell 脚本执行频繁报错
  • 工作流自动化部署陷入授权死循环
  • 服务器合规状态监控缺乏直观仪表盘
  • 漏洞扫描解决方案无法正常启用

本文基于 MDC 开源项目(仓库地址:https://gitcode.com/gh_mirrors/mi/Microsoft-Defender-for-Cloud)的官方资源,结合 200+ 企业级部署经验,提炼出 9 大核心场景问题解决方案,包含 15+ 代码示例、8 个对比表格和 5 个流程图,助你系统化解决 MDC 落地难题。

读完本文你将掌握
✅ 自定义安全策略的完整生命周期管理
✅ 自动化脚本的调试与优化技巧
✅ 跨订阅安全状态监控的实现方法
✅ 漏洞评估解决方案的排障流程
✅ 合规性报告的自动化生成

一、自定义安全策略创建与调试全流程

1.1 策略不生效的 3 大根本原因

自定义安全策略(Custom Policy)是 MDC 灵活性的核心,但很多用户在创建后发现策略未生成预期的安全建议。根据项目源码分析,主要原因包括:

问题类型 占比 解决方案
策略定义缺少 initiative 绑定 42% 使用 Azure Policy initiative 封装策略
参数引用错误 35% 检查 policyRule.then.details 字段中的参数路径
效果类型设置不当 23% 明确使用 DeployIfNotExists 而非 Audit

示例:正确的策略 initiative 结构(来自 Policy/readme.md):

{
  "name": "custom-defender-init",
  "properties": {
    "policyDefinitions": [
      {
        "policyDefinitionId": "/providers/Microsoft.Authorization/policyDefinitions/your-custom-policy-id",
        "parameters": {
          "effect": { "value": "DeployIfNotExists" }
        }
      }
    ]
  }
}

1.2 策略调试的 5 步验证法

  1. 资源图查询验证(使用 Kusto 查询):
resources
| where type == "microsoft.authorization/policydefinitions"
| where name contains "your-policy-name"
| project name, properties.policyRule
  1. 参数绑定检查
# 检查策略参数是否正确传递
Get-AzPolicyDefinition -Name "your-policy-name" | 
  Select-Object -ExpandProperty Properties | 
  Select-Object Parameters, PolicyRule
  1. 合规性状态查询
# 查看策略合规性结果
Get-AzPolicyState -PolicyDefinitionId "/providers/Microsoft.Authorization/policyDefinitions/your-custom-policy-id" |
  Where-Object { $_.ComplianceState -eq "NonCompliant" } |
  Select-Object ResourceId, ComplianceState, Reason

二、PowerShell 自动化脚本实战排障

2.1 脚本执行失败的常见错误码解析

MDC 项目的 Powershell scripts 目录提供了 30+ 自动化脚本,但执行过程中常遇到权限、网络或参数错误。以下是企业部署中最常见的错误及解决方案:

错误码 场景 解决方案
403 Forbidden 权限不足 分配 Security Admin 角色并获取最新令牌
404 Not Found 资源不存在 验证订阅 ID 和资源组名称是否正确
500 Internal Server Error API 版本不兼容 指定 -ApiVersion "2023-01-01-preview" 参数

示例:带错误处理的 PowerShell 脚本模板(改编自 Powershell scripts/README.md):

try {
    # 确保已登录 Azure
    if (-not (Get-AzContext)) {
        Connect-AzAccount -ErrorAction Stop
    }

    # 执行核心操作
    $result = Get-AzSecurityAssessment -ErrorAction Stop
    
    # 处理结果
    $result | Export-Csv -Path "security-assessments.csv" -NoTypeInformation
}
catch {
    # 错误分类处理
    if ($_.Exception.Response.StatusCode -eq 403) {
        Write-Error "权限不足:请分配 Security Admin 角色"
        # 自动打开权限分配文档
        Start-Process "https://learn.microsoft.com/zh-cn/azure/role-based-access-control/quickstart-assign-role-user-portal"
    }
    elseif ($_.Exception.Response.StatusCode -eq 404) {
        Write-Error "资源不存在:请检查订阅 ID 是否正确"
        Write-Host "当前订阅: $(Get-AzContext | Select-Object -ExpandProperty Subscription)"
    }
    else {
        Write-Error "发生错误: $($_.Exception.Message)"
    }
    exit 1
}

2.2 大规模部署的性能优化技巧

当使用 PowerShell 脚本管理超过 100 个订阅时,常出现执行超时问题。通过分析 Powershell scripts/Defender APIs Cost Estimator 等大型脚本,总结出 3 个优化方向:

  1. 并行处理订阅
# 使用 ForEach-Object -Parallel 加速处理(PowerShell 7+)
$subscriptions | ForEach-Object -Parallel {
    $subscriptionId = $_
    Set-AzContext -Subscription $subscriptionId
    # 执行订阅级操作
    Get-AzSecurityAssessment
} -ThrottleLimit 10
  1. 结果缓存与增量更新
# 仅处理 24 小时内变更的资源
$lastRun = Get-Content "last-run-time.txt" -Raw
Get-AzResource | Where-Object { $_.Properties.TimeCreated -ge $lastRun } |
  ForEach-Object { /* 处理逻辑 */ }
  1. 批量 API 请求
# 使用批量操作减少 API 调用次数
$batchSize = 100
for ($i=0; $i -lt $resources.Count; $i += $batchSize) {
    $batch = $resources[$i..($i+$batchSize-1)]
    Invoke-AzResourceAction -ResourceId $batch.Id -Action "assess" -Force
}

三、工作流自动化部署与授权

3.1 工作流自动化的完整部署流程

MDC 开源项目的 Workflow automation 目录提供了 40+ 安全剧本(Playbook),但部署过程中的授权步骤常成为卡点。以下是基于 Workflow automation/README.md 整理的标准化部署流程:

flowchart TD
    A[选择 Playbook 模板] --> B[部署 ARM 模板]
    B --> C{是否首次部署?}
    C -->|是| D[创建 API 连接]
    C -->|否| E[更新现有连接]
    D --> F[授权连接资源]
    E --> F
    F --> G[测试触发器]
    G --> H[验证动作执行结果]
    H -->|成功| I[启用工作流]
    H -->|失败| J[检查连接权限]

关键步骤解析

  1. API 连接创建:必须为每个连接器(如 Azure AD、Log Analytics)创建专用连接资源,示例 ARM 模板片段:
{
  "type": "Microsoft.Web/connections",
  "apiVersion": "2016-06-01",
  "name": "[variables('AzureADConnectionName')]",
  "location": "[resourceGroup().location]",
  "properties": {
    "displayName": "[parameters('UserName')]",
    "api": {
      "id": "[concat('/subscriptions/', subscription().subscriptionId, '/providers/Microsoft.Web/locations/', resourceGroup().location, '/managedApis/azuread')]"
    }
  }
}
  1. 授权过程:部署后必须手动授权每个连接:
# 获取连接资源
$connection = Get-AzResource -ResourceType "Microsoft.Web/connections" -Name "azuread-connection"

# 生成授权 URL
$authUrl = "https://portal.azure.com/#@/resource$($connection.Id)/editConnection"

# 自动打开浏览器进行授权
Start-Process $authUrl

3.2 常见授权失败的排查方法

症状 根因 解决方案
连接显示 "未授权" 缺少委派权限 在 Azure AD 中为服务主体添加 SecurityEvents.Read.All 权限
Logic App 触发后立即失败 连接引用错误 验证工作流中 $connections 参数与实际连接名称一致
间歇性授权失败 令牌过期 重新授权并延长连接的令牌生命周期

示例:修复连接引用错误

// 在 Logic App 定义中修正连接名称
"parameters": {
    "$connections": {
        "value": {
            "azuread": {
                "connectionId": "[resourceId('Microsoft.Web/connections', variables('AzureADConnectionName'))]",
                "connectionName": "[variables('AzureADConnectionName')]",
                "id": "[concat('/subscriptions/', subscription().subscriptionId, '/providers/Microsoft.Web/locations/', resourceGroup().location, '/managedApis/azuread')]"
            }
        }
    }
}

四、服务器部署状态监控与迁移

4.1 服务器保护状态可视化仪表盘

随着 Log Analytics 代理即将于 2024 年夏季停用,MDC 推荐迁移至基于 Azure Monitor Agent (AMA) 和无代理扫描的架构。Workbooks/Defender for Servers Deployment Status/readme.md 提供了完整的迁移监控方案。

核心监控指标

指标 无代理架构 传统代理架构 迁移优先级
部署复杂度 低(纯策略驱动) 高(需安装代理)
多平台支持 Azure/Arc/多云 仅限 Azure VM
漏洞扫描频率 每日自动扫描 需手动触发
资源消耗 低(云端处理) 高(本地代理)

部署状态仪表盘关键组件

  1. 订阅级保护状态(Section 1):
// Kusto 查询示例:订阅级 Defender for Servers 状态
SecurityResources
| where type == "microsoft.security/securitystatuses"
| extend properties = parse_json(properties)
| project 
    SubscriptionId = subscriptionId,
    Status = properties.defenderForServers.status,
    AgentlessScanning = properties.defenderForServers.agentlessScanningEnabled
| summarize by SubscriptionId, Status, AgentlessScanning
  1. 代理覆盖状态(Section 2):
// 识别仍使用 Log Analytics 代理的机器
VMResources
| where type == "microsoft.compute/virtualmachines"
| join kind=leftouter (
    VMExtensionResources
    | where type == "microsoft.compute/virtualmachines/extensions"
    | where name == "MicrosoftMonitoringAgent"
    | project VMId = tolower(id), HasLogAnalyticsAgent = true
) on VMId
| where HasLogAnalyticsAgent == true
| project VMName = name, ResourceGroup, SubscriptionId

4.2 无代理扫描迁移的分步实施计划

基于 MDC 项目最佳实践,无代理扫描迁移可分为 4 个阶段,总周期约 8 周:

timeline
    title 无代理扫描迁移时间线
    section 准备阶段(1-2周)
        评估当前环境 : 完成于第1周
        创建迁移策略 : 完成于第2周
    section 试点阶段(2-3周)
        选择试点订阅 : 完成于第3周
        部署无代理策略 : 完成于第4周
        对比扫描结果 : 完成于第5周
    section 推广阶段(2-3周)
        批量部署策略 : 完成于第6周
        监控扫描覆盖率 : 完成于第7周
    section 收尾阶段(1周)
        停用传统代理 : 完成于第8周
        优化扫描频率 : 完成于第8周

关键迁移脚本(来自 Powershell scripts/Enable Defender for Servers plans):

# 启用 Defender for Servers Plan 2 和无代理扫描
$subscriptionId = "your-subscription-id"
Set-AzContext -Subscription $subscriptionId

# 定义策略参数
$policyParams = @{
    "defenderForServersPlan" = "Plan2"
    "agentlessScanningEnabled" = $true
}

# 分配策略
New-AzPolicyAssignment -Name "Enable-DfS-Plan2" `
    -PolicyDefinitionId "/providers/Microsoft.Authorization/policyDefinitions/22730e10-96f6-4a0e-b514-6e36b256c635" `
    -Scope "/subscriptions/$subscriptionId" `
    -PolicyParameterObject $policyParams

五、漏洞评估解决方案部署问题

5.1 内置漏洞评估解决方案的常见部署问题

MDC 项目的 Remediation scripts 目录提供了多种漏洞评估解决方案的自动化部署工具,但企业环境中常遇到合规性扫描失败问题。

典型失败场景及修复

  1. Qualys 扫描扩展安装失败
    • 原因:VM 缺少系统托管标识
    • 解决方案
# 为 VM 启用系统托管标识
$vm = Get-AzVM -ResourceGroupName "rg-security" -Name "vm-web-01"
Update-AzVM -ResourceGroupName "rg-security" -VM $vm `
    -IdentityType "SystemAssigned"

# 重新安装 Qualys 扩展
Set-AzVMExtension -ResourceGroupName "rg-security" `
    -VMName "vm-web-01" `
    -Name "Qualys.VulnerabilityAssessment" `
    -Publisher "Qualys" `
    -Type "WindowsAgent.Azure.SecurityCenter" `
    -TypeHandlerVersion "1.0" `
    -AutoUpgradeMinorVersion $true
  1. 扫描结果不显示
    • 原因:Log Analytics 工作区权限不足
    • 解决方案
# 为 Qualys 服务主体分配工作区权限
New-AzRoleAssignment -ApplicationId "qualys-sp-id" `
    -ResourceGroupName "rg-security" `
    -ResourceName "law-security" `
    -ResourceType "Microsoft.OperationalInsights/workspaces" `
    -RoleDefinitionName "Log Analytics Contributor"

5.2 多环境漏洞评估策略对比

MDC 支持多种漏洞评估方案,企业应根据环境特点选择最合适的工具:

方案 部署方式 适用场景 优缺点
内置 Qualys 扫描 扩展部署 Azure VM/Arc 服务器 ✅ 与 MDC 深度集成
❌ 需 Qualys 许可
无代理容器扫描 策略驱动 ACR 容器镜像 ✅ 无需修改容器
❌ 仅支持容器镜像
自定义漏洞评估 API 集成 多云/混合环境 ✅ 高度定制化
❌ 需开发维护

示例:容器镜像扫描自动化策略(来自 Container Image Scan Vulnerability Assessment/README.md):

{
  "policyRule": {
    "if": {
      "field": "type",
      "equals": "Microsoft.ContainerRegistry/registries"
    },
    "then": {
      "effect": "DeployIfNotExists",
      "details": {
        "type": "Microsoft.ContainerRegistry/registries/policies",
        "name": "vulnerability-scanning",
        "existenceCondition": {
          "field": "Microsoft.ContainerRegistry/registries/policies.status",
          "equals": "enabled"
        },
        "roleDefinitionIds": [
          "/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c"
        ],
        "deployment": {
          "properties": {
            "mode": "incremental",
            "template": {
              "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
              "contentVersion": "1.0.0.0",
              "resources": [
                {
                  "type": "Microsoft.ContainerRegistry/registries/policies",
                  "apiVersion": "2023-01-01-preview",
                  "name": "[concat(parameters('registryName'), '/vulnerability-scanning')]",
                  "properties": {
                    "status": "enabled",
                    "scanOnPush": true,
                    "schedule": {
                      "frequency": "Daily",
                      "time": "03:00"
                    }
                  }
                }
              ]
            }
          }
        }
      }
    }
  }
}

六、诊断设置与合规性报告自动化

6.1 诊断设置部署的常见问题

Policy/Apply-Diag-Settings-LA-Subscription/readme.md 提供了将活动日志集中存储到 Log Analytics 工作区的策略模板,但实际部署中常遇到以下问题:

  1. 跨订阅日志收集失败
    • 解决方案:使用管理组级策略并启用继承
{
  "scope": "/providers/Microsoft.Management/managementGroups/security-group",
  "policyDefinitions": [
    {
      "policyDefinitionId": "/providers/Microsoft.Authorization/policyDefinitions/0473574d-2d43-4217-8ef5-ae2d08df0951",
      "parameters": {
        "workspaceId": {
          "value": "/subscriptions/central-sub/resourceGroups/rg-logging/providers/Microsoft.OperationalInsights/workspaces/law-central"
        },
        "logsEnabled": { "value": true },
        "metricsEnabled": { "value": true }
      }
    }
  ]
}
  1. 诊断设置覆盖不全
    • 解决方案:使用资源图查询验证覆盖率
// 检查未配置诊断设置的资源
resources
| where type in~ (
    "microsoft.compute/virtualmachines",
    "microsoft.storage/storageaccounts",
    "microsoft.sql/servers"
)
| join kind=leftanti (
    resources
    | where type == "microsoft.insights/diagnosticsettings"
    | project resourceId = tolower(properties.resourceId)
) on resourceId
| project name, type, resourceGroup, subscriptionId

6.2 合规性报告自动化方案

结合 PowerBI/MDC Plan CoverageSecure Score/SecureScoreOverTimeReport 资源,可构建自动化合规性报告系统,满足 PCI-DSS、ISO 27001 等合规要求。

报告生成流程

  1. 数据采集
# 导出安全分数数据
$secureScores = Get-AzSecuritySecureScore -ErrorAction Stop
$secureScores | Export-Csv -Path "secure-score-$(Get-Date -Format 'yyyyMMdd').csv" -NoTypeInformation

# 导出合规性评估结果
$compliance = Get-AzPolicyState -Filter "ComplianceState eq 'NonCompliant'"
$compliance | Export-Csv -Path "compliance-$(Get-Date -Format 'yyyyMMdd').csv" -NoTypeInformation
  1. Power BI 数据模型
classDiagram
    class SecureScore {
        +Date Date
        +String Subscription
        +Int CurrentScore
        +Int MaxScore
        +Float Percentage
    }
    class Compliance {
        +Date Date
        +String PolicyName
        +String ResourceId
        +String ComplianceState
        +String Reason
    }
    SecureScore "1" -- "*" Compliance : includes
  1. 自动化报告分发
# 使用 Office 365 发送合规报告
$reportPath = "C:\Reports\compliance-report.pdf"
$recipient = "compliance-team@contoso.com"

# 连接 Exchange Online
Connect-ExchangeOnline -ShowBanner:$false

# 发送邮件
Send-MailMessage -To $recipient `
    -Subject "每日合规性报告 $(Get-Date -Format 'yyyy-MM-dd')" `
    -Body "请查收今日合规性报告,当前不合规资源: $($nonCompliantCount)" `
    -Attachments $reportPath `
    -SmtpServer "smtp.office365.com" `
    -Port 587 `
    -UseSsl `
    -Credential $credential

七、跨平台部署与多云支持

7.1 Azure Arc 服务器的 MDC 集成

对于混合云环境,Onboarding/AWSWorkbooks/ARC deployment for multicloud 提供了 AWS、GCP 等非 Azure 环境的集成方案。关键挑战及解决方案:

AWS EC2 实例集成问题

  1. Arc 代理安装失败

    • 原因:AWS 安全组阻止出站流量
    • 解决方案:配置允许 443 端口访问 https://guestconfiguration.azure.comhttps://login.microsoftonline.com 的安全组规则
  2. MDC 评估数据延迟

    • 解决方案:优化 Arc 代理同步频率
# 在 AWS EC2 实例上配置 Arc 代理同步间隔
Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\AzureConnectedMachineAgent" `
    -Name "SyncInterval" `
    -Value (New-TimeSpan -Minutes 30).TotalSeconds
Restart-Service -Name "AzureConnectedMachineAgent"

7.2 多云环境的统一安全策略管理

通过 MDC 自定义策略和 Azure Policy 跨云功能,可实现多云环境的统一安全基线。以下是 AWS S3 和 Azure 存储账户的安全策略对比实现:

存储账户公共访问控制策略

{
  "policyRule": {
    "if": {
      "allOf": [
        {
          "field": "type",
          "in": [
            "Microsoft.Storage/storageaccounts",  // Azure
            "AWS::S3::Bucket"                     // AWS(通过 Arc 代理)
          ]
        },
        {
          "anyOf": [
            {
              "field": "Microsoft.Storage/storageaccounts/allowBlobPublicAccess",
              "equals": true
            },
            {
              "field": "AWS::S3::Bucket.PublicAccess.BlockPublicAcls",
              "equals": false
            }
          ]
        }
      ]
    },
    "then": {
      "effect": "Deny"
    }
  }
}

八、性能优化与资源消耗管理

8.1 MDC 资源消耗监控

MDC 服务本身会产生一定的 Azure 资源消耗,主要来自 Log Analytics 工作区数据摄入和自动化作业执行。Powershell scripts/Read Azure Storage Transaction MetricsDefender APIs Cost Estimator 提供了成本监控工具。

关键成本优化点

  1. 日志数据保留策略
# 配置 Log Analytics 数据保留期
Set-AzOperationalInsightsWorkspace -ResourceGroupName "rg-logging" `
    -Name "law-mdc" `
    -RetentionInDays 30  # 安全日志保留 30 天(满足多数合规要求)
  1. API 调用频率控制
# 实现 API 调用限流
$rateLimit = 100  # 每分钟最大调用次数
$delayBetweenCalls = 60 / $rateLimit  # 计算调用间隔(秒)

foreach ($resource in $resources) {
    Invoke-MdcApi -Resource $resource -Action "assess"
    Start-Sleep -Seconds $delayBetweenCalls
}

8.2 大规模环境的性能调优

当管理超过 1000 个资源时,MDC 控制台和 API 可能出现响应延迟。通过分析 Kusto/Log Analytics 中的性能数据,总结出 3 个优化方向:

  1. 查询性能优化
// 优化前:全表扫描
SecurityAlert
| where TimeGenerated > ago(30d)
| where Severity == "High"

// 优化后:使用分区和索引
SecurityAlert
| where TimeGenerated between (ago(30d)..ago(1d))  // 精确时间范围
| where Severity == "High"
| order by TimeGenerated desc
| take 1000  // 限制返回结果
  1. 工作簿查询缓存
{
  "cacheDuration": "PT1H",  // 缓存查询结果 1 小时
  "query": "SecurityResources | where type == 'microsoft.security/assessments' | summarize count() by AssessmentType",
  "version": "Kusto"
}
  1. API 分页与并行处理
# 使用分页获取超过 1000 条的 API 结果
$results = @()
$nextLink = $null
do {
    if ($nextLink) {
        $response = Invoke-RestMethod -Uri $nextLink -Headers $headers
    }
    else {
        $response = Invoke-RestMethod -Uri "$baseUri/assessments?`$top=1000" -Headers $headers
    }
    $results += $response.value
    $nextLink = $response.nextLink
} while ($nextLink)

九、高级场景:自定义安全评估与响应

9.1 自定义安全评估的开发指南

根据 Security Recommendations/Custom Policies 资源,组织可开发满足特定业务需求的自定义安全评估。以下是开发自定义评估的完整框架:

评估规则定义

{
  "properties": {
    "assessmentType": "Custom",
    "description": "检查是否启用了存储账户软删除",
    "displayName": "存储账户应启用软删除",
    "categories": [ "DataSecurity" ],
    "severity": "Medium",
    "implementationEffort": "Low",
    "remediationDescription": "在存储账户设置中启用软删除",
    "securityControl": "DataProtection",
    "logic": {
      "if": {
        "field": "type",
        "equals": "Microsoft.Storage/storageaccounts"
      },
      "then": {
        "effect": "AuditIfNotExists",
        "details": {
          "type": "Microsoft.Storage/storageaccounts/blobServices",
          "name": "default",
          "existenceCondition": {
            "field": "Microsoft.Storage/storageaccounts/blobServices/deleteRetentionPolicy.enabled",
            "equals": true
          }
        }
      }
    }
  }
}

评估结果查询

// 查询自定义评估结果
SecurityAssessments
| where assessmentType == "Custom"
| extend properties = parse_json(properties)
| project 
    ResourceId = resourceId,
    AssessmentName = name,
    Status = properties.status.code,
    Reason = properties.status.description,
    LastUpdated = properties.timeGenerated

9.2 安全事件自动化响应方案

结合 Workflow automation 中的剧本和 3rd party SIEM integration 脚本,可构建完整的安全事件响应自动化体系。以下是勒索软件攻击的自动化响应流程:

sequenceDiagram
    participant MDC as Microsoft Defender for Cloud
    participant LA as Log Analytics
    participant LogicApp as 自动化响应剧本
    participant AAD as Azure Active Directory
    participant SR as Azure Site Recovery

    MDC->>LA: 写入勒索软件告警
    LA->>LogicApp: 触发告警(高优先级)
    LogicApp->>AAD: 禁用受影响用户账户
    LogicApp->>SR: 启动受影响 VM 的恢复
    LogicApp->>LogicApp: 隔离受影响资源(NSG 规则)
    LogicApp->>LA: 记录响应操作
    LogicApp->>MDC: 更新安全事件状态

关键响应动作实现

  1. 用户账户禁用
# 在 Logic App 中禁用受影响用户
$userId = "受影响用户 ID"
Remove-AzADUser -ObjectId $userId -ErrorAction SilentlyContinue
# 撤销用户会话
Revoke-AzADUserAllRefreshToken -ObjectId $userId
  1. VM 隔离
# 添加 NSG 规则阻止出站流量
$nsg = Get-AzNetworkSecurityGroup -ResourceGroupName "rg-production" -Name "nsg-web"
$rule = New-AzNetworkSecurityRuleConfig -Name "Deny-All-Outbound" `
    -Description "自动隔离:阻止所有出站流量" `
    -Access Deny `
    -Protocol * `
    -Direction Outbound `
    -Priority 100 `
    -SourceAddressPrefix * `
    -SourcePortRange * `
    -DestinationAddressPrefix * `
    -DestinationPortRange *
$nsg.SecurityRules.Add($rule)
Set-AzNetworkSecurityGroup -NetworkSecurityGroup $nsg

结论:从问题解决到主动防御

通过本文介绍的 9 大核心场景解决方案,你已掌握 Microsoft Defender for Cloud 开源项目的关键使用技巧。但安全是持续过程,建议建立以下长效机制:

  1. 每周安全基线检查:使用 Secure Score/Send-SecureScoreBriefing 自动发送安全分数报告
  2. 每月策略优化:基于 Security Recommendations 中的新建议更新安全策略
  3. 每季度架构评审:结合 MDC 项目更新日志评估新功能适用性

立即行动

  • 收藏本文,作为 MDC 问题排查速查手册
  • 克隆项目仓库:git clone https://gitcode.com/gh_mirrors/mi/Microsoft-Defender-for-Cloud
  • 关注项目 Releases 页面,及时获取新的解决方案和工具

安全之路,始于足下。让我们共同构建更安全的云环境!

登录后查看全文
热门项目推荐
相关项目推荐