diff --git a/prowler/providers/aws/lib/service/__init__.py b/prowler/providers/aws/lib/service/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/prowler/providers/aws/lib/service/service.py b/prowler/providers/aws/lib/service/service.py new file mode 100644 index 00000000..f09453d2 --- /dev/null +++ b/prowler/providers/aws/lib/service/service.py @@ -0,0 +1,55 @@ +import threading + +from prowler.providers.aws.aws_provider import ( + generate_regional_clients, + get_default_region, +) + + +class AWSService: + """The AWSService class offers a parent class for each AWS Service to generate: + - AWS Regional Clients + - Shared information like the account ID and ARN, the the AWS partition and the checks audited + - AWS Session + - Also handles if the AWS Service is Global + """ + + def __init__(self, service, audit_info, global_service=False): + # Audit Information + self.audit_info = audit_info + self.audited_account = audit_info.audited_account + self.audited_account_arn = audit_info.audited_account_arn + self.audited_partition = audit_info.audited_partition + self.audit_resources = audit_info.audit_resources + self.audited_checks = audit_info.audit_metadata.expected_checks + + # AWS Session + self.session = audit_info.audit_session + + # We receive the service using __class__.__name__ or the service name in lowercase + # e.g.: AccessAnalyzer --> we need a lowercase string, so service.lower() + self.service = service.lower() if not service.islower() else service + + # Generate Regional Clients + if not global_service: + self.regional_clients = generate_regional_clients( + self.service, audit_info, global_service + ) + + # Get a single region and client if the service needs it (e.g. AWS Global Service) + # We cannot include this within an else because some services needs both the regional_clients + # and a single client like S3 + self.region = get_default_region(self.service, audit_info) + self.client = self.session.client(self.service, self.region) + + def __get_session__(self): + return self.session + + def __threading_call__(self, call): + threads = [] + for regional_client in self.regional_clients.values(): + threads.append(threading.Thread(target=call, args=(regional_client,))) + for t in threads: + t.start() + for t in threads: + t.join() diff --git a/prowler/providers/aws/services/accessanalyzer/accessanalyzer_service.py b/prowler/providers/aws/services/accessanalyzer/accessanalyzer_service.py index 47dcce19..ae472e50 100644 --- a/prowler/providers/aws/services/accessanalyzer/accessanalyzer_service.py +++ b/prowler/providers/aws/services/accessanalyzer/accessanalyzer_service.py @@ -1,4 +1,3 @@ -import threading from typing import Optional from botocore.exceptions import ClientError @@ -6,34 +5,19 @@ from pydantic import BaseModel from prowler.lib.logger import logger from prowler.lib.scan_filters.scan_filters import is_resource_filtered -from prowler.providers.aws.aws_provider import generate_regional_clients +from prowler.providers.aws.lib.service.service import AWSService ################## AccessAnalyzer -class AccessAnalyzer: +class AccessAnalyzer(AWSService): def __init__(self, audit_info): - self.service = "accessanalyzer" - self.session = audit_info.audit_session - self.audited_account = audit_info.audited_account - self.audit_resources = audit_info.audit_resources - self.regional_clients = generate_regional_clients(self.service, audit_info) + # Call AWSService's __init__ + super().__init__(__class__.__name__, audit_info) self.analyzers = [] self.__threading_call__(self.__list_analyzers__) self.__list_findings__() self.__get_finding_status__() - def __get_session__(self): - return self.session - - def __threading_call__(self, call): - threads = [] - for regional_client in self.regional_clients.values(): - threads.append(threading.Thread(target=call, args=(regional_client,))) - for t in threads: - t.start() - for t in threads: - t.join() - def __list_analyzers__(self, regional_client): logger.info("AccessAnalyzer - Listing Analyzers...") try: diff --git a/prowler/providers/aws/services/account/account_service.py b/prowler/providers/aws/services/account/account_service.py index a3567ac8..f1ab8c26 100644 --- a/prowler/providers/aws/services/account/account_service.py +++ b/prowler/providers/aws/services/account/account_service.py @@ -1,22 +1,11 @@ -from prowler.providers.aws.aws_provider import ( - generate_regional_clients, - get_default_region, -) - - ################## Account -class Account: - def __init__(self, audit_info): - self.service = "account" - self.session = audit_info.audit_session - self.audited_account = audit_info.audited_account - self.audited_partition = audit_info.audited_partition - self.audited_account_arn = audit_info.audited_account_arn - self.regional_clients = generate_regional_clients(self.service, audit_info) - self.region = get_default_region(self.service, audit_info) +from prowler.providers.aws.lib.service.service import AWSService - def __get_session__(self): - return self.session + +class Account(AWSService): + def __init__(self, audit_info): + # Call AWSService's __init__ + super().__init__(__class__.__name__, audit_info) ### This service don't need boto3 calls diff --git a/prowler/providers/aws/services/acm/acm_service.py b/prowler/providers/aws/services/acm/acm_service.py index 71763db9..9926a0ab 100644 --- a/prowler/providers/aws/services/acm/acm_service.py +++ b/prowler/providers/aws/services/acm/acm_service.py @@ -1,4 +1,3 @@ -import threading from datetime import datetime from typing import Optional @@ -6,34 +5,19 @@ from pydantic import BaseModel from prowler.lib.logger import logger from prowler.lib.scan_filters.scan_filters import is_resource_filtered -from prowler.providers.aws.aws_provider import generate_regional_clients +from prowler.providers.aws.lib.service.service import AWSService ################## ACM -class ACM: +class ACM(AWSService): def __init__(self, audit_info): - self.service = "acm" - self.session = audit_info.audit_session - self.audited_account = audit_info.audited_account - self.audit_resources = audit_info.audit_resources - self.regional_clients = generate_regional_clients(self.service, audit_info) + # Call AWSService's __init__ + super().__init__(__class__.__name__, audit_info) self.certificates = [] self.__threading_call__(self.__list_certificates__) self.__describe_certificates__() self.__list_tags_for_certificate__() - def __get_session__(self): - return self.session - - def __threading_call__(self, call): - threads = [] - for regional_client in self.regional_clients.values(): - threads.append(threading.Thread(target=call, args=(regional_client,))) - for t in threads: - t.start() - for t in threads: - t.join() - def __list_certificates__(self, regional_client): logger.info("ACM - Listing Certificates...") try: diff --git a/prowler/providers/aws/services/apigateway/apigateway_service.py b/prowler/providers/aws/services/apigateway/apigateway_service.py index 5922c14c..c3a4fb01 100644 --- a/prowler/providers/aws/services/apigateway/apigateway_service.py +++ b/prowler/providers/aws/services/apigateway/apigateway_service.py @@ -1,40 +1,23 @@ -import threading from typing import Optional from pydantic import BaseModel from prowler.lib.logger import logger from prowler.lib.scan_filters.scan_filters import is_resource_filtered -from prowler.providers.aws.aws_provider import generate_regional_clients +from prowler.providers.aws.lib.service.service import AWSService ################## APIGateway -class APIGateway: +class APIGateway(AWSService): def __init__(self, audit_info): - self.service = "apigateway" - self.session = audit_info.audit_session - self.audited_account = audit_info.audited_account - self.audit_resources = audit_info.audit_resources - self.audited_partition = audit_info.audited_partition - self.regional_clients = generate_regional_clients(self.service, audit_info) + # Call AWSService's __init__ + super().__init__(__class__.__name__, audit_info) self.rest_apis = [] self.__threading_call__(self.__get_rest_apis__) self.__get_authorizers__() self.__get_rest_api__() self.__get_stages__() - def __get_session__(self): - return self.session - - def __threading_call__(self, call): - threads = [] - for regional_client in self.regional_clients.values(): - threads.append(threading.Thread(target=call, args=(regional_client,))) - for t in threads: - t.start() - for t in threads: - t.join() - def __get_rest_apis__(self, regional_client): logger.info("APIGateway - Getting Rest APIs...") try: diff --git a/prowler/providers/aws/services/apigatewayv2/apigatewayv2_service.py b/prowler/providers/aws/services/apigatewayv2/apigatewayv2_service.py index 25d11585..4b19d6e0 100644 --- a/prowler/providers/aws/services/apigatewayv2/apigatewayv2_service.py +++ b/prowler/providers/aws/services/apigatewayv2/apigatewayv2_service.py @@ -1,39 +1,22 @@ -import threading from typing import Optional from pydantic import BaseModel from prowler.lib.logger import logger from prowler.lib.scan_filters.scan_filters import is_resource_filtered -from prowler.providers.aws.aws_provider import generate_regional_clients +from prowler.providers.aws.lib.service.service import AWSService ################## ApiGatewayV2 -class ApiGatewayV2: +class ApiGatewayV2(AWSService): def __init__(self, audit_info): - self.service = "apigatewayv2" - self.session = audit_info.audit_session - self.audited_account = audit_info.audited_account - self.audited_partition = audit_info.audited_partition - self.audit_resources = audit_info.audit_resources - self.regional_clients = generate_regional_clients(self.service, audit_info) + # Call AWSService's __init__ + super().__init__(__class__.__name__, audit_info) self.apis = [] self.__threading_call__(self.__get_apis__) self.__get_authorizers__() self.__get_stages__() - def __get_session__(self): - return self.session - - def __threading_call__(self, call): - threads = [] - for regional_client in self.regional_clients.values(): - threads.append(threading.Thread(target=call, args=(regional_client,))) - for t in threads: - t.start() - for t in threads: - t.join() - def __get_apis__(self, regional_client): logger.info("APIGatewayv2 - Getting APIs...") try: diff --git a/prowler/providers/aws/services/appstream/appstream_service.py b/prowler/providers/aws/services/appstream/appstream_service.py index 492f836a..9bebb630 100644 --- a/prowler/providers/aws/services/appstream/appstream_service.py +++ b/prowler/providers/aws/services/appstream/appstream_service.py @@ -1,37 +1,21 @@ -import threading from typing import Optional from pydantic import BaseModel from prowler.lib.logger import logger from prowler.lib.scan_filters.scan_filters import is_resource_filtered -from prowler.providers.aws.aws_provider import generate_regional_clients +from prowler.providers.aws.lib.service.service import AWSService ################## AppStream -class AppStream: +class AppStream(AWSService): def __init__(self, audit_info): - self.service = "appstream" - self.session = audit_info.audit_session - self.audited_account = audit_info.audited_account - self.audit_resources = audit_info.audit_resources - self.regional_clients = generate_regional_clients(self.service, audit_info) + # Call AWSService's __init__ + super().__init__(__class__.__name__, audit_info) self.fleets = [] self.__threading_call__(self.__describe_fleets__) self.__list_tags_for_resource__() - def __get_session__(self): - return self.session - - def __threading_call__(self, call): - threads = [] - for regional_client in self.regional_clients.values(): - threads.append(threading.Thread(target=call, args=(regional_client,))) - for t in threads: - t.start() - for t in threads: - t.join() - def __describe_fleets__(self, regional_client): logger.info("AppStream - Describing Fleets...") try: diff --git a/prowler/providers/aws/services/autoscaling/autoscaling_service.py b/prowler/providers/aws/services/autoscaling/autoscaling_service.py index c2de0536..8f37bb5d 100644 --- a/prowler/providers/aws/services/autoscaling/autoscaling_service.py +++ b/prowler/providers/aws/services/autoscaling/autoscaling_service.py @@ -1,37 +1,20 @@ -import threading - from pydantic import BaseModel from prowler.lib.logger import logger from prowler.lib.scan_filters.scan_filters import is_resource_filtered -from prowler.providers.aws.aws_provider import generate_regional_clients +from prowler.providers.aws.lib.service.service import AWSService ################## AutoScaling -class AutoScaling: +class AutoScaling(AWSService): def __init__(self, audit_info): - self.service = "autoscaling" - self.session = audit_info.audit_session - self.audited_account = audit_info.audited_account - self.audit_resources = audit_info.audit_resources - self.regional_clients = generate_regional_clients(self.service, audit_info) + # Call AWSService's __init__ + super().__init__(__class__.__name__, audit_info) self.launch_configurations = [] self.__threading_call__(self.__describe_launch_configurations__) self.groups = [] self.__threading_call__(self.__describe_auto_scaling_groups__) - def __get_session__(self): - return self.session - - def __threading_call__(self, call): - threads = [] - for regional_client in self.regional_clients.values(): - threads.append(threading.Thread(target=call, args=(regional_client,))) - for t in threads: - t.start() - for t in threads: - t.join() - def __describe_launch_configurations__(self, regional_client): logger.info("AutoScaling - Describing Launch Configurations...") try: diff --git a/prowler/providers/aws/services/awslambda/awslambda_service.py b/prowler/providers/aws/services/awslambda/awslambda_service.py index d11e27b0..5b2997e0 100644 --- a/prowler/providers/aws/services/awslambda/awslambda_service.py +++ b/prowler/providers/aws/services/awslambda/awslambda_service.py @@ -1,6 +1,5 @@ import io import json -import threading import zipfile from enum import Enum from typing import Any, Optional @@ -11,17 +10,14 @@ from pydantic import BaseModel from prowler.lib.logger import logger from prowler.lib.scan_filters.scan_filters import is_resource_filtered -from prowler.providers.aws.aws_provider import generate_regional_clients +from prowler.providers.aws.lib.service.service import AWSService ################## Lambda -class Lambda: +class Lambda(AWSService): def __init__(self, audit_info): - self.service = "lambda" - self.session = audit_info.audit_session - self.audited_account = audit_info.audited_account - self.audit_resources = audit_info.audit_resources - self.regional_clients = generate_regional_clients(self.service, audit_info) + # Call AWSService's __init__ + super().__init__(__class__.__name__, audit_info) self.functions = {} self.__threading_call__(self.__list_functions__) self.__list_tags_for_resource__() @@ -37,18 +33,6 @@ class Lambda: self.__threading_call__(self.__get_policy__) self.__threading_call__(self.__get_function_url_config__) - def __get_session__(self): - return self.session - - def __threading_call__(self, call): - threads = [] - for regional_client in self.regional_clients.values(): - threads.append(threading.Thread(target=call, args=(regional_client,))) - for t in threads: - t.start() - for t in threads: - t.join() - def __list_functions__(self, regional_client): logger.info("Lambda - Listing Functions...") try: diff --git a/prowler/providers/aws/services/backup/backup_service.py b/prowler/providers/aws/services/backup/backup_service.py index 6e534fb1..8e77349a 100644 --- a/prowler/providers/aws/services/backup/backup_service.py +++ b/prowler/providers/aws/services/backup/backup_service.py @@ -1,4 +1,3 @@ -import threading from datetime import datetime from typing import Optional @@ -6,23 +5,14 @@ from pydantic import BaseModel from prowler.lib.logger import logger from prowler.lib.scan_filters.scan_filters import is_resource_filtered -from prowler.providers.aws.aws_provider import ( - generate_regional_clients, - get_default_region, -) +from prowler.providers.aws.lib.service.service import AWSService ################## Backup -class Backup: +class Backup(AWSService): def __init__(self, audit_info): - self.service = "backup" - self.session = audit_info.audit_session - self.audited_account = audit_info.audited_account - self.audited_partition = audit_info.audited_partition - self.audited_account_arn = audit_info.audited_account_arn - self.audit_resources = audit_info.audit_resources - self.regional_clients = generate_regional_clients(self.service, audit_info) - self.region = get_default_region(self.service, audit_info) + # Call AWSService's __init__ + super().__init__(__class__.__name__, audit_info) self.backup_vaults = [] self.__threading_call__(self.__list_backup_vaults__) self.backup_plans = [] @@ -30,15 +20,6 @@ class Backup: self.backup_report_plans = [] self.__threading_call__(self.__list_backup_report_plans__) - def __threading_call__(self, call): - threads = [] - for regional_client in self.regional_clients.values(): - threads.append(threading.Thread(target=call, args=(regional_client,))) - for t in threads: - t.start() - for t in threads: - t.join() - def __list_backup_vaults__(self, regional_client): logger.info("Backup - Listing Backup Vaults...") try: diff --git a/prowler/providers/aws/services/cloudformation/cloudformation_service.py b/prowler/providers/aws/services/cloudformation/cloudformation_service.py index b884e480..f994db90 100644 --- a/prowler/providers/aws/services/cloudformation/cloudformation_service.py +++ b/prowler/providers/aws/services/cloudformation/cloudformation_service.py @@ -1,4 +1,3 @@ -import threading from typing import Optional from botocore.client import ClientError @@ -6,33 +5,18 @@ from pydantic import BaseModel from prowler.lib.logger import logger from prowler.lib.scan_filters.scan_filters import is_resource_filtered -from prowler.providers.aws.aws_provider import generate_regional_clients +from prowler.providers.aws.lib.service.service import AWSService ################## CloudFormation -class CloudFormation: +class CloudFormation(AWSService): def __init__(self, audit_info): - self.service = "cloudformation" - self.session = audit_info.audit_session - self.audited_account = audit_info.audited_account - self.audit_resources = audit_info.audit_resources - self.regional_clients = generate_regional_clients(self.service, audit_info) + # Call AWSService's __init__ + super().__init__(__class__.__name__, audit_info) self.stacks = [] self.__threading_call__(self.__describe_stacks__) self.__describe_stack__() - def __get_session__(self): - return self.session - - def __threading_call__(self, call): - threads = [] - for regional_client in self.regional_clients.values(): - threads.append(threading.Thread(target=call, args=(regional_client,))) - for t in threads: - t.start() - for t in threads: - t.join() - def __describe_stacks__(self, regional_client): """Get ALL CloudFormation Stacks""" logger.info("CloudFormation - Describing Stacks...") diff --git a/prowler/providers/aws/services/cloudfront/cloudfront_service.py b/prowler/providers/aws/services/cloudfront/cloudfront_service.py index 8c51a31a..667c693a 100644 --- a/prowler/providers/aws/services/cloudfront/cloudfront_service.py +++ b/prowler/providers/aws/services/cloudfront/cloudfront_service.py @@ -5,33 +5,18 @@ from pydantic import BaseModel from prowler.lib.logger import logger from prowler.lib.scan_filters.scan_filters import is_resource_filtered -from prowler.providers.aws.aws_provider import generate_regional_clients +from prowler.providers.aws.lib.service.service import AWSService ################## CloudFront -class CloudFront: +class CloudFront(AWSService): def __init__(self, audit_info): - self.service = "cloudfront" - self.session = audit_info.audit_session - self.audited_account = audit_info.audited_account - self.audit_resources = audit_info.audit_resources - global_client = generate_regional_clients( - self.service, audit_info, global_service=True - ) + # Call AWSService's __init__ + super().__init__(__class__.__name__, audit_info, global_service=True) self.distributions = {} - if global_client: - self.client = list(global_client.values())[0] - self.region = self.client.region - self.__list_distributions__(self.client, self.region) - self.__get_distribution_config__( - self.client, self.distributions, self.region - ) - self.__list_tags_for_resource__( - self.client, self.distributions, self.region - ) - - def __get_session__(self): - return self.session + self.__list_distributions__(self.client, self.region) + self.__get_distribution_config__(self.client, self.distributions, self.region) + self.__list_tags_for_resource__(self.client, self.distributions, self.region) def __list_distributions__(self, client, region) -> dict: logger.info("CloudFront - Listing Distributions...") diff --git a/prowler/providers/aws/services/cloudtrail/cloudtrail_service.py b/prowler/providers/aws/services/cloudtrail/cloudtrail_service.py index 09a2b278..23e390b4 100644 --- a/prowler/providers/aws/services/cloudtrail/cloudtrail_service.py +++ b/prowler/providers/aws/services/cloudtrail/cloudtrail_service.py @@ -1,4 +1,3 @@ -import threading from datetime import datetime from typing import Optional @@ -7,23 +6,14 @@ from pydantic import BaseModel from prowler.lib.logger import logger from prowler.lib.scan_filters.scan_filters import is_resource_filtered -from prowler.providers.aws.aws_provider import ( - generate_regional_clients, - get_default_region, -) +from prowler.providers.aws.lib.service.service import AWSService ################### CLOUDTRAIL -class Cloudtrail: +class Cloudtrail(AWSService): def __init__(self, audit_info): - self.service = "cloudtrail" - self.session = audit_info.audit_session - self.audited_account = audit_info.audited_account - self.audited_partition = audit_info.audited_partition - self.audited_account_arn = audit_info.audited_account_arn - self.audit_resources = audit_info.audit_resources - self.regional_clients = generate_regional_clients(self.service, audit_info) - self.region = get_default_region(self.service, audit_info) + # Call AWSService's __init__ + super().__init__(__class__.__name__, audit_info) self.trails = [] self.__threading_call__(self.__get_trails__) self.__get_trail_status__() @@ -31,18 +21,6 @@ class Cloudtrail: self.__get_event_selectors__() self.__list_tags_for_resource__() - def __get_session__(self): - return self.session - - def __threading_call__(self, call): - threads = [] - for regional_client in self.regional_clients.values(): - threads.append(threading.Thread(target=call, args=(regional_client,))) - for t in threads: - t.start() - for t in threads: - t.join() - def __get_trails__(self, regional_client): logger.info("Cloudtrail - Getting trails...") try: diff --git a/prowler/providers/aws/services/cloudwatch/cloudwatch_cross_account_sharing_disabled/cloudwatch_cross_account_sharing_disabled.py b/prowler/providers/aws/services/cloudwatch/cloudwatch_cross_account_sharing_disabled/cloudwatch_cross_account_sharing_disabled.py index 396d7333..c430d8db 100644 --- a/prowler/providers/aws/services/cloudwatch/cloudwatch_cross_account_sharing_disabled/cloudwatch_cross_account_sharing_disabled.py +++ b/prowler/providers/aws/services/cloudwatch/cloudwatch_cross_account_sharing_disabled/cloudwatch_cross_account_sharing_disabled.py @@ -8,8 +8,8 @@ class cloudwatch_cross_account_sharing_disabled(Check): report = Check_Report_AWS(self.metadata()) report.status = "PASS" report.status_extended = "CloudWatch doesn't allow cross-account sharing" - report.resource_arn = iam_client.account_arn - report.resource_id = iam_client.account + report.resource_arn = iam_client.audited_account_arn + report.resource_id = iam_client.audited_account report.region = iam_client.region for role in iam_client.roles: if role.name == "CloudWatch-CrossAccountSharingRole": diff --git a/prowler/providers/aws/services/cloudwatch/cloudwatch_service.py b/prowler/providers/aws/services/cloudwatch/cloudwatch_service.py index 4c4d25b5..f213c816 100644 --- a/prowler/providers/aws/services/cloudwatch/cloudwatch_service.py +++ b/prowler/providers/aws/services/cloudwatch/cloudwatch_service.py @@ -1,4 +1,3 @@ -import threading from datetime import datetime, timezone from typing import Optional @@ -7,39 +6,18 @@ from pydantic import BaseModel from prowler.lib.logger import logger from prowler.lib.scan_filters.scan_filters import is_resource_filtered -from prowler.providers.aws.aws_provider import generate_regional_clients +from prowler.providers.aws.lib.service.service import AWSService ################## CloudWatch -class CloudWatch: +class CloudWatch(AWSService): def __init__(self, audit_info): - self.service = "cloudwatch" - self.session = audit_info.audit_session - self.audited_account = audit_info.audited_account - self.audit_resources = audit_info.audit_resources - self.audited_partition = audit_info.audited_partition - self.region = list( - generate_regional_clients( - self.service, audit_info, global_service=True - ).keys() - )[0] - self.regional_clients = generate_regional_clients(self.service, audit_info) + # Call AWSService's __init__ + super().__init__(__class__.__name__, audit_info) self.metric_alarms = [] self.__threading_call__(self.__describe_alarms__) self.__list_tags_for_resource__() - def __get_session__(self): - return self.session - - def __threading_call__(self, call): - threads = [] - for regional_client in self.regional_clients.values(): - threads.append(threading.Thread(target=call, args=(regional_client,))) - for t in threads: - t.start() - for t in threads: - t.join() - def __describe_alarms__(self, regional_client): logger.info("CloudWatch - Describing alarms...") try: @@ -85,14 +63,10 @@ class CloudWatch: ################## CloudWatch Logs -class Logs: +class Logs(AWSService): def __init__(self, audit_info): - self.service = "logs" - self.session = audit_info.audit_session - self.audited_account = audit_info.audited_account - self.audited_partition = audit_info.audited_partition - self.audit_resources = audit_info.audit_resources - self.regional_clients = generate_regional_clients(self.service, audit_info) + # Call AWSService's __init__ + super().__init__(__class__.__name__, audit_info) self.metric_filters = [] self.log_groups = [] self.__threading_call__(self.__describe_metric_filters__) @@ -107,18 +81,6 @@ class Logs: self.__threading_call__(self.__get_log_events__) self.__list_tags_for_resource__() - def __get_session__(self): - return self.session - - def __threading_call__(self, call): - threads = [] - for regional_client in self.regional_clients.values(): - threads.append(threading.Thread(target=call, args=(regional_client,))) - for t in threads: - t.start() - for t in threads: - t.join() - def __describe_metric_filters__(self, regional_client): logger.info("CloudWatch Logs - Describing metric filters...") try: diff --git a/prowler/providers/aws/services/codeartifact/codeartifact_service.py b/prowler/providers/aws/services/codeartifact/codeartifact_service.py index 5cc8154c..8581e3f1 100644 --- a/prowler/providers/aws/services/codeartifact/codeartifact_service.py +++ b/prowler/providers/aws/services/codeartifact/codeartifact_service.py @@ -1,4 +1,3 @@ -import threading from enum import Enum from typing import Optional @@ -7,35 +6,20 @@ from pydantic import BaseModel from prowler.lib.logger import logger from prowler.lib.scan_filters.scan_filters import is_resource_filtered -from prowler.providers.aws.aws_provider import generate_regional_clients +from prowler.providers.aws.lib.service.service import AWSService ################## CodeArtifact -class CodeArtifact: +class CodeArtifact(AWSService): def __init__(self, audit_info): - self.service = "codeartifact" - self.session = audit_info.audit_session - self.audited_account = audit_info.audited_account - self.audit_resources = audit_info.audit_resources - self.regional_clients = generate_regional_clients(self.service, audit_info) + # Call AWSService's __init__ + super().__init__(__class__.__name__, audit_info) # repositories is a dictionary containing all the codeartifact service information self.repositories = {} self.__threading_call__(self.__list_repositories__) self.__threading_call__(self.__list_packages__) self.__list_tags_for_resource__() - def __get_session__(self): - return self.session - - def __threading_call__(self, call): - threads = [] - for regional_client in self.regional_clients.values(): - threads.append(threading.Thread(target=call, args=(regional_client,))) - for t in threads: - t.start() - for t in threads: - t.join() - def __list_repositories__(self, regional_client): logger.info("CodeArtifact - Listing Repositories...") try: diff --git a/prowler/providers/aws/services/codebuild/codebuild_service.py b/prowler/providers/aws/services/codebuild/codebuild_service.py index 6592401f..9b0ab419 100644 --- a/prowler/providers/aws/services/codebuild/codebuild_service.py +++ b/prowler/providers/aws/services/codebuild/codebuild_service.py @@ -1,38 +1,21 @@ import datetime -import threading from dataclasses import dataclass from typing import Optional from prowler.lib.logger import logger from prowler.lib.scan_filters.scan_filters import is_resource_filtered -from prowler.providers.aws.aws_provider import generate_regional_clients +from prowler.providers.aws.lib.service.service import AWSService ################### Codebuild -class Codebuild: +class Codebuild(AWSService): def __init__(self, audit_info): - self.service = "codebuild" - self.session = audit_info.audit_session - self.audited_account = audit_info.audited_account - self.audited_partition = audit_info.audited_partition - self.audit_resources = audit_info.audit_resources - self.regional_clients = generate_regional_clients(self.service, audit_info) + # Call AWSService's __init__ + super().__init__(__class__.__name__, audit_info) self.projects = [] self.__threading_call__(self.__list_projects__) self.__list_builds_for_project__() - def __get_session__(self): - return self.session - - def __threading_call__(self, call): - threads = [] - for regional_client in self.regional_clients.values(): - threads.append(threading.Thread(target=call, args=(regional_client,))) - for t in threads: - t.start() - for t in threads: - t.join() - def __list_projects__(self, regional_client): logger.info("Codebuild - listing projects") try: diff --git a/prowler/providers/aws/services/config/config_service.py b/prowler/providers/aws/services/config/config_service.py index 96f47619..5e6df4c0 100644 --- a/prowler/providers/aws/services/config/config_service.py +++ b/prowler/providers/aws/services/config/config_service.py @@ -1,38 +1,20 @@ -import threading from typing import Optional from pydantic import BaseModel from prowler.lib.logger import logger from prowler.lib.scan_filters.scan_filters import is_resource_filtered -from prowler.providers.aws.aws_provider import generate_regional_clients +from prowler.providers.aws.lib.service.service import AWSService ################## Config -class Config: +class Config(AWSService): def __init__(self, audit_info): - self.service = "config" - self.session = audit_info.audit_session - self.audited_account = audit_info.audited_account - self.audited_partition = audit_info.audited_partition - self.audited_account_arn = audit_info.audited_account_arn - self.audit_resources = audit_info.audit_resources - self.regional_clients = generate_regional_clients(self.service, audit_info) + # Call AWSService's __init__ + super().__init__(__class__.__name__, audit_info) self.recorders = [] self.__threading_call__(self.__describe_configuration_recorder_status__) - def __get_session__(self): - return self.session - - def __threading_call__(self, call): - threads = [] - for regional_client in self.regional_clients.values(): - threads.append(threading.Thread(target=call, args=(regional_client,))) - for t in threads: - t.start() - for t in threads: - t.join() - def __describe_configuration_recorder_status__(self, regional_client): logger.info("Config - Listing Recorders...") try: diff --git a/prowler/providers/aws/services/directoryservice/directoryservice_service.py b/prowler/providers/aws/services/directoryservice/directoryservice_service.py index d31dd49c..0eb6d999 100644 --- a/prowler/providers/aws/services/directoryservice/directoryservice_service.py +++ b/prowler/providers/aws/services/directoryservice/directoryservice_service.py @@ -1,4 +1,3 @@ -import threading from datetime import datetime from enum import Enum from typing import Optional, Union @@ -8,17 +7,14 @@ from pydantic import BaseModel from prowler.lib.logger import logger from prowler.lib.scan_filters.scan_filters import is_resource_filtered -from prowler.providers.aws.aws_provider import generate_regional_clients +from prowler.providers.aws.lib.service.service import AWSService ################## DirectoryService -class DirectoryService: +class DirectoryService(AWSService): def __init__(self, audit_info): - self.service = "ds" - self.session = audit_info.audit_session - self.audited_account = audit_info.audited_account - self.audit_resources = audit_info.audit_resources - self.regional_clients = generate_regional_clients(self.service, audit_info) + # Call AWSService's __init__ + super().__init__("ds", audit_info) self.directories = {} self.__threading_call__(self.__describe_directories__) self.__threading_call__(self.__list_log_subscriptions__) @@ -27,18 +23,6 @@ class DirectoryService: self.__threading_call__(self.__get_snapshot_limits__) self.__list_tags_for_resource__() - def __get_session__(self): - return self.session - - def __threading_call__(self, call): - threads = [] - for regional_client in self.regional_clients.values(): - threads.append(threading.Thread(target=call, args=(regional_client,))) - for t in threads: - t.start() - for t in threads: - t.join() - def __describe_directories__(self, regional_client): logger.info("DirectoryService - Describing Directories...") try: diff --git a/prowler/providers/aws/services/drs/drs_service.py b/prowler/providers/aws/services/drs/drs_service.py index 8f238f82..3fe4ad1b 100644 --- a/prowler/providers/aws/services/drs/drs_service.py +++ b/prowler/providers/aws/services/drs/drs_service.py @@ -1,43 +1,19 @@ -import threading - from botocore.client import ClientError from pydantic import BaseModel from prowler.lib.logger import logger from prowler.lib.scan_filters.scan_filters import is_resource_filtered -from prowler.providers.aws.aws_provider import ( - generate_regional_clients, - get_default_region, -) +from prowler.providers.aws.lib.service.service import AWSService + ################## DRS (Elastic Disaster Recovery Service) - - -class DRS: +class DRS(AWSService): def __init__(self, audit_info): - self.service = "drs" - self.session = audit_info.audit_session - self.audited_account = audit_info.audited_account - self.audited_partition = audit_info.audited_partition - self.audited_account_arn = audit_info.audited_account_arn - self.audit_resources = audit_info.audit_resources - self.regional_clients = generate_regional_clients(self.service, audit_info) - self.region = get_default_region(self.service, audit_info) + # Call AWSService's __init__ + super().__init__(__class__.__name__, audit_info) self.drs_services = [] self.__threading_call__(self.__describe_jobs__) - def __get_session__(self): - return self.session - - def __threading_call__(self, call): - threads = [] - for regional_client in self.regional_clients.values(): - threads.append(threading.Thread(target=call, args=(regional_client,))) - for t in threads: - t.start() - for t in threads: - t.join() - def __describe_jobs__(self, regional_client): logger.info("DRS - Describe Jobs...") try: diff --git a/prowler/providers/aws/services/dynamodb/dynamodb_service.py b/prowler/providers/aws/services/dynamodb/dynamodb_service.py index 6a0b2f01..8f54064a 100644 --- a/prowler/providers/aws/services/dynamodb/dynamodb_service.py +++ b/prowler/providers/aws/services/dynamodb/dynamodb_service.py @@ -1,4 +1,3 @@ -import threading from typing import Optional from botocore.client import ClientError @@ -6,36 +5,20 @@ from pydantic import BaseModel from prowler.lib.logger import logger from prowler.lib.scan_filters.scan_filters import is_resource_filtered -from prowler.providers.aws.aws_provider import generate_regional_clients +from prowler.providers.aws.lib.service.service import AWSService ################## DynamoDB -class DynamoDB: +class DynamoDB(AWSService): def __init__(self, audit_info): - self.service = "dynamodb" - self.session = audit_info.audit_session - self.audited_account = audit_info.audited_account - self.audit_resources = audit_info.audit_resources - self.audited_partition = audit_info.audited_partition - self.regional_clients = generate_regional_clients(self.service, audit_info) + # Call AWSService's __init__ + super().__init__(__class__.__name__, audit_info) self.tables = [] self.__threading_call__(self.__list_tables__) self.__describe_table__() self.__describe_continuous_backups__() self.__list_tags_for_resource__() - def __get_session__(self): - return self.session - - def __threading_call__(self, call): - threads = [] - for regional_client in self.regional_clients.values(): - threads.append(threading.Thread(target=call, args=(regional_client,))) - for t in threads: - t.start() - for t in threads: - t.join() - def __list_tables__(self, regional_client): logger.info("DynamoDB - Listing tables...") try: @@ -126,29 +109,14 @@ class DynamoDB: ################## DynamoDB DAX -class DAX: +class DAX(AWSService): def __init__(self, audit_info): - self.service = "dax" - self.session = audit_info.audit_session - self.audited_account = audit_info.audited_account - self.audit_resources = audit_info.audit_resources - self.regional_clients = generate_regional_clients(self.service, audit_info) + # Call AWSService's __init__ + super().__init__(__class__.__name__, audit_info) self.clusters = [] self.__threading_call__(self.__describe_clusters__) self.__list_tags_for_resource__() - def __get_session__(self): - return self.session - - def __threading_call__(self, call): - threads = [] - for regional_client in self.regional_clients.values(): - threads.append(threading.Thread(target=call, args=(regional_client,))) - for t in threads: - t.start() - for t in threads: - t.join() - def __describe_clusters__(self, regional_client): logger.info("DynamoDB DAX - Describing clusters...") try: diff --git a/prowler/providers/aws/services/ec2/ec2_service.py b/prowler/providers/aws/services/ec2/ec2_service.py index a7ac841a..4fdcfcbb 100644 --- a/prowler/providers/aws/services/ec2/ec2_service.py +++ b/prowler/providers/aws/services/ec2/ec2_service.py @@ -1,4 +1,3 @@ -import threading from datetime import datetime from typing import Optional @@ -7,21 +6,15 @@ from pydantic import BaseModel from prowler.lib.logger import logger from prowler.lib.scan_filters.scan_filters import is_resource_filtered -from prowler.providers.aws.aws_provider import generate_regional_clients +from prowler.providers.aws.lib.service.service import AWSService from prowler.providers.aws.services.ec2.lib.security_groups import check_security_group ################## EC2 -class EC2: +class EC2(AWSService): def __init__(self, audit_info): - self.service = "ec2" - self.session = audit_info.audit_session - self.audited_partition = audit_info.audited_partition - self.audited_account = audit_info.audited_account - self.audited_account_arn = audit_info.audited_account_arn - self.audit_resources = audit_info.audit_resources - self.audited_checks = audit_info.audit_metadata.expected_checks - self.regional_clients = generate_regional_clients(self.service, audit_info) + # Call AWSService's __init__ + super().__init__(__class__.__name__, audit_info) self.instances = [] self.__threading_call__(self.__describe_instances__) self.__get_instance_user_data__() @@ -44,18 +37,6 @@ class EC2: self.elastic_ips = [] self.__threading_call__(self.__describe_addresses__) - def __get_session__(self): - return self.session - - def __threading_call__(self, call): - threads = [] - for regional_client in self.regional_clients.values(): - threads.append(threading.Thread(target=call, args=(regional_client,))) - for t in threads: - t.start() - for t in threads: - t.join() - def __describe_instances__(self, regional_client): logger.info("EC2 - Describing EC2 Instances...") try: diff --git a/prowler/providers/aws/services/ecr/ecr_service.py b/prowler/providers/aws/services/ecr/ecr_service.py index 39e6596d..00bd72bd 100644 --- a/prowler/providers/aws/services/ecr/ecr_service.py +++ b/prowler/providers/aws/services/ecr/ecr_service.py @@ -1,4 +1,3 @@ -import threading from datetime import datetime from json import loads from typing import Optional @@ -8,16 +7,14 @@ from pydantic import BaseModel from prowler.lib.logger import logger from prowler.lib.scan_filters.scan_filters import is_resource_filtered -from prowler.providers.aws.aws_provider import generate_regional_clients +from prowler.providers.aws.lib.service.service import AWSService ################################ ECR -class ECR: +class ECR(AWSService): def __init__(self, audit_info): - self.service = "ecr" - self.session = audit_info.audit_session - self.audit_resources = audit_info.audit_resources - self.regional_clients = generate_regional_clients(self.service, audit_info) + # Call AWSService's __init__ + super().__init__(__class__.__name__, audit_info) self.registry_id = audit_info.audited_account self.registries = {} self.__threading_call__(self.__describe_registries_and_repositories__) @@ -27,18 +24,6 @@ class ECR: self.__threading_call__(self.__get_registry_scanning_configuration__) self.__threading_call__(self.__list_tags_for_resource__) - def __get_session__(self): - return self.session - - def __threading_call__(self, call): - threads = [] - for regional_client in self.regional_clients.values(): - threads.append(threading.Thread(target=call, args=(regional_client,))) - for t in threads: - t.start() - for t in threads: - t.join() - def __describe_registries_and_repositories__(self, regional_client): logger.info("ECR - Describing registries and repositories...") regional_registry_repositories = [] diff --git a/prowler/providers/aws/services/ecs/ecs_service.py b/prowler/providers/aws/services/ecs/ecs_service.py index 55c4c169..43c4905b 100644 --- a/prowler/providers/aws/services/ecs/ecs_service.py +++ b/prowler/providers/aws/services/ecs/ecs_service.py @@ -1,4 +1,3 @@ -import threading from re import sub from typing import Optional @@ -6,32 +5,18 @@ from pydantic import BaseModel from prowler.lib.logger import logger from prowler.lib.scan_filters.scan_filters import is_resource_filtered -from prowler.providers.aws.aws_provider import generate_regional_clients +from prowler.providers.aws.lib.service.service import AWSService ################################ ECS -class ECS: +class ECS(AWSService): def __init__(self, audit_info): - self.service = "ecs" - self.session = audit_info.audit_session - self.audit_resources = audit_info.audit_resources - self.regional_clients = generate_regional_clients(self.service, audit_info) + # Call AWSService's __init__ + super().__init__(__class__.__name__, audit_info) self.task_definitions = [] self.__threading_call__(self.__list_task_definitions__) self.__describe_task_definition__() - def __get_session__(self): - return self.session - - def __threading_call__(self, call): - threads = [] - for regional_client in self.regional_clients.values(): - threads.append(threading.Thread(target=call, args=(regional_client,))) - for t in threads: - t.start() - for t in threads: - t.join() - def __list_task_definitions__(self, regional_client): logger.info("ECS - Listing Task Definitions...") try: diff --git a/prowler/providers/aws/services/efs/efs_service.py b/prowler/providers/aws/services/efs/efs_service.py index 9fe66554..f4d9104d 100644 --- a/prowler/providers/aws/services/efs/efs_service.py +++ b/prowler/providers/aws/services/efs/efs_service.py @@ -1,5 +1,4 @@ import json -import threading from typing import Optional from botocore.client import ClientError @@ -7,34 +6,18 @@ from pydantic import BaseModel from prowler.lib.logger import logger from prowler.lib.scan_filters.scan_filters import is_resource_filtered -from prowler.providers.aws.aws_provider import generate_regional_clients +from prowler.providers.aws.lib.service.service import AWSService ################### EFS -class EFS: +class EFS(AWSService): def __init__(self, audit_info): - self.service = "efs" - self.session = audit_info.audit_session - self.audit_resources = audit_info.audit_resources - self.audited_account = audit_info.audited_account - self.audited_partition = audit_info.audited_partition - self.regional_clients = generate_regional_clients(self.service, audit_info) + # Call AWSService's __init__ + super().__init__(__class__.__name__, audit_info) self.filesystems = [] self.__threading_call__(self.__describe_file_systems__) self.__describe_file_system_policies__() - def __get_session__(self): - return self.session - - def __threading_call__(self, call): - threads = [] - for regional_client in self.regional_clients.values(): - threads.append(threading.Thread(target=call, args=(regional_client,))) - for t in threads: - t.start() - for t in threads: - t.join() - def __describe_file_systems__(self, regional_client): logger.info("EFS - Describing file systems...") try: diff --git a/prowler/providers/aws/services/eks/eks_service.py b/prowler/providers/aws/services/eks/eks_service.py index ac501002..f5f9cdf5 100644 --- a/prowler/providers/aws/services/eks/eks_service.py +++ b/prowler/providers/aws/services/eks/eks_service.py @@ -1,4 +1,3 @@ -import threading from typing import Optional from pydantic import BaseModel @@ -6,33 +5,19 @@ from pydantic import BaseModel from prowler.lib.logger import logger from prowler.lib.scan_filters.scan_filters import is_resource_filtered from prowler.providers.aws.aws_provider import generate_regional_clients +from prowler.providers.aws.lib.service.service import AWSService ################################ EKS -class EKS: +class EKS(AWSService): def __init__(self, audit_info): - self.service = "eks" - self.session = audit_info.audit_session - self.audit_resources = audit_info.audit_resources - self.audited_partition = audit_info.audited_partition - self.audited_account = audit_info.audited_account + # Call AWSService's __init__ + super().__init__(__class__.__name__, audit_info) self.regional_clients = generate_regional_clients(self.service, audit_info) self.clusters = [] self.__threading_call__(self.__list_clusters__) self.__describe_cluster__(self.regional_clients) - def __get_session__(self): - return self.session - - def __threading_call__(self, call): - threads = [] - for regional_client in self.regional_clients.values(): - threads.append(threading.Thread(target=call, args=(regional_client,))) - for t in threads: - t.start() - for t in threads: - t.join() - def __list_clusters__(self, regional_client): logger.info("EKS listing clusters...") try: diff --git a/prowler/providers/aws/services/elb/elb_service.py b/prowler/providers/aws/services/elb/elb_service.py index 5bf355e3..31de0c4f 100644 --- a/prowler/providers/aws/services/elb/elb_service.py +++ b/prowler/providers/aws/services/elb/elb_service.py @@ -1,39 +1,22 @@ -import threading from typing import Optional from pydantic import BaseModel from prowler.lib.logger import logger from prowler.lib.scan_filters.scan_filters import is_resource_filtered -from prowler.providers.aws.aws_provider import generate_regional_clients +from prowler.providers.aws.lib.service.service import AWSService ################### ELB -class ELB: +class ELB(AWSService): def __init__(self, audit_info): - self.service = "elb" - self.session = audit_info.audit_session - self.audited_partition = audit_info.audited_partition - self.audited_account = audit_info.audited_account - self.audit_resources = audit_info.audit_resources - self.regional_clients = generate_regional_clients(self.service, audit_info) + # Call AWSService's __init__ + super().__init__(__class__.__name__, audit_info) self.loadbalancers = [] self.__threading_call__(self.__describe_load_balancers__) self.__threading_call__(self.__describe_load_balancer_attributes__) self.__describe_tags__() - def __get_session__(self): - return self.session - - def __threading_call__(self, call): - threads = [] - for regional_client in self.regional_clients.values(): - threads.append(threading.Thread(target=call, args=(regional_client,))) - for t in threads: - t.start() - for t in threads: - t.join() - def __describe_load_balancers__(self, regional_client): logger.info("ELB - Describing load balancers...") try: diff --git a/prowler/providers/aws/services/elbv2/elbv2_service.py b/prowler/providers/aws/services/elbv2/elbv2_service.py index 934c5a67..28defe88 100644 --- a/prowler/providers/aws/services/elbv2/elbv2_service.py +++ b/prowler/providers/aws/services/elbv2/elbv2_service.py @@ -1,4 +1,3 @@ -import threading from typing import Optional from botocore.client import ClientError @@ -6,16 +5,14 @@ from pydantic import BaseModel from prowler.lib.logger import logger from prowler.lib.scan_filters.scan_filters import is_resource_filtered -from prowler.providers.aws.aws_provider import generate_regional_clients +from prowler.providers.aws.lib.service.service import AWSService ################### ELBv2 -class ELBv2: +class ELBv2(AWSService): def __init__(self, audit_info): - self.service = "elbv2" - self.session = audit_info.audit_session - self.audit_resources = audit_info.audit_resources - self.regional_clients = generate_regional_clients(self.service, audit_info) + # Call AWSService's __init__ + super().__init__(__class__.__name__, audit_info) self.loadbalancersv2 = [] self.__threading_call__(self.__describe_load_balancers__) self.listeners = [] @@ -24,18 +21,6 @@ class ELBv2: self.__threading_call__(self.__describe_rules__) self.__describe_tags__() - def __get_session__(self): - return self.session - - def __threading_call__(self, call): - threads = [] - for regional_client in self.regional_clients.values(): - threads.append(threading.Thread(target=call, args=(regional_client,))) - for t in threads: - t.start() - for t in threads: - t.join() - def __describe_load_balancers__(self, regional_client): logger.info("ELBv2 - Describing load balancers...") try: diff --git a/prowler/providers/aws/services/emr/emr_service.py b/prowler/providers/aws/services/emr/emr_service.py index 6b5f579d..897b7bcf 100644 --- a/prowler/providers/aws/services/emr/emr_service.py +++ b/prowler/providers/aws/services/emr/emr_service.py @@ -1,4 +1,3 @@ -import threading from enum import Enum from typing import Optional @@ -7,37 +6,20 @@ from pydantic import BaseModel from prowler.lib.logger import logger from prowler.lib.scan_filters.scan_filters import is_resource_filtered -from prowler.providers.aws.aws_provider import generate_regional_clients +from prowler.providers.aws.lib.service.service import AWSService ################## EMR -class EMR: +class EMR(AWSService): def __init__(self, audit_info): - self.service = "emr" - self.session = audit_info.audit_session - self.audited_account = audit_info.audited_account - self.audited_partition = audit_info.audited_partition - self.audited_account_arn = audit_info.audited_account_arn - self.audit_resources = audit_info.audit_resources - self.regional_clients = generate_regional_clients(self.service, audit_info) + # Call AWSService's __init__ + super().__init__(__class__.__name__, audit_info) self.clusters = {} self.block_public_access_configuration = {} self.__threading_call__(self.__list_clusters__) self.__threading_call__(self.__describe_cluster__) self.__threading_call__(self.__get_block_public_access_configuration__) - def __get_session__(self): - return self.session - - def __threading_call__(self, call): - threads = [] - for regional_client in self.regional_clients.values(): - threads.append(threading.Thread(target=call, args=(regional_client,))) - for t in threads: - t.start() - for t in threads: - t.join() - def __list_clusters__(self, regional_client): logger.info("EMR - Listing Clusters...") try: diff --git a/prowler/providers/aws/services/fms/fms_service.py b/prowler/providers/aws/services/fms/fms_service.py index dc3e8daf..6c781a67 100644 --- a/prowler/providers/aws/services/fms/fms_service.py +++ b/prowler/providers/aws/services/fms/fms_service.py @@ -3,23 +3,16 @@ from pydantic import BaseModel from prowler.lib.logger import logger from prowler.lib.scan_filters.scan_filters import is_resource_filtered -from prowler.providers.aws.aws_provider import generate_regional_clients +from prowler.providers.aws.lib.service.service import AWSService + +# from prowler.providers.aws.aws_provider import generate_regional_clients ################## FMS -class FMS: +class FMS(AWSService): def __init__(self, audit_info): - self.service = "fms" - self.session = audit_info.audit_session - self.audited_account = audit_info.audited_account - self.audited_partition = audit_info.audited_partition - self.audited_account_arn = audit_info.audited_account_arn - self.audit_resources = audit_info.audit_resources - global_client = generate_regional_clients( - self.service, audit_info, global_service=True - ) - self.client = list(global_client.values())[0] - self.region = self.client.region + # # Call AWSService's __init__ + super().__init__(__class__.__name__, audit_info, global_service=True) self.fms_admin_account = True self.fms_policies = [] self.__list_policies__() diff --git a/prowler/providers/aws/services/glacier/glacier_service.py b/prowler/providers/aws/services/glacier/glacier_service.py index 79cdad84..a74e3dbc 100644 --- a/prowler/providers/aws/services/glacier/glacier_service.py +++ b/prowler/providers/aws/services/glacier/glacier_service.py @@ -1,5 +1,4 @@ import json -import threading from typing import Optional from botocore.client import ClientError @@ -7,34 +6,19 @@ from pydantic import BaseModel from prowler.lib.logger import logger from prowler.lib.scan_filters.scan_filters import is_resource_filtered -from prowler.providers.aws.aws_provider import generate_regional_clients +from prowler.providers.aws.lib.service.service import AWSService ################## Glacier -class Glacier: +class Glacier(AWSService): def __init__(self, audit_info): - self.service = "glacier" - self.session = audit_info.audit_session - self.audited_account = audit_info.audited_account - self.audit_resources = audit_info.audit_resources - self.regional_clients = generate_regional_clients(self.service, audit_info) + # Call AWSService's __init__ + super().__init__(__class__.__name__, audit_info) self.vaults = {} self.__threading_call__(self.__list_vaults__) self.__threading_call__(self.__get_vault_access_policy__) self.__list_tags_for_vault__() - def __get_session__(self): - return self.session - - def __threading_call__(self, call): - threads = [] - for regional_client in self.regional_clients.values(): - threads.append(threading.Thread(target=call, args=(regional_client,))) - for t in threads: - t.start() - for t in threads: - t.join() - def __list_vaults__(self, regional_client): logger.info("Glacier - Listing Vaults...") try: diff --git a/prowler/providers/aws/services/globalaccelerator/globalaccelerator_service.py b/prowler/providers/aws/services/globalaccelerator/globalaccelerator_service.py index fe1dfad5..6e79eaaf 100644 --- a/prowler/providers/aws/services/globalaccelerator/globalaccelerator_service.py +++ b/prowler/providers/aws/services/globalaccelerator/globalaccelerator_service.py @@ -2,15 +2,14 @@ from pydantic import BaseModel from prowler.lib.logger import logger from prowler.lib.scan_filters.scan_filters import is_resource_filtered +from prowler.providers.aws.lib.service.service import AWSService ################### GlobalAccelerator -class GlobalAccelerator: +class GlobalAccelerator(AWSService): def __init__(self, audit_info): - self.service = "globalaccelerator" - self.session = audit_info.audit_session - self.audited_account = audit_info.audited_account - self.audit_resources = audit_info.audit_resources + # Call AWSService's __init__ + super().__init__(__class__.__name__, audit_info) self.accelerators = {} if audit_info.audited_partition == "aws": # Global Accelerator is a global service that supports endpoints in multiple AWS Regions @@ -20,9 +19,6 @@ class GlobalAccelerator: self.client = self.session.client(self.service, self.region) self.__list_accelerators__() - def __get_session__(self): - return self.session - def __list_accelerators__(self): logger.info("GlobalAccelerator - Listing Accelerators...") try: diff --git a/prowler/providers/aws/services/glue/glue_service.py b/prowler/providers/aws/services/glue/glue_service.py index eaa51ea2..05cd8a53 100644 --- a/prowler/providers/aws/services/glue/glue_service.py +++ b/prowler/providers/aws/services/glue/glue_service.py @@ -1,23 +1,17 @@ -import threading from typing import Optional from pydantic import BaseModel from prowler.lib.logger import logger from prowler.lib.scan_filters.scan_filters import is_resource_filtered -from prowler.providers.aws.aws_provider import generate_regional_clients +from prowler.providers.aws.lib.service.service import AWSService ################## Glue -class Glue: +class Glue(AWSService): def __init__(self, audit_info): - self.service = "glue" - self.session = audit_info.audit_session - self.audited_account = audit_info.audited_account - self.audit_resources = audit_info.audit_resources - self.audited_partition = audit_info.audited_partition - self.audited_account_arn = audit_info.audited_account_arn - self.regional_clients = generate_regional_clients(self.service, audit_info) + # Call AWSService's __init__ + super().__init__(__class__.__name__, audit_info) self.connections = [] self.__threading_call__(self.__get_connections__) self.tables = [] @@ -31,18 +25,6 @@ class Glue: self.jobs = [] self.__threading_call__(self.__get_jobs__) - def __get_session__(self): - return self.session - - def __threading_call__(self, call): - threads = [] - for regional_client in self.regional_clients.values(): - threads.append(threading.Thread(target=call, args=(regional_client,))) - for t in threads: - t.start() - for t in threads: - t.join() - def __get_connections__(self, regional_client): logger.info("Glue - Getting connections...") try: diff --git a/prowler/providers/aws/services/guardduty/guardduty_service.py b/prowler/providers/aws/services/guardduty/guardduty_service.py index 99fd9aa5..ef434698 100644 --- a/prowler/providers/aws/services/guardduty/guardduty_service.py +++ b/prowler/providers/aws/services/guardduty/guardduty_service.py @@ -1,22 +1,17 @@ -import threading from typing import Optional from pydantic import BaseModel from prowler.lib.logger import logger from prowler.lib.scan_filters.scan_filters import is_resource_filtered -from prowler.providers.aws.aws_provider import generate_regional_clients +from prowler.providers.aws.lib.service.service import AWSService ################################ GuardDuty -class GuardDuty: +class GuardDuty(AWSService): def __init__(self, audit_info): - self.service = "guardduty" - self.session = audit_info.audit_session - self.audited_account = audit_info.audited_account - self.audit_resources = audit_info.audit_resources - self.audited_partition = audit_info.audited_partition - self.regional_clients = generate_regional_clients(self.service, audit_info) + # Call AWSService's __init__ + super().__init__(__class__.__name__, audit_info) self.detectors = [] self.__threading_call__(self.__list_detectors__) self.__get_detector__() @@ -25,18 +20,6 @@ class GuardDuty: self.__get_administrator_account__() self.__list_tags_for_resource__() - def __get_session__(self): - return self.session - - def __threading_call__(self, call): - threads = [] - for regional_client in self.regional_clients.values(): - threads.append(threading.Thread(target=call, args=(regional_client,))) - for t in threads: - t.start() - for t in threads: - t.join() - def __list_detectors__(self, regional_client): logger.info("GuardDuty - listing detectors...") try: diff --git a/prowler/providers/aws/services/iam/iam_password_policy_expires_passwords_within_90_days_or_less/iam_password_policy_expires_passwords_within_90_days_or_less.py b/prowler/providers/aws/services/iam/iam_password_policy_expires_passwords_within_90_days_or_less/iam_password_policy_expires_passwords_within_90_days_or_less.py index 9e1aa14e..ca3f938c 100644 --- a/prowler/providers/aws/services/iam/iam_password_policy_expires_passwords_within_90_days_or_less/iam_password_policy_expires_passwords_within_90_days_or_less.py +++ b/prowler/providers/aws/services/iam/iam_password_policy_expires_passwords_within_90_days_or_less/iam_password_policy_expires_passwords_within_90_days_or_less.py @@ -7,8 +7,8 @@ class iam_password_policy_expires_passwords_within_90_days_or_less(Check): findings = [] report = Check_Report_AWS(self.metadata()) report.region = iam_client.region - report.resource_arn = iam_client.account_arn - report.resource_id = iam_client.account + report.resource_arn = iam_client.audited_account_arn + report.resource_id = iam_client.audited_account # Check if password policy exists if iam_client.password_policy: # Check if password policy expiration exists diff --git a/prowler/providers/aws/services/iam/iam_password_policy_lowercase/iam_password_policy_lowercase.py b/prowler/providers/aws/services/iam/iam_password_policy_lowercase/iam_password_policy_lowercase.py index 4a1ee576..154e9447 100644 --- a/prowler/providers/aws/services/iam/iam_password_policy_lowercase/iam_password_policy_lowercase.py +++ b/prowler/providers/aws/services/iam/iam_password_policy_lowercase/iam_password_policy_lowercase.py @@ -7,8 +7,8 @@ class iam_password_policy_lowercase(Check): findings = [] report = Check_Report_AWS(self.metadata()) report.region = iam_client.region - report.resource_arn = iam_client.account_arn - report.resource_id = iam_client.account + report.resource_arn = iam_client.audited_account_arn + report.resource_id = iam_client.audited_account # Check if password policy exists if iam_client.password_policy: # Check if lowercase flag is set diff --git a/prowler/providers/aws/services/iam/iam_password_policy_minimum_length_14/iam_password_policy_minimum_length_14.py b/prowler/providers/aws/services/iam/iam_password_policy_minimum_length_14/iam_password_policy_minimum_length_14.py index 8561e3d6..81c84731 100644 --- a/prowler/providers/aws/services/iam/iam_password_policy_minimum_length_14/iam_password_policy_minimum_length_14.py +++ b/prowler/providers/aws/services/iam/iam_password_policy_minimum_length_14/iam_password_policy_minimum_length_14.py @@ -7,8 +7,8 @@ class iam_password_policy_minimum_length_14(Check): findings = [] report = Check_Report_AWS(self.metadata()) report.region = iam_client.region - report.resource_arn = iam_client.account_arn - report.resource_id = iam_client.account + report.resource_arn = iam_client.audited_account_arn + report.resource_id = iam_client.audited_account # Check if password policy exists if iam_client.password_policy: # Check password policy length diff --git a/prowler/providers/aws/services/iam/iam_password_policy_number/iam_password_policy_number.py b/prowler/providers/aws/services/iam/iam_password_policy_number/iam_password_policy_number.py index 9d355e9b..097a7ddf 100644 --- a/prowler/providers/aws/services/iam/iam_password_policy_number/iam_password_policy_number.py +++ b/prowler/providers/aws/services/iam/iam_password_policy_number/iam_password_policy_number.py @@ -7,8 +7,8 @@ class iam_password_policy_number(Check): findings = [] report = Check_Report_AWS(self.metadata()) report.region = iam_client.region - report.resource_arn = iam_client.account_arn - report.resource_id = iam_client.account + report.resource_arn = iam_client.audited_account_arn + report.resource_id = iam_client.audited_account # Check if password policy exists if iam_client.password_policy: # Check if number flag is set diff --git a/prowler/providers/aws/services/iam/iam_password_policy_reuse_24/iam_password_policy_reuse_24.py b/prowler/providers/aws/services/iam/iam_password_policy_reuse_24/iam_password_policy_reuse_24.py index b248201f..ac4ac283 100644 --- a/prowler/providers/aws/services/iam/iam_password_policy_reuse_24/iam_password_policy_reuse_24.py +++ b/prowler/providers/aws/services/iam/iam_password_policy_reuse_24/iam_password_policy_reuse_24.py @@ -7,8 +7,8 @@ class iam_password_policy_reuse_24(Check): findings = [] report = Check_Report_AWS(self.metadata()) report.region = iam_client.region - report.resource_arn = iam_client.account_arn - report.resource_id = iam_client.account + report.resource_arn = iam_client.audited_account_arn + report.resource_id = iam_client.audited_account # Check if password policy exists if iam_client.password_policy: # Check if reuse prevention flag is set diff --git a/prowler/providers/aws/services/iam/iam_password_policy_symbol/iam_password_policy_symbol.py b/prowler/providers/aws/services/iam/iam_password_policy_symbol/iam_password_policy_symbol.py index a2c895c1..7be39b2c 100644 --- a/prowler/providers/aws/services/iam/iam_password_policy_symbol/iam_password_policy_symbol.py +++ b/prowler/providers/aws/services/iam/iam_password_policy_symbol/iam_password_policy_symbol.py @@ -7,8 +7,8 @@ class iam_password_policy_symbol(Check): findings = [] report = Check_Report_AWS(self.metadata()) report.region = iam_client.region - report.resource_arn = iam_client.account_arn - report.resource_id = iam_client.account + report.resource_arn = iam_client.audited_account_arn + report.resource_id = iam_client.audited_account # Check if password policy exists if iam_client.password_policy: # Check if symbol flag is set diff --git a/prowler/providers/aws/services/iam/iam_password_policy_uppercase/iam_password_policy_uppercase.py b/prowler/providers/aws/services/iam/iam_password_policy_uppercase/iam_password_policy_uppercase.py index c986ed52..304b529f 100644 --- a/prowler/providers/aws/services/iam/iam_password_policy_uppercase/iam_password_policy_uppercase.py +++ b/prowler/providers/aws/services/iam/iam_password_policy_uppercase/iam_password_policy_uppercase.py @@ -7,8 +7,8 @@ class iam_password_policy_uppercase(Check): findings = [] report = Check_Report_AWS(self.metadata()) report.region = iam_client.region - report.resource_arn = iam_client.account_arn - report.resource_id = iam_client.account + report.resource_arn = iam_client.audited_account_arn + report.resource_id = iam_client.audited_account # Check if password policy exists if iam_client.password_policy: # Check if uppercase flag is set diff --git a/prowler/providers/aws/services/iam/iam_role_cross_account_readonlyaccess_policy/iam_role_cross_account_readonlyaccess_policy.py b/prowler/providers/aws/services/iam/iam_role_cross_account_readonlyaccess_policy/iam_role_cross_account_readonlyaccess_policy.py index 2c053e67..ecc12885 100644 --- a/prowler/providers/aws/services/iam/iam_role_cross_account_readonlyaccess_policy/iam_role_cross_account_readonlyaccess_policy.py +++ b/prowler/providers/aws/services/iam/iam_role_cross_account_readonlyaccess_policy/iam_role_cross_account_readonlyaccess_policy.py @@ -34,7 +34,7 @@ class iam_role_cross_account_readonlyaccess_policy(Check): "AWS" ]: if ( - iam_client.account + iam_client.audited_account not in aws_account or "*" == aws_account ): @@ -42,7 +42,7 @@ class iam_role_cross_account_readonlyaccess_policy(Check): break else: if ( - iam_client.account + iam_client.audited_account not in statement["Principal"]["AWS"] or "*" == statement["Principal"]["AWS"] ): @@ -58,14 +58,15 @@ class iam_role_cross_account_readonlyaccess_policy(Check): if type(statement["Principal"]["AWS"]) == list: for aws_account in statement["Principal"]["AWS"]: if ( - iam_client.account not in aws_account + iam_client.audited_account + not in aws_account or "*" == aws_account ): cross_account_access = True break else: if ( - iam_client.account + iam_client.audited_account not in statement["Principal"]["AWS"] or "*" == statement["Principal"]["AWS"] ): diff --git a/prowler/providers/aws/services/iam/iam_role_cross_service_confused_deputy_prevention/iam_role_cross_service_confused_deputy_prevention.py b/prowler/providers/aws/services/iam/iam_role_cross_service_confused_deputy_prevention/iam_role_cross_service_confused_deputy_prevention.py index dc0ce226..053910eb 100644 --- a/prowler/providers/aws/services/iam/iam_role_cross_service_confused_deputy_prevention/iam_role_cross_service_confused_deputy_prevention.py +++ b/prowler/providers/aws/services/iam/iam_role_cross_service_confused_deputy_prevention/iam_role_cross_service_confused_deputy_prevention.py @@ -32,7 +32,7 @@ class iam_role_cross_service_confused_deputy_prevention(Check): "StringEquals" in statement["Condition"] and "aws:SourceAccount" in statement["Condition"]["StringEquals"] - and iam_client.account + and iam_client.audited_account in str( statement["Condition"]["StringEquals"][ "aws:SourceAccount" @@ -43,7 +43,7 @@ class iam_role_cross_service_confused_deputy_prevention(Check): "StringLike" in statement["Condition"] and "aws:SourceAccount" in statement["Condition"]["StringLike"] - and iam_client.account + and iam_client.audited_account in str( statement["Condition"]["StringLike"][ "aws:SourceAccount" @@ -54,7 +54,7 @@ class iam_role_cross_service_confused_deputy_prevention(Check): "ArnEquals" in statement["Condition"] and "aws:SourceArn" in statement["Condition"]["ArnEquals"] - and iam_client.account + and iam_client.audited_account in str( statement["Condition"]["ArnEquals"]["aws:SourceArn"] ) @@ -62,7 +62,7 @@ class iam_role_cross_service_confused_deputy_prevention(Check): or ( "ArnLike" in statement["Condition"] and "aws:SourceArn" in statement["Condition"]["ArnLike"] - and iam_client.account + and iam_client.audited_account in str( statement["Condition"]["ArnLike"]["aws:SourceArn"] ) diff --git a/prowler/providers/aws/services/iam/iam_root_hardware_mfa_enabled/iam_root_hardware_mfa_enabled.py b/prowler/providers/aws/services/iam/iam_root_hardware_mfa_enabled/iam_root_hardware_mfa_enabled.py index 44e73f21..f7483180 100644 --- a/prowler/providers/aws/services/iam/iam_root_hardware_mfa_enabled/iam_root_hardware_mfa_enabled.py +++ b/prowler/providers/aws/services/iam/iam_root_hardware_mfa_enabled/iam_root_hardware_mfa_enabled.py @@ -6,13 +6,13 @@ class iam_root_hardware_mfa_enabled(Check): def execute(self) -> Check_Report_AWS: findings = [] # This check is only avaible in Commercial Partition - if iam_client.partition == "aws": + if iam_client.audited_partition == "aws": if iam_client.account_summary: virtual_mfa = False report = Check_Report_AWS(self.metadata()) report.region = iam_client.region report.resource_id = "" - report.resource_arn = iam_client.account_arn + report.resource_arn = iam_client.audited_account_arn if iam_client.account_summary["SummaryMap"]["AccountMFAEnabled"] > 0: virtual_mfas = iam_client.virtual_mfa_devices diff --git a/prowler/providers/aws/services/iam/iam_service.py b/prowler/providers/aws/services/iam/iam_service.py index 00317615..4a2027a7 100644 --- a/prowler/providers/aws/services/iam/iam_service.py +++ b/prowler/providers/aws/services/iam/iam_service.py @@ -7,7 +7,7 @@ from pydantic import BaseModel from prowler.lib.logger import logger from prowler.lib.scan_filters.scan_filters import is_resource_filtered -from prowler.providers.aws.aws_provider import generate_regional_clients +from prowler.providers.aws.lib.service.service import AWSService def is_service_role(role): @@ -47,20 +47,10 @@ def is_service_role(role): ################## IAM -class IAM: +class IAM(AWSService): def __init__(self, audit_info): - self.service = "iam" - self.session = audit_info.audit_session - self.account = audit_info.audited_account - self.audit_resources = audit_info.audit_resources - self.partition = audit_info.audited_partition - self.account_arn = audit_info.audited_account_arn - self.client = self.session.client(self.service) - global_client = generate_regional_clients( - self.service, audit_info, global_service=True - ) - self.client = list(global_client.values())[0] - self.region = self.client.region + # Call AWSService's __init__ + super().__init__(__class__.__name__, audit_info) self.users = self.__get_users__() self.roles = self.__get_roles__() self.account_summary = self.__get_account_summary__() @@ -96,9 +86,6 @@ class IAM: def __get_client__(self): return self.client - def __get_session__(self): - return self.session - def __get_roles__(self): logger.info("IAM - List Roles...") try: diff --git a/prowler/providers/aws/services/inspector2/inspector2_service.py b/prowler/providers/aws/services/inspector2/inspector2_service.py index c61958e7..b984e40f 100644 --- a/prowler/providers/aws/services/inspector2/inspector2_service.py +++ b/prowler/providers/aws/services/inspector2/inspector2_service.py @@ -1,42 +1,19 @@ -import threading - from pydantic import BaseModel from prowler.lib.logger import logger from prowler.lib.scan_filters.scan_filters import is_resource_filtered -from prowler.providers.aws.aws_provider import ( - generate_regional_clients, - get_default_region, -) +from prowler.providers.aws.lib.service.service import AWSService ################################ Inspector2 -class Inspector2: +class Inspector2(AWSService): def __init__(self, audit_info): - self.service = "inspector2" - self.session = audit_info.audit_session - self.audited_account = audit_info.audited_account - self.audited_partition = audit_info.audited_partition - self.audited_account_arn = audit_info.audited_account_arn - self.audit_resources = audit_info.audit_resources - self.regional_clients = generate_regional_clients(self.service, audit_info) - self.region = get_default_region(self.service, audit_info) + # Call AWSService's __init__ + super().__init__(__class__.__name__, audit_info) self.inspectors = [] self.__threading_call__(self.__batch_get_account_status__) self.__list_findings__() - def __get_session__(self): - return self.session - - def __threading_call__(self, call): - threads = [] - for regional_client in self.regional_clients.values(): - threads.append(threading.Thread(target=call, args=(regional_client,))) - for t in threads: - t.start() - for t in threads: - t.join() - def __batch_get_account_status__(self, regional_client): # We use this function to check if inspector2 is enabled logger.info("Inspector2 - batch_get_account_status...") diff --git a/prowler/providers/aws/services/kms/kms_service.py b/prowler/providers/aws/services/kms/kms_service.py index 816e8b5b..4dc7fafb 100644 --- a/prowler/providers/aws/services/kms/kms_service.py +++ b/prowler/providers/aws/services/kms/kms_service.py @@ -1,22 +1,18 @@ import json -import threading from typing import Optional from pydantic import BaseModel from prowler.lib.logger import logger from prowler.lib.scan_filters.scan_filters import is_resource_filtered -from prowler.providers.aws.aws_provider import generate_regional_clients +from prowler.providers.aws.lib.service.service import AWSService ################## KMS -class KMS: +class KMS(AWSService): def __init__(self, audit_info): - self.service = "kms" - self.session = audit_info.audit_session - self.audited_account = audit_info.audited_account - self.audit_resources = audit_info.audit_resources - self.regional_clients = generate_regional_clients(self.service, audit_info) + # Call AWSService's __init__ + super().__init__(__class__.__name__, audit_info) self.keys = [] self.__threading_call__(self.__list_keys__) if self.keys: @@ -25,18 +21,6 @@ class KMS: self.__get_key_policy__() self.__list_resource_tags__() - def __get_session__(self): - return self.session - - def __threading_call__(self, call): - threads = [] - for regional_client in self.regional_clients.values(): - threads.append(threading.Thread(target=call, args=(regional_client,))) - for t in threads: - t.start() - for t in threads: - t.join() - def __list_keys__(self, regional_client): logger.info("KMS - Listing Keys...") try: diff --git a/prowler/providers/aws/services/macie/macie_service.py b/prowler/providers/aws/services/macie/macie_service.py index 0ee185f3..4831aaf8 100644 --- a/prowler/providers/aws/services/macie/macie_service.py +++ b/prowler/providers/aws/services/macie/macie_service.py @@ -1,35 +1,17 @@ -import threading - from pydantic import BaseModel from prowler.lib.logger import logger -from prowler.providers.aws.aws_provider import generate_regional_clients +from prowler.providers.aws.lib.service.service import AWSService ################## Macie -class Macie: +class Macie(AWSService): def __init__(self, audit_info): - self.service = "macie2" - self.session = audit_info.audit_session - self.audited_account = audit_info.audited_account - self.audited_partition = audit_info.audited_partition - self.audited_account_arn = audit_info.audited_account_arn - self.regional_clients = generate_regional_clients(self.service, audit_info) + # Call AWSService's __init__ + super().__init__("macie2", audit_info) self.sessions = [] self.__threading_call__(self.__get_macie_session__) - def __get_session__(self): - return self.session - - def __threading_call__(self, call): - threads = [] - for regional_client in self.regional_clients.values(): - threads.append(threading.Thread(target=call, args=(regional_client,))) - for t in threads: - t.start() - for t in threads: - t.join() - def __get_macie_session__(self, regional_client): logger.info("Macie - Get Macie Session...") try: diff --git a/prowler/providers/aws/services/networkfirewall/networkfirewall_service.py b/prowler/providers/aws/services/networkfirewall/networkfirewall_service.py index ca441462..9e32bf2b 100644 --- a/prowler/providers/aws/services/networkfirewall/networkfirewall_service.py +++ b/prowler/providers/aws/services/networkfirewall/networkfirewall_service.py @@ -1,41 +1,19 @@ -import threading - from pydantic import BaseModel from prowler.lib.logger import logger from prowler.lib.scan_filters.scan_filters import is_resource_filtered -from prowler.providers.aws.aws_provider import ( - generate_regional_clients, - get_default_region, -) +from prowler.providers.aws.lib.service.service import AWSService ################## NetworkFirewall -class NetworkFirewall: +class NetworkFirewall(AWSService): def __init__(self, audit_info): - self.service = "network-firewall" - self.session = audit_info.audit_session - self.audited_account = audit_info.audited_account - self.audited_partition = audit_info.audited_partition - self.audit_resources = audit_info.audit_resources - self.regional_clients = generate_regional_clients(self.service, audit_info) - self.region = get_default_region(self.service, audit_info) + # Call AWSService's __init__ + super().__init__("network-firewall", audit_info) self.network_firewalls = [] self.__threading_call__(self.__list_firewalls__) self.__describe_firewall__() - def __get_session__(self): - return self.session - - def __threading_call__(self, call): - threads = [] - for regional_client in self.regional_clients.values(): - threads.append(threading.Thread(target=call, args=(regional_client,))) - for t in threads: - t.start() - for t in threads: - t.join() - def __list_firewalls__(self, regional_client): logger.info("Network Firewall - Listing Network Firewalls...") try: diff --git a/prowler/providers/aws/services/opensearch/opensearch_service.py b/prowler/providers/aws/services/opensearch/opensearch_service.py index 39f5bcab..609589c1 100644 --- a/prowler/providers/aws/services/opensearch/opensearch_service.py +++ b/prowler/providers/aws/services/opensearch/opensearch_service.py @@ -1,4 +1,3 @@ -import threading from json import JSONDecodeError, loads from typing import Optional @@ -6,36 +5,20 @@ from pydantic import BaseModel from prowler.lib.logger import logger from prowler.lib.scan_filters.scan_filters import is_resource_filtered -from prowler.providers.aws.aws_provider import generate_regional_clients +from prowler.providers.aws.lib.service.service import AWSService ################################ OpenSearch -class OpenSearchService: +class OpenSearchService(AWSService): def __init__(self, audit_info): - self.service = "opensearch" - self.session = audit_info.audit_session - self.audit_resources = audit_info.audit_resources - self.audited_partition = audit_info.audited_partition - self.audited_account = audit_info.audited_account - self.regional_clients = generate_regional_clients(self.service, audit_info) + # Call AWSService's __init__ + super().__init__("opensearch", audit_info) self.opensearch_domains = [] self.__threading_call__(self.__list_domain_names__) self.__describe_domain_config__(self.regional_clients) self.__describe_domain__(self.regional_clients) self.__list_tags__() - def __get_session__(self): - return self.session - - def __threading_call__(self, call): - threads = [] - for regional_client in self.regional_clients.values(): - threads.append(threading.Thread(target=call, args=(regional_client,))) - for t in threads: - t.start() - for t in threads: - t.join() - def __list_domain_names__(self, regional_client): logger.info("OpenSearch - listing domain names...") try: diff --git a/prowler/providers/aws/services/organizations/organizations_service.py b/prowler/providers/aws/services/organizations/organizations_service.py index afc020e1..a2e1e729 100644 --- a/prowler/providers/aws/services/organizations/organizations_service.py +++ b/prowler/providers/aws/services/organizations/organizations_service.py @@ -6,7 +6,7 @@ from pydantic import BaseModel from prowler.lib.logger import logger from prowler.lib.scan_filters.scan_filters import is_resource_filtered -from prowler.providers.aws.aws_provider import generate_regional_clients +from prowler.providers.aws.lib.service.service import AWSService available_organizations_policies = [ "SERVICE_CONTROL_POLICY", @@ -17,17 +17,10 @@ available_organizations_policies = [ ################## Organizations -class Organizations: +class Organizations(AWSService): def __init__(self, audit_info): - self.service = "organizations" - self.session = audit_info.audit_session - self.audited_account = audit_info.audited_account - self.audit_resources = audit_info.audit_resources - global_client = generate_regional_clients( - self.service, audit_info, global_service=True - ) - self.client = list(global_client.values())[0] - self.region = self.client.region + # Call AWSService's __init__ + super().__init__(__class__.__name__, audit_info) self.organizations = [] self.policies = [] self.delegated_administrators = [] diff --git a/prowler/providers/aws/services/rds/rds_service.py b/prowler/providers/aws/services/rds/rds_service.py index f0383eeb..50e5bcf7 100644 --- a/prowler/providers/aws/services/rds/rds_service.py +++ b/prowler/providers/aws/services/rds/rds_service.py @@ -1,4 +1,3 @@ -import threading from typing import Optional from botocore.client import ClientError @@ -6,18 +5,14 @@ from pydantic import BaseModel from prowler.lib.logger import logger from prowler.lib.scan_filters.scan_filters import is_resource_filtered -from prowler.providers.aws.aws_provider import generate_regional_clients +from prowler.providers.aws.lib.service.service import AWSService ################## RDS -class RDS: +class RDS(AWSService): def __init__(self, audit_info): - self.service = "rds" - self.session = audit_info.audit_session - self.audited_account = audit_info.audited_account - self.audited_partition = audit_info.audited_partition - self.audit_resources = audit_info.audit_resources - self.regional_clients = generate_regional_clients(self.service, audit_info) + # Call AWSService's __init__ + super().__init__(__class__.__name__, audit_info) self.db_instances = [] self.db_clusters = {} self.db_snapshots = [] @@ -32,18 +27,6 @@ class RDS: self.__threading_call__(self.__describe_db_cluster_snapshot_attributes__) self.__threading_call__(self.__describe_db_engine_versions__) - def __get_session__(self): - return self.session - - def __threading_call__(self, call): - threads = [] - for regional_client in self.regional_clients.values(): - threads.append(threading.Thread(target=call, args=(regional_client,))) - for t in threads: - t.start() - for t in threads: - t.join() - def __describe_db_instances__(self, regional_client): logger.info("RDS - Describe Instances...") try: diff --git a/prowler/providers/aws/services/redshift/redshift_service.py b/prowler/providers/aws/services/redshift/redshift_service.py index 82d15555..acfd2b03 100644 --- a/prowler/providers/aws/services/redshift/redshift_service.py +++ b/prowler/providers/aws/services/redshift/redshift_service.py @@ -1,39 +1,22 @@ -import threading from typing import Optional from pydantic import BaseModel from prowler.lib.logger import logger from prowler.lib.scan_filters.scan_filters import is_resource_filtered -from prowler.providers.aws.aws_provider import generate_regional_clients +from prowler.providers.aws.lib.service.service import AWSService ################################ Redshift -class Redshift: +class Redshift(AWSService): def __init__(self, audit_info): - self.service = "redshift" - self.session = audit_info.audit_session - self.audit_resources = audit_info.audit_resources - self.audited_partition = audit_info.audited_partition - self.audited_account = audit_info.audited_account - self.regional_clients = generate_regional_clients(self.service, audit_info) + # Call AWSService's __init__ + super().__init__(__class__.__name__, audit_info) self.clusters = [] self.__threading_call__(self.__describe_clusters__) self.__describe_logging_status__(self.regional_clients) self.__describe_cluster_snapshots__(self.regional_clients) - def __get_session__(self): - return self.session - - def __threading_call__(self, call): - threads = [] - for regional_client in self.regional_clients.values(): - threads.append(threading.Thread(target=call, args=(regional_client,))) - for t in threads: - t.start() - for t in threads: - t.join() - def __describe_clusters__(self, regional_client): logger.info("Redshift - describing clusters...") try: diff --git a/prowler/providers/aws/services/resourceexplorer2/resourceexplorer2_service.py b/prowler/providers/aws/services/resourceexplorer2/resourceexplorer2_service.py index af6cc530..f81b7144 100644 --- a/prowler/providers/aws/services/resourceexplorer2/resourceexplorer2_service.py +++ b/prowler/providers/aws/services/resourceexplorer2/resourceexplorer2_service.py @@ -1,41 +1,18 @@ -import threading - from pydantic import BaseModel from prowler.lib.logger import logger from prowler.lib.scan_filters.scan_filters import is_resource_filtered -from prowler.providers.aws.aws_provider import ( - generate_regional_clients, - get_default_region, -) +from prowler.providers.aws.lib.service.service import AWSService ################################ ResourceExplorer2 -class ResourceExplorer2: +class ResourceExplorer2(AWSService): def __init__(self, audit_info): - self.service = "resource-explorer-2" - self.session = audit_info.audit_session - self.audit_resources = audit_info.audit_resources - self.audited_account = audit_info.audited_account - self.audited_partition = audit_info.audited_partition - self.audited_account_arn = audit_info.audited_account_arn - self.regional_clients = generate_regional_clients(self.service, audit_info) - self.region = get_default_region(self.service, audit_info) + # Call AWSService's __init__ + super().__init__("resource-explorer-2", audit_info) self.indexes = [] self.__threading_call__(self.__list_indexes__) - def __get_session__(self): - return self.session - - def __threading_call__(self, call): - threads = [] - for regional_client in self.regional_clients.values(): - threads.append(threading.Thread(target=call, args=(regional_client,))) - for t in threads: - t.start() - for t in threads: - t.join() - def __list_indexes__(self, regional_client): logger.info("ResourceExplorer - list indexes...") try: diff --git a/prowler/providers/aws/services/route53/route53_service.py b/prowler/providers/aws/services/route53/route53_service.py index a5b8307a..1562c681 100644 --- a/prowler/providers/aws/services/route53/route53_service.py +++ b/prowler/providers/aws/services/route53/route53_service.py @@ -4,31 +4,20 @@ from pydantic import BaseModel from prowler.lib.logger import logger from prowler.lib.scan_filters.scan_filters import is_resource_filtered -from prowler.providers.aws.aws_provider import generate_regional_clients +from prowler.providers.aws.lib.service.service import AWSService ################## Route53 -class Route53: +class Route53(AWSService): def __init__(self, audit_info): - self.service = "route53" - self.session = audit_info.audit_session - self.audited_partition = audit_info.audited_partition - self.audit_resources = audit_info.audit_resources + # Call AWSService's __init__ + super().__init__(__class__.__name__, audit_info, global_service=True) self.hosted_zones = {} self.record_sets = [] - global_client = generate_regional_clients( - self.service, audit_info, global_service=True - ) - if global_client: - self.client = list(global_client.values())[0] - self.region = self.client.region - self.__list_hosted_zones__() - self.__list_query_logging_configs__() - self.__list_tags_for_resource__() - self.__list_resource_record_sets__() - - def __get_session__(self): - return self.session + self.__list_hosted_zones__() + self.__list_query_logging_configs__() + self.__list_tags_for_resource__() + self.__list_resource_record_sets__() def __list_hosted_zones__(self): logger.info("Route53 - Listing Hosting Zones...") @@ -149,11 +138,10 @@ class RecordSet(BaseModel): ################## Route53Domains -class Route53Domains: +class Route53Domains(AWSService): def __init__(self, audit_info): - self.service = "route53domains" - self.session = audit_info.audit_session - self.audited_account = audit_info.audited_account + # Call AWSService's __init__ + super().__init__(__class__.__name__, audit_info) self.domains = {} if audit_info.audited_partition == "aws": # Route53Domains is a global service that supports endpoints in multiple AWS Regions @@ -164,9 +152,6 @@ class Route53Domains: self.__get_domain_detail__() self.__list_tags_for_domain__() - def __get_session__(self): - return self.session - def __list_domains__(self): logger.info("Route53Domains - Listing Domains...") try: diff --git a/prowler/providers/aws/services/s3/s3_service.py b/prowler/providers/aws/services/s3/s3_service.py index be54a378..a38f611c 100644 --- a/prowler/providers/aws/services/s3/s3_service.py +++ b/prowler/providers/aws/services/s3/s3_service.py @@ -7,20 +7,15 @@ from pydantic import BaseModel from prowler.lib.logger import logger from prowler.lib.scan_filters.scan_filters import is_resource_filtered -from prowler.providers.aws.aws_provider import generate_regional_clients +from prowler.providers.aws.lib.service.service import AWSService ################## S3 -class S3: +class S3(AWSService): def __init__(self, audit_info): - self.service = "s3" - self.session = audit_info.audit_session - self.client = self.session.client(self.service) - self.audited_account = audit_info.audited_account - self.audit_resources = audit_info.audit_resources - self.audited_partition = audit_info.audited_partition - self.audited_account_arn = audit_info.audited_account_arn - self.regional_clients = generate_regional_clients(self.service, audit_info) + # Call AWSService's __init__ + super().__init__(__class__.__name__, audit_info) + self.buckets = self.__list_buckets__(audit_info) self.__threading_call__(self.__get_bucket_versioning__) self.__threading_call__(self.__get_bucket_logging__) @@ -32,9 +27,7 @@ class S3: self.__threading_call__(self.__get_object_lock_configuration__) self.__threading_call__(self.__get_bucket_tagging__) - def __get_session__(self): - return self.session - + # In the S3 service we override the "__threading_call__" method because we spawn a process per bucket instead of per region def __threading_call__(self, call): threads = [] for bucket in self.buckets: @@ -345,21 +338,11 @@ class S3: ################## S3Control -class S3Control: +class S3Control(AWSService): def __init__(self, audit_info): - self.service = "s3control" - self.session = audit_info.audit_session - self.audited_account = audit_info.audited_account - global_client = generate_regional_clients( - self.service, audit_info, global_service=True - ) - if global_client: - self.client = list(global_client.values())[0] - self.region = self.client.region - self.account_public_access_block = self.__get_public_access_block__() - - def __get_session__(self): - return self.session + # Call AWSService's __init__ + super().__init__(__class__.__name__, audit_info, global_service=True) + self.account_public_access_block = self.__get_public_access_block__() def __get_public_access_block__(self): logger.info("S3 - Get account public access block...") diff --git a/prowler/providers/aws/services/sagemaker/sagemaker_service.py b/prowler/providers/aws/services/sagemaker/sagemaker_service.py index 5f0a8435..4ebd66d9 100644 --- a/prowler/providers/aws/services/sagemaker/sagemaker_service.py +++ b/prowler/providers/aws/services/sagemaker/sagemaker_service.py @@ -1,4 +1,3 @@ -import threading from typing import Optional from botocore.client import ClientError @@ -6,16 +5,14 @@ from pydantic import BaseModel from prowler.lib.logger import logger from prowler.lib.scan_filters.scan_filters import is_resource_filtered -from prowler.providers.aws.aws_provider import generate_regional_clients +from prowler.providers.aws.lib.service.service import AWSService ################################ SageMaker -class SageMaker: +class SageMaker(AWSService): def __init__(self, audit_info): - self.service = "sagemaker" - self.session = audit_info.audit_session - self.audit_resources = audit_info.audit_resources - self.regional_clients = generate_regional_clients(self.service, audit_info) + # Call AWSService's __init__ + super().__init__(__class__.__name__, audit_info) self.sagemaker_notebook_instances = [] self.sagemaker_models = [] self.sagemaker_training_jobs = [] @@ -27,18 +24,6 @@ class SageMaker: self.__describe_training_job__(self.regional_clients) self.__list_tags_for_resource__() - def __get_session__(self): - return self.session - - def __threading_call__(self, call): - threads = [] - for regional_client in self.regional_clients.values(): - threads.append(threading.Thread(target=call, args=(regional_client,))) - for t in threads: - t.start() - for t in threads: - t.join() - def __list_notebook_instances__(self, regional_client): logger.info("SageMaker - listing notebook instances...") try: diff --git a/prowler/providers/aws/services/secretsmanager/secretsmanager_service.py b/prowler/providers/aws/services/secretsmanager/secretsmanager_service.py index c803ac45..abcaeac7 100644 --- a/prowler/providers/aws/services/secretsmanager/secretsmanager_service.py +++ b/prowler/providers/aws/services/secretsmanager/secretsmanager_service.py @@ -1,36 +1,20 @@ -import threading from typing import Optional from pydantic import BaseModel from prowler.lib.logger import logger from prowler.lib.scan_filters.scan_filters import is_resource_filtered -from prowler.providers.aws.aws_provider import generate_regional_clients +from prowler.providers.aws.lib.service.service import AWSService ################## SecretsManager -class SecretsManager: +class SecretsManager(AWSService): def __init__(self, audit_info): - self.service = "secretsmanager" - self.session = audit_info.audit_session - self.audited_account = audit_info.audited_account - self.audit_resources = audit_info.audit_resources - self.regional_clients = generate_regional_clients(self.service, audit_info) + # Call AWSService's __init__ + super().__init__(__class__.__name__, audit_info) self.secrets = {} self.__threading_call__(self.__list_secrets__) - def __get_session__(self): - return self.session - - def __threading_call__(self, call): - threads = [] - for regional_client in self.regional_clients.values(): - threads.append(threading.Thread(target=call, args=(regional_client,))) - for t in threads: - t.start() - for t in threads: - t.join() - def __list_secrets__(self, regional_client): logger.info("SecretsManager - Listing Secrets...") try: diff --git a/prowler/providers/aws/services/securityhub/securityhub_service.py b/prowler/providers/aws/services/securityhub/securityhub_service.py index 7d43f7c2..ed6d083b 100644 --- a/prowler/providers/aws/services/securityhub/securityhub_service.py +++ b/prowler/providers/aws/services/securityhub/securityhub_service.py @@ -1,36 +1,19 @@ -import threading - from botocore.client import ClientError from pydantic import BaseModel from prowler.lib.logger import logger from prowler.lib.scan_filters.scan_filters import is_resource_filtered -from prowler.providers.aws.aws_provider import generate_regional_clients +from prowler.providers.aws.lib.service.service import AWSService ################## SecurityHub -class SecurityHub: +class SecurityHub(AWSService): def __init__(self, audit_info): - self.service = "securityhub" - self.session = audit_info.audit_session - self.audited_account = audit_info.audited_account - self.audit_resources = audit_info.audit_resources - self.regional_clients = generate_regional_clients(self.service, audit_info) + # Call AWSService's __init__ + super().__init__(__class__.__name__, audit_info) self.securityhubs = [] self.__threading_call__(self.__describe_hub__) - def __get_session__(self): - return self.session - - def __threading_call__(self, call): - threads = [] - for regional_client in self.regional_clients.values(): - threads.append(threading.Thread(target=call, args=(regional_client,))) - for t in threads: - t.start() - for t in threads: - t.join() - def __describe_hub__(self, regional_client): logger.info("SecurityHub - Describing Hub...") try: diff --git a/prowler/providers/aws/services/shield/shield_service.py b/prowler/providers/aws/services/shield/shield_service.py index 35efe5f1..5b0b2cd1 100644 --- a/prowler/providers/aws/services/shield/shield_service.py +++ b/prowler/providers/aws/services/shield/shield_service.py @@ -1,29 +1,19 @@ from pydantic import BaseModel from prowler.lib.logger import logger -from prowler.providers.aws.aws_provider import generate_regional_clients +from prowler.providers.aws.lib.service.service import AWSService ################### Shield -class Shield: +class Shield(AWSService): def __init__(self, audit_info): - self.service = "shield" - self.session = audit_info.audit_session - self.audited_account = audit_info.audited_account - global_client = generate_regional_clients( - self.service, audit_info, global_service=True - ) + # Call AWSService's __init__ + super().__init__(__class__.__name__, audit_info, global_service=True) self.protections = {} self.enabled = False - if global_client: - self.client = list(global_client.values())[0] - self.region = self.client.region - self.enabled = self.__get_subscription_state__() - if self.enabled: - self.__list_protections__() - - def __get_session__(self): - return self.session + self.enabled = self.__get_subscription_state__() + if self.enabled: + self.__list_protections__() def __get_subscription_state__(self): logger.info("Shield - Getting Subscription State...") diff --git a/prowler/providers/aws/services/sns/sns_service.py b/prowler/providers/aws/services/sns/sns_service.py index 2a3ae140..5bf18097 100644 --- a/prowler/providers/aws/services/sns/sns_service.py +++ b/prowler/providers/aws/services/sns/sns_service.py @@ -1,4 +1,3 @@ -import threading from json import loads from typing import Optional @@ -6,33 +5,19 @@ from pydantic import BaseModel from prowler.lib.logger import logger from prowler.lib.scan_filters.scan_filters import is_resource_filtered -from prowler.providers.aws.aws_provider import generate_regional_clients +from prowler.providers.aws.lib.service.service import AWSService ################################ SNS -class SNS: +class SNS(AWSService): def __init__(self, audit_info): - self.service = "sns" - self.session = audit_info.audit_session - self.audit_resources = audit_info.audit_resources - self.regional_clients = generate_regional_clients(self.service, audit_info) + # Call AWSService's __init__ + super().__init__(__class__.__name__, audit_info) self.topics = [] self.__threading_call__(self.__list_topics__) self.__get_topic_attributes__(self.regional_clients) self.__list_tags_for_resource__() - def __get_session__(self): - return self.session - - def __threading_call__(self, call): - threads = [] - for regional_client in self.regional_clients.values(): - threads.append(threading.Thread(target=call, args=(regional_client,))) - for t in threads: - t.start() - for t in threads: - t.join() - def __list_topics__(self, regional_client): logger.info("SNS - listing topics...") try: diff --git a/prowler/providers/aws/services/sqs/sqs_service.py b/prowler/providers/aws/services/sqs/sqs_service.py index 402e222d..c4fc9f13 100644 --- a/prowler/providers/aws/services/sqs/sqs_service.py +++ b/prowler/providers/aws/services/sqs/sqs_service.py @@ -1,4 +1,3 @@ -import threading from json import loads from typing import Optional @@ -6,35 +5,19 @@ from pydantic import BaseModel from prowler.lib.logger import logger from prowler.lib.scan_filters.scan_filters import is_resource_filtered -from prowler.providers.aws.aws_provider import generate_regional_clients +from prowler.providers.aws.lib.service.service import AWSService ################################ SQS -class SQS: +class SQS(AWSService): def __init__(self, audit_info): - self.service = "sqs" - self.session = audit_info.audit_session - self.audit_resources = audit_info.audit_resources - self.audited_account = audit_info.audited_account - self.audited_partition = audit_info.audited_partition - self.regional_clients = generate_regional_clients(self.service, audit_info) + # Call AWSService's __init__ + super().__init__(__class__.__name__, audit_info) self.queues = [] self.__threading_call__(self.__list_queues__) self.__get_queue_attributes__(self.regional_clients) self.__list_queue_tags__() - def __get_session__(self): - return self.session - - def __threading_call__(self, call): - threads = [] - for regional_client in self.regional_clients.values(): - threads.append(threading.Thread(target=call, args=(regional_client,))) - for t in threads: - t.start() - for t in threads: - t.join() - def __list_queues__(self, regional_client): logger.info("SQS - describing queues...") try: diff --git a/prowler/providers/aws/services/ssm/ssm_service.py b/prowler/providers/aws/services/ssm/ssm_service.py index 4ddb8a06..8aaea837 100644 --- a/prowler/providers/aws/services/ssm/ssm_service.py +++ b/prowler/providers/aws/services/ssm/ssm_service.py @@ -1,5 +1,4 @@ import json -import threading from enum import Enum from typing import Optional @@ -8,18 +7,14 @@ from pydantic import BaseModel from prowler.lib.logger import logger from prowler.lib.scan_filters.scan_filters import is_resource_filtered -from prowler.providers.aws.aws_provider import generate_regional_clients +from prowler.providers.aws.lib.service.service import AWSService ################## SSM -class SSM: +class SSM(AWSService): def __init__(self, audit_info): - self.service = "ssm" - self.session = audit_info.audit_session - self.audited_account = audit_info.audited_account - self.audited_partition = audit_info.audited_partition - self.audit_resources = audit_info.audit_resources - self.regional_clients = generate_regional_clients(self.service, audit_info) + # Call AWSService's __init__ + super().__init__(__class__.__name__, audit_info) self.documents = {} self.compliance_resources = {} self.managed_instances = {} @@ -29,18 +24,6 @@ class SSM: self.__threading_call__(self.__list_resource_compliance_summaries__) self.__threading_call__(self.__describe_instance_information__) - def __get_session__(self): - return self.session - - def __threading_call__(self, call): - threads = [] - for regional_client in self.regional_clients.values(): - threads.append(threading.Thread(target=call, args=(regional_client,))) - for t in threads: - t.start() - for t in threads: - t.join() - def __list_documents__(self, regional_client): logger.info("SSM - Listing Documents...") try: diff --git a/prowler/providers/aws/services/ssmincidents/ssmincidents_service.py b/prowler/providers/aws/services/ssmincidents/ssmincidents_service.py index da4002cd..1be0c546 100644 --- a/prowler/providers/aws/services/ssmincidents/ssmincidents_service.py +++ b/prowler/providers/aws/services/ssmincidents/ssmincidents_service.py @@ -1,14 +1,9 @@ -import threading - from botocore.client import ClientError from pydantic import BaseModel from prowler.lib.logger import logger from prowler.lib.scan_filters.scan_filters import is_resource_filtered -from prowler.providers.aws.aws_provider import ( - generate_regional_clients, - get_default_region, -) +from prowler.providers.aws.lib.service.service import AWSService # Note: # This service is a bit special because it creates a resource (Replication Set) in one region, but you can list it in from any region using list_replication_sets @@ -18,16 +13,10 @@ from prowler.providers.aws.aws_provider import ( ################## SSMIncidents -class SSMIncidents: +class SSMIncidents(AWSService): def __init__(self, audit_info): - self.service = "ssm-incidents" - self.session = audit_info.audit_session - self.audited_account = audit_info.audited_account - self.audited_partition = audit_info.audited_partition - self.audited_account_arn = audit_info.audited_account_arn - self.audit_resources = audit_info.audit_resources - self.regional_clients = generate_regional_clients(self.service, audit_info) - self.region = get_default_region(self.service, audit_info) + # Call AWSService's __init__ + super().__init__("ssm-incidents", audit_info) self.replication_set = [] self.__list_replication_sets__() self.__get_replication_set__() @@ -35,18 +24,6 @@ class SSMIncidents: self.__threading_call__(self.__list_response_plans__) self.__list_tags_for_resource__() - def __get_session__(self): - return self.session - - def __threading_call__(self, call): - threads = [] - for regional_client in self.regional_clients.values(): - threads.append(threading.Thread(target=call, args=(regional_client,))) - for t in threads: - t.start() - for t in threads: - t.join() - def __list_replication_sets__(self): logger.info("SSMIncidents - Listing Replication Sets...") try: diff --git a/prowler/providers/aws/services/trustedadvisor/trustedadvisor_errors_and_warnings/trustedadvisor_errors_and_warnings.py b/prowler/providers/aws/services/trustedadvisor/trustedadvisor_errors_and_warnings/trustedadvisor_errors_and_warnings.py index 06d9aa1a..4ae83666 100644 --- a/prowler/providers/aws/services/trustedadvisor/trustedadvisor_errors_and_warnings/trustedadvisor_errors_and_warnings.py +++ b/prowler/providers/aws/services/trustedadvisor/trustedadvisor_errors_and_warnings/trustedadvisor_errors_and_warnings.py @@ -25,7 +25,8 @@ class trustedadvisor_errors_and_warnings(Check): report = Check_Report_AWS(self.metadata()) report.status = "INFO" report.status_extended = "Amazon Web Services Premium Support Subscription is required to use this service." - report.resource_id = trustedadvisor_client.account + report.resource_id = trustedadvisor_client.audited_account + report.resource_arn = trustedadvisor_client.audited_account_arn report.region = trustedadvisor_client.region findings.append(report) diff --git a/prowler/providers/aws/services/trustedadvisor/trustedadvisor_service.py b/prowler/providers/aws/services/trustedadvisor/trustedadvisor_service.py index 932b99c6..d2e67c5e 100644 --- a/prowler/providers/aws/services/trustedadvisor/trustedadvisor_service.py +++ b/prowler/providers/aws/services/trustedadvisor/trustedadvisor_service.py @@ -4,25 +4,24 @@ from botocore.client import ClientError from pydantic import BaseModel from prowler.lib.logger import logger -from prowler.providers.aws.aws_provider import get_default_region +from prowler.providers.aws.lib.service.service import AWSService ################################ TrustedAdvisor -class TrustedAdvisor: +class TrustedAdvisor(AWSService): def __init__(self, audit_info): - self.service = "support" - self.session = audit_info.audit_session - self.account = audit_info.audited_account + # Call AWSService's __init__ + super().__init__("support", audit_info) self.checks = [] self.enabled = True # Support API is not available in China Partition # But only in us-east-1 or us-gov-west-1 https://docs.aws.amazon.com/general/latest/gr/awssupport.html if audit_info.audited_partition != "aws-cn": if audit_info.audited_partition == "aws": - self.region = get_default_region(self.service, audit_info) support_region = "us-east-1" else: support_region = "us-gov-west-1" + self.client = audit_info.audit_session.client( self.service, region_name=support_region ) @@ -30,9 +29,6 @@ class TrustedAdvisor: self.__describe_trusted_advisor_checks__() self.__describe_trusted_advisor_check_result__() - def __get_session__(self): - return self.session - def __describe_trusted_advisor_checks__(self): logger.info("TrustedAdvisor - Describing Checks...") try: diff --git a/prowler/providers/aws/services/vpc/vpc_service.py b/prowler/providers/aws/services/vpc/vpc_service.py index 403d5ca8..32ed5ada 100644 --- a/prowler/providers/aws/services/vpc/vpc_service.py +++ b/prowler/providers/aws/services/vpc/vpc_service.py @@ -1,5 +1,4 @@ import json -import threading from typing import Optional from botocore.client import ClientError @@ -7,22 +6,14 @@ from pydantic import BaseModel from prowler.lib.logger import logger from prowler.lib.scan_filters.scan_filters import is_resource_filtered -from prowler.providers.aws.aws_provider import ( - generate_regional_clients, - get_default_region, -) +from prowler.providers.aws.lib.service.service import AWSService ################## VPC -class VPC: +class VPC(AWSService): def __init__(self, audit_info): - self.service = "ec2" - self.session = audit_info.audit_session - self.audited_account = audit_info.audited_account - self.audit_resources = audit_info.audit_resources - self.audited_partition = audit_info.audited_partition - self.audited_account_arn = audit_info.audited_account_arn - self.regional_clients = generate_regional_clients(self.service, audit_info) + # Call AWSService's __init__ + super().__init__("ec2", audit_info) self.vpcs = {} self.vpc_peering_connections = [] self.vpc_endpoints = [] @@ -36,19 +27,6 @@ class VPC: self.__describe_vpc_endpoint_service_permissions__() self.vpc_subnets = {} self.__threading_call__(self.__describe_vpc_subnets__) - self.region = get_default_region(self.service, audit_info) - - def __get_session__(self): - return self.session - - def __threading_call__(self, call): - threads = [] - for regional_client in self.regional_clients.values(): - threads.append(threading.Thread(target=call, args=(regional_client,))) - for t in threads: - t.start() - for t in threads: - t.join() def __describe_vpcs__(self, regional_client): logger.info("VPC - Describing VPCs...") diff --git a/prowler/providers/aws/services/waf/waf_service.py b/prowler/providers/aws/services/waf/waf_service.py index 8d4de98b..be680833 100644 --- a/prowler/providers/aws/services/waf/waf_service.py +++ b/prowler/providers/aws/services/waf/waf_service.py @@ -1,35 +1,19 @@ -import threading - from pydantic import BaseModel from prowler.lib.logger import logger from prowler.lib.scan_filters.scan_filters import is_resource_filtered -from prowler.providers.aws.aws_provider import generate_regional_clients +from prowler.providers.aws.lib.service.service import AWSService ################### WAF -class WAF: +class WAF(AWSService): def __init__(self, audit_info): - self.service = "waf-regional" - self.session = audit_info.audit_session - self.audit_resources = audit_info.audit_resources - self.regional_clients = generate_regional_clients(self.service, audit_info) + # Call AWSService's __init__ + super().__init__("waf-regional", audit_info) self.web_acls = [] self.__threading_call__(self.__list_web_acls__) self.__threading_call__(self.__list_resources_for_web_acl__) - def __get_session__(self): - return self.session - - def __threading_call__(self, call): - threads = [] - for regional_client in self.regional_clients.values(): - threads.append(threading.Thread(target=call, args=(regional_client,))) - for t in threads: - t.start() - for t in threads: - t.join() - def __list_web_acls__(self, regional_client): logger.info("WAF - Listing Regional Web ACLs...") try: diff --git a/prowler/providers/aws/services/wafv2/wafv2_service.py b/prowler/providers/aws/services/wafv2/wafv2_service.py index 58329863..47e204a8 100644 --- a/prowler/providers/aws/services/wafv2/wafv2_service.py +++ b/prowler/providers/aws/services/wafv2/wafv2_service.py @@ -1,35 +1,19 @@ -import threading - from pydantic import BaseModel from prowler.lib.logger import logger from prowler.lib.scan_filters.scan_filters import is_resource_filtered -from prowler.providers.aws.aws_provider import generate_regional_clients +from prowler.providers.aws.lib.service.service import AWSService ################### WAFv2 -class WAFv2: +class WAFv2(AWSService): def __init__(self, audit_info): - self.service = "wafv2" - self.session = audit_info.audit_session - self.audit_resources = audit_info.audit_resources - self.regional_clients = generate_regional_clients(self.service, audit_info) + # Call AWSService's __init__ + super().__init__(__class__.__name__, audit_info) self.web_acls = [] self.__threading_call__(self.__list_web_acls__) self.__threading_call__(self.__list_resources_for_web_acl__) - def __get_session__(self): - return self.session - - def __threading_call__(self, call): - threads = [] - for regional_client in self.regional_clients.values(): - threads.append(threading.Thread(target=call, args=(regional_client,))) - for t in threads: - t.start() - for t in threads: - t.join() - def __list_web_acls__(self, regional_client): logger.info("WAFv2 - Listing Regional Web ACLs...") try: diff --git a/prowler/providers/aws/services/wellarchitected/wellarchitected_service.py b/prowler/providers/aws/services/wellarchitected/wellarchitected_service.py index e3fea128..1bf8f50b 100644 --- a/prowler/providers/aws/services/wellarchitected/wellarchitected_service.py +++ b/prowler/providers/aws/services/wellarchitected/wellarchitected_service.py @@ -1,36 +1,21 @@ -import threading from typing import Optional from pydantic import BaseModel from prowler.lib.logger import logger from prowler.lib.scan_filters.scan_filters import is_resource_filtered -from prowler.providers.aws.aws_provider import generate_regional_clients +from prowler.providers.aws.lib.service.service import AWSService ################################ WellArchitected -class WellArchitected: +class WellArchitected(AWSService): def __init__(self, audit_info): - self.service = "wellarchitected" - self.session = audit_info.audit_session - self.audit_resources = audit_info.audit_resources - self.regional_clients = generate_regional_clients(self.service, audit_info) + # Call AWSService's __init__ + super().__init__(__class__.__name__, audit_info) self.workloads = [] self.__threading_call__(self.__list_workloads__) self.__list_tags_for_resource__() - def __get_session__(self): - return self.session - - def __threading_call__(self, call): - threads = [] - for regional_client in self.regional_clients.values(): - threads.append(threading.Thread(target=call, args=(regional_client,))) - for t in threads: - t.start() - for t in threads: - t.join() - def __list_workloads__(self, regional_client): logger.info("WellArchitected - Listing Workloads...") try: diff --git a/prowler/providers/aws/services/workspaces/workspaces_service.py b/prowler/providers/aws/services/workspaces/workspaces_service.py index d4202433..28d47cdf 100644 --- a/prowler/providers/aws/services/workspaces/workspaces_service.py +++ b/prowler/providers/aws/services/workspaces/workspaces_service.py @@ -1,38 +1,21 @@ -import threading from typing import Optional from pydantic import BaseModel from prowler.lib.logger import logger from prowler.lib.scan_filters.scan_filters import is_resource_filtered -from prowler.providers.aws.aws_provider import generate_regional_clients +from prowler.providers.aws.lib.service.service import AWSService ################################ WorkSpaces -class WorkSpaces: +class WorkSpaces(AWSService): def __init__(self, audit_info): - self.service = "workspaces" - self.session = audit_info.audit_session - self.audit_resources = audit_info.audit_resources - self.audited_partition = audit_info.audited_partition - self.audited_account = audit_info.audited_account - self.regional_clients = generate_regional_clients(self.service, audit_info) + # Call AWSService's __init__ + super().__init__(__class__.__name__, audit_info) self.workspaces = [] self.__threading_call__(self.__describe_workspaces__) self.__describe_tags__() - def __get_session__(self): - return self.session - - def __threading_call__(self, call): - threads = [] - for regional_client in self.regional_clients.values(): - threads.append(threading.Thread(target=call, args=(regional_client,))) - for t in threads: - t.start() - for t in threads: - t.join() - def __describe_workspaces__(self, regional_client): logger.info("WorkSpaces - describing workspaces...") try: diff --git a/tests/lib/check/check_test.py b/tests/lib/check/check_test.py index 3385f749..11ba4f40 100644 --- a/tests/lib/check/check_test.py +++ b/tests/lib/check/check_test.py @@ -27,6 +27,7 @@ from prowler.providers.aws.aws_provider import ( get_regions_from_audit_resources, ) from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info +from prowler.providers.common.models import Audit_Metadata AWS_ACCOUNT_NUMBER = "123456789012" AWS_REGION = "us-east-1" @@ -158,6 +159,12 @@ class Test_Check: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/lib/outputs/outputs_test.py b/tests/lib/outputs/outputs_test.py index 19e94bc5..b3bfc0b4 100644 --- a/tests/lib/outputs/outputs_test.py +++ b/tests/lib/outputs/outputs_test.py @@ -69,6 +69,7 @@ from prowler.lib.outputs.outputs import ( from prowler.lib.utils.utils import hash_sha512, open_file from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info from prowler.providers.aws.lib.security_hub.security_hub import send_to_security_hub +from prowler.providers.common.models import Audit_Metadata AWS_ACCOUNT_ID = "123456789012" @@ -116,6 +117,12 @@ class Test_Outputs: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) test_output_modes = [ ["csv"], @@ -436,6 +443,12 @@ class Test_Outputs: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) finding = Check_Report( load_check_metadata( @@ -507,6 +520,12 @@ class Test_Outputs: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) finding = Check_Report( load_check_metadata( @@ -592,6 +611,12 @@ class Test_Outputs: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) finding = Check_Report( load_check_metadata( @@ -677,6 +702,12 @@ class Test_Outputs: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) with patch( "prowler.lib.outputs.json.get_check_compliance", @@ -953,6 +984,12 @@ class Test_Outputs: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) finding = Check_Report( load_check_metadata( @@ -1080,6 +1117,12 @@ class Test_Outputs: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) # Creat mock bucket bucket_name = "test_bucket" @@ -1131,6 +1174,12 @@ class Test_Outputs: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) # Creat mock bucket bucket_name = "test_bucket" @@ -1189,6 +1238,12 @@ class Test_Outputs: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) # Creat mock bucket bucket_name = "test_bucket" @@ -1298,6 +1353,12 @@ class Test_Outputs: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) finding = Check_Report( load_check_metadata( diff --git a/tests/lib/outputs/slack_test.py b/tests/lib/outputs/slack_test.py index e1763906..baf66c93 100644 --- a/tests/lib/outputs/slack_test.py +++ b/tests/lib/outputs/slack_test.py @@ -12,6 +12,7 @@ from prowler.providers.azure.lib.audit_info.models import ( Azure_Audit_Info, Azure_Identity_Info, ) +from prowler.providers.common.models import Audit_Metadata from prowler.providers.gcp.lib.audit_info.models import GCP_Audit_Info AWS_ACCOUNT_ID = "123456789012" @@ -44,6 +45,12 @@ class Test_Slack_Integration: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) gcp_audit_info = GCP_Audit_Info( credentials=None, diff --git a/tests/providers/aws/aws_provider_test.py b/tests/providers/aws/aws_provider_test.py index 53d3ee5b..d2274731 100644 --- a/tests/providers/aws/aws_provider_test.py +++ b/tests/providers/aws/aws_provider_test.py @@ -12,6 +12,7 @@ from prowler.providers.aws.aws_provider import ( get_global_region, ) from prowler.providers.aws.lib.audit_info.models import AWS_Assume_Role, AWS_Audit_Info +from prowler.providers.common.models import Audit_Metadata ACCOUNT_ID = 123456789012 AWS_REGION = "us-east-1" @@ -62,6 +63,12 @@ class Test_AWS_Provider: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) # Call assume_role @@ -185,6 +192,12 @@ class Test_AWS_Provider: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) # Call assume_role @@ -271,6 +284,12 @@ class Test_AWS_Provider: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) # Call assume_role @@ -354,6 +373,12 @@ class Test_AWS_Provider: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) # Call assume_role @@ -411,6 +436,12 @@ class Test_AWS_Provider: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) generate_regional_clients_response = generate_regional_clients( "ec2", audit_info @@ -443,6 +474,12 @@ class Test_AWS_Provider: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) generate_regional_clients_response = generate_regional_clients( "route53", audit_info, global_service=True @@ -474,6 +511,12 @@ class Test_AWS_Provider: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) generate_regional_clients_response = generate_regional_clients( "shield", audit_info, global_service=True @@ -502,6 +545,12 @@ class Test_AWS_Provider: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) assert get_default_region("ec2", audit_info) == "eu-west-1" @@ -525,6 +574,12 @@ class Test_AWS_Provider: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) assert get_default_region("ec2", audit_info) == "eu-west-1" @@ -548,6 +603,12 @@ class Test_AWS_Provider: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) assert get_default_region("ec2", audit_info) == "eu-west-1" @@ -571,6 +632,12 @@ class Test_AWS_Provider: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) assert get_default_region("ec2", audit_info) == "us-east-1" @@ -592,6 +659,12 @@ class Test_AWS_Provider: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) assert get_default_region("ec2", audit_info) == "us-east-1" @@ -613,6 +686,12 @@ class Test_AWS_Provider: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) assert get_global_region(audit_info) == "us-gov-east-1" @@ -634,6 +713,12 @@ class Test_AWS_Provider: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) assert get_global_region(audit_info) == "cn-north-1" @@ -655,6 +740,12 @@ class Test_AWS_Provider: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) assert get_global_region(audit_info) == "aws-iso-global" @@ -677,6 +768,12 @@ class Test_AWS_Provider: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) with patch( "prowler.providers.aws.aws_provider.parse_json_file", @@ -728,6 +825,12 @@ class Test_AWS_Provider: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) with patch( "prowler.providers.aws.aws_provider.parse_json_file", diff --git a/tests/providers/aws/lib/allowlist/allowlist_test.py b/tests/providers/aws/lib/allowlist/allowlist_test.py index 1261c266..1270b61d 100644 --- a/tests/providers/aws/lib/allowlist/allowlist_test.py +++ b/tests/providers/aws/lib/allowlist/allowlist_test.py @@ -11,6 +11,7 @@ from prowler.providers.aws.lib.allowlist.allowlist import ( parse_allowlist_file, ) from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info +from prowler.providers.common.models import Audit_Metadata AWS_ACCOUNT_NUMBER = "123456789012" AWS_REGION = "us-east-1" @@ -39,6 +40,12 @@ class Test_Allowlist: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/lib/service/service_test.py b/tests/providers/aws/lib/service/service_test.py new file mode 100644 index 00000000..f9f304ea --- /dev/null +++ b/tests/providers/aws/lib/service/service_test.py @@ -0,0 +1,71 @@ +from boto3 import session +from mock import patch + +from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info +from prowler.providers.aws.lib.service.service import AWSService +from prowler.providers.common.models import Audit_Metadata + +AWS_ACCOUNT_NUMBER = "123456789012" +AWS_ACCOUNT_ARN = f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root" +AWS_PARTITION = "aws" +AWS_REGION = "us-east-1" + + +def mock_generate_regional_clients(service, audit_info, _): + regional_client = audit_info.audit_session.client(service, region_name=AWS_REGION) + regional_client.region = AWS_REGION + return {AWS_REGION: regional_client} + + +@patch( + "prowler.providers.aws.lib.service.service.generate_regional_clients", + new=mock_generate_regional_clients, +) +class Test_AWSService: + # Mocked Audit Info + def set_mocked_audit_info(self): + audit_info = AWS_Audit_Info( + session_config=None, + original_session=None, + audit_session=session.Session( + profile_name=None, + botocore_session=None, + ), + audited_account=AWS_ACCOUNT_NUMBER, + audited_account_arn=AWS_ACCOUNT_ARN, + audited_user_id=None, + audited_partition=AWS_PARTITION, + audited_identity_arn=None, + profile=None, + profile_region=None, + credentials=None, + assumed_role_info=None, + audited_regions=None, + organizations_metadata=None, + audit_resources=[], + mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), + ) + return audit_info + + def test_AWSService_init(self): + audit_info = self.set_mocked_audit_info() + service = AWSService("s3", audit_info) + + assert service.audit_info == audit_info + assert service.audited_account == AWS_ACCOUNT_NUMBER + assert service.audited_account_arn == AWS_ACCOUNT_ARN + assert service.audited_partition == AWS_PARTITION + assert service.audit_resources == [] + assert service.audited_checks == [] + assert service.session == audit_info.audit_session + assert service.service == "s3" + assert len(service.regional_clients) == 1 + assert service.regional_clients[AWS_REGION].__class__.__name__ == "S3" + assert service.region == AWS_REGION + assert service.client.__class__.__name__ == "S3" diff --git a/tests/providers/aws/services/accessanalyzer/accessanalyzer_service_test.py b/tests/providers/aws/services/accessanalyzer/accessanalyzer_service_test.py index 74cd2f63..fe5f5926 100644 --- a/tests/providers/aws/services/accessanalyzer/accessanalyzer_service_test.py +++ b/tests/providers/aws/services/accessanalyzer/accessanalyzer_service_test.py @@ -7,6 +7,7 @@ from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info from prowler.providers.aws.services.accessanalyzer.accessanalyzer_service import ( AccessAnalyzer, ) +from prowler.providers.common.models import Audit_Metadata # Mock Test Region AWS_REGION = "eu-west-1" @@ -57,7 +58,7 @@ def mock_make_api_call(self, operation_name, kwarg): return make_api_call(self, operation_name, kwarg) -def mock_generate_regional_clients(service, audit_info): +def mock_generate_regional_clients(service, audit_info, _): regional_client = audit_info.audit_session.client(service, region_name=AWS_REGION) regional_client.region = AWS_REGION return {AWS_REGION: regional_client} @@ -66,7 +67,7 @@ def mock_generate_regional_clients(service, audit_info): # Patch every AWS call using Boto3 and generate_regional_clients to have 1 client @patch("botocore.client.BaseClient._make_api_call", new=mock_make_api_call) @patch( - "prowler.providers.aws.services.accessanalyzer.accessanalyzer_service.generate_regional_clients", + "prowler.providers.aws.lib.service.service.generate_regional_clients", new=mock_generate_regional_clients, ) class Test_AccessAnalyzer_Service: @@ -91,6 +92,12 @@ class Test_AccessAnalyzer_Service: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/acm/acm_service_test.py b/tests/providers/aws/services/acm/acm_service_test.py index 77df7819..d4119793 100644 --- a/tests/providers/aws/services/acm/acm_service_test.py +++ b/tests/providers/aws/services/acm/acm_service_test.py @@ -8,6 +8,7 @@ from mock import patch from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info from prowler.providers.aws.services.acm.acm_service import ACM +from prowler.providers.common.models import Audit_Metadata # from moto import mock_acm @@ -79,7 +80,7 @@ def mock_make_api_call(self, operation_name, kwargs): # Mock generate_regional_clients() -def mock_generate_regional_clients(service, audit_info): +def mock_generate_regional_clients(service, audit_info, _): regional_client = audit_info.audit_session.client(service, region_name=AWS_REGION) regional_client.region = AWS_REGION return {AWS_REGION: regional_client} @@ -87,7 +88,7 @@ def mock_generate_regional_clients(service, audit_info): # Patch every AWS call using Boto3 and generate_regional_clients to have 1 client @patch( - "prowler.providers.aws.services.acm.acm_service.generate_regional_clients", + "prowler.providers.aws.lib.service.service.generate_regional_clients", new=mock_generate_regional_clients, ) @patch("botocore.client.BaseClient._make_api_call", new=mock_make_api_call) @@ -117,6 +118,12 @@ class Test_ACM_Service: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/apigateway/apigateway_authorizers_enabled/apigateway_authorizers_enabled_test.py b/tests/providers/aws/services/apigateway/apigateway_authorizers_enabled/apigateway_authorizers_enabled_test.py index cc04c026..1004af07 100644 --- a/tests/providers/aws/services/apigateway/apigateway_authorizers_enabled/apigateway_authorizers_enabled_test.py +++ b/tests/providers/aws/services/apigateway/apigateway_authorizers_enabled/apigateway_authorizers_enabled_test.py @@ -5,6 +5,7 @@ from moto import mock_apigateway, mock_iam, mock_lambda from moto.core import DEFAULT_ACCOUNT_ID as ACCOUNT_ID from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info +from prowler.providers.common.models import Audit_Metadata AWS_REGION = "us-east-1" AWS_ACCOUNT_NUMBER = "123456789012" @@ -32,6 +33,12 @@ class Test_apigateway_authorizers_enabled: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/apigateway/apigateway_client_certificate_enabled/apigateway_client_certificate_enabled_test.py b/tests/providers/aws/services/apigateway/apigateway_client_certificate_enabled/apigateway_client_certificate_enabled_test.py index 56466f05..815f49e4 100644 --- a/tests/providers/aws/services/apigateway/apigateway_client_certificate_enabled/apigateway_client_certificate_enabled_test.py +++ b/tests/providers/aws/services/apigateway/apigateway_client_certificate_enabled/apigateway_client_certificate_enabled_test.py @@ -5,6 +5,7 @@ from moto import mock_apigateway from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info from prowler.providers.aws.services.apigateway.apigateway_service import Stage +from prowler.providers.common.models import Audit_Metadata AWS_REGION = "us-east-1" AWS_ACCOUNT_NUMBER = "123456789012" @@ -32,6 +33,12 @@ class Test_apigateway_client_certificate_enabled: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/apigateway/apigateway_endpoint_public/apigateway_endpoint_public_test.py b/tests/providers/aws/services/apigateway/apigateway_endpoint_public/apigateway_endpoint_public_test.py index db87d53d..3ffdc50a 100644 --- a/tests/providers/aws/services/apigateway/apigateway_endpoint_public/apigateway_endpoint_public_test.py +++ b/tests/providers/aws/services/apigateway/apigateway_endpoint_public/apigateway_endpoint_public_test.py @@ -4,6 +4,7 @@ from boto3 import client, session from moto import mock_apigateway from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info +from prowler.providers.common.models import Audit_Metadata AWS_REGION = "us-east-1" AWS_ACCOUNT_NUMBER = "123456789012" @@ -31,6 +32,12 @@ class Test_apigateway_endpoint_public: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/apigateway/apigateway_logging_enabled/apigateway_logging_enabled_test.py b/tests/providers/aws/services/apigateway/apigateway_logging_enabled/apigateway_logging_enabled_test.py index bcf99a6c..ef32663b 100644 --- a/tests/providers/aws/services/apigateway/apigateway_logging_enabled/apigateway_logging_enabled_test.py +++ b/tests/providers/aws/services/apigateway/apigateway_logging_enabled/apigateway_logging_enabled_test.py @@ -4,6 +4,7 @@ from boto3 import client, session from moto import mock_apigateway from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info +from prowler.providers.common.models import Audit_Metadata AWS_REGION = "us-east-1" AWS_ACCOUNT_NUMBER = "123456789012" @@ -31,6 +32,12 @@ class Test_apigateway_logging_enabled: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/apigateway/apigateway_service_test.py b/tests/providers/aws/services/apigateway/apigateway_service_test.py index 3f1440b9..fc60d02d 100644 --- a/tests/providers/aws/services/apigateway/apigateway_service_test.py +++ b/tests/providers/aws/services/apigateway/apigateway_service_test.py @@ -3,6 +3,7 @@ from moto import mock_apigateway from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info from prowler.providers.aws.services.apigateway.apigateway_service import APIGateway +from prowler.providers.common.models import Audit_Metadata AWS_ACCOUNT_NUMBER = "123456789012" AWS_REGION = "us-east-1" @@ -31,6 +32,12 @@ class Test_APIGateway_Service: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/apigateway/apigateway_waf_acl_attached/apigateway_waf_acl_attached_test.py b/tests/providers/aws/services/apigateway/apigateway_waf_acl_attached/apigateway_waf_acl_attached_test.py index a3b2156a..6266eb3b 100644 --- a/tests/providers/aws/services/apigateway/apigateway_waf_acl_attached/apigateway_waf_acl_attached_test.py +++ b/tests/providers/aws/services/apigateway/apigateway_waf_acl_attached/apigateway_waf_acl_attached_test.py @@ -4,6 +4,7 @@ from boto3 import client, session from moto import mock_apigateway, mock_wafv2 from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info +from prowler.providers.common.models import Audit_Metadata AWS_REGION = "us-east-1" AWS_ACCOUNT_NUMBER = "123456789012" @@ -31,6 +32,12 @@ class Test_apigateway_waf_acl_attached: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/apigatewayv2/apigatewayv2_access_logging_enabled/apigatewayv2_access_logging_enabled_test.py b/tests/providers/aws/services/apigatewayv2/apigatewayv2_access_logging_enabled/apigatewayv2_access_logging_enabled_test.py index de9c5d01..640ceb6e 100644 --- a/tests/providers/aws/services/apigatewayv2/apigatewayv2_access_logging_enabled/apigatewayv2_access_logging_enabled_test.py +++ b/tests/providers/aws/services/apigatewayv2/apigatewayv2_access_logging_enabled/apigatewayv2_access_logging_enabled_test.py @@ -6,6 +6,7 @@ from mock import patch from moto import mock_apigatewayv2 from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info +from prowler.providers.common.models import Audit_Metadata AWS_REGION = "us-east-1" AWS_ACCOUNT_NUMBER = "123456789012" @@ -60,6 +61,12 @@ class Test_apigatewayv2_access_logging_enabled: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/apigatewayv2/apigatewayv2_authorizers_enabled/apigatewayv2_authorizers_enabled_test.py b/tests/providers/aws/services/apigatewayv2/apigatewayv2_authorizers_enabled/apigatewayv2_authorizers_enabled_test.py index 5c58285c..08adfbc9 100644 --- a/tests/providers/aws/services/apigatewayv2/apigatewayv2_authorizers_enabled/apigatewayv2_authorizers_enabled_test.py +++ b/tests/providers/aws/services/apigatewayv2/apigatewayv2_authorizers_enabled/apigatewayv2_authorizers_enabled_test.py @@ -6,6 +6,7 @@ from mock import patch from moto import mock_apigatewayv2 from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info +from prowler.providers.common.models import Audit_Metadata AWS_REGION = "us-east-1" AWS_ACCOUNT_NUMBER = "123456789012" @@ -60,6 +61,12 @@ class Test_apigatewayv2_authorizers_enabled: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/apigatewayv2/apigatewayv2_service_test.py b/tests/providers/aws/services/apigatewayv2/apigatewayv2_service_test.py index 3d62c736..25dd31ac 100644 --- a/tests/providers/aws/services/apigatewayv2/apigatewayv2_service_test.py +++ b/tests/providers/aws/services/apigatewayv2/apigatewayv2_service_test.py @@ -7,6 +7,7 @@ from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info from prowler.providers.aws.services.apigatewayv2.apigatewayv2_service import ( ApiGatewayV2, ) +from prowler.providers.common.models import Audit_Metadata AWS_ACCOUNT_NUMBER = "123456789012" AWS_REGION = "us-east-1" @@ -62,6 +63,12 @@ class Test_ApiGatewayV2_Service: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/appstream/appstream_service_test.py b/tests/providers/aws/services/appstream/appstream_service_test.py index d7945c23..f00943e1 100644 --- a/tests/providers/aws/services/appstream/appstream_service_test.py +++ b/tests/providers/aws/services/appstream/appstream_service_test.py @@ -6,6 +6,7 @@ from moto.core import DEFAULT_ACCOUNT_ID from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info from prowler.providers.aws.services.appstream.appstream_service import AppStream +from prowler.providers.common.models import Audit_Metadata # Mock Test Region AWS_REGION = "eu-west-1" @@ -50,7 +51,7 @@ def mock_make_api_call(self, operation_name, kwarg): # Mock generate_regional_clients() -def mock_generate_regional_clients(service, audit_info): +def mock_generate_regional_clients(service, audit_info, _): regional_client = audit_info.audit_session.client(service, region_name=AWS_REGION) regional_client.region = AWS_REGION return {AWS_REGION: regional_client} @@ -59,7 +60,7 @@ def mock_generate_regional_clients(service, audit_info): # Patch every AWS call using Boto3 and generate_regional_clients to have 1 client @patch("botocore.client.BaseClient._make_api_call", new=mock_make_api_call) @patch( - "prowler.providers.aws.services.appstream.appstream_service.generate_regional_clients", + "prowler.providers.aws.lib.service.service.generate_regional_clients", new=mock_generate_regional_clients, ) class Test_AppStream_Service: @@ -84,6 +85,12 @@ class Test_AppStream_Service: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/autoscaling/autoscaling_find_secrets_ec2_launch_configuration/autoscaling_find_secrets_ec2_launch_configuration_test.py b/tests/providers/aws/services/autoscaling/autoscaling_find_secrets_ec2_launch_configuration/autoscaling_find_secrets_ec2_launch_configuration_test.py index a8d09906..d6c67bf8 100644 --- a/tests/providers/aws/services/autoscaling/autoscaling_find_secrets_ec2_launch_configuration/autoscaling_find_secrets_ec2_launch_configuration_test.py +++ b/tests/providers/aws/services/autoscaling/autoscaling_find_secrets_ec2_launch_configuration/autoscaling_find_secrets_ec2_launch_configuration_test.py @@ -4,6 +4,7 @@ from boto3 import client, session from moto import mock_autoscaling from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info +from prowler.providers.common.models import Audit_Metadata AWS_REGION = "us-east-1" AWS_ACCOUNT_NUMBER = "123456789012" @@ -31,6 +32,12 @@ class Test_autoscaling_find_secrets_ec2_launch_configuration: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/autoscaling/autoscaling_group_multiple_az/autoscaling_group_multiple_az_test.py b/tests/providers/aws/services/autoscaling/autoscaling_group_multiple_az/autoscaling_group_multiple_az_test.py index 067515c4..ea4eaa4e 100644 --- a/tests/providers/aws/services/autoscaling/autoscaling_group_multiple_az/autoscaling_group_multiple_az_test.py +++ b/tests/providers/aws/services/autoscaling/autoscaling_group_multiple_az/autoscaling_group_multiple_az_test.py @@ -4,6 +4,7 @@ from boto3 import client, session from moto import mock_autoscaling from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info +from prowler.providers.common.models import Audit_Metadata AWS_REGION = "us-east-1" AWS_ACCOUNT_NUMBER = "123456789012" @@ -31,6 +32,12 @@ class Test_autoscaling_group_multiple_az: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/autoscaling/autoscaling_service_test.py b/tests/providers/aws/services/autoscaling/autoscaling_service_test.py index b175d294..0c6b6080 100644 --- a/tests/providers/aws/services/autoscaling/autoscaling_service_test.py +++ b/tests/providers/aws/services/autoscaling/autoscaling_service_test.py @@ -5,6 +5,7 @@ from moto import mock_autoscaling from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info from prowler.providers.aws.services.autoscaling.autoscaling_service import AutoScaling +from prowler.providers.common.models import Audit_Metadata AWS_ACCOUNT_NUMBER = "123456789012" AWS_REGION = "us-east-1" @@ -33,6 +34,12 @@ class Test_AutoScaling_Service: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/awslambda/awslambda_function_invoke_api_operations_cloudtrail_logging_enabled/awslambda_function_invoke_api_operations_cloudtrail_logging_enabled_test.py b/tests/providers/aws/services/awslambda/awslambda_function_invoke_api_operations_cloudtrail_logging_enabled/awslambda_function_invoke_api_operations_cloudtrail_logging_enabled_test.py index c48ec671..9d5d9634 100644 --- a/tests/providers/aws/services/awslambda/awslambda_function_invoke_api_operations_cloudtrail_logging_enabled/awslambda_function_invoke_api_operations_cloudtrail_logging_enabled_test.py +++ b/tests/providers/aws/services/awslambda/awslambda_function_invoke_api_operations_cloudtrail_logging_enabled/awslambda_function_invoke_api_operations_cloudtrail_logging_enabled_test.py @@ -7,12 +7,13 @@ from moto.core import DEFAULT_ACCOUNT_ID from prowler.providers.aws.lib.audit_info.audit_info import AWS_Audit_Info from prowler.providers.aws.services.awslambda.awslambda_service import Function +from prowler.providers.common.models import Audit_Metadata AWS_REGION = "us-east-1" # Mock generate_regional_clients() -def mock_generate_regional_clients(service, audit_info): +def mock_generate_regional_clients(service, audit_info, _): regional_client = audit_info.audit_session.client(service, region_name=AWS_REGION) regional_client.region = AWS_REGION return {AWS_REGION: regional_client} @@ -20,7 +21,7 @@ def mock_generate_regional_clients(service, audit_info): # Patch every AWS call using Boto3 and generate_regional_clients to have 1 client @patch( - "prowler.providers.aws.services.accessanalyzer.accessanalyzer_service.generate_regional_clients", + "prowler.providers.aws.lib.service.service.generate_regional_clients", new=mock_generate_regional_clients, ) class Test_awslambda_function_invoke_api_operations_cloudtrail_logging_enabled: @@ -46,6 +47,12 @@ class Test_awslambda_function_invoke_api_operations_cloudtrail_logging_enabled: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/awslambda/awslambda_service_test.py b/tests/providers/aws/services/awslambda/awslambda_service_test.py index 91eeb91f..aa8e45a6 100644 --- a/tests/providers/aws/services/awslambda/awslambda_service_test.py +++ b/tests/providers/aws/services/awslambda/awslambda_service_test.py @@ -47,7 +47,7 @@ def mock_request_get(_): # Mock generate_regional_clients() -def mock_generate_regional_clients(service, audit_info): +def mock_generate_regional_clients(service, audit_info, _): regional_client_eu_west_1 = audit_info.audit_session.client( service, region_name=AWS_REGION ) @@ -63,7 +63,7 @@ def mock_generate_regional_clients(service, audit_info): @patch( - "prowler.providers.aws.services.awslambda.awslambda_service.generate_regional_clients", + "prowler.providers.aws.lib.service.service.generate_regional_clients", new=mock_generate_regional_clients, ) class Test_Lambda_Service: diff --git a/tests/providers/aws/services/backup/backup_service_test.py b/tests/providers/aws/services/backup/backup_service_test.py index e4b5449d..e24f2940 100644 --- a/tests/providers/aws/services/backup/backup_service_test.py +++ b/tests/providers/aws/services/backup/backup_service_test.py @@ -6,6 +6,7 @@ from boto3 import session from prowler.providers.aws.lib.audit_info.audit_info import AWS_Audit_Info from prowler.providers.aws.services.backup.backup_service import Backup +from prowler.providers.common.models import Audit_Metadata # Mock Test Region AWS_REGION = "eu-west-1" @@ -59,7 +60,7 @@ def mock_make_api_call(self, operation_name, kwarg): return make_api_call(self, operation_name, kwarg) -def mock_generate_regional_clients(service, audit_info): +def mock_generate_regional_clients(service, audit_info, _): regional_client = audit_info.audit_session.client(service, region_name=AWS_REGION) regional_client.region = AWS_REGION return {AWS_REGION: regional_client} @@ -68,7 +69,7 @@ def mock_generate_regional_clients(service, audit_info): # Patch every AWS call using Boto3 and generate_regional_clients to have 1 client @patch("botocore.client.BaseClient._make_api_call", new=mock_make_api_call) @patch( - "prowler.providers.aws.services.backup.backup_service.generate_regional_clients", + "prowler.providers.aws.lib.service.service.generate_regional_clients", new=mock_generate_regional_clients, ) class Test_Backup_Service: @@ -94,6 +95,12 @@ class Test_Backup_Service: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/cloudformation/cloudformation_service_test.py b/tests/providers/aws/services/cloudformation/cloudformation_service_test.py index 5ecf0102..7bf7fbd4 100644 --- a/tests/providers/aws/services/cloudformation/cloudformation_service_test.py +++ b/tests/providers/aws/services/cloudformation/cloudformation_service_test.py @@ -13,6 +13,7 @@ from prowler.providers.aws.lib.audit_info.audit_info import AWS_Audit_Info from prowler.providers.aws.services.cloudformation.cloudformation_service import ( CloudFormation, ) +from prowler.providers.common.models import Audit_Metadata # Mock Test Region AWS_REGION = "eu-west-1" @@ -120,7 +121,7 @@ def mock_make_api_call(self, operation_name, kwarg): # Mock generate_regional_clients() -def mock_generate_regional_clients(service, audit_info): +def mock_generate_regional_clients(service, audit_info, _): regional_client = audit_info.audit_session.client(service, region_name=AWS_REGION) regional_client.region = AWS_REGION return {AWS_REGION: regional_client} @@ -129,7 +130,7 @@ def mock_generate_regional_clients(service, audit_info): # Patch every AWS call using Boto3 and generate_regional_clients to have 1 client @patch("botocore.client.BaseClient._make_api_call", new=mock_make_api_call) @patch( - "prowler.providers.aws.services.cloudformation.cloudformation_service.generate_regional_clients", + "prowler.providers.aws.lib.service.service.generate_regional_clients", new=mock_generate_regional_clients, ) class Test_CloudFormation_Service: @@ -145,7 +146,7 @@ class Test_CloudFormation_Service: audited_account=None, audited_account_arn=None, audited_user_id=None, - audited_partition=None, + audited_partition="aws", audited_identity_arn=None, profile=None, profile_region=None, @@ -155,6 +156,12 @@ class Test_CloudFormation_Service: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/cloudfront/cloudfront_service_test.py b/tests/providers/aws/services/cloudfront/cloudfront_service_test.py index b4c6b621..aaeee822 100644 --- a/tests/providers/aws/services/cloudfront/cloudfront_service_test.py +++ b/tests/providers/aws/services/cloudfront/cloudfront_service_test.py @@ -10,6 +10,7 @@ from prowler.providers.aws.services.cloudfront.cloudfront_service import ( CloudFront, ViewerProtocolPolicy, ) +from prowler.providers.common.models import Audit_Metadata # Mock Test Region AWS_REGION = "eu-west-1" @@ -176,6 +177,12 @@ class Test_CloudFront_Service: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/cloudtrail/cloudtrail_bucket_requires_mfa_delete/cloudtrail_bucket_requires_mfa_delete_test.py b/tests/providers/aws/services/cloudtrail/cloudtrail_bucket_requires_mfa_delete/cloudtrail_bucket_requires_mfa_delete_test.py index bc089f12..a1f80833 100644 --- a/tests/providers/aws/services/cloudtrail/cloudtrail_bucket_requires_mfa_delete/cloudtrail_bucket_requires_mfa_delete_test.py +++ b/tests/providers/aws/services/cloudtrail/cloudtrail_bucket_requires_mfa_delete/cloudtrail_bucket_requires_mfa_delete_test.py @@ -8,6 +8,7 @@ from moto import mock_cloudtrail, mock_iam, mock_s3 from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info from prowler.providers.aws.services.cloudtrail.cloudtrail_service import Cloudtrail from prowler.providers.aws.services.s3.s3_service import S3 +from prowler.providers.common.models import Audit_Metadata AWS_ACCOUNT_NUMBER = "123456789012" @@ -37,6 +38,12 @@ class Test_cloudtrail_bucket_requires_mfa_delete: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/cloudtrail/cloudtrail_cloudwatch_logging_enabled/cloudtrail_cloudwatch_logging_enabled_test.py b/tests/providers/aws/services/cloudtrail/cloudtrail_cloudwatch_logging_enabled/cloudtrail_cloudwatch_logging_enabled_test.py index 4c734bea..fa681fa7 100644 --- a/tests/providers/aws/services/cloudtrail/cloudtrail_cloudwatch_logging_enabled/cloudtrail_cloudwatch_logging_enabled_test.py +++ b/tests/providers/aws/services/cloudtrail/cloudtrail_cloudwatch_logging_enabled/cloudtrail_cloudwatch_logging_enabled_test.py @@ -6,6 +6,7 @@ from boto3 import client, session from moto import mock_cloudtrail, mock_s3 from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info +from prowler.providers.common.models import Audit_Metadata AWS_ACCOUNT_NUMBER = "123456789012" @@ -32,6 +33,12 @@ class Test_cloudtrail_cloudwatch_logging_enabled: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/cloudtrail/cloudtrail_insights_exist/cloudtrail_insights_exist_test.py b/tests/providers/aws/services/cloudtrail/cloudtrail_insights_exist/cloudtrail_insights_exist_test.py index b0249451..6a474f39 100644 --- a/tests/providers/aws/services/cloudtrail/cloudtrail_insights_exist/cloudtrail_insights_exist_test.py +++ b/tests/providers/aws/services/cloudtrail/cloudtrail_insights_exist/cloudtrail_insights_exist_test.py @@ -5,6 +5,7 @@ from moto import mock_cloudtrail, mock_s3 from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info from prowler.providers.aws.services.cloudtrail.cloudtrail_service import Cloudtrail +from prowler.providers.common.models import Audit_Metadata AWS_ACCOUNT_NUMBER = "123456789012" @@ -31,6 +32,12 @@ class Test_cloudtrail_insights_exist: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/cloudtrail/cloudtrail_kms_encryption_enabled/cloudtrail_kms_encryption_enabled_test.py b/tests/providers/aws/services/cloudtrail/cloudtrail_kms_encryption_enabled/cloudtrail_kms_encryption_enabled_test.py index 0c125ac7..53a4fa56 100644 --- a/tests/providers/aws/services/cloudtrail/cloudtrail_kms_encryption_enabled/cloudtrail_kms_encryption_enabled_test.py +++ b/tests/providers/aws/services/cloudtrail/cloudtrail_kms_encryption_enabled/cloudtrail_kms_encryption_enabled_test.py @@ -5,6 +5,7 @@ from boto3 import client, session from moto import mock_cloudtrail, mock_kms, mock_s3 from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info +from prowler.providers.common.models import Audit_Metadata AWS_ACCOUNT_NUMBER = "123456789012" @@ -31,6 +32,12 @@ class Test_cloudtrail_kms_encryption_enabled: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/cloudtrail/cloudtrail_log_file_validation_enabled/cloudtrail_log_file_validation_enabled_test.py b/tests/providers/aws/services/cloudtrail/cloudtrail_log_file_validation_enabled/cloudtrail_log_file_validation_enabled_test.py index 5315f014..7f3477c4 100644 --- a/tests/providers/aws/services/cloudtrail/cloudtrail_log_file_validation_enabled/cloudtrail_log_file_validation_enabled_test.py +++ b/tests/providers/aws/services/cloudtrail/cloudtrail_log_file_validation_enabled/cloudtrail_log_file_validation_enabled_test.py @@ -5,6 +5,7 @@ from boto3 import client, session from moto import mock_cloudtrail, mock_s3 from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info +from prowler.providers.common.models import Audit_Metadata AWS_ACCOUNT_NUMBER = "123456789012" @@ -31,6 +32,12 @@ class Test_cloudtrail_log_file_validation_enabled: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/cloudtrail/cloudtrail_logs_s3_bucket_access_logging_enabled/cloudtrail_logs_s3_bucket_access_logging_enabled_test.py b/tests/providers/aws/services/cloudtrail/cloudtrail_logs_s3_bucket_access_logging_enabled/cloudtrail_logs_s3_bucket_access_logging_enabled_test.py index 6ba9fe71..81377db9 100644 --- a/tests/providers/aws/services/cloudtrail/cloudtrail_logs_s3_bucket_access_logging_enabled/cloudtrail_logs_s3_bucket_access_logging_enabled_test.py +++ b/tests/providers/aws/services/cloudtrail/cloudtrail_logs_s3_bucket_access_logging_enabled/cloudtrail_logs_s3_bucket_access_logging_enabled_test.py @@ -5,6 +5,7 @@ from boto3 import client, session from moto import mock_cloudtrail, mock_s3 from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info +from prowler.providers.common.models import Audit_Metadata AWS_ACCOUNT_NUMBER = "123456789012" @@ -31,6 +32,12 @@ class Test_cloudtrail_logs_s3_bucket_access_logging_enabled: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/cloudtrail/cloudtrail_logs_s3_bucket_is_not_publicly_accessible/cloudtrail_logs_s3_bucket_is_not_publicly_accessible_test.py b/tests/providers/aws/services/cloudtrail/cloudtrail_logs_s3_bucket_is_not_publicly_accessible/cloudtrail_logs_s3_bucket_is_not_publicly_accessible_test.py index 58acee27..b510349c 100644 --- a/tests/providers/aws/services/cloudtrail/cloudtrail_logs_s3_bucket_is_not_publicly_accessible/cloudtrail_logs_s3_bucket_is_not_publicly_accessible_test.py +++ b/tests/providers/aws/services/cloudtrail/cloudtrail_logs_s3_bucket_is_not_publicly_accessible/cloudtrail_logs_s3_bucket_is_not_publicly_accessible_test.py @@ -5,6 +5,7 @@ from boto3 import client, session from moto import mock_cloudtrail, mock_s3 from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info +from prowler.providers.common.models import Audit_Metadata AWS_ACCOUNT_NUMBER = "123456789012" @@ -31,6 +32,12 @@ class Test_cloudtrail_logs_s3_bucket_is_not_publicly_accessible: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/cloudtrail/cloudtrail_multi_region_enabled/cloudtrail_multi_region_enabled_test.py b/tests/providers/aws/services/cloudtrail/cloudtrail_multi_region_enabled/cloudtrail_multi_region_enabled_test.py index b8db5722..7e05fef2 100644 --- a/tests/providers/aws/services/cloudtrail/cloudtrail_multi_region_enabled/cloudtrail_multi_region_enabled_test.py +++ b/tests/providers/aws/services/cloudtrail/cloudtrail_multi_region_enabled/cloudtrail_multi_region_enabled_test.py @@ -6,6 +6,7 @@ from moto import mock_cloudtrail, mock_s3 from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info from prowler.providers.aws.services.cloudtrail.cloudtrail_service import Trail +from prowler.providers.common.models import Audit_Metadata AWS_ACCOUNT_NUMBER = "123456789012" @@ -32,6 +33,12 @@ class Test_cloudtrail_multi_region_enabled: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/cloudtrail/cloudtrail_s3_dataevents_read_enabled/cloudtrail_s3_dataevents_read_enabled_test.py b/tests/providers/aws/services/cloudtrail/cloudtrail_s3_dataevents_read_enabled/cloudtrail_s3_dataevents_read_enabled_test.py index d505453b..f8b5c21a 100644 --- a/tests/providers/aws/services/cloudtrail/cloudtrail_s3_dataevents_read_enabled/cloudtrail_s3_dataevents_read_enabled_test.py +++ b/tests/providers/aws/services/cloudtrail/cloudtrail_s3_dataevents_read_enabled/cloudtrail_s3_dataevents_read_enabled_test.py @@ -5,6 +5,7 @@ from boto3 import client, session from moto import mock_cloudtrail, mock_s3 from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info +from prowler.providers.common.models import Audit_Metadata AWS_ACCOUNT_NUMBER = "123456789012" @@ -31,6 +32,12 @@ class Test_cloudtrail_s3_dataevents_read_enabled: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/cloudtrail/cloudtrail_s3_dataevents_write_enabled/cloudtrail_s3_dataevents_write_enabled_test.py b/tests/providers/aws/services/cloudtrail/cloudtrail_s3_dataevents_write_enabled/cloudtrail_s3_dataevents_write_enabled_test.py index 2275e09a..3ceaefe4 100644 --- a/tests/providers/aws/services/cloudtrail/cloudtrail_s3_dataevents_write_enabled/cloudtrail_s3_dataevents_write_enabled_test.py +++ b/tests/providers/aws/services/cloudtrail/cloudtrail_s3_dataevents_write_enabled/cloudtrail_s3_dataevents_write_enabled_test.py @@ -5,6 +5,7 @@ from boto3 import client, session from moto import mock_cloudtrail, mock_s3 from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info +from prowler.providers.common.models import Audit_Metadata AWS_ACCOUNT_NUMBER = "123456789012" @@ -31,6 +32,12 @@ class Test_cloudtrail_s3_dataevents_write_enabled: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/cloudtrail/cloudtrail_service_test.py b/tests/providers/aws/services/cloudtrail/cloudtrail_service_test.py index eca7ce61..2eb5c61f 100644 --- a/tests/providers/aws/services/cloudtrail/cloudtrail_service_test.py +++ b/tests/providers/aws/services/cloudtrail/cloudtrail_service_test.py @@ -3,6 +3,7 @@ from moto import mock_cloudtrail, mock_s3 from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info from prowler.providers.aws.services.cloudtrail.cloudtrail_service import Cloudtrail +from prowler.providers.common.models import Audit_Metadata AWS_ACCOUNT_NUMBER = "123456789012" @@ -30,6 +31,12 @@ class Test_Cloudtrail_Service: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/cloudwatch/cloudwatch_changes_to_network_acls_alarm_configured/cloudwatch_changes_to_network_acls_alarm_configured_test.py b/tests/providers/aws/services/cloudwatch/cloudwatch_changes_to_network_acls_alarm_configured/cloudwatch_changes_to_network_acls_alarm_configured_test.py index 0d441373..b0e81a39 100644 --- a/tests/providers/aws/services/cloudwatch/cloudwatch_changes_to_network_acls_alarm_configured/cloudwatch_changes_to_network_acls_alarm_configured_test.py +++ b/tests/providers/aws/services/cloudwatch/cloudwatch_changes_to_network_acls_alarm_configured/cloudwatch_changes_to_network_acls_alarm_configured_test.py @@ -5,6 +5,7 @@ from moto import mock_cloudtrail, mock_cloudwatch, mock_logs, mock_s3 from moto.core import DEFAULT_ACCOUNT_ID from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info +from prowler.providers.common.models import Audit_Metadata AWS_REGION = "us-east-1" AWS_ACCOUNT_NUMBER = "123456789012" @@ -32,6 +33,12 @@ class Test_cloudwatch_changes_to_network_acls_alarm_configured: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/cloudwatch/cloudwatch_changes_to_network_gateways_alarm_configured/cloudwatch_changes_to_network_gateways_alarm_configured_test.py b/tests/providers/aws/services/cloudwatch/cloudwatch_changes_to_network_gateways_alarm_configured/cloudwatch_changes_to_network_gateways_alarm_configured_test.py index d8374c02..21977d08 100644 --- a/tests/providers/aws/services/cloudwatch/cloudwatch_changes_to_network_gateways_alarm_configured/cloudwatch_changes_to_network_gateways_alarm_configured_test.py +++ b/tests/providers/aws/services/cloudwatch/cloudwatch_changes_to_network_gateways_alarm_configured/cloudwatch_changes_to_network_gateways_alarm_configured_test.py @@ -5,6 +5,7 @@ from moto import mock_cloudtrail, mock_cloudwatch, mock_logs, mock_s3 from moto.core import DEFAULT_ACCOUNT_ID from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info +from prowler.providers.common.models import Audit_Metadata AWS_REGION = "us-east-1" AWS_ACCOUNT_NUMBER = "123456789012" @@ -32,6 +33,12 @@ class Test_cloudwatch_changes_to_network_gateways_alarm_configured: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/cloudwatch/cloudwatch_changes_to_network_route_tables_alarm_configured/cloudwatch_changes_to_network_route_tables_alarm_configured_test.py b/tests/providers/aws/services/cloudwatch/cloudwatch_changes_to_network_route_tables_alarm_configured/cloudwatch_changes_to_network_route_tables_alarm_configured_test.py index 932f8520..6dda2d13 100644 --- a/tests/providers/aws/services/cloudwatch/cloudwatch_changes_to_network_route_tables_alarm_configured/cloudwatch_changes_to_network_route_tables_alarm_configured_test.py +++ b/tests/providers/aws/services/cloudwatch/cloudwatch_changes_to_network_route_tables_alarm_configured/cloudwatch_changes_to_network_route_tables_alarm_configured_test.py @@ -5,6 +5,7 @@ from moto import mock_cloudtrail, mock_cloudwatch, mock_logs, mock_s3 from moto.core import DEFAULT_ACCOUNT_ID from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info +from prowler.providers.common.models import Audit_Metadata AWS_REGION = "us-east-1" AWS_ACCOUNT_NUMBER = "123456789012" @@ -32,6 +33,12 @@ class Test_cloudwatch_changes_to_network_route_tables_alarm_configured: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/cloudwatch/cloudwatch_changes_to_vpcs_alarm_configured/cloudwatch_changes_to_vpcs_alarm_configured_test.py b/tests/providers/aws/services/cloudwatch/cloudwatch_changes_to_vpcs_alarm_configured/cloudwatch_changes_to_vpcs_alarm_configured_test.py index ba61bfd9..4642108f 100644 --- a/tests/providers/aws/services/cloudwatch/cloudwatch_changes_to_vpcs_alarm_configured/cloudwatch_changes_to_vpcs_alarm_configured_test.py +++ b/tests/providers/aws/services/cloudwatch/cloudwatch_changes_to_vpcs_alarm_configured/cloudwatch_changes_to_vpcs_alarm_configured_test.py @@ -5,6 +5,7 @@ from moto import mock_cloudtrail, mock_cloudwatch, mock_logs, mock_s3 from moto.core import DEFAULT_ACCOUNT_ID from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info +from prowler.providers.common.models import Audit_Metadata AWS_REGION = "us-east-1" AWS_ACCOUNT_NUMBER = "123456789012" @@ -32,6 +33,12 @@ class Test_cloudwatch_changes_to_vpcs_alarm_configured: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/cloudwatch/cloudwatch_cross_account_sharing_disabled/cloudwatch_cross_account_sharing_disabled_test.py b/tests/providers/aws/services/cloudwatch/cloudwatch_cross_account_sharing_disabled/cloudwatch_cross_account_sharing_disabled_test.py index f78528d4..4e856d74 100644 --- a/tests/providers/aws/services/cloudwatch/cloudwatch_cross_account_sharing_disabled/cloudwatch_cross_account_sharing_disabled_test.py +++ b/tests/providers/aws/services/cloudwatch/cloudwatch_cross_account_sharing_disabled/cloudwatch_cross_account_sharing_disabled_test.py @@ -4,6 +4,7 @@ from boto3 import client, session from moto import mock_iam from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info +from prowler.providers.common.models import Audit_Metadata AWS_REGION = "us-east-1" AWS_ACCOUNT_NUMBER = "123456789012" @@ -31,6 +32,12 @@ class Test_cloudwatch_cross_account_sharing_disabled: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/cloudwatch/cloudwatch_log_group_kms_encryption_enabled/cloudwatch_log_group_kms_encryption_enabled_test.py b/tests/providers/aws/services/cloudwatch/cloudwatch_log_group_kms_encryption_enabled/cloudwatch_log_group_kms_encryption_enabled_test.py index 4bf45aee..df1d423a 100644 --- a/tests/providers/aws/services/cloudwatch/cloudwatch_log_group_kms_encryption_enabled/cloudwatch_log_group_kms_encryption_enabled_test.py +++ b/tests/providers/aws/services/cloudwatch/cloudwatch_log_group_kms_encryption_enabled/cloudwatch_log_group_kms_encryption_enabled_test.py @@ -4,6 +4,7 @@ from boto3 import client, session from moto import mock_logs from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info +from prowler.providers.common.models import Audit_Metadata AWS_REGION = "us-east-1" AWS_ACCOUNT_NUMBER = "123456789012" @@ -31,6 +32,12 @@ class Test_cloudwatch_log_group_kms_encryption_enabled: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/cloudwatch/cloudwatch_log_group_no_secrets_in_logs/cloudwatch_log_group_no_secrets_in_logs_test.py b/tests/providers/aws/services/cloudwatch/cloudwatch_log_group_no_secrets_in_logs/cloudwatch_log_group_no_secrets_in_logs_test.py index 7cd8a668..a409e553 100644 --- a/tests/providers/aws/services/cloudwatch/cloudwatch_log_group_no_secrets_in_logs/cloudwatch_log_group_no_secrets_in_logs_test.py +++ b/tests/providers/aws/services/cloudwatch/cloudwatch_log_group_no_secrets_in_logs/cloudwatch_log_group_no_secrets_in_logs_test.py @@ -6,6 +6,7 @@ from moto import mock_logs from moto.core.utils import unix_time_millis from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info +from prowler.providers.common.models import Audit_Metadata AWS_REGION = "us-east-1" AWS_ACCOUNT_NUMBER = "123456789012" @@ -33,6 +34,12 @@ class Test_cloudwatch_log_group_no_secrets_in_logs: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/cloudwatch/cloudwatch_log_group_retention_policy_specific_days_enabled/cloudwatch_log_group_retention_policy_specific_days_enabled_test.py b/tests/providers/aws/services/cloudwatch/cloudwatch_log_group_retention_policy_specific_days_enabled/cloudwatch_log_group_retention_policy_specific_days_enabled_test.py index 77ecae14..80e6876a 100644 --- a/tests/providers/aws/services/cloudwatch/cloudwatch_log_group_retention_policy_specific_days_enabled/cloudwatch_log_group_retention_policy_specific_days_enabled_test.py +++ b/tests/providers/aws/services/cloudwatch/cloudwatch_log_group_retention_policy_specific_days_enabled/cloudwatch_log_group_retention_policy_specific_days_enabled_test.py @@ -4,6 +4,7 @@ from boto3 import client, session from moto import mock_logs from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info +from prowler.providers.common.models import Audit_Metadata AWS_REGION = "us-east-1" AWS_ACCOUNT_NUMBER = "123456789012" @@ -31,6 +32,12 @@ class Test_cloudwatch_log_group_retention_policy_specific_days_enabled: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/cloudwatch/cloudwatch_log_metric_filter_and_alarm_for_aws_config_configuration_changes_enabled/cloudwatch_log_metric_filter_and_alarm_for_aws_config_configuration_changes_enabled_test.py b/tests/providers/aws/services/cloudwatch/cloudwatch_log_metric_filter_and_alarm_for_aws_config_configuration_changes_enabled/cloudwatch_log_metric_filter_and_alarm_for_aws_config_configuration_changes_enabled_test.py index 204bcaa4..70fb7f5f 100644 --- a/tests/providers/aws/services/cloudwatch/cloudwatch_log_metric_filter_and_alarm_for_aws_config_configuration_changes_enabled/cloudwatch_log_metric_filter_and_alarm_for_aws_config_configuration_changes_enabled_test.py +++ b/tests/providers/aws/services/cloudwatch/cloudwatch_log_metric_filter_and_alarm_for_aws_config_configuration_changes_enabled/cloudwatch_log_metric_filter_and_alarm_for_aws_config_configuration_changes_enabled_test.py @@ -5,6 +5,7 @@ from moto import mock_cloudtrail, mock_cloudwatch, mock_logs, mock_s3 from moto.core import DEFAULT_ACCOUNT_ID from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info +from prowler.providers.common.models import Audit_Metadata AWS_REGION = "us-east-1" AWS_ACCOUNT_NUMBER = "123456789012" @@ -32,6 +33,12 @@ class Test_cloudwatch_log_metric_filter_and_alarm_for_aws_config_configuration_c organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/cloudwatch/cloudwatch_log_metric_filter_and_alarm_for_cloudtrail_configuration_changes_enabled/cloudwatch_log_metric_filter_and_alarm_for_cloudtrail_configuration_changes_enabled_test.py b/tests/providers/aws/services/cloudwatch/cloudwatch_log_metric_filter_and_alarm_for_cloudtrail_configuration_changes_enabled/cloudwatch_log_metric_filter_and_alarm_for_cloudtrail_configuration_changes_enabled_test.py index 5d823684..58a6b66e 100644 --- a/tests/providers/aws/services/cloudwatch/cloudwatch_log_metric_filter_and_alarm_for_cloudtrail_configuration_changes_enabled/cloudwatch_log_metric_filter_and_alarm_for_cloudtrail_configuration_changes_enabled_test.py +++ b/tests/providers/aws/services/cloudwatch/cloudwatch_log_metric_filter_and_alarm_for_cloudtrail_configuration_changes_enabled/cloudwatch_log_metric_filter_and_alarm_for_cloudtrail_configuration_changes_enabled_test.py @@ -5,6 +5,7 @@ from moto import mock_cloudtrail, mock_cloudwatch, mock_logs, mock_s3 from moto.core import DEFAULT_ACCOUNT_ID from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info +from prowler.providers.common.models import Audit_Metadata AWS_REGION = "us-east-1" AWS_ACCOUNT_NUMBER = "123456789012" @@ -32,6 +33,12 @@ class Test_cloudwatch_log_metric_filter_and_alarm_for_cloudtrail_configuration_c organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/cloudwatch/cloudwatch_log_metric_filter_authentication_failures/cloudwatch_log_metric_filter_authentication_failures_test.py b/tests/providers/aws/services/cloudwatch/cloudwatch_log_metric_filter_authentication_failures/cloudwatch_log_metric_filter_authentication_failures_test.py index 2e141cb3..4e86607e 100644 --- a/tests/providers/aws/services/cloudwatch/cloudwatch_log_metric_filter_authentication_failures/cloudwatch_log_metric_filter_authentication_failures_test.py +++ b/tests/providers/aws/services/cloudwatch/cloudwatch_log_metric_filter_authentication_failures/cloudwatch_log_metric_filter_authentication_failures_test.py @@ -5,6 +5,7 @@ from moto import mock_cloudtrail, mock_cloudwatch, mock_logs, mock_s3 from moto.core import DEFAULT_ACCOUNT_ID from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info +from prowler.providers.common.models import Audit_Metadata AWS_REGION = "us-east-1" AWS_ACCOUNT_NUMBER = "123456789012" @@ -32,6 +33,12 @@ class Test_cloudwatch_log_metric_filter_authentication_failures: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/cloudwatch/cloudwatch_log_metric_filter_aws_organizations_changes/cloudwatch_log_metric_filter_aws_organizations_changes_test.py b/tests/providers/aws/services/cloudwatch/cloudwatch_log_metric_filter_aws_organizations_changes/cloudwatch_log_metric_filter_aws_organizations_changes_test.py index 16f99d22..6962e5b2 100644 --- a/tests/providers/aws/services/cloudwatch/cloudwatch_log_metric_filter_aws_organizations_changes/cloudwatch_log_metric_filter_aws_organizations_changes_test.py +++ b/tests/providers/aws/services/cloudwatch/cloudwatch_log_metric_filter_aws_organizations_changes/cloudwatch_log_metric_filter_aws_organizations_changes_test.py @@ -5,6 +5,7 @@ from moto import mock_cloudtrail, mock_cloudwatch, mock_logs, mock_s3 from moto.core import DEFAULT_ACCOUNT_ID from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info +from prowler.providers.common.models import Audit_Metadata AWS_REGION = "us-east-1" AWS_ACCOUNT_NUMBER = "123456789012" @@ -32,6 +33,12 @@ class Test_cloudwatch_log_metric_filter_aws_organizations_changes: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/cloudwatch/cloudwatch_log_metric_filter_disable_or_scheduled_deletion_of_kms_cmk/cloudwatch_log_metric_filter_disable_or_scheduled_deletion_of_kms_cmk_test.py b/tests/providers/aws/services/cloudwatch/cloudwatch_log_metric_filter_disable_or_scheduled_deletion_of_kms_cmk/cloudwatch_log_metric_filter_disable_or_scheduled_deletion_of_kms_cmk_test.py index 5465dbea..db9d996b 100644 --- a/tests/providers/aws/services/cloudwatch/cloudwatch_log_metric_filter_disable_or_scheduled_deletion_of_kms_cmk/cloudwatch_log_metric_filter_disable_or_scheduled_deletion_of_kms_cmk_test.py +++ b/tests/providers/aws/services/cloudwatch/cloudwatch_log_metric_filter_disable_or_scheduled_deletion_of_kms_cmk/cloudwatch_log_metric_filter_disable_or_scheduled_deletion_of_kms_cmk_test.py @@ -5,6 +5,7 @@ from moto import mock_cloudtrail, mock_cloudwatch, mock_logs, mock_s3 from moto.core import DEFAULT_ACCOUNT_ID from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info +from prowler.providers.common.models import Audit_Metadata AWS_REGION = "us-east-1" AWS_ACCOUNT_NUMBER = "123456789012" @@ -32,6 +33,12 @@ class Test_cloudwatch_log_metric_filter_disable_or_scheduled_deletion_of_kms_cmk organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/cloudwatch/cloudwatch_log_metric_filter_for_s3_bucket_policy_changes/cloudwatch_log_metric_filter_for_s3_bucket_policy_changes_test.py b/tests/providers/aws/services/cloudwatch/cloudwatch_log_metric_filter_for_s3_bucket_policy_changes/cloudwatch_log_metric_filter_for_s3_bucket_policy_changes_test.py index 57401bf1..343d4dbd 100644 --- a/tests/providers/aws/services/cloudwatch/cloudwatch_log_metric_filter_for_s3_bucket_policy_changes/cloudwatch_log_metric_filter_for_s3_bucket_policy_changes_test.py +++ b/tests/providers/aws/services/cloudwatch/cloudwatch_log_metric_filter_for_s3_bucket_policy_changes/cloudwatch_log_metric_filter_for_s3_bucket_policy_changes_test.py @@ -5,6 +5,7 @@ from moto import mock_cloudtrail, mock_cloudwatch, mock_logs, mock_s3 from moto.core import DEFAULT_ACCOUNT_ID from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info +from prowler.providers.common.models import Audit_Metadata AWS_REGION = "us-east-1" AWS_ACCOUNT_NUMBER = "123456789012" @@ -32,6 +33,12 @@ class Test_cloudwatch_log_metric_filter_for_s3_bucket_policy_changes: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/cloudwatch/cloudwatch_log_metric_filter_policy_changes/cloudwatch_log_metric_filter_policy_changes_test.py b/tests/providers/aws/services/cloudwatch/cloudwatch_log_metric_filter_policy_changes/cloudwatch_log_metric_filter_policy_changes_test.py index f65e663e..c99f70a3 100644 --- a/tests/providers/aws/services/cloudwatch/cloudwatch_log_metric_filter_policy_changes/cloudwatch_log_metric_filter_policy_changes_test.py +++ b/tests/providers/aws/services/cloudwatch/cloudwatch_log_metric_filter_policy_changes/cloudwatch_log_metric_filter_policy_changes_test.py @@ -5,6 +5,7 @@ from moto import mock_cloudtrail, mock_cloudwatch, mock_logs, mock_s3 from moto.core import DEFAULT_ACCOUNT_ID from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info +from prowler.providers.common.models import Audit_Metadata AWS_REGION = "us-east-1" AWS_ACCOUNT_NUMBER = "123456789012" @@ -32,6 +33,12 @@ class Test_cloudwatch_log_metric_filter_unauthorized_api_calls: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/cloudwatch/cloudwatch_log_metric_filter_root_usage/cloudwatch_log_metric_filter_root_usage_test.py b/tests/providers/aws/services/cloudwatch/cloudwatch_log_metric_filter_root_usage/cloudwatch_log_metric_filter_root_usage_test.py index 2c32ff61..1e5ab6c7 100644 --- a/tests/providers/aws/services/cloudwatch/cloudwatch_log_metric_filter_root_usage/cloudwatch_log_metric_filter_root_usage_test.py +++ b/tests/providers/aws/services/cloudwatch/cloudwatch_log_metric_filter_root_usage/cloudwatch_log_metric_filter_root_usage_test.py @@ -5,6 +5,7 @@ from moto import mock_cloudtrail, mock_cloudwatch, mock_logs, mock_s3 from moto.core import DEFAULT_ACCOUNT_ID from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info +from prowler.providers.common.models import Audit_Metadata AWS_REGION = "us-east-1" AWS_ACCOUNT_NUMBER = "123456789012" @@ -32,6 +33,12 @@ class Test_cloudwatch_log_metric_filter_root_usage: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/cloudwatch/cloudwatch_log_metric_filter_security_group_changes/cloudwatch_log_metric_filter_security_group_changes_test.py b/tests/providers/aws/services/cloudwatch/cloudwatch_log_metric_filter_security_group_changes/cloudwatch_log_metric_filter_security_group_changes_test.py index 53751b98..54ab9672 100644 --- a/tests/providers/aws/services/cloudwatch/cloudwatch_log_metric_filter_security_group_changes/cloudwatch_log_metric_filter_security_group_changes_test.py +++ b/tests/providers/aws/services/cloudwatch/cloudwatch_log_metric_filter_security_group_changes/cloudwatch_log_metric_filter_security_group_changes_test.py @@ -5,6 +5,7 @@ from moto import mock_cloudtrail, mock_cloudwatch, mock_logs, mock_s3 from moto.core import DEFAULT_ACCOUNT_ID from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info +from prowler.providers.common.models import Audit_Metadata AWS_REGION = "us-east-1" AWS_ACCOUNT_NUMBER = "123456789012" @@ -32,6 +33,12 @@ class Test_cloudwatch_log_metric_filter_unauthorized_api_calls: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/cloudwatch/cloudwatch_log_metric_filter_sign_in_without_mfa/cloudwatch_log_metric_filter_sign_in_without_mfa_test.py b/tests/providers/aws/services/cloudwatch/cloudwatch_log_metric_filter_sign_in_without_mfa/cloudwatch_log_metric_filter_sign_in_without_mfa_test.py index ec2b8217..b2ddb1a3 100644 --- a/tests/providers/aws/services/cloudwatch/cloudwatch_log_metric_filter_sign_in_without_mfa/cloudwatch_log_metric_filter_sign_in_without_mfa_test.py +++ b/tests/providers/aws/services/cloudwatch/cloudwatch_log_metric_filter_sign_in_without_mfa/cloudwatch_log_metric_filter_sign_in_without_mfa_test.py @@ -5,6 +5,7 @@ from moto import mock_cloudtrail, mock_cloudwatch, mock_logs, mock_s3 from moto.core import DEFAULT_ACCOUNT_ID from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info +from prowler.providers.common.models import Audit_Metadata AWS_REGION = "us-east-1" AWS_ACCOUNT_NUMBER = "123456789012" @@ -32,6 +33,12 @@ class Test_cloudwatch_log_metric_filter_sign_in_without_mfa: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/cloudwatch/cloudwatch_log_metric_filter_unauthorized_api_calls/cloudwatch_log_metric_filter_unauthorized_api_calls_test.py b/tests/providers/aws/services/cloudwatch/cloudwatch_log_metric_filter_unauthorized_api_calls/cloudwatch_log_metric_filter_unauthorized_api_calls_test.py index 4f7cb652..3f1e26b8 100644 --- a/tests/providers/aws/services/cloudwatch/cloudwatch_log_metric_filter_unauthorized_api_calls/cloudwatch_log_metric_filter_unauthorized_api_calls_test.py +++ b/tests/providers/aws/services/cloudwatch/cloudwatch_log_metric_filter_unauthorized_api_calls/cloudwatch_log_metric_filter_unauthorized_api_calls_test.py @@ -5,6 +5,7 @@ from moto import mock_cloudtrail, mock_cloudwatch, mock_logs, mock_s3 from moto.core import DEFAULT_ACCOUNT_ID from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info +from prowler.providers.common.models import Audit_Metadata AWS_REGION = "us-east-1" AWS_ACCOUNT_NUMBER = "123456789012" @@ -32,6 +33,12 @@ class Test_cloudwatch_log_metric_filter_unauthorized_api_calls: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/codeartifact/codeartifact_service_test.py b/tests/providers/aws/services/codeartifact/codeartifact_service_test.py index 6ad3f3ea..7104545c 100644 --- a/tests/providers/aws/services/codeartifact/codeartifact_service_test.py +++ b/tests/providers/aws/services/codeartifact/codeartifact_service_test.py @@ -11,6 +11,7 @@ from prowler.providers.aws.services.codeartifact.codeartifact_service import ( OriginInformationValues, RestrictionValues, ) +from prowler.providers.common.models import Audit_Metadata # Mock Test Region AWS_REGION = "eu-west-1" @@ -90,7 +91,7 @@ def mock_make_api_call(self, operation_name, kwarg): # Mock generate_regional_clients() -def mock_generate_regional_clients(service, audit_info): +def mock_generate_regional_clients(service, audit_info, _): regional_client = audit_info.audit_session.client(service, region_name=AWS_REGION) regional_client.region = AWS_REGION return {AWS_REGION: regional_client} @@ -99,7 +100,7 @@ def mock_generate_regional_clients(service, audit_info): # Patch every AWS call using Boto3 and generate_regional_clients to have 1 client @patch("botocore.client.BaseClient._make_api_call", new=mock_make_api_call) @patch( - "prowler.providers.aws.services.codeartifact.codeartifact_service.generate_regional_clients", + "prowler.providers.aws.lib.service.service.generate_regional_clients", new=mock_generate_regional_clients, ) class Test_CodeArtifact_Service: @@ -124,6 +125,12 @@ class Test_CodeArtifact_Service: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/codebuild/codebuild_service_test.py b/tests/providers/aws/services/codebuild/codebuild_service_test.py index 1afad5ae..fe156dfe 100644 --- a/tests/providers/aws/services/codebuild/codebuild_service_test.py +++ b/tests/providers/aws/services/codebuild/codebuild_service_test.py @@ -6,6 +6,7 @@ from boto3 import session from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info from prowler.providers.aws.services.codebuild.codebuild_service import Codebuild +from prowler.providers.common.models import Audit_Metadata # Mock Test Region AWS_REGION = "eu-west-1" @@ -40,7 +41,7 @@ def mock_make_api_call(self, operation_name, kwarg): # Mock generate_regional_clients() -def mock_generate_regional_clients(service, audit_info): +def mock_generate_regional_clients(service, audit_info, _): regional_client = audit_info.audit_session.client(service, region_name=AWS_REGION) regional_client.region = AWS_REGION return {AWS_REGION: regional_client} @@ -48,7 +49,7 @@ def mock_generate_regional_clients(service, audit_info): @patch("botocore.client.BaseClient._make_api_call", new=mock_make_api_call) @patch( - "prowler.providers.aws.services.codebuild.codebuild_service.generate_regional_clients", + "prowler.providers.aws.lib.service.service.generate_regional_clients", new=mock_generate_regional_clients, ) class Test_Codebuild_Service: @@ -73,6 +74,12 @@ class Test_Codebuild_Service: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/config/config_recorder_all_regions_enabled/config_recorder_all_regions_enabled_test.py b/tests/providers/aws/services/config/config_recorder_all_regions_enabled/config_recorder_all_regions_enabled_test.py index eacc3dd3..7d28d161 100644 --- a/tests/providers/aws/services/config/config_recorder_all_regions_enabled/config_recorder_all_regions_enabled_test.py +++ b/tests/providers/aws/services/config/config_recorder_all_regions_enabled/config_recorder_all_regions_enabled_test.py @@ -4,6 +4,7 @@ from boto3 import client, session from moto import mock_config from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info +from prowler.providers.common.models import Audit_Metadata AWS_REGION = "us-east-1" AWS_ACCOUNT_NUMBER = "123456789012" @@ -31,6 +32,12 @@ class Test_config_recorder_all_regions_enabled: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/config/config_service_test.py b/tests/providers/aws/services/config/config_service_test.py index 612cd084..b9aae1e4 100644 --- a/tests/providers/aws/services/config/config_service_test.py +++ b/tests/providers/aws/services/config/config_service_test.py @@ -3,6 +3,7 @@ from moto import mock_config from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info from prowler.providers.aws.services.config.config_service import Config +from prowler.providers.common.models import Audit_Metadata AWS_ACCOUNT_NUMBER = "123456789012" AWS_REGION = "us-east-1" @@ -31,6 +32,12 @@ class Test_Config_Service: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/directoryservice/directoryservice_service_test.py b/tests/providers/aws/services/directoryservice/directoryservice_service_test.py index fbaec5fe..86104fe9 100644 --- a/tests/providers/aws/services/directoryservice/directoryservice_service_test.py +++ b/tests/providers/aws/services/directoryservice/directoryservice_service_test.py @@ -16,6 +16,7 @@ from prowler.providers.aws.services.directoryservice.directoryservice_service im EventTopicStatus, RadiusStatus, ) +from prowler.providers.common.models import Audit_Metadata # Mock Test Region AWS_REGION = "eu-west-1" @@ -105,7 +106,7 @@ def mock_make_api_call(self, operation_name, kwarg): # Mock generate_regional_clients() -def mock_generate_regional_clients(service, audit_info): +def mock_generate_regional_clients(service, audit_info, _): regional_client = audit_info.audit_session.client(service, region_name=AWS_REGION) regional_client.region = AWS_REGION return {AWS_REGION: regional_client} @@ -114,7 +115,7 @@ def mock_generate_regional_clients(service, audit_info): # Patch every AWS call using Boto3 and generate_regional_clients to have 1 client @patch("botocore.client.BaseClient._make_api_call", new=mock_make_api_call) @patch( - "prowler.providers.aws.services.directoryservice.directoryservice_service.generate_regional_clients", + "prowler.providers.aws.lib.service.service.generate_regional_clients", new=mock_generate_regional_clients, ) class Test_DirectoryService_Service: @@ -139,6 +140,12 @@ class Test_DirectoryService_Service: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/drs/drs_service_test.py b/tests/providers/aws/services/drs/drs_service_test.py index 5cd573ed..1c85ce71 100644 --- a/tests/providers/aws/services/drs/drs_service_test.py +++ b/tests/providers/aws/services/drs/drs_service_test.py @@ -6,6 +6,7 @@ from boto3 import session from prowler.providers.aws.lib.audit_info.audit_info import AWS_Audit_Info from prowler.providers.aws.services.drs.drs_service import DRS +from prowler.providers.common.models import Audit_Metadata # Mock Test Region AWS_REGION = "us-east-1" @@ -42,7 +43,7 @@ def mock_make_api_call(self, operation_name, kwargs): return make_api_call(self, operation_name, kwargs) -def mock_generate_regional_clients(service, audit_info): +def mock_generate_regional_clients(service, audit_info, _): regional_client = audit_info.audit_session.client(service, region_name=AWS_REGION) regional_client.region = AWS_REGION return {AWS_REGION: regional_client} @@ -51,7 +52,7 @@ def mock_generate_regional_clients(service, audit_info): # Patch every AWS call using Boto3 and generate_regional_clients to have 1 client @patch("botocore.client.BaseClient._make_api_call", new=mock_make_api_call) @patch( - "prowler.providers.aws.services.drs.drs_service.generate_regional_clients", + "prowler.providers.aws.lib.service.service.generate_regional_clients", new=mock_generate_regional_clients, ) class Test_DRS_Service: @@ -77,6 +78,12 @@ class Test_DRS_Service: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/dynamodb/dynamodb_accelerator_cluster_encryption_enabled/dynamodb_accelerator_cluster_encryption_enabled_test.py b/tests/providers/aws/services/dynamodb/dynamodb_accelerator_cluster_encryption_enabled/dynamodb_accelerator_cluster_encryption_enabled_test.py index 476059d6..624ef662 100644 --- a/tests/providers/aws/services/dynamodb/dynamodb_accelerator_cluster_encryption_enabled/dynamodb_accelerator_cluster_encryption_enabled_test.py +++ b/tests/providers/aws/services/dynamodb/dynamodb_accelerator_cluster_encryption_enabled/dynamodb_accelerator_cluster_encryption_enabled_test.py @@ -6,6 +6,7 @@ from moto import mock_dax from moto.core import DEFAULT_ACCOUNT_ID from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info +from prowler.providers.common.models import Audit_Metadata AWS_REGION = "us-east-1" @@ -32,6 +33,12 @@ class Test_dynamodb_accelerator_cluster_encryption_enabled: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/dynamodb/dynamodb_service_test.py b/tests/providers/aws/services/dynamodb/dynamodb_service_test.py index 6ceb6e6e..f6726b29 100644 --- a/tests/providers/aws/services/dynamodb/dynamodb_service_test.py +++ b/tests/providers/aws/services/dynamodb/dynamodb_service_test.py @@ -3,6 +3,7 @@ from moto import mock_dax, mock_dynamodb from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info from prowler.providers.aws.services.dynamodb.dynamodb_service import DAX, DynamoDB +from prowler.providers.common.models import Audit_Metadata AWS_ACCOUNT_NUMBER = "123456789012" AWS_REGION = "us-east-1" @@ -31,6 +32,12 @@ class Test_DynamoDB_Service: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/dynamodb/dynamodb_tables_kms_cmk_encryption_enabled/dynamodb_tables_kms_cmk_encryption_enabled_test.py b/tests/providers/aws/services/dynamodb/dynamodb_tables_kms_cmk_encryption_enabled/dynamodb_tables_kms_cmk_encryption_enabled_test.py index 3700454d..f0cfae8a 100644 --- a/tests/providers/aws/services/dynamodb/dynamodb_tables_kms_cmk_encryption_enabled/dynamodb_tables_kms_cmk_encryption_enabled_test.py +++ b/tests/providers/aws/services/dynamodb/dynamodb_tables_kms_cmk_encryption_enabled/dynamodb_tables_kms_cmk_encryption_enabled_test.py @@ -5,6 +5,7 @@ from boto3 import client, session from moto import mock_dynamodb from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info +from prowler.providers.common.models import Audit_Metadata AWS_REGION = "us-east-1" AWS_ACCOUNT_NUMBER = "123456789012" @@ -32,6 +33,12 @@ class Test_dynamodb_tables_kms_cmk_encryption_enabled: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/dynamodb/dynamodb_tables_pitr_enabled/dynamodb_tables_pitr_enabled_test.py b/tests/providers/aws/services/dynamodb/dynamodb_tables_pitr_enabled/dynamodb_tables_pitr_enabled_test.py index 220b0e69..6bb32b52 100644 --- a/tests/providers/aws/services/dynamodb/dynamodb_tables_pitr_enabled/dynamodb_tables_pitr_enabled_test.py +++ b/tests/providers/aws/services/dynamodb/dynamodb_tables_pitr_enabled/dynamodb_tables_pitr_enabled_test.py @@ -5,6 +5,7 @@ from boto3 import client, session from moto import mock_dynamodb from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info +from prowler.providers.common.models import Audit_Metadata AWS_REGION = "us-east-1" AWS_ACCOUNT_NUMBER = "123456789012" @@ -32,6 +33,12 @@ class Test_dynamodb_tables_pitr_enabled: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/ec2/ec2_ebs_public_snapshot/ec2_ebs_public_snapshot_test.py b/tests/providers/aws/services/ec2/ec2_ebs_public_snapshot/ec2_ebs_public_snapshot_test.py index 17b3c3df..44064cad 100644 --- a/tests/providers/aws/services/ec2/ec2_ebs_public_snapshot/ec2_ebs_public_snapshot_test.py +++ b/tests/providers/aws/services/ec2/ec2_ebs_public_snapshot/ec2_ebs_public_snapshot_test.py @@ -11,14 +11,14 @@ AWS_REGION = "us-east-1" AWS_ACCOUNT_NUMBER = "123456789012" -def mock_generate_regional_clients(service, audit_info): +def mock_generate_regional_clients(service, audit_info, _): regional_client = audit_info.audit_session.client(service, region_name=AWS_REGION) regional_client.region = AWS_REGION return {AWS_REGION: regional_client} @patch( - "prowler.providers.aws.services.ec2.ec2_service.generate_regional_clients", + "prowler.providers.aws.lib.service.service.generate_regional_clients", new=mock_generate_regional_clients, ) class Test_ec2_ebs_public_snapshot: diff --git a/tests/providers/aws/services/ec2/ec2_ebs_snapshots_encrypted/ec2_ebs_snapshots_encrypted_test.py b/tests/providers/aws/services/ec2/ec2_ebs_snapshots_encrypted/ec2_ebs_snapshots_encrypted_test.py index 5eff521f..a2a6094e 100644 --- a/tests/providers/aws/services/ec2/ec2_ebs_snapshots_encrypted/ec2_ebs_snapshots_encrypted_test.py +++ b/tests/providers/aws/services/ec2/ec2_ebs_snapshots_encrypted/ec2_ebs_snapshots_encrypted_test.py @@ -11,14 +11,14 @@ AWS_REGION = "us-east-1" AWS_ACCOUNT_NUMBER = "123456789012" -def mock_generate_regional_clients(service, audit_info): +def mock_generate_regional_clients(service, audit_info, _): regional_client = audit_info.audit_session.client(service, region_name=AWS_REGION) regional_client.region = AWS_REGION return {AWS_REGION: regional_client} @patch( - "prowler.providers.aws.services.ec2.ec2_service.generate_regional_clients", + "prowler.providers.aws.lib.service.service.generate_regional_clients", new=mock_generate_regional_clients, ) class Test_ec2_ebs_snapshots_encrypted: diff --git a/tests/providers/aws/services/ecr/ecr_service_test.py b/tests/providers/aws/services/ecr/ecr_service_test.py index b27b8750..f05961a9 100644 --- a/tests/providers/aws/services/ecr/ecr_service_test.py +++ b/tests/providers/aws/services/ecr/ecr_service_test.py @@ -7,6 +7,7 @@ from moto import mock_ecr from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info from prowler.providers.aws.services.ecr.ecr_service import ECR, ScanningRule +from prowler.providers.common.models import Audit_Metadata AWS_ACCOUNT_NUMBER = "123456789012" AWS_REGION = "eu-west-1" @@ -81,7 +82,7 @@ def mock_make_api_call(self, operation_name, kwarg): return make_api_call(self, operation_name, kwarg) -def mock_generate_regional_clients(service, audit_info): +def mock_generate_regional_clients(service, audit_info, _): regional_client = audit_info.audit_session.client(service, region_name=AWS_REGION) regional_client.region = AWS_REGION return {AWS_REGION: regional_client} @@ -90,7 +91,7 @@ def mock_generate_regional_clients(service, audit_info): # Patch every AWS call using Boto3 and generate_regional_clients to have 1 client @patch("botocore.client.BaseClient._make_api_call", new=mock_make_api_call) @patch( - "prowler.providers.aws.services.ecr.ecr_service.generate_regional_clients", + "prowler.providers.aws.lib.service.service.generate_regional_clients", new=mock_generate_regional_clients, ) class Test_ECR_Service: @@ -116,6 +117,12 @@ class Test_ECR_Service: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/ecs/ecs_service_test.py b/tests/providers/aws/services/ecs/ecs_service_test.py index 2feb2358..98d10b71 100644 --- a/tests/providers/aws/services/ecs/ecs_service_test.py +++ b/tests/providers/aws/services/ecs/ecs_service_test.py @@ -5,19 +5,20 @@ from moto import mock_ecs from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info from prowler.providers.aws.services.ecs.ecs_service import ECS +from prowler.providers.common.models import Audit_Metadata AWS_ACCOUNT_NUMBER = "123456789012" AWS_REGION = "eu-west-1" -def mock_generate_regional_clients(service, audit_info): +def mock_generate_regional_clients(service, audit_info, _): regional_client = audit_info.audit_session.client(service, region_name=AWS_REGION) regional_client.region = AWS_REGION return {AWS_REGION: regional_client} @patch( - "prowler.providers.aws.services.ecs.ecs_service.generate_regional_clients", + "prowler.providers.aws.lib.service.service.generate_regional_clients", new=mock_generate_regional_clients, ) class Test_ECS_Service: @@ -43,6 +44,12 @@ class Test_ECS_Service: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/efs/efs_service_test.py b/tests/providers/aws/services/efs/efs_service_test.py index 06e13c89..f484fa1f 100644 --- a/tests/providers/aws/services/efs/efs_service_test.py +++ b/tests/providers/aws/services/efs/efs_service_test.py @@ -7,6 +7,7 @@ from moto import mock_efs from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info from prowler.providers.aws.services.efs.efs_service import EFS +from prowler.providers.common.models import Audit_Metadata # Mock Test Region AWS_REGION = "eu-west-1" @@ -41,7 +42,7 @@ def mock_make_api_call(self, operation_name, kwarg): return make_api_call(self, operation_name, kwarg) -def mock_generate_regional_clients(service, audit_info): +def mock_generate_regional_clients(service, audit_info, _): regional_client = audit_info.audit_session.client(service, region_name=AWS_REGION) regional_client.region = AWS_REGION return {AWS_REGION: regional_client} @@ -50,7 +51,7 @@ def mock_generate_regional_clients(service, audit_info): # Patch every AWS call using Boto3 and generate_regional_clients to have 1 client @patch("botocore.client.BaseClient._make_api_call", new=mock_make_api_call) @patch( - "prowler.providers.aws.services.efs.efs_service.generate_regional_clients", + "prowler.providers.aws.lib.service.service.generate_regional_clients", new=mock_generate_regional_clients, ) class Test_EFS: @@ -75,6 +76,12 @@ class Test_EFS: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/eks/eks_service_test.py b/tests/providers/aws/services/eks/eks_service_test.py index 23222053..ec52e85a 100644 --- a/tests/providers/aws/services/eks/eks_service_test.py +++ b/tests/providers/aws/services/eks/eks_service_test.py @@ -5,6 +5,7 @@ from moto import mock_ec2, mock_eks from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info from prowler.providers.aws.services.eks.eks_service import EKS +from prowler.providers.common.models import Audit_Metadata AWS_ACCOUNT_NUMBER = "123456789012" AWS_REGION = "eu-west-1" @@ -15,14 +16,14 @@ cidr_block_subnet_1 = "10.0.0.0/22" cidr_block_subnet_2 = "10.0.4.0/22" -def mock_generate_regional_clients(service, audit_info): +def mock_generate_regional_clients(service, audit_info, _): regional_client = audit_info.audit_session.client(service, region_name=AWS_REGION) regional_client.region = AWS_REGION return {AWS_REGION: regional_client} @patch( - "prowler.providers.aws.services.eks.eks_service.generate_regional_clients", + "prowler.providers.aws.lib.service.service.generate_regional_clients", new=mock_generate_regional_clients, ) class Test_EKS_Service: @@ -48,6 +49,12 @@ class Test_EKS_Service: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/elb/elb_insecure_ssl_ciphers/elb_insecure_ssl_ciphers_test.py b/tests/providers/aws/services/elb/elb_insecure_ssl_ciphers/elb_insecure_ssl_ciphers_test.py index 6c2a6079..2026efb6 100644 --- a/tests/providers/aws/services/elb/elb_insecure_ssl_ciphers/elb_insecure_ssl_ciphers_test.py +++ b/tests/providers/aws/services/elb/elb_insecure_ssl_ciphers/elb_insecure_ssl_ciphers_test.py @@ -5,6 +5,7 @@ from boto3 import client, resource, session from moto import mock_ec2, mock_elb from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info +from prowler.providers.common.models import Audit_Metadata AWS_REGION = "eu-west-1" AWS_ACCOUNT_NUMBER = "123456789012" @@ -32,6 +33,12 @@ class Test_elb_insecure_ssl_ciphers: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/elb/elb_internet_facing/elb_internet_facing_test.py b/tests/providers/aws/services/elb/elb_internet_facing/elb_internet_facing_test.py index fc3ad525..8700533d 100644 --- a/tests/providers/aws/services/elb/elb_internet_facing/elb_internet_facing_test.py +++ b/tests/providers/aws/services/elb/elb_internet_facing/elb_internet_facing_test.py @@ -5,6 +5,7 @@ from boto3 import client, resource, session from moto import mock_ec2, mock_elb from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info +from prowler.providers.common.models import Audit_Metadata AWS_REGION = "eu-west-1" AWS_ACCOUNT_NUMBER = "123456789012" @@ -32,6 +33,12 @@ class Test_elb_request_smugling: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/elb/elb_logging_enabled/elb_logging_enabled_test.py b/tests/providers/aws/services/elb/elb_logging_enabled/elb_logging_enabled_test.py index df3aec07..3df75f3f 100644 --- a/tests/providers/aws/services/elb/elb_logging_enabled/elb_logging_enabled_test.py +++ b/tests/providers/aws/services/elb/elb_logging_enabled/elb_logging_enabled_test.py @@ -5,6 +5,7 @@ from boto3 import client, resource, session from moto import mock_ec2, mock_elb from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info +from prowler.providers.common.models import Audit_Metadata AWS_REGION = "eu-west-1" AWS_ACCOUNT_NUMBER = "123456789012" @@ -32,6 +33,12 @@ class Test_elb_logging_enabled: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/elb/elb_service_test.py b/tests/providers/aws/services/elb/elb_service_test.py index b94cb766..51c21c06 100644 --- a/tests/providers/aws/services/elb/elb_service_test.py +++ b/tests/providers/aws/services/elb/elb_service_test.py @@ -3,6 +3,7 @@ from moto import mock_ec2, mock_elb from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info from prowler.providers.aws.services.elb.elb_service import ELB +from prowler.providers.common.models import Audit_Metadata AWS_ACCOUNT_NUMBER = "123456789012" AWS_REGION = "us-east-1" @@ -31,6 +32,12 @@ class Test_ELB_Service: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/elb/elb_ssl_listeners/elb_ssl_listeners_test.py b/tests/providers/aws/services/elb/elb_ssl_listeners/elb_ssl_listeners_test.py index 0a395129..bbc8b4f6 100644 --- a/tests/providers/aws/services/elb/elb_ssl_listeners/elb_ssl_listeners_test.py +++ b/tests/providers/aws/services/elb/elb_ssl_listeners/elb_ssl_listeners_test.py @@ -5,6 +5,7 @@ from boto3 import client, resource, session from moto import mock_ec2, mock_elb from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info +from prowler.providers.common.models import Audit_Metadata AWS_REGION = "eu-west-1" AWS_ACCOUNT_NUMBER = "123456789012" @@ -32,6 +33,12 @@ class Test_elb_ssl_listeners: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/elbv2/elbv2_deletion_protection/elbv2_deletion_protection_test.py b/tests/providers/aws/services/elbv2/elbv2_deletion_protection/elbv2_deletion_protection_test.py index 50b2a8eb..500647b3 100644 --- a/tests/providers/aws/services/elbv2/elbv2_deletion_protection/elbv2_deletion_protection_test.py +++ b/tests/providers/aws/services/elbv2/elbv2_deletion_protection/elbv2_deletion_protection_test.py @@ -5,6 +5,7 @@ from boto3 import client, resource, session from moto import mock_ec2, mock_elbv2 from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info +from prowler.providers.common.models import Audit_Metadata AWS_REGION = "eu-west-1" AWS_ACCOUNT_NUMBER = "123456789012" @@ -32,6 +33,12 @@ class Test_elbv2_deletion_protection: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/elbv2/elbv2_desync_mitigation_mode/elbv2_desync_mitigation_mode_test.py b/tests/providers/aws/services/elbv2/elbv2_desync_mitigation_mode/elbv2_desync_mitigation_mode_test.py index 532cc4da..3e3d19c4 100644 --- a/tests/providers/aws/services/elbv2/elbv2_desync_mitigation_mode/elbv2_desync_mitigation_mode_test.py +++ b/tests/providers/aws/services/elbv2/elbv2_desync_mitigation_mode/elbv2_desync_mitigation_mode_test.py @@ -5,6 +5,7 @@ from boto3 import client, resource, session from moto import mock_ec2, mock_elbv2 from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info +from prowler.providers.common.models import Audit_Metadata AWS_REGION = "eu-west-1" AWS_ACCOUNT_NUMBER = "123456789012" @@ -32,6 +33,12 @@ class Test_elbv2_desync_mitigation_mode: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/elbv2/elbv2_insecure_ssl_ciphers/elbv2_insecure_ssl_ciphers_test.py b/tests/providers/aws/services/elbv2/elbv2_insecure_ssl_ciphers/elbv2_insecure_ssl_ciphers_test.py index 48a98efc..8a01fa18 100644 --- a/tests/providers/aws/services/elbv2/elbv2_insecure_ssl_ciphers/elbv2_insecure_ssl_ciphers_test.py +++ b/tests/providers/aws/services/elbv2/elbv2_insecure_ssl_ciphers/elbv2_insecure_ssl_ciphers_test.py @@ -5,6 +5,7 @@ from boto3 import client, resource, session from moto import mock_ec2, mock_elbv2 from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info +from prowler.providers.common.models import Audit_Metadata AWS_REGION = "eu-west-1" AWS_ACCOUNT_NUMBER = "123456789012" @@ -32,6 +33,12 @@ class Test_elbv2_insecure_ssl_ciphers: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/elbv2/elbv2_internet_facing/elbv2_internet_facing_test.py b/tests/providers/aws/services/elbv2/elbv2_internet_facing/elbv2_internet_facing_test.py index 10edf37b..f0e513e6 100644 --- a/tests/providers/aws/services/elbv2/elbv2_internet_facing/elbv2_internet_facing_test.py +++ b/tests/providers/aws/services/elbv2/elbv2_internet_facing/elbv2_internet_facing_test.py @@ -5,6 +5,7 @@ from boto3 import client, resource, session from moto import mock_ec2, mock_elbv2 from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info +from prowler.providers.common.models import Audit_Metadata AWS_REGION = "eu-west-1" AWS_ACCOUNT_NUMBER = "123456789012" @@ -32,6 +33,12 @@ class Test_elbv2_internet_facing: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info @@ -109,7 +116,7 @@ class Test_elbv2_internet_facing: @mock_ec2 @mock_elbv2 - def test_elbv2_with_deletion_protection(self): + def test_elbv2_internet_facing(self): conn = client("elbv2", region_name=AWS_REGION) ec2 = resource("ec2", region_name=AWS_REGION) diff --git a/tests/providers/aws/services/elbv2/elbv2_listeners_underneath/elbv2_listeners_underneath_test.py b/tests/providers/aws/services/elbv2/elbv2_listeners_underneath/elbv2_listeners_underneath_test.py index 08531ab3..a92d08d7 100644 --- a/tests/providers/aws/services/elbv2/elbv2_listeners_underneath/elbv2_listeners_underneath_test.py +++ b/tests/providers/aws/services/elbv2/elbv2_listeners_underneath/elbv2_listeners_underneath_test.py @@ -5,6 +5,7 @@ from boto3 import client, resource, session from moto import mock_ec2, mock_elbv2 from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info +from prowler.providers.common.models import Audit_Metadata AWS_REGION = "eu-west-1" AWS_ACCOUNT_NUMBER = "123456789012" @@ -32,6 +33,12 @@ class Test_elbv2_listeners_underneath: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/elbv2/elbv2_logging_enabled/elbv2_logging_enabled_test.py b/tests/providers/aws/services/elbv2/elbv2_logging_enabled/elbv2_logging_enabled_test.py index 148eddc9..144c5174 100644 --- a/tests/providers/aws/services/elbv2/elbv2_logging_enabled/elbv2_logging_enabled_test.py +++ b/tests/providers/aws/services/elbv2/elbv2_logging_enabled/elbv2_logging_enabled_test.py @@ -5,6 +5,7 @@ from boto3 import client, resource, session from moto import mock_ec2, mock_elbv2 from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info +from prowler.providers.common.models import Audit_Metadata AWS_REGION = "eu-west-1" AWS_ACCOUNT_NUMBER = "123456789012" @@ -32,6 +33,12 @@ class Test_elbv2_logging_enabled: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info @@ -59,7 +66,7 @@ class Test_elbv2_logging_enabled: @mock_ec2 @mock_elbv2 - def test_elbv2_without_deletion_protection(self): + def test_elbv2_without_logging_enabled(self): conn = client("elbv2", region_name=AWS_REGION) ec2 = resource("ec2", region_name=AWS_REGION) @@ -119,7 +126,7 @@ class Test_elbv2_logging_enabled: @mock_ec2 @mock_elbv2 - def test_elbv2_with_deletion_protection(self): + def test_elbv2_with_logging_enabled(self): conn = client("elbv2", region_name=AWS_REGION) ec2 = resource("ec2", region_name=AWS_REGION) diff --git a/tests/providers/aws/services/elbv2/elbv2_service_test.py b/tests/providers/aws/services/elbv2/elbv2_service_test.py index 17abd403..5760ba2e 100644 --- a/tests/providers/aws/services/elbv2/elbv2_service_test.py +++ b/tests/providers/aws/services/elbv2/elbv2_service_test.py @@ -3,6 +3,7 @@ from moto import mock_ec2, mock_elbv2 from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info from prowler.providers.aws.services.elbv2.elbv2_service import ELBv2 +from prowler.providers.common.models import Audit_Metadata AWS_ACCOUNT_NUMBER = "123456789012" AWS_REGION = "us-east-1" @@ -31,6 +32,12 @@ class Test_ELBv2_Service: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/elbv2/elbv2_ssl_listeners/elbv2_ssl_listeners_test.py b/tests/providers/aws/services/elbv2/elbv2_ssl_listeners/elbv2_ssl_listeners_test.py index 37180436..ac87191a 100644 --- a/tests/providers/aws/services/elbv2/elbv2_ssl_listeners/elbv2_ssl_listeners_test.py +++ b/tests/providers/aws/services/elbv2/elbv2_ssl_listeners/elbv2_ssl_listeners_test.py @@ -5,6 +5,7 @@ from boto3 import client, resource, session from moto import mock_ec2, mock_elbv2 from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info +from prowler.providers.common.models import Audit_Metadata AWS_REGION = "eu-west-1" AWS_ACCOUNT_NUMBER = "123456789012" @@ -32,6 +33,12 @@ class Test_elbv2_ssl_listeners: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/elbv2/elbv2_waf_acl_attached/elbv2_waf_acl_attached_test.py b/tests/providers/aws/services/elbv2/elbv2_waf_acl_attached/elbv2_waf_acl_attached_test.py index 2f69895e..cb5379b1 100644 --- a/tests/providers/aws/services/elbv2/elbv2_waf_acl_attached/elbv2_waf_acl_attached_test.py +++ b/tests/providers/aws/services/elbv2/elbv2_waf_acl_attached/elbv2_waf_acl_attached_test.py @@ -6,6 +6,7 @@ from boto3 import client, resource, session from moto import mock_ec2, mock_elbv2, mock_wafv2 from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info +from prowler.providers.common.models import Audit_Metadata AWS_REGION = "eu-west-1" AWS_ACCOUNT_NUMBER = "123456789012" @@ -54,6 +55,12 @@ class Test_elbv2_waf_acl_attached: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/emr/emr_service_test.py b/tests/providers/aws/services/emr/emr_service_test.py index 1e88ed5b..6a4cc8ac 100644 --- a/tests/providers/aws/services/emr/emr_service_test.py +++ b/tests/providers/aws/services/emr/emr_service_test.py @@ -8,6 +8,7 @@ from moto.core import DEFAULT_ACCOUNT_ID from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info from prowler.providers.aws.services.emr.emr_service import EMR, ClusterStatus +from prowler.providers.common.models import Audit_Metadata # Mock Test Region AWS_REGION = "eu-west-1" @@ -37,14 +38,14 @@ def mock_make_api_call(self, operation_name, kwarg): # Mock generate_regional_clients() -def mock_generate_regional_clients(service, audit_info): +def mock_generate_regional_clients(service, audit_info, _): regional_client = audit_info.audit_session.client(service, region_name=AWS_REGION) regional_client.region = AWS_REGION return {AWS_REGION: regional_client} @patch( - "prowler.providers.aws.services.emr.emr_service.generate_regional_clients", + "prowler.providers.aws.lib.service.service.generate_regional_clients", new=mock_generate_regional_clients, ) @patch("botocore.client.BaseClient._make_api_call", new=mock_make_api_call) @@ -70,6 +71,12 @@ class Test_EMR_Service: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/fms/fms_service_test.py b/tests/providers/aws/services/fms/fms_service_test.py index 9f32e3ef..6d432db4 100644 --- a/tests/providers/aws/services/fms/fms_service_test.py +++ b/tests/providers/aws/services/fms/fms_service_test.py @@ -6,6 +6,7 @@ from boto3 import session from prowler.providers.aws.lib.audit_info.audit_info import AWS_Audit_Info from prowler.providers.aws.services.fms.fms_service import FMS +from prowler.providers.common.models import Audit_Metadata # Mock Test Region AWS_REGION = "us-east-1" @@ -86,6 +87,12 @@ class Test_FMS_Service: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/glacier/glacier_service_test.py b/tests/providers/aws/services/glacier/glacier_service_test.py index 00b11870..8c8a3f63 100644 --- a/tests/providers/aws/services/glacier/glacier_service_test.py +++ b/tests/providers/aws/services/glacier/glacier_service_test.py @@ -7,6 +7,7 @@ from moto.core import DEFAULT_ACCOUNT_ID from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info from prowler.providers.aws.services.glacier.glacier_service import Glacier +from prowler.providers.common.models import Audit_Metadata # Mock Test Region AWS_REGION = "eu-west-1" @@ -63,7 +64,7 @@ def mock_make_api_call(self, operation_name, kwarg): # Mock generate_regional_clients() -def mock_generate_regional_clients(service, audit_info): +def mock_generate_regional_clients(service, audit_info, _): regional_client = audit_info.audit_session.client(service, region_name=AWS_REGION) regional_client.region = AWS_REGION return {AWS_REGION: regional_client} @@ -72,7 +73,7 @@ def mock_generate_regional_clients(service, audit_info): # Patch every AWS call using Boto3 and generate_regional_clients to have 1 client @patch("botocore.client.BaseClient._make_api_call", new=mock_make_api_call) @patch( - "prowler.providers.aws.services.glacier.glacier_service.generate_regional_clients", + "prowler.providers.aws.lib.service.service.generate_regional_clients", new=mock_generate_regional_clients, ) class Test_Glacier_Service: @@ -97,6 +98,12 @@ class Test_Glacier_Service: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/globalaccelerator/globalaccelerator_service_test.py b/tests/providers/aws/services/globalaccelerator/globalaccelerator_service_test.py index c1d9f4df..9e0f076d 100644 --- a/tests/providers/aws/services/globalaccelerator/globalaccelerator_service_test.py +++ b/tests/providers/aws/services/globalaccelerator/globalaccelerator_service_test.py @@ -7,6 +7,7 @@ from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info from prowler.providers.aws.services.globalaccelerator.globalaccelerator_service import ( GlobalAccelerator, ) +from prowler.providers.common.models import Audit_Metadata # Mock Test Region AWS_REGION = "us-west-2" @@ -71,6 +72,12 @@ class Test_GlobalAccelerator_Service: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/glue/glue_service_test.py b/tests/providers/aws/services/glue/glue_service_test.py index c23f56d1..bd92ae9c 100644 --- a/tests/providers/aws/services/glue/glue_service_test.py +++ b/tests/providers/aws/services/glue/glue_service_test.py @@ -6,6 +6,7 @@ from moto import mock_glue from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info from prowler.providers.aws.services.glue.glue_service import Glue +from prowler.providers.common.models import Audit_Metadata AWS_ACCOUNT_NUMBER = "123456789012" AWS_REGION = "us-east-1" @@ -104,7 +105,7 @@ def mock_make_api_call(self, operation_name, kwarg): # Mock generate_regional_clients() -def mock_generate_regional_clients(service, audit_info): +def mock_generate_regional_clients(service, audit_info, _): regional_client = audit_info.audit_session.client(service, region_name=AWS_REGION) regional_client.region = AWS_REGION return {AWS_REGION: regional_client} @@ -113,7 +114,7 @@ def mock_generate_regional_clients(service, audit_info): # Patch every AWS call using Boto3 and generate_regional_clients to have 1 client @patch("botocore.client.BaseClient._make_api_call", new=mock_make_api_call) @patch( - "prowler.providers.aws.services.glue.glue_service.generate_regional_clients", + "prowler.providers.aws.lib.service.service.generate_regional_clients", new=mock_generate_regional_clients, ) class Test_Glue_Service: @@ -139,6 +140,12 @@ class Test_Glue_Service: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/guardduty/guardduty_service_test.py b/tests/providers/aws/services/guardduty/guardduty_service_test.py index 572f2d8b..7029feb3 100644 --- a/tests/providers/aws/services/guardduty/guardduty_service_test.py +++ b/tests/providers/aws/services/guardduty/guardduty_service_test.py @@ -7,6 +7,7 @@ from moto import mock_guardduty from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info from prowler.providers.aws.services.guardduty.guardduty_service import GuardDuty +from prowler.providers.common.models import Audit_Metadata AWS_ACCOUNT_NUMBER_ADMIN = "123456789013" AWS_ACCOUNT_NUMBER = "123456789012" @@ -47,7 +48,7 @@ def mock_make_api_call(self, operation_name, kwarg): return make_api_call(self, operation_name, kwarg) -def mock_generate_regional_clients(service, audit_info): +def mock_generate_regional_clients(service, audit_info, _): regional_client = audit_info.audit_session.client(service, region_name=AWS_REGION) regional_client.region = AWS_REGION return {AWS_REGION: regional_client} @@ -55,7 +56,7 @@ def mock_generate_regional_clients(service, audit_info): @patch("botocore.client.BaseClient._make_api_call", new=mock_make_api_call) @patch( - "prowler.providers.aws.services.guardduty.guardduty_service.generate_regional_clients", + "prowler.providers.aws.lib.service.service.generate_regional_clients", new=mock_generate_regional_clients, ) class Test_GuardDuty_Service: @@ -81,6 +82,12 @@ class Test_GuardDuty_Service: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/iam/iam_administrator_access_with_mfa/iam_administrator_access_with_mfa_test.py b/tests/providers/aws/services/iam/iam_administrator_access_with_mfa/iam_administrator_access_with_mfa_test.py index 818a3cf4..90a01b10 100644 --- a/tests/providers/aws/services/iam/iam_administrator_access_with_mfa/iam_administrator_access_with_mfa_test.py +++ b/tests/providers/aws/services/iam/iam_administrator_access_with_mfa/iam_administrator_access_with_mfa_test.py @@ -6,6 +6,7 @@ from boto3 import client, session from moto import mock_iam from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info +from prowler.providers.common.models import Audit_Metadata AWS_ACCOUNT_NUMBER = "123456789012" AWS_REGION = "us-east-1" @@ -35,6 +36,12 @@ class Test_iam_administrator_access_with_mfa_test: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/iam/iam_avoid_root_usage/iam_avoid_root_usage_test.py b/tests/providers/aws/services/iam/iam_avoid_root_usage/iam_avoid_root_usage_test.py index 1c2e67d0..6af56972 100644 --- a/tests/providers/aws/services/iam/iam_avoid_root_usage/iam_avoid_root_usage_test.py +++ b/tests/providers/aws/services/iam/iam_avoid_root_usage/iam_avoid_root_usage_test.py @@ -7,6 +7,7 @@ from boto3 import session from moto import mock_iam from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info +from prowler.providers.common.models import Audit_Metadata AWS_ACCOUNT_NUMBER = "123456789012" AWS_REGION = "us-east-1" @@ -36,6 +37,12 @@ class Test_iam_avoid_root_usage: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/iam/iam_aws_attached_policy_no_administrative_privileges/iam_aws_attached_policy_no_administrative_privileges_test.py b/tests/providers/aws/services/iam/iam_aws_attached_policy_no_administrative_privileges/iam_aws_attached_policy_no_administrative_privileges_test.py index 890bd007..54c0a704 100644 --- a/tests/providers/aws/services/iam/iam_aws_attached_policy_no_administrative_privileges/iam_aws_attached_policy_no_administrative_privileges_test.py +++ b/tests/providers/aws/services/iam/iam_aws_attached_policy_no_administrative_privileges/iam_aws_attached_policy_no_administrative_privileges_test.py @@ -5,6 +5,7 @@ from boto3 import client, session from moto import mock_iam from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info +from prowler.providers.common.models import Audit_Metadata AWS_ACCOUNT_NUMBER = "123456789012" @@ -31,6 +32,12 @@ class Test_iam_aws_attached_policy_no_administrative_privileges_test: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/iam/iam_check_saml_providers_sts/iam_check_saml_providers_sts_test.py b/tests/providers/aws/services/iam/iam_check_saml_providers_sts/iam_check_saml_providers_sts_test.py index d6693a35..3f6d22cb 100644 --- a/tests/providers/aws/services/iam/iam_check_saml_providers_sts/iam_check_saml_providers_sts_test.py +++ b/tests/providers/aws/services/iam/iam_check_saml_providers_sts/iam_check_saml_providers_sts_test.py @@ -4,6 +4,7 @@ from boto3 import client, session from moto import mock_iam from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info +from prowler.providers.common.models import Audit_Metadata AWS_ACCOUNT_NUMBER = "123456789012" AWS_REGION = "us-east-1" @@ -33,6 +34,12 @@ class Test_iam_check_saml_providers_sts: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/iam/iam_customer_attached_policy_no_administrative_privileges/iam_customer_attached_policy_no_administrative_privileges_test.py b/tests/providers/aws/services/iam/iam_customer_attached_policy_no_administrative_privileges/iam_customer_attached_policy_no_administrative_privileges_test.py index 4afa1f1c..f7abda8f 100644 --- a/tests/providers/aws/services/iam/iam_customer_attached_policy_no_administrative_privileges/iam_customer_attached_policy_no_administrative_privileges_test.py +++ b/tests/providers/aws/services/iam/iam_customer_attached_policy_no_administrative_privileges/iam_customer_attached_policy_no_administrative_privileges_test.py @@ -6,6 +6,7 @@ from boto3 import client, session from moto import mock_iam from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info +from prowler.providers.common.models import Audit_Metadata AWS_ACCOUNT_NUMBER = "123456789012" @@ -32,6 +33,12 @@ class Test_iam_customer_attached_policy_no_administrative_privileges_test: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/iam/iam_customer_unattached_policy_no_administrative_privileges/iam_customer_unattached_policy_no_administrative_privileges_test.py b/tests/providers/aws/services/iam/iam_customer_unattached_policy_no_administrative_privileges/iam_customer_unattached_policy_no_administrative_privileges_test.py index 22aa40cb..3f1bdfd3 100644 --- a/tests/providers/aws/services/iam/iam_customer_unattached_policy_no_administrative_privileges/iam_customer_unattached_policy_no_administrative_privileges_test.py +++ b/tests/providers/aws/services/iam/iam_customer_unattached_policy_no_administrative_privileges/iam_customer_unattached_policy_no_administrative_privileges_test.py @@ -6,6 +6,7 @@ from boto3 import client, session from moto import mock_iam from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info +from prowler.providers.common.models import Audit_Metadata AWS_ACCOUNT_NUMBER = "123456789012" @@ -32,6 +33,12 @@ class Test_iam_customer_unattached_policy_no_administrative_privileges_test: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/iam/iam_disable_30_days_credentials/iam_disable_30_days_credentials_test.py b/tests/providers/aws/services/iam/iam_disable_30_days_credentials/iam_disable_30_days_credentials_test.py index 916b9594..b672b39a 100644 --- a/tests/providers/aws/services/iam/iam_disable_30_days_credentials/iam_disable_30_days_credentials_test.py +++ b/tests/providers/aws/services/iam/iam_disable_30_days_credentials/iam_disable_30_days_credentials_test.py @@ -6,6 +6,7 @@ from boto3 import client, session from moto import mock_iam from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info +from prowler.providers.common.models import Audit_Metadata AWS_ACCOUNT_NUMBER = "123456789012" AWS_REGION = "us-east-1" @@ -35,6 +36,12 @@ class Test_iam_disable_30_days_credentials_test: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/iam/iam_disable_45_days_credentials/iam_disable_45_days_credentials_test.py b/tests/providers/aws/services/iam/iam_disable_45_days_credentials/iam_disable_45_days_credentials_test.py index 0b6a3747..d7aedf80 100644 --- a/tests/providers/aws/services/iam/iam_disable_45_days_credentials/iam_disable_45_days_credentials_test.py +++ b/tests/providers/aws/services/iam/iam_disable_45_days_credentials/iam_disable_45_days_credentials_test.py @@ -6,6 +6,7 @@ from boto3 import client, session from moto import mock_iam from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info +from prowler.providers.common.models import Audit_Metadata AWS_ACCOUNT_NUMBER = "123456789012" AWS_REGION = "us-east-1" @@ -35,6 +36,12 @@ class Test_iam_disable_45_days_credentials_test: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/iam/iam_disable_90_days_credentials/iam_disable_90_days_credentials_test.py b/tests/providers/aws/services/iam/iam_disable_90_days_credentials/iam_disable_90_days_credentials_test.py index 0be08a4d..ff7352c9 100644 --- a/tests/providers/aws/services/iam/iam_disable_90_days_credentials/iam_disable_90_days_credentials_test.py +++ b/tests/providers/aws/services/iam/iam_disable_90_days_credentials/iam_disable_90_days_credentials_test.py @@ -6,6 +6,7 @@ from boto3 import client, session from moto import mock_iam from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info +from prowler.providers.common.models import Audit_Metadata AWS_ACCOUNT_NUMBER = "123456789012" AWS_REGION = "us-east-1" @@ -35,6 +36,12 @@ class Test_iam_disable_90_days_credentials_test: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/iam/iam_no_custom_policy_permissive_role_assumption/iam_no_custom_policy_permissive_role_assumption_test.py b/tests/providers/aws/services/iam/iam_no_custom_policy_permissive_role_assumption/iam_no_custom_policy_permissive_role_assumption_test.py index c26e34f1..bc1b0202 100644 --- a/tests/providers/aws/services/iam/iam_no_custom_policy_permissive_role_assumption/iam_no_custom_policy_permissive_role_assumption_test.py +++ b/tests/providers/aws/services/iam/iam_no_custom_policy_permissive_role_assumption/iam_no_custom_policy_permissive_role_assumption_test.py @@ -6,6 +6,7 @@ from boto3 import client, session from moto import mock_iam from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info +from prowler.providers.common.models import Audit_Metadata AWS_ACCOUNT_NUMBER = "123456789012" AWS_REGION = "us-east-1" @@ -35,6 +36,12 @@ class Test_iam_no_custom_policy_permissive_role_assumption: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/iam/iam_no_expired_server_certificates_stored/iam_no_expired_server_certificates_stored_test.py b/tests/providers/aws/services/iam/iam_no_expired_server_certificates_stored/iam_no_expired_server_certificates_stored_test.py index 0f9b99c4..368a4863 100644 --- a/tests/providers/aws/services/iam/iam_no_expired_server_certificates_stored/iam_no_expired_server_certificates_stored_test.py +++ b/tests/providers/aws/services/iam/iam_no_expired_server_certificates_stored/iam_no_expired_server_certificates_stored_test.py @@ -5,6 +5,7 @@ from boto3 import client, session from moto import mock_iam from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info +from prowler.providers.common.models import Audit_Metadata AWS_ACCOUNT_NUMBER = "123456789012" AWS_REGION = "us-east-1" @@ -34,6 +35,12 @@ class Test_iam_no_expired_server_certificates_stored_test: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/iam/iam_no_root_access_key/iam_no_root_access_key_test.py b/tests/providers/aws/services/iam/iam_no_root_access_key/iam_no_root_access_key_test.py index 959b1252..87e83e21 100644 --- a/tests/providers/aws/services/iam/iam_no_root_access_key/iam_no_root_access_key_test.py +++ b/tests/providers/aws/services/iam/iam_no_root_access_key/iam_no_root_access_key_test.py @@ -5,6 +5,7 @@ from boto3 import client, session from moto import mock_iam from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info +from prowler.providers.common.models import Audit_Metadata AWS_ACCOUNT_NUMBER = "123456789012" AWS_REGION = "us-east-1" @@ -34,6 +35,12 @@ class Test_iam_no_root_access_key_test: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/iam/iam_password_policy_expires_passwords_within_90_days_or_less/iam_password_policy_expires_passwords_within_90_days_or_less_test.py b/tests/providers/aws/services/iam/iam_password_policy_expires_passwords_within_90_days_or_less/iam_password_policy_expires_passwords_within_90_days_or_less_test.py index 83a7df39..0e86f7c8 100644 --- a/tests/providers/aws/services/iam/iam_password_policy_expires_passwords_within_90_days_or_less/iam_password_policy_expires_passwords_within_90_days_or_less_test.py +++ b/tests/providers/aws/services/iam/iam_password_policy_expires_passwords_within_90_days_or_less/iam_password_policy_expires_passwords_within_90_days_or_less_test.py @@ -5,6 +5,7 @@ from boto3 import session from moto import mock_iam from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info +from prowler.providers.common.models import Audit_Metadata AWS_ACCOUNT_NUMBER = "123456789012" AWS_REGION = "us-east-1" @@ -34,6 +35,12 @@ class Test_iam_password_policy_expires_passwords_within_90_days_or_less: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/iam/iam_password_policy_lowercase/iam_password_policy_lowercase_test.py b/tests/providers/aws/services/iam/iam_password_policy_lowercase/iam_password_policy_lowercase_test.py index b8abb4dc..75346eef 100644 --- a/tests/providers/aws/services/iam/iam_password_policy_lowercase/iam_password_policy_lowercase_test.py +++ b/tests/providers/aws/services/iam/iam_password_policy_lowercase/iam_password_policy_lowercase_test.py @@ -5,6 +5,7 @@ from boto3 import client, session from moto import mock_iam from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info +from prowler.providers.common.models import Audit_Metadata AWS_ACCOUNT_NUMBER = "123456789012" @@ -31,6 +32,12 @@ class Test_iam_password_policy_lowercase: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/iam/iam_password_policy_minimum_length_14/iam_password_policy_minimum_length_14_test.py b/tests/providers/aws/services/iam/iam_password_policy_minimum_length_14/iam_password_policy_minimum_length_14_test.py index ed2d736f..3caa3364 100644 --- a/tests/providers/aws/services/iam/iam_password_policy_minimum_length_14/iam_password_policy_minimum_length_14_test.py +++ b/tests/providers/aws/services/iam/iam_password_policy_minimum_length_14/iam_password_policy_minimum_length_14_test.py @@ -5,6 +5,7 @@ from boto3 import client, session from moto import mock_iam from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info +from prowler.providers.common.models import Audit_Metadata AWS_ACCOUNT_NUMBER = "123456789012" @@ -31,6 +32,12 @@ class Test_iam_password_policy_minimum_length_14: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/iam/iam_password_policy_number/iam_password_policy_number_test.py b/tests/providers/aws/services/iam/iam_password_policy_number/iam_password_policy_number_test.py index f9a56331..0b728cf0 100644 --- a/tests/providers/aws/services/iam/iam_password_policy_number/iam_password_policy_number_test.py +++ b/tests/providers/aws/services/iam/iam_password_policy_number/iam_password_policy_number_test.py @@ -5,6 +5,7 @@ from boto3 import client, session from moto import mock_iam from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info +from prowler.providers.common.models import Audit_Metadata AWS_ACCOUNT_NUMBER = "123456789012" @@ -31,6 +32,12 @@ class Test_iam_password_policy_number: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/iam/iam_password_policy_reuse_24/iam_password_policy_reuse_24_test.py b/tests/providers/aws/services/iam/iam_password_policy_reuse_24/iam_password_policy_reuse_24_test.py index 3b080dea..6e49e3ac 100644 --- a/tests/providers/aws/services/iam/iam_password_policy_reuse_24/iam_password_policy_reuse_24_test.py +++ b/tests/providers/aws/services/iam/iam_password_policy_reuse_24/iam_password_policy_reuse_24_test.py @@ -4,6 +4,7 @@ from boto3 import client, session from moto import mock_iam from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info +from prowler.providers.common.models import Audit_Metadata AWS_ACCOUNT_NUMBER = "123456789012" @@ -30,6 +31,12 @@ class Test_iam_password_policy_reuse_24: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/iam/iam_password_policy_symbol/iam_password_policy_symbol_test.py b/tests/providers/aws/services/iam/iam_password_policy_symbol/iam_password_policy_symbol_test.py index d19a0609..87a68c8d 100644 --- a/tests/providers/aws/services/iam/iam_password_policy_symbol/iam_password_policy_symbol_test.py +++ b/tests/providers/aws/services/iam/iam_password_policy_symbol/iam_password_policy_symbol_test.py @@ -5,6 +5,7 @@ from boto3 import client, session from moto import mock_iam from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info +from prowler.providers.common.models import Audit_Metadata AWS_ACCOUNT_NUMBER = "123456789012" @@ -31,6 +32,12 @@ class Test_iam_password_policy_symbol: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/iam/iam_password_policy_uppercase/iam_password_policy_uppercase_test.py b/tests/providers/aws/services/iam/iam_password_policy_uppercase/iam_password_policy_uppercase_test.py index ca496118..9e49d20c 100644 --- a/tests/providers/aws/services/iam/iam_password_policy_uppercase/iam_password_policy_uppercase_test.py +++ b/tests/providers/aws/services/iam/iam_password_policy_uppercase/iam_password_policy_uppercase_test.py @@ -4,6 +4,7 @@ from boto3 import client, session from moto import mock_iam from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info +from prowler.providers.common.models import Audit_Metadata AWS_ACCOUNT_NUMBER = "123456789012" @@ -30,6 +31,12 @@ class Test_iam_password_policy_uppercase: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/iam/iam_policy_allows_privilege_escalation/iam_policy_allows_privilege_escalation_test.py b/tests/providers/aws/services/iam/iam_policy_allows_privilege_escalation/iam_policy_allows_privilege_escalation_test.py index 7519cf08..14600848 100644 --- a/tests/providers/aws/services/iam/iam_policy_allows_privilege_escalation/iam_policy_allows_privilege_escalation_test.py +++ b/tests/providers/aws/services/iam/iam_policy_allows_privilege_escalation/iam_policy_allows_privilege_escalation_test.py @@ -5,6 +5,7 @@ from boto3 import client, session from moto import mock_iam from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info +from prowler.providers.common.models import Audit_Metadata AWS_REGION = "us-east-1" AWS_ACCOUNT_NUMBER = "123456789012" @@ -32,6 +33,12 @@ class Test_iam_policy_allows_privilege_escalation: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/iam/iam_policy_attached_only_to_group_or_roles/iam_policy_attached_only_to_group_or_roles_test.py b/tests/providers/aws/services/iam/iam_policy_attached_only_to_group_or_roles/iam_policy_attached_only_to_group_or_roles_test.py index ec1cc114..f739c1c4 100644 --- a/tests/providers/aws/services/iam/iam_policy_attached_only_to_group_or_roles/iam_policy_attached_only_to_group_or_roles_test.py +++ b/tests/providers/aws/services/iam/iam_policy_attached_only_to_group_or_roles/iam_policy_attached_only_to_group_or_roles_test.py @@ -5,6 +5,7 @@ from boto3 import client, session from moto import mock_iam from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info +from prowler.providers.common.models import Audit_Metadata AWS_ACCOUNT_NUMBER = "123456789012" AWS_REGION = "eu-west-1" @@ -32,6 +33,12 @@ class Test_iam_policy_attached_only_to_group_or_roles: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/iam/iam_policy_no_full_access_to_cloudtrail/iam_policy_no_full_access_to_cloudtrail_test.py b/tests/providers/aws/services/iam/iam_policy_no_full_access_to_cloudtrail/iam_policy_no_full_access_to_cloudtrail_test.py index 894e3a2d..9f076e3b 100644 --- a/tests/providers/aws/services/iam/iam_policy_no_full_access_to_cloudtrail/iam_policy_no_full_access_to_cloudtrail_test.py +++ b/tests/providers/aws/services/iam/iam_policy_no_full_access_to_cloudtrail/iam_policy_no_full_access_to_cloudtrail_test.py @@ -6,6 +6,7 @@ from moto import mock_iam from prowler.providers.aws.lib.audit_info.audit_info import AWS_Audit_Info from prowler.providers.aws.services.iam.iam_service import IAM +from prowler.providers.common.models import Audit_Metadata class Test_iam_policy_no_full_access_to_cloudtrail: @@ -31,6 +32,12 @@ class Test_iam_policy_no_full_access_to_cloudtrail: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/iam/iam_policy_no_full_access_to_kms/iam_policy_no_full_access_to_kms_test.py b/tests/providers/aws/services/iam/iam_policy_no_full_access_to_kms/iam_policy_no_full_access_to_kms_test.py index eef57bce..60c337a6 100644 --- a/tests/providers/aws/services/iam/iam_policy_no_full_access_to_kms/iam_policy_no_full_access_to_kms_test.py +++ b/tests/providers/aws/services/iam/iam_policy_no_full_access_to_kms/iam_policy_no_full_access_to_kms_test.py @@ -6,6 +6,7 @@ from moto import mock_iam from prowler.providers.aws.lib.audit_info.audit_info import AWS_Audit_Info from prowler.providers.aws.services.iam.iam_service import IAM +from prowler.providers.common.models import Audit_Metadata class Test_iam_policy_no_full_access_to_kms: @@ -31,6 +32,12 @@ class Test_iam_policy_no_full_access_to_kms: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/iam/iam_role_cross_account_readonlyaccess_policy/iam_role_cross_account_readonlyaccess_policy_test.py b/tests/providers/aws/services/iam/iam_role_cross_account_readonlyaccess_policy/iam_role_cross_account_readonlyaccess_policy_test.py index 1fa3d510..4869560c 100644 --- a/tests/providers/aws/services/iam/iam_role_cross_account_readonlyaccess_policy/iam_role_cross_account_readonlyaccess_policy_test.py +++ b/tests/providers/aws/services/iam/iam_role_cross_account_readonlyaccess_policy/iam_role_cross_account_readonlyaccess_policy_test.py @@ -6,6 +6,7 @@ from moto import mock_iam from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info from prowler.providers.aws.services.iam.iam_service import Role +from prowler.providers.common.models import Audit_Metadata AWS_REGION = "us-east-1" AWS_ACCOUNT_ID = "123456789012" @@ -33,6 +34,12 @@ class Test_iam_role_cross_account_readonlyaccess_policy: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/iam/iam_role_cross_service_confused_deputy_prevention/iam_role_cross_service_confused_deputy_prevention_test.py b/tests/providers/aws/services/iam/iam_role_cross_service_confused_deputy_prevention/iam_role_cross_service_confused_deputy_prevention_test.py index 1efc071f..10af3039 100644 --- a/tests/providers/aws/services/iam/iam_role_cross_service_confused_deputy_prevention/iam_role_cross_service_confused_deputy_prevention_test.py +++ b/tests/providers/aws/services/iam/iam_role_cross_service_confused_deputy_prevention/iam_role_cross_service_confused_deputy_prevention_test.py @@ -6,6 +6,7 @@ from moto import mock_iam from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info from prowler.providers.aws.services.iam.iam_service import Role +from prowler.providers.common.models import Audit_Metadata AWS_REGION = "us-east-1" AWS_ACCOUNT_ID = "123456789012" @@ -33,6 +34,12 @@ class Test_iam_role_cross_service_confused_deputy_prevention: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/iam/iam_root_hardware_mfa_enabled/iam_root_hardware_mfa_enabled_test.py b/tests/providers/aws/services/iam/iam_root_hardware_mfa_enabled/iam_root_hardware_mfa_enabled_test.py index f05a38f2..d0e69821 100644 --- a/tests/providers/aws/services/iam/iam_root_hardware_mfa_enabled/iam_root_hardware_mfa_enabled_test.py +++ b/tests/providers/aws/services/iam/iam_root_hardware_mfa_enabled/iam_root_hardware_mfa_enabled_test.py @@ -5,6 +5,7 @@ from boto3 import client, session from moto import mock_iam from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info +from prowler.providers.common.models import Audit_Metadata AWS_ACCOUNT_NUMBER = "123456789012" @@ -31,6 +32,12 @@ class Test_iam_root_hardware_mfa_enabled_test: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info @@ -101,5 +108,6 @@ class Test_iam_root_hardware_mfa_enabled_test: ) assert result[0].resource_id == "" assert ( - result[0].resource_arn == f"arn:aws:iam::{service_client.account}:root" + result[0].resource_arn + == f"arn:aws:iam::{service_client.audited_account}:root" ) diff --git a/tests/providers/aws/services/iam/iam_root_mfa_enabled/iam_root_mfa_enabled_test.py b/tests/providers/aws/services/iam/iam_root_mfa_enabled/iam_root_mfa_enabled_test.py index 38ba648a..36964460 100644 --- a/tests/providers/aws/services/iam/iam_root_mfa_enabled/iam_root_mfa_enabled_test.py +++ b/tests/providers/aws/services/iam/iam_root_mfa_enabled/iam_root_mfa_enabled_test.py @@ -5,6 +5,7 @@ from boto3 import client, session from moto import mock_iam from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info +from prowler.providers.common.models import Audit_Metadata AWS_ACCOUNT_NUMBER = "123456789012" @@ -31,6 +32,12 @@ class Test_iam_root_mfa_enabled_test: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/iam/iam_rotate_access_key_90_days/iam_rotate_access_key_90_days_test.py b/tests/providers/aws/services/iam/iam_rotate_access_key_90_days/iam_rotate_access_key_90_days_test.py index 1c5c7386..bfd271e7 100644 --- a/tests/providers/aws/services/iam/iam_rotate_access_key_90_days/iam_rotate_access_key_90_days_test.py +++ b/tests/providers/aws/services/iam/iam_rotate_access_key_90_days/iam_rotate_access_key_90_days_test.py @@ -5,6 +5,7 @@ from boto3 import client, session from moto import mock_iam from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info +from prowler.providers.common.models import Audit_Metadata AWS_ACCOUNT_NUMBER = "123456789012" @@ -31,6 +32,12 @@ class Test_iam_rotate_access_key_90_days_test: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/iam/iam_securityaudit_role_created/iam_securityaudit_role_created_test.py b/tests/providers/aws/services/iam/iam_securityaudit_role_created/iam_securityaudit_role_created_test.py index eeb34c09..dd4948d3 100644 --- a/tests/providers/aws/services/iam/iam_securityaudit_role_created/iam_securityaudit_role_created_test.py +++ b/tests/providers/aws/services/iam/iam_securityaudit_role_created/iam_securityaudit_role_created_test.py @@ -7,6 +7,7 @@ from moto import mock_iam from prowler.providers.aws.lib.audit_info.audit_info import AWS_Audit_Info from prowler.providers.aws.services.iam.iam_service import IAM +from prowler.providers.common.models import Audit_Metadata AWS_ACCOUNT_NUMBER = "123456789012" @@ -34,6 +35,12 @@ class Test_iam_securityaudit_role_created: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/iam/iam_service_test.py b/tests/providers/aws/services/iam/iam_service_test.py index 29c98205..0fcaddb5 100644 --- a/tests/providers/aws/services/iam/iam_service_test.py +++ b/tests/providers/aws/services/iam/iam_service_test.py @@ -6,6 +6,7 @@ from moto import mock_iam from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info from prowler.providers.aws.services.iam.iam_service import IAM, is_service_role +from prowler.providers.common.models import Audit_Metadata AWS_ACCOUNT_NUMBER = "123456789012" TEST_DATETIME = "2023-01-01T12:01:01+00:00" @@ -34,6 +35,12 @@ class Test_IAM_Service: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/iam/iam_support_role_created/iam_support_role_created_test.py b/tests/providers/aws/services/iam/iam_support_role_created/iam_support_role_created_test.py index d1f0e036..d2546a2c 100644 --- a/tests/providers/aws/services/iam/iam_support_role_created/iam_support_role_created_test.py +++ b/tests/providers/aws/services/iam/iam_support_role_created/iam_support_role_created_test.py @@ -6,6 +6,7 @@ from boto3 import client, session from moto import mock_iam from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info +from prowler.providers.common.models import Audit_Metadata AWS_ACCOUNT_NUMBER = "123456789012" @@ -32,6 +33,12 @@ class Test_iam_support_role_created: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/iam/iam_user_hardware_mfa_enabled/iam_user_hardware_mfa_enabled_test.py b/tests/providers/aws/services/iam/iam_user_hardware_mfa_enabled/iam_user_hardware_mfa_enabled_test.py index fa5cad22..efaaf140 100644 --- a/tests/providers/aws/services/iam/iam_user_hardware_mfa_enabled/iam_user_hardware_mfa_enabled_test.py +++ b/tests/providers/aws/services/iam/iam_user_hardware_mfa_enabled/iam_user_hardware_mfa_enabled_test.py @@ -5,6 +5,7 @@ from boto3 import client, session from moto import mock_iam from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info +from prowler.providers.common.models import Audit_Metadata AWS_ACCOUNT_NUMBER = "123456789012" @@ -31,6 +32,12 @@ class Test_iam_user_hardware_mfa_enabled_test: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/iam/iam_user_mfa_enabled_console_access/iam_user_mfa_enabled_console_access_test.py b/tests/providers/aws/services/iam/iam_user_mfa_enabled_console_access/iam_user_mfa_enabled_console_access_test.py index 326edec8..47a77d8b 100644 --- a/tests/providers/aws/services/iam/iam_user_mfa_enabled_console_access/iam_user_mfa_enabled_console_access_test.py +++ b/tests/providers/aws/services/iam/iam_user_mfa_enabled_console_access/iam_user_mfa_enabled_console_access_test.py @@ -4,6 +4,7 @@ from boto3 import client, session from moto import mock_iam from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info +from prowler.providers.common.models import Audit_Metadata AWS_ACCOUNT_NUMBER = "123456789012" @@ -30,6 +31,12 @@ class Test_iam_user_mfa_enabled_console_access_test: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/iam/iam_user_no_setup_initial_access_key/iam_user_no_setup_initial_access_key_test.py b/tests/providers/aws/services/iam/iam_user_no_setup_initial_access_key/iam_user_no_setup_initial_access_key_test.py index ad7bfe2c..f8cd13a7 100644 --- a/tests/providers/aws/services/iam/iam_user_no_setup_initial_access_key/iam_user_no_setup_initial_access_key_test.py +++ b/tests/providers/aws/services/iam/iam_user_no_setup_initial_access_key/iam_user_no_setup_initial_access_key_test.py @@ -6,6 +6,7 @@ from boto3 import session from moto import mock_iam from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info +from prowler.providers.common.models import Audit_Metadata AWS_ACCOUNT_NUMBER = "123456789012" @@ -32,6 +33,12 @@ class Test_iam_user_no_setup_initial_access_key_test: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/iam/iam_user_two_active_access_key/iam_user_two_active_access_key_test.py b/tests/providers/aws/services/iam/iam_user_two_active_access_key/iam_user_two_active_access_key_test.py index 9cfece9b..4aabe2c3 100644 --- a/tests/providers/aws/services/iam/iam_user_two_active_access_key/iam_user_two_active_access_key_test.py +++ b/tests/providers/aws/services/iam/iam_user_two_active_access_key/iam_user_two_active_access_key_test.py @@ -5,6 +5,7 @@ from boto3 import client, session from moto import mock_iam from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info +from prowler.providers.common.models import Audit_Metadata AWS_ACCOUNT_NUMBER = "123456789012" @@ -31,6 +32,12 @@ class Test_iam_user_two_active_access_key: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/inspector2/inspector2_service_test.py b/tests/providers/aws/services/inspector2/inspector2_service_test.py index cb110179..a24f4964 100644 --- a/tests/providers/aws/services/inspector2/inspector2_service_test.py +++ b/tests/providers/aws/services/inspector2/inspector2_service_test.py @@ -6,6 +6,7 @@ from boto3 import session from prowler.providers.aws.lib.audit_info.audit_info import AWS_Audit_Info from prowler.providers.aws.services.inspector2.inspector2_service import Inspector2 +from prowler.providers.common.models import Audit_Metadata AWS_REGION = "us-east-1" AWS_ACCOUNT_ID = "123456789012" @@ -68,7 +69,7 @@ def mock_make_api_call(self, operation_name, kwargs): return make_api_call(self, operation_name, kwargs) -def mock_generate_regional_clients(service, audit_info): +def mock_generate_regional_clients(service, audit_info, _): regional_client = audit_info.audit_session.client(service, region_name=AWS_REGION) regional_client.region = AWS_REGION return {AWS_REGION: regional_client} @@ -77,7 +78,7 @@ def mock_generate_regional_clients(service, audit_info): # Patch every AWS call using Boto3 and generate_regional_clients to have 1 client @patch("botocore.client.BaseClient._make_api_call", new=mock_make_api_call) @patch( - "prowler.providers.aws.services.inspector2.inspector2_service.generate_regional_clients", + "prowler.providers.aws.lib.service.service.generate_regional_clients", new=mock_generate_regional_clients, ) class Test_Inspector2_Service: @@ -103,6 +104,12 @@ class Test_Inspector2_Service: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/kms/kms_cmk_are_used/kms_cmk_are_used_test.py b/tests/providers/aws/services/kms/kms_cmk_are_used/kms_cmk_are_used_test.py index 7df3d055..f0399d96 100644 --- a/tests/providers/aws/services/kms/kms_cmk_are_used/kms_cmk_are_used_test.py +++ b/tests/providers/aws/services/kms/kms_cmk_are_used/kms_cmk_are_used_test.py @@ -4,6 +4,7 @@ from boto3 import client, session from moto import mock_kms from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info +from prowler.providers.common.models import Audit_Metadata AWS_REGION = "us-east-1" AWS_ACCOUNT_NUMBER = "123456789012" @@ -31,6 +32,12 @@ class Test_kms_cmk_are_used: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/kms/kms_cmk_rotation_enabled/kms_cmk_rotation_enabled_test.py b/tests/providers/aws/services/kms/kms_cmk_rotation_enabled/kms_cmk_rotation_enabled_test.py index b1cc22b1..a8ae1c2b 100644 --- a/tests/providers/aws/services/kms/kms_cmk_rotation_enabled/kms_cmk_rotation_enabled_test.py +++ b/tests/providers/aws/services/kms/kms_cmk_rotation_enabled/kms_cmk_rotation_enabled_test.py @@ -4,6 +4,7 @@ from boto3 import client, session from moto import mock_kms from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info +from prowler.providers.common.models import Audit_Metadata AWS_REGION = "us-east-1" AWS_ACCOUNT_NUMBER = "123456789012" @@ -31,6 +32,12 @@ class Test_kms_cmk_rotation_enabled: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/kms/kms_key_not_publicly_accessible/kms_key_not_publicly_accessible_test.py b/tests/providers/aws/services/kms/kms_key_not_publicly_accessible/kms_key_not_publicly_accessible_test.py index dd99ab8f..50fbd7d4 100644 --- a/tests/providers/aws/services/kms/kms_key_not_publicly_accessible/kms_key_not_publicly_accessible_test.py +++ b/tests/providers/aws/services/kms/kms_key_not_publicly_accessible/kms_key_not_publicly_accessible_test.py @@ -5,6 +5,7 @@ from boto3 import client, session from moto import mock_kms from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info +from prowler.providers.common.models import Audit_Metadata AWS_REGION = "us-east-1" AWS_ACCOUNT_NUMBER = "123456789012" @@ -32,6 +33,12 @@ class Test_kms_key_not_publicly_accessible: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/kms/kms_service_test.py b/tests/providers/aws/services/kms/kms_service_test.py index a7ea3c96..9d1904f2 100644 --- a/tests/providers/aws/services/kms/kms_service_test.py +++ b/tests/providers/aws/services/kms/kms_service_test.py @@ -5,6 +5,7 @@ from moto import mock_kms from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info from prowler.providers.aws.services.kms.kms_service import KMS +from prowler.providers.common.models import Audit_Metadata AWS_ACCOUNT_NUMBER = "123456789012" AWS_REGION = "us-east-1" @@ -33,6 +34,12 @@ class Test_ACM_Service: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/macie/macie_service_test.py b/tests/providers/aws/services/macie/macie_service_test.py index 1e1b7206..590a8996 100644 --- a/tests/providers/aws/services/macie/macie_service_test.py +++ b/tests/providers/aws/services/macie/macie_service_test.py @@ -6,6 +6,7 @@ from boto3 import session from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info from prowler.providers.aws.services.macie.macie_service import Macie, Session +from prowler.providers.common.models import Audit_Metadata # Mock Test Region AWS_REGION = "eu-west-1" @@ -34,7 +35,7 @@ def mock_make_api_call(self, operation_name, kwarg): # Mock generate_regional_clients() -def mock_generate_regional_clients(service, audit_info): +def mock_generate_regional_clients(service, audit_info, _): regional_client = audit_info.audit_session.client(service, region_name=AWS_REGION) regional_client.region = AWS_REGION return {AWS_REGION: regional_client} @@ -43,7 +44,7 @@ def mock_generate_regional_clients(service, audit_info): # Patch every AWS call using Boto3 and generate_regional_clients to have 1 client @patch("botocore.client.BaseClient._make_api_call", new=mock_make_api_call) @patch( - "prowler.providers.aws.services.macie.macie_service.generate_regional_clients", + "prowler.providers.aws.lib.service.service.generate_regional_clients", new=mock_generate_regional_clients, ) class Test_Macie_Service: @@ -68,6 +69,12 @@ class Test_Macie_Service: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/networkfirewall/networkfirewall_in_all_vpc/networkfirewall_in_all_vpc_test.py b/tests/providers/aws/services/networkfirewall/networkfirewall_in_all_vpc/networkfirewall_in_all_vpc_test.py index ddf91f7c..b13edc0b 100644 --- a/tests/providers/aws/services/networkfirewall/networkfirewall_in_all_vpc/networkfirewall_in_all_vpc_test.py +++ b/tests/providers/aws/services/networkfirewall/networkfirewall_in_all_vpc/networkfirewall_in_all_vpc_test.py @@ -7,6 +7,7 @@ from prowler.providers.aws.services.networkfirewall.networkfirewall_service impo Firewall, ) from prowler.providers.aws.services.vpc.vpc_service import VPCs, VpcSubnet +from prowler.providers.common.models import Audit_Metadata AWS_REGION = "us-east-1" AWS_ACCOUNT_NUMBER = "123456789012" @@ -41,6 +42,12 @@ class Test_networkfirewall_in_all_vpc: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/networkfirewall/networkfirewall_service_test.py b/tests/providers/aws/services/networkfirewall/networkfirewall_service_test.py index fcc0ab3c..a7fe5a4a 100644 --- a/tests/providers/aws/services/networkfirewall/networkfirewall_service_test.py +++ b/tests/providers/aws/services/networkfirewall/networkfirewall_service_test.py @@ -7,6 +7,7 @@ from prowler.providers.aws.lib.audit_info.audit_info import AWS_Audit_Info from prowler.providers.aws.services.networkfirewall.networkfirewall_service import ( NetworkFirewall, ) +from prowler.providers.common.models import Audit_Metadata # Mock Test Region AWS_REGION = "us-east-1" @@ -51,7 +52,7 @@ def mock_make_api_call(self, operation_name, kwargs): return make_api_call(self, operation_name, kwargs) -def mock_generate_regional_clients(service, audit_info): +def mock_generate_regional_clients(service, audit_info, _): regional_client = audit_info.audit_session.client(service, region_name=AWS_REGION) regional_client.region = AWS_REGION return {AWS_REGION: regional_client} @@ -60,7 +61,7 @@ def mock_generate_regional_clients(service, audit_info): # Patch every AWS call using Boto3 and generate_regional_clients to have 1 client @patch("botocore.client.BaseClient._make_api_call", new=mock_make_api_call) @patch( - "prowler.providers.aws.services.networkfirewall.networkfirewall_service.generate_regional_clients", + "prowler.providers.aws.lib.service.service.generate_regional_clients", new=mock_generate_regional_clients, ) class Test_NetworkFirewall_Service: @@ -86,6 +87,12 @@ class Test_NetworkFirewall_Service: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/opensearch/opensearch_service_test.py b/tests/providers/aws/services/opensearch/opensearch_service_test.py index 9c935ae6..4e2e9f60 100644 --- a/tests/providers/aws/services/opensearch/opensearch_service_test.py +++ b/tests/providers/aws/services/opensearch/opensearch_service_test.py @@ -8,6 +8,7 @@ from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info from prowler.providers.aws.services.opensearch.opensearch_service import ( OpenSearchService, ) +from prowler.providers.common.models import Audit_Metadata AWS_ACCOUNT_NUMBER = "123456789012" AWS_REGION = "eu-west-1" @@ -91,7 +92,7 @@ def mock_make_api_call(self, operation_name, kwarg): return make_api_call(self, operation_name, kwarg) -def mock_generate_regional_clients(service, audit_info): +def mock_generate_regional_clients(service, audit_info, _): regional_client = audit_info.audit_session.client(service, region_name=AWS_REGION) regional_client.region = AWS_REGION return {AWS_REGION: regional_client} @@ -99,7 +100,7 @@ def mock_generate_regional_clients(service, audit_info): @patch("botocore.client.BaseClient._make_api_call", new=mock_make_api_call) @patch( - "prowler.providers.aws.services.opensearch.opensearch_service.generate_regional_clients", + "prowler.providers.aws.lib.service.service.generate_regional_clients", new=mock_generate_regional_clients, ) class Test_OpenSearchService_Service: @@ -125,6 +126,12 @@ class Test_OpenSearchService_Service: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/organizations/organizations_account_part_of_organizations/organizations_account_part_of_organizations_test.py b/tests/providers/aws/services/organizations/organizations_account_part_of_organizations/organizations_account_part_of_organizations_test.py index ca8cdf8e..08f6495e 100644 --- a/tests/providers/aws/services/organizations/organizations_account_part_of_organizations/organizations_account_part_of_organizations_test.py +++ b/tests/providers/aws/services/organizations/organizations_account_part_of_organizations/organizations_account_part_of_organizations_test.py @@ -8,6 +8,7 @@ from prowler.providers.aws.lib.audit_info.audit_info import AWS_Audit_Info from prowler.providers.aws.services.organizations.organizations_service import ( Organizations, ) +from prowler.providers.common.models import Audit_Metadata AWS_REGION = "us-east-1" @@ -35,6 +36,12 @@ class Test_organizations_account_part_of_organizations: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/organizations/organizations_delegated_administrators/organizations_delegated_administrators_test.py b/tests/providers/aws/services/organizations/organizations_delegated_administrators/organizations_delegated_administrators_test.py index 0e4de2e4..dc4fe9ba 100644 --- a/tests/providers/aws/services/organizations/organizations_delegated_administrators/organizations_delegated_administrators_test.py +++ b/tests/providers/aws/services/organizations/organizations_delegated_administrators/organizations_delegated_administrators_test.py @@ -8,6 +8,7 @@ from prowler.providers.aws.lib.audit_info.audit_info import AWS_Audit_Info from prowler.providers.aws.services.organizations.organizations_service import ( Organizations, ) +from prowler.providers.common.models import Audit_Metadata AWS_REGION = "us-east-1" @@ -35,6 +36,12 @@ class Test_organizations_delegated_administrators: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/organizations/organizations_scp_check_deny_regions/organizations_scp_check_deny_regions_test.py b/tests/providers/aws/services/organizations/organizations_scp_check_deny_regions/organizations_scp_check_deny_regions_test.py index ebb70111..01a5232d 100644 --- a/tests/providers/aws/services/organizations/organizations_scp_check_deny_regions/organizations_scp_check_deny_regions_test.py +++ b/tests/providers/aws/services/organizations/organizations_scp_check_deny_regions/organizations_scp_check_deny_regions_test.py @@ -8,6 +8,7 @@ from prowler.providers.aws.lib.audit_info.audit_info import AWS_Audit_Info from prowler.providers.aws.services.organizations.organizations_service import ( Organizations, ) +from prowler.providers.common.models import Audit_Metadata AWS_REGION = "us-east-1" @@ -39,6 +40,12 @@ class Test_organizations_scp_check_deny_regions: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/organizations/organizations_service_test.py b/tests/providers/aws/services/organizations/organizations_service_test.py index 77fbf1cc..cc0023f2 100644 --- a/tests/providers/aws/services/organizations/organizations_service_test.py +++ b/tests/providers/aws/services/organizations/organizations_service_test.py @@ -8,6 +8,7 @@ from prowler.providers.aws.lib.audit_info.audit_info import AWS_Audit_Info from prowler.providers.aws.services.organizations.organizations_service import ( Organizations, ) +from prowler.providers.common.models import Audit_Metadata AWS_REGION = "eu-west-1" @@ -40,6 +41,12 @@ class Test_Organizations_Service: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/organizations/organizations_tags_policies_enabled_and_attached/organizations_tags_policies_enabled_and_attached_test.py b/tests/providers/aws/services/organizations/organizations_tags_policies_enabled_and_attached/organizations_tags_policies_enabled_and_attached_test.py index 653727d7..504a155a 100644 --- a/tests/providers/aws/services/organizations/organizations_tags_policies_enabled_and_attached/organizations_tags_policies_enabled_and_attached_test.py +++ b/tests/providers/aws/services/organizations/organizations_tags_policies_enabled_and_attached/organizations_tags_policies_enabled_and_attached_test.py @@ -7,6 +7,7 @@ from prowler.providers.aws.services.organizations.organizations_service import ( Organization, Policy, ) +from prowler.providers.common.models import Audit_Metadata AWS_REGION = "us-east-1" AWS_ACCOUNT_NUMBER = "123456789012" @@ -38,6 +39,12 @@ class Test_organizations_tags_policies_enabled_and_attached: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/rds/rds_instance_backup_enabled/rds_instance_backup_enabled_test.py b/tests/providers/aws/services/rds/rds_instance_backup_enabled/rds_instance_backup_enabled_test.py index c95b74a6..9c2b5173 100644 --- a/tests/providers/aws/services/rds/rds_instance_backup_enabled/rds_instance_backup_enabled_test.py +++ b/tests/providers/aws/services/rds/rds_instance_backup_enabled/rds_instance_backup_enabled_test.py @@ -6,6 +6,7 @@ from boto3 import client, session from moto import mock_rds from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info +from prowler.providers.common.models import Audit_Metadata AWS_ACCOUNT_NUMBER = "123456789012" AWS_REGION = "us-east-1" @@ -54,6 +55,12 @@ class Test_rds_instance_backup_enabled: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/rds/rds_instance_deletion_protection/rds_instance_deletion_protection_test.py b/tests/providers/aws/services/rds/rds_instance_deletion_protection/rds_instance_deletion_protection_test.py index 515705f8..ddaadc94 100644 --- a/tests/providers/aws/services/rds/rds_instance_deletion_protection/rds_instance_deletion_protection_test.py +++ b/tests/providers/aws/services/rds/rds_instance_deletion_protection/rds_instance_deletion_protection_test.py @@ -6,6 +6,7 @@ from boto3 import client, session from moto import mock_rds from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info +from prowler.providers.common.models import Audit_Metadata AWS_ACCOUNT_NUMBER = "123456789012" AWS_REGION = "us-east-1" @@ -54,6 +55,12 @@ class Test_rds_instance_deletion_protection: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/rds/rds_instance_deprecated_engine_version/rds_instance_deprecated_engine_version_test.py b/tests/providers/aws/services/rds/rds_instance_deprecated_engine_version/rds_instance_deprecated_engine_version_test.py index 2dbe640a..63787f47 100644 --- a/tests/providers/aws/services/rds/rds_instance_deprecated_engine_version/rds_instance_deprecated_engine_version_test.py +++ b/tests/providers/aws/services/rds/rds_instance_deprecated_engine_version/rds_instance_deprecated_engine_version_test.py @@ -6,6 +6,7 @@ from boto3 import client, session from moto import mock_rds from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info +from prowler.providers.common.models import Audit_Metadata AWS_ACCOUNT_NUMBER = "123456789012" AWS_REGION = "us-east-1" @@ -53,6 +54,12 @@ class Test_rds_instance_deprecated_engine_version: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/rds/rds_instance_enhanced_monitoring_enabled/rds_instance_enhanced_monitoring_enabled_test.py b/tests/providers/aws/services/rds/rds_instance_enhanced_monitoring_enabled/rds_instance_enhanced_monitoring_enabled_test.py index b12177fd..0472b9d9 100644 --- a/tests/providers/aws/services/rds/rds_instance_enhanced_monitoring_enabled/rds_instance_enhanced_monitoring_enabled_test.py +++ b/tests/providers/aws/services/rds/rds_instance_enhanced_monitoring_enabled/rds_instance_enhanced_monitoring_enabled_test.py @@ -6,6 +6,7 @@ from boto3 import client, session from moto import mock_rds from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info +from prowler.providers.common.models import Audit_Metadata AWS_ACCOUNT_NUMBER = "123456789012" AWS_REGION = "us-east-1" @@ -53,6 +54,12 @@ class Test_rds_instance_enhanced_monitoring_enabled: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/rds/rds_instance_integration_cloudwatch_logs/rds_instance_integration_cloudwatch_logs_test.py b/tests/providers/aws/services/rds/rds_instance_integration_cloudwatch_logs/rds_instance_integration_cloudwatch_logs_test.py index 3775eddd..195260bc 100644 --- a/tests/providers/aws/services/rds/rds_instance_integration_cloudwatch_logs/rds_instance_integration_cloudwatch_logs_test.py +++ b/tests/providers/aws/services/rds/rds_instance_integration_cloudwatch_logs/rds_instance_integration_cloudwatch_logs_test.py @@ -6,6 +6,7 @@ from boto3 import client, session from moto import mock_rds from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info +from prowler.providers.common.models import Audit_Metadata AWS_ACCOUNT_NUMBER = "123456789012" AWS_REGION = "us-east-1" @@ -53,6 +54,12 @@ class Test_rds_instance_integration_cloudwatch_logs: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/rds/rds_instance_minor_version_upgrade_enabled/rds_instance_minor_version_upgrade_enabled_test.py b/tests/providers/aws/services/rds/rds_instance_minor_version_upgrade_enabled/rds_instance_minor_version_upgrade_enabled_test.py index a1cab091..26157644 100644 --- a/tests/providers/aws/services/rds/rds_instance_minor_version_upgrade_enabled/rds_instance_minor_version_upgrade_enabled_test.py +++ b/tests/providers/aws/services/rds/rds_instance_minor_version_upgrade_enabled/rds_instance_minor_version_upgrade_enabled_test.py @@ -6,6 +6,7 @@ from boto3 import client, session from moto import mock_rds from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info +from prowler.providers.common.models import Audit_Metadata AWS_ACCOUNT_NUMBER = "123456789012" AWS_REGION = "us-east-1" @@ -53,6 +54,12 @@ class Test_rds_instance_minor_version_upgrade_enabled: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/rds/rds_instance_multi_az/rds_instance_multi_az_test.py b/tests/providers/aws/services/rds/rds_instance_multi_az/rds_instance_multi_az_test.py index 262c84ab..635dc7fc 100644 --- a/tests/providers/aws/services/rds/rds_instance_multi_az/rds_instance_multi_az_test.py +++ b/tests/providers/aws/services/rds/rds_instance_multi_az/rds_instance_multi_az_test.py @@ -7,6 +7,7 @@ from moto import mock_rds from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info from prowler.providers.aws.services.rds.rds_service import DBCluster, DBInstance +from prowler.providers.common.models import Audit_Metadata AWS_ACCOUNT_NUMBER = "123456789012" AWS_REGION = "us-east-1" @@ -54,6 +55,12 @@ class Test_rds_instance_multi_az: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/rds/rds_instance_no_public_access/rds_instance_no_public_access_test.py b/tests/providers/aws/services/rds/rds_instance_no_public_access/rds_instance_no_public_access_test.py index 88880c24..4d0e3067 100644 --- a/tests/providers/aws/services/rds/rds_instance_no_public_access/rds_instance_no_public_access_test.py +++ b/tests/providers/aws/services/rds/rds_instance_no_public_access/rds_instance_no_public_access_test.py @@ -6,6 +6,7 @@ from boto3 import client, session from moto import mock_rds from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info +from prowler.providers.common.models import Audit_Metadata AWS_ACCOUNT_NUMBER = "123456789012" AWS_REGION = "us-east-1" @@ -53,6 +54,12 @@ class Test_rds_instance_no_public_access: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/rds/rds_instance_storage_encrypted/rds_instance_storage_encrypted_test.py b/tests/providers/aws/services/rds/rds_instance_storage_encrypted/rds_instance_storage_encrypted_test.py index 54f18ec7..b7b114f4 100644 --- a/tests/providers/aws/services/rds/rds_instance_storage_encrypted/rds_instance_storage_encrypted_test.py +++ b/tests/providers/aws/services/rds/rds_instance_storage_encrypted/rds_instance_storage_encrypted_test.py @@ -6,6 +6,7 @@ from boto3 import client, session from moto import mock_rds from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info +from prowler.providers.common.models import Audit_Metadata AWS_ACCOUNT_NUMBER = "123456789012" AWS_REGION = "us-east-1" @@ -53,6 +54,12 @@ class Test_rds_instance_storage_encrypted: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/rds/rds_instance_transport_encrypted/rds_instance_transport_encrypted_test.py b/tests/providers/aws/services/rds/rds_instance_transport_encrypted/rds_instance_transport_encrypted_test.py index a639f8cc..96ea5c61 100644 --- a/tests/providers/aws/services/rds/rds_instance_transport_encrypted/rds_instance_transport_encrypted_test.py +++ b/tests/providers/aws/services/rds/rds_instance_transport_encrypted/rds_instance_transport_encrypted_test.py @@ -6,6 +6,7 @@ from boto3 import client, session from moto import mock_rds from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info +from prowler.providers.common.models import Audit_Metadata AWS_ACCOUNT_NUMBER = "123456789012" AWS_REGION = "us-east-1" @@ -53,6 +54,12 @@ class Test_rds_instance_transport_encrypted: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/rds/rds_service_test.py b/tests/providers/aws/services/rds/rds_service_test.py index 468bb70f..d87a50ae 100644 --- a/tests/providers/aws/services/rds/rds_service_test.py +++ b/tests/providers/aws/services/rds/rds_service_test.py @@ -6,6 +6,7 @@ from moto import mock_rds from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info from prowler.providers.aws.services.rds.rds_service import RDS +from prowler.providers.common.models import Audit_Metadata AWS_ACCOUNT_NUMBER = "123456789012" AWS_REGION = "us-east-1" @@ -52,6 +53,12 @@ class Test_RDS_Service: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/rds/rds_snapshots_public_access/rds_snapshots_public_access_test.py b/tests/providers/aws/services/rds/rds_snapshots_public_access/rds_snapshots_public_access_test.py index 28968836..279a3de1 100644 --- a/tests/providers/aws/services/rds/rds_snapshots_public_access/rds_snapshots_public_access_test.py +++ b/tests/providers/aws/services/rds/rds_snapshots_public_access/rds_snapshots_public_access_test.py @@ -6,6 +6,7 @@ from boto3 import client, session from moto import mock_rds from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info +from prowler.providers.common.models import Audit_Metadata AWS_ACCOUNT_NUMBER = "123456789012" AWS_REGION = "us-east-1" @@ -61,6 +62,12 @@ class Test_rds_snapshots_public_access: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/redshift/redshift_service_test.py b/tests/providers/aws/services/redshift/redshift_service_test.py index 8ec9c9b3..29b79368 100644 --- a/tests/providers/aws/services/redshift/redshift_service_test.py +++ b/tests/providers/aws/services/redshift/redshift_service_test.py @@ -7,6 +7,7 @@ from moto import mock_redshift from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info from prowler.providers.aws.services.redshift.redshift_service import Redshift +from prowler.providers.common.models import Audit_Metadata AWS_ACCOUNT_NUMBER = "123456789012" AWS_REGION = "eu-west-1" @@ -45,7 +46,7 @@ def mock_make_api_call(self, operation_name, kwarg): return make_api_call(self, operation_name, kwarg) -def mock_generate_regional_clients(service, audit_info): +def mock_generate_regional_clients(service, audit_info, _): regional_client = audit_info.audit_session.client(service, region_name=AWS_REGION) regional_client.region = AWS_REGION return {AWS_REGION: regional_client} @@ -53,7 +54,7 @@ def mock_generate_regional_clients(service, audit_info): @patch("botocore.client.BaseClient._make_api_call", new=mock_make_api_call) @patch( - "prowler.providers.aws.services.redshift.redshift_service.generate_regional_clients", + "prowler.providers.aws.lib.service.service.generate_regional_clients", new=mock_generate_regional_clients, ) class Test_Redshift_Service: @@ -79,6 +80,12 @@ class Test_Redshift_Service: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/resourceexplorer2/resourceexplorer2_indexes_found/resourceexplorer2_indexes_found_test.py b/tests/providers/aws/services/resourceexplorer2/resourceexplorer2_indexes_found/resourceexplorer2_indexes_found_test.py index 639c061b..03ca9927 100644 --- a/tests/providers/aws/services/resourceexplorer2/resourceexplorer2_indexes_found/resourceexplorer2_indexes_found_test.py +++ b/tests/providers/aws/services/resourceexplorer2/resourceexplorer2_indexes_found/resourceexplorer2_indexes_found_test.py @@ -6,6 +6,7 @@ from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info from prowler.providers.aws.services.resourceexplorer2.resourceexplorer2_service import ( Indexes, ) +from prowler.providers.common.models import Audit_Metadata AWS_ACCOUNT_NUMBER = "123456789012" AWS_REGION = "us-east-1" @@ -35,6 +36,12 @@ class Test_resourceexplorer2_indexes_found: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/resourceexplorer2/resourceexplorer2_service_test.py b/tests/providers/aws/services/resourceexplorer2/resourceexplorer2_service_test.py index 0c9392ef..7553763c 100644 --- a/tests/providers/aws/services/resourceexplorer2/resourceexplorer2_service_test.py +++ b/tests/providers/aws/services/resourceexplorer2/resourceexplorer2_service_test.py @@ -7,6 +7,7 @@ from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info from prowler.providers.aws.services.resourceexplorer2.resourceexplorer2_service import ( ResourceExplorer2, ) +from prowler.providers.common.models import Audit_Metadata AWS_ACCOUNT_NUMBER = "123456789012" AWS_REGION = "eu-west-1" @@ -30,7 +31,7 @@ def mock_make_api_call(self, operation_name, kwarg): return make_api_call(self, operation_name, kwarg) -def mock_generate_regional_clients(service, audit_info): +def mock_generate_regional_clients(service, audit_info, _): regional_client = audit_info.audit_session.client(service, region_name=AWS_REGION) regional_client.region = AWS_REGION return {AWS_REGION: regional_client} @@ -38,7 +39,7 @@ def mock_generate_regional_clients(service, audit_info): @patch("botocore.client.BaseClient._make_api_call", new=mock_make_api_call) @patch( - "prowler.providers.aws.services.resourceexplorer2.resourceexplorer2_service.generate_regional_clients", + "prowler.providers.aws.lib.service.service.generate_regional_clients", new=mock_generate_regional_clients, ) class Test_ResourceExplorer2_Service: @@ -64,6 +65,12 @@ class Test_ResourceExplorer2_Service: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/route53/route53_public_hosted_zones_cloudwatch_logging_enabled/route53_public_hosted_zones_cloudwatch_logging_enabled_test.py b/tests/providers/aws/services/route53/route53_public_hosted_zones_cloudwatch_logging_enabled/route53_public_hosted_zones_cloudwatch_logging_enabled_test.py index b10d5849..db5a1c32 100644 --- a/tests/providers/aws/services/route53/route53_public_hosted_zones_cloudwatch_logging_enabled/route53_public_hosted_zones_cloudwatch_logging_enabled_test.py +++ b/tests/providers/aws/services/route53/route53_public_hosted_zones_cloudwatch_logging_enabled/route53_public_hosted_zones_cloudwatch_logging_enabled_test.py @@ -16,6 +16,9 @@ class Test_route53_public_hosted_zones_cloudwatch_logging_enabled: route53.hosted_zones = {} with mock.patch( + "prowler.providers.aws.services.route53.route53_service.Route53", + new=route53, + ), mock.patch( "prowler.providers.aws.services.route53.route53_public_hosted_zones_cloudwatch_logging_enabled.route53_public_hosted_zones_cloudwatch_logging_enabled.route53_client", new=route53, ): @@ -49,6 +52,9 @@ class Test_route53_public_hosted_zones_cloudwatch_logging_enabled: } with mock.patch( + "prowler.providers.aws.services.route53.route53_service.Route53", + new=route53, + ), mock.patch( "prowler.providers.aws.services.route53.route53_public_hosted_zones_cloudwatch_logging_enabled.route53_public_hosted_zones_cloudwatch_logging_enabled.route53_client", new=route53, ): @@ -84,6 +90,9 @@ class Test_route53_public_hosted_zones_cloudwatch_logging_enabled: } with mock.patch( + "prowler.providers.aws.services.route53.route53_service.Route53", + new=route53, + ), mock.patch( "prowler.providers.aws.services.route53.route53_public_hosted_zones_cloudwatch_logging_enabled.route53_public_hosted_zones_cloudwatch_logging_enabled.route53_client", new=route53, ): @@ -119,6 +128,9 @@ class Test_route53_public_hosted_zones_cloudwatch_logging_enabled: } with mock.patch( + "prowler.providers.aws.services.route53.route53_service.Route53", + new=route53, + ), mock.patch( "prowler.providers.aws.services.route53.route53_public_hosted_zones_cloudwatch_logging_enabled.route53_public_hosted_zones_cloudwatch_logging_enabled.route53_client", new=route53, ): diff --git a/tests/providers/aws/services/route53/route53_service_test.py b/tests/providers/aws/services/route53/route53_service_test.py index e2ea0d5f..25f5bfce 100644 --- a/tests/providers/aws/services/route53/route53_service_test.py +++ b/tests/providers/aws/services/route53/route53_service_test.py @@ -6,6 +6,7 @@ from moto import mock_logs, mock_route53 from prowler.providers.aws.lib.audit_info.audit_info import AWS_Audit_Info from prowler.providers.aws.services.route53.route53_service import Route53 +from prowler.providers.common.models import Audit_Metadata # Mock Test Region AWS_REGION = "us-east-1" @@ -56,6 +57,12 @@ class Test_Route53_Service: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/route53/route53domains_service_test.py b/tests/providers/aws/services/route53/route53domains_service_test.py index bef6c823..2c587b08 100644 --- a/tests/providers/aws/services/route53/route53domains_service_test.py +++ b/tests/providers/aws/services/route53/route53domains_service_test.py @@ -6,6 +6,7 @@ from boto3 import session from prowler.providers.aws.lib.audit_info.audit_info import AWS_Audit_Info from prowler.providers.aws.services.route53.route53_service import Route53Domains +from prowler.providers.common.models import Audit_Metadata # Mock Test Region AWS_REGION = "us-east-1" @@ -92,6 +93,12 @@ class Test_Route53_Service: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/s3/s3_account_level_public_access_blocks/s3_account_level_public_access_blocks_test.py b/tests/providers/aws/services/s3/s3_account_level_public_access_blocks/s3_account_level_public_access_blocks_test.py index 1a1c0b6e..a4e28fe8 100644 --- a/tests/providers/aws/services/s3/s3_account_level_public_access_blocks/s3_account_level_public_access_blocks_test.py +++ b/tests/providers/aws/services/s3/s3_account_level_public_access_blocks/s3_account_level_public_access_blocks_test.py @@ -4,6 +4,7 @@ from boto3 import client, session from moto import mock_s3, mock_s3control from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info +from prowler.providers.common.models import Audit_Metadata AWS_ACCOUNT_NUMBER = "123456789012" AWS_ACCOUNT_ARN = f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root" @@ -34,6 +35,12 @@ class Test_s3_account_level_public_access_blocks: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/s3/s3_bucket_acl_prohibited/s3_bucket_acl_prohibited_test.py b/tests/providers/aws/services/s3/s3_bucket_acl_prohibited/s3_bucket_acl_prohibited_test.py index 0821083a..8c27f9c9 100644 --- a/tests/providers/aws/services/s3/s3_bucket_acl_prohibited/s3_bucket_acl_prohibited_test.py +++ b/tests/providers/aws/services/s3/s3_bucket_acl_prohibited/s3_bucket_acl_prohibited_test.py @@ -5,6 +5,7 @@ from boto3 import client, session from moto import mock_s3 from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info +from prowler.providers.common.models import Audit_Metadata AWS_ACCOUNT_NUMBER = "123456789012" AWS_ACCOUNT_ARN = f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root" @@ -35,6 +36,12 @@ class Test_s3_bucket_acl_prohibited: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/s3/s3_bucket_default_encryption/s3_bucket_default_encryption_test.py b/tests/providers/aws/services/s3/s3_bucket_default_encryption/s3_bucket_default_encryption_test.py index 445df480..f1d40476 100644 --- a/tests/providers/aws/services/s3/s3_bucket_default_encryption/s3_bucket_default_encryption_test.py +++ b/tests/providers/aws/services/s3/s3_bucket_default_encryption/s3_bucket_default_encryption_test.py @@ -5,6 +5,7 @@ from boto3 import client, session from moto import mock_s3 from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info +from prowler.providers.common.models import Audit_Metadata AWS_ACCOUNT_NUMBER = "123456789012" AWS_REGION = "us-east-1" @@ -35,6 +36,12 @@ class Test_s3_bucket_default_encryption: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/s3/s3_bucket_level_public_access_block/s3_bucket_level_public_access_block_test.py b/tests/providers/aws/services/s3/s3_bucket_level_public_access_block/s3_bucket_level_public_access_block_test.py index 418bcfd8..9230e20c 100644 --- a/tests/providers/aws/services/s3/s3_bucket_level_public_access_block/s3_bucket_level_public_access_block_test.py +++ b/tests/providers/aws/services/s3/s3_bucket_level_public_access_block/s3_bucket_level_public_access_block_test.py @@ -5,6 +5,7 @@ from boto3 import client, session from moto import mock_s3 from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info +from prowler.providers.common.models import Audit_Metadata AWS_ACCOUNT_NUMBER = "123456789012" AWS_REGION = "us-east-1" @@ -35,6 +36,12 @@ class Test_s3_bucket_level_public_access_block: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/s3/s3_bucket_no_mfa_delete/s3_bucket_no_mfa_delete_test.py b/tests/providers/aws/services/s3/s3_bucket_no_mfa_delete/s3_bucket_no_mfa_delete_test.py index 0effb7dd..62d81fd2 100644 --- a/tests/providers/aws/services/s3/s3_bucket_no_mfa_delete/s3_bucket_no_mfa_delete_test.py +++ b/tests/providers/aws/services/s3/s3_bucket_no_mfa_delete/s3_bucket_no_mfa_delete_test.py @@ -5,6 +5,7 @@ from boto3 import client, session from moto import mock_s3 from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info +from prowler.providers.common.models import Audit_Metadata AWS_ACCOUNT_NUMBER = "123456789012" AWS_ACCOUNT_ARN = f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root" @@ -35,6 +36,12 @@ class Test_s3_bucket_no_mfa_delete: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/s3/s3_bucket_object_lock/s3_bucket_object_lock_test.py b/tests/providers/aws/services/s3/s3_bucket_object_lock/s3_bucket_object_lock_test.py index f275f2be..d223427f 100644 --- a/tests/providers/aws/services/s3/s3_bucket_object_lock/s3_bucket_object_lock_test.py +++ b/tests/providers/aws/services/s3/s3_bucket_object_lock/s3_bucket_object_lock_test.py @@ -5,6 +5,7 @@ from boto3 import client, session from moto import mock_s3 from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info +from prowler.providers.common.models import Audit_Metadata AWS_ACCOUNT_NUMBER = "123456789012" AWS_ACCOUNT_ARN = f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root" @@ -35,6 +36,12 @@ class Test_s3_bucket_object_lock: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/s3/s3_bucket_object_versioning/s3_bucket_object_versioning_test.py b/tests/providers/aws/services/s3/s3_bucket_object_versioning/s3_bucket_object_versioning_test.py index 1cff6bc6..d8fef3b1 100644 --- a/tests/providers/aws/services/s3/s3_bucket_object_versioning/s3_bucket_object_versioning_test.py +++ b/tests/providers/aws/services/s3/s3_bucket_object_versioning/s3_bucket_object_versioning_test.py @@ -5,6 +5,7 @@ from boto3 import client, session from moto import mock_s3 from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info +from prowler.providers.common.models import Audit_Metadata AWS_ACCOUNT_NUMBER = "123456789012" AWS_ACCOUNT_ARN = f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root" @@ -35,6 +36,12 @@ class Test_s3_bucket_object_versioning: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/s3/s3_bucket_policy_public_write_access/s3_bucket_policy_public_write_access_test.py b/tests/providers/aws/services/s3/s3_bucket_policy_public_write_access/s3_bucket_policy_public_write_access_test.py index 1d4de2db..1bae8c18 100644 --- a/tests/providers/aws/services/s3/s3_bucket_policy_public_write_access/s3_bucket_policy_public_write_access_test.py +++ b/tests/providers/aws/services/s3/s3_bucket_policy_public_write_access/s3_bucket_policy_public_write_access_test.py @@ -5,6 +5,7 @@ from boto3 import client, session from moto import mock_s3 from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info +from prowler.providers.common.models import Audit_Metadata AWS_ACCOUNT_NUMBER = "123456789012" AWS_ACCOUNT_ARN = f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root" @@ -35,6 +36,12 @@ class Test_s3_bucket_policy_public_write_access: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/s3/s3_bucket_public_access/s3_bucket_public_access_test.py b/tests/providers/aws/services/s3/s3_bucket_public_access/s3_bucket_public_access_test.py index 38a357a1..23e49adb 100644 --- a/tests/providers/aws/services/s3/s3_bucket_public_access/s3_bucket_public_access_test.py +++ b/tests/providers/aws/services/s3/s3_bucket_public_access/s3_bucket_public_access_test.py @@ -5,6 +5,7 @@ from boto3 import client, session from moto import mock_s3, mock_s3control from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info +from prowler.providers.common.models import Audit_Metadata AWS_ACCOUNT_NUMBER = "123456789012" AWS_ACCOUNT_ARN = f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root" @@ -35,6 +36,12 @@ class Test_s3_bucket_public_access: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/s3/s3_bucket_public_list_acl/s3_bucket_public_list_acl_test.py b/tests/providers/aws/services/s3/s3_bucket_public_list_acl/s3_bucket_public_list_acl_test.py index f9d0240c..b94567fd 100644 --- a/tests/providers/aws/services/s3/s3_bucket_public_list_acl/s3_bucket_public_list_acl_test.py +++ b/tests/providers/aws/services/s3/s3_bucket_public_list_acl/s3_bucket_public_list_acl_test.py @@ -4,6 +4,7 @@ from boto3 import client, session from moto import mock_s3, mock_s3control from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info +from prowler.providers.common.models import Audit_Metadata AWS_ACCOUNT_NUMBER = "123456789012" AWS_ACCOUNT_ARN = f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root" @@ -34,6 +35,12 @@ class Test_s3_bucket_public_list_acl: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/s3/s3_bucket_public_write_acl/s3_bucket_public_write_acl_test.py b/tests/providers/aws/services/s3/s3_bucket_public_write_acl/s3_bucket_public_write_acl_test.py index 0eeacaec..a66c945d 100644 --- a/tests/providers/aws/services/s3/s3_bucket_public_write_acl/s3_bucket_public_write_acl_test.py +++ b/tests/providers/aws/services/s3/s3_bucket_public_write_acl/s3_bucket_public_write_acl_test.py @@ -4,6 +4,7 @@ from boto3 import client, session from moto import mock_s3, mock_s3control from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info +from prowler.providers.common.models import Audit_Metadata AWS_ACCOUNT_NUMBER = "123456789012" AWS_ACCOUNT_ARN = f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root" @@ -34,6 +35,12 @@ class Test_s3_bucket_public_write_acl: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/s3/s3_bucket_secure_transport_policy/s3_bucket_secure_transport_policy_test.py b/tests/providers/aws/services/s3/s3_bucket_secure_transport_policy/s3_bucket_secure_transport_policy_test.py index 1f6bb48d..408e53e8 100644 --- a/tests/providers/aws/services/s3/s3_bucket_secure_transport_policy/s3_bucket_secure_transport_policy_test.py +++ b/tests/providers/aws/services/s3/s3_bucket_secure_transport_policy/s3_bucket_secure_transport_policy_test.py @@ -5,6 +5,7 @@ from boto3 import client, session from moto import mock_s3 from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info +from prowler.providers.common.models import Audit_Metadata AWS_ACCOUNT_NUMBER = "123456789012" AWS_ACCOUNT_ARN = f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root" @@ -35,6 +36,12 @@ class Test_s3_bucket_secure_transport_policy: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/s3/s3_bucket_server_access_logging_enabled/s3_bucket_server_access_logging_enabled_test.py b/tests/providers/aws/services/s3/s3_bucket_server_access_logging_enabled/s3_bucket_server_access_logging_enabled_test.py index e7a3cc67..77bed864 100644 --- a/tests/providers/aws/services/s3/s3_bucket_server_access_logging_enabled/s3_bucket_server_access_logging_enabled_test.py +++ b/tests/providers/aws/services/s3/s3_bucket_server_access_logging_enabled/s3_bucket_server_access_logging_enabled_test.py @@ -5,6 +5,7 @@ from boto3 import client, session from moto import mock_s3 from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info +from prowler.providers.common.models import Audit_Metadata AWS_ACCOUNT_NUMBER = "123456789012" AWS_ACCOUNT_ARN = f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root" @@ -35,6 +36,12 @@ class Test_s3_bucket_server_access_logging_enabled: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/s3/s3_service_test.py b/tests/providers/aws/services/s3/s3_service_test.py index abcd561f..3f1c6491 100644 --- a/tests/providers/aws/services/s3/s3_service_test.py +++ b/tests/providers/aws/services/s3/s3_service_test.py @@ -5,6 +5,7 @@ from moto import mock_s3, mock_s3control from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info from prowler.providers.aws.services.s3.s3_service import S3, S3Control +from prowler.providers.common.models import Audit_Metadata AWS_ACCOUNT_NUMBER = "123456789012" AWS_REGION = "us-east-1" @@ -34,6 +35,12 @@ class Test_S3_Service: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/sagemaker/sagemaker_service_test.py b/tests/providers/aws/services/sagemaker/sagemaker_service_test.py index 8fee084a..14472b13 100644 --- a/tests/providers/aws/services/sagemaker/sagemaker_service_test.py +++ b/tests/providers/aws/services/sagemaker/sagemaker_service_test.py @@ -6,6 +6,7 @@ from boto3 import session from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info from prowler.providers.aws.services.sagemaker.sagemaker_service import SageMaker +from prowler.providers.common.models import Audit_Metadata AWS_ACCOUNT_NUMBER = "123456789012" AWS_REGION = "eu-west-1" @@ -92,7 +93,7 @@ def mock_make_api_call(self, operation_name, kwarg): return make_api_call(self, operation_name, kwarg) -def mock_generate_regional_clients(service, audit_info): +def mock_generate_regional_clients(service, audit_info, _): regional_client = audit_info.audit_session.client(service, region_name=AWS_REGION) regional_client.region = AWS_REGION return {AWS_REGION: regional_client} @@ -100,7 +101,7 @@ def mock_generate_regional_clients(service, audit_info): @patch("botocore.client.BaseClient._make_api_call", new=mock_make_api_call) @patch( - "prowler.providers.aws.services.sagemaker.sagemaker_service.generate_regional_clients", + "prowler.providers.aws.lib.service.service.generate_regional_clients", new=mock_generate_regional_clients, ) class Test_SageMaker_Service: @@ -126,6 +127,12 @@ class Test_SageMaker_Service: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/secretsmanager/secretsmanager_service_test.py b/tests/providers/aws/services/secretsmanager/secretsmanager_service_test.py index b64153fe..96f29d77 100644 --- a/tests/providers/aws/services/secretsmanager/secretsmanager_service_test.py +++ b/tests/providers/aws/services/secretsmanager/secretsmanager_service_test.py @@ -10,13 +10,14 @@ from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info from prowler.providers.aws.services.secretsmanager.secretsmanager_service import ( SecretsManager, ) +from prowler.providers.common.models import Audit_Metadata # Mock Test Region AWS_REGION = "eu-west-1" # Mock generate_regional_clients() -def mock_generate_regional_clients(service, audit_info): +def mock_generate_regional_clients(service, audit_info, _): regional_client = audit_info.audit_session.client(service, region_name=AWS_REGION) regional_client.region = AWS_REGION return {AWS_REGION: regional_client} @@ -24,7 +25,7 @@ def mock_generate_regional_clients(service, audit_info): # Patch every AWS call using Boto3 and generate_regional_clients to have 1 client @patch( - "prowler.providers.aws.services.secretsmanager.secretsmanager_service.generate_regional_clients", + "prowler.providers.aws.lib.service.service.generate_regional_clients", new=mock_generate_regional_clients, ) class Test_SecretsManager_Service: @@ -49,6 +50,12 @@ class Test_SecretsManager_Service: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/securityhub/securityhub_service_test.py b/tests/providers/aws/services/securityhub/securityhub_service_test.py index 47cd6743..b4b6f29b 100644 --- a/tests/providers/aws/services/securityhub/securityhub_service_test.py +++ b/tests/providers/aws/services/securityhub/securityhub_service_test.py @@ -5,6 +5,7 @@ from boto3 import session from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info from prowler.providers.aws.services.securityhub.securityhub_service import SecurityHub +from prowler.providers.common.models import Audit_Metadata # Mock Test Region AWS_REGION = "eu-west-1" @@ -45,7 +46,7 @@ def mock_make_api_call(self, operation_name, kwarg): # Mock generate_regional_clients() -def mock_generate_regional_clients(service, audit_info): +def mock_generate_regional_clients(service, audit_info, _): regional_client = audit_info.audit_session.client(service, region_name=AWS_REGION) regional_client.region = AWS_REGION return {AWS_REGION: regional_client} @@ -54,7 +55,7 @@ def mock_generate_regional_clients(service, audit_info): # Patch every AWS call using Boto3 and generate_regional_clients to have 1 client @patch("botocore.client.BaseClient._make_api_call", new=mock_make_api_call) @patch( - "prowler.providers.aws.services.securityhub.securityhub_service.generate_regional_clients", + "prowler.providers.aws.lib.service.service.generate_regional_clients", new=mock_generate_regional_clients, ) class Test_SecurityHub_Service: @@ -79,6 +80,12 @@ class Test_SecurityHub_Service: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/shield/shield_advanced_protection_in_associated_elastic_ips/shield_advanced_protection_in_associated_elastic_ips_test.py b/tests/providers/aws/services/shield/shield_advanced_protection_in_associated_elastic_ips/shield_advanced_protection_in_associated_elastic_ips_test.py index e9fd4cee..59bbff96 100644 --- a/tests/providers/aws/services/shield/shield_advanced_protection_in_associated_elastic_ips/shield_advanced_protection_in_associated_elastic_ips_test.py +++ b/tests/providers/aws/services/shield/shield_advanced_protection_in_associated_elastic_ips/shield_advanced_protection_in_associated_elastic_ips_test.py @@ -13,7 +13,7 @@ AWS_REGION = "eu-west-1" # Mock generate_regional_clients() -def mock_generate_regional_clients(service, audit_info): +def mock_generate_regional_clients(service, audit_info, _): regional_client = audit_info.audit_session.client(service, region_name=AWS_REGION) regional_client.region = AWS_REGION return {AWS_REGION: regional_client} @@ -21,7 +21,7 @@ def mock_generate_regional_clients(service, audit_info): # Patch every AWS call using Boto3 and generate_regional_clients to have 1 client @patch( - "prowler.providers.aws.services.accessanalyzer.accessanalyzer_service.generate_regional_clients", + "prowler.providers.aws.lib.service.service.generate_regional_clients", new=mock_generate_regional_clients, ) class Test_shield_advanced_protection_in_associated_elastic_ips: diff --git a/tests/providers/aws/services/shield/shield_advanced_protection_in_classic_load_balancers/shield_advanced_protection_in_classic_load_balancers_test.py b/tests/providers/aws/services/shield/shield_advanced_protection_in_classic_load_balancers/shield_advanced_protection_in_classic_load_balancers_test.py index 23ce3a20..af830707 100644 --- a/tests/providers/aws/services/shield/shield_advanced_protection_in_classic_load_balancers/shield_advanced_protection_in_classic_load_balancers_test.py +++ b/tests/providers/aws/services/shield/shield_advanced_protection_in_classic_load_balancers/shield_advanced_protection_in_classic_load_balancers_test.py @@ -6,6 +6,7 @@ from moto.core import DEFAULT_ACCOUNT_ID from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info from prowler.providers.aws.services.shield.shield_service import Protection +from prowler.providers.common.models import Audit_Metadata AWS_REGION = "eu-west-1" @@ -33,6 +34,12 @@ class Test_shield_advanced_protection_in_classic_load_balancers: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/shield/shield_advanced_protection_in_internet_facing_load_balancers/shield_advanced_protection_in_internet_facing_load_balancers_test.py b/tests/providers/aws/services/shield/shield_advanced_protection_in_internet_facing_load_balancers/shield_advanced_protection_in_internet_facing_load_balancers_test.py index d7150b19..77cc72c5 100644 --- a/tests/providers/aws/services/shield/shield_advanced_protection_in_internet_facing_load_balancers/shield_advanced_protection_in_internet_facing_load_balancers_test.py +++ b/tests/providers/aws/services/shield/shield_advanced_protection_in_internet_facing_load_balancers/shield_advanced_protection_in_internet_facing_load_balancers_test.py @@ -7,12 +7,13 @@ from moto.core import DEFAULT_ACCOUNT_ID as AWS_ACCOUNT_NUMBER from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info from prowler.providers.aws.services.shield.shield_service import Protection +from prowler.providers.common.models import Audit_Metadata AWS_REGION = "eu-west-1" # Mock generate_regional_clients() -def mock_generate_regional_clients(service, audit_info): +def mock_generate_regional_clients(service, audit_info, _): regional_client = audit_info.audit_session.client(service, region_name=AWS_REGION) regional_client.region = AWS_REGION return {AWS_REGION: regional_client} @@ -20,7 +21,7 @@ def mock_generate_regional_clients(service, audit_info): # Patch every AWS call using Boto3 and generate_regional_clients to have 1 client @patch( - "prowler.providers.aws.services.accessanalyzer.accessanalyzer_service.generate_regional_clients", + "prowler.providers.aws.lib.service.service.generate_regional_clients", new=mock_generate_regional_clients, ) class Test_shield_advanced_protection_in_internet_facing_load_balancers: @@ -46,6 +47,12 @@ class Test_shield_advanced_protection_in_internet_facing_load_balancers: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/shield/shield_advanced_protection_in_route53_hosted_zones/shield_advanced_protection_in_route53_hosted_zones_test.py b/tests/providers/aws/services/shield/shield_advanced_protection_in_route53_hosted_zones/shield_advanced_protection_in_route53_hosted_zones_test.py index 89d2d618..41bd7104 100644 --- a/tests/providers/aws/services/shield/shield_advanced_protection_in_route53_hosted_zones/shield_advanced_protection_in_route53_hosted_zones_test.py +++ b/tests/providers/aws/services/shield/shield_advanced_protection_in_route53_hosted_zones/shield_advanced_protection_in_route53_hosted_zones_test.py @@ -16,6 +16,9 @@ class Test_shield_advanced_protection_in_route53_hosted_zones: with mock.patch( "prowler.providers.aws.services.shield.shield_service.Shield", new=shield_client, + ), mock.patch( + "prowler.providers.aws.services.route53.route53_service.Route53", + new=shield_client, ), mock.patch( "prowler.providers.aws.services.shield.shield_advanced_protection_in_route53_hosted_zones.shield_advanced_protection_in_route53_hosted_zones.route53_client", new=route53_client, @@ -66,6 +69,9 @@ class Test_shield_advanced_protection_in_route53_hosted_zones: with mock.patch( "prowler.providers.aws.services.shield.shield_service.Shield", new=shield_client, + ), mock.patch( + "prowler.providers.aws.services.route53.route53_service.Route53", + new=shield_client, ), mock.patch( "prowler.providers.aws.services.shield.shield_advanced_protection_in_route53_hosted_zones.shield_advanced_protection_in_route53_hosted_zones.route53_client", new=route53_client, @@ -115,6 +121,9 @@ class Test_shield_advanced_protection_in_route53_hosted_zones: with mock.patch( "prowler.providers.aws.services.shield.shield_service.Shield", new=shield_client, + ), mock.patch( + "prowler.providers.aws.services.route53.route53_service.Route53", + new=shield_client, ), mock.patch( "prowler.providers.aws.services.shield.shield_advanced_protection_in_route53_hosted_zones.shield_advanced_protection_in_route53_hosted_zones.route53_client", new=route53_client, @@ -164,6 +173,9 @@ class Test_shield_advanced_protection_in_route53_hosted_zones: with mock.patch( "prowler.providers.aws.services.shield.shield_service.Shield", new=shield_client, + ), mock.patch( + "prowler.providers.aws.services.route53.route53_service.Route53", + new=shield_client, ), mock.patch( "prowler.providers.aws.services.shield.shield_advanced_protection_in_route53_hosted_zones.shield_advanced_protection_in_route53_hosted_zones.route53_client", new=route53_client, diff --git a/tests/providers/aws/services/shield/shield_service_test.py b/tests/providers/aws/services/shield/shield_service_test.py index 0e5cc031..be29028b 100644 --- a/tests/providers/aws/services/shield/shield_service_test.py +++ b/tests/providers/aws/services/shield/shield_service_test.py @@ -5,6 +5,7 @@ from moto.core import DEFAULT_ACCOUNT_ID from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info from prowler.providers.aws.services.shield.shield_service import Shield +from prowler.providers.common.models import Audit_Metadata # Mock Test Region AWS_REGION = "eu-west-1" @@ -56,6 +57,12 @@ class Test_Shield_Service: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/sns/sns_service_test.py b/tests/providers/aws/services/sns/sns_service_test.py index cfb15392..2bb93aeb 100644 --- a/tests/providers/aws/services/sns/sns_service_test.py +++ b/tests/providers/aws/services/sns/sns_service_test.py @@ -8,6 +8,7 @@ from moto import mock_sns from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info from prowler.providers.aws.services.sns.sns_service import SNS +from prowler.providers.common.models import Audit_Metadata AWS_ACCOUNT_NUMBER = "123456789012" AWS_REGION = "eu-west-1" @@ -36,7 +37,7 @@ def mock_make_api_call(self, operation_name, kwarg): return make_api_call(self, operation_name, kwarg) -def mock_generate_regional_clients(service, audit_info): +def mock_generate_regional_clients(service, audit_info, _): regional_client = audit_info.audit_session.client(service, region_name=AWS_REGION) regional_client.region = AWS_REGION return {AWS_REGION: regional_client} @@ -44,7 +45,7 @@ def mock_generate_regional_clients(service, audit_info): @patch("botocore.client.BaseClient._make_api_call", new=mock_make_api_call) @patch( - "prowler.providers.aws.services.sns.sns_service.generate_regional_clients", + "prowler.providers.aws.lib.service.service.generate_regional_clients", new=mock_generate_regional_clients, ) class Test_SNS_Service: @@ -70,6 +71,12 @@ class Test_SNS_Service: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/sqs/sqs_service_test.py b/tests/providers/aws/services/sqs/sqs_service_test.py index d97f52c1..c3a71dc5 100644 --- a/tests/providers/aws/services/sqs/sqs_service_test.py +++ b/tests/providers/aws/services/sqs/sqs_service_test.py @@ -8,6 +8,7 @@ from moto import mock_sqs from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info from prowler.providers.aws.services.sqs.sqs_service import SQS +from prowler.providers.common.models import Audit_Metadata AWS_ACCOUNT_NUMBER = "123456789012" AWS_REGION = "eu-west-1" @@ -38,7 +39,7 @@ def mock_make_api_call(self, operation_name, kwarg): return make_api_call(self, operation_name, kwarg) -def mock_generate_regional_clients(service, audit_info): +def mock_generate_regional_clients(service, audit_info, _): regional_client = audit_info.audit_session.client(service, region_name=AWS_REGION) regional_client.region = AWS_REGION return {AWS_REGION: regional_client} @@ -46,7 +47,7 @@ def mock_generate_regional_clients(service, audit_info): @patch("botocore.client.BaseClient._make_api_call", new=mock_make_api_call) @patch( - "prowler.providers.aws.services.sqs.sqs_service.generate_regional_clients", + "prowler.providers.aws.lib.service.service.generate_regional_clients", new=mock_generate_regional_clients, ) class Test_SQS_Service: @@ -72,6 +73,12 @@ class Test_SQS_Service: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/ssm/ssm_service_test.py b/tests/providers/aws/services/ssm/ssm_service_test.py index 301e8b2e..dd03957c 100644 --- a/tests/providers/aws/services/ssm/ssm_service_test.py +++ b/tests/providers/aws/services/ssm/ssm_service_test.py @@ -8,6 +8,7 @@ from moto.core import DEFAULT_ACCOUNT_ID from prowler.providers.aws.lib.audit_info.audit_info import AWS_Audit_Info from prowler.providers.aws.services.ssm.ssm_service import SSM, ResourceStatus +from prowler.providers.common.models import Audit_Metadata # Mock Test Region AWS_REGION = "eu-west-1" @@ -66,7 +67,7 @@ def mock_make_api_call(self, operation_name, kwarg): # Mock generate_regional_clients() -def mock_generate_regional_clients(service, audit_info): +def mock_generate_regional_clients(service, audit_info, _): regional_client = audit_info.audit_session.client(service, region_name=AWS_REGION) regional_client.region = AWS_REGION return {AWS_REGION: regional_client} @@ -127,7 +128,7 @@ mainSteps: # Patch every AWS call using Boto3 and generate_regional_clients to have 1 client @patch("botocore.client.BaseClient._make_api_call", new=mock_make_api_call) @patch( - "prowler.providers.aws.services.ssm.ssm_service.generate_regional_clients", + "prowler.providers.aws.lib.service.service.generate_regional_clients", new=mock_generate_regional_clients, ) class Test_SSM_Service: @@ -153,6 +154,12 @@ class Test_SSM_Service: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/ssmincidents/ssmincidents_service_test.py b/tests/providers/aws/services/ssmincidents/ssmincidents_service_test.py index 78e06c53..7381965e 100644 --- a/tests/providers/aws/services/ssmincidents/ssmincidents_service_test.py +++ b/tests/providers/aws/services/ssmincidents/ssmincidents_service_test.py @@ -8,6 +8,7 @@ from prowler.providers.aws.lib.audit_info.audit_info import AWS_Audit_Info from prowler.providers.aws.services.ssmincidents.ssmincidents_service import ( SSMIncidents, ) +from prowler.providers.common.models import Audit_Metadata # Mock Test Region AWS_REGION = "us-east-1" @@ -54,7 +55,7 @@ def mock_make_api_call(self, operation_name, kwargs): return make_api_call(self, operation_name, kwargs) -def mock_generate_regional_clients(service, audit_info): +def mock_generate_regional_clients(service, audit_info, _): regional_client = audit_info.audit_session.client(service, region_name=AWS_REGION) regional_client.region = AWS_REGION return {AWS_REGION: regional_client} @@ -63,7 +64,7 @@ def mock_generate_regional_clients(service, audit_info): # Patch every AWS call using Boto3 and generate_regional_clients to have 1 client @patch("botocore.client.BaseClient._make_api_call", new=mock_make_api_call) @patch( - "prowler.providers.aws.services.ssmincidents.ssmincidents_service.generate_regional_clients", + "prowler.providers.aws.lib.service.service.generate_regional_clients", new=mock_generate_regional_clients, ) class Test_SSMIncidents_Service: @@ -89,6 +90,12 @@ class Test_SSMIncidents_Service: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/trustedadvisor/trustedadvisor_service_test.py b/tests/providers/aws/services/trustedadvisor/trustedadvisor_service_test.py index 42d12d31..9936d29a 100644 --- a/tests/providers/aws/services/trustedadvisor/trustedadvisor_service_test.py +++ b/tests/providers/aws/services/trustedadvisor/trustedadvisor_service_test.py @@ -8,6 +8,7 @@ from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info from prowler.providers.aws.services.trustedadvisor.trustedadvisor_service import ( TrustedAdvisor, ) +from prowler.providers.common.models import Audit_Metadata AWS_ACCOUNT_NUMBER = "123456789012" AWS_REGION = "us-east-1" @@ -45,6 +46,12 @@ class Test_TrustedAdvisor_Service: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/vpc/vpc_different_regions/vpc_different_regions_test.py b/tests/providers/aws/services/vpc/vpc_different_regions/vpc_different_regions_test.py index 4a03068b..0930d0c3 100644 --- a/tests/providers/aws/services/vpc/vpc_different_regions/vpc_different_regions_test.py +++ b/tests/providers/aws/services/vpc/vpc_different_regions/vpc_different_regions_test.py @@ -4,6 +4,7 @@ from boto3 import client, session from moto import mock_ec2 from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info +from prowler.providers.common.models import Audit_Metadata AWS_REGION = "us-east-1" AWS_ACCOUNT_NUMBER = "123456789012" @@ -31,6 +32,12 @@ class Test_vpc_different_regions: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/vpc/vpc_endpoint_connections_trust_boundaries/vpc_endpoint_connections_trust_boundaries_test.py b/tests/providers/aws/services/vpc/vpc_endpoint_connections_trust_boundaries/vpc_endpoint_connections_trust_boundaries_test.py index 28a404f9..176e7204 100644 --- a/tests/providers/aws/services/vpc/vpc_endpoint_connections_trust_boundaries/vpc_endpoint_connections_trust_boundaries_test.py +++ b/tests/providers/aws/services/vpc/vpc_endpoint_connections_trust_boundaries/vpc_endpoint_connections_trust_boundaries_test.py @@ -5,6 +5,7 @@ from boto3 import client, session from moto import mock_ec2 from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info +from prowler.providers.common.models import Audit_Metadata AWS_REGION = "us-east-1" AWS_ACCOUNT_NUMBER = "123456789012" @@ -38,6 +39,12 @@ class Test_vpc_endpoint_connections_trust_boundaries: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/vpc/vpc_endpoint_services_allowed_principals_trust_boundaries/vpc_endpoint_services_allowed_principals_trust_boundaries_test.py b/tests/providers/aws/services/vpc/vpc_endpoint_services_allowed_principals_trust_boundaries/vpc_endpoint_services_allowed_principals_trust_boundaries_test.py index 2be6724b..9f302213 100644 --- a/tests/providers/aws/services/vpc/vpc_endpoint_services_allowed_principals_trust_boundaries/vpc_endpoint_services_allowed_principals_trust_boundaries_test.py +++ b/tests/providers/aws/services/vpc/vpc_endpoint_services_allowed_principals_trust_boundaries/vpc_endpoint_services_allowed_principals_trust_boundaries_test.py @@ -6,6 +6,7 @@ from mock import patch from moto import mock_ec2, mock_elbv2 from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info +from prowler.providers.common.models import Audit_Metadata AWS_REGION = "us-east-1" AWS_ACCOUNT_NUMBER = "123456789012" @@ -57,6 +58,12 @@ class Test_vpc_endpoint_services_allowed_principals_trust_boundaries: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/vpc/vpc_flow_logs_enabled/vpc_flow_logs_enabled_test.py b/tests/providers/aws/services/vpc/vpc_flow_logs_enabled/vpc_flow_logs_enabled_test.py index 2ca4cb66..48abd50f 100644 --- a/tests/providers/aws/services/vpc/vpc_flow_logs_enabled/vpc_flow_logs_enabled_test.py +++ b/tests/providers/aws/services/vpc/vpc_flow_logs_enabled/vpc_flow_logs_enabled_test.py @@ -4,6 +4,7 @@ from boto3 import client, session from moto import mock_ec2 from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info +from prowler.providers.common.models import Audit_Metadata AWS_REGION = "us-east-1" AWS_ACCOUNT_NUMBER = "123456789012" @@ -31,6 +32,12 @@ class Test_vpc_flow_logs_enabled: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/vpc/vpc_peering_routing_tables_with_least_privilege/vpc_peering_routing_tables_with_least_privilege_test.py b/tests/providers/aws/services/vpc/vpc_peering_routing_tables_with_least_privilege/vpc_peering_routing_tables_with_least_privilege_test.py index e41517bd..a220251b 100644 --- a/tests/providers/aws/services/vpc/vpc_peering_routing_tables_with_least_privilege/vpc_peering_routing_tables_with_least_privilege_test.py +++ b/tests/providers/aws/services/vpc/vpc_peering_routing_tables_with_least_privilege/vpc_peering_routing_tables_with_least_privilege_test.py @@ -4,6 +4,7 @@ from boto3 import client, resource, session from moto import mock_ec2 from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info +from prowler.providers.common.models import Audit_Metadata AWS_REGION = "us-east-1" AWS_ACCOUNT_NUMBER = "123456789012" @@ -31,6 +32,12 @@ class Test_vpc_peering_routing_tables_with_least_privilege: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/vpc/vpc_service_test.py b/tests/providers/aws/services/vpc/vpc_service_test.py index 002e0938..436fe882 100644 --- a/tests/providers/aws/services/vpc/vpc_service_test.py +++ b/tests/providers/aws/services/vpc/vpc_service_test.py @@ -5,6 +5,7 @@ from moto import mock_ec2, mock_elbv2 from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info from prowler.providers.aws.services.vpc.vpc_service import VPC, Route +from prowler.providers.common.models import Audit_Metadata AWS_ACCOUNT_NUMBER = "123456789012" AWS_REGION = "us-east-1" @@ -33,6 +34,12 @@ class Test_VPC_Service: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/vpc/vpc_subnet_different_az/vpc_subnet_different_az_test.py b/tests/providers/aws/services/vpc/vpc_subnet_different_az/vpc_subnet_different_az_test.py index e329e021..99b38877 100644 --- a/tests/providers/aws/services/vpc/vpc_subnet_different_az/vpc_subnet_different_az_test.py +++ b/tests/providers/aws/services/vpc/vpc_subnet_different_az/vpc_subnet_different_az_test.py @@ -4,6 +4,7 @@ from boto3 import client, session from moto import mock_ec2 from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info +from prowler.providers.common.models import Audit_Metadata AWS_REGION = "us-east-1" AWS_ACCOUNT_NUMBER = "123456789012" @@ -31,6 +32,12 @@ class Test_vpc_subnet_different_az: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/vpc/vpc_subnet_no_public_ip_by_default/vpc_subnet_no_public_ip_by_default_test.py b/tests/providers/aws/services/vpc/vpc_subnet_no_public_ip_by_default/vpc_subnet_no_public_ip_by_default_test.py index bcb2a6b2..0388eadc 100644 --- a/tests/providers/aws/services/vpc/vpc_subnet_no_public_ip_by_default/vpc_subnet_no_public_ip_by_default_test.py +++ b/tests/providers/aws/services/vpc/vpc_subnet_no_public_ip_by_default/vpc_subnet_no_public_ip_by_default_test.py @@ -4,6 +4,7 @@ from boto3 import client, session from moto import mock_ec2 from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info +from prowler.providers.common.models import Audit_Metadata AWS_REGION = "us-east-1" AWS_ACCOUNT_NUMBER = "123456789012" @@ -31,6 +32,12 @@ class Test_vpc_subnet_separate_private_public: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/vpc/vpc_subnet_separate_private_public/vpc_subnet_separate_private_public_test.py b/tests/providers/aws/services/vpc/vpc_subnet_separate_private_public/vpc_subnet_separate_private_public_test.py index 8d23c51d..626d883e 100644 --- a/tests/providers/aws/services/vpc/vpc_subnet_separate_private_public/vpc_subnet_separate_private_public_test.py +++ b/tests/providers/aws/services/vpc/vpc_subnet_separate_private_public/vpc_subnet_separate_private_public_test.py @@ -4,6 +4,7 @@ from boto3 import client, session from moto import mock_ec2 from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info +from prowler.providers.common.models import Audit_Metadata AWS_REGION = "us-east-1" AWS_ACCOUNT_NUMBER = "123456789012" @@ -31,6 +32,12 @@ class Test_vpc_subnet_separate_private_public: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/waf/waf_service_test.py b/tests/providers/aws/services/waf/waf_service_test.py index aa597a4f..8851e961 100644 --- a/tests/providers/aws/services/waf/waf_service_test.py +++ b/tests/providers/aws/services/waf/waf_service_test.py @@ -5,6 +5,7 @@ from boto3 import session from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info from prowler.providers.aws.services.waf.waf_service import WAF +from prowler.providers.common.models import Audit_Metadata AWS_ACCOUNT_NUMBER = "123456789012" AWS_REGION = "us-east-1" @@ -32,7 +33,7 @@ def mock_make_api_call(self, operation_name, kwarg): # Mock generate_regional_clients() -def mock_generate_regional_clients(service, audit_info): +def mock_generate_regional_clients(service, audit_info, _): regional_client = audit_info.audit_session.client(service, region_name=AWS_REGION) regional_client.region = AWS_REGION return {AWS_REGION: regional_client} @@ -41,7 +42,7 @@ def mock_generate_regional_clients(service, audit_info): # Patch every AWS call using Boto3 and generate_regional_clients to have 1 client @patch("botocore.client.BaseClient._make_api_call", new=mock_make_api_call) @patch( - "prowler.providers.aws.services.waf.waf_service.generate_regional_clients", + "prowler.providers.aws.lib.service.service.generate_regional_clients", new=mock_generate_regional_clients, ) class Test_WAF_Service: @@ -67,6 +68,12 @@ class Test_WAF_Service: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/wafv2/wafv2_service_test.py b/tests/providers/aws/services/wafv2/wafv2_service_test.py index b679fa61..5022c27c 100644 --- a/tests/providers/aws/services/wafv2/wafv2_service_test.py +++ b/tests/providers/aws/services/wafv2/wafv2_service_test.py @@ -3,6 +3,7 @@ from moto import mock_ec2, mock_elbv2, mock_wafv2 from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info from prowler.providers.aws.services.wafv2.wafv2_service import WAFv2 +from prowler.providers.common.models import Audit_Metadata AWS_ACCOUNT_NUMBER = "123456789012" AWS_REGION = "us-east-1" @@ -31,6 +32,12 @@ class Test_WAFv2_Service: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/wellarchitected/wellarchitected_service_test.py b/tests/providers/aws/services/wellarchitected/wellarchitected_service_test.py index 6b0a784c..345a937b 100644 --- a/tests/providers/aws/services/wellarchitected/wellarchitected_service_test.py +++ b/tests/providers/aws/services/wellarchitected/wellarchitected_service_test.py @@ -8,6 +8,7 @@ from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info from prowler.providers.aws.services.wellarchitected.wellarchitected_service import ( WellArchitected, ) +from prowler.providers.common.models import Audit_Metadata AWS_ACCOUNT_NUMBER = "123456789012" AWS_REGION = "eu-west-1" @@ -41,7 +42,7 @@ def mock_make_api_call(self, operation_name, kwarg): return make_api_call(self, operation_name, kwarg) -def mock_generate_regional_clients(service, audit_info): +def mock_generate_regional_clients(service, audit_info, _): regional_client = audit_info.audit_session.client(service, region_name=AWS_REGION) regional_client.region = AWS_REGION return {AWS_REGION: regional_client} @@ -49,7 +50,7 @@ def mock_generate_regional_clients(service, audit_info): @patch("botocore.client.BaseClient._make_api_call", new=mock_make_api_call) @patch( - "prowler.providers.aws.services.wellarchitected.wellarchitected_service.generate_regional_clients", + "prowler.providers.aws.lib.service.service.generate_regional_clients", new=mock_generate_regional_clients, ) class Test_WellArchitected_Service: @@ -75,6 +76,12 @@ class Test_WellArchitected_Service: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/workspaces/workspaces_service_test.py b/tests/providers/aws/services/workspaces/workspaces_service_test.py index 6bf24703..347d18ff 100644 --- a/tests/providers/aws/services/workspaces/workspaces_service_test.py +++ b/tests/providers/aws/services/workspaces/workspaces_service_test.py @@ -6,6 +6,7 @@ from boto3 import session from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info from prowler.providers.aws.services.workspaces.workspaces_service import WorkSpaces +from prowler.providers.common.models import Audit_Metadata AWS_ACCOUNT_NUMBER = "123456789012" AWS_REGION = "eu-west-1" @@ -37,7 +38,7 @@ def mock_make_api_call(self, operation_name, kwarg): return make_api_call(self, operation_name, kwarg) -def mock_generate_regional_clients(service, audit_info): +def mock_generate_regional_clients(service, audit_info, _): regional_client = audit_info.audit_session.client(service, region_name=AWS_REGION) regional_client.region = AWS_REGION return {AWS_REGION: regional_client} @@ -45,7 +46,7 @@ def mock_generate_regional_clients(service, audit_info): @patch("botocore.client.BaseClient._make_api_call", new=mock_make_api_call) @patch( - "prowler.providers.aws.services.workspaces.workspaces_service.generate_regional_clients", + "prowler.providers.aws.lib.service.service.generate_regional_clients", new=mock_generate_regional_clients, ) class Test_WorkSpaces_Service: @@ -71,6 +72,12 @@ class Test_WorkSpaces_Service: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/aws/services/workspaces/workspaces_vpc_2private_1public_subnets_nat/workspaces_vpc_2private_1public_subnets_nat_test.py b/tests/providers/aws/services/workspaces/workspaces_vpc_2private_1public_subnets_nat/workspaces_vpc_2private_1public_subnets_nat_test.py index 843c1fa1..28ede85c 100644 --- a/tests/providers/aws/services/workspaces/workspaces_vpc_2private_1public_subnets_nat/workspaces_vpc_2private_1public_subnets_nat_test.py +++ b/tests/providers/aws/services/workspaces/workspaces_vpc_2private_1public_subnets_nat/workspaces_vpc_2private_1public_subnets_nat_test.py @@ -7,6 +7,7 @@ from moto import mock_ec2 from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info from prowler.providers.aws.services.vpc.vpc_service import VPC from prowler.providers.aws.services.workspaces.workspaces_service import WorkSpace +from prowler.providers.common.models import Audit_Metadata AWS_REGION = "eu-west-1" AWS_ACCOUNT_NUMBER = "123456789012" @@ -35,6 +36,12 @@ class Test_workspaces_vpc_2private_1public_subnets_nat: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/common/audit_info_test.py b/tests/providers/common/audit_info_test.py index be6f4f7f..fb4c85fc 100644 --- a/tests/providers/common/audit_info_test.py +++ b/tests/providers/common/audit_info_test.py @@ -17,6 +17,7 @@ from prowler.providers.common.audit_info import ( get_tagged_resources, set_provider_audit_info, ) +from prowler.providers.common.models import Audit_Metadata from prowler.providers.gcp.gcp_provider import GCP_Provider from prowler.providers.gcp.lib.audit_info.models import GCP_Audit_Info @@ -116,6 +117,12 @@ class Test_Set_Audit_Info: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info diff --git a/tests/providers/common/common_outputs_test.py b/tests/providers/common/common_outputs_test.py index 48bbb1dc..b058323d 100644 --- a/tests/providers/common/common_outputs_test.py +++ b/tests/providers/common/common_outputs_test.py @@ -9,6 +9,7 @@ from prowler.providers.azure.lib.audit_info.audit_info import ( Azure_Audit_Info, Azure_Identity_Info, ) +from prowler.providers.common.models import Audit_Metadata from prowler.providers.common.outputs import ( Aws_Output_Options, Azure_Output_Options, @@ -74,6 +75,12 @@ class Test_Common_Output_Options: organizations_metadata=None, audit_resources=None, mfa_enabled=False, + audit_metadata=Audit_Metadata( + services_scanned=0, + expected_checks=[], + completed_checks=0, + audit_progress=0, + ), ) return audit_info