You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:如何用PowerShell对接Microsoft XDR高危漏洞并自动创建Azure DevOps任务

问题

我已基于Azure DevOps REST API编写了用于自动创建任务的PowerShell脚本,最终目标是:当Microsoft XDR(Microsoft Security)检测到高危(High)或严重(Critical)级别的漏洞时,自动在Azure DevOps中创建任务,以便及时处置。目前已完成任务创建脚本,但无法实现XDR漏洞数据的获取,求可行方案。

已实现的Azure DevOps任务创建脚本

$pacToken = "Mytokens"
$organizationName = "MyOrganization"
$projectName = "MyProject"
$adoHeader = @{
    Authorization = "Basic {0}" -f [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f "", $pacToken)))
}
$adoTaskUri = "https://dev.azure.com/$organizationName/$projectName/_apis/wit/workitems/`$Task?api-version=5.1"

#Generate JSON body to make the REST API call
$body = @'
[
  {
    "op" : "add",
    "path" : "/fields/System.Title",
    "value" : ""
  },
  {
    "op" : "add",
    "path" : "/fields/System.Description",
    "value" : ""
  },
  {
    "op" : "add",
    "path" : "/fields/System.AssignedTo",
    "value" : ""
  }
]
'@

Invoke-RestMethod -Uri $adoTaskUri -ContentType "application/json-patch+json" -Body $body -headers $adoHeader -Method POST

获取XDR高危/严重漏洞的可行方案

方案1:使用Microsoft Graph API直接拉取漏洞数据

  • 在Azure AD中注册应用程序,授予SecurityVulnerability.Read.All的应用权限(需管理员同意)
  • 获取应用的租户ID、客户端ID、客户端密钥,用于获取Graph API访问令牌:
    $tenantId = "你的租户ID"
    $clientId = "你的应用客户端ID"
    $clientSecret = "你的应用客户端密钥"
    $tokenUri = "https://login.microsoftonline.com/$tenantId/oauth2/v2.0/token"
    $tokenBody = @{
        grant_type = "client_credentials"
        client_id = $clientId
        client_secret = $clientSecret
        scope = "https://graph.microsoft.com/.default"
    }
    $tokenResponse = Invoke-RestMethod -Uri $tokenUri -Method Post -Body $tokenBody
    $graphAuthHeader = @{ Authorization = "Bearer $($tokenResponse.access_token)" }
    
  • 调用Graph API筛选高危/严重漏洞:
    $vulnerabilityUri = "https://graph.microsoft.com/v1.0/security/vulnerabilities?`$filter=severity eq 'high' or severity eq 'critical'"
    $vulnerabilities = Invoke-RestMethod -Uri $vulnerabilityUri -Headers $graphAuthHeader -Method Get
    
  • 遍历返回的漏洞数据,将漏洞名称、ID、受影响资产等信息填充到Azure DevOps任务的$body中,自动触发任务创建。

方案2:通过XDR自动化规则+Webhook触发

  • 登录Microsoft XDR门户,创建新的自动化规则,触发条件设置为「漏洞严重性为高危或严重」
  • 添加「发送Webhook」响应动作,配置Webhook接收端点(可使用Azure Function或本地PowerShell简易HTTP服务,如PSServer模块)
  • 在Webhook接收脚本中,解析XDR发送的JSON格式漏洞数据,调用已有的Azure DevOps任务创建脚本,动态填充任务标题、描述等字段。

方案3:Azure Monitor日志+自动化运行书

  • 配置Microsoft XDR将漏洞数据导出至Azure Monitor的Log Analytics工作区
  • 在Log Analytics中编写Kusto查询筛选高危/严重漏洞:
    SecurityVulnerabilities
    | where Severity in ("High", "Critical")
    
  • 创建Azure Monitor警报规则,基于上述查询结果触发自动化运行书
  • 在运行书中编写PowerShell脚本,整合已有的Azure DevOps任务创建逻辑,传入漏洞数据完成任务创建。

内容的提问来源于stack exchange,提问作者Skydrum

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 13:25:15