Skip to content

Commit 1939bec

Browse files
authored
Merge pull request #292507 from MicrosoftDocs/main
12/31/2024 AM Publish
2 parents 3173c81 + 6c70644 commit 1939bec

12 files changed

+139
-25
lines changed

articles/sap/workloads/sap-hana-high-availability.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,7 @@ Replace `<placeholders>` with the values for your SAP HANA installation.
144144
1. Run this command to list all the available disks:
145145

146146
```bash
147-
/dev/disk/azure/scsi1/lun*
147+
ls /dev/disk/azure/scsi1/lun*
148148
```
149149

150150
Example output:

articles/sentinel/create-analytics-rules.md

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -174,8 +174,12 @@ In the **Incident settings** tab, choose whether Microsoft Sentinel turns alerts
174174

175175
> [!IMPORTANT]
176176
> If you onboarded Microsoft Sentinel to the Microsoft Defender portal, leave this setting **Enabled**.
177+
>
178+
> - In this scenario, incidents are created by Microsoft Defender XDR, not by Microsoft Sentinel.
179+
> - These incidents appear in the incidents queue in both the Azure and Defender portals.
180+
> - In the Azure portal, new incidents are displayed with "Microsoft Defender XDR" as the **incident provider name**.
177181
178-
- If you want a single incident to be created from a group of alerts, instead of one for every single alert, see the next section.
182+
- If you want a single incident to be created from a group of alerts, instead of one for every single alert, see the next step.
179183

180184
1. <a name="alert-grouping"></a>**Set alert grouping settings.**
181185

@@ -193,12 +197,22 @@ In the **Incident settings** tab, choose whether Microsoft Sentinel turns alerts
193197

194198
1. **Re-open closed matching incidents**: If an incident has been resolved and closed, and later on another alert is generated that should belong to that incident, set this setting to **Enabled** if you want the closed incident re-opened, and leave as **Disabled** if you want the alert to create a new incident.
195199

200+
This option is not available when Microsoft Sentinel is onboarded to the Microsoft Defender portal.
201+
202+
> [!IMPORTANT]
203+
> If you onboarded Microsoft Sentinel to the Microsoft Defender portal, the **alert grouping** settings take effect only at the moment that the incident is created.
204+
>
205+
> Because the Defender portal's correlation engine is responsible for alert correlation in this scenario, it accepts these settings as initial instructions, but it also might make decisions about alert correlation that don't take these settings into account.
206+
>
207+
> Therefore, the way alerts are grouped into incidents might often be different than you would expect based on these settings.
208+
196209
> [!NOTE]
197210
>
198211
> **Up to 150 alerts** can be grouped into a single incident.
199212
> - The incident will only be created after all the alerts have been generated. All of the alerts will be added to the incident immediately upon its creation.
200213
>
201214
> - If more than 150 alerts are generated by a rule that groups them into a single incident, a new incident will be generated with the same incident details as the original, and the excess alerts will be grouped into the new incident.
215+
202216
1. Select **Next: Automated response**.
203217

204218
# [Azure portal](#tab/azure-portal)
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
---
2+
title: "include file"
3+
description: "include file"
4+
services: microsoft-sentinel
5+
author: yelevin
6+
ms.author: yelevin
7+
ms.topic: "include"
8+
ms.date: 12/26/2024
9+
ms.custom: "include file"
10+
---
11+
<!-- docutune:disable -->
12+
13+
For more information on KQL, see [Kusto Query Language (KQL) overview](/kusto/query/?view=microsoft-sentinel&preserve-view=true).
14+
15+
Other resources:
16+
- [KQL quick reference](/kusto/query/kql-quick-reference?view=microsoft-sentinel&preserve-view=true)
17+
- [Kusto Query Language learning resources](/kusto/query/kql-learning-resources?view=microsoft-sentinel&preserve-view=true)
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
---
2+
title: "include file"
3+
description: "include file"
4+
services: microsoft-sentinel
5+
author: yelevin
6+
ms.author: yelevin
7+
ms.topic: "include"
8+
ms.date: 12/26/2024
9+
ms.custom: "include file"
10+
---
11+
<!-- docutune:disable -->
12+
13+
> [!NOTE]
14+
> For more information on KQL, see [Kusto Query Language (KQL) overview](/kusto/query/?view=microsoft-sentinel&preserve-view=true).
15+
>
16+
> Other resources:
17+
> - [KQL quick reference](/kusto/query/kql-quick-reference?view=microsoft-sentinel&preserve-view=true)
18+
> - [Kusto Query Language learning resources](/kusto/query/kql-learning-resources?view=microsoft-sentinel&preserve-view=true)
172 KB
Loading

articles/sentinel/normalization-develop-parsers.md

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ Event | where Source == "Microsoft-Windows-Sysmon" and EventID == 1
110110
```
111111

112112
> [!IMPORTANT]
113-
> A parser should not filter by time. The query which uses the parser will apply a time range.
113+
> A parser should not filter by time. The query that uses the parser will apply a time range.
114114

115115
#### Filtering by source type using a Watchlist
116116

@@ -146,8 +146,11 @@ srcipaddr=='*' or ClientIP==srcipaddr
146146
array_length(domain_has_any) == 0 or Name has_any (domain_has_any)
147147
```
148148

149-
#### <a name="optimization"></a>Filtering optimization
149+
See more information on the following items in the Kusto documentation:
150+
- [***array_length*** function](/kusto/query/array-length-function?view=microsoft-sentinel&preserve-view=true)
151+
- [***has_any*** operator](/kusto/query/has-any-operator?view=microsoft-sentinel&preserve-view=true)
150152

153+
#### <a name="optimization"></a>Filtering optimization
151154

152155
To ensure the performance of the parser, note the following filtering recommendations:
153156

@@ -304,7 +307,7 @@ This function will set the fields as follows:
304307
| server1.microsoft.com | SrcHostname: server1<br>SrcDomain: microsoft.com<br> SrcDomainType: FQDN<br>SrcFQDN:server1.microsoft.com |
305308

306309

307-
The functions `_ASIM_ResolveDstFQDN` and `_ASIM_ResolveDvcFQDN` perform a similar task populating the related `Dst` and `Dvc` fields.For a full list of ASIM help functions, refer to [ASIM functions](normalization-functions.md)
310+
The functions `_ASIM_ResolveDstFQDN` and `_ASIM_ResolveDvcFQDN` perform a similar task populating the related `Dst` and `Dvc` fields. For a full list of ASIM help functions, refer to [ASIM functions](normalization-functions.md)
308311

309312
### Select fields in the result set
310313

@@ -497,7 +500,7 @@ To submit the event samples, use the following steps:
497500

498501
- In the `Logs` screen, run a query that will extract from the source table only the events selected by the parser. For example, for the [Infoblox DNS parser](https://github.com/Azure/Azure-Sentinel/blob/master/Parsers/ASimDns/Parsers/ASimDnsInfobloxNIOS.yaml), use the following query:
499502

500-
``` KQL
503+
```kusto
501504
Syslog
502505
| where ProcessName == "named"
503506
```
@@ -506,7 +509,7 @@ To submit the event samples, use the following steps:
506509

507510
- In the `Logs` screen, run a query that will output the schema or the parser input table. For example, for the same Infoblox DNS parser, the query is:
508511

509-
``` KQL
512+
```kusto
510513
Syslog
511514
| getschema
512515
```

articles/sentinel/normalization-functions.md

Lines changed: 18 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -19,27 +19,31 @@ Advanced Security Information Model (ASIM) helper functions extend the KQL langu
1919

2020
Enrichment lookup functions provide an easy method of looking up known values, based on their numerical representation. Such functions are useful as events often use the short form numeric code, while users prefer the textual form. Most of the functions have two forms:
2121

22-
The **lookup** version is a scalar function that accepts as input the numeric code and returns the textual form. Use the following KQL snippet with the **lookup** version:
22+
- The **lookup** version is a scalar function that accepts as input the numeric code and returns the textual form.
2323

24-
```kusto
25-
| extend ProtocolName = _ASIM_LookupNetworkProtocol (ProtocolNumber)
26-
```
24+
Use the following KQL snippet with the **lookup** version:
2725

28-
The **resolve** version is a tabular function that:
26+
```kusto
27+
| extend ProtocolName = _ASIM_LookupNetworkProtocol (ProtocolNumber)
28+
```
2929
30-
- Is used a KQL pipeline operator.
31-
- Accepts as input the name of the field holding the value to look up.
32-
- Sets the ASIM fields typically holding both the input value and the resulting lookup value.
30+
- The **resolve** version is a tabular function that:
3331
34-
Use the following KQL snippet with the **resolve** version:
32+
- Is used as a KQL pipeline operator.
33+
- Accepts as input the name of the field holding the value to look up.
34+
- Sets the ASIM fields typically holding both the input value and the resulting lookup value.
3535
36-
```kusto
37-
| invoke _ASIM_ResolveNetworkProtocol (`ProtocolNumber`)
38-
```
36+
Use the following KQL snippet with the **resolve** version:
3937
40-
Which will automatically populate the NetworkProtocol field with the result of the lookup.
38+
```kusto
39+
| invoke _ASIM_ResolveNetworkProtocol (`ProtocolNumber`)
40+
```
4141
42-
The **resolve** version is preferable for use in ASIM parsers, while the lookup version is useful in general purpose queries. When an enrichment lookup function has to return more than one value, it will always use the **resolve** format.
42+
The function automatically populates the ASIM field with the result of the lookup.
43+
44+
The **resolve** version is preferable for use in ASIM parsers, while the **lookup** version is useful in general purpose queries. When an enrichment lookup function has to return more than one value, it will always use the **resolve** format.
45+
46+
For more information on scalar and tabular functions (represented by the lookup and resolve versions here, respectively), see [User-defined functions](/kusto/query/functions/user-defined-functions?view=microsoft-sentinel&preserve-view=true) in the Kusto documentation.
4347
4448
### Lookup type functions
4549

articles/sentinel/summary-rules.md

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -245,6 +245,32 @@ This procedure describes a sample process for using summary rules with [auxiliar
245245
  | make-series TotalBytesSent=sum(SentBytes) on TimeGenerated from startofday(ago(starttime)) to startofday(ago(endtime)) step timeframe by DeviceVendor
246246
```
247247
248+
See more information on the following items used in the preceding examples, in the Kusto documentation:
249+
- [***let*** statement](/kusto/query/let-statement?view=microsoft-sentinel&preserve-view=true)
250+
- [***where*** operator](/kusto/query/where-operator?view=microsoft-sentinel&preserve-view=true)
251+
- [***extend*** operator](/kusto/query/extend-operator?view=microsoft-sentinel&preserve-view=true)
252+
- [***project*** operator](/kusto/query/project-operator?view=microsoft-sentinel&preserve-view=true)
253+
- [***summarize*** operator](/kusto/query/summarize-operator?view=microsoft-sentinel&preserve-view=true)
254+
- [***lookup*** operator](/kusto/query/lookup-operator?view=microsoft-sentinel&preserve-view=true)
255+
- [***union*** operator](/kusto/query/union-operator?view=microsoft-sentinel&preserve-view=true)
256+
- [***make-series*** operator](/kusto/query/make-series-operator?view=microsoft-sentinel&preserve-view=true)
257+
- [***isnotempty()*** function](/kusto/query/isnotempty-function?view=microsoft-sentinel&preserve-view=true)
258+
- [***format_datetime()*** function](/kusto/query/format-datetime-function?view=microsoft-sentinel&preserve-view=true)
259+
- [***column_ifexists()*** function](/kusto/query/column-ifexists-function?view=microsoft-sentinel&preserve-view=true)
260+
- [***iff()*** function](/kusto/query/iff-function?view=microsoft-sentinel&preserve-view=true)
261+
- [***ipv4_is_private()*** function](/kusto/query/ipv4-is-private-function?view=microsoft-sentinel&preserve-view=true)
262+
- [***min()*** function](/kusto/query/min-aggregation-function?view=microsoft-sentinel&preserve-view=true)
263+
- [***tostring()*** function](/kusto/query/tostring-function?view=microsoft-sentinel&preserve-view=true)
264+
- [***ago()*** function](/kusto/query/ago-function?view=microsoft-sentinel&preserve-view=true)
265+
- [***startofday()*** function](/kusto/query/startofday-function?view=microsoft-sentinel&preserve-view=true)
266+
- [***parse_json()*** function](/kusto/query/parse-json-function?view=microsoft-sentinel&preserve-view=true)
267+
- [***count()*** aggregation function](/kusto/query/count-aggregation-function?view=microsoft-sentinel&preserve-view=true)
268+
- [***make_set()*** aggregation function](/kusto/query/make-set-aggregation-function?view=microsoft-sentinel&preserve-view=true)
269+
- [***dcount()*** aggregation function](/kusto/query/dcount-aggregation-function?view=microsoft-sentinel&preserve-view=true)
270+
- [***sum()*** aggregation function](/kusto/query/sum-aggregation-function?view=microsoft-sentinel&preserve-view=true)
271+
272+
[!INCLUDE [kusto-reference-general-no-alert](includes/kusto-reference-general-no-alert.md)]
273+
248274
## Related content
249275
250276
- [Aggregate data in Log Analytics workspace with Summary rules](/azure/azure-monitor/logs/summary-rules)

articles/sentinel/tutorial-log4j-detection.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,8 @@ To complete this tutorial, make sure you have:
102102

103103
:::image type="content" source="media/tutorial-log4j-detection/set-rule-logic-tab.png" alt-text="Screenshot of the Set rule logic tab of the Analytics rule wizard." lightbox="media/tutorial-log4j-detection/set-rule-logic-tab.png":::
104104

105+
[!INCLUDE [kusto-reference-general-no-alert](includes/kusto-reference-general-no-alert.md)]
106+
105107
## Enrich alerts with entities and other details
106108

107109
1. Under **Alert enrichment**, keep the **Entity mapping** settings as they are. Note the three mapped entities.
@@ -218,4 +220,4 @@ Now that you've learned how to search for exploits of a common vulnerability usi
218220
- [Alert properties](customize-alert-details.md)
219221

220222
- Learn about [other kinds of analytics rules](detect-threats-built-in.md) in Microsoft Sentinel and their function.
221-
- Learn more about writing queries in Kusto Query Language (KQL). Learn more about KQL [concepts](/azure/data-explorer/kusto/concepts/) and [queries](/azure/data-explorer/kusto/query/), and see this handy [quick reference guide](/azure/data-explorer/kql-quick-reference).
223+
- Learn more about writing queries in Kusto Query Language (KQL). To learn more about KQL, see this [overview](/kusto/query/?view=microsoft-sentinel&preserve-view=true), learn some [best practices](/kusto/query/best-practices?view=microsoft-sentinel&preserve-view=true), and keep this handy [quick reference guide](/kusto/query/kql-quick-reference?view=microsoft-sentinel&preserve-view=true).

articles/sentinel/unified-connector-custom-device.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -259,6 +259,18 @@ Follow these steps to ingest log messages from JuniperIDP:
259259
```kusto
260260
source | parse RawData with tmp_time " " host_s " " ident_s " " tmp_pid " " msgid_s " " extradata | extend dvc_os_s = extract("\\[(junos\\S+)", 1, extradata) | extend event_end_time_s = extract(".*epoch-time=\"(\\S+)\"", 1, extradata) | extend message_type_s = extract(".*message-type=\"(\\S+)\"", 1, extradata) | extend source_address_s = extract(".*source-address=\"(\\S+)\"", 1, extradata) | extend destination_address_s = extract(".*destination-address=\"(\\S+)\"", 1, extradata) | extend destination_port_s = extract(".*destination-port=\"(\\S+)\"", 1, extradata) | extend protocol_name_s = extract(".*protocol-name=\"(\\S+)\"", 1, extradata) | extend service_name_s = extract(".*service-name=\"(\\S+)\"", 1, extradata) | extend application_name_s = extract(".*application-name=\"(\\S+)\"", 1, extradata) | extend rule_name_s = extract(".*rule-name=\"(\\S+)\"", 1, extradata) | extend rulebase_name_s = extract(".*rulebase-name=\"(\\S+)\"", 1, extradata) | extend policy_name_s = extract(".*policy-name=\"(\\S+)\"", 1, extradata) | extend export_id_s = extract(".*export-id=\"(\\S+)\"", 1, extradata) | extend repeat_count_s = extract(".*repeat-count=\"(\\S+)\"", 1, extradata) | extend action_s = extract(".*action=\"(\\S+)\"", 1, extradata) | extend threat_severity_s = extract(".*threat-severity=\"(\\S+)\"", 1, extradata) | extend attack_name_s = extract(".*attack-name=\"(\\S+)\"", 1, extradata) | extend nat_source_address_s = extract(".*nat-source-address=\"(\\S+)\"", 1, extradata) | extend nat_source_port_s = extract(".*nat-source-port=\"(\\S+)\"", 1, extradata) | extend nat_destination_address_s = extract(".*nat-destination-address=\"(\\S+)\"", 1, extradata) | extend nat_destination_port_s = extract(".*nat-destination-port=\"(\\S+)\"", 1, extradata) | extend elapsed_time_s = extract(".*elapsed-time=\"(\\S+)\"", 1, extradata) | extend inbound_bytes_s = extract(".*inbound-bytes=\"(\\S+)\"", 1, extradata) | extend outbound_bytes_s = extract(".*outbound-bytes=\"(\\S+)\"", 1, extradata) | extend inbound_packets_s = extract(".*inbound-packets=\"(\\S+)\"", 1, extradata) | extend outbound_packets_s = extract(".*outbound-packets=\"(\\S+)\"", 1, extradata) | extend source_zone_name_s = extract(".*source-zone-name=\"(\\S+)\"", 1, extradata) | extend source_interface_name_s = extract(".*source-interface-name=\"(\\S+)\"", 1, extradata) | extend destination_zone_name_s = extract(".*destination-zone-name=\"(\\S+)\"", 1, extradata) | extend destination_interface_name_s = extract(".*destination-interface-name=\"(\\S+)\"", 1, extradata) | extend packet_log_id_s = extract(".*packet-log-id=\"(\\S+)\"", 1, extradata) | extend alert_s = extract(".*alert=\"(\\S+)\"", 1, extradata) | extend username_s = extract(".*username=\"(\\S+)\"", 1, extradata) | extend roles_s = extract(".*roles=\"(\\S+)\"", 1, extradata) | extend msg_s = extract(".*message=\"(\\S+)\"", 1, extradata) | project-away RawData
261261
```
262+
263+
The following screenshot shows the complete query in the preceding example in a more readable format:
264+
265+
:::image type="content" source="media/unified-connector-custom-device/kusto-query-screenshot.png" alt-text="Screenshot showing expanded Kusto query with line breaks for readability." lightbox="media/unified-connector-custom-device/kusto-query-screenshot.png":::
266+
267+
See more information on the following items used in the preceding examples, in the Kusto documentation:
268+
- [***parse*** operator](/kusto/query/parse-operator?view=microsoft-sentinel&preserve-view=true)
269+
- [***extend*** operator](/kusto/query/extend-operator?view=microsoft-sentinel&preserve-view=true)
270+
- [***extract*** function](/kusto/query/extract-function?view=microsoft-sentinel&preserve-view=true)
271+
- [***project-away*** operator](/kusto/query/project-away-operator?view=microsoft-sentinel&preserve-view=true)
272+
273+
[!INCLUDE [kusto-reference-general-no-alert](includes/kusto-reference-general-no-alert.md)]
262274
263275
1. Configure the machine where the Azure Monitor Agent is installed to open the syslog ports, and configure the syslog daemon there to accept messages from external sources. For detailed instructions and a script to automate this configuration, see [Configure the log forwarder to accept logs](connect-custom-logs-ama.md#configure-the-log-forwarder-to-accept-logs).
264276

0 commit comments

Comments
 (0)