DscResources/Sentinel/Sentinel.schema.psm1

# (2024-11-21 01:32:35) Generated using Microsoft365DSC v1.24.1120.1
Configuration 'Sentinel'
{
    param
    (
        [Parameter(Mandatory = $true)]
        [System.String]
        $ApplicationId,

        [Parameter(Mandatory = $true)]
        [System.String]
        $TenantId,

        [Parameter(Mandatory = $true)]
        [System.String]
        $CertificateThumbprint
    )

    Import-DscResource -ModuleName Microsoft365DSC

    foreach ($AlertRule in $ConfigurationData.NonNodeData.Sentinel.AlertRules)
    {
        $resourceTitle = 'SentinelAlertRule-{0}' -f $AlertRule.DisplayName

        $parameters = $AlertRule
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

        if ($parameters.ContainsKey('UniqueId'))
        {
            $parameters.Remove('UniqueId')
        }
        if ($parameters.ContainsKey('EventGroupingSettings'))
        {
            $parameters.EventGroupingSettings = $parameters.EventGroupingSettings | ForEach-Object {
                if ($_.ContainsKey('UniqueId'))
                {
                    $_.Remove('UniqueId')
                }

                (Get-DscSplattedResource -ResourceName 'MSFT_SentinelAlertRuleEventGroupingSettings' -Properties $_ -NoInvoke).Invoke($_)
            }
        }

        if ($parameters.ContainsKey('CustomDetails'))
        {
            $parameters.CustomDetails = $parameters.CustomDetails | ForEach-Object {
                if ($_.ContainsKey('UniqueId'))
                {
                    $_.Remove('UniqueId')
                }

                (Get-DscSplattedResource -ResourceName 'MSFT_SentinelAlertRuleCustomDetails' -Properties $_ -NoInvoke).Invoke($_)
            }
        }

        if ($parameters.ContainsKey('EntityMappings'))
        {
            $parameters.EntityMappings = $parameters.EntityMappings | ForEach-Object {
                if ($_.ContainsKey('fieldMappings'))
                {
                    $_.fieldMappings = $_.fieldMappings | ForEach-Object {
                        if ($_.ContainsKey('UniqueId'))
                        {
                            $_.Remove('UniqueId')
                        }

                        (Get-DscSplattedResource -ResourceName 'MSFT_SentinelAlertRuleEntityMappingFieldMapping' -Properties $_ -NoInvoke).Invoke($_)
                    }
                }

                if ($_.ContainsKey('UniqueId'))
                {
                    $_.Remove('UniqueId')
                }

                (Get-DscSplattedResource -ResourceName 'MSFT_SentinelAlertRuleEntityMapping' -Properties $_ -NoInvoke).Invoke($_)
            }
        }

        if ($parameters.ContainsKey('AlertDetailsOverride'))
        {
            $parameters.AlertDetailsOverride = $parameters.AlertDetailsOverride | ForEach-Object {
                if ($_.ContainsKey('alertDynamicProperties'))
                {
                    $_.alertDynamicProperties = $_.alertDynamicProperties | ForEach-Object {
                        if ($_.ContainsKey('UniqueId'))
                        {
                            $_.Remove('UniqueId')
                        }

                        (Get-DscSplattedResource -ResourceName 'MSFT_SentinelAlertRuleAlertDetailsOverrideAlertDynamicProperty' -Properties $_ -NoInvoke).Invoke($_)
                    }
                }

                if ($_.ContainsKey('UniqueId'))
                {
                    $_.Remove('UniqueId')
                }

                (Get-DscSplattedResource -ResourceName 'MSFT_SentinelAlertRuleAlertDetailsOverride' -Properties $_ -NoInvoke).Invoke($_)
            }
        }

        if ($parameters.ContainsKey('IncidentConfiguration'))
        {
            $parameters.IncidentConfiguration = $parameters.IncidentConfiguration | ForEach-Object {
                if ($_.ContainsKey('groupingConfiguration'))
                {
                    $_.groupingConfiguration = $_.groupingConfiguration | ForEach-Object {
                        if ($_.ContainsKey('groupByAlertDetails'))
                        {
                            $_.groupByAlertDetails = $_.groupByAlertDetails | ForEach-Object {
                                if ($_.ContainsKey('UniqueId'))
                                {
                                    $_.Remove('UniqueId')
                                }

                                (Get-DscSplattedResource -ResourceName 'MSFT_SentinelAlertRuleIncidentConfigurationGroupingConfigurationAlertDetail' -Properties $_ -NoInvoke).Invoke($_)
                            }
                        }

                        if ($_.ContainsKey('UniqueId'))
                        {
                            $_.Remove('UniqueId')
                        }

                        (Get-DscSplattedResource -ResourceName 'MSFT_SentinelAlertRuleIncidentConfigurationGroupingConfiguration' -Properties $_ -NoInvoke).Invoke($_)
                    }
                }

                if ($_.ContainsKey('UniqueId'))
                {
                    $_.Remove('UniqueId')
                }

                (Get-DscSplattedResource -ResourceName 'MSFT_SentinelAlertRuleIncidentConfiguration' -Properties $_ -NoInvoke).Invoke($_)
            }
        }

        (Get-DscSplattedResource -ResourceName 'SentinelAlertRule' -ExecutionName $resourceTitle -Properties $parameters -NoInvoke).Invoke($parameters)
    }

    foreach ($Setting in $ConfigurationData.NonNodeData.Sentinel.Settings)
    {
        $resourceTitle = 'SentinelSetting-{0}' -f $Setting.ResourceGroupName

        $parameters = $Setting
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

        if ($parameters.ContainsKey('UniqueId'))
        {
            $parameters.Remove('UniqueId')
        }
        (Get-DscSplattedResource -ResourceName 'SentinelSetting' -ExecutionName $resourceTitle -Properties $parameters -NoInvoke).Invoke($parameters)
    }

    foreach ($ThreatIntelligenceIndicator in $ConfigurationData.NonNodeData.Sentinel.ThreatIntelligenceIndicators)
    {
        $resourceTitle = 'SentinelThreatIntelligenceIndicator-{0}' -f $ThreatIntelligenceIndicator.DisplayName

        $parameters = $ThreatIntelligenceIndicator
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

        if ($parameters.ContainsKey('UniqueId'))
        {
            $parameters.Remove('UniqueId')
        }
        (Get-DscSplattedResource -ResourceName 'SentinelThreatIntelligenceIndicator' -ExecutionName $resourceTitle -Properties $parameters -NoInvoke).Invoke($parameters)
    }

    foreach ($Watchlist in $ConfigurationData.NonNodeData.Sentinel.Watchlists)
    {
        $resourceTitle = 'SentinelWatchlist-{0}' -f $Watchlist.Name

        $parameters = $Watchlist
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

        if ($parameters.ContainsKey('UniqueId'))
        {
            $parameters.Remove('UniqueId')
        }
        (Get-DscSplattedResource -ResourceName 'SentinelWatchlist' -ExecutionName $resourceTitle -Properties $parameters -NoInvoke).Invoke($parameters)
    }
}