Skip to content

Commit 815a8b5

Browse files
Gizachew-EshetieGizachew Eshetie
andauthored
Network rule desc (Azure#19887)
* Fixed bug that firewall policy rule description is not passed to the backend * Added unit test for firewall policy rule description * updated changlog Co-authored-by: Gizachew Eshetie <v-geshetie@microsoft.com>
1 parent 1e23930 commit 815a8b5

File tree

10 files changed

+1281
-3
lines changed

10 files changed

+1281
-3
lines changed

src/Network/Network.Test/ScenarioTests/AzureFirewallPolicyTests.cs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -164,5 +164,13 @@ public void TestAzureFirewallPolicyExplicitProxyCRUD()
164164
{
165165
TestRunner.RunTestScript("Test-AzureFirewallPolicyExplicitProxyCRUD");
166166
}
167+
168+
[Fact]
169+
[Trait(Category.AcceptanceType, Category.CheckIn)]
170+
[Trait(Category.Owner, NrpTeamAlias.azurefirewall)]
171+
public void TestAzureFirewallPolicyRuleDescription()
172+
{
173+
TestRunner.RunTestScript("Test-AzureFirewallPolicyRuleDescription");
174+
}
167175
}
168176
}

src/Network/Network.Test/ScenarioTests/AzureFirewallPolicyTests.ps1

Lines changed: 127 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)