HOWTOIntermediate

Microsoft 365 Security and Compliance Configuration Guide

Harden your Microsoft 365 tenant with security baselines, conditional access policies, data loss prevention, audit logging, and compliance configurations...

Dylan H.

Security Engineering

February 5, 2026
7 min read
Microsoft 365 Security and Compliance Configuration Guide

Prerequisites

  • Microsoft 365 E3 or E5 license
  • Global Administrator or Security Administrator role
  • Microsoft Entra ID P1 or P2 for conditional access
  • PowerShell with Microsoft Graph modules

Overview

Microsoft 365 is the backbone of most enterprise productivity environments — and a prime target for attackers. This guide covers the essential security and compliance configurations every M365 tenant should implement, from identity protection to data loss prevention.

Who Should Use This Guide:

  • M365 administrators configuring tenant security
  • Security engineers implementing compliance controls
  • MSP technicians hardening client tenants
  • IT managers preparing for compliance audits

What You Will Learn:

AreaConfiguration
IdentityMFA enforcement, conditional access, PIM
EmailAnti-phishing, safe links, safe attachments
Data ProtectionDLP policies, sensitivity labels, retention
Audit & MonitoringUnified audit log, alert policies
ComplianceeDiscovery, compliance score, assessments

Requirements

ComponentMinimum License
Conditional AccessEntra ID P1 (included in M365 E3)
PIMEntra ID P2 (included in M365 E5)
Defender for Office 365Plan 1 (E3) or Plan 2 (E5)
DLPM365 E3+
Sensitivity LabelsM365 E3+
Advanced AuditM365 E5

Part 1: Identity Security

Enable Security Defaults (Minimum Baseline)

For tenants without Entra ID P1:

# Connect to Microsoft Graph
Connect-MgGraph -Scopes "Policy.ReadWrite.ConditionalAccess"
 
# Check current security defaults status
Get-MgPolicyIdentitySecurityDefaultEnforcementPolicy
 
# Enable security defaults (if no conditional access policies exist)
Update-MgPolicyIdentitySecurityDefaultEnforcementPolicy -IsEnabled $true

Policy 1: Require MFA for All Users

SettingValue
UsersAll users
ExcludeBreak-glass emergency accounts
Cloud AppsAll cloud apps
GrantRequire authentication strength — Phishing-resistant MFA

Policy 2: Block Legacy Authentication

SettingValue
UsersAll users
Cloud AppsAll cloud apps
Conditions > Client appsExchange ActiveSync, Other clients
GrantBlock access

Policy 3: Require Compliant Devices

SettingValue
UsersAll users
Cloud AppsOffice 365
Conditions > Device platformsWindows, macOS, iOS, Android
GrantRequire device to be marked as compliant

Policy 4: Block Access from Risky Sign-ins

SettingValue
UsersAll users
Conditions > Sign-in riskHigh
GrantBlock access

Break-Glass Emergency Accounts

Always maintain at least two emergency access accounts:

# Create break-glass account (do this in Entra admin center)
# - Use a non-personal, organization-owned email
# - Exclude from ALL conditional access policies
# - Use a very long, complex password stored in a physical safe
# - Do NOT enable MFA on these accounts
# - Monitor sign-in activity with alerts
 
# Create alert for break-glass account usage
# In Microsoft 365 Defender > Alert policies
# Alert when: "Activity by break-glass account"

Part 2: Email Security (Defender for Office 365)

Anti-Phishing Policy

# Connect to Exchange Online
Connect-ExchangeOnline
 
# Create strict anti-phishing policy
New-AntiPhishPolicy -Name "Strict Anti-Phishing" `
    -Enabled $true `
    -EnableMailboxIntelligenceProtection $true `
    -EnableOrganizationDomainsProtection $true `
    -EnableSpoofIntelligence $true `
    -EnableFirstContactSafetyTips $true `
    -EnableSimilarUsersSafetyTips $true `
    -EnableUnauthenticatedSender $true `
    -PhishThresholdLevel 3 `
    -TargetedUserProtectionAction Quarantine `
    -TargetedDomainProtectionAction Quarantine `
    -MailboxIntelligenceProtectionAction Quarantine
 
# Apply to all users
New-AntiPhishRule -Name "Strict Anti-Phishing Rule" `
    -AntiPhishPolicy "Strict Anti-Phishing" `
    -RecipientDomainIs (Get-AcceptedDomain).DomainName
New-SafeLinksPolicy -Name "Strict Safe Links" `
    -EnableSafeLinksForEmail $true `
    -EnableSafeLinksForTeams $true `
    -EnableSafeLinksForOffice $true `
    -TrackClicks $true `
    -ScanUrls $true `
    -EnableForInternalSenders $true `
    -DeliverMessageAfterScan $true `
    -DisableUrlRewrite $false
 
New-SafeLinksRule -Name "Strict Safe Links Rule" `
    -SafeLinksPolicy "Strict Safe Links" `
    -RecipientDomainIs (Get-AcceptedDomain).DomainName

Safe Attachments Policy

New-SafeAttachmentPolicy -Name "Strict Safe Attachments" `
    -Enable $true `
    -Action Block `
    -ActionOnError $true `
    -EnableRedirect $true `
    -RedirectAddress "security@example.com"
 
New-SafeAttachmentRule -Name "Strict Safe Attachments Rule" `
    -SafeAttachmentPolicy "Strict Safe Attachments" `
    -RecipientDomainIs (Get-AcceptedDomain).DomainName

Email Authentication (SPF, DKIM, DMARC)

RecordConfiguration
SPFv=spf1 include:spf.protection.outlook.com -all
DKIMEnable in Defender portal for each domain
DMARCv=DMARC1; p=reject; rua=mailto:dmarc@example.com; pct=100

Part 3: Data Loss Prevention (DLP)

Create DLP Policy for Sensitive Data

# Connect to Security & Compliance
Connect-IPPSSession
 
# Create DLP policy for credit card numbers
New-DlpCompliancePolicy -Name "Protect Financial Data" `
    -ExchangeLocation All `
    -SharePointLocation All `
    -OneDriveLocation All `
    -TeamsLocation All `
    -Mode Enable
 
New-DlpComplianceRule -Name "Block Credit Card Sharing" `
    -Policy "Protect Financial Data" `
    -ContentContainsSensitiveInformation @{
        Name = "Credit Card Number"
        MinCount = 1
        MaxConfidence = 100
        MinConfidence = 75
    } `
    -BlockAccess $true `
    -NotifyUser "SiteAdmin" `
    -GenerateIncidentReport "SiteAdmin"
TemplateWhat It Protects
Financial dataCredit cards, bank account numbers
PIISSNs, passport numbers, driver's licenses
Healthcare (HIPAA)Medical record numbers, health data
PCI DSSPayment card industry data
GDPREU personal data

Part 4: Audit Logging and Monitoring

Enable Unified Audit Log

# Check if audit logging is enabled
Get-AdminAuditLogConfig | Select-Object UnifiedAuditLogIngestionEnabled
 
# Enable unified audit logging
Set-AdminAuditLogConfig -UnifiedAuditLogIngestionEnabled $true

Enable Mailbox Auditing

# Enable mailbox auditing for all mailboxes
Get-Mailbox -ResultSize Unlimited |
    Set-Mailbox -AuditEnabled $true -AuditLogAgeLimit 365
 
# Verify
Get-Mailbox -ResultSize Unlimited |
    Select-Object DisplayName, AuditEnabled |
    Where-Object { -not $_.AuditEnabled }

Critical Alert Policies

Configure these in Microsoft 365 Defender:

AlertWhat It Monitors
Suspicious email forwardingAuto-forwarding rules to external domains
Elevation of privilegeAdmin role assignments
Malware campaignMultiple users receiving same malware
Unusual external user file activityExternal sharing anomalies
eDiscovery search startedCompliance search initiated
Mass file deletionBulk SharePoint/OneDrive deletions

Part 5: Additional Hardening

Disable External Forwarding

# Block automatic external forwarding
Set-TransportRule -Name "Block External Auto-Forwarding" `
    -FromScope InOrganization `
    -MessageTypeMatches AutoForward `
    -SentToScope NotInOrganization `
    -RejectMessageReasonText "External email forwarding is blocked by policy" `
    -RejectMessageEnhancedStatusCode "5.7.1"

SharePoint and OneDrive Security

# Connect to SharePoint Online
Connect-SPOService -Url "https://contoso-admin.sharepoint.com"
 
# Restrict external sharing
Set-SPOTenant -SharingCapability ExternalUserSharingOnly
 
# Block downloads from unmanaged devices
Set-SPOTenant -ConditionalAccessPolicy AllowLimitedAccess
 
# Require MFA for sharing
Set-SPOTenant -RequireAcceptingAccountMatchInvitedAccount $true

Teams Security

SettingRecommended Value
External accessAllow only specific domains
Guest accessEnabled with restrictions
Meeting policiesLobby for external participants
Messaging policiesReport security concerns enabled
App permissionsAdmin-approved apps only

Compliance Score Checklist

Track your progress in Microsoft Compliance Manager:

  • MFA enabled for all users
  • Legacy authentication blocked
  • Anti-phishing policies configured
  • Safe Links and Safe Attachments enabled
  • SPF, DKIM, DMARC configured
  • DLP policies active for sensitive data
  • Unified audit logging enabled
  • Mailbox auditing enabled
  • External forwarding blocked
  • SharePoint external sharing restricted
  • Alert policies configured
  • Break-glass accounts created and monitored
  • Conditional access policies deployed
  • Sensitivity labels published

References