/**
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
* SPDX-License-Identifier: Apache-2.0.
*/
#pragma once
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
namespace Aws
{
namespace Utils
{
namespace Json
{
class JsonValue;
class JsonView;
} // namespace Json
} // namespace Utils
namespace WAFV2
{
namespace Model
{
/**
*
A single rule, which you can use in a WebACL or RuleGroup to
* identify web requests that you want to allow, block, or count. Each rule
* includes one top-level Statement that WAF uses to identify matching web
* requests, and parameters that govern how WAF handles them.
If you define more than one Rule in a WebACL, WAF
* evaluates each request against the Rules in order based on the
* value of Priority. WAF processes rules with lower priority first.
* The priorities don't need to be consecutive, but they must all be different.
*/
inline int GetPriority() const{ return m_priority; }
/**
*
If you define more than one Rule in a WebACL, WAF
* evaluates each request against the Rules in order based on the
* value of Priority. WAF processes rules with lower priority first.
* The priorities don't need to be consecutive, but they must all be different.
If you define more than one Rule in a WebACL, WAF
* evaluates each request against the Rules in order based on the
* value of Priority. WAF processes rules with lower priority first.
* The priorities don't need to be consecutive, but they must all be different.
If you define more than one Rule in a WebACL, WAF
* evaluates each request against the Rules in order based on the
* value of Priority. WAF processes rules with lower priority first.
* The priorities don't need to be consecutive, but they must all be different.
The action that WAF should take on a web request when it matches the rule
* statement. Settings at the web ACL level can override the rule action setting.
*
This is used only for rules whose statements do not reference a rule
* group. Rule statements that reference a rule group include
* RuleGroupReferenceStatement and
* ManagedRuleGroupStatement.
You must specify either this
* Action setting or the rule OverrideAction setting, but
* not both:
If the rule statement does not reference a rule
* group, use this rule action setting and not the rule override action setting.
*
If the rule statement references a rule group, use the
* override action setting and not this action setting.
The action that WAF should take on a web request when it matches the rule
* statement. Settings at the web ACL level can override the rule action setting.
*
This is used only for rules whose statements do not reference a rule
* group. Rule statements that reference a rule group include
* RuleGroupReferenceStatement and
* ManagedRuleGroupStatement.
You must specify either this
* Action setting or the rule OverrideAction setting, but
* not both:
If the rule statement does not reference a rule
* group, use this rule action setting and not the rule override action setting.
*
If the rule statement references a rule group, use the
* override action setting and not this action setting.
The action that WAF should take on a web request when it matches the rule
* statement. Settings at the web ACL level can override the rule action setting.
*
This is used only for rules whose statements do not reference a rule
* group. Rule statements that reference a rule group include
* RuleGroupReferenceStatement and
* ManagedRuleGroupStatement.
You must specify either this
* Action setting or the rule OverrideAction setting, but
* not both:
If the rule statement does not reference a rule
* group, use this rule action setting and not the rule override action setting.
*
If the rule statement references a rule group, use the
* override action setting and not this action setting.
The action that WAF should take on a web request when it matches the rule
* statement. Settings at the web ACL level can override the rule action setting.
*
This is used only for rules whose statements do not reference a rule
* group. Rule statements that reference a rule group include
* RuleGroupReferenceStatement and
* ManagedRuleGroupStatement.
You must specify either this
* Action setting or the rule OverrideAction setting, but
* not both:
If the rule statement does not reference a rule
* group, use this rule action setting and not the rule override action setting.
*
If the rule statement references a rule group, use the
* override action setting and not this action setting.
The action that WAF should take on a web request when it matches the rule
* statement. Settings at the web ACL level can override the rule action setting.
*
This is used only for rules whose statements do not reference a rule
* group. Rule statements that reference a rule group include
* RuleGroupReferenceStatement and
* ManagedRuleGroupStatement.
You must specify either this
* Action setting or the rule OverrideAction setting, but
* not both:
If the rule statement does not reference a rule
* group, use this rule action setting and not the rule override action setting.
*
If the rule statement references a rule group, use the
* override action setting and not this action setting.
The action that WAF should take on a web request when it matches the rule
* statement. Settings at the web ACL level can override the rule action setting.
*
This is used only for rules whose statements do not reference a rule
* group. Rule statements that reference a rule group include
* RuleGroupReferenceStatement and
* ManagedRuleGroupStatement.
You must specify either this
* Action setting or the rule OverrideAction setting, but
* not both:
If the rule statement does not reference a rule
* group, use this rule action setting and not the rule override action setting.
*
If the rule statement references a rule group, use the
* override action setting and not this action setting.
The action to use in the place of the action that results from the rule group
* evaluation. Set the override action to none to leave the result of the rule
* group alone. Set it to count to override the result to count only.
You
* can only use this for rule statements that reference a rule group, like
* RuleGroupReferenceStatement and
* ManagedRuleGroupStatement.
This option is usually
* set to none. It does not affect how the rules in the rule group are evaluated.
* If you want the rules in the rule group to only count matches, do not use this
* and instead use the rule action override option, with Count action,
* in your rule group reference statement settings.
The action to use in the place of the action that results from the rule group
* evaluation. Set the override action to none to leave the result of the rule
* group alone. Set it to count to override the result to count only.
You
* can only use this for rule statements that reference a rule group, like
* RuleGroupReferenceStatement and
* ManagedRuleGroupStatement.
This option is usually
* set to none. It does not affect how the rules in the rule group are evaluated.
* If you want the rules in the rule group to only count matches, do not use this
* and instead use the rule action override option, with Count action,
* in your rule group reference statement settings.
The action to use in the place of the action that results from the rule group
* evaluation. Set the override action to none to leave the result of the rule
* group alone. Set it to count to override the result to count only.
You
* can only use this for rule statements that reference a rule group, like
* RuleGroupReferenceStatement and
* ManagedRuleGroupStatement.
This option is usually
* set to none. It does not affect how the rules in the rule group are evaluated.
* If you want the rules in the rule group to only count matches, do not use this
* and instead use the rule action override option, with Count action,
* in your rule group reference statement settings.
The action to use in the place of the action that results from the rule group
* evaluation. Set the override action to none to leave the result of the rule
* group alone. Set it to count to override the result to count only.
You
* can only use this for rule statements that reference a rule group, like
* RuleGroupReferenceStatement and
* ManagedRuleGroupStatement.
This option is usually
* set to none. It does not affect how the rules in the rule group are evaluated.
* If you want the rules in the rule group to only count matches, do not use this
* and instead use the rule action override option, with Count action,
* in your rule group reference statement settings.
The action to use in the place of the action that results from the rule group
* evaluation. Set the override action to none to leave the result of the rule
* group alone. Set it to count to override the result to count only.
You
* can only use this for rule statements that reference a rule group, like
* RuleGroupReferenceStatement and
* ManagedRuleGroupStatement.
This option is usually
* set to none. It does not affect how the rules in the rule group are evaluated.
* If you want the rules in the rule group to only count matches, do not use this
* and instead use the rule action override option, with Count action,
* in your rule group reference statement settings.
The action to use in the place of the action that results from the rule group
* evaluation. Set the override action to none to leave the result of the rule
* group alone. Set it to count to override the result to count only.
You
* can only use this for rule statements that reference a rule group, like
* RuleGroupReferenceStatement and
* ManagedRuleGroupStatement.
This option is usually
* set to none. It does not affect how the rules in the rule group are evaluated.
* If you want the rules in the rule group to only count matches, do not use this
* and instead use the rule action override option, with Count action,
* in your rule group reference statement settings.
Labels to apply to web requests that match the rule match statement. WAF
* applies fully qualified labels to matching web requests. A fully qualified label
* is the concatenation of a label namespace and a rule label. The rule's rule
* group or web ACL defines the label namespace.
Rules that run after this
* rule in the web ACL can match against these labels using a
* LabelMatchStatement.
For each label, provide a
* case-sensitive string containing optional namespaces and a label name, according
* to the following guidelines:
Separate each component of the
* label with a colon.
Each namespace or name can have up to 128
* characters.
You can specify up to 5 namespaces in a label.
*
Don't use the following reserved words in your label
* specification: aws, waf, managed,
* rulegroup, webacl, regexpatternset, or
* ipset.
For example, myLabelName or
* nameSpace1:nameSpace2:myLabelName.