Runbook R01 — Prerequisites & Using This Companion
Runbook R01 — Prerequisites & Using This Companion
The narrative says why; the runbooks say what you install, what the evidence looks like, what is safe to run, and in what order.
The toolchain the later runbooks assume, the evidence envelope every function emits, the bright line between read-only functions and review-required ones, how to run the whole chain offline against captured snapshots, and the order in which Runbooks R02 to R10 run. Everything here is setup or orientation. It provisions nothing and changes no production state.
Pairs with: Chapter 01 — What Windows Authentication Actually Is and Chapter 02 — Why the Inheritance Must End. Those chapters open with the inheritance: why a twenty-year Windows-authentication estate exists and why it has to change. This runbook is their executable counterpart.
What the runbooks automate
The narrative chapters stay conceptual; the runbooks are the executable layer. Each later runbook documents the program’s real script behind its step, not a paraphrase. The automation lives in two places in the program’s repository: the read-only discovery Spec family under tools/discovery/, and the derivation and validation PowerShell modules under tools/powershell/. The tooling isn’t published with this workbook; the paths in the runbooks are relative to the root of the program’s repository, and the names follow the program’s FMP prefix.
| Runbook | Program automation | Tier |
|---|---|---|
| R02 — Estate discovery | Spec3-D1.8 / Spec1-D1.5 / Find-DbaInstance, fused by New-FMPEstateInventory |
read-only |
| R03 — Authentication audit | Spec3-D1.8-Get-SQLServerAuthAudit (plus the Spec*-D1.* family) |
read-only |
| R04 — Arc and managed identity | Test-FMPArcAgentStatus, Test-FMPArcManagedIdentityToken, Test-FMPArcSqlExtension, Invoke-FMPArcOnboarding |
validation read-only; onboarding review-required |
| R05 — Login migration | New-FMPEntraLoginMapping, New-FMPEntraLoginScript, Test-FMPLoginParallelRun |
derive / dry-run |
| R06 — NTLM remediation | Spec3-D1.7 / Spec1-D1.5, New-FMPSpnRemediationPlan, Get-FMPNtlmGpoReport |
audit-first |
| R07 — Groups and AUs | Export-FMPEntraGroups, New-FMPEntraGroupClassification, New-FMPGroupLoginScript |
derive / dry-run |
| R08 — Application chain | Spec3-D1.9, New-FMPAppConnectionPlan |
derive (connection-string change made in configuration) |
| R09 — Continuous monitoring | Spec3-D1.8 (scheduled), New-FMPClosureRecord, Compare-FMPClosureRun |
read-only |
| R10 — Certificates | Spec3-D1.10, New-FMPSqlCertificatePlan, New-FMPPKIMigrationPlan |
read-only / analytical |
R01 has no script of its own: the conceptual opening has no executable layer. This runbook is the setup and orientation that the executable runbooks assume.
Step 1 — Install the toolchain
- PowerShell 7 or later is the runtime the modules target; the program’s Pester tests run under PowerShell 7.
- A Python interpreter with only the standard library (
python3onPATH) is the one external dependency. The modules call it to compute the canonical integrity seal withjsonandhashlib, byte-for-byte identical to the program’s canonical hash. The program’s Python package isn’t imported, so no editable install is needed to produce sealed evidence. - The discovery Specs are plain PowerShell scripts under
tools/discovery/; run them directly. - The modules are imported from the repository root:
The commands in the runbooks are illustrative. They haven’t been tested against a production forest, tenant or SQL Server estate. Review every command and script, run it first in a test environment, and route anything that changes state through change control.
Import-Module ./tools/powershell/FMPSqlServerMigration # Runbooks R02, R04, R05, R06, R07, R08, R09, R10
Import-Module ./tools/powershell/FMPIdentityAssessment # Runbook R07 group and Conditional Access export
Import-Module ./tools/powershell/FMPPlanGenerators # Runbook R10 PKI sequencingLive Azure and Microsoft Graph operations (Arc onboarding, Graph or Azure Resource Manager writes) also need the relevant command-line tools, azcmagent and the Azure CLI (az), and run only behind an explicit opt-in switch. Every function can be exercised offline without them.
Step 2 — The evidence model
Every derivation and validation function emits a provenance-sealed envelope, not loose output:
schemaandartifact_typename the artifact;data.recordsholds the rows;dataalso carries per-artifact summary counts.provenancerecords the producing module and version, a UTCtimestamp, and acontent_hash.- The sealed data omits the timestamp, so identical inputs yield an identical
content_hash. Artifacts are reproducible, and a broken or unattributed envelope is aDRIFT-PROVENANCEfinding by definition.
Write each step’s envelope under a dated output directory and keep it under version control. That is what makes the scheduled runs in Runbook R09 comparable from one run to the next, and the whole chain auditable.
Step 3 — The safety model
The runbooks draw one bright line, and the code enforces it:
- Read-only and derivation functions run directly: discovery, audits, classifications, plans, closure records, comparisons. They read captured or live-read inputs and change nothing.
- State-changing functions are gated. They either declare
SupportsShouldProcessand default to planning only (Invoke-FMPArcOnboardingplans theazcmagent connectcommand unless you pass-Executeand confirm), or they generate a reviewable script or plan and execute nothing (New-FMPEntraLoginScript,New-FMPGroupLoginScript). The login and group script generators have no-Serveror-Executeparameter at all; they never open a SQL connection. - No secrets are embedded. Tenant, subscription, cloud, endpoints and credentials are all parameters. The cloud-aware functions accept the two Azure cloud names the Arc agent uses for US workloads,
AzureCloudandAzureUSGovernment,1 resolve the matching audience, and fail closed on an unknown cloud. A GCC-Moderate tenant is a Microsoft Entra tenant in the public (commercial) cloud, and an Azure Government subscription can’t be associated with a directory there,2 so the Arc resources that serve a GCC-Moderate tenant useAzureCloud; Runbook R04 explains why that matters for SQL Server.
Anything that touches service accounts, SQL logins, SPNs, GPOs or the domain changes a production security posture. Run discovery and the audit first (they are safe), generate the plan or script, capture it, and route it through change control and security review before any enforcement. The discovery scripts are read-only; the remediation steps are not.
Step 4 — The offline snapshot pattern
Every function accepts captured input, a JSON or CSV snapshot of a live read, so the entire chain can be exercised and tested without touching a live estate. Capture once (the Spec* audits, the Export-FMP* exports, azcmagent show -j for the agent’s status as JSON,3 a captured managed-identity token response), then run the derivations against the captured files. The program’s Pester suite validates the modules the same way, fully offline.
Step 5 — The run order
The runbooks chain; later runbooks operate on the surviving set the earlier ones define:
- Runbook R02 establishes the denominator and the retain / consolidate / retire gate. Only retain instances and consolidation targets go on.
- Runbook R03 audits the surviving set’s authentication posture.
- Runbook R04 connects each retained host to Azure Arc and its Microsoft Entra identity; Runbook R05 migrates its logins to Entra ID with a parallel-run window.
- Runbook R06 eliminates the patterns that generate NTLM; Runbook R07 transforms the group and access layer and the Conditional Access perimeter.
- Runbook R08 removes the stored credential in the application chain, the last mile.
- Runbook R09 proves the posture and keeps it continuously; Runbook R10 discovers and sequences the certificate and AD CS dependencies that must not be decommissioned out from under SQL Server.
Provenance
The runbooks introduce no new doctrine. They are the operational rendering of decisions the narrative chapters already make, chiefly the consolidation gate before any login migration (Chapter 06) and Arc as the identity bridge for on-premises SQL Server (Chapter 09). Each runbook names the specific Spec script or function it documents.
Safety
This runbook installs and orients; it runs nothing against a live estate. The first action against production identity is in Runbook R04 (Arc) and Runbook R05 (logins), and only on the retain and target set that Runbook R02 defines.
Microsoft Learn, “
azcmagent connect,”--cloudflag, https://learn.microsoft.com/azure/azure-arc/servers/azcmagent-connect (accessed Oct 20, 2026).↩︎Microsoft Learn, “Planning identity for Azure Government applications,” frequently asked questions, https://learn.microsoft.com/azure/azure-government/documentation-government-plan-identity#frequently-asked-questions (accessed Oct 20, 2026).↩︎
Microsoft Learn, “
azcmagent show,” https://learn.microsoft.com/azure/azure-arc/servers/azcmagent-show (accessed Oct 20, 2026).↩︎