From 4f919c1f87aa93ea2a8171c948a8da604bfe6790 Mon Sep 17 00:00:00 2001 From: Mahendra Kamble Date: Mon, 14 Apr 2025 18:40:52 +0530 Subject: [PATCH 1/7] CSOAR-3203 : modified the existing doc as per new documentation content --- .../app-central/integrations/aws-waf.md | 183 +++++++++++++++++- .../integrations/aws-waf/aws-waf-1.png | Bin 0 -> 139274 bytes 2 files changed, 181 insertions(+), 2 deletions(-) create mode 100644 static/img/platform-services/automation-service/app-central/integrations/aws-waf/aws-waf-1.png diff --git a/docs/platform-services/automation-service/app-central/integrations/aws-waf.md b/docs/platform-services/automation-service/app-central/integrations/aws-waf.md index 36d92e253c..1a1668d431 100644 --- a/docs/platform-services/automation-service/app-central/integrations/aws-waf.md +++ b/docs/platform-services/automation-service/app-central/integrations/aws-waf.md @@ -9,10 +9,60 @@ import useBaseUrl from '@docusaurus/useBaseUrl'; ***Version: 1.1 Updated: March 26, 2025*** +## Overview +### Purpose AWS WAF is a web application firewall that helps protect web applications from attacks by allowing you to configure rules that allow, block, or monitor (count) web requests based on conditions that you define. +This integration is designed to manage and retrieve WAF security configurations, including IP sets, regex pattern sets, rule groups, and WebACLs. It enables you to define, update, delete, and retrieve security rule assets that inspect and control web request traffic. -## Actions +### Use cases +* Creating and managing IP allowlists/denylists +* Defining regex-based pattern rules for request inspection +* Grouping multiple rules in custom rule groups +* Fetching details and summaries of rule components +* Updating existing rules in response to new threats + +### Supported Versions +This integration supports **WAFv2 API** actions and works with resources. +It is compatible with all standard environments where WAFv2 actions are supported. + +### Prerequisites +* IAM permissions for: + * **wafv2:CreateIPSet, DeleteIPSet, UpdateIPSet, GetIPSet, ListIPSets** + * **wafv2:CreateRegexPatternSet, DeleteRegexPatternSet, ListRegexPatternSets** + * **wafv2:CreateRuleGroup, DeleteRuleGroup, GetRuleGroup, ListRuleGroups** + * **wafv2:GetWebACL, ListWebACLs, ListResourcesForWebACL** + * **wafv2:GetManagedRuleSet, ListManagedRuleSets, ListAvailableManagedRuleGroups** +* Proper region selection for WAFv2 API calls (**regional** or **global scope**) +* API credentials with sufficient access + +### Limitations +* Regex complexity may be limited by the WAF regex engine's constraints +* All changes require propagation time before taking effect (~1-2 minutes) + +## Getting Started + +### Installation +Install the AWS WAF application from app-central using Sumo Logic CSOAR UI. + +### Configuration +After installing the AWS WAF application, create an AWS WAF resource to begin executing actions. +Refer to the image below for guidance on creating an AWS WAF resource. +
/aws-waf + +Provide the following details: +* Access Key +* Secret Key +* AWS Region +* Scope +* Automation Engine + +Once the information is filled in, click on Test to quickly verify that the provided details are correct. + +### Verification +To verify the integration is working, execute any Enrichment action, or once resource created test the resource. + +## Actions * **Create IP Set** (*Containment*) - Creates an IPSet, used to identify web requests that originate from specific IP addresses or ranges of IP addresses. * **Create Regex Pattern Set** (*Containment*) - Creates a RegexPatternSet, which you reference in a RegexPatternSetReferenceStatement, to have AWS WAF inspect a web request component for the specified patterns. * **Create Rule Group** (*Containment*) - Creates a RuleGroup per the specifications provided. @@ -32,6 +82,133 @@ AWS WAF is a web application firewall that helps protect web applications from a * **List Web ACLs** (*Enrichment*) - Retrieves a list of WebACLSummary objects for the web ACLs that you manage. * **Update IP Set** (*Containment*) - Updates the specified IPSet. +## Usage +### Basic Usage +* Create an IP Set (allow/block IPs) +* Create a Regex Pattern Set (match request components) +* Group rules using Rule Groups +* Retrieve or list existing components for monitoring or inspection +### Advanced Usage +* Bulk Listing & Auditing: List all rule groups, regex sets, IP sets, and WebACLs and map their usage across resources + +## API Reference +### Configuration +Each API call uses the following structure: +* Method: Generally POST or GET depending on the action. +* Authentication: AWS Signature V4 +* Scope: REGIONAL or CLOUDFRONT + +### Containment APIs +**Create IP Set** +* Method: POST +* Action: CreateIPSet +* Required Parameters: + * Name (string) + * Scope (REGIONAL | CLOUDFRONT) + * IPAddressVersion (IPV4 | IPV6) + * Addresses (list of IPs or CIDRs) + * Description (optional) +```` +* Sample Request (Python) +client.create_ip_set( + Name='BlockList', + Scope='REGIONAL', + IPAddressVersion='IPV4', + Addresses=['x.x.x.x/24'], + Description='Block bad IPs' +) + +Sample Response (Json) +{ + "Summary": { + "Name": "BlockList", + "Id": "123abcde-4567-890a-bcde-1234567890ab", + "ARN": "arn:aws:wafv2:us-east-1:123456789012:regional/ipset/BlockList/123abcde-4567-890a-bcde-1234567890ab", + "Description": "Block bad IPs", + "LockToken": "e1b2c3d4-5678-9101-1121-314151617181" + } +} +```` +**Create Regex Pattern Set** +* Method: POST +* Action: CreateRegexPatternSet +* Required Parameters: + * Name, Scope, RegularExpressionList, Description (optional) + +**Create Rule Group** +* Method: POST +* Action: CreateRuleGroup +* Required Parameters: + * Name, Scope, Capacity, Rules, VisibilityConfig + +**Update IP Set** +* Method: POST +* Action: UpdateIPSet +* Required Parameters: + * Id, LockToken, Name, Scope, Addresses + +**Delete IP Set / Regex Pattern Set / Rule Group** +* Method: POST +* Action: Delete_(TYPE) +* Required Parameters: + * Id, Name, Scope, LockToken + +### Enrichment APIs +**Get IP Set / Rule Group / Web ACL / Managed Rule Set** +* Method: GET +* Action: Get(Type) ex: Get IP Set/Get Rule Group +* Required Parameters: + * Id, Name, Scope + +**List IP Sets / Regex Pattern Sets / Rule Groups / Web ACLs / Managed Rule Sets** +* Method: GET +* Action: List(Type)s +* Optional Parameters: Limit, NextMarker + +**List Resources for Web ACLs** +* Method: GET +* Action: ListResourcesForWebACL +* Required Parameters: + * WebACLArn + +### Rate Limits and Quotas +```` +API Type Quota / Rate Limit +IP sets per region 100 +Regex sets per region 100 +Rule groups per region 100 +API Transactions (TPS) ~5-10 TPS per account per API +```` +**Limits may vary by region and can be increased via AWS Support.** + +## Troubleshooting +### Common Issues +```` +ISSUES DESCRIPTION SOLUTION +WAFNonexistentItemException Occurs when trying to access or delete a non-existent resource Double-check the Id, Name, and Scope. Use List APIs to confirm existence. +WAFOptimisticLockException Indicates a stale or missing LockToken when updating or deleting resources Always fetch the latest LockToken using Get API before performing updates/deletes. +WAFInvalidParameterException One or more parameters are invalid or missing Verify that all required parameters are included and correctly formatted (e.g., CIDR for IP sets). +ThrottlingException Request rate exceeds allowed TPS Implement exponential backoff and retry logic. Respect rate limits defined in your account. +AccessDeniedException Occurs when permissions are insufficient Check IAM roles and policies assigned to the user or service making the request. Ensure wafv2:* permissions are included. +Resource still appears after deletion A deleted IPSet, RuleGroup, etc. still seems accessible in the UI or APIs Allow a few seconds for propagation. Use Get or Lists to confirm removal. +IP addresses not being blocked Traffic from listed IPs still reaches the application Ensure the IPSet is attached to a WebACL and the WebACL is associated with the resource (e.g., CloudFront or ALB). +```` +### FAQs +* Q1: Can I reuse an IPSet in different rule groups? + * Yes, an IPSet can be used in several rule groups or WebACLs. You don’t need to create a new one for each use. +* Q2: What’s the difference between REGIONAL and CLOUDFRONT scopes? + * REGIONAL is used for AWS services like Application Load Balancers, API Gateway, and App Runner. + * CLOUDFRONT is specifically for CloudFront distributions and must be managed in the US East (N. Virginia) region. +* Q3: Why aren’t my changes showing up right away? + * Updates can take a few moments to fully apply within AWS. Try retrieving the latest configuration using the appropriate Get API call to confirm. +* Q4: What if the IP address I provide isn’t in CIDR format? + * If the IP isn’t formatted correctly (e.g., missing the CIDR suffix), AWS WAF will return a WAFInvalidParameterException. Make sure IPs follow the CIDR notation like 192.0.2.0/24. + +### Support +* **[AWS WAF Documentation](https://docs.aws.amazon.com/waf/latest/developerguide/)** +* **[AWS WAF API Reference](https://docs.aws.amazon.com/waf/latest/APIReference/)** +* **[Contact AWS Support](https://aws.amazon.com/support)** + ## External Libraries * [boto3](https://github.com/boto/boto3/blob/develop/LICENSE) @@ -43,6 +220,8 @@ import IntegrationsAuth from '../../../../reuse/integrations-authentication.md'; ## Change Log - +### Version History * April 19, 2024 (v1.0)- First upload * March 26, 2025 (v1.1) - Added **Update IP Set** action: This new action allows users to add or remove IPs from an existing IP Set. +### Deprecation Notices +* NA \ No newline at end of file diff --git a/static/img/platform-services/automation-service/app-central/integrations/aws-waf/aws-waf-1.png b/static/img/platform-services/automation-service/app-central/integrations/aws-waf/aws-waf-1.png new file mode 100644 index 0000000000000000000000000000000000000000..a0efae4459a5f617d1063057b044ce86a1899f59 GIT binary patch literal 139274 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 literal 0 HcmV?d00001 From f13590a72ef41af58c7d12912e8eec37d1cfa1ce Mon Sep 17 00:00:00 2001 From: Mahendra Kamble Date: Mon, 14 Apr 2025 19:02:36 +0530 Subject: [PATCH 2/7] CSOAR-3203 : fixed minor issue --- .../app-central/integrations/aws-waf.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/platform-services/automation-service/app-central/integrations/aws-waf.md b/docs/platform-services/automation-service/app-central/integrations/aws-waf.md index 1a1668d431..8314ed989e 100644 --- a/docs/platform-services/automation-service/app-central/integrations/aws-waf.md +++ b/docs/platform-services/automation-service/app-central/integrations/aws-waf.md @@ -149,20 +149,20 @@ Sample Response (Json) **Delete IP Set / Regex Pattern Set / Rule Group** * Method: POST -* Action: Delete_(TYPE) +* Action: Delete (Type) * Required Parameters: * Id, Name, Scope, LockToken ### Enrichment APIs **Get IP Set / Rule Group / Web ACL / Managed Rule Set** * Method: GET -* Action: Get(Type) ex: Get IP Set/Get Rule Group +* Action: Get (Type) ex: Get IP Set/Get Rule Group * Required Parameters: * Id, Name, Scope **List IP Sets / Regex Pattern Sets / Rule Groups / Web ACLs / Managed Rule Sets** * Method: GET -* Action: List(Type)s +* Action: List (Type)s * Optional Parameters: Limit, NextMarker **List Resources for Web ACLs** @@ -200,7 +200,7 @@ IP addresses not being blocked Traffic from listed IPs still reaches th * REGIONAL is used for AWS services like Application Load Balancers, API Gateway, and App Runner. * CLOUDFRONT is specifically for CloudFront distributions and must be managed in the US East (N. Virginia) region. * Q3: Why aren’t my changes showing up right away? - * Updates can take a few moments to fully apply within AWS. Try retrieving the latest configuration using the appropriate Get API call to confirm. + * Updates can take a few moments to fully apply within AWS. Try retrieving the latest configuration using the appropriate Get API call to confirm. * Q4: What if the IP address I provide isn’t in CIDR format? * If the IP isn’t formatted correctly (e.g., missing the CIDR suffix), AWS WAF will return a WAFInvalidParameterException. Make sure IPs follow the CIDR notation like 192.0.2.0/24. From ab58747ef00505c57eecb08303a7c99e8332f97f Mon Sep 17 00:00:00 2001 From: Mahendra Kamble Date: Mon, 14 Apr 2025 19:24:08 +0530 Subject: [PATCH 3/7] CSOAR-3203 fixed minor issues --- .../automation-service/app-central/integrations/aws-waf.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/docs/platform-services/automation-service/app-central/integrations/aws-waf.md b/docs/platform-services/automation-service/app-central/integrations/aws-waf.md index 8314ed989e..93c6cd6677 100644 --- a/docs/platform-services/automation-service/app-central/integrations/aws-waf.md +++ b/docs/platform-services/automation-service/app-central/integrations/aws-waf.md @@ -188,9 +188,8 @@ ISSUES DESCRIPTION WAFNonexistentItemException Occurs when trying to access or delete a non-existent resource Double-check the Id, Name, and Scope. Use List APIs to confirm existence. WAFOptimisticLockException Indicates a stale or missing LockToken when updating or deleting resources Always fetch the latest LockToken using Get API before performing updates/deletes. WAFInvalidParameterException One or more parameters are invalid or missing Verify that all required parameters are included and correctly formatted (e.g., CIDR for IP sets). -ThrottlingException Request rate exceeds allowed TPS Implement exponential backoff and retry logic. Respect rate limits defined in your account. AccessDeniedException Occurs when permissions are insufficient Check IAM roles and policies assigned to the user or service making the request. Ensure wafv2:* permissions are included. -Resource still appears after deletion A deleted IPSet, RuleGroup, etc. still seems accessible in the UI or APIs Allow a few seconds for propagation. Use Get or Lists to confirm removal. +Resource still appears after deletion A deleted IPSet, RuleGroup, etc. still seems accessible in the UI or APIs Allow a few seconds for propagation. Use Get or List s to confirm removal. IP addresses not being blocked Traffic from listed IPs still reaches the application Ensure the IPSet is attached to a WebACL and the WebACL is associated with the resource (e.g., CloudFront or ALB). ```` ### FAQs From 5df39539f3aa8088885c1937292218b74877a932 Mon Sep 17 00:00:00 2001 From: Mahendra Kamble Date: Tue, 15 Apr 2025 11:06:08 +0530 Subject: [PATCH 4/7] CSOAR-3203 : implemented review comments --- .../automation-service/app-central/integrations/aws-waf.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/platform-services/automation-service/app-central/integrations/aws-waf.md b/docs/platform-services/automation-service/app-central/integrations/aws-waf.md index 93c6cd6677..86813a9453 100644 --- a/docs/platform-services/automation-service/app-central/integrations/aws-waf.md +++ b/docs/platform-services/automation-service/app-central/integrations/aws-waf.md @@ -12,7 +12,7 @@ Updated: March 26, 2025*** ## Overview ### Purpose AWS WAF is a web application firewall that helps protect web applications from attacks by allowing you to configure rules that allow, block, or monitor (count) web requests based on conditions that you define. -This integration is designed to manage and retrieve WAF security configurations, including IP sets, regex pattern sets, rule groups, and WebACLs. It enables you to define, update, delete, and retrieve security rule assets that inspect and control web request traffic. +This integration is designed to manage and retrieve WAF security configurations, including IP sets, regex pattern sets, rule groups, and web access control lists (web ACLs). It enables you to define, update, delete, and retrieve security rule assets that inspect and control web request traffic. ### Use cases * Creating and managing IP allowlists/denylists From 8731fe07f4ce7ebdd80be99b826e5fefe1439deb Mon Sep 17 00:00:00 2001 From: Mahendra Kamble Date: Tue, 15 Apr 2025 11:32:49 +0530 Subject: [PATCH 5/7] CSOAR-3203 : removed unwanted parameters --- .../automation-service/app-central/integrations/aws-waf.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/platform-services/automation-service/app-central/integrations/aws-waf.md b/docs/platform-services/automation-service/app-central/integrations/aws-waf.md index 86813a9453..2e1b29243a 100644 --- a/docs/platform-services/automation-service/app-central/integrations/aws-waf.md +++ b/docs/platform-services/automation-service/app-central/integrations/aws-waf.md @@ -105,6 +105,7 @@ Each API call uses the following structure: * Required Parameters: * Name (string) * Scope (REGIONAL | CLOUDFRONT) + * Region * IPAddressVersion (IPV4 | IPV6) * Addresses (list of IPs or CIDRs) * Description (optional) @@ -145,13 +146,13 @@ Sample Response (Json) * Method: POST * Action: UpdateIPSet * Required Parameters: - * Id, LockToken, Name, Scope, Addresses + * ID, Name, Scope, Add/Remove IP Addresses **Delete IP Set / Regex Pattern Set / Rule Group** * Method: POST * Action: Delete (Type) * Required Parameters: - * Id, Name, Scope, LockToken + * Name, ID, Scope, Region ### Enrichment APIs **Get IP Set / Rule Group / Web ACL / Managed Rule Set** From fd8ff9b4b53effed16d31289b307217e553a5d1f Mon Sep 17 00:00:00 2001 From: John Pipkin Date: Tue, 15 Apr 2025 09:57:34 -0500 Subject: [PATCH 6/7] Updates from review --- .../app-central/integrations/aws-waf.md | 76 +++++++++++-------- 1 file changed, 46 insertions(+), 30 deletions(-) diff --git a/docs/platform-services/automation-service/app-central/integrations/aws-waf.md b/docs/platform-services/automation-service/app-central/integrations/aws-waf.md index 2e1b29243a..578f7a57da 100644 --- a/docs/platform-services/automation-service/app-central/integrations/aws-waf.md +++ b/docs/platform-services/automation-service/app-central/integrations/aws-waf.md @@ -10,45 +10,58 @@ import useBaseUrl from '@docusaurus/useBaseUrl'; Updated: March 26, 2025*** ## Overview + ### Purpose + AWS WAF is a web application firewall that helps protect web applications from attacks by allowing you to configure rules that allow, block, or monitor (count) web requests based on conditions that you define. This integration is designed to manage and retrieve WAF security configurations, including IP sets, regex pattern sets, rule groups, and web access control lists (web ACLs). It enables you to define, update, delete, and retrieve security rule assets that inspect and control web request traffic. ### Use cases + * Creating and managing IP allowlists/denylists * Defining regex-based pattern rules for request inspection * Grouping multiple rules in custom rule groups * Fetching details and summaries of rule components * Updating existing rules in response to new threats -### Supported Versions -This integration supports **WAFv2 API** actions and works with resources. +### Supported versions + +This integration supports WAFv2 API actions and works with resources. It is compatible with all standard environments where WAFv2 actions are supported. ### Prerequisites + * IAM permissions for: - * **wafv2:CreateIPSet, DeleteIPSet, UpdateIPSet, GetIPSet, ListIPSets** - * **wafv2:CreateRegexPatternSet, DeleteRegexPatternSet, ListRegexPatternSets** - * **wafv2:CreateRuleGroup, DeleteRuleGroup, GetRuleGroup, ListRuleGroups** - * **wafv2:GetWebACL, ListWebACLs, ListResourcesForWebACL** - * **wafv2:GetManagedRuleSet, ListManagedRuleSets, ListAvailableManagedRuleGroups** -* Proper region selection for WAFv2 API calls (**regional** or **global scope**) + * `wafv2:CreateIPSet, DeleteIPSet, UpdateIPSet, GetIPSet, ListIPSets` + * `wafv2:CreateRegexPatternSet, DeleteRegexPatternSet, ListRegexPatternSets` + * `wafv2:CreateRuleGroup, DeleteRuleGroup, GetRuleGroup, ListRuleGroups` + * `wafv2:GetWebACL, ListWebACLs, ListResourcesForWebACL` + * `wafv2:GetManagedRuleSet, ListManagedRuleSets, ListAvailableManagedRuleGroups` +* Proper region selection for WAFv2 API calls (`regional` or `global` scope) * API credentials with sufficient access ### Limitations -* Regex complexity may be limited by the WAF regex engine's constraints -* All changes require propagation time before taking effect (~1-2 minutes) -## Getting Started +* Regex complexity may be limited by the WAF regex engine's constraints. +* All changes require propagation time before taking effect (~1-2 minutes). + +## Configure AWS WAF in Automation Service and Cloud SOAR + +import IntegrationsAuth from '../../../../reuse/integrations-authentication.md'; + + ### Installation -Install the AWS WAF application from app-central using Sumo Logic CSOAR UI. + +[Install](/docs/platform-services/automation-service/automation-service-app-central/#install-an-integration-from-app-central) the AWS WAF application from App Central. ### Configuration + After installing the AWS WAF application, create an AWS WAF resource to begin executing actions. + Refer to the image below for guidance on creating an AWS WAF resource. -
/aws-waf +Edit Resource for AWS WAF Provide the following details: * Access Key @@ -60,9 +73,11 @@ Provide the following details: Once the information is filled in, click on Test to quickly verify that the provided details are correct. ### Verification -To verify the integration is working, execute any Enrichment action, or once resource created test the resource. + +To verify the integration is working, execute any Enrichment action, or once the resource is created, test the resource. ## Actions + * **Create IP Set** (*Containment*) - Creates an IPSet, used to identify web requests that originate from specific IP addresses or ranges of IP addresses. * **Create Regex Pattern Set** (*Containment*) - Creates a RegexPatternSet, which you reference in a RegexPatternSetReferenceStatement, to have AWS WAF inspect a web request component for the specified patterns. * **Create Rule Group** (*Containment*) - Creates a RuleGroup per the specifications provided. @@ -83,22 +98,29 @@ To verify the integration is working, execute any Enrichment action, or once res * **Update IP Set** (*Containment*) - Updates the specified IPSet. ## Usage -### Basic Usage -* Create an IP Set (allow/block IPs) -* Create a Regex Pattern Set (match request components) -* Group rules using Rule Groups -* Retrieve or list existing components for monitoring or inspection -### Advanced Usage -* Bulk Listing & Auditing: List all rule groups, regex sets, IP sets, and WebACLs and map their usage across resources - -## API Reference + +### Basic usage + +* Create an IP Set (allow/block IPs). +* Create a Regex Pattern Set (match request components). +* Group rules using Rule Groups. +* Retrieve or list existing components for monitoring or inspection. + +### Advanced usage + +Bulk Listing & Auditing: List all rule groups, regex sets, IP sets, and WebACLs and map their usage across resources. + +## API reference + ### Configuration + Each API call uses the following structure: -* Method: Generally POST or GET depending on the action. +* Method: Generally POST or GET depending on the action * Authentication: AWS Signature V4 * Scope: REGIONAL or CLOUDFRONT ### Containment APIs + **Create IP Set** * Method: POST * Action: CreateIPSet @@ -213,12 +235,6 @@ IP addresses not being blocked Traffic from listed IPs still reaches th * [boto3](https://github.com/boto/boto3/blob/develop/LICENSE) -## Configure AWS WAF in Automation Service and Cloud SOAR - -import IntegrationsAuth from '../../../../reuse/integrations-authentication.md'; - - - ## Change Log ### Version History * April 19, 2024 (v1.0)- First upload From 2beda605f532ccae3cf3a2d34d5c7c437df38df6 Mon Sep 17 00:00:00 2001 From: John Pipkin Date: Tue, 15 Apr 2025 11:47:18 -0500 Subject: [PATCH 7/7] More updates from review --- .../app-central/integrations/aws-waf.md | 113 ++++++++++-------- 1 file changed, 66 insertions(+), 47 deletions(-) diff --git a/docs/platform-services/automation-service/app-central/integrations/aws-waf.md b/docs/platform-services/automation-service/app-central/integrations/aws-waf.md index 578f7a57da..aa6f4671a8 100644 --- a/docs/platform-services/automation-service/app-central/integrations/aws-waf.md +++ b/docs/platform-services/automation-service/app-central/integrations/aws-waf.md @@ -121,7 +121,7 @@ Each API call uses the following structure: ### Containment APIs -**Create IP Set** +#### Create IP Set * Method: POST * Action: CreateIPSet * Required Parameters: @@ -131,8 +131,8 @@ Each API call uses the following structure: * IPAddressVersion (IPV4 | IPV6) * Addresses (list of IPs or CIDRs) * Description (optional) -```` -* Sample Request (Python) + +```python title="Sample Request (Python)" client.create_ip_set( Name='BlockList', Scope='REGIONAL', @@ -140,8 +140,9 @@ client.create_ip_set( Addresses=['x.x.x.x/24'], Description='Block bad IPs' ) +``` -Sample Response (Json) +```json title="Sample Response (JSON)" { "Summary": { "Name": "BlockList", @@ -151,93 +152,111 @@ Sample Response (Json) "LockToken": "e1b2c3d4-5678-9101-1121-314151617181" } } -```` -**Create Regex Pattern Set** +``` + +#### Create Regex Pattern Set * Method: POST * Action: CreateRegexPatternSet * Required Parameters: * Name, Scope, RegularExpressionList, Description (optional) -**Create Rule Group** +#### Create Rule Group * Method: POST * Action: CreateRuleGroup * Required Parameters: * Name, Scope, Capacity, Rules, VisibilityConfig -**Update IP Set** +#### Update IP Set * Method: POST * Action: UpdateIPSet * Required Parameters: * ID, Name, Scope, Add/Remove IP Addresses -**Delete IP Set / Regex Pattern Set / Rule Group** +#### Delete IP Set / Regex Pattern Set / Rule Group * Method: POST * Action: Delete (Type) * Required Parameters: * Name, ID, Scope, Region ### Enrichment APIs -**Get IP Set / Rule Group / Web ACL / Managed Rule Set** + +#### Get IP Set / Rule Group / Web ACL / Managed Rule Set * Method: GET * Action: Get (Type) ex: Get IP Set/Get Rule Group * Required Parameters: * Id, Name, Scope -**List IP Sets / Regex Pattern Sets / Rule Groups / Web ACLs / Managed Rule Sets** +#### List IP Sets / Regex Pattern Sets / Rule Groups / Web ACLs / Managed Rule Sets * Method: GET * Action: List (Type)s * Optional Parameters: Limit, NextMarker -**List Resources for Web ACLs** +#### List Resources for Web ACLs * Method: GET * Action: ListResourcesForWebACL * Required Parameters: * WebACLArn -### Rate Limits and Quotas -```` -API Type Quota / Rate Limit -IP sets per region 100 -Regex sets per region 100 -Rule groups per region 100 -API Transactions (TPS) ~5-10 TPS per account per API -```` -**Limits may vary by region and can be increased via AWS Support.** +### Rate limits and quotas + +| API type | Quota/rate limit | +| :-- | :-- | +| IP sets per region | 100 | +| Regex sets per region | 100 | +| Rule groups per region | 100 | +| API transactions (TPS) | ~5-10 TPS per account per API | + +Limits may vary by region and can be increased via AWS Support. ## Troubleshooting -### Common Issues -```` -ISSUES DESCRIPTION SOLUTION -WAFNonexistentItemException Occurs when trying to access or delete a non-existent resource Double-check the Id, Name, and Scope. Use List APIs to confirm existence. -WAFOptimisticLockException Indicates a stale or missing LockToken when updating or deleting resources Always fetch the latest LockToken using Get API before performing updates/deletes. -WAFInvalidParameterException One or more parameters are invalid or missing Verify that all required parameters are included and correctly formatted (e.g., CIDR for IP sets). -AccessDeniedException Occurs when permissions are insufficient Check IAM roles and policies assigned to the user or service making the request. Ensure wafv2:* permissions are included. -Resource still appears after deletion A deleted IPSet, RuleGroup, etc. still seems accessible in the UI or APIs Allow a few seconds for propagation. Use Get or List s to confirm removal. -IP addresses not being blocked Traffic from listed IPs still reaches the application Ensure the IPSet is attached to a WebACL and the WebACL is associated with the resource (e.g., CloudFront or ALB). -```` + +### Common issues + +| Issue | Description | Solution | +| :-- | :-- | :-- | +| WAFNonexistentItemException | Occurs when trying to access or delete a non-existent resource. | Double-check the ID, Name, and Scope. Use List APIs to confirm existence. | +| WAFOptimisticLockException | Indicates a stale or missing LockToken when updating or deleting resources. | Always fetch the latest LockToken using Get API before performing updates/deletes. | +| WAFInvalidParameterException | One or more parameters are invalid or missing. | Verify that all required parameters are included and correctly formatted (for example, CIDR for IP sets). | +| AccessDeniedException | Occurs when permissions are insufficient. | Check IAM roles and policies assigned to the user or service making the request. Ensure `wafv2:*` permissions are included. | +| Resource still appears after deletion. | A deleted IPSet, RuleGroup, etc. still seems accessible in the UI or APIs. | Allow a few seconds for propagation. Use Get `` or List `` to confirm removal. | +| IP addresses not being blocked. | Traffic from listed IPs still reaches the application. | Ensure the IPSet is attached to a WebACL and the WebACL is associated with the resource (for example, CloudFront or ALB). | + + ### FAQs -* Q1: Can I reuse an IPSet in different rule groups? - * Yes, an IPSet can be used in several rule groups or WebACLs. You don’t need to create a new one for each use. -* Q2: What’s the difference between REGIONAL and CLOUDFRONT scopes? - * REGIONAL is used for AWS services like Application Load Balancers, API Gateway, and App Runner. - * CLOUDFRONT is specifically for CloudFront distributions and must be managed in the US East (N. Virginia) region. -* Q3: Why aren’t my changes showing up right away? - * Updates can take a few moments to fully apply within AWS. Try retrieving the latest configuration using the appropriate Get API call to confirm. -* Q4: What if the IP address I provide isn’t in CIDR format? - * If the IP isn’t formatted correctly (e.g., missing the CIDR suffix), AWS WAF will return a WAFInvalidParameterException. Make sure IPs follow the CIDR notation like 192.0.2.0/24. + +#### Can I reuse an IPSet in different rule groups? + +Yes, an IPSet can be used in several rule groups or WebACLs. You don’t need to create a new one for each use. + +#### What’s the difference between REGIONAL and CLOUDFRONT scopes? + +REGIONAL is used for AWS services like Application Load Balancers, API Gateway, and App Runner. + +CLOUDFRONT is specifically for CloudFront distributions and must be managed in the US East (N. Virginia) region. + +#### Why aren’t my changes showing up right away? + +Updates can take a few moments to fully apply within AWS. Try retrieving the latest configuration using the appropriate Get API call to confirm. + +#### What if the IP address I provide isn’t in CIDR format? + +If the IP isn’t formatted correctly (for example, missing the CIDR suffix), AWS WAF will return a WAFInvalidParameterException. Make sure IPs follow the CIDR notation like 192.0.2.0/24. ### Support -* **[AWS WAF Documentation](https://docs.aws.amazon.com/waf/latest/developerguide/)** -* **[AWS WAF API Reference](https://docs.aws.amazon.com/waf/latest/APIReference/)** -* **[Contact AWS Support](https://aws.amazon.com/support)** -## External Libraries +* [AWS WAF documentation](https://docs.aws.amazon.com/waf/latest/developerguide/) +* [AWS WAF API reference](https://docs.aws.amazon.com/waf/latest/APIReference/) +* [Contact AWS support](https://aws.amazon.com/support) + +## External libraries * [boto3](https://github.com/boto/boto3/blob/develop/LICENSE) ## Change Log -### Version History + +### Version history * April 19, 2024 (v1.0)- First upload -* March 26, 2025 (v1.1) - Added **Update IP Set** action: This new action allows users to add or remove IPs from an existing IP Set. -### Deprecation Notices +* March 26, 2025 (v1.1) - Added Update IP Set action. This new action allows users to add or remove IPs from an existing IP Set. + +### Deprecation notices * NA \ No newline at end of file