【问题标题】:AWS WAF CDK Python How to change rule actionAWS WAF CDK Python 如何更改规则操作
【发布时间】:2023-04-04 08:51:03
【问题描述】:

这是我的 python cdk 代码,它创建了 2 个规则“AWS-AWSManagedRulesCommonRuleSet”和“AWS-AWS-ManagedRulesAmazonIpReputationList”。 在每条规则中都有子规则,我可以将它们的 Rule Actions 更改为 Count,问题是如何将其添加到我的代码中,我没有为这些子规则找到任何好的解释。

添加了一些更改但仍然不起作用,我收到此错误:

Resource handler returned message: "Error reason: You have used none or multiple values for a field that requires exactly one value., field: RULE, parameter: Rule (Service: Wafv2, Status Code: 400, Request ID: 248d9235-bd01-49f4-963b-109bac2776c5, Extended Request ID: null)" (RequestToken: 8bb5****-****-3e95-****- 
8e336ae3eed4, HandlerErrorCode: InvalidRequest)

代码:

class PyCdkStack(core.Stack):

def __init__(self, scope: core.Construct, construct_id: str, **kwargs) -> None:
    super().__init__(scope, construct_id, **kwargs)

    web_acl = wafv2.CfnWebACL(
        scope_=self, id='WebAcl',
        default_action=wafv2.CfnWebACL.DefaultActionProperty(allow={}),
        scope='REGIONAL',
        visibility_config=wafv2.CfnWebACL.VisibilityConfigProperty(
            cloud_watch_metrics_enabled=True,
            sampled_requests_enabled=True,
            metric_name='testwafmetric',
        ),
        name='Test-Test-WebACL',
        rules=[
            {
                'name': 'AWS-AWSManagedRulesCommonRuleSet',
                'priority': 1,
                'statement': {
                    'RuleGroupReferenceStatement': {
                        'vendorName': 'AWS',
                        'name': 'AWSManagedRulesCommonRuleSet',
                        'ARN': 'string',
                        "ExcludedRules": [
                            {
                                "Name": "CrossSiteScripting_QUERYARGUMENTS"
                            },
                            {
                                "Name": "GenericLFI_QUERYARGUMENTS"
                            },
                            {
                                "Name": "GenericRFI_QUERYARGUMENTS"
                            },
                            {
                                "Name": "NoUserAgent_HEADER"
                            },
                            {
                                "Name": "SizeRestrictions_QUERYSTRING"
                            }
                        ]
                    }
                },
                'overrideAction': {
                    'none': {}
                },
                'visibilityConfig': {
                    'sampledRequestsEnabled': True,
                    'cloudWatchMetricsEnabled': True,
                    'metricName': "AWS-AWSManagedRulesCommonRuleSet"
                }
            },
        ]
    )

【问题讨论】:

    标签: python amazon-web-services aws-cdk web-application-firewall


    【解决方案1】:

    Cfn- 构造是到 cloudformation 资源的一对一映射。您可以简单地查看 aws::wafv2::webacl 的文档。

    有关如何在 cloudformation 中排除的示例,请参见下文。请注意,对象键需要以小写字母开头,以便 CDK 处理它们。

    {
        "name": "AWS-AWSBotControl-Example",
       "priority": 5, 
       "statement": {
        "managedRuleGroupStatement": {
            "vendorName": "AWS",
            "name": "AWSManagedRulesBotControlRuleSet",
            "excludedRules": [
                {
                    "name": "CategoryVerifiedSearchEngine"
                },
                {
                    "name": "CategoryVerifiedSocialMedia"
                }
            ]
        },
       "visibilityConfig": {
           "sampledRequestsEnabled": true,
           "cloudWatchMetricsEnabled": true,
           "metricName": "AWS-AWSBotControl-Example"
       }
    }
    

    这实际上将提到的两个规则设置为计数模式。见https://docs.aws.amazon.com/waf/latest/developerguide/web-acl-rule-group-settings.html#web-acl-rule-group-rule-to-count。请注意:

    您像这样更改的规则被描述为规则组中的排除规则。如果您启用了指标,您会收到每个排除规则的 COUNT 个指标。此更改改变了规则组中规则的评估方式。

    【讨论】:

    • 请查看我添加的更改,并添加了我现在遇到的错误。
    • @hightest 你能发布你使用的整个构造定义吗?现在我们只看到规则的 json。
    • 我添加了整个代码。
    • sn-p 结束未完成(带有},。你也可以添加结构的结尾吗?
    • 好的,我现在完全按照我在 cdk 中的 python 堆栈文件中编辑它,你想让我也添加 app.py 文件吗?
    猜你喜欢
    • 1970-01-01
    • 2021-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-30
    • 2019-11-12
    • 2021-11-16
    • 1970-01-01
    相关资源
    最近更新 更多