modules/ISC.EntraCiemConnector.psm1
|
#Requires -Version 5.1 Set-StrictMode -Version Latest function Initialize-EntraCiemConnectorData { $script:EmbeddedCiemFeaturePack = @{ Label = 'CIEM - PIM group eligibility' Permissions = @( @{ Value = 'PrivilegedAccess.Read.AzureADGroup' } @{ Value = 'PrivilegedAssignmentSchedule.Read.AzureADGroup' } @{ Value = 'PrivilegedEligibilitySchedule.Read.AzureADGroup' } ) } } function Test-EmbeddedCiemSelected { param([string[]]$FeatureNames) return @($FeatureNames) -contains 'Ciem' } function Get-EmbeddedCiemFeaturePack { return $script:EmbeddedCiemFeaturePack } function Merge-EntraCiemPermissions { param([string[]]$FeatureNames) if (-not (Test-EmbeddedCiemSelected -FeatureNames $FeatureNames)) { return @() } $merged = [System.Collections.Generic.List[object]]::new() foreach ($permission in $script:EmbeddedCiemFeaturePack.Permissions) { $merged.Add([PSCustomObject]@{ Resource = 'Graph' Value = $permission.Value Pack = 'Ciem' }) } return @($merged) } function Apply-EmbeddedCiemPrerequisites { param($Context) # Entra embedded CIEM is Graph application permissions only; granted via Get-SelectedPermissions. if (-not (Test-EmbeddedCiemSelected -FeatureNames $Context.FeatureNames)) { return } Write-Verbose 'Entra embedded CIEM: ensure -Feature Ciem permissions are consented on the app registration.' } function Build-EmbeddedCiemConnectionSettings { param($Context) if (-not (Test-EmbeddedCiemSelected -FeatureNames $Context.FeatureNames)) { return [ordered]@{} } return [ordered]@{ 'Enable CIEM on SaaS source' = 'Feature Management: enable CIEM / PIM group eligibility analysis after permissions are granted' } } Export-ModuleMember -Function @( 'Initialize-EntraCiemConnectorData' 'Test-EmbeddedCiemSelected' 'Get-EmbeddedCiemFeaturePack' 'Merge-EntraCiemPermissions' 'Apply-EmbeddedCiemPrerequisites' 'Build-EmbeddedCiemConnectionSettings' ) |