You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: articles/sentinel/summary-rules-tutorial.md
+20-14Lines changed: 20 additions & 14 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -16,7 +16,7 @@ ms.collection: usx-security
16
16
17
17
# Tutorial: Send logs to low-cost storage and extract actionable analytics using summary rules in Microsoft Sentinel (Preview)
18
18
19
-
This article provides an example of how to use summary rules to aggregate insights from an [auxiliary logs table](basic-logs-use-cases.md) to an Analytics table. In this example, you ingest CEF data from Logstash by deploying a custom connector using an ARM template.
19
+
This article provides an example of how to use summary rules to aggregate insights from an [auxiliary logs table](basic-logs-use-cases.md) to an Analytics table. In this example, you ingest Common Event Format (CEF) data from Logstash by deploying a custom connector using an ARM template.
20
20
21
21
> [!IMPORTANT]
22
22
> Summary rules are currently in PREVIEW. See the [Supplemental Terms of Use for Microsoft Azure Previews](https://azure.microsoft.com/support/legal/preview-supplemental-terms/) for legal terms that apply to Azure features that are in beta, preview, or otherwise not yet released into general availability.
@@ -94,36 +94,42 @@ This diagram shows the process described in this tutorial:
94
94
95
95
Here are a couple of examples of summary rules to aggregate your CEF data:
96
96
97
-
- **Lookup indicator of compromise (IoC) data**: Hunt for specific IoCs by running aggregated summary queries to bring unique occurrences, and then query only those occurrences for faster results. The following example shows an example of how to bring a unique `Source Ip` feed along with other metadata, which can then be used against IoC lookups:
97
+
- **Lookup indicator of compromise (IoC) data**: Hunt for specific IoCs by running aggregated summary queries to bring unique occurrences, and then query only those occurrences for faster results. The `Message` field is device-specific and in JSON format, so you need to parse this field to extract relevant data. This summary rule is an example of how to bring a unique `SourceIP` feed along with other metadata, which you can then use against IoC lookups:
98
98
99
99
```kusto
100
100
// Daily Network traffic trend Per Destination IP along with Data transfer stats
101
101
// Frequency - Daily - Maintain 30 day or 60 Day History.
102
-
CommonSecurityLog_CL
103
-
| extend Day = format_datetime(TimeGenerated, "yyyy-MM-dd")
- **Query a summary baseline for anomaly detections**. Instead of running your queries against large historical periods, such as 30 or 60 days, we recommend that you ingest data into custom logs, and then only query summary baseline data, such as for time series anomaly detections. For example:
112
+
- **Query a summary baseline for anomaly detections**. Instead of running your queries against large historical periods, such as 30 or 60 days, we recommend that you ingest data into an Auxiliary table, and then only query summary baseline data, such as for time series anomaly detections. For example:
109
113
110
114
```kusto
111
115
// Time series data for Firewall traffic logs
112
116
let starttime = 14d;
113
117
let endtime = 1d;
114
118
let timeframe = 1h;
115
-
let TimeSeriesData =
116
119
CommonSecurityLog_CL
117
-
| where TimeGenerated between (startofday(ago(starttime))..startofday(ago(endtime)))
118
-
| where isnotempty(DestinationIP) and isnotempty(SourceIP)
119
-
| where ipv4_is_private(DestinationIP) == false
120
-
| project TimeGenerated, SentBytes, DeviceVendor
121
-
| make-series TotalBytesSent=sum(SentBytes) on TimeGenerated from startofday(ago(starttime)) to startofday(ago(endtime)) step timeframe by DeviceVendor
| where isnotempty(DestinationIP) and isnotempty(SourceIP)
125
+
| where ipv4_is_private(DestinationIP) == false
126
+
| project TimeGenerated, SentBytes, DeviceVendor
127
+
| make-series TotalBytesSent=sum(SentBytes) on TimeGenerated from startofday(ago(starttime)) to startofday(ago(endtime)) step timeframe by DeviceVendor
122
128
```
123
129
124
130
1. **Query the destination Analytics table.**
125
131
126
-
To view the data that was aggregated by the summary rule, run a query against the Analytics table you specified in the summary rule.
132
+
To view the aggregated data, run a query against the Analytics table you specified in the summary rule.
127
133
128
134
129
135
See more information on the following items used in the preceding examples, in the Kusto documentation:
-[Summary rule templates now in public preview](#summary-rule-templates-now-in-public-preview)
24
+
25
+
### Summary rule templates now in public preview
26
+
27
+
You can now use summary rule templates to deploy pre-built summary rules tailored to common security scenarios. These templates help you aggregate and analyze large datasets efficiently, don't require deep expertise, reduce setup time, and ensure best practices. For more information, see [Aggregate Microsoft Sentinel data with summary rules (Preview)](summary-rules.md#use-summary-rule-templates).
28
+
21
29
## May 2025
22
30
23
31
-[All Microsoft Sentinel use cases generally available in the Defender portal](#all-microsoft-sentinel-use-cases-generally-available-in-the-defender-portal)
0 commit comments