Ingest data into the Microsoft Sentinel SIEM and platform
Ingestion paths and the Log Analytics tables each one writes
A detection rule that hunts for repeated failed logons queries the SecurityEvent table, and it stays silent if your Windows events landed in WindowsEvent or Event instead. That one fact frames this page: getting data into Microsoft Sentinel means choosing a collection mechanism and, with it, the table that mechanism writes, because Sentinel content is written against table names. For workspace-backed ingestion, Sentinel stores records in tables of the Log Analytics workspace that Sentinel is enabled on.
This page covers how data gets into that workspace: after you onboard Sentinel, you use data connectors to start ingesting your data[1], and the paths below also cover API-based ingestion. Once data is flowing, Microsoft Sentinel offers two retention tiers: the analytics tier, whose data is also mirrored to the data lake tier by default, and the data lake tier, which keeps data in the data lake only[2] (see also Configure the Microsoft Sentinel SIEM and platform), and analytics rules query the collected data and generate alerts[3] (see also Configure detections).
AMA-based collection, diagnostic settings, threat intelligence ingestion, and the Logs Ingestion API
The sections below take four ingestion paths in this order, from AMA-based collection, where Sentinel uses agents provided by Azure Monitor to collect data[1], to the Logs Ingestion API:
- AMA-based collection. The Azure Monitor Agent (AMA) runs on a Windows or Linux machine and follows a data collection rule (DCR), an Azure resource that says which events to collect, how to filter them, and where to send them. Microsoft Sentinel uses AMA for its Windows agent-based connectors[4], and the Syslog via AMA and Common Event Format (CEF) via AMA connectors install AMA on Linux machines[5].
- Diagnostic settings. Azure resources emit platform logs, such as the Azure activity log, that diagnostic settings can send to a workspace. A diagnostic setting on the resource, or an Azure Policy assignment that creates those settings across a scope, streams the selected log categories to the workspace through a diagnostic settings-based connector[6].
- Threat intelligence ingestion. Threat indicators and related STIX objects (Structured Threat Information Expression, the open standard format for describing threat data) arrive through threat intelligence connectors, the upload API, or manual entry, and are stored in the
ThreatIntelIndicatorsandThreatIntelObjectstables[7]. - Logs Ingestion API. Your own application posts JSON to an endpoint, a DCR reshapes it, and the result lands in a table, typically a custom table whose name ends in
_CL(Logs Ingestion API overview[8]).
Two of the four paths share one policy object: AMA-based collection and the Logs Ingestion API are both DCR-based, so the DCR model taught in Data collection rules and associations below applies to both. Diagnostic settings and threat intelligence ingestion have their own configuration surfaces. The figure below maps each path to the tables it writes; diagnostic settings write AzureActivity for the Azure activity log[9] and, for other resources, the table named in that resource's connector reference entry. AMA-based collection also writes Event when a generic Windows event DCR collects the logs: that route sends even Security log events to the Event table[10], as Windows Security Events via AMA below explains.
The habit to take into every scenario: name the table the scenario's content needs, and the path and connector usually follow.
Data connectors: from selection to confirmed data
This section covers the steps every connector shares, from choosing it to proving it works; the later sections add each path's specifics. A data connector is the Sentinel component that configures collection for one kind of source, and connectors are delivered inside Content hub solutions, packages that also carry analytics rule templates, workbooks, and other content for that source.
Selecting a connector
Microsoft's enablement steps include reviewing the connector's Prerequisites and ensuring they're fulfilled[11]; these four questions extend that check to the whole selection:
- Does it collect from your source? Each connector page states the source it supports and the prerequisites it needs, and some connectors document extra collection steps (enable a data connector[11]).
- Does it write the table your content queries? This is the destination-table rule from the opening section: the Windows Security Events via AMA and Windows Forwarded Events connectors can carry the same Security log events into two different tables.
- Can you authorize it? Enabling a connector needs read and write permission on the Microsoft Sentinel workspace[11], and individual connectors can require extra permissions documented per connector[12]. Installing Content hub solutions needs the Microsoft Sentinel Contributor role at the resource group level[13].
- Who supports it? Both Microsoft and other organizations author connectors, and the Supported by field on the connector's side panel names the support contact[11]. A connector that ships through Content hub is not automatically maintained by Microsoft.
Enabling a connector
For Content hub connectors, the general enablement sequence is (enable a data connector[11]):
- Install the solution that contains the connector from Content hub.
- Open the connector: in the Defender portal select Microsoft Sentinel > Configuration > Data connectors (in the Azure portal, Configuration > Data connectors), select the connector, and select Open connector page. If the connector is missing from the list, first check that its solution is installed.
- Review and meet the Prerequisites listed on the page.
- Follow the steps in the page's Configuration section, such as creating a DCR or launching a policy assignment.
- Confirm data: the connector page shows a Data received graph and the connectivity status of each data type, and you can query the destination table in Advanced hunting (Defender portal) or Logs (Azure portal).
The figure below traces that sequence. Do not skip step 5: installing the solution in step 1 makes the connector available, but configuration in step 4 and confirmation in step 5 are still needed.
Two more points apply once a connector is enabled: a UEBA option on its page, and a default storage behavior. On a connector that supports User and Entity Behavior Analytics (UEBA, Sentinel's behavioral baselining of users, hosts, and other entities), Advanced options > Configure UEBA lets you toggle on the tables UEBA should analyze[11]; connector connectivity alone does not prove that its tables are enabled for UEBA. And if your tenant is onboarded to the Microsoft Sentinel data lake, data from a newly enabled connector goes to the analytics tier and is mirrored to the data lake tier by default[11]; managing those tiers and their retention is covered on the SIEM platform page.
Microsoft Sentinel in the Azure portal is supported until March 31, 2027[11], after which Sentinel is available only in the Defender portal, so this page names the Defender portal path first.
The takeaway: installed is not connected, and connected is not proven until the expected table holds records.
Data collection rules and associations
This section covers the policy object behind AMA-based collection, because every AMA connector on this page creates one. A data collection rule (DCR) is an Azure resource that specifies the data to collect, the schema of the incoming data, any transformation to apply before storage, and the destination[14]. Sentinel's agent-based connectors rely on two of its properties: DCRs are independent of both the workspace and the virtual machine, so one rule can be defined once and reused, and they filter at the source[4], so the agent ingests only the events you asked for and leaves the rest behind.
How a DCR reaches a machine
A DCR does nothing until it is applied. A data collection rule association (DCRA) binds a rule to a machine, and the relationship is many-to-many: one DCR can serve many resources, and one resource can have up to 30 DCRs[14]. When AMA is installed, it connects to Azure Monitor to retrieve the DCRs associated with it[14], then collects and sends what those rules describe. The figure below shows one rule associated with two kinds of machine.
You can use the connector wizard instead of creating the association by hand. The connector page's +Add data collection rule wizard (create DCRs through the GUI[4]) handles it in three configuration tabs before Review + create:
- Basics: the rule name, subscription, and resource group. The DCR does not have to sit in the same subscription or resource group as the machines, as long as everything is in the same tenant.
- Resources: the Azure VMs and Azure Arc-enabled servers (non-Azure machines given an Azure resource representation, explained in Machines outside Azure below) the rule applies to. Selecting them creates the associations, and the wizard installs AMA on any selected machine that lacks it.
- Collect: the events to collect, which differ per connector (event sets and XPath queries for Windows, facilities and severities for Syslog and CEF).
Because the rule and its targets are separate, scope collection by machine set: reuse one rule wherever the requirement is identical, and create a second rule for the subset of servers that needs different events, instead of editing the shared rule.
Machines outside Azure
An on-premises server, or a server in another cloud, is not an Azure resource, so a DCR cannot be associated with it directly. Such a machine must have Azure Arc installed and enabled before you enable the AMA-based connector[4]; that covers physical Windows servers, on-premises virtual machines, and virtual machines in non-Azure clouds. The two agents do different jobs: the Azure Arc Connected Machine agent gives the server an Azure resource representation that AMA can be deployed to and a DCR associated with, and AMA still does the collecting. The older Log Analytics agent (also called MMA) was retired on 31 August 2024[15], so it is never the answer for new collection.
Anatomy of a Windows Security Events DCR
The connector wizard builds the DCR for you, and the same rule can be created through the API[4], which helps when you manage many rules. This request body follows that documented example, simplified to two Security log event IDs:
Request body: a DCR for Windows Security Events via AMA (simplified)
{
"location": "eastus",
"properties": {
"dataSources": {
"windowsEventLogs": [
{
"name": "eventLogsDataSource",
"streams": ["Microsoft-SecurityEvent"],
"xPathQueries": ["Security!*[System[(EventID=4624) or (EventID=4625)]]"]
}
]
},
"destinations": {
"logAnalytics": [
{
"workspaceResourceId": "/subscriptions/.../workspaces/centralTeamWorkspace",
"name": "centralWorkspace"
}
]
},
"dataFlows": [
{ "streams": ["Microsoft-SecurityEvent"], "destinations": ["centralWorkspace"] }
]
}
}
Read the listing's three blocks against the definition above. dataSources.windowsEventLogs is what to collect: xPathQueries is the source-side filter, and Microsoft-SecurityEvent is the stream (the named data feed) it produces. destinations.logAnalytics is where: a workspace, given a local name. dataFlows connects the stream to that destination name. The ... inside workspaceResourceId marks the elided subscription and resource group path; replace it with the full resource ID before sending.
One name collision to clear up at first touch: Microsoft Defender for Endpoint also has custom data collection rules[16], configured in the Defender portal under Settings > Endpoints > Rules > Custom Data Collection, which capture extra endpoint telemetry and send it to Sentinel. They are a Defender for Endpoint feature, not the Azure Monitor DCRs this page describes, and the automation configuration page covers them.
The takeaway: the DCR holds the policy, the association applies it, Azure Arc makes non-Azure servers eligible, and AMA does the collecting.
Windows Security Events via AMA: choosing what to collect
This section covers the choices on the Collect tab of the Windows Security Events via AMA connector, which decide both ingestion volume and audit coverage. The connector writes to the SecurityEvent table, which many built-in Windows security analytics rules query[17], and it offers four event sets:
| Event set | What it collects | Choose it when |
|---|---|---|
| All events | The full, unfiltered Security log plus the AppLocker logs | You need every Security log event and can accept the volume |
| Common | A curated audit set that keeps a full user audit trail, including both sign-in (4624) and sign-out (4634) events | You need audit-grade coverage at reduced volume |
| Minimal | A small set of events that might indicate a breach, such as successful and failed logons (4624, 4625) and process creation (4688), without sign-out (4634) | You need breach signals at the lowest volume and no full audit trail |
| Custom | The events your own XPath queries select | You need specific event IDs or conditions |
The event set reference[17] lists every event ID in Common and Minimal. Distinguish these two event-set limitations. First, All events is not all Windows logs: it covers only the Security and AppLocker channels and does not include Application, System, or Setup[17]. Second, Minimal is not a smaller Common: it drops sign-out event 4634 because that event matters for auditing but not for breach detection, so a requirement for complete session auditing rules Minimal out.
Generic Windows event DCRs write a different table
Azure Monitor can also collect Windows events through a generic DCR with the Windows Event Logs data source. If you select the Security log there, the events go to the Event table[10], alongside events from logs such as System and Application, not to SecurityEvent. Collecting the same event IDs through that route does not satisfy content written for SecurityEvent; the destination-table rule from the opening section decides the connector.
Custom XPath filters
An XPath query here is a filter expression over the XML form of a Windows event, evaluated by the agent before anything is sent. DCR entries take the form LogName!XPathQuery: the channel name, an exclamation mark, then the XPath. The Azure Monitor documentation[10] gives examples such as these:
XPath syntax examples from the Azure Monitor Windows events documentation
Security!*[System[EventID=4625]]
Security!*[System[(EventID=4648)]] and *[EventData[Data[@Name='ProcessName']='C:\Windows\System32\consent.exe']]
System!*[System[(Level=1 or Level=2 or Level=3) and (EventID != 6)]]
The first line selects failed logon event 4625 from the Security channel; the second selects event 4648 only when the process is consent.exe; the third selects critical, error, and warning System events except event ID 6. The syntax is the same in this connector's Custom set, whose Collect step links to these XPath rules[4], and in a generic Windows event DCR. For System and Application events, this page uses the generic DCR route, which writes them to the Event table[10]. The field expects Windows Event Log XPath, not KQL, so a KQL where clause typed there is invalid. Filtering here also keeps unwanted events from ever being ingested, which saves ingestion cost[4], whereas a KQL filter at query time only hides records you have already paid to store.
Three constraints apply to this collection configuration:
- AMA supports XPath version 1.0 only[4], and functions such as
starts-withandcontainsare not supported[10]. - The connector accepts up to 20 expressions in a single box and up to 100 boxes in a rule[4].
- Analytic and Debug channels cannot be collected[10], because Windows does not allow the event subscription AMA uses on those channel types.
Testing an XPath query locally
Before saving a custom set, test the expression on a Windows machine with Get-WinEvent. The value of -LogName is the part before the exclamation mark, and -FilterXPath takes the rest (testing XPath with Get-WinEvent[10]):
PowerShell: test the XPath part of Security!*[System[EventID=4625]]
$XPath = '*[System[EventID=4625]]'
Get-WinEvent -LogName 'Security' -FilterXPath $XPath
Returned events mean the query is valid. The message "No events were found that match the specified selection criteria" means the query may be valid but nothing on this machine matches, while "The specified query is invalid" means a syntax error (interpreting the result[4]). One trap remains: Get-WinEvent supports up to 23 expressions, but DCRs support up to 20[10]. That 20 is the per-box limit stated above, not a cap per rule, so a local test that passes with 21 to 23 expressions in one query does not prove a DCR XPath box will accept it.
The takeaway: choose the event set by audit requirement, keep Security content on this connector so it lands in SecurityEvent, and validate custom XPath locally, keeping each XPath box within 20 expressions.
Windows Event Forwarding through a collector
This section covers the second Windows option: collecting from servers that already forward their events, instead of installing AMA on each one. Windows Event Forwarding (WEF) is Windows' built-in subscription mechanism: source computers forward selected events to a central server running Windows Event Collection, the Windows Event Collector (WEC), which stores them in its Forwarded Events log. Sentinel then collects from the collector alone.
Planning the collector
The Windows Forwarded Events connector's prerequisites[4] set the plan:
- WEC enabled and running, with AMA installed on the WEC machine. The collector is the only machine Sentinel needs an agent on; installing AMA on the sources instead leaves the collector's events unsent.
- Azure Arc on a non-Azure collector. The Arc rule from Data collection rules and associations applies to the collector like any other server.
- ASIM parsers recommended. The Advanced Security Information Model (ASIM) is Sentinel's normalization layer, a set of parsers that present data from different sources in one common schema; Microsoft recommends deploying the ASIM WindowsEvent parsers[4] for full normalization support.
The table changes: WindowsEvent, not SecurityEvent
Events collected through WEF are written to the WindowsEvent table, including events forwarded from the Windows Security log; they are not written to SecurityEvent[4]. Many built-in Windows Security Events rules, including some near-real-time rules, query SecurityEvent and don't match data stored only in WindowsEvent[4]. Microsoft names three ways forward:
- Collect directly with Windows Security Events via AMA when you need the built-in
SecurityEventrules unchanged. - Adapt the rule queries to
WindowsEvent. - Use supported ASIM parsers so normalized content can read the forwarded events.
Adapting a query is more than swapping a table name: the two tables have different schemas, so every field reference must be checked as well.
Configuring collection in two stages
Once the WEC subscriptions deliver events, open the Windows Forwarded Events connector, create a DCR, associate it with the collector, and choose All events or a Custom XPath selection on the Collect tab (the DCR wizard[4]). Delivery now has two independent stages, which the figure below separates. Stage 1 is WEF delivering source events to the collector; stage 2 is AMA delivering the collector's forwarded events to the workspace. When events are visible in the collector's Forwarded Events log but absent from WindowsEvent, stage 1 is working, and stage 2 (the agent, the DCR, or its association) is the place to look.
The takeaway: WEF puts one agent on the collector and lands everything in WindowsEvent, so plan the rule and parser consequences before choosing it over the direct connector.
Syslog and CEF via AMA: the log forwarder
This section covers how Linux and appliance logs reach Sentinel, starting with the two formats involved. Syslog is a standard protocol for sending log messages between devices and applications; typical fields include a priority, a timestamp, a hostname, an application name, a process ID, and message text, with availability depending on the format and sender, and messages can travel over UDP, TCP, or TLS. AMA supports Syslog formatted according to RFC 3164 and RFC 5424[5]. Common Event Format (CEF) is a vendor-neutral extension of Syslog built for SIEM use: a standard header (device vendor, product, version, event class, severity, and event ID) followed by extensions such as source and destination IP addresses, user names, and actions (what Syslog and CEF are[5]).
Two topologies
The Syslog via AMA and CEF via AMA connectors[5] install AMA on a Linux machine in one of two roles:
- Single machine. A Linux VM that produces its own Syslog runs AMA itself.
- Log forwarder. A dedicated Linux VM, on-premises, in Azure, or in another cloud, receives messages from appliances and other machines and runs AMA on their behalf. Firewalls and other appliances that only export Syslog use this topology, because AMA runs on the forwarder, never on the appliance.
The hops on a log forwarder
The figure below traces a message through a forwarder:
- The appliance sends Syslog or CEF to the Syslog daemon on the forwarder (
rsyslogorsyslog-ng), on TCP or UDP port 514 or another port you prefer[5]. Port 514 is the convention, not a requirement; if you change it, the daemon's port must match the sender's. - The daemon passes messages to AMA: AMA 1.28.11 and later receives them on TCP port 28330, and earlier versions use a Unix domain socket[5]. Port 28330 is an internal hop on the forwarder, so appliances are never pointed at it.
- AMA applies the DCR and sends the result to the workspace, where CEF messages land in
CommonSecurityLogand plain Syslog inSyslog[5].
Every Log Analytics table has a TimeGenerated datetime column[18] (Creating custom log tables below covers it). On a forwarder, TimeGenerated reflects when the forwarder processed the message, while EventTime comes from the Syslog header[5], which, when it carries no time zone, is converted using the forwarder's offset, so the two fields can disagree when the device and the forwarder sit in different time zones.
Prerequisites
The connector article's prerequisites[19] for a forwarder include, among others:
- A designated Linux VM, with the Azure Arc Connected Machine agent installed if it is not an Azure VM.
- Python 2.7 or 3, and either the
syslog-ngor thersyslogdaemon enabled. - Sources configured to send to the forwarder's daemon instead of their own local daemon.
- Azure roles: Virtual Machine Contributor or Azure Connected Machine Resource Administrator to install the agent, a role that includes
Microsoft.Resources/deployments/*to deploy templates, and Monitoring Contributor to create or edit DCRs.
If devices send over TLS, for example because the forwarder runs in the cloud, you configure the Syslog daemon to communicate in TLS[19]. AMA's own connection to Azure does not protect the appliance-to-forwarder leg; that leg is daemon configuration.
Setup sequence
- Install the Syslog or Common Event Format solution from Content hub to get the matching connector (setup process[5]).
- On the connector page, select +Create data collection rule, pick the forwarder on the Resources tab, and set facilities and severities on the Collect tab; creating the rule installs AMA on the machines you selected[19]. The API alternative requires you to install AMA manually before creating the DCR[5], then create the association yourself.
- On the forwarder, run the installation script
Forwarder_AMA_installer.py, copying its command from the connector page. The script configures the daemon, restarts it, and opens port 514 for both UDP and TCP[19]; the listening port can be changed in/etc/rsyslog.confor/etc/syslog-ng/syslog-ng.conf. - Configure each appliance to send to the forwarder's listener.
Step 3 configures the daemon to receive messages from other machines: AMA and a DCR alone do not ensure a remote listener, so verify the daemon's listening configuration rather than recreating the DCR.
The takeaway: appliances talk to the daemon, the daemon talks to AMA, and AMA talks to Azure, so configure and troubleshoot each hop separately.
Choosing which Syslog and CEF messages are kept
This section covers what the DCR of a Syslog or CEF connector selects, and how a forwarder that handles both formats avoids storing a message twice.
Facilities and minimum log levels
A Syslog facility is a category label the sender attaches to each message (such as auth, daemon, or local4), and the log level is its severity. On the connector's Collect tab you pick a minimum log level for each facility, and selecting a level collects it and every more severe level: choosing LOG_ERR collects LOG_ERR, LOG_CRIT, LOG_ALERT, and LOG_EMERG[19]. Less severe messages from that facility, such as informational ones, are excluded, so check that the minimum you pick still keeps the events your detections need. The portal offers only this minimum-level choice; creating the DCR through the API lets you filter by specific log levels[5].
In the DCR itself, each Syslog data source names its stream, its facilities, and its levels. This excerpt follows Microsoft's Syslog and CEF streams in the same DCR[19] example:
DCR excerpt: one CEF stream and one Syslog stream on separate facilities
"dataSources": {
"syslog": [
{
"name": "CEFStream1",
"streams": ["Microsoft-CommonSecurityLog"],
"facilityNames": ["authpriv", "mark"],
"logLevels": ["Info", "Notice", "Warning", "Error", "Critical", "Alert", "Emergency"]
},
...
{
"name": "SyslogStream3",
"streams": ["Microsoft-Syslog"],
"facilityNames": ["kern", "local0", "local5", "news"],
"logLevels": ["Critical", "Alert", "Emergency"]
}
...
]
}
The ... lines mark the other streams of Microsoft's example, which are omitted here; this is a fragment of a full DCR, not a complete request body. The streams value decides the table: Microsoft-CommonSecurityLog for CEF and Microsoft-Syslog for plain Syslog. The two entries list disjoint facilityNames, and that separation is what prevents duplicates. The logLevels values name each severity in words: the portal's LOG_ERR, LOG_CRIT, LOG_ALERT, and LOG_EMERG appear in DCR JSON as Error, Critical, Alert, and Emergency (facility and log level examples[19]).
Preventing duplicate ingestion
If CEF and plain Syslog share a facility, the same message can be ingested into both CommonSecurityLog and Syslog[5]. Enabling every facility on both connectors for completeness causes exactly that. Microsoft documents two fixes:
- If the source can change its facility: send CEF and plain Syslog on different facilities, and configure each DCR stream to collect only its own facilities.
- If it cannot: add an ingestion-time transformation to the Syslog stream that drops CEF messages, and keep the CEF stream so the data is still stored once.
KQL transformation on the Syslog stream: drop CEF messages
source
| where ProcessName !contains "CEF" and SyslogMessage !contains "CEF:0"
The transformation runs in the DCR before storage (source is the incoming stream), and it checks two fields because, starting with AMA 1.41, ProcessName might not reliably contain "CEF" for vendors whose headers don't comply with RFC 3164 or RFC 5424[5]. Filtering on ProcessName alone can let those vendors' CEF messages through into Syslog.
The takeaway: facilities and minimum levels decide what is kept, and disjoint facilities or a Syslog-stream transformation help prevent this CEF/Syslog duplication for selected messages.
Validating Syslog and CEF ingestion
This section covers proving a Syslog or CEF pipeline end to end. Work the hops in order, because each check proves only its own hop (test the connector[19]):
- Run
netstat -lnptvon the forwarder and confirm thatrsyslogorsyslog-nglistens on port 514. - Capture traffic with
sudo tcpdump -i any port 514 or 28330 -A -vv &to watch messages arrive at the daemon and pass to AMA. - Send a CEF-formatted test message to the local daemon, for example with the
loggercommand below. - Query the destination table. Logs can take up to 20 minutes to appear[19] in the workspace.
Bash: send a mock CEF test message to the local daemon
logger -p local4.warn -P 514 -n 127.0.0.1 --rfc3164 -t CEF "0|Mock-test|MOCK|common=event-format-test|end|TRAFFIC|3|rt=Nov 04 2018 07:15:46 GMT"
KQL: confirm the test message reached CommonSecurityLog
CommonSecurityLog
| where TimeGenerated > ago(1d)
| where DeviceProduct == "MOCK"
In the logger line, -t CEF plus the quoted text form the CEF header CEF:0|Mock-test|MOCK|common=event-format-test|end|TRAFFIC|3| before the rt extension (Microsoft also shows an nc (netcat) test[19]): version 0 (the CEF version, which comes before the header fields[20] in the documented order CEF:Version|Device Vendor|Device Product|Device Version|...|Severity|[Extension], and is not the device version listed in Syslog and CEF via AMA above), then vendor Mock-test and product MOCK, the first two header fields, stored in DeviceVendor and DeviceProduct. In that order Severity[20] is the last header field, so the next four values run from Device Version through Severity: common=event-format-test is a mock device version despite its =, only the rt= part after the last pipe is an extension, and 3 is the CEF Severity, not the syslog Warning level that -p local4.warn sets[19]. The query filters on DeviceProduct, and ago(1d) still finds the message, because the 2018 rt value is only sample content and TimeGenerated is the forwarder's processing time[5] (Syslog and CEF via AMA above). For a real appliance, filter on its vendor and product, such as DeviceVendor == "Cisco" and DeviceProduct == "ASA" in Microsoft's Cisco ASA example[19].
A daemon listening on 514 says nothing about AMA, and traffic captured on port 514 proves only that the message reached the forwarder. Only the table query proves that the DCR selected the message, AMA parsed it, and the workspace stored it. If the test message never arrives, the connector article[19] points to a dedicated troubleshooting guide.
The takeaway: validate hop by hop, and count a CEF source as onboarded only when the expected DeviceVendor and DeviceProduct rows appear in CommonSecurityLog.
Collecting Azure platform logs with diagnostic settings
This section covers the diagnostic settings path, used for logs that the Azure platform produces about your resources. The Azure activity log records subscription-level events such as resources being created, changed, or deleted, and resource logs record operations inside an Azure resource; neither comes from a guest operating system, so installing AMA on a VM never collects them. A diagnostic setting on the source sends selected log and metric categories to a destination, and for Sentinel that destination is the Log Analytics workspace that Sentinel is enabled on.
Two connector types
Diagnostic settings-based connectors come in two kinds[6], and the figure below shows each kind and what it covers:
- Standalone connectors have you configure one resource's own diagnostic settings.
- Connectors managed by Azure Policy apply a single diagnostic settings configuration to every resource of one type within a scope.
Standalone: one resource at a time
From the connector page, follow the link to the resource, then (standalone procedure[6]):
- Select Diagnostic settings > + Add diagnostic setting, and name the setting.
- Select Send to Log Analytics, then choose the subscription and the Log Analytics Workspace where Microsoft Sentinel resides.
- Select the log and metric categories to collect, following the recommendations in the connector's reference entry, and select Save.
The destination is the part that goes wrong. A diagnostic setting that sends only to a storage account, or to another workspace, is a working setting that does not reach the intended Sentinel workspace through that setting; checking that the correct workspace is selected[9] is the first troubleshooting step when logs don't appear.
Azure Policy: a whole scope, now and later
For a policy-managed connector, select Launch Azure Policy Assignment wizard on the connector page (policy-managed procedure[6]):
- Basics: choose the scope, a subscription and optionally a resource group.
- Parameters: clear Only show parameters that require input, choose the Sentinel workspace from the Log Analytics workspace list, and leave True on each log type you want to ingest.
- Remediation: the policy applies to resources added in the future; to apply it to existing resources as well, select Create a remediation task.
- Review + create: select Create.
Assignment and remediation cover different parts of the fleet: the assignment configures resources as they are added, and the remediation task back-fills the ones that already exist. Assigning without remediation does not back-fill diagnostic settings on existing noncompliant resources. Applying a log streaming policy this way requires the Owner role for the policy assignment scope[6], on top of read and write permission on the workspace.
The Azure Activity connector
The Azure Activity connector now uses the diagnostic settings pipeline[6]. If a subscription is still connected through the legacy method, disconnect it from that method first, using the connector page's instructions, before setting up the new connection, so the two collection paths are not both active. Activity data lands in the AzureActivity table, which Microsoft's troubleshooting article queries to verify the transfer[9], and Azure Activity is one of the free Microsoft Sentinel data sources[21].
Reading the connection status
For policy-managed connectors, the status shows connected only if data has been ingested at some point in the past 14 days[6]; after 14 days without data it shows disconnected, and it returns to connected as soon as data arrives. A quiet source can therefore look disconnected with its configuration intact, so check source activity and the table before recreating anything.
The takeaway: platform logs need a diagnostic setting pointed at the right workspace, Azure Policy scales that setting to a scope, and a remediation task covers the resources that already exist.
Threat intelligence ingestion routes
This section covers how threat intelligence gets into Sentinel, starting with what it is. A threat indicator, also called an indicator of compromise (IOC), associates an observed artifact such as a URL, a file hash, or an IP address with known threat activity such as phishing, botnets, or malware[7]. Sentinel also stores richer STIX objects: threat actors, attack patterns, identities (such as victim organizations), and the relationships between them. STIX is the data format; TAXII (Trusted Automated Exchange of Intelligence Information) is the protocol that servers use to exchange it, and the combination of the two is the most widely adopted standard for transmitting threat intelligence[7].
Three routes in
Threat intelligence arrives by one of three routes, and the figure below shows each one and where ingestion rules apply (ordered rules that filter or enrich objects arriving from connectors, explained in Managing ingested threat intelligence below):
- Pull, through a data connector. Sentinel fetches intelligence from a feed: a TAXII server's collection or Microsoft's own threat intelligence.
- Push, through the upload API. Your threat intelligence platform (TIP) or custom application sends objects to Sentinel.
- Manual entry. An analyst creates an object in the threat intelligence management interface.
The connectors below are available in Content hub as part of the Threat Intelligence solution[7], and installing it needs Microsoft Sentinel Contributor at the resource group level[13].
Pull: data connectors
Microsoft Defender Threat Intelligence connectors. The standard connector brings public indicators and open-source intelligence (OSINT), and the premium connector adds Microsoft's curated indicators and Microsoft-enriched OSINT[7]. Both put the intelligence in your workspace for monitoring, alerting, and hunting. Do not confuse them with the free Defender Threat Intelligence matching analytics rule: with matching analytics, only indicators that match the rule are ingested into your environment[7], so it is not a way to build a full indicator inventory for other hunts.
Threat Intelligence - TAXII connector. It is a built-in TAXII client that pulls threat indicators from TAXII 2.0 or 2.1 servers[13]. On the connector page you enter (enable the TAXII connector[13]):
- a Friendly name for the server collection;
- the API root URL and the Collection ID, which the provider usually documents; some providers advertise only a discovery endpoint, which you browse to find the API root, because a discovery URL alone does not identify a collection;
- a Username and Password, if the server needs them;
- the group of indicators to import and the polling frequency.
Repeat for each collection you want. A few servers, such as FS-ISAC, require you to allowlist the Microsoft Sentinel TAXII client's IP addresses[13]; most do not. A separate Threat Intelligence - TAXII Export connector sends threat data out to TAXII 2.1 servers[13], so keep import and export apart.
Push: the upload API
The threat intelligence upload API, in preview, ingests STIX objects into Sentinel without the need for a data connector[22], scoped to one workspace. Its setup (configure the upload API[22]):
- Register a Microsoft Entra application and record its application (client) ID.
- Generate a client secret for it.
- Assign the application the Microsoft Sentinel Contributor role at the workspace level.
- Configure the TIP or custom application with the client ID, a Microsoft Entra access token obtained with OAuth 2.0, and the Sentinel workspace ID.
The legacy Threat Intelligence Platform data connector also accepts pushed intelligence, but it uses the Microsoft Graph Security tiIndicators API, is limited to indicators, and is being deprecated[7], so new integrations that carry threat actors or relationships use the upload API. Mind the name collision: your TIP is the product that sends intelligence, while the Threat Intelligence Platform data connector is a legacy Sentinel receiver that shares its name. Pushing needs no TAXII server: the upload API is itself the receiving end.
Manual: a TI object
A finding from your own investigation needs no feed at all. In the threat intelligence management interface, select Add new > TI object, choose the Object type, complete the required fields, and select Add (create threat intelligence[23]).
Where it lands
All three routes store data in the same tables: ThreatIntelIndicators for indicators and ThreatIntelObjects for the other STIX objects[7]. Sentinel stopped ingesting into the legacy ThreatIntelligenceIndicator table after July 31, 2025[7], so new queries, analytics, workbooks, and validation checks target the new tables.
Ingesting is not detecting. Stored indicators raise alerts only when an analytics rule compares them with collected events, such as the threat intelligence rule templates or Microsoft's matching analytics rule, and those rules are covered on the detections page. Each template lists the data sources it requires[7], so an indicator feed with no matching activity table produces no alerts.
The takeaway: pull with connectors, push with the upload API, enter local findings by hand, and enable detection as a separate step.
Managing ingested threat intelligence
This section covers what you can do to threat intelligence on its way in and after it is stored, and how to count it correctly.
Ingestion rules
Threat intelligence ingestion rules filter or enrich objects before they are delivered to the workspace, and they apply to data connectors only, not to intelligence added through the upload API or created manually[7]. Their evaluation model (tips for ingestion rules[7]):
- Rules apply in order, and each incoming object is processed by every rule until a
Deleteaction is taken. Deleteskips that object, removing it from the ingestion pipeline; any previously ingested versions of the object are not affected.- An object that no rule acts on is ingested from the source as is.
- New and edited rules take up to 15 minutes to take effect.
Typical uses include filtering out old, low-confidence intelligence, extending the Valid until date of high-fidelity indicators by 30 days, and adding tags (ingestion rule use cases[7]). Because Delete acts only on incoming objects, it cannot purge an indicator that is already stored.
These rules are not the DCR transformations taught earlier on this page: a DCR transformation is a KQL query over incoming log records, whereas a threat intelligence ingestion rule is an ordered rule list over STIX objects arriving from connectors.
Relationships, tags, and sensitivity
Three curation tools record three different kinds of meaning (curate threat intelligence[7]):
- Relationships are typed links between objects, built with the relationship builder: a threat actor Uses an attack pattern, an indicator is Attributed to a threat actor, and an attack pattern Targets an identity.
- Tags are free-form labels for grouping and finding objects, typically by incident. When an object represents a known actor or campaign, create a relationship instead, because a tag records no typed connection.
- Traffic Light Protocol (TLP) marks who may receive an object:
| TLP color | Sharing allowed |
|---|---|
| White | Freely and publicly, without restriction |
| Green | With peers and partner organizations in the community, but not publicly |
| Amber | With members of the organization, but not publicly |
| Red | Only within the specific group or meeting where it was originally disclosed |
Set TLP in the interface when you create or edit an object; through the upload API it is set in object_marking_refs by choosing one of four marking-definition object GUIDs[7]. For intelligence from partner sources such as TIP and TAXII feeds, only specific fields are editable, including tags, Expiration date, Confidence, and Revoked[23].
Microsoft also enriches IP and domain indicators with GeoLocation and WhoIs data (public preview)[7]: an IP's organization and country or region, or a domain's registrar and record creation data. These attributes describe the indicator's infrastructure; they are context, not evidence that anything in your environment communicated with it.
Counting current indicators
Raw row counts overstate the inventory. When an indicator is created, updated, or deleted, Sentinel creates a new entry in the tables, and it automatically reingests all threat intelligence every seven to 10 days[7]. The management interface shows only the most current version, choosing for each Id the row with the newest TimeGenerated. Do the same in KQL, then filter on the IsActive and IsDeleted columns[24]:
KQL: count current, active indicators by observable key
ThreatIntelIndicators
| summarize arg_max(TimeGenerated, *) by Id // newest version of each indicator
| where IsActive == true and IsDeleted == false // drop inactive and deleted ones
| summarize ActiveIndicators = count() by ObservableKey
An indicator's Pattern is its detection pattern, which can be a STIX pattern[24], such as [ipv4-addr:value = '172.29.6.7'] in Microsoft's upload API example[25]. ObservableKey is the entire left-hand side of an equality comparison from the pattern[24], ipv4-addr:value in that example, so the result counts current indicators per observable key. The Id column is a concatenation of the base64-encoded SourceSystem, three dashes, and the STIX ID[7], so the same STIX object from two sources counts as two indicators. Run the query over a time range longer than the reingestion cycle so every current indicator has at least one row in range; the reingested rows themselves are charged at standard ingestion pricing for paid tables[7].
The takeaway: ingestion rules shape connector input only, relationships and TLP carry meaning that tags don't, and the current inventory is the latest version per Id.
Creating custom log tables
This section covers custom tables, the destination for data whose shape no built-in table matches. Azure tables have predefined schemas; to store log data in a different schema, you use DCRs to collect, transform, and send it to a custom table[18] in the workspace. Managing a table needs Microsoft.OperationalInsights/workspaces/* permission on the workspace, as provided by Log Analytics Contributor, for example[18].
The rules every custom table follows
- The name ends in
_CL. The Azure portal adds the suffix automatically; with any other method you add it yourself[18], and the table name in the DCR's data flow must match the workspace table name. Table names are used for billing, so keep sensitive information out of them. - It has a
TimeGenerateddatetime column. Every Log Analytics table must have one; if it is missing, Azure Monitor adds it to the transformation in your DCR[18]. Map a real source timestamp into it where one exists, so time-based queries reflect when the event happened. - It has a table plan. You choose Analytics (the default), Basic, or Auxiliary / Lake at creation[18], and all DCR-based custom tables support all plans[26]. Choose by how the data will be used, not by its format: Analytics is suited to real-time detection, and Auxiliary logs cannot trigger alerts[27], so prefer Analytics for data that feeds real-time detections. After creation, you change the plan in the Azure portal from the Log Analytics workspace's Tables list: select Manage table, then a value from the Table plan dropdown on the table configuration screen[26], and plan changes are limited to one switch per table per week[26]. The analytics and data lake tiers named in Data connectors: from selection to confirmed data above are set from a different control in a different portal, Microsoft Sentinel > Configuration > Tables in the Defender portal[28]; the rest of this section speaks only of plans (see also Configure the Microsoft Sentinel SIEM and platform).
- Auxiliary / Lake timestamps are strict. These plans support
TimeGeneratedonly in ISO 8601 format with six decimal places (microsecond precision)[18], such as2026-10-21T08:15:30.123456Z, so declaring a datetime column does not by itself make an incoming timestamp valid.
Creating a table in the portal
The portal workflow (create a custom table[18]) builds the table and its ingestion DCR together:
- In the Log Analytics workspace, select Tables > Create, and enter a name (without
_CL) and an optional description. - Select the Table plan.
- Select an existing data collection rule or create a new one, and select a data collection endpoint (DCE, a separate Azure resource that provides an ingestion endpoint, explained in Sending records with the Logs Ingestion API below).
- Provide a sample of the source data as JSON. If the sample has no
TimeGeneratedcolumn, the portal tells you it will create a transformation that adds one. - Optionally open the Transformation editor, write the KQL transformation, and select Run to preview the results.
- Select Apply, review the new table's schema, and select Create.
The figure below condenses those six steps into five stages; its last box is a created table and route, not ingested data. The transformation in step 5 is a KQL query that runs against each incoming record, and Azure Monitor Logs stores the query's results[18]. That makes it the place to drop sensitive fields: a saved query or function applied at read time changes what you see, while the stored records keep every field. Creating the table and its DCR prepares the route but sends nothing; records arrive only once an authorized sender uses the route, which the next section covers.
Column names
Custom column names follow rules stricter than general Kusto identifier rules[18]:
| Rule | Example |
|---|---|
| Start with an ASCII letter, then use only letters, digits, or underscores | SourceIp is valid; source.ip and source-ip are not |
| Be 2 to 45 characters long | Severity |
Avoid system and reserved names, including id, TenantId, Title, Type, UniqueId, _ResourceId, and _SubscriptionId | Map a vendor's Type field to SourceType |
| On Auxiliary tables, avoid names that differ only by case | Ingestion drops data for duplicates such as Status and status |
Kusto can reference unusual property names by quoting them in a query, but the custom table schema accepts only letters, digits, and underscores[18], so quoting does not rescue a dotted source field name. Column names are case sensitive only for Analytics and Basic tables[18].
Extending built-in Azure tables
Built-in Azure tables follow different rules. You can't delete Azure tables, and in Azure tables you can only add and delete custom columns[18], never remove the predefined ones; custom column names in Azure tables must end in _CF[18], as in Classification_CF. When the schema you need differs from a built-in one, create a custom table instead of trying to reshape the Azure table.
Changing a table's schema
Two schema-change traps follow:
- Senders are not updated for you. Whenever you change a table schema, update the data collection rules that send data to the table; Azure Monitor doesn't update them automatically[18].
- The CLI replaces the column list. With
az monitor log-analytics workspace table update, the--columnsargument replaces the custom column set rather than adding to it[18]; any custom column you omit is deleted.
The listing below applies the second trap to an Azure table that already has a custom column Custom1_CF and needs a second one.
Azure CLI: add Custom2_CF while keeping Custom1_CF
az monitor log-analytics workspace table update \
--resource-group "$resourceGroupName" \
--workspace-name "$workspaceName" \
--name "$tableName" \
--columns Custom1_CF=string Custom2_CF=string
Passing only Custom2_CF=string would delete Custom1_CF, because --columns is the complete replacement set.
The takeaway: _CL, TimeGenerated, and a plan chosen by use define a custom table, and every schema change has to be carried into its DCRs.
Sending records with the Logs Ingestion API
This section covers the sender side of a custom table: how an application delivers records through a DCR. The Logs Ingestion API accepts data from any application that can make a REST API call[8]; the call names a DCR, which holds the target table and workspace, and carries the credentials of an app registration (a Microsoft Entra application, the kind the upload API also uses) that has access to that DCR. The JSON has to match the structure the DCR expects, not necessarily the table, because the DCR can include a transformation to fit the table, and you can change the target table and workspace by modifying the DCR without changing the API call[8]. The figure below traces one request, which goes to an endpoint specified by the DCR, or to a DCE if you're using private link[8] or the DCR has no logs ingestion endpoint of its own (The endpoint: DCR or DCE below explains both cases).
The components
Three things must exist before the first call (configuration[8]):
- An app registration with a secret. It authenticates the call, and it must be granted the Monitoring Metrics Publisher role on the DCR through the DCR's Access Control (IAM) page.
- The destination table. It must exist before data is sent: the API supports custom tables and selected Azure tables, and custom table names must have the
_CLsuffix[8]. - A DCR. If you created the custom table in the portal, the DCR was created with it; otherwise you create it yourself.
The Logs Ingestion API replaces the legacy HTTP Data Collector API: it uses OAuth-based authentication, which is more secure than workspace keys, and DCR-governed schema control and transformations[14].
The endpoint: DCR or DCE
The request goes to one of two endpoint types (endpoint[8]):
- The DCR's own logs ingestion endpoint. A DCR created for direct ingestion, with
kindset toDirect, generates alogsIngestionendpoint. You retrieve it from the DCR's JSON view in the Azure portal, switching to the latest API version if the endpoints aren't displayed. No separate resource is needed. - A data collection endpoint (DCE). A DCE is a separate Azure resource that provides an ingestion endpoint. You need one only when connecting to the workspace through private link, or when the DCR has no logs ingestion endpoint, as with older DCRs or DCRs created without the
Directkind.
A table built in the portal (Creating custom log tables) has you select a DCE for its DCR[18], so that route can use the DCE; a DCR with its own endpoints can also use a DCE, and you choose which one each client calls[8].
The logsIngestion property was added on March 31, 2024, and endpoints can't be added to an existing DCR[8]: to give an older route its own endpoint, create a new DCR. The workspace resource ID is never the endpoint; it is the DCR's destination.
Anatomy of an ingestion DCR
This request body creates a Direct DCR that routes a custom stream into a custom table, following Microsoft's create a custom table[18] example:
Request body: a Direct DCR for a custom table (column list shortened)
{
"location": "<Location>",
"kind": "Direct",
"properties": {
"streamDeclarations": {
"Custom-<TableName>_CL": {
"columns": [
{ "name": "TimeGenerated", "type": "datetime" },
{ "name": "StringProperty", "type": "string" }
...
]
}
},
"destinations": {
"logAnalytics": [
{
"workspaceResourceId": "/subscriptions/<SubscriptionId>/resourceGroups/<ResourceGroupName>/providers/Microsoft.OperationalInsights/workspaces/<WorkspaceName>",
"name": "<WorkspaceName>"
}
]
},
"dataFlows": [
{
"streams": ["Custom-<TableName>_CL"],
"transformKql": "source",
"destinations": ["<WorkspaceName>"],
"outputStream": "Custom-<TableName>_CL"
}
]
}
}
The ... line marks the further columns of Microsoft's example that are omitted here; remove it before you submit the body, or replace it with your real column entries and add a comma after the StringProperty object to separate the entries. Each key has one job (DCR properties[8]):
| Key | What it does |
|---|---|
location | The DCR's region, which must match the region of the workspace, and of the DCE if you use one |
kind | Direct gives the DCR its own logs ingestion endpoint |
streamDeclarations | The columns of the incoming data, under a stream name |
destinations.logAnalytics | The workspace, given a local name that the data flow refers to |
transformKql | The KQL transformation; source passes the data on unchanged when it already matches the table |
outputStream | The destination table: Custom-<table-name> for a custom table, Microsoft-<table-name> for a built-in one |
The sender targets the input stream (the streamDeclarations key), and outputStream picks the table; in the listing both are Custom-<TableName>_CL, in two roles. Place the DCR in the workspace's region, not near the sender: use the same region for the DCR, the Log Analytics workspace, and the DCE if you use one[8].
The call
The sender makes an HTTPS POST to a URI built from the endpoint, the DCR's immutable ID, and the stream name (REST API call[8]):
URI format for a Logs Ingestion API call
{endpoint}/dataCollectionRules/{dcrImmutableId}/streams/{streamName}?api-version={apiVersion}
{streamName} is that streamDeclarations key.
Client libraries for .NET, Go, Java, JavaScript, and Python wrap the same call and require the same components[8].
The takeaway: an authorized app posts JSON to the DCR's endpoint, the DCR declares, transforms, and routes it, and the table must already exist in the same region.
Practice: choosing connectors, DCRs, diagnostic settings, and ingestion APIs
These illustrative scenarios practice the choices this page teaches, from the Windows Security Events via AMA event sets[17] to a Syslog DCR's minimum log level, with the reasoning that separates the right option from the tempting one. Three questions recur in these scenarios: which path the source needs, which table the content queries (for example, Syslog messages appear in the Syslog table and CEF messages in CommonSecurityLog[1]), and which stage of a pipeline is failing. Every row revisits a documented behavior that an earlier section explains, such as the All events set not including the Application, System, or Setup logs[17].
| Scenario | Sentinel or Azure Monitor configuration to use | Tempting wrong answer, and why it fails |
|---|---|---|
Built-in rules query SecurityEvent; collect Windows security events from domain controllers | Windows Security Events via AMA with an event set or custom XPath | A generic Windows event DCR with the Security log: it writes Event |
| Full session auditing, including sign-outs, at reduced volume | The Common event set | Minimal: it omits sign-out event 4634 |
| Collect System and Application logs | A generic Windows event DCR, which writes them to Event | All events: it covers only the Security and AppLocker channels |
| On-premises servers must send events through AMA | Install the Azure Arc Connected Machine agent first, then deploy the AMA-based connector | The Arc agent alone: AMA still does the collecting |
| Servers already forward to a Windows Event Collector | AMA on the collector with the Windows Forwarded Events connector, plus adapted rules or ASIM parsers | Expecting SecurityEvent rules to match unchanged: forwarded events land in WindowsEvent |
| A firewall can only send CEF over Syslog | CEF via AMA on a Linux log forwarder, with the installation script run | Installing AMA on the firewall: appliances cannot host the agent |
A Syslog DCR set to LOG_ERR misses informational messages | Lower the facility's minimum log level | Recreating the DCR: the minimum level excludes less severe messages by design |
Records appear in both CommonSecurityLog and Syslog | Separate the facilities, or add a transformation that drops CEF from the Syslog stream | Enabling every facility on both connectors, which causes the duplication |
| Every current and future resource of a type must stream logs | The connector's Azure Policy assignment plus a remediation task | Individual diagnostic settings: they do not cover resources added later |
| Collect subscription activity | The Azure Activity connector through diagnostic settings | Installing AMA on a VM: activity is a platform log |
| A partner exposes a TAXII 2.1 collection | Threat Intelligence - TAXII with the API root URL and collection ID | Only the discovery URL: it does not identify a collection |
| A TIP must push threat actors and relationships | The upload API with an Entra application that holds Microsoft Sentinel Contributor | The legacy Threat Intelligence Platform connector: it is indicator-only and being deprecated |
| Imported indicators raise no alerts | Enable a threat intelligence analytics rule whose required sources are connected | Re-importing the feed: ingestion is not detection |
| An application sends JSON that no built-in table fits | A _CL table, a Direct DCR in the workspace's region, and an app registration with Monitoring Metrics Publisher on the DCR | Sending to the workspace resource ID: the endpoint belongs to the DCR or a DCE |
| A CLI schema extension deleted existing custom columns | List every column to keep in --columns | Passing only the new column: the list replaces the set |
When two options both sound plausible, ask which table the scenario's content queries and which stage the evidence proves; use those checks to compare the options.
The four ingestion paths compared
| Ingestion path | AMA-based collection | Diagnostic settings | Threat intelligence ingestion | Logs Ingestion API |
|---|---|---|---|---|
| Sources it serves | Windows and Linux machines, Windows Event Collectors, Syslog and CEF appliances through a Linux log forwarder | The Azure activity log and Azure resource logs | TAXII servers, Microsoft threat intelligence feeds, threat intelligence platforms, analyst findings | Your own applications and scripts that post JSON |
| What you configure | AMA on each machine, plus a DCR and its association | A diagnostic setting per resource, or an Azure Policy assignment per scope | A threat intelligence connector, the upload API with an Entra application, or a manual TI object | A custom table, a DCR with a stream and transformation, and an authorized sender |
| Filtering before storage | DCR: XPath queries for Windows, facility and minimum severity for Syslog and CEF, transformations | The log categories you select | Threat intelligence ingestion rules (connector feeds only) | DCR transformation (transformKql) |
| Destination tables | SecurityEvent, WindowsEvent, Syslog, CommonSecurityLog; Event for a generic Windows event DCR | AzureActivity, plus the tables listed for each resource type | ThreatIntelIndicators, ThreatIntelObjects | Custom tables ending in _CL and selected Azure tables |
| Typical trap | Expecting AMA on a non-Azure server without Azure Arc | Installing an agent to collect subscription activity | Expecting imported indicators to raise alerts on their own | Waiting for records after creating the table but before configuring a sender |
Decision tree
Sharp facts the exam loves — give these one last read before exam day.
Cheat sheet
Sharp facts the exam loves — scan these before test day.
- Installing a solution makes connector content available but does not complete onboarding
Install the relevant solution from Content hub to obtain its connectors, analytics templates, and workbooks. Then open the connector page and complete its source-specific setup and permissions. Confirm data reaches the documented tables rather than treating solution installation as proof of collection.
Trap Enabling analytics immediately after solution installation without configuring its connector, which leaves the required logs absent.
2 questions test this
- You have a Microsoft Sentinel workspace in the Microsoft Defender portal. A SOC engineer must onboard logs from a vendor's web application firewall. The vendor documents a Microsoft Sentinel data conn
- You have a Microsoft Sentinel workspace. You just installed a vendor's solution from Content hub, and you are still on the solution's page in Content hub. The solution includes a data connector for th
- Windows Security Events via AMA supplies SecurityEvent rather than generic Event records
Choose Windows Security Events via AMA when Sentinel content expects the SecurityEvent table. A generic Azure Monitor Windows-event DCR can also collect the Security log, but writes it to Event. Collecting the same event IDs through the wrong stream does not satisfy a rule that queries a different table.
Trap Selecting the Security channel in a generic Windows-event DCR and assuming it populates SecurityEvent, because that route writes Event.
3 questions test this
- You have a Microsoft Sentinel workspace. An Azure Monitor administrator creates a Windows event data collection rule in Azure Monitor that selects the Security log from domain controllers and associat
- You have a Microsoft Sentinel workspace. Built-in analytics rules for Windows sign-in attacks query the SecurityEvent table. An Azure Monitor administrator has already created a Windows event data col
- You have a Microsoft Sentinel workspace. You must collect Windows Security events from 20 servers for Microsoft Sentinel analytics that query the SecurityEvent table. Two configurations are proposed:
- Non-Azure servers need Azure Arc before AMA connector deployment
For on-premises servers or servers in another cloud, install and enable the Azure Arc Connected Machine agent before configuring the AMA-based connector. Azure Arc provides the resource representation used to deploy and associate AMA. AMA and the Connected Machine agent serve different purposes.
Trap Installing only the Connected Machine agent and expecting security logs, because AMA still performs log collection.
3 questions test this
- You have a Microsoft Sentinel workspace. Ten Windows servers in another cloud provider have been onboarded to Azure Arc and show as connected Arc-enabled servers. No SecurityEvent data has arrived fro
- You have a Microsoft Sentinel workspace. A project plan for on-premises servers states: Install the Azure Arc Connected Machine agent, which collects the Windows Security events for Microsoft Sentinel
- You plan to collect Windows Security events by using the Windows Security Events via AMA connector from four servers: - VM1 is an Azure virtual machine. - Srv2 is a physical server in your datacenter.
- Azure platform-log connectors use diagnostic settings rather than guest event collection
Use diagnostic settings-based connectors for supported Azure platform logs and metrics. Configure the source's categories and send them to the Log Analytics workspace enabled for Sentinel. AMA-based Windows or Linux collection addresses guest operating-system logs rather than substituting for the platform's diagnostic pipeline.
Trap Installing AMA on a VM to collect subscription activity logs, which belong to the Azure platform diagnostic path.
3 questions test this
- You have an Azure subscription named Sub1 that contains a Microsoft Sentinel workspace and 100 Windows and Linux virtual machines. The SOC needs Sub1's subscription-level events, such as role assignme
- You have a Microsoft Sentinel workspace. You need blob, file, queue, and table activity from a storage account named SA1 in Microsoft Sentinel. You are configuring diagnostics for SA1 manually by foll
- You have a Microsoft Sentinel workspace. The Azure Storage Account data connector streams diagnostics from all services of a storage account named Store2 to the workspace. A threat hunter must write a
- Connector selection must account for source authorization and the named support provider
Deploying a data connector requires workspace read and write access plus any additional source permissions listed in that connector's prerequisites. Select a connector whose supported source and destination table schema fit the intended security content. Check its Supported by field for the maintenance and support contact because Content hub includes connectors authored by Microsoft and by other organizations.
Trap Assuming Content hub distribution guarantees Microsoft maintenance, although the connector's Supported by entry can name another provider.
3 questions test this
- You have a Microsoft Sentinel workspace. Two Content hub connectors can collect logs from the same cloud application. Analytics templates you plan to use query a specific table. Your organization also
- You have a Microsoft Sentinel workspace. You plan to deploy a third-party connector from Content hub. The connector page lists additional permissions on the source system as prerequisites. Before you
- You have a Microsoft Sentinel workspace. A connector you deployed from Content hub for a niche appliance stopped parsing a new log format. Your manager assumes Microsoft maintains every Content hub co
- Supported connector pages enable UEBA explicitly for selected tables
On a UEBA-supported connector's details page in the Defender portal, open Advanced options and use Configure UEBA to toggle on the tables intended for behavioral analysis. This selects the connector data that UEBA should analyze in addition to configuring ingestion. A connected source and populated table alone do not establish that the table has been selected for UEBA.
Trap Using a connector's Connected status as confirmation of UEBA source selection, although the behavioral-analysis toggles are configured separately.
3 questions test this
- You have a Microsoft Sentinel workspace in the Microsoft Defender portal. A UEBA-supported connector already ingests Table1 into the workspace. A change board reviewing your request to turn on Table1
- You have a Microsoft Sentinel workspace onboarded to the Microsoft Defender portal. A UEBA-supported connector shows as connected, and its tables receive data every few minutes, but UEBA does not anal
- You have a Microsoft Sentinel workspace in the Microsoft Defender portal. During an audit, a colleague states that UEBA covers a connector's tables because the connector status is connected and the ta
- DCRs separate collection policy from the machines receiving it
A data collection rule defines event sources, filtering, destination workspaces, and data flows independently of a particular VM. Associate it with selected Azure VMs or Arc-enabled servers to apply that policy. Reuse rules for equivalent requirements and separate rules for subsets needing different collection.
Trap Editing only the destination workspace when one server subset needs different events, because collection scope and filtering reside in DCR configuration.
3 questions test this
- You have a Microsoft Sentinel workspace named WS1. A data collection rule (DCR) named DCR1 for Windows Security Events via AMA collects the Minimal event set from 40 member servers. Five domain contro
- You have a Microsoft Sentinel workspace in subscription Sub1. The Windows servers to monitor are in subscription Sub2 in the same Microsoft Entra tenant. You are creating a data collection rule (DCR)
- You have a Microsoft Sentinel workspace. A data collection rule (DCR) named DCR1 collects a custom XPath set of Windows Security events from 20 Azure virtual machines. You deploy 50 new Azure Arc-enab
- Common preserves a user audit trail while Minimal emphasizes threat signals
Use the Common Windows Security event set when both sign-in and sign-out activity are required for an audit trail. Minimal includes events such as successful and failed logons but omits sign-out event 4634 to reduce volume. Minimal is therefore not a complete substitute for auditing requirements.
Trap Selecting Minimal for complete session auditing, because it omits sign-out events.
3 questions test this
- You have a Microsoft Sentinel workspace and use Windows Security Events via AMA with the Common event set on 60 servers. During a design review, an auditor notices that Common includes several event t
- You have a Microsoft Sentinel workspace. Servers in a branch office send Windows Security events through a data collection rule that selects the Minimal event set in Windows Security Events via AMA. O
- You have a Microsoft Sentinel workspace. A security architect is choosing between the Common and Minimal event sets in Windows Security Events via AMA and asks you to summarize Minimal before the desi
- All events in the Security connector does not collect every Windows channel
All events in Windows Security Events via AMA collects the unfiltered Security log and AppLocker channels. It does not include Application, System, or Setup merely because the option says All events. Use the appropriate Windows-event collection configuration for those other channels.
Trap Choosing All events to ingest System and Application logs, which lie outside that connector's named event set.
3 questions test this
- You have a Microsoft Sentinel workspace. You are documenting the event sets offered by Windows Security Events via AMA for a new SOC engineer who must also onboard System logs later. You need to write
- You have a Microsoft Sentinel workspace and use Windows Security Events via AMA. A data collection rule (DCR) uses the All events option. A compliance officer who is reviewing data retention asks whic
- You have a Microsoft Sentinel workspace. An engineer configures Windows Security Events via AMA with the All events option on 25 servers, expecting it to also collect the System and Application logs f
- A DCR XPath expression includes the log name before an exclamation mark
Use the form LogName!XPathQuery for custom Windows-event collection. For example, Security!*[System[EventID=4625]] selects failed-logon event 4625 from the Security channel. This filters collection at the source rather than discarding unwanted records after they have been ingested.
Trap Putting a KQL where clause in the XPath collection field, which expects Windows Event Log XPath syntax.
3 questions test this
- You have a Microsoft Sentinel workspace. An engineer copies the XPath query *[System[EventID=4740]] for account lockouts from Event Viewer and pastes it into the Custom box of a data collection rule f
- You have a Microsoft Sentinel workspace. For 12 domain controllers, the identity team wants only account lifecycle signals: user account created, event ID 4720, and user account deleted, event ID 4726
- You have a Microsoft Sentinel workspace. A junior engineer is configuring the Custom option on the Collect tab of a data collection rule for Windows Security Events via AMA. The engineer plans to type
- Test Windows-event XPath locally and respect the DCR expression limit
Validate an XPath selection with Get-WinEvent using -LogName and -FilterXPath, separating the channel from the XPath expression. A no-matching-events result can still indicate valid syntax, whereas an invalid-query error identifies a syntax problem. DCR XPath supports up to 20 expressions, fewer than the 23 supported by Get-WinEvent.
Trap Treating a successful local query with 23 expressions as proof of DCR compatibility, because the DCR limit is lower.
4 questions test this
- You have a Microsoft Sentinel workspace. Before adding an XPath filter to a data collection rule, you test it on a server by running Get-WinEvent -LogName 'Security' -FilterXPath with the query. The s
- You have a Microsoft Sentinel workspace. You plan to add the XPath entry Security!*[System[(EventID=4740)]] to a data collection rule for Windows Security Events via AMA, and you first want to test it
- You have a Microsoft Sentinel workspace. Before you add a 12-expression XPath filter for the Security log to a data collection rule for Windows Security Events via AMA, you test it on a server by runn
- You have a Microsoft Sentinel workspace. An engineer wrote a Security log filter with 23 XPath expressions in one Custom box of a data collection rule named DCR1 and confirmed with Get-WinEvent that i
- WEF places AMA on the Windows Event Collector
Use Windows Event Forwarding to send source events to a Windows Event Collector, with WEC enabled and running and AMA installed on that collector. The collector is the cloud-ingestion point rather than every forwarding source. If the collector is outside Azure, it also needs the Arc prerequisite for AMA deployment.
Trap Installing AMA only on a forwarding source while leaving the central WEC without an ingestion agent, which does not upload its collected events.
3 questions test this
- You have a Microsoft Sentinel workspace. You plan to collect forwarded events by using the Windows Forwarded Events connector. Your design has two Windows Event Collectors: WEC-A is an Azure virtual m
- You have a Microsoft Sentinel workspace. A physical server named WEC1 in your datacenter will be the Windows Event Collector for 300 workstations, and Windows Event Collection is enabled and running o
- You have a Microsoft Sentinel workspace. Each of three branch sites runs an on-premises, Arc-enabled Windows Event Collector that receives events from 200 workstations through Windows Event Forwarding
- WEF Security events land in WindowsEvent rather than SecurityEvent
The Windows Forwarded Events connector writes forwarded records to WindowsEvent, even when their original channel was Security. A built-in rule querying SecurityEvent will not match those records automatically. Use direct Windows Security Events via AMA for unchanged SecurityEvent-based content, or adapt detection queries for WindowsEvent.
Trap Assuming an event's original Security channel determines its destination table, because the forwarding connector writes WindowsEvent.
3 questions test this
- You have a Microsoft Sentinel workspace. A site has 20 domain controllers and 500 workstations. Built-in analytics rules, including near-real-time rules that query SecurityEvent, must run unchanged fo
- You have a Microsoft Sentinel workspace. Workstations send events from several logs, including the Security log, through Windows Event Forwarding to a collector that uses the Windows Forwarded Events
- You have a Microsoft Sentinel workspace that collects Windows Security events from 300 workstations through Windows Event Forwarding and the Windows Forwarded Events connector. Several built-in analyt
- ASIM parsers help normalize forwarded Windows events
Deploy appropriate ASIM WindowsEvent parsers when forwarded events must participate in normalized analytics. Query compatible parsers or adapt native queries to the WindowsEvent schema instead of merely changing a table name. Normalization addresses field differences as well as the source table.
Trap Replacing SecurityEvent with WindowsEvent in every rule without checking fields, because the schemas are not identical.
3 questions test this
- You have a Microsoft Sentinel workspace. Analysts must run one hunting query across sign-in activity that arrives in both SecurityEvent, from direct collection, and WindowsEvent, from Windows Event Fo
- You have a Microsoft Sentinel workspace that ingests forwarded Windows events into WindowsEvent. A hunting query that reads fields from the EventData column returns empty values for some records, alth
- You have a Microsoft Sentinel workspace. A custom detection filters SecurityEvent by using its TargetUserName and IpAddress columns. An engineer copies the detection for events that the Windows Forwar
- The collector's DCR determines which forwarded records reach Sentinel
After configuring WEC and forwarding, associate the collector with the Windows Forwarded Events collection rule and choose All events or a Custom XPath selection. WEF delivery to the collector and AMA delivery to Sentinel are separate stages. Diagnose both stages when events exist locally but not in WindowsEvent.
Trap Treating a populated local forwarded-events log as proof of Sentinel ingestion, because the AMA collection stage still needs configuration.
3 questions test this
- You have a Microsoft Sentinel workspace. You are creating the data collection rule for the Windows Forwarded Events connector on a Windows Event Collector. Only forwarded events with event ID 4720, us
- You have a Microsoft Sentinel workspace. During troubleshooting, a colleague confirms that a Windows Event Collector's Forwarded Events log contains the expected events and concludes that ingestion in
- You have a Microsoft Sentinel workspace. A Windows Event Collector named WEC1 runs the Azure Monitor Agent, and its Forwarded Events log shows events from all source servers. No records appear in Wind
- Syslog via AMA supports a Linux source or a Linux forwarding host
Install AMA on a Linux machine that produces logs or on a dedicated Linux forwarder receiving logs from appliances. The host needs rsyslog or syslog-ng to receive messages and pass them to AMA. Plain Syslog records are ingested into the Syslog table.
Trap Deploying AMA directly to a network appliance that only exports Syslog, instead of using a supported Linux collector.
4 questions test this
- You have a Microsoft Sentinel workspace. A hardened Azure Linux image is used for a new log forwarder named Fwd2 that will receive Syslog from firewalls for the Syslog via AMA connector. The image inc
- You have a Microsoft Sentinel workspace. You plan Syslog via AMA collection for these machines: - Srv1 and Srv2 are Azure Linux VMs that run rsyslog and produce their own Syslog messages. - FW1 and SW
- You have a Microsoft Sentinel workspace. Six Azure Linux application servers run rsyslog, and the SOC needs the log messages that these servers write themselves. No network appliances or other devices
- You have a Microsoft Sentinel workspace. Twelve network switches export plain Syslog over UDP 514 and cannot run third-party software. You need to ingest their messages into the Syslog table by using
- A Syslog minimum level includes more severe messages from the same facility
Configure the minimum log level separately for each Syslog facility in the DCR. Selecting LOG_ERR also includes LOG_CRIT, LOG_ALERT, and LOG_EMERG. Lower-severity messages are excluded, so verify that the selection preserves the events needed by detections.
Trap Selecting LOG_ERR while expecting informational messages from the same facility, which fall below the configured minimum severity.
3 questions test this
- You have a Microsoft Sentinel workspace. To cut ingestion cost, an engineer plans to raise every facility in a Syslog via AMA data collection rule from LOG_INFO to LOG_ERR. Two analytics rules depend
- You have a Microsoft Sentinel workspace. In the Collect tab of a data collection rule for Syslog via AMA, you set the LOG_DAEMON facility to the LOG_ERR minimum log level. A SOC engineer asks which se
- You have a Microsoft Sentinel workspace. A data collection rule for Syslog via AMA collects the LOG_AUTHPRIV facility from Linux servers at the LOG_ERR minimum level. A new detection needs information
- The Syslog listener and AMA ingestion listener use different ports
Devices commonly send Syslog to TCP or UDP port 514 on the collector's daemon, although a different agreed port can be configured. AMA versions 1.28.11 and later receive daemon-forwarded messages on TCP port 28330; earlier versions use a Unix-domain socket. Check the correct hop when diagnosing delivery.
Trap Pointing appliances directly at AMA's internal port as though it were the configured Syslog daemon listener, which bypasses the intended collection hop.
2 questions test this
- You have a Microsoft Sentinel workspace. Corporate policy forbids Syslog on port 514, so 30 appliances are configured to send their logs to TCP port 5140 on a Linux forwarder named VM1. VM1 runs rsysl
- You have a Microsoft Sentinel workspace. A Linux forwarder named VM2 runs rsyslog and Azure Monitor Agent version 1.25, and Syslog messages from appliances appear in the Syslog table. While documentin
- Encrypted Syslog transport is configured on the forwarding daemon
When source devices send Syslog or CEF over TLS, configure rsyslog or syslog-ng for TLS reception and align source, network, and listener settings. AMA installation alone does not configure the source-to-forwarder TLS relationship. Treat transport protection and cloud-agent deployment as separate setup tasks.
Trap Assuming AMA's cloud connection encrypts the appliance-to-forwarder leg, which is controlled by the Syslog transport configuration.
3 questions test this
- You have a Microsoft Sentinel workspace. On an Azure Linux log forwarder named Fwd3, you created the Syslog via AMA data collection rule, the Azure Monitor Agent was installed, and you ran Forwarder_A
- You have a Microsoft Sentinel workspace. Branch appliances will send Syslog over TLS to an Azure Linux log forwarder named VM3. VM3 runs the rsyslog daemon, not syslog-ng, and the Azure Monitor Agent
- You have a Microsoft Sentinel workspace. Appliances are configured to send CEF over TLS to TCP port 6514 on a Linux forwarder in Azure named VM1. VM1 runs rsyslog with only the plain-text port 514 lis
- Remote Syslog reception requires the forwarder setup in addition to AMA deployment
After deploying AMA and associating the DCR on a Linux forwarding host, run the documented Forwarder_AMA_installer.py setup to enable reception from other machines. It configures and restarts rsyslog or syslog-ng and opens the local listening ports. Configure the appliance to send its messages to that forwarder's listener rather than its own local daemon. AMA and DCR configuration alone establish neither the remote receiver nor the appliance's forwarding destination.
Trap Recreating the DCR when the collector has no remote Syslog listener, which leaves the missing daemon receiver configuration unchanged.
3 questions test this
- You have a Microsoft Sentinel workspace. You install the Azure Monitor Agent on a Linux forwarder named VM1 and associate a Syslog via AMA data collection rule with it. Appliances that point to VM1 de
- You have a Microsoft Sentinel workspace. You run Forwarder_AMA_installer.py on a Linux log forwarder named VM1 after deploying the Azure Monitor Agent and associating a data collection rule. A colleag
- You have a Microsoft Sentinel workspace. A Linux forwarder named VM5 has the Azure Monitor Agent and an associated Syslog via AMA data collection rule. When you paste the installation command from the
- CEF via AMA parses security messages into CommonSecurityLog
Use Common Event Format via AMA when a device emits CEF security records. CEF has a standard header and extensions for fields such as addresses, users, and actions, and the connector stores parsed records in CommonSecurityLog. Plain Syslog uses the Syslog table instead.
Trap Choosing plain Syslog collection for content expecting CommonSecurityLog fields, which does not provide the same parsed destination schema.
4 questions test this
- You have a Microsoft Sentinel workspace. Instead of using the portal, you create a data collection rule for a Linux log forwarder by sending a PUT request with a JSON body to the Azure Resource Manage
- You have a Microsoft Sentinel workspace. A new analyst is mapping a firewall's CEF messages, which the CEF via AMA connector stores in CommonSecurityLog. The analyst asks which part of a CEF message c
- You have a Microsoft Sentinel workspace and a Linux log forwarder named VM1 that runs the Azure Monitor Agent. Two sources send to VM1: - FW1, a firewall that emits CEF-formatted security events - SW1
- You have a Microsoft Sentinel workspace. You plan to install a Content hub solution for a firewall named FW1. The solution's analytics rules and workbook query the CommonSecurityLog table. FW1 can be
- Collecting the same facility as both CEF and Syslog can duplicate data
When one collector handles both formats, assign distinct facilities to CEF and plain Syslog where the sources support it. Configure each DCR stream to collect only its intended facilities. Otherwise, a CEF message can be stored in both CommonSecurityLog and Syslog.
Trap Enabling every facility on both connectors for completeness, which can ingest the same message twice.
4 questions test this
- You have a Microsoft Sentinel workspace. An engineer proposes enabling every facility at the LOG_DEBUG level in both the Syslog via AMA and the CEF via AMA data collection rules on a shared Linux forw
- You have a Microsoft Sentinel workspace. A firewall named FW1 sends CEF messages to a Linux forwarder named VM1 that runs both CEF via AMA and Syslog via AMA, and FW1 events are duplicated across Comm
- You have a Microsoft Sentinel workspace. You create one data collection rule through the API for a Linux log forwarder. A firewall named FW1 sends CEF on the local4 facility, and Linux servers send pl
- You have a Microsoft Sentinel workspace and a Linux forwarder named VM1. FW1 sends CEF on the LOG_LOCAL4 facility. Linux servers send plain Syslog to VM1 on LOG_AUTH and LOG_DAEMON. You are creating t
- A Syslog transformation can exclude CEF records when facilities cannot be separated
If the appliance cannot change facility, add an ingestion-time transformation to remove CEF messages from the Syslog stream. Check both ProcessName and SyslogMessage; starting with AMA 1.41, noncompliant vendor headers may not identify CEF reliably in ProcessName alone. Keep the corresponding CEF stream so security data is still collected once.
Trap Filtering only ProcessName for CEF on every vendor, which can miss CEF messages with nonstandard headers.
4 questions test this
- You have a Microsoft Sentinel workspace. You are editing the JSON definition of a Syslog data collection rule to add the statement source | where ProcessName !contains "CEF" and SyslogMessage !contain
- You have a Microsoft Sentinel workspace. A data collection rule created through the API has one data flow that lists both the Microsoft-CommonSecurityLog and Microsoft-Syslog streams. An appliance's f
- You have a Microsoft Sentinel workspace. A Syslog data collection rule (DCR) has the transformation source | where ProcessName !contains "CEF" to drop duplicate CEF messages. After the Azure Monitor A
- You have a Microsoft Sentinel workspace. App1 sends CEF and plain Syslog on a fixed facility to a Linux forwarder that runs the Azure Monitor Agent 1.43. Some App1 headers do not comply with RFC 3164.
- CEF validation should confirm parsed records in the destination table
Validate CEF onboarding by sending an approved test message through the collector and querying CommonSecurityLog for the expected DeviceVendor or DeviceProduct. Messages reaching the daemon do not by themselves prove DCR selection, parsing, and cloud ingestion succeeded. Allow for the documented ingestion delay, which can be up to 20 minutes for test logs.
Trap Stopping validation after observing traffic on port 514, which verifies only arrival at the collector.
5 questions test this
- You have a Microsoft Sentinel workspace. You configure CEF via AMA on a Linux forwarder named VM1 to collect from a firewall named FW1 from vendor Contoso. Running tcpdump on VM1 shows FW1 packets arr
- You have a Microsoft Sentinel workspace. You finish configuring CEF via AMA on a Linux forwarder and send a test CEF message by using the logger command. Five minutes later, a query of CommonSecurityL
- You have a Microsoft Sentinel workspace. You onboard a firewall named FW1 by using CEF via AMA through a Linux forwarder. Before you enable analytics rules for FW1, you must prove end to end that the
- You have a Microsoft Sentinel workspace. You validate CEF via AMA on a Linux forwarder named VM1 by sending a CEF test message with logger -p local4.warn. After 20 minutes, the message appears in the
- You have a Microsoft Sentinel workspace. During CEF via AMA onboarding, an engineer runs sudo tcpdump -i any port 514 or 28330 -A -vv on a Linux forwarder named VM1 and sees CEF messages from FW1. The
- Diagnostic settings explicitly choose the destination workspace and log categories
For a diagnostic settings-based connector, open the source's Diagnostic settings and enable Send to Log Analytics. Select the workspace containing Sentinel and the required log or metric categories, then save. Enabling diagnostics without selecting the correct destination does not deliver data to the intended Sentinel workspace.
Trap Sending diagnostics only to a storage account and expecting immediate Sentinel queries, because the data is not being routed to the workspace.
3 questions test this
- You have a Microsoft Sentinel workspace named WS1. You open the connector page for a standalone diagnostic settings-based connector for an Azure resource named Res1 and select the link to the resource
- You have an Azure subscription that contains a Microsoft Sentinel workspace named WS1 and a Log Analytics workspace named WS2 that the operations team uses. An Azure resource named Res1 has a diagnost
- You have an Azure subscription that contains a Microsoft Sentinel workspace named WS1 and a second Log Analytics workspace named WS2. A key vault named KV1 has a diagnostic setting that sends the Audi
- Azure Policy applies diagnostic configuration across a defined scope
Use the connector's Azure Policy assignment workflow when the same diagnostic configuration should apply to a collection of supported resources. Choose the assignment scope and target Sentinel workspace. This is more scalable than manually configuring each current and future resource.
Trap Creating individual diagnostic settings for a requirement covering future resources automatically, which does not enforce onboarding at scale.
4 questions test this
- You have an Azure subscription named Sub1 that contains a Microsoft Sentinel workspace. An engineer manually created diagnostic settings on each of 40 existing storage accounts. New storage accounts c
- You have a Microsoft Sentinel workspace. You launch the Azure Policy Assignment wizard from a policy-managed diagnostic settings-based connector and set the scope on the Basics tab. On the Parameters
- You have an Azure subscription named Sub1 that contains a Microsoft Sentinel workspace named WS1. You plan to use a policy-managed diagnostic connector to stream logs from all storage accounts in Sub1
- You have a Microsoft Entra tenant that contains a Microsoft Sentinel workspace named WS1 and two other Log Analytics workspaces, WS2 and WS3. You launch the Azure Policy Assignment wizard from a polic
- A remediation task applies the diagnostic policy to existing resources
A diagnostic-settings policy assignment applies to resources added in the future. Select Create a remediation task on the assignment's Remediation tab to bring existing resources into the desired configuration as well. Policy assignment and remediation address different parts of the fleet lifecycle.
Trap Assigning the policy without remediation while expecting every existing resource to be updated immediately, which omits the backfill step.
3 questions test this
- You have a Microsoft Sentinel workspace. Yesterday, a colleague assigned a key vault log streaming policy from the connector page at the subscription scope without a remediation task. The policy compl
- You have a Microsoft Sentinel workspace. A colleague assigns a key vault log streaming policy at a subscription scope from the connector page and clears the Create a remediation task check box. The su
- You have an Azure subscription named Sub1 that contains a Microsoft Sentinel workspace. Yesterday, you assigned a key vault log streaming policy from the connector page at the Sub1 scope. Key vaults c
- Azure Activity migration disconnects the legacy subscription connection first
The Azure Activity connector uses the diagnostic settings pipeline. When migrating from its legacy collection method, disconnect the existing legacy subscription connections before configuring the new path. Use the connector page's legacy-connection section rather than leaving both collection paths active.
Trap Adding the diagnostic pipeline while retaining the legacy subscription connection, contrary to the documented migration sequence.
3 questions test this
- You have a Microsoft Sentinel workspace that still collects Azure Activity logs from Sub1 and Sub2 by using the connector's legacy connection method. You are planning the migration to the current Azur
- You have a Microsoft Sentinel workspace. You are migrating the Azure Activity connector from its legacy collection method. On the connector page, you review the list of subscriptions connected to the
- You have a Microsoft Sentinel workspace that collected Azure Activity logs from four subscriptions by using the connector's legacy method. On the Azure Activity connector page, you just selected Disco
- Diagnostic connector status reflects recent ingestion rather than configuration alone
For diagnostic settings-based connectors managed by Azure Policy, Connected status requires data ingestion within the past 14 days. With no new data for that period, the connector can show disconnected and return to connected when events arrive. Check source activity and actual table ingestion before assuming the configuration was removed.
Trap Recreating diagnostic settings solely because an idle source shows disconnected, which can reflect a lack of recent events rather than lost configuration.
4 questions test this
- You have a Microsoft Sentinel workspace. A policy-managed diagnostic connector for Azure Logic Apps shows as disconnected. The logic apps in scope were paused for a month and resumed one hour ago. The
- You have a Microsoft Sentinel workspace. A policy-managed diagnostic connector for Azure Key Vault shows as disconnected. The only key vault in scope belongs to a test environment that has had no acti
- You have a Microsoft Sentinel workspace. An Azure Stream Analytics connector managed by Azure Policy shows as connected. The only job in scope is stopped and generates no logs. You need to tell the op
- You have a Microsoft Sentinel workspace that uses several diagnostic settings-based connectors managed by Azure Policy. A new analyst asks what the green connected indicator for these connectors confi
- The TAXII connector pulls indicators from a provider's collection
Use Threat Intelligence - TAXII for feeds exposed by TAXII 2.0 or 2.1 servers. Configure the API root URL, collection ID, any required credentials, indicator selection, and polling frequency. STIX is the threat-data representation, while TAXII supplies the exchange protocol.
Trap Providing only a TAXII discovery URL as the collection configuration, which does not identify the API root and collection.
3 questions test this
- You have a Microsoft Sentinel workspace. A threat intelligence provider gives you only a TAXII discovery URL for its TAXII 2.1 service. You open the Threat Intelligence - TAXII connector to add the fe
- You have a Microsoft Sentinel workspace. An information sharing community publishes STIX indicators on a TAXII 2.1 server and gives members a username and password. You need Microsoft Sentinel to pull
- You have a Microsoft Sentinel workspace. You are adding a TAXII 2.0 feed by using the Threat Intelligence - TAXII connector. You have entered the friendly name, API root URL, collection ID, username,
- The threat intelligence upload API supports workspace-scoped push ingestion
Use the Threat Intelligence upload API when a custom application or threat intelligence platform pushes STIX objects to Sentinel. It does not require a separate data connector, and its Microsoft Entra application needs Microsoft Sentinel Contributor on the target workspace. This differs from Sentinel polling a TAXII server.
Trap Deploying a TAXII server just to use the upload API, which accepts direct REST ingestion instead of polling a feed.
3 questions test this
- You have a Microsoft Sentinel workspace named WS1. Your developers maintain a custom threat intelligence platform that must push STIX indicators and threat actor objects to WS1 as soon as analysts app
- You have a Microsoft Sentinel workspace. A partner's threat intelligence platform will send STIX objects to Microsoft Sentinel. A colleague proposes building a TAXII server so that Microsoft Sentinel
- You have a Microsoft Sentinel workspace named WS1. You register a Microsoft Entra application for a custom solution that will submit threat intelligence through the upload API. You need to grant the a
- Current threat intelligence queries use ThreatIntelIndicators and ThreatIntelObjects
Query ThreatIntelIndicators for Sentinel threat indicators and ThreatIntelObjects for the additional STIX object schema. Update custom analytics, hunting queries, workbooks, and automation that still depend on the legacy ThreatIntelligenceIndicator table. The newer model supports richer threat context than a flat indicator feed.
Trap Building new ingestion validation solely around the legacy ThreatIntelligenceIndicator table, which is not the current target schema.
4 questions test this
- You have a Microsoft Sentinel workspace. A custom analytics rule written in 2024 filters the legacy ThreatIntelligenceIndicator table on its NetworkIP column to find IPv4 indicators. You are migrating
- You have a Microsoft Sentinel workspace. Analysts must find which threat actors are linked to IP address indicators that appear in firewall logs. Indicators, threat actors, and the relationships betwe
- You have a Microsoft Sentinel workspace. You are auditing threat intelligence content created in 2024: - Rule1 is an analytics rule that queries ThreatIntelIndicators. - Hunt1 is a hunting query that
- You have a Microsoft Sentinel workspace. A hunting query that you migrated from the legacy table now reads ThreatIntelIndicators. The query must ignore any indicator whose Traffic Light Protocol (TLP)
- Ingesting threat indicators and detecting matches are separate steps
Threat intelligence ingestion stores and curates indicators for use by Sentinel. To generate alerts from your imported indicators, enable or create analytics that match the relevant observable type against collected activity. Choose a template whose required log source and indicator type are both present.
Trap Expecting every imported IOC to generate an incident immediately, because ingestion alone is not a match against observed activity.
3 questions test this
- You have a Microsoft Sentinel workspace. Yesterday, you imported 5,000 malicious domain indicators through the TAXII connector. DNS logs are collected, and a user resolved one of the domains this morn
- You have a Microsoft Sentinel workspace. IP address indicators were imported through the upload API, and analysts created more indicators manually. You need alerts and incidents whenever any of these
- You have a Microsoft Sentinel workspace. A manager expects that every IOC imported from a new commercial feed will immediately generate an incident. You need to set accurate expectations about how ind
- The upload API supports a broader STIX model than the legacy TIP connector
Prefer the Threat Intelligence upload API for new integrations requiring STIX objects beyond indicators. The legacy Threat Intelligence Platform connector uses the Microsoft Graph Security tiIndicators API, is indicator-only, and is on the documented deprecation path. A richer object model requires more than continuing the old indicator feed.
Trap Choosing the legacy tiIndicators integration for threat-actor and relationship objects, which its indicator-only model does not support.
3 questions test this
- You have a Microsoft Sentinel workspace. A cyberthreat intelligence team wants to import attack patterns, threat actors, and the relationships that link them to indicators from its custom tooling. An
- You have a Microsoft Sentinel workspace. A custom solution sends indicators through the legacy Threat Intelligence Platform data connector. An architect reviewing the integration for next year's roadm
- You have a Microsoft Sentinel workspace. A new integration must send threat actor, attack pattern, and relationship STIX objects from a commercial threat intelligence platform to Microsoft Sentinel. T
- Threat-intelligence ingestion rules transform connector input without rewriting stored versions
Threat-intelligence ingestion rules filter or enrich objects arriving through data connectors, not objects submitted through the upload API or created manually. Incoming objects pass through the rules in order until a Delete action removes the object from the ingestion pipeline. Delete skips that incoming object without removing any previously stored versions; an object receiving no action is ingested unchanged. New or edited rules can take up to 15 minutes to take effect.
Trap Using an ingestion-rule Delete action to purge an already stored indicator, although the action discards only the incoming pipeline object.
3 questions test this
- You have a Microsoft Sentinel workspace. Last week, a TAXII feed delivered an indicator for a legitimate partner domain. Today, you create an ingestion rule with a Delete action that matches the domai
- You have a Microsoft Sentinel workspace with three threat intelligence ingestion rules for a TAXII connector, in this order: Rule1 adds a tag, Rule2 deletes objects with confidence below 30, and Rule3
- You have a Microsoft Sentinel workspace. Ten minutes ago, you created a threat intelligence ingestion rule that adds the tag PartnerFeed to objects from the Threat Intelligence - TAXII connector. Obje
- Defender Threat Intelligence connectors import feeds that matching analytics does not
Use the standard Defender Threat Intelligence connector for public indicators and open-source intelligence, or the premium connector for Microsoft's curated indicators and Microsoft-enriched OSINT. These connectors make the acquired intelligence available for your own monitoring and hunting. The freely available Defender Threat Intelligence matching analytics path ingests only indicators that match its rule, so it is not a complete feed-import alternative.
Trap Choosing managed matching analytics to populate a full Microsoft indicator inventory for unrelated hunts, although nonmatching indicators are not ingested through that path.
- Threat-intelligence row totals include versions and recurring reingestion
Creating, updating, or deleting an indicator appends an entry to Sentinel's threat-intelligence tables rather than replacing its previous row. The management interface selects the newest TimeGenerated value for each Id, while Sentinel reingests intelligence every seven to ten days. When validating the active inventory, resolve each identifier to its latest version and evaluate its lifecycle state instead of counting raw rows as distinct active indicators.
Trap Using count() over the raw indicator table as the active inventory, which includes historical revisions and periodically reingested copies.
3 questions test this
- You have a Microsoft Sentinel workspace. A report counts rows in ThreatIntelIndicators to measure how many updates your TAXII feeds send each week. The count includes rows that Microsoft Sentinel writ
- You have a Microsoft Sentinel workspace. Ingestion cost for the threat intelligence tables rises every week or so, although no new feeds were added and indicator updates are rare. A finance analyst as
- You have a Microsoft Sentinel workspace. You need a KQL query that returns each threat indicator's current state from ThreatIntelIndicators so that you can count the active inventory without counting
- A Uses relationship connects a threat actor to an attack pattern
Use Microsoft Sentinel's relationship builder to connect a threat actor object to an attack pattern object with the Uses relationship type. This records the connection between the actor and the attack technique. Use free-form tags to group threat intelligence objects for retrieval, such as objects associated with an incident, rather than as a substitute for this typed relationship.
Trap Using an attack-technique tag instead of a Uses relationship, because a retrieval label does not establish the typed connection between the threat actor and attack pattern objects.
- Traffic Light Protocol markings specify the audience for shared intelligence
Preserve a threat intelligence object's Traffic Light Protocol (TLP) sensitivity marking when deciding who may receive it. In Sentinel's documented markings, Green permits sharing within the community but not publicly, while Red confines disclosure to the specific group or meeting where the information was originally disclosed. Set TLP when creating or editing the object; upload API submissions express the marking through object_marking_refs. This is a disclosure restriction, distinct from a retrieval tag or an attribution relationship.
Trap Using a partner-community distribution list for Red-marked intelligence, because community sharing extends beyond the original disclosure group.
- Locally discovered intelligence can be entered directly as a TI object
Use Microsoft Sentinel's threat-intelligence management interface to capture intelligence discovered during local investigations without building a feed integration. Select Add new > TI object, choose the object type, complete the required fields, and select Add. This manual entry route suits individual analyst-curated objects when there is no external feed to poll or application submitting them.
Trap Deploying a TAXII connector for an analyst's standalone finding, introducing a server-and-collection dependency where direct TI object entry is sufficient.
3 questions test this
- You have a Microsoft Sentinel workspace. An engineer proposes deploying a Threat Intelligence - TAXII connector and a private TAXII server so that analysts can store the occasional domain they discove
- You have a Microsoft Sentinel workspace. An analyst must record a threat actor identified during a local investigation, and no external feed or custom application contains it. The analyst opens the th
- You have a Microsoft Sentinel workspace. During one investigation, an analyst identified 12 malicious IP addresses that aren't in any external feed. Each must be stored as its own threat intelligence
- GeoLocation and WhoIs describe indicator infrastructure rather than observed attacks
Inspect GeoLocation and WhoIs enrichments for imported IP and domain indicators to add infrastructure context to an investigation. GeoLocation can identify an IP's organization and country or region, while WhoIs can supply a domain's registrar and record creation information. These attributes describe the observable; they do not establish that your environment communicated with it or that a malicious match occurred.
Trap Treating a domain's registration information as evidence of local malicious traffic, substituting descriptive enrichment for an observed activity match.
- Custom log tables use the _CL suffix
Custom Log Analytics table names end in _CL. The Azure portal appends it automatically during creation, but API or command-line creation must supply it explicitly. The DCR output table reference must match the actual workspace table name.
3 questions test this
- You have a Microsoft Sentinel workspace. An analyst created a custom table in the Azure portal by entering the name AppAudit in the table creation wizard, and a data collection rule now sends data to
- You have a Microsoft Sentinel workspace. Your team is moving from creating custom tables in the Azure portal to deploying them with REST API calls in a pipeline. The pipeline also deploys the data col
- You have a Microsoft Sentinel workspace. You will use the Azure CLI to create a custom table that stores audit records for a confidential acquisition project. The name of the company being acquired, C
- Every Log Analytics table requires a TimeGenerated column
Include TimeGenerated as a datetime column in a custom table's output schema. If the sample does not include it, the portal adds it through the table's DCR transformation. Map an appropriate source timestamp when available so time-based analysis reflects the intended event time.
Trap Keeping only a string timestamp column from the source, which does not satisfy the required TimeGenerated datetime field.
3 questions test this
- You have a Microsoft Sentinel workspace. A custom table named AppEvents_CL receives records through the Logs Ingestion API. Each record has a datetime field named OccurredAt, and the table's DCR trans
- You have a Microsoft Sentinel workspace. You create a custom table in the Azure portal and upload sample JSON that contains a timestamp column named ObservedAt but no TimeGenerated column. The portal
- You have a Microsoft Sentinel workspace and a custom table named Sensor_CL with the columns TimeGenerated, Computer, and Reading. A data collection rule (DCR) declares an input stream with the columns
- DCR transformations shape records before they are stored
Use a DCR transformation to filter or reshape incoming records into the destination table schema. The transformation is a KQL query evaluated on the incoming data, and its output is what Azure Monitor stores. A query-time function changes how data is read, not what was ingested.
Trap Creating a saved query to remove sensitive fields from stored data, which only changes query output and leaves ingested records intact.
3 questions test this
- You have a Microsoft Sentinel workspace. An application sends sign-in records that include a UserEmail field to a custom table through the Logs ingestion API. Privacy rules require that raw email addr
- You have a Microsoft Sentinel workspace. An application sends records to a custom table named AppLogs_CL through the Logs ingestion API and a data collection rule (DCR). Records with a Severity of Deb
- You have a Microsoft Sentinel workspace. One input stream in a data collection rule (DCR) receives application records through the Logs ingestion API. Records whose Category is Security must be stored
- Changing a table schema also requires updating its sending DCRs
When adding or changing custom columns, update the DCRs that send data to the table so their output matches the new schema. The source sample, transformation output, and destination definition form one ingestion contract. Editing only the table does not rewrite upstream transformations.
Trap Adding a destination column and assuming every sender will populate it automatically, because DCR output mappings are separate.
3 questions test this
- You have a Microsoft Sentinel workspace. A new engineer believes that a custom table's schema and the data collection rules (DCRs) that feed it always stay synchronized because they reference the same
- You have a Microsoft Sentinel workspace and a custom table named Signins_CL that receives records from a data collection rule (DCR) named DCR1. You must add a RiskScore column and start populating it
- You have a Microsoft Sentinel workspace. A data collection rule (DCR) sends firewall records to Table1, an Azure table with a predefined schema, and the DCR transformation already looks up the region
- A custom table's plan should follow its usage and cost requirements
Custom table creation offers Analytics by default, with Basic and Auxiliary / Lake alternatives where supported. Choose the plan based on the required query and real-time security features, not merely the incoming JSON format. A cheaper storage plan is unsuitable if its feature limitations conflict with the table's intended detections.
3 questions test this
- You have a Microsoft Sentinel workspace. You are creating a custom table for high-volume, verbose network flow logs that are kept for long-term, inexpensive storage and are used only for aggregated tr
- You have a Microsoft Sentinel workspace. A custom table named Proxy_CL uses the Analytics plan and feeds two alert rules. To reduce cost, an engineer proposes switching Proxy_CL to the Auxiliary / Lak
- You have a Microsoft Sentinel workspace. You are creating a custom table for an identity provider's sign-in logs. Scheduled analytics rules will query the table every five minutes for continuous, late
- Creating a custom table prepares an ingestion route but does not send records
In the workspace Tables creation workflow, supply representative JSON, select or create the DCR, and use Run in the Transformation editor to preview results before Apply and Create. For an API-defined DCR, streamDeclarations defines incoming columns, destinations.logAnalytics names the workspace destination, and dataFlows connects the input stream, transformKql, destination name, and outputStream. The outputStream identifies the destination table, while the sender targets the input stream. After creating these resources, configure an authorized application or agent to send data; saving the table does not initiate ingestion.
Trap Waiting for records immediately after table creation, although no sender has been configured to submit data to the declared input stream.
3 questions test this
- You have a Microsoft Sentinel workspace. You are using Log Analytics workspaces > Tables > Create to define a custom table for badge reader data. You uploaded a sample JSON file and wrote a transforma
- You have a Microsoft Sentinel workspace. You are reviewing a data collection rule (DCR) defined through the API for the Logs ingestion API. The DCR contains streamDeclarations, destinations.logAnalyti
- You have a Microsoft Sentinel workspace. Yesterday, you used the Tables > Create workflow to create a custom table named Badge_CL with a new data collection rule (DCR) and a sample-based transformatio
- Custom ingestion columns need schema-safe names rather than merely valid Kusto references
Custom table column names must start with an ASCII letter and use only letters, digits, or underscores afterward; spaces, dots, and dashes are invalid. Quoting an unusual name in KQL does not make that name valid in the destination schema. Auxiliary ingestion also drops data for duplicate column names distinguished only by case, so rename case-colliding output fields instead of relying on the case-sensitive naming supported by Analytics and Basic tables.
Trap Using quoted Kusto identifiers to preserve dotted source-field names as custom columns, although query quoting cannot relax the ingestion schema's naming restrictions.
3 questions test this
- You have a Microsoft Sentinel workspace. A custom table uses the Auxiliary / Lake plan to reduce cost. Its data collection rule transformation outputs both UserName and username columns from different
- You have a Microsoft Sentinel workspace. A data collection rule transformation outputs a column by using the quoted Kusto identifier ['client.ip'] so that it keeps the source field name. Analysts alre
- You have a Microsoft Sentinel workspace. A vendor's JSON events include a field named 2FAMethod that you must store as a column in a custom table. An engineer plans to keep the name unchanged by refer
- The CLI columns argument replaces the custom schema instead of appending to it
With az monitor log-analytics workspace table update, the --columns argument specifies the replacement custom-column set. Include every existing custom column that must survive along with the new column; omitted custom columns are deleted. Treat the command as a complete schema change rather than an incremental add operation.
Trap Supplying only the new field to --columns during a schema extension, causing the previously defined custom fields to be omitted from the replacement set.
3 questions test this
- You have a Microsoft Sentinel workspace. A custom table named Inv_CL has five custom columns. You must add a column named Owner by running az monitor log-analytics workspace table update from a deploy
- You have a Microsoft Sentinel workspace that contains a custom table named Flow_CL with the custom columns Src, Dst, and Port. A data retention review requires that you remove every custom column from
- You have a Microsoft Sentinel workspace. Your team writes a runbook that adds columns to custom tables by using az monitor log-analytics workspace table update with the --columns argument. The runbook
- Azure tables permit custom-column removal but protect their built-in schema
Azure built-in tables cannot be deleted from a Log Analytics workspace. Within those tables, schema editing can add or remove custom columns, not remove the predefined columns supplied by Azure. Use a custom table when the required destination schema must differ from the built-in definition rather than attempting to dismantle that definition.
Trap Using table deletion to retire an unwanted Azure built-in schema, although the table-management API does not permit deleting that table type.
- Custom columns added to Azure built-in tables require the _CF suffix
When extending an Azure built-in table in Log Analytics, end each custom column name with _CF. For example, name an added classification field Classification_CF rather than Classification. Apply this suffix to the added field's schema name; it identifies a custom column within the Azure table.
Trap Using Classification_CL for an added field in an Azure table, because the custom-table naming convention does not satisfy the _CF requirement for custom columns.
- A Direct DCR supplies an ingestion endpoint without a separate DCE
Create the data collection rule with kind set to Direct to generate its own logsIngestion endpoint for Logs Ingestion API delivery. Retrieve that endpoint from the DCR's JSON view and use it as the sender's ingestion endpoint. A separate data collection endpoint is required when using private link or a DCR that lacks a logs ingestion endpoint; it is not mandatory for every custom-table API route.
Trap Reaching for the workspace resource ID as the HTTP ingestion destination, confusing the storage resource identifier with the DCR or DCE delivery endpoint.
3 questions test this
- You have a Microsoft Sentinel workspace. An older data collection rule (DCR) created before March 2024 routes Logs ingestion API data to a custom table and has no logs ingestion endpoint in its JSON v
- You have a Microsoft Sentinel workspace. You are writing an ARM template for a data collection rule that will receive custom application logs through the Logs Ingestion API. The rule must expose its o
- You have a Microsoft Sentinel workspace without private link. You created a data collection rule (DCR) with kind set to Direct for a custom table. When you open the DCR in the JSON view in the Azure p
- The ingestion DCR must share its destination workspace's region
Set the custom-table ingestion DCR's location to the region of the destination Log Analytics workspace. If the route uses a separate data collection endpoint, that endpoint must share the region too. Choose the destination workspace's region rather than the sending application's location when deploying these ingestion resources.
Trap Placing the DCR near a remote sender to reduce latency, breaking the required regional alignment with the destination workspace.
3 questions test this
- You have a Microsoft Sentinel workspace in the West Europe region. An application that runs in East US will send records to a custom table through the Logs ingestion API by using a new data collection
- You have a Microsoft Sentinel workspace in Australia East that uses private link. You need a Logs ingestion API route to a custom table, which requires a data collection endpoint (DCE) and a data coll
- You have two Microsoft Sentinel workspaces: WS1 in East US and WS2 in UK South. An application in West Europe must send the same records to a custom table in each workspace through the Logs ingestion
- Auxiliary and Lake TimeGenerated values require microsecond ISO 8601 formatting
For Auxiliary / Lake table ingestion, represent TimeGenerated in ISO 8601 format with six decimal places for microsecond precision. Validate timestamp serialization against this plan-specific requirement rather than relying on the broader set of datetime representations supported by Kusto. Declaring a datetime column alone does not establish that an incoming timestamp uses the required format.
Trap Using a locale-formatted timestamp accepted by a general datetime parser, overlooking the Auxiliary / Lake ingestion format restriction.
- Reserved platform names cannot be reused for custom log columns
Check custom column names against the system and reserved-name list, which includes TenantId, Type, and _ResourceId. A source field named Type must be mapped to a nonreserved custom name, such as SourceType, rather than reused unchanged. Valid characters and any required suffix are separate checks and do not authorize a reserved-name collision.
Trap Preserving a vendor's Type field as a custom column because it contains only letters, colliding with a platform-reserved name despite passing lexical validation.
References
- https://learn.microsoft.com/en-us/azure/sentinel/connect-data-sources
- https://learn.microsoft.com/en-us/azure/sentinel/manage-data-overview
- https://learn.microsoft.com/en-us/azure/sentinel/threat-detection
- https://learn.microsoft.com/en-us/azure/sentinel/connect-services-windows-based
- https://learn.microsoft.com/en-us/azure/sentinel/cef-syslog-ama-overview
- https://learn.microsoft.com/en-us/azure/sentinel/connect-services-diagnostic-setting-based
- https://learn.microsoft.com/en-us/azure/sentinel/understand-threat-intelligence
- https://learn.microsoft.com/en-us/azure/azure-monitor/logs/logs-ingestion-api-overview
- https://learn.microsoft.com/troubleshoot/azure/azure-monitor/activity-logs/config-export/push-subscription-activity-logs-to-sentinel
- https://learn.microsoft.com/en-us/azure/azure-monitor/vm/data-collection-windows-events
- https://learn.microsoft.com/en-us/azure/sentinel/configure-data-connector
- https://learn.microsoft.com/en-us/azure/sentinel/roles
- https://learn.microsoft.com/en-us/azure/sentinel/connect-threat-intelligence-taxii
- https://learn.microsoft.com/en-us/azure/azure-monitor/essentials/data-collection-rule-overview?tabs=portal
- https://learn.microsoft.com/en-us/azure/azure-monitor/agents/azure-monitor-agent-migration
- https://learn.microsoft.com/en-us/defender-endpoint/create-custom-data-collection-rules
- https://learn.microsoft.com/en-us/azure/sentinel/windows-security-event-id-reference
- https://learn.microsoft.com/en-us/azure/azure-monitor/logs/create-custom-table
- https://learn.microsoft.com/en-us/azure/sentinel/connect-cef-syslog-ama
- https://learn.microsoft.com/en-us/azure/sentinel/cef-syslog-ama-troubleshooting
- https://learn.microsoft.com/en-us/azure/sentinel/billing
- https://learn.microsoft.com/en-us/azure/sentinel/connect-threat-intelligence-upload-api
- https://learn.microsoft.com/en-us/azure/sentinel/work-with-threat-indicators
- https://learn.microsoft.com/en-us/azure/azure-monitor/reference/tables/threatintelindicators
- https://learn.microsoft.com/en-us/azure/sentinel/stix-objects-api
- https://learn.microsoft.com/en-us/azure/azure-monitor/logs/logs-table-plans
- https://learn.microsoft.com/en-us/azure/azure-monitor/logs/data-platform-logs
- https://learn.microsoft.com/en-us/azure/sentinel/manage-table-tiers-retention