AWS WAFV2 使用範例 AWS CLI - AWS Command Line Interface

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

AWS WAFV2 使用範例 AWS CLI

下列程式碼範例說明如何使用 AWS Command Line Interface 與來執行動作及實作常見案例 AWS WAFV2。

Actions 是大型程式的程式碼摘錄,必須在內容中執行。雖然動作會告訴您如何呼叫個別服務函數,但您可以在其相關情境和跨服務範例中查看內容中的動作。

Scenarios (案例) 是向您展示如何呼叫相同服務中的多個函數來完成特定任務的程式碼範例。

每個範例都包含一個連結 GitHub,您可以在其中找到如何在內容中設定和執行程式碼的指示。

主題

動作

下列程式碼範例會示範如何使用associate-web-acl

AWS CLI

將 Web ACL 與區域 AWS 資源相關聯

下列associate-web-acl範例會將指定的 Web ACL 與 Application Load Balancer 產生關聯。

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 進階開發人員指南中的 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

文件的內容://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 }

如需詳細資訊,請參閱 W AWS AF 中的 WAF Web ACL 容量單位 (WCU) 、《 AWS Firewall Manager 員 AWS 》和《防 Shield 進階開發人員指南》。AWS

  • 如需 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 進階開發人員指南中的 IP 集和 Regex 病毒碼集

  • 如需 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 進階開發人員指南中的 IP 集和 Regex 病毒碼集

下列程式碼範例會示範如何使用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

文件的內容://waf-規則. 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 進階開發人員指南中的管理您自己的規則群組

  • 如需 API 詳細資訊,請參閱AWS CLI 命令參考CreateRuleGroup中的。

下列程式碼範例會示範如何使用create-web-acl

AWS CLI

建立網路 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

文件的內容://waf-規則. 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 進階開發人員指南中的管理和使用 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 進階開發人員指南中的 IP 集和 Regex 病毒碼集

  • 如需 API 詳細資訊,請參閱AWS CLI 命令參考DeleteIpSet中的。

下列程式碼範例會示範如何使用delete-logging-configuration

AWS CLI

若要停用網頁 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 進階開發人員指南中的記錄 Web ACL 流量資訊

下列程式碼範例會示範如何使用delete-regex-pattern-set

AWS CLI

刪除正則表達式模式集

以下delete-regex-pattern-set更新指定正則表達式模式集的設置。此呼叫需要一個 ID,您可以從呼叫中獲取list-regex-pattern-sets,以及一個鎖定令牌,您可以從呼叫list-regex-pattern-sets或呼叫中獲取get-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 進階開發人員指南中的 IP 集和 Regex 病毒碼集

下列程式碼範例會示範如何使用delete-rule-group

AWS CLI

刪除自訂規則群組

下列項目delete-rule-group會刪除指定的自訂規則群組。此呼叫需要一個 ID,您可以從呼叫中獲取list-rule-groups,以及一個鎖定令牌,您可以從呼叫list-rule-groups或呼叫中獲取get-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 進階開發人員指南中的管理您自己的規則群組

  • 如需 API 詳細資訊,請參閱AWS CLI 命令參考DeleteRuleGroup中的。

下列程式碼範例會示範如何使用delete-web-acl

AWS CLI

刪除網路 ACL 的步驟

以下內容delete-web-acl會從您的帳戶中刪除指定的 Web ACL。Web ACL 只能在未與任何資源關聯時刪除。此呼叫需要一個 ID,您可以從呼叫中獲取list-web-acls,以及一個鎖定令牌,您可以從呼叫list-web-acls或呼叫中獲取get-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 進階開發人員指南中的管理和使用 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 進階開發人員指南中的受管規則群組

下列程式碼範例會示範如何使用disassociate-web-acl

AWS CLI

若要取消 Web ACL 與地區 AWS 資源的關聯

下列disassociate-web-acl範例會從指定的 Application Load Balancer 移除任何現有的 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 進階開發人員指南中的 AWS 資源建立關聯或取消關聯。

下列程式碼範例會示範如何使用get-ip-set

AWS CLI

擷取特定 IP 集

以下內容get-ip-set擷取具有指定名稱、範圍和 ID 的 IP 集。您可以從命令create-ip-set和中獲取 IP 集的 ID list-ip-sets

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 進階開發人員指南中的 IP 集和 Regex 病毒碼集

  • 如需 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 進階開發人員指南中的記錄 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 進階開發人員指南中的以速率為基礎的規則陳述式。

下列程式碼範例會示範如何使用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 進階開發人員指南中的 IP 集和 Regex 病毒碼集

下列程式碼範例會示範如何使用get-rule-group

AWS CLI

擷取特定自訂規則群組

以下內容get-rule-group會擷取具有指定名稱、範圍和 ID 的自訂規則群組。您可以從指令create-rule-group和取得規則群組的 ID list-rule-groups

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 進階開發人員指南中的管理您自己的規則群組

  • 如需 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 進階開發人員指南中的檢視 Web 要求範例

下列程式碼範例會示範如何使用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 進階開發人員指南中的 AWS 資源建立關聯或取消關聯。

下列程式碼範例會示範如何使用get-web-acl

AWS CLI

若要擷取網路 ACL

以下內容get-web-acl會擷取具有指定名稱、範圍和 ID 的 Web ACL。您可以從指令create-web-acl和取得網 ACL 的 ID list-web-acls

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 進階開發人員指南中的管理和使用 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 進階開發人員指南中的受管規則群組

下列程式碼範例會示範如何使用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 進階開發人員指南中的 IP 集和 Regex 病毒碼集

  • 如需 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 進階開發人員指南中的記錄 Web ACL 流量資訊

下列程式碼範例會示範如何使用list-regex-pattern-sets

AWS CLI

檢索正則表達式模式集列表

以下內容list-regex-pattern-sets會擷取區域中定義之帳戶的所有 regex 模式集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 進階開發人員指南中的 IP 集和 Regex 病毒碼集

下列程式碼範例會示範如何使用list-resources-for-web-acl

AWS CLI

若要擷取與網路 ACL 相關聯的資源

以下內容list-resources-for-web-acl會擷取目前與該區域中指定網頁 ACL 相關聯的 API Gateway REST API 資源us-west-2

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 進階開發人員指南中的 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 進階開發人員指南中的管理您自己的規則群組

  • 如需 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 進階開發人員指南中的AWS WAF 入門。

下列程式碼範例會示範如何使用list-web-acls

AWS CLI

若要擷取某個範圍的網頁 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 進階開發人員指南中的管理和使用 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至指定的網頁 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 進階開發人員指南中的記錄 Web ACL 流量資訊

下列程式碼範例會示範如何使用tag-resource

AWS CLI

若要將標籤新增至 AWS WAF 資源

下列tag-resource範例會將鍵值Name和值設定為的標籤加入AWSWAF至指定的 Web ACL。

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 進階開發人員指南中的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 進階開發人員指南中的AWS WAF 入門。

  • 如需 API 詳細資訊,請參閱AWS CLI 命令參考UntagResource中的。

下列程式碼範例會示範如何使用update-ip-set

AWS CLI

修改現有 IP 集的設定

以下update-ip-set更新指定 IP 集的設定。此呼叫需要一個 ID,您可以從呼叫中獲取list-ip-sets,以及您可以從呼叫list-ip-sets和獲取的鎖定令牌get-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 進階開發人員指南中的 IP 集和 Regex 病毒碼集

  • 如需 API 詳細資訊,請參閱AWS CLI 命令參考UpdateIpSet中的。

下列程式碼範例會示範如何使用update-regex-pattern-set

AWS CLI

修改現有正則表達式模式集的設置

以下update-regex-pattern-set更新指定正則表達式模式集的設置。此呼叫需要一個 ID,您可以從呼叫中獲取list-regex-pattern-sets,以及您可以從呼叫list-regex-pattern-sets和獲取的鎖定令牌get-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 進階開發人員指南中的 IP 集和 Regex 病毒碼集

下列程式碼範例會示範如何使用update-rule-group

AWS CLI

更新自訂規則群組

以下內容會update-rule-group變更現有自訂規則群組的可見度組態。此呼叫需要一個 ID,您可以從呼叫中獲取list-rule-groups,以及您可以從呼叫list-rule-groups和獲取的鎖定令牌get-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 進階開發人員指南中的管理您自己的規則群組

  • 如需 API 詳細資訊,請參閱AWS CLI 命令參考UpdateRuleGroup中的。

下列程式碼範例會示範如何使用update-web-acl

AWS CLI

更新網路 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 進階開發人員指南中的管理和使用 Web 存取控制清單 (Web ACL)

  • 如需 API 詳細資訊,請參閱AWS CLI 命令參考UpdateWebAcl中的。