使用 AWS CLI 的 AWS WAFV2示例 - AWS Command Line Interface

本文档仅适用于 AWS CLI 版本 1。有关 AWS CLI 版本 2 的相关文档,请参阅版本 2 用户指南

使用 AWS CLI 的 AWS WAFV2示例

以下代码示例演示了如何通过将 AWS Command Line Interface与 AWS WAFV2 结合使用,来执行操作和实现常见场景。

操作是大型程序的代码摘录,必须在上下文中运行。您可以通过操作了解如何调用单个服务函数,还可以通过函数相关场景的上下文查看操作。

每个示例都包含一个指向完整源代码的链接,您可以从中找到有关如何在上下文中设置和运行代码的说明。

主题

操作

以下代码示例演示如何使用 associate-web-acl

AWS CLI

将 Web ACL 与区域 AWS 资源相关联

以下 associate-web-acl 示例将指定 Web ACL 与应用程序负载均衡器相关联。

aws wafv2 associate-web-acl \ --web-acl-arn arn:aws:wafv2:us-west-2:123456789012:regional/webacl/test-cli/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111 \ --resource-arn arn:aws:elasticloadbalancing:us-west-2:123456789012:loadbalancer/app/waf-cli-alb/1ea17125f8b25a2a \ --region us-west-2

此命令不生成任何输出。

有关更多信息,请参阅《AWS WAF、AWS Firewall Manager 和 AWS Shield Advanced 开发人员指南》中的将 Web ACL 与 AWS 资源关联或取消关联

  • 有关 API 详细信息,请参阅《AWS CLI 命令参考》中的 AssociateWebAcl

以下代码示例演示如何使用 check-capacity

AWS CLI

获取一组规则所使用的容量

以下 check-capacity 命令检索某规则集的容量要求,该规则集包含基于速率的规则声明和包含嵌套规则的 AND 规则声明。

aws wafv2 check-capacity \ --scope REGIONAL \ --rules file://waf-rule-list.json \ --region us-west-2

file://waf-rule-list.json 的内容:

[ { "Name":"basic-rule", "Priority":0, "Statement":{ "AndStatement":{ "Statements":[ { "ByteMatchStatement":{ "SearchString":"example.com", "FieldToMatch":{ "SingleHeader":{ "Name":"host" } }, "TextTransformations":[ { "Priority":0, "Type":"LOWERCASE" } ], "PositionalConstraint":"EXACTLY" } }, { "GeoMatchStatement":{ "CountryCodes":[ "US", "IN" ] } } ] } }, "Action":{ "Allow":{ } }, "VisibilityConfig":{ "SampledRequestsEnabled":true, "CloudWatchMetricsEnabled":true, "MetricName":"basic-rule" } }, { "Name":"rate-rule", "Priority":1, "Statement":{ "RateBasedStatement":{ "Limit":1000, "AggregateKeyType":"IP" } }, "Action":{ "Block":{ } }, "VisibilityConfig":{ "SampledRequestsEnabled":true, "CloudWatchMetricsEnabled":true, "MetricName":"rate-rule" } } ]

输出:

{ "Capacity":15 }

有关更多信息,请参阅《AWS WAF、AWS Firewall Manager 和 AWS Shield Advanced 开发人员指南》中的 AWS WAF Web ACL 容量单位(WCU)

  • 有关 API 详细信息,请参阅《AWS CLI 命令参考》中的 CheckCapacity

以下代码示例演示如何使用 create-ip-set

AWS CLI

创建用于 Web ACL 和规则组的 IP 集

以下 create-ip-set 命令创建具有单一地址范围规范的 IP 集。

aws wafv2 create-ip-set \ --name testip \ --scope REGIONAL \ --ip-address-version IPV4 \ --addresses 198.51.100.0/16

输出:

{ "Summary":{ "ARN":"arn:aws:wafv2:us-west-2:123456789012:regional/ipset/testip/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111", "Description":"", "Name":"testip", "LockToken":"447e55ac-0000-0000-0000-86b67c17f8b5", "Id":"a1b2c3d4-5678-90ab-cdef-EXAMPLE11111" } }

有关更多信息,请参阅《AWS WAF、AWS Firewall Manager 和 AWS Shield Advanced 开发人员指南》中的 IP 集和正则表达式模式集

  • 有关 API 详细信息,请参阅《AWS CLI 命令参考》中的 CreateIpSet

以下代码示例演示如何使用 create-regex-pattern-set

AWS CLI

创建用于 Web ACL 和规则组的正则表达式模式集

以下 create-regex-pattern-set 命令创建指定了两个正则表达式模式的正则表达式模式集。

aws wafv2 create-regex-pattern-set \ --name regexPatterSet01 \ --scope REGIONAL \ --description 'Test web-acl' \ --regular-expression-list '[{"RegexString": "/[0-9]*/"},{"RegexString": "/[a-z]*/"}]'

输出:

{ "Summary":{ "ARN":"arn:aws:wafv2:us-west-2:123456789012:regional/regexpatternset/regexPatterSet01/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111", "Description":"Test web-acl", "Name":"regexPatterSet01", "LockToken":"0bc01e21-03c9-4b98-9433-6229cbf1ef1c", "Id":"a1b2c3d4-5678-90ab-cdef-EXAMPLE11111" } }

有关更多信息,请参阅《AWS WAF、AWS Firewall Manager 和 AWS Shield Advanced 开发人员指南》中的 IP 集和正则表达式模式集

以下代码示例演示如何使用 create-rule-group

AWS CLI

创建用于 Web ACL 的自定义规则组

以下 create-rule-group 命令创建供区域使用的自定义规则组。该组的规则声明以 JSON 格式的文件提供。

aws wafv2 create-rule-group \ --name "TestRuleGroup" \ --scope REGIONAL \ --capacity 250 \ --rules file://waf-rule.json \ --visibility-config SampledRequestsEnabled=true,CloudWatchMetricsEnabled=true,MetricName=TestRuleGroupMetrics \ --region us-west-2

file://waf-rule.json 的内容:

[ { "Name":"basic-rule", "Priority":0, "Statement":{ "AndStatement":{ "Statements":[ { "ByteMatchStatement":{ "SearchString":"example.com", "FieldToMatch":{ "SingleHeader":{ "Name":"host" } }, "TextTransformations":[ { "Priority":0, "Type":"LOWERCASE" } ], "PositionalConstraint":"EXACTLY" } }, { "GeoMatchStatement":{ "CountryCodes":[ "US", "IN" ] } } ] } }, "Action":{ "Allow":{ } }, "VisibilityConfig":{ "SampledRequestsEnabled":true, "CloudWatchMetricsEnabled":true, "MetricName":"basic-rule" } } ]

输出:

{ "Summary":{ "ARN":"arn:aws:wafv2:us-west-2:123456789012:regional/rulegroup/TestRuleGroup/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111", "Description":"", "Name":"TestRuleGroup", "LockToken":"7b3bcec2-374e-4c5a-b2b9-563bf47249f0", "Id":"a1b2c3d4-5678-90ab-cdef-EXAMPLE11111" } }

有关更多信息,请参阅《AWS WAF、AWS Firewall Manager 和 AWS Shield Advanced 开发人员指南》中的管理您自己的规则组

  • 有关 API 详细信息,请参阅《AWS CLI 命令参考》中的 CreateRuleGroup

以下代码示例演示如何使用 create-web-acl

AWS CLI

创建 Web ACL

以下 create-web-acl 命令创建供区域使用的 Web ACL。Web ACL 的规则声明在 JSON 格式的文件中提供。

aws wafv2 create-web-acl \ --name TestWebAcl \ --scope REGIONAL \ --default-action Allow={} \ --visibility-config SampledRequestsEnabled=true,CloudWatchMetricsEnabled=true,MetricName=TestWebAclMetrics \ --rules file://waf-rule.json \ --region us-west-2

file://waf-rule.json 的内容:

[ { "Name":"basic-rule", "Priority":0, "Statement":{ "AndStatement":{ "Statements":[ { "ByteMatchStatement":{ "SearchString":"example.com", "FieldToMatch":{ "SingleHeader":{ "Name":"host" } }, "TextTransformations":[ { "Priority":0, "Type":"LOWERCASE" } ], "PositionalConstraint":"EXACTLY" } }, { "GeoMatchStatement":{ "CountryCodes":[ "US", "IN" ] } } ] } }, "Action":{ "Allow":{ } }, "VisibilityConfig":{ "SampledRequestsEnabled":true, "CloudWatchMetricsEnabled":true, "MetricName":"basic-rule" } } ]

输出:

{ "Summary":{ "ARN":"arn:aws:wafv2:us-west-2:123456789012:regional/webacl/TestWebAcl/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111", "Description":"", "Name":"TestWebAcl", "LockToken":"2294b3a1-eb60-4aa0-a86f-a3ae04329de9", "Id":"a1b2c3d4-5678-90ab-cdef-EXAMPLE11111" } }

有关更多信息,请参阅《AWS WAF、AWS Firewall Manager 和 AWS Shield Advanced 开发人员指南》中的管理和使用 Web 访问控制列表(Web ACL)

  • 有关 API 详细信息,请参阅《AWS CLI 命令参考》中的 CreateWebAcl

以下代码示例演示如何使用 delete-ip-set

AWS CLI

删除 IP 集

以下 delete-ip-set 命令删除指定 IP 集。此调用需要一个 ID(可以从调用 list-ip-sets 中获取)和一个锁定令牌(可以从调用 list-ip-setsget-ip-set 中获取)。

aws wafv2 delete-ip-set \ --name test1 \ --scope REGIONAL \ --id a1b2c3d4-5678-90ab-cdef-EXAMPLE11111 \ --lock-token 46851772-db6f-459d-9385-49428812e357

此命令不生成任何输出。

有关更多信息,请参阅《AWS WAF、AWS Firewall Manager 和 AWS Shield Advanced 开发人员指南》中的 IP 集和正则表达式模式集

  • 有关 API 详细信息,请参阅《AWS CLI 命令参考》中的 DeleteIpSet

以下代码示例演示如何使用 delete-logging-configuration

AWS CLI

禁用 Web ACL 日志记录

以下 delete-logging-configuration 命令从指定 Web ACL 中删除任何日志记录配置。

aws wafv2 delete-logging-configuration \ --resource-arn arn:aws:wafv2:us-west-2:123456789012:regional/webacl/test/a1b2c3d4-5678-90ab-cdef-EXAMPLE22222

此命令不生成任何输出。

有关更多信息,请参阅《AWS WAF、AWS Firewall Manager 和 AWS Shield Advanced 开发人员指南》中的记录 Web ACL 流量日志

以下代码示例演示如何使用 delete-regex-pattern-set

AWS CLI

删除正则表达式模式集

以下 delete-regex-pattern-set 命令更新指定正则表达式模式集的设置。此调用需要一个 ID(可以从调用 list-regex-pattern-sets 中获取)和一个锁定令牌(可以从调用 list-regex-pattern-setsget-regex-pattern-set 中获取)。

aws wafv2 delete-regex-pattern-set \ --name regexPatterSet01 \ --scope REGIONAL \ --id a1b2c3d4-5678-90ab-cdef-EXAMPLE11111 \ --lock-token 0bc01e21-03c9-4b98-9433-6229cbf1ef1c

此命令不生成任何输出。

有关更多信息,请参阅《AWS WAF、AWS Firewall Manager 和 AWS Shield Advanced 开发人员指南》中的 IP 集和正则表达式模式集

以下代码示例演示如何使用 delete-rule-group

AWS CLI

删除自定义规则组

以下 delete-rule-group 命令删除指定的自定义规则组。此调用需要一个 ID(可以从调用 list-rule-groups 中获取)和一个锁定令牌(可以从调用 list-rule-groupsget-rule-group 中获取)。

aws wafv2 delete-rule-group \ --name TestRuleGroup \ --scope REGIONAL \ --id a1b2c3d4-5678-90ab-cdef-EXAMPLE11111 \ --lock-token 7b3bcec2-0000-0000-0000-563bf47249f0

此命令不生成任何输出。

有关更多信息,请参阅《AWS WAF、AWS Firewall Manager 和 AWS Shield Advanced 开发人员指南》中的管理您自己的规则组

  • 有关 API 详细信息,请参阅《AWS CLI 命令参考》中的 DeleteRuleGroup

以下代码示例演示如何使用 delete-web-acl

AWS CLI

删除 Web ACL

以下 delete-web-acl 命令从您的账户中删除指定 Web ACL。只有在 Web ACL 不与任何资源关联的情况下才能将其删除。此调用需要一个 ID(可以从调用 list-web-acls 中获取)和一个锁定令牌(可以从调用 list-web-aclsget-web-acl 中获取)。

aws wafv2 delete-web-acl \ --name test \ --scope REGIONAL \ --id a1b2c3d4-5678-90ab-cdef-EXAMPLE11111 \ --lock-token ebab4ed2-155e-4c9a-9efb-e4c45665b1f5

此命令不生成任何输出。

有关更多信息,请参阅《AWS WAF、AWS Firewall Manager 和 AWS Shield Advanced 开发人员指南》中的管理和使用 Web 访问控制列表(Web ACL)

  • 有关 API 详细信息,请参阅《AWS CLI 命令参考》中的 DeleteWebAcl

以下代码示例演示如何使用 describe-managed-rule-group

AWS CLI

检索托管规则组的描述

以下 describe-managed-rule-group 命令检索 AWS 托管规则组的相关描述。

aws wafv2 describe-managed-rule-group \ --vendor-name AWS \ --name AWSManagedRulesCommonRuleSet \ --scope REGIONAL

输出:

{ "Capacity": 700, "Rules": [ { "Name": "NoUserAgent_HEADER", "Action": { "Block": {} } }, { "Name": "UserAgent_BadBots_HEADER", "Action": { "Block": {} } }, { "Name": "SizeRestrictions_QUERYSTRING", "Action": { "Block": {} } }, { "Name": "SizeRestrictions_Cookie_HEADER", "Action": { "Block": {} } }, { "Name": "SizeRestrictions_BODY", "Action": { "Block": {} } }, { "Name": "SizeRestrictions_URIPATH", "Action": { "Block": {} } }, { "Name": "EC2MetaDataSSRF_BODY", "Action": { "Block": {} } }, { "Name": "EC2MetaDataSSRF_COOKIE", "Action": { "Block": {} } }, { "Name": "EC2MetaDataSSRF_URIPATH", "Action": { "Block": {} } }, { "Name": "EC2MetaDataSSRF_QUERYARGUMENTS", "Action": { "Block": {} } }, { "Name": "GenericLFI_QUERYARGUMENTS", "Action": { "Block": {} } }, { } "Name": "GenericLFI_URIPATH", "Action": { "Block": {} } }, { "Name": "GenericLFI_BODY", "Action": { "Block": {} } }, { "Name": "RestrictedExtensions_URIPATH", "Action": { "Block": {} } }, { "Name": "RestrictedExtensions_QUERYARGUMENTS", "Action": { "Block": {} } }, { "Name": "GenericRFI_QUERYARGUMENTS", "Action": { "Block": {} } }, { "Name": "GenericRFI_BODY", "Action": { "Block": {} } }, { "Name": "GenericRFI_URIPATH", "Action": { "Block": {} } }, { "Name": "CrossSiteScripting_COOKIE", "Action": { "Block": {} } }, { "Name": "CrossSiteScripting_QUERYARGUMENTS", "Action": { "Block": {} } }, { "Name": "CrossSiteScripting_BODY", "Action": { "Block": {} } }, { "Name": "CrossSiteScripting_URIPATH", "Action": { "Block": {} } } ] }

有关更多信息,请参阅《AWS WAF、AWS Firewall Manager 和 AWS Shield Advanced 开发人员指南》中的托管规则组

以下代码示例演示如何使用 disassociate-web-acl

AWS CLI

取消 Web ACL 与区域 AWS 资源的关联

以下 disassociate-web-acl 示例从指定应用程序负载均衡器中删除任何现有 Web ACL 关联。

aws wafv2 disassociate-web-acl \ --resource-arn arn:aws:elasticloadbalancing:us-west-2:123456789012:loadbalancer/app/waf-cli-alb/1ea17125f8b25a2a \ --region us-west-2

此命令不生成任何输出。

有关更多信息,请参阅《AWS WAF、AWS Firewall Manager 和 AWS Shield Advanced 开发人员指南》中的将 Web ACL 与 AWS 资源关联或取消关联

  • 有关 API 详细信息,请参阅《AWS CLI 命令参考》中的 DisassociateWebAcl

以下代码示例演示如何使用 get-ip-set

AWS CLI

检索特定 IP 集

以下 get-ip-set 命令检索具有指定名称、范围和 ID 的 IP 集。可以从命令 create-ip-setlist-ip-sets 中获取 IP 集的 ID。

aws wafv2 get-ip-set \ --name testip \ --scope REGIONAL \ --id a1b2c3d4-5678-90ab-cdef-EXAMPLE11111

输出:

{ "IPSet":{ "Description":"", "Name":"testip", "IPAddressVersion":"IPV4", "Id":"a1b2c3d4-5678-90ab-cdef-EXAMPLE1111", "ARN":"arn:aws:wafv2:us-west-2:123456789012:regional/ipset/testip/a1b2c3d4-5678-90ab-cdef-EXAMPLE1111", "Addresses":[ "192.0.2.0/16" ] }, "LockToken":"447e55ac-2396-4c6d-b9f9-86b67c17f8b5" }

有关更多信息,请参阅《AWS WAF、AWS Firewall Manager 和 AWS Shield Advanced 开发人员指南》中的 IP 集和正则表达式模式集

  • 有关 API 详细信息,请参阅《AWS CLI 命令参考》中的 GetIpSet

以下代码示例演示如何使用 get-logging-configuration

AWS CLI

检索 Web ACL 的日志记录配置

以下 get-logging-configuration 命令检索指定 Web ACL 的日志记录配置。

aws wafv2 get-logging-configuration \ --resource-arn arn:aws:wafv2:us-west-2:123456789012:regional/webacl/test/a1b2c3d4-5678-90ab-cdef-EXAMPLE22222 \ --region us-west-2

输出:

{ "LoggingConfiguration":{ "ResourceArn":"arn:aws:wafv2:us-west-2:123456789012:regional/webacl/test/a1b2c3d4-5678-90ab-cdef-EXAMPLE22222", "RedactedFields":[ { "Method":{ } } ], "LogDestinationConfigs":[ "arn:aws:firehose:us-west-2:123456789012:deliverystream/aws-waf-logs-custom-transformation" ] } }

有关更多信息,请参阅《AWS WAF、AWS Firewall Manager 和 AWS Shield Advanced 开发人员指南》中的记录 Web ACL 流量日志

以下代码示例演示如何使用 get-rate-based-statement-managed-keys

AWS CLI

检索基于速率的规则阻止的 IP 地址的列表

以下 get-rate-based-statement-managed-keys 命令检索区域应用程序中使用的基于速率的规则当前阻止的 IP 地址。

aws wafv2 get-rate-based-statement-managed-keys \ --scope REGIONAL \ --web-acl-name testwebacl2 \ --web-acl-id a1b2c3d4-5678-90ab-cdef-EXAMPLE11111 \ --rule-name ratebasedtest

输出:

{ "ManagedKeysIPV4":{ "IPAddressVersion":"IPV4", "Addresses":[ "198.51.100.0/32" ] }, "ManagedKeysIPV6":{ "IPAddressVersion":"IPV6", "Addresses":[ ] } }

有关更多信息,请参阅《AWS WAF、AWS Firewall Manager 和 AWS Shield Advanced 开发人员指南》中的基于速率的规则声明

以下代码示例演示如何使用 get-regex-pattern-set

AWS CLI

检索特定正则表达式模式集

以下 get-regex-pattern-set 命令检索具有指定名称、范围、区域和 ID 的正则表达式模式集。可以从命令 create-regex-pattern-setlist-regex-pattern-sets 中获取正则表达式模式集的 ID。

aws wafv2 get-regex-pattern-set \ --name regexPatterSet01 \ --scope REGIONAL \ --id a1b2c3d4-5678-90ab-cdef-EXAMPLE11111 \ --region us-west-2

输出:

{ "RegexPatternSet":{ "Description":"Test web-acl", "RegularExpressionList":[ { "RegexString":"/[0-9]*/" }, { "RegexString":"/[a-z]*/" } ], "Name":"regexPatterSet01", "ARN":"arn:aws:wafv2:us-west-2:123456789012:regional/regexpatternset/regexPatterSet01/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111", "Id":"a1b2c3d4-5678-90ab-cdef-EXAMPLE11111" }, "LockToken":"c8abf33f-b6fc-46ae-846e-42f994d57b29" }

有关更多信息,请参阅《AWS WAF、AWS Firewall Manager 和 AWS Shield Advanced 开发人员指南》中的 IP 集和正则表达式模式集

  • 有关 API 详细信息,请参阅《AWS CLI 命令参考》中的 GetRegexPatternSet

以下代码示例演示如何使用 get-rule-group

AWS CLI

检索特定的自定义规则组

以下 get-rule-group 命令检索具有指定名称、范围和 ID 的自定义规则组。可以从命令 create-rule-grouplist-rule-groups 中获取规则组的 ID。

aws wafv2 get-rule-group \ --name ff \ --scope REGIONAL \ --id a1b2c3d4-5678-90ab-cdef-EXAMPLE11111

输出:

{ "RuleGroup":{ "Capacity":1, "Description":"", "Rules":[ { "Priority":0, "Action":{ "Block":{ } }, "VisibilityConfig":{ "SampledRequestsEnabled":true, "CloudWatchMetricsEnabled":true, "MetricName":"jj" }, "Name":"jj", "Statement":{ "SizeConstraintStatement":{ "ComparisonOperator":"LE", "TextTransformations":[ { "Priority":0, "Type":"NONE" } ], "FieldToMatch":{ "UriPath":{ } }, "Size":7 } } } ], "VisibilityConfig":{ "SampledRequestsEnabled":true, "CloudWatchMetricsEnabled":true, "MetricName":"ff" }, "Id":"a1b2c3d4-5678-90ab-cdef-EXAMPLE11111", "ARN":"arn:aws:wafv2:us-west-2:123456789012:regional/rulegroup/ff/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111", "Name":"ff" }, "LockToken":"485458c9-1830-4234-af31-ec4d52ced1b3" }

有关更多信息,请参阅《AWS WAF、AWS Firewall Manager 和 AWS Shield Advanced 开发人员指南》中的管理您自己的规则组

  • 有关 API 详细信息,请参阅《AWS CLI 命令参考》中的 GetRuleGroup

以下代码示例演示如何使用 get-sampled-requests

AWS CLI

检索 Web ACL 的 Web 请求样本

以下 get-sampled-requests 命令检索指定 Web ACL、规则指标和时间范围的 Web 请求样本。

aws wafv2 get-sampled-requests \ --web-acl-arn arn:aws:wafv2:us-west-2:123456789012:regional/webacl/test-cli/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111 \ --rule-metric-name AWS-AWSManagedRulesSQLiRuleSet \ --scope=REGIONAL \ --time-window StartTime=2020-02-12T20:00Z,EndTime=2020-02-12T21:10Z \ --max-items 100

输出:

{ "TimeWindow": { "EndTime": 1581541800.0, "StartTime": 1581537600.0 }, "SampledRequests": [ { "Action": "BLOCK", "Timestamp": 1581541799.564, "RuleNameWithinRuleGroup": "AWS#AWSManagedRulesSQLiRuleSet#SQLi_BODY", "Request": { "Country": "US", "URI": "/", "Headers": [ { "Name": "Host", "Value": "alb-test-1EXAMPLE1.us-east-1.elb.amazonaws.com" }, { "Name": "Content-Length", "Value": "7456" }, { "Name": "User-Agent", "Value": "curl/7.53.1" }, { "Name": "Accept", "Value": "/" }, { "Name": "Content-Type", "Value": "application/x-www-form-urlencoded" } ], "ClientIP": "198.51.100.08", "Method": "POST", "HTTPVersion": "HTTP/1.1" }, "Weight": 1 }, { "Action": "BLOCK", "Timestamp": 1581541799.988, "RuleNameWithinRuleGroup": "AWS#AWSManagedRulesSQLiRuleSet#SQLi_BODY", "Request": { "Country": "US", "URI": "/", "Headers": [ { "Name": "Host", "Value": "alb-test-1EXAMPLE1.us-east-1.elb.amazonaws.com" }, { "Name": "Content-Length", "Value": "7456" }, { "Name": "User-Agent", "Value": "curl/7.53.1" }, { "Name": "Accept", "Value": "/" }, { "Name": "Content-Type", "Value": "application/x-www-form-urlencoded" } ], "ClientIP": "198.51.100.08", "Method": "POST", "HTTPVersion": "HTTP/1.1" }, "Weight": 3 }, { "Action": "BLOCK", "Timestamp": 1581541799.846, "RuleNameWithinRuleGroup": "AWS#AWSManagedRulesSQLiRuleSet#SQLi_BODY", "Request": { "Country": "US", "URI": "/", "Headers": [ { "Name": "Host", "Value": "alb-test-1EXAMPLE1.us-east-1.elb.amazonaws.com" }, { "Name": "Content-Length", "Value": "7456" }, { "Name": "User-Agent", "Value": "curl/7.53.1" }, { "Name": "Accept", "Value": "/" }, { "Name": "Content-Type", "Value": "application/x-www-form-urlencoded" } ], "ClientIP": "198.51.100.08", "Method": "POST", "HTTPVersion": "HTTP/1.1" }, "Weight": 1 }, { "Action": "BLOCK", "Timestamp": 1581541799.4, "RuleNameWithinRuleGroup": "AWS#AWSManagedRulesSQLiRuleSet#SQLi_BODY", "Request": { "Country": "US", "URI": "/", "Headers": [ { "Name": "Host", "Value": "alb-test-1EXAMPLE1.us-east-1.elb.amazonaws.com" }, { "Name": "Content-Length", "Value": "7456" }, { "Name": "User-Agent", "Value": "curl/7.53.1" }, { "Name": "Accept", "Value": "/" }, { "Name": "Content-Type", "Value": "application/x-www-form-urlencoded" } ], "ClientIP": "198.51.100.08", "Method": "POST", "HTTPVersion": "HTTP/1.1" }, "Weight": 1 } ], "PopulationSize": 4 }

有关更多信息,请参阅《AWS WAF、AWS Firewall Manager 和 AWS Shield Advanced 开发人员指南》中的查看 Web 请求样本

  • 有关 API 详细信息,请参阅《AWS CLI 命令参考》中的 GetSampledRequests

以下代码示例演示如何使用 get-web-acl-for-resource

AWS CLI

检索与 AWS 资源关联的 Web ACL

以下 get-web-acl-for-resource 命令检索与指定资源关联的 Web ACL 的 JSON。

aws wafv2 get-web-acl-for-resource \ --resource-arn arn:aws:elasticloadbalancing:us-west-2:123456789012:loadbalancer/app/waf-cli-alb/1ea17125f8b25a2a

输出:

{ "WebACL":{ "Capacity":3, "Description":"", "Rules":[ { "Priority":1, "Action":{ "Block":{ } }, "VisibilityConfig":{ "SampledRequestsEnabled":true, "CloudWatchMetricsEnabled":true, "MetricName":"testrule01" }, "Name":"testrule01", "Statement":{ "AndStatement":{ "Statements":[ { "ByteMatchStatement":{ "PositionalConstraint":"EXACTLY", "TextTransformations":[ { "Priority":0, "Type":"NONE" } ], "SearchString":"dGVzdHN0cmluZw==", "FieldToMatch":{ "UriPath":{ } } } }, { "SizeConstraintStatement":{ "ComparisonOperator":"EQ", "TextTransformations":[ { "Priority":0, "Type":"NONE" } ], "FieldToMatch":{ "QueryString":{ } }, "Size":0 } } ] } } } ], "VisibilityConfig":{ "SampledRequestsEnabled":true, "CloudWatchMetricsEnabled":true, "MetricName":"test01" }, "DefaultAction":{ "Allow":{ } }, "Id":"9a1b2c3d4-5678-90ab-cdef-EXAMPLE11111 ", "ARN":"arn:aws:wafv2:us-west-2:123456789012:regional/webacl/test01/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111 ", "Name":"test01" } }

有关更多信息,请参阅《AWS WAF、AWS Firewall Manager 和 AWS Shield Advanced 开发人员指南》中的将 Web ACL 与 AWS 资源关联或取消关联

以下代码示例演示如何使用 get-web-acl

AWS CLI

检索 Web ACL

以下 get-web-acl 命令检索具有指定名称、范围和 ID 的 Web ACL。可以从命令 create-web-acllist-web-acls 中获取 Web ACL 的 ID。

aws wafv2 get-web-acl \ --name test01 \ --scope REGIONAL \ --id a1b2c3d4-5678-90ab-cdef-EXAMPLE11111

输出:

{ "WebACL":{ "Capacity":3, "Description":"", "Rules":[ { "Priority":1, "Action":{ "Block":{ } }, "VisibilityConfig":{ "SampledRequestsEnabled":true, "CloudWatchMetricsEnabled":true, "MetricName":"testrule01" }, "Name":"testrule01", "Statement":{ "AndStatement":{ "Statements":[ { "ByteMatchStatement":{ "PositionalConstraint":"EXACTLY", "TextTransformations":[ { "Priority":0, "Type":"NONE" } ], "SearchString":"dGVzdHN0cmluZw==", "FieldToMatch":{ "UriPath":{ } } } }, { "SizeConstraintStatement":{ "ComparisonOperator":"EQ", "TextTransformations":[ { "Priority":0, "Type":"NONE" } ], "FieldToMatch":{ "QueryString":{ } }, "Size":0 } } ] } } } ], "VisibilityConfig":{ "SampledRequestsEnabled":true, "CloudWatchMetricsEnabled":true, "MetricName":"test01" }, "DefaultAction":{ "Allow":{ } }, "Id":"a1b2c3d4-5678-90ab-cdef-EXAMPLE11111", "ARN":"arn:aws:wafv2:us-west-2:123456789012:regional/webacl/test01/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111", "Name":"test01" }, "LockToken":"e3db7e2c-d58b-4ee6-8346-6aec5511c6fb" }

有关更多信息,请参阅《AWS WAF、AWS Firewall Manager 和 AWS Shield Advanced 开发人员指南》中的管理和使用 Web 访问控制列表(Web ACL)

  • 有关 API 详细信息,请参阅《AWS CLI 命令参考》中的 GetWebAcl

以下代码示例演示如何使用 list-available-managed-rule-groups

AWS CLI

检索托管规则组

以下 list-available-managed-rule-groups 命令返回您的 Web ACL 中当前可供使用的所有托管规则组列表。

aws wafv2 list-available-managed-rule-groups \ --scope REGIONAL

输出:

{ "ManagedRuleGroups": [ { "VendorName": "AWS", "Name": "AWSManagedRulesCommonRuleSet", "Description": "Contains rules that are generally applicable to web applications. This provides protection against exploitation of a wide range of vulnerabilities, including those described in OWASP publications and common Common Vulnerabilities and Exposures (CVE)." }, { "VendorName": "AWS", "Name": "AWSManagedRulesAdminProtectionRuleSet", "Description": "Contains rules that allow you to block external access to exposed admin pages. This may be useful if you are running third-party software or would like to reduce the risk of a malicious actor gaining administrative access to your application." }, { "VendorName": "AWS", "Name": "AWSManagedRulesKnownBadInputsRuleSet", "Description": "Contains rules that allow you to block request patterns that are known to be invalid and are associated with exploitation or discovery of vulnerabilities. This can help reduce the risk of a malicious actor discovering a vulnerable application." }, { "VendorName": "AWS", "Name": "AWSManagedRulesSQLiRuleSet", "Description": "Contains rules that allow you to block request patterns associated with exploitation of SQL databases, like SQL injection attacks. This can help prevent remote injection of unauthorized queries." }, { "VendorName": "AWS", "Name": "AWSManagedRulesLinuxRuleSet", "Description": "Contains rules that block request patterns associated with exploitation of vulnerabilities specific to Linux, including LFI attacks. This can help prevent attacks that expose file contents or execute code for which the attacker should not have had access." }, { "VendorName": "AWS", "Name": "AWSManagedRulesUnixRuleSet", "Description": "Contains rules that block request patterns associated with exploiting vulnerabilities specific to POSIX/POSIX-like OS, including LFI attacks. This can help prevent attacks that expose file contents or execute code for which access should not been allowed." }, { "VendorName": "AWS", "Name": "AWSManagedRulesWindowsRuleSet", "Description": "Contains rules that block request patterns associated with exploiting vulnerabilities specific to Windows, (e.g., PowerShell commands). This can help prevent exploits that allow attacker to run unauthorized commands or execute malicious code." }, { "VendorName": "AWS", "Name": "AWSManagedRulesPHPRuleSet", "Description": "Contains rules that block request patterns associated with exploiting vulnerabilities specific to the use of the PHP, including injection of unsafe PHP functions. This can help prevent exploits that allow an attacker to remotely execute code or commands." }, { "VendorName": "AWS", "Name": "AWSManagedRulesWordPressRuleSet", "Description": "The WordPress Applications group contains rules that block request patterns associated with the exploitation of vulnerabilities specific to WordPress sites." }, { "VendorName": "AWS", "Name": "AWSManagedRulesAmazonIpReputationList", "Description": "This group contains rules that are based on Amazon threat intelligence. This is useful if you would like to block sources associated with bots or other threats." } ] }

有关更多信息,请参阅《AWS WAF、AWS Firewall Manager 和 AWS Shield Advanced 开发人员指南》中的托管规则组

以下代码示例演示如何使用 list-ip-sets

AWS CLI

检索 IP 集列表

以下 list-ip-sets 命令检索账户中具有区域范围的所有 IP 集。

aws wafv2 list-ip-sets \ --scope REGIONAL

输出:

{ "IPSets":[ { "ARN":"arn:aws:wafv2:us-west-2:123456789012:regional/ipset/testip/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111", "Description":"", "Name":"testip", "LockToken":"0674c84b-0304-47fe-8728-c6bff46af8fc", "Id":"a1b2c3d4-5678-90ab-cdef-EXAMPLE11111 " } ], "NextMarker":"testip" }

有关更多信息,请参阅《AWS WAF、AWS Firewall Manager 和 AWS Shield Advanced 开发人员指南》中的 IP 集和正则表达式模式集

  • 有关 API 详细信息,请参阅《AWS CLI 命令参考》中的 ListIpSets

以下代码示例演示如何使用 list-logging-configurations

AWS CLI

检索某个区域的所有日志记录配置列表

以下 list-logging-configurations 命令检索 Web ACL 的所有日志记录配置,这些配置仅供 us-west-2 区域的用户使用。

aws wafv2 list-logging-configurations \ --scope REGIONAL \ --region us-west-2

输出:

{ "LoggingConfigurations":[ { "ResourceArn":"arn:aws:wafv2:us-west-2:123456789012:regional/webacl/test-2/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111", "RedactedFields":[ { "QueryString":{ } } ], "LogDestinationConfigs":[ "arn:aws:firehose:us-west-2:123456789012:deliverystream/aws-waf-logs-test" ] }, { "ResourceArn":"arn:aws:wafv2:us-west-2:123456789012:regional/webacl/test/a1b2c3d4-5678-90ab-cdef-EXAMPLE22222", "RedactedFields":[ { "Method":{ } } ], "LogDestinationConfigs":[ "arn:aws:firehose:us-west-2:123456789012:deliverystream/aws-waf-logs-custom-transformation" ] } ] }

有关更多信息,请参阅《AWS WAF、AWS Firewall Manager 和 AWS Shield Advanced 开发人员指南》中的记录 Web ACL 流量日志

以下代码示例演示如何使用 list-regex-pattern-sets

AWS CLI

检索正则表达式模式集列表

以下 list-regex-pattern-sets 命令检索在区域 us-west-2 中定义的账户的所有正则表达式模式集。

aws wafv2 list-regex-pattern-sets \ --scope REGIONAL \ --region us-west-2

输出:

{ "NextMarker":"regexPatterSet01", "RegexPatternSets":[ { "ARN":"arn:aws:wafv2:us-west-2:123456789012:regional/regexpatternset/regexPatterSet01/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111", "Description":"Test web-acl", "Name":"regexPatterSet01", "LockToken":"f17743f7-0000-0000-0000-19a8b93bfb01", "Id":"a1b2c3d4-5678-90ab-cdef-EXAMPLE11111" } ] }

有关更多信息,请参阅《AWS WAF、AWS Firewall Manager 和 AWS Shield Advanced 开发人员指南》中的 IP 集和正则表达式模式集

以下代码示例演示如何使用 list-resources-for-web-acl

AWS CLI

检索与 Web ACL 关联的资源

以下 list-resources-for-web-acl 命令检索当前与区域 us-west-2 中指定 Web ACL 关联的 API Gateway REST API 资源。

aws wafv2 list-resources-for-web-acl \ --web-acl-arn arn:aws:wafv2:us-west-2:123456789012:regional/webacl/TestWebAcl/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111 \ --resource-type API_GATEWAY \ --region us-west-2

输出:

{ "ResourceArns": [ "arn:aws:apigateway:us-west-2::/restapis/EXAMPLE111/stages/testing" ] }

有关更多信息,请参阅《AWS WAF、AWS Firewall Manager 和 AWS Shield Advanced 开发人员指南》中的将 Web ACL 与 AWS 资源关联或取消关联

以下代码示例演示如何使用 list-rule-groups

AWS CLI

检索自定义规则组列表

以下 list-rule-groups 命令检索为指定范围和区域位置的账户定义的所有自定义规则组。

aws wafv2 list-rule-groups \ --scope REGIONAL \ --region us-west-2

输出:

{ "RuleGroups":[ { "ARN":"arn:aws:wafv2:us-west-2:123456789012:regional/rulegroup/TestRuleGroup/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111", "Description":"", "Name":"TestRuleGroup", "LockToken":"1eb5ec48-0000-0000-0000-ee9b906c541e", "Id":"a1b2c3d4-5678-90ab-cdef-EXAMPLE11111" }, { "ARN":"arn:aws:wafv2:us-west-2:123456789012:regional/rulegroup/test/a1b2c3d4-5678-90ab-cdef-EXAMPLE22222", "Description":"", "Name":"test", "LockToken":"b0f4583e-998b-4880-9069-3fbe45738b43", "Id":"a1b2c3d4-5678-90ab-cdef-EXAMPLE22222" } ], "NextMarker":"test" }

有关更多信息,请参阅《AWS WAF、AWS Firewall Manager 和 AWS Shield Advanced 开发人员指南》中的管理您自己的规则组

  • 有关 API 详细信息,请参阅《AWS CLI 命令参考》中的 ListRuleGroups

以下代码示例演示如何使用 list-tags-for-resource

AWS CLI

检索 AWS WAF 资源的所有标签

以下 list-tags-for-resource 命令检索指定 Web ACL 的所有标签键和值对的列表。

aws wafv2 list-tags-for-resource \ --resource-arn arn:aws:wafv2:us-west-2:123456789012:regional/webacl/testwebacl2/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111

输出:

{ "NextMarker":"", "TagInfoForResource":{ "ResourceARN":"arn:aws:wafv2:us-west-2:123456789012:regional/webacl/testwebacl2/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111", "TagList":[ ] } }

有关更多信息,请参阅《AWS WAF、AWS Firewall Manager 和 AWS Shield Advanced 开发人员指南》中的 AWS WAF 入门

以下代码示例演示如何使用 list-web-acls

AWS CLI

检索指定范围内的 Web ACL

以下 list-web-acls 命令检索为指定范围内的账户定义的所有 Web ACL。

aws wafv2 list-web-acls \ --scope REGIONAL

输出:

{ "NextMarker":"Testt", "WebACLs":[ { "ARN":"arn:aws:wafv2:us-west-2:123456789012:regional/webacl/Testt/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111", "Description":"sssss", "Name":"Testt", "LockToken":"7f36cb30-74ef-4cff-8cd4-a77e1aba1746", "Id":"a1b2c3d4-5678-90ab-cdef-EXAMPLE11111" } ] }

有关更多信息,请参阅《AWS WAF、AWS Firewall Manager 和 AWS Shield Advanced 开发人员指南》中的管理和使用 Web 访问控制列表(Web ACL)

  • 有关 API 详细信息,请参阅《AWS CLI 命令参考》中的 ListWebAcls

以下代码示例演示如何使用 put-logging-configuration

AWS CLI

向 Web ACL 中添加日志记录配置

以下 put-logging-configuration 命令将 Amazon Kinesis Data Firehose 日志记录配置 aws-waf-logs-custom-transformation 添加到指定的 Web ACL 中,但不从日志中加密任何字段。

aws wafv2 put-logging-configuration \ --logging-configuration ResourceArn=arn:aws:wafv2:us-west-2:123456789012:regional/webacl/test-cli/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111,LogDestinationConfigs=arn:aws:firehose:us-west-2:123456789012:deliverystream/aws-waf-logs-custom-transformation \ --region us-west-2

输出:

{ "LoggingConfiguration":{ "ResourceArn":"arn:aws:wafv2:us-west-2:123456789012:regional/webacl/test-cli/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111", "LogDestinationConfigs":[ "arn:aws:firehose:us-west-2:123456789012:deliverystream/aws-waf-logs-custom-transformation" ] } }

有关更多信息,请参阅《AWS WAF、AWS Firewall Manager 和 AWS Shield Advanced 开发人员指南》中的记录 Web ACL 流量日志

以下代码示例演示如何使用 tag-resource

AWS CLI

向 AWS WAF 资源中添加标签

以下 tag-resource 示例向指定的 Web ACL 中添加具有 Name 键且值设为 AWSWAF 的标签。

aws wafv2 tag-resource \ --resource-arn arn:aws:wafv2:us-west-2:123456789012:regional/webacl/apiGatewayWebAcl/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111 \ --tags Key=Name,Value=AWSWAF

此命令不生成任何输出。

有关更多信息,请参阅《AWS WAF、AWS Firewall Manager 和 AWS Shield Advanced 开发人员指南》中的 AWS WAF 入门

  • 有关 API 详细信息,请参阅《AWS CLI 命令参考》中的 TagResource

以下代码示例演示如何使用 untag-resource

AWS CLI

从 AWS WAF 资源中删除标签

以下 untag-resource 示例从指定 Web ACL 中删除具有 KeyName 键的标签。

aws wafv2 untag-resource \ --resource-arn arn:aws:wafv2:us-west-2:123456789012:regional/webacl/apiGatewayWebAcl/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111 \ --tag-keys "KeyName"

此命令不生成任何输出。

有关更多信息,请参阅《AWS WAF、AWS Firewall Manager 和 AWS Shield Advanced 开发人员指南》中的 AWS WAF 入门

  • 有关 API 详细信息,请参阅《AWS CLI 命令参考》中的 UntagResource

以下代码示例演示如何使用 update-ip-set

AWS CLI

修改现有 IP 集的设置

以下 update-ip-set 命令更新指定 IP 集的设置。此调用需要一个 ID(可以从调用 list-ip-sets 中获取)和一个锁定令牌(可以从调用 list-ip-setsget-ip-set 中获取)。此调用还返回一个可用于后续更新的锁定令牌。

aws wafv2 update-ip-set \ --name testip \ --scope REGIONAL \ --id a1b2c3d4-5678-90ab-cdef-EXAMPLE11111 \ --addresses 198.51.100.0/16 \ --lock-token 447e55ac-2396-4c6d-b9f9-86b67c17f8b5

输出:

{ "NextLockToken": "0674c84b-0304-47fe-8728-c6bff46af8fc" }

有关更多信息,请参阅《AWS WAF、AWS Firewall Manager 和 AWS Shield Advanced 开发人员指南》中的 IP 集和正则表达式模式集

  • 有关 API 详细信息,请参阅《AWS CLI 命令参考》中的 UpdateIpSet

以下代码示例演示如何使用 update-regex-pattern-set

AWS CLI

修改现有正则表达式模式集的设置

以下 update-regex-pattern-set 命令更新指定正则表达式模式集的设置。此调用需要一个 ID(可以从调用 list-regex-pattern-sets 中获取)和一个锁定令牌(可以从调用 list-regex-pattern-setsget-regex-pattern-set 中获取)。此调用还返回一个可用于后续更新的锁定令牌。

aws wafv2 update-regex-pattern-set \ --name ExampleRegex \ --scope REGIONAL \ --id a1b2c3d4-5678-90ab-cdef-EXAMPLE11111 \ --regular-expression-list RegexString="^.+$" \ --lock-token ed207e9c-82e9-4a77-aadd-81e6173ab7eb

输出:

{ "NextLockToken": "12ebc73e-fa68-417d-a9b8-2bdd761a4fa5" }

有关更多信息,请参阅《AWS WAF、AWS Firewall Manager 和 AWS Shield Advanced 开发人员指南》中的 IP 集和正则表达式模式集

以下代码示例演示如何使用 update-rule-group

AWS CLI

更新自定义规则组

以下 update-rule-group 命令更改现有自定义规则组的可见性配置。此调用需要一个 ID(可以从调用 list-rule-groups 中获取)和一个锁定令牌(可以从调用 list-rule-groupsget-rule-group 中获取)。此调用还返回一个可用于后续更新的锁定令牌。

aws wafv2 update-rule-group \ --name TestRuleGroup \ --scope REGIONAL \ --id a1b2c3d4-5678-90ab-cdef-EXAMPLE11111 \ --lock-token 7b3bcec2-0000-0000-0000-563bf47249f0 \ --visibility-config SampledRequestsEnabled=false,CloudWatchMetricsEnabled=false,MetricName=TestMetricsForRuleGroup \ --region us-west-2

输出:

{ "NextLockToken": "1eb5ec48-0000-0000-0000-ee9b906c541e" }

有关更多信息,请参阅《AWS WAF、AWS Firewall Manager 和 AWS Shield Advanced 开发人员指南》中的管理您自己的规则组

  • 有关 API 详细信息,请参阅《AWS CLI 命令参考》中的 UpdateRuleGroup

以下代码示例演示如何使用 update-web-acl

AWS CLI

更新 Web ACL

以下 update-web-acl 命令更改现有 Web ACL 的设置。此调用需要一个 ID(可以从调用 list-web-acls 中获取),以及一个锁定令牌和其他设置(可以从调用 get-web-acl 中获取)。此调用还返回一个可用于后续更新的锁定令牌。

aws wafv2 update-web-acl \ --name TestWebAcl \ --scope REGIONAL \ --id a1b2c3d4-5678-90ab-cdef-EXAMPLE11111 \ --lock-token 2294b3a1-0000-0000-0000-a3ae04329de9 \ --default-action Block={} \ --visibility-config SampledRequestsEnabled=false,CloudWatchMetricsEnabled=false,MetricName=NewMetricTestWebAcl \ --rules file://waf-rule.json \ --region us-west-2

输出:

{ "NextLockToken": "714a0cfb-0000-0000-0000-2959c8b9a684" }

有关更多信息,请参阅《AWS WAF、AWS Firewall Manager 和 AWS Shield Advanced 开发人员指南》中的管理和使用 Web 访问控制列表(Web ACL)

  • 有关 API 详细信息,请参阅《AWS CLI 命令参考》中的 UpdateWebAcl