Skip to content

Commit 3b3cdcc

Browse files
authored
Azfw - add property "httpHeadersToInsert" to Application Rule (#21580)
* initial http headers method and command * validations * rename * HttpHeaderToInsert property and tests * change log conflict * added help info
1 parent ad2b51f commit 3b3cdcc

File tree

10 files changed

+2142
-5
lines changed

10 files changed

+2142
-5
lines changed

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

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -180,5 +180,13 @@ public void TestAzureFirewallSnat()
180180
{
181181
TestRunner.RunTestScript("Test-AzureFirewallSnat");
182182
}
183+
184+
[Fact]
185+
[Trait(Category.AcceptanceType, Category.CheckIn)]
186+
[Trait(Category.Owner, NrpTeamAlias.azurefirewall)]
187+
public void TestAzureFirewallPolicyApplicationRuleCustomHttpHeader()
188+
{
189+
TestRunner.RunTestScript("Test-AzureFirewallPolicyApplicationRuleCustomHttpHeader");
190+
}
183191
}
184192
}

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

Lines changed: 119 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1780,18 +1780,17 @@ function Test-AzureFirewallSnat {
17801780
$privateRange2 = @("0.0.0.0/0", "66.92.0.0/16")
17811781

17821782
try {
1783-
1783+
17841784
# Create the resource group
17851785
$resourceGroup = New-AzResourceGroup -Name $rgname -Location $location -Tags @{ testtag = "testval" }
17861786

17871787
$snat = New-AzFirewallPolicySnat -PrivateRange $privateRange -AutoLearnPrivateRange
1788-
1788+
17891789
# Create AzureFirewallPolicy (with SNAT)
17901790
$azureFirewallPolicy = New-AzFirewallPolicy -Name $azureFirewallPolicyName -ResourceGroupName $rgname -Location $location -Snat $snat
1791-
1791+
17921792
# Get AzureFirewallPolicy
17931793
$getAzureFirewallPolicy = Get-AzFirewallPolicy -Name $azureFirewallPolicyName -ResourceGroupName $rgname
1794-
17951794

17961795
#verification
17971796
Assert-AreEqual $rgName $getAzureFirewallPolicy.ResourceGroupName
@@ -1817,4 +1816,120 @@ function Test-AzureFirewallSnat {
18171816
# Cleanup
18181817
Clean-ResourceGroup $rgname
18191818
}
1819+
}
1820+
1821+
<#
1822+
.SYNOPSIS
1823+
Tests Azure Firewall Policy Application Rule creation and custom http header addition
1824+
#>
1825+
function Test-AzureFirewallPolicyApplicationRuleCustomHttpHeader {
1826+
# Setup
1827+
$rgname = Get-ResourceGroupName
1828+
$azureFirewallPolicyName = Get-ResourceName
1829+
$azureFirewallPolicyAsJobName = Get-ResourceName
1830+
$resourceTypeParent = "Microsoft.Network/FirewallPolicies"
1831+
$location = "centralindia"
1832+
$ruleGroupName = Get-ResourceName
1833+
1834+
# RuleCollection parameters
1835+
$rcName = "RC"
1836+
$rcPriority = 200
1837+
$actionType = "Deny"
1838+
1839+
# Rules parameters
1840+
$ruleName1 = "appRule1"
1841+
$ruleName2 = "appRule2"
1842+
$ruleName3 = "appRule3"
1843+
$sourceAddress = "10.0.0.0"
1844+
$targetFqdn = "www.bing.com"
1845+
$httpProtocol = "HTTP"
1846+
$httpsProtocol = "HTTPS"
1847+
$headerName1 = "header1"
1848+
$headerValue1 = "value1"
1849+
$headerName2 = "header2"
1850+
$headerValue2 = "value2"
1851+
$headerName3 = "header3"
1852+
$headerValue3 = "value3"
1853+
1854+
try {
1855+
# Create the resource group
1856+
$resourceGroup = New-AzResourceGroup -Name $rgname -Location $location
1857+
1858+
# Create AzureFirewallPolicy
1859+
$azureFirewallPolicy = New-AzFirewallPolicy -Name $azureFirewallPolicyName -ResourceGroupName $rgname -Location $location -SkuTier "Premium"
1860+
1861+
# Get AzureFirewallPolicy
1862+
$getAzureFirewallPolicy = Get-AzFirewallPolicy -Name $azureFirewallPolicyName -ResourceGroupName $rgname
1863+
1864+
# Verification
1865+
Assert-AreEqual $rgName $getAzureFirewallPolicy.ResourceGroupName
1866+
Assert-AreEqual $azureFirewallPolicyName $getAzureFirewallPolicy.Name
1867+
Assert-NotNull $getAzureFirewallPolicy.Location
1868+
Assert-AreEqual (Normalize-Location $location) $getAzureFirewallPolicy.Location
1869+
1870+
# Create Application Rules with custom http headers
1871+
$appRule1 = New-AzFirewallPolicyApplicationRule -Name $ruleName1 -Protocol $httpProtocol -SourceAddress $sourceAddress -TargetFqdn $targetFqdn
1872+
Assert-NotNull $appRule1
1873+
$customHeader1 = New-AzFirewallPolicyApplicationRuleCustomHttpHeader -HeaderName $headerName1 -HeaderValue $headerValue1
1874+
Assert-NotNull $customHeader1
1875+
$appRule1.AddCustomHttpHeaderToInsert($customHeader1)
1876+
1877+
$appRule2 = New-AzFirewallPolicyApplicationRule -Name $ruleName2 -Protocol $httpsProtocol -SourceAddress $sourceAddress -TargetFqdn $targetFqdn -TerminateTLS
1878+
Assert-NotNull $appRule2
1879+
$customHeader2 = New-AzFirewallPolicyApplicationRuleCustomHttpHeader -HeaderName $headerName2 -HeaderValue $headerValue2
1880+
Assert-NotNull $customHeader2
1881+
$appRule2.AddCustomHttpHeaderToInsert($customHeader2)
1882+
1883+
$appRule3 = New-AzFirewallPolicyApplicationRule -Name $ruleName3 -Protocol $httpProtocol, $httpsProtocol -SourceAddress $sourceAddress -TargetFqdn $targetFqdn -TerminateTLS
1884+
Assert-NotNull $appRule3
1885+
$customHeader3 = New-AzFirewallPolicyApplicationRuleCustomHttpHeader -HeaderName $headerName3 -HeaderValue $headerValue3
1886+
Assert-NotNull $customHeader3
1887+
$appRule3.AddCustomHttpHeaderToInsert($customHeader3)
1888+
1889+
# Create Rule Collection
1890+
$ruleCollection = New-AzFirewallPolicyFilterRuleCollection -Name $rcName -Priority $rcPriority -Rule $appRule1, $appRule2, $appRule3 -ActionType $actionType
1891+
1892+
# Create Rule Collection Group
1893+
New-AzFirewallPolicyRuleCollectionGroup -Name $ruleGroupName -Priority 100 -RuleCollection $ruleCollection -FirewallPolicyObject $azureFirewallPolicy
1894+
1895+
# Set AzureFirewallPolicy
1896+
Set-AzFirewallPolicy -InputObject $azureFirewallPolicy
1897+
1898+
# Get AzureFirewallPolicy
1899+
$getAzureFirewallPolicy = Get-AzFirewallPolicy -Name $azureFirewallPolicyName -ResourceGroupName $rgName
1900+
1901+
# verification
1902+
Assert-AreEqual $rgName $getAzureFirewallPolicy.ResourceGroupName
1903+
Assert-AreEqual $azureFirewallPolicyName $getAzureFirewallPolicy.Name
1904+
Assert-NotNull $getAzureFirewallPolicy.Location
1905+
Assert-AreEqual $location $getAzureFirewallPolicy.Location
1906+
Assert-AreEqual 1 @($getAzureFirewallPolicy.RuleCollectionGroups).Count
1907+
1908+
$getRcg = Get-AzFirewallPolicyRuleCollectionGroup -Name $ruleGroupName -AzureFirewallPolicy $getAzureFirewallPolicy
1909+
Assert-AreEqual 1 @($getRcg.properties.ruleCollection).Count
1910+
$filterRuleCollection = $getRcg.Properties.GetRuleCollectionByName($rcName)
1911+
Assert-AreEqual 3 $filterRuleCollection.Rules.Count
1912+
1913+
# Verify application rule 1
1914+
$getAppRule1 = $filterRuleCollection.GetRuleByName($ruleName1)
1915+
Assert-AreEqual 1 $getAppRule1.HttpHeadersToInsert.Count
1916+
Assert-AreEqual $headerName1 $getAppRule1.HttpHeadersToInsert[0].HeaderName
1917+
Assert-AreEqual $headerValue1 $getAppRule1.HttpHeadersToInsert[0].HeaderValue
1918+
1919+
# Verify application rule 2
1920+
$getAppRule2 = $filterRuleCollection.GetRuleByName($ruleName2)
1921+
Assert-AreEqual 1 $getAppRule2.HttpHeadersToInsert.Count
1922+
Assert-AreEqual $headerName2 $getAppRule2.HttpHeadersToInsert[0].HeaderName
1923+
Assert-AreEqual $headerValue2 $getAppRule2.HttpHeadersToInsert[0].HeaderValue
1924+
1925+
# Verify application rule 2
1926+
$getAppRule3 = $filterRuleCollection.GetRuleByName($ruleName3)
1927+
Assert-AreEqual 1 $getAppRule3.HttpHeadersToInsert.Count
1928+
Assert-AreEqual $headerName3 $getAppRule3.HttpHeadersToInsert[0].HeaderName
1929+
Assert-AreEqual $headerValue3 $getAppRule3.HttpHeadersToInsert[0].HeaderValue
1930+
}
1931+
finally {
1932+
# Cleanup
1933+
Clean-ResourceGroup $rgname
1934+
}
18201935
}

0 commit comments

Comments
 (0)