Query Details
```kql
DeviceEvents
| where ActionType == "FirewallOutboundConnectionBlocked"
| join kind=leftouter (
DeviceNetworkInfo
| mv-expand ParsedNetworks = parse_json(ConnectedNetworks)
| extend NetworkCategory = tostring(ParsedNetworks.Category)
| summarize Categories = make_set(NetworkCategory) by DeviceId, DeviceName
| extend FirewallProfile = tostring(Categories[0])
) on DeviceId
| project Timestamp, DeviceName, FirewallProfile, RemoteIP, RemotePort, InitiatingProcessFileName
| sort by Timestamp desc
| limit 100
```
This KQL query is designed to analyze and display information about outbound connections that were blocked by the firewall on various devices. Here's a simplified breakdown of what the query does:
Filter Events: It starts by filtering the DeviceEvents table to only include events where the ActionType is "FirewallOutboundConnectionBlocked". This means it focuses on instances where the firewall has blocked an outbound connection attempt.
Join with Network Info: It performs a left outer join with the DeviceNetworkInfo table to enrich the data. This involves:
ConnectedNetworks field to parse JSON data and extract the network category.FirewallProfile.Select and Display Data: The query then selects specific columns to display: Timestamp, DeviceName, FirewallProfile, RemoteIP, RemotePort, and InitiatingProcessFileName.
Sort and Limit Results: Finally, it sorts the results by Timestamp in descending order to show the most recent events first and limits the output to the top 100 entries.
In summary, this query provides a list of the 100 most recent outbound connection attempts that were blocked by the firewall, along with details about the device, network profile, and connection specifics.

Nathan Hutchinson
Released: February 17, 2026
Tables
Keywords
Operators