public/maester/entra/Test-MtCaRequirePasswordChangeForHighUserRisk.ps1
|
<# .Synopsis Checks if the tenant has at least one conditional access policy requiring password change for high user risk. .Description Password change for high user risk is a good way to prevent compromised accounts from being used to access your tenant. Learn more: https://learn.microsoft.com/entra/identity/conditional-access/howto-conditional-access-policy-risk-user .Example Test-MtCaRequirePasswordChangeForHighUserRisk .LINK https://maester.dev/docs/commands/Test-MtCaRequirePasswordChangeForHighUserRisk #> function Test-MtCaRequirePasswordChangeForHighUserRisk { [CmdletBinding()] [OutputType([bool])] param () if ( ( Get-MtLicenseInformation EntraID ) -ne 'P2' ) { Add-MtTestResultDetail -SkippedBecause NotLicensedEntraIDP2 return $null } try { $policies = Get-MtConditionalAccessPolicy | Where-Object { $_.state -eq 'enabled' } # Only check policies that have password change as a grant control $policies = $policies | Where-Object { $_.grantControls.builtInControls -contains 'passwordChange' } $policiesResult = New-Object System.Collections.ArrayList $result = $false foreach ($policy in $policies) { if ( $policy.grantControls.builtInControls -contains 'passwordChange' -and $policy.conditions.users.includeUsers -eq 'All' -and $policy.conditions.applications.includeApplications -eq 'All' -and 'high' -in $policy.conditions.userRiskLevels ) { $result = $true $CurrentResult = $true $policiesResult.Add($policy) | Out-Null } else { $CurrentResult = $false } Write-Verbose "$($policy.displayName) - $CurrentResult" } if ( $result ) { $testResult = "The following conditional access policies require password change for risky users`n`n%TestResult%" } else { $testResult = 'No conditional access policy requires a password change for risky users.' } Add-MtTestResultDetail -Result $testResult -GraphObjects $policiesResult -GraphObjectType ConditionalAccess return $result } catch { Add-MtTestResultDetail -Error $_ -GraphObjectType ConditionalAccess return $false } } |