Skip to content

Commit 350d214

Browse files
t-bzhanBo Zhang
andauthored
[FrontDoor] Fix managed-rule add issue for Microsoft_DefaultRuleSet with version 2.0 and greater (#5458)
Co-authored-by: Bo Zhang <[email protected]>
1 parent 5497bcb commit 350d214

File tree

10 files changed

+1252
-6018
lines changed

10 files changed

+1252
-6018
lines changed

src/front-door/HISTORY.rst

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,10 @@
22
33
Release History
44
===============
5+
1.0.17
6+
++++++
7+
* az network front-door waf-policy managed-rules add: Fix managed-rule add issue for Microsoft_DefaultRuleSet with version 2.0 or higher.
8+
59
1.0.16
610
++++++
711
* az network front-door routing-rule update: Fix unexpected configuration override when updating routing rule.

src/front-door/azext_front_door/_params.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ def load_arguments(self, _):
3131
from azext_front_door.vendored_sdks.models import (
3232
PolicyMode, FrontDoorProtocol, FrontDoorHealthProbeMethod, FrontDoorCertificateSource, FrontDoorQuery, ActionType, RuleType, TransformType,
3333
FrontDoorRedirectType, FrontDoorRedirectProtocol, MinimumTLSVersion, Transform, HeaderActionType, RulesEngineOperator, RulesEngineMatchVariable,
34-
FrontDoorForwardingProtocol, MatchProcessingBehavior, PolicyRequestBodyCheck, SkuName, ResourceType
34+
FrontDoorForwardingProtocol, MatchProcessingBehavior, PolicyRequestBodyCheck, SkuName, ResourceType, ManagedRuleSetActionType
3535
)
3636

3737
frontdoor_name_type = CLIArgumentType(options_list=['--front-door-name', '-f'], help='Name of the Front Door.', completer=get_resource_name_completion_list('Microsoft.Network/frontdoors'), id_part='name')
@@ -175,9 +175,10 @@ def load_arguments(self, _):
175175

176176
with self.argument_context('network front-door waf-policy managed-rules add') as c:
177177
c.argument('policy_name', waf_policy_name_type)
178-
c.argument('action', arg_type=get_enum_type(ActionType), help='Action for applied rulesets.')
179-
c.argument('rule_set_type', options_list=['--type'], help='ID of the ruleset to apply.')
178+
c.argument('rule_set_type', options_list=['--type'], help='Ruleset type to use.')
180179
c.argument('version', help='Rule set version.')
180+
c.argument('rule_set_action', options_list=['--action'], arg_type=get_enum_type(ManagedRuleSetActionType),
181+
help='Action for applied rulesets, only required for Microsoft_DefaultRuleSet with version 2.0 or higher.')
181182

182183
with self.argument_context('network front-door waf-policy managed-rules list') as c:
183184
c.argument('policy_name', waf_policy_name_type, id_part=None)

src/front-door/azext_front_door/custom.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -792,13 +792,14 @@ def update_waf_policy(instance, tags=None, mode=None, redirect_url=None,
792792
return instance
793793

794794

795-
def add_azure_managed_rule_set(cmd, resource_group_name, policy_name, rule_set_type, version):
795+
def add_azure_managed_rule_set(cmd, resource_group_name, policy_name, rule_set_type, version, rule_set_action=None):
796796
from azext_front_door.vendored_sdks.models import ManagedRuleSet
797797
client = cf_waf_policies(cmd.cli_ctx, None)
798798
policy = client.get(resource_group_name, policy_name)
799799
rule_set = ManagedRuleSet(
800800
rule_set_type=rule_set_type,
801-
rule_set_version=version
801+
rule_set_version=version,
802+
rule_set_action=rule_set_action,
802803
)
803804

804805
policy_rule_sets = policy.managed_rules.managed_rule_sets

src/front-door/azext_front_door/tests/latest/recordings/test_waf_exclusions.yaml

Lines changed: 161 additions & 231 deletions
Large diffs are not rendered by default.

src/front-door/azext_front_door/tests/latest/recordings/test_waf_policy_basic.yaml

Lines changed: 124 additions & 170 deletions
Large diffs are not rendered by default.

src/front-door/azext_front_door/tests/latest/recordings/test_waf_policy_custom_rule_matching.yaml

Lines changed: 150 additions & 5434 deletions
Large diffs are not rendered by default.

src/front-door/azext_front_door/tests/latest/recordings/test_waf_policy_custom_rules.yaml

Lines changed: 49 additions & 73 deletions
Large diffs are not rendered by default.

src/front-door/azext_front_door/tests/latest/recordings/test_waf_policy_managed_rules.yaml

Lines changed: 745 additions & 104 deletions
Large diffs are not rendered by default.

src/front-door/azext_front_door/tests/latest/test_waf_scenarios.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -313,6 +313,17 @@ def test_waf_policy_managed_rules(self, resource_group):
313313
self.assertIn('managedRules', result)
314314
self.assertEqual(len(result['managedRules']['managedRuleSets']), 0)
315315

316+
type = "Microsoft_DefaultRuleSet"
317+
version = "2.0"
318+
action = "Block"
319+
cmd = 'az network front-door waf-policy managed-rules add -g {resource_group} --policy-name {policyName} --type {type} --version {version} --action {action}'.format(**locals())
320+
result = self.cmd(cmd).get_output_in_json()
321+
322+
self.assertIn('managedRules', result)
323+
self.assertEqual(result['managedRules']['managedRuleSets'][0]['ruleSetType'], type)
324+
self.assertEqual(result['managedRules']['managedRuleSets'][0]['ruleSetVersion'], version)
325+
self.assertEqual(result['managedRules']['managedRuleSets'][0]['ruleSetAction'], action)
326+
316327
cmd = 'az network front-door waf-policy managed-rule-definition list'
317328
result = self.cmd(cmd).get_output_in_json()
318329
defaultRuleSet = [ruleSet for ruleSet in result if ruleSet['ruleSetType'] == type][0]

src/front-door/setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
from codecs import open
99
from setuptools import setup, find_packages
1010

11-
VERSION = "1.0.16"
11+
VERSION = "1.0.17"
1212

1313
CLASSIFIERS = [
1414
'Development Status :: 4 - Beta',

0 commit comments

Comments
 (0)