Microsoft Sentinel high experimental kql
PCI App with Open Findings Before Audit Window
Detects PCI-scoped applications with open Critical/High findings when an upcoming PCI-DSS audit is within 30 days. Correlates PCIApplications and AuditCalendar watchlists to surface compliance risk before audit deadlines.
Detection Logic
let auditWindowDays = 30;
let PCIApps = _GetWatchlist("PCIApplications")
| project WL_ApplicationId = column_ifexists("ApplicationId", ""),
WL_AppName = column_ifexists("AppName", ""),
WL_AuditDate = column_ifexists("AuditDate", ""),
WL_Owner = column_ifexists("Owner", "");
let AuditCalendar = _GetWatchlist("AuditCalendar")
| where column_ifexists("Framework", "") =~ "PCI-DSS"
| extend UpcomingAudit = todatetime(column_ifexists("AuditDate", ""))
| where UpcomingAudit between (now() .. now() + auditWindowDays * 1d)
| project WL_Cal_ApplicationId = column_ifexists("ApplicationId", ""),
Framework = column_ifexists("Framework", ""), UpcomingAudit;
StratoSecure_Findings_CL
| where FixStatus =~ "open"
| where Severity in ("Critical", "High")
| join kind=inner PCIApps on $left.ApplicationId == $right.WL_ApplicationId
| join kind=inner AuditCalendar on $left.ApplicationId == $right.WL_Cal_ApplicationId
| summarize TotalOpenFindings = count(), MaxSeverityInt = max(SeverityInt),
RuleIds = make_set(RuleId, 20), EndTime = max(TimeGenerated)
by ApplicationId, WL_AppName, WL_Owner, Framework, UpcomingAudit, StraTenantId
| extend MaxSeverity = case(
MaxSeverityInt >= 9, "Critical",
MaxSeverityInt >= 7, "High",
MaxSeverityInt >= 4, "Medium",
"Low")
| project TimeGenerated = EndTime, ApplicationId, AppName = WL_AppName, Owner = WL_Owner,
StraTenantId, Framework, UpcomingAudit, TotalOpenFindings, MaxSeverity, RuleIds Field Validations
Loading…
Comments (0)
Loading comments...