求助:如何用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
相关产品推荐
相关产品推荐

