Migrate QRadar Detection Rules to Microsoft Sentinel
In brief
The article now provides more detail on inventorying and comparing QRadar detections, selecting migration paths, and understanding Microsoft Sentinel rule types, including Fusion. It also updates formatting, links, metadata, and examples.
What Defender admins need to know
Administrators have clearer guidance for planning and mapping QRadar detection-rule migrations; no required action is stated.
Summaries are generated from the documentation change itself.
Documentation change
The comparison below shows only the changed extract. Use the full-page view for complete context.
title: Migrate QRadar detection rulesDetection Rules to Microsoft Sentinel
description: Learn how to inventory QRadar detection rules, map them to Microsoft Sentinel analytics rule types, and plan your migration using built-in detections or custom KQL queries.
author: EdB-MSFT
ms.author: edbaynash
ms.topic: how-to
ms.date: 06/15/07/01/2026
ms.custom: sfi-image-nochange, msecd-doc-authoring-10141016
ai-usage: ai-assisted
#Customer intent: As a security engineer, I want to migrate QRadar detection rules to Microsoft Sentinel so that analysts can leverage machine learning analytics for more efficient threat detection and incident response.
Migrate QRadar detection rules to Microsoft Sentinel
This article describes how to identify, compare, and migrate your QRadar detection rules to Microsoft Sentinel built-in rules. It walks you through inventorying your existing detections, comparing rule terminology between QRadar and Microsoft Sentinel, and choosing the right migration path—whether that's adopting built-in analytics templates from the Content Hub, converting queries with an online tool, or writing custom Kusto Query Language (KQL) queries. By the end, you'll have a structured approach for migrating your detection rules while taking advantage of Microsoft Sentinel's machine learning analytics.
Identify and migrate rules
Microsoft Sentinel uses machine learning analytics to create high-fidelity and actionable incidents, and some of your existing detections may be redundant in Microsoft Sentinel. Therefore, don't migrate all of your detection and analytics rules blindly. Review these considerations as you identify your existing detection rules.
- Make sure to select use cases that justify rule migration, considering business priority and efficiency.
- Check that you understand Microsoft Sentinel rule types.
- Check that you understand the rule terminology.
- Review any rules that haven't triggered any alerts in the past 6-12 months, and determine whether they're still relevant.
- Eliminate low-level threats or alerts that you routinely ignore.
- Use existing functionality and check whether Microsoft Sentinel’s built-in analytics rules might address your current use cases. Because Microsoft Sentinel uses machine learning analytics to produce high-fidelity and actionable incidents, it’s likely that some of your existing detections won’t be required anymore.
- Confirm connected data sources and review your data connection methods. Revisit data collection conversations to ensure data depth and breadth across the use cases you plan to detect.
- Explore community resources such as the SOC Prime Threat Detection Marketplace to check whether your rules are available.
- Consider whether an online query converter such as Uncoder.io might work for your rules.
- If rules aren't available or can't be converted, they need to be created manually, using a KQL query. Review the rules mapping to create new queries.
Learn more about best practices for migrating detection rules.
1. **Identify your rule criteria and logic**. At this stage, you may want to use rule templates as samples for how to construct your KQL queries as samples for how to construct your KQL queries.
Consider filters, correlation rules, active lists, reference sets, watchlists, detection anomalies, aggregations, and so on. You might use references provided by your legacy SIEM to understand [how to best map your query syntax](#map-and-compare-rule-samples).
1. **Identify the trigger condition and rule action, and then construct and review your KQL query**. When reviewing your query, consider KQL optimization guidance resources.
For more information about Microsoft Sentinel analytics rules and KQL, see the following resources:
- Scheduled analytics rules in Microsoft Sentinel
.: Use alert grouping to reduce alert fatigue by grouping alerts that occur within a given timeframe. - Map data fields to entities in Microsoft Sentinel
to: To enable SOC engineers to define entities as part of the evidence to track during an investigation. Entity mapping also makes it possible for SOC analysts to take advantage of an intuitive investigation graph that can help reduce time and effort. - Investigate incidents with UEBA data
, as: As an example of how to use evidence to surface events, alerts, and any bookmarks associated with a particular incident in the incident preview pane. - Kusto Query Language (KQL)
, which: Which you can use to send read-only requests to your Log Analytics database to process data and return results. KQL is also used across other Microsoft services, such as Microsoft Defender for Endpoint and Application Insights.
Compare rule terminology
This table helps you to clarify the concept of a rule in Microsoft Sentinel compared to QRadar. Microsoft Sentinel rule types include scheduled queries, Fusion,Fusion (which automatically correlates alerts from multiple data sources into incidents using machine learning), Microsoft Security, and Machine Learning (ML) Behavior Analytics.
| QRadar | Microsoft Sentinel | |
|---|---|---|
| Rule type | ||
| Criteria | Define in test condition | Define in KQL |
| Trigger condition | Define in rule | Threshold: Number of query results |
| Action |
Map and compare rule samples
Use these samples to compare and map rules from QRadar to Microsoft Sentinel in various scenarios. The sample queries are written in Kusto Query Language (KQL), the query language used by Microsoft Sentinel.
Common property tests syntax
Common property tests: Regular expression example (QRadar)
Here's the syntax for a sample QRadar common property tests rule that uses a regular expression:
when any of <these properties> match <this regular expression>
Here's the sample rule in QRadar.QRadar:
:::image type="content" source="media/migration-qradar-detection-rules/rule-1-sample.png" alt-text="Diagram illustrating a common property test rule that uses a regular expression.":::
CommonSecurityLog | where tostring(SourcePort) matches regex @"\d{1,5}" or tostring(DestinationPort) matches regex @"\d{1,5}"
### Common property tests: AQL filter query example (QRadar)
Here's the syntax for a sample QRadar common property tests rule that uses an AQL filter query.query:
when the event matches Here's the syntax for a sample QRadar common property tests rule that uses the Here's the sample rule in Here's the common property tests rule with the Here's the QRadar syntax for a date/time tests :::image type="content" source="media/migration-qradar-detection-rules/rule-2-syntax.png" alt-text="Diagram illustrating a date/time tests rule syntax.":::
Here's the syntax for a sample QRadar date/time tests rule that uses a selected day of the Here's the sample rule in :::image type="content" source="media/migration-qradar-detection-rules/rule-2-sample-selected-day.png" alt-text="Diagram illustrating a date/time tests rule that uses a selected day.":::
Here's the date/time tests rule with a selected day of the month in Here's the syntax for a sample QRadar date/time tests rule that uses a selected day of the week:
Here's the sample rule in :::image type="content" source="media/migration-qradar-detection-rules/rule-2-sample-selected-day-week.png" alt-text="Diagram illustrating a date/time tests rule that uses a selected day of the week.":::
Here's the date/time tests rule with a selected day of the week in Here's the syntax for a sample QRadar date/time tests rule that uses the Here's the sample rule in :::image type="content" source="media/migration-qradar-detection-rules/rule-2-sample-after-before-at.png" alt-text="Diagram illustrating a date/time tests rule that uses the after/before/at operator.":::
Here's the date/time tests rule that uses the Here's the QRadar syntax for an event property tests :::image type="content" source="media/migration-qradar-detection-rules/rule-3-syntax.png" alt-text="Diagram illustrating an event property tests rule syntax.":::
Here's the syntax for a sample QRadar event property tests rule that uses an IP Here's the sample rule in :::image type="content" source="media/migration-qradar-detection-rules/rule-3-sample-protocol.png" alt-text="Diagram illustrating an event property tests rule that uses an I P protocol.":::
Here's the event property tests rule with an IP protocol filter in Here's the syntax for a sample QRadar event property tests rule that uses an Here's the sample rule in :::image type="content" source="media/migration-qradar-detection-rules/rule-3-sample-payload.png" alt-text="Diagram illustrating an event property tests rule that uses an Event Payload string.":::
Here's the QRadar syntax for a functions rule that uses :::image type="content" source="media/migration-qradar-detection-rules/rule-4-syntax.png" alt-text="Diagram illustrating the syntax of a functions rule that uses counters.":::
Here's the syntax for a sample QRadar functions rule that uses a defined number of event properties in a defined number of Here's the sample rule in :::image type="content" source="media/migration-qradar-detection-rules/rule-4-sample-event-property.png" alt-text="Diagram illustrating a functions rule that uses event properties.":::
Here's the counters rule with event property and time conditions in Here's the QRadar syntax for a functions rule that uses negative :::image type="content" source="media/migration-qradar-detection-rules/rule-5-syntax.png" alt-text="Diagram illustrating the syntax of a functions rule that uses negative conditions.":::
Here's the syntax for a sample QRadar functions rule that uses negative Here are two defined rules in QRadar. The negative conditions :::image type="content" source="media/migration-qradar-detection-rules/rule-5-sample-1.png" alt-text="Diagram illustrating an event property tests rule to be used for a negative conditions rule.":::
:::image type="content" source="media/migration-qradar-detection-rules/rule-5-sample-2.png" alt-text="Diagram illustrating a common property tests rule to be used for a negative conditions rule.":::
Here's a sample of the negative conditions rule based on the two previously defined QRadar rules (Test2 and Test6) :::image type="content" source="media/migration-qradar-detection-rules/rule-5-sample-3.png" alt-text="Diagram illustrating a functions rule with negative conditions.":::
Here's the negative conditions rule with a Here's the QRadar syntax for a functions rule that uses simple :::image type="content" source="media/migration-qradar-detection-rules/rule-6-syntax.png" alt-text="Diagram illustrating the syntax of a functions rule that uses simple conditions.":::
Here's the syntax for a sample QRadar functions rule that uses simple conditions.:
Here's the sample rule in :::image type="content" source="media/migration-qradar-detection-rules/rule-6-sample-1.png" alt-text="Diagram illustrating a functions rule with simple conditions.":::
Here's the simple conditions rule in Here's the QRadar syntax for an IP/port tests :::image type="content" source="media/migration-qradar-detection-rules/rule-7-syntax.png" alt-text="Diagram illustrating the syntax of an IP/port tests rule.":::
Here's the syntax for a sample QRadar rule specifying a source Here's the sample rule in :::image type="content" source="media/migration-qradar-detection-rules/rule-7-sample-1-port.png" alt-text="Diagram illustrating a rule that specifies a source port.":::
Here's the IP/port tests rule with a source port filter in Here's the syntax for a sample QRadar rule specifying a source Here's the sample rule in :::image type="content" source="media/migration-qradar-detection-rules/rule-7-sample-2-ip.png" alt-text="Diagram illustrating a rule that specifies a source IP address.":::
Here's the IP/port tests rule with a source IP filter in Here's the QRadar syntax for a log source tests :::image type="content" source="media/migration-qradar-detection-rules/rule-8-syntax.png" alt-text="Diagram illustrating the syntax of a log source tests rule.":::
Here's the syntax for a sample QRadar rule specifying log Here's the sample rule in :::image type="content" source="media/migration-qradar-detection-rules/rule-8-sample-1.png" alt-text="Diagram illustrating a rule that specifies log sources.":::
Here's the log source tests rule in KQL. [!div class="nextstepaction"]
Migrate your SOAR automation
\ No newline at end of fileHere's the sample rule in QRadar.QRadar:
:::image type="content" source="media/migration-qradar-detection-rules/rule-1-sample-aql.png" alt-text="Diagram illustrating a common property test rule that uses an A Q L filter query.":::
### Common property tests: AQL filter query example (KQL)
Here's the common property tests rule with an AQL filter query in KQL.KQL:
```kusto
CommonSecurityLog
| where SourceIP == '10.1.1.10'
Common property tests: equals/not equals example (QRadar)
equals or not equals operator. operator:
and when <this property> <equals/not equals> <this property>
QRadar.::QRadar:
:::image type="content" source="media/migration-qradar-detection-rules/rule-1-sample-equals.png" alt-text="Diagram illustrating a common property test rule that uses equals/not equals.":::
Common property tests: equals/not equals example (KQL)
equals or not equals operator in KQL.KQL:
CommonSecurityLog
| where SourceIP == DestinationIP
Date/time tests syntax
rule.rule:
Date/time tests: Selected day of the month example (QRadar)
month. month:
and when the event(s) occur <on/after/before> the <selected> day of the month
QRadar.QRadar:
Date/time tests: Selected day of the month example (KQL)
KQL. KQL:
SecurityEvent
| where dayofmonth(TimeGenerated) < 4
Date/time tests: Selected day of the week example (QRadar)
and when the event(s) occur on any of <these days of the week{Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday}>
QRadar.QRadar:
Date/time tests: Selected day of the week example (KQL)
KQL. KQL:
SecurityEvent
| where dayofweek(TimeGenerated) between (3d .. 5d)
Date/time tests: after/before/at example (QRadar)
after, before, or at operator. operator:
and when the event(s) occur <after/before/at> <this time{12.00AM, 12.05AM, ...11.50PM, 11.55PM}>
QRadar.QRadar:
Date/time tests: after/before/at example (KQL)
after, before, or at operator in KQL. KQL:
SecurityEvent
| where format_datetime(TimeGenerated,'HH:mm')=="23:55"
TimeGenerated is in UTC/GMT.
Event property tests syntax
rule.rule:
Event property tests: IP protocol example (QRadar)
protocol. protocol:
and when the IP protocol is one of the following <protocols>
QRadar.QRadar:
Event property tests: IP protocol example (KQL)
KQL.KQL:
CommonSecurityLog
| where Protocol in ("UDP","ICMP")
Event property tests: Event Payload string example (QRadar)
Event Payload string value. value:
and when the Event Payload contains <this string>
QRadar.QRadar:
Functions: counters syntax
counters.counters:
Counters: Event property and time example (QRadar)
minutes. minutes"
and when at least <this many> events are seen with the same <event properties> in <this many> <minutes>
QRadar.QRadar:
Counters: Event property and time example (KQL)
KQL.KQL:
CommonSecurityLog
| summarize Count = count() by SourceIP, DestinationIP
| where Count >= 5
Functions: negative conditions syntax
conditions.conditions:
Negative conditions example (QRadar)
conditions. conditions:
and when none of <these rules> match in <this many> <minutes> after <these rules> match with the same <event properties>
will beare based on these rules.rules:
.:
Negative conditions example (KQL)
rightanti join in KQL.KQL:
let spanoftime = 10m;
Test2
| join kind=rightanti Test6 on $left. SourceIP == $right. SourceIP and $left. Protocol ==$right. Protocol
Functions: simple conditions syntax
conditions.conditions:
Simple conditions example (QRadar)
and when an event matches <any|all> of the following <rules>
QRadar.QRadar:
Simple conditions example (KQL)
KQL.KQL:
CommonSecurityLog
| where Protocol !in ("UDP","ICMP") or SourceIP == DestinationIP
IP/port tests syntax
rule.rule:
IP/port tests: Source port example (QRadar)
port. port:
and when the source port is one of the following <ports>
QRadar.QRadar:
IP/port tests: Source port example (KQL)
KQL.KQL:
CommonSecurityLog
| where SourcePort == 20
IP/port tests: Source IP example (QRadar)
IP. IP:
and when the source IP is one of the following <IP addresses>
QRadar.QRadar:
IP/port tests: Source IP example (KQL)
KQL.KQL:
CommonSecurityLog
| where SourceIP in ("10.1.1.1","10.2.2.2")
Log source tests syntax
rule.rule:
Log source example (QRadar)
sources. sources:
and when the event(s) were detected by one or more of these <log source types>
QRadar.QRadar:
Log source example (KQL)
OfficeActivity
| where OfficeWorkload == "Exchange"
Next
stepsstepIn this article, you learned how to map your migration rules from QRadar to Microsoft Sentinel.
@@ -1,11 +1,11 @@ ----title: Migrate QRadar detection rules to Microsoft Sentinel+title: Migrate QRadar Detection Rules to Microsoft Sentinel description: Learn how to inventory QRadar detection rules, map them to Microsoft Sentinel analytics rule types, and plan your migration using built-in detections or custom KQL queries. author: EdB-MSFT ms.author: edbaynash ms.topic: how-to-ms.date: 06/15/2026-ms.custom: sfi-image-nochange, msecd-doc-authoring-1014+ms.date: 07/01/2026+ms.custom: sfi-image-nochange, msecd-doc-authoring-1016 ai-usage: ai-assisted #Customer intent: As a security engineer, I want to migrate QRadar detection rules to Microsoft Sentinel so that analysts can leverage machine learning analytics for more efficient threat detection and incident response.@@ -14,22 +14,22 @@ ai-usage: ai-assisted # Migrate QRadar detection rules to Microsoft Sentinel -This article describes how to identify, compare, and migrate your QRadar detection rules to Microsoft Sentinel built-in rules.+This article describes how to identify, compare, and migrate your QRadar detection rules to Microsoft Sentinel built-in rules. It walks you through inventorying your existing detections, comparing rule terminology between QRadar and Microsoft Sentinel, and choosing the right migration path—whether that's adopting built-in analytics templates from the Content Hub, converting queries with an online tool, or writing custom Kusto Query Language (KQL) queries. By the end, you'll have a structured approach for migrating your detection rules while taking advantage of Microsoft Sentinel's machine learning analytics. ## Identify and migrate rules Microsoft Sentinel uses machine learning analytics to create high-fidelity and actionable incidents, and some of your existing detections may be redundant in Microsoft Sentinel. Therefore, don't migrate all of your detection and analytics rules blindly. Review these considerations as you identify your existing detection rules. - Make sure to select use cases that justify rule migration, considering business priority and efficiency.-- Check that you [understand Microsoft Sentinel rule types](threat-detection.md). +- Check that you [understand Microsoft Sentinel rule types](threat-detection.md). - Check that you understand the [rule terminology](#compare-rule-terminology). - Review any rules that haven't triggered any alerts in the past 6-12 months, and determine whether they're still relevant. - Eliminate low-level threats or alerts that you routinely ignore. - Use existing functionality and check whether Microsoft Sentinel’s [built-in analytics rules](https://github.com/Azure/Azure-Sentinel/tree/master/Detections) might address your current use cases. Because Microsoft Sentinel uses machine learning analytics to produce high-fidelity and actionable incidents, it’s likely that some of your existing detections won’t be required anymore. - Confirm connected data sources and review your data connection methods. Revisit data collection conversations to ensure data depth and breadth across the use cases you plan to detect. - Explore community resources such as the [SOC Prime Threat Detection Marketplace](https://my.socprime.com/platform-overview/) to check whether your rules are available.-- Consider whether an online query converter such as Uncoder.io might work for your rules. -- If rules aren't available or can't be converted, they need to be created manually, using a KQL query. Review the [rules mapping](#map-and-compare-rule-samples) to create new queries. +- Consider whether an online query converter such as Uncoder.io might work for your rules.+- If rules aren't available or can't be converted, they need to be created manually, using a KQL query. Review the [rules mapping](#map-and-compare-rule-samples) to create new queries. Learn more about [best practices for migrating detection rules](https://techcommunity.microsoft.com/t5/microsoft-sentinel-blog/best-practices-for-migrating-detection-rules-from-arcsight/ba-p/2216417). @@ -64,7 +64,7 @@ Learn more about [best practices for migrating detection rules](https://techcomm 1. **Identify your rule criteria and logic**. At this stage, you may want to use rule templates as samples for how to construct your KQL queries as samples for how to construct your KQL queries. - Consider filters, correlation rules, active lists, reference sets, watchlists, detection anomalies, aggregations, and so on. You might use references provided by your legacy SIEM to understand [how to best map your query syntax](#map-and-compare-rule-samples). + Consider filters, correlation rules, active lists, reference sets, watchlists, detection anomalies, aggregations, and so on. You might use references provided by your legacy SIEM to understand [how to best map your query syntax](#map-and-compare-rule-samples). 1. **Identify the trigger condition and rule action, and then construct and review your KQL query**. When reviewing your query, consider KQL optimization guidance resources. @@ -74,35 +74,35 @@ Learn more about [best practices for migrating detection rules](https://techcomm For more information about Microsoft Sentinel analytics rules and KQL, see the following resources: -- [**Scheduled analytics rules in Microsoft Sentinel**](scheduled-rules-overview.md). Use [alert grouping](scheduled-rules-overview.md#alert-grouping) to reduce alert fatigue by grouping alerts that occur within a given timeframe.-- [**Map data fields to entities in Microsoft Sentinel**](map-data-fields-to-entities.md) to enable SOC engineers to define entities as part of the evidence to track during an investigation. Entity mapping also makes it possible for SOC analysts to take advantage of an intuitive [investigation graph](investigate-cases.md#use-the-investigation-graph-to-deep-dive) that can help reduce time and effort.-- [**Investigate incidents with UEBA data**](investigate-with-ueba.md), as an example of how to use evidence to surface events, alerts, and any bookmarks associated with a particular incident in the incident preview pane.-- [**Kusto Query Language (KQL)**](/kusto/query/?view=microsoft-sentinel&preserve-view=true), which you can use to send read-only requests to your [Log Analytics](/azure/azure-monitor/logs/log-analytics-tutorial) database to process data and return results. KQL is also used across other Microsoft services, such as [Microsoft Defender for Endpoint](https://www.microsoft.com/microsoft-365/security/endpoint-defender) and [Application Insights](/azure/azure-monitor/app/app-insights-overview).+- [**Scheduled analytics rules in Microsoft Sentinel**](scheduled-rules-overview.md): Use [alert grouping](scheduled-rules-overview.md#alert-grouping) to reduce alert fatigue by grouping alerts that occur within a given timeframe.+- [**Map data fields to entities in Microsoft Sentinel**](map-data-fields-to-entities.md): To enable SOC engineers to define entities as part of the evidence to track during an investigation. Entity mapping also makes it possible for SOC analysts to take advantage of an intuitive [investigation graph](investigate-cases.md#use-the-investigation-graph-to-deep-dive) that can help reduce time and effort.+- [**Investigate incidents with UEBA data**](investigate-with-ueba.md): As an example of how to use evidence to surface events, alerts, and any bookmarks associated with a particular incident in the incident preview pane.+- [**Kusto Query Language (KQL)**](/kusto/query/?view=microsoft-sentinel&preserve-view=true): Which you can use to send read-only requests to your [Log Analytics](/azure/azure-monitor/logs/log-analytics-tutorial) database to process data and return results. KQL is also used across other Microsoft services, such as [Microsoft Defender for Endpoint](https://www.microsoft.com/microsoft-365/security/endpoint-defender) and [Application Insights](/azure/azure-monitor/app/app-insights-overview). ## Compare rule terminology -This table helps you to clarify the concept of a rule in Microsoft Sentinel compared to QRadar. Microsoft Sentinel rule types include scheduled queries, Fusion, Microsoft Security, and Machine Learning (ML) Behavior Analytics.+This table helps you to clarify the concept of a rule in Microsoft Sentinel compared to QRadar. Microsoft Sentinel rule types include scheduled queries, Fusion (which automatically correlates alerts from multiple data sources into incidents using machine learning), Microsoft Security, and Machine Learning (ML) Behavior Analytics. | |QRadar |Microsoft Sentinel | |---------|---------|---------|-|**Rule type** |• Events<br>• Flow<br>• Common<br>• Offense<br>• Anomaly detection rules |• Scheduled query<br>• Fusion<br>• Microsoft Security<br>• Machine Learning (ML) Behavior Analytics |+|**Rule type** |- Events<br>- Flow<br>- Common<br>- Offense<br>- Anomaly detection rules |- Scheduled query<br>- Fusion<br>- Microsoft Security<br>- Machine Learning (ML) Behavior Analytics | |**Criteria** |Define in test condition |Define in KQL | |**Trigger condition** |Define in rule |Threshold: Number of query results |-|**Action** |• Create offense<br>• Dispatch new event<br>• Add to reference set or data<br>• And more |• Create alert or incident<br>• Integrates with Logic Apps |+|**Action** |- Create offense<br>- Dispatch new event<br>- Add to reference set or data<br>- And more |- Create alert or incident<br>- Integrates with Logic Apps | ## Map and compare rule samples -Use these samples to compare and map rules from QRadar to Microsoft Sentinel in various scenarios.+Use these samples to compare and map rules from QRadar to Microsoft Sentinel in various scenarios. The sample queries are written in Kusto Query Language (KQL), the query language used by Microsoft Sentinel. |Rule |Syntax |Sample detection rule (QRadar) |Sample KQL query |Resources | |---------|---------|---------|---------|---------|-|Common property tests |[QRadar syntax](#common-property-tests-syntax) |• [Regular expression example](#common-property-tests-regular-expression-example-qradar)<br>• [AQL filter query example](#common-property-tests-aql-filter-query-example-qradar)<br>• [equals/not equals example](#common-property-tests-equalsnot-equals-example-qradar) |• [Regular expression example](#common-property-tests-regular-expression-example-kql)<br>• [AQL filter query example](#common-property-tests-aql-filter-query-example-kql)<br>• [equals/not equals example](#common-property-tests-equalsnot-equals-example-kql) |• Regular expression: [matches regex](/kusto/query/regex?view=microsoft-sentinel&preserve-view=true)<br>• AQL filter query: [string operators](/kusto/query/datatypes-string-operators?view=microsoft-sentinel&preserve-view=true#operators-on-strings)<br>• equals/not equals: [String operators](/kusto/query/datatypes-string-operators?view=microsoft-sentinel&preserve-view=true#operators-on-strings) | -|Date/time tests |[QRadar syntax](#datetime-tests-syntax) |• [Selected day of the month example](#datetime-tests-selected-day-of-the-month-example-qradar)<br>• [Selected day of the week example](#datetime-tests-selected-day-of-the-week-example-qradar)<br>• [after/before/at example](#datetime-tests-afterbeforeat-example-qradar) |• [Selected day of the month example](#datetime-tests-selected-day-of-the-month-example-kql)<br>• [Selected day of the week example](#datetime-tests-selected-day-of-the-week-example-kql)<br>• [after/before/at example](#datetime-tests-afterbeforeat-example-kql) |• [Date and time operators](/kusto/query/datetime-timespan-arithmetic?view=microsoft-sentinel&preserve-view=true)<br>• Selected day of the month: [dayofmonth()](/kusto/query/day-of-month-function?view=microsoft-sentinel&preserve-view=true)<br>• Selected day of the week: [dayofweek()](/kusto/query/day-of-week-function?view=microsoft-sentinel&preserve-view=true)<br>• after/before/at: [format_datetime()](/kusto/query/format-datetime-function?view=microsoft-sentinel&preserve-view=true) | -|Event property tests |[QRadar syntax](#event-property-tests-syntax) |• [IP protocol example](#event-property-tests-ip-protocol-example-qradar)<br>• [Event Payload string example](#event-property-tests-event-payload-string-example-qradar)<br> |• [IP protocol example](#event-property-tests-ip-protocol-example-kql)<br>• [Event Payload string example](#event-property-tests-event-payload-string-example-kql)<br> |• IP protocol: [String operators](/kusto/query/datatypes-string-operators?view=microsoft-sentinel&preserve-view=true#operators-on-strings)<br>• Event Payload string: [has](/kusto/query/has-operator?view=microsoft-sentinel&preserve-view=true) | +|Common property tests |[QRadar syntax](#common-property-tests-syntax) |- [Regular expression example](#common-property-tests-regular-expression-example-qradar)<br>- [AQL filter query example](#common-property-tests-aql-filter-query-example-qradar)<br>- [equals/not equals example](#common-property-tests-equalsnot-equals-example-qradar) |- [Regular expression example](#common-property-tests-regular-expression-example-kql)<br>- [AQL filter query example](#common-property-tests-aql-filter-query-example-kql)<br>- [equals/not equals example](#common-property-tests-equalsnot-equals-example-kql) |- Regular expression: [matches regex](/kusto/query/regex?view=microsoft-sentinel&preserve-view=true)<br>- AQL filter query: [string operators](/kusto/query/datatypes-string-operators?view=microsoft-sentinel&preserve-view=true#operators-on-strings)<br>- equals/not equals: [String operators](/kusto/query/datatypes-string-operators?view=microsoft-sentinel&preserve-view=true#operators-on-strings) | +|Date/time tests |[QRadar syntax](#datetime-tests-syntax) |- [Selected day of the month example](#datetime-tests-selected-day-of-the-month-example-qradar)<br>- [Selected day of the week example](#datetime-tests-selected-day-of-the-week-example-qradar)<br>- [after/before/at example](#datetime-tests-afterbeforeat-example-qradar) |- [Selected day of the month example](#datetime-tests-selected-day-of-the-month-example-kql)<br>- [Selected day of the week example](#datetime-tests-selected-day-of-the-week-example-kql)<br>- [after/before/at example](#datetime-tests-afterbeforeat-example-kql) |- [Date and time operators](/kusto/query/datetime-timespan-arithmetic?view=microsoft-sentinel&preserve-view=true)<br>- Selected day of the month: [dayofmonth()](/kusto/query/day-of-month-function?view=microsoft-sentinel&preserve-view=true)<br>- Selected day of the week: [dayofweek()](/kusto/query/day-of-week-function?view=microsoft-sentinel&preserve-view=true)<br>- after/before/at: [format_datetime()](/kusto/query/format-datetime-function?view=microsoft-sentinel&preserve-view=true) | +|Event property tests |[QRadar syntax](#event-property-tests-syntax) |- [IP protocol example](#event-property-tests-ip-protocol-example-qradar)<br>- [Event Payload string example](#event-property-tests-event-payload-string-example-qradar)<br> |- [IP protocol example](#event-property-tests-ip-protocol-example-kql)<br>- [Event Payload string example](#event-property-tests-event-payload-string-example-kql)<br> |- IP protocol: [String operators](/kusto/query/datatypes-string-operators?view=microsoft-sentinel&preserve-view=true#operators-on-strings)<br>- Event Payload string: [has](/kusto/query/has-operator?view=microsoft-sentinel&preserve-view=true) | |Functions: counters |[QRadar syntax](#functions-counters-syntax) |[Event property and time example](#counters-event-property-and-time-example-qradar) |[Event property and time example](#counters-event-property-and-time-example-kql) |[summarize](/kusto/query/summarize-operator?view=microsoft-sentinel&preserve-view=true) | -|Functions: negative conditions |[QRadar syntax](#functions-negative-conditions-syntax) |[Negative conditions example](#negative-conditions-example-qradar) |[Negative conditions example](#negative-conditions-example-kql) |• [join()](/kusto/query/join-operator?view=microsoft-sentinel&preserve-view=true)<br>• [String operators](/kusto/query/datatypes-string-operators?view=microsoft-sentinel&preserve-view=true#operators-on-strings)<br>• [Numerical operators](/kusto/query/numerical-operators?view=microsoft-sentinel&preserve-view=true) |+|Functions: negative conditions |[QRadar syntax](#functions-negative-conditions-syntax) |[Negative conditions example](#negative-conditions-example-qradar) |[Negative conditions example](#negative-conditions-example-kql) |- [join()](/kusto/query/join-operator?view=microsoft-sentinel&preserve-view=true)<br>- [String operators](/kusto/query/datatypes-string-operators?view=microsoft-sentinel&preserve-view=true#operators-on-strings)<br>- [Numerical operators](/kusto/query/numerical-operators?view=microsoft-sentinel&preserve-view=true) | |Functions: simple |[QRadar syntax](#functions-simple-conditions-syntax) |[Simple conditions example](#simple-conditions-example-qradar) |[Simple conditions example](#simple-conditions-example-kql) |[or](/kusto/query/logical-operators?view=microsoft-sentinel&preserve-view=true) |-|IP/port tests |[QRadar syntax](#ipport-tests-syntax) |• [Source port example](#ipport-tests-source-port-example-qradar)<br>• [Source IP example](#ipport-tests-source-ip-example-qradar) |• [Source port example](#ipport-tests-source-port-example-kql)<br>• [Source IP example](#ipport-tests-source-ip-example-kql) | |+|IP/port tests |[QRadar syntax](#ipport-tests-syntax) |- [Source port example](#ipport-tests-source-port-example-qradar)<br>- [Source IP example](#ipport-tests-source-ip-example-qradar) |- [Source port example](#ipport-tests-source-port-example-kql)<br>- [Source IP example](#ipport-tests-source-ip-example-kql) | | |Log source tests |[QRadar syntax](#log-source-tests-syntax) |[Log source example](#log-source-example-qradar) |[Log source example](#log-source-example-kql) | | ### Common property tests syntax@@ -113,12 +113,13 @@ Here's the QRadar syntax for a common property tests rule. ### Common property tests: Regular expression example (QRadar) -Here's the syntax for a sample QRadar common property tests rule that uses a regular expression: +Here's the syntax for a sample QRadar common property tests rule that uses a regular expression: ``` when any of <these properties> match <this regular expression> ```-Here's the sample rule in QRadar.++Here's the sample rule in QRadar: :::image type="content" source="media/migration-qradar-detection-rules/rule-1-sample.png" alt-text="Diagram illustrating a common property test rule that uses a regular expression."::: @@ -130,142 +131,155 @@ Here's the common property tests rule with a regular expression in KQL. CommonSecurityLog | where tostring(SourcePort) matches regex @"\d{1,5}" or tostring(DestinationPort) matches regex @"\d{1,5}" ```+ ### Common property tests: AQL filter query example (QRadar) -Here's the syntax for a sample QRadar common property tests rule that uses an AQL filter query. +Here's the syntax for a sample QRadar common property tests rule that uses an AQL filter query: ``` when the event matches <this> AQL filter query ```-Here's the sample rule in QRadar.++Here's the sample rule in QRadar: :::image type="content" source="media/migration-qradar-detection-rules/rule-1-sample-aql.png" alt-text="Diagram illustrating a common property test rule that uses an A Q L filter query."::: ### Common property tests: AQL filter query example (KQL) -Here's the common property tests rule with an AQL filter query in KQL.+Here's the common property tests rule with an AQL filter query in KQL: ```kusto CommonSecurityLog | where SourceIP == '10.1.1.10' ```+ ### Common property tests: equals/not equals example (QRadar) -Here's the syntax for a sample QRadar common property tests rule that uses the `equals` or `not equals` operator. +Here's the syntax for a sample QRadar common property tests rule that uses the `equals` or `not equals` operator: ``` and when <this property> <equals/not equals> <this property> ```-Here's the sample rule in QRadar. +Here's the sample rule in QRadar: :::image type="content" source="media/migration-qradar-detection-rules/rule-1-sample-equals.png" alt-text="Diagram illustrating a common property test rule that uses equals/not equals."::: ### Common property tests: equals/not equals example (KQL) -Here's the common property tests rule with the `equals` or `not equals` operator in KQL.+Here's the common property tests rule with the `equals` or `not equals` operator in KQL: ```kusto CommonSecurityLog | where SourceIP == DestinationIP ```+ ### Date/time tests syntax -Here's the QRadar syntax for a date/time tests rule.+Here's the QRadar syntax for a date/time tests rule: :::image type="content" source="media/migration-qradar-detection-rules/rule-2-syntax.png" alt-text="Diagram illustrating a date/time tests rule syntax."::: ### Date/time tests: Selected day of the month example (QRadar) -Here's the syntax for a sample QRadar date/time tests rule that uses a selected day of the month. +Here's the syntax for a sample QRadar date/time tests rule that uses a selected day of the month: ``` and when the event(s) occur <on/after/before> the <selected> day of the month ```-Here's the sample rule in QRadar.++Here's the sample rule in QRadar: :::image type="content" source="media/migration-qradar-detection-rules/rule-2-sample-selected-day.png" alt-text="Diagram illustrating a date/time tests rule that uses a selected day."::: ### Date/time tests: Selected day of the month example (KQL) -Here's the date/time tests rule with a selected day of the month in KQL. +Here's the date/time tests rule with a selected day of the month in KQL: ```kusto SecurityEvent | where dayofmonth(TimeGenerated) < 4 ```+ ### Date/time tests: Selected day of the week example (QRadar) -Here's the syntax for a sample QRadar date/time tests rule that uses a selected day of the week: +Here's the syntax for a sample QRadar date/time tests rule that uses a selected day of the week: ``` and when the event(s) occur on any of <these days of the week{Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday}> ```-Here's the sample rule in QRadar.++Here's the sample rule in QRadar: :::image type="content" source="media/migration-qradar-detection-rules/rule-2-sample-selected-day-week.png" alt-text="Diagram illustrating a date/time tests rule that uses a selected day of the week."::: ### Date/time tests: Selected day of the week example (KQL) -Here's the date/time tests rule with a selected day of the week in KQL. +Here's the date/time tests rule with a selected day of the week in KQL: ```kusto SecurityEvent | where dayofweek(TimeGenerated) between (3d .. 5d) ```+ ### Date/time tests: after/before/at example (QRadar) -Here's the syntax for a sample QRadar date/time tests rule that uses the `after`, `before`, or `at` operator. +Here's the syntax for a sample QRadar date/time tests rule that uses the `after`, `before`, or `at` operator: ``` and when the event(s) occur <after/before/at> <this time{12.00AM, 12.05AM, ...11.50PM, 11.55PM}> ```-Here's the sample rule in QRadar.++Here's the sample rule in QRadar: :::image type="content" source="media/migration-qradar-detection-rules/rule-2-sample-after-before-at.png" alt-text="Diagram illustrating a date/time tests rule that uses the after/before/at operator."::: ### Date/time tests: after/before/at example (KQL) -Here's the date/time tests rule that uses the `after`, `before`, or `at` operator in KQL. +Here's the date/time tests rule that uses the `after`, `before`, or `at` operator in KQL: ```kusto SecurityEvent | where format_datetime(TimeGenerated,'HH:mm')=="23:55" ```+ `TimeGenerated` is in UTC/GMT. ### Event property tests syntax -Here's the QRadar syntax for an event property tests rule.+Here's the QRadar syntax for an event property tests rule: :::image type="content" source="media/migration-qradar-detection-rules/rule-3-syntax.png" alt-text="Diagram illustrating an event property tests rule syntax."::: ### Event property tests: IP protocol example (QRadar) -Here's the syntax for a sample QRadar event property tests rule that uses an IP protocol. +Here's the syntax for a sample QRadar event property tests rule that uses an IP protocol: ``` and when the IP protocol is one of the following <protocols> ```-Here's the sample rule in QRadar.++Here's the sample rule in QRadar: :::image type="content" source="media/migration-qradar-detection-rules/rule-3-sample-protocol.png" alt-text="Diagram illustrating an event property tests rule that uses an I P protocol."::: ### Event property tests: IP protocol example (KQL) -Here's the event property tests rule with an IP protocol filter in KQL.+Here's the event property tests rule with an IP protocol filter in KQL: ```kusto CommonSecurityLog | where Protocol in ("UDP","ICMP") ```+ ### Event property tests: Event Payload string example (QRadar) -Here's the syntax for a sample QRadar event property tests rule that uses an `Event Payload` string value. +Here's the syntax for a sample QRadar event property tests rule that uses an `Event Payload` string value: ``` and when the Event Payload contains <this string> ```-Here's the sample rule in QRadar.++Here's the sample rule in QRadar: :::image type="content" source="media/migration-qradar-detection-rules/rule-3-sample-payload.png" alt-text="Diagram illustrating an event property tests rule that uses an Event Payload string."::: @@ -282,56 +296,59 @@ search "Palo Alto" ### Functions: counters syntax -Here's the QRadar syntax for a functions rule that uses counters.+Here's the QRadar syntax for a functions rule that uses counters: :::image type="content" source="media/migration-qradar-detection-rules/rule-4-syntax.png" alt-text="Diagram illustrating the syntax of a functions rule that uses counters."::: ### Counters: Event property and time example (QRadar) -Here's the syntax for a sample QRadar functions rule that uses a defined number of event properties in a defined number of minutes. +Here's the syntax for a sample QRadar functions rule that uses a defined number of event properties in a defined number of minutes" ``` and when at least <this many> events are seen with the same <event properties> in <this many> <minutes> ```-Here's the sample rule in QRadar.++Here's the sample rule in QRadar: :::image type="content" source="media/migration-qradar-detection-rules/rule-4-sample-event-property.png" alt-text="Diagram illustrating a functions rule that uses event properties."::: ### Counters: Event property and time example (KQL) -Here's the counters rule with event property and time conditions in KQL.+Here's the counters rule with event property and time conditions in KQL: ```kusto CommonSecurityLog | summarize Count = count() by SourceIP, DestinationIP | where Count >= 5 ```+ ### Functions: negative conditions syntax -Here's the QRadar syntax for a functions rule that uses negative conditions.+Here's the QRadar syntax for a functions rule that uses negative conditions: :::image type="content" source="media/migration-qradar-detection-rules/rule-5-syntax.png" alt-text="Diagram illustrating the syntax of a functions rule that uses negative conditions."::: ### Negative conditions example (QRadar) -Here's the syntax for a sample QRadar functions rule that uses negative conditions. +Here's the syntax for a sample QRadar functions rule that uses negative conditions: ``` and when none of <these rules> match in <this many> <minutes> after <these rules> match with the same <event properties> ```-Here are two defined rules in QRadar. The negative conditions will be based on these rules.++Here are two defined rules in QRadar. The negative conditions are based on these rules: :::image type="content" source="media/migration-qradar-detection-rules/rule-5-sample-1.png" alt-text="Diagram illustrating an event property tests rule to be used for a negative conditions rule."::: :::image type="content" source="media/migration-qradar-detection-rules/rule-5-sample-2.png" alt-text="Diagram illustrating a common property tests rule to be used for a negative conditions rule."::: -Here's a sample of the negative conditions rule based on the two previously defined QRadar rules (Test2 and Test6).+Here's a sample of the negative conditions rule based on the two previously defined QRadar rules (Test2 and Test6): :::image type="content" source="media/migration-qradar-detection-rules/rule-5-sample-3.png" alt-text="Diagram illustrating a functions rule with negative conditions."::: ### Negative conditions example (KQL) -Here's the negative conditions rule with a `rightanti` join in KQL.+Here's the negative conditions rule with a `rightanti` join in KQL: ```kusto let spanoftime = 10m;@@ -347,102 +364,111 @@ CommonSecurityLog Test2 | join kind=rightanti Test6 on $left. SourceIP == $right. SourceIP and $left. Protocol ==$right. Protocol ```+ ### Functions: simple conditions syntax -Here's the QRadar syntax for a functions rule that uses simple conditions.+Here's the QRadar syntax for a functions rule that uses simple conditions: :::image type="content" source="media/migration-qradar-detection-rules/rule-6-syntax.png" alt-text="Diagram illustrating the syntax of a functions rule that uses simple conditions."::: ### Simple conditions example (QRadar) -Here's the syntax for a sample QRadar functions rule that uses simple conditions. +Here's the syntax for a sample QRadar functions rule that uses simple conditions.: ``` and when an event matches <any|all> of the following <rules> ```-Here's the sample rule in QRadar.++Here's the sample rule in QRadar: :::image type="content" source="media/migration-qradar-detection-rules/rule-6-sample-1.png" alt-text="Diagram illustrating a functions rule with simple conditions."::: ### Simple conditions example (KQL) -Here's the simple conditions rule in KQL.+Here's the simple conditions rule in KQL: ```kusto CommonSecurityLog | where Protocol !in ("UDP","ICMP") or SourceIP == DestinationIP ```+ ### IP/port tests syntax -Here's the QRadar syntax for an IP/port tests rule.+Here's the QRadar syntax for an IP/port tests rule: :::image type="content" source="media/migration-qradar-detection-rules/rule-7-syntax.png" alt-text="Diagram illustrating the syntax of an IP/port tests rule."::: ### IP/port tests: Source port example (QRadar) -Here's the syntax for a sample QRadar rule specifying a source port. +Here's the syntax for a sample QRadar rule specifying a source port: ``` and when the source port is one of the following <ports> ```-Here's the sample rule in QRadar.++Here's the sample rule in QRadar: :::image type="content" source="media/migration-qradar-detection-rules/rule-7-sample-1-port.png" alt-text="Diagram illustrating a rule that specifies a source port."::: ### IP/port tests: Source port example (KQL) -Here's the IP/port tests rule with a source port filter in KQL.+Here's the IP/port tests rule with a source port filter in KQL: ```kusto CommonSecurityLog | where SourcePort == 20 ```+ ### IP/port tests: Source IP example (QRadar) -Here's the syntax for a sample QRadar rule specifying a source IP. +Here's the syntax for a sample QRadar rule specifying a source IP: ``` and when the source IP is one of the following <IP addresses> ```-Here's the sample rule in QRadar.++Here's the sample rule in QRadar: :::image type="content" source="media/migration-qradar-detection-rules/rule-7-sample-2-ip.png" alt-text="Diagram illustrating a rule that specifies a source IP address."::: ### IP/port tests: Source IP example (KQL) -Here's the IP/port tests rule with a source IP filter in KQL.+Here's the IP/port tests rule with a source IP filter in KQL: ```kusto CommonSecurityLog | where SourceIP in ("10.1.1.1","10.2.2.2") ```+ ### Log source tests syntax -Here's the QRadar syntax for a log source tests rule.+Here's the QRadar syntax for a log source tests rule: :::image type="content" source="media/migration-qradar-detection-rules/rule-8-syntax.png" alt-text="Diagram illustrating the syntax of a log source tests rule."::: ### Log source example (QRadar) -Here's the syntax for a sample QRadar rule specifying log sources. +Here's the syntax for a sample QRadar rule specifying log sources: ``` and when the event(s) were detected by one or more of these <log source types> ```-Here's the sample rule in QRadar.++Here's the sample rule in QRadar: :::image type="content" source="media/migration-qradar-detection-rules/rule-8-sample-1.png" alt-text="Diagram illustrating a rule that specifies log sources."::: <a name="log-source-example-kql"></a> ### Log source example (KQL) +Here's the log source tests rule in KQL.+ ```kusto OfficeActivity | where OfficeWorkload == "Exchange" ```-## Next steps -In this article, you learned how to map your migration rules from QRadar to Microsoft Sentinel. +## Next step > [!div class="nextstepaction"] > [Migrate your SOAR automation](migration-qradar-automation.md)\ No newline at end of file 