{"id":1258,"date":"2026-11-01T06:34:34","date_gmt":"2026-11-01T06:34:34","guid":{"rendered":"https:\/\/www.devopsschool.com\/tutorials\/?p=1258"},"modified":"2026-11-01T07:07:53","modified_gmt":"2026-11-01T07:07:53","slug":"microsoft-sentinel-essentials-one-complete-end-to-end-hands-on-lab-part-2","status":"publish","type":"post","link":"https:\/\/www.devopsschool.com\/tutorials\/microsoft-sentinel-essentials-one-complete-end-to-end-hands-on-lab-part-2\/","title":{"rendered":"Microsoft Sentinel Essentials: One Complete End-to-End Hands-On Lab &#8211; Part &#8211; 2"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">Module 1: Fundamentals \/ Essentials \/ Foundations | Day 1 and Day 2<\/h2>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\"><strong>Edition:<\/strong>&nbsp;1 November 2026<br><strong>Format:<\/strong>&nbsp;Two-day, instructor-led,&nbsp;<strong>day-wise<\/strong>&nbsp;practical manual; no hourly timetable<br><strong>Audience:<\/strong>&nbsp;New SOC analysts, security engineers, Azure administrators, DevOps\/SRE engineers, technical trainers<br><strong>Primary product experience:<\/strong>&nbsp;Microsoft Sentinel in the&nbsp;<strong>Microsoft Defender portal<\/strong>&nbsp;(<code>https:\/\/security.microsoft.com<\/code>)<br><strong>Azure provisioning:<\/strong>&nbsp;Azure portal (<code>https:\/\/portal.azure.com<\/code>)<br><strong>Scope:<\/strong>&nbsp;Exactly the Foundations curriculum, topic IDs&nbsp;<strong>F01\u2013F23<\/strong>. Intermediate correlation, DCR\/AMA\/CEF, custom workbooks, advanced hunting, SOAR playbooks, and enterprise deployment are left to Days 3\u20135.<br><strong>Evidence standard:<\/strong>&nbsp;Every hands-on lab has prerequisites, actions, observable pass\/fail checks, troubleshooting, and a learner deliverable.<br><strong>Source basis:<\/strong>&nbsp;User-provided&nbsp;<code>Microsoft_Sentinel_Module_1_Foundations_2_Days(3).md<\/code>, cross-checked against the official Microsoft documentation listed in&nbsp;<a href=\"https:\/\/file+.vscode-resource.vscode-cdn.net\/Users\/rajesh\/Downloads\/Microsoft_Sentinel_Days_1_2_Gold_Standard_Step_by_Step_Lab_Guide.md#official-microsoft-documentation-and-verification-log\">References<\/a>.<\/p>\n<\/blockquote>\n\n\n\n<h2 class=\"wp-block-heading\">Important validation and safety statement<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>This manual has been checked against the Microsoft Learn procedures and current documented UI paths as of 1 November 2026. It has&nbsp;<em>not<\/em>&nbsp;been executed inside your Azure subscription or Microsoft Entra tenant.<\/strong>&nbsp;Actual portal labels, regional availability, tenant policy, licensing, role assignment, data volume, and alert-correlation behavior must be verified using the explicit&nbsp;<strong>PASS gates<\/strong>&nbsp;below. Never mark an environment-specific step&nbsp;<strong>PASS<\/strong>&nbsp;merely because the command or page is documented.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">We distinguish four different kinds of proof throughout:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>DOC-VERIFIED:<\/strong>\u00a0The documented approach, prerequisite, or product behavior was checked against a linked Microsoft Learn page.<\/li>\n\n\n\n<li><strong>LAB-PASS:<\/strong>\u00a0Your learner actually performed the step, captured the required evidence, and met the observable acceptance criterion.<\/li>\n\n\n\n<li><strong>SIMULATED:<\/strong>\u00a0KQL examples use a local\u00a0<code>datatable<\/code>; they demonstrate query syntax and reasoning but\u00a0<strong>do not<\/strong>\u00a0ingest data, generate a real Sentinel alert, or create an incident.<\/li>\n\n\n\n<li><strong>BLOCKED:<\/strong>\u00a0An unavoidable permission, license, provisioning, policy, or data-source dependency prevents the live step. Record the blocker, use the approved fallback, and do\u00a0<strong>not<\/strong>\u00a0claim a live pass.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Non-negotiable guardrails:<\/strong>&nbsp;Use a dedicated approved training subscription or isolated test resource group. Obtain the owner\/security team&#8217;s written authorization before creating Azure Policy assignments, diagnostic settings, connectors, Sentinel rules, or incident workflow changes. Do not connect production identities, copy confidential logs, disable actual defenses, create false malicious events, or configure disruptive automated response. In particular, do&nbsp;<strong>not<\/strong>&nbsp;grant Owner to every learner to make the exercises easier. No exercises require passwords, tokens, API keys, or real attack execution.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">1. How to use this complete manual<\/h1>\n\n\n\n<h2 class=\"wp-block-heading\">1.1 End-to-end outcome<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">After&nbsp;<strong>Day 1<\/strong>, the learner can explain how security telemetry reaches Sentinel, deploy or access a correctly scoped workspace, navigate Sentinel through the Defender portal, and prove that an approved Azure Activity event arrived. After&nbsp;<strong>Day 2<\/strong>, they can examine records and timestamps, use beginner KQL, install and inspect built-in content, enable a supported scheduled rule, investigate a controlled alert\/incident, interpret a workbook, and complete a structured first-line SOC report.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The&nbsp;<em>same<\/em>&nbsp;fictional organization and activity flow are used across both days so the learner develops a consistent mental model rather than jumping between unrelated demos.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">1.2 Course structure and lab navigation<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th class=\"has-text-align-left\" data-align=\"left\">Day<\/th><th class=\"has-text-align-left\" data-align=\"left\">Lab ID<\/th><th class=\"has-text-align-left\" data-align=\"left\">Activity<\/th><th class=\"has-text-align-left\" data-align=\"left\">Key topic IDs<\/th><th class=\"has-text-align-left\" data-align=\"left\">Primary evidence<\/th><\/tr><\/thead><tbody><tr><td>1<\/td><td>D1-L01<\/td><td>SOC event-to-incident tabletop and 5W1H<\/td><td>F01\u2013F06<\/td><td>5W1H\/SOC roles worksheet<\/td><\/tr><tr><td>1<\/td><td>D1-L02<\/td><td>Draw and defend the Sentinel architecture<\/td><td>F07\u2013F08<\/td><td>Architecture diagram with boundaries<\/td><\/tr><tr><td>1<\/td><td>D1-L03<\/td><td>Tenant, subscription, permissions, and cost preflight<\/td><td>F08\u2013F10<\/td><td>Approved environment readiness record<\/td><\/tr><tr><td>1<\/td><td>D1-L04<\/td><td>Create a dedicated Log Analytics workspace<\/td><td>F09, F11<\/td><td>Workspace resource proof<\/td><\/tr><tr><td>1<\/td><td>D1-L05<\/td><td>Enable Sentinel and confirm the Defender portal<\/td><td>F11<\/td><td>Workspace and Defender proof<\/td><\/tr><tr><td>1<\/td><td>D1-L06<\/td><td>Install the Azure Activity solution<\/td><td>F12; foundations for F16<\/td><td>Solution install evidence<\/td><\/tr><tr><td>1<\/td><td>D1-L07<\/td><td>Connect Azure Activity using the approved method<\/td><td>F12<\/td><td>Export\/connector configuration<\/td><\/tr><tr><td>1<\/td><td>D1-L08<\/td><td>Generate safe telemetry and confirm ingestion<\/td><td>F12<\/td><td>Source and destination event match<\/td><\/tr><tr><td>2<\/td><td>D2-L01<\/td><td>Explore real log records and table fields<\/td><td>F13, F15<\/td><td>Record worksheet<\/td><\/tr><tr><td>2<\/td><td>D2-L02<\/td><td>KQL fundamentals, filtering, counting, and timelines<\/td><td>F14\u2013F15<\/td><td>Executed query pack<\/td><\/tr><tr><td>2<\/td><td>D2-L03<\/td><td>Offline synthetic KQL safety net<\/td><td>F14<\/td><td>Marked simulated results<\/td><\/tr><tr><td>2<\/td><td>D2-L04<\/td><td>Content hub and starter analytics-rule template<\/td><td>F16\u2013F17<\/td><td>Rule prerequisites and active rule<\/td><\/tr><tr><td>2<\/td><td>D2-L05<\/td><td>Verify the actual alert path using a controlled lab rule<\/td><td>F17\u2013F18<\/td><td>Rule \u2192 alert \u2192 incident evidence<\/td><\/tr><tr><td>2<\/td><td>D2-L06<\/td><td>Triage, classify, and escalate the lab incident<\/td><td>F18\u2013F20, F22<\/td><td>Complete SOC incident record<\/td><\/tr><tr><td>2<\/td><td>D2-L07<\/td><td>Interpret a built-in workbook<\/td><td>F21<\/td><td>Answered visualization questions<\/td><\/tr><tr><td>2<\/td><td>D2-L08<\/td><td>Troubleshooting challenge and operational checklist<\/td><td>F22\u2013F23<\/td><td>Root-cause worksheet<\/td><\/tr><tr><td>2<\/td><td>D2-L09<\/td><td>Foundations capstone and entry check for Day 3<\/td><td>F01\u2013F23<\/td><td>Graded evidence folder<\/td><\/tr><tr><td>Both<\/td><td>END-L01<\/td><td>Safe cleanup, cost review, handoff<\/td><td>F09, F22\u2013F23<\/td><td>Signed cleanup record<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Content note:<\/strong>&nbsp;D2-L05 is a&nbsp;<em>controlled demonstration fallback<\/em>, not a new intermediate-level custom-detection engineering module. Its purpose is to show that alerts and incidents actually work if a generic solution template does not match your harmless test event. Complex detection logic, tuning and correlation remain in Day 3.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">1.3 5W1H learning contract<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th class=\"has-text-align-left\" data-align=\"left\">Lens<\/th><th class=\"has-text-align-left\" data-align=\"left\">Day 1 learner must answer<\/th><th class=\"has-text-align-left\" data-align=\"left\">Day 2 learner must answer<\/th><\/tr><\/thead><tbody><tr><td><strong>What<\/strong><\/td><td>What are a SIEM, SOAR, XDR, event, alert, incident, workspace?<\/td><td>What are KQL, analytics templates, cases\/incidents, workbooks?<\/td><\/tr><tr><td><strong>Why<\/strong><\/td><td>Why centralize audit telemetry and maintain SOC ownership?<\/td><td>Why query and verify raw evidence before alerting or escalation?<\/td><\/tr><tr><td><strong>Who<\/strong><\/td><td>Who deploys, administers, reads, triages, and approves changes?<\/td><td>Who owns a rule, handles an alert, and closes a case?<\/td><\/tr><tr><td><strong>When<\/strong><\/td><td>When do we onboard a source or use a SIEM instead of a dashboard?<\/td><td>When do we query, alert, escalate, or close?<\/td><\/tr><tr><td><strong>Where<\/strong><\/td><td>Where do subscription logs, Log Analytics, and Defender navigation live?<\/td><td>Where do rule templates, records, alerts, incidents, and workbooks live?<\/td><\/tr><tr><td><strong>How<\/strong><\/td><td>How does an Azure Activity event reach the workspace?<\/td><td>How do&nbsp;<code>where<\/code>&nbsp;\u2192 detection threshold \u2192 alert \u2192 incident \u2192 disposition work?<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">1.4 Learning environment patterns \u2014 select&nbsp;<em>one<\/em>&nbsp;before class<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th class=\"has-text-align-left\" data-align=\"left\">Pattern<\/th><th class=\"has-text-align-left\" data-align=\"left\">Requirements<\/th><th class=\"has-text-align-left\" data-align=\"left\">Appropriate use<\/th><th class=\"has-text-align-left\" data-align=\"left\">Evidence claim<\/th><\/tr><\/thead><tbody><tr><td><strong>A. Full live lab<\/strong>&nbsp;(preferred)<\/td><td>Approved Azure subscription; live Sentinel workspace; Azure Activity export; authorized instructor\/learners<\/td><td>All provisioning, ingestion, and alert\/incident labs<\/td><td>End-to-end&nbsp;<strong>LAB-PASS<\/strong>&nbsp;if gates all pass<\/td><\/tr><tr><td><strong>B. Shared instructor-managed lab<\/strong><\/td><td>One instructor-owned workspace and solution; least-privilege learner access; instructor executes privileged actions<\/td><td>Organizations unable to grant create\/policy privileges to students<\/td><td>Learners can pass queries\/triage; infrastructure setup may be&nbsp;<strong>observed<\/strong><\/td><\/tr><tr><td><strong>C. Offline KQL and evidence simulation<\/strong><\/td><td>A query-capable Kusto\/Log Analytics environment supporting&nbsp;<code>datatable<\/code>&nbsp;or instructor-approved example output<\/td><td>No subscription, access, or connector permission<\/td><td>Only syntax and analysis stages are&nbsp;<strong>SIMULATED<\/strong>; no claim of live Sentinel operations<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Strong recommendation:<\/strong>&nbsp;For a real instructor qualification, use Pattern A or B; a completely offline lab cannot satisfy the hands-on deployment\/ingestion\/incident progression gate.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">2. Instructor preparation \u2014 do this before learners begin<\/h1>\n\n\n\n<h2 class=\"wp-block-heading\">2.1 The fictional case: Aster Retail<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Aster Retail has an Azure subscription hosting internal applications. The security team wants an auditable trail of Azure control-plane changes. The lab creates or modifies&nbsp;<strong>only harmless, preapproved Azure training resources<\/strong>. Every learner receives a unique resource prefix so that a simulated incident can be identified without confusing it with another student&#8217;s work.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Sample names \u2014 replace before use:<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th class=\"has-text-align-left\" data-align=\"left\">Item<\/th><th class=\"has-text-align-left\" data-align=\"left\">Example<\/th><th class=\"has-text-align-left\" data-align=\"left\">Rule<\/th><\/tr><\/thead><tbody><tr><td>Tenant<\/td><td><code>&lt;TRAINING-TENANT&gt;<\/code><\/td><td>Record the actual tenant selected in the portal<\/td><\/tr><tr><td>Subscription<\/td><td><code>&lt;TRAINING-SUBSCRIPTION-ID&gt;<\/code><\/td><td>Never assume the default Azure CLI or portal subscription is correct<\/td><\/tr><tr><td>Resource group<\/td><td><code>rg-sentinel-foundations-lab01<\/code><\/td><td>Instructor-created, clearly tagged, no production resources<\/td><\/tr><tr><td>Log Analytics workspace<\/td><td><code>law-sentinel-foundations-lab01<\/code><\/td><td>Must meet workspace name\/region restrictions<\/td><\/tr><tr><td>Activity signal group<\/td><td><code>rg-sentinel-signal-lab01<\/code><\/td><td><em>Separate<\/em>&nbsp;small RG used only to create benign activity events<\/td><\/tr><tr><td>Demo analytics rule<\/td><td><code>LAB01 - Approved Azure Activity Test<\/code><\/td><td>Must be disabled\/deleted at teardown<\/td><\/tr><tr><td>Instructor<\/td><td><code>&lt;INSTRUCTOR-UPN&gt;<\/code><\/td><td>Never put a personal email into published lab screenshots<\/td><\/tr><tr><td>Evidence path<\/td><td><code>Day01\/<\/code>,&nbsp;<code>Day02\/<\/code>,&nbsp;<code>Assessment\/<\/code>,&nbsp;<code>Cleanup\/<\/code><\/td><td>Local or institution-approved storage only<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Naming hygiene:<\/strong>&nbsp;Do not blindly reuse the same names when more than one learner shares the subscription; assign a unique short suffix (such as&nbsp;<code>lab01<\/code>,&nbsp;<code>lab02<\/code>) and confirm name availability. For rule queries that contain a sample name, the learner must replace it with their actual unique name.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">2.2 Prerequisites matrix: exact operational separation<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th class=\"has-text-align-left\" data-align=\"left\">Persona<\/th><th class=\"has-text-align-left\" data-align=\"left\">Access to request<\/th><th class=\"has-text-align-left\" data-align=\"left\">Scope<\/th><th class=\"has-text-align-left\" data-align=\"left\">Used for<\/th><th class=\"has-text-align-left\" data-align=\"left\">Verification<\/th><\/tr><\/thead><tbody><tr><td><strong>Instructor \/ provisioner<\/strong><\/td><td>Subscription&nbsp;<strong>Contributor<\/strong>&nbsp;or equivalent for Sentinel enablement; permissions to create RG\/workspace<\/td><td>Approved training subscription<\/td><td>D1-L04\/05<\/td><td>Successful deployment and Sentinel addition<\/td><\/tr><tr><td><strong>Instructor \/ onboarding approver<\/strong><\/td><td>Appropriate Microsoft Entra administrator role and&nbsp;<strong>unconditional subscription Owner<\/strong>, or supported alternative&nbsp;<strong>User Access Administrator + Sentinel Contributor<\/strong>, per Defender onboarding documentation<\/td><td>Tenant + specified subscription<\/td><td>Manual Defender portal connection&nbsp;<strong>when required<\/strong><\/td><td>Workspace visible in Defender<\/td><\/tr><tr><td><strong>Policy approver<\/strong><\/td><td><strong>Owner at Azure Policy assignment scope<\/strong>, per the Azure Activity policy-driven connector guidance<\/td><td>Training subscription\/scope<\/td><td>D1-L07 Policy route<\/td><td>Policy assignment exists and is effective<\/td><\/tr><tr><td><strong>Security content engineer<\/strong><\/td><td><strong>Microsoft Sentinel Contributor<\/strong>, preferably scoped to Sentinel RG<\/td><td>Sentinel workspace RG<\/td><td>Content hub install \/ analytics rule creation<\/td><td>Can install solution and save rule<\/td><\/tr><tr><td><strong>SOC analyst \/ learner<\/strong><\/td><td><strong>Microsoft Sentinel Responder<\/strong>&nbsp;for incident modification;&nbsp;<strong>Reader<\/strong>&nbsp;only for read-only log review<\/td><td>Sentinel RG\/workspace as permitted<\/td><td>KQL, incident investigation<\/td><td>Can view records and update assigned lab incident<\/td><\/tr><tr><td><strong>Workbook viewer<\/strong><\/td><td>Workbook Reader or appropriate equivalent; creation\/editing requires appropriate Workbook Contributor privileges as documented<\/td><td>Workbook\/Sentinel RG<\/td><td>D2-L07<\/td><td>Opens installed workbook<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Do not confuse:<\/strong>&nbsp;Azure resource roles, Microsoft Entra admin roles, and Microsoft Defender unified RBAC permissions are different security systems. Preview&nbsp;<strong>incident cases<\/strong>&nbsp;can additionally require Defender unified RBAC&nbsp;<code>Security Data Read<\/code>&nbsp;\/&nbsp;<code>Security Data Manage<\/code>. Only grant an entitlement after the instructor or Azure administrator has verified the exact task at the intended scope. See [R02], [R03], [R07], [R13].<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Instructor readiness checklist (mandatory)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>[ ] Written permission to use the subscription and enable Sentinel obtained.<\/li>\n\n\n\n<li>[ ] Tenant and subscription IDs recorded; no cross-tenant confusion.<\/li>\n\n\n\n<li>[ ] Training region approved for organizational location\/residency policy.<\/li>\n\n\n\n<li>[ ] Unique RG\/workspace\/signal RG names assigned.<\/li>\n\n\n\n<li>[ ] Cloud costs and quotas approved; budget owner identified.<\/li>\n\n\n\n<li>[ ] Provisioner, policy approver, engineer, and analyst roles confirmed.<\/li>\n\n\n\n<li>[ ] Defender portal onboarding permissions confirmed, if manual onboarding is needed.<\/li>\n\n\n\n<li>[ ] Existing Azure Activity diagnostic settings\/policy assignments checked to avoid duplicate export.<\/li>\n\n\n\n<li>[ ] Existing Sentinel workspaces and data connector instances inventoried to avoid interfering with them.<\/li>\n\n\n\n<li>[ ] A backup learning path is approved: instructor workspace or synthetic KQL + sample evidence.<\/li>\n\n\n\n<li>[ ] Learners can reach\u00a0<code>portal.azure.com<\/code>\u00a0and\u00a0<code>security.microsoft.com<\/code>\u00a0through approved browser\/network access.<\/li>\n\n\n\n<li>[ ] A clean incident\/test naming convention and cleanup owner assigned.<\/li>\n\n\n\n<li>[ ] End-of-course evidence folder prepared, with controlled access and retention.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>PASS gate PRE-1:<\/strong>&nbsp;Instructor signs the checklist and writes&nbsp;<code>READY<\/code>&nbsp;\/&nbsp;<code>BLOCKED<\/code>&nbsp;beside each dependency; do not let students begin Azure Policy assignment without approval.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">2.3 Cost and lifecycle planning (do not assume \u201cfree\u201d)<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Review Microsoft Sentinel billing in [R04]. Microsoft documents a\u00a0<strong>31-day trial for up to the first 10 GB\/day of Analytics-tier ingestion<\/strong>, subject to conditions including a per-tenant workspace limit; do not assume the trial applies to a previously enabled workspace or to all ancillary services.<\/li>\n\n\n\n<li>Microsoft separately documents that\u00a0<strong>Azure Activity log ingestion<\/strong>\u00a0to a Log Analytics workspace is not charged for ingestion; retention beyond the default included duration can incur charges.\u00a0<strong>Do not generalize this exception to other telemetry.<\/strong>\u00a0[R06]<\/li>\n\n\n\n<li>Review workspace data-retention configuration and organizational policy. Microsoft&#8217;s Sentinel quickstart recommends checking\/raising legacy 30-day retention to 90 days when needed for full Sentinel features. Do not change retention in a shared workspace without approval. [R01]<\/li>\n\n\n\n<li>In Azure portal, open\u00a0<strong>Cost Management + Billing<\/strong>\u00a0(or the delegated subscription&#8217;s\u00a0<strong>Cost Management<\/strong>\u00a0view), inspect subscription budgets and cost alerts, and record the approved cost ceiling. A budget is\u00a0<strong>not<\/strong>\u00a0an automatic hard spending cap.<\/li>\n\n\n\n<li>Do not create paid infrastructure merely to generate events: training RG creation and tagging are enough for the Azure Activity teaching scenario.<\/li>\n\n\n\n<li>At the end of the class, disable\/delete temporary rule(s), remove the synthetic signal group, and review which Sentinel workspace\/connector\/configuration must be retained or removed.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Recommended cost ledger fields:<\/strong>&nbsp;<code>UTC date | Subscription | RG | Workspace | New Azure resource | Data source | Approval | Retention | Expected charge type | Cleanup owner | Actual cost reviewed<\/code>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">2.4 Recording actual results<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Use this same concise form for&nbsp;<strong>every<\/strong>&nbsp;lab:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Lab ID:                 D1-LXX \/ D2-LXX\nLearner \/ group:        __________________\nUTC start \/ end:        __________________\nTenant \/ subscription:  __________________ (redact in shared materials)\nWorkspace \/ region:     __________________\nActions completed:      __________________\nObserved result:        __________________\nEvidence filename(s):   __________________\nStatus:                 LAB-PASS \/ SIMULATED \/ BLOCKED \/ NEEDS-RETRY\nError \/ diagnostic:     __________________\nReviewer signature:     __________________\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Screenshots:<\/strong>&nbsp;Include the browser page title and the relevant row\/data fields; remove secret identifiers, tokens, other users&#8217; data, and unrelated production resources. Redaction must not hide the exact signal or configuration that proves the acceptance criterion.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">DAY 1 \u2014 Fundamentals, Architecture, Setup, and First Data<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Day 1 goal:<\/strong>&nbsp;Explain the platform with 5W1H, demonstrate understanding of its architecture and security roles, then provide actual evidence that benign Azure administration telemetry is reaching Sentinel.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">D1-L01 \u2014 SOC fundamentals, responsibilities, and the 5W1H tabletop<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Syllabus:<\/strong>&nbsp;F01, F02, F03, F04, F05, F06.<br><strong>Type:<\/strong>&nbsp;Tabletop; no Azure permissions needed.<br><strong>Deliverable:<\/strong>&nbsp;<code>Day01\/D1-L01-SOC-Worksheet.md<\/code>&nbsp;(learner-authored).<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Concepts the learner needs&nbsp;<em>before<\/em>&nbsp;clicking anything<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Security event:<\/strong>\u00a0An observed action (for example, creating an Azure resource group).<\/li>\n\n\n\n<li><strong>Telemetry\/log:<\/strong>\u00a0Recorded event data describing actor, resource, time, action, status, and source.<\/li>\n\n\n\n<li><strong>SIEM:<\/strong>\u00a0Security information\/event management \u2014 collects, queries, correlates, detects, and supports investigation of security data.<\/li>\n\n\n\n<li><strong>SOAR:<\/strong>\u00a0Security orchestration, automation and response \u2014 coordinates predefined investigative\/response actions, often involving workflows and approvals.<\/li>\n\n\n\n<li><strong>EDR\/XDR:<\/strong>\u00a0Endpoint detection\/response and extended detection\/response; complementary to SIEM, not interchangeable with a raw-log datastore.<\/li>\n\n\n\n<li><strong>Detection\/analytic rule:<\/strong>\u00a0Logic that tests records for an interesting condition.<\/li>\n\n\n\n<li><strong>Alert:<\/strong>\u00a0A detection result indicating something requires attention. An alert is\u00a0<strong>not<\/strong>\u00a0proof of a compromise.<\/li>\n\n\n\n<li><strong>Incident:<\/strong>\u00a0An investigation container grouping one or more relevant alerts and evidence; a security conclusion requires analyst assessment.<\/li>\n\n\n\n<li><strong>False positive \/ expected test activity:<\/strong>\u00a0An alert that does not correspond to the harmful activity the rule is intended to find; document the exact disposition used.<\/li>\n\n\n\n<li><strong>Response:<\/strong>\u00a0Authorized steps to document, contain, recover, and follow up; Day 1\u20132 permits only documentation and harmless incident administration.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Guided steps<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Write a\u00a0<strong>single sentence<\/strong>\u00a0defining the business purpose of the SOC. Example: \u201cDetect, verify, prioritize, investigate, and coordinate response to important security events.\u201d<\/li>\n\n\n\n<li>Write a six-line answer for\u00a0<strong>What \/ Why \/ Who \/ When \/ Where \/ How<\/strong>\u00a0for Microsoft Sentinel using the terms above.<\/li>\n\n\n\n<li>Your instructor describes this scenario: \u201cA new Azure resource group appears at 10:25 UTC. The creator was a known administrator.\u201d Decide whether this alone is a\u00a0<em>log<\/em>,\u00a0<em>alert<\/em>,\u00a0<em>incident<\/em>, or\u00a0<em>confirmed threat<\/em>. Explain why the event by itself is\u00a0<strong>not<\/strong>\u00a0evidence of malicious activity.<\/li>\n\n\n\n<li>Write a simple escalation chain:\u00a0<code>Platform admin \u2192 SOC L1 \u2192 SOC L2\/Incident commander \u2192 Service owner<\/code>, and assign a typical responsibility to each role.<\/li>\n\n\n\n<li>Compare these options in a short table: Azure Monitor Logs without Sentinel, Sentinel SIEM, an EDR product, a vendor-operated traditional SIEM, and a spreadsheet or ticket queue.<\/li>\n\n\n\n<li>List\u00a0<strong>two advantages<\/strong>\u00a0(for example, centralized analytics and integrated cloud collection) and\u00a0<strong>two limitations<\/strong>\u00a0(for example, data\/retention costs and dependency on data quality plus analyst response processes).<\/li>\n\n\n\n<li>Have another learner challenge your definition of \u201cincident\u201d and your decision to escalate. Correct any assumption that \u201cevery admin action is malicious.\u201d<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">Expected answer check<\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th class=\"has-text-align-left\" data-align=\"left\">Question<\/th><th class=\"has-text-align-left\" data-align=\"left\">Passing response<\/th><\/tr><\/thead><tbody><tr><td>Why not alert on every Azure change?<\/td><td>That creates noise; baseline\/context and intended behavior matter.<\/td><\/tr><tr><td>Who should install connectors?<\/td><td>Authorized engineer\/administrator, not a reader-only analyst.<\/td><\/tr><tr><td>What does Sentinel add to raw Log Analytics?<\/td><td>Security content, detection\/incident workflows and SOC experiences.<\/td><\/tr><tr><td>Where is today&#8217;s primary UI?<\/td><td>Microsoft Defender portal; Azure still provisions the workspace.<\/td><\/tr><tr><td>What happens after an alert?<\/td><td>Investigate evidence, choose disposition, document and escalate when justified.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>PASS gate D1-01:<\/strong>&nbsp;All six 5W1H prompts addressed, comparison completed, roles assigned, and event\/alert\/incident correctly distinguished.&nbsp;<strong>Common mistake:<\/strong>&nbsp;Treating XDR, SIEM, SOAR, incident ticketing, and Log Analytics as identical products.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">D1-L02 \u2014 Draw the core Sentinel architecture<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Syllabus:<\/strong>&nbsp;F07, F08.&nbsp;<strong>Type:<\/strong>&nbsp;Architecture exercise.&nbsp;<strong>Deliverable:<\/strong>&nbsp;<code>Day01\/D1-L02-Architecture.md<\/code>&nbsp;or a diagram image made by the learner.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Reference architecture \u2014 teach the arrows, not just boxes<\/h3>\n\n\n\n<pre class=\"wp-block-preformatted\">Azure subscriptions \/ and other approved sourcesConnectors and \/ diagnostic exportLog Analytics workspace \/ AzureActivity tableSentinel detection content \/ Analytics rulesSecurity alertsIncident investigation \/ in Microsoft DefenderKQL hunting and \/ workbooksAnalyst disposition \/ and escalation<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Clarification:<\/strong>&nbsp;This is a&nbsp;<strong>logical<\/strong>&nbsp;view. Actual Microsoft components may share platform services; it is not a network diagram showing independently deployed VMs. Security data in separate Sentinel workspaces is not automatically one merged table.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Guided steps<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Draw all seven logical elements, including a boundary around the\u00a0<strong>Azure subscription<\/strong>, a boundary around the\u00a0<strong>Microsoft Entra tenant<\/strong>, and a boundary around the\u00a0<strong>Log Analytics workspace<\/strong>.<\/li>\n\n\n\n<li>Identify the source for the teaching case:\u00a0<em>Azure Activity (subscription control-plane activity)<\/em>, not VM guest logs or Azure resource data-plane logs.<\/li>\n\n\n\n<li>Label the actual destination table\u00a0<strong><code>AzureActivity<\/code><\/strong>\u00a0and the time field\u00a0<strong><code>TimeGenerated<\/code><\/strong>.<\/li>\n\n\n\n<li>Label the configuration UI\u00a0<strong>Azure portal<\/strong>, security operations UI\u00a0<strong>Defender portal<\/strong>, and the data store\u00a0<strong>Log Analytics workspace<\/strong>.<\/li>\n\n\n\n<li>Put a lock\/role icon beside the\u00a0<strong>policy export<\/strong>,\u00a0<strong>rule authoring<\/strong>, and\u00a0<strong>incident editing<\/strong>\u00a0arrows; each has different required permissions.<\/li>\n\n\n\n<li>Trace one event:\u00a0<code>create\/tag lab resource \u2192 Azure Activity log \u2192 configured diagnostic export \u2192 workspace AzureActivity \u2192 KQL \u2192 optional scheduled rule \u2192 alert \u2192 incident<\/code>.<\/li>\n\n\n\n<li>Explain what happens if the connector is configured but the source has produced\u00a0<strong>zero<\/strong>\u00a0matching events; then explain what happens if an analytics rule query returns\u00a0<strong>zero<\/strong>\u00a0rows.<\/li>\n\n\n\n<li>Have the instructor hide one arrow. Learner identifies which downstream capability will fail and what evidence to check first.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>PASS gate D1-02:<\/strong>&nbsp;Diagram contains source, connector, workspace, table, detection, alerts, incident, analyst, portals, and access boundary. Learner can identify three common points of failure:&nbsp;<strong>no export<\/strong>,&nbsp;<strong>wrong workspace<\/strong>,&nbsp;<strong>rule has no matches<\/strong>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">D1-L03 \u2014 Identify the actual tenant, subscription, region, access, and constraints<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Syllabus:<\/strong>&nbsp;F08\u2013F10.&nbsp;<strong>Type:<\/strong>&nbsp;Azure portal preflight.&nbsp;<strong>Prerequisite:<\/strong>&nbsp;Instructor-approved account, subscription access.<br><strong>Deliverable:<\/strong>&nbsp;<code>Day01\/D1-L03-Environment-Readiness.md<\/code>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Step-by-step<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Open\u00a0<code>https:\/\/portal.azure.com<\/code>\u00a0using the approved training account.<\/li>\n\n\n\n<li>Check the\u00a0<strong>current directory \/ tenant<\/strong>\u00a0in the account selector. If multiple directories are visible, explicitly switch to the instructor-approved one. Record\u00a0<strong>tenant display name<\/strong>\u00a0and\u00a0<strong>tenant ID<\/strong>\u00a0in private evidence.<\/li>\n\n\n\n<li>In Azure portal search, type\u00a0<strong>Subscriptions<\/strong>\u00a0and open the approved training subscription; copy the\u00a0<strong>subscription name\/ID<\/strong>\u00a0into the private readiness form.<\/li>\n\n\n\n<li>Open\u00a0<strong>Subscriptions \u2192 [training subscription] \u2192 Access control (IAM) \u2192 View my access<\/strong>\u00a0(or the equivalent available access view). Record what this account can actually do.\u00a0<strong>Seeing a subscription does not mean you can create resources or grant roles.<\/strong><\/li>\n\n\n\n<li>Check the proposed region&#8217;s policy, residency requirements, and availability before creating the workspace. Record region and justification.\u00a0<strong>Do not move an existing Sentinel workspace between subscriptions\/RGs as a lab task<\/strong>; Microsoft documents this as unsupported for a Sentinel-enabled workspace. [R01]<\/li>\n\n\n\n<li>Under the same subscription, review the existing\u00a0<strong>Resource groups<\/strong>\u00a0list; verify no resources will be changed by name collision.<\/li>\n\n\n\n<li>Check if a workspace is already supplied by the instructor. If yes, record its name, RG, region, and permissions; do\u00a0<strong>not<\/strong>\u00a0create a second one unless approved.<\/li>\n\n\n\n<li>Ask the instructor\/provisioner to demonstrate that they can create resources and approve Policy\/Defender onboarding where required. Do not request a standing subscription Owner grant for learners.<\/li>\n\n\n\n<li>Open the subscription&#8217;s\u00a0<strong>Cost Management<\/strong>\u00a0page. Record budget owner, threshold and who will watch costs. Document that a budget alert is informational, not a spending stop.<\/li>\n\n\n\n<li>Verify browsers can access both Microsoft portals; if the Defender portal opens but Sentinel is absent, record that as an\u00a0<em>onboarding\/permission state<\/em>, not as proof that Sentinel is broken.<\/li>\n\n\n\n<li>Confirm the\u00a0<strong>unique suffix<\/strong>\u00a0to be used for lab resources and test rules; do not begin provisioning until instructor sign-off.<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">Preflight evidence record<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>Training directory\/tenant:      __________________\nTraining subscription:          __________________\nApproved Azure region:          __________________\nSentinel resource group:        __________________\nWorkspace (existing or new):    __________________\nSignal resource group:          __________________\nWorkspace creation approval:    Yes \/ No\nAzure Policy export approver:   __________________\nContent Hub\/rule editor:        __________________\nAnalyst\/incident editor:        __________________\nExpected cost policy:          __________________\nDefender portal ready:         Yes \/ No \/ Not yet\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>PASS gate D1-03:<\/strong>&nbsp;The&nbsp;<strong>actual<\/strong>&nbsp;tenant, subscription, workspace\/RG plan, region, required role owners, cost owner, and clean name prefix are recorded.&nbsp;<strong>STOP<\/strong>&nbsp;if either environment or permission scope is uncertain.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">D1-L04 \u2014 Create a Log Analytics workspace, or validate the instructor&#8217;s workspace<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Syllabus:<\/strong>&nbsp;F09, F11.&nbsp;<strong>Type:<\/strong>&nbsp;Live provisioning.&nbsp;<strong>Authorization:<\/strong>&nbsp;Approved provisioner.&nbsp;<strong>DOC-VERIFIED:<\/strong>&nbsp;[R01], [R02].<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Branch A \u2014 new isolated workspace (preferred for a provisioning class)<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>In Azure portal, search\u00a0<strong>Microsoft Sentinel<\/strong>.<\/li>\n\n\n\n<li>Select\u00a0<strong>Create<\/strong>. If a suitable workspace does not exist, select\u00a0<strong>Create a new workspace<\/strong>. The provisioning UI may lead into the Log Analytics workspace creation experience.<\/li>\n\n\n\n<li>Select the approved\u00a0<strong>subscription<\/strong>.<\/li>\n\n\n\n<li>Under\u00a0<strong>Resource group<\/strong>, create or choose the preapproved lab RG, e.g.\u00a0<code>rg-sentinel-foundations-lab01<\/code>.<\/li>\n\n\n\n<li>Enter a unique\u00a0<strong>Log Analytics workspace name<\/strong>, e.g.\u00a0<code>law-sentinel-foundations-lab01<\/code>.<\/li>\n\n\n\n<li>Choose the instructor-approved\u00a0<strong>Azure region<\/strong>; verify it matches the lab plan and residency requirements.<\/li>\n\n\n\n<li>Select\u00a0<strong>Review + Create<\/strong>, review subscription, RG, name, region and any pricing\/retention settings, then\u00a0<strong>Create<\/strong>.<\/li>\n\n\n\n<li>Wait for deployment success, and open\u00a0<strong>Log Analytics workspaces \u2192 [workspace] \u2192 Overview<\/strong>.<\/li>\n\n\n\n<li>Record the\u00a0<strong>workspace name, region, RG, subscription<\/strong>. Take screenshot\u00a0<code>D1-L04-Workspace-Overview.png<\/code>.<\/li>\n\n\n\n<li>Check the workspace&#8217;s data retention settings with the instructor. If legacy defaults conflict with the intended Sentinel training, obtain approval and configure an appropriate retention period following the current Microsoft instructions.\u00a0<strong>Do not automatically change enterprise retention policy.<\/strong><\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">Branch B \u2014 supplied workspace (shared lab)<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Open\u00a0<strong>Log Analytics workspaces<\/strong>\u00a0and select the provided workspace.<\/li>\n\n\n\n<li>Verify name, RG, region and subscription match the instructor sheet.<\/li>\n\n\n\n<li>Verify read\/write rights according to the action the learner will perform; if read-only, provisioning is\u00a0<strong>observed<\/strong>\u00a0and later labs use the already configured source.<\/li>\n\n\n\n<li>Record that the workspace was\u00a0<strong>pre-existing<\/strong>\u00a0and whether Sentinel is already enabled.<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">Validation checklist<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>[ ] Workspace resource exists and is in the\u00a0<em>intended<\/em>\u00a0subscription\/RG.<\/li>\n\n\n\n<li>[ ] Region matches approved plan.<\/li>\n\n\n\n<li>[ ] Provisioner can view the workspace overview without deployment errors.<\/li>\n\n\n\n<li>[ ] No collision with production workspace; no unintended existing configuration modified.<\/li>\n\n\n\n<li>[ ] Retention decisions reviewed; no unapproved changes.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>PASS gate D1-04:<\/strong>&nbsp;Workspace successfully provisioned or an approved existing workspace identified and verified.&nbsp;<strong>Error branches:<\/strong>&nbsp;\u201cNot authorized\u201d \u2192 role\/scope admin; \u201cregion not supported\u201d \u2192 use approved alternate; deployment denied by policy \u2192 show denial details to policy admin; workspace not found \u2192 wrong subscription or directory.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">D1-L05 \u2014 Enable Microsoft Sentinel and verify Microsoft Defender access<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Syllabus:<\/strong>&nbsp;F11.&nbsp;<strong>Type:<\/strong>&nbsp;Live onboarding.&nbsp;<strong>DOC-VERIFIED:<\/strong>&nbsp;[R01], [R03].<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Step A \u2014 Add Sentinel to the workspace<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>In Azure portal, search and open\u00a0<strong>Microsoft Sentinel<\/strong>.<\/li>\n\n\n\n<li>Select\u00a0<strong>Create<\/strong>\u00a0(or the option to add a workspace).<\/li>\n\n\n\n<li>Find the workspace from D1-L04. If it does not appear, verify\u00a0<em>subscription, resource group, supported workspace type, and current permissions<\/em>\u00a0before retrying.<\/li>\n\n\n\n<li>Select the correct workspace and choose\u00a0<strong>Add<\/strong>.<\/li>\n\n\n\n<li>Confirm the onboarding operation has completed, then check that the workspace is displayed as Sentinel-enabled. Capture\u00a0<code>D1-L05-Sentinel-Enabled.png<\/code>.<\/li>\n\n\n\n<li>If the workspace was already enabled,\u00a0<strong>record existing state<\/strong>\u00a0instead of trying to re-enable it.<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">Step B \u2014 Confirm the Defender portal (standard experience)<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Go to\u00a0<code>https:\/\/security.microsoft.com<\/code>\u00a0with the\u00a0<em>same intended tenant<\/em>.<\/li>\n\n\n\n<li>On a newly onboarded workspace, check whether Sentinel already appears in the left navigation. Microsoft documents that many new workspaces are\u00a0<strong>automatically connected<\/strong>\u00a0to Defender. [R03]<\/li>\n\n\n\n<li>In the Defender navigation, open\u00a0<strong>System \u2192 Settings \u2192 Microsoft Sentinel \u2192 Workspaces<\/strong>\u00a0(navigation wording may show Settings directly in some layouts).<\/li>\n\n\n\n<li>Confirm the expected workspace is listed, verify whether it is the\u00a0<strong>primary workspace<\/strong>, and capture\u00a0<code>D1-L05-Defender-Workspace.png<\/code>.<\/li>\n\n\n\n<li>If\u00a0<strong>not<\/strong>\u00a0connected, stop and request an authorized onboarding administrator. An authorized admin can open\u00a0<strong>System \u2192 Settings \u2192 Microsoft Sentinel \u2192 Connect a workspace<\/strong>, select the workspace, choose the primary workspace, review changes, and select\u00a0<strong>Connect<\/strong>. This requires the documented combination of Entra\/Azure permissions,\u00a0<em>not<\/em>\u00a0simply Sentinel Reader. [R03]<\/li>\n\n\n\n<li>Reopen the Defender portal after provisioning\/connection. Allow for initial tenant provisioning delay; refresh after the admin confirms successful connection.<\/li>\n\n\n\n<li>Expand\u00a0<strong>Microsoft Sentinel<\/strong>\u00a0and identify\u00a0<strong>Configuration<\/strong>,\u00a0<strong>Content management<\/strong>, and\u00a0<strong>Threat management<\/strong>\u00a0menu groups. Open each without changing anything. In some views, the\u00a0<strong>Advanced hunting<\/strong>\u00a0query editor is opened through the connector&#8217;s\u00a0<strong>Go to log analytics<\/strong>\u00a0shortcut.<\/li>\n\n\n\n<li>Explain why a Microsoft Defender XDR\/E5 license is\u00a0<strong>not required solely to access Sentinel in the Defender portal<\/strong>, but access to additional Defender XDR data and features depends on separate licensing\/entitlements. [R03]<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">Troubleshooting and gate<\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th class=\"has-text-align-left\" data-align=\"left\">Symptom<\/th><th class=\"has-text-align-left\" data-align=\"left\">First test<\/th><th class=\"has-text-align-left\" data-align=\"left\">Next action<\/th><\/tr><\/thead><tbody><tr><td>Workspace missing from Sentinel Add list<\/td><td>Correct tenant\/subscription\/workspace<\/td><td>Verify eligibility and provisioner permissions<\/td><\/tr><tr><td>Sentinel enabled, invisible in Defender<\/td><td>Check&nbsp;<strong>Workspaces<\/strong>&nbsp;under Sentinel settings<\/td><td>Auto-provisioning delay, then authorized manual connect<\/td><\/tr><tr><td>Learner sees portal but cannot view incidents\/logs<\/td><td>Check effective Sentinel\/Defender roles<\/td><td>Correct specific role&nbsp;<em>scope<\/em>&nbsp;and RBAC as needed<\/td><\/tr><tr><td>Cannot manually connect<\/td><td>Check Entra admin role&nbsp;<strong>and<\/strong>&nbsp;subscription authorization<\/td><td>Escalate to onboarding administrator; no blanket Owner grant<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>PASS gate D1-05:<\/strong>&nbsp;Learner shows a correctly Sentinel-enabled workspace&nbsp;<strong>and<\/strong>&nbsp;its association in the Defender portal. If onboarding is instructor-performed, explicitly mark the provisioning portion \u201cobserved\u201d and verify learner read access separately.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">D1-L06 \u2014 Install the&nbsp;<em>Azure Activity<\/em>&nbsp;solution from Content hub<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Syllabus:<\/strong>&nbsp;F12 (introduces Day 2 F16).&nbsp;<strong>Type:<\/strong>&nbsp;Guided content deployment.&nbsp;<strong>Role:<\/strong>&nbsp;Sentinel Contributor.&nbsp;<strong>DOC-VERIFIED:<\/strong>&nbsp;[R01], [R08].<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Steps<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>In Defender portal, expand\u00a0<strong>Microsoft Sentinel \u2192 Content management \u2192 Content hub<\/strong>.<\/li>\n\n\n\n<li>Enter\u00a0<strong>Azure Activity<\/strong>\u00a0in the search box and run the search.<\/li>\n\n\n\n<li>Select the\u00a0<strong>Azure Activity<\/strong>\u00a0solution; read its publisher\/provider, description, version\/support information and included types of content.<\/li>\n\n\n\n<li>Check whether the solution shows\u00a0<strong>Installed<\/strong>,\u00a0<strong>Not installed<\/strong>, or an available\u00a0<strong>Update<\/strong>. Do not blindly update shared content.<\/li>\n\n\n\n<li>If not installed and approved, select\u00a0<strong>Install<\/strong>\u00a0(or\u00a0<strong>View details \u2192 Create \/ Update<\/strong>, depending on the current Content hub flow).<\/li>\n\n\n\n<li>Select the\u00a0<strong>approved subscription, RG, and Sentinel workspace<\/strong>\u00a0when the content deployment wizard requires them; confirm the destination is not a different workspace.<\/li>\n\n\n\n<li>Review content items, select\u00a0<strong>Create\/Install<\/strong>, and wait for a success status.<\/li>\n\n\n\n<li>Return to\u00a0<strong>Content hub<\/strong>\u00a0and confirm the item reports installed; record its name and version in\u00a0<code>D1-L06-Content-Record.md<\/code>.<\/li>\n\n\n\n<li>For learning, identify the difference among\u00a0<strong>Solution<\/strong>,\u00a0<strong>Data connector<\/strong>,\u00a0<strong>Analytics rule template<\/strong>, and\u00a0<strong>Workbook template<\/strong>.\u00a0<strong>Installing a solution does not itself start all its connectors or schedule all its rules.<\/strong><\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>PASS gate D1-06:<\/strong>&nbsp;Azure Activity solution installed in the correct workspace; learner explains why additional connector configuration is required.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Failure paths<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Install disabled:<\/strong>\u00a0inspect Microsoft Sentinel Contributor permission on the appropriate RG.<\/li>\n\n\n\n<li><strong>Solution not found:<\/strong>\u00a0clear Content hub filters or refine search; check region\/tenant content access.<\/li>\n\n\n\n<li><strong>Deployment failure:<\/strong>\u00a0open deployment details, record failure code and resource provider\/permission issue; do not guess.<\/li>\n\n\n\n<li><strong>A similar solution is already installed:<\/strong>\u00a0document and reuse; do not create a duplicate.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">D1-L07 \u2014 Configure the Azure Activity connector safely<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Syllabus:<\/strong>&nbsp;F12.&nbsp;<strong>Type:<\/strong>&nbsp;Approved subscription-level diagnostic export.&nbsp;<strong>DOC-VERIFIED:<\/strong>&nbsp;[R01], [R06], [R09].<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\"><strong>Scope alert:<\/strong>&nbsp;Azure Activity is a&nbsp;<strong>subscription\/management control-plane log<\/strong>, not VM Syslog. The typical connector uses the Azure Monitor diagnostic-settings pipeline; the Sentinel connector walkthrough provides an&nbsp;<strong>Azure Policy assignment wizard<\/strong>. The policy-based route has a higher permission bar than simply reading Sentinel. Do this only in the preapproved training subscription. Check existing exports first to avoid duplicate data flows.<\/p>\n<\/blockquote>\n\n\n\n<h3 class=\"wp-block-heading\">Step A \u2014 identify the data source and current state<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>In Defender portal, open\u00a0<strong>Microsoft Sentinel \u2192 Configuration \u2192 Data connectors<\/strong>.<\/li>\n\n\n\n<li>Search\u00a0<strong>Azure Activity<\/strong>, select the connector, and choose\u00a0<strong>Open connector page<\/strong>.<\/li>\n\n\n\n<li>Read its\u00a0<strong>Prerequisites<\/strong>,\u00a0<strong>Data types<\/strong>,\u00a0<strong>Instructions<\/strong>, and current\u00a0<strong>Status<\/strong>. Record whether it is\u00a0<code>Connected<\/code>,\u00a0<code>Not connected<\/code>, or not yet reporting.<\/li>\n\n\n\n<li>In Azure portal, check whether the training subscription already exports Activity logs to the intended workspace. Typical route:\u00a0<strong>Monitor \u2192 Activity log \u2192 Export Activity Logs<\/strong>; inspect existing diagnostic settings. Alternatively inspect the approved Azure Policy assignment for Activity Log forwarding.<\/li>\n\n\n\n<li>If an existing export sends the correct required categories to the\u00a0<strong>correct<\/strong>\u00a0workspace,\u00a0<strong>reuse and verify<\/strong>, rather than adding another export blindly.<\/li>\n\n\n\n<li>If the environment uses the\u00a0<strong>legacy<\/strong>\u00a0Activity Log collection method, follow the Microsoft&#8217;s documented migration\/disable guidance with the environment owner before enabling a new pipeline. Do not unilaterally disconnect business-critical collection. [R09]<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">Step B \u2014 preferred Microsoft Sentinel connector route (Azure Policy wizard)<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Perform only with an authorized policy assignment owner.<\/strong><\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>On the\u00a0<strong>Azure Activity<\/strong>\u00a0connector page, choose\u00a0<strong>Launch Azure Policy Assignment Wizard<\/strong>.<\/li>\n\n\n\n<li>Set assignment\u00a0<strong>Scope<\/strong>\u00a0to the instructor-approved subscription containing the benign lab activity. Avoid an entire management group or production subscription.<\/li>\n\n\n\n<li>Review the policy identity, exclusions, effects, and any needed remediation\/permissions that the actual wizard shows; involve the policy owner if those prompts appear.<\/li>\n\n\n\n<li>Open\u00a0<strong>Parameters<\/strong>; set\u00a0<strong>Primary Log Analytics workspace<\/strong>\u00a0to the exact workspace from D1-L04.<\/li>\n\n\n\n<li>If a non-default policy assignment name is requested, choose a recognizable lab-specific name. Record it and its scope for cleanup.<\/li>\n\n\n\n<li>Review assignment details; confirm\u00a0<em>subscription, scope, destination workspace, effect, and approving owner<\/em>.<\/li>\n\n\n\n<li>Select\u00a0<strong>Review + create \u2192 Create<\/strong>\u00a0only after approval.<\/li>\n\n\n\n<li>In\u00a0<strong>Azure Policy \u2192 Assignments<\/strong>, locate the new assignment. Record scope, identity\/remediation state, and compliance\/provisioning outcome. Initial policy evaluation\/diagnostic flow can take time.<\/li>\n\n\n\n<li>Return to the connector and review status, but do not treat a\u00a0<code>Connected<\/code>\u00a0badge alone as proof that a particular event arrived.<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">Step C \u2014 approved direct diagnostic-setting alternative<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Use&nbsp;<strong>only if approved by the instructor\/cloud administrator<\/strong>&nbsp;and the standard policy route cannot be used or is not appropriate; do&nbsp;<strong>not<\/strong>&nbsp;configure both routes for the same source\/destination without a reason.<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>In Azure portal, open\u00a0<strong>Monitor \u2192 Activity log \u2192 Export Activity Logs<\/strong>.<\/li>\n\n\n\n<li>Select the\u00a0<strong>training subscription<\/strong>\u00a0and choose\u00a0<strong>Add diagnostic setting<\/strong>.<\/li>\n\n\n\n<li>Give it a descriptive name, e.g.\u00a0<code>diag-sentinel-activity-lab01<\/code>.<\/li>\n\n\n\n<li>Select the\u00a0<strong>Administrative<\/strong>\u00a0Activity Log category at a minimum for the group-change exercise; add other categories only when approved by policy and training requirements.<\/li>\n\n\n\n<li>Under destination details, choose\u00a0<strong>Send to Log Analytics workspace<\/strong>.<\/li>\n\n\n\n<li>Select the approved\u00a0<strong>subscription and the Sentinel-enabled Log Analytics workspace<\/strong>.<\/li>\n\n\n\n<li>Review\u00a0<strong>scope, log categories, destination workspace<\/strong>, then\u00a0<strong>Save<\/strong>. Record the exact diagnostic setting name and owner for teardown.<\/li>\n\n\n\n<li>Return to the training subscription&#8217;s\u00a0<strong>Activity log<\/strong>, confirm there are recent administrative events, then use D1-L08 to verify they also reach\u00a0<code>AzureActivity<\/code>\u00a0in the destination workspace.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Important:<\/strong>&nbsp;Direct diagnostic configuration and policy-managed settings are two documented mechanisms with different administrative routes. The approved approach is determined by the instructor\/environment owner, not by convenience. [R06], [R09]<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">PASS gate D1-07<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>[ ] Documented connector method and approver.<\/li>\n\n\n\n<li>[ ] Approved source subscription\/scope.<\/li>\n\n\n\n<li>[ ] Correct destination Log Analytics workspace.<\/li>\n\n\n\n<li>[ ] Export\/policy config exists with no accidental duplicate export.<\/li>\n\n\n\n<li>[ ] No production resources or unrelated subscriptions changed.<\/li>\n\n\n\n<li>[ ] Named cleanup owner and configuration ID recorded.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Status distinction:<\/strong>&nbsp;This passes&nbsp;<strong>configuration<\/strong>. The separate D1-L08 telemetry proof is mandatory for&nbsp;<strong>ingestion<\/strong>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">D1-L08 \u2014 Generate harmless activity and prove first data ingestion<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Syllabus:<\/strong>&nbsp;F12.&nbsp;<strong>Type:<\/strong>&nbsp;Live controlled activity.&nbsp;<strong>DOC-VERIFIED:<\/strong>&nbsp;Azure Activity logs, destination table and official quickstart [R01], [R06], [R10].<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Why this lab is necessary<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">A&nbsp;<strong>configured connector<\/strong>&nbsp;and a&nbsp;<strong>working rule template<\/strong>&nbsp;are not the same as telemetry arriving in a particular workspace. Conversely, a&nbsp;<strong>rule being enabled<\/strong>&nbsp;does not mean it has found an event or created an alert. We verify each distinct boundary.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Step A \u2014 create an approved, non-disruptive Azure change<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Wait for the instructor to confirm the diagnostic export is active or no provisioning blockers remain.<\/li>\n\n\n\n<li>In Azure portal, open\u00a0<strong>Resource groups \u2192 Create<\/strong>.<\/li>\n\n\n\n<li>Select the\u00a0<strong>training subscription<\/strong>; enter the unique activity group name, e.g.\u00a0<code>rg-sentinel-signal-lab01<\/code>.<\/li>\n\n\n\n<li>Choose the approved region and add tags such as\u00a0<code>purpose=sentinel-foundations-lab<\/code>,\u00a0<code>owner=training<\/code>, and\u00a0<code>cleanup=required<\/code>\u00a0if the portal requests tags or after creation.<\/li>\n\n\n\n<li>Select\u00a0<strong>Review + create \u2192 Create<\/strong>. Only create this empty RG; do not deploy a VM, firewall, storage account, or additional paid service.<\/li>\n\n\n\n<li>Open the new signal RG, go to\u00a0<strong>Tags<\/strong>, add or update\u00a0<code>exercise=D1-L08<\/code>, and\u00a0<strong>Save<\/strong>. This creates another harmless resource-management operation.<\/li>\n\n\n\n<li>Open\u00a0<strong>Monitor \u2192 Activity log<\/strong>\u00a0in Azure portal. Set scope\/subscription\/time window to include your changes; filter the resource group or resource ID, if available. Record the observed operation name, status, timestamp\u00a0<strong>in UTC<\/strong>, and resource ID. This is the\u00a0<strong>source-side<\/strong>\u00a0proof.<\/li>\n\n\n\n<li>Note the actual event&#8217;s\u00a0<strong>ResourceGroup<\/strong>\u00a0value might be blank or differ for subscription\/RG-level operations; use\u00a0<strong>ResourceId<\/strong>\u00a0as a cross-check rather than demanding a populated\u00a0<code>ResourceGroup<\/code>\u00a0field.<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">Step B \u2014 query the Sentinel-enabled destination<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>In Defender portal, select\u00a0<strong>Microsoft Sentinel \u2192 Configuration \u2192 Data connectors \u2192 Azure Activity \u2192 Open connector page<\/strong>.<\/li>\n\n\n\n<li>Review connector status, then select\u00a0<strong>Go to log analytics<\/strong>\u00a0(the official quickstart may open the\u00a0<strong>Advanced hunting<\/strong>\u00a0editor). You can instead open the approved Log Analytics workspace&#8217;s\u00a0<strong>Logs<\/strong>\u00a0experience if your tenant supports that route.<\/li>\n\n\n\n<li>If the editor presents a table\/workspace scope selector, confirm the\u00a0<strong>intended Sentinel workspace<\/strong>. Do not assume default scope.<\/li>\n\n\n\n<li>Start with the shortest possible query:<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-code\"><code>AzureActivity\n| where TimeGenerated &gt;= ago(24h)\n| take 20\n<\/code><\/pre>\n\n\n\n<ol start=\"5\" class=\"wp-block-list\">\n<li>Select\u00a0<strong>Run<\/strong>. If rows are returned, inspect\u00a0<strong>TimeGenerated<\/strong>,\u00a0<strong>CategoryValue<\/strong>,\u00a0<strong>OperationNameValue<\/strong>,\u00a0<strong>ActivityStatusValue<\/strong>,\u00a0<strong>ResourceId<\/strong>,\u00a0<strong>ResourceGroup<\/strong>,\u00a0<strong>CorrelationId<\/strong>, and\u00a0<strong>Caller<\/strong>\u00a0where populated.<\/li>\n\n\n\n<li>Narrow to the unique signal RG by replacing the sample string:<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-code\"><code>let signalGroup = \"rg-sentinel-signal-lab01\";\nAzureActivity\n| where TimeGenerated &gt;= ago(24h)\n| where ResourceId contains signalGroup or ResourceGroup contains signalGroup\n| project TimeGenerated, CategoryValue, OperationNameValue,\n          ActivityStatusValue, ResourceGroup, ResourceId,\n          Caller, CorrelationId\n| sort by TimeGenerated desc\n<\/code><\/pre>\n\n\n\n<ol start=\"7\" class=\"wp-block-list\">\n<li>Compare one record with the earlier\u00a0<strong>source-side Activity log<\/strong>: resource ID, operation, timestamp, status, and (when present) CorrelationId. Timestamps may differ slightly between event occurrence and ingestion availability; do not require exact arrival instant.<\/li>\n\n\n\n<li>Save query text in the evidence folder and capture\u00a0<code>D1-L08-Sentinel-AzureActivity-Result.png<\/code>.<\/li>\n\n\n\n<li>If the result contains no rows, continue the diagnostic ladder below;\u00a0<strong>never fabricate a screenshot or claim the connector worked.<\/strong><\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">Diagnostic ladder:&nbsp;<strong>source \u2192 export \u2192 destination \u2192 query<\/strong><\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Source:<\/strong>\u00a0Does Azure portal\u00a0<strong>Activity log<\/strong>\u00a0display the actual benign RG action? If no, check subscription\/time filters and whether the operation succeeded.<\/li>\n\n\n\n<li><strong>Export:<\/strong>\u00a0Is the diagnostic setting\/policy assigned to the correct\u00a0<em>subscription<\/em>\u00a0and correct\u00a0<em>workspace<\/em>? Check deployment, policy compliance\/remediation and existing settings.<\/li>\n\n\n\n<li><strong>Delay:<\/strong>\u00a0Microsoft notes that diagnostic-export initiation can take on the order of\u00a0<strong>tens of minutes<\/strong>\u00a0(their troubleshooting guide cites around 30 minutes in a common export scenario). Wait within the instructor&#8217;s authorized lab window and recheck; never promise instantaneous arrival. [R11]<\/li>\n\n\n\n<li><strong>Destination:<\/strong>\u00a0Run an unfiltered\u00a0<code>AzureActivity | where TimeGenerated >= ago(48h) | count<\/code>\u00a0against the\u00a0<em>correct<\/em>\u00a0workspace. If there are no records, investigate pipeline setup before fine-tuning KQL.<\/li>\n\n\n\n<li><strong>Filter:<\/strong>\u00a0Remove\u00a0<code>ResourceGroup<\/code>\u00a0filtering; use\u00a0<code>ResourceId<\/code>, broaden time, compare casing and source event structure. Microsoft documents case differences across Activity Log fields; prefer case-insensitive operators. [R06]<\/li>\n\n\n\n<li><strong>Rights:<\/strong>\u00a0A query access error is not the same as no telemetry; verify workspace read\/query privileges.<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">PASS gate D1-08<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>At minimum:<\/strong>&nbsp;Show an actual Azure portal Activity log event&nbsp;<strong>and<\/strong>&nbsp;corresponding AzureActivity record in the intended Log Analytics workspace, or record a genuine&nbsp;<strong>BLOCKED<\/strong>&nbsp;outcome with the first failing boundary. Preserve&nbsp;<em>source evidence, destination query, recorded UTC timestamps and sample resource identifier<\/em>. This ends Day 1&#8217;s technical progression gate.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Day 1 completion check<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>[ ] D1-L01 5W1H + SOC roles + alternatives.<\/li>\n\n\n\n<li>[ ] D1-L02 architecture explanation.<\/li>\n\n\n\n<li>[ ] D1-L03 safe tenant\/subscription\/RBAC\/cost preflight.<\/li>\n\n\n\n<li>[ ] D1-L04 workspace proof.<\/li>\n\n\n\n<li>[ ] D1-L05 Sentinel\/Defender proof.<\/li>\n\n\n\n<li>[ ] D1-L06 Azure Activity solution proof.<\/li>\n\n\n\n<li>[ ] D1-L07 authorized export proof.<\/li>\n\n\n\n<li>[ ] D1-L08 matching source and ingested record, or clearly documented blocker.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">DAY 2 \u2014 Log Analysis, Detection, Incidents, Workbooks, and Assessment<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Day 2 entry requirements:<\/strong>&nbsp;Learner has completed Day 1&#8217;s conceptual exercises and can access a Sentinel-enabled workspace. The instructor has produced or approved a&nbsp;<strong>real&nbsp;<code>AzureActivity<\/code>&nbsp;event<\/strong>&nbsp;for the live branch. If not, start with D2-L03&#8217;s simulated KQL branch and record any live tasks as&nbsp;<strong>BLOCKED<\/strong>&nbsp;until the source is repaired.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">D2-L01 \u2014 Inspect real security records and explain the schema<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Syllabus:<\/strong>&nbsp;F13, F15.&nbsp;<strong>Type:<\/strong>&nbsp;Live read-only log analysis.<br><strong>Prerequisites:<\/strong>&nbsp;D1-L08, permission to query the intended workspace.<br><strong>Deliverable:<\/strong>&nbsp;<code>Day02\/D2-L01-Record-Worksheet.md<\/code>.&nbsp;<strong>Reference:<\/strong>&nbsp;[R10].<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Guided steps<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Open Defender portal and navigate to the\u00a0<strong>Azure Activity connector<\/strong>, then select\u00a0<strong>Go to log analytics<\/strong>, or go to the workspace&#8217;s\u00a0<strong>Logs<\/strong>\u00a0editor as approved by the instructor.<\/li>\n\n\n\n<li>Confirm tenant, workspace\/data scope, and time window. Use\u00a0<strong>Last 24 hours<\/strong>\u00a0first, then broaden if your approved signal is older.<\/li>\n\n\n\n<li>Run:<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-code\"><code>AzureActivity\n| where TimeGenerated &gt;= ago(24h)\n| sort by TimeGenerated desc\n| take 20\n<\/code><\/pre>\n\n\n\n<ol start=\"4\" class=\"wp-block-list\">\n<li>Open one record and inspect every column available. Compare the actual schema with the reference fields in [R10]. Do not assume that all optional values are populated.<\/li>\n\n\n\n<li>For one\u00a0<strong>known lab action<\/strong>, note the following:<\/li>\n<\/ol>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th class=\"has-text-align-left\" data-align=\"left\">Question<\/th><th class=\"has-text-align-left\" data-align=\"left\">Field to inspect<\/th><th class=\"has-text-align-left\" data-align=\"left\">Learner finding<\/th><\/tr><\/thead><tbody><tr><td>When did it occur?<\/td><td><code>TimeGenerated<\/code>&nbsp;(UTC)<\/td><td>__________<\/td><\/tr><tr><td>Which operation occurred?<\/td><td><code>OperationNameValue<\/code><\/td><td>__________<\/td><\/tr><tr><td>Was it successful?<\/td><td><code>ActivityStatusValue<\/code><\/td><td>__________<\/td><\/tr><tr><td>Which resource was affected?<\/td><td><code>ResourceId<\/code><\/td><td>__________<\/td><\/tr><tr><td>Which subscription?<\/td><td><code>SubscriptionId<\/code><\/td><td>__________<\/td><\/tr><tr><td>Which resource group?<\/td><td><code>ResourceGroup<\/code>&nbsp;(may be empty for scope-level operations)<\/td><td>__________<\/td><\/tr><tr><td>Who made the request?<\/td><td><code>Caller<\/code>&nbsp;(may be UPN\/service principal identifier\/GUID)<\/td><td>__________<\/td><\/tr><tr><td>Which related operation group?<\/td><td><code>CorrelationId<\/code><\/td><td>__________<\/td><\/tr><tr><td>Which category?<\/td><td><code>CategoryValue<\/code><\/td><td>__________<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<ol start=\"6\" class=\"wp-block-list\">\n<li>Compare\u00a0<strong>TimeGenerated<\/strong>\u00a0to\u00a0<strong>EventSubmissionTimestamp<\/strong>\u00a0when the latter is populated. Explain event occurrence versus availability\/submission;\u00a0<strong>do not<\/strong>\u00a0treat these as guaranteed-identical timestamps.<\/li>\n\n\n\n<li>Explain the difference between an\u00a0<strong>empty field<\/strong>, a\u00a0<strong>missing field<\/strong>,\u00a0<strong>zero records<\/strong>, a\u00a0<strong>failed query<\/strong>, and a\u00a0<strong>valid query with no matching events<\/strong>.<\/li>\n\n\n\n<li>Open the raw Azure portal\u00a0<strong>Activity log<\/strong>\u00a0for the same test resource and look for corroborating evidence. Compare one non-secret identifier and the timeline.<\/li>\n\n\n\n<li>Capture query results with the table headers visible.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>PASS gate D2-01:<\/strong>&nbsp;Learner correctly identifies one real action, its timestamp, actor or actor identifier, resource, result, and scope. They can explain why a blank&nbsp;<code>ResourceGroup<\/code>&nbsp;field does not necessarily mean the record is invalid.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">D2-L02 \u2014 Complete KQL essentials laboratory (real data)<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Syllabus:<\/strong>&nbsp;F14\u2013F15.&nbsp;<strong>Type:<\/strong>&nbsp;Live KQL.&nbsp;<strong>Outcome:<\/strong>&nbsp;Independently operate&nbsp;<code>where<\/code>,&nbsp;<code>project<\/code>,&nbsp;<code>take<\/code>,&nbsp;<code>sort<\/code>,&nbsp;<code>count<\/code>,&nbsp;<code>summarize<\/code>, and&nbsp;<code>bin<\/code>.&nbsp;<strong>Reference:<\/strong>&nbsp;[R12], [R10].<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\"><strong>Execution rule:<\/strong>&nbsp;Run queries&nbsp;<strong>one at a time<\/strong>. First make sure the appropriate source workspace is in scope. Queries operate on your training records: exact row counts and actor names will vary and are&nbsp;<em>not<\/em>&nbsp;prescribed answer values.<\/p>\n<\/blockquote>\n\n\n\n<h3 class=\"wp-block-heading\">Exercise K01 \u2014 Prove the table can be queried<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>AzureActivity\n| take 10\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Observe:<\/strong>&nbsp;A sample of records, provided the table exists and contains data in the selected time range.&nbsp;<strong>Check:<\/strong>&nbsp;Results are not a substitute for recording the workspace\/time filter.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Exercise K02 \u2014 Count events in a 24-hour lookback<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>AzureActivity\n| where TimeGenerated &gt;= ago(24h)\n| count\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Observe:<\/strong>&nbsp;One numerical row. A count of zero is a valid query result and requires source\/time investigation, not a syntax correction.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Exercise K03 \u2014 Project only investigation-relevant fields<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>AzureActivity\n| where TimeGenerated &gt;= ago(24h)\n| project TimeGenerated, Caller, OperationNameValue,\n          ActivityStatusValue, ResourceId\n| take 30\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Observe:<\/strong>&nbsp;Five columns (some values may be blank); explain why&nbsp;<code>project<\/code>&nbsp;improves readability.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Exercise K04 \u2014 Sort latest changes first<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>AzureActivity\n| where TimeGenerated &gt;= ago(24h)\n| project TimeGenerated, OperationNameValue, ResourceId\n| sort by TimeGenerated desc\n| take 20\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Observe:<\/strong>&nbsp;Descending UTC event times; most recent first.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Exercise K05 \u2014 Administrative events only<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>AzureActivity\n| where TimeGenerated &gt;= ago(24h)\n| where CategoryValue =~ \"Administrative\"\n| project TimeGenerated, CategoryValue, OperationNameValue,\n          ActivityStatusValue\n| sort by TimeGenerated desc\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Observe:<\/strong>&nbsp;Only matching category values.&nbsp;<code>=~<\/code>&nbsp;means case-insensitive equality for strings.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Exercise K06 \u2014 Filter specifically to your safe lab resource<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>let signalGroup = \"rg-sentinel-signal-lab01\";  \/\/ Replace with your actual name.\nAzureActivity\n| where TimeGenerated &gt;= ago(48h)\n| where ResourceId contains signalGroup or ResourceGroup contains signalGroup\n| project TimeGenerated, OperationNameValue, ActivityStatusValue,\n          ResourceGroup, ResourceId, CorrelationId\n| sort by TimeGenerated desc\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Observe:<\/strong>&nbsp;Records related to the unique lab RG.&nbsp;<strong>If empty:<\/strong>&nbsp;inspect the broad unfiltered table query first; the RG name could differ, the signal could be older, or the connector could be misconfigured.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Exercise K07 \u2014 Number of events per operation<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>AzureActivity\n| where TimeGenerated &gt;= ago(24h)\n| summarize Events = count() by OperationNameValue\n| sort by Events desc\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Observe:<\/strong>&nbsp;One row per distinct operation and a count. Explain the difference between&nbsp;<em>events<\/em>&nbsp;and&nbsp;<em>unique operations<\/em>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Exercise K08 \u2014 Number of operations by status<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>AzureActivity\n| where TimeGenerated &gt;= ago(24h)\n| summarize Events = count() by ActivityStatusValue\n| sort by Events desc\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Observe:<\/strong>&nbsp;A status distribution; discuss why an operation can generate records in different states and why you should not label all failures as attacks.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Exercise K09 \u2014 Visualize basic activity over time<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>AzureActivity\n| where TimeGenerated &gt;= ago(24h)\n| summarize Events = count() by bin(TimeGenerated, 1h)\n| sort by TimeGenerated asc\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Observe:<\/strong>&nbsp;Time-bucketed records. In a Logs editor that offers a chart view, choose an appropriate line\/column visualization. If the chart isn&#8217;t available in the current editor, the returned table is still valid evidence.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Exercise K10 \u2014 Summarize unique actors (if present)<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>AzureActivity\n| where TimeGenerated &gt;= ago(24h)\n| where isnotempty(Caller)\n| summarize Events = count() by Caller\n| sort by Events desc\n| take 20\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Observe:<\/strong>&nbsp;Top identified callers. Be cautious: a&nbsp;<code>Caller<\/code>&nbsp;may be a GUID or service principal, not necessarily a human username.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Exercise K11 \u2014 Find recent failed administrative operations<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>AzureActivity\n| where TimeGenerated &gt;= ago(48h)\n| where CategoryValue =~ \"Administrative\"\n| where ActivityStatusValue =~ \"Failed\"\n| project TimeGenerated, OperationNameValue, Caller,\n          ResourceId, ActivitySubstatusValue\n| sort by TimeGenerated desc\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Observe:<\/strong>&nbsp;A valid empty result is acceptable. Do not invent failed operations. Discuss least-privilege and operational causes versus threats.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Exercise K12 \u2014 Build a concise daily SOC summary<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>AzureActivity\n| where TimeGenerated &gt;= ago(7d)\n| summarize Events = count(),\n            LastObserved = max(TimeGenerated)\n  by CategoryValue\n| sort by Events desc\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Observe:<\/strong>&nbsp;A compact category-level view; no table joins or advanced functions required.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Troubleshooting experiment (mandatory)<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Change the K02 window from\u00a0<code>ago(24h)<\/code>\u00a0to\u00a0<code>ago(5m)<\/code>\u00a0and compare counts.<\/li>\n\n\n\n<li>Change K06&#8217;s\u00a0<code>signalGroup<\/code>\u00a0to a deliberately wrong lab name. Observe\u00a0<strong>zero results<\/strong>.<\/li>\n\n\n\n<li>Restore the right name and a sufficiently broad time range. Confirm that records return.<\/li>\n\n\n\n<li>Explain in plain English why\u00a0<em>the first empty result<\/em>\u00a0is\u00a0<strong>not<\/strong>\u00a0an ingestion failure.<\/li>\n\n\n\n<li>Save your best five queries as plain\u00a0<code>.kql<\/code>\u00a0or\u00a0<code>.txt<\/code>\u00a0files, along with the observed record counts and UTC execution times.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>PASS gate D2-02:<\/strong>&nbsp;Learner executes K02, K03, K05, K07 and K09 successfully, explains the pipeline&nbsp;<code>table | filter | project\/summarize | sort<\/code>, and diagnoses the intentionally empty KQL filter.&nbsp;<strong>Extra credit:<\/strong>&nbsp;all K01\u2013K12.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">D2-L03 \u2014 Synthetic KQL laboratory (when no real data is permitted)<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Syllabus:<\/strong>&nbsp;F14.&nbsp;<strong>Type:<\/strong>&nbsp;<strong>SIMULATED only<\/strong>, not a replacement for ingestion\/incident pass gates.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Exercise S01 \u2014 Seed fictional table rows in the query engine<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Paste the complete query below into an environment that supports Kusto&nbsp;<code>datatable<\/code>:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ SIMULATION: Rows exist only during this query; nothing is ingested.\ndatatable(Actor:string, Action:string, Result:string)\n&#91;\n    \"admin1@aster.example\", \"CreateResourceGroup\", \"Succeeded\",\n    \"admin2@aster.example\", \"UpdateTags\", \"Succeeded\",\n    \"admin3@aster.example\", \"DeleteResourceGroup\", \"Failed\",\n    \"admin1@aster.example\", \"UpdateTags\", \"Succeeded\"\n]\n| extend TimeGenerated = ago(5m)\n| project TimeGenerated, Actor, Action, Result\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Expected:<\/strong>&nbsp;Four fictional rows; all timestamps are relative to the query run. They represent&nbsp;<strong>no real Azure operation<\/strong>, cannot be queried in&nbsp;<code>AzureActivity<\/code>, and cannot by themselves produce a genuine Sentinel analytic-rule alert.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Exercise S02 \u2014 Summarize the same fictional events<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>let LabEvents = datatable(Actor:string, Action:string, Result:string)\n&#91;\n    \"admin1@aster.example\", \"CreateResourceGroup\", \"Succeeded\",\n    \"admin2@aster.example\", \"UpdateTags\", \"Succeeded\",\n    \"admin3@aster.example\", \"DeleteResourceGroup\", \"Failed\",\n    \"admin1@aster.example\", \"UpdateTags\", \"Succeeded\"\n];\nLabEvents\n| where Result =~ \"Succeeded\"\n| summarize Events = count() by Actor\n| sort by Events desc\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Expected:<\/strong>&nbsp;<code>admin1@aster.example<\/code>&nbsp;\u2192 2 and&nbsp;<code>admin2@aster.example<\/code>&nbsp;\u2192 1. The failed record is excluded.&nbsp;<strong>Do not<\/strong>&nbsp;import fictional&nbsp;<code>@aster.example<\/code>&nbsp;accounts into a real watchlist, Entra ID or production workspace.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Exercise S03 \u2014 Brief written interpretation<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Why did the count decrease from four total records to three successful ones?<\/li>\n\n\n\n<li>Why is this exercise\u00a0<strong>not<\/strong>\u00a0proof that a data connector works?<\/li>\n\n\n\n<li>What missing evidence would be required before recording the Day 1 ingestion gate as PASS?<\/li>\n\n\n\n<li>Why must you not call these fictional records a confirmed security incident?<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>SIMULATED gate D2-03:<\/strong>&nbsp;Learner gets expected S02 counts and labels the output as&nbsp;<code>SIMULATED \u2014 NO AZURE INGESTION, NO INCIDENT<\/code>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">D2-L04 \u2014 Explore built-in content and deploy a starter rule template<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Syllabus:<\/strong>&nbsp;F16, F17.&nbsp;<strong>Type:<\/strong>&nbsp;Live content\/rule exercise.&nbsp;<strong>Prerequisites:<\/strong>&nbsp;Azure Activity solution installed; Sentinel Contributor at required scope; inspect source data.&nbsp;<strong>DOC-VERIFIED:<\/strong>&nbsp;[R01], [R08], [R14].<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">First: understand installed content versus active detection<\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th class=\"has-text-align-left\" data-align=\"left\">Object<\/th><th class=\"has-text-align-left\" data-align=\"left\">What exists after installation?<\/th><th class=\"has-text-align-left\" data-align=\"left\">What must you still do?<\/th><\/tr><\/thead><tbody><tr><td>Content Hub&nbsp;<strong>solution<\/strong><\/td><td>Package of content definitions<\/td><td>Review requirements and configure included components<\/td><\/tr><tr><td><strong>Data connector<\/strong><\/td><td>Integration instructions\/connector instance<\/td><td>Authorize export\/connection and verify telemetry<\/td><\/tr><tr><td><strong>Analytics rule template<\/strong><\/td><td>Reusable starting query\/settings<\/td><td>Create and enable an active rule, with available data sources<\/td><\/tr><tr><td><strong>Active scheduled rule<\/strong><\/td><td>Scheduled analytic evaluation<\/td><td>Wait for matching data and execution; verify alert\/incident<\/td><\/tr><tr><td><strong>Workbook template<\/strong><\/td><td>Reusable dashboard definition<\/td><td>Satisfy data-source prerequisites and open or save it<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Step A \u2014 locate a Microsoft-documented starter example<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>In Defender portal, expand\u00a0<strong>Microsoft Sentinel \u2192 Content management \u2192 Content hub<\/strong>.<\/li>\n\n\n\n<li>Locate the installed\u00a0<strong>Azure Activity<\/strong>\u00a0solution. Expand it and inspect the available detection content.<\/li>\n\n\n\n<li>Find\u00a0<strong>Suspicious Resource deployment<\/strong>, which is named in the official onboarding quickstart as an example rule template. [R01]<\/li>\n\n\n\n<li>Verify this rule&#8217;s\u00a0<strong>required data sources<\/strong>\u00a0are available. The Defender\u00a0<strong>Analytics \u2192 Rule templates<\/strong>\u00a0view also shows prerequisite availability; if it reports missing data, investigate before enabling.<\/li>\n\n\n\n<li>Read the rule&#8217;s\u00a0<em>name, description, KQL, scheduling window, result threshold, and severity<\/em>. Ask:\u00a0<strong>What exact activity would match this rule?<\/strong><\/li>\n\n\n\n<li>Explain why the lab&#8217;s harmless\u00a0<code>UpdateTags<\/code>\u00a0action might\u00a0<em>not<\/em>\u00a0match a suspicious resource-deployment template.\u00a0<strong>Do not promise that enabling it will create a test incident.<\/strong><\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">Step B \u2014 create the rule from its template (only in isolated lab)<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Open\u00a0<strong>Microsoft Sentinel \u2192 Configuration \u2192 Analytics<\/strong>.<\/li>\n\n\n\n<li>Select the\u00a0<strong>Rule templates<\/strong>\u00a0tab, filter to\u00a0<strong>Scheduled<\/strong>\u00a0if useful.<\/li>\n\n\n\n<li>Find the intended template (for example\u00a0<strong>Suspicious Resource deployment<\/strong>) and inspect source compatibility.<\/li>\n\n\n\n<li>Select\u00a0<strong>Create rule<\/strong>. If disabled, stop and record the exact missing prerequisite; do not blindly install unrelated connectors or licenses.<\/li>\n\n\n\n<li>The wizard loads the template defaults. On\u00a0<strong>General<\/strong>, set the enabled state appropriate to your instructor&#8217;s safe lab; leave the severity and query intact unless specifically approved.<\/li>\n\n\n\n<li>On\u00a0<strong>Set rule logic<\/strong>, verify query syntax, workspace tables, scheduling,\u00a0<strong>Results simulation<\/strong>\u00a0(if available), and match conditions. A simulated result graph is not an actual alert.<\/li>\n\n\n\n<li>On\u00a0<strong>Incident settings<\/strong>, confirm\u00a0<strong>Create incidents from alerts triggered by this analytics rule<\/strong>\u00a0remains enabled when the intent is end-to-end detection. Defender&#8217;s incident correlation may later group alerts differently than a simple \u201cone alert equals one incident\u201d assumption. [R15]<\/li>\n\n\n\n<li>On\u00a0<strong>Automated responses<\/strong>, do\u00a0<strong>not<\/strong>\u00a0add playbooks, disruptive actions, or incident-wide automation for this foundation exercise.<\/li>\n\n\n\n<li>Select\u00a0<strong>Review and create<\/strong>; confirm\u00a0<strong>Validation passed<\/strong>, then\u00a0<strong>Create<\/strong>.<\/li>\n\n\n\n<li>Return to\u00a0<strong>Analytics \u2192 Active rules<\/strong>. Find the new active rule, record name, status, source template, run interval\/lookback, and creator.<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">Step C \u2014 check and document actual behavior<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Check\u00a0<strong>Microsoft Sentinel \u2192 Configuration \u2192 Analytics \u2192 Active rules<\/strong>\u00a0to verify the rule exists and is enabled.<\/li>\n\n\n\n<li>Search the appropriate\u00a0<strong>Incidents &amp; alerts<\/strong>\u00a0queue for activity associated with that rule over the allowed lab window.<\/li>\n\n\n\n<li>If\u00a0<strong>zero alerts<\/strong>\u00a0appear, explain whether the template query returned no matching events, is waiting for its scheduled run, has source prerequisites missing, or generated an alert correlated into an existing incident.<\/li>\n\n\n\n<li>Save a copy or screenshot of the\u00a0<strong>rule query and the observed results<\/strong>. Record\u00a0<code>ACTIVE RULE = YES<\/code>\u00a0separately from\u00a0<code>ACTUAL ALERT OBSERVED = YES\/NO<\/code>.<\/li>\n\n\n\n<li>Keep the template only if required by the next step; otherwise disable the lab instance at the end of the exercise to avoid background monitoring in a shared workspace.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>PASS gate D2-04:<\/strong>&nbsp;Learner demonstrates the&nbsp;<strong>template&#8217;s existence, prerequisites, configured active scheduled rule, and validation status<\/strong>. An incident is&nbsp;<strong>not<\/strong>&nbsp;assumed. If this template cannot be created due to tenant content\/source restrictions, document the blocker and move to D2-L05 with instructor approval.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">D2-L05 \u2014 Prove event \u2192 rule \u2192 alert \u2192 incident using an approved controlled rule<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Syllabus:<\/strong>&nbsp;F17\u2013F18.&nbsp;<strong>Type:<\/strong>&nbsp;Fallback end-to-end demonstration&nbsp;<strong>only if needed<\/strong>.&nbsp;<strong>Prerequisites:<\/strong>&nbsp;Actual&nbsp;<code>AzureActivity<\/code>&nbsp;records, approved instructor, Sentinel Contributor.&nbsp;<strong>DOC-VERIFIED:<\/strong>&nbsp;[R15].<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\"><strong>Security intent:<\/strong>&nbsp;This short-lived beginner rule detects&nbsp;<strong>your uniquely named training resource group<\/strong>, not suspicious enterprise behavior. It deliberately has low severity and is disabled\/deleted after use. It is&nbsp;<strong>not a production security detection<\/strong>&nbsp;and is not an invitation to develop attack simulation playbooks.<\/p>\n<\/blockquote>\n\n\n\n<h3 class=\"wp-block-heading\">Phase 1 \u2014 prove the query can find&nbsp;<em>only your approved lab activity<\/em><\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Have the instructor confirm the signal RG name is unique, under the training subscription, and safely modifiable.<\/li>\n\n\n\n<li>From Azure portal, add or update a benign\u00a0<strong>tag<\/strong>\u00a0on\u00a0<code>rg-sentinel-signal-lab01<\/code>\u00a0(for example\u00a0<code>exercise=D2-L05<\/code>). This refreshes a legitimate, low-risk Azure Activity record.<\/li>\n\n\n\n<li>Check source\u00a0<strong>Activity log<\/strong>\u00a0to confirm the tag\/update action exists. If the tag change produces no relevant AzureActivity record yet, wait for export and verify the destination first.<\/li>\n\n\n\n<li>Run this KQL in the\u00a0<strong>real Sentinel workspace<\/strong>, replacing both placeholders. Do not run with placeholders left intact:<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-code\"><code>let labRG = \"rg-sentinel-signal-lab01\"; \/\/ Replace with actual signal RG.\nlet labSubscription = \"00000000-0000-0000-0000-000000000000\"; \/\/ Replace.\nAzureActivity\n| where TimeGenerated &gt;= ago(2h)\n| where SubscriptionId =~ labSubscription\n| where CategoryValue =~ \"Administrative\"\n| where ResourceId contains labRG or ResourceGroup contains labRG\n| project TimeGenerated, Caller, ResourceId, ResourceGroup,\n          OperationNameValue, ActivityStatusValue, CorrelationId\n| sort by TimeGenerated desc\n<\/code><\/pre>\n\n\n\n<ol start=\"5\" class=\"wp-block-list\">\n<li>Confirm at least\u00a0<strong>one row<\/strong>, matching your approved subscription\/RG. If\u00a0<strong>zero<\/strong>\u00a0rows, stop and repair source\/connector\/time filters first. A rule that can never match cannot prove alert generation.<\/li>\n\n\n\n<li>Save the query as\u00a0<code>D2-L05-Lab-Rule-Query.kql<\/code>\u00a0and evidence of at least one real matched row.<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">Phase 2 \u2014 create the temporary scheduled rule<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>In the Defender portal open\u00a0<strong>Microsoft Sentinel \u2192 Configuration \u2192 Analytics \u2192 + Create \u2192 Scheduled query rule<\/strong>.<\/li>\n\n\n\n<li>Enter\u00a0<strong>Name<\/strong>:\u00a0<code>LAB01 - Approved Azure Activity Test<\/code>\u00a0(use your unique ID). Add a description such as\u00a0<code>TRAINING ONLY. Detects approved tag or group changes on lab RG; disable after assessment.<\/code><\/li>\n\n\n\n<li>Set\u00a0<strong>Severity = Low<\/strong>\u00a0or\u00a0<strong>Informational<\/strong>\u00a0as the instructor approves. Leave threat-technique mapping unset if the activity does not truthfully represent a MITRE ATT&amp;CK technique.<\/li>\n\n\n\n<li>Set\u00a0<strong>Status = Enabled<\/strong>\u00a0and start automatically, unless the instructor wants the learner to enable it only after a final review.<\/li>\n\n\n\n<li>In\u00a0<strong>Set rule logic<\/strong>, paste the\u00a0<strong>tested<\/strong>\u00a0KQL. Retain\u00a0<code>TimeGenerated<\/code>\u00a0in its output; Microsoft&#8217;s scheduled-rule documentation specifically requires it for lookback evaluation. [R15]<\/li>\n\n\n\n<li>Under\u00a0<strong>Query scheduling<\/strong>, use\u00a0<strong>Run query every = 5 minutes<\/strong>\u00a0and\u00a0<strong>Lookup data from the last = 2 hours<\/strong>, a valid documented interval\/lookback pair. These values are a practical\u00a0<strong>lab configuration<\/strong>, not a recommended production default.<\/li>\n\n\n\n<li>Under\u00a0<strong>Alert threshold<\/strong>, choose\u00a0<strong>Number of query results is greater than 0<\/strong>, so a real matching row can produce an alert.<\/li>\n\n\n\n<li>Under\u00a0<strong>Event grouping<\/strong>, choose\u00a0<strong>Group all events into a single alert<\/strong>\u00a0for the initial demonstration.<\/li>\n\n\n\n<li>Under the option for\u00a0<strong>stopping the query after an alert is generated<\/strong>, enable a finite suppression period (for example\u00a0<strong>1 hour<\/strong>)\u00a0<strong>if supported<\/strong>; this limits a flood of repeated classroom alerts. If that option is unavailable, disable the rule promptly after first alert evidence, and monitor for duplicates.<\/li>\n\n\n\n<li>Select\u00a0<strong>Test with current data \/ Results simulation<\/strong>\u00a0when present.\u00a0<strong>Expected:<\/strong>\u00a0A matching period is indicated if the recent test event fits the scheduling settings; this is still\u00a0<strong>not<\/strong>\u00a0a production alert.<\/li>\n\n\n\n<li>Under\u00a0<strong>Incident settings<\/strong>, leave\u00a0<strong>Create incidents from alerts<\/strong>\u00a0enabled. Microsoft documents that Defender XDR processes incident creation\/correlation for onboarded workspaces, even if the rule was authored in Sentinel. [R15]<\/li>\n\n\n\n<li>Under\u00a0<strong>Automated responses<\/strong>, choose\u00a0<strong>none<\/strong>. Do not add notifications to real business teams or remediation actions.<\/li>\n\n\n\n<li>Review the complete configuration, check\u00a0<strong>Validation passed<\/strong>, and select\u00a0<strong>Create<\/strong>.<\/li>\n\n\n\n<li>Return to\u00a0<strong>Active rules<\/strong>\u00a0and verify the temporary rule is enabled and query\/scope match the approved lab.<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">Phase 3 \u2014 verify the real output (do not stop at a saved rule)<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>In Defender portal open\u00a0<strong>Investigation &amp; response \u2192 Incidents &amp; alerts \u2192 Alerts<\/strong>\u00a0(navigation may be reorganized in the current unified interface).<\/li>\n\n\n\n<li>Filter by a recent time range and the\u00a0<strong>lab rule name<\/strong>. Allow enough time for scheduled execution, ingestion, and Defender correlation; there is no guarantee of an instant alert.<\/li>\n\n\n\n<li>Record\u00a0<strong>Alert name\/ID<\/strong>,\u00a0<strong>rule name<\/strong>,\u00a0<strong>created time<\/strong>,\u00a0<strong>severity<\/strong>,\u00a0<strong>resource or evidence<\/strong>, and\u00a0<strong>source<\/strong>. Screenshot\u00a0<code>D2-L05-Alert.png<\/code>.<\/li>\n\n\n\n<li>Next open\u00a0<strong>Incidents &amp; alerts \u2192 Incidents<\/strong>, or\u00a0<strong>Cases \u2192 Incident<\/strong>\u00a0if your Defender tenant uses the incident-cases preview. Locate the incident containing the alert.<\/li>\n\n\n\n<li>Record\u00a0<strong>Incident\/case ID<\/strong>,\u00a0<strong>status<\/strong>,\u00a0<strong>related alert count<\/strong>,\u00a0<strong>associated activity time<\/strong>, and\u00a0<strong>owner<\/strong>\u00a0if set. Screenshot\u00a0<code>D2-L05-Incident.png<\/code>.<\/li>\n\n\n\n<li>Compare the alert evidence back to the\u00a0<strong>AzureActivity<\/strong>\u00a0event (same subscription\/resource\/operation\/approximate time).<\/li>\n\n\n\n<li>If an alert appears\u00a0<strong>but no new incident row<\/strong>, check if it was\u00a0<strong>correlated into an existing incident<\/strong>, the incident-creation setting, permission\/filter scope, and Defender processing before concluding \u201cbroken\u201d. The documented Defender engine may group alerts differently than the scheduled rule&#8217;s initial settings. [R15]<\/li>\n\n\n\n<li>After obtaining evidence,\u00a0<strong>disable the temporary rule immediately<\/strong>\u00a0or have the instructor disable it; verify the disabled state. Keep the incident\/case available for D2-L06 and delete the rule during final cleanup.<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">PASS gate D2-05 \u2014 must have the complete evidence chain<\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th class=\"has-text-align-left\" data-align=\"left\">Boundary<\/th><th class=\"has-text-align-left\" data-align=\"left\">Evidence<\/th><th class=\"has-text-align-left\" data-align=\"left\">Actual result<\/th><\/tr><\/thead><tbody><tr><td>Approved Azure event<\/td><td>Source Activity log \/ signal RG change<\/td><td>PASS \/ BLOCKED<\/td><\/tr><tr><td>Ingested destination record<\/td><td><code>AzureActivity<\/code>&nbsp;query result in intended workspace<\/td><td>PASS \/ BLOCKED<\/td><\/tr><tr><td>Query matches data<\/td><td><code>D2-L05-Lab-Rule-Query.kql<\/code>&nbsp;returns \u22651 row<\/td><td>PASS \/ BLOCKED<\/td><\/tr><tr><td>Active rule<\/td><td>Rule saved, then enabled\/runs<\/td><td>PASS \/ BLOCKED<\/td><\/tr><tr><td>Actual alert<\/td><td>Alert ID from the controlled rule<\/td><td>PASS \/ BLOCKED<\/td><\/tr><tr><td>Actual incident\/case<\/td><td>Incident ID containing the alert<\/td><td>PASS \/ BLOCKED<\/td><\/tr><tr><td>Noise prevention<\/td><td>Lab rule disabled\/suppressed after test<\/td><td>PASS \/ BLOCKED<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Critical:<\/strong>&nbsp;A&nbsp;<code>SIMULATED<\/code>&nbsp;KQL result or a \u201ctest with current data\u201d preview does&nbsp;<strong>not<\/strong>&nbsp;satisfy the actual-alert or actual-incident gates. If the portal hasn&#8217;t produced the real alert\/incident, mark those steps&nbsp;<strong>BLOCKED<\/strong>&nbsp;and document the cause\/last observed boundary.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">D2-L06 \u2014 First-line SOC triage: classify, document, escalate<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Syllabus:<\/strong>&nbsp;F18, F19, F20, F22.&nbsp;<strong>Type:<\/strong>&nbsp;Real training alert incident; learner may be Responder or instructor-managed.&nbsp;<strong>DOC-VERIFIED:<\/strong>&nbsp;[R13], [R16], [R17].<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Part A \u2014 identify which incident UI your tenant actually uses<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Path A: Current documented standard\/legacy Defender incident queue<\/strong><\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Open\u00a0<strong>Investigation &amp; response \u2192 Incidents &amp; alerts \u2192 Incidents<\/strong>\u00a0in Defender portal.<\/li>\n\n\n\n<li>Filter for the approved lab rule, the appropriate workspace\/source, and recent creation time.<\/li>\n\n\n\n<li>Open the incident and look for the\u00a0<strong>Summary\/overview<\/strong>,\u00a0<strong>Alerts<\/strong>,\u00a0<strong>Evidence\/entities<\/strong>,\u00a0<strong>Activity\/Comments<\/strong>, and any available\u00a0<strong>attack story<\/strong>\u00a0or timeline.<\/li>\n\n\n\n<li>Use\u00a0<strong>Manage incident<\/strong>\u00a0or the management pane to set a training owner, appropriate status, and notes (if the learner has permission).<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Path B: Newer incident-cases preview (where enabled)<\/strong><\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Open\u00a0<strong>Cases \u2192 Incident<\/strong>\u00a0in Defender portal.<\/li>\n\n\n\n<li>Select the incident case and check\u00a0<strong>Summary<\/strong>,\u00a0<strong>Attack graph<\/strong>, and\u00a0<strong>Artifacts \u2192 Alerts \/ Assets \/ Evidence \/ Activities<\/strong>\u00a0as available.<\/li>\n\n\n\n<li>To manage case fields, select the\u00a0<strong>three-dot menu \u2192 Manage case<\/strong>\u00a0(or the available\u00a0<strong>Manage case<\/strong>\u00a0control).<\/li>\n\n\n\n<li>Verify the learner has appropriate\u00a0<strong>Defender unified RBAC Security Data Read<\/strong>\u00a0to view or\u00a0<strong>Security Data Manage<\/strong>\u00a0to update case information. [R16], [R17]<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Important:<\/strong>&nbsp;As of this edition, Microsoft identifies incident cases as a&nbsp;<strong>preview<\/strong>&nbsp;and maintains a legacy incident experience. Do not treat an unavailable preview menu as a learner failure; use the supported incident interface actually provisioned. [R16]<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Part B \u2014 perform the evidence-based triage<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Record incident or case\u00a0<strong>ID<\/strong>,\u00a0<strong>creation time<\/strong>,\u00a0<strong>severity<\/strong>,\u00a0<strong>status<\/strong>,\u00a0<strong>owner<\/strong>,\u00a0<strong>associated alerts<\/strong>, and\u00a0<strong>detection source<\/strong>.<\/li>\n\n\n\n<li>Read the\u00a0<strong>alert&#8217;s detection description<\/strong>\u00a0before taking action. Ask: \u201cWhat condition did the analytic rule actually test?\u201d<\/li>\n\n\n\n<li>Inspect the known\u00a0<strong>ResourceId<\/strong>,\u00a0<strong>OperationNameValue<\/strong>,\u00a0<strong>ActivityStatusValue<\/strong>,\u00a0<strong>Caller<\/strong>, and\u00a0<strong>TimeGenerated<\/strong>. If the alert view omits fields, use a saved workspace query from D2-L05.<\/li>\n\n\n\n<li>Confirm that the resource belongs to the\u00a0<strong>preapproved lab subscription and lab signal group<\/strong>.<\/li>\n\n\n\n<li>Compare the timestamps: known trainee action, source Activity log record,\u00a0<code>AzureActivity<\/code>\u00a0record, alert, and incident. Account for processing delays.<\/li>\n\n\n\n<li>Review available entity or evidence panes, but\u00a0<strong>do not invent user, IP, device, or UEBA signals<\/strong>\u00a0if they are not present or licensed in the tenant.<\/li>\n\n\n\n<li>Test\u00a0<strong>two alternate hypotheses<\/strong>: (H1) expected lab action correctly detected; (H2) activity outside the lab or unapproved scope. State what source evidence would distinguish them.<\/li>\n\n\n\n<li>Decide\u00a0<strong>risk level and disposition<\/strong>\u00a0based on evidence; do not mark the activity malicious merely because an alert exists.<\/li>\n\n\n\n<li>In a writable lab case, set an approved status such as\u00a0<strong>In progress<\/strong>\u00a0while analyzing. Assign to yourself or the instructor as permitted.<\/li>\n\n\n\n<li>Add a short evidence-based comment:\u00a0<code>TRAINING EVENT \u2014 lab rule [name] matched approved RG [name], action [operation], UTC [time]; no disruptive response taken.<\/code><\/li>\n\n\n\n<li>Resolve\/close the training case using the\u00a0<strong>actual classification\/determination choices supported in your portal<\/strong>. For an authorized test that behaved as designed, an\u00a0<strong>expected activity\/security testing<\/strong>\u00a0outcome (where offered) is generally more faithful than \u201cmalicious attack\u201d. Discuss options with the instructor if different portal choices are available.<\/li>\n\n\n\n<li>Note where a case update and related incident\/alert status are or are not synchronized; avoid assuming that\u00a0<strong>closing the case automatically closes each underlying alert<\/strong>\u00a0in every preview flow. [R17]<\/li>\n\n\n\n<li>Save the incident record, its query evidence, and the final disposition in the evidence folder.<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">Incident report template \u2014 fill this completely<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code># Aster Retail \u2014 Approved Training Incident\n\n- Exercise: D2-L06\n- Incident\/case ID:\n- Analytics rule name \/ ID:\n- Azure training subscription \/ resource identifier:\n- Initial alert UTC time:\n- Relevant event UTC time:\n- Severity \/ status \/ assigned owner:\n- Alert(s) associated:\n- Evidence examined (query filenames, fields, screenshots):\n- Observed action and actor identifier:\n- Why this looked interesting to a detection rule:\n- Alternate benign explanation:\n- Conclusion (evidence-based, avoid unsupported claims):\n- Classification \/ determination selected in portal:\n- Actions performed (training-only; no remediation):\n- Escalation required? To whom and why?:\n- Follow-up \/ rule improvement suggestion:\n- Final status \/ reviewer \/ UTC timestamp:\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Escalation decision matrix<\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th class=\"has-text-align-left\" data-align=\"left\">Situation<\/th><th class=\"has-text-align-left\" data-align=\"left\">Learner action<\/th><th class=\"has-text-align-left\" data-align=\"left\">Who reviews?<\/th><\/tr><\/thead><tbody><tr><td>Approved signal group and action match planned lab<\/td><td>Document and close as expected security testing<\/td><td>Instructor \/ SOC lead<\/td><\/tr><tr><td>Different subscription, unexpected account, or non-lab target<\/td><td><strong>Stop remediation<\/strong>; preserve facts, escalate for verification<\/td><td>Instructor + authorized SOC lead<\/td><\/tr><tr><td>Query missing evidence or timestamps inconsistent<\/td><td>Leave investigation open; collect source\/destination proof<\/td><td>SOC L2 or connector owner<\/td><\/tr><tr><td>Scope\/permissions preventing incident updates<\/td><td>Do not elevate yourself; request authorized owner<\/td><td>Admin \/ incident manager<\/td><\/tr><tr><td>Actual signs of account misuse outside the exercise<\/td><td>Follow real security incident policy,&nbsp;<strong>not<\/strong>&nbsp;training steps<\/td><td>Organization&#8217;s real security team<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>PASS gate D2-06:<\/strong>&nbsp;Incident record is complete, evidence directly supports the conclusion, appropriate status\/owner\/disposition are recorded, and the learner can explain at least one alternative hypothesis. If a learner cannot change status because of role boundaries, the instructor performs the action and records&nbsp;<code>OBSERVED (role restricted)<\/code>; do not make unsupported changes.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">D2-L07 \u2014 Read and interpret a built-in Microsoft Sentinel workbook<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Syllabus:<\/strong>&nbsp;F21.&nbsp;<strong>Type:<\/strong>&nbsp;Consume existing visualizations; not an advanced custom-workbook lesson.&nbsp;<strong>DOC-VERIFIED:<\/strong>&nbsp;[R18].<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Prerequisites<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>A workbook template installed through\u00a0<strong>Content hub<\/strong>, or an\u00a0<strong>instructor-provided saved workbook<\/strong>\u00a0with a data source supported by your lab.<\/li>\n\n\n\n<li>Sufficient workbook read permission; access to the specific Log Analytics workspace table used by the workbook.<\/li>\n\n\n\n<li>A plan for\u00a0<em>empty visualizations<\/em>: not all template workbooks accept\u00a0<code>AzureActivity<\/code>; some require other connectors. Do\u00a0<strong>not<\/strong>\u00a0assume the installed Azure Activity solution provides a usable workbook for every environment.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Guided steps<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>In Defender portal expand\u00a0<strong>Microsoft Sentinel \u2192 Threat management \u2192 Workbooks<\/strong>.<\/li>\n\n\n\n<li>Select\u00a0<strong>Templates<\/strong>\u00a0to view installed workbook templates.<\/li>\n\n\n\n<li>Open a workbook whose\u00a0<strong>required data types<\/strong>\u00a0are actually present in the training workspace. If none qualifies, use an instructor-provided saved workbook and record that source. Do not install unrelated enterprise connectors solely to populate a dashboard.<\/li>\n\n\n\n<li>Read its description, named data dependencies, workspaces and purpose before opening it.<\/li>\n\n\n\n<li>If the instructor has authorized saving an instance, select\u00a0<strong>Save<\/strong>, choose the\u00a0<strong>training subscription\/RG<\/strong>\u00a0location, then\u00a0<strong>View saved workbook<\/strong>. Otherwise open the instructor-provided workbook read-only.<\/li>\n\n\n\n<li>Locate and record the\u00a0<strong>time-range filter<\/strong>. Compare a narrow range and a wider range, keeping the same source scope.<\/li>\n\n\n\n<li>Locate the chart\/table most relevant to the lab (for example, administrative operations by time or status if available).<\/li>\n\n\n\n<li>Identify\u00a0<strong>one chart axis<\/strong>,\u00a0<strong>one filter<\/strong>,\u00a0<strong>one number<\/strong>, and\u00a0<strong>one actionable SOC question<\/strong>\u00a0answered by the visualization.<\/li>\n\n\n\n<li>If the view is empty, inspect whether the required tables exist and time filters include matching data. A working template with no source data is not a platform failure.<\/li>\n\n\n\n<li>If the Defender portal displays a feature that requires\u00a0<strong>Open in Azure<\/strong>, follow the permitted view workflow only; do not switch the\u00a0<em>core course experience<\/em>\u00a0to the legacy Azure Sentinel interface. [R18]<\/li>\n\n\n\n<li>Save or screenshot the supported visualization, with time range and workspace displayed. File:\u00a0<code>D2-L07-Workbook-Interpretation.png<\/code>.<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">Interpretation questions \u2014 learner writes answers<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>What population of records and what time range are shown?<\/li>\n\n\n\n<li>Does the chart show\u00a0<strong>events, unique users\/resources, alerts, or incidents<\/strong>? Explain.<\/li>\n\n\n\n<li>What could make a chart show zero events even when ingestion works?<\/li>\n\n\n\n<li>What follow-up KQL query would you run if the chart shows a sudden spike?<\/li>\n\n\n\n<li>Can a dashboard alone prove that a resource action was malicious? Why not?<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>PASS gate D2-07:<\/strong>&nbsp;Workbook of a compatible type was opened; learner accurately interprets one visual, its scope and filters, and states one query-driven investigative follow-up. If no compatible workbook exists, record&nbsp;<code>BLOCKED \u2014 missing supported template\/source<\/code>&nbsp;rather than inventing workbook data.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">D2-L08 \u2014 Entry-level SOC operational SOP and guided troubleshooting<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Syllabus:<\/strong>&nbsp;F22\u2013F23.&nbsp;<strong>Type:<\/strong>&nbsp;Diagnostic workshop.&nbsp;<strong>Deliverable:<\/strong>&nbsp;<code>Day02\/D2-L08-Troubleshooting-Worksheet.md<\/code>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Reusable L1 SOC checklist (start with observation, never remediation)<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Confirm the\u00a0<strong>incident ID<\/strong>, created UTC time, source detection, severity and current owner.<\/li>\n\n\n\n<li>Validate the detection has a\u00a0<strong>real triggering alert<\/strong>, not merely an enabled rule.<\/li>\n\n\n\n<li>Check\u00a0<strong>workspace\/source<\/strong>\u00a0and that query time range includes the signal.<\/li>\n\n\n\n<li>Verify\u00a0<strong>event details<\/strong>, relevant entities, and any linked alerts.<\/li>\n\n\n\n<li>Check whether the incident represents\u00a0<strong>planned training, expected activity, a false alarm, or possible real threat<\/strong>.<\/li>\n\n\n\n<li>Identify the\u00a0<strong>one next question<\/strong>\u00a0that would most reduce uncertainty, plus the KQL\/source needed to answer it.<\/li>\n\n\n\n<li>Add factual case notes and a secure evidence link, avoiding secrets or unrelated PII.<\/li>\n\n\n\n<li>Escalate to the correct role or close only within allowed permissions and documented process.<\/li>\n\n\n\n<li>Review whether the rule\/template data prerequisites and signal quality are sufficient.<\/li>\n\n\n\n<li>Confirm lab rule suppression\/disablement at the end of the exercise.<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">Troubleshooting Challenge T01 \u2014 Table error \/ missing data<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Instructor injects:<\/strong>\u00a0Learner queries\u00a0<code>AzureActivity<\/code>\u00a0in a workspace with no Activity export, or selects the wrong workspace.<\/li>\n\n\n\n<li><strong>Symptoms:<\/strong>\u00a0Table may be missing, query returns zero rows, or access is denied.<\/li>\n\n\n\n<li><strong>Student action:<\/strong>\u00a0Confirm tenant\/workspace scope \u2192 inspect broad table query \u2192 inspect Azure Activity export and source \u2192 distinguish missing table \/ no data \/ no permission.<\/li>\n\n\n\n<li><strong>Evidence:<\/strong>\u00a0Screenshot\/command showing the\u00a0<em>first point<\/em>\u00a0where expected state fails.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Troubleshooting Challenge T02 \u2014 Overly narrow time filter<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Instructor injects:<\/strong>\u00a0Recent event exists, but query uses\u00a0<code>ago(1m)<\/code>\u00a0or UI filter excludes it.<\/li>\n\n\n\n<li><strong>Student action:<\/strong>\u00a0Compare source UTC time \u2192 expand query window \u2192 remove conflicting filters \u2192 rerun.<\/li>\n\n\n\n<li><strong>Correct finding:<\/strong>\u00a0Query was valid; lookback did not cover available telemetry.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Troubleshooting Challenge T03 \u2014 Analytic rule enabled, no alert<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Instructor injects:<\/strong>\u00a0Template is active, but its KQL has no matching rows for a benign tag update.<\/li>\n\n\n\n<li><strong>Student action:<\/strong>\u00a0Verify required source tables \u2192 run rule KQL with current source \u2192 inspect schedule\/threshold \u2192 explain mismatch; if approved, use controlled D2-L05 fallback.<\/li>\n\n\n\n<li><strong>Correct finding:<\/strong>\u00a0\u201cEnabled\u201d is not equal to \u201ctriggered\u201d.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Troubleshooting Challenge T04 \u2014 Alert present, incident not found<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Instructor injects:<\/strong>\u00a0Alert visible, but the analyst&#8217;s time filter\/workspace selection differs; or Defender correlates into an existing incident.<\/li>\n\n\n\n<li><strong>Student action:<\/strong>\u00a0Find alert ID and linked incident; examine rule incident settings; search both current\u00a0<strong>Incidents<\/strong>\u00a0and\u00a0<strong>Cases \u2192 Incident<\/strong>\u00a0if applicable; check permission and creation delay.<\/li>\n\n\n\n<li><strong>Correct finding:<\/strong>\u00a0Confirm whether correlation, UI scope or timing explains the missing\u00a0<em>new<\/em>\u00a0row.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Troubleshooting Challenge T05 \u2014 Workbook has no charts<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Instructor injects:<\/strong>\u00a0Selected workbook depends on a table absent in the training workspace.<\/li>\n\n\n\n<li><strong>Student action:<\/strong>\u00a0Check\u00a0<code>Required data types<\/code>\u00a0and actual workspace tables; switch to a supported template \/ provided workbook.<\/li>\n\n\n\n<li><strong>Correct finding:<\/strong>\u00a0Lack of required data is different from workbook corruption.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Troubleshooting Challenge T06 \u2014 Unauthorized action blocked<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Instructor injects:<\/strong>\u00a0Reader tries to install a solution or edit an incident.<\/li>\n\n\n\n<li><strong>Student action:<\/strong>\u00a0Identify the actual task \u2192 map it to a role and scope \u2192 request the minimum authorized grant or instructor action.<\/li>\n\n\n\n<li><strong>Correct finding:<\/strong>\u00a0Reader can inspect some resources but not create rules or manage incidents.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">General diagnostic decision tree<\/h3>\n\n\n\n<pre class=\"wp-block-preformatted\">NoYesNoYesNoYesNoYesNoYesNoYesExpected result absentSource event exists?Check Azure Activity scope, action, UTC filterExport configured to right workspace?Check Policy\/diagnostic destination and approvalAzureActivity query returns signal?Check delay, permissions, workspace, table, KQL filtersRule query returns matches?Check template prerequisites, window, predicatesActual alert created?Check enabled state, schedule, threshold, suppressionIncident\/case contains alert?Check correlation, incident settings, portal filtersReview evidence, document, classify, close\/escalate<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>PASS gate D2-08:<\/strong>&nbsp;Each learner correctly diagnoses&nbsp;<strong>four distinct failure classes<\/strong>&nbsp;from source, export, KQL, rule, incident or workbook, and identifies a non-disruptive next step. Correctly&nbsp;<strong>stopping and escalating<\/strong>&nbsp;is acceptable when privileges or environment controls block action.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">D2-L09 \u2014 Final Foundations capstone: from a change to a documented incident<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Syllabus:<\/strong>&nbsp;Entire Foundations range F01\u2013F23.&nbsp;<strong>Type:<\/strong>&nbsp;Supervised applied assessment.&nbsp;<strong>No hourly schedule<\/strong>.<br><strong>Prerequisites:<\/strong>&nbsp;Day 1 architecture\/readiness evidence, at least one relevant source signal, query permissions, and instructor-approved detection.&nbsp;<strong>Deliverable:<\/strong>&nbsp;<code>Assessment\/&lt;Learner-ID&gt;-Foundations-Capstone.md<\/code>&nbsp;plus evidence.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Practical scenario<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The training cloud administrator announces an approved change in the&nbsp;<strong>unique Aster Retail signal RG<\/strong>. Your task is to prove the change occurred, determine whether Sentinel observed it, ensure an authorized rule evaluated relevant data, and record the resulting incident according to the SOC checklist. The activity is&nbsp;<strong>expected security testing<\/strong>, not an attack.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Assessment execution steps<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Write\u00a0<strong>What, Why, Who, When, Where, How<\/strong>\u00a0for this event-to-incident exercise in no more than six short lines.<\/li>\n\n\n\n<li>Submit or point to the\u00a0<strong>architecture diagram<\/strong>; identify the exact data source, connector method, Sentinel workspace and Defender experience.<\/li>\n\n\n\n<li>Show the approved subscription, workspace, and\u00a0<strong>least privilege<\/strong>\u00a0separation; do not expose private account details in exported evidence.<\/li>\n\n\n\n<li>Capture the Azure portal\u00a0<strong>source Activity log<\/strong>\u00a0evidence for the instructor&#8217;s designated benign change.<\/li>\n\n\n\n<li>Write and execute a KQL query identifying the same action in\u00a0<code>AzureActivity<\/code>, with at least one scope filter and a sensible time range.<\/li>\n\n\n\n<li>Write a KQL summary grouped by\u00a0<strong>operation or status<\/strong>\u00a0and explain what its rows represent.<\/li>\n\n\n\n<li>Show the enabled\u00a0<strong>starter template rule<\/strong>\u00a0and explain its source prerequisites and why it might or might not fire for this action.<\/li>\n\n\n\n<li>If necessary and expressly approved, demonstrate\u00a0<strong>D2-L05&#8217;s limited lab rule<\/strong>. Show real rule, real matching query, actual alert, and incident\/case ID. Disable lab rule as soon as this evidence is captured.<\/li>\n\n\n\n<li>Investigate the incident: identify owner, severity, linked alert, relevant resource, timeline, and evidence; describe at least one\u00a0<strong>alternative benign explanation<\/strong>.<\/li>\n\n\n\n<li>Record the correct disposition:\u00a0<strong>approved security testing\/expected lab event<\/strong>. Choose available portal classification\/determination values faithfully; do not misclassify harmless activity as a real compromise.<\/li>\n\n\n\n<li>Open a compatible\u00a0<strong>built-in workbook<\/strong>\u00a0and explain its scope, time filter, and one chart or table.<\/li>\n\n\n\n<li>Diagnose one injected\u00a0<strong>negative test<\/strong>: wrong workspace, wrong filter, missing prerequisite, no alert, or insufficient role.<\/li>\n\n\n\n<li>Submit the completed report and\u00a0<strong>cleanup acknowledgment<\/strong>. Instructor evaluates the\u00a0<strong>actual evidence<\/strong>, not simply attendance.<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">Objective assessment rubric \u2014 100 points<\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th class=\"has-text-align-left\" data-align=\"left\">Criterion<\/th><th class=\"has-text-align-right\" data-align=\"right\">Points<\/th><th class=\"has-text-align-left\" data-align=\"left\">Observable pass evidence<\/th><\/tr><\/thead><tbody><tr><td>5W1H, SOC roles, SIEM\/XDR comparisons, architecture<\/td><td class=\"has-text-align-right\" data-align=\"right\">15<\/td><td>Correct definitions and arrows; ownership boundaries<\/td><\/tr><tr><td>Tenant\/role\/cost readiness and safe workspace\/Sentinel onboarding<\/td><td class=\"has-text-align-right\" data-align=\"right\">15<\/td><td>Correct workspace, region, RG and Defender association; approvals<\/td><\/tr><tr><td>Authorized Azure Activity source\/export\/ingestion<\/td><td class=\"has-text-align-right\" data-align=\"right\">20<\/td><td>Match between real source event and&nbsp;<code>AzureActivity<\/code>&nbsp;record<\/td><\/tr><tr><td>Basic KQL and data interpretation<\/td><td class=\"has-text-align-right\" data-align=\"right\">20<\/td><td>Correct&nbsp;<code>where<\/code>\/<code>project<\/code>\/<code>sort<\/code>\/<code>summarize<\/code>\/<code>bin<\/code>, timestamps, counts<\/td><\/tr><tr><td>Template content and real detection validation<\/td><td class=\"has-text-align-right\" data-align=\"right\">10<\/td><td>Installed solution, active template, prerequisite explanation; real alert if available<\/td><\/tr><tr><td>Incident triage and case record<\/td><td class=\"has-text-align-right\" data-align=\"right\">10<\/td><td>Alert\/incident link, facts, hypotheses, correct disposition<\/td><\/tr><tr><td>Workbook interpretation<\/td><td class=\"has-text-align-right\" data-align=\"right\">5<\/td><td>Actual relevant visualization and filter explanation<\/td><\/tr><tr><td>Troubleshooting, safe actions, cleanup<\/td><td class=\"has-text-align-right\" data-align=\"right\">5<\/td><td>Diagnoses root cause, disables lab rule, records owner<\/td><\/tr><tr><td><strong>TOTAL<\/strong><\/td><td class=\"has-text-align-right\" data-align=\"right\"><strong>100<\/strong><\/td><td><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Suggested academic threshold:<\/strong>&nbsp;<strong>80\/100<\/strong>,&nbsp;<em>plus<\/em>&nbsp;mandatory critical-skill gates below. This passing score is a&nbsp;<strong>training recommendation<\/strong>, not a Microsoft certification policy.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Mandatory critical-skill gates<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>G1 \u2014 Access &amp; safe scope:<\/strong>\u00a0Learner knows which subscription\/workspace is in use and respects role\/approval limits.<\/li>\n\n\n\n<li><strong>G2 \u2014 Genuine ingestion (or instructor-attested shared environment):<\/strong>\u00a0A real Azure Activity event is linked to a real\u00a0<code>AzureActivity<\/code>\u00a0workspace record. Offline\u00a0<code>datatable<\/code>\u00a0cannot replace this.<\/li>\n\n\n\n<li><strong>G3 \u2014 Query competency:<\/strong>\u00a0Learner independently executes the required KQL operators and can explain empty results.<\/li>\n\n\n\n<li><strong>G4 \u2014 Detection\/incident workflow:<\/strong>\u00a0Either a real lab alert and related incident are demonstrated, or an\u00a0<strong>explicit, signed environment blocker<\/strong>\u00a0is documented and a controlled supervised remediation\/retest is scheduled.<\/li>\n\n\n\n<li><strong>G5 \u2014 Investigation discipline:<\/strong>\u00a0Correct evidence-based disposition and no unauthorized remediation.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Decision:<\/strong>&nbsp;<code>PASS \/ PASS-WITH-APPROVED-OBSERVED-SETUP \/ REMEDIATION-REQUIRED \/ BLOCKED-BY-ENVIRONMENT<\/code>. Do&nbsp;<strong>not<\/strong>&nbsp;issue an unconditional live-lab PASS when the connector, alert, or incident has never been observed. Learners should remediate and reattempt missed mandatory gates before being marked fully eligible for&nbsp;<strong>Day 3 Intermediate<\/strong>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Instructor answer key \u2014 check outcomes, not fixed row counts<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Workspaces:<\/strong>\u00a0Azure Log Analytics workspace holds relevant tables; Sentinel is enabled on that workspace; Defender provides the primary operations experience.<\/li>\n\n\n\n<li><strong>Source:<\/strong>\u00a0Azure Activity tracks Azure control-plane actions; the approved diagnostic pipeline sends events to the intended workspace.<\/li>\n\n\n\n<li><strong>Query:<\/strong>\u00a0Count may vary. A correct query returns a matching\u00a0<code>ResourceId<\/code>\u00a0or\u00a0<code>ResourceGroup<\/code>, reasonable UTC time, and action\/status fields.<\/li>\n\n\n\n<li><strong>Template:<\/strong>\u00a0An installed template is not yet an active rule, and an active rule is not proof an alert fired.<\/li>\n\n\n\n<li><strong>Testing:<\/strong>\u00a0A scheduled-rule result preview is\u00a0<strong>not<\/strong>\u00a0an actual alert. A real alert carries a record\/ID and appears in the Alerts queue.<\/li>\n\n\n\n<li><strong>Incident:<\/strong>\u00a0Defender may correlate multiple alerts into an incident; a missing\u00a0<strong>new<\/strong>\u00a0row is not proof that no incident exists.<\/li>\n\n\n\n<li><strong>Disposition:<\/strong>\u00a0This scenario is preapproved lab activity, so justify an expected\/security-testing classification where available.<\/li>\n\n\n\n<li><strong>Workbook:<\/strong>\u00a0A workbook visual reflects data source\/time filters; it does not independently establish maliciousness.<\/li>\n\n\n\n<li><strong>Permissions:<\/strong>\u00a0Least privilege and scoped elevation through instructor\/admin, not blanket Owner access.<\/li>\n\n\n\n<li><strong>Cleanup:<\/strong>\u00a0Rule is disabled\/deleted, signal RG is removed when approved, data connector\/policy and workspace lifecycle are recorded.<\/li>\n<\/ol>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">3. Safe lab closure \u2014 END-L01<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Purpose:<\/strong>&nbsp;Ensure the exercise does not leave alert storms, orphaned billable telemetry, unwanted Azure Policy assignments, unused workspaces or sensitive evidence.&nbsp;<strong>Only the instructor\/cloud owner performs deletion or offboarding.<\/strong>&nbsp;[R19], [R20], [R21].<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Step 1 \u2014 stop active classroom detection<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li>In Defender portal open\u00a0<strong>Microsoft Sentinel \u2192 Configuration \u2192 Analytics \u2192 Active rules<\/strong>.<\/li>\n\n\n\n<li>Filter by the exact lab ID\/name, such as\u00a0<code>LAB01 - Approved Azure Activity Test<\/code>.<\/li>\n\n\n\n<li>Confirm the exact rule belongs to your training workspace and was created for the class.<\/li>\n\n\n\n<li><strong>Disable<\/strong>\u00a0it and verify its status. If authorized and the retention policy allows,\u00a0<strong>delete<\/strong>\u00a0the temporary lab rule; capture the deletion confirmation.<\/li>\n\n\n\n<li>Review the rule created from\u00a0<strong>Suspicious Resource deployment<\/strong>. If it was installed only for this class and is not used by anyone else, disable\/remove it as the instructor approves; do not touch a shared enterprise active rule.<\/li>\n\n\n\n<li>Search for unexpected additional training rules and confirm none remain enabled. Record that the last query-run\/alert test is complete.<\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\">Step 2 \u2014 close the training incident properly<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Open the relevant\u00a0<strong>Incidents<\/strong>\u00a0queue or\u00a0<strong>Cases \u2192 Incident<\/strong>\u00a0view for the tenant.<\/li>\n\n\n\n<li>Confirm the lab event disposition and the case\/incident closure status.<\/li>\n\n\n\n<li>Leave a last comment containing the training rule ID and the statement\u00a0<code>TRAINING ONLY; no production remediation authorized<\/code>.<\/li>\n\n\n\n<li>Record incident\/case IDs for assessment, but follow the institution&#8217;s retention and redaction rules for exported evidence.<\/li>\n\n\n\n<li>Never bulk-close unrelated incidents in a shared tenant.<\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\">Step 3 \u2014 clean up the benign signal resource group<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li>In Azure portal open\u00a0<strong>Resource groups \u2192 [your unique signal group]<\/strong>.<\/li>\n\n\n\n<li>Review\u00a0<strong>all contained resources<\/strong>. It should be empty or contain only instructor-approved disposable lab resources.<\/li>\n\n\n\n<li>If it contains anything unexpected,\u00a0<strong>STOP<\/strong>\u00a0and ask the subscription owner; do not delete.<\/li>\n\n\n\n<li>If verified empty\/disposable, use\u00a0<strong>Delete resource group<\/strong>, type the exact name when prompted, and confirm only under the authorized cleanup plan.<\/li>\n\n\n\n<li>Confirm the group is absent from the active RG list and record cleanup evidence. Note that its prior Azure Activity events may remain in logs for the configured retention period.<\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\">Step 4 \u2014 remove lab-created export \/ Policy&nbsp;<em>only when exclusive to the lab<\/em><\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Use the instructor&#8217;s\u00a0<strong>configuration inventory<\/strong>\u00a0from D1-L07: export method, diagnostic setting name or policy assignment, scope, destination, owner and creation time.<\/li>\n\n\n\n<li>If using a unique lab-only diagnostic setting, ask the subscription owner to remove that setting in\u00a0<strong>Monitor \u2192 Activity log \u2192 Export Activity Logs<\/strong>\u00a0after checking that no other process relies on it.<\/li>\n\n\n\n<li>If using a unique lab-only Azure Policy assignment, ask the policy owner to verify the assignment and any created diagnostic settings\/remediation resources before removing them.\u00a0<strong>Removing a policy assignment may not automatically remove every diagnostic setting it created.<\/strong>\u00a0Verify the final state separately.<\/li>\n\n\n\n<li>If the export predates the class, is shared, or is enterprise-mandated,\u00a0<strong>leave it in place<\/strong>\u00a0and document \u201cpre-existing; retained by owner.\u201d<\/li>\n\n\n\n<li>Recheck that the affected subscription is not unintentionally exporting duplicate data to the training workspace.<\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\">Step 5 \u2014 decide what happens to Sentinel and the Log Analytics workspace<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li>In the instructor inventory, mark workspace as\u00a0<strong>keep for the five-day program<\/strong>,\u00a0<strong>keep for later approved reuse<\/strong>, or\u00a0<strong>dispose<\/strong>.<\/li>\n\n\n\n<li>If Days 3\u20135 will reuse the workspace,\u00a0<strong>do not delete or offboard it<\/strong>\u00a0simply because Day 2 ended.<\/li>\n\n\n\n<li>If the workspace is dedicated to the class and must be removed, review the documented\u00a0<strong>Remove Microsoft Sentinel<\/strong>\u00a0process and implications\u00a0<em>before<\/em>\u00a0doing so. Removing Sentinel may delete Sentinel-specific data connector configurations and tables and can take time; it is not the same operation as deleting a resource group. [R19], [R20]<\/li>\n\n\n\n<li>If deleting an unneeded Log Analytics workspace, the owner must understand its\u00a0<strong>soft-delete\/recovery<\/strong>\u00a0behavior and downstream effects. Microsoft documents a soft-delete recovery window and potential permanent loss of linked solution configurations. Never force permanent deletion as part of a learner exercise. [R21]<\/li>\n\n\n\n<li>Confirm with the cost owner that no new lab-only connector\/workspace resource is left without documented ownership and billing review.<\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\">Step 6 \u2014 submit final signed cleanup record<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>Instructor:                             __________________\nSubscription \/ tenant reviewed:         __________________\nTraining alert rule disabled\/deleted:   Yes \/ No \/ Retained by owner\nTemplate rule disabled\/deleted:         Yes \/ No \/ Pre-existing\nTraining incident disposition complete: Yes \/ No\nSignal RG deleted or retained:          __________________\nActivity export retained\/removed:       __________________\nPolicy assignment retained\/removed:     __________________\nSentinel workspace retained\/removed:    __________________\nCost owner informed:                    Yes \/ No\nEvidence archived under policy:        __________________\nCleanup UTC timestamp:                 __________________\nReviewer approval:                     __________________\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>PASS gate END-01:<\/strong>&nbsp;Nothing lab-only remains enabled without a named owner.&nbsp;<strong>STOP<\/strong>&nbsp;on any ambiguity about deleting a shared RG, policy assignment, workspace, data connector or incident.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">4. Extended troubleshooting reference \u2014 symptom \u2192 check \u2192 safe resolution<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">This table is designed for&nbsp;<em>live<\/em>&nbsp;classroom diagnosis. Error text, portal wording, and feature availability depend on tenant configuration.&nbsp;<strong>Always capture the actual error message.<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th class=\"has-text-align-right\" data-align=\"right\">#<\/th><th class=\"has-text-align-left\" data-align=\"left\">Symptom<\/th><th class=\"has-text-align-left\" data-align=\"left\">Most useful verification<\/th><th class=\"has-text-align-left\" data-align=\"left\">Safe next step \/ expected diagnosis<\/th><\/tr><\/thead><tbody><tr><td class=\"has-text-align-right\" data-align=\"right\">1<\/td><td>Wrong Azure directory or tenant<\/td><td>Account selector + subscription tenant<\/td><td>Switch to authorized tenant; repeat access check<\/td><\/tr><tr><td class=\"has-text-align-right\" data-align=\"right\">2<\/td><td>Subscription invisible<\/td><td>Subscriptions page \/ current directory<\/td><td>Ask identity admin for scoped access; no account guessing<\/td><\/tr><tr><td class=\"has-text-align-right\" data-align=\"right\">3<\/td><td>RG\/workspace create button disabled<\/td><td>IAM at&nbsp;<em>resource<\/em>&nbsp;scope, Azure Policy denial<\/td><td>Contact provisioner\/policy owner<\/td><\/tr><tr><td class=\"has-text-align-right\" data-align=\"right\">4<\/td><td>Workspace creation returns a policy error<\/td><td>Deployment details show deny policy assignment<\/td><td>Use approved region\/parameters, or ask policy owner<\/td><\/tr><tr><td class=\"has-text-align-right\" data-align=\"right\">5<\/td><td>Workspace not listed when adding Sentinel<\/td><td>Name\/region\/type\/subscription and current role<\/td><td>Verify supported workspace type and effective permissions<\/td><\/tr><tr><td class=\"has-text-align-right\" data-align=\"right\">6<\/td><td>Sentinel appears in Azure, not Defender<\/td><td>Sentinel Workspaces settings in Defender<\/td><td>Confirm onboarding\/admin rights; allow initial provisioning<\/td><\/tr><tr><td class=\"has-text-align-right\" data-align=\"right\">7<\/td><td>Azure Activity solution not in Content hub<\/td><td>Search filters, content status, tenant<\/td><td>Clear filters; select supported content; log blocker<\/td><\/tr><tr><td class=\"has-text-align-right\" data-align=\"right\">8<\/td><td>Content Hub install denied<\/td><td>Sentinel Contributor at correct RG<\/td><td>Instructor\/admin performs install; do not grant broad Owner<\/td><\/tr><tr><td class=\"has-text-align-right\" data-align=\"right\">9<\/td><td>Azure Activity connector shows disconnected<\/td><td>Diagnostic export or policy assignment existence<\/td><td>Inspect actual approved scope\/destination; check delays<\/td><\/tr><tr><td class=\"has-text-align-right\" data-align=\"right\">10<\/td><td>Cannot assign Azure Policy<\/td><td>Owner at&nbsp;<em>policy assignment scope<\/em><\/td><td>Authorized policy owner executes assignment<\/td><\/tr><tr><td class=\"has-text-align-right\" data-align=\"right\">11<\/td><td>Activity log visible,&nbsp;<code>AzureActivity<\/code>&nbsp;absent<\/td><td>Export config \/ status \/ correct workspace<\/td><td>Repair pipeline, not KQL syntax<\/td><\/tr><tr><td class=\"has-text-align-right\" data-align=\"right\">12<\/td><td>Activity log contains event but KQL no match<\/td><td>Query time range and&nbsp;<code>ResourceId<\/code>\/<code>ResourceGroup<\/code><\/td><td>Broaden scope\/time, use case-insensitive comparison<\/td><\/tr><tr><td class=\"has-text-align-right\" data-align=\"right\">13<\/td><td><code>AzureActivity<\/code>&nbsp;table unknown<\/td><td>Confirm Log Analytics workspace has connector data<\/td><td>Inspect table\/permission; no invented data<\/td><\/tr><tr><td class=\"has-text-align-right\" data-align=\"right\">14<\/td><td>\u201cForbidden\u201d on query<\/td><td>Actual workspace query\/read permissions<\/td><td>Grant only minimum required access after admin review<\/td><\/tr><tr><td class=\"has-text-align-right\" data-align=\"right\">15<\/td><td>Wrong&nbsp;<code>Caller<\/code>&nbsp;identity interpretation<\/td><td>Real field value and claims context<\/td><td>Treat GUID\/SPN as identity identifier, not always a human<\/td><\/tr><tr><td class=\"has-text-align-right\" data-align=\"right\">16<\/td><td>Query&nbsp;<code>where<\/code>&nbsp;filter gives zero<\/td><td>Run unfiltered query and compare field values<\/td><td>Fix predicate, casing or lookback<\/td><\/tr><tr><td class=\"has-text-align-right\" data-align=\"right\">17<\/td><td>Chart is empty despite query success<\/td><td>Query aggregation and selected time range<\/td><td>Use&nbsp;<code>summarize ... by bin(TimeGenerated, 1h)<\/code>&nbsp;on numeric result<\/td><\/tr><tr><td class=\"has-text-align-right\" data-align=\"right\">18<\/td><td>Template Create rule disabled<\/td><td>Template required data source status<\/td><td>Enable approved source or use permitted alternative<\/td><\/tr><tr><td class=\"has-text-align-right\" data-align=\"right\">19<\/td><td>Template enabled but no alert<\/td><td>Query matches, schedule, threshold, suppression<\/td><td>Explain no matching behavior; do not fake alert<\/td><\/tr><tr><td class=\"has-text-align-right\" data-align=\"right\">20<\/td><td>Rule query rejected<\/td><td>Test KQL, required&nbsp;<code>TimeGenerated<\/code>, output schema<\/td><td>Correct query and pass wizard validation<\/td><\/tr><tr><td class=\"has-text-align-right\" data-align=\"right\">21<\/td><td>Alert storm in classroom<\/td><td>Rule filters too broad; repeated matching window<\/td><td>Disable lab rule, narrow unique RG scope; suppress when available<\/td><\/tr><tr><td class=\"has-text-align-right\" data-align=\"right\">22<\/td><td>Alert exists but no&nbsp;<strong>new<\/strong>&nbsp;incident<\/td><td>Alert&#8217;s related incident link and Defender grouping<\/td><td>Check existing correlated incident and incident settings<\/td><\/tr><tr><td class=\"has-text-align-right\" data-align=\"right\">23<\/td><td>Analyst cannot update incident<\/td><td>Sentinel Responder\/Contributor; Defender RBAC for cases<\/td><td>Ask authorized SOC role owner; don&#8217;t elevate self<\/td><\/tr><tr><td class=\"has-text-align-right\" data-align=\"right\">24<\/td><td>Incident\/case menu not available<\/td><td>Preview entitlement vs standard Defender incident view<\/td><td>Use supported incident queue; document UI branch<\/td><\/tr><tr><td class=\"has-text-align-right\" data-align=\"right\">25<\/td><td>Workbook displays blanks<\/td><td>Required tables, query scope, workbook filters<\/td><td>Use compatible template or instructor-provided workbook<\/td><\/tr><tr><td class=\"has-text-align-right\" data-align=\"right\">26<\/td><td>Workbook save denied<\/td><td>Workbook Contributor \/ RG permission<\/td><td>Use read-only template or ask authorized editor<\/td><\/tr><tr><td class=\"has-text-align-right\" data-align=\"right\">27<\/td><td>Source data delay<\/td><td>Event time vs&nbsp;<code>EventSubmissionTimestamp<\/code>; export timing<\/td><td>Recheck, record actual latency; no fixed SLA assumed<\/td><\/tr><tr><td class=\"has-text-align-right\" data-align=\"right\">28<\/td><td>Unexpected duplicate Azure Activity rows<\/td><td>Subscription vs management group exports<\/td><td>Review diagnostic export topology; investigate overlap<\/td><\/tr><tr><td class=\"has-text-align-right\" data-align=\"right\">29<\/td><td>Costs still accruing after class<\/td><td>Active workspace\/connector\/retention and Cost Management<\/td><td>Verify retained owner or approved offboarding\/cleanup<\/td><\/tr><tr><td class=\"has-text-align-right\" data-align=\"right\">30<\/td><td>\u201cNo access\u201d after workspace deletion<\/td><td>Workspace may have been soft-deleted or changed<\/td><td>Stop; check Azure Monitor documented recovery route<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Root-cause worksheet<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code># Lab Troubleshooting Record\n\n- Symptom as observed:\n- Exact error code\/text (if any):\n- Current portal and selected tenant\/subscription\/workspace:\n- First failing boundary: SOURCE \/ EXPORT \/ INGESTION \/ QUERY \/ RULE \/ ALERT \/ INCIDENT \/ WORKBOOK \/ RBAC\n- What was expected:\n- What was actually observed:\n- Three hypotheses (ranked):\n  1.\n  2.\n  3.\n- Non-destructive tests performed:\n- Evidence (links\/filenames):\n- Most likely root cause:\n- Correct remediation owner and scope:\n- Retest outcome: PASS \/ BLOCKED \/ PENDING\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">5. Optional Azure CLI verification (instructor or provisioner)<\/h1>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\"><strong>Optional, not required for the portal-based core course.<\/strong>&nbsp;Commands here are documented Azure CLI patterns; use an approved Azure Cloud Shell or preinstalled Azure CLI. Do&nbsp;<strong>not<\/strong>&nbsp;paste production credentials or run CLI delete commands from a learner laptop. A CLI success message does not prove the Sentinel connector is working: validate&nbsp;<code>AzureActivity<\/code>&nbsp;separately. [R22], [R23]<\/p>\n<\/blockquote>\n\n\n\n<h3 class=\"wp-block-heading\">Verify the actual signed-in Azure context<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>az account show --output table\naz account list --output table\n<em># Replace with the training subscription ID, and re-check.<\/em>\naz account set --subscription \"&lt;TRAINING-SUBSCRIPTION-ID&gt;\"\naz account show --query \"{subscription:id, tenant:tenantId, name:name}\" --output table\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Read-only resource and workspace verification<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>az group show --name \"rg-sentinel-foundations-lab01\" --output table\naz monitor log-analytics workspace show \\\n  --resource-group \"rg-sentinel-foundations-lab01\" \\\n  --workspace-name \"law-sentinel-foundations-lab01\" \\\n  --query \"{name:name, id:id, location:location, provisioningState:provisioningState}\" \\\n  --output json\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Read subscription Activity Log events independently from workspace ingestion<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code><em># This queries the Azure control-plane Activity Log, NOT the Sentinel workspace.<\/em>\naz monitor activity-log list \\\n  --resource-group \"rg-sentinel-signal-lab01\" \\\n  --offset 24h \\\n  --output json\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Interpret carefully:<\/strong>&nbsp;Azure Activity CLI\/API filters and the workspace query target different points of the pipeline. For subscription-level activity, some RG-scope filters may miss events; check an appropriately scoped subscription Activity Log view if needed. Prefer the Azure portal source-versus-destination comparison in D1-L08 when teaching beginners.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Why no scripted bulk-provisioning or deletion in this Foundations guide?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">A teaching environment differs from a controlled production deployment pipeline. Portal-guided provisioning makes learners explicitly inspect the&nbsp;<strong>tenant, scope, RBAC, export destination, cost, and consent<\/strong>. Infrastructure as Code, automated deployment and robust multi-environment cleanup belong to the Advanced module (Day 5). This is an intentional progression boundary, not a missing capability.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">6. Instructor&#8217;s preflight, learner handoff, and evidence packaging<\/h1>\n\n\n\n<h2 class=\"wp-block-heading\">6.1 Instructor day-wise readiness matrix<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th class=\"has-text-align-left\" data-align=\"left\">Checklist<\/th><th class=\"has-text-align-left\" data-align=\"left\">Before Day 1<\/th><th class=\"has-text-align-left\" data-align=\"left\">Before Day 2<\/th><\/tr><\/thead><tbody><tr><td>Approved Azure subscription and correct directory<\/td><td>Required<\/td><td>Recheck<\/td><\/tr><tr><td>Known workspace\/RG\/region and resource suffixes<\/td><td>Required<\/td><td>Verify unchanged<\/td><\/tr><tr><td>Engineer\/provisioner\/analyst access separation<\/td><td>Required<\/td><td>Required for rule\/incident<\/td><\/tr><tr><td>Cost owner and cleanup plan<\/td><td>Required<\/td><td>Review again<\/td><\/tr><tr><td>Defender portal navigation<\/td><td>Check<\/td><td>Required<\/td><\/tr><tr><td>Azure Activity diagnostic export plan<\/td><td>Check and approve<\/td><td>Must function for live labs<\/td><\/tr><tr><td>At least one safe Azure Activity signal<\/td><td>Generated in D1-L08<\/td><td>Refresh as needed<\/td><\/tr><tr><td>Synthetic KQL fallback<\/td><td>Available<\/td><td>Available if live environment blocked<\/td><\/tr><tr><td>Built-in Azure Activity solution\/template<\/td><td>Install\/verify<\/td><td>Rule template visible<\/td><\/tr><tr><td>Controlled temporary-rule naming and suppression<\/td><td>Draft policy<\/td><td>Approve before creation<\/td><\/tr><tr><td>Incident-cases preview vs standard UI path<\/td><td>Discover<\/td><td>Select documented path<\/td><\/tr><tr><td>Compatible workbook present<\/td><td>Preselect<\/td><td>Required for workbook exercise<\/td><\/tr><tr><td>Assessment screenshots and redaction policy<\/td><td>Prepare<\/td><td>Collect<\/td><\/tr><tr><td>Rule\/connector\/workspace cleanup ownership<\/td><td>Assigned<\/td><td>Execute or document retention<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">6.2 Evidence-folder template<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>Microsoft-Sentinel-Foundations-Labs\/\n  Day01\/\n    D1-L01-SOC-Worksheet.md\n    D1-L02-Architecture.md\n    D1-L03-Environment-Readiness.md\n    D1-L04-Workspace-Overview.png\n    D1-L05-Sentinel-Enabled.png\n    D1-L05-Defender-Workspace.png\n    D1-L06-Content-Record.md\n    D1-L07-Connector-Configuration.md\n    D1-L08-Azure-Source-Activity.png\n    D1-L08-Sentinel-AzureActivity-Result.png\n  Day02\/\n    D2-L01-Record-Worksheet.md\n    D2-L02-KQL-Queries.kql\n    D2-L03-Simulation-Results.md\n    D2-L04-Analytics-Template-Rule.png\n    D2-L05-Lab-Rule-Query.kql\n    D2-L05-Alert.png\n    D2-L05-Incident.png\n    D2-L06-Incident-Report.md\n    D2-L07-Workbook-Interpretation.png\n    D2-L08-Troubleshooting-Worksheet.md\n  Assessment\/\n    LearnerID-Foundations-Capstone.md\n    Grading-Sheet.md\n  Cleanup\/\n    END-L01-Signed-Cleanup-Record.md\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Note:<\/strong>&nbsp;This is an illustrative tree, not automatically generated files; the user requested&nbsp;<strong>one Markdown guide<\/strong>, which contains all the templates and instructions. If learner evidence includes sensitive tenant identifiers or security telemetry, use an approved private repository\/document store, not a public file share.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">6.3 Curriculum traceability \u2014 every Foundation topic accounted for<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th class=\"has-text-align-left\" data-align=\"left\">Topic ID<\/th><th class=\"has-text-align-left\" data-align=\"left\">Exact syllabus topic<\/th><th class=\"has-text-align-left\" data-align=\"left\">Where it is practiced\/verified<\/th><\/tr><\/thead><tbody><tr><td><strong>F01<\/strong><\/td><td>The security operations problem<\/td><td>D1-L01 event vs alert tabletop<\/td><\/tr><tr><td><strong>F02<\/strong><\/td><td>Fundamental security terminology<\/td><td>D1-L01 definitions and answer checks<\/td><\/tr><tr><td><strong>F03<\/strong><\/td><td>What Microsoft Sentinel provides<\/td><td>D1-L01 SIEM and product benefits\/limits<\/td><\/tr><tr><td><strong>F04<\/strong><\/td><td>People and responsibilities<\/td><td>D1-L01 escalation chain; D1-L03 RBAC<\/td><\/tr><tr><td><strong>F05<\/strong><\/td><td>Where Sentinel fits and when to adopt it<\/td><td>D1-L01 5W1H and adoption scenarios<\/td><\/tr><tr><td><strong>F06<\/strong><\/td><td>Comparison with alternative approaches<\/td><td>D1-L01 SIEM vs EDR\/XDR\/log-only comparison<\/td><\/tr><tr><td><strong>F07<\/strong><\/td><td>Foundational platform architecture<\/td><td>D1-L02 source\u2192ingestion\u2192detection\u2192incident diagram<\/td><\/tr><tr><td><strong>F08<\/strong><\/td><td>Azure resource dependencies<\/td><td>D1-L02\/D1-L03 tenant\/subscription\/RG\/workspace<\/td><\/tr><tr><td><strong>F09<\/strong><\/td><td>Prerequisites and deployment planning<\/td><td>Instructor checklist, D1-L03\/L04, cost and cleanup<\/td><\/tr><tr><td><strong>F10<\/strong><\/td><td>Baseline access permissions<\/td><td>D1-L03 least-privilege, role matrix<\/td><\/tr><tr><td><strong>F11<\/strong><\/td><td>Initial workspace setup<\/td><td>D1-L04\/L05 Log Analytics \u2192 Sentinel \u2192 Defender<\/td><\/tr><tr><td><strong>F12<\/strong><\/td><td>First data connection<\/td><td>D1-L06\/L07\/L08 Azure Activity with source\/destination proof<\/td><\/tr><tr><td><strong>F13<\/strong><\/td><td>Understanding ingested security records<\/td><td>D2-L01 field\/timestamp worksheet<\/td><\/tr><tr><td><strong>F14<\/strong><\/td><td>KQL essentials<\/td><td>D2-L02 K01\u2013K12; D2-L03 synthetic alternative<\/td><\/tr><tr><td><strong>F15<\/strong><\/td><td>Basic log validation<\/td><td>D1-L08 ingestion checks; D2-L01\/L02 queries<\/td><\/tr><tr><td><strong>F16<\/strong><\/td><td>Built-in security content<\/td><td>D2-L04 template\/content roles and prerequisites<\/td><\/tr><tr><td><strong>F17<\/strong><\/td><td>Activate a starter analytic rule<\/td><td>D2-L04 Azure Activity template; D2-L05 controlled validation<\/td><\/tr><tr><td><strong>F18<\/strong><\/td><td>Detection-to-incident fundamentals<\/td><td>D2-L05 actual alert\/incident chain<\/td><\/tr><tr><td><strong>F19<\/strong><\/td><td>Guided first-line triage<\/td><td>D2-L06 evidence\/alternate hypothesis<\/td><\/tr><tr><td><strong>F20<\/strong><\/td><td>Basic disposition and escalation<\/td><td>D2-L06 classification and escalation matrix<\/td><\/tr><tr><td><strong>F21<\/strong><\/td><td>Consume an out-of-box workbook<\/td><td>D2-L07 compatible workbook interpretation<\/td><\/tr><tr><td><strong>F22<\/strong><\/td><td>Entry-level SOC operating procedure<\/td><td>D2-L06 SOP, D2-L08 checklist, final capstone<\/td><\/tr><tr><td><strong>F23<\/strong><\/td><td>Entry-level troubleshooting<\/td><td>D2-L08 T01\u2013T06, extended table, root-cause record<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">6.4 What this course does&nbsp;<em>not<\/em>&nbsp;claim to do<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>It does\u00a0<strong>not<\/strong>\u00a0treat an offline\u00a0<code>datatable<\/code>\u00a0as proof of real Sentinel ingestion.<\/li>\n\n\n\n<li>It does\u00a0<strong>not<\/strong>\u00a0guarantee a suspicious deployment template will fire on a safe tag update.<\/li>\n\n\n\n<li>It does\u00a0<strong>not<\/strong>\u00a0require a Microsoft Defender XDR E5 license solely to connect Sentinel to the Defender portal.<\/li>\n\n\n\n<li>It does\u00a0<strong>not<\/strong>\u00a0say all workspaces automatically appear to all users; Defender onboarding and role scope matter.<\/li>\n\n\n\n<li>It does\u00a0<strong>not<\/strong>\u00a0claim all tenants have incident-cases preview enabled.<\/li>\n\n\n\n<li>It does\u00a0<strong>not<\/strong>\u00a0assume a data connector&#8217;s\u00a0<code>Connected<\/code>\u00a0status proves every data record arrived.<\/li>\n\n\n\n<li>It does\u00a0<strong>not<\/strong>\u00a0require dangerous remediation, production changes, or privilege escalation to pass.<\/li>\n\n\n\n<li>It does\u00a0<strong>not<\/strong>\u00a0teach advanced AMA\/DCR\/CEF, multi-table detection correlation, UEBA enrichment, custom workbook design, SOAR playbooks, repository CI\/CD or lake\/enterprise architecture; those are later-module topics.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">7. Official Microsoft documentation and verification log<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Review date:<\/strong>&nbsp;1 November 2026.&nbsp;<strong>Verification type:<\/strong>&nbsp;Documentation\/technical-reference review using Microsoft Learn; no authenticated live tenant execution. Links below are primary sources and should be rechecked immediately before future instructor delivery. Where Microsoft changes navigation, use the referenced article&#8217;s&nbsp;<strong>Defender portal<\/strong>&nbsp;tab and record actual UI differences.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th class=\"has-text-align-left\" data-align=\"left\">Ref<\/th><th class=\"has-text-align-left\" data-align=\"left\">Official source<\/th><th class=\"has-text-align-left\" data-align=\"left\">Guidance verified for this guide<\/th><\/tr><\/thead><tbody><tr><td><strong>R01<\/strong><\/td><td><a href=\"https:\/\/learn.microsoft.com\/en-us\/azure\/sentinel\/quickstart-onboard\">Onboard Microsoft Sentinel to a Log Analytics workspace<\/a><\/td><td>End-to-end quickstart, workspace, Content hub, Azure Activity connector, example Suspicious Resource deployment template, querying AzureActivity<\/td><\/tr><tr><td><strong>R02<\/strong><\/td><td><a href=\"https:\/\/learn.microsoft.com\/en-us\/azure\/sentinel\/prerequisites\">Prerequisites to deploy Microsoft Sentinel<\/a><\/td><td>Azure\/tenant\/workspace requirements and role planning<\/td><\/tr><tr><td><strong>R03<\/strong><\/td><td><a href=\"https:\/\/learn.microsoft.com\/en-us\/azure\/sentinel\/microsoft-sentinel-onboard\">Connect Microsoft Sentinel to the Microsoft Defender portal<\/a><\/td><td>Defender onboarding paths, automatic\/manual connection, required roles, primary workspace, no Defender XDR license just to connect Sentinel<\/td><\/tr><tr><td><strong>R04<\/strong><\/td><td><a href=\"https:\/\/learn.microsoft.com\/en-us\/azure\/sentinel\/billing\">Plan Microsoft Sentinel costs and billing<\/a><\/td><td>31-day \/ 10 GB\/day Analytics-tier trial conditions, additional charge categories, pay-as-you-go<\/td><\/tr><tr><td><strong>R05<\/strong><\/td><td><a href=\"https:\/\/learn.microsoft.com\/en-us\/azure\/sentinel\/roles\">Roles and permissions in Microsoft Sentinel<\/a><\/td><td>Reader\/Responder\/Contributor, Content hub, query\/workbook permissions and least privilege<\/td><\/tr><tr><td><strong>R06<\/strong><\/td><td><a href=\"https:\/\/learn.microsoft.com\/en-us\/azure\/azure-monitor\/fundamentals\/activity-log\">Azure Activity Log overview and export<\/a><\/td><td>Subscription Activity logs, export to Log Analytics, AzureActivity table, source-vs-destination comparison, case-insensitive field values<\/td><\/tr><tr><td><strong>R07<\/strong><\/td><td><a href=\"https:\/\/learn.microsoft.com\/en-us\/defender-xdr\/custom-permissions-details\">Microsoft Defender unified RBAC permission details<\/a><\/td><td>Defender permissions are distinct from Azure resource RBAC and can affect case management<\/td><\/tr><tr><td><strong>R08<\/strong><\/td><td><a href=\"https:\/\/learn.microsoft.com\/en-us\/azure\/sentinel\/sentinel-solutions-deploy?tabs=defender-portal\">Discover and manage content from Microsoft Sentinel Content hub<\/a><\/td><td>Solution installation, templates vs active content, Contributor role<\/td><\/tr><tr><td><strong>R09<\/strong><\/td><td><a href=\"https:\/\/learn.microsoft.com\/en-us\/azure\/sentinel\/connect-services-diagnostic-setting-based\">Microsoft Sentinel diagnostic-setting-based data connectors<\/a><\/td><td>Azure Policy-based connector requirements and diagnostic setting alternative, legacy Azure Activity transition<\/td><\/tr><tr><td><strong>R10<\/strong><\/td><td><a href=\"https:\/\/learn.microsoft.com\/en-us\/azure\/azure-monitor\/reference\/tables\/azureactivity\">AzureActivity table schema<\/a><\/td><td>Field spelling and types: TimeGenerated, CategoryValue, ResourceId, ResourceGroup, Caller, OperationNameValue, ActivityStatusValue, CorrelationId<\/td><\/tr><tr><td><strong>R11<\/strong><\/td><td><a href=\"https:\/\/learn.microsoft.com\/en-us\/troubleshoot\/azure\/azure-monitor\/activity-logs\/config-export\/configuring-azure-activity-log-export-comprehensive-guide\">Azure Activity Log export troubleshooting<\/a><\/td><td>Diagnostic export and non-instant data availability checks<\/td><\/tr><tr><td><strong>R12<\/strong><\/td><td><a href=\"https:\/\/learn.microsoft.com\/en-us\/azure\/azure-monitor\/logs\/log-analytics-tutorial\">Log Analytics tutorial<\/a>&nbsp;and&nbsp;<a href=\"https:\/\/learn.microsoft.com\/en-us\/azure\/azure-monitor\/logs\/get-started-queries\">Getting started with log queries<\/a><\/td><td>KQL query execution, time filters, display of data, common no-result troubleshooting<\/td><\/tr><tr><td><strong>R13<\/strong><\/td><td><a href=\"https:\/\/learn.microsoft.com\/en-us\/defender-xdr\/investigate-incidents\">Investigate incidents in Microsoft Defender (legacy)<\/a><\/td><td>Supported older incident workflow and evidence interpretation<\/td><\/tr><tr><td><strong>R14<\/strong><\/td><td><a href=\"https:\/\/learn.microsoft.com\/en-us\/azure\/sentinel\/create-analytics-rule-from-template\">Create scheduled analytics rules from templates<\/a><\/td><td>Rule templates view, source prerequisite checks, activation workflow<\/td><\/tr><tr><td><strong>R15<\/strong><\/td><td><a href=\"https:\/\/learn.microsoft.com\/en-us\/azure\/sentinel\/create-analytics-rules?tabs=defender-portal\">Create a scheduled analytics rule from scratch<\/a><\/td><td><code>TimeGenerated<\/code>, allowed intervals, lookback, simulation, threshold, suppression, incident creation and Defender correlation caveats<\/td><\/tr><tr><td><strong>R16<\/strong><\/td><td><a href=\"https:\/\/learn.microsoft.com\/en-us\/defender-xdr\/investigate-incident-cases\">Investigate incident cases in Microsoft Defender<\/a><\/td><td>Preview case navigation, alerts\/assets\/evidence, preview access requirements<\/td><\/tr><tr><td><strong>R17<\/strong><\/td><td><a href=\"https:\/\/learn.microsoft.com\/en-us\/defender-xdr\/manage-incident-cases\">Manage incident cases in Microsoft Defender<\/a><\/td><td>Case owner\/status\/classification\/actions and sync behavior<\/td><\/tr><tr><td><strong>R18<\/strong><\/td><td><a href=\"https:\/\/learn.microsoft.com\/en-us\/azure\/sentinel\/monitor-your-data\">Visualize and monitor data using Microsoft Sentinel workbooks<\/a><\/td><td>Threat management \u2192 Workbooks, template source prerequisites, save\/view process<\/td><\/tr><tr><td><strong>R19<\/strong><\/td><td><a href=\"https:\/\/learn.microsoft.com\/en-us\/azure\/sentinel\/offboard\">Remove Microsoft Sentinel from your workspace<\/a><\/td><td>Authorized offboarding process versus deleting workspace<\/td><\/tr><tr><td><strong>R20<\/strong><\/td><td><a href=\"https:\/\/learn.microsoft.com\/en-us\/azure\/sentinel\/offboard-implications\">Implications of removing Microsoft Sentinel<\/a><\/td><td>Connector\/table impacts and consequences of offboarding<\/td><\/tr><tr><td><strong>R21<\/strong><\/td><td><a href=\"https:\/\/learn.microsoft.com\/en-us\/azure\/azure-monitor\/logs\/delete-workspace\">Delete and recover a Log Analytics workspace<\/a><\/td><td>Soft delete\/recovery and safe deletion scope<\/td><\/tr><tr><td><strong>R22<\/strong><\/td><td><a href=\"https:\/\/learn.microsoft.com\/en-us\/cli\/azure\/monitor\/log-analytics\/workspace\">Azure CLI Log Analytics workspace reference<\/a><\/td><td>Read-only workspace show command<\/td><\/tr><tr><td><strong>R23<\/strong><\/td><td><a href=\"https:\/\/learn.microsoft.com\/en-us\/cli\/azure\/account\">Azure CLI account commands<\/a>&nbsp;and&nbsp;<a href=\"https:\/\/learn.microsoft.com\/en-us\/azure\/azure-monitor\/fundamentals\/activity-log\">Azure Activity Log Azure CLI examples<\/a><\/td><td>Verify Azure CLI identity and inspect activity independently<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">7.1 Verification gaps and delivery controls<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th class=\"has-text-align-left\" data-align=\"left\">Claim<\/th><th class=\"has-text-align-left\" data-align=\"left\">Documentation verified?<\/th><th class=\"has-text-align-left\" data-align=\"left\">Requires actual tenant test?<\/th><th class=\"has-text-align-left\" data-align=\"left\">How to close the gap<\/th><\/tr><\/thead><tbody><tr><td>Onboarding workspace from Azure portal<\/td><td><strong>Yes<\/strong>, R01<\/td><td><strong>Yes<\/strong><\/td><td>D1-L04\/L05 PASS with actual workspace screenshots<\/td><\/tr><tr><td>Defender manual\/automatic connection<\/td><td><strong>Yes<\/strong>, R03<\/td><td><strong>Yes<\/strong><\/td><td>D1-L05 workspace listed in tenant<\/td><\/tr><tr><td>Policy route and diagnostic export configuration<\/td><td><strong>Yes<\/strong>, R01\/R09<\/td><td><strong>Yes<\/strong><\/td><td>D1-L07 live export config and owner approval<\/td><\/tr><tr><td><code>AzureActivity<\/code>&nbsp;table\/fields<\/td><td><strong>Yes<\/strong>, R10<\/td><td><strong>Yes<\/strong>&nbsp;(data contents)<\/td><td>D1-L08 actual matching event<\/td><\/tr><tr><td>Beginner KQL operators<\/td><td><strong>Yes<\/strong>, R12<\/td><td><strong>Yes<\/strong>&nbsp;(environment and data)<\/td><td>D2-L02 query executions<\/td><\/tr><tr><td><code>datatable<\/code>&nbsp;simulated syntax<\/td><td><strong>Yes<\/strong>, Kusto-compatible operator pattern<\/td><td><strong>Yes<\/strong>, if no Kusto service is accessible<\/td><td>D2-L03 outputs marked simulated<\/td><\/tr><tr><td>Starter analytics template<\/td><td><strong>Yes<\/strong>, R01\/R14<\/td><td><strong>Yes<\/strong>&nbsp;(specific tenant\/version)<\/td><td>D2-L04 template active and prerequisites satisfied<\/td><\/tr><tr><td>Actual alert and incident creation<\/td><td><strong>Yes<\/strong>, R15 explains mechanism<\/td><td><strong>Always<\/strong><\/td><td>D2-L05 Alert ID and incident\/case ID<\/td><\/tr><tr><td>Defender incident cases preview<\/td><td><strong>Yes<\/strong>, R16\/R17<\/td><td><strong>Yes<\/strong>&nbsp;(preview scope)<\/td><td>Choose available Path A\/Path B in D2-L06<\/td><\/tr><tr><td>Workbook availability<\/td><td><strong>Yes<\/strong>, R18 explains mechanism<\/td><td><strong>Yes<\/strong>&nbsp;(installed compatible template)<\/td><td>D2-L07 actual chart\/filter evidence<\/td><\/tr><tr><td>Cleanup, billing, policy ownership<\/td><td><strong>Yes<\/strong>, R19\u2013R21 for product behavior<\/td><td><strong>Always<\/strong><\/td><td>END-L01 signed cleanup and subscription review<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Final editorial check for instructors:<\/strong>&nbsp;Microsoft Sentinel and the Defender portal evolve quickly. Before repeating this class, reopen R01, R03, R08, R14\u2013R18, verify the portal-selected paths, verify new pricing\/trial terms, retest the lab signal in a disposable subscription, and update screenshots and gate expectations. An outdated icon is a cosmetic issue; a changed role prerequisite, missing connector or unsupported incident flow is a&nbsp;<strong>blocking lab issue<\/strong>.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">8. Final instructor sign-off and progression decision<\/h1>\n\n\n\n<pre class=\"wp-block-code\"><code>Course: Microsoft Sentinel \u2014 Foundations, Days 1 and 2\nEdition: 1 November 2026\nLearner\/Group ID: __________________________________\nDelivery model: A Full live \/ B Instructor-managed \/ C Simulation\nApproved tenant\/subscription: _______________________\nTraining workspace\/region: __________________________\nDay 1 labs completed: ______ \/ 8\nDay 2 labs completed: ______ \/ 9\nReal AzureActivity source\u2192workspace matched: Yes \/ No\nReal alert ID recorded: Yes \/ No \/ Blocked\nReal incident\/case ID recorded: Yes \/ No \/ Blocked\nKQL competency passed: Yes \/ No\nIncident disposition passed: Yes \/ No \/ Observed\nWorkbook interpretation passed: Yes \/ No \/ Blocked\nAssessment score: ______ \/ 100\nMandatory gate result: ______________________________\nIncomplete live steps and exact remediation owner: ____\nCleanup owner\/sign-off: ______________________________\nOverall result: PASS \/ OBSERVED-SETUP \/ REMEDIATION \/ BLOCKED\nEligible for Intermediate Day 3? YES \/ NO \/ AFTER REMEDIATION\nInstructor signature\/date (UTC): _____________________\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Course completion principle:<\/strong>&nbsp;A learner who merely watched a video or copied a KQL query has not necessarily mastered security operations. Award completion based on&nbsp;<strong>reproducible queries, cross-verified telemetry, an investigated training incident, a reasoned decision, and responsible cleanup<\/strong>. When a real deployment dependency is unavailable, keep the simulated learning credit but record the missing live evidence transparently.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>End of the single-file Day 1 + Day 2 Foundations lab manual.<\/strong><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Module 1: Fundamentals \/ Essentials \/ Foundations | Day 1 and Day 2 Edition:&nbsp;1 November 2026Format:&nbsp;Two-day, instructor-led,&nbsp;day-wise&nbsp;practical manual; no hourly timetableAudience:&nbsp;New SOC analysts, security engineers, Azure administrators,&#8230; <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-1258","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/posts\/1258","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/comments?post=1258"}],"version-history":[{"count":2,"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/posts\/1258\/revisions"}],"predecessor-version":[{"id":1271,"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/posts\/1258\/revisions\/1271"}],"wp:attachment":[{"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/media?parent=1258"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/categories?post=1258"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/tags?post=1258"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}