Repository navigation
Releases
3.1.0
Release roll-up expanding Security Operations and Network coverage, adding new report insights, and improving data collection for larger tenants.
Install from PowerShell Gallery:
Install-PSResource -Name ZeroTrustAssessment -Version 3.1.0β¬οΈ Upgrade requirements
- PowerShell 7.6 or later is required.
π Report experience
- Added a Microsoft 365 protection circuit that shows Global Secure Access traffic acquisition and compliant-network enforcement as separate stages.
- Added a Private Access posture funnel showing app segmentation, strong authentication, and Application Administrator assignments.
- Added Data insights for DLP policy coverage across Exchange, SharePoint, OneDrive, Teams, Endpoint, and Copilot, and sensitivity-label protection across classification, visual marking, encryption, and Double Key Encryption.
- Added Infrastructure insights showing open Microsoft Defender for Cloud recommendations by severity, plus a weighted Cloud Secure Score overview across supported Azure, AWS, GCP, and developer/container environments.
- Expanded device insights with Microsoft Defender for Endpoint sensor coverage by operating system and an antivirus protection summary.
- Added an AI-agent ownership and sponsor distribution to help identify agents without an owner, sponsor, or both.
- Refined the Azure network security planes and secure web gateway defense-layer visualizations.
π‘οΈ Security Operations assessments
Directory and privileged access
41004β Privileged Active Directory accounts are marked as sensitive and cannot be delegated.41008β Local administrator passwords on identity assets are protected with Microsoft LAPS.41011β Non-administrative accounts do not have domain-controller replication permissions.41012β The Microsoft Entra Connect synchronization account does not have unnecessary replication permissions.
Email and collaboration
41035β User reports of phishing and spam are routed to a reviewed mailbox.41036β Attack Simulation Training is configured and a baseline simulation has run within the last 12 months.41039β Zero-hour auto purge is enabled for malware, phishing, and spam in email.41040β Tenant Allow/Block List allow entries are reviewed for expiration, justification, and staleness.
Endpoint protection
41049β The Microsoft Defender Antivirus user interface is hidden from end users.41050β Attack surface reduction rules are enabled in block mode.41051β Removable storage and device-control policies are enforced through Intune.41054β Controlled folder access is enabled in block mode.41055β Microsoft Defender Antivirus real-time, behavioral, and heuristic protections are enabled.41119β Local modification of Microsoft Defender Antivirus policy is blocked.
Cloud app session controls
41080β Conditional Access App Control session policies are enabled for cloud apps.41083β Step-up authentication is required for risky in-session actions.
Microsoft Sentinel and Security Copilot
41201β Each Sentinel-onboarded workspace has a Microsoft first-party data connector.41202β Third-party data connectors are configured for in-scope non-Microsoft workloads.41203β Custom connectors are configured for in-scope sources without a built-in connector.41204β Workspace interactive and total retention meet the security baseline.41205β Data collection rules control ingestion into Sentinel workspaces.41210β Microsoft Threat Intelligence indicators are integrated into Sentinel.41212β Sentinel hunting is operationalized with saved queries or bookmarks.41214β A Sentinel automation rule runs a playbook for automated threat response.41216β Security Copilot capacity consumption is monitored and alerted on through Cost Management.41217β Sentinel security tables use an appropriate Analytics, Basic, or Auxiliary storage plan.
π Network and AI Gateway assessments
25412β Global Secure Access threat-intelligence filtering protects internet traffic from malicious destinations.27028β A web content filtering policy on the Global Secure Access baseline profile governs Copilot Studio agent traffic.
π Performance improvement efforts
These improvements address performance and stability concerns raised in #1236 and related large-tenant feedback.
- Graph request handling: Batched Graph GET requests now use the shared batch-request helper, with more consistent paging, throttling and transient-error retries, and dependency recovery. Checks that retrieve data for many principals can make fewer individual network round trips, while recovery behavior is more consistent.
- Export pipeline: Export queries now select smaller field sets for applications, users, sign-in logs, service principals, and privileged-group members. Role-assignment and eligibility schedule-instance exports request principal IDs first, resolve only the fields needed for assessment processing in batches, and cache results across pages. Page reconciliation updates saved exports without keeping all pages in memory. Together, the export configuration and model changes reduce response size, repeated lookups, and memory/serialization work.
- DuckDB resource cleanup: Database query commands and readers are now disposed in a
finallyblock, including when result processing fails. This prevents query resources from accumulating during long or repeated assessments. - Existing assessment refinements: Existing checks were optimized or corrected across authentication and privileged access (
21801,21814,21818), guest ownership and sponsorship (21868,21877), Global Secure Access and Private Access (25376,25384,25395,25396), Defender for Cloud recommendations (50001), and Copilot agent discovery and sign-in evidence (61005,61011). These changes include using exported data for local role analysis, limiting policy checks to privileged roles, bounding report detail, and improving result handling for incomplete or mismatched data. Some refinements improve correctness and report clarity rather than runtime speed. - Expanded Pester coverage for Graph batching and retries, export behavior, report data, telemetry, and the updated assessments to guard against regressions. The tests improve change confidence; they are not themselves runtime optimizations.
Assessments of large tenants may still take a long time. The goal is reliable completion: tenant size or a long runtime alone should not cause the assessment to break or fail. For larger tenants, an appropriately sized dedicated Windows VM with sufficient CPU and memory is still recommended. See the dedicated clean VM guidance.
π Telemetry and demo-report safety
- Added a run-time telemetry notice that explains the event payload and the
-DisableTelemetryswitch. The event contains the tenant ID as its only tenant-specific custom property and does not include assessment results; standard network metadata may still be processed by Azure Monitor or intervening network services. - Reworked demo-report generation to replace tenant-specific identities and resource details with synthetic values, validate the generated report data and HTML, and verify anonymization before publishing demo outputs.
π Documentation and maintenance
- Updated the PowerShell guide, troubleshooting guidance, and report screenshots, and added a Zero Trust Workshop pitch deck.
- Added a repository verification script and development conventions, refreshed the build and release scripts for the current PowerShell requirements, and pinned GitHub Actions to full commit SHAs.
2.6.0
Release roll-up introducing a redesigned assessment report experience, expanded Security Operations and Network coverage, stronger privacy protections for diagnostics, and updated Zero Trust Workshop integration and guidance.
Install from PowerShell Gallery:
Install-Module -Name ZeroTrustAssessment -RequiredVersion 2.6.0π Report experience
- A redesigned report is now generated as
ZeroTrustAssessmentReport.htmland opened by default. - The previous report remains available alongside it as
ZeroTrustAssessmentReport-classic.html. - The overview now includes AI agent counts and recent active agent users.
- Device insights now include operating-system distribution, desktop join and compliance state, mobile compliance, ownership, and managed-device summaries.
- New Network visualizations show how Azure workloads are protected across inbound, outbound, and availability defense planes.
- Report generation now validates template paths and embedded-data markers, with improved temporary-file handling.
π‘οΈ Security Operations assessments
Microsoft Defender for Office 365 and collaboration protection
41033β Anti-phishing policies in Microsoft Defender for Office 365 are configured with impersonation and spoof protection41034β Anti-spam (hosted content filter) policies are configured with recommended thresholds and actions41114β Microsoft Teams protection policies are configured to block malicious messages, links, and attachments41116β Threat hunting against Email and Collaboration tables in Microsoft 365 Defender Advanced Hunting is operational
Endpoint and application control
41052β Application control (WDAC / App Control for Business) is enforced via Intune
Microsoft Sentinel and Security Copilot
41209β User and Entity Behavior Analytics (UEBA) is enabled in Microsoft Sentinel41211β Auditing and health monitoring is enabled for Microsoft Sentinel41215β Microsoft Security Copilot capacity (Security Compute Units) is provisioned in the tenant
π Network coverage
25375β The tenant holds the licenses required to operate Global Secure Access27024β HTTP DDoS protection rule set is enabled in Azure Front Door WAF- Added report insights for Azure inbound, outbound, and availability defense planes.
β Pillars and assessment metadata
- Infrastructure, Security Operations, and AI have moved out of preview. All current pillars now run by default without requiring
-Preview. - The
-Previewswitch remains available for future preview-only functionality. - Assessment
35037was retired because it cannot be evaluated reliably by the assessment framework. (#1434) - Updated Secure Future Initiative pillar mappings and implementation metadata for assessments
21835,24550, and24552.
π Privacy and diagnostic safety
- Added defense-in-depth sanitization before error details are persisted to reports, logs, or test results. (#1426)
- Credential-bearing HTTP headers, sensitive values, response bodies, and unsafe target objects are excluded from persisted diagnostics.
- Failed tests now use bounded, structured diagnostic summaries containing safe fields such as request method and path, HTTP status, Graph error code, correlation IDs, exception type, and source location.
π§© Zero Trust Workshop integration
Assessment results now generate a ready-to-import Zero Trust Workshop notes file at <output folder>\zt-export\ZeroTrustWorkshop.json. Take this file and import it directly into the Zero Trust Workshop at aka.ms/zerotrust/workshop.
π Workshop guidance and documentation
- Added comprehensive DevSecOps Workshop guidance.
- Expanded Workshop guidance for AI, Devices, and Network tasks.
- Added and refreshed AI, Assessment, Devices, and DevSecOps videos.
- Updated the Workshop and Assessment site experience, screenshots, delivery guidance, and version history.
- Updated module documentation for the new default pillars and dual report outputs.
2.5.0
Release roll-up introducing a comprehensive Security Operations (SecOps) pillar and a major Devices pillar expansion, plus new AI and Infrastructure checks, framework performance and caching improvements, and correctness fixes.
Install from PowerShell Gallery:
Install-Module -Name ZeroTrustAssessment -RequiredVersion 2.5.0
π‘οΈ Security Operations pillar
Microsoft Defender for Identity
41002β Microsoft Defender for Identity sensor is installed and healthy on every domain controller41003β Microsoft Defender for Identity sensors are installed and healthy on AD FS, AD CS, and Microsoft Entra Connect servers41018β No open Microsoft Defender for Identity health issues are present in the tenant41019β Compromised identities surfaced by Microsoft Defender for Identity have been remediated41020β Microsoft Defender for Identity sensor deployment is validated by reviewing the Health Issues page41022β Microsoft Defender for Identity security alerts have been triaged and tuned41009β Dormant accounts have been removed from sensitive Active Directory groups
Endpoint & antivirus protection
41029β Anti-malware policies are configured according to recommended settings41045β All eligible endpoints are onboarded to Microsoft Defender for Endpoint41053β Network protection is enabled in block mode41059β EDR in block mode is enabled when Microsoft Defender Antivirus is not the primary antivirus41060β Cloud-delivered protection is enabled in Microsoft Defender Antivirus
Email & collaboration security
41031β Safe Attachments policies in Microsoft Defender for Office 365 are configured to detonate and block41032β Safe Links policies in Microsoft Defender for Office 365 are configured to scan and block malicious URLs
Detection, triage & response
41041β Automated Investigation and Response (AIR) recommendations are reviewed and actioned41061β All active Microsoft Defender XDR incidents are triaged and remediated41062β Automated Investigation and Response (AIR) recommendations are reviewed and actioned41081β At least one Microsoft Defender for Cloud Apps anomaly detection policy is generating alerts41121β Every open Microsoft Defender XDR alert is triaged across all Defender services, with no high-severity alert left unassigned or unworked past its triage window
Microsoft Sentinel
41206β At least one workbook is deployed in every Microsoft Sentinel workspace for visualization and operational reporting41207β Active analytics rules are configured in Microsoft Sentinel to detect threats41208β At least one watchlist is configured in Microsoft Sentinel for correlation against high-value entities41213β At least one automation rule is configured in Microsoft Sentinel to manage incident response
π» Devices pillar
51001β Windows Endpoint Privilege Management is configured and assigned51013β App Protection Policies block managed-app access when user re-authentication fails (disabled Entra ID accounts, blocked sign-ins, expired tokens)51014β App Protection Policies block managed-app access on jailbroken or rooted mobile devices51015β Multi Admin Approval is enabled in Intune to require a second admin to approve sensitive tenant changes51016β Privileged Identity Management is enforced for Intune Administrator role assignments51018β Windows App Control for Business (WDAC) is configured and assigned via Intune51019β MAM app access timeout and re-authentication are enforced after idle period24550β Data on Windows is protected by BitLocker encryption
π€ AI pillar
61017β Microsoft Defender for AI Services alerts are flowing to the Microsoft Sentinel workspace via a single connector path61023β A365 Observability data connector is enabled on the Microsoft Sentinel workspace
ποΈ Infrastructure pillar
50001β Surfaces Microsoft Defender for Cloud recommendations in the report's Infrastructure view (view and reporting enhancements). (#1408)
π Graph permissions
Added the scopes required by the new SecOps checks:
SecurityIdentitiesSensors.Read.All,SecurityIdentitiesHealth.Read.Allβ Defender for Identity sensor & health checksSecurityEvents.Read.All,SecurityAlert.Read.All,SecurityIncident.Read.Allβ alerts and incident triage checksThreatHunting.Read.Allβ advanced hunting queriesPrivilegedAssignmentSchedule.Read.AzureADGroup,PrivilegedEligibilitySchedule.Read.AzureADGroupβ privileged role/group assignment checks
Permission list in the README and Get-ZtGraphScope was sorted and reconciled with the new checks.
β‘ Performance & framework
- Caching rework with configurable timeouts and memory improvements to keep large-tenant runs responsive.
- Group membership resolution now uses a larger page size to reduce Graph round-trips.
- Tests requiring Exchange Online or SharePoint Online are no longer run in parallel, avoiding session contention.
Invoke-ZtGraphRequestnow supportsPOSTrequests (enables advanced hunting and other POST-based Graph calls).- Added a
Tenantalias for theTenantIdparameter.
π Fixed issues
- #1230 β Corrected the AIP service environment (USGov DoD) and the Security & Compliance
AADAuthEndpointUri. - #1310 β Sankey reports are now resilient to null/missing link values; additional renderer guard added.
- #1365 β Fixed PSGallery repository registration during publish on PowerShell 7.6+.
- Test 24550 β fixed a
$profilevariable collision and corrected the test category. - Corrected the
KnownPillarsvalue tosecurity-opsfor the SecOps pillar. - Fixed result counting when
-DisablePagingis used in Graph requests. - Standardized the device test category to
Devicesfor consistency.
π οΈ Tooling & docs
- Zero Trust Workshop export (
Convert-ZtAssessmentToWorkshop) enhancements: markdown cleanup, long-line compaction, status-icon/emoji de-duplication, a notes hard-cap, and skip diagnostics. - README and Graph scope documentation updated for the new SecOps and Infrastructure checks (including a Security Reader note for test 41114).
2.4.0
Release roll-up introducing a comprehensive AI security pillar and an Infrastructure pillar, plus correctness and performance fixes.
Install from PowerShell Gallery:
Install-Module -Name ZeroTrustAssessment -RequiredVersion 2.4.0
π€ AI pillar assessments
AI Threat Detection
61002β Microsoft Sentinel onboarded on at least one Log Analytics workspace61016β Entra ID Protection risk events flowing to the Sentinel workspace61018β Purview Information Protection data connector enabled on Sentinel61021β Microsoft 365 Copilot data connector enabled on Sentinel61022β Defender for AI Services enabled on every subscription hosting Azure OpenAI / AI Services61024β Defender XDR (unified) data connector enabled on Sentinel
AI Cloud Posture
61004β Defender for Cloud CSPM plan enabled on all Azure subscriptions
AI Authentication & Access
61006β AI administrative roles have assigned principals61009β Conditional Access covers both agent identities and agent users61011β Require users to use Entra ID auth to interact with agents61012β Risk-based Conditional Access blocks risky agent identities61013β Identity governance for agents (sponsors, entitlement management, lifecycle automation)61008β Agent identity lifecycle tagging (custom security attributes present)
AI Inventory & Lifecycle
61005β Copilot agents are discoverable in the Agent Registry61014β Agent identities & blueprint principals have technical owners; no disabled agents remain
Global Secure Access
25415β AI Gateway protects enterprise generative AI apps from prompt-injection attacks
Data security & information-protection checks in the AI pillar
35003β35008β Sensitivity label configuration, publishing, SharePoint/OneDrive labeling, PDF labeling, IRM, default library labels35010β35017β Double Key Encryption, super-user membership, container labels, encryption labels, attachment inheritance, mandatory & default labeling35019β35025β Auto-labeling (config, enforcement, SharePoint/OneDrive), on-demand scans, OCR, Azure RMS activation & licensing35030β35036β DLP policies, Adaptive Protection, custom SITs, Exact Data Match, named entities, trainable classifiers35037β35041β M365 audit logging, Insider Risk for risky AI usage, communication compliance for Copilot & enterprise AI tools, browser DLP for AI apps via Edge for Business
ποΈ Infrastructure pillar
50001β Surfaces Microsoft Defender for Cloud recommendations from the connected/scanned environment in the report's Infrastructure view.
π§© Zero Trust Workshop integration (experimental)
- Assessment results now project onto Zero Trust Workshop tasks and emit a
ZeroTrustWorkshop.jsonfor direct import into the Workshop app (best-effort; never fails the run).
π Graph permissions
- Added scopes required by the new AI checks (Lifecycle Workflows, privileged assignment/eligibility schedules, Copilot packages).
π Fixed issues
- #1194 β Test 21835: performance, correctness & reporting cleanups for the emergency-access account check.
- #1274 β Test 24552: explicit null guard so firewall status is detected correctly.
- #1264 β Test 25392: now correctly reports "skipped" when no private-access connectors are installed.
- #1235 β HTML report crashed on render despite a clean run; rendering safety fixes applied.
- #1193 β Use the system browser (
-UseSystemBrowser) for SharePoint Online interactive auth inConnect-ZtAssessment. - #687 β Truncate large results tables (applied to 61014) to keep the report readable.
- 21816 β PIM privileged-role assignment check now accounts for JIT access into role-assignable groups.
π οΈ Tooling & docs
- New support-package analyzer skill and Copilot review instructions.
- New troubleshooting guide with PII/OII/EUII sanitization guidance.
2.3.0
2.0.0
Zero Trust Assessment V2
- Updated html based reporting
- Additional tests for Identity (100) and Devices (36)
The previous version can be installed using the -RequiredVersion parameter.
Install-Module -Name ZeroTrustAssessment -RequiredVersion 1.3.00.23.0 - Release Candidate
Update ZeroTrustAssessmentV2.psd1
Public Preview Release Candidate
0.22.0 Update ZeroTrustAssessmentV2.psd1