Microsoft Sentinel Setup From Scratch 2026: Portal, Defender & Infrastructure-as-Code

·

Microsoft Sentinel is a cloud-native SIEM and SOAR platform that sits on top of a Log Analytics workspace in Azure. There is no server to rack, no indexer cluster to size, and no OS to patch — you enable it on a workspace, connect data sources, and start writing detections in Kusto Query Language (KQL). That low friction is exactly why teams get it wrong: they turn on every connector, ingest terabytes they never query, and open a five-figure monthly bill before they have written a single detection rule.

This guide builds Sentinel the way a working SOC should. You will enable it three ways — the Azure portal, the unified Microsoft Defender portal, and Terraform for repeatable deployments — connect the connectors that actually matter, write scheduled analytics rules that generate real incidents, automate response with playbooks, and control cost with commitment tiers and table-level plans. Everything here is copy-pasteable and current for the 2026 Defender-portal experience.

◈ Table of Contents

01 What Sentinel Is & Why It Matters 02 Prerequisites & Requirements 03 Method 1 — Azure Portal 04 Method 2 — Defender Portal 05 Method 3 — Terraform / IaC 06 Initial Configuration 07 Core Config — Data Connectors 08 Integration — Syslog, CEF & XDR 09 Advanced — Rules, SOAR & Hunting 10 Monitoring, Cost & Troubleshooting 11 Sources & References
🛰️

01 — What Microsoft Sentinel Is & Why a Defender Cares

CONCEPTS

Sentinel is Microsoft's SaaS security analytics platform. It ingests logs from cloud and on-premises sources into a Log Analytics workspace, runs detection logic against that data as scheduled KQL queries, correlates the resulting alerts into incidents, and lets you respond automatically through Logic Apps playbooks. Unlike Splunk or a self-hosted ELK stack, you never manage compute — you pay for data ingested and, optionally, for the analytics features layered on top.

As of 2026 the primary experience is the unified Microsoft Defender portal at security.microsoft.com, where Sentinel sits alongside Defender XDR (endpoint, identity, email, cloud apps) under one incident queue. The classic Azure-portal experience still exists, but new customers with Owner or User Access Administrator rights are automatically onboarded to the Defender portal. This guide shows both.

The five moving parts you will build in this guide:

🗄️

Log Analytics Workspace

The storage and query engine. All logs land here in typed tables you query with KQL. Retention, cost and access are all governed at the workspace level.

🔌

Data Connectors

Deployed from the Content hub as solutions. They forward events from Entra ID, Azure Activity, Defender XDR, firewalls and Syslog/CEF sources into the workspace.

🎯

Analytics Rules

Scheduled KQL queries that run on an interval, map entities and MITRE techniques, and raise alerts that group into incidents.

🤖

Automation & Playbooks

Automation rules trigger Logic Apps playbooks — disable a user, isolate a device, post to Teams — turning Sentinel from SIEM into SOAR.

📊

Workbooks & Hunting

Workbooks visualise your data; hunting queries and bookmarks let analysts proactively search across the whole workspace for threats no rule caught.

🧠

UEBA & Threat Intel

Entity behaviour analytics baselines users and hosts; the TI connector matches indicators from feeds against your logs to surface known-bad activity.

Sentinel and Log Analytics are two products stacked on one workspace. You can query the data with plain Log Analytics for free-tier monitoring, but detections, incidents, UEBA and SOAR only exist once Sentinel is enabled on that workspace. Enabling Sentinel adds the analytics meter on top of ingestion.

📋

02 — Prerequisites & Requirements

PLAN FIRST

Sentinel has no hardware requirements — the requirements are about identity, permissions, and billing. Get these right before you click anything, because a workspace, once Sentinel is enabled on it, cannot be moved to a different resource group or subscription.

RequirementDetailNotes
Azure subscriptionActive, with billingFree account works for a lab; Sentinel itself is a paid service
Enable permissionContributor on the subscriptionNeeded once, to create the workspace and turn Sentinel on
Operate permissionMicrosoft Sentinel Contributor / ReaderScoped to the resource group holding the workspace
Content hubMicrosoft Sentinel ContributorRequired to install and manage solutions/connectors
Log Analytics workspaceOne dedicated workspaceDo not reuse the default Defender for Cloud workspace
RetentionRaise to 90 daysLegacy tiers default to 30; 90 days is free with Sentinel
RegionPick close to data sourcesAffects latency and some data-residency rules

Do NOT install Sentinel on the automatically-created "DefaultWorkspace-..." that Microsoft Defender for Cloud provisions. Those workspaces are hidden from the onboarding list and carry Defender for Cloud's own retention and access model. Always create a purpose-built workspace you own end to end.

Pricing model. Sentinel bills on data ingested into analytics tables. You have two ways to pay, and choosing correctly is the single biggest cost lever:

ModelHow it worksBest for
Pay-As-You-GoBilled per GB ingested, no commitmentLabs and early pilots under ~100 GB/day
Commitment TierFixed daily capacity (100, 200, 300, 400, 500, 1000+ GB/day) at a per-GB discountSteady production ingestion — discounts grow with tier
Auxiliary / Basic logsCheaper ingestion for high-volume, low-value tablesVerbose firewall / network logs queried rarely

Commitment tiers reset every day and any overage is billed at the same discounted rate, so a tier that is slightly below your daily average is almost always cheaper than pay-as-you-go. Watch a week of ingestion first (Phase 10 shows the query), then commit.

Tooling. Install the Azure CLI and the PowerShell modules you will use for the scripted paths. Verify versions before you start:

VERIFY LOCAL TOOLING
$ az version # Azure CLI 2.60+ recommended $ az login # authenticate to your tenant $ az account set --subscription "CyberHawk-Prod" PS> Install-Module Az.Accounts, Az.OperationalInsights, Az.SecurityInsights -Scope CurrentUser PS> Connect-AzAccount
🅰️

03 — Method 1: Enable Sentinel in the Azure Portal

CLICK PATH

This is the classic, GUI-driven path — the fastest way to a working instance for a first-timer. You create a Log Analytics workspace, add Sentinel to it, and confirm it is live. Ten minutes end to end.

1
Create the Resource Group & Workspace
Foundation

Sentinel needs a home. Create a dedicated resource group and a Log Analytics workspace in your chosen region. You can do this in the portal, but the CLI is faster and repeatable.

CREATE RG + WORKSPACE (AZURE CLI)
$ az group create \ --name "rg-sentinel-prod" \ --location "australiaeast" $ az monitor log-analytics workspace create \ --resource-group "rg-sentinel-prod" \ --workspace-name "law-sentinel-prod" \ --location "australiaeast" \ --retention-time 90

Name the workspace for its purpose and region, not for a person. When you later add Defender XDR or a second region, a clear naming scheme (law-sentinel-prod, law-sentinel-dr) saves hours of confusion in the workspace picker.

2
Add Microsoft Sentinel to the Workspace
Portal

In the Azure portal, search for and open Microsoft Sentinel, click Create, select the workspace you just built, and click Add. This attaches the Sentinel analytics layer to that workspace.

  • 1Portal home > search Microsoft Sentinel > Create.
  • 2Select law-sentinel-prod from the list, then Add.
  • 3Wait for provisioning; Sentinel opens on the Overview blade.

You can run Sentinel on more than one workspace, but data never crosses between workspaces — a query only sees the workspace it runs in. Plan a single primary workspace per tenant unless you have a hard data-residency or delegation reason to split.

3
Enable Sentinel via PowerShell (scriptable equivalent)
Automation

The portal "Add" button is really an onboarding-state resource. If you prefer to script it — for example inside a deployment runbook — the Az.SecurityInsights module does the same thing in one line.

ENABLE SENTINEL (POWERSHELL)
PS> New-AzSentinelOnboardingState \ -ResourceGroupName "rg-sentinel-prod" \ -WorkspaceName "law-sentinel-prod" \ -Name "default"

Confirm the onboarding state exists:

PS> Get-AzSentinelOnboardingState \ -ResourceGroupName "rg-sentinel-prod" \ -WorkspaceName "law-sentinel-prod"
4
Set Retention Correctly
Retention

Legacy pricing tiers default to 30-day retention. Sentinel includes 90 days of analytics-log retention at no extra ingestion charge, so raise it. You can extend interactive retention up to two years, and archive older data for long-term compliance.

SET WORKSPACE + TABLE RETENTION
$ az monitor log-analytics workspace update \ --resource-group "rg-sentinel-prod" \ --workspace-name "law-sentinel-prod" \ --retention-time 90 # Per-table override: keep SigninLogs 180 days interactive, archive to 2y $ az monitor log-analytics workspace table update \ --resource-group "rg-sentinel-prod" \ --workspace-name "law-sentinel-prod" \ --name "SigninLogs" \ --retention-time 180 --total-retention-time 730

Set long total-retention only on the tables an investigation actually reaches back into — sign-ins, audit logs, and security events. Archiving a chatty network table for two years quietly becomes one of your biggest line items.

5
Verify the Instance Is Live
Verify

Before ingesting data, confirm Sentinel is genuinely attached. Open Logs and run a metadata query — even an empty workspace answers this.

SANITY CHECK (KQL, in Logs)
// Lists every table that already has data — empty result is fine on day one Usage | summarize IngestedGB = sum(Quantity) / 1000 by DataType | sort by IngestedGB desc
Sentinel Is Ready When
  • The Microsoft Sentinel blade opens on the workspace with no "enable" prompt
  • Content hub, Data connectors and Analytics nodes are all clickable
  • A KQL query in Logs executes and returns a schema (even if zero rows)
🛡️

04 — Method 2: Onboard to the Unified Defender Portal

RECOMMENDED

The Defender portal merges Sentinel with Defender XDR into a single incident queue, correlation engine and hunting surface. If you run any Microsoft Defender product, onboard here — a phishing alert, the identity it compromised and the Azure resource it touched all collapse into one incident instead of three.

1
Onboard the Workspace to Defender
Connect

New tenants with Owner or User Access Administrator rights are onboarded automatically. If yours was not, connect it manually from the Defender portal.

DEFENDER PORTAL NAVIGATION
security.microsoft.com → System → Settings → Microsoft Sentinel → Workspaces → Connect a workspace
  • 1Select the law-sentinel-prod workspace as the primary workspace for the tenant.
  • 2Confirm; provisioning the unified experience takes a few minutes on first use.
  • 3Sentinel now appears in the Defender navigation with its nodes nested beneath it.

The Defender portal supports multiple Sentinel workspaces but only one primary per tenant. Choose the primary deliberately — it is the workspace Defender XDR data streams into and the one that anchors cross-product correlation.

2
Understand What Changes After Onboarding
Behaviour

Once onboarded, some navigation moves. Data connectors and analytics live under Sentinel's own nodes; incidents merge into the single Defender queue. The KQL is identical — Advanced Hunting in Defender queries the same tables as Logs in Azure.

TaskAzure PortalDefender Portal
Run KQLMicrosoft Sentinel > LogsInvestigation > Advanced hunting
ConnectorsSentinel > Data connectorsSentinel > Configuration > Data connectors
IncidentsSentinel > IncidentsInvestigation > Incidents (unified)
RulesSentinel > AnalyticsSentinel > Configuration > Analytics

When reading Microsoft Learn, switch the doc tab to the "Defender portal" version once you have onboarded. The click-paths differ enough between the two that following the Azure-portal steps will send you hunting for menus that have moved.

🧱

05 — Method 3: Deploy with Terraform & Bicep (IaC)

REPEATABLE

For anything beyond a lab, deploy Sentinel as code. Infrastructure-as-Code makes the workspace, onboarding state, retention and even analytics rules reproducible across dev/test/prod and reviewable in a pull request. Here are the two mainstream options.

1
Terraform — Workspace + Sentinel Onboarding
azurerm

The azurerm provider models both the workspace and the Sentinel onboarding as first-class resources. This is the minimum viable Sentinel, fully declarative.

main.tf
terraform { required_providers { azurerm = { source = "hashicorp/azurerm", version = "~> 4.0" } } } provider "azurerm" { features {} } resource "azurerm_resource_group" "rg" { name = "rg-sentinel-prod" location = "australiaeast" } resource "azurerm_log_analytics_workspace" "law" { name = "law-sentinel-prod" location = azurerm_resource_group.rg.location resource_group_name = azurerm_resource_group.rg.name sku = "PerGB2018" retention_in_days = 90 } resource "azurerm_sentinel_log_analytics_workspace_onboarding" "onboard" { workspace_id = azurerm_log_analytics_workspace.law.id }
DEPLOY
$ terraform init $ terraform plan -out sentinel.plan $ terraform apply sentinel.plan
2
Bicep — Native Azure Template
bicep

If you are all-in on Azure Resource Manager, Bicep expresses the same deployment. The Sentinel resource is Microsoft.SecurityInsights/onboardingStates, scoped to the workspace.

sentinel.bicep
param location string = 'australiaeast' resource law 'Microsoft.OperationalInsights/workspaces@2023-09-01' = { name: 'law-sentinel-prod' location: location properties: { sku: { name: 'PerGB2018' } retentionInDays: 90 } } resource onboarding 'Microsoft.SecurityInsights/onboardingStates@2024-03-01' = { scope: law name: 'default' properties: {} }
DEPLOY
$ az deployment group create \ --resource-group "rg-sentinel-prod" \ --template-file sentinel.bicep

Keep analytics rules in the same repo as the workspace. Both Terraform (azurerm_sentinel_alert_rule_scheduled) and Bicep can define detection rules, so your entire detection library ships through code review and rolls back cleanly.

3
Which Method Should You Use?
Decide

All three land you a working Sentinel. Pick based on how you will operate it long-term.

MethodBest forTrade-off
Azure portalFirst instance, learning, quick labsNot reproducible; drift over time
Defender portalAny Defender XDR customerRequires the onboarding step; menus differ
Terraform / BicepProduction, multi-environmentUpfront authoring effort
⚙️

06 — Initial Configuration

FIRST RUN

Before pouring data in, set the workspace-level knobs that are painful to change later and grant access on least-privilege lines.

1
Assign Roles the Right Way
RBAC

Use Sentinel's purpose-built roles, not broad Owner grants. Responders should be able to work incidents without touching workspace configuration.

RoleGrantsGive to
Sentinel ReaderView data, incidents, workbooksAuditors, junior analysts
Sentinel ResponderReader + triage/own incidentsSOC analysts (L1/L2)
Sentinel ContributorResponder + create rules/connectorsDetection engineers
Sentinel Automation ContributorManage automation rules/playbooksSOAR/automation owners
ASSIGN RESPONDER ROLE (AZURE CLI)
$ az role assignment create \ --assignee "[email protected]" \ --role "Microsoft Sentinel Responder" \ --scope "/subscriptions/<sub-id>/resourceGroups/rg-sentinel-prod"
2
Enable UEBA
Behaviour

User and Entity Behavior Analytics baselines normal activity per user and host, so anomalies (a first-time admin action, an atypical geography) become scoreable signals. Enable it early — it needs time to learn.

DEFENDER/AZURE PORTAL PATH
Microsoft Sentinel → Configuration → Entity behavior → turn ON → select data sources (SigninLogs, AuditLogs, SecurityEvent, AzureActivity)

UEBA quietly ingests and enriches — the BehaviorAnalytics and related tables add to your data footprint. Enable it, but include those tables when you size cost in Phase 10 rather than being surprised on the invoice.

3
Learn Kusto Query Language Basics
KQL 101

Everything in Sentinel — detections, hunting, workbooks — is KQL. If you have never written it, these five operators cover most of what you will do daily. Run them in Logs / Advanced hunting.

KQL STARTER PATTERNS
// Filter, project, sort, limit — the bread and butter SigninLogs | where TimeGenerated > ago(24h) | where ResultType != "0" // failed sign-ins | project TimeGenerated, UserPrincipalName, IPAddress, ResultType | sort by TimeGenerated desc | take 20
// Aggregate: count failures per user, keep the noisy ones SigninLogs | where TimeGenerated > ago(1h) and ResultType != "0" | summarize Failures = count() by UserPrincipalName, IPAddress | where Failures > 10 | sort by Failures desc

Always put your time filter first. KQL evaluates left to right and where TimeGenerated > ago(1h) up front prunes the dataset before any expensive operation, making queries faster and cheaper on large tables.

🔌

07 — Core Configuration: Data Connectors

GET DATA IN

A SIEM with no data is a blank query editor. Connectors are installed as solutions from the Content hub, which bundles the connector with matching analytics rules, workbooks and hunting queries. Start with the free, high-value Microsoft connectors before you pay to ingest anything.

DATA PIPELINE — SOURCE TO DETECTION
1
Install a Solution from the Content Hub
Content hub

The Content hub is the marketplace for connectors and detections. Install the solution first; the connector page appears afterwards.

NAVIGATION
Microsoft Sentinel → Content hub → search a product (e.g. "Azure Activity") → Install → Manage → open the connector page → Connect
2
Connect Microsoft Entra ID
Identity

Identity is where most intrusions become visible. The Entra ID connector streams sign-in and audit logs — the foundation for detecting password spray, impossible travel and consent abuse. It is a diagnostic-settings connector, configurable from Entra.

ROUTE ENTRA LOGS TO THE WORKSPACE (AZURE CLI)
$ az monitor diagnostic-settings create \ --name "entra-to-sentinel" \ --resource "/providers/microsoft.aadiam/diagnosticSettings" \ --workspace "law-sentinel-prod" \ --logs '[{"category":"SignInLogs","enabled":true}, {"category":"AuditLogs","enabled":true}, {"category":"NonInteractiveUserSignInLogs","enabled":true}]'

Non-interactive and service-principal sign-in logs are where token-theft and OAuth abuse hide, but they are also the highest-volume identity tables. Turn them on, then watch their daily GB — they frequently dwarf interactive sign-ins.

3
Connect Azure Activity
Control plane

Azure Activity logs every control-plane operation — role assignments, resource deletions, policy changes. The modern connector is delivered through an Azure Policy assignment so every subscription in scope forwards automatically.

  • 1Open the Azure Activity connector page, click Launch Azure Policy Assignment Wizard.
  • 2Set Scope to the subscription(s) you want to monitor.
  • 3On the Parameters tab, set the primary workspace to law-sentinel-prod.
  • 4Review + create. New subscriptions in scope are covered automatically.
VERIFY INGESTION (KQL)
// Confirms Azure Activity data is landing AzureActivity | where TimeGenerated > ago(1h) | summarize Events = count() by OperationNameValue | sort by Events desc
4
Prioritise Connectors by Value, Not Availability
Strategy

There are hundreds of connectors. Connecting all of them is how bills explode and signal drowns in noise. Sequence by detection value per GB.

ConnectorCostPriority
Entra ID sign-in / auditPaid ingestFirst
Defender XDR (service-to-service)FreeFirst
Azure ActivityFreeEarly
Office 365 / ExchangeFreeEarly
Windows Security Events (AMA)Paid ingestTuned
Firewall / proxy (CEF)Paid, high volumeFilter first

Defender XDR and Office 365 connectors ingest their alert/audit data into Sentinel free of Sentinel analytics charges — turn them on before any paid source. Free, high-signal data is the best value you will find in the whole platform.

🔗

08 — Integration: Syslog, CEF & Defender XDR

ON-PREM + XDR

Cloud connectors are point-and-click. On-premises sources — firewalls, Linux servers, network appliances — need a collector. In 2026 that collector is the Azure Monitor Agent (AMA) driven by a Data Collection Rule (DCR). The legacy Log Analytics agent (MMA/OMS) is retired; do not build anything new on it.

1
Stand Up a Linux Log Forwarder
Collector

Firewalls and appliances that emit Syslog/CEF send to a dedicated Linux VM running rsyslog and AMA. The VM receives on 514 and AMA ships the parsed events to your workspace. Size it modestly — one forwarder handles thousands of EPS.

PREP THE FORWARDER (UBUNTU)
$ sudo apt update && sudo apt install -y rsyslog $ sudo systemctl enable --now rsyslog # Open 514/udp and 514/tcp from your appliances only $ sudo ufw allow from 10.0.0.0/8 to any port 514
2
Install the Azure Monitor Agent
AMA

Install AMA on the forwarder as a VM extension. On an Azure VM this is one command; for an on-prem host, enroll it in Azure Arc first, then install the same extension.

INSTALL AMA (AZURE VM)
$ az vm extension set \ --resource-group "rg-sentinel-prod" \ --vm-name "vm-syslog-fwd" \ --name "AzureMonitorLinuxAgent" \ --publisher "Microsoft.Azure.Monitor" \ --enable-auto-upgrade true

Point exactly one collection path at each source. Running both the old Log Analytics agent and AMA on the same forwarder double-ingests every event — you pay twice and every detection fires twice. Remove MMA/OMS before installing AMA.

3
Create the CEF/Syslog Data Collection Rule
DCR

The DCR tells AMA which facilities and severities to collect and where to send them. Create it from the connector page (CEF via AMA / Syslog via AMA), which also drops the rsyslog forwarding config onto the VM. Verify that config landed:

CONFIRM RSYSLOG FORWARDING CONFIG
$ ls /etc/rsyslog.d/ # expect a 10-azuremonitoragent-*.conf $ sudo systemctl restart rsyslog # Watch events arrive locally before checking the cloud $ logger -p local4.info "CEF:0|CyberHawk|Test|1.0|100|test event|3|"
CONFIRM ARRIVAL IN SENTINEL (KQL)
// CEF events land in CommonSecurityLog; Syslog in Syslog CommonSecurityLog | where TimeGenerated > ago(15m) | summarize count() by DeviceVendor, DeviceProduct

Filter at the DCR, not in KQL. Collecting only the facilities and severities you detect on — instead of everything a firewall screams — is the difference between a $400 and a $4,000 monthly line for a busy perimeter device.

4
Wire In Defender XDR
Unified

If you onboarded to the Defender portal (Phase 4), XDR incidents already flow in. Otherwise, enable the Defender XDR service-to-service connector to pull endpoint, identity, email and cloud-app alerts into Sentinel with one toggle — no agent, no cost for the alert data.

  • 1Content hub > install Microsoft Defender XDR solution.
  • 2Open the connector > connect incidents & alerts.
  • 3Optionally stream raw advanced-hunting tables (DeviceEvents, IdentityLogonEvents) for custom KQL.
🎯

09 — Advanced: Analytics Rules, SOAR & Hunting

DETECT & RESPOND

This is where Sentinel earns its keep. Data ingestion is plumbing; analytics rules, automation and hunting are the product. Deploy the out-of-the-box rules first, then write your own.

1
Deploy Built-in Rule Templates
Quick wins

Every solution you installed shipped rule templates. Enable the relevant ones before authoring anything custom — they are maintained by Microsoft and cover the common cases.

NAVIGATION
Microsoft Sentinel → Analytics → Rule templates → filter by data source → Create rule → review logic → set severity & schedule → Enable

A rule template does nothing until you create an active rule from it. A brand-new Sentinel with connectors flowing but zero enabled rules generates zero incidents — the most common "why isn't it detecting anything?" mistake.

2
Write a Scheduled Analytics Rule (Password Spray)
Custom KQL

A scheduled rule is a KQL query plus a schedule, entity mapping and MITRE tagging. This one flags a single source IP failing against many distinct accounts — classic password spray.

DETECTION QUERY (KQL)
// Password spray: one IP, many failed users, short window SigninLogs | where TimeGenerated > ago(1h) | where ResultType in ("50126", "50053") // bad password / locked | summarize TargetedAccounts = dcount(UserPrincipalName), Attempts = count(), Users = make_set(UserPrincipalName, 50) by IPAddress, bin(TimeGenerated, 15m) | where TargetedAccounts >= 10 | extend AccountCustomEntity = tostring(Users[0]), IPCustomEntity = IPAddress
RULE SETTINGS
  • 1Run frequency 1 hour, lookup period 1 hour.
  • 2Entity mapping: Account → UserPrincipalName, IP → IPAddress.
  • 3Tactics: Credential Access; Technique: T1110 Brute Force.
  • 4Incident grouping: group alerts on the same IP into one incident.
3
Deploy Detections as Code
Terraform

Click-built rules drift and vanish with the person who made them. Define detections in Terraform so they are versioned, reviewed and repeatable across environments.

SCHEDULED RULE AS CODE
resource "azurerm_sentinel_alert_rule_scheduled" "spray" { name = "pw-spray-single-ip" log_analytics_workspace_id = azurerm_log_analytics_workspace.law.id display_name = "Password spray from single IP" severity = "Medium" query_frequency = "PT1H" query_period = "PT1H" tactics = ["CredentialAccess"] techniques = ["T1110"] query = <<-KQL SigninLogs | where ResultType in ("50126","50053") | summarize dcount(UserPrincipalName) by IPAddress, bin(TimeGenerated, 15m) | where dcount_UserPrincipalName >= 10 KQL }
4
Automate Response with a Playbook
SOAR

A playbook is a Logic App triggered by an automation rule. Common first playbooks: post the incident to a Teams/Slack channel, disable a compromised user in Entra, or isolate a device via Defender. Wire it to the rule with an automation rule.

AUTOMATION FLOW
Analytics rule fires → creates incident → Automation rule (trigger: When incident is created, condition: severity >= Medium) → Run playbook → Logic App: notify Teams + add comment + (optional) disable user
BUILD ORDER
  • 1Content hub or Configuration > Automation > import/create a playbook (Logic App).
  • 2Grant the playbook's managed identity the Sentinel Responder role so it can act on incidents.
  • 3Create an automation rule to run the playbook on matching incidents.

Start playbooks in notify-only mode. Prove the trigger and conditions fire correctly for a week before you let a playbook disable accounts — an over-eager auto-remediation on a false positive can lock out your own executives at 3 a.m.

5
Proactive Threat Hunting
Hunt

Not every threat trips a rule. The Hunting node ships MITRE-aligned queries you run on demand; bookmark interesting rows and promote them into incidents. A useful starting hunt: newly created service principals with credentials added — a common persistence move.

HUNT QUERY (KQL)
// New app credential added shortly after app creation AuditLogs | where TimeGenerated > ago(7d) | where OperationName has_any ("Add service principal", "Add application", "Update application - Certificates and secrets") | project TimeGenerated, OperationName, InitiatedBy, TargetResources | sort by TimeGenerated asc
A Working Detection Stack Has
  • Built-in rule templates enabled for every connected source
  • Custom rules with entity mapping and MITRE tactics set
  • At least one notify playbook proven before any auto-remediation
  • Scheduled hunts run on a cadence, not just after an incident
🩺

10 — Monitoring, Cost & Troubleshooting

KEEP IT HEALTHY

A Sentinel instance is never "done." Two things will hurt you if ignored: silent connector failures (you stop detecting and never know) and runaway ingestion (you find out on the invoice). Watch both with KQL.

1
Watch Ingestion and Right-Size the Tier
Cost

Before committing to a tier, measure. This query shows your daily ingestion by table over the last week — the numbers that decide your commitment tier and reveal which table to move to a cheaper plan.

DAILY INGESTION BY TABLE (KQL)
// GB per table per day — your cost map Usage | where TimeGenerated > ago(7d) | where IsBillable == true | summarize BillableGB = sum(Quantity) / 1000 by DataType, bin(TimeGenerated, 1d) | sort by BillableGB desc

Move high-volume, low-detection tables (verbose firewall traffic, DNS) to the Auxiliary or Basic logs plan. You lose full analytics on them but keep them searchable for investigations at a fraction of the ingestion cost.

2
Detect Connector Failures Before They Cost You
Health

A firewall that stops logging is a blind spot you will not notice until an incident. Alert on data-source silence and monitor the SentinelHealth table for connector and automation failures.

STALE DATA SOURCE (KQL) — MAKE THIS A RULE
// Tables that logged yesterday but are silent today Usage | where TimeGenerated > ago(2d) | summarize LastSeen = max(TimeGenerated) by DataType | where LastSeen < ago(4h) | project DataType, LastSeen, HoursSilent = datetime_diff('hour', now(), LastSeen)
CONNECTOR & AUTOMATION HEALTH (KQL)
SentinelHealth | where TimeGenerated > ago(1d) | where Status != "Success" | project TimeGenerated, SentinelResourceName, SentinelResourceKind, Status, Description
3
Common Errors & Fixes
Troubleshoot

Nearly every "Sentinel isn't working" ticket is one of these. Check them in order before opening a support case.

SymptomLikely CauseFix
No incidents ever appearRule templates installed but no active rules createdCreate + enable rules from templates (Phase 9.1)
CEF logs not arrivingDCR facility/severity filter or 514 blockedCheck DCR, firewall to forwarder, restart rsyslog
Events counted twiceMMA and AMA both runningRemove the legacy Log Analytics agent
Connector shows "not connected"Diagnostic settings not routed to this workspaceRe-run the connector's diagnostic/policy config
Bill jumped overnightNew verbose connector or debug logging left onRun the Usage query; move the table to Basic/Aux
Rule query times outNo time filter / heavy join over long lookbackFilter TimeGenerated first; shorten lookup period

Deleting a Log Analytics workspace deletes all its data permanently and cannot be undone. A soft-delete window exists for a short recovery period, but never treat workspace deletion as reversible — export or archive anything you need first.

4
Ongoing Maintenance Cadence
Routine

Bake these into a recurring runbook so the instance stays sharp instead of slowly rotting.

  • 1Weekly: review the Usage query, tune noisy rules, clear the incident backlog.
  • 2Monthly: update Content hub solutions, review new rule templates, check SentinelHealth trends.
  • 3Quarterly: re-validate commitment tier against actual ingestion; run SOC optimization recommendations.
  • 4Continuously: ship every new detection through IaC and code review, not the portal.
📚

11 — Sources & References

VERIFY

All setup steps, permissions and pricing behaviour in this guide are drawn from current Microsoft documentation. Verify region-specific pricing and any preview features against the live docs before production rollout.

Microsoft Learn — Onboard to Microsoft Sentinel (quickstart) Microsoft Learn — Onboard Microsoft Sentinel to the Defender portal Microsoft Learn — Prerequisites for deploying Microsoft Sentinel Microsoft Learn — Create scheduled analytics rules in Microsoft Sentinel Microsoft Learn — Microsoft Sentinel data connectors Microsoft Learn — Ingest Syslog and CEF with the Azure Monitor Agent Microsoft Learn — Plan costs and understand Microsoft Sentinel pricing Microsoft Learn — Roles and permissions in Microsoft Sentinel Terraform Registry — azurerm Sentinel onboarding & scheduled alert rule

Building out detections next?

Pair this deployment with CyberHawk's SOP library — ready-to-run KQL and SPL response playbooks for AS-REP roasting, NTLM relay, web-shell detection and more — and the Threat Intel feed to enrich your analytics rules with fresh indicators. Explore the SOPs, Blog and Threat Intel hub to keep your new SIEM fed with signal that matters.

◈ Stay Connected

Follow CyberHawk Threat Intel for threat intelligence, deployment guides and hands-on SOC tooling content.

🌐 Website ▶️ YouTube ▶️ YouTube (2) 𝕏 Twitter / X ♪ TikTok ✈️ Telegram
🔍 IOC Scanner 🛠️ Live Tools 📚 Courses 🚨 Threat Intel 📝 Blog 📋 SOPs

"They can't exploit you if you are the Exploit."