manifests/collectors/Networking/AzureFirewall.psd1
|
# # GENERATED by scripts/ConvertTo-ScoutCollectorDefinition.ps1 from Modules/Public/InventoryModules/Networking/AzureFirewall.ps1 (AB#5660). # Field expressions are copied verbatim from the original collector and evaluate in an # equivalent scope -- see docs/design/decisions/declarative-collectors.md. # Review before trusting; regenerate rather than hand-patch if the source collector changes. # @{ ResourceTypes = @( 'microsoft.network/azurefirewalls' ) ResourceTypeMatching = 'Grouped' AdditionalFilter = $null FilterPreamble = '' RowLoopVariable = '1' SetupPreamble = @' $AzureFirewall = $Resources | Where-Object { $_.TYPE -eq 'microsoft.network/azurefirewalls' } $AzureFWPolicies = $Resources | Where-Object { $_.TYPE -eq 'microsoft.network/firewallpolicies' } $AzureFWPoliciesRules = $Resources | Where-Object { $_.TYPE -eq 'microsoft.network/firewallpolicies/rulecollectiongroups' } $AzureIPGroups = $Resources | Where-Object { $_.TYPE -eq 'microsoft.network/ipgroups' } '@ SetupVariables = @( 'AzureFirewall' 'AzureFWPolicies' 'AzureFWPoliciesRules' 'AzureIPGroups' ) Preamble = @' $sub1 = $SUB | Where-Object { $_.Id -eq $1.subscriptionId } $data = $1.PROPERTIES if ($1.zones) { $Zones = $1.zones } Else { $Zones = "Not Configured" } $Retired = Foreach ($Retirement in $Retirements) { if ($Retirement.id -eq $1.id) { $Retirement } } if ($Retired) { $RetiredFeature = foreach ($Retire in $Retired) { $RetiredServiceID = $Unsupported | Where-Object {$_.Id -eq $Retired.ServiceID} $tmp0 = [pscustomobject]@{ 'RetiredFeature' = $RetiredServiceID.RetiringFeature 'RetiredDate' = $RetiredServiceID.RetirementDate } $tmp0 } $RetiringFeature = if (@($RetiredFeature.RetiredFeature).count -gt 1) { $RetiredFeature.RetiredFeature | ForEach-Object { $_ + ' ,' } }else { $RetiredFeature.RetiredFeature} $RetiringFeature = [string]$RetiringFeature $RetiringFeature = if ($RetiringFeature -like '* ,*') { $RetiringFeature -replace ".$" }else { $RetiringFeature } $RetiringDate = if (@($RetiredFeature.RetiredDate).count -gt 1) { $RetiredFeature.RetiredDate | ForEach-Object { $_ + ' ,' } }else { $RetiredFeature.RetiredDate} $RetiringDate = [string]$RetiringDate $RetiringDate = if ($RetiringDate -like '* ,*') { $RetiringDate -replace ".$" }else { $RetiringDate } } else { $RetiringFeature = $null $RetiringDate = $null } $Threat = if($data.threatintelmode -eq 'deny'){'Alert and deny'}elseif($data.threatintelmode -eq 'alert'){'Alert only'}else{'Off'} $Tags = if(![string]::IsNullOrEmpty($1.tags.psobject.properties)){$1.tags.psobject.properties}else{'0'} $VNETs = @() $PIPs = @() $PrivIPs = @() Foreach($2 in $data.ipConfigurations) { $PIPs += $2.name $VNETs += if(![string]::IsNullOrEmpty($2.properties.subnet.id)){$2.properties.subnet.id.split('/')[8]}else{$null} $PrivIPs += $2.properties.privateIPAddress } $Policy = $AzureFWPolicies | Where-Object {$_.id -eq $data.firewallpolicy.id} $Policy = if(![string]::IsNullOrEmpty($Policy)){$Policy}else{'0'} $Rules = $AzureFWPoliciesRules | Where-Object {$_.id -eq $Policy.properties.rulecollectiongroups.id} $Rules = if(![string]::IsNullOrEmpty($Rules)){$Rules}else{'0'} $FinalPIP = if ($PIPs.count -gt 1) { $PIPs | ForEach-Object { $_ + ' ,' } }else { $PIPs } $FinalPIP = [string]$FinalPIP $FinalPIP = if ($FinalPIP -like '* ,*') { $FinalPIP -replace ".$" }else { $FinalPIP } $FinalVNET = if ($VNETs.count -gt 1) { $VNETs | ForEach-Object { $_ + ' ,' } }else { $VNETs } $FinalVNET = [string]$FinalVNET $FinalVNET = if ($FinalVNET -like '* ,*') { $FinalVNET -replace ".$" }else { $FinalVNET } $FinalPrivIP = if ($PrivIPs.count -gt 1) { $PrivIPs | ForEach-Object { $_ + ' ,' } }else { $PrivIPs } $FinalPrivIP = [string]$FinalPrivIP $FinalPrivIP = if ($FinalPrivIP -like '* ,*') { $FinalPrivIP -replace ".$" }else { $FinalPrivIP } $FinalDNSServers = if (@($Policy.properties.dnssettings.servers).count -gt 1) { $Policy.properties.dnssettings.servers | ForEach-Object { $_ + ' ,' } }else { $Policy.properties.dnssettings.servers } $FinalDNSServers = [string]$FinalDNSServers $FinalDNSServers = if ($FinalDNSServers -like '* ,*') { $FinalDNSServers -replace ".$" }else { $FinalDNSServers } '@ AdditionalRowLoops = @( @{ Variable = 'CoreRule' Source = '$Rules' Preamble = @' $CoreCollections = $CoreRule.properties.rulecollections $CoreCollections = if(![string]::IsNullOrEmpty($CoreCollections)){$CoreCollections}else{'0'} '@ } @{ Variable = 'RuleCollection' Source = '$CoreCollections' Preamble = @' $RuleCoreCollections = $RuleCollection.rules $RuleCoreCollections = if(![string]::IsNullOrEmpty($RuleCoreCollections)){$RuleCoreCollections}else{'0'} '@ } @{ Variable = 'Rule' Source = '$RuleCoreCollections' Preamble = @' $FinalProtocol = if (@($Rule.ipprotocols).count -gt 1) { $Rule.ipprotocols | ForEach-Object { $_ + ' ,' } }else { $Rule.ipprotocols} $FinalProtocol = [string]$FinalProtocol $FinalProtocol = if ($FinalProtocol -like '* ,*') { $FinalProtocol -replace ".$" }else { $FinalProtocol } $FinalPort = if (@($Rule.destinationports).count -gt 1) { $Rule.destinationports | ForEach-Object { $_ + ' ,' } }else { $Rule.destinationports} $FinalPort = [string]$FinalPort $FinalPort = if ($FinalPort -like '* ,*') { $FinalPort -replace ".$" }else { $FinalPort } if(![string]::IsNullOrEmpty($Rule.sourceipgroups)) { $SourceIpGroup = ($AzureIPGroups | Where-Object {$_.id -eq $Rule.sourceipgroups}).properties.ipaddresses $SourceIP = if (@($SourceIpGroup).count -gt 1) { $SourceIpGroup | ForEach-Object { $_ + ' ,' } }else { $SourceIpGroup } $SourceIP = [string]$SourceIP $SourceIP = if ($SourceIP -like '* ,*') { $SourceIP -replace ".$" }else { $SourceIP } $SourceType = 'IP Group' } else { $SourceIP = [string]$Rule.sourceaddresses $SourceType = 'IP Address' } if(![string]::IsNullOrEmpty($Rule.destinationipgroups)) { $DestinationIpGroup = ($AzureIPGroups | Where-Object {$_.id -eq $Rule.destinationipgroups}).properties.ipaddresses $DestinationIP = if (@($DestinationIpGroup).count -gt 1) { $DestinationIpGroup | ForEach-Object { $_ + ' ,' } }else { $DestinationIpGroup } $DestinationIP = [string]$DestinationIP $DestinationIP = if ($DestinationIP -like '* ,*') { $DestinationIP -replace ".$" }else { $DestinationIP } $DestionationType = 'IP Group' } elseif(![string]::IsNullOrEmpty($Rule.destinationfqdns)) { $DestinationIP = [string]$Rule.destinationfqdns $DestionationType = 'FQDN' } else { $DestinationIP = [string]$Rule.destinationaddresses $DestionationType = 'IP Address' } '@ } ) TagLoop = @{ Variable = 'Tag' Source = '$Tags' Preamble = '' } Fields = @( @{ Name = 'ID' Expression = '$1.id' } @{ Name = 'Subscription' Expression = '$sub1.Name' } @{ Name = 'Resource Group' Expression = '$1.RESOURCEGROUP' } @{ Name = 'Name' Expression = '$1.NAME' } @{ Name = 'Location' Expression = '$1.LOCATION' } @{ Name = 'SKU' Expression = '$data.sku.tier' } @{ Name = 'Retiring Feature' Expression = '$RetiringFeature' } @{ Name = 'Retiring Date' Expression = '$RetiringDate' } @{ Name = 'Threat Intel Mode' Expression = '$Threat' } @{ Name = 'Zone' Expression = '[string]$Zones' } @{ Name = 'Public IP Name' Expression = '$FinalPIP' } @{ Name = 'Firewall VNET' Expression = '$FinalVNET' } @{ Name = 'Firewall Private IP' Expression = '$FinalPrivIP' } @{ Name = 'Policy Name' Expression = '$Policy.name' } @{ Name = 'DNS Proxy' Expression = '$Policy.properties.dnssettings.enableproxy' } @{ Name = 'DNS Servers' Expression = '$FinalDNSServers' } @{ Name = 'Rule Collection Group' Expression = '$CoreRule.name' } @{ Name = 'Rule Collection Group Priority' Expression = '$CoreRule.properties.priority' } @{ Name = 'Rule Collection' Expression = '$RuleCollection.name' } @{ Name = 'Rule Action' Expression = '$RuleCollection.action.type' } @{ Name = 'Rule Priority' Expression = '$RuleCollection.priority' } @{ Name = 'Rule Type' Expression = '$Rule.ruletype' } @{ Name = 'Rule Name' Expression = '$Rule.name' } @{ Name = 'Source Type' Expression = '$SourceType' } @{ Name = 'Source' Expression = '$SourceIP' } @{ Name = 'Protocol' Expression = '$FinalProtocol' } @{ Name = 'Destination Port' Expression = '$FinalPort' } @{ Name = 'Destination Type' Expression = '$DestionationType' } @{ Name = 'Destination' Expression = '$DestinationIP' } @{ Name = 'Resource U' Expression = '$ResUCount' } @{ Name = 'Tag Name' Expression = '[string]$Tag.Name' } @{ Name = 'Tag Value' Expression = '[string]$Tag.Value' } ) Export = @{ WorksheetName = 'Azure Firewall' TableNamePrefix = 'AzFirewallTable_' Columns = @( 'Subscription' 'Resource Group' 'Name' 'Location' 'SKU' 'Retiring Feature' 'Retiring Date' 'Threat Intel Mode' 'Zone' 'Public IP Name' 'Firewall VNET' 'Firewall Private IP' 'Policy Name' 'DNS Proxy' 'DNS Servers' 'Rule Collection Group' 'Rule Collection Group Priority' 'Rule Collection' 'Rule Action' 'Rule Priority' 'Rule Type' 'Rule Name' 'Source Type' 'Source' 'Protocol' 'Destination Port' 'Destination Type' 'Destination' 'Resource U' ) TagColumns = @( 'Tag Name' 'Tag Value' ) TagColumnsBefore = 'Resource U' NumberFormat = '0' ConditionalText = @( 'New-ConditionalText -Range F2:F100 -ConditionalType ContainsText' ) } SourceCollector = 'Modules/Public/InventoryModules/Networking/AzureFirewall.ps1' } |