Microsoft 365 passwords should be set to never expire
This check looks at the password expiration policy of your Microsoft 365 domains. The safe setting is that passwords do not expire on a schedule, and are changed when there is a reason to, with MFA protecting sign-in.
Why it matters
Forced periodic changes tend to push people toward small, predictable variations of the old password, which does not make accounts safer. Microsoft's own guidance recommends not expiring passwords on a schedule when MFA is in place and weak or leaked passwords are detected: password policy recommendations.
The reasoning is about behaviour rather than cryptography. A password that must change every few months is more likely to be written down or incremented by one digit, while a long unique password that stays put is easier for people to remember and does not give attackers a predictable pattern to guess.
How to check it yourself
In the Microsoft 365 admin center go to Settings, Org settings, Security & privacy, Password expiration policy. The box Set passwords to never expire should be ticked. Read-only with Microsoft Graph PowerShell:
Connect-MgGraph -Scopes "Domain.Read.All"
Get-MgDomain | Select-Object Id, PasswordValidityPeriodInDaysA value of 2147483647 means passwords never expire.
How to fix it
In the admin center tick Set passwords to never expire and save. Or with PowerShell, for each domain:
Connect-MgGraph -Scopes "Domain.ReadWrite.All"
Update-MgDomain -DomainId <your-domain> -PasswordValidityPeriodInDays 2147483647Before you do, confirm that MFA is required for all users. ConfigCobra only reads your environment and never changes it; the steps below are for you or your administrator to run.
What changes when you fix it
Users stop receiving expiry prompts and no longer get locked out of services that cached an old password after a forced change. Help desk volume for expired passwords usually drops. Accounts synchronised from on-premises Active Directory still follow the on-premises policy, so that policy needs the same review. Make sure leaked-password detection and MFA are in place, since expiry no longer limits how long a stolen password works.
Communicate the change to your help desk and to users, since people may expect the old rotation reminders. Pair it with conditions that make a stolen password less useful: MFA for everyone, a banned password list, and a process to force a reset when an account is suspected to be compromised. The remediation impact view in ConfigCobra lists the affected users and policies before you apply a fix.
Included in
| Benchmark | CIS ID | Profile |
|---|---|---|
| CIS Microsoft 365 Foundations v7.0.0 | 1.3.1 | E3 Level 1 |
More checks in Microsoft 365 admin center
- Administrative accounts should be cloud-only, not synced from on-premisesCIS 1.1.1
- Two emergency access accounts have been definedCIS 1.1.2
- The number of Global Administrators should be between two and fourCIS 1.1.3
- Administrative accounts should use a license with a reduced application footprintCIS 1.1.4
- Microsoft 365 groups should not be publicly visibleCIS 1.2.1
Go further
- Microsoft 365 admin center15 controls in this section
- CIS Microsoft 365 Foundations v7.0.0160 controls
- CIS Microsoft 365 Foundations checklistEvery control in one list, as CSV
- RemediationSee what a fix changes in your tenant before you apply it, then use the generated script
- Monitoring & DriftDaily scans, drift detection and email alerts when a control regresses
Check this on your Microsoft 365
ConfigCobra runs this check with every other control of the CIS Microsoft 365 Foundations Benchmark, read-only.