From 8a6e222f7a23f7cbb8ccd6b32b078680af9f3558 Mon Sep 17 00:00:00 2001 From: Hugo Pereira Brito <101209179+HugoPBrito@users.noreply.github.com> Date: Tue, 29 Oct 2024 16:16:48 +0100 Subject: [PATCH] feat(wafv2): set `us-east-1` region for `global acls` (#5558) Co-authored-by: Sergio --- .../aws/services/wafv2/wafv2_service.py | 48 +++++++++---------- 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/prowler/providers/aws/services/wafv2/wafv2_service.py b/prowler/providers/aws/services/wafv2/wafv2_service.py index 70b20e475c..da47596c21 100644 --- a/prowler/providers/aws/services/wafv2/wafv2_service.py +++ b/prowler/providers/aws/services/wafv2/wafv2_service.py @@ -14,7 +14,11 @@ class WAFv2(AWSService): # Call AWSService's __init__ super().__init__(__class__.__name__, provider) self.web_acls = {} - self._list_web_acls_global() + if self.audited_partition == "aws": + # AWS WAFv2 is available globally for CloudFront distributions, but you must use the Region US East (N. Virginia) to create your web ACL. + self.region = "us-east-1" + self.client = self.session.client(self.service, self.region) + self._list_web_acls_global() self.__threading_call__(self._list_web_acls_regional) self.__threading_call__(self._get_web_acl, self.web_acls.values()) self.__threading_call__( @@ -25,29 +29,25 @@ class WAFv2(AWSService): def _list_web_acls_global(self): logger.info("WAFv2 - Listing Global Web ACLs...") - if "us-east-1" in self.regional_clients: - try: - regional_client = self.regional_clients["us-east-1"] - for wafv2 in regional_client.list_web_acls(Scope="CLOUDFRONT")[ - "WebACLs" - ]: - if not self.audit_resources or ( - is_resource_filtered(wafv2["ARN"], self.audit_resources) - ): - arn = wafv2["ARN"] - self.web_acls[arn] = WebAclv2( - arn=arn, - name=wafv2["Name"], - id=wafv2["Id"], - albs=[], - user_pools=[], - scope=Scope.CLOUDFRONT, - region="us-east-1", - ) - except Exception as error: - logger.error( - f"us-east-1 -- {error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}" - ) + try: + for wafv2 in self.client.list_web_acls(Scope="CLOUDFRONT")["WebACLs"]: + if not self.audit_resources or ( + is_resource_filtered(wafv2["ARN"], self.audit_resources) + ): + arn = wafv2["ARN"] + self.web_acls[arn] = WebAclv2( + arn=arn, + name=wafv2["Name"], + id=wafv2["Id"], + albs=[], + user_pools=[], + scope=Scope.CLOUDFRONT, + region=self.region, + ) + except Exception as error: + logger.error( + f"{self.region} -- {error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}" + ) def _list_web_acls_regional(self, regional_client): logger.info("WAFv2 - Listing Regional Web ACLs...")