Blue Team of One field notes · security

HomeDetection EngineeringSentinel, end to end

SIEM architecture · part 1 of a series

How Sentinel is built: from the loading dock to the lake

Most people meet Microsoft Sentinel as a search bar over some logs. Underneath is a supply chain — data arrives, gets sorted, gets stored at a price that depends on how you'll use it. This is that chain, drawn out end to end: subscription and workspace, RBAC, the Defender portal, connectors and DCRs, table tiers and retention, and the data lake economics that quietly decide your bill.

A SIEM has one job: take everything your environment emits — sign-ins, endpoint events, mail flow, firewall traffic — and turn that raw noise into a small number of things a human should look at. Collect, correlate, alert, retain. Sentinel is Microsoft's cloud-native take on that job, and the reason it's worth understanding as architecture rather than as a product tour is that every meaningful decision you make with it is a trade between three things that pull against each other: coverage (keep everything), speed (query it instantly), and cost (don't go bankrupt). Almost everything below is a mechanism for spending on two of those without wasting the third.

Mental model

Think of Sentinel as a warehouse operation, not a database. Connectors are the loading docks. A sorting line (the DCR) decides what comes off the truck and where it goes. Tables are the labelled aisles. The tiers are storage classes — a climate-controlled front room you pay a premium for, cheaper back-shelves, and a vast low-cost depot out back. Retention is how long before a pallet is shredded. Get the routing right and the warehouse is cheap and fast; get it wrong and you're paying front-room rates to store junk you'll never pick.

MICROSOFT DEFENDER PORTAL · unified SecOps Azure portal for Sentinel retiring ~Jul 2026 SOURCES M365 · Entra ID Defender XDR Firewall · Proxy · DNS Custom app · OT · syslog CONNECTORS + DCR filter · shape · route at ingest — before you're billed LOG ANALYTICS WORKSPACE tables SigninLogs SecurityEvent DeviceProcessEvents MyApp_CL ← custom table ANALYTICS TIER · hot full KQL · powers rules, alerts & hunting · $$$ BASIC / AUXILIARY · warm cheaper ingest · limited KQL · per-query scan · $ MICROSOFT SENTINEL DATA LAKE · cold low-cost · up to 12 years · 6:1 compression · open Delta Parquet query by KQL job or notebook — not available to real-time rules mirror · free lake-direct
The whole pipeline on one screen. Everything after this is a zoom into one region of this map. Data enters through connectors, gets shaped by a DCR, lands in tables that each carry a tier, and is mirrored down into the lake — all administered from the Defender portal.

01Standing it up

The order matters: two of these steps are effectively permanent, and the vendor quickstart front-loads the fun one and leaves the dangerous ones implied.

Sentinel isn't a resource you deploy so much as a capability you switch on over a Log Analytics workspace, which itself lives inside an active Azure subscription. That one fact drives most early mistakes, because a workspace is an Azure Monitor object first and a security object second — design it for the wrong master and you inherit its billing, retention, and access model for years.

1 Azure subscription 2 Dedicated Log Analytics workspace 3 Enable Sentinel 4 Attach to Defender portal 5 Scope RBAC resource group · Sentinel roles 6 Connectors + Content Hub region ≈ permanent — the lake must match it not subscription-wide SETUP CHAIN
Two of these are near-irreversible. Workspace topology and region (step 2) you live with for years — migration is an export-and-rebuild, and the data lake must sit in the same region as its primary workspace. RBAC (step 5) is part of setup, not a hardening pass you circle back to.

The step people skip conceptually is 4 — the Defender attach. As of 2026 the management experience lives in the Microsoft Defender portal (unified SecOps), and the standalone Azure-portal experience for Sentinel is being retired around July 2026. So a complete build is now two onboardings: stand up the workspace, then connect it to Defender. Teach it workspace-first and you're anchoring on "a SIEM you later connect to Defender"; the reverse framing is coming, but for now the honest order is workspace, then attach.

Scope RBAC to the resource group, not the subscription

The common miss: people lean on subscription-level Owner/Contributor, and suddenly anyone who administers anything in that subscription can read the security logs. Put the workspace in its own resource group, scope there, and reach for the Sentinel-specific roles (Reader / Responder / Contributor) — "can triage an incident" should never require "can delete the workspace." At an MSSP a scoping error crosses a client boundary, which is why this belongs in setup, not later.

02Getting data in — and shaping it before you pay

Connectors are the intake. The DCR is the sorting line — and it runs before the meter does.

Out-of-the-box data connectors pull from M365, Entra ID, Defender XDR, AWS/GCP, and syslog/CEF; anything bespoke comes in through the Logs Ingestion API or the Codeless Connector Platform. But the connector is just the dock. The piece that earns its keep is the Data Collection Rule (DCR) — a transformation and routing layer that runs at ingest, before the data is written and billed. It does two separable jobs: shape (drop noisy rows, trim or redact columns, enrich) and route (send the result to the right table — including a custom _CL table when the data doesn't fit a built-in schema).

// a DCR transform is just KQL over the incoming stream, aliased 'source'
source
| where not(EventID in (4662, 5145))          // drop known-noisy events at ingest
| project-away DebugBlob, RawXml               // trim columns you'll never hunt on
// what survives here is what you pay to ingest, retain, and mirror
RAW STREAM DCR transform at ingest (before billing) dropped — never billed, never recoverable ANALYTICS TIER high-signal → hot, real-time, drives detections DATA LAKE TIER high-volume → cold, cheap, kept for forensics
The split at ingest. A newer DCR capability routes the same stream two ways — the high-signal slice to Analytics, the high-volume remainder straight to the lake. This is the mechanism that makes "keep everything, but not everything hot" actually executable.

DCR filtering is the one irreversible knob

Retention answers "how long do I keep this row." DCR filtering answers "do I ever have it." Drop a field at the DCR and it was never written — no restore, no search job, nothing, because it never existed in storage. Filtering obvious junk is free money; over-filter and you've deleted the one column a future investigation needed. Treat "shape at ingest" as a decision you can't take back.

03Where it lives: tables, tiers, and retention

Every source writes to tables. Each table carries a plan that sets its cost, its query power, and the ceiling on how long you can keep it — and you set those per table, not once for the whole workspace.

The nuance worth stating precisely, because a lot of write-ups blur it: the tier and the retention period are related but separate knobs. The tier sets the rules of the game — cost, which KQL you can run, how fast, and the retention floor and ceiling. Retention is a value you then dial: a workspace-wide default, overridden per table. High-value detection tables stay Analytics with long interactive retention; a huge low-value table you keep only for compliance goes Basic or Auxiliary and ages out cheaply into long-term storage. Same workspace, different economics per table.

HOT — fast · expensive · real-time cost ↓ queryability ↓ ANALYTICS full KQL · powers analytics rules & hunting · 90-day interactive, extend to 2 yrs $$$ BASIC reduced KQL (no join/union/summarize) · per-query scan · 30-day interactive $$ AUXILIARY low-touch / compliance · single-table unoptimized KQL · 30-day interactive $ LONG-TERM (archive) not interactive — Search Jobs or Restore to read · up to 12 yrs ¢ DATA LAKE KQL jobs & notebooks · 6:1 compression · up to 12 yrs · not real-time ¢ COLD — slow · cheap · retention
The ladder. As you descend you trade query power and speed for cost. The art of a cheap, effective Sentinel is putting each table on the lowest rung that still lets you do the job that table exists for.
TierQuery powerInteractive retentionCost profilePut here
AnalyticsFull KQL; drives rules, alerts, hunting; real-time90 days with Sentinel; extend to 2 yrsPremium ingest + priciest retentionAuth, EDR/XDR alerts, TI — anything a rule reads
BasicReduced KQL (no join/union/summarize); per-GB query scan30 daysLow ingest; pay per queryHigh-volume logs you rarely touch but may need
AuxiliarySingle-table, unoptimized KQL; per-GB scan30 daysLowest ingest + cheap retentionVerbose / compliance / low-touch logs
Long-term (archive)Not interactive — Search Jobs / RestoreCheap storage; pay to restore or searchSame table, kept past the hot window
Data lake tierKQL jobs + notebooks; per-GB scan; not real-timeCheapest ingest & storage; 6:1 compression; to 12 yrsHigh-volume forensic / compliance data; long lookbacks

Cost bands are ratios, not quotes — per-GB rates vary by region, commitment tier, and date. Check the current Microsoft Sentinel pricing page before you budget.

04The lake, and the one place it actually saves money

The data lake is real architecture, not just a cheaper shelf — but the "save bucks" pitch hides a sleight of hand worth calling out.

When data lands in the Analytics tier it is mirrored to the lake automatically and simultaneously — one write, appears in both, same table name, and the mirror is free: no second ingestion charge, and the lake copy costs nothing to store while it's inside the analytics retention window. That reads like a free lunch, so here's the correction that makes the whole model click: the mirror is not net-new spend, so it is not where savings come from. If everything flows Analytics-first and mirrors down, your bill is just the Analytics bill — the lake changed nothing.

PATH A · Analytics-first data ANALYTICSpay ingest once · $$$ LAKE (mirror)FREE within retention → then cheap cold storage after the window verdict: this is RETENTION, not a discount — you already paid upstream PATH B · Lake-direct data LAKE (direct)cheap ingest + storage · day 1 COLD — no real-time rules against itper-GB scan every time you query verdict: the ONLY true ingestion saving — bought by going cold on that source Same write can appear in both tiers — but you pay Analytics once; the mirror rides along free.
The money diagram. Free mirroring is a retention benefit, not a discount. The lake lowers your bill in exactly one way: data you send straight to it and agree to keep cold — no real-time detection, and a per-GB scan charge whenever you do reach back for it.

So the lake doesn't make your data cheaper — it makes cold data cheaper. You save in exact proportion to how much you're willing to make invisible to live rules. And the trade is real: lake data supports full KQL through query jobs and Python through notebooks, but it can't back a real-time analytics rule, and every query meters by the gigabyte scanned. The uniform 6:1 compression is a big part of why "cheap cold storage for up to 12 years" is affordable rather than marketing — 600 GB of raw logs bills as roughly 100 GB stored.

The one-line model

You ingest once and pay once. Analytics mirrors to the lake for free, so mirroring is retention, not savings. The only true ingestion saving is data you send straight to the lake and agree to keep cold.

05So where should your logs go?

Everything above collapses into one routing decision you make per source. Here's the heuristic I actually use.

Notice the shape of it: your bill goes down in direct proportion to how much telemetry you're willing to make invisible to real-time detection. That's not a Sentinel quirk — it's the central tension of the whole platform, and it's why "just log everything to Analytics" and "put everything in the lake to save money" are both wrong. The skill is knowing, per source, which of coverage, speed, and cost you're spending and which one you're protecting.

The one-line model

Route by use, not by habit: hot data that fires rules goes to Analytics; high-volume data you keep for forensics and compliance goes to the lake; genuine noise dies at the DCR. Every table on the lowest rung that still does its job.

06Where this series goes next

That's the foundation: the data is in, shaped, stored on the right rung, and priced deliberately. But a warehouse full of well-sorted data still doesn't catch anyone — nothing here has fired a single alert yet. That's the next post. The arc:

Sources & further reading

Comments

Questions or corrections welcome. Sign in with GitHub to join the thread.