private/tests/Test-Assessment.21883.ps1
<# .SYNOPSIS Checks if workload identities are configured with risk-based policies #> function Test-Assessment-21883 { [CmdletBinding()] param() Write-PSFMessage '🟦 Start' -Tag Test -Level VeryVerbose $activity = "Checking Workload identities based on risk policies are configured" Write-ZtProgress -Activity $activity -Status "Getting policy" # Query for all CA policies $allCAPolicies = Invoke-ZtGraphRequest -RelativeUri 'policies/conditionalAccessPolicies' -ApiVersion beta # Local filtering for blocked authentication transfer policies - only consider enabled policies $matchedPolicies = $allCAPolicies | Where-Object { $_.grantControls.builtInControls -contains "block" -and $_.conditions.clientApplications.includeServicePrincipals -and $_.state -eq "enabled" } $testResultMarkdown = "" if (($matchedPolicies | Measure-Object).Count -ge 1) { $passed = $true $testResultMarkdown += "Workload identities based on risk policies are configured.`n`n%TestResult%" } else { $passed = $false $testResultMarkdown += "Workload identities based on risk policy is not configured." } $params = @{ TestId = '21883' Title = "Workload identities are configured with risk-based policies" UserImpact = 'Low' Risk = 'High' ImplementationCost = 'Low' AppliesTo = 'Identity' Tag = 'Identity' GraphObjectType = 'ConditionalAccess' GraphObjects = $matchedPolicies Status = $passed Result = $testResultMarkdown } Add-ZtTestResultDetail @params } |