Skip to content

Commit 56b391a

Browse files
authored
Merge pull request #292062 from yelevin/yelevin/kusto-updates
Updating Kusto links
2 parents 9d33535 + d4cfcbd commit 56b391a

10 files changed

+123
-23
lines changed
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

articles/sentinel/watchlists-queries.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,15 @@ You might need to see a list of watchlist aliases to identify a watchlist to use
119119
120120
:::image type="content" source="./media/watchlists-queries/sentinel-watchlist-alias.png" alt-text="Screenshot that shows a list of watchlists." lightbox="./media/watchlists-queries/sentinel-watchlist-alias.png":::
121121
122+
See more information on the following items used in the preceding examples, in the Kusto documentation:
123+
- [***where*** operator](/kusto/query/where-operator?view=microsoft-sentinel&preserve-view=true)
124+
- [***project*** operator](/kusto/query/project-operator?view=microsoft-sentinel&preserve-view=true)
125+
- [***lookup*** operator](/kusto/query/lookup-operator?view=microsoft-sentinel&preserve-view=true)
126+
- [***in*** operator](/kusto/query/in-cs-operator?view=microsoft-sentinel&preserve-view=true)
127+
- [***let*** statement](/kusto/query/let-statement?view=microsoft-sentinel&preserve-view=true)
128+
129+
[!INCLUDE [kusto-reference-general-no-alert](includes/kusto-reference-general-no-alert.md)]
130+
122131
## Related content
123132
124133
In this document, you learned how to use watchlists in Microsoft Sentinel to enrich data and improve investigations. To learn more about Microsoft Sentinel, see the following articles:

articles/sentinel/watchlists.md

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -76,9 +76,9 @@ To correlate your watchlist data with other Microsoft Sentinel data, use Kusto t
7676
When you create a watchlist, you define the *SearchKey*. The search key is the name of a column in your watchlist that you expect to use as a join with other data or as a frequent object of searches. For example, suppose you have a server watchlist that contains country/region names and their respective two-letter country codes. You expect to use the country codes often for searches or joins. So you use the country code column as the search key.
7777

7878
```kusto
79-
Heartbeat
80-
| lookup kind=leftouter _GetWatchlist('mywatchlist')
81-
on $left.RemoteIPCountry == $right.SearchKey
79+
Heartbeat
80+
| lookup kind=leftouter _GetWatchlist('mywatchlist')
81+
on $left.RemoteIPCountry == $right.SearchKey
8282
```
8383

8484
Let's look some other example queries.
@@ -117,6 +117,15 @@ The following example query uses the watchlist inline with the query and the sea
117117

118118
For more information, see [Build queries and detection rules with watchlists in Microsoft Sentinel](watchlists-queries.md).
119119

120+
See more information on the following items used in the preceding examples, in the Kusto documentation:
121+
- [***where*** operator](/kusto/query/where-operator?view=microsoft-sentinel&preserve-view=true)
122+
- [***project*** operator](/kusto/query/project-operator?view=microsoft-sentinel&preserve-view=true)
123+
- [***lookup*** operator](/kusto/query/lookup-operator?view=microsoft-sentinel&preserve-view=true)
124+
- [***in*** operator](/kusto/query/in-cs-operator?view=microsoft-sentinel&preserve-view=true)
125+
- [***let*** statement](/kusto/query/let-statement?view=microsoft-sentinel&preserve-view=true)
126+
127+
[!INCLUDE [kusto-reference-general-no-alert](includes/kusto-reference-general-no-alert.md)]
128+
120129
## Next steps
121130

122131
To learn more about Microsoft Sentinel, see the following articles:

0 commit comments

Comments
 (0)