Microsoft 365 tenants drift: a new admin, a consented app, a sharing exception or a re-enabled protocol undoes last year's hardening without anyone noticing. This template is a tickable quarterly audit checklist for Microsoft 365 tenant settings, built on CISA's Secure Cloud Business Applications (SCuBA) M365 baselines so that every check has a public, versioned source and a policy ID you can quote. It covers Entra ID sign-in and privileged access, applications and workload identities, Exchange Online, the Defender and Purview security suite, SharePoint and OneDrive, Teams and Power Platform, plus how to record results and evidence. It is written for Microsoft 365 administrators, security engineers and internal auditors. For why each control matters and how to deploy it, read the Microsoft 365 Security Guide; this page audits.
This is an independent guide from NHI Mgmt Group, based on Microsoft's public documentation as of November 2026. It is not sponsored or reviewed by Microsoft. Product features change, so confirm settings against Microsoft's current documentation.
How to use this template
- Replace text in square brackets, such as [Organisation], [tenant name] and [SIEM], with your own details.
- Each check shows the SCuBA policy ID (for example MS.AAD.3.1v1) as published in the cisagov/ScubaGear repository when checked on 8 November 2026. "SHALL" policies are the baseline's mandatory items; "SHOULD" policies are recommended. Policy IDs carry a version suffix that changes when CISA revises a policy, so record the baseline version you audited against.
- Mark each line Pass, Fail, Exception (link the risk acceptance) or N/A, and record the evidence: a screenshot, an exported policy, or the ScubaGear report line.
- CISA's baselines assume at least an M365 E3 or G3 licence and list extra licences per policy. Where a feature sits outside your licence, record the compensating control rather than marking N/A.
- If you also follow the CIS Microsoft 365 Foundations Benchmark, add a column with the matching CIS recommendation number so one audit serves both.
- Run ScubaGear, CISA's open source assessment tool, against the tenant first; use this checklist to review its results, cover the manual checks and record exceptions.
1. Audit record
| Field | Value |
|---|---|
| Tenant and licence | [tenant name], [E3 / E5 / Business Premium / G3 / G5], [add-ons] |
| Baseline and tool versions | [SCuBA baseline version], [ScubaGear version], [CIS benchmark version if used] |
| Auditor and date | [name], [date] |
| Previous audit findings open | [number], [reference] |
| Microsoft Secure Score at audit | [score] (trend indicator only, not a compliance result) |
2. Entra ID: sign-in and authentication
| Check | SCuBA ID | Level | Result |
|---|---|---|---|
| Legacy authentication is blocked by Conditional Access for all users. | MS.AAD.1.1v1 | SHALL | [ ] |
| Users detected as high risk are blocked, and administrators are notified. | MS.AAD.2.1v1, 2.2v1 | SHALL / SHOULD | [ ] |
| Sign-ins detected as high risk are blocked. | MS.AAD.2.3v1 | SHALL | [ ] |
| Phishing-resistant MFA (certificate-based authentication, FIDO2 security keys, Windows Hello for Business or device-bound passkeys) is enforced for all users; MFA of some form is enforced for everyone in the meantime. | MS.AAD.3.1v1, 3.2v2 | SHALL | [ ] |
| Phishing-resistant MFA is required for highly privileged roles. | MS.AAD.3.6v1 | SHALL | [ ] |
| If Microsoft Authenticator is enabled, it shows login context information to reduce MFA phishing. | MS.AAD.3.3v2 | SHALL | [ ] |
| Authentication methods migration is set to "Migration complete". | MS.AAD.3.4v1 | SHALL | [ ] |
| SMS, voice call and email one-time passcode methods are disabled. | MS.AAD.3.5v2 | SHALL | [ ] |
| Managed devices are required to sign in and to register MFA. | MS.AAD.3.7v1, 3.8v1 | SHOULD | [ ] |
| Device code authentication flow is blocked. | MS.AAD.3.9v1 | SHOULD | [ ] |
| User passwords are set not to expire. | MS.AAD.6.1v1 | SHALL | [ ] |
| Entra ID security logs are sent to [SIEM] or the SOC. | MS.AAD.4.1v1 | SHALL | [ ] |
Check that every Conditional Access policy above excludes only the documented emergency access accounts. See the Conditional Access Guide and the Break-Glass Account Guide.
3. Entra ID: privileged access
| Check | SCuBA ID | Level | Result |
|---|---|---|---|
| Between two and eight users hold Global Administrator. Record the count: [number]. | MS.AAD.7.1v1 | SHALL | [ ] |
| Privileged users use finer-grained roles instead of Global Administrator. | MS.AAD.7.2v1 | SHALL | [ ] |
| Privileged accounts are cloud-only, not synchronised from on-premises or federated. | MS.AAD.7.3v1 | SHALL | [ ] |
| No permanent active assignments for highly privileged roles; assignments are made only through a PAM system such as Privileged Identity Management. | MS.AAD.7.4v1, 7.5v1 | SHALL | [ ] |
| Global Administrator activation requires approval. | MS.AAD.7.6v1 | SHALL | [ ] |
| Alerts fire on highly privileged role assignment and on Global Administrator activation; other highly privileged role activations also alert. | MS.AAD.7.7v1, 7.8v1, 7.9v1 | SHALL / SHOULD | [ ] |
See Microsoft 365 admin centres and admin roles.
4. Entra ID: applications, workload identities, guests and agents
Application and service principal credentials are the non-human identities of a tenant, and they are where consent phishing and long-lived secrets hide.
| Check | SCuBA ID | Level | Result |
|---|---|---|---|
| Only administrators can register applications. | MS.AAD.5.1v1 | SHALL | [ ] |
| User consent to applications is restricted, and an admin consent workflow is configured. | MS.AAD.5.2v1, 5.3v1 | SHALL | [ ] |
| Adding application passwords (client secrets) is blocked. | MS.AAD.5.5v1 | SHOULD | [ ] |
| Application password lifetime is 180 days or less; certificate lifetime is 365 days or less. | MS.AAD.5.6v1, 5.7v1 | SHOULD | [ ] |
| Risky AI agents are blocked. | MS.AAD.9.1v1 | SHALL | [ ] |
| Guests have limited access to directory objects; only users with the Guest Inviter role can invite; invitations are limited to approved domains. | MS.AAD.8.1v1, 8.2v1, 8.3v1 | SHOULD | [ ] |
| Quarterly review: list every application with Mail, Files or Directory write permissions and every credential expiring in the next 90 days; confirm owners. [Organisation] check. | n/a | [Organisation] | [ ] |
See How to review Microsoft 365 app registrations with mail permissions, How to find expiring app secrets and certificates in Entra ID and the Consent Phishing and Illicit OAuth Grants Guide.
5. Exchange Online
| Check | SCuBA ID | Level | Result |
|---|---|---|---|
| Automatic forwarding to external domains is disabled. | MS.EXO.1.1v2 | SHALL | [ ] |
| An SPF policy that fails all non-approved senders is published for each domain. | MS.EXO.2.2v3 | SHALL | [ ] |
| DKIM is enabled for all domains. | MS.EXO.3.1v1 | SHOULD | [ ] |
A DMARC policy is published for every second-level domain, at p=reject, with [Organisation] contacts for aggregate and failure reports. (US federal agencies must also include CISA's report address.) | MS.EXO.4.1v1, 4.2v1, 4.3v1, 4.4v1 | SHALL / SHOULD | [ ] |
| SMTP AUTH is disabled. | MS.EXO.5.1v1 | SHALL | [ ] |
| Contact folders and calendar details are not shared with all domains. | MS.EXO.6.1v1, 6.2v1 | SHALL | [ ] |
| External sender warnings are implemented. | MS.EXO.7.1v1 | SHALL | [ ] |
| Mailbox auditing is enabled. | MS.EXO.13.1v1 | SHALL | [ ] |
See the DMARC, SPF and DKIM Guide and the Email Authentication Checklist.
6. Security suite: Defender for Office 365 and Purview
| Check | SCuBA ID | Level | Result |
|---|---|---|---|
| Click-to-run attachments are blocked, at minimum .exe, .cmd and .vbe; malware is quarantined or dropped; post-delivery scanning is on. | MS.SECURITYSUITE.1.1v1, 1.2v1, 1.3v1 | SHALL | [ ] |
| SharePoint, OneDrive and Teams attachments are scanned for malware. | MS.SECURITYSUITE.1.4v1 | SHOULD | [ ] |
| User impersonation protection covers sensitive accounts; domain impersonation protection covers owned domains and key suppliers. | MS.SECURITYSUITE.2.1v1, 2.2v1, 2.3v1 | SHOULD | [ ] |
| A DLP policy protects defined sensitive information and applies to Exchange, OneDrive, SharePoint, Teams chat and devices. | MS.SECURITYSUITE.3.1v1, 3.2v1 | SHALL / SHOULD | [ ] |
| Required alerts are enabled (including suspicious email sending patterns and suspicious connector activity) and reach a monitored mailbox or [SIEM]. | MS.SECURITYSUITE.4.1v1, 4.2v1 | SHALL / SHOULD | [ ] |
| Unified audit logging is enabled; audit logs are searchable for at least 3 months and retrievable for at least 12 months. | MS.SECURITYSUITE.5.1v1, 5.2v1 | SHALL | [ ] |
| Spam and phishing are not delivered to inboxes; no allowed domains in inbound anti-spam policies; no IP allow lists or safe lists. | MS.SECURITYSUITE.6.1v1, 6.2v1, 8.1v1, 8.2v1 | SHALL / SHOULD | [ ] |
| URL block-list checks and click tracking are enabled for email, Teams and Office documents. | MS.SECURITYSUITE.7.1v1, 7.3v1 | SHOULD | [ ] |
See the Microsoft 365 Unified Audit Log Guide for Detection and the Data Loss Prevention (DLP) Guide.
7. SharePoint, OneDrive, Teams and Power Platform
| Check | SCuBA ID | Level | Result |
|---|---|---|---|
| SharePoint and OneDrive external sharing is limited to "Existing guests" or "Only people in your organization", and restricted to approved domains or security groups. | MS.SHAREPOINT.1.1v1, 1.2v1, 1.3v1 | SHALL | [ ] |
| Default sharing scope is "Specific people" and default permission is view only. | MS.SHAREPOINT.2.1v1, 2.2v1 | SHALL | [ ] |
| "Anyone" links (if allowed at all) expire in 30 days or less and are view only; verification code reauthentication is 30 days or less. | MS.SHAREPOINT.3.1v1, 3.2v1, 3.3v2 | SHALL | [ ] |
| Teams external access is enabled only per domain; unmanaged users cannot initiate contact with internal users. | MS.TEAMS.2.1v2, 2.2v2 | SHALL | [ ] |
| Anonymous users cannot start meetings, and anonymous and dial-in users are not admitted automatically. | MS.TEAMS.1.2v2, 1.3v1, 1.5v1 | SHALL / SHOULD | [ ] |
| Teams email integration is disabled. | MS.TEAMS.4.1v1 | SHALL | [ ] |
| Only approved Microsoft, third-party and custom Teams apps can be installed. | MS.TEAMS.5.1v2, 5.2v2, 5.3v2 | SHOULD | [ ] |
| Only administrators can create production, sandbox and trial Power Platform environments. | MS.POWERPLATFORM.1.1v1, 1.2v1 | SHALL | [ ] |
| A DLP policy restricts connector access in the default Power Platform environment; non-default environments have at least one DLP policy. | MS.POWERPLATFORM.2.1v1, 2.2v1 | SHALL / SHOULD | [ ] |
| Power Platform tenant isolation is enabled, with an inbound and outbound connection allowlist. | MS.POWERPLATFORM.3.1v1, 3.2v1 | SHALL / SHOULD | [ ] |
| Content Security Policy is enforced for model-driven and canvas Power Apps. | MS.POWERPLATFORM.4.1v1 | SHALL | [ ] |
| Only administrators can create Power Pages sites; "Share with everyone" is disabled. | MS.POWERPLATFORM.5.1v1, 6.1v1 | SHOULD | [ ] |
See the SharePoint and OneDrive Security Guide and the Microsoft Teams Security Guide. Teams external contact settings also limit the help desk impersonation attacks described in the Email Bombing and Help Desk Impersonation over Teams Guide.
8. Findings and sign-off
| Finding ID | Check failed | Risk | Owner | Fix by | Status |
|---|---|---|---|---|---|
| [M365-Q[n]-01] | [SCuBA ID and description] | [High / Medium / Low] | [name] | [date] | [Open / Closed / Exception] |
- Fix targets: failed SHALL checks fixed within [30 days]; failed SHOULD checks within [90 days] or accepted as exceptions by [role].
- Sign-off: [Microsoft 365 service owner] and [CISO or delegate], [date].
Implementation guidance
- Baseline once, then audit drift: the first run will produce many findings. Prioritise sections 2 and 3 (sign-in and privileged access) and the application checks in section 4, then work through the rest. Later quarters should show only drift.
- Test before enforcing: put new Conditional Access policies in report-only mode first and review sign-in logs for affected users; roll back by switching the policy off. Disabling SMTP AUTH and legacy authentication breaks old devices and scripts, so find them in sign-in logs before enforcement.
- Automate collection: schedule ScubaGear or an equivalent configuration export, store reports with the audit record, and diff them each quarter.
- Measure: percentage of SHALL checks passing; number of Global Administrators; percentage of users with phishing-resistant MFA registered; applications with client secrets older than 180 days; days to close failed SHALL checks. Microsoft describes Secure Score as a posture indicator, not a measure of breach likelihood, so report it as a trend beside these metrics, not instead of them.
- Read with the misconfiguration list: the Top 10 Microsoft 365 Security Misconfigurations explains the failures auditors find most often.
| Checklist section | NIST SP 800-53 Rev. 5 | NIST CSF 2.0 |
|---|---|---|
| Sign-in and authentication (2) | IA-2(1), IA-2(2) | PR.AA-03 |
| Privileged access (3) | AC-6(5), AC-2 | PR.AA-05 |
| Applications and guests (4) | AC-2, IA-5, AC-21 | PR.AA-05 |
| Email and security suite (5, 6) | SI-3, SI-8, AU-2, AU-11 | PR.PS-04, DE.CM-09 |
| Collaboration sharing (7) | AC-3, AC-21 | PR.DS-01 |
| Whole checklist | CM-6 | PR.PS-01 |
Standards and references
- CISA: M365 Secure Configuration Baseline for Microsoft Entra ID
- CISA: M365 Secure Configuration Baseline for Exchange Online
- CISA: M365 Secure Configuration Security Suite Baseline
- CISA: M365 Secure Configuration Baseline for SharePoint Online and OneDrive
- CISA: M365 Secure Configuration Baseline for Microsoft Teams
- CISA: ScubaGear assessment tool
- Microsoft Learn: Microsoft Secure Score
- NIST: SP 800-53 Rev. 5 Security and Privacy Controls
Related NHI Mgmt Group resources: Microsoft 365 Security Guide · Entra ID Security Guide · Top 10 Microsoft 365 Security Misconfigurations · Microsoft 365 Unified Audit Log Guide for Detection · Entra ID Applications and Consent Guide