Skip to content

Commit b58dd68

Browse files
authored
Bug Fix for Inspection Limit Feature for Application Gateway Firewall Policy Settings (#22546)
* new * add test * add back geo * breaking message * typo * version
1 parent a95cfca commit b58dd68

File tree

6 files changed

+1239
-2
lines changed

6 files changed

+1239
-2
lines changed

src/Network/Network.Test/ScenarioTests/ApplicationGatewayTests.cs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -285,6 +285,14 @@ public void TestApplicationGatewayFirewallPolicyWithRateLimitRule()
285285
TestRunner.RunTestScript("Test-ApplicationGatewayFirewallPolicyWithRateLimitRule");
286286
}
287287

288+
[Fact]
289+
[Trait(Category.AcceptanceType, Category.CheckIn)]
290+
[Trait(Category.Owner, NrpTeamAlias.nvadev_subset1)]
291+
public void TestApplicationGatewayFirewallPolicyWithRateLimitRuleGeoLocation()
292+
{
293+
TestRunner.RunTestScript("Test-ApplicationGatewayFirewallPolicyWithRateLimitRuleGeoLocation");
294+
}
295+
288296
[Fact]
289297
[Trait(Category.AcceptanceType, Category.CheckIn)]
290298
[Trait(Category.Owner, NrpTeamAlias.nvadev_subset1)]

src/Network/Network.Test/ScenarioTests/ApplicationGatewayTests.ps1

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4822,6 +4822,62 @@ function Test-ApplicationGatewayFirewallPolicyWithRateLimitRule
48224822
}
48234823
}
48244824

4825+
function Test-ApplicationGatewayFirewallPolicyWithRateLimitRuleGeoLocation
4826+
{
4827+
# Setup
4828+
$location = Get-ProviderLocation "Microsoft.Network/applicationGateways" "West US 2"
4829+
$rgname = Get-ResourceGroupName
4830+
$wafPolicyName = "wafPolicy1"
4831+
4832+
try {
4833+
4834+
$resourceGroup = New-AzResourceGroup -Name $rgname -Location $location -Tags @{ testtag = "APPGw tag"}
4835+
4836+
# WAF Policy with rate limiting rule custom Rule
4837+
$variable = New-AzApplicationGatewayFirewallMatchVariable -VariableName RequestHeaders -Selector Malicious-Header
4838+
$condition = New-AzApplicationGatewayFirewallCondition -MatchVariable $variable -Operator Any -NegationCondition $False
4839+
$groupbyVar = New-AzApplicationGatewayFirewallCustomRuleGroupByVariable -VariableName GeoLocation
4840+
$groupbyUserSes = New-AzApplicationGatewayFirewallCustomRuleGroupByUserSession -GroupByVariable $groupbyVar
4841+
$customRule = New-AzApplicationGatewayFirewallCustomRule -Name example -Priority 2 -RateLimitDuration OneMin -RateLimitThreshold 10 -RuleType RateLimitRule -MatchCondition $condition -GroupByUserSession $groupbyUserSes -Action Block
4842+
4843+
$policySettings = New-AzApplicationGatewayFirewallPolicySetting -Mode Prevention -State Enabled -MaxFileUploadInMb 70 -MaxRequestBodySizeInKb 70
4844+
$managedRuleSet = New-AzApplicationGatewayFirewallPolicyManagedRuleSet -RuleSetType "OWASP" -RuleSetVersion "3.2"
4845+
$managedRule = New-AzApplicationGatewayFirewallPolicyManagedRule -ManagedRuleSet $managedRuleSet
4846+
New-AzApplicationGatewayFirewallPolicy -Name $wafPolicyName -ResourceGroupName $rgname -Location $location -ManagedRule $managedRule -PolicySetting $policySettings -CustomRule $customRule
4847+
4848+
$policy = Get-AzApplicationGatewayFirewallPolicy -Name $wafPolicyName -ResourceGroupName $rgname
4849+
4850+
# Check WAF policy
4851+
Assert-AreEqual $policy.CustomRules[0].Name $customRule.Name
4852+
Assert-AreEqual $policy.CustomRules[0].RuleType $customRule.RuleType
4853+
Assert-AreEqual $policy.CustomRules[0].Action $customRule.Action
4854+
Assert-AreEqual $policy.CustomRules[0].Priority $customRule.Priority
4855+
Assert-AreEqual $policy.CustomRules[0].RateLimitDuration $customRule.RateLimitDuration
4856+
Assert-AreEqual $policy.CustomRules[0].RateLimitThreshold $customRule.RateLimitThreshold
4857+
Assert-AreEqual $policy.CustomRules[0].State "Enabled"
4858+
Assert-AreEqual $policy.CustomRules[0].MatchConditions[0].OperatorProperty $customRule.MatchConditions[0].OperatorProperty
4859+
Assert-AreEqual $policy.CustomRules[0].MatchConditions[0].NegationConditon $customRule.MatchConditions[0].NegationConditon
4860+
Assert-AreEqual $policy.CustomRules[0].MatchConditions[0].MatchVariables[0].VariableName $customRule.MatchConditions[0].MatchVariables[0].VariableName
4861+
Assert-AreEqual $policy.CustomRules[0].MatchConditions[0].MatchVariables[0].Selector $customRule.MatchConditions[0].MatchVariables[0].Selector
4862+
Assert-AreEqual $policy.CustomRules[0].GroupByUserSession[0].GroupByVariables[0].VariableName $customRule.GroupByUserSession[0].GroupByVariables[0].VariableName
4863+
Assert-AreEqual $policy.PolicySettings.FileUploadLimitInMb $policySettings.FileUploadLimitInMb
4864+
Assert-AreEqual $policy.PolicySettings.MaxRequestBodySizeInKb $policySettings.MaxRequestBodySizeInKb
4865+
Assert-AreEqual $policy.PolicySettings.RequestBodyCheck $policySettings.RequestBodyCheck
4866+
Assert-AreEqual $policy.PolicySettings.Mode $policySettings.Mode
4867+
Assert-AreEqual $policy.PolicySettings.State $policySettings.State
4868+
4869+
$policy.CustomRules[0].State = "Disabled"
4870+
Set-AzApplicationGatewayFirewallPolicy -InputObject $policy
4871+
$policy1 = Get-AzApplicationGatewayFirewallPolicy -Name $wafPolicyName -ResourceGroupName $rgname
4872+
Assert-AreEqual $policy1.CustomRules[0].State "Disabled"
4873+
}
4874+
finally
4875+
{
4876+
# Cleanup
4877+
Clean-ResourceGroup $rgname
4878+
}
4879+
}
4880+
48254881
function Test-ApplicationGatewayFirewallPolicyWithUppercaseTransform
48264882
{
48274883
# Setup

src/Network/Network.Test/SessionRecords/Commands.Network.Test.ScenarioTests.ApplicationGatewayTests/TestApplicationGatewayFirewallPolicyWithRateLimitRuleGeoLocation.json

Lines changed: 1169 additions & 0 deletions
Large diffs are not rendered by default.

src/Network/Network/ChangeLog.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@
2222
* Added support for new Application Gateway SKU type, Basic SKU
2323
* Onboarded `Microsoft.EventGrid/partnerNamespaces` to private link cmdlets
2424
* Onboarded `Microsoft.EventGrid/namespaces` to private link cmdlets
25+
* Fixed bug in `NewAzureApplicationGatewayFirewallCustomRuleGroupByVariable` to add "GeoLocation" as a valid input for VariableName
26+
* Added breaking change message for parameter `VariableName` in `NewAzureApplicationGatewayFirewallCustomRuleGroupByVariable` to remove "Geo" as a valid input.
2527

2628
## Version 6.1.1
2729
* Onboarded `Microsoft.ElasticSan/elasticSans` to private link cmdlets

src/Network/Network/FirewallPolicy/FirewallCustomRule/GroupByUserSession/GroupByVariable/NewAzureApplicationGatewayFirewallCustomRuleGroupByVariableCommand.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
// ----------------------------------------------------------------------------------
1414

1515
using Microsoft.Azure.Commands.Network.Models;
16+
using Microsoft.WindowsAzure.Commands.Common.CustomAttributes;
1617
using System.Linq;
1718
using System.Management.Automation;
1819

@@ -21,11 +22,12 @@ namespace Microsoft.Azure.Commands.Network
2122
[Cmdlet("New", ResourceManager.Common.AzureRMConstants.AzureRMPrefix + "ApplicationGatewayFirewallCustomRuleGroupByVariable"), OutputType(typeof(PSApplicationGatewayFirewallCustomRuleGroupByVariable))]
2223
public class NewAzureApplicationGatewayFirewallCustomRuleGroupByVariableCommand : NetworkBaseCmdlet
2324
{
25+
[CmdletParameterBreakingChangeWithVersionAttribute("VariableName", "11.0.0", "7.0.0", ChangeDescription = "Geo would be invalid for parameter VariableName")]
2426
[Parameter(
2527
Mandatory = true,
2628
HelpMessage = "User Session clause variable.")]
2729
[ValidateNotNullOrEmpty]
28-
[ValidateSet("ClientAddr", "Geo", "None", IgnoreCase = true)]
30+
[ValidateSet("ClientAddr", "Geo", "GeoLocation", "None", IgnoreCase = true)]
2931
public string VariableName { get; set; }
3032

3133
public override void ExecuteCmdlet()

src/Network/Network/help/New-AzApplicationGatewayFirewallCustomRuleGroupByVariable.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ User Session clause variable.
5353
Type: System.String
5454
Parameter Sets: (All)
5555
Aliases:
56-
Accepted values: ClientAddr, Geo, None
56+
Accepted values: ClientAddr, Geo, GeoLocation, None
5757

5858
Required: True
5959
Position: Named

0 commit comments

Comments
 (0)