@@ -1637,4 +1637,131 @@ function Test-AzureFirewallPolicyExplicitProxyCRUD {
16371637 # Cleanup
16381638 Clean - ResourceGroup $rgname
16391639 }
1640+ }
1641+
1642+ <#
1643+ . SYNOPSIS
1644+ Tests AzureFirewall Policy Rule Description
1645+ #>
1646+ function Test-AzureFirewallPolicyRuleDescription {
1647+ $rgname = Get-ResourceGroupName
1648+ $azureFirewallPolicyName = Get-ResourceName
1649+ $resourceTypeParent = " Microsoft.Network/FirewallPolicies"
1650+ $location = " westus2"
1651+
1652+ $ruleGroupName = Get-ResourceName
1653+ # AzureFirewallPolicyApplicationRule 1
1654+ $appRule1Name = " appRule"
1655+ $appRule1Desc = " appRuleDesc1"
1656+ $appRule1Fqdn1 = " *google.com"
1657+ $appRule1Fqdn2 = " *microsoft.com"
1658+ $appRule1Protocol1 = " http:80"
1659+ $appRule1Port1 = 80
1660+ $appRule1ProtocolType1 = " http"
1661+ $appRule1Protocol2 = " https:443"
1662+ $appRule1Port2 = 443
1663+ $appRule1ProtocolType2 = " https"
1664+ $appRule1SourceAddress1 = " 192.168.0.0/16"
1665+
1666+ # AzureFirewallPolicyNetworkRule 1
1667+ $networkRule1Name = " networkRule"
1668+ $networkRule1Desc = " networkRuleDesc1"
1669+ $networkRule1SourceAddress1 = " 10.0.0.0"
1670+ $networkRule1SourceAddress2 = " 111.1.0.0/24"
1671+ $networkRule1DestinationAddress1 = " 10.10.10.1"
1672+ $networkRule1Protocol1 = " UDP"
1673+ $networkRule1Protocol2 = " TCP"
1674+ $networkRule1Protocol3 = " ICMP"
1675+ $networkRule1DestinationPort1 = " 90"
1676+
1677+
1678+ # AzureFirewallPolicyNatRule 1
1679+ $natRule1Name = " natRule"
1680+ $natRule1Desc = " natRuleDesc1"
1681+ $natRule1SourceAddress1 = " 10.0.0.0"
1682+ $natRule1SourceAddress2 = " 111.1.0.0/24"
1683+ $natRule1Protocol1 = " UDP"
1684+ $natRule1Protocol2 = " TCP"
1685+ $natRule1DestinationPort1 = " 90"
1686+ $natRule1TranslatedAddress = " 10.1.2.3"
1687+ $natRule1TranslatedPort = " 91"
1688+
1689+ # AzureFirewallPolicyApplicationRuleCollection
1690+ $appRcName = " appRc"
1691+ $appRcPriority = 400
1692+ $appRcActionType = " Allow"
1693+
1694+ # AzureFirewallPolicyNetworkRuleCollection
1695+ $networkRcName = " networkRc"
1696+ $networkRcPriority = 200
1697+ $networkRcActionType = " Deny"
1698+
1699+ # AzureFirewallPolicyNatRuleCollection
1700+ $natRcName = " natRc"
1701+ $natRcPriority = 100
1702+ $natRcActionType = " Dnat"
1703+
1704+ try {
1705+
1706+ # Create the resource group
1707+ $resourceGroup = New-AzResourceGroup - Name $rgname - Location $location - Tags @ { testtag = " testval" }
1708+
1709+ # Create AzureFirewallPolicy (with no rules, ThreatIntel is in Alert mode by default)
1710+ $azureFirewallPolicy = New-AzFirewallPolicy - Name $azureFirewallPolicyName - ResourceGroupName $rgname - Location $location
1711+
1712+ # Create Application Rules
1713+ $appRule = New-AzFirewallPolicyApplicationRule - Name $appRule1Name - Description $appRule1Desc - Protocol $appRule1Protocol1 , $appRule1Protocol2 - TargetFqdn $appRule1Fqdn1 , $appRule1Fqdn2 - SourceAddress $appRule1SourceAddress1
1714+
1715+ # Create Network Rule
1716+ $networkRule = New-AzFirewallPolicyNetworkRule - Name $networkRule1Name - Description $networkRule1Desc - Protocol $networkRule1Protocol1 , $networkRule1Protocol2 - SourceAddress $networkRule1SourceAddress1 , $networkRule1SourceAddress2 - DestinationAddress $networkRule1DestinationAddress1 - DestinationPort $networkRule1DestinationPort1
1717+
1718+ # Create NAT rule
1719+ $natRule = New-AzFirewallPolicyNatRule - Name $natRule1Name - Description $natRule1Desc - Protocol $natRule1Protocol1 , $natRule1Protocol2 - SourceAddress $natRule1SourceAddress1 , $natRule1SourceAddress2 - DestinationAddress $networkRule1DestinationAddress1 - DestinationPort $natRule1DestinationPort1 - TranslatedAddress $natRule1TranslatedAddress - TranslatedPort $natRule1TranslatedPort
1720+
1721+ # Create Filter Rule with 1 application rule
1722+ $appRc = New-AzFirewallPolicyFilterRuleCollection - Name $appRcName - Priority $appRcPriority - Rule $appRule - ActionType $appRcActionType
1723+
1724+ # Create a second Filter Rule Collection with 1 network rule
1725+ $appRc2 = New-AzFirewallPolicyFilterRuleCollection - Name $networkRcName - Priority $networkRcPriority - Rule $networkRule - ActionType $networkRcActionType
1726+
1727+ # Create a NAT Rule Collection
1728+ $natRc = New-AzFirewallPolicyNatRuleCollection - Name $natRcName - ActionType $natRcActionType - Priority $natRcPriority - Rule $natRule
1729+
1730+ New-AzFirewallPolicyRuleCollectionGroup - Name $ruleGroupName - Priority 100 - RuleCollection $appRc , $appRc2 , $natRc - FirewallPolicyObject $azureFirewallPolicy
1731+
1732+ # Get AzureFirewallPolicy
1733+ $getAzureFirewallPolicy = Get-AzFirewallPolicy - Name $azureFirewallPolicyName - ResourceGroupName $rgname
1734+
1735+ # verification
1736+ Assert-AreEqual $appRule1Desc $appRule.Description
1737+ Assert-AreEqual $networkRule1Desc $networkRule.Description
1738+ Assert-AreEqual $natRule1Desc $natRule.Description
1739+
1740+ # Check rule groups count
1741+ Assert-AreEqual 1 @ ($getAzureFirewallPolicy.RuleCollectionGroups ).Count
1742+
1743+ $getRg = Get-AzFirewallPolicyRuleCollectionGroup - Name $ruleGroupName - AzureFirewallPolicy $getAzureFirewallPolicy
1744+
1745+ Assert-AreEqual 3 @ ($getRg.properties.ruleCollection ).Count
1746+
1747+ $filterRuleCollection1 = $getRg.Properties.GetRuleCollectionByName ($appRcName )
1748+ $filterRuleCollection2 = $getRg.Properties.GetRuleCollectionByName ($networkRcName )
1749+ $natRuleCollection = $getRg.Properties.GetRuleCollectionByName ($natRcName )
1750+
1751+ $appRule = $filterRuleCollection1.GetRuleByName ($appRule1Name )
1752+ # Verify application rule
1753+ Assert-AreEqual $appRule1Desc $appRule.Description
1754+
1755+ $getNetworkRule = $filterRuleCollection2.GetRuleByName ($networkRule1Name )
1756+ # Verify Network rule
1757+ Assert-AreEqual $networkRule1Desc $getNetworkRule.Description
1758+
1759+ $getNatRule = $natRuleCollection.GetRuleByName ($natRule1Name )
1760+ # Verify Nat rule
1761+ Assert-AreEqual $natRule1Desc $getNatRule.Description
1762+ }
1763+ finally {
1764+ # Cleanup
1765+ Clean - ResourceGroup $rgname
1766+ }
16401767}
0 commit comments