Description
The password expiration policy of every managed domain of the tenant is set to never expire. Passwords are changed when there is a reason to: suspected compromise, a leaked-credentials detection (CB-M365-AUTH-030), or the user's own choice.
Password strength is ensured by other controls: MFA for all users, the banned password lists (CB-M365-AUTH-036, CB-M365-AUTH-037) and smart lockout (CB-M365-AUTH-038).
Periodic expiration of privileged account passwords is not required either: administrators use phishing-resistant MFA (CB-M365-AUTH-004), which makes the password a minor factor. Service accounts that still use passwords should be replaced by managed identities or workload identities.
Rationale
Current guidance (NIST SP 800-63B, ANSSI, Microsoft) is against arbitrary periodic changes. Users forced to rotate choose weaker passwords built on a pattern, write them down or reuse them elsewhere, and an attacker who learns the old one guesses the new one. Expiration also does not revoke a session or token already stolen.
Impact
None known. Expiration notifications are no longer shown by Microsoft 365 anyway. Synchronized
users follow the on-premises Active Directory policy unless the
CloudPasswordPolicyForPasswordSyncedUsersEnabled feature is turned on.
Setting
| Location | Microsoft 365 admin center > Settings > Org settings > Security & privacy > Password expiration policy |
| Default | Set passwords to never expire |
| Recommended | Set passwords to never expire (passwordValidityPeriodInDays = 2147483647 on every managed domain) |
Audit
- Sign in to the Microsoft 365 admin center (https://admin.cloud.microsoft) as at least a Global Reader.
- Browse to Settings > Org settings > Security & privacy > Password expiration policy.
- Check that Set passwords to never expire (recommended) is selected.
- Alternative in PowerShell (Microsoft Graph, scope
Domain.Read.All):Get-MgDomain | Where-Object { $_.AuthenticationType -eq 'Managed' } | Select-Object Id, PasswordValidityPeriodInDaysEach managed domain must show2147483647. - Fail if the option is cleared, or if a managed domain has a finite validity period (domains added after the policy was set keep the default until the policy is saved again).
Remediation
- Sign in to the Microsoft 365 admin center as at least a User Administrator.
- Browse to Settings > Org settings > Security & privacy > Password expiration policy.
- Select Set passwords to never expire (recommended) and Save. Saving again also applies the policy to domains added since.
- Per domain in PowerShell (Microsoft Graph, scope
Domain.ReadWrite.All, Domain Name Administrator):Update-MgDomain -DomainId <domain> -PasswordValidityPeriodInDays 2147483647
Rollback
Clear the option and enter a number of days (14 to 730).
References
- Set the password expiration policy for your organization Microsoft, vendor-doc, accessed 2026-10-24
- Password policies and account restrictions in Microsoft Entra ID Microsoft, vendor-doc, accessed 2026-10-24
- CISA SCuBA Microsoft Entra ID baseline CISA, standard, accessed 2026-10-24
Mappings
| Framework | ID | Relation | Note |
|---|---|---|---|
| ANSSI - Recommandations relatives à l'authentification multifacteur et aux mots de passe2.0 | R24 | partial | ANSSI drops expiration for unprivileged accounts only; ours applies to every account, privileged ones being covered by phishing-resistant MFA. |
| NIST SP 800-53 Rev. 55.1.1 | IA-5(1) | related | |
| CISA SCuBA Microsoft 365 Secure Configuration Baselines2.0.0 | MS.AAD.6.1v1 | equivalent |
How this control relates to the other framework's: equivalent, stricter, looser, partial or related.
Related controls
- related
CB-M365-AUTH-036Enforce a custom banned password list with the organization's own terms - related
CB-M365-AUTH-004Require phishing-resistant MFA for administrative roles
People and lifecycle
| Authors |
|
| Introduced in | v0.1.0 |
| Created, updated | 2026-10-24, 2026-10-24 |
| Translations | fr |