From f0c027f54efdaf557704655c6ef3e7865bc844a3 Mon Sep 17 00:00:00 2001 From: Pepe Fagoaga Date: Thu, 29 Feb 2024 11:19:17 +0100 Subject: [PATCH] chore(merge): Merge master with Prowler 4.0 (#3467) Co-authored-by: Sergio Garcia <38561120+sergargar@users.noreply.github.com> --- .github/dependabot.yml | 5 + .github/labeler.yml | 27 + .../workflows/build-documentation-on-pr.yml | 24 + .../workflows/build-lint-push-containers.yml | 14 +- .github/workflows/codeql.yml | 6 +- .github/workflows/find-secrets.yml | 4 +- .github/workflows/labeler.yml | 16 + .github/workflows/pull-request.yml | 11 +- .github/workflows/pypi-release.yml | 6 +- .../refresh_aws_services_regions.yml | 10 +- .pre-commit-config.yaml | 24 +- .readthedocs.yaml | 12 +- CODE_OF_CONDUCT.md | 2 +- README.md | 36 +- SECURITY.md | 2 +- docs/developer-guide/checks.md | 7 +- docs/developer-guide/debugging.md | 45 + docs/developer-guide/introduction.md | 8 +- docs/developer-guide/unit-testing.md | 26 +- docs/getting-started/requirements.md | 44 +- docs/img/page-IAM.png | Bin 0 -> 356822 bytes docs/img/prowler-logo-black.png | Bin 0 -> 9396 bytes docs/img/prowler-logo-white.png | Bin 0 -> 11087 bytes docs/img/register-application.png | Bin 0 -> 309455 bytes docs/index.md | 71 +- docs/security.md | 4 +- docs/tutorials/aws/authentication.md | 5 +- docs/tutorials/aws/boto3-configuration.md | 11 + docs/tutorials/aws/cloudshell.md | 42 +- docs/tutorials/aws/img/enable-2.png | Bin 0 -> 349257 bytes .../aws/img/enable-partner-integration-2.png | Bin 0 -> 298305 bytes .../aws/img/enable-partner-integration-3.png | Bin 0 -> 313271 bytes .../aws/img/enable-partner-integration-4.png | Bin 0 -> 354666 bytes .../aws/img/enable-partner-integration.png | Bin 0 -> 299639 bytes docs/tutorials/aws/img/enable.png | Bin 0 -> 258264 bytes docs/tutorials/aws/img/finding-details.png | Bin 0 -> 617259 bytes docs/tutorials/aws/img/findings.png | Bin 0 -> 279400 bytes docs/tutorials/aws/organizations.md | 35 +- docs/tutorials/aws/regions-and-partitions.md | 13 +- docs/tutorials/aws/role-assumption.md | 15 +- docs/tutorials/aws/s3.md | 5 +- docs/tutorials/aws/securityhub.md | 122 +- docs/tutorials/check-aliases.md | 24 +- docs/tutorials/compliance.md | 18 +- docs/tutorials/configuration_file.md | 24 +- docs/tutorials/gcp/authentication.md | 3 +- docs/tutorials/ignore-unused-services.md | 5 +- docs/tutorials/integrations.md | 4 +- docs/tutorials/logging.md | 6 +- docs/tutorials/misc.md | 17 +- docs/tutorials/mutelist.md | 6 +- docs/tutorials/parallel-execution.md | 188 + docs/tutorials/pentesting.md | 7 +- docs/tutorials/quick-inventory.md | 8 +- docs/tutorials/reporting.md | 117 +- mkdocs.yml | 30 +- poetry.lock | 3378 +++++++++++------ .../aws_account_security_onboarding_aws.json | 1190 ++++++ prowler/compliance/aws/cis_2.0_aws.json | 27 +- prowler/compliance/aws/cis_3.0_aws.json | 1317 +++++++ prowler/compliance/aws/ens_rd2022_aws.json | 118 +- prowler/compliance/aws/mitre_attack_aws.json | 12 +- prowler/compliance/aws/soc2_aws.json | 112 +- prowler/config/aws_mutelist.yaml | 3 + prowler/config/config.py | 3 +- prowler/config/config.yaml | 25 +- prowler/lib/banner.py | 2 +- prowler/lib/check/check.py | 76 +- prowler/lib/check/checks_loader.py | 156 +- prowler/lib/check/compliance_models.py | 6 +- prowler/lib/check/custom_checks_metadata.py | 2 +- prowler/lib/cli/parser.py | 5 +- prowler/lib/outputs/compliance/compliance.py | 3 +- prowler/lib/outputs/compliance/generic.py | 2 +- prowler/lib/outputs/html.py | 2 +- prowler/lib/outputs/json.py | 6 +- prowler/lib/outputs/models.py | 28 +- prowler/lib/outputs/slack.py | 8 +- prowler/lib/outputs/summary_table.py | 4 +- prowler/providers/aws/aws_provider.py | 74 +- prowler/providers/aws/aws_provider_new.py | 8 +- .../providers/aws/aws_regions_by_service.json | 522 ++- prowler/providers/aws/config.py | 1 + .../providers/aws/lib/arguments/arguments.py | 50 +- .../aws/lib/audit_info/audit_info.py | 2 + .../providers/aws/lib/audit_info/models.py | 4 +- .../providers/aws/lib/mutelist/mutelist.py | 63 +- .../aws/lib/organizations/organizations.py | 65 +- .../policy_condition_parser.py | 38 +- .../lib/quick_inventory/quick_inventory.py | 14 +- prowler/providers/aws/lib/s3/s3.py | 7 +- .../aws/lib/security_hub/security_hub.py | 32 +- prowler/providers/aws/lib/service/service.py | 56 +- .../accessanalyzer/accessanalyzer_service.py | 35 +- .../acm_certificates_expiration_check.py | 6 +- ..._restapi_authorizers_enabled.metadata.json | 4 +- .../apigateway_restapi_authorizers_enabled.py | 35 +- .../services/apigateway/apigateway_service.py | 56 +- ...apigatewayv2_api_access_logging_enabled.py | 4 +- .../aws/services/athena/athena_service.py | 12 +- .../awslambda_function_no_secrets_in_code.py | 96 +- ...lambda_function_no_secrets_in_variables.py | 2 +- .../services/awslambda/awslambda_service.py | 63 +- .../aws/services/backup/backup_service.py | 2 +- .../services/cloudfront/cloudfront_service.py | 18 +- .../services/cloudtrail/cloudtrail_service.py | 11 +- ...hanges_to_network_acls_alarm_configured.py | 32 +- ...es_to_network_gateways_alarm_configured.py | 32 +- ...oute_tables_alarm_configured.metadata.json | 10 +- ...o_network_route_tables_alarm_configured.py | 34 +- ...dwatch_changes_to_vpcs_alarm_configured.py | 32 +- ...ws_config_configuration_changes_enabled.py | 32 +- ...loudtrail_configuration_changes_enabled.py | 32 +- ...g_metric_filter_authentication_failures.py | 32 +- ...metric_filter_aws_organizations_changes.py | 32 +- ...isable_or_scheduled_deletion_of_kms_cmk.py | 32 +- ...ric_filter_for_s3_bucket_policy_changes.py | 33 +- ...dwatch_log_metric_filter_policy_changes.py | 32 +- ...cloudwatch_log_metric_filter_root_usage.py | 32 +- ...og_metric_filter_security_group_changes.py | 32 +- ...h_log_metric_filter_sign_in_without_mfa.py | 32 +- ...og_metric_filter_unauthorized_api_calls.py | 32 +- .../services/cloudwatch/cloudwatch_service.py | 6 +- .../services/cloudwatch/lib/metric_filters.py | 34 + .../__init__.py | 0 .../services/cognito/cognito_idp_client.py | 4 + .../aws/services/cognito/cognito_service.py | 122 + .../ec2_elastic_ip_shodan.py | 2 +- .../providers/aws/services/ec2/ec2_service.py | 102 +- .../providers/aws/services/ecr/ecr_service.py | 19 +- .../__init__.py | 0 ...uster_network_policy_enabled.metadata.json | 35 + .../eks_cluster_network_policy_enabled.py | 22 + .../__init__.py | 0 ...luster_private_nodes_enabled.metadata.json | 35 + .../eks_cluster_private_nodes_enabled.py | 23 + .../providers/aws/services/eks/eks_service.py | 8 + .../elasticache/elasticache_service.py | 11 +- .../elbv2_insecure_ssl_ciphers.py | 2 +- .../providers/aws/services/emr/emr_service.py | 18 +- .../fms_policy_compliant.py | 27 +- .../providers/aws/services/fms/fms_service.py | 15 +- ...ross_service_confused_deputy_prevention.py | 4 +- .../providers/aws/services/iam/iam_service.py | 50 +- .../__init__.py | 0 ...ctor2_active_findings_exist.metadata.json} | 9 +- .../inspector2_active_findings_exist.py | 33 + .../inspector2_is_enabled/__init__.py | 0 .../inspector2_is_enabled.metadata.json | 33 + .../inspector2_is_enabled.py} | 21 +- .../services/inspector2/inspector2_service.py | 4 +- .../organizations_scp_check_deny_regions.py | 14 +- .../organizations/organizations_service.py | 29 +- .../rds_instance_no_public_access.py | 29 +- .../providers/aws/services/rds/rds_service.py | 16 +- .../aws/services/route53/route53_service.py | 12 +- .../s3_bucket_policy_public_write_access.py | 21 +- .../providers/aws/services/s3/s3_service.py | 56 +- .../sns_topics_not_publicly_accessible.py | 4 +- .../sqs_queues_not_publicly_accessible.py | 8 +- ...mium_support_plan_subscribed.metadata.json | 2 +- .../trustedadvisor/trustedadvisor_service.py | 6 +- .../vpc_different_regions.py | 31 +- ...c_endpoint_connections_trust_boundaries.py | 8 +- .../wellarchitected_service.py | 10 + ...tected_workload_no_high_or_medium_risks.py | 2 +- prowler/providers/azure/azure_provider.py | 105 +- .../azure/lib/arguments/arguments.py | 11 + .../azure/lib/audit_info/audit_info.py | 1 + .../providers/azure/lib/audit_info/models.py | 3 + .../providers/azure/lib/service/service.py | 4 + .../providers/azure/services/app/__init__.py | 0 .../azure/services/app/app_client.py | 4 + .../app_client_certificates_on/__init__.py | 0 .../app_client_certificates_on.metadata.json | 30 + .../app_client_certificates_on.py | 27 + .../app/app_ensure_auth_is_set_up/__init__.py | 0 .../app_ensure_auth_is_set_up.metadata.json | 30 + .../app_ensure_auth_is_set_up.py | 27 + .../__init__.py | 0 ..._http_is_redirected_to_https.metadata.json | 30 + .../app_ensure_http_is_redirected_to_https.py | 27 + .../__init__.py | 0 ...nsure_java_version_is_latest.metadata.json | 30 + .../app_ensure_java_version_is_latest.py | 39 + .../__init__.py | 0 ...ensure_php_version_is_latest.metadata.json | 30 + .../app_ensure_php_version_is_latest.py | 41 + .../__init__.py | 0 ...ure_python_version_is_latest.metadata.json | 30 + .../app_ensure_python_version_is_latest.py | 39 + .../app/app_ensure_using_http20/__init__.py | 0 .../app_ensure_using_http20.metadata.json | 30 + .../app_ensure_using_http20.py | 29 + .../app_ftp_deployment_disabled/__init__.py | 0 .../app_ftp_deployment_disabled.metadata.json | 30 + .../app_ftp_deployment_disabled.py | 31 + .../app_minimum_tls_version_12/__init__.py | 0 .../app_minimum_tls_version_12.metadata.json | 30 + .../app_minimum_tls_version_12.py | 30 + .../app_register_with_identity/__init__.py | 0 .../app_register_with_identity.metadata.json | 30 + .../app_register_with_identity.py | 27 + .../azure/services/app/app_service.py | 89 + .../azure/services/appinsights/__init__.py | 0 .../appinsights/appinsights_client.py | 4 + .../__init__.py | 0 ...nsights_ensure_is_configured.metadata.json | 30 + .../appinsights_ensure_is_configured.py | 25 + .../appinsights/appinsights_service.py | 44 + .../azure/services/cosmosdb/__init__.py | 0 .../__init__.py | 0 ...rewall_use_selected_networks.metadata.json | 30 + ..._account_firewall_use_selected_networks.py | 21 + ...sdb_account_use_aad_and_rbac.metadata.json | 30 + .../cosmosdb_account_use_aad_and_rbac.py | 21 + .../__init__.py | 0 ...ccount_use_private_endpoints.metadata.json | 30 + .../cosmosdb_account_use_private_endpoints.py | 21 + .../services/cosmosdb/cosmosdb_client.py | 4 + .../services/cosmosdb/cosmosdb_service.py | 53 + .../__init__.py | 0 ...ured_with_a_security_contact.metadata.json | 30 + ...mail_configured_with_a_security_contact.py | 36 + .../__init__.py | 0 ...ndpoint_protection_installed.metadata.json | 30 + ...sments_vm_endpoint_protection_installed.py | 41 + .../__init__.py | 0 ...g_log_analytics_agent_vms_on.metadata.json | 30 + ...provisioning_log_analytics_agent_vms_on.py | 29 + .../__init__.py | 0 ...ilty_assessments_machines_on.metadata.json | 30 + ...ng_vulnerabilty_assessments_machines_on.py | 39 + .../__init__.py | 0 ...nsure_iot_hub_defender_is_on.metadata.json | 30 + .../defender_ensure_iot_hub_defender_is_on.py | 41 + .../__init__.py | 0 ...ender_ensure_mcas_is_enabled.metadata.json | 30 + .../defender_ensure_mcas_is_enabled.py | 28 + .../__init__.py | 0 ...tify_alerts_severity_is_high.metadata.json | 30 + ...r_ensure_notify_alerts_severity_is_high.py | 27 + .../__init__.py | 0 ...sure_notify_emails_to_owners.metadata.json | 30 + ...defender_ensure_notify_emails_to_owners.py | 34 + .../__init__.py | 0 ...e_system_updates_are_applied.metadata.json | 30 + ...ender_ensure_system_updates_are_applied.py | 50 + .../__init__.py | 0 ...nder_ensure_wdatp_is_enabled.metadata.json | 30 + .../defender_ensure_wdatp_is_enabled.py | 28 + .../services/defender/defender_service.py | 198 +- .../__init__.py | 0 ...to_administer_resource_locks.metadata.json | 30 + ...ermissions_to_administer_resource_locks.py | 33 + .../azure/services/iam/iam_service.py | 50 +- ...les_owner_custom_not_created.metadata.json | 8 +- ...cription_roles_owner_custom_not_created.py | 2 +- .../azure/services/keyvault/__init__.py | 0 .../services/keyvault/keyvault_client.py | 4 + .../__init__.py | 0 ...y_expiration_set_in_non_rbac.metadata.json | 30 + ...keyvault_key_expiration_set_in_non_rbac.py | 30 + ...eyvault_key_rotation_enabled.metadata.json | 30 + .../keyvault_key_rotation_enabled.py | 29 + .../__init__.py | 0 ...n_rbac_secret_expiration_set.metadata.json | 30 + ...keyvault_non_rbac_secret_expiration_set.py | 33 + .../keyvault_private_endpoints/__init__.py | 0 .../keyvault_private_endpoints.metadata.json | 30 + .../keyvault_private_endpoints.py | 23 + .../keyvault_rbac_enabled/__init__.py | 0 .../keyvault_rbac_enabled.metadata.json | 30 + .../keyvault_rbac_enabled.py | 23 + .../__init__.py | 0 ...ault_rbac_key_expiration_set.metadata.json | 30 + .../keyvault_rbac_key_expiration_set.py | 30 + .../__init__.py | 0 ...t_rbac_secret_expiration_set.metadata.json | 30 + .../keyvault_rbac_secret_expiration_set.py | 30 + .../keyvault/keyvault_recoverable/__init__.py | 0 .../keyvault_recoverable.metadata.json | 30 + .../keyvault_recoverable.py | 23 + .../services/keyvault/keyvault_service.py | 147 + .../azure/services/monitor/__init__.py | 0 .../azure/services/monitor/monitor_client.py | 4 + .../__init__.py | 0 ..._with_appropriate_categories.metadata.json | 30 + ...tic_setting_with_appropriate_categories.py | 53 + .../azure/services/monitor/monitor_service.py | 46 + .../azure/services/mysql/__init__.py | 0 .../azure/services/mysql/mysql_client.py | 4 + .../__init__.py | 0 ...dit_log_connection_activated.metadata.json | 30 + ...e_server_audit_log_connection_activated.py | 37 + .../__init__.py | 0 ...ble_server_audit_log_enabled.metadata.json | 30 + ...mysql_flexible_server_audit_log_enabled.py | 35 + .../__init__.py | 0 ...erver_minimum_tls_version_12.metadata.json | 30 + ..._flexible_server_minimum_tls_version_12.py | 39 + .../__init__.py | 0 ...erver_ssl_connection_enabled.metadata.json | 30 + ..._flexible_server_ssl_connection_enabled.py | 34 + .../azure/services/mysql/mysql_service.py | 78 + .../azure/services/network/__init__.py | 0 .../network_bastion_host_exists/__init__.py | 0 .../network_bastion_host_exists.metadata.json | 30 + .../network_bastion_host_exists.py | 33 + .../azure/services/network/network_client.py | 4 + .../__init__.py | 0 ...k_flow_log_more_than_90_days.metadata.json | 30 + .../network_flow_log_more_than_90_days.py | 33 + .../__init__.py | 0 ...p_internet_access_restricted.metadata.json | 30 + ...network_http_internet_access_restricted.py | 36 + .../network_public_ip_shodan/__init__.py | 0 .../network_public_ip_shodan.metadata.json | 32 + .../network_public_ip_shodan.py | 40 + .../__init__.py | 0 ...p_internet_access_restricted.metadata.json | 31 + .../network_rdp_internet_access_restricted.py | 36 + .../azure/services/network/network_service.py | 148 + .../__init__.py | 0 ...h_internet_access_restricted.metadata.json | 30 + .../network_ssh_internet_access_restricted.py | 36 + .../__init__.py | 0 ...p_internet_access_restricted.metadata.json | 30 + .../network_udp_internet_access_restricted.py | 28 + .../network_watcher_enabled/__init__.py | 0 .../network_watcher_enabled.metadata.json | 30 + .../network_watcher_enabled.py | 27 + .../azure/services/policy/__init__.py | 0 .../azure/services/policy/policy_client.py | 4 + .../__init__.py | 0 ...sure_asc_enforcement_enabled.metadata.json | 30 + .../policy_ensure_asc_enforcement_enabled.py | 24 + .../azure/services/policy/policy_service.py | 45 + .../azure/services/postgresql/__init__.py | 0 .../services/postgresql/postgresql_client.py | 4 + .../__init__.py | 0 ...low_access_services_disabled.metadata.json | 30 + ...e_server_allow_access_services_disabled.py | 29 + .../__init__.py | 0 ...ver_connection_throttling_on.metadata.json | 30 + ...lexible_server_connection_throttling_on.py | 26 + .../__init__.py | 0 ...e_server_enforce_ssl_enabled.metadata.json | 30 + ...sql_flexible_server_enforce_ssl_enabled.py | 26 + .../__init__.py | 0 ...le_server_log_checkpoints_on.metadata.json | 30 + ...esql_flexible_server_log_checkpoints_on.py | 26 + .../__init__.py | 0 ...le_server_log_connections_on.metadata.json | 30 + ...esql_flexible_server_log_connections_on.py | 26 + .../__init__.py | 0 ...server_log_disconnections_on.metadata.json | 30 + ...l_flexible_server_log_disconnections_on.py | 26 + .../__init__.py | 0 ...log_retention_days_greater_3.metadata.json | 30 + ...ble_server_log_retention_days_greater_3.py | 30 + .../services/postgresql/postgresql_service.py | 153 + .../__init__.py | 0 ...r_auditing_retention_90_days.metadata.json | 30 + .../sqlserver_auditing_retention_90_days.py | 35 + .../__init__.py | 0 ...r_microsoft_defender_enabled.metadata.json | 30 + .../sqlserver_microsoft_defender_enabled.py | 22 + .../services/sqlserver/sqlserver_service.py | 160 +- .../__init__.py | 0 ...erver_tde_encrypted_with_cmk.metadata.json | 30 + .../sqlserver_tde_encrypted_with_cmk.py | 38 + .../__init__.py | 0 ...erver_tde_encryption_enabled.metadata.json | 30 + .../sqlserver_tde_encryption_enabled.py | 27 + .../__init__.py | 0 ...notifications_admins_enabled.metadata.json | 30 + ..._va_emails_notifications_admins_enabled.py | 29 + .../__init__.py | 0 ...odic_recurring_scans_enabled.metadata.json | 30 + ...ver_va_periodic_recurring_scans_enabled.py | 29 + .../__init__.py | 0 ...r_va_scan_reports_configured.metadata.json | 30 + .../sqlserver_va_scan_reports_configured.py | 37 + .../__init__.py | 0 ...erability_assessment_enabled.metadata.json | 30 + ...server_vulnerability_assessment_enabled.py | 25 + ...etwork_access_rule_is_denied.metadata.json | 8 +- .../__init__.py | 0 ...ndpoints_in_storage_accounts.metadata.json | 32 + ...e_private_endpoints_in_storage_accounts.py | 22 + .../__init__.py | 0 ...nsure_soft_delete_is_enabled.metadata.json | 32 + .../storage_ensure_soft_delete_is_enabled.py | 27 + .../storage_key_rotation_90_days/__init__.py | 0 ...storage_key_rotation_90_days.metadata.json | 32 + .../storage_key_rotation_90_days.py | 26 + .../azure/services/storage/storage_service.py | 82 +- .../providers/azure/services/vm/__init__.py | 0 .../providers/azure/services/vm/vm_client.py | 4 + .../__init__.py | 0 ...hed_disks_encrypted_with_cmk.metadata.json | 30 + ...nsure_attached_disks_encrypted_with_cmk.py | 28 + .../__init__.py | 0 ...hed_disks_encrypted_with_cmk.metadata.json | 30 + ...ure_unattached_disks_encrypted_with_cmk.py | 28 + .../vm_ensure_using_managed_disks/__init__.py | 0 ...m_ensure_using_managed_disks.metadata.json | 30 + .../vm_ensure_using_managed_disks.py | 40 + .../providers/azure/services/vm/vm_service.py | 91 + prowler/providers/common/audit_info.py | 77 +- prowler/providers/common/outputs.py | 13 +- prowler/providers/gcp/gcp_provider.py | 7 +- prowler/providers/gcp/lib/service/service.py | 6 +- .../__init__.py | 0 ...s_container_analysis_enabled.metadata.json | 33 + .../artifacts_container_analysis_enabled.py | 31 + .../gcp/services/compute/compute_service.py | 18 +- .../__init__.py | 0 ...r_container_scanning_enabled.metadata.json | 33 + .../gcr_container_scanning_enabled.py | 31 + .../providers/gcp/services/gke/__init__.py | 0 .../providers/gcp/services/gke/gke_client.py | 4 + .../__init__.py | 0 ...r_no_default_service_account.metadata.json | 33 + .../gke_cluster_no_default_service_account.py | 26 + .../providers/gcp/services/gke/gke_service.py | 90 + .../__init__.py | 0 ...oud_asset_inventory_enabled.metadata.json} | 6 +- .../iam_cloud_asset_inventory_enabled.py} | 2 +- .../kubernetes/services/core/core_service.py | 49 +- .../kubernetes/services/rbac/rbac_service.py | 24 +- pyproject.toml | 88 +- tests/config/config_test.py | 4 +- tests/config/fixtures/config.yaml | 3 + tests/lib/check/check_loader_test.py | 326 ++ tests/lib/check/check_test.py | 372 +- tests/lib/cli/parser_test.py | 88 +- tests/lib/outputs/outputs_test.py | 72 +- tests/lib/outputs/slack_test.py | 13 +- tests/providers/aws/audit_info_utils.py | 69 +- tests/providers/aws/aws_provider_test.py | 641 +--- .../aws/lib/credentials/credentials_test.py | 41 +- .../aws/lib/mutelist/mutelist_test.py | 511 ++- .../lib/organizations/organizations_test.py | 47 +- .../policy_condition_parser_test.py | 266 +- tests/providers/aws/lib/s3/s3_test.py | 6 +- .../aws/lib/security_hub/security_hub_test.py | 305 +- .../providers/aws/lib/service/service_test.py | 91 +- .../accessanalyzer_service_test.py | 78 +- .../services/account/account_service_test.py | 52 +- .../acm_certificates_expiration_check_test.py | 48 +- .../aws/services/acm/acm_service_test.py | 73 +- .../apigateway_authorizers_enabled_test.py | 407 +- ...gateway_client_certificate_enabled_test.py | 79 +- .../apigateway_endpoint_public_test.py | 75 +- ...endpoint_public_without_authorizer_test.py | 75 +- .../apigateway_logging_enabled_test.py | 75 +- .../apigateway/apigateway_service_test.py | 127 +- .../apigateway_waf_acl_attached_test.py | 78 +- ...pigatewayv2_access_logging_enabled_test.py | 69 +- .../apigatewayv2_authorizers_enabled_test.py | 64 +- .../apigatewayv2/apigatewayv2_service_test.py | 79 +- .../appstream/appstream_service_test.py | 61 +- .../services/athena/athena_service_test.py | 70 +- .../athena_workgroup_encryption_test.py | 61 +- ...na_workgroup_enforce_configuration_test.py | 61 +- ...d_secrets_ec2_launch_configuration_test.py | 90 +- .../autoscaling_group_multiple_az_test.py | 74 +- .../autoscaling/autoscaling_service_test.py | 75 +- ...rations_cloudtrail_logging_enabled_test.py | 26 +- ...lambda_function_no_secrets_in_code_test.py | 112 +- ...a_function_no_secrets_in_variables_test.py | 9 +- ...a_function_not_publicly_accessible_test.py | 13 +- ...awslambda_function_url_cors_policy_test.py | 9 +- .../awslambda_function_url_public_test.py | 7 +- ..._function_using_supported_runtimes_test.py | 9 +- .../awslambda/awslambda_service_test.py | 166 +- .../services/backup/backup_service_test.py | 73 +- .../cloudformation_service_test.py | 91 +- ...ons_field_level_encryption_enabled_test.py | 5 +- ...ributions_geo_restrictions_enabled_test.py | 5 +- ...dfront_distributions_https_enabled_test.py | 5 +- ...ront_distributions_logging_enabled_test.py | 5 +- ...ons_using_deprecated_ssl_protocols_test.py | 5 +- ...cloudfront_distributions_using_waf_test.py | 5 +- .../cloudfront/cloudfront_service_test.py | 71 +- ...udtrail_bucket_requires_mfa_delete_test.py | 111 +- ...udtrail_cloudwatch_logging_enabled_test.py | 131 +- .../cloudtrail_insights_exist_test.py | 79 +- .../cloudtrail_kms_encryption_enabled_test.py | 89 +- ...dtrail_log_file_validation_enabled_test.py | 96 +- ...s_s3_bucket_access_logging_enabled_test.py | 119 +- ..._bucket_is_not_publicly_accessible_test.py | 132 +- .../cloudtrail_multi_region_enabled_test.py | 73 +- ..._enabled_logging_management_events_test.py | 108 +- ...udtrail_s3_dataevents_read_enabled_test.py | 23 +- ...dtrail_s3_dataevents_write_enabled_test.py | 23 +- .../cloudtrail/cloudtrail_service_test.py | 157 +- ...s_to_network_acls_alarm_configured_test.py | 192 +- ..._network_gateways_alarm_configured_test.py | 192 +- ...work_route_tables_alarm_configured_test.py | 200 +- ...h_changes_to_vpcs_alarm_configured_test.py | 192 +- ...tch_cross_account_sharing_disabled_test.py | 60 +- ...h_log_group_kms_encryption_enabled_test.py | 65 +- ...watch_log_group_no_secrets_in_logs_test.py | 65 +- ...ntion_policy_specific_days_enabled_test.py | 86 +- ...nfig_configuration_changes_enabled_test.py | 192 +- ...rail_configuration_changes_enabled_test.py | 192 +- ...ric_filter_authentication_failures_test.py | 192 +- ...c_filter_aws_organizations_changes_test.py | 192 +- ...e_or_scheduled_deletion_of_kms_cmk_test.py | 192 +- ...ilter_for_s3_bucket_policy_changes_test.py | 192 +- ...h_log_metric_filter_policy_changes_test.py | 192 +- ...watch_log_metric_filter_root_usage_test.py | 192 +- ...tric_filter_security_group_changes_test.py | 192 +- ..._metric_filter_sign_in_without_mfa_test.py | 192 +- ...tric_filter_unauthorized_api_calls_test.py | 192 +- .../cloudwatch/cloudwatch_service_test.py | 140 +- ...xternal_public_publishing_disabled_test.py | 7 +- .../codeartifact/codeartifact_service_test.py | 95 +- .../codebuild/codebuild_service_test.py | 63 +- .../services/cognito/cognito_service_test.py | 117 + ...onfig_recorder_all_regions_enabled_test.py | 95 +- .../services/config/config_service_test.py | 78 +- ...ce_directory_monitor_notifications_test.py | 6 +- .../directoryservice_service_test.py | 94 +- ...s_snapshot_lifecycle_policy_exists_test.py | 76 +- .../aws/services/dlm/dlm_service_test.py | 65 +- .../documentdb/documentdb_service_test.py | 67 +- .../aws/services/drs/drs_service_test.py | 61 +- ...lerator_cluster_encryption_enabled_test.py | 76 +- .../dynamodb/dynamodb_service_test.py | 97 +- ..._tables_kms_cmk_encryption_enabled_test.py | 71 +- .../dynamodb_tables_pitr_enabled_test.py | 71 +- .../ec2/ec2_ami_public/ec2_ami_public_test.py | 74 +- .../ec2_ebs_default_encryption_test.py | 83 +- .../ec2_ebs_public_snapshot_test.py | 91 +- .../ec2_ebs_snapshots_encrypted_test.py | 89 +- .../ec2_ebs_volume_encryption_test.py | 79 +- .../ec2_ebs_volume_snapshots_exists_test.py | 119 +- .../ec2_elastic_ip_shodan_test.py | 87 +- .../ec2_elastic_ip_unassigned_test.py | 76 +- ...stance_detailed_monitoring_enabled_test.py | 74 +- .../ec2_instance_imdsv2_enabled_test.py | 86 +- ...ernet_facing_with_instance_profile_test.py | 76 +- .../ec2_instance_managed_by_ssm_test.py | 75 +- ..._instance_older_than_specific_days_test.py | 74 +- .../ec2_instance_profile_attached_test.py | 75 +- .../ec2_instance_public_ip_test.py | 74 +- .../ec2_instance_secrets_user_data_test.py | 110 +- ..._networkacl_allow_ingress_any_port_test.py | 107 +- ...tworkacl_allow_ingress_tcp_port_22_test.py | 107 +- ...orkacl_allow_ingress_tcp_port_3389_test.py | 107 +- ..._ingress_from_internet_to_any_port_test.py | 133 +- ...ternet_to_port_mongodb_27017_27018_test.py | 101 +- ...rom_internet_to_tcp_ftp_port_20_21_test.py | 101 +- ...gress_from_internet_to_tcp_port_22_test.py | 101 +- ...ess_from_internet_to_tcp_port_3389_test.py | 101 +- ..._tcp_port_cassandra_7199_9160_8888_test.py | 101 +- ...lasticsearch_kibana_9200_9300_5601_test.py | 101 +- ...om_internet_to_tcp_port_kafka_9092_test.py | 101 +- ...ternet_to_tcp_port_memcached_11211_test.py | 101 +- ...om_internet_to_tcp_port_mysql_3306_test.py | 101 +- ...ernet_to_tcp_port_oracle_1521_2483_test.py | 101 +- ...internet_to_tcp_port_postgres_5432_test.py | 113 +- ...om_internet_to_tcp_port_redis_6379_test.py | 32 +- ...t_to_tcp_port_sql_server_1433_1434_test.py | 101 +- ...rom_internet_to_tcp_port_telnet_23_test.py | 101 +- ...ygroup_allow_wide_open_public_ipv4_test.py | 77 +- ...ritygroup_default_restrict_traffic_test.py | 74 +- ...2_securitygroup_from_launch_wizard_test.py | 78 +- .../ec2_securitygroup_not_used_test.py | 18 +- ...oup_with_many_ingress_egress_rules_test.py | 77 +- .../aws/services/ec2/ec2_service_test.py | 222 +- ...gistry_scan_images_on_push_enabled_test.py | 80 +- ...ositories_lifecycle_policy_enabled_test.py | 65 +- ...positories_not_publicly_accessible_test.py | 65 +- ...tories_scan_images_on_push_enabled_test.py | 65 +- ...an_vulnerabilities_in_latest_image_test.py | 121 +- .../aws/services/ecr/ecr_service_test.py | 194 +- .../aws/services/ecs/ecs_service_test.py | 72 +- .../aws/services/efs/efs_service_test.py | 71 +- ..._cmk_encryption_in_secrets_enabled_test.py | 15 +- ...eks_cluster_network_policy_enabled_test.py | 96 + .../eks_cluster_private_nodes_enabled_test.py | 98 + ...l_plane_endpoint_access_restricted_test.py | 27 +- ...ol_plane_logging_all_types_enabled_test.py | 17 +- ..._endpoints_not_publicly_accessible_test.py | 19 +- .../aws/services/eks/eks_service_test.py | 83 +- ...ticache_cluster_uses_public_subnet_test.py | 79 +- .../elasticache/elasticache_service_test.py | 84 +- .../elb_insecure_ssl_ciphers_test.py | 101 +- .../elb_internet_facing_test.py | 87 +- .../elb_logging_enabled_test.py | 86 +- .../aws/services/elb/elb_service_test.py | 87 +- .../elb_ssl_listeners_test.py | 84 +- .../elbv2_deletion_protection_test.py | 97 +- .../elbv2_desync_mitigation_mode_test.py | 118 +- .../elbv2_insecure_ssl_ciphers_test.py | 97 +- .../elbv2_internet_facing_test.py | 97 +- .../elbv2_listeners_underneath_test.py | 97 +- .../elbv2_logging_enabled_test.py | 97 +- .../aws/services/elbv2/elbv2_service_test.py | 143 +- .../elbv2_ssl_listeners_test.py | 118 +- .../elbv2_waf_acl_attached_test.py | 126 +- ...uster_account_public_block_enabled_test.py | 24 +- ..._cluster_master_nodes_no_public_ip_test.py | 30 +- .../emr_cluster_publicly_accesible_test.py | 115 +- .../aws/services/emr/emr_service_test.py | 86 +- .../fms_policy_compliant_test.py | 96 +- .../aws/services/fms/fms_service_test.py | 45 +- .../services/glacier/glacier_service_test.py | 92 +- ...lacier_vaults_policy_public_access_test.py | 60 +- .../globalaccelerator_service_test.py | 58 +- ...ction_passwords_encryption_enabled_test.py | 68 +- ...talogs_metadata_encryption_enabled_test.py | 68 +- ...e_database_connections_ssl_enabled_test.py | 7 +- ...cloudwatch_logs_encryption_enabled_test.py | 13 +- ...ts_job_bookmark_encryption_enabled_test.py | 13 +- ...nt_endpoints_s3_encryption_enabled_test.py | 13 +- ..._jobs_amazon_s3_encryption_enabled_test.py | 15 +- ...cloudwatch_logs_encryption_enabled_test.py | 13 +- ...bs_job_bookmark_encryption_enabled_test.py | 13 +- .../aws/services/glue/glue_service_test.py | 106 +- .../guardduty_centrally_managed_test.py | 24 +- .../guardduty_is_enabled_test.py | 43 +- ...uardduty_no_high_severity_findings_test.py | 21 +- .../guardduty/guardduty_service_test.py | 111 +- .../iam_administrator_access_with_mfa_test.py | 65 +- .../iam_avoid_root_usage_test.py | 72 +- ...olicy_no_administrative_privileges_test.py | 55 +- .../iam_check_saml_providers_sts_test.py | 49 +- ...olicy_no_administrative_privileges_test.py | 55 +- ...olicy_no_administrative_privileges_test.py | 55 +- ...olicy_no_administrative_privileges_test.py | 128 +- ..._policy_permissive_role_assumption_test.py | 65 +- ...expired_server_certificates_stored_test.py | 53 +- .../iam_no_root_access_key_test.py | 61 +- ...s_passwords_within_90_days_or_less_test.py | 65 +- .../iam_password_policy_lowercase_test.py | 59 +- ..._password_policy_minimum_length_14_test.py | 72 +- .../iam_password_policy_number_test.py | 66 +- .../iam_password_policy_reuse_24_test.py | 64 +- .../iam_password_policy_symbol_test.py | 66 +- .../iam_password_policy_uppercase_test.py | 64 +- ...policy_allows_privilege_escalation_test.py | 187 +- ...cy_attached_only_to_group_or_roles_test.py | 71 +- ...olicy_no_full_access_to_cloudtrail_test.py | 53 +- .../iam_policy_no_full_access_to_kms_test.py | 53 +- ...am_role_administratoraccess_policy_test.py | 65 +- ...ross_account_readonlyaccess_policy_test.py | 65 +- ...service_confused_deputy_prevention_test.py | 69 +- .../iam_root_hardware_mfa_enabled_test.py | 58 +- .../iam_root_mfa_enabled_test.py | 56 +- .../iam_rotate_access_key_90_days_test.py | 76 +- .../iam_securityaudit_role_created_test.py | 51 +- .../aws/services/iam/iam_service_test.py | 138 +- .../iam_support_role_created_test.py | 54 +- .../iam_user_accesskey_unused_test.py | 83 +- .../iam_user_console_access_unused_test.py | 67 +- .../iam_user_hardware_mfa_enabled_test.py | 60 +- ...am_user_mfa_enabled_console_access_test.py | 65 +- ...m_user_no_setup_initial_access_key_test.py | 63 +- .../iam_user_two_active_access_key_test.py | 64 +- ...am_user_with_temporary_credentials_test.py | 29 +- .../inspector2_active_findings_exist_test.py | 303 ++ .../inspector2_findings_exist_test.py | 543 --- .../inspector2_is_enabled_test.py | 112 + .../inspector2/inspector2_service_test.py | 72 +- .../kms_cmk_are_used/kms_cmk_are_used_test.py | 66 +- .../kms_cmk_rotation_enabled_test.py | 60 +- .../kms_key_not_publicly_accessible_test.py | 66 +- .../aws/services/kms/kms_service_test.py | 84 +- .../macie_is_enabled/macie_is_enabled_test.py | 94 +- .../aws/services/macie/macie_service_test.py | 66 +- ...neptune_cluster_uses_public_subnet_test.py | 89 +- .../services/neptune/neptune_service_test.py | 97 +- .../networkfirewall_in_all_vpc_test.py | 170 +- .../networkfirewall_service_test.py | 64 +- ...vice_domains_audit_logging_enabled_test.py | 15 +- ...domains_cloudwatch_logging_enabled_test.py | 23 +- ...domains_encryption_at_rest_enabled_test.py | 11 +- ...ains_https_communications_enforced_test.py | 17 +- ...ins_internal_user_database_enabled_test.py | 11 +- ...ns_node_to_node_encryption_enabled_test.py | 11 +- ...ce_domains_not_publicly_accessible_test.py | 17 +- ...he_latest_service_software_version_test.py | 11 +- ..._cognito_authentication_for_kibana_test.py | 11 +- .../opensearch/opensearch_service_test.py | 70 +- ...ions_account_part_of_organizations_test.py | 58 +- ...nizations_delegated_administrators_test.py | 71 +- ...ganizations_scp_check_deny_regions_test.py | 136 +- .../organizations_service_test.py | 61 +- ...tags_policies_enabled_and_attached_test.py | 62 +- .../rds_instance_backup_enabled_test.py | 71 +- .../rds_instance_deletion_protection_test.py | 91 +- ...instance_deprecated_engine_version_test.py | 70 +- ...stance_enhanced_monitoring_enabled_test.py | 70 +- ...stance_integration_cloudwatch_logs_test.py | 70 +- ...ance_minor_version_upgrade_enabled_test.py | 70 +- .../rds_instance_multi_az_test.py | 102 +- .../rds_instance_no_public_access_test.py | 204 +- .../rds_instance_storage_encrypted_test.py | 70 +- .../rds_instance_transport_encrypted_test.py | 76 +- .../aws/services/rds/rds_service_test.py | 125 +- .../rds_snapshots_public_access_test.py | 86 +- .../redshift_cluster_audit_logging_test.py | 14 +- ...edshift_cluster_automated_snapshot_test.py | 15 +- ...edshift_cluster_automatic_upgrades_test.py | 14 +- .../redshift_cluster_public_access_test.py | 16 +- .../redshift/redshift_service_test.py | 87 +- .../resourceexplorer2_indexes_found_test.py | 48 +- .../resourceexplorer2_service_test.py | 58 +- ...e53_dangling_ip_subdomain_takeover_test.py | 108 +- ...domains_privacy_protection_enabled_test.py | 13 +- ...ute53_domains_transferlock_enabled_test.py | 11 +- ...d_zones_cloudwatch_logging_enabled_test.py | 22 +- .../services/route53/route53_service_test.py | 103 +- .../route53/route53domains_service_test.py | 58 +- ...account_level_public_access_blocks_test.py | 73 +- .../s3_bucket_acl_prohibited_test.py | 70 +- .../s3_bucket_default_encryption_test.py | 62 +- .../s3_bucket_kms_encryption_test.py | 82 +- ...3_bucket_level_public_access_block_test.py | 94 +- .../s3_bucket_no_mfa_delete_test.py | 58 +- .../s3_bucket_object_lock_test.py | 66 +- .../s3_bucket_object_versioning_test.py | 62 +- ..._bucket_policy_public_write_access_test.py | 163 +- .../s3_bucket_public_access_test.py | 122 +- .../s3_bucket_public_list_acl_test.py | 150 +- .../s3_bucket_public_write_acl_test.py | 150 +- .../s3_bucket_secure_transport_policy_test.py | 70 +- ...cket_server_access_logging_enabled_test.py | 58 +- .../aws/services/s3/s3_service_test.py | 107 +- ...r_models_network_isolation_enabled_test.py | 13 +- ...ker_models_vpc_settings_configured_test.py | 13 +- ...tebook_instance_encryption_enabled_test.py | 13 +- ...book_instance_root_access_disabled_test.py | 13 +- ...k_instance_vpc_settings_configured_test.py | 13 +- ..._direct_internet_access_configured_test.py | 13 +- .../sagemaker/sagemaker_service_test.py | 84 +- ..._intercontainer_encryption_enabled_test.py | 13 +- ...ing_jobs_network_isolation_enabled_test.py | 13 +- ...lume_and_output_encryption_enabled_test.py | 13 +- ...ining_jobs_vpc_settings_configured_test.py | 13 +- ...manager_automatic_rotation_enabled_test.py | 21 +- .../secretsmanager_service_test.py | 90 +- .../securityhub_enabled_test.py | 23 +- .../securityhub/securityhub_service_test.py | 59 +- ...otection_in_associated_elastic_ips_test.py | 103 +- ...otection_in_classic_load_balancers_test.py | 109 +- ...ection_in_cloudfront_distributions_test.py | 41 +- ..._protection_in_global_accelerators_test.py | 32 +- ..._in_internet_facing_load_balancers_test.py | 145 +- ...protection_in_route53_hosted_zones_test.py | 21 +- .../services/shield/shield_service_test.py | 57 +- .../aws/services/sns/sns_service_test.py | 83 +- ...ics_kms_encryption_at_rest_enabled_test.py | 13 +- ...sns_topics_not_publicly_accessible_test.py | 37 +- ...sqs_queues_not_publicly_accessible_test.py | 84 +- ...ues_server_side_encryption_enabled_test.py | 17 +- .../aws/services/sqs/sqs_service_test.py | 85 +- .../ssm_document_secrets_test.py | 28 +- .../ssm_documents_set_as_public_test.py | 28 +- .../ssm_managed_compliant_patching_test.py | 20 +- .../aws/services/ssm/ssm_service_test.py | 90 +- .../ssmincidents_enabled_with_plans_test.py | 26 +- .../ssmincidents/ssmincidents_service_test.py | 70 +- ...trustedadvisor_errors_and_warnings_test.py | 23 +- ...or_premium_support_plan_subscribed_test.py | 17 +- .../trustedadvisor_service_test.py | 54 +- .../vpc_different_regions_test.py | 92 +- ...point_connections_trust_boundaries_test.py | 132 +- ...llowed_principals_trust_boundaries_test.py | 21 +- .../vpc_flow_logs_enabled_test.py | 83 +- ...outing_tables_with_least_privilege_test.py | 78 +- .../aws/services/vpc/vpc_service_test.py | 142 +- .../vpc_subnet_different_az_test.py | 78 +- ...vpc_subnet_no_public_ip_by_default_test.py | 60 +- ...vpc_subnet_separate_private_public_test.py | 76 +- .../aws/services/waf/waf_service_test.py | 63 +- .../aws/services/wafv2/wafv2_service_test.py | 84 +- .../wafv2_webacl_logging_enabled_test.py | 16 +- .../wellarchitected_service_test.py | 67 +- ...d_workload_no_high_or_medium_risks_test.py | 25 +- .../workspaces/workspaces_service_test.py | 62 +- ...rkspaces_volume_encryption_enabled_test.py | 26 +- ...s_vpc_2private_1public_subnets_nat_test.py | 112 +- tests/providers/azure/azure_fixtures.py | 43 + .../app_client_certificates_on_test.py | 111 + .../app_ensure_auth_is_set_up_test.py | 111 + ...ensure_http_is_redirected_to_https_test.py | 111 + .../app_ensure_java_version_is_latest_test.py | 259 ++ .../app_ensure_php_version_is_latest_test.py | 143 + ...pp_ensure_python_version_is_latest_test.py | 143 + .../app_ensure_using_http20_test.py | 147 + .../app_ftp_deployment_disabled_test.py | 147 + .../app_minimum_tls_version_12_test.py | 147 + .../app_register_with_identity_test.py | 111 + .../azure/services/app/app_service_test.py | 79 + .../appinsights_ensure_is_configured_test.py | 77 + .../appinsights/appinsights_service_test.py | 50 + ...unt_firewall_use_selected_networks_test.py | 101 + .../cosmosdb_account_use_aad_and_rbac_test.py | 103 + ...osdb_account_use_private_endpoints_test.py | 109 + .../cosmosdb/cosmosdb_service_test.py | 52 + ...configured_with_a_security_contact_test.py | 247 ++ ...s_vm_endpoint_protection_installed_test.py | 103 + ...sioning_log_analytics_agent_vms_on_test.py | 142 + ...lnerabilty_assessments_machines_on_test.py | 89 + ...re_defender_for_app_services_is_on_test.py | 21 +- ...nder_ensure_defender_for_arm_is_on_test.py | 21 +- ...nder_for_azure_sql_databases_is_on_test.py | 21 +- ...sure_defender_for_containers_is_on_test.py | 21 +- ...ensure_defender_for_cosmosdb_is_on_test.py | 21 +- ...nsure_defender_for_databases_is_on_test.py | 49 +- ...nder_ensure_defender_for_dns_is_on_test.py | 21 +- ...ensure_defender_for_keyvault_is_on_test.py | 21 +- ..._for_os_relational_databases_is_on_test.py | 21 +- ...r_ensure_defender_for_server_is_on_test.py | 21 +- ...ure_defender_for_sql_servers_is_on_test.py | 21 +- ..._ensure_defender_for_storage_is_on_test.py | 21 +- ...nder_ensure_iot_hub_defender_is_on_test.py | 153 + .../defender_ensure_mcas_is_enabled_test.py | 115 + ...ure_notify_alerts_severity_is_high_test.py | 136 + ...der_ensure_notify_emails_to_owners_test.py | 173 + ..._ensure_system_updates_are_applied_test.py | 199 + .../defender_ensure_wdatp_is_enabled_test.py | 115 + .../defender/defender_service_test.py | 255 ++ ...sions_to_administer_resource_locks_test.py | 112 + ...ion_roles_owner_custom_not_created_test.py | 33 +- ...ult_key_expiration_set_in_non_rbac_test.py | 151 + .../keyvault_key_rotation_enabled_test.py | 163 + ...ult_non_rbac_secret_expiration_set_test.py | 210 + .../keyvault_private_endpoints_test.py | 121 + .../keyvault_rbac_enabled_test.py | 110 + .../keyvault_rbac_key_expiration_set_test.py | 151 + ...eyvault_rbac_secret_expiration_set_test.py | 210 + .../keyvault_recoverable_test.py | 182 + .../keyvault/keyvault_service_test.py | 99 + ...etting_with_appropriate_categories_test.py | 103 + .../services/monitor/monitor_service_test.py | 102 + ...ver_audit_log_connection_activated_test.py | 171 + ..._flexible_server_audit_log_enabled_test.py | 128 + ...ible_server_minimum_tls_version_12_test.py | 243 ++ ...ible_server_ssl_connection_enabled_test.py | 229 ++ .../services/mysql/mysql_service_test.py | 101 + .../network_bastion_host_exists_test.py | 72 + ...network_flow_log_more_than_90_days_test.py | 199 + ...rk_http_internet_access_restricted_test.py | 208 + .../network_public_ip_shodan_test.py | 78 + ...ork_rdp_internet_access_restricted_test.py | 161 + .../services/network/network_service_test.py | 161 + ...ork_ssh_internet_access_restricted_test.py | 208 + ...ork_udp_internet_access_restricted_test.py | 159 + .../network_watcher_enabled_test.py | 110 + ...icy_ensure_asc_enforcement_enabled_test.py | 122 + .../services/policy/policy_service_test.py | 46 + ...ver_allow_access_services_disabled_test.py | 120 + ...le_server_connection_throttling_on_test.py | 105 + ...lexible_server_enforce_ssl_enabled_test.py | 105 + ...flexible_server_log_checkpoints_on_test.py | 105 + ...flexible_server_log_connections_on_test.py | 105 + ...xible_server_log_disconnections_on_test.py | 105 + ...erver_log_retention_days_greater_3_test.py | 190 + .../postgresql/postgresql_service_test.py | 122 + .../sqlserver_auditing_enabled_test.py | 23 +- ...lserver_auditing_retention_90_days_test.py | 239 ++ ...rver_azuread_administrator_enabled_test.py | 31 +- ...lserver_microsoft_defender_enabled_test.py | 134 + .../sqlserver/sqlserver_service_test.py | 238 ++ .../sqlserver_tde_encrypted_with_cmk_test.py | 209 + .../sqlserver_tde_encryption_enabled_test.py | 159 + ...server_unrestricted_inbound_access_test.py | 23 +- ...mails_notifications_admins_enabled_test.py | 207 + ...a_periodic_recurring_scans_enabled_test.py | 204 + ...lserver_va_scan_reports_configured_test.py | 253 ++ ...r_vulnerability_assessment_enabled_test.py | 189 + ...ob_public_access_level_is_disabled_test.py | 27 +- ...ault_network_access_rule_is_denied_test.py | 27 +- ...s_are_trusted_to_access_is_enabled_test.py | 27 +- ...ryption_with_customer_managed_keys_test.py | 27 +- ...rage_ensure_minimum_tls_version_12_test.py | 27 +- ...vate_endpoints_in_storage_accounts_test.py | 113 + ...rage_ensure_soft_delete_is_enabled_test.py | 168 + ...frastructure_encryption_is_enabled_test.py | 27 +- .../storage_key_rotation_90_days_test.py | 151 + ...ecure_transfer_required_is_enabled_test.py | 27 +- .../services/storage/storage_service_test.py | 132 + ..._attached_disks_encrypted_with_cmk_test.py | 186 + ...nattached_disks_encrypted_with_cmk_test.py | 186 + .../vm_ensure_using_managed_disks_test.py | 156 + .../azure/services/vm/vm_service_test.py | 104 + tests/providers/common/audit_info_test.py | 12 +- tests/providers/common/common_outputs_test.py | 9 +- tests/providers/gcp/lib/audit_info_utils.py | 1 + ...pikeys_api_restrictions_configured_test.py | 2 +- .../apikeys_key_exists_test.py | 2 +- .../apikeys_key_rotated_in_90_days_test.py | 2 +- ...tifacts_container_analysis_enabled_test.py | 68 + .../bigquery_dataset_public_access_test.py | 2 +- ...ock_project_wide_ssh_keys_disabled_test.py | 2 +- ...ute_default_service_account_in_use_test.py | 2 +- ...ccount_in_use_with_full_api_access_test.py | 2 +- ...e_encryption_with_csek_is_disabled_test.py | 2 +- ...nce_confidential_computing_enabled_test.py | 2 +- .../compute_ip_forwarding_is_enabled_test.py | 2 +- ...mpute_loadbalancer_logging_enabled_test.py | 2 +- ...ompute_network_dns_logging_enabled_test.py | 3 +- .../compute_network_not_legacy_test.py | 2 +- .../compute_project_os_login_enabled_test.py | 2 +- ...p_access_from_the_internet_allowed_test.py | 2 +- .../compute_serial_ports_in_use_test.py | 2 +- .../compute_shielded_vm_enabled_test.py | 2 +- ...h_access_from_the_internet_allowed_test.py | 2 +- .../compute_subnet_flow_logs_enabled_test.py | 2 +- ...aproc_encrypted_with_cmks_disabled_test.py | 2 +- .../dns_dnssec_disabled_test.py | 2 +- ...asha1_in_use_to_key_sign_in_dnssec_test.py | 2 +- ...sha1_in_use_to_zone_sign_in_dnssec_test.py | 2 +- .../gcr_container_scanning_enabled_test.py | 68 + ...cluster_no_default_service_account_test.py | 196 + ...am_account_access_approval_enabled_test.py | 3 +- .../iam_audit_logs_enabled_test.py | 2 +- ...iam_cloud_asset_inventory_enabled_test.py} | 31 +- ..._no_service_roles_at_project_level_test.py | 2 +- ...tion_essential_contacts_configured_test.py | 2 - ...e_kms_enforce_separation_of_duties_test.py | 2 +- ...le_sa_enforce_separation_of_duties_test.py | 2 +- .../kubernetes/kubernetes_provider_test.py | 13 - util/update_aws_services_regions.py | 4 + 932 files changed, 38774 insertions(+), 20001 deletions(-) create mode 100644 .github/labeler.yml create mode 100644 .github/workflows/build-documentation-on-pr.yml create mode 100644 .github/workflows/labeler.yml create mode 100644 docs/developer-guide/debugging.md create mode 100644 docs/img/page-IAM.png create mode 100644 docs/img/prowler-logo-black.png create mode 100644 docs/img/prowler-logo-white.png create mode 100644 docs/img/register-application.png create mode 100644 docs/tutorials/aws/img/enable-2.png create mode 100644 docs/tutorials/aws/img/enable-partner-integration-2.png create mode 100644 docs/tutorials/aws/img/enable-partner-integration-3.png create mode 100644 docs/tutorials/aws/img/enable-partner-integration-4.png create mode 100644 docs/tutorials/aws/img/enable-partner-integration.png create mode 100644 docs/tutorials/aws/img/enable.png create mode 100644 docs/tutorials/aws/img/finding-details.png create mode 100644 docs/tutorials/aws/img/findings.png create mode 100644 docs/tutorials/parallel-execution.md create mode 100644 prowler/compliance/aws/aws_account_security_onboarding_aws.json create mode 100644 prowler/compliance/aws/cis_3.0_aws.json create mode 100644 prowler/providers/aws/services/cloudwatch/lib/metric_filters.py rename prowler/providers/aws/services/{inspector2/inspector2_findings_exist => cognito}/__init__.py (100%) create mode 100644 prowler/providers/aws/services/cognito/cognito_idp_client.py create mode 100644 prowler/providers/aws/services/cognito/cognito_service.py rename prowler/providers/{gcp/services/serviceusage/serviceusage_cloudasset_inventory_enabled => aws/services/eks/eks_cluster_network_policy_enabled}/__init__.py (100%) create mode 100644 prowler/providers/aws/services/eks/eks_cluster_network_policy_enabled/eks_cluster_network_policy_enabled.metadata.json create mode 100644 prowler/providers/aws/services/eks/eks_cluster_network_policy_enabled/eks_cluster_network_policy_enabled.py create mode 100644 prowler/providers/aws/services/eks/eks_cluster_private_nodes_enabled/__init__.py create mode 100644 prowler/providers/aws/services/eks/eks_cluster_private_nodes_enabled/eks_cluster_private_nodes_enabled.metadata.json create mode 100644 prowler/providers/aws/services/eks/eks_cluster_private_nodes_enabled/eks_cluster_private_nodes_enabled.py create mode 100644 prowler/providers/aws/services/inspector2/inspector2_active_findings_exist/__init__.py rename prowler/providers/aws/services/inspector2/{inspector2_findings_exist/inspector2_findings_exist.metadata.json => inspector2_active_findings_exist/inspector2_active_findings_exist.metadata.json} (85%) create mode 100644 prowler/providers/aws/services/inspector2/inspector2_active_findings_exist/inspector2_active_findings_exist.py create mode 100644 prowler/providers/aws/services/inspector2/inspector2_is_enabled/__init__.py create mode 100644 prowler/providers/aws/services/inspector2/inspector2_is_enabled/inspector2_is_enabled.metadata.json rename prowler/providers/aws/services/inspector2/{inspector2_findings_exist/inspector2_findings_exist.py => inspector2_is_enabled/inspector2_is_enabled.py} (65%) create mode 100644 prowler/providers/azure/services/app/__init__.py create mode 100644 prowler/providers/azure/services/app/app_client.py create mode 100644 prowler/providers/azure/services/app/app_client_certificates_on/__init__.py create mode 100644 prowler/providers/azure/services/app/app_client_certificates_on/app_client_certificates_on.metadata.json create mode 100644 prowler/providers/azure/services/app/app_client_certificates_on/app_client_certificates_on.py create mode 100644 prowler/providers/azure/services/app/app_ensure_auth_is_set_up/__init__.py create mode 100644 prowler/providers/azure/services/app/app_ensure_auth_is_set_up/app_ensure_auth_is_set_up.metadata.json create mode 100644 prowler/providers/azure/services/app/app_ensure_auth_is_set_up/app_ensure_auth_is_set_up.py create mode 100644 prowler/providers/azure/services/app/app_ensure_http_is_redirected_to_https/__init__.py create mode 100644 prowler/providers/azure/services/app/app_ensure_http_is_redirected_to_https/app_ensure_http_is_redirected_to_https.metadata.json create mode 100644 prowler/providers/azure/services/app/app_ensure_http_is_redirected_to_https/app_ensure_http_is_redirected_to_https.py create mode 100644 prowler/providers/azure/services/app/app_ensure_java_version_is_latest/__init__.py create mode 100644 prowler/providers/azure/services/app/app_ensure_java_version_is_latest/app_ensure_java_version_is_latest.metadata.json create mode 100644 prowler/providers/azure/services/app/app_ensure_java_version_is_latest/app_ensure_java_version_is_latest.py create mode 100644 prowler/providers/azure/services/app/app_ensure_php_version_is_latest/__init__.py create mode 100644 prowler/providers/azure/services/app/app_ensure_php_version_is_latest/app_ensure_php_version_is_latest.metadata.json create mode 100644 prowler/providers/azure/services/app/app_ensure_php_version_is_latest/app_ensure_php_version_is_latest.py create mode 100644 prowler/providers/azure/services/app/app_ensure_python_version_is_latest/__init__.py create mode 100644 prowler/providers/azure/services/app/app_ensure_python_version_is_latest/app_ensure_python_version_is_latest.metadata.json create mode 100644 prowler/providers/azure/services/app/app_ensure_python_version_is_latest/app_ensure_python_version_is_latest.py create mode 100644 prowler/providers/azure/services/app/app_ensure_using_http20/__init__.py create mode 100644 prowler/providers/azure/services/app/app_ensure_using_http20/app_ensure_using_http20.metadata.json create mode 100644 prowler/providers/azure/services/app/app_ensure_using_http20/app_ensure_using_http20.py create mode 100644 prowler/providers/azure/services/app/app_ftp_deployment_disabled/__init__.py create mode 100644 prowler/providers/azure/services/app/app_ftp_deployment_disabled/app_ftp_deployment_disabled.metadata.json create mode 100644 prowler/providers/azure/services/app/app_ftp_deployment_disabled/app_ftp_deployment_disabled.py create mode 100644 prowler/providers/azure/services/app/app_minimum_tls_version_12/__init__.py create mode 100644 prowler/providers/azure/services/app/app_minimum_tls_version_12/app_minimum_tls_version_12.metadata.json create mode 100644 prowler/providers/azure/services/app/app_minimum_tls_version_12/app_minimum_tls_version_12.py create mode 100644 prowler/providers/azure/services/app/app_register_with_identity/__init__.py create mode 100644 prowler/providers/azure/services/app/app_register_with_identity/app_register_with_identity.metadata.json create mode 100644 prowler/providers/azure/services/app/app_register_with_identity/app_register_with_identity.py create mode 100644 prowler/providers/azure/services/app/app_service.py create mode 100644 prowler/providers/azure/services/appinsights/__init__.py create mode 100644 prowler/providers/azure/services/appinsights/appinsights_client.py create mode 100644 prowler/providers/azure/services/appinsights/appinsights_ensure_is_configured/__init__.py create mode 100644 prowler/providers/azure/services/appinsights/appinsights_ensure_is_configured/appinsights_ensure_is_configured.metadata.json create mode 100644 prowler/providers/azure/services/appinsights/appinsights_ensure_is_configured/appinsights_ensure_is_configured.py create mode 100644 prowler/providers/azure/services/appinsights/appinsights_service.py create mode 100644 prowler/providers/azure/services/cosmosdb/__init__.py create mode 100644 prowler/providers/azure/services/cosmosdb/cosmosdb_account_firewall_use_selected_networks/__init__.py create mode 100644 prowler/providers/azure/services/cosmosdb/cosmosdb_account_firewall_use_selected_networks/cosmosdb_account_firewall_use_selected_networks.metadata.json create mode 100644 prowler/providers/azure/services/cosmosdb/cosmosdb_account_firewall_use_selected_networks/cosmosdb_account_firewall_use_selected_networks.py create mode 100644 prowler/providers/azure/services/cosmosdb/cosmosdb_account_use_aad_and_rbac/cosmosdb_account_use_aad_and_rbac.metadata.json create mode 100644 prowler/providers/azure/services/cosmosdb/cosmosdb_account_use_aad_and_rbac/cosmosdb_account_use_aad_and_rbac.py create mode 100644 prowler/providers/azure/services/cosmosdb/cosmosdb_account_use_private_endpoints/__init__.py create mode 100644 prowler/providers/azure/services/cosmosdb/cosmosdb_account_use_private_endpoints/cosmosdb_account_use_private_endpoints.metadata.json create mode 100644 prowler/providers/azure/services/cosmosdb/cosmosdb_account_use_private_endpoints/cosmosdb_account_use_private_endpoints.py create mode 100644 prowler/providers/azure/services/cosmosdb/cosmosdb_client.py create mode 100644 prowler/providers/azure/services/cosmosdb/cosmosdb_service.py create mode 100644 prowler/providers/azure/services/defender/defender_additional_email_configured_with_a_security_contact/__init__.py create mode 100644 prowler/providers/azure/services/defender/defender_additional_email_configured_with_a_security_contact/defender_additional_email_configured_with_a_security_contact.metadata.json create mode 100644 prowler/providers/azure/services/defender/defender_additional_email_configured_with_a_security_contact/defender_additional_email_configured_with_a_security_contact.py create mode 100644 prowler/providers/azure/services/defender/defender_assessments_vm_endpoint_protection_installed/__init__.py create mode 100644 prowler/providers/azure/services/defender/defender_assessments_vm_endpoint_protection_installed/defender_assessments_vm_endpoint_protection_installed.metadata.json create mode 100644 prowler/providers/azure/services/defender/defender_assessments_vm_endpoint_protection_installed/defender_assessments_vm_endpoint_protection_installed.py create mode 100644 prowler/providers/azure/services/defender/defender_auto_provisioning_log_analytics_agent_vms_on/__init__.py create mode 100644 prowler/providers/azure/services/defender/defender_auto_provisioning_log_analytics_agent_vms_on/defender_auto_provisioning_log_analytics_agent_vms_on.metadata.json create mode 100644 prowler/providers/azure/services/defender/defender_auto_provisioning_log_analytics_agent_vms_on/defender_auto_provisioning_log_analytics_agent_vms_on.py create mode 100644 prowler/providers/azure/services/defender/defender_auto_provisioning_vulnerabilty_assessments_machines_on/__init__.py create mode 100644 prowler/providers/azure/services/defender/defender_auto_provisioning_vulnerabilty_assessments_machines_on/defender_auto_provisioning_vulnerabilty_assessments_machines_on.metadata.json create mode 100644 prowler/providers/azure/services/defender/defender_auto_provisioning_vulnerabilty_assessments_machines_on/defender_auto_provisioning_vulnerabilty_assessments_machines_on.py create mode 100644 prowler/providers/azure/services/defender/defender_ensure_iot_hub_defender_is_on/__init__.py create mode 100644 prowler/providers/azure/services/defender/defender_ensure_iot_hub_defender_is_on/defender_ensure_iot_hub_defender_is_on.metadata.json create mode 100644 prowler/providers/azure/services/defender/defender_ensure_iot_hub_defender_is_on/defender_ensure_iot_hub_defender_is_on.py create mode 100644 prowler/providers/azure/services/defender/defender_ensure_mcas_is_enabled/__init__.py create mode 100644 prowler/providers/azure/services/defender/defender_ensure_mcas_is_enabled/defender_ensure_mcas_is_enabled.metadata.json create mode 100644 prowler/providers/azure/services/defender/defender_ensure_mcas_is_enabled/defender_ensure_mcas_is_enabled.py create mode 100644 prowler/providers/azure/services/defender/defender_ensure_notify_alerts_severity_is_high/__init__.py create mode 100644 prowler/providers/azure/services/defender/defender_ensure_notify_alerts_severity_is_high/defender_ensure_notify_alerts_severity_is_high.metadata.json create mode 100644 prowler/providers/azure/services/defender/defender_ensure_notify_alerts_severity_is_high/defender_ensure_notify_alerts_severity_is_high.py create mode 100644 prowler/providers/azure/services/defender/defender_ensure_notify_emails_to_owners/__init__.py create mode 100644 prowler/providers/azure/services/defender/defender_ensure_notify_emails_to_owners/defender_ensure_notify_emails_to_owners.metadata.json create mode 100644 prowler/providers/azure/services/defender/defender_ensure_notify_emails_to_owners/defender_ensure_notify_emails_to_owners.py create mode 100644 prowler/providers/azure/services/defender/defender_ensure_system_updates_are_applied/__init__.py create mode 100644 prowler/providers/azure/services/defender/defender_ensure_system_updates_are_applied/defender_ensure_system_updates_are_applied.metadata.json create mode 100644 prowler/providers/azure/services/defender/defender_ensure_system_updates_are_applied/defender_ensure_system_updates_are_applied.py create mode 100644 prowler/providers/azure/services/defender/defender_ensure_wdatp_is_enabled/__init__.py create mode 100644 prowler/providers/azure/services/defender/defender_ensure_wdatp_is_enabled/defender_ensure_wdatp_is_enabled.metadata.json create mode 100644 prowler/providers/azure/services/defender/defender_ensure_wdatp_is_enabled/defender_ensure_wdatp_is_enabled.py create mode 100644 prowler/providers/azure/services/iam/iam_custom_role_has_permissions_to_administer_resource_locks/__init__.py create mode 100644 prowler/providers/azure/services/iam/iam_custom_role_has_permissions_to_administer_resource_locks/iam_custom_role_has_permissions_to_administer_resource_locks.metadata.json create mode 100644 prowler/providers/azure/services/iam/iam_custom_role_has_permissions_to_administer_resource_locks/iam_custom_role_has_permissions_to_administer_resource_locks.py create mode 100644 prowler/providers/azure/services/keyvault/__init__.py create mode 100644 prowler/providers/azure/services/keyvault/keyvault_client.py create mode 100644 prowler/providers/azure/services/keyvault/keyvault_key_expiration_set_in_non_rbac/__init__.py create mode 100644 prowler/providers/azure/services/keyvault/keyvault_key_expiration_set_in_non_rbac/keyvault_key_expiration_set_in_non_rbac.metadata.json create mode 100644 prowler/providers/azure/services/keyvault/keyvault_key_expiration_set_in_non_rbac/keyvault_key_expiration_set_in_non_rbac.py create mode 100644 prowler/providers/azure/services/keyvault/keyvault_key_rotation_enabled/keyvault_key_rotation_enabled.metadata.json create mode 100644 prowler/providers/azure/services/keyvault/keyvault_key_rotation_enabled/keyvault_key_rotation_enabled.py create mode 100644 prowler/providers/azure/services/keyvault/keyvault_non_rbac_secret_expiration_set/__init__.py create mode 100644 prowler/providers/azure/services/keyvault/keyvault_non_rbac_secret_expiration_set/keyvault_non_rbac_secret_expiration_set.metadata.json create mode 100644 prowler/providers/azure/services/keyvault/keyvault_non_rbac_secret_expiration_set/keyvault_non_rbac_secret_expiration_set.py create mode 100644 prowler/providers/azure/services/keyvault/keyvault_private_endpoints/__init__.py create mode 100644 prowler/providers/azure/services/keyvault/keyvault_private_endpoints/keyvault_private_endpoints.metadata.json create mode 100644 prowler/providers/azure/services/keyvault/keyvault_private_endpoints/keyvault_private_endpoints.py create mode 100644 prowler/providers/azure/services/keyvault/keyvault_rbac_enabled/__init__.py create mode 100644 prowler/providers/azure/services/keyvault/keyvault_rbac_enabled/keyvault_rbac_enabled.metadata.json create mode 100644 prowler/providers/azure/services/keyvault/keyvault_rbac_enabled/keyvault_rbac_enabled.py create mode 100644 prowler/providers/azure/services/keyvault/keyvault_rbac_key_expiration_set/__init__.py create mode 100644 prowler/providers/azure/services/keyvault/keyvault_rbac_key_expiration_set/keyvault_rbac_key_expiration_set.metadata.json create mode 100644 prowler/providers/azure/services/keyvault/keyvault_rbac_key_expiration_set/keyvault_rbac_key_expiration_set.py create mode 100644 prowler/providers/azure/services/keyvault/keyvault_rbac_secret_expiration_set/__init__.py create mode 100644 prowler/providers/azure/services/keyvault/keyvault_rbac_secret_expiration_set/keyvault_rbac_secret_expiration_set.metadata.json create mode 100644 prowler/providers/azure/services/keyvault/keyvault_rbac_secret_expiration_set/keyvault_rbac_secret_expiration_set.py create mode 100644 prowler/providers/azure/services/keyvault/keyvault_recoverable/__init__.py create mode 100644 prowler/providers/azure/services/keyvault/keyvault_recoverable/keyvault_recoverable.metadata.json create mode 100644 prowler/providers/azure/services/keyvault/keyvault_recoverable/keyvault_recoverable.py create mode 100644 prowler/providers/azure/services/keyvault/keyvault_service.py create mode 100644 prowler/providers/azure/services/monitor/__init__.py create mode 100644 prowler/providers/azure/services/monitor/monitor_client.py create mode 100644 prowler/providers/azure/services/monitor/monitor_diagnostic_setting_with_appropriate_categories/__init__.py create mode 100644 prowler/providers/azure/services/monitor/monitor_diagnostic_setting_with_appropriate_categories/monitor_diagnostic_setting_with_appropriate_categories.metadata.json create mode 100644 prowler/providers/azure/services/monitor/monitor_diagnostic_setting_with_appropriate_categories/monitor_diagnostic_setting_with_appropriate_categories.py create mode 100644 prowler/providers/azure/services/monitor/monitor_service.py create mode 100644 prowler/providers/azure/services/mysql/__init__.py create mode 100644 prowler/providers/azure/services/mysql/mysql_client.py create mode 100644 prowler/providers/azure/services/mysql/mysql_flexible_server_audit_log_connection_activated/__init__.py create mode 100644 prowler/providers/azure/services/mysql/mysql_flexible_server_audit_log_connection_activated/mysql_flexible_server_audit_log_connection_activated.metadata.json create mode 100644 prowler/providers/azure/services/mysql/mysql_flexible_server_audit_log_connection_activated/mysql_flexible_server_audit_log_connection_activated.py create mode 100644 prowler/providers/azure/services/mysql/mysql_flexible_server_audit_log_enabled/__init__.py create mode 100644 prowler/providers/azure/services/mysql/mysql_flexible_server_audit_log_enabled/mysql_flexible_server_audit_log_enabled.metadata.json create mode 100644 prowler/providers/azure/services/mysql/mysql_flexible_server_audit_log_enabled/mysql_flexible_server_audit_log_enabled.py create mode 100644 prowler/providers/azure/services/mysql/mysql_flexible_server_minimum_tls_version_12/__init__.py create mode 100644 prowler/providers/azure/services/mysql/mysql_flexible_server_minimum_tls_version_12/mysql_flexible_server_minimum_tls_version_12.metadata.json create mode 100644 prowler/providers/azure/services/mysql/mysql_flexible_server_minimum_tls_version_12/mysql_flexible_server_minimum_tls_version_12.py create mode 100644 prowler/providers/azure/services/mysql/mysql_flexible_server_ssl_connection_enabled/__init__.py create mode 100644 prowler/providers/azure/services/mysql/mysql_flexible_server_ssl_connection_enabled/mysql_flexible_server_ssl_connection_enabled.metadata.json create mode 100644 prowler/providers/azure/services/mysql/mysql_flexible_server_ssl_connection_enabled/mysql_flexible_server_ssl_connection_enabled.py create mode 100644 prowler/providers/azure/services/mysql/mysql_service.py create mode 100644 prowler/providers/azure/services/network/__init__.py create mode 100644 prowler/providers/azure/services/network/network_bastion_host_exists/__init__.py create mode 100644 prowler/providers/azure/services/network/network_bastion_host_exists/network_bastion_host_exists.metadata.json create mode 100644 prowler/providers/azure/services/network/network_bastion_host_exists/network_bastion_host_exists.py create mode 100644 prowler/providers/azure/services/network/network_client.py create mode 100644 prowler/providers/azure/services/network/network_flow_log_more_than_90_days/__init__.py create mode 100644 prowler/providers/azure/services/network/network_flow_log_more_than_90_days/network_flow_log_more_than_90_days.metadata.json create mode 100644 prowler/providers/azure/services/network/network_flow_log_more_than_90_days/network_flow_log_more_than_90_days.py create mode 100644 prowler/providers/azure/services/network/network_http_internet_access_restricted/__init__.py create mode 100644 prowler/providers/azure/services/network/network_http_internet_access_restricted/network_http_internet_access_restricted.metadata.json create mode 100644 prowler/providers/azure/services/network/network_http_internet_access_restricted/network_http_internet_access_restricted.py create mode 100644 prowler/providers/azure/services/network/network_public_ip_shodan/__init__.py create mode 100644 prowler/providers/azure/services/network/network_public_ip_shodan/network_public_ip_shodan.metadata.json create mode 100644 prowler/providers/azure/services/network/network_public_ip_shodan/network_public_ip_shodan.py create mode 100644 prowler/providers/azure/services/network/network_rdp_internet_access_restricted/__init__.py create mode 100644 prowler/providers/azure/services/network/network_rdp_internet_access_restricted/network_rdp_internet_access_restricted.metadata.json create mode 100644 prowler/providers/azure/services/network/network_rdp_internet_access_restricted/network_rdp_internet_access_restricted.py create mode 100644 prowler/providers/azure/services/network/network_service.py create mode 100644 prowler/providers/azure/services/network/network_ssh_internet_access_restricted/__init__.py create mode 100644 prowler/providers/azure/services/network/network_ssh_internet_access_restricted/network_ssh_internet_access_restricted.metadata.json create mode 100644 prowler/providers/azure/services/network/network_ssh_internet_access_restricted/network_ssh_internet_access_restricted.py create mode 100644 prowler/providers/azure/services/network/network_udp_internet_access_restricted/__init__.py create mode 100644 prowler/providers/azure/services/network/network_udp_internet_access_restricted/network_udp_internet_access_restricted.metadata.json create mode 100644 prowler/providers/azure/services/network/network_udp_internet_access_restricted/network_udp_internet_access_restricted.py create mode 100644 prowler/providers/azure/services/network/network_watcher_enabled/__init__.py create mode 100644 prowler/providers/azure/services/network/network_watcher_enabled/network_watcher_enabled.metadata.json create mode 100644 prowler/providers/azure/services/network/network_watcher_enabled/network_watcher_enabled.py create mode 100644 prowler/providers/azure/services/policy/__init__.py create mode 100644 prowler/providers/azure/services/policy/policy_client.py create mode 100644 prowler/providers/azure/services/policy/policy_ensure_asc_enforcement_enabled/__init__.py create mode 100644 prowler/providers/azure/services/policy/policy_ensure_asc_enforcement_enabled/policy_ensure_asc_enforcement_enabled.metadata.json create mode 100644 prowler/providers/azure/services/policy/policy_ensure_asc_enforcement_enabled/policy_ensure_asc_enforcement_enabled.py create mode 100644 prowler/providers/azure/services/policy/policy_service.py create mode 100644 prowler/providers/azure/services/postgresql/__init__.py create mode 100644 prowler/providers/azure/services/postgresql/postgresql_client.py create mode 100644 prowler/providers/azure/services/postgresql/postgresql_flexible_server_allow_access_services_disabled/__init__.py create mode 100644 prowler/providers/azure/services/postgresql/postgresql_flexible_server_allow_access_services_disabled/postgresql_flexible_server_allow_access_services_disabled.metadata.json create mode 100644 prowler/providers/azure/services/postgresql/postgresql_flexible_server_allow_access_services_disabled/postgresql_flexible_server_allow_access_services_disabled.py create mode 100644 prowler/providers/azure/services/postgresql/postgresql_flexible_server_connection_throttling_on/__init__.py create mode 100644 prowler/providers/azure/services/postgresql/postgresql_flexible_server_connection_throttling_on/postgresql_flexible_server_connection_throttling_on.metadata.json create mode 100644 prowler/providers/azure/services/postgresql/postgresql_flexible_server_connection_throttling_on/postgresql_flexible_server_connection_throttling_on.py create mode 100644 prowler/providers/azure/services/postgresql/postgresql_flexible_server_enforce_ssl_enabled/__init__.py create mode 100644 prowler/providers/azure/services/postgresql/postgresql_flexible_server_enforce_ssl_enabled/postgresql_flexible_server_enforce_ssl_enabled.metadata.json create mode 100644 prowler/providers/azure/services/postgresql/postgresql_flexible_server_enforce_ssl_enabled/postgresql_flexible_server_enforce_ssl_enabled.py create mode 100644 prowler/providers/azure/services/postgresql/postgresql_flexible_server_log_checkpoints_on/__init__.py create mode 100644 prowler/providers/azure/services/postgresql/postgresql_flexible_server_log_checkpoints_on/postgresql_flexible_server_log_checkpoints_on.metadata.json create mode 100644 prowler/providers/azure/services/postgresql/postgresql_flexible_server_log_checkpoints_on/postgresql_flexible_server_log_checkpoints_on.py create mode 100644 prowler/providers/azure/services/postgresql/postgresql_flexible_server_log_connections_on/__init__.py create mode 100644 prowler/providers/azure/services/postgresql/postgresql_flexible_server_log_connections_on/postgresql_flexible_server_log_connections_on.metadata.json create mode 100644 prowler/providers/azure/services/postgresql/postgresql_flexible_server_log_connections_on/postgresql_flexible_server_log_connections_on.py create mode 100644 prowler/providers/azure/services/postgresql/postgresql_flexible_server_log_disconnections_on/__init__.py create mode 100644 prowler/providers/azure/services/postgresql/postgresql_flexible_server_log_disconnections_on/postgresql_flexible_server_log_disconnections_on.metadata.json create mode 100644 prowler/providers/azure/services/postgresql/postgresql_flexible_server_log_disconnections_on/postgresql_flexible_server_log_disconnections_on.py create mode 100644 prowler/providers/azure/services/postgresql/postgresql_flexible_server_log_retention_days_greater_3/__init__.py create mode 100644 prowler/providers/azure/services/postgresql/postgresql_flexible_server_log_retention_days_greater_3/postgresql_flexible_server_log_retention_days_greater_3.metadata.json create mode 100644 prowler/providers/azure/services/postgresql/postgresql_flexible_server_log_retention_days_greater_3/postgresql_flexible_server_log_retention_days_greater_3.py create mode 100644 prowler/providers/azure/services/postgresql/postgresql_service.py create mode 100644 prowler/providers/azure/services/sqlserver/sqlserver_auditing_retention_90_days/__init__.py create mode 100644 prowler/providers/azure/services/sqlserver/sqlserver_auditing_retention_90_days/sqlserver_auditing_retention_90_days.metadata.json create mode 100644 prowler/providers/azure/services/sqlserver/sqlserver_auditing_retention_90_days/sqlserver_auditing_retention_90_days.py create mode 100644 prowler/providers/azure/services/sqlserver/sqlserver_microsoft_defender_enabled/__init__.py create mode 100644 prowler/providers/azure/services/sqlserver/sqlserver_microsoft_defender_enabled/sqlserver_microsoft_defender_enabled.metadata.json create mode 100644 prowler/providers/azure/services/sqlserver/sqlserver_microsoft_defender_enabled/sqlserver_microsoft_defender_enabled.py create mode 100644 prowler/providers/azure/services/sqlserver/sqlserver_tde_encrypted_with_cmk/__init__.py create mode 100644 prowler/providers/azure/services/sqlserver/sqlserver_tde_encrypted_with_cmk/sqlserver_tde_encrypted_with_cmk.metadata.json create mode 100644 prowler/providers/azure/services/sqlserver/sqlserver_tde_encrypted_with_cmk/sqlserver_tde_encrypted_with_cmk.py create mode 100644 prowler/providers/azure/services/sqlserver/sqlserver_tde_encryption_enabled/__init__.py create mode 100644 prowler/providers/azure/services/sqlserver/sqlserver_tde_encryption_enabled/sqlserver_tde_encryption_enabled.metadata.json create mode 100644 prowler/providers/azure/services/sqlserver/sqlserver_tde_encryption_enabled/sqlserver_tde_encryption_enabled.py create mode 100644 prowler/providers/azure/services/sqlserver/sqlserver_va_emails_notifications_admins_enabled/__init__.py create mode 100644 prowler/providers/azure/services/sqlserver/sqlserver_va_emails_notifications_admins_enabled/sqlserver_va_emails_notifications_admins_enabled.metadata.json create mode 100644 prowler/providers/azure/services/sqlserver/sqlserver_va_emails_notifications_admins_enabled/sqlserver_va_emails_notifications_admins_enabled.py create mode 100644 prowler/providers/azure/services/sqlserver/sqlserver_va_periodic_recurring_scans_enabled/__init__.py create mode 100644 prowler/providers/azure/services/sqlserver/sqlserver_va_periodic_recurring_scans_enabled/sqlserver_va_periodic_recurring_scans_enabled.metadata.json create mode 100644 prowler/providers/azure/services/sqlserver/sqlserver_va_periodic_recurring_scans_enabled/sqlserver_va_periodic_recurring_scans_enabled.py create mode 100644 prowler/providers/azure/services/sqlserver/sqlserver_va_scan_reports_configured/__init__.py create mode 100644 prowler/providers/azure/services/sqlserver/sqlserver_va_scan_reports_configured/sqlserver_va_scan_reports_configured.metadata.json create mode 100644 prowler/providers/azure/services/sqlserver/sqlserver_va_scan_reports_configured/sqlserver_va_scan_reports_configured.py create mode 100644 prowler/providers/azure/services/sqlserver/sqlserver_vulnerability_assessment_enabled/__init__.py create mode 100644 prowler/providers/azure/services/sqlserver/sqlserver_vulnerability_assessment_enabled/sqlserver_vulnerability_assessment_enabled.metadata.json create mode 100644 prowler/providers/azure/services/sqlserver/sqlserver_vulnerability_assessment_enabled/sqlserver_vulnerability_assessment_enabled.py create mode 100644 prowler/providers/azure/services/storage/storage_ensure_private_endpoints_in_storage_accounts/__init__.py create mode 100644 prowler/providers/azure/services/storage/storage_ensure_private_endpoints_in_storage_accounts/storage_ensure_private_endpoints_in_storage_accounts.metadata.json create mode 100644 prowler/providers/azure/services/storage/storage_ensure_private_endpoints_in_storage_accounts/storage_ensure_private_endpoints_in_storage_accounts.py create mode 100644 prowler/providers/azure/services/storage/storage_ensure_soft_delete_is_enabled/__init__.py create mode 100644 prowler/providers/azure/services/storage/storage_ensure_soft_delete_is_enabled/storage_ensure_soft_delete_is_enabled.metadata.json create mode 100644 prowler/providers/azure/services/storage/storage_ensure_soft_delete_is_enabled/storage_ensure_soft_delete_is_enabled.py create mode 100644 prowler/providers/azure/services/storage/storage_key_rotation_90_days/__init__.py create mode 100644 prowler/providers/azure/services/storage/storage_key_rotation_90_days/storage_key_rotation_90_days.metadata.json create mode 100644 prowler/providers/azure/services/storage/storage_key_rotation_90_days/storage_key_rotation_90_days.py create mode 100644 prowler/providers/azure/services/vm/__init__.py create mode 100644 prowler/providers/azure/services/vm/vm_client.py create mode 100644 prowler/providers/azure/services/vm/vm_ensure_attached_disks_encrypted_with_cmk/__init__.py create mode 100644 prowler/providers/azure/services/vm/vm_ensure_attached_disks_encrypted_with_cmk/vm_ensure_attached_disks_encrypted_with_cmk.metadata.json create mode 100644 prowler/providers/azure/services/vm/vm_ensure_attached_disks_encrypted_with_cmk/vm_ensure_attached_disks_encrypted_with_cmk.py create mode 100644 prowler/providers/azure/services/vm/vm_ensure_unattached_disks_encrypted_with_cmk/__init__.py create mode 100644 prowler/providers/azure/services/vm/vm_ensure_unattached_disks_encrypted_with_cmk/vm_ensure_unattached_disks_encrypted_with_cmk.metadata.json create mode 100644 prowler/providers/azure/services/vm/vm_ensure_unattached_disks_encrypted_with_cmk/vm_ensure_unattached_disks_encrypted_with_cmk.py create mode 100644 prowler/providers/azure/services/vm/vm_ensure_using_managed_disks/__init__.py create mode 100644 prowler/providers/azure/services/vm/vm_ensure_using_managed_disks/vm_ensure_using_managed_disks.metadata.json create mode 100644 prowler/providers/azure/services/vm/vm_ensure_using_managed_disks/vm_ensure_using_managed_disks.py create mode 100644 prowler/providers/azure/services/vm/vm_service.py create mode 100644 prowler/providers/gcp/services/artifacts/artifacts_container_analysis_enabled/__init__.py create mode 100644 prowler/providers/gcp/services/artifacts/artifacts_container_analysis_enabled/artifacts_container_analysis_enabled.metadata.json create mode 100644 prowler/providers/gcp/services/artifacts/artifacts_container_analysis_enabled/artifacts_container_analysis_enabled.py create mode 100644 prowler/providers/gcp/services/gcr/gcr_container_scanning_enabled/__init__.py create mode 100644 prowler/providers/gcp/services/gcr/gcr_container_scanning_enabled/gcr_container_scanning_enabled.metadata.json create mode 100644 prowler/providers/gcp/services/gcr/gcr_container_scanning_enabled/gcr_container_scanning_enabled.py create mode 100644 prowler/providers/gcp/services/gke/__init__.py create mode 100644 prowler/providers/gcp/services/gke/gke_client.py create mode 100644 prowler/providers/gcp/services/gke/gke_cluster_no_default_service_account/__init__.py create mode 100644 prowler/providers/gcp/services/gke/gke_cluster_no_default_service_account/gke_cluster_no_default_service_account.metadata.json create mode 100644 prowler/providers/gcp/services/gke/gke_cluster_no_default_service_account/gke_cluster_no_default_service_account.py create mode 100644 prowler/providers/gcp/services/gke/gke_service.py create mode 100644 prowler/providers/gcp/services/iam/iam_cloud_asset_inventory_enabled/__init__.py rename prowler/providers/gcp/services/{serviceusage/serviceusage_cloudasset_inventory_enabled/serviceusage_cloudasset_inventory_enabled.metadata.json => iam/iam_cloud_asset_inventory_enabled/iam_cloud_asset_inventory_enabled.metadata.json} (93%) rename prowler/providers/gcp/services/{serviceusage/serviceusage_cloudasset_inventory_enabled/serviceusage_cloudasset_inventory_enabled.py => iam/iam_cloud_asset_inventory_enabled/iam_cloud_asset_inventory_enabled.py} (95%) create mode 100644 tests/lib/check/check_loader_test.py create mode 100644 tests/providers/aws/services/cognito/cognito_service_test.py create mode 100644 tests/providers/aws/services/eks/eks_cluster_network_policy_enabled/eks_cluster_network_policy_enabled_test.py create mode 100644 tests/providers/aws/services/eks/eks_cluster_private_nodes_enabled/eks_cluster_private_nodes_enabled_test.py create mode 100644 tests/providers/aws/services/inspector2/inspector2_active_findings_exist/inspector2_active_findings_exist_test.py delete mode 100644 tests/providers/aws/services/inspector2/inspector2_findings_exist/inspector2_findings_exist_test.py create mode 100644 tests/providers/aws/services/inspector2/inspector2_is_enabled/inspector2_is_enabled_test.py create mode 100644 tests/providers/azure/azure_fixtures.py create mode 100644 tests/providers/azure/services/app/app_client_certificates_on/app_client_certificates_on_test.py create mode 100644 tests/providers/azure/services/app/app_ensure_auth_is_set_up/app_ensure_auth_is_set_up_test.py create mode 100644 tests/providers/azure/services/app/app_ensure_http_is_redirected_to_https/app_ensure_http_is_redirected_to_https_test.py create mode 100644 tests/providers/azure/services/app/app_ensure_java_version_is_latest/app_ensure_java_version_is_latest_test.py create mode 100644 tests/providers/azure/services/app/app_ensure_php_version_is_latest/app_ensure_php_version_is_latest_test.py create mode 100644 tests/providers/azure/services/app/app_ensure_python_version_is_latest/app_ensure_python_version_is_latest_test.py create mode 100644 tests/providers/azure/services/app/app_ensure_using_http20/app_ensure_using_http20_test.py create mode 100644 tests/providers/azure/services/app/app_ftp_deployment_disabled/app_ftp_deployment_disabled_test.py create mode 100644 tests/providers/azure/services/app/app_minimum_tls_version_12/app_minimum_tls_version_12_test.py create mode 100644 tests/providers/azure/services/app/app_register_with_identity/app_register_with_identity_test.py create mode 100644 tests/providers/azure/services/app/app_service_test.py create mode 100644 tests/providers/azure/services/appinsights/appinsights_ensure_is_configured/appinsights_ensure_is_configured_test.py create mode 100644 tests/providers/azure/services/appinsights/appinsights_service_test.py create mode 100644 tests/providers/azure/services/cosmosdb/cosmosdb_account_firewall_use_selected_networks/cosmosdb_account_firewall_use_selected_networks_test.py create mode 100644 tests/providers/azure/services/cosmosdb/cosmosdb_account_use_aad_and_rbac/cosmosdb_account_use_aad_and_rbac_test.py create mode 100644 tests/providers/azure/services/cosmosdb/cosmosdb_account_use_private_endpoints/cosmosdb_account_use_private_endpoints_test.py create mode 100644 tests/providers/azure/services/cosmosdb/cosmosdb_service_test.py create mode 100644 tests/providers/azure/services/defender/defender_additional_email_configured_with_a_security_contact/defender_additional_email_configured_with_a_security_contact_test.py create mode 100644 tests/providers/azure/services/defender/defender_assessments_vm_endpoint_protection_installed/defender_assessments_vm_endpoint_protection_installed_test.py create mode 100644 tests/providers/azure/services/defender/defender_auto_provisioning_log_analytics_agent_vms_on/defender_auto_provisioning_log_analytics_agent_vms_on_test.py create mode 100644 tests/providers/azure/services/defender/defender_auto_provisioning_vulnerabilty_assessments_machines_on/defender_auto_provisioning_vulnerabilty_assessments_machines_on_test.py create mode 100644 tests/providers/azure/services/defender/defender_ensure_iot_hub_defender_is_on/defender_ensure_iot_hub_defender_is_on_test.py create mode 100644 tests/providers/azure/services/defender/defender_ensure_mcas_is_enabled/defender_ensure_mcas_is_enabled_test.py create mode 100644 tests/providers/azure/services/defender/defender_ensure_notify_alerts_severity_is_high/defender_ensure_notify_alerts_severity_is_high_test.py create mode 100644 tests/providers/azure/services/defender/defender_ensure_notify_emails_to_owners/defender_ensure_notify_emails_to_owners_test.py create mode 100644 tests/providers/azure/services/defender/defender_ensure_system_updates_are_applied/defender_ensure_system_updates_are_applied_test.py create mode 100644 tests/providers/azure/services/defender/defender_ensure_wdatp_is_enabled/defender_ensure_wdatp_is_enabled_test.py create mode 100644 tests/providers/azure/services/defender/defender_service_test.py create mode 100644 tests/providers/azure/services/iam/iam_custom_role_has_permissions_to_administer_resource_locks/iam_custom_role_has_permissions_to_administer_resource_locks_test.py create mode 100644 tests/providers/azure/services/keyvault/keyvault_key_expiration_set_in_non_rbac/keyvault_key_expiration_set_in_non_rbac_test.py create mode 100644 tests/providers/azure/services/keyvault/keyvault_key_rotation_enabled/keyvault_key_rotation_enabled_test.py create mode 100644 tests/providers/azure/services/keyvault/keyvault_non_rbac_secret_expiration_set/keyvault_non_rbac_secret_expiration_set_test.py create mode 100644 tests/providers/azure/services/keyvault/keyvault_private_endpoints/keyvault_private_endpoints_test.py create mode 100644 tests/providers/azure/services/keyvault/keyvault_rbac_enabled/keyvault_rbac_enabled_test.py create mode 100644 tests/providers/azure/services/keyvault/keyvault_rbac_key_expiration_set/keyvault_rbac_key_expiration_set_test.py create mode 100644 tests/providers/azure/services/keyvault/keyvault_rbac_secret_expiration_set/keyvault_rbac_secret_expiration_set_test.py create mode 100644 tests/providers/azure/services/keyvault/keyvault_recoverable/keyvault_recoverable_test.py create mode 100644 tests/providers/azure/services/keyvault/keyvault_service_test.py create mode 100644 tests/providers/azure/services/monitor/monitor_diagnostic_setting_with_appropriate_categories/monitor_diagnostic_setting_with_appropriate_categories_test.py create mode 100644 tests/providers/azure/services/monitor/monitor_service_test.py create mode 100644 tests/providers/azure/services/mysql/mysql_flexible_server_audit_log_connection_activated/mysql_flexible_server_audit_log_connection_activated_test.py create mode 100644 tests/providers/azure/services/mysql/mysql_flexible_server_audit_log_enabled/mysql_flexible_server_audit_log_enabled_test.py create mode 100644 tests/providers/azure/services/mysql/mysql_flexible_server_minimum_tls_version_12/mysql_flexible_server_minimum_tls_version_12_test.py create mode 100644 tests/providers/azure/services/mysql/mysql_flexible_server_ssl_connection_enabled/mysql_flexible_server_ssl_connection_enabled_test.py create mode 100644 tests/providers/azure/services/mysql/mysql_service_test.py create mode 100644 tests/providers/azure/services/network/network_bastion_host_exists/network_bastion_host_exists_test.py create mode 100644 tests/providers/azure/services/network/network_flow_log_more_than_90_days/network_flow_log_more_than_90_days_test.py create mode 100644 tests/providers/azure/services/network/network_http_internet_access_restricted/network_http_internet_access_restricted_test.py create mode 100644 tests/providers/azure/services/network/network_public_ip_shodan/network_public_ip_shodan_test.py create mode 100644 tests/providers/azure/services/network/network_rdp_internet_access_restricted/network_rdp_internet_access_restricted_test.py create mode 100644 tests/providers/azure/services/network/network_service_test.py create mode 100644 tests/providers/azure/services/network/network_ssh_internet_access_restricted/network_ssh_internet_access_restricted_test.py create mode 100644 tests/providers/azure/services/network/network_udp_internet_access_restricted/network_udp_internet_access_restricted_test.py create mode 100644 tests/providers/azure/services/network/network_watcher_enabled/network_watcher_enabled_test.py create mode 100644 tests/providers/azure/services/policy/policy_ensure_asc_enforcement_enabled/policy_ensure_asc_enforcement_enabled_test.py create mode 100644 tests/providers/azure/services/policy/policy_service_test.py create mode 100644 tests/providers/azure/services/postgresql/postgresql_flexible_server_allow_access_services_disabled/postgresql_flexible_server_allow_access_services_disabled_test.py create mode 100644 tests/providers/azure/services/postgresql/postgresql_flexible_server_connection_throttling_on/postgresql_flexible_server_connection_throttling_on_test.py create mode 100644 tests/providers/azure/services/postgresql/postgresql_flexible_server_enforce_ssl_enabled/postgresql_flexible_server_enforce_ssl_enabled_test.py create mode 100644 tests/providers/azure/services/postgresql/postgresql_flexible_server_log_checkpoints_on/postgresql_flexible_server_log_checkpoints_on_test.py create mode 100644 tests/providers/azure/services/postgresql/postgresql_flexible_server_log_connections_on/postgresql_flexible_server_log_connections_on_test.py create mode 100644 tests/providers/azure/services/postgresql/postgresql_flexible_server_log_disconnections_on/postgresql_flexible_server_log_disconnections_on_test.py create mode 100644 tests/providers/azure/services/postgresql/postgresql_flexible_server_log_retention_days_greater_3/postgresql_flexible_server_log_retention_days_greater_3_test.py create mode 100644 tests/providers/azure/services/postgresql/postgresql_service_test.py create mode 100644 tests/providers/azure/services/sqlserver/sqlserver_auditing_retention_90_days/sqlserver_auditing_retention_90_days_test.py create mode 100644 tests/providers/azure/services/sqlserver/sqlserver_microsoft_defender_enabled/sqlserver_microsoft_defender_enabled_test.py create mode 100644 tests/providers/azure/services/sqlserver/sqlserver_service_test.py create mode 100644 tests/providers/azure/services/sqlserver/sqlserver_tde_encrypted_with_cmk/sqlserver_tde_encrypted_with_cmk_test.py create mode 100644 tests/providers/azure/services/sqlserver/sqlserver_tde_encryption_enabled/sqlserver_tde_encryption_enabled_test.py create mode 100644 tests/providers/azure/services/sqlserver/sqlserver_va_emails_notifications_admins_enabled/sqlserver_va_emails_notifications_admins_enabled_test.py create mode 100644 tests/providers/azure/services/sqlserver/sqlserver_va_periodic_recurring_scans_enabled/sqlserver_va_periodic_recurring_scans_enabled_test.py create mode 100644 tests/providers/azure/services/sqlserver/sqlserver_va_scan_reports_configured/sqlserver_va_scan_reports_configured_test.py create mode 100644 tests/providers/azure/services/sqlserver/sqlserver_vulnerability_assessment_enabled/sqlserver_vulnerability_assessment_enabled_test.py create mode 100644 tests/providers/azure/services/storage/storage_ensure_private_endpoints_in_storage_accounts/storage_ensure_private_endpoints_in_storage_accounts_test.py create mode 100644 tests/providers/azure/services/storage/storage_ensure_soft_delete_is_enabled/storage_ensure_soft_delete_is_enabled_test.py create mode 100644 tests/providers/azure/services/storage/storage_key_rotation_90_days/storage_key_rotation_90_days_test.py create mode 100644 tests/providers/azure/services/storage/storage_service_test.py create mode 100644 tests/providers/azure/services/vm/vm_ensure_attached_disks_encrypted_with_cmk/vm_ensure_attached_disks_encrypted_with_cmk_test.py create mode 100644 tests/providers/azure/services/vm/vm_ensure_unattached_disks_encrypted_with_cmk/vm_ensure_unattached_disks_encrypted_with_cmk_test.py create mode 100644 tests/providers/azure/services/vm/vm_ensure_using_managed_disks/vm_ensure_using_managed_disks_test.py create mode 100644 tests/providers/azure/services/vm/vm_service_test.py create mode 100644 tests/providers/gcp/lib/audit_info_utils.py create mode 100644 tests/providers/gcp/services/artifacts/artifacts_container_analysis_enabled/artifacts_container_analysis_enabled_test.py create mode 100644 tests/providers/gcp/services/gcr/gcr_container_scanning_enabled/gcr_container_scanning_enabled_test.py create mode 100644 tests/providers/gcp/services/gke/gke_cluster_no_default_service_account/gke_cluster_no_default_service_account_test.py rename tests/providers/gcp/services/{serviceusage/serviceusage_cloudasset_inventory_enabled/serviceusage_cloudasset_inventory_enabled_test.py => iam/iam_cloud_asset_inventory_enabled/iam_cloud_asset_inventory_enabled_test.py} (59%) diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 568d48e556b..9702a361e70 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -13,3 +13,8 @@ updates: labels: - "dependencies" - "pip" + - package-ecosystem: "github-actions" + directory: "/" + schedule: + interval: "weekly" + target-branch: master diff --git a/.github/labeler.yml b/.github/labeler.yml new file mode 100644 index 00000000000..d4df3619b36 --- /dev/null +++ b/.github/labeler.yml @@ -0,0 +1,27 @@ +documentation: + - changed-files: + - any-glob-to-any-file: "docs/**" + +provider/aws: + - changed-files: + - any-glob-to-any-file: "prowler/providers/aws/**" + - any-glob-to-any-file: "tests/providers/aws/**" + +provider/azure: + - changed-files: + - any-glob-to-any-file: "prowler/providers/azure/**" + - any-glob-to-any-file: "tests/providers/azure/**" + +provider/gcp: + - changed-files: + - any-glob-to-any-file: "prowler/providers/gcp/**" + - any-glob-to-any-file: "tests/providers/gcp/**" + +provider/kubernetes: + - changed-files: + - any-glob-to-any-file: "prowler/providers/kubernetes/**" + - any-glob-to-any-file: "tests/providers/kubernetes/**" + +github_actions: + - changed-files: + - any-glob-to-any-file: ".github/workflows/*" diff --git a/.github/workflows/build-documentation-on-pr.yml b/.github/workflows/build-documentation-on-pr.yml new file mode 100644 index 00000000000..015a3742d65 --- /dev/null +++ b/.github/workflows/build-documentation-on-pr.yml @@ -0,0 +1,24 @@ +name: Pull Request Documentation Link + +on: + pull_request: + branches: + - 'master' + - 'prowler-4.0-dev' + paths: + - 'docs/**' + +env: + PR_NUMBER: ${{ github.event.pull_request.number }} + +jobs: + documentation-link: + name: Documentation Link + runs-on: ubuntu-latest + steps: + - name: Leave PR comment with the SaaS Documentation URI + uses: peter-evans/create-or-update-comment@v4 + with: + issue-number: ${{ env.PR_NUMBER }} + body: | + You can check the documentation for this PR here -> [SaaS Documentation](https://prowler-prowler-docs--${{ env.PR_NUMBER }}.com.readthedocs.build/projects/prowler-open-source/en/${{ env.PR_NUMBER }}/) diff --git a/.github/workflows/build-lint-push-containers.yml b/.github/workflows/build-lint-push-containers.yml index 2e8ec437504..43fd281c13a 100644 --- a/.github/workflows/build-lint-push-containers.yml +++ b/.github/workflows/build-lint-push-containers.yml @@ -32,11 +32,11 @@ jobs: POETRY_VIRTUALENVS_CREATE: "false" steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Setup python (release) if: github.event_name == 'release' - uses: actions/setup-python@v2 + uses: actions/setup-python@v5 with: python-version: ${{ env.PYTHON_VERSION }} @@ -52,13 +52,13 @@ jobs: poetry version ${{ github.event.release.tag_name }} - name: Login to DockerHub - uses: docker/login-action@v2 + uses: docker/login-action@v3 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} - name: Login to Public ECR - uses: docker/login-action@v2 + uses: docker/login-action@v3 with: registry: public.ecr.aws username: ${{ secrets.PUBLIC_ECR_AWS_ACCESS_KEY_ID }} @@ -67,11 +67,11 @@ jobs: AWS_REGION: ${{ env.AWS_REGION }} - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v2 + uses: docker/setup-buildx-action@v3 - name: Build and push container image (latest) if: github.event_name == 'push' - uses: docker/build-push-action@v2 + uses: docker/build-push-action@v5 with: push: true tags: | @@ -83,7 +83,7 @@ jobs: - name: Build and push container image (release) if: github.event_name == 'release' - uses: docker/build-push-action@v2 + uses: docker/build-push-action@v5 with: # Use local context to get changes # https://github.com/docker/build-push-action#path-context diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index b02607fe38e..a788c10cbbb 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -37,11 +37,11 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@v3 + uses: actions/checkout@v4 # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@v2 + uses: github/codeql-action/init@v3 with: languages: ${{ matrix.language }} # If you wish to specify custom queries, you can do so here or in a config file. @@ -52,6 +52,6 @@ jobs: # queries: security-extended,security-and-quality - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@v2 + uses: github/codeql-action/analyze@v3 with: category: "/language:${{matrix.language}}" diff --git a/.github/workflows/find-secrets.yml b/.github/workflows/find-secrets.yml index f5166d3e8b9..6428ee0a0ad 100644 --- a/.github/workflows/find-secrets.yml +++ b/.github/workflows/find-secrets.yml @@ -7,11 +7,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: fetch-depth: 0 - name: TruffleHog OSS - uses: trufflesecurity/trufflehog@v3.4.4 + uses: trufflesecurity/trufflehog@v3.68.2 with: path: ./ base: ${{ github.event.repository.default_branch }} diff --git a/.github/workflows/labeler.yml b/.github/workflows/labeler.yml new file mode 100644 index 00000000000..25d6135bc47 --- /dev/null +++ b/.github/workflows/labeler.yml @@ -0,0 +1,16 @@ +name: "Pull Request Labeler" + +on: + pull_request_target: + branches: + - "master" + - "prowler-4.0-dev" + +jobs: + labeler: + permissions: + contents: read + pull-requests: write + runs-on: ubuntu-latest + steps: + - uses: actions/labeler@v5 diff --git a/.github/workflows/pull-request.yml b/.github/workflows/pull-request.yml index 6353157b66d..a884abc3a26 100644 --- a/.github/workflows/pull-request.yml +++ b/.github/workflows/pull-request.yml @@ -14,13 +14,13 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - python-version: ["3.9", "3.10", "3.11"] + python-version: ["3.9", "3.10", "3.11", "3.12"] steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Test if changes are in not ignored paths id: are-non-ignored-files-changed - uses: tj-actions/changed-files@v39 + uses: tj-actions/changed-files@v42 with: files: ./** files_ignore: | @@ -28,6 +28,7 @@ jobs: README.md docs/** permissions/** + mkdocs.yml - name: Install poetry if: steps.are-non-ignored-files-changed.outputs.any_changed == 'true' run: | @@ -35,7 +36,7 @@ jobs: pipx install poetry - name: Set up Python ${{ matrix.python-version }} if: steps.are-non-ignored-files-changed.outputs.any_changed == 'true' - uses: actions/setup-python@v4 + uses: actions/setup-python@v5 with: python-version: ${{ matrix.python-version }} cache: "poetry" @@ -87,6 +88,6 @@ jobs: poetry run pytest -n auto --cov=./prowler --cov-report=xml tests - name: Upload coverage reports to Codecov if: steps.are-non-ignored-files-changed.outputs.any_changed == 'true' - uses: codecov/codecov-action@v3 + uses: codecov/codecov-action@v4 env: CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} diff --git a/.github/workflows/pypi-release.yml b/.github/workflows/pypi-release.yml index 59b8af68de7..53289f1c2ea 100644 --- a/.github/workflows/pypi-release.yml +++ b/.github/workflows/pypi-release.yml @@ -16,7 +16,7 @@ jobs: name: Release Prowler to PyPI steps: # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 with: ref: ${{ env.GITHUB_BRANCH }} - name: Install dependencies @@ -24,7 +24,7 @@ jobs: pipx install poetry pipx inject poetry poetry-bumpversion - name: setup python - uses: actions/setup-python@v4 + uses: actions/setup-python@v5 with: python-version: 3.9 cache: 'poetry' @@ -44,7 +44,7 @@ jobs: poetry publish # Create pull request with new version - name: Create Pull Request - uses: peter-evans/create-pull-request@v4 + uses: peter-evans/create-pull-request@v6 with: token: ${{ secrets.PROWLER_ACCESS_TOKEN }} commit-message: "chore(release): update Prowler Version to ${{ env.RELEASE_TAG }}." diff --git a/.github/workflows/refresh_aws_services_regions.yml b/.github/workflows/refresh_aws_services_regions.yml index e22bedc3334..fea14d3bce6 100644 --- a/.github/workflows/refresh_aws_services_regions.yml +++ b/.github/workflows/refresh_aws_services_regions.yml @@ -23,12 +23,12 @@ jobs: # Steps represent a sequence of tasks that will be executed as part of the job steps: # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 with: ref: ${{ env.GITHUB_BRANCH }} - name: setup python - uses: actions/setup-python@v2 + uses: actions/setup-python@v5 with: python-version: 3.9 #install the python needed @@ -38,7 +38,7 @@ jobs: pip install boto3 - name: Configure AWS Credentials -- DEV - uses: aws-actions/configure-aws-credentials@v1 + uses: aws-actions/configure-aws-credentials@v4 with: aws-region: ${{ env.AWS_REGION_DEV }} role-to-assume: ${{ secrets.DEV_IAM_ROLE_ARN }} @@ -50,12 +50,12 @@ jobs: # Create pull request - name: Create Pull Request - uses: peter-evans/create-pull-request@v4 + uses: peter-evans/create-pull-request@v6 with: token: ${{ secrets.PROWLER_ACCESS_TOKEN }} commit-message: "feat(regions_update): Update regions for AWS services." branch: "aws-services-regions-updated-${{ github.sha }}" - labels: "status/waiting-for-revision, severity/low" + labels: "status/waiting-for-revision, severity/low, provider/aws" title: "chore(regions_update): Changes in regions for AWS services." body: | ### Description diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 9c01e1d92ef..d58fc12bb1d 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,7 +1,7 @@ repos: ## GENERAL - repo: https://github.com/pre-commit/pre-commit-hooks - rev: v4.4.0 + rev: v4.5.0 hooks: - id: check-merge-conflict - id: check-yaml @@ -15,7 +15,7 @@ repos: ## TOML - repo: https://github.com/macisamuele/language-formatters-pre-commit-hooks - rev: v2.10.0 + rev: v2.12.0 hooks: - id: pretty-format-toml args: [--autofix] @@ -28,7 +28,7 @@ repos: - id: shellcheck ## PYTHON - repo: https://github.com/myint/autoflake - rev: v2.2.0 + rev: v2.2.1 hooks: - id: autoflake args: @@ -39,25 +39,25 @@ repos: ] - repo: https://github.com/timothycrosley/isort - rev: 5.12.0 + rev: 5.13.2 hooks: - id: isort args: ["--profile", "black"] - repo: https://github.com/psf/black - rev: 22.12.0 + rev: 24.1.1 hooks: - id: black - repo: https://github.com/pycqa/flake8 - rev: 6.1.0 + rev: 7.0.0 hooks: - id: flake8 exclude: contrib args: ["--ignore=E266,W503,E203,E501,W605"] - repo: https://github.com/python-poetry/poetry - rev: 1.6.0 # add version here + rev: 1.7.0 hooks: - id: poetry-check - id: poetry-lock @@ -80,18 +80,12 @@ repos: - id: trufflehog name: TruffleHog description: Detect secrets in your data. - # entry: bash -c 'trufflehog git file://. --only-verified --fail' + entry: bash -c 'trufflehog --no-update git file://. --only-verified --fail' # For running trufflehog in docker, use the following entry instead: - entry: bash -c 'docker run -v "$(pwd):/workdir" -i --rm trufflesecurity/trufflehog:latest git file:///workdir --only-verified --fail' + # entry: bash -c 'docker run -v "$(pwd):/workdir" -i --rm trufflesecurity/trufflehog:latest git file:///workdir --only-verified --fail' language: system stages: ["commit", "push"] - - id: pytest-check - name: pytest-check - entry: bash -c 'pytest tests -n auto' - language: system - files: '.*\.py' - - id: bandit name: bandit description: "Bandit is a tool for finding common security issues in Python code" diff --git a/.readthedocs.yaml b/.readthedocs.yaml index 557613e35f5..17d338d2e97 100644 --- a/.readthedocs.yaml +++ b/.readthedocs.yaml @@ -8,16 +8,18 @@ version: 2 build: os: "ubuntu-22.04" tools: - python: "3.9" + python: "3.11" jobs: post_create_environment: # Install poetry # https://python-poetry.org/docs/#installing-manually - - pip install poetry - # Tell poetry to not use a virtual environment - - poetry config virtualenvs.create false + - python -m pip install poetry post_install: - - poetry install -E docs + # Install dependencies with 'docs' dependency group + # https://python-poetry.org/docs/managing-dependencies/#dependency-groups + # VIRTUAL_ENV needs to be set manually for now. + # See https://github.com/readthedocs/readthedocs.org/pull/11152/ + - VIRTUAL_ENV=${READTHEDOCS_VIRTUALENV_PATH} python -m poetry install --only=docs mkdocs: configuration: mkdocs.yml diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index 419b6d76be5..c4bba21640d 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -55,7 +55,7 @@ further defined and clarified by project maintainers. ## Enforcement Instances of abusive, harassing, or otherwise unacceptable behavior may be -reported by contacting the project team at community@prowler.cloud. All +reported by contacting the project team at [support.prowler.com](https://customer.support.prowler.com/servicedesk/customer/portals). All complaints will be reviewed and investigated and will result in a response that is deemed necessary and appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. diff --git a/README.md b/README.md index 82ab6fe4eeb..43c6f53dae5 100644 --- a/README.md +++ b/README.md @@ -1,24 +1,31 @@

- - + +

- See all the things you and your team can do with ProwlerPro at prowler.pro + Prowler SaaS and Prowler Open Source are as dynamic and adaptable as the environment they’re meant to protect. Trusted by the leaders in security.

-

- +Learn more at prowler.com +

+ +

+Prowler community on Slack +
+Join our Prowler community!

+ +

Slack Shield Python Version Python Version PyPI Prowler Downloads - PyPI Prowler-Cloud Downloads Docker Pulls Docker Docker AWS ECR Gallery +

Repo size @@ -30,6 +37,7 @@ Twitter Twitter

+
# Description @@ -37,16 +45,16 @@ It contains hundreds of controls covering CIS, NIST 800, NIST CSF, CISA, RBI, FedRAMP, PCI-DSS, GDPR, HIPAA, FFIEC, SOC2, GXP, AWS Well-Architected Framework Security Pillar, AWS Foundational Technical Review (FTR), ENS (Spanish National Security Scheme) and your custom security frameworks. -| Provider | Checks | Services | [Compliance Frameworks](https://docs.prowler.cloud/en/latest/tutorials/compliance/) | [Categories](https://docs.prowler.cloud/en/latest/tutorials/misc/#categories) | +| Provider | Checks | Services | [Compliance Frameworks](https://docs.prowler.com/projects/prowler-open-source/en/latest/tutorials/compliance/) | [Categories](https://docs.prowler.com/projects/prowler-open-source/en/latest/tutorials/misc/#categories) | |---|---|---|---|---| -| AWS | 301 | 61 -> `prowler aws --list-services` | 25 -> `prowler aws --list-compliance` | 5 -> `prowler aws --list-categories` | +| AWS | 302 | 61 -> `prowler aws --list-services` | 27 -> `prowler aws --list-compliance` | 6 -> `prowler aws --list-categories` | | GCP | 73 | 11 -> `prowler gcp --list-services` | 1 -> `prowler gcp --list-compliance` | 2 -> `prowler gcp --list-categories`| -| Azure | 23 | 4 -> `prowler azure --list-services` | CIS soon | 1 -> `prowler azure --list-categories` | -| Kubernetes | Planned | - | - | - | +| Azure | 37 | 4 -> `prowler azure --list-services` | CIS soon | 1 -> `prowler azure --list-categories` | +| Kubernetes | Work In Progress | - | CIS soon | - | # 📖 Documentation -The full documentation can now be found at [https://docs.prowler.cloud](https://docs.prowler.cloud) +The full documentation can now be found at [https://docs.prowler.com](https://docs.prowler.com/projects/prowler-open-source/en/latest/) ## Looking for Prowler v2 documentation? For Prowler v2 Documentation, please go to https://github.com/prowler-cloud/prowler/tree/2.12.1. @@ -54,13 +62,13 @@ For Prowler v2 Documentation, please go to https://github.com/prowler-cloud/prow # ⚙️ Install ## Pip package -Prowler is available as a project in [PyPI](https://pypi.org/project/prowler-cloud/), thus can be installed using pip with Python >= 3.9: +Prowler is available as a project in [PyPI](https://pypi.org/project/prowler-cloud/), thus can be installed using pip with Python >= 3.9, < 3.13: ```console pip install prowler prowler -v ``` -More details at https://docs.prowler.cloud +More details at [https://docs.prowler.com](https://docs.prowler.com/projects/prowler-open-source/en/latest/) ## Containers @@ -77,7 +85,7 @@ The container images are available here: ## From Github -Python >= 3.9 is required with pip and poetry: +Python >= 3.9, < 3.13 is required with pip and poetry: ``` git clone https://github.com/prowler-cloud/prowler diff --git a/SECURITY.md b/SECURITY.md index 288befc6786..9fd92708107 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -14,7 +14,7 @@ As an **AWS Partner** and we have passed the [AWS Foundation Technical Review (F If you would like to report a vulnerability or have a security concern regarding Prowler Open Source or ProwlerPro service, please submit the information by contacting to help@prowler.pro. -The information you share with Verica as part of this process is kept confidential within Verica and the Prowler team. We will only share this information with a third party if the vulnerability you report is found to affect a third-party product, in which case we will share this information with the third-party product's author or manufacturer. Otherwise, we will only share this information as permitted by you. +The information you share with ProwlerPro as part of this process is kept confidential within ProwlerPro. We will only share this information with a third party if the vulnerability you report is found to affect a third-party product, in which case we will share this information with the third-party product's author or manufacturer. Otherwise, we will only share this information as permitted by you. We will review the submitted report, and assign it a tracking number. We will then respond to you, acknowledging receipt of the report, and outline the next steps in the process. diff --git a/docs/developer-guide/checks.md b/docs/developer-guide/checks.md index 9f72221daf8..6ab6b217735 100644 --- a/docs/developer-guide/checks.md +++ b/docs/developer-guide/checks.md @@ -196,14 +196,17 @@ aws: As you can see in the above code, within the service client, in this case the `ec2_client`, there is an object called `audit_config` which is a Python dictionary containing the values read from the configuration file. In order to use it, you have to check first if the value is present in the configuration file. If the value is not present, you can create it in the `config.yaml` file and then, read it from the check. -> It is mandatory to always use the `dictionary.get(value, default)` syntax to set a default value in the case the configuration value is not present. + +???+ note + It is mandatory to always use the `dictionary.get(value, default)` syntax to set a default value in the case the configuration value is not present. ## Check Metadata Each Prowler check has metadata associated which is stored at the same level of the check's folder in a file called A `check_name.metadata.json` containing the check's metadata. -> We are going to include comments in this example metadata JSON but they cannot be included because the JSON format does not allow comments. +???+ note + We are going to include comments in this example metadata JSON but they cannot be included because the JSON format does not allow comments. ```json { diff --git a/docs/developer-guide/debugging.md b/docs/developer-guide/debugging.md new file mode 100644 index 00000000000..e6b20d60752 --- /dev/null +++ b/docs/developer-guide/debugging.md @@ -0,0 +1,45 @@ +# Debugging + +Debugging in Prowler make things easier! +If you are developing Prowler, it's possible that you will encounter some situations where you have to inspect the code in depth to fix some unexpected issues during the execution. To do that, if you are using VSCode you can run the code using the integrated debugger. Please, refer to this [documentation](https://code.visualstudio.com/docs/editor/debugging) for guidance about the debugger in VSCode. +The following file is an example of the [debugging configuration](https://code.visualstudio.com/docs/editor/debugging#_launch-configurations) file that you can add to [Virtual Studio Code](https://code.visualstudio.com/). + +This file should inside the *.vscode* folder and its name has to be *launch.json*: + +```json +{ + "version": "0.2.0", + "configurations": [ + { + "name": "Python: Current File", + "type": "python", + "request": "launch", + "program": "prowler.py", + "args": [ + "aws", + "-f", + "eu-west-1", + "--service", + "cloudwatch", + "--log-level", + "ERROR", + "-p", + "dev", + ], + "console": "integratedTerminal", + "justMyCode": false + }, + { + "name": "Python: Debug Tests", + "type": "python", + "request": "launch", + "program": "${file}", + "purpose": [ + "debug-test" + ], + "console": "integratedTerminal", + "justMyCode": false + } + ] +} +``` diff --git a/docs/developer-guide/introduction.md b/docs/developer-guide/introduction.md index 6617ca81703..4dac193f439 100644 --- a/docs/developer-guide/introduction.md +++ b/docs/developer-guide/introduction.md @@ -1,6 +1,6 @@ # Developer Guide -You can extend Prowler in many different ways, in most cases you will want to create your own checks and compliance security frameworks, here is where you can learn about how to get started with it. We also include how to create custom outputs, integrations and more. +You can extend Prowler Open Source in many different ways, in most cases you will want to create your own checks and compliance security frameworks, here is where you can learn about how to get started with it. We also include how to create custom outputs, integrations and more. ## Get the code and install all dependencies @@ -16,7 +16,7 @@ pip install poetry ``` Then install all dependencies including the ones for developers: ``` -poetry install +poetry install --with dev poetry shell ``` @@ -31,7 +31,9 @@ You should get an output like the following: pre-commit installed at .git/hooks/pre-commit ``` -Before we merge any of your pull requests we pass checks to the code, we use the following tools and automation to make sure the code is secure and dependencies up-to-dated (these should have been already installed if you ran `pipenv install -d`): +Before we merge any of your pull requests we pass checks to the code, we use the following tools and automation to make sure the code is secure and dependencies up-to-dated: +???+ note + These should have been already installed if you ran `poetry install --with dev` - [`bandit`](https://pypi.org/project/bandit/) for code security review. - [`safety`](https://pypi.org/project/safety/) and [`dependabot`](https://github.com/features/security) for dependencies. diff --git a/docs/developer-guide/unit-testing.md b/docs/developer-guide/unit-testing.md index e5f73149067..323d47e6f77 100644 --- a/docs/developer-guide/unit-testing.md +++ b/docs/developer-guide/unit-testing.md @@ -40,13 +40,15 @@ Other commands to run tests: - Run tests for a provider service: `pytest -n auto -vvv -s -x tests/providers//services/` - Run tests for a provider check: `pytest -n auto -vvv -s -x tests/providers//services//` -> Refer to the [pytest documentation](https://docs.pytest.org/en/7.1.x/getting-started.html) documentation for more information. +???+ note + Refer to the [pytest documentation](https://docs.pytest.org/en/7.1.x/getting-started.html) documentation for more information. ## AWS For the AWS provider we have ways to test a Prowler check based on the following criteria: -> Note: We use and contribute to the [Moto](https://github.com/getmoto/moto) library which allows us to easily mock out tests based on AWS infrastructure. **It's awesome!** +???+ note + We use and contribute to the [Moto](https://github.com/getmoto/moto) library which allows us to easily mock out tests based on AWS infrastructure. **It's awesome!** - AWS API calls covered by [Moto](https://github.com/getmoto/moto): - Service tests with `@mock_` @@ -195,7 +197,8 @@ class Test_iam_password_policy_uppercase: If the IAM service for the check's we want to test is not covered by Moto, we have to inject the objects in the service client using [MagicMock](https://docs.python.org/3/library/unittest.mock.html#unittest.mock.MagicMock). As we have pointed above, we cannot instantiate the service since it will make real calls to the AWS APIs. -> The following example uses the IAM GetAccountPasswordPolicy which is covered by Moto but this is only for demonstration purposes. +???+ note + The following example uses the IAM GetAccountPasswordPolicy which is covered by Moto but this is only for demonstration purposes. The following code shows how to use MagicMock to create the service objects. @@ -325,7 +328,8 @@ class Test_iam_password_policy_uppercase: Note that this does not use Moto, to keep it simple, but if you use any `moto`-decorators in addition to the patch, the call to `orig(self, operation_name, kwarg)` will be intercepted by Moto. -> The above code comes from here https://docs.getmoto.org/en/latest/docs/services/patching_other_services.html +???+ note + The above code comes from here https://docs.getmoto.org/en/latest/docs/services/patching_other_services.html #### Mocking more than one service @@ -385,7 +389,7 @@ with mock.patch( "prowler.providers..lib.audit_info.audit_info.audit_info", new=audit_info, ), mock.patch( - "prowler.providers.aws.services...._client", + "prowler.providers..services...._client", new=(audit_info), ): ``` @@ -407,10 +411,10 @@ with mock.patch( "prowler.providers..lib.audit_info.audit_info.audit_info", new=audit_info, ), mock.patch( - "prowler.providers.aws.services..", + "prowler.providers..services..", new=(audit_info), ) as service_client, mock.patch( - "prowler.providers.aws.services.._client._client", + "prowler.providers..services.._client._client", new=service_client, ): ``` @@ -523,7 +527,7 @@ from unittest import mock from uuid import uuid4 # Azure Constants -AZURE_SUSCRIPTION = str(uuid4()) +from tests.providers.azure.azure_fixtures import AZURE_SUBSCRIPTION @@ -542,7 +546,7 @@ class Test_defender_ensure_defender_for_arm_is_on: # Create the custom Defender object to be tested defender_client.pricings = { - AZURE_SUSCRIPTION: { + AZURE_SUBSCRIPTION: { "Arm": Defender_Pricing( resource_id=resource_id, pricing_tier="Not Standard", @@ -580,9 +584,9 @@ class Test_defender_ensure_defender_for_arm_is_on: assert result[0].status == "FAIL" assert ( result[0].status_extended - == f"Defender plan Defender for ARM from subscription {AZURE_SUSCRIPTION} is set to OFF (pricing tier not standard)" + == f"Defender plan Defender for ARM from subscription {AZURE_SUBSCRIPTION} is set to OFF (pricing tier not standard)" ) - assert result[0].subscription == AZURE_SUSCRIPTION + assert result[0].subscription == AZURE_SUBSCRIPTION assert result[0].resource_name == "Defender plan ARM" assert result[0].resource_id == resource_id ``` diff --git a/docs/getting-started/requirements.md b/docs/getting-started/requirements.md index d758cb7211a..9c07e8eec52 100644 --- a/docs/getting-started/requirements.md +++ b/docs/getting-started/requirements.md @@ -5,7 +5,7 @@ Prowler has been written in Python using the [AWS SDK (Boto3)](https://boto3.ama Since Prowler uses AWS Credentials under the hood, you can follow any authentication method as described [here](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html#cli-configure-quickstart-precedence). -### AWS Authentication +### Authentication Make sure you have properly configured your AWS-CLI with a valid Access Key and Region or declare AWS variables properly (or instance profile/role): @@ -26,9 +26,8 @@ Those credentials must be associated to a user or role with proper permissions t - `arn:aws:iam::aws:policy/SecurityAudit` - `arn:aws:iam::aws:policy/job-function/ViewOnlyAccess` - > Moreover, some read-only additional permissions are needed for several checks, make sure you attach also the custom policy [prowler-additions-policy.json](https://github.com/prowler-cloud/prowler/blob/master/permissions/prowler-additions-policy.json) to the role you are using. - - > If you want Prowler to send findings to [AWS Security Hub](https://aws.amazon.com/security-hub), make sure you also attach the custom policy [prowler-security-hub.json](https://github.com/prowler-cloud/prowler/blob/master/permissions/prowler-security-hub.json). +???+ note + Moreover, some read-only additional permissions are needed for several checks, make sure you attach also the custom policy [prowler-additions-policy.json](https://github.com/prowler-cloud/prowler/blob/master/permissions/prowler-additions-policy.json) to the role you are using. If you want Prowler to send findings to [AWS Security Hub](https://aws.amazon.com/security-hub), make sure you also attach the custom policy [prowler-security-hub.json](https://github.com/prowler-cloud/prowler/blob/master/permissions/prowler-security-hub.json). ### Multi-Factor Authentication @@ -71,25 +70,51 @@ To use each one you need to pass the proper flag to the execution. Prowler fro A #### Azure Active Directory scope -Azure Active Directory (AAD) permissions required by the tool are the following: +Microsoft Entra ID (AAD earlier) permissions required by the tool are the following: - `Directory.Read.All` - `Policy.Read.All` The best way to assign it is through the azure web console: -![AAD Permissions](../img/AAD-permissions.png) +1. Access to Microsoft Entra ID +2. In the left menu bar, go to "App registrations" +3. Once there, in the menu bar click on "+ New registration" to register a new application +4. Fill the "Name, select the "Supported account types" and click on "Register. You will be redirected to the applications page. + ![Register an Application page](../img/register-application.png) +4. Select the new application +5. In the left menu bar, select "API permissions" +6. Then click on "+ Add a permission" and select "Microsoft Graph" +7. Once in the "Microsoft Graph" view, select "Application permissions" +8. Finally, search for "Directory" and "Policy" and select the following permissions: + - `Directory.Read.All` + - `Policy.Read.All` + ![EntraID Permissions](../img/AAD-permissions.png) + #### Subscriptions scope -Regarding the subscription scope, Prowler by default scans all the subscriptions that is able to list, so it is required to add the following RBAC builtin roles per subscription to the entity that is going to be assumed by the tool: +Regarding the subscription scope, Prowler by default scans all the subscriptions that is able to list, so it is required to add the following RBAC builtin roles per subscription to the entity that is going to be assumed by the tool: - `Security Reader` - `Reader` +To assign this roles, follow the instructions: + +1. Access your subscription, then select your subscription. +2. Select "Access control (IAM)". +3. In the overview, select "Roles" + ![IAM Page](../img/page-IAM.png) +4. Click on "+ Add" and select "Add role assignment" +5. In the search bar, type `Security Reader`, select it and click on "Next" +6. In the Members tab, click on "+ Select members" and add the members you want to assign this role. +7. Click on "Review + assign" to apply the new role. + +*Repeat these steps for `Reader` role* + ## Google Cloud -### GCP Authentication +### Authentication Prowler will follow the same credentials search as [Google authentication libraries](https://cloud.google.com/docs/authentication/application-default-credentials#search_order): @@ -99,4 +124,5 @@ Prowler will follow the same credentials search as [Google authentication librar Those credentials must be associated to a user or service account with proper permissions to do all checks. To make sure, add the `Viewer` role to the member associated with the credentials. -> By default, `prowler` will scan all accessible GCP Projects, use flag `--project-ids` to specify the projects to be scanned. +???+ note + By default, `prowler` will scan all accessible GCP Projects, use flag `--project-ids` to specify the projects to be scanned. diff --git a/docs/img/page-IAM.png b/docs/img/page-IAM.png new file mode 100644 index 0000000000000000000000000000000000000000..b584be270ff401f0719a1316dd89b8db44c1ed8d GIT binary patch literal 356822 zcmbTdcQjmI*Ep^xL`fouE<|q;Wun&*2_bqHz4u-RK?)&==myctj4o!BB$5zqFgim- zH)eE$!F(sr^SovKet&#c-n-Vl_uPBWK4qW1_u1{f)_>k=jkJ_qRz^zo&=^eF|=fp|NIoRzD^pVDIv5JF20ms5Xflw$Dc% zh&1gA*&pfzUdkSTB-e*UNn>UyQy#rfswREMFLJ$?>~u6E-EgCnBjz)R?>P}aEx`6$ z@*67Bk;GwOTL_>?yt(GspbmJ9H%0u~J7_23dUn0yV81==IwuJcWaZ5_a-!>H9W&!3 zX}5YPn!nvseZ{2hSI%bo*bmCKlX3d(dp(yosfu<&&kYxnqHyN@Lp5){aeeg5>1TcP zSBdpMs&5x$0dlVRv3#2x(IRUw0;OHPc)GSIg?K3~n?GnL0!kWue@=c{Vl{k-Z(_sG z?fdhpONiJR{=9jm_t82vDp=UXzw%a%$~?bL>Z^D&`rmXUg@c^-@6&lHQ?hU$Ddr;? zYnex4r_*}(=n|%heyiAdYh=gi!LO4w-boZDE8r7&-m6-BZI3%TTBY`@OH!zRGB=|I z=#H}l!?|pV8KWr+D)ugaVbut*;Jb_Pp~OT_g4gqysBUs|nIuf#QRbI1T9O0{ zBr!;=@O=38=m7BYL83VIeg?`Rf%*66+X+B7o6C{N22pd8;CK>Ffxb7_K1^NlSoU{3 z?P-6Wb*kok{*G2zSNH|^l%7?~d&#&VO?9}*lzC23g9-By1culMU zw7)0u&h-UqdEpa32SsXEz3dY8e3UE4;svE1WkI}FJStx7D_T3weoxOl@r76=XJzHX zv(%Q)qQ&LcFfSuigDR6zzs^2$ge3Z9f1*p?CNclO?c-*=q3nkDqENP?N#LAGOHS8% z7xi;eIn}7eIEdLKZSt)5tS>;96AbY9w7z~)%UKP7u|5J)YNbPzCq|UW}^B< znuSZC%|cyvEK(UDtCBW_S*jmN3)u_I|CLzU(+ zk8Yp#io)3Ic}))P&OVP7`ZvWwm5lDMEJ{8;qv+RAAAJx=lKc9pYSIY#hCv{^MFK_@ zHJY*U@KA0xp-bh;y%<3Uxok@3REc|xjIYa{GiTqK&YT&7zysSA)suNb=rk^xf6reSf{5 zQvT{o%8I4Vaotd@yElVgnP>n)#rf!)UQ51u@{09!&^P*TPk%f7CVH(g#xs-F@hI&s zZB>ksnuXr1y89jLJ3$#r0)oQK!m@(oLS+J!nQt=tGlPZMO`#=+I-8Q_1)i$MTw3X2 zE1N4$E9e#HeO`aSspP{K_7C?;zCCLcJP<$$w7f^Wk9ZI0@9!_~$Mlc(ldQJ)quyf$ zL59(l=g%G*em6-dORwgBW?tQBxEkN@l?gBsnn>SzqFceV^=~ z6hh3_OcYN*>Z;JS1x1RwFg09ua29R3Lsie@&k6JL0G0K`;ffoHJlQ-aJdCN8?0!z) zB9Lj&E@&ju04aw=K|zNb;l$yx;lhV3hZxlIS?k&8nc)#&6EwNQS|vRea5uzpvyYT# z=XMcAD}@AwBy}ruGb{CN7G?_OH`G(Ch4;55$0YWp`(-S=0_Q8IvYofRMDE#m&D)>n zgLPfT0ya?_UWd{2q#4iYU;i}8pv{1no0RXBe=iRz#|{ZNQ#VmJO*q#%U#$IDTUwJG z@)+DPdnbCE(VWpkbl9S!t+`RB*~)e1`HVxE$M;sD#_9&Bi*CztL!rI3Q`AtRYft^p zh8fp@8OD~NhM~r~`cB7}v+c8#+cL93Dcs5aoV;wt(p%-7Zxj(-BV9i(i(jOuXR9}; zzvvklUHfRL3Ar5=db2@cr-bynrcg2)DwKx}dhlEFgAEf9Ee+!hu@39WUTnDj zncUzHtb(Os%HKpCO&(cRK6droNF33!Yqk4bzve5Ya5vKUr1NUh zRXYv!yRRIzz;8M@ofxEfw;oAJ$O%EY&)f#HvvVX|9NZc*>_d9Hk`9tA8AAXIayB;? zbBjK_%hfN~RT@?HbFw!b+bA{HX399qApiMRu=IWWdv-z6WzruI=EZ`obc^(Ghq#G& zH~L|{aZtAW-t^rT?R@Pkh^ua|-C&3=Uv63B{Mf+YaHnwPtnbzXQC|*L>(-9;J5Pj9 z;rBc4n>ZgjhC6}#w}&aNjAdN4Y0509|*Ml=TlG%CLmRS|=vp!7S9ly19 zb&ii!w@{|t(2-y0Mv(4acBAv-?gvI4Je)s4?-tF9$dy;-cqh|s@6uiCye3SgtfQM9 z?wk8VYN`2nvlYRl2Q;~5b~r~JNfDxn(#gmPcmifE&x5~4vSriYrn>Uzj^pX_qF@$Pb+I`@Ps_3r6jT>ImT4$j_AEM z1Dnl+`@N0(jp9!}JrO&XTbl~%rWG49n{5~jnkirXw)%AyU~*DB-D2S2G}_-=^VM_$ zQVtQbz6c&Fm0lkx7yv-ZYBOum7EG;Rzs}RMRaCcU->h%vS4atXtjOPQ75BE|t*OkZ zcQw-UQ@iIug=m~;TPuZE9i*{VXi;M|2Q@(JqnJkKzI9b9jc&Ie|(u$XM8C{ zhoH@x5;i#)|VI!?a_jR%!KN8dQi_I_ZmV6*j&tS_r{`W3&S zvG{W^Bh`|>WkE4BaLd9n(6V=P1hGC$Rwx_vA*^*Zf2#fCy5cav`ni?sr;YH2E@auo z?v7YDC&m|D*}W26wbzJST^sf*=!KkE$%akfw{kqTJ(wU`Ry!RxfXkCZ<9XI?p>5&b z>kH9A6}!Xhuz;N#n9K#!ZrjVxzf>nUWq{*B?ZNC38~FN*XWJiPsqLw@3O|ASWf5Nt zw-Ea-Kj767`Qa(Y6vsBvN|#~SYokfoK+l&1bOX#lH4ssn^#(Ai;eb#ppdTjW+!Ua?jeJ9EsJF(_*&^F?Or8uCt@{mnJ z>sT=6OQN$Q(QY_D(YPa#t1nQKS$q-ylR9n3-0A8$zsMp_{~$w*#mNN+@=CY2H%YyZ z{Cu=(RErT&NhQ&@cGAG@=_Q$F(+sq5nPxmLM)a92;$ZAcx5R1T!OISy5@}VnwlLui3NyA|Mi}Pi0Gvo z5!rw0JSE)!9PbF{ADDmNNz)UFt`MGX63);flK-kr#yGv+)+Rex;&`eiH&cVk^%+Arr-bpOf z%lA(^L<*sDgrb*IpdDAJm#24tT&N=VziP-4%70#qb94QxN}z`#x0$X!m%5L?6PJwG zJ+XV-N>p52Tnhe<&TEKZ3h3J`Xy|v3G zb=Rw0F@$ma%_WEF5%l+FJC0XSdksAO;k2cJg6z5q5%FJLw4uM5=|^snhH_N=Yxpk4N3%W_U5vke-T2F4$C6#U%gfKdBd%Yh5@$NF^|#ZG zJs19EJTlImtF5hlY8uO<^_N&9yD6Z;v`+cW(fDsC9Yb|}WJT^Tr%OzBQ{>(I{QM5v zDf1$gSTacN#GSvTmQ%wRs@&6qj)3vM9P+ya5;Cc#>siJ;f7hkT<*i4vZ9br>?_mZ8 z2A8*fRsJ7VIg~*PyR#@xCPgpu*Q?C6NHy|3tV{8T?ZMwM)>X$$BI|sYOcB(>zoU!T zNa0`PQkx43i-ka1w!dRUvPPAd7-zaofzhu|@7D=>m>bjLBIo;x9DI9;<>rH;b zi0RwpCgcB7`dsBwA=d@}WpCG2xV{jmiJrRuuUVED`e2>q|H3!TK8sx!(Bab3(*Gmh ze7@#-b9fNM5BjM2m*h};gR3Y<8eGfpmuT8=P%-fL-@hawr&@6!p=JL|@avCiRmP$b zH(`$_6aRKqSA2*`a!+yR0f&DpCddh7c#NI{y?_6nyv8~6>Plp6(A;sTym`6V9YL#i zIIeY&#PPifO3#HHk%)AxcEeZlGRHI$SugA~CxMDJW24IXaEE1C z|6!@>s=YynuYHd#3wQfvJ2{6rjz_rf9r(y!6qL9E4)=@ooXr*KgxB!8uv>`DrLI4a zS?Jfi(ieW1TUIO!J;4vR1h5F>Ui|Z-|GK)8D>f`Hxzv=vM^uh}8LJgq%(MQ$fM(dL zOBYH9+Ig#76-3UQo759hMJtx1DPjpV((F2Dou5So3qC8+VD#b*ZGjzQvhLVk@HhZ1 z_+cTuSB8y-jFwmeB7VnlD2vYs0hBnYTw5iHhvp;SQnSF+H1#g00)(B^_%bj)%&ys) zJn%4oaIHmW&zuIUp)~qb80E6M=Dz}^TT?9M+PT~ZbsQeK&vdwj6zMhmPFO)&<~>GJ zJtV1caddpF()5bbwY9HL$p72@CR6V$kHW%rbP{7`%6b6bsC*$kW?6&NP;)Y*eupOn zG)H%?-s(kTY|*thZ!w1cB!qEHq`SJoX_7w){BSqV_tTuey~+WI2DVxZH|^7*4?Ns~ zU|{OJ|Jc=E0f04^WQ7RGVYViobW8RX*;YG5yYhAU`mG3;nf2 zs@wulp)kIdI-$FZbwp?g9N3b(s4E`-HAE}dJx<&v6aUq|N-tzvVy?|6ON*0ZC4oMC zF~GJpK?;DG7IsmV(F)F;GOH`vj61J*nfgll3AB8*EM~286Xm#j#pptQxp=YDJLejM5SJlEYk#^>__DLlJG{=XooWZeD;JH+N-5Y5 zj=@vfwWt-2Hk_hbZx+Bfwi{CbtN8})&FWjS)IFLJlmvv<)Orfp(0!^*p^Rh73|h1B zu~Ce`|KgeS+m!8`IscLx+|5yATxFp1139WNAyOl=^I-~TC9L?gnw#MX<5OuxdCirT z7-x$``o^A@UjM8e%j$kc{Z^=WDar6Q#`)Mv?h4QCj|}~-x!#&BZdaRvni|Iz&fg1J zs4!l@4A*j>V|)VCzbKRBjzUQ53O|h*QJ|s?j0FvApC2+y-g8Ragtoq?aM^eYhiw5e^H_kc2 zc0Tc#S=z6q4Z1W1_~1Y*=ww<@2a%O7VuoYmJrnF5{&5FTp}o;3ZJkd)GT0@|C;vj? zK!@u$6+*hT^=rbleytGc3>H44HJ_h+`V!v9nzHNl`MyG30cAk{>$m--=CKc4XIz)} zACnKc5{PWi>+F0jA>V0wtR1CyRYNt{BMwql4$ z;@i)Dbc5+gSbC>&ZVo9-<&#HctDbSLu!Gwi@#LHj`|-J$|8cA(@sl5-Y9%q(sz*RbOopX{P)U7 zq5fY<2Byx`^Iyo4?-nsDbAL%XsoTz<38EV^Z?Oi4yBD_2_^&4Q1ES)DC1)=l9|{u> zojjy;{o&)ZJ_yG3dBeN9c9AS$Ve`rhmKUD6hbTGmQu9xbRCDBh`O33Gu8?`EG=;ua z+mGt*@h=^iSxZ$l$y25pJ^mK-cBNFa4ABB2lX3{yQ@qnkXZTP0I2WF31s79(9C-S3 z@MyngbJ9O{^Krz>Dk9@HcRx4diugb`>t{mmMQ()#x$;6~ouko-u$P+#;mawV`)QQE zI^*8)A?S>h@`xp2T>$*ywK5|Yi{{|0B-dbWGcUFHd)x9wApJ>P=tx=v?y^qUf|B^koXvw{p=YR-)ocCt`Bw_E0 zR7?K^%5XA#pfJiz*3EO+Qa@sSy`|9^VN+$;@XE?{xXMeFSl4=8tGh14XDDpGQPG@b zN<^$88#5{2l5E|6aIgsI%g$kS%-noxQBx;fW2`nSBO+QMCCXnmBz<#S$_)EPN?SJVTl8M$Hh#AX z5ZAR?_F8*i?(|2%F6j>2v|IncGjDNs&Fy8Dbx@9+J3&+MBUTUuqqoG=yGKtDyus@x z3@cX;wpxAGebSko@r-$=6*&&$CY=_3vh5Em)joD!21Skp2X=ICw)W| zg3SX`rKN|_x!GWJ6vM!FqiSyjHe(^cP$x)FF|m9tdMu*B`}>BqAxf#sQ>aoD?^6*1 z;;>Iy&8Fa8ZFXKI5pJ7ByBtc(V~QycWVCmt7{g#@U)XRbFa*;` z8^RJk_x-&mJ!g29FQ>V>MQ8YckQqVVB!+h%x3WGU^0MB3x^fQpu=d_%!uK_jPAxt$ z1?&d*5-LSeLoeeB8PItjbd6U{Aqc%8m*m#8#oB$F7LQdiexu{WBhCn03NLX?jOd zIU8rujopYslmt`C?!0<4Hm0Dp>=iCL4gd9Q5qw;I!YE{<0&RtC)s+;Tigc`wZ&iVN zIhnlDb_QJr@)_owE@C|@%T5R19LZwvk%Gp}Mbzxw2F^L_=}LG`1xSjNl(B?^G&Wxe z`7w=ck?Sl7171giCi}bdu>BebwdP)hlCvp*#l0;PDld4n4C-XC@QL+HnW&T$8Tebl zYk+|gWBF3GoUi_Ir;*$Kj^qb99lB>7UDJ7xWxvdo;^CkUJG}Dd1!ki=C6Kf0B;ZBl zX~c%PO;2Q3vyX`;_yOPQOxc_c97_gEWe!`Ia|-)s>)Ai=zYLu?Qb*a%=Zz&v0W?tL z>6-nFof?B`U6D4^pW$@%LR%;>#^CjjX*4!GzpR4r(|2_Ypih45TA zrQbRP&`2so>%OSW%%=dh7%Tw3T$$^vhDH7~NLbA*d^<+X`)Qyw1jsEk*i>xP>Gkz(z?XHK6%iYNI5WPYoh41f(`!<|cY-|q)_3rM;3!XOAv z5B6vj#V;`l;wK@TM=U49@h{JN?>BpN?(SpX+VI)x;@}a=CqSB&x15vxp7ev1?k*gb z+7tz#o5vgb+Y09HaqmZSZI-(gSY}P}!B1skpR~CFj_?5Y*XOQrwWAiI^t9of5$b}b z3iofLmAmW{uEnSRw9cZKz;x871S;O=eN}@9nzK$E%3!!cVuHCZ=gEGtOuwg8vr}x% zrx9=-CHWP0X4XdGUrjmiea_Rk*PX9c?nmG$>$n)3lHP~xdqpzX*>No9NcQlJdWTE# zsoALZ4c(pYDR0;Ot+33|fP=w!*MKNYqBeH(?=RL&XGI411l&H{+g9$R!d5- z;_JwvEnFYcGzuINcCP31o<`Bb7oYa*NvB_n`>iZJ?wP&YkJRREq zX3`*sfvKGjHH9E?OPL+YS<%fvE2quH_TXPq_`baWnf^|nc%>H?h;5t?hl0qtg0078 z<*(T+e0nCI@9nyWu;Y0+Q`CTd(%*qPzo9^CrDE0`**LMk{Z1$+}j9a#y zpP4UU3;Kk~#Tv7oWfi%#lVR z)|+qNFpdoNg=k^r&PqeBweP-eUkKrcdEu&orF)k{x?ka+4kPvYHVziN^GyHIfy4!% z`r}y3i`Pu&tMm7L5~y!SXjC>^`IX0ojD7Xj^^6AkpC_9n%h%y+clU0IS?QlyTbK^ZNf{MOOiJ9nUsOeW z%~DhsRxfH<{?2nIm+i*8dR2Cq9!s*vA|C4-qe@!NAapCu8ixI8VpyyPPg5?c>Wx?{ zQg&>s8h5w65is;#dZM8LGL|C1^|YqgLuw4RBqW!)yL?aNoQFJgdcg9d|V<}PvH zXAhym&q|79F^Y{LJ4!zJm&+86;P9~G!3&Qhz>p2(?1z#VRqmJ*f}&-=95&YwE9nz= zswLc7V4q@X?TJ_xvpcq1A9kE^6B?NH+qC}foZLn* zTCubTe(WjIo9+Gy6SOdF)PHbA3fA55$T{0Rt98>aOT@TOGNd2~8C(!-6V=jNv2F)y z7YqV6=ekrGRDnn@Bg{x`Kk|WTAz+;uZiB%{4lfDg0yL+rS?{h6B}X5D6ET>&ol8+e zTC$%Ilo^lJ=6-gBOX%d5d;_rN70N8Dz`fdPQO>^DTDRI1dv5Dp?XnmhUdiI+yrYVX z(!dH&9(6t+qHX_O6}Gg)AI`pU4jWugw^42_@VdPI>q`KF*3F%F&_+BVWlE7Cr3xLp zKpRbF!ar@!zUA+>260?akF8^a4LgnTufDeC@)6;x#EDSRT^oUxLq<~{=Ti8KHiN&^ z&5hyCzk9H1zvv&W5kp1tD;~l^-fGEf(uhP)3g4O@+HN0LW`mx7Ctq?Y=di6Bd#ICX z_4;I?5?3ZFP?R&elX5IKcC>}%Qsh5N7PJJ{hoo#rff2}c!|*PC$CWV1+{b@**teT= znFjlTV}F*cW&LQ#HTm2~oW!F$z4N_h>!r)0Gf7~DLiSB6g+Zgdh|R6D8^{D0G0g?} zsc95l(#D(li-)b?PwO+%Ww_VH-ij@c$H~>#6V-*~tf%~@9tQPfUNobA4(RBAHF4Ss zIlXhkdinCXnxD)`Q8!meji>v)`kE?N7g8$kqNi<{45Gp>BxV&))OqlMU5kR6I#Du3+cQ6YZ-Q??SK2b!;Ysj+uqvJ8%Nw4h%;AX2LYQmyo- z@}@3&ktxdat4|R`Yrj0Uv;sfYTDLAZ3f0W~T5WilndLI1XqU%oh46!>*dbZ_o&~7~ z|8X@W6=pNhh8G40J`8Jq;>sDaJ;Tqxpp3B0ucN>!8`@15 zS{5j6H;%Lq^|kx;9EH~f@0cM_vkTs~>LYa7)eTu~b+@{d2&yklXy-y_8f6N@`<E8bCWn9t4fz%kpOArwmPwZPms{X*>rvQLJ8R5X0uoM!yv%elO5O0b zflYOtpOWuG!uVVfG23m}mfb|O^6|-GC-|dFMXo~QY9Ql3=F-a zWQ}1)CTkx6a0SkG3mCB8K`2oZDQNUDtKwWK94>fD1e?&yV4mPnI7dA%I@lq{s zrI8`ZCr>v5%wFWtb0$-_M@W7@S^sp!ISd=xto*=FeT9W83RnKa0BQBHbu;Q>yF&OY zsO54;1LN{a>|^Zi)Q}vDsi+vstqJhVz%5}{Q>LRMFx`j#HiSATNG_vr*_r0afP*zk zb6anO3KI!@t#cOC32-|(D%NiSb`2H|AO-^>mlH=gpKTo7>o;<31A6}I?hTr|j48+E zKiVPet7juYZEnw=CfYtzJ{Jj5pFMkd9l@c*t)RQEhl)_sEW|=>SpL!Ke>X?&@1!Ex zxj|^xGND%cg~9&Q)E}`m9roWya@t&L0CmPqgcO|3H}f)BrWsY#Z9v2eh26=;;9xhO z>S7u{Xu%}qg|e*}C=XNKati#p5dHjd%a=P-GVck#h|q%>;QYI)%bN=(63vLF-_isw zwFukB+gP*F*3Mo)3~S;Q+`d``(HSW;FCR&d5)ZKsR|!rPUZ_LhZwutLi4PH&3&yllBYsVgqByWmc=hPpzVB&`2CvD!jLkOy)BDYkYxkv6Fx zplNlzy{b-6eQiHb*s@@(yhI_|?(tR0x?c&HS1@)!QTwn_sp3F9OlqZi4!?m>FMFCW z&M?r7LSEwlu^0Mu>Mhctn3=C5{6NDN;-s2lqhDSTjROJzk3m!F$Xyv9 zBRTH#t)cw4c*j-6(l5JDK-Sl3vC}$1KZ z4|+J)^;EuVac8N&J0x$!e2T}A7alXSrV;a&ou5^K>_GMhCsu!XaCdTm1B& z8;3A33Lx+v(u8yHLnb!u@{0QT z6RzAqlIxA#wP-l%z5L=0(LFUy%zIZZ12lHP9y|oyalm*88V@yz@}N((YgUcvvs-|n z#i)@W_t0~RgLcz-qa$i}bM}!yh$4P(?qbG4=oaYk`QufLMs!FZC}R{F6VjcRa^CH1 zqcVxHB)C?`a2;)^)qf6B^`S|$e_lCzB35+4zxHb_*spK_c}VcTz#gL?%hlQLL!^-J zK)78`pMXnuM~rx*RyLKEx3n4zsC9HXMB9%gwJbX;!xKV0tKo*`PxDwi5ZA}{utU2) zV6iGb@dxmBy`jv^n&41}Xqi}k!x4cec{JZ^EwP|OOaNrOD(~j6C*Kl7@|L^s8BR7q z!a(1zwlfB8S$#3i&H72+TCjC*kKvaKLKf|QTc3M^n*SKb3kBD=_Dx~9i^G()Drm=% zv%)TXi0@ExC?42s9r;+g9W{9JRouJMJ#dH7U@q_@#>YEm)HV!G)5_)^*X5J_*+(C@ z3__2gbHWx%p)F7Pv;Y-k8Dms78)}%~`It2U!#dCUDvNU6n%2%)QQnR1w}F@KgMn!1 zb3cJwXcOU}R5)j003+R%U-P~LjYqJRxZcY{XT-=1Ynx1FdHMaBFRtcMbej@xeQw{F zYPg})lY70{)ulZJ)unPzEuDMpFh^Czvs8Sa7{`ZYkgO0J`fALH8;H>W5h$L&5U@r!z z`yStT8MOOmoubmkHf}TR7d#okQNWHNS-7y0J?_d`dR{vh)uGtB9rY`>~=hk z8(L6O@DeKGSmY`rsYaTjNiG`s)l|18hX(pz)qGU0LEk@?Hc>&;DTKeQN{({NdmP+g z1PN9Qe>=<7HoOwuB~@u^potv0JJGnwTx^^bkpo|O_@wor2&0kR?C`q@VqGlTcmFMq zF8(NqBW0hq`50&CZh0tN8!I`_(cQIRSN$qFr0C6tBGXi+Se+rsFSjVYM>_`#NU@%O z_HBDJ_GL0iDc{QkJ-+ppUEpHINVwU!{+u8^4E)rsMxWZxbv1PqWpqC-!zFE3mG@_( z`NpkNX_`M3D}|he)8AC=iGSF_Zm-6{nO*-<1`R%Fy>YG6j^@4F1F1?c3E~%|rxszj zV`p;~xq*I_Wc+k9D_n_FEMsxaGr7`tl}?)Pevx^%w{{r*$3|>w#+4z)qe+>I2K^&t zn%&^&yGDD@dQt6ivw@Vey@8o^OOinOIiu@VUP6@aIB%62-?p;L)AJql(N;GF@^qfa zyf$V{+GXNho*sBjj77rpg_=c>-`Is{58@9oCws^Ipb44B?cHa_8w%+BhHNk`e2$HE z>9!VyzL~PwW$Pyr#afH0H>0-71|}MQ*(~vw>p^%00F}q7tBwru@v2 zjRzcK`g`vnCjGsOcvjkp&ArnXZF0kf2g!*&+ee##sUR5oLmF^k+`KrZaW2X)e0b=y zgzyS|fX=M$xREUIG)tTIBOO%1S{7Dg_GubA6WyXU0~k0 z>P#c~Y?UGzbpM4R|2Owkag)CBx>DQ(sVKpnqo4Ve!$;&kd_^}{(qO^p%f+Igu|p#I zt0ccKm+%fxTbyh2dL3&@QUy1}@-?n>l40d_5~^&ho}jzzd7<2SZwO5RQOsr^C9MDQ$^aulq3#0 zs;H+-E2s8`@&5I$<3m8rN*%;B%mEfuc?ZyU(VKCQ83^SWErw+w9AS9wFMPSxo)qZ|?wGqK`h5k2N||`ZQ=zNVRw% z?8=3YT!&~(qmkleC@-`L&W;{auWAm96m3fF0atQ9LyrY3ZtuuVi_xPe606UPwL_u- zpKl8nF&o_&wuVcTKL&9;Nh=|D>Q@&e?hTD&`a_kjHs|N(zL|~9ao?781+WVMHDns6 zozSPwz@j+I+T{Q&o(yq>8fK69&dE6LQI$7CSC@~Hp;1=$wL@1Tfv^K-=ac71b@}7% z4Ai2P2#}*PzoOT7B4=WC(y;m^9e>l(y@;r@8tRt--{;RiXRq#WVm&%TyfeEG^H~Ag z$Ni$ZE4voF7kQMCgiI#6(Wn%hOKa~%)lHfh?N4TDT4XIgO^(+3hf68y1hLfAv z-wFQ~0b|E=-qDa(3R$WdlnfdED!L#*ki(f=;!$>8BGz5V0wiooOtJm(H)#e5b&^HL zqbMoYZ7OC(*;_=DNU`hJ@6P-5%g<54<)XHVOrDXx^m&RiEo5fjYLuV6u!Ea&6JnNN zA6zfrUSUe(>YKj!2#as>FoMM}>$Vqpj3i_l>@N@MzniNY*@*5s?5r&eRO(Qh$1%c_ z&!S53uqRINLPwwA3+kNnUv@Wukr@-jL!kxp;IBxk+?)%HD=4F(YpP4)$d>t7dn0%F zk&2`u92YvwdhpK?*mhMew?(D5l$A~{6Q}~36%)c8sv$zOJeRoG+xx8c9 zw!J4L)Q7pksv-;fU|7XNXKq7;Rv#$$8{P z6T|)QfwmY5>7x%U;a)tlRnIDg%~{{Q<}WQlwTKq#8`nDcy%6>G9Rn{$DOQIF+#?u{ zdL01X{EW(&wE+Mi&7|ey%Ppy0x#uf4eX?db%~cb#Q5FQsJ8*umtJfS;{&dpA?Nimr zX%{7>`zwT(wNA@$gw86W*7XXGW6Z%{UGMUjvBJ{5w(1gPB1ZU870!2gE@^dLS!Sz9 zAu=dR_G8%NB87#3fTi8AMn`i2uI#iJ=h|Os7}I8l*Vr>e(6?|CGt?lNlsvns`B?~U z^yKDo%M8v;m^T`+J~Hy?z^8fn8vHp$3Aq$nVRq=;kWa+DMq+kPb;2CotkL1z8x@#d z<%*{Bt7zGo0$Ce^Wk!S&5a|#IY_vW*^DTQ?>xC zuwqa6uo%mI{&PZ%q9;p(TR~Kz+n=Pg^Y!SY;(mhE$zi$%#6{VC*L{Q{M1c{SU#k;K>;aH z`D3|VQ|CaYk;;RCMM&CImyKvd@XKo7_Dlh!nDa6v^IXszYQlB`{&dO|Yi4gek~|^W zY|;u1?E@{iUmzdACM!4%pK-Jofni}j4=iGSuycCgpy^uOCt6DR%|9#`Mb{_NYvvN6 z^(jG-3xiiKUo(sZuH%9)`Ix1`+db#6R}WVs?1Q4vVtIv2`TlfnM?Hi<_LA`>qJA1) zo@Y0=eQ~4a>ta>vAnnW2kK|Gp@JFy{+*aZ?vOhT(8ud2F8*}MfrE~670PwJwO1B1e z{W$2DJS{VI!V1jk1T4ejuk{D9#;{l)Ug_&uYio9^RplRgLleE;Ki4}Pr#;3VF-64aWT-5J7b}Ep{=8fR8bZ3CMXoI<72rO|ENbk z^D{B)tI;qwN%*LP}4mx`et*z$w>SyP0T6t9*8f=Sp={nQ_Z;prL5ciz@qauNAy> z#t-A9h@OTNc;3=yQxP(O5ISvxtuy`L%e`QziM;%< zLaJxbv@5Z0l*vYm&2aq8g>KDYp zij-HpW#3t3&CuTF@Hk{+GzD(0+d-@g8~md=X6&dV;{agW$C}5<92_kJrR&l#3=j4b zT(;PMa4Rh$U3ymmQIk^DdmkEdt;)Li(Mi2G0K~MI2dDAc%XU2GNM1h+PTffiaPM#7 zF9n}5E5%S#6L!*I07z7lHnR0otQy|A6}`aEkIh?cKdX79iHqEW@HFipaqDV^=IyD5 z<});|N)w%F`6Ks?*yoVW&cjas)(Gc1CLY!dR@0+TC+(&rn-b3alMectz6+O%c+bFmua7R^tdFP<>A9+!I|drNiB+tZ#AuT$Jck-cCtQ%^v0Cg}PJhmzp!%WgoBdw=1~YBby0$5s za8VTkg4S2}cD2>L(xXdC=aPf^OcB2GsXoPOwmcmWwF$L07z!lkxb@y2zQ`11`FPbJ z!6}Z?XECgj&0Z+(EYCz<L5zYr&gPv{g$eJEvL zr*9DHpRBK6-bx(I6~FMIX`2ym8%@Q3&4g&1`hb|&odnL zG-==>DdE?9V+xy+QmXE*x4nt{G4t?@GA^QxS>Z#BTaC%RAKp zBAThXa%8jMdKRLP$Q$8LQ7w{RB13jf<$_>3zBxE&5EQLf{2!rs~sr*i08X-O9 z;R@DzV7{yzCuxOBoWfy^arv9oAFr;PD->7%EBIN`TS=UQFECaIds>zlI=I5XS0X?P^#57 z-wg9NmMsa^p7F$7NOb$WTLN9sD`6V=2GZbN^iUq<3CUEsrr!A{rCmEawS!efu9WdN?T1$M@ zlS)7$^HJF8C(0VPtD%XTGU2~m2Anqc(F<~ix%jd86rm5)2^5n4-idi0t1YB=_^dZ? ztc7=?54RQq95Ocz&faoP^}EuWp%E?K4_-0A4=kn_&^7@O!_{AQO zF#BM@@|t1Iz|>mw&Uj-7lNbR>bgq|P&8&d}b-tu6c)Zl>1@M- zqM05*&6#B<6y&!|h4}E^Gr|a+SBLcUUCm267d8)8i+gxXj)vhLt3OjeL@bY2g2H|f zve?ZICAZlQ!YW0Z*7r}M(-w6(J4(U%o=UJw$wgdZRFfRH2xN{BkCr_6m%Tvn;@9m^ z5^{@B5@Y}P$5-sU*gJ7jf~`<4w!q!i-6+6T`YM=P`aKp?r(2p>^?su@G&-#yC#Kwc z0L?g#Yz01eMm)4l{cYO8w?`$|s(A{gd%FacmX^sRO*9#Ga_*WGT0E#&9`}*LnV@vF zlpvqdKT4XEy0>oy*St}zO5-{#H{ul5yh@0ym^}Dgc~HC9YB~(G_kJ*P%S#qO#-vv% z^shL|#*t@DEQJ@$vz`0?Z2a>VLK4s=4p=RPm*+#Z5P3q}Xc%}T4EzbYCNuYt)HW!J zskuf7`vBR$l}u31te-Wy{RBl;+$UL5x-gV9T?PSZ{=HIgUY zzwj&F6W(glhiePcm(1FKO`VH;>W-@yK-eRKOsra4LBuT4^Q)VH(l>X^xP5 z8KhJffA+&v_#+ESVYbA$F*!K0xJ(TXg*yUO5Cw2$wmKF<04{XF1sfIkV;R^VZg|7o zGF+|PI~$B=c-eQrr_vUFloCoiimJXOB(?9Z4H5RFog+n$?=qXG=U*$aP^2G_+(BMx z(!+vSmnIT~|JJb^aCa6ebysPlUwx(7xp=p_K)eplByU@5$~uxPo%$3JbvrB~z)fGa zvA@D3Mq$F}#UxdWHv&FHiH$F0%2CX6z)y40bsdBZMp%KC4P6rA4hVS1m}+**{|I3J zP6)fUIz;_Rrm>lNqW+J+{1A+Zu}gi)i7B0MzAJ6l2uW5>!fM9TU7XWG#%-yW1T!qK z#tJ`A;?vw+qazQwY`mB?W$a(%TUn=LaLfE0T%P;efoYOvJA5t}P~$06beb?GbM^=pYd5mU>pKE z4vH8ce0dmWuYjHc{yed^n)iYtoY8H3RrZ8e^8?O^UR|IVjEb?O!%QCZRyt9OevMxzzW8_5-D|)X6 z-6F=3`dwNu;mmV|q_IyPO#2*9;5yH3S^w?_p*6YSe5#di1{H`Z@oi1^1 z^&OGv{N{I`qylE*7jW8~8F?&>$%aYQ+5B-q;O1B}lQRp5{mi9kYY3N*kTfB;bq*xU zJzD21T=s;(&Xqdn*@x)_Di_T;Qk*+{d;D=AUcn5@Vt?iqGqy`)ZJ(11zb&Apy+4>q31)~IPrq+T&Y1M6 z`ej`|&w_FjnykFoNfIv5_KqK%3qCMefbtP5n>aveZ>%kyqqStf41#g`$g<`R32KX< zxPm~Eel33ySox}j-|9L#XT}a^QMb&2V{P!LePQ|B|A2P|Tpp*faCy2=0M5-^z>qj- z88C>})zWD^=1;Xj;4ZflI963T0Z&r5JMperNcu#h*>Aiy};&t~1*mDq7fINbnd-k7jhCr1`@C77fzb z18C6ahu1@PdsDE>>tr_3MaR1;9FVV#s0qde_3v(w+%Ix~?G6ufi`u7PsM zP{!+-hun7Yu`8;GLz_>gLPRCTFUyflinb|lr_8Lxz-!z$!aIJuG#-cTs+B$1bu=kV zwzOn#!_eNl;$yxic!EN|ikRQ*5_)9uNwm3hFSLvHz}>}~)vc0H&M8`)X3s5cFxaJD zN5k*V=iNzL`?0Z7k{s-u%YP8~Sy{qS8{ix3#uB|&l_x1r9pOb?Yxw!JCna;9o~4FS z2fAdUrd2j|vBJh2A_Ycsb8=nn#$WSm7-!_qqSj{?Ku?;};YH6w8vRXeYGo$fnai^_ zG?U|11nLu#+^UA%uQ13D+?8WSD#WUmyp+#P$m$!zpjJJJaZk{6G@7(BnFeN{> z$5+x$(G-u3OEPsIKV?BT>1@HTlI^4$Z4+U|WP=+zuh$G4hh8+vX-6E03T`?hw)ym1g}qosR$gs;?>}=%jocIy`KJI z$aYhs?=E97!9$Ig&vb%PQ6g~&d~#s{%|{1&%r@w+keY}M`8-|e{0WZqm~WgYJVN249S zk4cQd!3V9cR&})ey&CP$ZxPc4$o!T7j0gJr_wTMKlS*rRrf4(ZM5rMa&#)zdUySho zz0>&vi~8O^R`N#yf#*H^_^Twqzc#E$RwRh&0$tC;QX)Il|K8d}|G!I!{v+tOIvx$a zh8b#Rs0royCOst3<1ChCy21aAzAnJEa}tY32D;HPDX~K`c(88||IH5ecX~{Z#l(ET zL0CBaO;{8!{uTrLD;oU_w7xqTta8l%o9q1F*6^JI69QWh9>a11vs>6MzRB0CFi$$L z(ElsT`~RIEQ=IG=aOY0hSy}Uvqu~lu(Ut}na={GR{_(YwW--UT{1;#D+mwFa{BPg= z_thQXk7c3QP46K*-(uvFpJfeX<`5;rLIgYlB}$fF(N7}2v#Q{hes%fB2Mxh-^{3qU z^MDb;86i(=rZ;O{A;h3~fVBsCg#SGZ`uFu8|5zXKH&B5=}7Y!lC^%QLx^^pCr^a}Akv@dS}f5GmIi z(bCvL)t=d+q>G|ks#k@tvpyKd{=G!}UrdUL8B0t!bCcBIB1#wp1*f*utq8^zb_l21 zm=b_4EPbN>b`Soawv|M##IOAbP08_^scQS>*`cr=wL{nS=IH#kHzp_R6~=-Sq*J2D zH^WBtPmhfMPU&Ycpd#-E8vcn&nK&s9L%FYJ@sm-JZlOZaz)IL~XqtM=%{Tis>tZDb z8qfdJu@+W1u11s_j`jRAZRZN4&ht&UP zH40t1?6{b}o{EN)0v9pVAII5PY)(z2(To zB|N9O4se2N5R+yo@Z;_Xk%krBzZZD_D|7+@N>O{HI;&p~Z#APQz$tXMxJ{6yKy)}4_XV?Kp6)RciA4dSC z*!Pqpl2gc(?Y1dr%j(;1`HdZ@O3x-tQO8A2oFI}B5G3SM|5Im8BJVx9r799`!)MQ- zxsX56<#Vz%v1{J+?{3up6;ufBDe;>rIJo{O25m{du)DTF`AN|2P7s4|JzUge1(L=8 z>CI)z0VYWZeIm|;eLbfkvx&G-H|2D_fFYh75?~2}&%%VN@ zfXHn1>*6i*Ka57b?`0!@EzjXT$=Pj{kOECb-tnDy3lTOHgX0PT*Q_-X4jKN>2&WYL z)2a1}O~P|$Uq`n@?~T}DZ_fQ1+sS`p0tFCH#I%_Duqn{nEv&4p^wq}IZT*?_`|56g z8molb?IiIMnVHfCAP7WT4J8W&3lE3_m-3TLuf{fRFhj$-Sutw|x8AT5f;Qt}x03pdR*dLEyh)-hbKI|G+h}fxjW`Z!o~#hReN6 z0E8C6%_N3#1s$GhnhF&Z%3uqYJ}Jj%TBOvg@~x3PTMRx#dc|DEwC`c0_um`&Zdxv( ziI}4CgQT1N2COpzl5Mp~iK&<?q7#YM zKs4;tK)?0QvV7R1>C3FFS>*&C)`=o*FGW^&@AFE_O1RdEr=k2&bLoe2-zIR&#mTnj z!K}Q+U+tZT&9dJMA2qbf24Ue5xBs^I_h9I6JXd~g7Emq&Z0jVmTS*tnlpCX~M?GiP zSB$Z5_L?cZe|T(-f8%YXVHAz{=A-*|rn>O3)e*TYE{o;H3_&(}`H?f425z$ITLmU% zq)+DBX!#@O~Gjl^DA&Q3FCBXVXjLPyhuC068pJ&K1oyw3H|C9_H?3FSg)*(l*LI@ zpPJO#s#c>`HR#RxdBUbfz4MY5oL|Bm@EuoIjAx+^9HL6=vociousg%K{h%@s3Ei(} zkn&S5H>nH#8)IMf3VKAQHwS)tZ)~Os3=MEH^;p>b(Q*;GTc7zJ;^|^itWz57b7qfW zA_U2z3s?*XcuXy+yb=I`v760!!8eJoOOjlftpzf>%MTj)x$j8HrT3cc)um36R^fey{M$Wr$ZoBXx%&)W-PG2-n(8uSff?U|N_@L* zg+}1&5<<=i7c$4uM(%GAKW&nz3qx!-ofH{-Vw=`z8IOBZSr!7+4Qg!HOjFVS!`uJG z*JN8B{JD2U7g~=5ly}e!j#~j$%OV+?;YXR9qpP!EHnl`1kp+Lv!Ijp_!-2IH45m9Z z^ox(;Vqt!I>^;Cwyk!mYe)V&f9~Pm8)1?dpFKm(qKN671H(rdtw>PoJ7RED zy;C{BlYqe->QjF1Py(jMWlr4fiJ;xqmTKB6Dkf_>O|60k-y1P%@~%il7FuApFEY#J zY37f^T3+A@Rvl8)a%So``+D%cr*Roc^3MSm|h;YylI$u|ww(>F(c|c>ediwVkB1W_Afa2Dgp*Ia;C2cYtVf=xREhX1tW<85<4Hf(Rvq) z^Hn&^b?;VQ#l|%K$oLIxd%Qw!O4n;|TvI*93?@xmpZ|pfWVI$BtOJapLQNn{Vl1K@ zXuVUZsn7d4c?U+A<*+CtC`RU*{pwPE)~W9;!0(Sb_%EtGz5iDbzt{5jSS$4T+fRZH ziTueae{Rcerbshli!Hya3P6D~!T1EEpb5jQ)NpRE%rMX*f~0TS@0>%G&5e|N-mx{a z9nb97G0TN2_e2&J^PX=E@a`=Hc;ym3HMWIJ7}Pm(3)xP_R$3190|mgiJhs@%F?aZ; z=i{R7&p;v7+GBts6xZ?Vdn+cDbeckDUt&0h_Lgd^(hk~}k>2B--E@te?l^UZ@0N|& z%Ai1wnl%;{{yVkBZrZYhmoaRgbf3!#y!sX$w2@BB10$iOFwxx{%TvYaA<%%jC+&-R zF@3u=R1(+?6u#}@kcg&(bwkvWrMF&`d@CuYwRoERcQ@;CgWHBu!X2I;Rlemc3QdpL zQ@zbQMdv@47&VMp6uim7rTYtKjV8r*)dsM&ci~1C30^aF#a|;tV|?#Y%omkwiU4m|HjJ?>4C2Nr>z;ivEJn zbT{FTTSFm-Nrix*9cbXSSsWwIBBeS0k-B&14s=%Sovc7{MuiQI;7NVUrESxAp=OU% zClPTJwSWSuWqY__0CJ-5vJimo{}m-e!n;tS?{?nn!9uaZn^J?p~HTuTRyp_*2(SqAC!ujF@BPWnHs zWykcZgy!@sPv3WkJGcz<8}Co^uA-AJ|thoj`%+|h4$%!PA{Muwt z$hZF%P9^4dYQO0_`YFgQj#F1nA;QN$G13@#+J9JBU!5!s`L)9T;)TR z$5u*|&!r0*-nLF+(=Q>+j_aeNtPiwkq6EYPi%tEn9jD_FH4XmCWR`SJ-|8@WTjaLu7E7AjL zk)8s`cB@vXX@O|Jm+#p1nm9)-NnFS_0ma8h^6GLe!E|-2xGX$zqBX4=NPL}P=~Anh zzL<{fQJ&$NVmAXN*+vnWjUBc56j)C`@e}#A+m^ zZtvKd1l%KTvefvM$#pAKBj5F#J9k2Y)g+;Wflbc>s&OxH^lPBH%vCJ-yP$odP^*?& zO_sm3IdB#xi0Qn6*e^3uo;vp|6=gL$LQ;esW08KIDoOm7RaaDGX6VBK-aaz9P~5Vu zZ6`J*02$rRw{(AJLIiSLXfYOcn0aJ5fNOeNf3&MX+;Qs1Gr|WPOyp0rdVg&yAzUx; z?%!OYGrZEQtFc^kbVsT;vcrAWW4ZMCje8R2lTt+NXexRK^;=cGJ=DL^mt5|mTm!cH z@Tt@Mi~ydKZA3y&q&@w;{leE3*_ZnrQTLA64u|5oQ-(HnY6}p73UxIWJtS`G4zbH! zD&E_}zkKJ`j%TKtd}6eUwDbY_<*Hi$@sB{oiPs6Whid~pC5M!I-JYnqP2|dGI_E(d z`c8z^!q$ z3iYE%Hbw1ynOZXMB2+52VqF{Y?P@vz^8lmfHXLKpB+&B1)Gyrw}PvSa2_OR@>6g#)-$@~CM>vM7UUyEruF91uda%%rb zz(2WzAzc9T(%4q27Mls#&P}<~FK9%HF5_>ypH90NdolX&w_Msl>(O=Thy^AfD?}>* zp15$hp5oN2yADOz4GZr&*4n@!u0RGq*6bHmkd^T}cf13WaiSzE_1?ji+rgF!8BUX! zty@C4!FIVyqa^t+=VdaH{;emIhLyj{Ti*e};NH@Uv^t81T*rkyR!KTS2U}#(!B*ixn!?Z7e2GYl|R=&!RHWqAJ(;0(X3fcR$ zAF%i8uQz1FpunKM{F?q(sy733nx^5j*69)ppKrwSIVb&!Th2{J8jgI%Dl8OvFDYTT z?CRHQY>E3ft9$Ht>2}8Dfn{mFGlj0hVjI5k2PL{2qt+49ZuZ+FSvhoWI~DVW#P7BQ z_O9OKH0=qUV!oKv5z`7Cwxk^Ij0&uK(GkPA6J-|4Oj^#C!#-nV5ffcT>erK*&*T~o zi;5pAfNkO@w&!aBq9c@3XS)V7C;;;&zjIz|`F= z;q%(@jpcFF66hhayiqL>v#T4GZQOWz*ctN;{37VyUy!t`Qon1SPcx@27at}`@v_?I zB&^kJ=*FkhKglOFwoN?h;+^d0%+YM87H`!Vqq|XJp&!(B$R^-I`X8wlMmA^{>+l~U z(M<<4R}CQ_E&*oC(G`JgzRJ;THg#(M%6&n47+_DE3FUMdcI5{c?S#+To2xE{K>h$8@oAc%25JaDrcIKY7Mp`x`%#05pcdIJ>CVwPzT?H}nEz&FABO~4IF zB@$>O2R8zFb@O(g%>0dXvPH>}6Cw+7KFcP1P~SjtnMElPg_-HZrmDF!qR8meiS5(f z5Yx2e-6(ovGb7l5p7(2d{iY}mJACBsu^X&4+UnOUSYtXE?05Z%vMD+ZH{CQ~jr?X+ zYp;d|p~BmGU(Z3i@x?^h8-W?e`Xz;iwMj!w?y|O1>kuh2s(odlqo8}%8E%ncUcou4 zYUnc{w;q3gxRzi{Q&H}SXnm$VJS=+jO4H?N^RwmHkwQlsW8i)e<$H7}zeTC_FEaJS zXxARSD(^TXuH?8W1+NL6o3vLp?h`x`y46T!p%P|E;t-5nWTBNHi{PvCY99#bhhX|? zH*NWVTSutk#{zTid~{DeZ%erN08oE@H}dn==7s;LpI|yHu7Eaz?^$rRt%%K7E|r_S z+St$Sx`pm^Qv`ZHGpN$M>uc{PizfJwb!0O}>9w~Ei0>+xUZg2-NC-K2*euVg86H0GRFtD~&*A`T){w^#&9amEHDLk6TB!%3#7a2=T+%)Cw#4nHhegNx(!=(ba`i z;(EX`&k9L?O`z9&=2GhYk#ShE#E=*fp#ko09esYBMGavAF8LLA`g=%-=gEwc6EK<} zhAkEW2nPznfVA6I)F>mx(W9<_Q|#%pU`EEM>lZXh%I=N>Ujfo@uhe)1Qn&W${W{VM zY4b!xLFfI|yt|pnsFrT^km=P>h^ydE{5-_0j<#%X^Ha!J<4$yzoT_ElVrEJiXU@if zKN%N;;IE~h$kDye0lo`q{T$9#3rfU3=!OjwUwgIn(*xCcBtuFte?0CkSbO1E!@dZDN2@IBv%maAc< zaxBLZ`AU||^X+o@nsR=BlXM;A=EAT9NvN&@G@CW1R{%prOEaf)Uy_LpYXOVV1`y5z zi4}!6y)6EVw{FjrULEw*L?oJXnp~8x00wLD=4M<|EmChoeLboL;I7H|cv_p!2eoWa zH*aMcj>iU?sRKA7&Nj-FP*JiR(bE$*!{AIinzpqfV%-k@QOJrRpVKeSw~3a{N;1qC=mld zlr7}%RZ;knTI&<_|)nhJ&J$Y_?cTz zB)zM9O3uR%5{@;XMkkn*h|zUMvp`T|)43R13aU8S{9R8RVdm>nV429!)itt$*_iglVfPdYdCoa`9<=<`CMAae1>dQ z9JBi|njr+i3M7Ibwr2x~myEO}F*|N!Rl2-2h1^IiRs30ZREgf++Caip;JnM73>VqD zAF7S`sun*;lEG;b8y%C8j9x#GFV!0t8um#%-QSd@nDs%wZUD(E8_l z9Yb0tTaWtVIoTQg@6HLxXarf=OItK!C(DOPn?tprGERf3ClwE#XepTy=xs@Bwy#kj zS}@`yI+xiWP)^{yXBMjMjB^ZPOJ!Ypx=9WY@iCGrr2r{x zDdici+?TtI9=a>B^&D*pbxbYe)(Bb$7>q~S8AaJCGow1$?_SzWXIm;gAEJGhNxf5p zlXY(x!3}Yht#&vg8{#&u?7VwiTN~l2!<@|hIx};+-lE4-{T?!yl;XR-0@T{r8!#{n z=KYF%lF5i?v(_1~1Uv@spIea-S+eJx_$o~go0lG*|H_F{hE{J9wJo}6CR$R~vAPFA z)MU}=-y$2J19^9_Ix8(xH=!LaZ{=)#n*vdPSl4e+Jl5!3nmY$b_Wlnzcix@-Fk7#h zSIOKwnI~qRHgxh3)`&=Om1Jk02~OGmdF%EdVq7H?m~w{e1LUW3147`Bqs3lML4T;? zq%Mkkf_P_Z#nR55Nx@Z)&8#5Jl>@P=kzkwvltb=F$Qi@(EAsjq;8`#17R1lkQ5L*G zkYRet<;S^Bp;OZgUv~kD_thJ-YMkWXRo#vBQVW?}?a(TYv3{9-S;v7kjWiZ)xRNo7 zb>!nLhmj&OXyav6dh=>U4+EJ$k4BK4*Y1o^h~0^VbP1o;^@mSbw;FWoagtA6ydChU zWCVYnd=kfk38vm2n`~S;r!;w5?&gPSY4%&|>?6~G`|Y)GhK4^ldE!ieEHX29>z;r# z>2wFTXEi!25Oq(+Gk%;-2W%hM?vuI^ZWw+QpL^4a(#V8|i)} zjJr$XGZhy3?%R{voY=cFrHzXxr-bO_1A|4OFIJN1xvEOL4K=%dh7dC5)TZDsN;t_C z=iw*pBa*(y1zIKhxht{EXB`2IuVkl)DLmT*=BgDVuDx!Qu#+8Kq)cd=6ut;)0gcCn zngc}>cCUz>E2OPImnN-CR+x}WI^Acw^}oM@I-f6wP=KE3s>YsGN@m>=L~ahrxxln2 zt7qi}`0~WcjS92rr2X}>ekl9jGA%U_vZEzOCX|6lg-^DH<&3(M9E|w*GyvXQRlE@s}$0oyYIqDvoB<_&>(+001@Jig~vY+!*vtsLR zdpNa#j_W#yF^(^ zp%RCyL!4goKKau`UOM$<=0ni;^*Orb^AIYc_6OK4_NI+i5k8S77^%Zvmc!B5Lg?e6 z2PJoRun9#I$pywt=N)rn=icSUfAq7-#ZsknyF7E@ckhjs4Hdy0ZNPZb8r_9(4BB>n zSPobKt%USB#pTAxq`K-*uL+~INkN7)~^`8;h&7Eo6 zEMx_%OVA`!p^t(6E@!u+W;VxKUGsI^V@)ggIY5$th3ORWdcT&pPNH&XfH-+wCS&9m zj7R#-b#0*7X7CX1bChd`;E5Ej;XCLc&GU9KrCfT8o$Ta+;;ONo;MYuCW|*zC3~L(Q z@lda@>Qas)N@!c!8iB}SV+t^?E8P(W*LSa)?Q)-bD$e_#bKT37QG6qb24bo$!MAZq zZ<1HS*ck62PTjI>a`nQBtoVxEO#NaV)gakdIAv0~*V^U+6Om)wuFq$&ScH7bjOLex z!{6LmlEOYiz0cWe3|UkYJ8ZyI5L>tVxNRsGj^*LNIQ_i8q%n&!$OL|nOSD-~pJ2xQ zC?TAlcluKR-N!zF`8>?@=+lTAjXugDH14=)Wti9PvvIi(W<)qBm1~2aa8fBTp zKqkzzqPwX#Q?=i3e$N{y**313RVg`7sjem08#xnCuYYstB*qp7}ZUL^Gn z();NOE5gT2LuTa z9je8Xui$FRne(GcrGzv1ym9h?t5c{Dt0zcFD$zNNei!5Jd!!n4hA>?;;LwD|riy#? z^ASB9b?I(iT}usbbN;$Bch0RTYrjBUE|x0ST*i$~&fy;E3^4j38;JS-ZnLtSZrN5b z-;U+~?uGyea4~?w=uOM@n9ox0aYUOp)(tpJq9F8NWRH$uGBLwW&6eEHHc0F|*cST< zgHK2?XgtYafK8&6d6npNiPT5Bo^@5dTWZJAXa*{91Y#qP(6q3K%4BQH%&RGNtVgnc z`MO(&{hi9x@hX`0Oyvz_j7leE$aVXCd2z9DEDCBXXF~~Ez9V&+F+wMZHz>tSCewV~ zwFPlGf27)-eo0Q0HpyzM4FZFbHB=+@zTZP$T_7o-3lBF4>Sn zT4=!d_~J*7s>3k~t_a9Pa)eo)cobSrd_+RM5-3fNJ=nfRVX4+zK6?)WM_vN1;ELI; zD~9vEFjT9E-g-Y`wL}@V3h;V5s*#mp%!Fq8truf1Gi)ex}d_=GoCt2Jq-hdZdK{H=1 z#&54#S4d3x^Z26HI=Km!D(}6=WyZOg0AE<_+0WZ@*6xnu?&T|Xc1{L*ULatx{)!PH zGDs{U@_A|B0D2oOGx>}BF7&zgGRfyanIr)Oa%bw))!l#k?pLp!sXo5RW|xCy`6IVr znTj~S4B6R=$0MCl_x5wJ{eIFr_1+EWcSw6%=ZK`lK^SHJ+%~A}B$NIimFCPhVuT7b zhHhiw-026Rr__SLoZGKjcIt;l_};r&ZnD+roJcorhtG41v87n(>2B2&`gTdA8=j+$ z$p;ys1l=zy6g49CqVt;2Jv{gWm1z<~Yb_eYBl zoNsk{{8Ag(Jz@At;DM#ul+XkzXRTUEtAnIi)y_IgdvwsKOTco@8L6t<+}AL9rGl*nT2G- z1@f|UHI7%fFXOqAY{%lEycZL)<+1P}?Br23o8rk8o&??-<(X>7-Mb_WJ@s|Wk-b!Hp9ll1Bw!UH~}G;Ahue$B+to!028igX%#3W4V2YK*PZd zJVb6jC+dO6T#vWIB0m1Jh*rI);FhLyh~_?_uJq?Q$A&cuaO1`9k*k(b{r;U$m9mAG zf@x4c-1e8EdrPUeKcW1Q?UHGJoT>Mj{R!FkeNNgw;LtU;7vATIs-R~jx|eI5`E@1q zyN*GfNqqr@Pr;9si;j8#6TfoZ=*yXvpM|(#eGC(sYx2k<1Jybp)RF~lifBg($4vC;?Uac|8IAsK1zG0fI3YBRyesxE1>25gV zO#%Lio7p3*p(+3Fy`G`xBmhw#Mcd8I0#nZ+SF7N4TRuH;7$xub({9QW=$Y*~;#po6d^fDN${Lm& z$qyBJHigAZIaay#P?|uHnPlpRi>Bcz6~m1^3;K3>xnV#w8`;;Cczd8VV(( zLB(Qz~x`6E9F46d+_G;wOO={ri2?UF!I zD_b9>YzHSD7JLbn9^L~zbl}jq*LWK}PS+72kg_ySopR3*OI0*P&fW$LZWCM4--Uho zp}MV8>0SsQa{o1Arcvl>*_t?)EkJaNp5OA~H{1xPhUcm8&DT=My*s@;f>4c&QZ3^e zg%wL{cU9<0$WdKw6|2%Yn9xEQiHR8aUleII@E8Se3(RHgzG*sJ3CVQ*uz=~5o;L6rf%joyh*z0sh-G6dv z;%=F&Ky5~a9{4Gi>Sg_HnZqA=fwG?%HGDo{0_YK4GftCY>6$=fbTPW@#YIC1=c4L) zoyMnthi?ix92TWYc&Ras?Tl7g_eLf-ukIWSOH{h95gzsMuXL+N&o#KQ9 zx(*ypA0KQ8=%#&RSc%fF52@|rQ72cmaKO{luU;dyk=Xem<~IMV zySco(|5MxQI3AdrbxsH8M14Zz3`8|$HBW)KMziHW!R@!Wq82uPW}h}w=~w5JypNuz zWttEI9>su`Zw6rYhX+ll_kR$ZvMI8(lY@M}s55_Vzxd!m&`t@hv6U{BircH*+rP(u zK?YJwk(L8g!`W$^Y_uYdQ%uHC_juF5bJl_m*(rhTmFYm!j*pK&oVh(GP-7L`je>R7*ivOB9N!HXIQA*Q8KD~n)J9wsQ;jVW##|KTJ$~&MkYQ-=>buJ*<0eyhDdq?NHxk|I47&EC*mLXEqpSW399k zw!~sFWHI$Pia5Z}wF&fvH#mu% z2Nu)A_7~YP@KMlff<%(!yWyKH^#mT3&fP0h{~bH~u;2@NF+iC-p!7eS$$Mio);$L- z0W&W|Ze;Gv_#t1q!t4FNv;7`@+%`y?(bIHlps5cC!eRG0bqgQLg%F+C)QS9}>l)dE zed}v!EhFJ0@5G1Vvz@s4-v{BwR8ntjUf-V!M77~l9pqKh%fZc*UrhGI1PUU@vbi|Zj+?RYHnCTPQzB`ZKsRk1no{klKZ)U92HO^ z#Q2_UOLT7uH_gdkeHml92TB)nQ&3KLQb;~Mi$E_1f6C2beqL_W@U=r|P@0YAWa>Uh z*r%o@|E`Ukn+Y{NIRDrs0(mAx* z|EB$#W?Ne=3J^3%tf9)a{ysd$aMzt}r;cVYlbJujH$fSleoabP53?V7qEV4NqIxnX zTH1<+PicYTTr|x@u~N`B>p@Ldw`Ze zN2y6C^J_02r&F1a{0!oETPHfwn)Uj{!P`=x?o*~WrJ0K;#biJJsT)90__6+emK#iK z<6bGBt#tg~<%0_ZPrH1ulwBgj3cZV)UDpRKx1oex^6=es{hh4Y)tpnYk_N}legI4{ zcZHopFBXjsa8^6yPaM6zc0nR&Yc{`*$~erpKR(>=um!!&YjvM;X8dsHP3C8HAVt!B zf)=a)^b#0ISQqTENMv>GjFU`EWR^Tke9}d^{Zb@>>EVd@ocS#wlMSn1tRq1F5aoZd zX>E%T`@qROLQcC>ZZJlhSx$s9hdQG-07uz zggBmPIGjLm8{s$V44Q$Yuw@IUjr6KyQkVESox57rpo;idN3j3M6;&)cdW-e2d40&R z_m0PQ_h;HHj2Kl({gcF+Vm=^GY?M6kcB!$6a~>gL19p!s7Ldby_NPAix*JkJ$f1rX zK>hj<^N5a>g}5$LWc;|xqz8R}!Y_gpV!R>f+kLlOhi}dq`9T-sPtE@>8lq|%16)iz zfG(#Rt55iH6jPSH95%oacaz%IB%J2`uR}gfmXRZP|+pTg%6qDV^?|xl6k{8W# z^QLpSdjpU9@)S&68d_9o{xLPU820@!j?>6sL7AsWEKT8Y6G$>40Z7&Ly7Fs z<@ph0fBd?G4OvB|woxCryL2M1@MOgO26>+tVT^&U_|e018TOhSAd=K89{Ez*j0gz^Ao@r=u$qCLi-0(Y*QX_1i4qZkvW=8^hV zUSm|*g`p&68Yo-j0Sxj4e~!Txw%rl~lMVRjyuk!kaS^kd_mPg#u$7uD7xYeRC( zW7t&bhfJ`BKn(~n5{folqjTvbDMMd0YK`Sm1O7bxc17~=0UtAgpv>7~!1>}8dcsEE zvckM;t>a}($*yeNYwTnbgegg;wdsG(0?4$$-a?4=`49*;cdDZ-7SHp^w!3p>$?Ot; zD;f6IIT>8b)g4%d4iYO?J}A?doDx97i2+($iaW99oOT7q=L{?rFdekKy*7{+fbmS1VR(a)6BO@t9%}?Z_{0O3%|Kk)w@}-f zc~-&L;0Du}!6bnJASM0C|4GPmVZQkTOziY$6zhHtffqoIEA56qfVC+Y5emw^?2&f< z>Brx9!cc8G!>HfGE`6pc6GWtLc zGH*f&e4PE#>{V_OUzH=?{gs@v26hL%L6pX1Je0+m;fK-(hOp&N2#uYkYPDR(OnRCZ zaIg;nIP};(PU~?qS*4qmxi_~@H!wC_rj$mI3UR$n&pm zU4_p#u3XQ07XU88G=MEfu+%?a9eOA;Y#Qfcdd)_*ezirFA>*Z-gpf+e*;SZx&YuWd z7kmD?!g5ywIdl#s?3 zY<>~v9332E#IZ!-R}kRwI2YJBv&7#QT6DTM0JkJ)HU~M;7dY5(v~EMc07SJa)7BP# zhb=9PP14D0IMQot{0#+<-l9Mh%Gc`-qrWF%)sn(}5Z0}au)C%9f=1th2_zTtRWq1B z5t0*HdB3(WmjkkRA_Ci>KwO`^+=;x*sF11(R14{e;ysi6qYum|6D%Pi zYEkA=-^`WYRh-)CYbHEH1p1jifC9bm66a2EyQKZpYibeC5(}=6HFu{%XwFjlxzoE( zaPpnJI;(+Uv&Wn3ZpQR=3K98hNc6mB%B=xs?Bt58aBcQ`UuBOvznJD4>E}yWtv%6x z*BhO+?tV9trSbjMQDUpL9n9{;+fL-Keq1tux=z@(k1-ZDaL_IJg>Xjv>a*&r({w~@{o+)>NNEEDHlVF={Y(e$0k-0xD`rQap>HSGJl zR1mBC6|HMy3&Sp(@P&t_Eq<+0iSW6;l?qV?wFAH$`X7AdeS2Ge zO__Xcf2l*dgH1J=D~gW;r=lukHeRjr3QG?x38YCi zX;}1B%O0t$NCPZ(X-zD9y7%*L^+b>ZUQvApp9xG%NZm-%VxmIs9>_dHB)ORfsHSK& zrmX!3x_sCE@qoYc%*cimtTy=#VC&G+*kxD$*q@K=Sla|1z_oag#g^&@pUw&ZXQN!ywr92HZ zHm=EXM`+Xb)Al_hYa*dF@9UN$x!TAj2zhyFCU|j8A0ste%D-A;e@iplqOxWoBZeRZ zvtH+Sy`dE0C^I58{axjgq9X$8HPh22-|Vy?%^xsRO(j*WYoLjF)`~$%1Qlpdl1l3- zSq&$Xk6od^ertE>2sx34Ka0h4G0EJ&4~$=sg{wFVJCD3AG?;iSNmPBExJ9a)N#OFw z3oI1A_A6|~97V>*Tj||%|A(}%45(_`+CCykNu!9;NDD}JNHXD=fz&Eb^T@N*%XcyNXbS{=Ty~e3`2=%FX_E7o28Q~&Jgd+PoGe}i0A_e_|cL@xU; zpp2AZ&n9_6l&ezAmZsZ*8PxXxQXvdty82_Y@d|PC`b+!vN%N&ZT(6;xxkit)8>mvd z)(Iv<>O$FQW0ZEqh*Xao&v1`mmB5+QX1+4?zj7`@__ax2Au%uRr$uHCnxOn>cG4+` zdrMq|mn5RW8ixWIX7yYq)@u`##SvekRi}bQ*lo)QY=lNF&bw>^s!1LF(gv?ftCzDr z7(q3xKBK(AseAJtp$Y#)u3ELUAwT-)@;>dEz|qdEg~jLft3jbFP&SgA@7Q07wi-pf zRs>ouMimvbSQRDjF@YC}bhL5RXj#YAIHp|$%6A~PC3=VMvLtW6tK!x#peDE@wYN|_{fV$d%*fC{pb8w6jq z%y6EG7XU#be%->nTcONQF&JqsZ&}`0TJTNv$2Iwq=U0uR(=R}^3pn_a%j8rvziQdq)d>=K={#XP-AhhjX@2gPHZP(ie`rR=MVMZuQ!+L{N zijwVkIsu1$pClsfOIq97CW;ND$K<*A@Wvzy3A*F--7ks`zwQO~^|P4NhjIyA)XXOd z9oP7ZNSv3NjEaG96wlkE0Z-uI`R#*Oyw0YxMe;X5zjL^XEO3^R(RAYT021%5kDGtW z_iB#lCJW}wFq{q+d#VJ&Kr}pdB9?5W;;29aG~RIdN2v(FG;sY75EWB=U5!VwsnA!m z-~MLV;uE?L+HkVSi}B1$6akz)pg-#)l;T_8Y?(ZvbA0Sf;^to1hcmljuO#Ke6whiz zvf6v8$7!s+W!Wv2c*cs$=2k;BI9zGgc5JhB_EYZ&gO%c;4`RD z(f3k<-u2-LQoB8XZN8mfeO-%LGmt3Gk?Sa7Y_j|sumLm%J~1;5=B|^BE6g3a0&N50 zo>@bEV1Iu=WozfQBsisu-Xaom6({c>>a+)h&Nq9XZrUGDJ9NpB;uq9EU^Yx~VSkZ) z#Xt@hC!Zk|dUbhz`UC~$Ljj6XfhFFI3%P$Gu{vbskLS zZz2@Sih(}^4xQtHHUsa$PhISj0@Li)CxxKNX`twln=U}6vkN^Nj6YyexP@Blb!AHz zOU1M1fhloZYN|>GsQ2J4C!Z2JzK*=$^4Nj;Dj(p!xsD=RT(%LX2Yk_l z0moDqM7KVu-uYP`+z|NeEldwAdB01Cn8~(%nN$*YRs^+EHMbUZqHbSE_XS}z#bCsa&bERRFuPJv|TRqIk9NGb2IH+;W3->VOY&+l>Bh|nN?piZa)n; z=y^7mD|{VqYaoLK$4*l?M#3jW&?f-gf};u8XibC^4{0)_(BVFBx2SeMj#h1Bo;~pt zUjs)X2Qh@b&$=Dj?DC&pX3VKL`C19u=^k*u9l!{O=`q+Cjsp4&T&R4fAF1{MBaU+{eZaA`TWiWVIOO3@PM#E74e7T# z)v}V@FyEEzjVq>}SLo;4?5rqk;H!Gq& z>~h+;|8%{jUZnjkm#Wzc;@(79HWMGitu*G~8LyfyU67V-s?RM_Ya9X-g<>TVS#eeAr8f#csdwQ;X++ zM{>x6dJ9F@VHo0HqFWb=~E6YLmoGe|)J!{k% zzc=>OCL`i?fkClQY!JTLBb@+8(Z0(O;@`~FX*_JR6FXR`kFv#RG&dP)Dan*Y1*eVY zW$wV^Yjj`f24PcLPIL4nn-Jn*toA0Zj^&9s+#R_C(VoUhQi>14)H;%lc{(6k1A2*P zJ4{3-W!Wp=2umR`TS=8aZLA9-5%v??;dNb}ao#Cq<5~yZCbfq>g2jH-n@6(bp_+j93jN@yt$nbFKp@>kroNG@j1ZBXm!J2kWRB zlgh^r68W)o^!t)%d1eMOzIrvFH$9=BXFX~^ZHjc5fmWuUpptNFw7lmZN*2tEC)=h- zyQ`E{S~NrG&J6@O$|69NVGp_C%c`gJP+zc z_i9`=T>u?|?Qi%TGO}kYUVEHA*>{+oK-;!wv-O|ZRgdR&jSKyJf(vv80$r8NG>(%F zTR*hA&FYk589lVicR`m5e#pW}38C2@(rIIfXHueT-+Xlh;t!6=r#lY>+5JtZo`1zd zwc5&?Ed(mY!8f!54t3`vP$M)T#K{`J$uFbj$RrV3#*Pe!$`a>SaFk*FkDGBeM!z}I zxAA!Nl~(!K_Ed39n@MY$J(+bm2pqX+d(_ioP&YD{ftkzCl%HJ0{vN;{<9)LR$WSeG z1b8PAQIdXBP)atPanbM$FhLnp*Y>qHn^NU_@I-FuH7=uVW(E!Ul}PiOG;Yy`y$6f9 zKLNk^Vc70K9=G9aT+b_1bJVuqYqG>d4bfrQLioKp z6PP~ySR`LkhYI}TiFy-8X#p-9Dlm_jtq#hwYuqcDf>IM@n&cCOtL~@P((mG52e@gxnT_LD6$LC&81^X3G~ZARCnl^PX$6n|Fw*VF7znJ#uTR-p0i- zZ^bGa0NC7)`)S-NbqT@j4Rt}CirEN*p)1|7l5%Nc<~})Y*a#)|ThKL2?*j>Mvt*iK zr^hhT+_KrA_%E8Gt92W1V2;!Cpt;y!H9v8Gx_tKRUJoiBvvM||K_<6lx8p$4ONlK;oF{ImTV?zh_Ay?1I*eZm5;lcl+_vK8`|98lAg-7oei9*?~iPv7J4=}-Q+A;E?fd=7E-P0FEw4#9J8}Nz2G(-h;r#U(OV5c@`#j*Suf!F8C z1yywS*k|hJ1W;ZF^VGOS{IOg#is?oSjW@$la?L+iFmE%~a=0Xnt`0D_y?NNY2$%Nv}yfqxEB%+@9s#n=2G9@sr+BtAOs$A_i zBi(XbbmLRefZI=tsGJr^ZjU4C_B;0%VnM0foH^QZNRp8-PEhjQKMBEEvsjYc-^SC*=Jtr~KHraX5U0KVWcX zaGuxfy+|?A(kis`p#p`q{CkI)9Fw?4g!Sq*%4TP@b_;jYw&|40a%V3Ewhl23wFz?X znFQH`mIkW?S~XV5<~t}PylH#`!5X`Ud?7N*20Kc272NA`&}w|2kvED}({PH_`KF_r zC`O=KJ+WM>Iqg=($~~r(tFDI>YJ2?00{@DI1x6^I1X?y%w){DEE7+yH{7|)2Ie41se#c&0B#AV^s}kE=afw zqTQ}aZPikZObJ(`1zHw7{ST7X|7GC*9tzQFP}L+jZyWrPY*>bmNB7 z)0EH^d~F?{VUU&^1aOd9rg}b~#s`XL;h=Sg1>MFIKO%DhIS*n9KX1vbL?H13<+K=$L zJkD|n1NfQhxOD*b@(x*OfY6nBBIrwQfpU@DF6SMj<5|T(~E+zI20_xbsg z&#N}FQ9fbnXETCYpIQ(@!u)8G;)BNzdn0bIBw40$!LK|Pzv5~6oLYH1ou&N#Vs=Z5 zs)qM&_32`xhg{DIP}G7XxY?dpOwDY~&Pw5YHE(Cd`^|!3aD&zTV{AUxCM$@)#%zgj zq^EBY`|($80@;}p+jcL0tcBJ)DC_Y-F}%nKsl)n^8;G4}US5ta(}Ra3I-1mm zQ)LcMd(O@Fjvwno9w4uX?=N+1Wvs}1cRj|F@IVBgd=6(lFx-Q3b?+{ldLsL9GC!70 zt#(@JY~kx#bJcn?%YD!0Pjp+gd=PT-kxzZ!oS#Y?xL_Oh#vb_AOxITHm)1!SU>XYi zcHEKRE?;*}KvokKgKpS#iOq*p2ruN{Rj>Kl0;zi2KBHMka{-V0c#aVTqRT!{*59J; z>U121%arcTlsEcJUK$oc?im*<^c1G&`N|mLE5Mz2zT)xLW+gZH5@}5!RyOb(MS`ME zjRZY}yiG7>I9m@nPi)A9*MUp!Lv!W5m$#vS*`R+hF4O}mZR;|oSf^dg29yM)zzO{o@aNvdR z_GypXrAU*ffY_Aczw>`?VT$ns`n*7^JHQJbE=s->kSZ6$5-5ffc_@a!Zbu@0nDakf zF*bx8%0y`9q_K%^yl&Ons}Yx7p5bXc0kB$Cr({5ZGexuHl$S$);JloCQQ(F9y1U#1q8t7Q0GJx5wYusG7X72TJ=}@svDL^$CDIc*sDhzd%|yu$F$HS z(_o*a)R)vAErNUh(xhw7cBQqo)lNEQMpbfJzgAMj>;!UN#AeOJWBT zc_vDEy91LGFCm2n@2qMfy_zGqT$#P#0FD&s+I62+cO*NqOyyFkQ8#5zbG%d%XN&VT z;Mtzr3ZnOy%UWE+?+Y)KY*_=a7yT4yeB6=0D(s<8$kZCVlRLjgcIBd@j3vjG=m+G?we7@QGA9#j{5;4zhe( z@tQzK#66mVfSzFArNWE2S1OWP@yq$0;@g9@Y)tvj5{oP9FE0@ri)O)P^aZSLWKS^W zX#yWfo*&@{5aM4R=aBLt`yxYDj<%*gZ6o)ct3<|ZX931Z3j_!fnYg&QNZW6YZ#&>u z^)9p$M$eOqh^-H2*-ZzP0d7>&>#?hkcP{$pKT@65!)+qp6-mL>N-DY`a`u|3mRnbB z+_BCtvq2I~@jZsAaTs?m94;D)ZwrpmER*fw{D}($?99gxVZ`t5E!e^7-c2q8UJ!MM zY*67+IqrXWK>!sPRNC?xox60}m7*_8XO>p?t{~ zKF>lq=ZWlA8gA`y$U)EWprgOdPt(xXYjZwaNcez{L$4V@f_CpH_I?2nGk8y@{dNNr z>T#0^FlAH|gL26})TXZ^M>_5fnN!1+C0WzOwxPKXOgx*#ym`<%D-^2VcQuafwZ-7c zT!HF=$bLRjFw1Yub0DQ`^f8)NO`rXB-P%dhtSi*dYjL@7o)p?MdW56p@*07qnjKn} z+j~t7fFDLYDQ5|wBCmJ&^#$V~`o{`VWehwh+xhVh1qg4gWnY_lbUo^cm)x4P>jnry zl^>m=ZT;1bL{D7Z0UG0^Z&FQ2iw5jw_-rG#~p7oKSwGg^TM#Z%-FkIZTZ069fEG@?F`yEL8VZ@Wq zoR;|^27N%I>0MP>=nMi?v@5b}a+*l?(Xho4*a&io8GU6_0`A$Fa zw-7hDTG7CR#AC=ydgyXmAq59!uSVR*gBjxy|ka@-!L>KsAYw0}VbQ zO+OgHF|D-kdAR8I@Zm6;1QHIN>3(bJJ=2z!IJv9IQEJ$_5T31R&b4t5 z+#^07>4^UR3ht#`hvBpLJ0wR}j`;Sv^JQ z4Fr25Owb!ORv;v;EqWNIS1aVuAuSrbBBX>Q%X~zZ-6xk5?ByPOSCo9$E?=;}CY*23 zFG`*$tZYPc*xc{19n*lpc-0nwOUf&)z5$QIa0iM_+*#qW{23a0g<8qfoaiOC%K(u# zO=)n3fo2}q;DY70|0bvG%}&UgMe-^e-gK zjQNn501ywgEjfK;U`ujGH(L1C^696QE0Xptd~brvjOX}0Kn2i+(6 zY%3yxCEpC;>ho(&QXbph1dg6DmSLL)CpOdZSG)!8O!@cNX$+Y2{Y@PVn8pHzhd{@w zLH`F)ZWE$GKBvvh1a_;z6RUQsO8akdj%W*x9;GV`EpnjfXVWjqV{=yGD4WdgC?IoT zEnsOOxD;GjSeL+I(|S_6SvpP_cznyJVox>sYO4fldmz0MXPN(|XV1wSi$dl?yN2%3 z@>n>;g7zIvT@UBQe^AJ2-j3E;qMFO3hxmAq)a6GV8S zkS{0fbr<(x-WrE20_-kSP{NKIUV;C~Y^tDWX-C*k`mSy$4EO-PiiTdphTnM_r@Kia zeH>l-wb-9|k1QDJJC{L%tXn}(0K<@X=saa}#$iV2d4`a+J;o7N3bEXKW|4XsXLo!&y6W_r_%5@hs&BUW?OIJNr-zEv4KW1d+*7!-^4iQ91ssY<@;bJjIY=~}7 z0Y)lUX=LkDb&%P&`kPb(9J0tP6SO$=>djP=e>PC+^Qc}&nAgk7B-H3i7llaIOinsN}If|~Gw!|+*bAD$W z4~d$6e*CjQ7Tl^h(Wra^O=n}3A-O$-yd{X5pf6rkVo5TO^`l(S???Z2Yn+L8bOHup z^Y&TnpS(C0KAJya$dCt!&r@O_XxSx!JdEEIWBjvTF|%oZgH;7UVY_r%{WvBoFl=Dk z0tjeHMedfPS`JCGb%0W%7;q4ItluB;zqI2KF zcf!_sN`%X0UbEDjIAz@_lx+Q_WK1#Mx>Lc`SS_-XLp~C*^%>SGR=Cy4Fj-c=eX^ZT z**C_H4Mj%fsd+4vSeWcbP~-&?V1lV^Fz8~ zb9%*s_u6wW|7xEp2DkZptFLe9Z*XzGdy10HNfyy+y)tyCfY!$2V|VxSz_a*}FQr3eG02f|t@qHK#~awOyOrLs@uO&R)CC?7rLA(0i8bXjl$)wNE~)fMr|+tS>D>^6Z-m? z@C>mefw)AG*GS7>jx zn(Y64>0%0?%TP*zo=rCD=dSrLf`t@FCQ=vpZVD|7c%UX2dbBm!S+R%Z0vnUvCz;?Y zOm!<=N#h$0ar(oIGQ}*<*lfUsPD>cD?#585I;y%&?nDzQMT4JIDf!u;KO-}~^eiAC z<~%2I6z`m<^t8l0mCI6F>-%nk`hZ)k!O&7n!uolh^OrKr3B@Z;LxGl<$KsgRq@-VY z0Lu|as#zFD{GO?Z-X0if78MwmJ_lhI1M!^u7H0SbOLr!zg4gi zh%rhuyg5zepC;}o@5yB4@H5x+ANIW18`!TYv0w0iZ^Z(f9!hZ99#lGksv`CKgY>XY zVT))}+%WN@>#KJD3Nw=X7MFsouGf6Od)%q3KEQeGnj72J@3i5<9{mUF`PagNC_!97Nn9|2VRI-2l~y zt{oQo-{e{T!vo*^2?SP*$TxIhj4`|(M;b%xmDrGQeL1m+C8o(|j9`xxJy=|B8Nb6r5^ zO8O#~aBX#!t+00Ck-+OZQI$`8Q^Gu35O+Yb^I=v(>%%JJ$|!yHi{Bwel!W!l??8yW z|In%|fY>U%YFjOcgG6#HNikjy&~R{1omfrc@BN~wR$$yzb}A$+P*cPTwts9^7|YiP z&rvE+C0kd@R}VGy6-)6QUIBfDmUDkYF_Vw_4tXi7j}yz&6UUclGC#?clk2_z#TU1L zabvTg{KW%vf}iK7>T|p3-M1qc3!LdpxYDV;Wi`UqMO44};}pbtQ-)A{>fXA4&>om| zP}JuPgh=F1;sIsWS2DHORXP_0A%8jI|NRdwJiujCKPKsI(PJ;GFFf8@2k3k?fa%HY z;d^fSGeqOvcKB;e4b3}}h+{v}rnBDpU7mzTPnuAzy=|k;{o0KK=p)@oiG+d9qz)j| zbt5zea9ZO$3aA7qp7dy1>8JS;keZ)86D)Bbf$h?HY8cWvS&YiIcnYsN5FPUIQa^X`P=dY}%nXaf{VQI`E zhKUkupDa9b8SIs7Zm17YJ@IVuS)0@F@1~Z&gp!ipr=o`F0~9t*Axmz%xg}={$QyTn zL1o=6wYyEoU9pu{W}aP6}6!Ol@?)4BiAX@rx((x-OMXnIkU-Bvxy?H=YRrHqNA;k0S8=Qdi@kC~-y||715yQZ99ix0Fh7N;f*gFTJSjqarT5WycY`ReWu2d4Cn*BV_w>32SM2;v{D|GfSVF(+H-FKB}qh8Ln>Xp``hufEh_XBQYrFr!w za+P!MwP2;sDQ=Y*^bs^V)m`jMf|(P!YtL1IMp-eJe7aN^pSv3eXq4j!K7V738u2Ev z?(#@&=sngVV0xP;DFIQEt>*43=Q?B@x-Tm|@jaK}WRm2slmM|Y`EvZ;cO$v*@Uw~9MXpAjmGd@4xsi&VRw_uaqX~ogHnYwa^djza+oIta{ zdn9rH`?M}?Gy@bZe)ycWg=dlc#Q+XYAIE$r=)ljcT%gG#dH{Ocb)gkj>4xJ2uT5X& zY8WCA@5M0a zx5{Xqn!)Ty_AH>Yk*}5*4XK(PorWa2^`|^raWzAEN`2G)n#AKQl2A3nOR@2v7U{qJ zKRW8oi3IV`XU7o{n1K%p0qo~8AulxEla!jX^_+B{fsGoHdxj*5oSqRkurt*C`ZC>l z2|%_zta!zMSt6GuM|QC5e)%oB#A0?voiKrL-rn~z7@v#W8xPG_Fa{Q^Cf~Ey$*1!NyY(zL~paqg7#-#O*k! z&K88YN25JiV)Pj_#+(B6sBRn2MT(YCgar3yFO*9p=JRjoY%H8@g3tY23%8TquO@6q zgq%Ssx5q|)<1;cd=tMQ%?~0~R?tnEx?QIqFwGS77C8&YCd6fF~* z$#5nykmpy@_~01@s@zeUwN5Hqnd5Mg_U$qi-a!OBlXz+={I`riMR9q>x9#*`wF|%x z-ELg+=Ps{?KZ>F~G*%Z`l&6 z{*n-ixK7Z6E=^3NPOiwGfauT;nyYijivtu=d=;Rerf=Kri;{+$%wiHXfm%e~5|QkB z6zj6rilhHX$V;VIpJk)UJ&wgh-w$o4=0Ij`w!YrnXG9-ImDLI;5OZg34HmOPy_MkysDg99DajyE&0l3<`H&`_fhB^?8Uf{ObAsNwD=-lj z)Ram`7`rh)DEVj+zid5a_}|Cre_shi3!kTSV6R#^Ubc1?m77kG0DvWe@A_hhGif>& zBM>yYNJdhVp*&HRoZ>FJR^)WMSrq$wBo!5Vm(^O9CRAoEDj5rl$68kpar zwcI9be-oajiRd4cOfke^Uk7bj=ksrX!bK>L^HI#&7jKkD`n1G&5Pjg}q?880)HR_v zRx{%sy#jzzi$*i2R{go zXZi!Mq@&7i0~R%nnunw9Jz!&VkQk5VQUNW0mW^$9%O`kP47OjNizjlHHs1o>n?=06 z@y^HFk&PbkTt^ISC%@(pZh=;4-^I2_F?nC=+TQ6Oo*R;mGv6{|jZ)37{Ej@k-c)xY;MM_&g7!Pd~{wE-m|?R0vj^OTkYgo1%jlF^Sra6Oo#L|;5*!dps@&wLN@ zXDTKCE(F_yyp3Jp&TonR?Kg&~A5%ug)=IukwwHvk5tbf8NL#>TclEH%nkLPG8Ioi` z6csCtLsX$aQ^R;T^Y!RzcPuGruw~e=XX^%@55Y4WbPO<^*TBYoeWG4b7~88pE!zo) z>1tW;iA=r#JOwkHpO~ZDMqYWGSq1O>AmR&cQ2p=L`JgkJtMb|9)Y_)|CYk_K&>{im z7&~QotCfLBzlGr=alfaI9#AcYZ5JRy;Tp_o=D}VV#2^(>HWA^2(gM<}+QEsKM-ro+ z1atg6S>^?(H^Vl`zDrZa9Wt3U0Rg^*J|{rf=sU!zD1$RNO^ z>JOkF(;gn(1AS~AN?NXDmO8fZuo0jeudwEDP%^4G{hfBzxKak^)S0fX%qmQ9T4KEm@9aftpCb$u%v zgtXuIK=C+%$NA+Ta3krceF+@JWKxH!BR~ZiR=eJ`t<zu11H}x$gbDkh*aI-m?fwNJC5ZWqldyVMf!AW0X1=|Jl{rfX6e+D?2SW(C z?4^Lx+ba+_!+U1ELa9q-^l<(P{#@!MdV`!Yt`F<^FQB!UFp$S0lPm5DajO-|g%TT^ zcBX%Wret#Jq{5}tFGP`yeRdx_4v9eo{pG%~@O_ED5@&vR)?nN3`S!&puAsKG)b3P} z6`uc~k@rU($_c~3S(_ASRA@W5I@bNS^yuGtL~wo4Gq9!CQg9!Q;Ra*eKqR=qT6lDU z|NMrD8bM_Xw93Ic?^(|e5QAH?Ww*Zn&z;OI%t9&yuRU(s5aQ^+#3yp@zRjTdtbbAw2)<^T=$7PaNf2j} zuu|~S2oHcW!zMfaDTnnx))*k}KnsjRKH)&~KVI_xMIZlir4J(rx-$5gI-{{ONPl+m zzx?fA{{$$iRpbobNvP)Zk1~=48r9@V1)8N2!$4b(WP-B)&^y`n7xu^>fASjrcl&-y z_h|cjCH)_N)?6?@X0rw+vDNYiU!8O0A6y4M^W_VD!e4%&%r}JrLzxHb>HtYDP5#?j zK&h9$>E|@%zn1b}e(+(v#c9ac>R3`h)hqfd5I0yN-z2~{z&0d5i+}suubdy?fF_!R zjaf(lPpBoI5d6=5)9*(-Ca4&IIOrT6I}Fr$DV|=PwsY647X5&Fv^jPHcp(q-8whB` zSdo}{CW?Oz&%L>0ZkTk?!`Bk4{25cxiT1}N5+qZv%YM;4{DvqL4^|WSsUw!w(_dZ9 zfj>Mf#Z9&K&P|d_+weoOca!A)Un~Z|N^ka(4P_s8x-@s0`^R&V zfJ22`K0(y_(o*Z6pDU2-Vg~|Cx#8_c?r8Vmp827m!)D0|eR2@?v!xpJS1yzkrJ{cK zfrJEswUD^>n4AdT?cMl`kRUOPd&0t3M9aw(qNAHo)7t5&+G+}yidbpJ*lq{oFp8Z& z4x2dvqGu{m+{qy!b72vTFWS~W71U0wnQxGzO0HJ*o*j~&tXXdslFA7|CpieSyeZ}}&pE&u6EMq(bil;;2K7nd8|2nO3wE(Q1hw%8$-pjGq$ z;N?EJJ~#5-)8#*y11N4#tSj?K<|YHK*8Yo>wP-%9UtTr=iWFKyfrgln5cIQAjPWL5 zd-wD*s`G%^CEi#z(*M<{`&&6^4Moo4v>ktOMMJhh#0pZ2s(M6(|8*YsFJ6;GnrI#n z#a3S!0^ET_!~Xd)E-*jFsULPPUGM*K_x8Wjr!Gu!T-tp-QDIfPIa5kAxSITZ!@ZS- zd5?q>MXi`Eo)4{bU3m@j5BjrN}GsVn_cd44Qbjf97rYorr$7MKOrJOVajh zL9M~nbkV*UY=gE{D($?RH%iol`Bu!P#iU>z5#2RuJz76F9A4y~MJxkEz!_R?FW|vQ z!y@T?usSW4`rVm9_+d{7kc52J{+X4|$pEhd(7}4f2j4RiKX7)}-2E2={Nta4)DVmM zD>=eRX|~z8muR8w!Z0t08=NVql~pMJ=lkM+NCq5kk+lVCx+P$NjQ?$@`#_Z4`e;+7 z4|BsHVq+9^@SQdHG5_%lwlaV>Y3p`tcUPPU1(Wi480Rdr>@IEio!}tvA6kmDyx*SE z9VjmH&zh*AU6Fpu@7gr6X$$9n4!a<(Tjo3_!(qS4Mx~W1_uNj_oP2W!6nx}LRlhCW zZ`~RqhP5gP@;wPx!aM3*FQB!W8#h|x z*7wG{UM!ipBhYhyBtJCC&e}P$k?=9P4}XnMH*2mMO|`?$z5-huiL_dRFTSR;8C_+u z+wH!(N&%Qg^qVJmuJLgM9zD38kCS|a>1{#374(c3ttS1w77gNaCmqFuFA!TvuC?gG1Au}oP$QBx*X?Z^PM31r?G^TA@si^*GS07qlpv!gK&-h0vw(q z*alV90r(?p>$Vx$9?PY%*)ljZ-#6Fe5HCc2_0#_GMC*fg#18o5u;Um~tL zn=NkFFU78%mkRf6axiv!quu}1b-?VhCA8naAgy~}I+VOMHnhfC`DM*CS6#0d`wq62 z-o)Mj_1Fyj*x#%1`x!HMQ)s5@m*P@l3ikXx86jE#3mL#ZXe&>|l|9sxC1VHQX~Hy; z$oMkmd$I!d+*|*B)&h&6g>E%}gK#A^oL%MGyT{HbqwHKY#e%4W98@J~v3Ka>DDmaE z{klI852mp*N#H!^q+=!6!7m?rvGFNS?zxJRTe%H!`BLFxldIDET0!$aw$S%*?r}&q zA~;mx;XdZZ?RVy(>L_`LT&j+jDwq3WUeu(GR*_XkQn?yDW&_B}C!AgFc#weZ7 zE9ZPm{W}?Y?WyjMH}r7C2R0Zb8CX6RN|%~E4z@;Y3E_s}a@dXl;&dC%o1i!o4T^sh z1^njHH*SRLh8K?Qnb>9@Im4L^1_IKDQ%Fa6-o*t2(aec!clHuFHzSpX9oAKhW){q; zUUoabnOEp(BDy-t@QDR|VG>2f;322Gxz2RpnBcr1taM+l(`a0ffiTlodCJPk9TrNECyV zQmuA%mMLhKT4volN-M1;-}^;!vorzxGH+Jm>H==b&vb%&FUttd)m`#FJ@$wZC7A^^ zEgZ7QsMAYhZ46mEeDkJ6`D9Lh~^=6d@2JHcfO zar<|Z{BCId_Zki@5nB#wv9=lBf7Y;`RZQKaVOi3sH&4t}D}R|^xAM?&4nmhio#AC~ zY`h-4`*!)qD1twm^yWyyGJ+GP+;6{7%gKHm0Ro1K24dl?#3}X@J8cSMPQy zw!^5u?0T`+4ixRBYOle(?`Qd7GI`9%d#;;N3}D^@KrpEpR@h({DnCA)eQ#0wEj=k$ zKBWO=u*67SeycG0tIzgmUe1hL$6)aC!x3V9(*`0FAgpV5^vvUq@^!&IoX@&FBrN7RYxI&~B^_Ap8#^CvK>FhQv^;Az`h5}gR~Pcv<|FBe z>h=?QNhQOdVQw9FugTll`D4>kN9HI<(kjXpfAcgs&=)LUUwriK6-JgErHMk2-N*HV zO-}m^I_F;bPmi^Fzeo!t^EgLc0HT%ndLoarJyi-UD0x}?FM;!1+{v00PNO|9@7Ser=|>K zWh&+7wYq>m_KMA+#~>Q?v(S8~@D0c?xd}u&KxO9Qb7PA03o^>J>5Sm}re{3~epvED zZxP_)_Uuw8R+~8(>DN9m zmLd2gPf~&mB&s}v^FGY-stLXyz3+{PV_nEbL5k3onetU@MGoHw?YN2Ktw=0Dre?yA_EW#t6l1jm6u6i zPo+(|00g5mZt!qODl0eX5#;MlUxSnBkW)wKW@Zp`4h4a`6rkIDr8?@!ND3Rxn|kBs zT`U06XCKxsmgd%oFXJx;h1!Q-a9J`Pg{1X4-7el>@`L8_7q>5YO2nwewW))_2cA+q zWx4A@c1<}gsa$27m8)E*u3BzHyWFK@+1D~&h|sXu8t&@U1-OIDVB>){D;jS_R5ri6 zw@CYi+&jsl)fZGL$rG6?b7D>63dFSj(CICob)i+#wEG0LKgZXMw|GwX1k~F}aU%@N zHO_-HjrI;bK$jxtBVW5L&RrAQDBluA$#T+Zr(MD|ZsTg1v!%-Ta6PIXx>+y_PaOy# z$R={q0%{w!x(#_sAf!wrttruNZil!}{sr*dZlp4rL!fCk3R^-%X z$jn#~IBz9~({8~AAcKxlk%D+WGKr`#>kD%xcDZH7B)B+q15|l}C3HWiWu=QzY4Y z((egu)^WcgiQL^N|It&%1z3`a7x*2W&kpTHd!}mrgjSC?Ic#bd1TLRJ^fOzuqxq8Z zr2$E2?&_L%dI=8BBi{0q$G)5E-T&k2Ed!!l+je0o0clW>4y8M!yOfgd2I=nZ7KBAg zcS(1*APCaU(A`5fxG&c8etW;q_m^MH%zdA6oJT;VaBM3zl|wQ7h96|vK`)H=qnoS+ zPsfEuAT#WV?|88xT!t)|$)#!W?BG*V*i7P*${~{0{T(3N)s@9-+d1I!Ph_G(0<4^0 zezGZ!M$ILLhiMPV?+p5QhF!(Q&tDfjH?Sa^C$aGpA2p?{%G=;2C_vzm_<=j;0t`hO zi9m~2+2}}GCz;W)`A|}`DzwCD$7?I1LicFtS067z>bMYEcR0s0=r#_49c~+RnkTN` zch45i1|oR6Td8^nOqTiV4S{RViRQRFq+XEAYdcKX)}|`|(){1K<6zm1+k2ioi`z7GS|FdK6XtU#Cf0x#v}MbDe00-AeE}aZ!yT4YiZn z9Z%FgV)^OPW}R6EEoQP9iDP-&`<}D2w3^v zm_MET#5gnfj`-!q>fQ60pf`Q>eLFE$C|8;+j(9q@Y!_f6CYu9TEdyTAR(ZjPRk(JL zQ-w;a(quo^nk&q1?M&NY2;S=__*Bkh;=#cA$Lpno>Vb>yu#M+H(T3XmJD2Al?iCpM z1;vv7NdWt+R7x*fDD3dqo)`PC~K|RJ1#%gvYdwVb{bU7OOEo}f?^G)KKWKH1LRkJNJ@2k>z zBs^lz@miuFjQX~GBr{&LaXu&j0^pMwmzR-y#2PQ^7Wm%+3-L(dz#0Y*lG-=MZ=$AU z^zR!dmu3LiIsz75N=Eaq-W@y49_D{Od(<0~H@B;B>JR8{KuYGfHQDvw8;*J%|^pTi|L_OrZEncy*Pq24uKZS1h|5= zBvT#RsaDS#1*HP%HM+pPnQb4rRgQW9&C>h|t zz7$!iF&nMWm0k1%;R}q~6vjou=Ov{Tae!>31x36My5yQFC?=pWcs^qVxWB^$nX&J> z4yRjVI4mZ5QBpcNDx)5-TwtFo{TCBL&SGZ3iirhG>cJ}YFt0L;WkAK5sQl~i-+Bk= zG@JC7$A3Y)*km(le+9c%V=_1h>^#VqS}3)uHES-6yRSppyOeIg-zpj&)jmJ?h@P}7 zRCs$l4l6V(No4qpWp_^$I~ea2J`jt5jo0QS{aEi>rOs`{#om&3d>7YA*}Rj^4`JDm z1DxCu5CX|aV^2W~FZSAS9{X{yu^$(fkp6^vl{D%+Lm|9fijQY|nXXPUccc&zVML$`$U0u@`18fAyV? z>hB;az_F`S_|=3slTPJMTYtEVZcmDjfZ6yFH_emEmdr;cRgW)<2Wc%%!*w zR%*=GyW0<8P6B+R9|jlNJmS3@ZrPVA%9I-`bV@74aP0LsZSGVA)sIGGrhK%NPK#Ab z8&(c*jv&k`e0V!-VxjP~dTqgA>C;P08+v`9$$MbDP@N|DsG{xOT7B~^@P5s4ivSV~ zxL~S@kM+LMZMh3)NY{&#n$k-u(v^4&8lM{bFEK8u=bTK=obX8kHjy|$V=buoYg1yk z8NQl26e|$+x@qm@Z~fJmrzRrjA1}-L>O;NG3nwCQ;8xEb{ystfewiI1J_B)H`v-M% z-y)JQ$GfxKr}^zIMB61=08Ap}U`|ebsN$y4J^;Wp^uUr>)RV>a;oV z;{fzNK^~7Y(#K^6&3&ron?NglqMv$~>GSPg-;ci!#!;5~UTqD#wV$6%)moMc3W3-A zo1jo9DIXOeJLzUM{<{^a=o9P*@-~OyP(P`ShBBV*oC+oKt@&-en&v{tM6jhP9?gSr z(&EovWsug%%qwEx#?pn<6b@9Z4K^IiWi0gBkmY=?dh_c2n79|*5qj|bai>0s*P+8~ z?s!&sLmv<_L83yiuBr`0|DAn`a`8OlZNvbAKa+#PAjHpyM#2& zS2u;ynew(}jHai~yM6jwwRW*9FdrejTFhR4*H>UvAT3x~ZjgCy3ldfQ0DFvZi|>+T z#7kF?R=F_B^Rv5rjdMtRVC*R!+j&@*Tz<;Coy4=#iN3SSyI6&G>A>#j_||gz7gPBH@yN~!={})-kta3z z6YizJH(u+Nt9GJ?J^!ym*`01EnlnhF#cs2%s#h?VXyI-1HD=23E4I_4GG+pYD+bX} zr$Y>zAJ&#cWI)qrv>ZSM1!m|j^Ecm&hX7|v>P&0>{+#QQsa0GvSF-)+1WMp^}FiRpQ=z`6Qxm0_toe?)gtx#X;D;bC)A%I31KveaJ>@^eP1Y>!mD*?meDC?HeqocS9@$2*sjrG}475X5PpM5)Gm%Ti994wnaniwzr9mtQ^@4%}C&T5|4vzQgCe z`hM^oijB69YEalm^byzAPM`maqy7ggwT9KojzBsmx1=uY<>meGh`_gG10dHu9dHR$ z%BE#=y*0#dU9Ymn-(On2?qA8LG}BfF?hx!3FW&p+olb(NtN7PbXL&J#6Gl>IraG-I z`%|$=jM|=*A}l;cy+{G{%8f79db34>+Iauiu$lm=*~Qf^rf8RcFK|{Ckg!>7Qlyei z&gN~ynG`^_L|7kZHU70r)B2|<(^L9;0J@A>(@_H?A8e;1=1>0u4$0WzTp%79rm(Xv zSyZ-&FXqcfmwZg$%3vd6zPi~yG>=otAL^Bv{AVX((j2v#D6=!=E322f22i|}cxc;W zL)-Oot81NJe|{7owW|PYXv#;3Ty_Nd9`*gj44m)?EQpMy6=-pr9ghW`u-eA01iK+L z%yBSA*@V-p<&`3ZpN{FZO!_A4@xKb=@Eh>F#fib>w0_9?J_bvX!Zp>n50+5pmU9d$ zs6%n%gZfq%%E-4{br zkE+B|tUru~>?TC!KMJK9|n%!mU=@6ZT6eETg6_PZ+UhvwxoTY0{y*R0Llc2!SK zSnsN}dvN>Y+TNpqoZ8;Q`{ScBE|*$YzoSGqdjc zP@ziP%hM zvLy+V$MxT%k^2R}Izo=zlFRgD&fEI0-CEHz_$}_1+znv^sLy(&T`AG6#RPeo73%jEhhku*U0T|Ks1-S1@g0}{}pzX8Pxs1)g zHCy@buP)mCC=n*-34>0_Y#xVoam_pi^pqDvDaovn^W^}Om>365Iw8O(ul5aGcd}2I zPx8rO?Pv*1kM}n9_h-Ba(+Tzz$U~^RF23VBh5u-S9f{sc;7$MJY|nSV`^hEW$R87W zbxFv%AHDd7UTr|RBnTe{_5;%NqUc{=pG!B`i4)xbyKtg?ZNu|IIVpJa&jD0d5kBt> zR<;t!iv4T;phfaXS{LC=XMIBE(D!u+Z)kA-3#Xgll0i^-^M!Gi9wit`A7EK+#3j8# zR`!j`%Ix>t+aM~+#LGyf*=B7z*4esBE9(Oh%FUYxE{_VSi_YJoZ_J|!uXCbEK1ffd z@Y=L|{1gIR;~Zp*!#D45G?g&%p^dLOYmw3P4Ctf45xiLyYraj=z8F2;*CtA$bdVFv zwgxIF&fRV=oa?>9;f0pS+sEZr=pe+dv!K!<-_YNu9-Bf8Da@bOAoq1|2BmbuC&zYX z{nH3sy3{jov~V(?IeM{rO7yY~l9K!~zBTPT>JQ`x?37iUfgn-KOZK?)FU*(o;2IO# z=>v0=gqA(3$Kj5xTEMS>*vD>{|^Mb{nR;d0>uI%-C50NSi<(*`52jgP}dxQy|UhTTM6NHAQk3 zua9&Red&+w)T5GPk$2fYG|$m(9_{L}HB#;xEFfxk7akKTip*gh4>ht`f^wC4!&+jR z1rmf#TZ4%tr;PAjZi|XTwHdmks78S@E|<1lKJcZc=IZadta=Z5BH)tWx`!m=&Y-cL zMEXDCi_9&#H6}Dj=M(QYPayQIj@~$s2G`Gi&VZgTFez=hzai*}0jj(E>!bJ&rRttn zfmW-Ilmx*NOd8sCVj!zGoY(;^#rKVMOb0rSR)g)qWe3aY$X2Qx9%VipUHtW%ZaM=@C2ODJI$x29Sw$oxBBW5Oj=Uxhr1bRlLKh?%6BV2?ZF z{Z|E75-ZIAzFIN9F!RV@{Ja%qCIfql5C2gGd4EOdZ~9o&x-h~*VRg5guxzBP*rmXrcq6k--pFzO4lLCq|DkC_iW_SzDo7#_Q%7V zm{04FmunysPg(6BE3f4cOwCj~Az8_BoH=GB4#P)i1=TkJC^?eW7*n@6r^Xk_F3$69 z=CN54->|dvMugPur3g1WRm#+$OURb=TQkvoozAqgxY{W7SWTAx&DR!2gj}a?EG7~Z z@?-&2%Y3!dy>F3dPQ7ch&gX=BQ!wpQ{q2fnQ`io!-!O>0TlIJ)@~+_{z@oP2BfK`( zBbj42+->#V@(mzI{>3ZPU%y2iT1y@X`mKoM{(W9l3e>r+iN46H61cN3YEU|OqR89A zpT4Z!F!vHf49XjseO!LplqYVX0`?6LjoD}nQZ$tK*e!}ghb#WLJS$cxnO zeqH-iu$f1@PTXF{Wx*2_foA9z+Q~t5hZtz7M(EH$U4u-&>t#c&#z!@%3n{LNbc+IRYWU>Y$!4ou|JD zw>s{Rom?bB`0Z)A_j`mncuBLAVG*5k$+{%C#lO8J>LP=KPcXgupz~flt!%rau8CMO4 z7-*06LhlB({yCx}<_EI#u=fJ)OL-sHvm2sUNuP1$aMplN9bs`!G*9r!PZM#q^0sN8 zy5?CklyoS@yKQFQKzA%vOLw6n8pnien-UpOP#6sl5ngdC%u1dh8``P_N5!kqJJ&AZ z2xQ4(Q(p*p&tL9ORTLnuvwpg*sNv8kwl|Ddjf^wsn+yic!%syGMc>yV9G5{H$c}qc zZgBS@cK$kcXl!XM{XZvAQ*}J&CDuPu@nQtp?7=qzuB4(Y-(NCBK>?S`?VfuFq_8keAN$ED z$~Xlc!MAI77nP!C`^S(61NTDK{d~BwtxU;ze@+DBX+^KL5S8>Pb);bdcrn9Xr`XUs z<<c-b9CDX!&|ujYP3q@21&AT$3n6fY%o1}h@^+PhtV^1W(YXAE29^_>w6J!tNalFgdrL#?x7Oq9l%7?x)Gu#v=pdPcxpY*`hN}cS z$Z!@^&rSqdO#v``!3t*-os|b>>8Vv*p3b?&%>Xx@D0L&1_reNt#e6MB^mSD}JK{p2 z!t7p0ESS$@P-XPPOScWo?YXr_48ec2ZKbShbM-#;uTodU4@)ap2l@yJtH4>YHrZmX z_TXN>YWOLL$E0=0qt+@oAmrO4&K%%&ZL2GA{j(L?Ub!@y>SMIpsQ9z@zW@9P-$!7} z=2W7RzYQpycfIFK5pHqBBlwv_j3+)%AUIsOnXwJgi}` zdztDJF9nd$<+{iO#EZAN4Vou3*nSGUkwZx>7JGUa6ivm}e7Bk+_%R{|1Q9Sl68e!b zSzc_5>UqP>N8MXN`t3SFBEYA1y-rS={nl4ea>vIKAE#R~!B%guv)k!$}+SiBq z0JwJaVc*%Gmplw~X$Fma1RpHl2PI59;Mm(F(rZipb*>$>SPmKRzkUpkh`-Uprh_c z0H8q$MWb?=vmLIMo3@-b-hM^6l4Og^F;3cPwS&(1{v%1Sk)>?5Q30Lj(nAWX&DW34 zF>b=A*pzZ{WqP*};Oy=D*lIp*r1V2twcQql0}DnbSwe*uRy@JUY;sPl${Wl8wHQnvgWHUsrIJ`)F$fgr{cRS(W;PhcQsPw4P2xuJ?qX|%tnKb z8U>$jb2uu_?2K=Au7?;~>%Q&Jq%GIo#$-OTB;O=sFRr0HkRpj$dHwl6mz!0cbmsZH zFn)H!n9Y$yDclR1&lT4PH+Ne{rtT&dAw* zZGOb*@hA*~WL8l}_E@s-hufjUN2Oh=*+?5}vMaQfObT2N;K(~)wh^8j3w!m-8n`y_ ztV+Q@y6Cp>?^@g&bT+&h!%LhEdt6aX*4L`zUiG34q4j}1b zzce?RJ2V3k9O%VJ26Vhf;mhuFdzka#l+@1FzZLcWibjyW`@1^W3g-W0e9r^P>E8R_ zACo*r%*X??9qDKiGoul4J;xrhxX}!-~ZqqeA!W zlV5~(1K{FYUfW(;_BYuel9rX_bipbDZh(q-D4@jn@*ivqiY{0h)1zAy*OcTCbcZ5h zdpW_o-Mp4OB)9^x(1#t-?vZ|%e;WltfIFu79ge}BOe6yH@wpIe;X8;N{Iz~Xg0}Ym z9CF&lHlpVbmo#R2?X-0)CcbG~pjsQL3G$|8tdUGBwq6EKQ?#OL6LCm4)0Js`aKQY% z?0cBZI{3{d7oih$2Swj}@zfs@=@G^=utTiUAeXu92HWDUh114iyWl%rz>e54to$Lh z61hqM6$4GZ<+KuX85J{IR~Z}_9vLHkn>lTdoTDbpU3$wP69Nu{0I|tSegoF+D~RQ8 z6LpKLDjepuCujF6?@MWxvG4$WRLcvGGun*k?pKF6FhO{d59TQFYb|G#CVQjkH^(8x z7+XD_E1#yRSh{)0jMmpC&SfYkL|BsYWm7eMflI~2R)DwzK);9!K8|KmNi||EEwo;7 z+OMF?WFd{Wnc2jqJJ=olDAtl1X%^?<^aH*q=h5deFJh5;DO|g5L;fMk0ruMyImY&) z^mVmjhLBtj_W4FTeTBd%g|pmc+u0b#u0}>NicaLJZG=<03JX8Dh#bAqtL9M5M$39j z)9;@1>Y7%pYQ2kPUp}W7_x{0K$fXz5+)MdmzJhU%$1tTfau{eM^P?eAw^h*A7BrG# z8>yEjh}h<#o)w38jsniGlG%H9L)t?LiD}Z*pDC7_jl&-7Has(k10|5~G7Rq>QE2UxSXTexg3L#AP3QzP|5Cv~*++ z{)XhfBd(miXX-F)0aH<3$Se5pwmwuitd;yczrc%QV$XNu(oDDIHEb%A zm||Xg$HM)8UH}RJwpv3nJvz&4*HgV@Ugxv<4_QY%z@zTk<6%?t$K~RzWzDrjjiLQ| zd+eeQK|o=rW9kPxrpLr-kJc=lonmPd69-vcICtnOzFkpX8#!}Z_8pHICDz_XJ7Jmd zPL+Z>mNiN zEZhFqxsy0A;WIE@DK>}G&@MHHKhP&=?0_Jp(8Vra=_ z8g@8$-dIK2I0Y=|@Cnn(4K?gkQC&$+WCx2SV&mGZ44IB0p zv1i-m*k&xiKvZpU*%Wb6s|~z@EvHLMPk$`hsK2pEYw$IT^oHUMwn_d9AVUzHSrxoi>6)>^G+K`yj)j( z`EPN=gN^mY2=Ua3fc?WXxUOmk4y<0n^ZHuF_l8dcI4s2TrxarxGfyWYVfFmlDqq~J zg~kdZJ!ggX5#U8R!rc}bR+FQY6Q+;V^@$7p7GQ@fTq`L%!_x}NJ-c>rBYY^NYTT=2FF61HWN*;t^%P_`gWb{zpRhz zd$X~QBOWcgUfc4U$!1kdhIO#Xw!Z9(F<-82_+)!~_9hVK3*Y-|orMRRfI=QBByuuG zmsgYuh#H@QW$v~u{oT7J+G|*tFsT+vAnF(AJrSYh4hg=$;6P>NgkYFH= zJmL!iYQn!|@X2~;N2-^r0nODmNnOo ztB>GP-TY8b#e9S4t)mvp=4+n+l)*nwO{g*cSmx_|R2v1~TX2Evl?f~Oq^w!W@6GM_ z*YYr2I%PolqmCji(jDn(XDAbR`Kr*@9s&LPYDeJ5ro6>(jh2(2&4LUVQelU!Dw@^y zKbR-yOaEG+TeL}SnM)~@P0halnZCFE)<9r#nDKaoScqo)=%wz|@ZcHK)4Ms`RkB|p z_WiT$YIc};LN+V6BCf{*c3*L$hdT>2uybf`OW{y z6gKd?4mnHje>7zc0ycw7ej+i<%klSe6>G$$jJl{N|@<2<=GlDy#bO zVhxZGjG9(sTD$}&mq&!iI9t(sReE*v#y;*B;qTA4WnO1{p?@mxTH_-HxY*MEXw#d6N#f(O)u_x%SBu0#j>Qu{MsmH|SEW~l7-mI>$v8COx}jV>9Z4Z> zXMklB@>BGJOW&^`vSt)(S+yywYnO>~(e2)}A0DyEIxKCQN)89&Z|frcqX{4hWPj|k ze|58vujYi#N_{7oZK3e6xiw5_Td%@BVOGoBs4;07pwHUl6aK={mqN4h^we*s!!=?b zSwn#gBPiN5dSMT)d|#OSe9*h=N)HDB=m8rN{{Az>}bE= z%y3(tv3V=|)t?$G7;w1<&w~*6E;>=IwuHkGacqvCBPDo zoy0CDAoj-G_hOtI-^GwE2H(7jal1QCA^;Xa_EakA7hNGEXTwnNn|I+idVW6nQGa*e zZAI5Nx9A^VB6UO+pS&?~uvn=3v0mqE2*x!%o<@TAuAxtlcl+Jw8cAUY!Z?50jdZ?} zKao<>mHUdQ>_eZ#^qPG8eRf}q{Zw6r*tHihDz5puqBOL+E612G)=It)>*j>m)c;U+ z94#1L!8Iqa(l8ZzN_v8?7&#I(iEPk3HJ9x%h#1bzu3Z?^_O#0q0-E$BEuy0aU_jPoh(p9qey%tCGpcRI$y%{&juT8 z2`f@>?$3=fhDWvAM~(CI4;5~z*S!MQ&NCjeK4UX_wXPWlu5MFpx{=Pn7t409h@m6J zpi^wcoBhWL@063t;1(M{tmGlg8gZF3!mD2)biE|R(B@e)S7RSmO88WeoD*lEOtsen zZw!NaY+*M1>GhO;R;T}>Z+Bu7r2DNyBx7iItq>?!ftEcY_4`s#xp$%=*@!(PW-Jvu zYq>-fgK_|{U9232+M47F$Up?VBjO737ZI?)bxX*??J_gU5&@PZU(EhBv*G`+yC$jz zr`dKZylIsfH##`u?m0lp7WW>Y8oB1R=?RRUdVlPKw+@%7aF+e0k#i@M<+=YmJI3oQ z;fGS0Ms6{O24LwuNOl=Rk&NDis|6xoHA>TrdbA$F=b&~_W*FwAmI>Lf*7ABT-Jzu> zvdc^VjaH9MVMe!I|5GwZz}jQG)xebmltJ0ZDBTDsxD(g?G13Yq4CEWlvn6tn_c$8c z!x@bI%>6Xrq?;ism{uZatXp3wVsKGD~;-vD~hEJAML-o5iHwWwZ2OEbFOcP zxf-LqNJ{246}NG_oC1zpG1_Nrlr_KGrz;Z&2Xm=dB|sq zwe9hRH*n+J*C3=$PKoybzA4#)8PZM)iLFc6H=jWh*YY(TMNRZY4wT-73nf) zx|f9ycL$YJgI365^rQTI3jJv6FEv-67R!k$zm<^|3RpGDAjXnsPX?H9L0>Sn2pabQ zb2DhlUo(?`*_QF}E_)o2J}m$Y!rmgo{{7k2>}0;3HQQnVh4H9_rRsXFbnXpABL-~mD&_&FPK+QyO5NDy$F`b1u!A?r4*Zi3F)0^9U=kCi9ZZdFyOGz zaCxZjx-<%*?a#(%O}{8O(jy8w{=}tw((JPXK)C)uUM?&C%JPJ2KTq;Ip_V;){CquIrme%<)n}Vn(MN=Mgpm zPN6|P;w{!;O`gYSDh##zON|bS@vWR9BTLHWoe4ZYC)ukG@A4H-D|`>=#fQMA%tlXRIO(MuN$c|; z9r@^v7Ru`HEZ`QsHLTM;KGtoW@;8tnHhKO(4R$W;(TA+Bm;5?EqpOg92`qI(bq}Q* z>utzMr{6R~$`USy9mbcI^*h@Xk`gByA$Y6!Ng9dc8VV^Ar>A#$W6Pi?N~cn`Sr$EO z7p_g_D1wyWx16r2Wp0h4l*c&6kh}OztwL$IbmWG0EiiE`ohPwX_wv{|6o0aCw}TcC zx6Af@mdiZWxr*D%kJe{!%_&CLeujNnN}bN^_)x10jFIaT;vro2 zc!*$^8`1d6VH04g_u<&_V>xf37MouMHviLU>l2z)mJ75DD)sZLhna`O-R&CHnDty! z1h%C9R(&F)b?1+ZVMnW!8oj+6LxvBaH!71ZV*JuFi$ha|7f;7@qS#cA-?D9eL~pm1 zXKA_vbWh(P$-Cy59Y3RGLY3uIusg{T^JDp{F{#d^XzN$KKBCs1ieJ~vjtKH|I~rv( z9T({&deEE`UlEZGXIJc2KuBHVpZsYfKL@QauP^Od?IRaUVEvxrIYG1V3F##By6LQ~ zN+x1dPMDCsGqp~6H57J#IjxBL#R9CH@$boomo^QT^&Cf1d`nq)FZoFSe-%Ol7P(~H zn ze8c(lKo@w8d7auL49#p)eADKO+~P=fG(S{yvDXpykC(GnZrk>Wv$baO#E6lJz@~TX zpyR3Q5|MY^Fya+1i^DOwCs;_T7k%%KJc%JA0M}YIBJTb!JSiu8+q!S>arV16<#RtX6qH-oFd#WbGglltlozLcxmv`}&RrM}bZYZhGE}q}@h;q;8LA`LVMsVPbzwE~y zkdVoaSVEwmkVRRS4Z@=sw%xdk)Yj&J&wiTcvIJNI`i zCX$YTjdU)v^$O#-8_ODNX2#L$V#|^-Ut*yU= z-!Fd7El1)?0|v_z*OGr>;NS!0;59;PAj-e7>QZ2^v<=L($Lf}9T8Xn9!a_F?5re&^ zs;!sq%5kZ>&m?TNj^9x5!=qkIwboYXfkPrdqu?SoJdI_?7@T>y9}0cQMKL#75H()OMs_n!nz^Cypora!8p z(!mOh=6XdsDl;V+H;1l#=*Ec?t{BHM*%q^TpT>=(zi57tiY*mXJa)x+DBgh7Luv5z zF}d&PCYi`^!Kv4;X|vBQ$R>hG+jWbi!$Qd_)HE$YN6qKT>d4jgKgdv&;?iY+aZ$ni zSb2%i3B^3i&35?F(05@RzN+$6G=hh=XN%q1l|*`>SiyF$gOwXS+TC^2#dyu~Ii~3G z3R?AssL!E^Ea8fWt5-~QlQwISDSwQLAP4TIs{-q&0h#Bo&3PjvuH0DGWo!EZ@B>7@ zthjI}g9AYd;DVrs>uVF4Xal(=g;QYW9DOv@9*fEsb_&4OHDY+t9WHW-(NCIo$!J-l zyq9Koy2&!bcIvZ~qii;x&F}<-elkTXOC{gFBWSW~!oH+hgulxaot6%y8$BYaKhN*= z+nvhiSyY1i(Sd3&(G9;NMWIPM6kEFZd0*S=X0iY0NcU&&D$DC(`pRCZTvRA~;qbV%wC-G82QDx0>yh<039JM!m0zP@XL+t?e znk*b{YhzCSo!=mglljVEoZvb%1P`HqF?p@Nc06*rl}^LugwV@O!I2g2c0Zm5QzR+LqQ)f{9tf| zifOv6N7s5`nJ!;rD$N7K4DQk1-3VjAF|w@GWS!;a{;)QJ$v*wk<>_fNUcN4kx3^Jg zMq_{K)~hJu;=}uZ?k~cQNnZFoTCf8>ym?^kzh%LF zJ1yw|ml;;BHJTZs1jOFsj=&Se-1OKOIh}EJ@v_b-ch+t?+zPjA;nvhhy#vdjP#`1qcId_$WUuAPR06ioOk}pIYIGvUvK5VO z1m>C%Ar!`7mZ{}f3_0*s2Z)Cjr*1Udea5t8J54l^4vEt)-rsxnXP(CX) z=GuG&c4)^?2`#$N#IVd#d#u;U)=Sh%nL=Qj;T1B6UKTzw>#KyjrZMEzjh*iq_Wz)iNkAYgTsFv5l z*=8hfZ@XOfxT z7u|n20T!fGZ#fac|H=6O9eaNhxQ5x<~*h~fofPrRi?d9HN|3-9MWsSFTu>yJH@MY8t z2zuYG1CGdI9Z$UDyb~`>wu<~elwxFrR1I2~9)uc+;DlTs%#N~i19$MnlKW@hQseMcndt)WdM`>>VKk96|SRa~mK(k$x@hJ$ckC|VuFViVaV8y6Bx;2ps+nae#{ zRV|T9g+8S5mA%@}$;aSix#>i-jo82fdA6W>b@lb}{JMC;`R_qhy(A4;&33QLIMq^Y z-9g?;VD@__4LmvZGTy+EV!lErzWZ8Z8PEND?^#wW{f2(m*;^e7X_VKFclk;JEcqDQ zJ+H=YDc07B5H1hLbph^^H$-$j?%oW1p)Xn<5oZJpw{Q%1>3=2^{8?CN_xO%@JnP_d ze>KTecNv4?7v+NfP!}_uj???`E)(s2oXm0aMc-eL$Q<9e?2Qxl9&WlGp6k+ft*OS+ zj3KI}AdS0;3nQ$2ez}>bfNInSz%az^p2J!J!hh6H5@$&iyw*Z`rJSihr~gARjkAO< z=G|sLzW%=FJ!II@64RUjhV|yA_SLH)e|4QI+{m_o3W3d2;Ae|ej~W2J68_&zFz9z#;t3z2)*klxU%CK++z%E$Qtd3cQ-l!RDcCsF+= z@WA;3W;k6?wV!V(mXQ8?L!X>-m5m{e!w<#m2v26sIt9&df?riFW^xNw%*sX*VEqiH zYla7G7QSwu6QfA`d=TL$=x$ODyZqDlC@ta47HvVwt(%^{&YxPgka1BFT1HcIYOh43WqT((>wl&EplJFIC-Bpu?E2`i^x z7l%h0%{_U@S|E`Mmc-&&B9oWyi9ycDQ3fy$V`un`L=%z2KA^j%uB{V9$qy!w2_4{RnlA}^N;L*A<|iuaXYnJ}&$7aaABkga z0!QrOR%2`Gb3Vt8wRJVcG8N%)wi6Sp9H$a!!P6i%IN0-T?y?4ghGpd>1D(0;&$_ ztgvn$Y%a2nRr@r26OfvCEHFQ38ATDXin<=&h-@=!6sO$Y<1j&72bE0aOni!c!q7>u zSbP26@{8U7X*j``)|;B<$u`}Ov06z#aI`d9Dy>AHU4M@n2Z&AzFEL2+D;YQC(O~7; zoEGTm8w)#rhPKmzn9j*g2O;l*-Wf4HcfI<8Av&wZh#s={FP)BnS3vIK*%mhR5*V2u zxREWtG4D4H{8GFltX+mhs!m+gcM)i2 z@Ez=RB(m>&G&%1Xbqm-8Dr43PH-|kuUK_8Q4qN>;qI^)kW)Xb`NYe@GLNQt1Mw*3T z5GQO6339foLd%SlsvX~qIw2bohBJP18O|$VHrtEq6(q5S7cski^~S|lC+}dUBI&WD z@@2P0>~NN_6W~8(B4akItSBz=9UQRP6Vaaa5KmD+*-=Gf}wOzmi)!KPeiqSQ7soWv9` zMO{O8HZUNK2ag?pyAgqbegp-Mth9dJ;9+2}ARekS}T4h}PmI z@r$D$6UVP2>F_u=Eu+I59G-^1(#t$Ruqis-5Q@W4)t#--X8x}4+dP6d_+0(IG35Hi zy&K_pBPA6})iJ+TLP%bDch!-X)TmD1D`tR%(uZ_YXt(fS8{_T`_+WvqJfaPU^NB7S zo_e#pp_f*dtwpy>3_6(%LSU7;P<9nT`%yG-G~zfeYnpz}qHW8%wZSsn}Qf*Qb2 z!b8ME#eY^X7)$`Vk}(97(<**pWXke_2!fnXiQ?#^BJdoj-il>=fXj}5(;C|mFap0E zyxuRZv=oVs5Z^(2`F_m70ya2HGCKmMgF4GwDa$S%P=4?egb|~wMPGx@z6Anmq*z{9 zB8JP2lLsBhVbpYFPb-9gsPd1{_lI4qfcAC!jR-cs_!Rl9_nXKMglYU2c>w$+5`Notzw^>yV{c zI2|{U%J%)C@JInHbD{p-<2iEHyXPo;7AD($e65}}1D z?hP`}cq_p#DPDIxZy@eC=hw6|LHhU2(Dxx_d4Y&^0hrloptat|pXxDq%iw{4(_?6b zQL(0zEoZy%Wp0Ok6n!d5zKTRzZ_|xXL5#nb>J$48u|t#E3E_QMII@~1>mKt5Bo0MC zZRf8mO|#^$tDs@q!`kAq*%3aAkXw?<-|*p9<%_aEzuFe>yn?U=%XcAhz$F^ARxe#W zx}D8$%jueZBDqs11Fju>Dx}eeIgQI_UzN$X&T?{OXkR}L6_3LDdleN%CbWqQ zYYYlElulLlAGxND?|wlBDHeA{YQ5!<%k1Md(+Tw$2u^^jaqM%fWV7LH>XhwNZbRWP z%o$Ffgugh|dd%nU3M?5d)4J@9kkLaV`bqljqjmhxkDsOUmj>6pD)Ss|Y{hv|JjM0Q zaiWBst}ApWN>pX!-a;1UHLZq>zmSn}7tz))5@Ep)_cTrcF`88w#AU?ihS0kF(8K z9;fZyUGRN)ncjCB4TC^3=LZ=}Ormf6`Y>D1nFpDg?Np>!in-#*HuX3T-3hn3HSl$A zP(6WgR?iDRw9m>^|B)fl!=BQO!DDEc{5oG`ypeGl8f_ZD2}cYtJy0u$pFtdt_$nd^ zk;txm_axm6)Bd;P-r4bg=yRULK_Ye?x1kL*#&(h2YBnB{n#msPr~S?o{X)HjX2m+#jpeT}((h?HV0@5HMozmT1QUcPs=n#B)g)o3JkLyLN9ocL8rnI8oipLsh;_W za(|Ug0?`TcU59vQ`;WLpbQkq#7_8?KMcd~I2253z6QXDe(o=_9yRqubUP9_}V4}X+pPiRPJ%@el=c_PvU#4 zph$|rzjSVjDthB^Z-JDEg(iImkQ*F)^enZH;O9HxD=i;ZCx{?O<1HGztBdDgdTXm! z+Pn|U3io^6m8-jz(|}XqaB9^CB0_zAV!zynl9hA6nNKBktiZoCrMr~bHmA7c#lGe(sJIhk;r_33q0 z&i+|MPqhc<>PTA*Q-Y?njKFjKH@YK9p{iMFI zO~}a<_S_e1skxoCiNK@c*tRiceC%l>SBHcf1Z}A< z2+-}BtZ^`Yg9jMSogiVsqNS$KlovgT`o3Ab#c})Qa9<~8B;>tJ8Lf|L*_LO}eHbJkEWT?%O4`KWc4m<+ew*=qL52?x` z3Va7Q&^gZE)xn#ubSG1ZPGG*{FUPZ~-3fv};$=Xw6BhC*^6b)i& zEh5eXC{}5zNT~*OD#u<99>bRMRAuHxAFepMs2OfQ){?L|&X#Y_Z{wxuK^W~emQ^o= zAyIv1&@I6KapPb_1uJRdlMk(r%igwo8GJR(*2mIG-6bm&^frJvez~CO4OE9m$O6(5 z#8M>UV&VZ2t-AW#M-j>qLP$mlCZI+UGn?ym{B)nx9}yB5r(X^hqY-f zB3@>A$X^_94dwbi_i%k*xOg|rPN0I4zfQyz>)!ch!d@9(xz$wOx~CSnV?#yH11tGy zjw;&L2GXRjuN0~+{Lu(k+QV0I$5-y&MtgaRB3r^gs0r)6dZ3)Z`3++)#_wbS_vpb# z3x}a0S<)EM;=o5AB02E3`UphJSzRi%oHJC(t9K%ZfePaj?adM6uIJs@*5dW~e6RaB zjHNho+2u|eY}y~oY7T7OVN-pM7GVAD0@dkj{rzcI>q($+ zduG#?=>sKPgmGR4qwMI+W?!a8^(5;+=_N_y;6WWI5_g1o`4VrKPShT_Z%#VAIZr>4 z*f5tR$;u9!WCqJ3LlHF3scw-=X}=T>+uLHA`A(cE`iYixfbpP&YMQ$$d}+;Pu+Va? zKSW+M1esWkfRnO7r!AUKykSo#k~qvf3i78s>uZyh)x%y4hUaQP+mJ(CF}>mGXZnQ$ zwn7|T&X zWo3WGR42*SX3VoL0rI7!AFMubuen2&kMUzCfr!s#7G=kCV8|_(NsctrhaeWL4cd27 z9X&tyjXv%WX@s3$nudzp8L`_bjbO3wd^Rmuz!|U`v~G(hOwL|aB%l0Hj`L61>|2OL z&w;+TUZ>l#yN0zu-(*y(O=z{C7$e~yRXcoXKoa^S%9i4yeNAMyEsAZpZ?@(Oy8%Oaq@bSG=0BA0Y$ZOef#11iu63AbRQfv@bLB3D}o zvDV^7G7+#Lb3ULA{{7urh?Jl;$uV;hvcr5Ccxk(O!{#Q6K$q8J5fz`PlJQOkY$6Wr zGJX!i7O?Ytns@V2^%}bDgnWp*uD7#ixadG5*>X1(%8N?q{i1cc6|CRLUs=5x4;S$- ze(6C92)eG?*^@DM&?d7kew2M=11`+KEo```32JCcga;RWz59n~41OFslwqoRi_H;w zen5|qW>}#3lLZ&u0ig;7CE5uKBB)WUV|%nVaOzAE46S0@`&;!uzyV9~;?1Yv!`AB+AIFb1k?=gFPF3%1`zGbQD6{mS~J<>%a}xbT654(1Cf zh5?}cJ;L!{wZH$v5B&F^{MR$Hfw!o1`drMnEJ=4eME9C(&_&0J)#m0%rb-%(#|Uu)gJxp&hVow-hX)fkp>14xID53@_OIW zc!+<#`{ajV%?OYJOq~t+4_AI@@r%9|uFIS9^qQa&Ai4gvU$SgF?vdVkmE0fg9$e@PFo-!8}KSE#{(^nHRam_(e!Hf9r2?`X~jsXnth8 z2*ia}JvL_X<)==2AO7^6;dT3X)x9>FQ3O=qSkamb@BieNGC|qW7D&#O$5${ zQTLQ$;jKvibvOQRm;Co=;2R?lz32#8K}SRTAoE<~s9zTDhv@~BNox`4vp#~WUY-1(1-KPTw4{pD*H0H=*bC3E26tLFW`FXn&$%fKt~r_g(0MCBrZ zw6CQL73!aR!+%(T|MQ=?JV5XG3XmV4f9j`buG*^cgZ_9W^U44J21&o!03yfL-4|27BJ)8({Iwr;udd{fP}Ng%bu*2bc>dJm>ioiE{?nyI23v<_8-cx>fd{ z+Wf#Eq9eiQucem(0lWR5O1XbM`#(R(NcdQqhE{uYw`Z~y7qM1q17|zdDHIg7-gNe8VtT6%tcR{fr z6(24->CcGyr*`MxUyOhEw_A(JQ>Om#m(L2|9t0v@Wphj;<(LPgYa=+@53N|S-{fr$h5M)Z;_b9Mm8@cuOqH(q_NVHqty~lDkW$8~( zeUTbcqN(H45!-=6^QV>B&y2(GCs4>ou2?jhyCI3w-dXp{9De*ZR9)Pe*V1A)%rx=r zVp-=;AY>4OP7lXFwE#5p&OLgz_v6AurFCW2lBYw3f3JFv1w^kV zCx74d%VI?bqb%|m?o{IpCPB>ZD{q_)TzRwI-=a|1b z(D<}adrWc>vf!`4eFi7&@43yHbB{sX`649t%&zve>mF=T#4`d+>K7ZcYy}mN*fXcl z@A4({c1mJxDy{^g@W^+5aR`EVVauEB$W`Vq7jq#?oiy#{+IO=Jkb`psT6{Nzm$Pt( zrie}F^RaI#jjEZ^Wf;N*q;g!S$J(V*qIgH7q=#^US2?hpzz2#y!C>R&e;*O`Yd5{y z1SJ26NTJ1vcFqYeY&OKUW#&5x4~VIggRuIObL=$A97&BlDcuQeuk$DRvQndSC( zzd%Y}MI7Xm2gm-B)QQ9UyG}@mkBn-R>QY4pz%#Vgfh#X=< zG`z}}^@lRa>Tp>I0P6s9!g>0V#k#}kCpNbqVtOL<+ciy~ZbWb9hnneW{^JBHZaQ1z z8CV*0Ef9*$kdDH9RO8Ydb!<0C`4PiKZW?=D#G65!0*|1}P$)&-%JRjbVDvF)1r`7e z2ATlfd46KiQ*)B(7%2QzBUImlEbb{Bi+8h*oSM(J>`lLLtvo*|*E_g!p=zf6jS`RpqJ6@ zYr)YZKjxsw|GCR8m#>l=0qSOYumpkROF`7Tssa+ABj?+VW?*BE#~V( z;e65t^dRFhL!7KaavUy5h2f*u1?=e{6rk*eKJWxo|1Lg_eJQevsC~G(SbY ztoy-heqe^A)!hExe0P?6tkNngAWI_oEzCyD*UC6nn|7cDLaaEPEtzF)gr0K+9B_n( zbCoHum>j9u8p^5*OBIf25BEd@ zRW#)k->?@FZ|*&MF-x6W=5oG93am?$kz*M1RO`e5$$*J0d%gU4+wrRs9^Bh?!0t3sx0PuL z!1Y383dQN@JwNORKaTi+dCav5ZNWi!+K9OHVTNxt6mm1`!y{aTGr%ByaYI6jxx_e38afjA3&R2`ToyuWYYNw@Ap%d}; zqE3R#+@gGuwm-GYW@O=;b@QCLggd;bxDoeH}OF4H|n+3=YVVTqh}SfZb*w?-##e$SS&d3l}__}Zz6#l zOs#5NEuFz~XQHhkmoAHTryRfESZP;{g5l@W@T^*qpquTgYjH-yQG85#?XU+}OnNh# z4M*>C4Kb-ywtEYbEqA6HiTeI@f&96so*5nnBtMT8dKp$O4(nx?Hv8bT2S#MirFHZy z9ujv~YkO;cmuO;gkt9Cc9OJ1yy|kc0ovbFFhS4UvP{>!SRan1#7-zLP%9L7Jh;OGn zL=NMs<%347HQtIxny$SPfMb5K)n(~;bA1Q4LAV^4e+ZW4DqB8vYyR{AORs(ba9WEa z(GkD<(zSp_MY%+er7mDKD7;K5PXsB{M5KrYBG5yvCE8oB+W_=Vmg(f}N+Fy10#$i9 zZ-xtKsb?%)fsUz};x?*6z~+fVk)g_x&LIc%)d*-CGxKGc<{DiageIXH@Vn`DD^@Ho zL2#U!SSY5C{ZxIXMbz;`IYa4;lOj5Q-EQQjx#%|kZpyD&N;BI)_uvn%Bw{yfJVGgF zI=Ucy(bYFwe(z39?XVA}wriJ7kr3WeA}CQhE!M+hUBdsonduSZi$Og& z^i5Ld`trA$h`S?Xpb+XyvvherwiTGmqboXF5(w-j4Haq^Y7Yr6g5QQ8s(_ z{QHuR==L^-U9`Te{S;L2*9H(v=*mni;_k%P7WCY$q_D?KN2R%| za8X6iyXfy7I3~5rABB4wn)#}cKhbrQU=IF@q1#}to%BRXB-Y1T=7p-5VsQ1`r`L4n z4|Y<&1@~+jQUu9$V|PUFj1}=mPns8XkJs>vuk|LmOWj{7*AH(WZ}|F!r>P3I-#oh~JZd=tDr| z*F}oSw?@o@wAdjs^pVyhUZD#|(5M#B)t8LjM5Sr9hmmnd2#6}nG2(W#V!?ML=X2fT zCJ*STnPkoOYZzb6DVrvtLB=)w{HsfrAEr1l>Mm^b>YeAHF#|i~Oo+IZ++3AOXDA7JZIu!NPjLynbGd?d1S&_Tt)o84GGk>2ru)A* zx$b~$eE>8rIL$7`UxZ5@q$O_O+K7_R#SWgI7h%ZcJ6JAsx?nWwG6Tv^+*|ic3XG=| z^bYdg^Qi8`|)V?YSk?u4Z$zKskEGxvColDL#MkYzdOJ=vG@bRZV$SWE^VsD9BM1IFgNqS^?cTBpHZe;&M_%Wjl5Yz7ys^unXr20a&&aJ z4YW+~8Wr#bsCGtWc|u<3DyB7|t;hjWH<#ayT!vUM}El@)s%b!Hl;mxozsg_W2*g8rySAppQRz%-@ z-S5IJA(hZ-t@BG(TI$6$BfOj-lOT!EWfD%}-2LXhzp4=^2+bRYJEQu`_qz7?De{=t zwzc|rwgUeEJAXDm4E~F1L8rE2kt=nP5F|ANVlEbXK_%)EN2cPkQyY@RY~AC~`*xXW zx(73MI@R|v+2qQSq*l87OAN~Lx435v2lHJWL3bN>hfR!Ii-LBo1(m?pjLh*z& z%jqG5VIjZ}5|PmxO{~pLd+YyS;%Y2`8Hyk>_Vwl7$t+u`#00yFul2g|!ZmmhIW4bM7V{DhCH=eL>hBvZg z2Rce(w5CO;Kt~iteuiRM05*r^3)i5b8WiJSTXDSNABAJnl8C#-xBQ>zwk&m~^F=Gf zX7EO17OD`-=VB6s(CQqr6Fn5hW$iBC@;(aszNHrjxg2U&|- z%7@{3FIWchpHr%jLe$8Zk^2U!7}vX<_17pe8Tp{S;XyzI z8|JgH#~6%R%CheRKzB2AD+b0!tCkLHCQ@phKo%98UWdyEJ$3kHOeV%5ZkN#3jQ!=V zjV3jp5KnV0}WVL{u6s zA_dQz%WUlsbt;u6CfIy$$!e?t6yo%kKmfc1UQ{0Q9rZV(BlUcAi1uMKV z&=n3D-3b+EC$^cgDvP{!;qoB^iOS6okqca>etpM8AM~tws2~NjR_wDEGFw=Rz8k20{IdXyH zIq6`YQ?5N*W~(lBt2F?JqEW@ES#al%P<~AN=S!2&S|Yv~6uyptjb?S|$f(&UW~Qf( zDFD@q-cAK`5XFb@!-!fcdf$hCV9yPbAN5g{`@#{)Dh|rzGJdMBC$qi*y-R!`B4iPA zez--NqgZBLy7diOp1@^yg9z3g7IrK`5?qF1R2I7uIO|H4^xF9ddp&NIv>Xk=$uQ4> zo@~OrK<7s3$BP%hvkcqV*@3>^e5Iw{O&3J-iz9^mB4M^ZGHIe00_R6tSqEGmm4L%s z6I)GItaDiWghaURuM%8ib>^|RW%G?pFJKcNYx2zvhn3@Y9D z(P2d~p2R3+`Cbn$DJqiyjUI)0%r@J-qokK<0?#Pf8_t)QW;QLGg1 zk#cN4A_vbTf++Jdb+NtEMquk~<4_lhME#v`M9IQmQ(~APbQ}k4$5cACJit7S25R=b zXnq8tQY=lGHj+L{-f?!B{kS<@#1CReVCD8G2%Ka@&9Flfui}5HNQ#exo(R{)0LqG- zs+=TgpqnOI{u*8PZrEc{34*T8@J~W5zU`?Cx!pX!mLKE0E)oJF(=*V9Gs>bMwv~W8 z;}EvQhd{pv$+4tqlTK9MKO*1$7wX>sdj0mZ0N^nG6A0xyTA3b%56txV?+l~rL^z4i zJvI#Mu3|w+_@&_PBWwtSYZBBK)paE1=jTIgdTzFQU~J;Gd=Ig2ee_ub~RytYAZEBI^ioEiY#d zOj-1ylcBjf*8brq!ijP=`2FH~0cNJ_46!2kXpDrh&Nlmlu7dsM71eZ|(u9xA6W5xY_VVbqlo;W5|5JUzUwg!itR1{kVglu`3^8fqXT8jYWg85c#g| zr;qSIuyv!q-6mFZ+$tH-9Qf*QKKt!qQeLMGk@f`Q;Z0u<0Z*l2i0s68O0JkD2`$rm%ELyIbQi^Uwo;d&1&Dbx?+SE zT9`=3ie&XGanU~tEqa6WBNQ5~j+|e^;|ZPZFQMC^WCy@@$9=of$5yDa_SfNKF<*QK z6W|8KH6`q3>*1F`5Aa?mpQ83|Xw;7)kho-&P1{RBgTa~w z&_5_t|Hd;U=b@lgg0R8Li!m_-8{U7Tas(M8t`c`k3B@9=qk4V%0oZb+HpBf)H}Dsv z+t2E1Ln;>boaZhns+PT(e1UnmlI@)5YqD2}4S<97I>t|!5~jxCBt)KG=TlB@ko|M0 zr%4-F38U40+5(~@8pW*`M%NfZ_p3maLfLTc3!nLz)>(3n+nEN@E)Y{}f1@Q|!R>xm zsfGSNPgTOFHgcvJN8kJJhs#3dPp|+Jw=a;Az2EFs3AgEB-poM%dN(U!R%}Ix$493J z=Gg*hO|{|i98L$nvfQ?<=!~y^{mzsF~zeq8& zsLb|<;&!vH@R}XVU1Cb$vtfth+QX;`Axk|pUSV*dQx4W0gBemwyGcB6T)(=12E=KE z(S}%fJVToNh)*cZ0oZ4JrA9Njmj3U-+?b9#RQXb;3;MfRaK`PI8{m*qq}Te}Vblw5 z(4GoO!l05ZD13~0bwO{$!YF7H*-lZ$haQYARCTcf0Wy^QA+IuloW@(v4yK|RX4BKO z#=?`TonotfkPxt>JEjVSYmM&CnHQkp_Yrg6mQz@k3%;CGzrDX4gJrO%4BSRjkJwL$ zTnHt{a0dqHV_06zWLzwR=G7F?GGN|D42cAbH4QXoknLFb*aZOOfDlhSh6Gw@!;q4i z=RKGXLmR9R|8wj4Ge;8O1m_!g*VUmlF4>=_FBc37l@C8n1TdTp7*M1OU5Z1 z46b$i)`hTwi?*+yzNi@*Vh8OG+oUIY{ZRQ5ll{d7XcT{wZR=@sy%o zJ5VeB-i!j!MAL3qfR$1hZP&<-gff|^MD4AKxN;FagG9rsgKx6Xj$%@PIrg;x)(q=d zugp`Rb%4rsXK_v{kkQ!`S0P4mzETc+j^g2y5dpXqeQ~c96YbWtAZ?(i=1%_c@iePK zaS-q|XW2vD=kA3>2EcSRC1JKPs~v0h)T5ppmzzn}oF9=yaUiDX!93#Tv$5a0-~&s> zH$ZItyQr)7=>e~+w(Z+a?tkAnDgkSU1sn>1rTK{UUbQL0zh=F|`hIxVp!P0OOTIt?ohEr(m)Yjm3|CX=l{ zm`&!~0~^Un^G=x0WU`$5cxQs&--z16<+&=k*MZcrU*dNM3kz7Y?h<>c(my=S|Rj^Jif*t(sCmV}N>}_n2>Q^ihOn zI3%x|#FQCEu-Wae8r*M41cH2%SpvLf1;;l47-esBX+e z($s9Z%MFKwLDNR9w^pb6*b|IYKlc*VMSwzi?Oef+U{c0>=>~L)_N6l#Nal!g8fJ2Q zv+t9&^?af$Eyxnnd!+Hpl1lM<^)b=dKwvP}0cvxaIcT*!t16`;@=z;CwmfBSS63oR0tljc3&*XkgW-Byw;)Fg8<+1o(+s#ZL5*`F%B z2nI964es9hf$8QbZJJR!QtZZXjYMw6^0OkOtvrPiNgz4O6vb+jTYBmJ9kfw^#y_Q` z0Z}LWg_#=yc8GOUF$OYeZ_{3YtXpRi&wNhEhYKIlgfK>L8$5Lp%DjeE*H-91h6Wt`i4`7fH-({i@?!*b@$D4 zYsjO@!k{qn_d?+IQGrw3T<6IN`(2A7-~-kMzWFfHtpc$HtqlK>uoE7qnNp!v7lyf* z_k~*pC&v4$4ku25UVI9Iik8m;tr$$eP*N;NgRf!6Z)%cYOQW1=3&>L5Mika?O|jQLXz;jTUB0+D-VWuwKIOTGL7u*XYl+lYLj{Yz;n=LO+4dVBqbljK`Dz-E7=oFJJMS2<=%{*)BEVs z-T&TK;d&4OxZpkzOJ@{6!71}i*03LtJ7@u6?+(~zlfM7$3XV^O{_)+s>&4E9mmF}a zu(Rn;i9{a3@SsvHkc^(07V(8lhI7NdG#`8+ej9#Si)TnU64d(3eb=@CupkH^dLoPE zPQ?B_w5`2X2ZMSUH{Qp$Z+|~rOIRgB_-1VE7>azdepOyLx=@=xC}t}k}j2XW`-TkcALomZ>LJJ?*gM4zO6Z)?NsAR|sjnhd{rLACxTu`UEn1OD zyOAxoFM}-C#)o|Fwax>IRM^GDRGKO*tLOCtCCk0${Yi^EOHiCB^7;y1Ad7X!vase4 z4E*r8bs(){Bd>-UKw1|4qPI?h%VuyPTpzW|whm~PSG833_J^#?O*&&=Db@v*Qss@? z^>*(q%mf?c)eHw%Hxwuxgj2j9q=_->`Sfi+_oiy#Abt)55uD7RQ|a~M<^)bY#5CYo zsd7U|cp?~qVQR&tyz&~TTm;>^(_~fNiueAF4viNFa2-e08%>vRTNHqePH^1!Ioz0N zE#jQj_yioh^(FF@Sz4yVgu;;PJt6M14U`+(;ql}11eoxf8g90WpTL$vg1Jo` ztH`Cf^9{G-F55-6T0BNK@rc~RtQr5w;^>9J zK&ijw_Fx+WpG*16qhvjMEW9$mcLclW>pYKXWP#LXy<_`jEoxUy+hCby+lRHOEXYnZ zQXS7Mq1-`12pK$Q|AMzik}^%>zbB6?Oi*?^QuK-qiq^(o84k!KYVPMGj1q?6#602n z?hCO&Rp(-Wt;cJ6E!WUn9%GA9c%6X=N2UBf{TC^tkKo<$b?FupIC| z+Vki3Xi6+S&P_&u(9V7UMz`;i>Om@n;>be4$)I}4rAPpbZ8YL@l`C}($kMS|_xg$h z*>fbLoF=Y+FHFw|A{mvx^+{Fp0j?-S`jlbwqJD0rSm2?nx{2OumXcWNG=FXIh|{@$0nQMcoy_qY-|qqxomZ z^Y}_tK&=>W_?7c>5tf$ae}6IOTuZxazWl)H?py4EH}T`sL4?-g4t z>pC9*(aLbOSgApYq&Ivl&e$0DnVzzZzlpo>EMXDdXu>0~7M{Y&c zj`5baecxNT1x%?Ih40}bK7i`}PW1IqSYdGF=qpkBRBzNAO4dk|< zzi{A@?LuRcWl!rRy&#^`Eu)csf>$qEsi`0pYXQg)EvkFkOG~4>MUSn@n40`s@y7*jm zE)R`d9Bokye054$Q{R?X^50?!x0(hn(X0!V7w)yXtp~aX$+X&HlFCjD^YOxb7uZj8 z4KB}C5+t`OGsPG!>e$m;=q?r#+d|WbPM@kDZ;thE6!6CtM)IiR`kvv$!%uYsds9b2 zS{jCttdR;PzvQ@+C=EKW^bus}9Zu{!H3tZWkZ7vk9cQrA&LO&zWCsjipAf#KFXMY| zA|^I9ip;CJ3uE!#qKC_EZxiJKk*(X}PD>qHrg#D%qblC!k25`0hS9)L zVmKjL#H0OCUQKJy;5I%t2D@;;d4nyBr@C#Li}f-A#sBwT7dPMW} z#(HNO$AbQ~&HCz~`}v@`r@gTbx%8Jiq&1cqA@6LkZ_>chU16RPkTu&jp?H+$JhB+A0e7htz7Cn^`{qN}ac zadg43fZ}$*b!M)0M+h6;ax=1wV}G|%Yzm!J1R+z5>IwEObPHU7$zw|6Mh%(QyTTo; zur7TdgQ`rwzDSo?IRA*&_4-JiV=8MzL+soGafewC2t2MgxxCi+gdTWnc^c1omwUE1 ziAT(__$1 z@9qbB3BCZtVP*@iH5e)5UYa_hQ7HZ{*ji*zq+Q0c#bbxv2w?PBwsNL<6|M0!*d(!M zFa;_HFBCIAz@@2d%2H|g>2B>R<-*d7*?S>xiH0mJ#2bt+y((=or;ckMP)j`9Dr2oS z74yGiaG1=hSYqB^|K91oS|Rf_h+8qk;LqZ>M`(82NC%EoA^f<4LAkKbVs@}E86yvt zYdI@6TFa{eSLdqg-m$Cmhjwz`EU}v7tM+2Vg?zNLyTf^kX%}ec_6p`nEw}3yq+w9J z5}am=T47(dIDWGRQIvIiMNiZP?!mZ0vfFkHut~6NpO0obk)CYrJj+(j`dY(En%xvH zHb#o;GU_DV(%wvXR!z09F`96WmPMyhV4 zqHH4IP8RNt2h4(-7ThY{)v(>wfwY{y+pt#_N%8`&u4Fk5?~t}tb6uUqIJ zw9q(A+i6U_zI|D0I{VEvF%!6_Eyp6|U3pY7CDA#=`!7i0;lpm-F)CP5IVm>A2@CKS z2q47xglOILpThpnw-1611<=NI^GLO})5>Viz;nZ#;MUa$5S4E&2z6{M2rGc&Fb<}$ zhJA>@Yp3f=^}RgL2rJDg_%K-a-~v~ZTr}U4#a8eB+~aG*KH{fkhIU@pww+Fqs7x`} zyO#%drrNrX6Q8J*W?^LZ^p535P-OEo16I;8qMCVV&JvD5qK>bCoJJkVCPj3Q4 z*Nv=&m!A5=#C2o2kxSDp|;I`tn)n=_iR^0TOQGZDtX+1kR z@j-J?9qE2>j~_j%L8SSr>{|WU!mXBJ0c;P*Cv*Q-865e&TxYEOOTAV~Te6CQuU{`$BM@>&^=6kcr@-C&v zHJv7`(H8!8C8SZ#VEG^tZ+sgZ0v4yEC#I|@r_mMYxl!+6x>6#aoKLOvzHNNE^;v6L zr@g8tm_?<;{-ZyECbNR;vM`U=`S6Oip-yo^8ZF}(^<)jA-5#Y*i;5%B^2%U4oEXOi z55*$W@4hR5#!-6`6VW`?S_IA_+?OQCWiORm!_a^;Jd z#ilX0pWPZv2ZJ*W-xO3t4;x(gdc$AXPgI80q8Y}kUYlpX|gO2uc5Ly+-)BlUne z?F&?8pkgjPV`1c>z}&hG@nl3oC>E(P_N4? zDC?u0_{_JsU+V8SK10ra>}lalxr;V9xJ0Z;f7Cz_*tUYfHGYCT@hp!FX$Awr<7fbc zlm>TBV8%AFY9Y5Q6AEiJ_eW{0dzPa4u|WKHC~HBJKM{~mRc*0?NZRYSq*Qs55K-D? zWzwAr3ACVF_Gdce&)n81%fb9&2&kD;@`t60x;_U6tn}Sqkb(5v34O`~$8GtlNaV(6 zX;a2>Ivz!>k5d|9Fvo)<;@FXS$$@?B#IF0}Hw%6*C>|2z3=wiLKFltb75ed=AA!N;Ewn)TgdD3DYr zM#l3%#y*Xu@2+sEL$EPvps!+i;ymv(Kq5!@%5IO=ck4b=$^{NT<^3(Emw!PXf3?Y& zUO)8a36(T|d~90vLyt)o9-2DU;NC+Slp)D{wfZnN$L*Lux6qHUk{(=HAbSE}iTzAg ztr8WWZuw;3pjd4aK|5fyn2g6M0S+qmu4j_PBE{jv__gz?cW{3q_Z=K(n|WSLhE+Hm zYRMGu#hwICZh7AHrQ<_3YLn^eLh~WW>z<>bEFZK?#P+V}t0)~7n?*qPT3T*lT3baU z7W!=eJh>5|a6y;}-C-2DViIP}RpAN!))-ArmIJQsS&Z>o=Gt( zRx&H&bSk0Ulu#fONQJ_-n^-KV)tgrni{}fn)9;sO2bRH9ie(uGVf9(%jz>eX=HeSw zRtli);jmWZE%9`iYY%%G(+nCi49cJPwwu0r5OYH4wXR zgdkV2j7OC_!PQ`_F#Nvlu{;h3!~pkkq_bSHt^_n?s}wtN0hPSqz_jL*K7h&ygWj?@ zN}(Wt4WSHAlrt^h8dZTaM42PUQ<1@B+mFw=_0u(n*?g5`w(TCQ{BLb5Z2S4>H!YF0 zl2ykKx=V51b(FTl<240xdzbaZt(kb|$!A6Q;arfo6{^)cN_1GRzr1c_-g+goU{AZ9 zyM*eC1yql;QyL4S&11f_ffEnQ5Ergc zVz6QAxxaMCj&kA!3cPE~Cob*e6>7D&Pc9E=zHeo6){mV;ipG@L28`*qnXQc#d3Brg zbfHR=8RM`xt_CIUI91sDH#Ik}IUYL|nAAC&pG@UgIi}nYAIZ5|^ZuUO;eyJ|#{k=I zl!qqeYizWK1yKHQ^prKlXW>7Py4CzE)#8X?WIMz1DYZHp7D#(Nf&Y(+ULMGB_Q zwXzm+YzAYw1|!D(85TM?kGE`bjhr`|It5?$G&pvY%f;Uj9W$*}s8t9{eFyE;0_w`R z^-dT&sD@=m7sxsT#SeSrl9qRp-v&I=GLnLT;4=3SrS$iV#@cu^2NmzQ$n%=+8an zDj%!5@gp3p$`|SQobPfSZ%$LKC!?>(H)w*~?lY8kX1HF9w?3W1ar#ILQ)&fDCp`Bj zbjG$K&xg@3L6yjoUXA>NK^r&tTXfeAc(s3`j((Hm$T86IZY_VNk5Q= z5@7z(;2$)NFbad^efK%8U$dwEoW^>iFGjVgYZ2eAs{}g*(4+aG(DSHEn7EqD!}NA8 zFn6UhJoV1k3cgKnm$0`O$#Hj1lT4PnmV=d}e>YdTYSHy#f*4h^vIDr!0b+BsyLLM0Wr2<2)X!yj3xex%La7PVeG(K0k{DiB1VYDjo0WLakc*iu>ZqiRd$`KrpiGrC_ zJSGnS-&B*CTEr$@+lui59tVB_!~GdhL|?l)T`-^Xd=mX)>!P5%L=T-i<~f@}4N1KE zyLuOg) zNi4jo3xLPmk!m~jP3J!2of(X-G@0r@YreVtCGYdg;q@J|4+-#)E0% zBY`gyc{R3T4w?htlip!OX*PM!iDB<6Sq;4hE11ivJvtZt)gN5=nk~{^k8&6oS6!t8 z3@XjpZ!1>8K-1i}kZVJ}+Gyfp5s0uJJVLR@5P%DIUf@dqip70zf0po(w_G6Zl~it) z!YkkC-v zTRw>nZ92zZwGkn~{ZI*-Xg53aM5`et%hT;&s-&~uspwQ>m}%H8h0E3yZZK;(Nki!x zILGL^B+b>RtoN;I>}iMni?5Mh?Ho`9+U?S>WA;1tYGgL@;|6kGdoUOde&=PW#Y7=| zs0;7|F^*WaF){=Am;7&INJVU01CH-`ANh=!4kmBE8x=0|KUjyQwQuasA03ACJ&#+dmHhoSD8=XH2 z?@L}bk&UzmSO_w&7NPQl6mJDX!f1tSvj8xR4j9HK-~*YR$AYr>+?;o!2Ev01e8SUz*E z@y_H^OLM@v++?%S#-_*+!1(ZO6%6ZkAmLFJR^WqTO^zze#ZLph)^ow`Ltx!@UGC+Weadi6 z^W|uwAHdFrKq0V3>Ut$2Oga``O(AkQFH?0FH&&Kll)Os7+0Ad_ApvMW{}r>7LTR8IBV~+vVMkw+Aosw-SbQ71a;N-;AkC% zZH$LB*mdWllQL0aRq;LF7+H@Wau$7XUrPm*YQ!y#WKbHy1GMDNz>pvk0YOfacjkz}*X<)9uW54ve|( zXD#1TJQ}Zt{K1+Lqk;kagZmMb+ETZX^h(ToL$ds>!x4Rn+}sXlN=0tx_9i+Y1KgoR z`t_+6g~xK&V;MJ6uY={TjS}hjDRgniL{U2Nl`Wf|7$z@QbwGQ!sV&b=;(wv}y%A?5 zfITxvMaM<0-(uR~4TEZB!zDe1*;s*1qP+y=W{WRUi-Pg#&UBv#;4k9kTojqb7%V2> zoN#^ys=`A$EGv&$e+6-&LhWF#ynV|BNB7GkyTN3anq(fXlon2IExPz8rNHl0jP6K4+zS}cp((}~-l?a8~Rl@_avLK?w%Tnmv(Iwruc^!}7;Wl(tI zzI34X!9{UVp)0R1NMhxS+ZfKL{pFq!*jvP9CV*1Wd$8wTl7`*=Get}vsj`#n31gES z#npRS6##*o{3e5K#c|9(z1w*63YK729pWgsbVPbn|#YBvaM* zRYc8Y+Rxcm(N?FnC#GD3!-L$?bUdF?b^`&g_aOhJrK4O;z20n^T=ev9?=!gl?MeQ% zM;eTt9&*>4V}(wGpC0Jmf3CyUZsA5o9aNEX$llmHZh>dZG1Wl$0Ov|yt^~(|iQjKj z#6EaGK0em{yTe>%C7>^Jtv-Zwm}*J{J~lO|DsJVIxs2I@80gSA68H>ls?N9fu3+Q@ zZ%=xS)3v>y)i0$3kbf|b(~EBY;JoPfq)p4t4KfyUyVOuyaD1>E1V_O zvIij=PHLx)v_?d2ESJH;XR9-rV-?r>U3C7EAFs3>(%)Bs378wJu{Pym!kkgjwt7X~ zS1y%QA1hSYILL)*f0E`@5kve*|(hNzhX+Y;)ET<<^whHMbZ`l z*8KwU@S96YvIv2pC4fAjM9$jC=m#f;^1;WQxSRt?m0cTI;U)2mcua*ZZ5e(Q@xxP% zMw9?X4wi(_F@kn^6|hOi?kM<>p?=*w6TenwLs+0@cd~b+PV{b1JsGxX@O02b==i!j@J_{S@?E#8}{c!$WQ1V-&vRRMIUhx;Vd-kZs3vOvL zmqylQ=k*&hy>_7pkS#3pz$fejG;lEn?-2$PD2|@j?#A)1Ay>d97dGBZkebczzP!OD^M-jC6;yLS-~o`;#-ngR(Beuuw=Ru5q8T zE?%i-EmI|4*gdQ(I4!pr<8-l=fo62}lE#6tD2a<6ot?U}3rHfIAD%OwdY{2=m$lt=&WE$*F}V(A+*h z_Co>t*?KU;1N=Cm&8o^-$3Z*UGOgR2eoiy@3tl4%u6eYtzC12+e9sVAual6sP0))< zwZMqRj`RFk?%6S-BFcE&{^LWE%1O{2gCoM)%ecxFW21C({WP=_3;=hIbgpLf_|sB? zY}>tfiy4KvxPQC*es4p)4xyfutGm^D-M@1U#E3c($Cc&x!eAIs_ddM>`I27KwT^JQ zcOEQ=)rGLYJe&**pAE38oln&sm|z&+(??w(Aem}r)#soA!gAe`*Bp#w`SXDT5JS0X zq%WU*4nbxuUW!BGeu|>{X__(^YY6qLP#p_!7BLwsj%W%C`TSr{FaMG9*xcSzN8pqq zqhZxVcoK-EQN)ZuOoNw~t>gi*@ka4GRqM^zEQ;Y{(*RfEDj}WLWAEz)Bl0Nh)^4E>&q*ALPdtyTj@%K# z?X*7ir!g#O>uIZce@*smJLOq=D~Es?)YC0Ni)*UEThiJ*uR6X!=~HPnnX`-Q9LsIj z47-XK0|}jgjRRA=Ipee1R#eAi1TuhS@60C^xnEX%X?n|l5BQCwqn5Sr9Z)REKIT)8rAVF#SMRD}3Xa~U} z4z*;i!Qi4dx3FR1r9~dh*Y>&v=zz+0mf1yGYpu|%6-*~+9Tpq>FM0EPrpGFzVTx%~ zv59Nq@2uPbO#&vZo&)NsB!Yg^gYH~!lAYEHWH!tgx6~D5a+DRq6<(ZKI%X!9=jWYl zKak?yR8_mYy(Gf-i^dm1S$yw3EH54v+*Lho)5I{E)8~pdZZsQ_%`su`x$LR_Qgx?^ zqYotsQI}~fy$KpI4sA!U%O?n2DzcVqkR2dI`v>AiT zjXgQUOX4R!c>DFLy`s&cD-+&}Jg8h_jQ-*rZV@NRh!LyB|MB~`lj^{9;&}q=2Q8-6 zcD(78dixJK?FO7r7Q9ir zsOqy z*<;#9{Z=Hi+qt{kRzJaI3c?k`({d{sP}@Nku3#oBb`c~L^k0}wu4v0M^m{LC2M&VJ z+z2W~hvDBaW!u7;U`gQPl#q9Mx{F1YfI;T-&92;hEb3d@YzPoxak|vOK;6fVH>TGj zAgfdw6$x7t$N6|rZMSkBW%!IMKV>&y>n{7XyKcIe%Xyc7t3G@_m|>wpK_10S^5Q<$ zv3FPYSBAZtUnM0D_5mxsB7V77B@$5LU0Y^y7a-;aQ#IPOX0xUOvlw8wBQ<^T6RqS8 zHf#^t{v@o%{a~#3>Ku7#u$z8p($#Sn>gH+S0lk3E zI_)(3_@L%1TV{)RO~Y^Oyba}1c%wN;|N8cNa!&||OX4ykf8(kVJD71q-UWbSq4M6P zpDKMZs42n_-_5u%4_}ggD6O8Md1#8_g z*Yv67nA>B!<~R&Y3n)-_QrQX$3pQ<^Dy68GZ!lY5Is1Vp{W!h6$UV8$UH99k)+FC5 z+a?$n;lQCbquw|rOginSz`bWg{wGt9!Z7(oo6tL?P7Ryja2PnGn4B`5QsW1!GjgTM zbPo0PI1vSTnw=4y;cpk}*tuVAQBK#M4u}I0djwrPhpQ1}LA}zN&i QlaSjg#f-8 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⩔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 - -

-
+**Prowler** is an Open Source security tool to perform AWS, Azure and Google Cloud security best practices assessments, audits, incident response, continuous monitoring, hardening and forensics readiness. We have Prowler CLI (Command Line Interface) that we call Prowler Open Source and a service on top of it that we call
Prowler SaaS. -# Prowler Documentation - -**Welcome to [Prowler Open Source v3](https://github.com/prowler-cloud/prowler/) Documentation!** 📄 - -For **Prowler v2 Documentation**, please go [here](https://github.com/prowler-cloud/prowler/tree/2.12.0) to the branch and its README.md. - -- You are currently in the **Getting Started** section where you can find general information and requirements to help you start with the tool. -- In the [Tutorials](./tutorials/misc.md) section you will see how to take advantage of all the features in Prowler. -- In the [Contact Us](./contact.md) section you can find how to reach us out in case of technical issues. -- In the [About](./about.md) section you will find more information about the Prowler team and license. - -## About Prowler - -**Prowler** is an Open Source security tool to perform AWS, Azure and Google Cloud security best practices assessments, audits, incident response, continuous monitoring, hardening and forensics readiness. - -It contains hundreds of controls covering CIS, PCI-DSS, ISO27001, GDPR, HIPAA, FFIEC, SOC2, AWS FTR, ENS and custom security frameworks. - -[![Twitter URL](https://img.shields.io/twitter/url/https/twitter.com/prowlercloud.svg?style=social&label=Follow%20%40prowlercloud)](https://twitter.com/prowlercloud) - -## About ProwlerPro - - **ProwlerPro** gives you the benefits of Prowler Open Source plus continuous monitoring, faster execution, personalized support, visualization of your data with dashboards, alerts and much more. -Visit prowler.pro for more info. +![Prowler Execution](img/short-display.png) +Prowler offers hundreds of controls covering more than 25 standards and compliance frameworks like CIS, PCI-DSS, ISO27001, GDPR, HIPAA, FFIEC, SOC2, AWS FTR, ENS and custom security frameworks. ## Quick Start ### Installation -Prowler is available as a project in [PyPI](https://pypi.org/project/prowler-cloud/), thus can be installed using pip with `Python >= 3.9`: - +Prowler is available as a project in [PyPI](https://pypi.org/project/prowler/), thus can be installed using pip with `Python >= 3.9`: === "Generic" @@ -136,30 +111,21 @@ Prowler is available as a project in [PyPI](https://pypi.org/project/prowler-clo === "AWS CloudShell" - Prowler can be easely executed in AWS CloudShell but it has some prerequsites to be able to to so. AWS CloudShell is a container running with `Amazon Linux release 2 (Karoo)` that comes with Python 3.7, since Prowler requires Python >= 3.9 we need to first install a newer version of Python. Follow the steps below to successfully execute Prowler v3 in AWS CloudShell: + After the migration of AWS CloudShell from Amazon Linux 2 to Amazon Linux 2023 [[1]](https://aws.amazon.com/about-aws/whats-new/2023/12/aws-cloudshell-migrated-al2023/) [2](https://docs.aws.amazon.com/cloudshell/latest/userguide/cloudshell-AL2023-migration.html), there is no longer a need to manually compile Python 3.9 as it's already included in AL2023. Prowler can thus be easily installed following the Generic method of installation via pip. Follow the steps below to successfully execute Prowler v3 in AWS CloudShell: _Requirements_: - * First install all dependences and then Python, in this case we need to compile it because there is not a package available at the time this document is written: - ``` - sudo yum -y install gcc openssl-devel bzip2-devel libffi-devel - wget https://www.python.org/ftp/python/3.9.16/Python-3.9.16.tgz - tar zxf Python-3.9.16.tgz - cd Python-3.9.16/ - ./configure --enable-optimizations - sudo make altinstall - python3.9 --version - cd - ``` + * Open AWS CloudShell `bash`. + _Commands_: - * Once Python 3.9 is available we can install Prowler from pip: ``` - pip3.9 install prowler + pip install prowler prowler -v ``` - > To download the results from AWS CloudShell, select Actions -> Download File and add the full path of each file. For the CSV file it will be something like `/home/cloudshell-user/output/prowler-output-123456789012-20221220191331.csv` + ???+ note + To download the results from AWS CloudShell, select Actions -> Download File and add the full path of each file. For the CSV file it will be something like `/home/cloudshell-user/output/prowler-output-123456789012-20221220191331.csv` === "Azure CloudShell" @@ -194,14 +160,18 @@ You can run Prowler from your workstation, an EC2 instance, Fargate or any other ![Architecture](img/architecture.png) ## Basic Usage -To run Prowler, you will need to specify the provider (e.g aws, gcp or azure): -> If no provider specified, AWS will be used for backward compatibility with most of v2 options. +To run Prowler, you will need to specify the provider (e.g `aws`, `gcp` or `azure`): + +???+ note + If no provider specified, AWS will be used for backward compatibility with most of v2 options. ```console prowler ``` ![Prowler Execution](img/short-display.png) -> Running the `prowler` command without options will use your environment variable credentials, see [Requirements](./getting-started/requirements.md) section to review the credentials settings. + +???+ note + Running the `prowler` command without options will use your environment variable credentials, see [Requirements](./getting-started/requirements.md) section to review the credentials settings. If you miss the former output you can use `--verbose` but Prowler v3 is smoking fast, so you won't see much ;) @@ -252,7 +222,9 @@ Use a custom AWS profile with `-p`/`--profile` and/or AWS regions which you want ```console prowler aws --profile custom-profile -f us-east-1 eu-south-2 ``` -> By default, `prowler` will scan all AWS regions. + +???+ note + By default, `prowler` will scan all AWS regions. See more details about AWS Authentication in [Requirements](getting-started/requirements.md) @@ -302,3 +274,6 @@ prowler gcp --project-ids ... ``` See more details about GCP Authentication in [Requirements](getting-started/requirements.md) + +## Prowler v2 Documentation +For **Prowler v2 Documentation**, please check it out [here](https://github.com/prowler-cloud/prowler/blob/8818f47333a0c1c1a457453c87af0ea5b89a385f/README.md). diff --git a/docs/security.md b/docs/security.md index e0dcf2636ef..ef85c357a8e 100644 --- a/docs/security.md +++ b/docs/security.md @@ -13,9 +13,9 @@ As an **AWS Partner** and we have passed the [AWS Foundation Technical Review (F ## Reporting Vulnerabilities -If you would like to report a vulnerability or have a security concern regarding Prowler Open Source or ProwlerPro service, please submit the information by contacting to help@prowler.pro. +If you would like to report a vulnerability or have a security concern regarding Prowler Open Source or Prowler SaaS service, please submit the information by contacting to us via [**support.prowler.com**](http://support.prowler.com). -The information you share with Verica as part of this process is kept confidential within Verica and the Prowler team. We will only share this information with a third party if the vulnerability you report is found to affect a third-party product, in which case we will share this information with the third-party product's author or manufacturer. Otherwise, we will only share this information as permitted by you. +The information you share with the Prowler team as part of this process is kept confidential within Prowler. We will only share this information with a third party if the vulnerability you report is found to affect a third-party product, in which case we will share this information with the third-party product's author or manufacturer. Otherwise, we will only share this information as permitted by you. We will review the submitted report, and assign it a tracking number. We will then respond to you, acknowledging receipt of the report, and outline the next steps in the process. diff --git a/docs/tutorials/aws/authentication.md b/docs/tutorials/aws/authentication.md index 714872b8c49..54d360c3298 100644 --- a/docs/tutorials/aws/authentication.md +++ b/docs/tutorials/aws/authentication.md @@ -19,9 +19,8 @@ Those credentials must be associated to a user or role with proper permissions t - `arn:aws:iam::aws:policy/SecurityAudit` - `arn:aws:iam::aws:policy/job-function/ViewOnlyAccess` - > Moreover, some read-only additional permissions are needed for several checks, make sure you attach also the custom policy [prowler-additions-policy.json](https://github.com/prowler-cloud/prowler/blob/master/permissions/prowler-additions-policy.json) to the role you are using. - - > If you want Prowler to send findings to [AWS Security Hub](https://aws.amazon.com/security-hub), make sure you also attach the custom policy [prowler-security-hub.json](https://github.com/prowler-cloud/prowler/blob/master/permissions/prowler-security-hub.json). +???+ note + Moreover, some read-only additional permissions are needed for several checks, make sure you attach also the custom policy [prowler-additions-policy.json](https://github.com/prowler-cloud/prowler/blob/master/permissions/prowler-additions-policy.json) to the role you are using. If you want Prowler to send findings to [AWS Security Hub](https://aws.amazon.com/security-hub), make sure you also attach the custom policy [prowler-security-hub.json](https://github.com/prowler-cloud/prowler/blob/master/permissions/prowler-security-hub.json). ## Profiles diff --git a/docs/tutorials/aws/boto3-configuration.md b/docs/tutorials/aws/boto3-configuration.md index c49679b1075..c8caa242303 100644 --- a/docs/tutorials/aws/boto3-configuration.md +++ b/docs/tutorials/aws/boto3-configuration.md @@ -32,3 +32,14 @@ Prowler's AWS Provider uses the Boto3 [Standard](https://boto3.amazonaws.com/v1/ - Retry attempts on nondescriptive, transient error codes. Specifically, these HTTP status codes: 500, 502, 503, 504. - Any retry attempt will include an exponential backoff by a base factor of 2 for a maximum backoff time of 20 seconds. + +## Notes for validating retry attempts + +If you are making changes to Prowler, and want to validate if requests are being retried or given up on, you can take the following approach + +* Run prowler with `--log-level DEBUG` and `--log-file debuglogs.txt` +* Search for retry attempts using `grep -i 'Retry needed' debuglogs.txt` + +This is based off of the [AWS documentation](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/retries.html#checking-retry-attempts-in-your-client-logs), which states that if a retry is performed, you will see a message starting with "Retry needed". + +You can determine the total number of calls made using `grep -i 'Sending http request' debuglogs.txt | wc -l` diff --git a/docs/tutorials/aws/cloudshell.md b/docs/tutorials/aws/cloudshell.md index bd4b77cf0df..e8c37a9ff1e 100644 --- a/docs/tutorials/aws/cloudshell.md +++ b/docs/tutorials/aws/cloudshell.md @@ -1,26 +1,26 @@ # AWS CloudShell -Prowler can be easily executed in AWS CloudShell but it has some prerequisites to be able to to so. AWS CloudShell is a container running with `Amazon Linux release 2 (Karoo)` that comes with Python 3.7, since Prowler requires Python >= 3.9 we need to first install a newer version of Python. Follow the steps below to successfully execute Prowler v3 in AWS CloudShell: - -- First install all dependences and then Python, in this case we need to compile it because there is not a package available at the time this document is written: -``` -sudo yum -y install gcc openssl-devel bzip2-devel libffi-devel -wget https://www.python.org/ftp/python/3.9.16/Python-3.9.16.tgz -tar zxf Python-3.9.16.tgz -cd Python-3.9.16/ -./configure --enable-optimizations -sudo make altinstall -python3.9 --version -cd -``` -- Once Python 3.9 is available we can install Prowler from pip: -``` -pip3.9 install prowler -``` -- Now enjoy Prowler: -``` +## Installation +After the migration of AWS CloudShell from Amazon Linux 2 to Amazon Linux 2023 [[1]](https://aws.amazon.com/about-aws/whats-new/2023/12/aws-cloudshell-migrated-al2023/) [[2]](https://docs.aws.amazon.com/cloudshell/latest/userguide/cloudshell-AL2023-migration.html), there is no longer a need to manually compile Python 3.9 as it's already included in AL2023. Prowler can thus be easily installed following the Generic method of installation via pip. Follow the steps below to successfully execute Prowler v3 in AWS CloudShell: +```shell +pip install prowler prowler -v -prowler ``` -- To download the results from AWS CloudShell, select Actions -> Download File and add the full path of each file. For the CSV file it will be something like `/home/cloudshell-user/output/prowler-output-123456789012-20221220191331.csv` \ No newline at end of file +## Download Files + +To download the results from AWS CloudShell, select Actions -> Download File and add the full path of each file. For the CSV file it will be something like `/home/cloudshell-user/output/prowler-output-123456789012-20221220191331.csv` + +## Clone Prowler from Github + +The limited storage that AWS CloudShell provides for the user's home directory causes issues when installing the poetry dependencies to run Prowler from GitHub. Here is a workaround: +```shell +git clone https://github.com/prowler-cloud/prowler.git +cd prowler +pip install poetry +mkdir /tmp/pypoetry +poetry config cache-dir /tmp/pypoetry +poetry shell +poetry install +python prowler.py -v +``` diff --git a/docs/tutorials/aws/img/enable-2.png b/docs/tutorials/aws/img/enable-2.png new file mode 100644 index 0000000000000000000000000000000000000000..d5246b689ddc19ed7ed0397b34cfcd73d0873071 GIT binary patch literal 349257 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

W}vIm-!XNF_QnBUh%Ec<&2 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 XrI(;H0B+Iz=btBXYLCkvnZ5d75pRAa literal 0 HcmV?d00001 diff --git a/docs/tutorials/aws/img/enable-partner-integration-2.png b/docs/tutorials/aws/img/enable-partner-integration-2.png new file mode 100644 index 0000000000000000000000000000000000000000..1bda7a0304f33d5691ab19568df517f511841152 GIT binary patch literal 298305 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

KTc1QGIZ7ArZ?AALa|O+yND8Gk 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 z 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 literal 0 HcmV?d00001 diff --git a/docs/tutorials/aws/img/enable-partner-integration-4.png b/docs/tutorials/aws/img/enable-partner-integration-4.png new file mode 100644 index 0000000000000000000000000000000000000000..e94dce8bbc7eb6c168f6474d3a71e50bfcdc57a8 GIT binary patch literal 354666 zcmbrl1zeQd);~^&AgLlCNQnZ%5Yjy;Atj*1(A_O9jFf;NAl)@|cQ=UA-5p9ZFhdV8 z!2HK^&$;!#@B2INJ@A=%p4rb{JJw!%?eB``^BW}@B77=*3=9k+Iaw(c^o0!rl^eybesV1`LJ-4SMsg?pK(W z{#)$}%_*ag=J{ljrp1w{Vyhz@98ru&&0wB$oR$y4B$&P$N8h6*FoL<4jh!+zKN(@q z-%q6fPGBae;0G`hl=MUNdEH-|yIYTuA+h1asD)9W=O>ySoPfhOc}ed^ei+DrF-dtB zxwWOdE}2SP$$oNAl5N7m{3;{nRA4CVu_A|n4IW^VK_Jf1$WJgrs48J8~>IJ7= zEUwB1f1xKP+mM!Fxd?l0^bFUyL1L7pQ$mU1`{iBE2M+?CKJ(&NVCn{#WV$BZ=U3>1 zY{{=XnpM)uI>%_rU(d{8g{#o10)~}d`z2yknngVqqB7HP#)ywuw>C6I z8}D++1_IMrIKmXw)<08hy?bIzcCk9};(?*RVF!lFEO&=gBzAyZ>uKwO{1_>I!wak` zUkpLkq_6i_j%e?RGWi-GFiT;*dCtory9~gPjzkH6XAKXhS6$Y5N*6_tE|E&Y@RGJA zzF+3^rz}Q)=E!?DPlPG>X$J*J__a{&Tex#@LIUo$@~?y+Mr8uG

|&CjIs~Q%Yp< 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

ft&vx!g2NTxY+J1WEriHVD z7iD093HiA8Ft3Y7oxOC6?>9-q&&OG==&SU4_e-VG<9L9e!WVx6p12(I+8xJ|=N|1Z zYX511+b7HR19V9}B_&S~3%F5l2!| zk0~h1UK^H~ccQIHz0&pVX8vD;bkgkf6TJbbCd9XN|3bC%Y>dq4x&XV$Sx`Xc_G;h# z`{}mrN1dEXfv$eLx|VL|qb>w|2V{l@8XI`t z(=D4SIB*DX+|jd&ZZY$l4?ST%4CB=YhCXG;j&PN#6A=)I z%R5qNV8AsX6Mr6>#l3TCvQWweq&I)2npkfu~2K=`|gN{qn$+mbYW@r5a z-w?6mbl5=-`hp5B4BdMa68YP<@rFS2!m}}(-@d!`jNpU2D^ooJ_ScRb&hEkCaCK8c zmPS3xEp?l>f{eS~9zl0`W)gT}g%CZ9?@U4cR&i7ZoeSSIpt+Xl%2e&+ii{6V6{O@b zXz&E>t2kmp4uSRXUl--_;W?R(vh^R$#K~d@2l6k~6+sMoAGH@wo-}~`{bH8AE^3|?{J!ntC?fT8fvqSD(;+X$) zxvllr{iQ%hm=MNB(f|6$->b2dS0A$HTbzaw_d0-Ml5|dGW#s`sfgPp#KhymCJO7R@ zJ`*3kF8v1F{H{0czt5~c#+i`b*Q3DfZ+_)ZeESh%@;UkF$;i9|54>63)g$*W1Zus$ zpOf3^WQyUBy!X#z`l}e$XZ|qlejmZ-1nop@BS(IRVeH|ZK7=zr`P?csi%O3i4a!OxmASHJ8tNy&#O3}h$_)WqC8hIc`` zj}C2EuDYebW&Q7SX+p(E()3PC=vt7$mM{gY=zJ^fnP*?*N(?Q%(fhpeX^O^rY+D9j zcg=1u5I*W?egD2cAQHlko!@MYztPlD$_EF3px5t-Kfq6_)m;j0hWY0Be|b-lpENQj zvNHAlpV{(f`&s%41z7*k_rF~Tr+*<~e!~M$&i-43L4h{ECZVtE1TLGdpf7q-$s2&% zaHn^5r1?)E%fe&!{f_h`=Yvn1yh@xO(fy@CkA>WM&o`S{0w67!Q_fxxOw|;6!=4K{=B#y4fe;6r4^5j0QOP_k%s%<1n~O<`5@`vL!2BReKTaf|Fc~O zPf9&#zq-0AM3;Ma7h~psC;hii()9t|f)o*Zz6)k{efJI-RMY@zu&^jQ_`i3HcOm>= z@sU(^=n^+%ZPP#GZ!`Okv;deO2k>BW&peo-2c&Lb`J&kOrS4y+A;k6-M;Q+f?U4cx zrB^9NfFh^=PcCqBcXl`)+v&FTpJ>0sL+OXoPL%2YUn*o~-2W#MD4HIR`01xJVELQZ z)&FsJ(hy33qf?Wo&iyO+zB`UjFAcy^-DS3K9`_#{2f}mSFawz;`{1ug{exQnf>aCe zd0cC&iteePJ#ynGA0*v-pl=Vv`oaD^>xQC(_Gr4C`+HUlrapR}o}NN=?818#jDvtS zjzKe0Xr}Lxjz`rC9$FzRfTBNpR8HyqU(6PnU|(*%y{-WXk@iJcB%HO|>lCin9 z(Dr1HrRExfVT8<`h&};a(GV{jt%=`_DwYN$Tvki`{>j*3pyQ8o(loqO$CMQ_VgxA<_iD zEj?ZaNjJxq?Fl?PDVh9++m3@F6PFc0H7)YQ5fRf2ejD|j!s+Q!K9RW{Y;LPFXAf+w zwUAE;Z1DNhOBIYA@m-8SEawp^JU z5H~Q)P@YfZ_m~LNg0pd1XW>g8zqbGWZhG&U{3Mq9T84XZ4l#~*6^Jvq5hk9K6H*=7 zP&?%?|9AaRU{o%hFP$R3Y^r>8J}X-tsT5$ze9#80aZaUI90-^tOYOT?|M~kwbWWGv zU^bL3c3?y_&2fnpTX7R9zH=>#GP9F zLHXGMLb~C;V_+c(*Bd|7!SRo2s91lIL+jhSJK+C$Vo6UA*;7$b37xBK-Lrji*+&lw zg$mVN+-tw!gBDunHQ(h??pk90kM-`*?JuABaMHf-#Njlx<*N1w1L-77>Aez#;f`{mCC{K=y}3 z_~*dr2EroVbhb+CsQ_eg~EDr{d@!FlY~nZ2%}qYPLD zTI%u89qqU@kzW8HOdrngR$Wwp3%ZHKS zt43O9JG#di{N!VC>g(wl%suoMh5Z8)0;m8ewZ&tnrGDU{KT!h+W&uhq)>MXjk3h1} zJFhvsNV#VcaDMTD+={qxdXGmYG%w%-`F|;8=_*w^#iuGi2>%_1b(Bfxyn6Mj3w3?3 z+rm-x0O=gyPvOR?A8K6x2Nd`1NAredu2P=dX^Q$M2LCr$bY2Y0M4?cL_iye|8Xrn4 zQjX+nv@@J{*&`zlB4wqER98Rv%I%dC@dYBudt8R|S1=jY z$zIsM*CE7w0V5&7h!J}5zsca=XX-O`@;yZM%-*3O0FYsNTKt_;$>F`O0V(~(WIZZ# z^zW1VuS;?~3|I*XhV;+_|MiK#N{kQZDPVtKqrGr^k4s3n4(NBY7q@W#gqVN8S(3s* qAna3r^XTKh!2CaBTiWd8I(b2T|JdyDA=#gRKlxiqH*;>>ee{35aGSIM literal 0 HcmV?d00001 diff --git a/docs/tutorials/aws/img/enable-partner-integration.png b/docs/tutorials/aws/img/enable-partner-integration.png new file mode 100644 index 0000000000000000000000000000000000000000..415a87359936193a6da4f2ff5e94af8543d6c720 GIT binary patch literal 299639 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

+}=STnjYUhU7pKFxb>-C^ zVxxx&AaXprjGVp;HtY`N;w{pPG@#Bxr zTS*>}-16ZPXRA_R(dj4-`X7=}AH3@B&WzJYe7w)<4LkQ7O7YZ`X6kLSYRQbF`7rVDFaV-3h-YS`ku|KGe64>gLK#X|)cYoAJby!{n^Gpb!c1KzelPw-0()S?AIWl68gio}qh&;6s0&B0MLuoznX1%%;4oh_?-E!FT#d94I^P<{Y$y*VUs6M%sRm)p5A8H;;j}34(<9(zRX7D-bdNtz zi(E$*v;KbZE(dAlLZzsPE5nuh9Mx%5j;qMT()Z#zJEcjsYH%NJpr+chX5UKm!-8YU zL{@UsA-@-B`B>iZ9BtlZqyhE_g9v7_)OYV{_o{1tD zKK+$g>>|F3OXQbF(5%evrcTb?3OKs@{h{vavYC;zN;ppKmTzlWS|!>}(CM}siwTwh#%GH2Llh%CnDx+7Sm9G_v>VBehtU3twc~|_RQ~#2AM7_ z;RbcJ0ZYB}m8`O54I#DsWdIvVR(-3!zZ(3M#VUM3Ba>34cB|#U8w`AXlX~ znN-rK%}T0|hF@{Fhaiok5@+WAk=D%&!wa={mVIFw{VmLv;f79=nfvrwYLkJRcKmzq z+#Vh|5>AE)BB*%og1O>Wg2oFbm|rSPOmfgI-bmNR)KX2p7T6=yG_Pbp2~+NfKG#bv zqyZ1^x!Rph9vK22SGbu!P&*6MSl5OH1OyDU=}pP+9r*I+%F{A_+#rsh8(wPGTicB0 zZ@G2wdYdhNy(+R+S?rr%@^xJ z0{EMiBUnLhZh9cSW$Jvv+dKjc-Rc&V=aD-PF{EmR*~bbDuXqO3NMQb+YomPOfgt<* zKv-hxPAF0mgl+_$*k>N~mzPdQ+~rnh>@zNp2?;Q{wqmNWV6LJ545t6QaA$q>+3g|d z&FK~fB+oLgdpg02J>=z-^-wam5`Gspq0n~`$oz`HRS~^T<-eE!0(MBr1P&S+#jnO+ z`tH^0cu^gMmtn*d_#pq)RPZz(K;~N~nO>NUXbV6dEHz1Wh}Gs%vY4y;4M*1JVmy0! zpTQbm6Vg5Ig7X4a!{ZOL{vZ2JtPSz1Q#^HfS$n0lQ=wL`H;@e2EZ;Ef*563YVSD83SZ+)${v(d zk6Z)>)d(+%Cv>{FgpA-NH$+maFzn1`AZLh#5zX6sczBFY<8wNq6yjhWg*<8}KQbS9 zt^4aEhy+4*24aY)Rqm&AIw1_-Jww<6or#dXl$E`yS+~fDo8Zj0{8Ibjft#BCxHaM5 z9W(8JE%I3$Q!b_v9@i(&`i6!V4hi-I_w@3}X%=xEq<~V&gn&A>9z`5Xd|L#Gt1ew8 zWW(>EPReY$$fwsS8Om=U-GsM35D(Z7@U@GMM>F50t@^f0K_I5J581S3|9Wo%dL)a1 zq#!P%DOFed`ysEoBo^}}*&X>Dq*w6$nE$#Hal(0IeQ=_l!1oRe1o@*=WeRmp^7nha z66RYt-0FkJWzUz&y=-)OCSPx{!WT)UBpDUFE5g$}AmS5BY8neoQc(=~1<~!fGE!O~ zJ`4N3B+RQ{dFo?C5k^RLb#(%vcZ_*Ket+A=e{PC)bO^-s>0((p&z_GoCSYJ&09GLo zF)*aFl{_@JSU4n<7+;u04JnG?P(VIi^#8X=}=D(a)x#bn>_*g z`SX;-x>iVviiQT(IbHk9AA~e2*9f@Wt{#$!?EF=S^Jr$DVWb;sD{^kg7RbTmQg5dv z80(3~#xCC*E|+V@g%>Z z$zP3S4iPIUDMgvhZMc98+ECU5pNWL^Nwn@bCDjUgu>;5q;L){b_2Bips1 zHc}&Yx{|d2X4kyd=>ku`Ki0kW(}74!OG~-#x)Hncck)Con>c%1P}?O8+F*QJY;cqX zv#F_>`#A2^$|M)taAww}{lYtX>J%l6PI!$$Vj-VwvvZ0$TWwipLZ(p*AfPJRmD%@I z;>MGOF;|$QSy_b|Z@u!`>SG@2WH(N#*_}^ys@W|QAJhL0rTDia{h#~pp6?!cpkPl< zG?-wDzEU6Ka5$Do;MQ2QRoS(oc1 z>Pt~>TRi{(%N&NW?s3C62J@GGxs8f=D4$}^54m~j>~4lzp-#$89M+wlB4CCoeV_Cgiu{kG0hi-3aHBuGw?$f*iqDSl5%E%iKV~Fi+nJoN_JV~_min!P}O9Dt9lJ46@SD$W~H|p z$M}NbHTC0Us8&ub@hukGxxu743@W7v)bXa$e(`b_qsc<$LTH85yg3#l6;;Agy@TA? zDysy4;NLQxKh4NLUJ%nh~5b`RfNSzR2NSgjx04uFVBOgd9(loU$Lh%dbiY+Yl!}ODfBz2Gc47H7k@GHze zc5Bj7`xxjPryq@9-$kp+YR(LdqzQ+>IZTpTeedRVxj98Tuvt{1^*>l_5Zj-%3rCZ! z#?@L{^WG@bsFRE!l~QoXQ=-Z8NA1l!Rnl_KWG#(d&!gkc0y#G5HbfKYt6ztByS3S3 ztsOvp-JFWrP=RAxlCILX;<#90w4K*wIIl=As@*)nic81-yPf{!aR2Gl`no}C6Lxem z4aPGb0%X8rk&M4vvb?$%Ix~!N73YvJVpScT`GyWUTh*gR?L!nw8>)6Fz7? zkrWXsmH~=*BQ~9tWDieiuoSBTW+|hDFy)RC$_&by(rzwT})>l&A{&M#J z`*(lj4$1e^P@#t}3>E`~9f!k0L`bE$*ugrRJVmwxCX!Nt(y)UcIVge4+8d$XeW$3r^{75lP+*{v`4J7Ua>gME-L@Dx>lwXWvwOy2k6|u(@D^3 z4GC6z8m4!5s))kwK>gVIu686`BppsgB?Sy|Wwcv#R+;Mp)3_X_BBE8n?$~agE0wYYvPcQy&Ev8@iBS;Dv zWm`0i7uZ~)i#0A?k`A2Cm%c_hsl}nGPz`5brG_VHI}3SP<(^h2AF`c@i{d7{)KVF8xzr?eUcv@Ml)I|r zx1R*}A!^Y3=c(bf{dn?ZZ*#S0_%+fmoBuz(z+dk?_vY!(gFt$bTkID}t{FJ30UH26 ztq{=k05@B8_&Ha)(U}dEPOY-s|7LGNm^xhB^64`)N?^YEqUNYt51hCjQprrmYJyf8 zjpU1j=rkLNxtqkS=FfMA$`gB|s7CG^>I`~D*BRZwAo99T?-X_1d%;LNPwh2o2^{Xu zQ|7uX37RbDhlMIWXyipc|Hd`IcIUnCLF%9o4#sJRK&kXSS#EhUTSxb4zZxmPJRvbL zTc+*0+;-vVY^gpK{SEFMzo4jkmctmSv)|Zo;r=t-kn6E6`n3sGkaz^6kbYbE5a`i8gI2kl^<==@W(T)# zI@22Pbqy=U?|T@q7{B4`cZaqd-0fh0ze1x`_x&kKEK{p6kp#iwq>|t3B;t2ShDYy5 zzvq-Lnw8kTwewc3TCvqA`xtYjsmYW<-~}a$POF{{2PRJ28h3<3;Y_$kg_+;DzA`Q) z2LS?AN($C*Dc0}l*8jZbiG1!!fs#5euv%YYyRT}rTJ{i|rd}>zq^YoO9G07uq#8*o z8JD_RVeFJw&H2g)-m3zCeCEcIciyzfTqaxDmaX**fo5(mo{bt?HI#6h!yCA zUr~#?V~_-+KVJAtlK4MA^`CcmhzJ24hJrpj*2cfEz3U|2L8X+Ny{ek-Z=sXs1v)qx z%H%3C<-O-bDmdz#jW%s~|Ux;dvYw;}Yfe-M7eJnCzJHGOG3t(CL(T z5n=2$tpeP4*9hN$6Pp{?_{xxx;Y8YKc(j_)zQ?-dB~0z8GsT4?6pTevbo)%L*|Pi* z3uka85eCBl?aC92gUAfI!$u;8mS!SfMx!QWBrZp~F#%0s3WTw_)o4ej`Fz`BSzsqM zpi#&wSJ<8HFk!Kq5Hp#M`hqx%e~;_qxVc_rF`okC&vUFkVA?(Wa&%t;eroT#+pEt; zPEKJUKaY6pd$3R^ED_%zwU^mBHpXAu1^nqNsQK!5Z|(Lo!Dz!gCyrcs#iQ83;zxS3 zen*!hDg#NM!FkOCo-f z(PrmGR9BcNDiy})+3rLNoAm?3cZavWb$D&xLjOOU>F?3Sf2H=Kj09z8LAY=2a?qwZ zCBdLU1=WD}-J$Lv6BWuDN*F24)?8qxG&>YwyC~&Dl=X6U=F=D#PhtqV)DtsUYAlGG z8;EBy1PZbpTb3%E4^ZHP)pt<$O-DTyPV;Mf^s8Pyie>1cVOixTmFxZ=xIhFAl zlnre~lY9z?XH-IGec%Uj4s*ox;(#Ri99hiSY{K?;j=Z7)8w0Hq^z)w~|9HSWsRTdH z_thMaR=wi#0QTko3h4pb)6-Mh!lD?*zVv<1&)o0G90`LS8XBUdg%AY^sWv7tG12d# z={ey!^baS`B{H08cEfPuce+K^r;z{bp-MzRVw(E6E?P;VZ2_GA7ltl;hpS#E5{DC0 zHdZj!HEBat%!3cCTsFM|M$%21)oRlf{rO+V4DLDlJYF{XEeyQCJEh8a7co2h6xP^k zvsWMFK89nNDR^2gDeChESF=%bI}d$Qj8^ThX{bi?a(=uT#qO8aW)XF|*h~K~KwUQs zIEgYGr^nZCzi0>~F87;@L%Bu>!3iHIO6a4Q<_#LP z302#@ahiKc0hZ%FrNZG^8*I;YFrFtTXLlCSzN>92S8aVl zp;%6?Ka@0(NnaA5JZE<>e6l%2p){DFcxM&tw!OY-=V!LiC~+HNOd*&4O&zdQdF1Da zvD1u?ftD}?6f}T|K}z3?qRRC9M5+0H_Fz-6eq%UD7+z@RplgHU{#Z$`g8S1`2m-`1 z$jbdA!l`@}^0eZObt2c4zQSHaYUJg^j?LED4uBPr|BytS$lWolv4S9HbG?PUWBZ7= z(BLFBxbbDOAlq=P(>8eq_%FX32K0o4aG6Hut8DESh*6qv#^-w*xojqQb&S-SqZ&bn z8$nc;B=xB;ABc8YOn&C1eePv9gB<}IT}|({gz6ufd5soREBbXFS008vu{^h1oiyc2 zU#N5Wt}OJx>;V$<6ti^S+4$z7Cr`%$zm~l(<9;~hJli|UkkDWqT`VzNhL=@&c(CXS z#w)*i7{h&!h4J){&Hf*Q%fmtN6B2zE;7RBKz|}`}_0OH%RiImwv!8OsmY*&A3~-_Y zQ{|dEYc9Uf_2D=Gm5P#^e&X5ef5WTpmy(|myvQVya_27$PjcjQJkTn3qY5N1ukp%q z2Uhr>$!!ke5+s%Sqfxr^v_mqYC#zGDZxy0Moh+^GV=8}Z{4~Q|+LI}PC3i5tQb1E` zgCY^wifVT-i+c!3aSK1URu(g@sy{`WNbZHW-lY)BwPxpdcg++2!Www+GVEEkA5bg`0?PxO7c$>!|0Nx^1=$j<2 zITo8yd3_B4&PG#p##Kw5r)I1-4Ss~Kl=3O+d>u|8AORL*Jk{ZiYKc`;{#3c;t3Eh( zgB~ELHUP7Ktv>CsGnp?=SLkNz=mdm5c?uuaQ)$ZWOV2B6vWIIbS=|Z$Sa_zbX!+N1Qv$=%sZP-v3amrOrtp;POaT?<>u!0T5Mmy!%2MM@pvVj z`~Eq*+d1*o(vK`6FW4^M^%USi)jCYC%io=vE-gkfo6g#AHxd&pXDXZoZi||Pkuvj{ z>?KaeKD&l~wM_2BY9iq4{-=Nc?SdE*z=Fh{3hg*ZOpm38D9h)qWl}$U?)gusFdf1J zaNnGPX9YQlm-?VdcE*+uzS~b{RI2q%#=wt;@`sL12IWK~>xZsEjqwux8}f2*HSlCk zAweyNSjQOZ*vA7ftB=L(MCdPjEtZYNJ zh~&g^ec%1~clY(jweQf+Wgg1&Dftz{d`^UBWn&w;b#RlN$i@4HS1|vA7+_V=51)NyY#$7iul-bx4GO&y~)7pFk$JhbBVzK?fau>|=kpJ}4$3 zI#ktccgTBC6Priqs&OsR6;vpr)2#mnWNKqzaQ6GeX9#%GHC6}mn$Eq^H2gJI>+&`d zuQ;Mf#2!-Cx}=74+iBtM6#B8O^%hu~)+cS-fqmx`fR#+?{mgqT)JA}_FcVt=E3B@K-S=2b+% zl6@42oL9om+h3=tP$?tR03IS2Gl<((kYQ^lKk0eMX>d%+L4DJGW}V$3&M^;M($0toQOVqH6v79Br4#*cA}G_+5~Mq&ZgP zwwt~0hr(+cN$Yw)lC@ALvooG!n6+HZU(X^5n+ee2$ii09NNUN3#sgjwe>JkF2{`%8t$%cF z>y#)5$;?$h6eMK#1uE=|hK7cp__H@>+l4aB_1VqdSjhH7o>IHh{L}>o?inX-{!V(> zkb9LK%@OCwYxOrW4qd`FMTUvoF4vK0)av4UFd@lMwt`(Zc|SuP>&%I%LX#Em3#eyR zIEC$IG5uakAMXekW=JIBJh`r_^XA7g&+@O5{0H%v_y3L7eJxDjcj=Q_wE+|Q><^0= z`s2CD+!}wON|`ih3EoYj--}^66&gx@oN{1oIqax~!}oOYd8(>HP@z83sCq@s7ESu? z@d?8CS{_|FQJn@hqY)_rT1|_-7@D{BOqvZNXitvC`JrB%Ia@1aKtyWQQ%>O_{V&T*#@AlTnueu_FPwTZyQ&^ z=$^`(^lJAp>d)IFC)mezD3m6{I|fQFH`kRl^-FZz{!do@yelhiE_=cFM08J>kL9-% za#>@`gl!e+9lM}8mREL0aEkg+zw{5<6#P6z*Xw@F>)U{&V?>3%Hw}_sIoub`Ct4Zj zblKUhi>I^6K_9^z_{3Mad~YjFWmDr1l3m_Wi>|zO7`11xV{NiOlHEBQs4A5NxSYYp zDFuL(@|TLkYCrAMj`bI6w|E#G=87H?0aO_I5PNEG22M~$1sM%G2=lEwsU!?`K#EKl z2E9q~d|iSTKucAdzT8|$S4nY2q(0ln<7&oZuzv*F04D6Pm{69TeD9ICx$uUmW94tM zQ}LDmrtR7xX)Ih<+HHK0T;{jgud~#6H=e41T`;|>fc;EqYy3)YJ$m;7Q!WR@Pu@4T zo}pWLNewi|8@;Bp<(Y(Eo{IG0UdOxPzK;FS{{l4;4x8O~vQSM5@BmwR7^|SeVp=a> zH;RgONmsYb9><&2Z*FcD5{p$@7YAw7Twm*MrtX`dkCa$QG8vSF`(Od(lTZU|@Gf8q zOqUx2L%!bEBt3_9@X&%nR!b^HQM|8{_n$65_C1F`RC1LBP0&*m5bT&-Dq9tX^|!iu zJ*ok%s^aWpdob?)6ybV;;OW?*zVYJG$c!AxU zoQoCM-KjWiR>LE0H|0j&#sE?ozaME@D;J$~l@hc;Fuq%c`D0W62l80Hg#2;X6x<|) zK?qI!38ENunpMI$`9-Ayo|T45mM8=MjLI6I$HJVsDjZQBx!q8vs(>T{_aOx?_3YBe?TNlEA;@&f!Cc}>}yeN>_+ zmEW6J^6(nE$I=*%+;f-+bFF=|_k~070A)b!|Ks#U#g8^c4Qkw{!sD4V`qveDRQTJY zS!uAXs@|PvKQT#Z*M+#KNC1`0d;&J!eD8ic#=ByJ<3qBj@|#lPz*Tk}O2tAfEWgg= ze%ZAir$nHT&A>C|hJ;$k=#)?!?pYJ|o#Kr*f3IN_ZA_GB_i*n*m|&=D-v~ZA1+M0GBOKEPdWC&M#3&sXc!^i3Ny;m;M7~rc`vdN*>CbDPLP1My!(Ck>%3SC?1(IJ z7GD|VZ23}w=Q{LVT8&QjO#)2)w=R|SQA;VPRPx`JL$$BqC#nY$S&~Pyq@=j-E)!>H ziJZFT^om?A?xc1cR(M~_RSI+{>RvW{Lr;sveb4yD6qvhQib93T9B2 zU2f}lx;V&V&wR-hd$&~O^1=g|E8%?rnkuW!PI*d#hP1tWj`$u|=XhfH;xR0Kw`Q%g zU=21XhfSO${#u4}vN!Xl)^@)(w=Jw>jWnCFP6Ct3Dt0GgVeIy>4nG4Mrm+1${V6nlfwI$0=srDLGZ`80@J+4dg=EeB=Rxiy5oCl^b)fx$y!cWRPBPnu9B&k1B2wgGJJ$TC31mkyuS;=mKd5U*r zT|fJl8=bV=taPHQJXNzChI~eCukzZh@KaCvLKkgun-36bR*a$QwzjyD!pNDs2MWI$#53&U0P}#w^>H*igXSs^Xz6{pa z@)WBp;+lP6*8A8V_eM9niA#n?9fGf*!AmH-tj_q&A9o1ceLH&x`mNR7G}RXRPV_64 z(R2vNC$VJ$?Py}k(r8i5eEIixu90RzjJ(K2_)YQUhtQS8?a}h~ManQ6i%04#wN60` zrv_`w=l8Lk5z~|bX!ZvYUVycc`)HtI+c100slSU?xvM>b@sGPHl^~Q+rXMK+@{a%* zWJtc~kRAt5M}V7~*jyFlz81zYV>X-=4N6A9+#N5>7(EXz*7wYjBSnH`pj0HM<2Gsd zykPQ!w*qZr=wS@-IJbd7v*r$QRYAE@n5RU`;ww=N@!;5~TJicq>hWV1xQipY-K*tU z`M}nwk-~3f0bzE^k%Ub5p+D;3dsF_bRiIgc`RVMp$a^7nlZH z5eRNg547V^a7yf!4CAW)Mg$%r@|%df5qz%^^Zgh4qT$H!ENpGVjdg$RBES4?A+M>Fin=l|6+yvMIyV_31dUYcE2#jg&Ti_u@Mf=~6Js96 z{9yZ$9-J=9pk7#C3}1GdSJU?AURS!xc9hGXKf__l* z9?)X-w2pK%fYhGG$A43jt~&l|a3VBHLm(%v;VTC+t#P?DpwVb@3qivG2C8WpR3hI` zyR&|(l?G-O`t7@2H*!N(N8uT0Y9*(^Rb84l<^!q|=HL*#&_$tLt~q&wBiDkrBuCH0 zTn_tJck>^o6UquSSmCTwxMfd&Z2%wQA6Mv{IRZIWJ8}iyRi6;7Pd>zod_hQ`A>kMI zvRZEqV5u&W%aY2Y1+x^WI|wM-dVLpdeD0%jlXN^H0o=0_KoqoFK(-}_Ma?zb3dT8S zeDikWG^bEMuFLla@SN24ScaS-O*p3$Gl_R`*4%S3>)~rAy8_LE++NKRE7XCnZ=`Bj zWxiTsZ2uVX$+c^+=$d5G3BZg~!!Zjj;F`vwRHT-A7tuNYaNe+#o1r6;=|Rb_gMtL| zkR95};FWa+{*1G*VBFa}Vju&s-SEixSe)Qz&^Ng`tge;m@NqCfPKBCwl)5~--!4q5 z)<#AJMC7tZvHsKX?||}SLb~Z@g^b;a*<>-ddGO`O6~#b7B~@+uv<&TST=S3y+vR57 ziG82_*<5=Q!M!6+R5d+8?tf$|{J!wSO6<1NYxN`jGS)lDsZXlB*K;m-_xU^dE$Sx%l z1Y#*5!ptRSZpX=e6Coo1wcKD)zJ^;DT~u@NEIo=04UQ>WYe?InC%w;rN(A?sZoGm^z*6%jzPh?sI1tje6Q2GMj{SqYc z+!8dKS^1;Vr}&DZQ5@=lu$GvxdQempL+6D{T37o)NiT4_yUhn-TbQs?88CnG zwYnF)@yz)tk{Vnxip)QC9*>{+bW4Hwe(UDpEX>TiTF33-_0f~5H7Nl?JKD5I1gW($ ziTnblR+x1hSEl`}aqKqU`Mo|ZIGZ6=RWYA}QtZTtsXAKmL1$lvQzR4=0W&kR@Cs97 zEB=bM)({j5+3fOHg39yh&t=V)YD}k6G@9@#=`_mJTo0yU0(mjk@U7*8cHm|DLf{{PT#!ipS7&3cI7L~2yAy5mG?l-8l~&pX$hXZ|k0Rrgx}+pl$f1U)VA z%`_e%`==>qVqU;$iyBLpNOQEmKF#s(dhfa5U5uRu0Eld}OP(sBGow>J9NC*I4Wc{3 zs@zlBR-e>|0#(U}0u^Ccbec?nY|5kBT9%p4+0K@jBA0kYGa8QOmi}bwNS;LLkcPk6 zboyY`_EFFdenss?pQWW`SZYLO5cUZ0q{F3d_X=JBnTj#IguUyDE7(qV{h2 zo%i(&e9Hnf?L}bV9=!3jwREPQ3>aJYW8Cg`fKas`|MR z8$IT4z_@!XQK(k+mub;C{gb_DV&>MKh^!a7kt%PpWYUD-UYLnpTG-8=F44gI6d2Vn z<$B!~+w1R?WA-LK%~DC16|Qa^sZ*g)&qn+S3wJP^QWSUL5bX{vG*C+q?*D*O=Mf3kF^8~h;;CGW_+;U`LiHN?w>UL+hj=q;KXkSTVEh0j zPhRqP$*e%SXSVQo1J2qF1yTE|M(?GMW^pTR0S--ZM%KV8O)DW0ES`JqU7IeYFbbhc zTlB>ada_+i@)sZYv8|Cc0|49|PXbNA$hXILk$Kq zT;8l^g(Do)vuAmq#07t9rQ$Z)_Bw;GvD(RVhkKy|B!z-8M87<{%RQJbwu}he?2VFJ zH(e?T&}?wb7#;DOc7lHyMB;LNdb%EyJkpE$kZtrpt(CHR-JKz#j@LPm>&Qc9zB(c0q2am!M>uj-w!cH140O7M*fLJt*b^Lv>z>Lk}2jW8cvOgf@ zOmp$nUamGEDy`5oFwNOCIy)%b`=jP%bYMrN1mrIvUW;2Pw(voHBB>OdNexc(1fba1 zs^AG+bj)dV@*cfpgIbw0J7GkHsjyv9$*{P2kl}tU+@!5(C0rkYUA79)l!WuvU2Dr1 zA!yTQN+!=5P!j+MIbf?bR~OxTf$TwUt(ya@t5x!r2Iz2R1p-uUCe*%z=Hwv?7wsQ1 zlv;H7s=CZH(K$rMmjtY%jvLoGB&X%j-ncmh^M_AYI|3{&tb{%_X64VceRwNK`cI+yBWS=x&^i%) z{zCNohTnzmkK+`^6)#e2a+geG6}>e+nuc~%dNZ#zWwwwb*A+tUlSfrzpuMQ&Hs*&+ zmc|(g6v|_p$u?QrZ(L(ck9axMd<>}7x2kJu{JwOl$$o2gp;dhy0(8Eq3m<`;M*(|J z^W#==*m(K7R}KV2J~wHu*m_6kr}&kJ0wy|XstQu8wty|=lS<|ysbruBQ0;_S(9XpB zgel|ZBJQz|$rqu9NlSzy!da5|GG;m%tusCE@F0^p?ScW7Ky+;N&X_8f5H@V9zlATt z$eBzsA=PMtBgbTh;isn)jb_BeJv+hBKhTsQ2w0lvSqT$nXA zmEt74Wc~A~THPNvE?<)$){ zLXH$<%HZe#2)d~{ z*H-)@XOw-W@X#WtOv9ugT5jk&`k7ejDCH{i9xGxh3Y;GDFVZb=--LsbtCTJ&ysHFx3_$e#M>9aN6a#F%Qjn8;PCnS5)1uMMN~O$)<}ASZ_Z|D|x>x{c@x{MP)e83zDVJt2)!Xdhy46dD?XnJl@) zxhOqf%+k$Y<#wE1_;`A%Yz=SDVbN`BMsslHWncYATOa|76nOTK^tMaa(elci{LlvC zbB+NIITrU}*Ki{D;XU4xc~61&qLq(Pvp6xk_3N>OUfo@opClQ6lp&IiW$P4YlWYx# z5*n<5PEWXgJHAV?ZIQ)X{nS83%f97Xxh(N-?|Z^?HquH-sq^DF3^_{dd0{usAF0{- zZfhGhSvMhf24#Yp3|JP(4_qdfuK@u(P4mSU`b};kyk+DX3g#pi>xL7$4%( z6f_B)IrYwR<{!dZ{(6{yM&v&cgg{U`Cm;m9{wwkc^?gn(m83qPiLdnakO;rhG_4fW zPoz={y-Om>=bq3ee#zAw4^-JL1wOX0__Ifk_ge0p(rup6Xt~)~G1Ov=#C+`>0~i{> z^HKrTEY{*~$d<)zu;4G7`Jw_|Pi$^uR+qkQoB}zA_s(&}|Ek$>vfq%=E$NDXNvh6G zoSL-+<)@Th4DEr2M%2It$et-x?z!}G3AL!E3M=Z3MsEu8t^HmmvKicctz$Nk4zb6H zhKMOpKSDr7on$R<_VDBWFvR$lrINaZ17UBj06@eN2RN17ZrDufI2=PHl^(iS)rSM| zlQKYT^j}!I*|)PB8pEO?_~Y|)q?{k_P%0)Fg0PNNG^$B8d5ekRHC8T*!KU%)Ojs^> zT{VXjdC}PFu-m)EB#DBs58=@ar&s;)H0q#tY28O5v3SjA@LOaT?65BVP-sMZGZjH# z)ICliYpR`6b+1gnwiqi2WU$Q4kKV+-Rid3R0+Thjk~3g)9_YApIL4p@8Y<1_45sTc zZKyMVh{XU#sIeC{VLRg+mFu>hmbNfD=<)mfz3}^yxib4i?!X0`;`Mhur~(u ze%r@URFR}MSPs&IO^P8sE_YiadbObATzO;|jhdn%VJlvtW4}(F>w;Dd$sbA+^$H7z zy-`mZW=NPAK9d@+uPBIx#^MO366W6@B&uz0m^F^;sON*{zk#+yvOrFgaf2u3GmvQ- zo0-P`Y|Qr5aM9XCaQQrOu3b@1-76l&HYCMPBeiJg$R`AE#IQtZI?+EK@f-zdQqcY` z6|1@d+hb&R$~@Z_(Llg<8h?Um<*32+PW2R(08C&6%}oYlI^Law8u1MKcXktd1K3LG z6~UWB$zy^|(ig1#UoX5Wc%6jnFOt;C)m1@FN@St`G!k-=wN8nvGxQ;}dlMN*D*5|= zN@m(U*u)5li9HK7nrJtV`JAgzsFkI;;wd^VN;n}x2mzH}j1eJI8(AtGKUvvgeS&=B zxkOkmN#P~-+V$c`*@psc(cRst$6ums5|Z7nlN`@4!!Pep$j={FC6Y>D^@6JE!1~>^ zvMGBy^#A$}LZ z;g@;%FE}b#@X^EluJW$?$Y&m15SNPTs@wco?6ml@`5|<=5|!YOYQT0ah-gTPBRe4s z2WJv($xtM%O%KbzX9_$fKMM{!nJrHNho~+3i2DmOi3j69$5;PYa`5vePdTXkLZWf5 z{`bPGf7GGyG)ICQFH<1&H*oEbUH%Jh`-eNeXpgfD7J}mcr{Wt4=P{^M$WBl|LRS6Qi(0LRypHpjv#Pr?Wc0D@GxjfcdVJw0 zCni>w9Gsc?nvf9a#uS{-p(Fb|aRLa(wmSmQjr?h8X(@xDfxl~g^#gRRX16}4)~KD7G!TeyAwBRKh?|vk@MoLJjaf;Yjf^kemRj+zLq=D-J#eAYZ5Mv9Iq5{T)LvyJBL#JQ zDWH-`=FCWe!W2waPw;KWbqA`t;R8;moCGIKD{Je3I(Ox*uS*{@Q{TWUAZwgwN~mqc zH$J3&BS@q2EY3bJ+b(&;>8qT~QNnf(PcUQas)%Z?CI?l9g(TX+eRcmd zX{V`VV5^?vtBsD7&BJG)R%WfKoI(?wo-DXt!%;U~M~T32o@1O2%_^aauR zi=#vtlQLGz)%27;(EX1!l3=~IsR;+ascW&`RS&~hSBe@`;}B}QPuV@}imms>q@fRK zg_c=waij0eSExtoKc3>%BSy z6A1#a#*2g6}-;wI&|^DB+d z=~5!MR^r%1RucDPt>v^>ubkufrvrv}HD)_W<)X(XfJmNBv((&ZngRRWh_hpl3EH?j zDkgc}pgyaU2hR>38ur=5joT+$|#-;rV;vcgT!%&EqlTf-qnYeB%phUH)TaN99 z*PS(_m18qWTGNfllNn>$EizuVFa=B+CWu}q{msa_4dLm5`nln&*D8Ns_5C57VG_D^ z(hCz(0JImcC8J*2_WFSZX%F zYE!%&nmL0fGl?Ki_fd_^rQu!=4z^1*_lXH0L%*EGB=}t&cY`1 zn)tD$W(9+TGvZuj8E6BmD^WkrQ35LjSI1QHNCO zc)1>ZuXN>*!4u~w4S0AfcGb_7dVGU8#iRGKvbfFaIXar(q3xPNyK&v3UOS`E)~Q9e z4UvKo?Q~oM82!u{<&P)6Uw*vqr(69*`O2gsTlL?Lb_F0SQG5+Z5`JIx{UMzJux_8q zfq;6L{}C#J;@QxL#7CHznH_)wK_r#L$T7=W=8n{^j5UHmc zExA(#oTP%B?AQ7vfeL6YQ1Vht#?r#27_(d)*<`Qzuxyg}-k_svw#iI%tLI}nKriog zd}uJ6X*n)eBonLy(8J>Z*9Yoqlm544pbG_hG#AfNfe!sDbkqNp-udjioFGH*$@Yq@btr>B%BdQA5Hr? zpkBUm?RrX=5QI z*q`8Wum}hQ*#t~KtE2!3u3MR9@o*OhvX!vVzZeW_R_=+RH3qm0>l~h)3`ESzd3bK) zM=u7J-O>PrqI2>}inS7TK4_RlZ{DcJ8Y#yISbbD>P|fk*^6~*^CFR^6{K9Ix;qOkh z*!TpvG_sk1r1^{I0>k>w&Q1wuewoYuTrQN50cV*<8Yp7qm>Tvm7#gVcCvmZcyqSIZ z;`sU^8E^p*Ct^3rU`pjz0#s&p^i@fi!KT+Ig~N_oCDymXAwYpX(yT7OwEl)-VhROS z7qxZcVUCD;=A$&4RqrnryAR8C&eJEdKL)#sDK$1I6e_)X6(2rTpAGn=5^XtruRxUw7F^gB zMeNVV!(Ky;_Uc!=SQ~b^P+ieppQfj;D{h8mhQYy&3oVi z3nOd(;n1<)5dGa<)16MSis$sA2{rb$O|o71?5R$hhiV;cU(Kt_;&~J7dA-pt`})4O z9}~d8CS*P{pOrS~0cw&ed?(=Jz)P=DC^DJD<~6wSu-Rs|2?K!TjF(LJns2!pkIu<{ zJf}m-I$bm2Ojci?9U3J=A*F8dovYW2`!N_K+=EfCdN;D>U!gsE6fys*5ioh&e}0Y3 zF#*#6K$%JZb#$He^qZX*71Hrx{w@`?@}BOua_$ zgi>2BdE${kG#84BDvccd$mlK+TK|M>a@0)Plp;3PMZlR4tgZJK6huI^v->>D&UVFqB zsP@F7HTVF`suv)(-hU-CXQIs^N zr&6CmdIEX?+c}$3$Hzp~L;|-HfrPj(b-eGTqEocoR>p!hdUk1Q&NVV*s`)cLCWn9R z1~8jV2WmUY_C?P3>T$egI5*>-bvyZ}wsV{x%uO+D{*CtC<(1EQOkb++)Oa5WElMdF zM28ADdm}d^wb%$nK^;FbRbv zSVZ@d3w?NYqzaqc@`}zgt_sB#d_u(Gqj8yuwc~Hr+4oE2>Yu2kk{-h>o~X(|ECtB@ z9rW^uo)KI(V^cpZf!CGSxtGnD*;(i;!)^Jo%*T1_7=x2tq`jl#VSPJ(e_Sw{z=r&|4H?PD4-iMUplKi%23yn zgrd@^m%a0NB;Y*b+D`s!d|W7d$GLQz8{ij~hPiA{CHg-O*1W(@ZS6CBu|I|J-r?eO zupS1mA$tp3tBt0qY0Z{B1Ov{F7$&wM!Q%$IO{X=GdaP^~616f7F~BB%c^d(Iet2P2TUA~Tn7StfN?MlCnFBB8#n1s`qj6o{2qi}a9a`{)vR{^ zjJ@T5HTxDnAuvS8ODc%Dp`Zj?@p5puU8eMBb=i!U)D^)QnnAZnaBQ+#pX80DrcOgI zE1GC$iGYaregnfkvQ72zl>3VaOx=o0vQDFwO8aLO2Mu`Netrt|4%yj}bLw4TnQ@YA zpxQ!q8PM9Z;)-nV5EKE(hZR25X7nCK1i@1Ri6y=YPM-^m= z*k9Esc@D~5udc4l&#O9|$=J4=&JS#Eu2G7>1QG|#L*>DGF4YenVOphr>?$OSBBWD^ zKwE*yd&M(#+k<4RuDqm)#;+Ijz}xMhLGkv7r>B}dJ!qy}wsRv2CP@o=wbMu3 zLZ!O}x~4a*;=cu(T7pxQ1SCSuUYy6B?va(J`pdn7n|%ckm&Z)tNtrtAlDlRkrh9r%$j* zIo@g6oaed7i-0|ss$r0VmoOUel;igc=?P>Yf*M_+?S@Il?werx%vsoWPn`YVon*KeL_?+@0Wmx5`_yn&{w+W^2$rL)zzQdUfU?J6iOHmy_34a199n~ELdWy|X%t8Y0kx^6TrI+mGRw4IWY8MP+iuSH0_xaPTG>9Y=h zYQ_JjJW3gK|NFHlM-avW*PjdIldO;TV*%qW4o=BBvrHik^#{&hDkA*AVF~DfN|d7k zrcaOQan|RHWlz|bE}i>%8;!97l2{Hojg-93UY-*#LcF}RQa5w~#uO8{;lO|qm7tpeANkgnYzgRmXYW-~iH7TV`j@f*;?84rjeUA<#T~Q)Fj8)- z@$gj8rXhA*ZyH7Ct0AfE*Kg*->pmSOfXG1=sY6r6Vt%CZO3Xm<=gnj@*1_wdGT-F@ z9QXZJ#EVv!2)d4s8Lti1845Dm2(Z!VUVk*~y7!s_?M2XoyRo_t?&nHBZj}snytkOl z&Qi^u++Sx!`SJ!SussI^s{?(uCft#{yz150j?hgpWV2E}-DI70bLyl>exu#P?2QpQ zzlR`G`Tf)K$j{qzNaR!(uh~H_o97hPVO5t#7k-ba%I-;SM`EDiC83drT-Pzsrs&zY z*_T@Safs4PZyDLA$_O1Hba%SQ>&D!4)qc7d?)?s09!EN+{)g|4{k19$a}#OlhJ>m` zu1Nha5|htPU5|SJ%PvK&y0(PEH{Ju~=hMd-{J%;M4@9t}7^%KW=aUU>{&1vY?vIF? z!09msd&6I?nU*6ebvKcwJ$UkV(TIHk_mT@_ulEgEHI}w_S@<*Fo+m$teP%7EU8~wB zQ*jE+zJ5{V@OhbX)LpK<^XU%$9euoh-K=#3W5Yqrqz7Vt1~^l5>luMoJHt&O zyx<7kWS(WyJQMLj2a4+}KFIt2JbQ=es7?-9!sH9**USiFUru7->Te01rgKv$YmOrD zhfhmB5r^Pdb;dp-e%L@ zRc8r;H#Z_fP4b?VTH5taR;NKPN9%sX0c5Lg)ctV#2QM~i-p@_Ghwn8fEP+O@WYZ6e zQ&+{irRBjP-#AFbZ)h$i+spKzgJqU#&x$pMLo|9X%7|nflXCQfO@x0r zs1Cb3Z6}lirGbQG^%9LY9FN|yr@O`v!9Pq_yW?XlTuM} zcXRqFoi!O+!gevFqBT}^49?$aysFa%e|vGkqKjf%Qf1U7SG;vB$i+2gGrsT?!`XqL zHB2;^fR#d@e;T*QQn;_cWxie=dOd~Rm}`o~|4dZ9z#Gua?-U+_$al}Lha9}ma|wY- zvRjS?6C&Gve19Y(Z{D-G> zuf?d1E<`b09peB39}gjw64t51vrSkEH2T-P^0iLe#3knLOk;GSlLSiL3&ro}CE|uq zJ~8_SZ;t6`RSRP1vTHnGw>j}9vPllQ9e-1)KroPQ{qTAdVa+1S{*kBJ7Y~h!a`jgw zJDY)SO>1+!P3a;UFiBFk31UH|Jrkawvkn*G8fVv)rl2Fc{2*tRpgQ9aDVo$RywM_X z7_p}23vlOUTL-yPcso%@7QGbyPdY>`qbWkNM{2M|b0wZotJf%%zPpwaEiqAx13ic! zb;=Y8B}C~UQSD(COmhFI=;#UWQ|$cU&ci;Se;d*@&rxPjnS+&o77hTt_W$~DdW%)o5`xi+Md%n zBwQC>1;QJ*dJ_4XSRnHap4x}KE{kErSgCf?J=PL)_mlFx)67Hy4ESI`zgi+xKT~rQ zl{YE&U9g-`4dAp|U3N2ALZ`MlbG$knp)g% zK2&;@38@5_Y;#~-oiTmf^>umnSu?RHyI#PRXIJ*rcN=5er8XY7s6==9ywB1ZPfyfO z$sOJ@saxxH^{{ylEcx?QCaeGfUt|)$(8WaXlf+stF>%|Vx`RY$0-}m z<4(D}O>dX*Ub`fN%7Fp@ho|1)@4AEorh+@EZq^B;d+E;Bf<$s@UTeIAPq=)gnjANC z0CH}bPrvYV3Kv^Ak923jubWM!YJZJf{W6)Mf~b9SZyPJeLl@TF;zWLq?7;G(_}Pk`NMcxsT-gLTJ}Xbwc3Wxf|d5XoKIt<7Sq$@Rx9=6cl?t4)gvt>*XRj5o=EN9e00{1=rS z{H|H=0+&DmBdDyg^y(bLqm}{IgVR6U_49{MS~!=;9GU@dSrX+U9giFT zA;8EKq7@FnwMm*994zA1MH-^{=8a0Ce*7M>;LZ_gwL#jKA(z$i+$ELJJi8jU6Dut0dZJgkXjRv&}Zw(3;2te1B?N#!a? zzfB)h=#nge9$)B|L3lHb9@kw-c@i*Hh+1*u-<3?L5dW8Rk+W*nD_*_CqlE^h99&N zQ4{vW1df)i#8J)&v9)FChAPN!YLBZMHked&aCvP-REE8bxAFw35Ya)*%+6K zD!9f+HpFH`{BqxZsfLC{U?5?MChD_(jD!Un!S4eUm>!Y%l$5Wk(n9=yZ!S5He0d$# zyW7J7d3mthu!H#i^v-Hd(Z&c3-viluj7ozN&2?4?jM0=B-L`-1s$zDKTg+OYXg+$c`K2RKlpu5uLsC?pk z?!L?%Ra)phLN|eT1{aRctb&BoBnO-LoSPiQ_&}WGmT@W^*fugWElaYn*6ziAe1M(+ zmLpOo*HG3s7r`{LNY7zlWo13uaqxTJFGDJiIXKv=>a4kqG6mYss+t1Dt^|(=OaDcR; zmcT0N)_d1^T}*{a2^$>e%>>h~uN-8&uQ#Q=35kB)JZ{{dYyODVbL&Px7`jjQ%^z`Yt(gJ9dExD z(${`N8g|9sRqwJ=Kq|B-DVatUu-;ItT55>eTcS~^6h@G_RULIqoI%R9@llP~7d;9P?Wd&2QK= z65Bs8&$^0mQ{l?Jf{Kr3yzzAK1T^KLcRsZ^3xCfP33!)ZEfJK3==JlYh@A|hO*?Vt zupLv8+pdx7RAC?RiOk`7m_OVdod!*V&&4B}o)FD=Ki{7f!s&IHbqe6Hp3-Pb;*o4S zGiPWutX;)d;q17QP?I{5Hn zwIv=GQq{d!ZI|n9^JiCPv&?&bVg_Pjl;X--Kw15 z%bUER5Iu6Osx|u+BKJ5(xQb9O-&u3IiodGfu>}0C2OoYpu)Qs85gRxIt0_AT4m7Dh zckQHxs58&mhnn#}xQ&K?k8xScox8N^*Ti=Bf6oTts;3(DUad1T)$yJJNxsYd+`961 zQl!nx#$|x5@6g;bxi}XlaI%V0obXX#({R*=A)I~VQkOT*l4yk~1}^BDT_Abow5mf6 zGsK@ViR9-z_fZ_GA9ThrAFna8Yy-|j_3Xtp995lW!a*h~6E)`5eP^fK5bjc~+KTP& zLZueh4@f)5o(ORYx1YLlw6Sct($o1_!_>1gS7H!e1=0MrAq5ycGI3n#PoKNO4$zg zcEl{}JwP|#+l`Kr9&LJqh>=MLDf_o@jbIL)pBz`dd5{ysu$f3~H4Wdr8!pApy=gj= zR3{Dt$9v-EYbI8uK?c<4=?9$~_kh)|ZGZNU)y^3*0*^fF6W!8yOGX2%_JU>Pc6!QQ zI#5}Ynn&Gd*XxZdk63IM50VosFdoY3J~|5adkKj4ujObKnyNlmb(hDxUsYJe&y2UF z;5pqly-%E>p=(Mh{+&ooE>)13X2A8HQV>radQEt5rEWgnP@#K?(TwL=4i9YCo>Zg) z`8o}T3((7zyc)}Z9va-C5>V7By-VJrH?;S&-+hXC^Y^%8e@PG?l5-}mY=2Mruj$~M zL-0#KplsHr3WW#I+AvVGaMKMIjz=#wNXH!r+_^TIw4Y4=>bE!Voo>Ca%P#Vc4n4qx z?$=?-5we6=ZS=J48(Y%V54r(i0_))&8nr=lh>0#5mpR0mq;gi$B}~2)i2i7UJ6pNsu_YDA}73g5ZXNH zPI_I$11{$Ft=?OsrBt|3a%Qrr`fB-6fQ(`Dq|#oQ3byaow23-=&06hupFf1%%t-a* zDKECe2PyLXUBVI}eQxswaZK?zEJz1_$wtguRVi1tpRzg&{2Qzj^J{fG{BiG1mHQs0 zRrW-AV`_~8sod?5>ZsW}|Lb(7^buCLcR%NT$2*$e14?O({?2xqntNuX-RoI_a)igh z9RFGj>$em)8JUm}4pCz1f>eqrI4;3l_ICZQE(j6W882Mk8j+T(MBgzD?~K z(1#`NI&Z);sivDDDKOh^@w&LLI&X~ zkRgv5R(WG}7MMqO!reUB-GUf2Dt_u>s+dn^HO`7wfd z$zcOC)BN1lL;SLraNU8pQTEpOv>pnOmsg1%^o?9P{ECHlVptwC{jw^{JkRSI zo%ua4vZUmP%TNcY#ckt&MloX;IjOB z>SkDvdzuj(wRytCSVT|}et5Gc)@us2j%2SSgek*Zrh;aVewg;|g63ka5(T;|)oq37 zy5u^VnqK#A?TYJIFEWhKr^DuU)>oU2C-X$$N2?_)var<=6TRQZ0uTh=r&&0MMlD8zMrth7H)=(V zav`)fW!#@MKGCZupYn3D+7wqdaK6-%uv+lf1r1WjM(Evm#z#y5dBv4K!M#G?0=&t) z)%9en*wZ$A$}!z&b?b;yn}G89-qANyis`N_{M3i-np5@7YMo)op~;t}?I~sX7O`~B z7FW;9F*)-w0Ofba4jbE>8uM8tVor;VDftF;*fZq}nRA<>#>VSf$KtWw)ygjNNP97b zFq0x)kCiXHoIRvQv-4uqX#FygI#MiRNsCJZpw`{(q1LWad)TatR5Dj-j%%eM4unY! zlk{x7FM{2(Q>O8z4YFhIX)#vvTtp8dn&xH`;npK`bs4-Ny+15r^2N?%aiYyLpygtU zWpk)8ny4jrn4#rxP5Ul_Fyu3ITdl>F)otlee0QNjoZM6AvZV`?jC1Yd87Z z{j2Q|^UqOLm+)x@qSHMjkYuqJ>OsqR1=ZlBlcFdTZR~rR+r%rq@!Y!DiRH^fGFTU$ zBkKc@{!u=!;Wg_J zYMg4B?T^v774^zn;^wY=veOl*I?KnvRL$6u>&LD0Lp3=vx-}xs6ny5+nr-J1IyVWCeZaJocN?Ve>c}8=bdptYrZ1LOEn) ztHle&8%Wh0NQF|OhNrUn>8+LUQr2@aJ5A=FKHhq_@#%NIb_<0*B?OYVrJN^UeqYo9 z-vjhdE)TLd1}!@Sgmcx)wR0Q`l}zdZI>*%PsX-a&%Q)(wq~?h)90f5?PZ54SG7~E2 zVkGOf+&Uj=+iL!>h-Vt8GZ-*$>FGj2C$fM}ERHM!$E+1pa=p>+vihwpJZaesj_NtF zS1fS$)pMw%kY+ouTD}W&7krmiHkk{EqN{kC6R-wS@6wLDY!jD#>73desBjL8b%t>!~h3O^oQW<%LL$xV3$;rw)FJU^VQaH!DAiof2CRS?VKk2L(|B;ybbG~7*jGu(W^5I8~ zZQ@P=g&RI;jgr&K2c6yff!>_OzEG0T+dVql+_{Z zgd7wVH^IK%fXCLWiz+F^9=AVU1Wq85aRfL#N+QpgTB8v1I=8^Px_2DEw~gkyX)B_s zHa~{@o_x(^wR!ZYhq;@B#9dmV?4j;)l%$?!A=?;9^!jNd^MiLRckx2$)}p7iVhH-_ zvW#zm^j`9xif)T>TP7Jn*|d`?PE%>|HjSN6vNW69ae3^Q`go6@akAu|a(-UvGH&)D zcc{f_?6YFk4qd=yB%a7-HtmjP^dklBb=xoN5K3Kn8TF*#Yhwo2mY1*F;(DIbt+%p` zoo$Jb`~fXI%6W1(Z%2}7JhJ*1G^kD)+ija1bd9UNx7M6p? zPfcHl`x6C~=>Qw&@^BX)wHD0hTq?y{9W#1wlVcf`#X3DeT21qgB5%PSb=!#UoIs!m zpn0UK^^8bUDwfH-yhx`pib02^t7XqQTiy5o9mTk3rF_{_*RK_|#UI_0)##yo9eqFc zV(}*k^R~tf#NEenYhrG^VhF&6t1MP2h7jLSJ<71go;P|BoV>(2cA)oLUN4i6c*kYZ zx6(K^C-Q2|At3=aa|{zSdYH=-E)KQjXjd2@FtlD?>Y05-PZDojyBsd zaustgvwU$M$F6mbaN!5*w$PM-P?}WZT=q(n7o10>*P>`)H4$~3Gm}Y<$S0f3^FoPy z2>e*4YcF(Wb5{o$HKh#>PVsT8Xo&a z{IaCxh-q--)Az_QvM3PPeYij&^R3C$P0oz1VJBvXM1C8vG4{?o($VM)k6k7)E6+HXSB^A)9X~>>s~KXHjlcuX`#L()*z-0gjb?Ba zvxN9@k|k-C5ZVRlrxKp=x`jw_X#1&YqgTB-SBp&NNl4Pu@|H;a4)tF{K-g)#JLRNQ zs>L}N!X5d#OP)l?7Aq}6*>r$JStjo(#@E+TG!9?yM4_F7Yt0KbvQqq%D`xvffk5?{}+%TnaBt9Dg{1?HT2zKD>xw9e`FW<`HQ`Wu0 zx8}O>9>Qf1x-Dhh+XXaqJ7&E_^sjqQg(*AG1unYTG#jq(?zRi1Wu#}~u z56k{ag@&Tt=|a#Ho)2%wO7(67)=DhJalQFaA3TyzQdPJMx^m9(pHSZ3@x^0J|LG5Ag-?Pez9sB2>JdPAb5-_i)#n6aSCg?` zZPJ>v1l5+moPFv?1w>*0yvvB5`;R0fjR{kRMStUO03zeNLRDclh%*>pJ_Nv-M5pja zlF`(m<)byvBTDW!#7B>=F6aa0>(7r|Jufl`dvgLBR*^A+u8LH!PvWVRq z-Am6mU9=YOr3)2a2F#4L#EdW{(~M+p0xgLC92^2)4#E(7P52MFe}YhylaKp!8zj(H zVKjiZdQ@K`+u;KHSNx#h;Ap@Uu{SbX+;|>}nyVV!dAClV6ZkCb6d$?q>>JZKM(wc$ zt_;F^-6}p1-bCGJm_R?aD=EgMvk)0l zga@PDcJ6%ng#|HM7bWPR@^M@9AOGN=-&8%|PUeYvm($YgKZfC7@y#FD+dr@Q7K;Hl zqu!spB>W%$KqB!T)m~XNn|w$$&~f396{S>phe%23uw#AXKmOhS_?Nyp*ua{nRUyLt z^Hcuk4gG#sqT_bzECs^~|C~DiHlF{WS^R#AlFx;OrIZTTsQ(=DfB%&~<^p9z&;wu{ zbP%R1i~rmA`mc8s_14EHCP%?o=8uQ)Uw;``EBLo1@E~STe%SwV(|_F2%g+D`E}7Yr z@W-|Pe)~ScbOgZj#MkqXBm4cx{>L-_w>Kov?%q?1dK=67e;h9r2H<(pwVkE#{U0AF z9xz}pKhqh#_&p;3`xhzH0G_9c$04uN|M7v+-fmoIs-5rtZ{r0_(7UvSXG;!S|NDLX zepguO5inqQMIrybasSsL$T0+-=l{O|{_9`>3m`|nV}0O{^_z3Y7f=lS1mvr`?AbCFzI6i{(q!@M?*p#%Qh-Gl0JAcv?{LVc@~uv} z0N%kb!A*{3brTaBlR$hJLkpf79k}MB(pahA=7kRS_dY{$oJNci`piH^3mZ%;B>&8klxC*PWZ&Y!XnLHz$bza<)P zH@F$g-o$@##@?W}2&`~UwwOyRTm|FNGKlC=;Hb>o@okFirF&hAUZ0yrpKG<6gpvxl zN&pEVwQ7+{ToBNiwbnv4$E`YV@d=FUIhq+f5furd157r{80TG=Icb6DyEydo5A+|G zh;*ItRd;qDs?5Q*3->ItkSxzRqSLfn)>ikPdy0VD5T@ARGT_z~;Bj_H!*-F4aEko+ zpLZ`>9bon1dHM1R{{D89&wSHE?_hgskjl_%=gF|le&1p@S}SK;=)Ot3`+5$gM7LG! zBv&+_R`VEM+R;GdJ#m5<>-3*PcpCZo;}XF(-=&y4x~%4@dO=0booLYWYqFBf>sUT}`C>?Br40j_Je z)UtE?%lplGKuf(GF$}~AFT96dqdSo*-~>QPWX>$IJn`Fz_6|SgAP}J21FS#Mhqr$G`sV1#qGrO3WDp z^e~~xZ(r8<<6Hc39#KBNJ#F9W`2VZ053qdFLkc}ozP%=H0M<$Wm$bNt@jy43XmHlC z6PfYKmqox+y3Q3D7$n7vPp|f6Tux-@QD4e=^1QD%%SY8T*GomHXW58Ue^WFdsAbQV zXz0QwB&4~JN}s#A;WF2k%jx;%7oZ~oU=mZcR*WkEIAYUu=x)inf&luD^#Z<;_tKIP zUn?ssaq#h1XHyocbWyGbB>E7YK$i6i&~QH9Yab7?tNRd^{ms^Vn0oK}Lzwt~JZgPM zUN79}sVQeaS`YcxV$nzI)2mR}Yu$gNZ3GZ=bAYHHZl6PE3q4LF74rH{zE`WRcSsas z=<+BF2N#zry6s%;`WjMO0&dpDyo7xHxuU2xMU+Ur*Nm`%V%2*it>Y5i4Ev{QP1FJm zJAx!*dtw1+si~pmwY|=E*Bj_tz%x=ePwq-`tbCrbc)TQ*A(37BbZa!nVzkFzyIdRa zYZCy$g#A!V`Yu(eWs?|^L+=C#Lf{gCORxGuZ~&1|419Nrc+wE<$F%eO^%a}J_jj65 z13$MmzSF3^V&_sV`x{S$M4gr9vNf(%dkpP-bJH9^fl#MTE~k-0qoXuN!pV+GS;zcC zNsM=soN$iyLJBMa%LdUdEB*K1E2|bX_@9_21Js?wu6mPGt-<0QT=!t!nQ}`tE1&6jR z@UJefu8~&f9y>h84(}g4G_T9EEGq;$%;}iww1-7ei91{3&i&^I4k*47FH_7h-QQ@p z_~)i9k$JD0kSXeIr{3iHKhPe$eP25?!QBdZY4%qsY~-XAf8#x*aE)%ycIfqm_LR$x zA;lUEg*PQQ1hq<1F^R+a6@aw3)(G$}JYGI^m1ySmIIB=8Tyv`sFk7f*JK9w&qa$jTRt-MrPO?+Ei+J_?RVCEJlzKAXgZ#rfyxBe~ieK3Vh zxI5%ijm_*(?H&NP*sp^T-8;Mv;N5}GKo;1$5kBX_)eRfY>op2T$RFsO`d$JE0XvG2 z4#~sH3|}Tr%f|eVnw3_SBZcEXYft+&g%YuLz@hO3Bkxc!(;(Lm^on=uROxRb-gb`2 zXnmg)^LwewI^(2w9i&xb2`QZwMR}%Gzp2k$tnU9r(S*fscB8=Tpfg_2i^*6@uTKk5 zCsyA_@^M99%b!H&rxPz&*^kCEXwr?(PqdE`Y<+JNoZgjffl2$>Z;ci&kFW1FUjTf) zHmmSV{C>9MC25hBVOVFw)D`1xm_Q_8d}=;-q{Uv*tL63M5$0e9PVo%lt4Nu7<^{+# z{g#TPH*PFVD0R5hQS!VGk?xg5jhLGsA6?V=Wm)XYr{)GbBXxmpK6FroPE&YnD6(&K zYVB`d4G&T@eKhwt&BXY(c>gx3e+d|-QRf$btE7zJdoYwYFuYds_uRq3`L!u-({xS% zIsN(6mRge~2y{>fFnj|rh)1dsBsQzD&&!kV5+^BU0-b%b-n<;hdP9*U*{;bUh71EC z8a^rlmKp{owZC?#)dm>|077P5wwOYc%b*PNfIc1us1ZIjR#w86-i1^J7u*M zA!Pp`+icArVhQQ@cPm<-u#8wMIuZ=jrAqoi@6pnHTamhZ-! zv+EQC$E|7*0pn5+T_#x`aUweooo%QqzdlP4qHfXZc;+kN~dk?lfKqe`Pv0ZMuK+VNK;@j&1>-JLbvq2iKa^JAxu2qJ? z>AG_avB5Ur-q-82DA?h_KHpx?O;`NArT<%6|cQOH&@ zG#@x7J@Z`928>|`3*WrZbl#s^CYD1X$I<3sSuUhON=qAE;1^#W!>9*kFw``gol`BZ zn1@Y!hH||%iaQbo-;i(`^;x&><6*oWv?3+;I9gipb@ooxUGHC{+A&V0GyU~-eTP=z znv-qI4F1rP!tWuJVL1OvAHtX4c{o>(S){3djoeQVY0=o6JTslFG|Jyx zvqH}+yQ{^w+YfN>`nL1P2aaHQ{Yp7MJ75_P_gqoE%=G&0lp5@w51I!8N=~xiMPO@_rOybVDK^=y$I0vGJX#b#o$@p|_1iqS&e zputU0(RhIoe3&wFJ~ZHb?1Ys@KDDa8+vpzbX_+TR3 zQ;}Jow99whrziLZBT05G8*ARldf7HpDL07CxsS#q{;jA~QxnMOKH=$(TXpg74Yda& zO4?<5G2^fA>*=9f?AIDs#N0OTO(rViPQm55sz73+)S@4Ks29RoeQie3-Qo`22U z$|KPNE?r>Ug<6i=cvefN^ShJWW#yg((#1bQ+rJZFN&(-RMe9zrzb65$BBkt9FcFtW zYO+by#?&tLxp5POj!@6D-MZI~R#~iJdfRybwSVBlUjl_KJV7;H2)x8>487RQy2A%%osZ~&2EH9=OsHfCWTDUx60cP$7h&n~vebUcFjq1% z3}6=>pD!k(`ZD7ex7B*3USUftl}tsuE!1)lV&-2a8V6pCexmkJt>_6V({V_3fL&2y@99n^8N zJY!M6^F8}2&CXa!;z^jC>Jq~Zxxj`_h?$^ro(!mKx^_C1Eb~?dfZTKx1!Mp<vnTghX55$!U@9NJqL#HW|_bin? zIks*1t<-bn;{onfZ7D+Db6eyi$Q;S}rVBTDghQ)3b_n@8V0E%%Z5X=gnsS%FDGSKP z;qH2|c6Gc!JW8J(9yVPErlHlTiMgWFt1Pl~8CZ5KJ*ZZwwZI?O>VLVk-PFMM>i9Fz z7vw_l`$p*=WnR-MlL_LmSrMnSFHKPUBNfDydob*kbW?TT%Z9^T{I+}6pvw*1LTzYe zBG~lM5E1jnx6?@QKcgTzc=|o$d-s1Q>UZvH3$w@I(P{kBWwI8iVFDM$aIoef8tTB} z4rt*3ANc3T&*-B0uOzK#6QqS^eVlD-m8d8lim$QsnVqjfuPa}5Q=mN&Cns#1PGA-=A6Uv z+?m_ ztd2T28pi9vdecli@nfW(a%q`bZgmwXU>tlbk9_eHhj5e ziPZ=pS3cgF=jBO$8m_Cx@E`f0)|G-$<$At!PmcqDVCXItR{D;zEs}m4*$k{Dg1|B0 z_n&W=eRNuz?tj$u_KL3n4(wtmRA?GVkUq^=$jRJb>zK&byF5}h*Ri#8>6ZF^FRCkQ z7nzCKf%f~nKzQF@1$W!(`Ghqaz z7t7{mt$WQcx%lC=p-KrH1}&82NBd1uPBx0yT%m0xR>%RMT}}JV+m3GC;Pu^mk|O2+ z8+G`D(JWp1IHf-wtXE~jCgjn`gVdhkU;H5naQ7&Ba<`hUf;u*Y-o6hM^`?72+H#4% z|15AY%B;tPW3?&?`p8#ehJ;NmJ7mi5O`S8qy)ID#@)su^wCZpV_rRlW>f!d~LEF^^ z9c;~HwBr4i@Y)KFr5Buf)%rj}NU=pW^q^;d8zCERf$S@iqW9g4S)n^#htd;2xu}zH zquo<`5Kaoa7ff8%WO%|U`Mx42m*3*nbiF4T|iB^RIEo;~< zHM+3?Fn1p~8q%%Gi~Ds&#DHNN4L-og>nh|E3czFc``fkWIH-$eIH==)as-xl2;=Sz zdjsgCK`}T1FCRr^#XKhx^qE9Q^g>5^n8)PLo;UC8Dzsn9KoTOO$+ZMITPH1Gq z^#(AcFydb;xPLCRPqcxO)y478M5p=AlN$uocA2*r^PE3ny~)nr{xR~-fM){g;1=a}0HYSc14HdRDi zeL%RaH(wg)SILPCJkulj@dwnS@o8)1(f0|n<`9o;ph4Yi>Lb~pr*9i~t0l56q}lYU z-!)8BZM$vFMNtJQN#cBqCj7MMhrQQ?_s7xt14w|!*@;9Nq3l+5e5wS%@&orG)~X%u zsl=p9*eB*HNq{k(*Vw0U$t4TGUI%Onk1XFe#SET-s$ho*mmg;+IRTQ|Y@H>)o_wJo z?a!3F3(2?4l+(q{y#ddvLAQ*1DbgY@JnqV~nilwoNj5T;oJF~_xMn9BKs!5uMp?7t)@WeqYEHtpr#y4MTGUe)8uyaN?jdEL zPJB?ekN|cl-x9U^(!g>>%6jBW%8x=lt;m}XpY@=*3gi6IIyqBw=cI$)?bIdmNe;ii z^R(i8u};I#vPq-m*85Dj;lqDGbZ0MKi@qN9n&@;XV{p5;I#H`YEnt5KSc4MW!KDd6 zU$v*eVLQx^pU1EA@Dlinp?rMgX%no0nSNess8r~_zf)1Rl^c^F1qTwY_OU^B8G4Ef zdWOC)KF~&Ij$1jl|LmBO2k^D-={Miskig4K+suH5T;To`A&FkPe>l@k>hTr-`@B_#^J;hG6OJ3`*T*5`U^BjtS7$2SYgPoRF78p zly*THzoPm-y*TG`x%-l{Wd@SheIjYToaoYo3pTAkSBbrkO_85?_G@53x73v@)F*^q z0_BygZ&Xvt`#qAf#a5K@uXDNY19gB~W;2(G`Yve-?0&F0 zLas6f*UYg*tXoKh5pBJ$=uR?Hc07->5~KtObnlmP{Gin^%@nY=WRJ_%`bfU1PwnPg z`x1*Q&$hVGFl=DGPkvbqS++)=GAEj=!@Jf#ZERj5>#T}qA7WAhD{0Jm4}t|!dNDo%6y;;ry@!`R@7(ybh)wsWQvEyU2vkyqf#u|tOD5H+dyF7?8dvhvQk9zUgC;{Sw z;iV5-DFcBVKNm(-^#TkDuZ=)lu}o+<)R9L$q)f%{Q~I+dH(M1pBP8FIo-<4#7JakK zCQ5RdDLOl-!sc6}bOZ@NvxjiHnu4(G&U8v2cVk_>1Q1TR{mbh zUlkaNhk3()1wQ$TQWZMl*wq0G!PwWz2ImBkbo;qoshe>KYghZV(I#Xike}Q+pQTNc zD42Wsz4#LQNl4B&eu5GgYm|6^(EtOn10obPnl9-VZ|nDk1aM+D76wmQFq;+WcDT$2;hX6qv8sWO?p;-9jf(kjPE#hGktq2QEW;qneZ z6T>a^$^b73_#(MPeAyFzt2U!P>j>8{)&TR~ua9!uTI8?|FT7<(tW2)IkdAJZ z9hrmGmD#NxR*KTN450SN*Q{31c9rpR(@mEDbEmFkaGuq5Q`>YMQF z=*?$h9wqv*qn;bdf}CXq$6V6-`l+d+e!7vjCGO*nC0L8!^J9jO3iR{T3s%P()Pi_F44N(#WKLHVNhR^~wHIka^{T)WNfyKoh{((-wdHvM4D-v;2MAmzC=iA2~ z7)FGK#smn01@j<%7lz+|Yq`ZgL-k$TYwU|kwOvFaK(bD0D;{5YF1mCi?hEo*Pd!6+H-~{;E%MNLtK+wRwT-!rMv}GsiO%+3PC;4f}kLvCnW!{?Q{eY{68Gl7wYqS z*r~$J0;ewGY>t!K^U&^3yWj1N_~}dhor|IHWL;*|h3wb&9yt(}*q;pmc0OWLa!Rs> z8_Rl^a{0%jOSdMrxq*PCwN`U&^oG*4T!q*F76%2!vjVtoZgXL$$Q?(wi`nl$!_c}e z5#7^O@%KO}koe-^{=)s*68NrKg~b)?p~_I8*QP!Y)0kS+reNT%DFU{Uwkk&%i*gUb z{^K2gC{?WN3F*bj{Q18<8_sae<4(^6yg(x$6n1zc?bSk`9NpIN8@FHXHchB=>m0+o#2-{fo{vitPl%W9ZqUFZ%lt2F0xBW2|wX74y(VWIY>Muy`nv|3? zs_TT&@BS1xx$N^RlArgrKN&z1PYBwujDsv7h*Hl4hy{C_tUpTCpJuY3QM&o5d0-PM2P^LJADb??9O`6Y|LyZWzu{!S{t?)`t4PqZ4L za;i8R{@CZ4i76r{UVT>l?;@c;?lIiDn5`n)_Wk3pFzW8duV|NfcsYvQd|hk552rfBO zlb^jGn=-#K90NUv0uq6&g3}z^QqPYd5C5=YF*4;;G9D0oK2(K3ZCbc)Fn~Kn)ip7H=w4B z_b*(fm2V!h`vw31XJpy&6v!)nx(WzWo=TD7J3-;Gu4&ZCK{vJdb>zu08PM(mv+h`# z<-vSw&N}4W?Cf2jtKVQE1xYaJKB7OC0%!I=k@25U0}~b7n($|9u|TsspS^4={chjl zGut@f-fa{tQb>q-ti{lZd5qffKQN!z3&l7e>?~zlVpo9U!owRi*O3)kiHBv6hQNDr zq;%qUdGJRpmOZI4K>bF3v_B`?4Q|n&t?K9FV?fma4qgRqlolPXI6#kTbX-sX0Se>X zO+A<`yIU~7h4+&H_DhR#TMy(U& zt@~>yiG+M&m(E>}b$zuec^T``qOy1{jsC%mf6E5{B^)PK0_56TzZh{kk@^|{(zj3% zg>CP|-0himc!^Ov=c^FWan)z#@Kjr0Hpv8gQ4^A1B(TRXJ|` zWOHf2?ECEMF8SaM=I>w8_d4qKD6+>uiM}tw?*nQEFkmzMQ`i;|Z7GE%0=W$L^;wVk zACpjW3J~aPLi~WUEM_h}*|(d(cf2#Q)O!p;14St+KkJR|t|<$+)|@PKsNz30a9M*LO6su@E%XyBvK{d zh`C%jmMdzFlKLvxR_OlPE=S}ES_fjBjOkp(ZwExY0xUk*OcLB z53NX*^pj2Z^aikG-)1|*3j3hvMbDIN4AqtHMc{wf`D_jfnNJ=>SR9pz*(XGeTkWo?E>eyOJWSb52HX7g? zuTDNMc!n&|O91v#Jp~M;Nai2diobak2E`L!`r4H5)C)}8ko8(S@z1rl3mL|EyV(Hk zS|@!l9T29eB>WX$ok&^`or7OCHLw}f_Nv>u{xnw%U#{4X_7T7e;y{nc(H01~RwjA@bjrQrX5m2Ck?Lv4F-Vd4*+XVAE0bw)Nxd97=>Q=<^o z5G7f`m$f<`Aa&xAs0BXJlt)-l-@>7W=bua6aqvwMY)|0}P64)gvp4&pUi%PryORLU*8HH5XHRH~73a48l7f+`IV72H96vAmruegKj zXEKyZP{vfP0lP}|#__;T^`~#P%$Yq(QooVL{XF6~g^$ZpCi|?{D}_<9&yHmf&52`v zYy*zqmX_GRw0iqDyTA4xfOZ~jX9}GzZqc)ZTk{>9=JHAL#eL)5E@G~WCiBtHly@d- zU3j~b3EJ;-z86gNLBkAybA^osI$p^rnE$wtF#?bIWTlzt7)Gasv(-x}J<%PlxZHMn zIG#UP)N3ogNPEAA-(H(L_2cND)x*Eo_UTf0`7Cd?Bh4?H2qAi*&75j?uW#JFeSh0& z=vx2w{0h+S3lqiw6j;;C4#DL<2*ZHFAYHA>CwIKIHiNTqR}5B;2T36sp@k|1+(RQRCt^sn6t4%a= zzqupsENB8A~IOb^G{|T0@l5xUke`detltsbU>Xzt%q~{cJ zU$I-ag%5#w&6ic2e_Fk(P^ho7xWDf**m5Qg6;KjOmL(YvGyx7HN~UN}QmNA)Mo#1c zyAaC#+LS9KJ&qp%O}$*b)3Sihir8hhd65>HL$xM#M8n-$=lN(rR~43GnNOBYX8`DR zfm#npsFMyBs7idiWA#65^$TPGwwGNb2<1Aphp&TNAHFfTP;qSeP`~&3iF$~S1B$p$ zclbB5A2x`VyN+IR!371Ao`h86rd5sA2|wWwInhcm=RiQ3dA04ePQYnZ;0V>N2MTHr zg~7R#ZXNXO(nh-X_n`iQcm??Qy< zO6nDvOH{FEqa^ME2NAgoLf`;yoRu$!nVZ zRbBZ98_<8PBYz+-BHuEy6FBhwy`~a1i%mVeb`z*^o7?WVivUrz*CC5adaUpM){~e= zZ@QM;c`e;91m1PEJK0urbb<7whjd2xb#pswd zRO*YYKmq13s%@I0*-<`$Kj-1EmKNK1vNQg$luRx}N}dWZvv~hEBB0Zse!cc2i7U-2 zF=i|DNAHpk5HkGqh}Rc!kuO;mIl^45#Tn$@+5((Wz#i#)kjqjj~SwUbT%D)Q>-&GL0XHUiB0ya6UVI;n978*Rj1m z=mv!w+436Ko}Ha};ghNI?UJTl$Q2SnX$rQ?mlQcn4M96dz3ZaZQl1Nt2awSQ9|yrC zCHoHi9&~jzo{tZo=F^>eG>;>`#vt|b%vl1$zq#0X4Mec%&uUcu_OJi)k5VAYYtj8t zApJbqe|p-l-!EP~dzMY&qkYETz4X`5P6ig}&%wZuLm%)(IpQA%`Iq1Kk`oZ9c|V$z zy!e-!|L}E3+5oc=bnKW0WG4UHFg~yl5@zqbuJgP8&$2pwBS1oa8Sj5MBP#H}KK7-Q z3UOB-xmeXd%lGRJvG`%T>5@YLNNCc3VG^K>KOLyZcLP4Kmoo5S5K)eRmLBt3Eso1N zB`3*FAw%?z)Jv&=lex$M87%zMTpR>S5oYNp7bK0|=rP z7=%ShO#|8gLA@GI)C*50_V9ln#MiDH*P?k{8rJ?Vrh`5Ys5mZaWIZB@qX0#LHlNoW)X@ysRdgo`A{`qlcPSycGO`hNbrC85^oldUCzqVM ztFIiajzb~~dEwkp=Q@NqfmTUJAlqienkFPq!hO=Z4)^)&=}-S%^1b+z$;Kl_Zk zOgBa48sXP}W)iA2WmaxHBFU{9*5@q#Ji%-IqdmrYy>|Y-rq^!Oa6cbHQjaiw!W);i zRJ$NI45rTUjl}N*2XO{nRfKa^JfGxs0L9_zj`aebcRgpY|y9shWOPZlGa@-+q$jGudw~ZGq?vl5sWBmp-0009S_VuW0*W*U6 zd=f=3VD>Z7Op;!o6xoz+bg!03T`rKJOb3)Pdr(t{?aIvuAD{-iBkrY*l3YiapN-kL z^?=V!Jh!)IuI9K6=}O2<52txdL4xWMl}WfBWHx#8nYLO+9_ogD>#>@WJP5bm^W7eD zAE${db$@X0uSVH>C6M?#XwAVguL9BVVQHulHy9NjOk|Ho8!YW*9Nmwg5t5t=>Pg4o zz8YF5(N2xKLT*WHkF7Y!gG6SU>n0E9U(@G!Eu`fMmI~22tbI`Y-Mqs9PjKn&(?6V% zRKSf8UI{W`H82ER|8UF$Jt-!xqi&GrBubz)r03J^x_m1@Ma#hFG1zH`7AL$6oXFB` zYd$+hV=u2|=x0#2d}0lxpr1_xUDQtBLj#_aHXM7Gb(3WXbI1r@C=R%k>ejQr6br|z zr%r^ib0i&OHy$5Mgr@rsi6{lB&Pp?$F+1GbTxu`%FLXCFI&4(QYoRj8#`s$(#eZXs zz(F3oFew#=wa#s&|7j9ZM&!xDP9_Jf9+3)hQ|Z@<4e9WfAV1Hj^SMcF57_HZ`j;+E zY~v@F@|DvM-OEl3aYw!W9}pNg^Y7g-3$u{$b`$MBz>}L=il=gc=nlBb(_$WNqufB z5gVFUvYnlgqgRQNI5q=UsjJ|9M0Y-%vq3|YCV-~5OA&`=>Xog5^%g5C==vl>ZxI7b zhHY54;HYCmW@_IK=EadUNow2$f+@f_G8KOmu$PXw20@*NqRScamM+Hh-#IrVT+w1LYj@gzDo6Fbkm9r1Xu9Oa}^-I*Cetf~AUdFAH z@-~dSgso*I?#Lt=s=D4VSI8`i88QqEC1*hy=PHCN&rz>&Fqk)88B(&uZ+|ywa2wKZ zXt=;b?oA_MVK-?=Dr!8%zmTfF65IBjSpHVBZEVs*P21u!n@K^5qui#=Vk9)OG|z7} zUi-YZvY(uI|9r`stM=tE!LdY)fOjZ6C~pyp4qUBB7P2)DamZ0+qAK86qKV^1 zx3wx{v_b2^(JCKery}`mg2B`OQVJq2l!wf9@QUx0wH4}zAn1*lOwkpFgO87ZR70DyT zvhIC6>@GN20WbaFk;fRsp&@|_I$J)y%ct!8y1-O z4MH8&;4z&)vO5L45+gNUwn{IHy6pS13yrb%k}a zm$boF+jecU;9P42B9K%e7nK+R239%FFH)2C_msSu3}Oc!gANx>mpWD{R)PmifZ)u1 z?8SI4D(u*;1JzR7B{7^T<2|?0Fbf*amfJR-S?n|I7vJuQOYFu?*u`DxcZPEq)HJqj zsRx+0)<-k$I*$Uz7~?t*I@W=4N^WEAs+~3^JB5z0B|c$Gj-`p1P|40pxET7g0X46g z<0j!atp_p=1kVdwaeCGxSl-?qvvdSqeI`DtIsUXsT72KVsk53}kzuB~ z$z3n!lYsw`QVpe^U8(|ci_}!5Zv36FqKBKK32QmxXLKbH&i->N$|7HF7kfXptg?b# z*U#g*a_2mUbZmEb9<`yP0v0F{4cZfTnZhMG4RqGJ3$Eaep2nbE~vH zm16k$Dto^kH*_b~8Zqgvyp3AP(g|;*N%}c83PsnJ3fE|}lr$x1=}Lm3gOn|nxc00l zD#&`>oR5n|N`8u&$vBMzjMD%JCBxCrl=dE+OrSe0m-FUguds;N*Ne^NIxuyru>eqV{`4o5&NX;%36zr<^(tC z%?Ca(%T&;mdT9z~(lTmRvZ$_NVOwH`UPYu>(6+&CSf0k=v!UpbgXKcNz?9B}N89%= zLIwi#=s?_>deT$gS3K*m1tcT+N>h}i?h4DjS>*2V1^SZiaa(NKK>xmEejz1R5j%-D zb^@syaKDoAcRajUr2}l|Qpyls{V;pPTuZUZS#wlV%@J9(S+U=7ktO#_MkJ*vC$RfD zW5)!Bj`D$xOsT7Y3i0Ng0jXae0LP&Seoo{P1InvXd)xb>F?csQ?ZXzID;P~6fl0M9mu zw%k;^jUAyf{B(Z0+435*=~P^4Tg0~K)1AVTP+kgu%}P>t6x7qLbDA_+SO;F9doTKo z{F-fP?bzk*5Eys;V!1B9483&a$*5V@ZXTh!_~!FIL`Q&#gx~r=@bH118zWJw|Nb~A zx3ymkF@Gj-FZ64Wt-}{Kznzy?bAj-hy)J?qp(4C_mDYVzk(3}bqr4%uqNehC^!0Pk zK>H{Mc=xhln@aMt%gByxay&L|<`n zbq5lghnEYQOLZPym3*#8sZu$3AzSexW9Zsj)R{<#12k*BB5dE`=X8kU{X=jFKpC@&trE9JEs4Eb~-2%Ldda(5;#hh*onH zu6U|q^vBEir{uN^0Sl8@%5NG}2HrAZb0yWnuw?pkuZ#{3@tRaO23{QQng%2@;+~Dl zLpJuY%v$jk5SU@=1%Eguy<1Rz`zpO5OlffC#k&5$5fEmoI7Mjb5zbAdo_oP4wK7r~ zz;+>AF~8fegnW1vp>pWQc`YZEzKs$@wn5QIZr(_?r$&_Bd`N%%ld8(N+Id`fc+ZRf z!mUX^#L-fS3Y{+3mi(V6hH>tt=EtOD;%eYvI#=U^9}6&T$c=Aw*m+!2NoP}iB7Nna z25h+D&eW7Z^%in>dBy$-OWIyVU5n7XPeld_H_)n>>lAeZWX|>xTs=`=Z7`t~0Gb+p zjt(|`LHMrusO|jzomk>{{QNL1nbOEEX3X6QaT~`z9)PYByYT6-%5(2yDphG;+xEWX zM(%BG|1K@b44ihQw)nlNM*nRnsGvj_5*aKxn`ftIU)I5YPR)OBj@;R?J^n+QGjyxU zI~B-Ih_WZr(1iu?*^d#eFXLD2zvNRsAv@DdnwUzrsc9FOaZdh3{gk=!6^d(o}N@g>!v3}M{#+i7DGnwBfFXC9heS}JJqH*M(Aoe1}x69W~&*T+Wd z8oc}~jN_L#Wv8E3lq*ghtUC?3mS6@-mey}Oh@17_eAn+OZs0dmw(hk5;+1vrz(^kU zBy{b?o;Q24gv06jT^D4?UR#cRL2s7@3 zt(?6CPnf)MOD7T$6pPwF;!N_%XhLT8$D4m&Q^BA`*NwdJ-M<-*NTPM)w`hof%H6PtJK0^E!>=gqsXp29p1 z5w^pRb=>nNtQoWjFh)$;jJkEEIQbKaD_ki( z(TCrXIf*;ha-J4|v-B_VkF|;@ERHT1KGSp6=!y1P{6=rDTX1*%W5MXd&WPEM!7)r! z^4uui`zrJOIfLb5WZGMWsW&RhWL_Rzf^)~g*DiOM3udr&9!n2(l&7UsJki8op&flp zdc5H;5@PYuRs9%?eX}olzuZLH=P;Bd{2it0qsqc+vmU`)C_QJ!nADG(TNG`Y)n6>X z90Jg#rih+dJY|GSm?knQX+%~KxVa=Xn*mb8FP@5h;_Gp}qQre9yCelwjJD`M3k|3+z!TV=V* zUTztWo)dUw()l%+wSqiHJ+p;Dg|PJbIe!!61*~@fCj&Fl8&TWM+UG&4CJn@DBC7zx zgYq&7P+jn8K_#sfK|CY^##42@qbA)8R#@cg?9$WVFXOduE@i@vyp142cUGPdtgRI*w zqfdLrv9s)CJ+c1YP@h~*PLgi9z5lL~*=xJY-#rl)knAQ>kq6x|^wU;DjJ=N-N!MTMgEg>RXR*mqnGoF{;gQMnb(NO@O`g zZQDVV<_s-3k5L}l<0Ztf+o)%$``Fa6YK^Z{Pv!m`I)IP!%QQjDq3{;#oLDgjzgt@6 zUanXh4srNdwyLE8iEZ?ACH90Ja2|3&`V&wyKsV`VqSSF{aghLryYYc3z6* zx3uV>=IiPaZYP!Y6rTq$$eYO*S{b2FMl(4S+0UL;k>so5awXI*ic{$2w;f02d2~{$ zn8@6Fmohn@;b4=WP~)tGDsL%^PmwV}DvR0aaV_suy;oxH{4DMGNNa5=Or0>4pZy#~ z&`Xrm*a+3~x!ZNiQ2pwkv*ClC#m)7++L`)D%_3Y_b@N;U3%#s*AjakA}4I6S>dYu3}f&Q$$;+L!G(?6** z{^3lzfbxhlcGqdnCXZG{RseZ8ObLUBw&s--EcrtR+{E2(fILvKEPcn0Tlq_ca(>m1 z-9v1q5Fk(;#(hTrAg_YEO>SOya!^q8s&7OmTco9QxM&{$hOF=CbCr?bGBP=1@$n7i z;*P?$aH0)OmE-U?<}!N$=5>?s$O3z$>p^YUz??|VHo|`wn!A#a6NT(Fx33$RWy|X` z%}qsYXRTZifDRaWR9oNPE5fL{g&?xIYaXJ-V}?9Q$tIrrN0xDvG^Se_oX1HIy)Os! zIK;UeHLT>EpUX?496xh_jPg&<+|kO$MM`DaU@{WLsu)i-^Gu-NMg16ftLC^YO_7!# zM6l~2v6jAoTbiCdR6^!n=r@r$)6w)Ub5R<-Dn-k=@~xvd6$uSx%2F~`!?haw88L_S zPLx^!CvUFrVpg!0rCW0PbGF8T7cW@&65%;+r2#B1)o^>Uo^eV z?V;N^0p)`kvTkT4JL$;ion2Y>oO_X8uBbjbJR8obrd)kk_mEV&jy1{dzTS@4SPGui zpYh4kIiIyeO1O^HZ?*SDqm$b1@WPVasfQ8>Bx8Czd_G%zd$q#tEL)@SF|^8UYE62_ z09=Ol7{}nJ4VU0Xpz6Ix5-=;+Y=LcftXSHvo?oU7%xhuIu8Q#)Gb}sOS*ow~9XLQr zUR=aowgl?u)iiCIcVV~Z)$)MVrmKdQ(NCZqOpwHUz`|3gvrfe@FiE-Lkqjw5>pmYw zZK}LnJSr011@`ja@8%3ST~(=ne(`m(%gARs$@jM^a4Z?=2iYe2+iB;myOSGKpu>B# zMMPb$EYaYq+g~spO{DUTd)-f~V6*6!e9J?LG)zs!fRBr8cG^^p!Q?>LfF!T&X+95B zyRigViH&E$u_7@%sChkyLN`OduM8HgR69Zwo(jd%%3ZdJPUQ(c>y{aigI?L43MsBq z(PGTR_Aaw|UX?!wH@vC3+`hI)ymmst)Mp>1$Bzwq>HG#<8jt{s^;nzQ zX=NnihPF6JV{4CGJtL$J|1EexK4FV;O}uOoI%YD3u9lH%TCbJdnd*@&U0m);ZLKOx zba$iQ8UIRjRpoXgW*!h{1_?;UnR06g@_t^aINbY5( z&*r*84<6qSk{S?2FZz!3=HqV0@L3c!wAxhp2|~0#zj+9^7>}R_eH8RTdM)HDVG~2! zGkGv+y6Zd}qx5Wp37ZUchi^59NpQSup(BdXoJXgVaG`(AB@{=IcyHu~|HuhkT zAFJ<@-~fTOHcY`2R+)?AWvnSFRQ*Oij7BEfvL=k#rL}s^wMIFl4yt`s430Qhd}o1e zAG}=CuvSTFwbiTYv7WWidA0s9{|kYrB!hbfev=VZ`!z^^%Q3gMHCyz!2$`Rj-YS$9yrS4u`X?`y9OzrWa#Bq48JmL#Ign*UUwT+J}H0h z1cQ#Ms+C2^cAE>=614IREZ929B{r2WE%2ZTwV&gxQcDu^ZY98%SIbr+BMK`~N6A#V z7ADr>rPZs`2JYoMu?j!rA4y=Ea_<*{>HX@3~B&118bF!)evr{_9ZuH&D|9Tl(1$b0(r`Zw%G0jzi%k{ z^4)of-Dpp-z`vD8yWkhe0N_s4ECd9=R6CTf;|wIGSdxsIwTvJVy-vGTLO)2|o|AG| z+vTBFuMZq}I15NgR7Y(|)gX_jT1%FZaux_18XcH@vyeW=@h= zLn+s=wXea8ee;2s44mtMmH7nAQ0-ig54G0rZ-wN8&wxou9?poko|=>v!DeN5D@}=3 zP3Jzo&g^}VrW=jooYLi&G8u!ExOaXvg`Bl}Cf0Fpx2=Y-CgJZ26m)Jg`%_<7WIVqP z;@83^Ws5f=vCJ!n&YSb`fILWypm(CjN z9+6;_nksw{*(O~zwDUMhT(`!~qCrRWLiTe|A^K?X_0Hm)3I#OECFEOA#^F}YQb%4! zicT>9V~jd2|DmO_-|e8+5uCgsJJ0oOcQtIGk!qTtgV9p8lmiieEk^Cd!l^?;aN1Ie z=Snv)``v1fRYYIhz(8d^mI zj#pCHcpIDjqYjpZLKH4lKZu!SBV+` zUdNcA3d&~%O^Y3veeVO5*le#3D0ZcYXLO+p!P8$4oD!CK2YyG22oE*TJ{c)Y_x^}Q zD>**9DF;!XQ#TJ+yq7nBHuVTInw7d+VwhEG;~u}rff-$|9>#e*6j ztUoSk^?-)+zUBH?bOrAtYZq-uwG}D{Kmm)^Bv4GjJEA>s0?(I z1Z(T;6$2bgvBR*JQQH#pVjvCzXU6EeJv{w;vet0|+XHUn4p5CSmJvaHhcwqCCG~Qn z<~R#7z25@6> z8IcSTXDKB@Lh<8f^%mn7*~*dtJ%ajbg(p5E_0_@K!^(+V8gMkFp6hdO&T(Y)g$sob zZ=4f|$E3#h+^CsTX1yb~Lv8WN4tNG|ZOc9Dne$W}J^MrA47W4fRH{B* zfvrTMl@?M#%+FQBd>%lL_=*wJKrujR>JYhUjk=MjQdm^~C~W1v4N`8Y0FQK2 zDUR1j9WP)n?p4pTYWx!wsz{b1q@3`z^>goUf7L%4MB{`2&aE!I$|Rl`gkoB;oCuP| zd6Js#H*(XdD<m2>&Kv8i`kFIs-A;VKk&YqRk07LCVem$0Qvw9B* zrx=H>@1{&RL!$G;+ig0Q8CozUdfei%wHeprajo(7eZ#eK_LBSS@J^Qy#18Z~98IgC zq^i|MCUh{E&cAZ~%WSfqbqtt=Af-UZmIi(%;mGdGaUCjK>%?&`UN{NZzXdN+oUYAj z7o|TxB7F8dqonSB-f;x40CfF}pCzPhTB&AK2sBA-=U@OFXWsUI(nZ0@4~Jb_IDs908= z?Yg-k1_CV&jda>^LhLI21?xCvI?}Dkq_)})N>5CaI+S>~kqhm{tbQAv8a?H1$@8TwAj&$D@}rWS;< z_y7L74&}F`blEO|@v0$yRjZMmRE&2_-*xFn9;Z)J?P~P7>U974T37WPX^s6`&70u( z3rwZZ&3V$`1I*8wa0bXoNga4Dtgy7snKW59+o}3D82WdQViEH7iqPbHM$gPK!S}L5 zh%Z;cU4~vV{+`BBzNJ*01d^m99_XDsb;KukvF@eES0x!}w~Of&wFF~YsPy<{1mCsG z@@9>He(~6)BT;2Afrbma|IxP;gSuUWG}1GJiOjPbJu%wb;-M``LVEW&)wkhyv}j+Y z&U%_o+^M-)zX7AYSi-vFfFPKMWMuN6G>?Z2 zymvWbGB^sVNx17cj+iam7YiyC+>VxA?a0Sv>4Eii#B`V~$b4|WSo!L0;m>f5VT6hS zX9B!PvCz*9e>EFuDOOr?Tfq%Nw!c(S>N~?HQrLDdI9j#TUhZh+-+y2225_vrkxd74 zL4{}<={E6!m0gS%6VT2Xx5zEXRp3K^meWXLtHOFy873X|qb24>rX88_PF0p9#NB_& zJuMyE$B+l3BvlJCFYjy6cUb3u7^I+vI zHS8QDtRd;hurnZM5G%zNJVywCfbbH3+!zTfvfdsCBR_PL}GEkhKtp>4@7 z={~NdQ+DLY>GvYgf&AoJo3+2ll#C+uf14Eba~Lo-k)WV;eI4f=FkCvNm2&NL77L*= zkkbHy&A6KvThmG;E>_I@V)d3MOYBO@23#FE#)6qHI3(RSwCRMiEqE1q>dy{Y=AhTM z_m(jSNDZYGis{Sx99LaS`|x$FZsooi*76}C?%jyx`Q&NuWL0=V?qI{ooO7ym?Tdl5 z`pSgrqIL>rzLpkfevS79%d_c)ls6XN6ji)__aL)WPbWKW8hccGMKX(VA>i3)e36q| zIC3!FT>f#^yn}0s$DMb1Sf%puxrX4}(-rPl3Z&i?-8g51G``H3fb5h}&J8^-M&V<)<6Q!oQMb72^6x3Rp!(REKoSteu_*MBd z5B@Pl&y|5h+UaPYRs5iwWkyg&rWLEK^Y0)MZF1F9iFIf)yPkddqa?1JJv%y=bJIDk zo6Pyk`xj_>={GoPQ*_0X6L#$lEAuNeiz9*+*QO`5>)j@^vlr;~CpA-VFq@+U6yqgM z+ZT-Ud5=USy~fWfD~m^~#u{X$D$Gz;+!FQX=}L|yrV3KsGv@RGuX%3y z?YLmG69#OW2?P8l5KOJNa6j(TYJP2ec;E!NC9|=k zTKHkBhPMLMg2Sa|n>!-NQdX7HGN%FC%6QsJ;q(Kw_)rA`lCzu5ykWuFNtua++6mWr zE>V3FMWluXoxti{8EFopA7f`ZJctg=GVU{1ifpRVSnTRD1hfio9N-nj`5&C{7fE89 zj1DEZnY!bYMzjU|w38(5E%Emy5e688A}iUX(nxtv#)V<0R@o~eH(3Xd%-&J=wR7@u z;^bTq(;lLr_}~2$(Sl;W1?90p^{9xs;^d5WH|pV-0fI2JJd_20N<{nPsaX&ZIb%r@ z_rNZxPgB3*QzUq?sjt`E&pB5}A*T`v<_C2)S3<~A3Jii_bDKerca~h$k>Vc)glT3g zNA3p8DJes3!6B8TGd!BF$scla4aVAFbr+OBJBpaN*aX5NsxT^d$I6QKC)ecETGW-X zwB16NAgEhvedO%UFxWmgEFZOh!hY2n&vROcyl)`w6%!U7k&H;Gg_(&b%CM^(4_VdV z3sZM-RCVupTkT)^6zTp+TCukeK(PXl8FnDN!|S$=Jay>*oS`|K*1lw1CP49LBoYKP z`A^to&&o3(Y6ms93H@S%lr@!8%q_GEHLdgc4bb90=bH3d`Dzt??IoV}N_{xa;bHr! zO?43U;*BPk*2?@SlM2ghN4!Zez3WL0=L;gkth`>2kvV(|woYq>lkM7vm0!8)5=S3w z4X7PZMRTT&V1G?%K;x zhkMlWsnBfU9WifWQeQ%i3!2EbqKt(TNkMiQg<8hWLAAGoGwwOlHTEy`MH2}IrK=i_ zx|YAbT7SaVuOI5%T;MF27;aUCCo3(dUj_XBSKiNi+5M13J={|uGSc7u@+1Uxv#Mlt zO}^g+M^<~!O+1E)Pc?<%;?2`>1#~E{!d-5Y59LGy-(H7E|)X)TGg$Mp2@tW7H}&>`l2ZEX>Dq5 zQa-75g3>X%j}6ns_z$V|M|p43C^=Rh8jj9q5uCB7fnc!K!oT%$5^}VYohjiVC-A>1a71kNsrse;~?+UQwY zg?Y#D5R1t!=8odo!Q074quy(W9T8U$t{CG+ELueiwCB>WK#K!IyBxgytDKue5*~Pe zSR4S<3iftZn)Kd!$2OAXR91%yDPmv@F+V1*9u+z!1WgJC`=D?$j|EdVovcL%#-jXp zhM@}Frmj=e;~>PUFZy&vD^9`FIj6r$cI20XqZ$0HS(SP{ON#LaG!XC(tu15^LFril zC4|;((ZXN)NvK%bi>6uM>sd4TFw*j`E{)cwG~xYq4b5D2Q9kos^BN+ZjL53%-5sY6 zio~2ZwW`eryzx}P8+T!fa-JZbw2fcPL=V2|HmI{fc|c!KeVh9v8_t72I|`OlQR)|D zkXhc0*CnuPa5<&ua1RjMXwO@0dY^f+{~omUu;2eSCEPGa9aL^?I!a(op#>=3Ig4*5n)u1{aauz-jxZ=vmA*w>B(L7`#S7MB-WeR7%Ef>bx3 zEuF18Xm>s$V^d+a^~ZM#ZMnb^qS7<|g#eMOjVR;UJMW$yHU`_CKYW?~_Uy1{hn=(h zo>VYk5w6-ZJf zd%H#Sj7;m*s-UJb@6Z+E!>I`yVSR! z2Ve)nF**_fvi7!Ps_o_Y=Ci?<>Wr*|5hD!|1Sd?3-#)YwFVH{hdtao9`Z9Np!O_K5 ztTOd%h?YywFjN8{d~=t{*g_4(Ly=rAwV3%pL2`LBm$MV|Suim-lq7W6%YL?OtCGb8 zPJoR_TmTiv#bCrwnz6N_G->)^j{{`ebmjdUK*n32%fLkM`5mYX?xp%f(*7AHfg03n(!~Ud7c4X z>?HVr56F=l?zU^wG+o-+*RQcPDiQ{1Kz!$FyB}N+A21d<-~-_2ZLL(oqt{?qvT4 zN*4n1Cqgi-W%u=V*FYW?lkcwGUDHF9wS#xJZ3iyCL1;Ug(A^n0y6u@iKF;g!j{cl$Msx`7fbnu5YX{WM%;0IUN KQ_DJK;rD+^qxjnZ literal 0 HcmV?d00001 diff --git a/docs/tutorials/aws/img/enable.png b/docs/tutorials/aws/img/enable.png new file mode 100644 index 0000000000000000000000000000000000000000..4065ef8f3eae03a021bfb3fb50116f65c889ab9b GIT binary patch literal 258264 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ⅈ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�X0!Pd))uYpv0dbmy<7w__@ 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


u~ac|PomF1M%zNcg|1a~975>|u0y=z zXs$td{q`*lDZw!x2*8n-F@Y9T5@d%hXW@f-o)Y{}xIF%2Av3cQEfF^a!EcfVUn4hq zD>N=KnS6yG(ri>-6X{F)1E$T>^(c3hl(Drrq5_?dTM2t!Rl~xrjfXU1!Xkiuf^JL? z49Y)UWL-$TX}58{n$LMx6YPH~lt96YCQCTe5q?~}pD<7h4f)W>J!d7RYej~5fh}iiyMPtJ_^`)ZClsT=FfUu39`F?LPw~^n z4q0pwdWabN6o_9+ZSN$>K&~XWcjDoZ(>Y|)zxH5#Q-O15XpcK$Bon!GazNs_-<)7Y zj$B5F8iD*}qB@;8v1}@w1vgl)0)Hx)4p3c4wx4UP@}ce);mYs4e+(VI+S-v56K)Y} zioYs00?|y#CbB^L6?|+>2Br3cg6Se7+&;D8H&$>HlOb4kYgDY|tW#x`W(|3Gm>XTE z9%DJxY$@t#xWYJ2wr>y!MByu!ao75hp3)t*<1IM9Lr|oAmqj<* zk#LPb!IPy_`)N$%b+0Sfx5Ma@kCgiO9ms8av1bIksaB}qODr@I;K4U|_e*QdI13{% zT#<1EwV%vou^}5ZPj-TTV#1b6S9cYS_nx*gtC-e$+2D&*j1|+ixGd}t0 zoBd}){+lBoz>FO7`fT;T3qDu5iD6onZXLxV4PwCrG9P_?LmdRJCy3hfsk93cjh?y!(J|y48pBHae^ea5ovrtVea#*-mj39 z48ue5FN&_R;Fx7VIve6aETcN}=V1fruwYo2F(`xtN&n(y~nXNt~?j5JUVl2FS zPv(AXFaCSL$0pcZH$rC&RjCuy-o?Nnq?_)EFkNiq+LQ&3M>PWli`=13juTO^xP1az z!d{cQqzta|&@?_fjGp3eqE@ZIXhv^9K)5eODpq2sk=xG$+wcbZM8)%{xi8e)x(bt{Cpt;gjl<2TT2$0_dfsuk45;qBh z@gLTMr3*cf*K{^X*5f#F)=G@4!U z&EdN<6|-RXiM{SNBwv{;%@|bXyHv?-K-Qc-9jXJY5#42<>IxIwNB&Bu!KYrY5fD-J zY!5aWOAoCBSNoH*qeNKjk8I+DEu|08^=kmk=M4U2quPr zK(GDA6T!R?!c4dIbwv}I*;tL&tI9BL(nxKCx-0)5g1sXW_>aFW!jO=ZCSxVCEdjkp z`eqx-2{LGDffhU5THZ`N_Q8Vi6wk@9?R#|B-Qrx|61iAtZ2^1690d|SFn`(#(D3%V z0uHF|#Ol~%Gz}Cb-mh(a%}!#Zfr2m4SS}iWEg{?ooc*cTG(e9E!YP9k1?Li9MC7?V zfVdk9X@}1;j}ki!+DaoFk50`!4A}2EunncffV|(Q+-L_<4DXBBsrR=Vn~&}EG!BA^ zo*mj+rpBj*2aKhVYP(eFZLf)~eQ5G-(w`9AFgis%brV=xu>nKp^2=hw#m+CL^`{N5 z{+3`b^yTz9M5=BLUm2u(r7uUFvqEpzvO67=B$k~eTK$_T1V z@Vt#FkSo`Wd>sCJDD7WCE0#cV8W1is)8fB>0A#D0usfwU0IfqruoWWo`3Ns6vY0u( zP?qRI-it+4sdmScU(I7cD8^7~kjB|{RW6v=n!`sRWFMPMX44XnOaV~Sq6n?&uh9$* zp8(2hQCKS3B?y3E7T#JP!mn79yP8tG1_JnEdOf6r8v7fv{6a7y+1{1d;gZ3JxNZ!e zRNLiTJkgOdn-fUolrxjiz8Ih+X&`k(FT}Ie!z7WP*?d#Gj4nzW;?G_b6Cc$7##q)k zq6fBC_O49GmfWFVHkmJ;ZHDtjD4@1R+R%D^KHl^C~sSwBLZrL+Z>xF2y9hHtH@QP!-6Djr}oz zrDm7^Sfb+<900AKU<4K@dU0sijF3F%mW~+RbREOj%#Nuwbsq|CO^kpHWcN>136k}m zSg3&!G519_0l)-VG=j=2G-DB6>>&pqh{=cL)q6pQ{nRTf+bC3MmfmGhweM=f=M3B> ze5uNo9t1}q;6{_s2^C7_LV8Xi+fBCM0%`WlnUA6mXXpSMqmDa*T3rq%*X_KlS^CKi zMb7jyKRuYsW3QDtw&kAKO|`NMzMKg&A}x(Kka!JwLv`0->Vv~$@vBcXQ8hg2n1eu1 z8<6mMZfRHfo!pl;`XXY@O$z1k3D`V^dId7K{)$jlndk-#l1UGyUdTv zjmvhcvJVBZ5tp?Ry8h04%n3nnpW2ZV%u%|2WD|dcjZ4y(If=f^A0KXvx)ikAih{Z= z-+Cy)71+wP0oHx=u;#Uvb%&NulhooNeA*t~A&5XDwszVp zp)NtvCti<`nV)2Cp9wT(HVR(olj6h<2aLf%TV)uBCy?@~2B&t+fdsFG?|N!!j3LJB z*Q8eNG0|^C34owxg)X+nl4*oEg+o}*q>4ek-zwpS42#Yn{3NsMe8o+|Bw2{j#y7tW zXvpuXtKrIIcG@Lk&7t3?>{=-?l?4{~u6XROos>V=A{a=t46oa3@kc(Ji;OG;nKJ?K zp)hN7e|(FGX7ySxcUN4yFPj?(xrVgr{h3c7)#=C5$GN#R8G$-A4|VnAGI_*5b>V^eSs~ zBX`xK$}#KwILKV_D)KA$+U&mV?HcS=xQBaa;4u(eo<55oK5b`KLDmxFTG>8FEZ3?G z>iFuF?(?i>dBOZ&A^HE>w6hI!kY#W z6_2Ysc3`cQ8PSAHV8I0EaOg6F2E~0W&4@xgULlBz3J-7=HInz z(ylLIu5F=i9X|q|kWJ)wv(+f|QxViK%~L22v>RMkSaiBAjNOdj3}$}Qa8WAgZ6`n9 z){B5s9;;T6-k(8xSNqWmQ>CU+Et%9Ym~r{X zDd^g`VK}6uXbH71AQ+9F@HdFEAAXF!2hyHWDD4i_J%XKh2pF4Sw`x49gUdz0wP4wX zf>SqhACDEnsNL~>c*To@x3!{=S*zF?k977>l}dA~QBb@|@%s#k;-3Q!%zbcPxn{9NSPs)q3>XYCQZpY>(MPGSHE+bS4%|=qmTn-}J=gGCkDg$8U=CQ1972w5=sYvnRKBm3PkghZd!ujKsyvc+B@3szLGD2RsH0tT{Pdp3#jQ7 z5QQN^?mJZ`!sd$obJAp`sF}sMc%E>C$hkYDSXSBj0`VQ^w;m6d}(#!7P$e zUuLg=#&?VGqdhfW$QG`)Whq&T6*XoVF@_h3O9;DK)62SmmkXt&?5ed zm-W&gLnuE@9s5;3adUH}%rl>F zy`idvYl3Mkf$6&Q*#NCfBeAEqz^vevLJ@Y$tL%% z_0+ItXs;i?K(iDYuu+%|=5p~rj;3}|PYC%vM)j~PzJ)u4!`73f-LyJixX`k&hM-9J>l z{cIDAy~3D+Ro89OtirQ-WTJY|BhD{@TGP2C^jiAmC<48RAYAnA6x_z ze@eedv~9J&hdjc$Ibe`3K#+}kmJpucaMuzZYz!@rZqt*76CPX~EYhzAiVec<^wIrf z6PA=ZR15$dRTmp_H0r8Yp6*4c!LvzSxExN$9}RkbZm! zNuo~%3ck0rehoP-e4W`%6->x|+(*nc_-!#!Nl80)2*`Pserg6amx;ER9po@K_zvhd zF(}XrGe*ohTX41}$NlO)Zj$@0L6^#fHrN+~V6fQAX@CcdGV4pUJjcG2ZPlf@d#@Fn66Ja)8M+XY20HI3kWR#4@proluIFLvS2N2s_A8*l*= z|NA++lxF>_CxMx``~k&Z4)qEMvZCY_r<5AmCYh_SGo6E-S$iyMaAWYT!}*FIIcwX$ zm0PZylffMv3u0ycR2ItjylC%DP0n{!iWyb;)|&b6Bj;~b0){Z{Z$Zf@K%0{-#7M5sdFQsxj?btToO;0-3H-B+ z54qZ(#7<)_qTssEk^+EmNo3bM(q`NeF^91JA>hqYh4L`7zPRP7q6XwD@lZD=MNMR4 z9v69(M68I5>x0GjOw71z*>e#GaictYRC%+hHx402Sc*+og}eIQ;cM3 zjp}tlUtLZYR28kC_m0oIAI>^Byibjr9WNVZ3t-S=f8f%8O;?3b71J7n`tBoB08$0J z%aZ@njtI5`(Da)w@l1*WC?4&Q7u|A8;|)X{5t#-Jye~&EsQ~yY?yMlH@fF$IEM`E$C{e0MFejFOQ|(R zz#_fx@=C}$xhUV(Z0F*)5J{qKLcWPp1IdXjfB>cwZEYL_=sd-(WzAD&qEKOevOwwH zyPeJG&Ogg$>?h4N%jXV|8uDaY7iD9?cm0tPl}cIOvX517M-42}>qU|(^=+3s8vu3z z?^SnoH^PlI;B0RisIZE|wZ2gz=8sbR+@)Z#JZl)zc~SdAxUrtMF@!VPP7)oe6PHS3zr8TX@v~YB)AzrI;pn#L_`H!Tf8=xw~ z+Lx8;aMq0w*Fms5ihUA4$hS^?$I|N(_cGA5FyCuQ~b5PrgmVur4K#t>N`#h=T?NHit1d2SCRnVn>Hk~EG#vhKWT zJ#JEsX))H;|7dmYhdBpLpG{nL-H{!pSOwcpxDXA z`l$OlOC&fU6oX6=cW-x;-|jVP)-g-8%h?&OHoNRronoU4M;>9zy`HpZtli~5XM*OFZX|?dx-uVyG>DNz zZ;l0J{v=Gb4L&qrt8!zlp&H>a={p`K-I^o{7G#nExsEKh8( z@*XY%Z(yDBPyr9&2km)cwcsNHZNb7uB*c2h$6FOcnB`UTLlA+uflWI13v-!vQ^m2j zs0+$D9h#U3noaO%My>L*7i3&km;km``{zrtAK{YptN6eOXXO{ttL#)N^XsKi)w+F| z35)uSuF_G*y)?97HltY5Wi!$mug92f8oA_;r>dmkB%wVwfkHeZu8?6ILFK zl!&OPxXd&o8S%_YiY*{Xl)VIB&4|G3r`eh3wK~0nNIHz>{p>tJb=wv_DKbm=AO}~4 zoL3mf>#KEdL5;>aRcRB%t`(N~d_PD!*%=YyaG3R#i=0)_>gJZ`Y`qJ<^7$^!EbX>7 z)ei44F1uSV>uLq$JOIx7kPqU^M6iP*%N^35yl0nNatw{@qE>U&agRJ#3B!iL(eO|R zboUSdhH7*ENY&^yJ>$Ha#1JTK-d)SN6 z6t|$Ks0%YUZd+})#r{r9QR0`)Fg&C~1lKZcHip50(%V)=C?WQQ82weh_Gq?>Nr-+g zZf883yZA05I~a(ks9(+$7EKA!3TRcY*9lI%dlqz%2tUH<%>Wmx!42=Jg$ykxg<7|~YIGddTkj&$P zCbdh`fl@L>Msu8g(KkiXQp9fJ$Yt|3gd%5zcGB^U=0IB$0NA2&^BMw&*}C%A^*MIV z44s!2Kxkw`ShCmD8WYgiGApExY5UF5x*t3bdgR6Lwo`X;r%N6@OK?0ka=86M!1;Is zpiz4C%5$eaX?3Mb*IrrxU?BiHKt4yN2d7dti+62Nz)DkT#f9!V8CAi=*l7Q;TPc#KamVv zG2KfzsWaS5N1p)-9=>SX=^HLiH6#dPXpZHSu;*L_k3gw=2bWxaLmTXQG#qaxjxzd^ zhXh6bMZ*D*U_*wqaP6{IX-L7n6iqY{Iy*+*KHUR zhi#MfkaYx8oY89DBu7|laK+A4xO^b(OTt-gDX3TCA$j3#Huw#$7JQ|xg)|0L3x;if zd^&ihhRwxe;)*4T#Okt~!Qpkc*8r41tshalxb7Siu_gt@aJ7BtJU4^3K@DmMDw9qC z?m;se`;qn{zREP5XEJD}ZbG2FkV+O|^hgR!eJGz}X{H$|I7K3A{`ShtYC}4||D-L2TB^*cmm`x?W%>*;XCPkuUP<;qy z>`kV=PSK&2;bT%wOo)GXo%O89^F3>s;9kNd(lR40AvQXtO%wdS?zJ^E!R@&5VTP0T z%0s_=w3R+-fL$qk`y0?Laoykd!66XRy#}zr5yP7vf zHT1+*cv`Mk8vF%!^F4Ioc|f85-sgR3XvN>kO6(;l3_rE7`yd2HI7NLbTYF;l?&IA( zkKqAvyAs^}Mpb{`Sk5dR{Fe1{t5s8SEFILZ%z~fKCr5K3Qo%8H52O;&Lk;fxC<}~p z&TA1w(CfZG+uQ)(a59(9bj~3hEWhWBL0`@G<&^Yye8L*C4YY7#SCrz!pcL&TiC(UL zwKun%>+&hCx_kt8Ot7OR_!*l8oD$GUm0LSjys_xya$dj5dajV2Ixq^!TFZE$1tqQU z&Ql;g0`Vc7L3_U))59POvnZ~ppOK7wd3e`Lw zk%*T01aO0_`x?9LdC1ZfvC}By{daHtmg1usR^`ZNfyzyF#y$YJ8{kIC;WLN(K>6s4 zTn6BG^$AEE=t3s}A(uk*)#=_)R7@Rhomnk1SLHv;N#}E^WYa(CK2V?M(d*HWiW>Mf zF*{F1`_7QHVZz{Atw__Xsi8^g{*eFbO8-GLscF_g2uTS>C!;zm3m%KA@XpMlkB8}e zlW(|Toy`NIvB*}4jY?uUL)Tj`m3wcEC<+}BW|x0D$MR2ZwiIgXDUV(zv~jiqgM<+>xn+kXudy* zNx~yRB_90I4QOh`K|?o2F5sBz6V2(AuR-`(qjk1WD|`w%*LcUlB%aqU<#igvw_JVxAadPFL$Xf&B{qk6O9Y1b6J$C4URdP6ONz%JEnddL+N92x6BwLiUP? z5c`@#(8*1Dw#?mj?WqF^(gEHw5epq2=Wjk08Yzt_j|Jb00L-3-0*hvexl}@&8rG8> zT$U?(0Fg9y(86LVUX6Xn2^=_Uk7g%8!1d@EVl!Kgp-az#4-Om=Xu|1QMK3Pi{0lTl z1#Rg;I?qkX2)}YDnLv8D_QqM5o?7{CgxH6^6>-oa;3lFFEm+g1?4_x8u(i!hW!)^gUuwrSLE4S4GCo)4g9TKGEf^6c|z z%8TYnnG~_$dlS~+d-6@9`f`wSJ1(qApmgp1WSf1Cy78F#7tKowLWYMM`24L4i!)O~ zkyT%OzMORAp+8Fvb#R@cD*@8Gb_YZ4`y(!suOLf#hoM{@(X>uen~Q<<`1vDgZh3>` z#o}E680E{pPJ0L)KdQb>l+toQ+OiAsnK`6rOpC|PmO}c?L&_!e?ph5u(q(9 z6G5=F0>mgW+oRtR)|1^Dek&FkEkOmgkRl!LeFXDMWSFC;c&Rf2aPLm*@vmzyyV1q zYI(=|FHq|5NH!|lJSlWOKG%mi@%DXs;^o}dR00L?4iXw_u)+jp^NEe?I68h0KBwM` z$?J(*noXjETQUi?Ec>7H1YP5JR{D}*tT(h0?sh1`YwAgIY#SprEKI7kpKSrIP5|vf z)4k?9OD%bw{9HO_D5+5>M(^TaS&|60D63E{g+S+>z-KPFJ?kcnntYB$_)Ia!<>}!n zOKBjQrPVq+-ufoyY=2bIq9M>M;I#!hB~U&^Eg4yYcD=T*voW59#%VGYL?avh65w-4 zuF(z~16c02=RRS#8K&?&TIWzL{~#B2j=^q(qI~s2QHLBN?NXjJZ~TX zGf&n?{cKxM%03Q_{LF<9N_+X+#s|Ev3*L-ql^(Cc)0xUn-J}w!5f-*5?LKJ@hujdc z7(Unrs06z--l~9~;?Tut7QN?;2M$tzF}Q7cTruk+>vDdb^y&Z1YkRs28|>GI1phV9 z*B}nRBV_+bo|%@v|31Rd={Wx-^yBN(#qF&T+)ZqJVxg&~oP}?RNOD>Ce56ZS#X-*F zKJMB8gl4#SLU|C)*qIX5N6uiF<<1(!Y+DM!1)Gjh)9Bn@GfRZd^KHw=<(}~7uW}GV zB$0aLyG_L0T{iY7UZ;rZ-U6pl*@Bq>i;&M}TJHN2P%Ls#S0od2Ym3n#OA5^kN+lrN zTw5hSmjkN(hMBhs$P@SHiBFCu9x;~kO_k~W8 zqe1KI7d%zMp7H0pJ4DHETDAvtPRPlI@0HF?2>W zg8Bu`uRylT?@Qmqx*g~~h@30-fxPpuoQ^V0`{DQOlg%B*&7r5{8q#qaMz!t-TtC^cmVvQtpq~AQgZ@CJQJRR>)RB31C1RD*9Up0wj^JkKmgE^zZ$>sE+(@ z6mTp93Q3h}Zv{(BuE>5R7P%mNiHx_{=AVahw)d5ge67~d>Pns7dr<6Mb;&iMG_+;7 z^c0&=NK?J1hNN~-JH|3)KFubB`Eo7eYaI$1VU7|r!}ZZT(1${t@T2b{`y^1V^lJUJ z7&6)Lo@J3U)6GP%%SmoH^&-@5AU0V<}AVh;9)MIDRxsHkcH|D#jfn#nQ;<+<-Ph6*&m2qh#MB?L0w}KY($zfi_R>X)gsh* z3$Eg!vGm@T+sh8o9A-SzIPI9boNPYh6y z=)~%&Upr7NXB-KizO^$|l!nWyac^e8e71_AK!^m(n+p46F^+B@;{gG~Yhl+Z@hNGw z?hNL#u4lO>1Z48_XC)F}Yd^D?W3rX4Nz=U^di=O;e-u_ABH{IvXwP~gL!Z`D+n9@Lp29{m{(l>%k+q?gN*F9xO)OWM#pR)I`}-~$o$JV8RS{o zXf67EpaI0)^w#GN1Ng}rfh2UFaN)C`lFslVmYVKq&*aW_13J+7$0ZCy`tcQ`t?RuCF>KG{piao0>L^4Fgy73Beu` zX8N2@iO&15KfSPzsayvL`i~%QAW2B#?K{0E9~WFh&(S7x8-@I?yw@bv!Io+?U!;be zIQ@{$WaHSo;u+)Go=_qtW(q=b4Z$7fB$M%(uc&T9p;o(@Oz=*ex$FidVo@+L=QH-5 z@%sB^21=njvrZCPO&{*Mv}fX~92t`N-xrQ4-C|VnK!KGR)F2)2Ql|F`((O_KAX6!9 zSsaa&{4CpUx_8{Rs)mu2%mR*EpJ`yvg;Y_NroZtD;{rAnJpi6~syQD77PH%(%|M=~ z@>5YCG)kB~UU(+!fTSCXb1UQ;Q8u9?;;JqnAkazsCHUR@TQrC%$+HKr5n~68Hov>l zn)){k2%qcLZPDMgbW>-&rpZVT-jF+{UtS+v&e0Ay9s4Y--oBc|L*E{`|8O0JyO|A3;6&+9L;zY4(-P)JO-92L2+_-rN~-Vfz!B(_`pP_}f|z{ZSoJfzHJ zw57mytDNfTg^=kW@)_B}=r-TN6TaeFO-nb=ZGy*$^N#3-D?2yVn06BLXnhY;_bLwM zfD9`kQzsAN#!!-ZsEfBR$PiSUK)|TF6KwJX1Hcx*doZf74*--;a#zj{tx{Sin)CC) zRjR?NG477D^={iOUBp~wpJr0=zMX7Chu4R+;OaXP=`D7WyL$A;gjt=JwicSmJz z9R**(!n@T>ohfQXX9;$5zvQWxJ$LL-+SF+eN>&ApD&)Y24q*^+e%bZe=V#rhDB?(R zBR2(C5Kx%y4AkXRMiLBt`mnmDP2Fj**&ad~c@AD5_Si#`3}+5^)@(e;Csq5_*Tep;)8CK-KYWy9 z-r6fFef?d%~K<F^4OveH6V{7N$SgH5py($;)>O`gybiE9-1}70 zes|n($Z^%mHi497`Ndw*tN|0`ghEOuWbp%(Mv4^OTol_xgwY*K8+)q3DwUyJ(hp&_ z)`21P4mqR~6>E06DAfW?JocwPghaKk1f30hm3c}Ezuj4gsxUVlBWMv1X?nsCT5(b( zUvT6g3O`#U38Kt&V%#Kz&)ciUJmGn+?mKI}nGu@I1a{UvY&qO2aWj$ z1MX5)W7AS+v}n)W&Id`c%}Q;xi}U2H`zUys2$7|a}Ui!>F z(dr#IDDELdD2~O?#=@0?tF6jI-`UTP)u454ep+7hQD4&6losEn^I`++`*XbQw@Caj zKBIire2gw3cSj!JXvlXsx1+tIJV~p(+qxkLZ3ABpMz&8MrpPu|ZW*2DPRcD__D>wI zb+`b9V)HzCGv6(HD8nlGJlx~q6nxX_K#!M^X$109tNlpAKabu=2c9}Dv_nncM!Q)p|jI#6c;W9 zUv=G}g^!}qwmO$l%pc+^n1*P4wP8r$52uXoojwn&zj!dA-)u#)A(;P4O~aW1zJIKA zN}yB-gPUJDXO*qg13UIfadY*_u3OG1A1X~nfqL1i z8MFb}XCMO2^FaT`2>TC84~&lJ&e2clgcC;$o38lsMs=TAmC5jIu4WZ8;cRDYfV5ak z_Um(+=ErjDT5N$jRAi(gbAVJ=_nNHl5uwy83J`M#?xp2aLAp$$_#NM%XBK>ir3EWS z&hKC=dB^%REmlw${~TSbVWHEtb*i_Ha z0opzFTX#9%`#prsVQfJ3@|&v%0*^wQUEA~wK_fY$moVo7|IDJhE~yH1@-M{+-vFsR zobB0bt)%{~3Ab_o%)5x%JHuJ>TCXMx=gAM&_H6k0?sCEb{St$phn!;TEj*l;5~>uw(bk-2gT`SK}!yM;Zsbi0o#^}q#oYERX8ruy&-eytT`v=(OHv{VqMfRpw zPhWAef1>l}mD0^2fb_QC4m%nf8$6nRpGInUMlbK>n~l6rZ;ehkvMy7{*FyH*+3fAH zNvm%gl3AsPeq`xJ!Xjo8VvkAly%_SxTD+g;TLa(Zwd7K5yG;YsR6R>m!tmTu$ohn4 zuDVYR4s6od^$-`P9<=@_eD4ZvU`cvD9xWjc3)Lg1By>~)hkWDlI|-^f zKhbV?!x+;0f(j`?13rbv!&z3JxZ&%c>SC)m3=s+*(ceu~nc-mxT#=3t>E01QLcrFK zYDGbTSR_~hZG*&^_R#UCgsL&uAkqOuTxfkO*y5WQO>ra>?2@;inNa3d*=*(;@G(ow zg9YPa5{StUfc#qq3f_@c91|6}-<1w3+hh3QnWM0EMo<~n*nv0{9j>^JSaAoaYMG@^vZg4&|3iw-wvJzq(fC zkPi4_G;Bs0E~dJ-f;E5vU(&nN)%M=LI^;^dJU9B?EFyH0Dp|;@k-XPiJz*s)6ssWW zZj*21C8559W6o8zQ~fJFAaLw8Rb^v9-kNLF!G!RsgKrQKrCIWw#!GAa;e&^Vfdu4; z1f9>EPy0q}??bD}k)WSMrc^;?AD549i*k>`DXlvIjJm-p&bR8L(|!4MQo^RE)Q%hx zeZ;k1**$C#8hK8O(ddsw+--O$X9TDd)<2KSF3B%QU((7{1FgT**v))-W;y6&x>9I)SI4^S~JErnXFXg25&o4>j) z)b(a)-=z1vZ%}`Ey^y!I4ur*T$tJZGz%pI+{5er0oKCLzy>EzHIw9l9a zq39!ZTnctimOHH~vE30qxMj(TO($F5q@7L?>wZ?C8_3~tLmrj23U$$qgMmiUK;jp; z6jwfh1X*vtF1+WPxtl0(sntMJE3Du7Nj}hOaZ>C_r8Hy?%=&(q@FwH;J`Z3r=dk`J zTtks>pL&(AZyv*DRUV|ADR-NQ*FMSqI&OxUR8#8@%nz`ak$K@#(UM3zm~I6LtsT75$ba(lyzHy^l~rX9CmM9)(? z17$I0w6}}oQG3EJJ4k(CTBamW_@$fCHF9e#VeyL ze@0)Rr+vd^a-_WD4YPTITdI!-+9{fmC?DEax+}pCRqVpwVvonB4>7nBhDH78H0~-a zz*+^ibY|MsO(TgpPhV@Y1AJB|{(eOMYE_9M=sIP6OBgdxM^+@pX|8Mcr4TJk6m4n5 ziXiaJ*p&-?K&b*y(`8pi(&|&8L#W4ItW9{dZZemVQp!r)4%EhxZm(=#!S9*Oby|I` zX~-SbwL3&%-nS5%s&w$ZKx5WD(0jt~09ttQq@VeTQ@ZxuGFs~=%s3V@a}gG-MW*MN z)z<6m0**(1pB}zo6zghlZFu&$#&J7)dPO1Y^<-XbUL4rs6(o+*We#pWXH2kr&%>`H zoOWnolYljeQ>X1HCJdJRjn=Kc7Dgcm3IRAn+8u^7H5GAQ?~WG*zWhutj;+9L^akXJ z;p=Ph_k0O(yzq>;g_h+N!M*wyfox}A-@jsWQ2v7a;tT6rVig$s6@zd&G;YVt-Y)fGpB@!z9_h>+AB6ARTOlMXaD2n{9yOo-3tLOQrK}uIxjCzcF0R zg+IWCh4T^#68;U@9g6Z+bxcrz?-fAWha!Kn!SsGff+N!nt236bW{ThT!urxo6Z1Aa z>m?U|d_BNVgwJ#aLVjfVjZqtk@>w1L;}PT9rx*gRz&6I~tN05|`A+OPG%OF^y?Doa zePM3;4ZbxE(-wYinO|)*s8}61tzy_NpW~voKqqA984>$*=3vAZy=bt(%lchL9}1vo zGi7tk91$$?-apEn7#`>;{j!H>>?50U!SvE|R1%**vh>JCa5`-vSQN?3nz@f|vU2RY zrFBTG4Dz49m8+l>VI_l*i|>?VCKn`aMMr5cum+Mb#o#Y>gtt!?Pk6ef=dTS2wLC^6 zj;jD5P@%TFQ!j7$cL8cyLotNKn|>Sl)8L`<{l5}L{eHe{XeM;&i?aF?lL+*%cyNma zKzlERxoLn6rCC6A$&oCYuOCt-W0Et+*)pn??<8;YL5((Rv7J%SiKhbZq3p7}N`97Z zF>exj>#+3*a>FZF?}Ir{&7hgG&_0kmxNALYBA9(S4WZXd)dO-ZX7)UsCX~*``QR@0qTjCooF5dsOM@` z;&HpdMBfd&Q0=a$3ACJJOrnZ z8grq`gD#25THPG}xSK`=4YytB^tz)ckM}C4ehlRMDo9a0yNk_?c!!*mC^^Ir?Qd0+ zb9X&rD|Y&UYLnFVS^#z_|BOw8O7OEN&@pW1rj>}Mi|>HnEREA=EOAU;IISk{yDZZw zl6Q}R&MSudgLtLF$XOH4;&1mt!2|o@`l+kt!=%HM_Fr9~JEQ{6r%`k36&e}4y7338 zxB#D2QqGu}{U`W#UATj?Tj?P_elUQ?cwuq+>Bh7hPx$`b+x2~_cLKQ%2U2K9AGpYT zZ8a9i2RH6|FV2KM#bG^)ce~H&-aO+8i}yMboQb(tRmpdbzuN zjk62ZG~U!h1FE7U`Z$edfhJ_b$Xn`4GIy-c|3ZmB^Y;mgDe=7BB^x^|h?SPxb@ zqz|v-qygySP-l(hke+EY!Ee(3ljL=e$)oT)1uJG8?_X0Nz!q@FTDl=)a(l${tPibSJjZ`<{s7ZrwIb zELm~Qx&TN7b;3kKM1s~-^xi#WY>K0qoW}7sJSe?Gy;FYleoz3@JdJU};d$_CgjJuw zY86%c*41$@lHf(w*7Xy1R;*SQ%?Cl{Ok~@nb~D85ibgtZK>>JO%Fma_LL+(|XbbBQ zT#v#*t)VPeHbF#B9<20$3hOe4c6WE(^qru7pu;xk$&M${=JslZx!_)8?SUy9$9c^D zQ4e#LcER%`A>^sZ%TIF?ERLctwM%0AhlvH(_yK(`^IewRY~t-L{y3d3yk>FsP5aBDK&?h^ww4>i z40OhBdDdG|a6oHu$_hkCpm~~dv8G&qaLhA*x|m#6mNvzJM|(OL309h!H7*d)flk{o z>{gVPM^wmEUtFB@`0hlG!B(u;a(W2%c71xd zIpDs(V0;uVoX^`q=wLv$C3fZrMi_l5a$EX=c7136t?hIl^VKU3PR`cz>+QN_3Y(a&Lm57*8ECzocs6g{+eXjR zby>H&k(bBj%THWk^4HPRHD7Cm3P#>^!@T47}qufLkve$e=NtpeSpUlKm)Wn@a5?MrbN5}_W^|oQS%n@HDR{ujA-jIWW|eG05i^pI zWtoZRYHCjPeDvp|fxFJ<#QUQabqup^O9SFLJIW5ysD=QIMro(0CBW$-p8Y!Bvnxx( zZu3+Ulech0?s%p$)GdWCn z$`T?S->XQ*1NC9?bJMg_jB`Hl|Ki&Pp=;qk{zlb#F6xUJEa`e&a=Mjq&G*{9D(58G zs?Yza7g1M6ui$2P<;n)bLSZu|6M4>*#G<JZLZe@Q~G}J=`#u z{CeDXF`YO+I7>cs%N`cJiDd0iTY=Qazj(Gkdu^kc>ZDYDc{0sy8_mO}s-|{eG&3EY zx+%C{6xy;X1dZzcw$f4RFRgv@X7=*}CT=vTIaOrr-B&rCVjc1?O>cm4ihP zX^ngkF}GO?6jc1qkpE;{r^saDfbg-NwNzB06|fm>oTOuBy|4sGLWQoL%?KfsweOV5 zS6oWcj^=9+L#M3F`MF#iOF1f*8aDub%p=F(wEcwb^J<{i^-irr5zwbQibqQ%HOWrb z*w{EwoXmk^r8}P3YPC1;X>jnzmFR3aEHeJe;vCcOW(Am!M;;@q!*xos9Ekkb#wRl; z2hwTx*cpVE$#*hLfVBq)Ga17p4}TWktQAky1jtRq>j{)@|Cq(Oo9+V~eGf}P3aArkL7Tz1@&_p7_` z5pE#vFV2oaP7TgyQZ;|%-j5~up|?MI5QRwCWX7* zwT6vf+^CsPJVahS-H35o`^9%AjUu3yVZOcm#T6J%01WlEfE5GHf1BCwLYF%P>`C>T zL*!dOQKx^(?PeEfXlR(`jT`-{WE=p=fcvH`esBQ*Qo6>z^?zT8f9i;wF`SR8TH*1p z?h4_sN&SCLmS8=CefAa)uv~U=}LGT@Q#M7U--Ewzf)K>*p^LFJ85+81SvPT{@g+yK1 zyI{%hKQ)p}l4Bel_59VS`!*Z`{GVImzlAxOoHx-;9@B*5uLd_Z9v`%e-fSX{{w0O< zKRZP(dO5fL+XEJBMa0{S4{ro+;^0vZ$@f3u+nqVML;UggpM{}tJbUzFJN$>}|216U zq6rfj7S%jAC*E8j`Tjfv59*01&tbLOqhY^EK$ux>?x)ZBhlp;%ghvt@#-UTcDvU?Z z?*5iZ{nsJ?<5j?*Z&q2Yt4#G50}JG59NwRX1(ANX&~qv%r7V>~O0!qs0j|R~zmt(Z zBXj~lf0OhOHi%QSR;g0*x%?gjc$Hb=mUQdU+qJIA^O`EKYE_jAKMH2 z)zBQcuRwkc_02HA_?a~RVM&f&3WrrItMmRPfB9c@yq_E%KI^<$z7+8%68oq2Is#^C znt?g~7fr(&7I5IboTpR0^E2c6j~CY6`{p^^s;QCm_!oZ&Z)<&H#->B+5f6Ww!TpEO zg$v+O#SpTb5Ym73t$g*uTJ0cDy#Fye`^VD#^*c#+fPCr>2Y>e*{}94IhWF<_^l+sB zc4y$_+xrp!W!3-s9gl?Xr+dd4HQ8TO0pz1Q-;ejMdxT8Cm>%<(LB@3)QUU$)8<9Ld zTonSAvz)8Wv$hY_kA}A?&{(B^ zAA>MCK6dI(GgkZXpN8zOEA!`~HI(BTfCygg*5o;fC3LSanTDq21hVC3VN=DRp(ozG z=r15>rLM^T22GbDA|$AFe1?91>CR{l)|=6@uTP8@gUq{gs<)uKB&6p-#Bw&>m_NoZ zyo*4zabc^vJEH#6IKkG!gBHKM6%Sev(!NsGDrz;>=29}&cEE@}HT8yIv3R2q=L2_( z)d?vs?d}j^ikc!$zVj5r82;iacb;FM`5UsK)e6Og&I%~uP*@d4fcyzDuCEly__{L_ zN#(IW=Q6g9>TX_WfxqOg`h6CG;;KI8>lk09cCj&*f|%LWK2m(q5_f0i?LNDLpxK%7 z;*H_60zyg&5Vf}N?@HNUfj|^6GJ7#lp>J&auX_7q>J54*rDX(*O`8$z1Xs1GU6!w- zVDnX`XPcc!O0DfBn##3q8H{i0T$+Z#H7>f{8iNUaHvR6^_9FujZogQ##@*A7rZ6@_w{zMSGf^DKeETB!%sS80aQVJ5yK}vDvR9rt(TzRUsr_oRm_o)S)9B6f;vZ|Vwg`ve;_R9({--AVxdDGn z^Y~yqR#N`e1<-mZLJ>8HAxBBDtNwa7i z!)Mf$uGe8qVgE9eKQ#EEhwPQ>s|w1Ek3Bx)I^FJXVtvwAnM?~%8_ZbhbX9D&f)!n7 zMh~m^CYR$yhC8-P@5E{=NCE|{9a|B3fi(&0;mSwA|2HL}IV{gE)&+DHs>PMsJ9BxD z*=o4k`qQ`G`ks8NEyon!`qSl&+rnYAZZU{){B)ZqxuL0BUT0Ur8b{*s&qBgg7mwSy z#5a>R!i-T7W(9Smr`TPjORagv48sEM7*7VU6>4=U*hu0faaWWTs0oRno|wrzyTtuLMgzL}|SJv-U>smr^j1OOSXL(v%>1dF!TfQYJJalJFoxazM z1Z8gJ*MH$O#inC=v7GQlu|hLJG4txwoZw5SG~o=k`IE0{wV=t$<$X@ejy#5itBk?8 z(G_1P86U+7=@@q3G?*@-WVfxkF3pmDR$g)0`nuD0jrmRu`l}4V=3>qaWjiK>S~r`n zfXbDxik7=uWex~?OXd1Xco(O2M2i^hW!8MQM2~&+S?Y{+SL$iVoU@s7-0QehO9J|E ze8<{5&d~!_brp-{%eIEezL79jyE@csz!tqSFoGktT+?jbxO@|*+dve;StKA}uHO+dM8d7=6&c~{+a2bn7peUy2ZA-P6S zmkELEGXtB-Ywn6XzZ(7gj@^$}_Qz~Y(Jw?VF48v^gH31 z^EO?Fi63K2K(-Q0m))dQn+^7x{&|Xh<%?w}e?&A~$R>$y)Mk}nrl0EXTL!dLcVk_- z$J0AOUa{2}ub|ev6?z`aSQi`X{P60)wxjbMJ+{L)1wgVn_F z0ymSX43{Ji{dGp+;n-C*hpWYQ@$1L~Csdq_F>`aZ=z`0|KJw~;B&)L~eJ(_sS2nyp zt{^KZD=DIhn$uPsG{}M|SQ9txmdUzi2b1D$*#eG}>w2I?hEB%IY4ZBi!(+M@K>?@H zYkLD5{9LoZ!(NgYECKzFYJNZUYFS6O-7L}UrgFM&pamPu8vXS(FItB3hmJn}RJs}H zVFr~8=1V4oG64_{7Mq#$549cj8J|cBCEpYtT{O^2Y>?ENPN~!VZe#!1|$yf}@G5 ztr>U?coVrG96Xs{ds--KN~uuS8v;zFh%eNkFqbSCYVAdz-HbYae z%QG`NE;Ns3Ro-DGZ6&lg*BBpRG2%5ck}L1qRWkQp*Qw*K7q{v}O|iM#gp3yK=y7Cr z#Gm(V!~_P&*9Mc7VI@Cvl5dd+B=Cax%Ke)+b1oD8vKeCP54~PkmvM1*I1G>| z@Tb~XZ1v@C4=mZ++3U{DIa$nwS?CtJytASd{HPd0CR8ez@AS?_-Qu|T{m3duyIL`7 zkFPY*8?p_CNG7^O7E-BAeuu=TY}sjo3C`6_JAL%#6o${?Kom^a2 zJV_4<1#=DS7S~2au5t$-Gn9dKA?AYhX{E#^1Qm9$+Bg@3)mye_o@6Gqu=B%`K9jMC z!;;QPNC|0$zRuNQ1l+~Cm7>ZB@8y)bZC|JT%x!6iRltt)@A|cN2uFMsnA|5j0{_RZ z|F`JRL!T-Pu7ecvjnP_dqW5B@wsSgryCa2Yp%@xWM=tqwGvxNTvXp7aVX?49);719 zu=7Mn64UYKhCuKaO#;mde!;``)@5co){8vlkVm`9X3poGXqip}1jJ@A0i=3ZMyt zM1W%`qvx5aXU>)yY)y1*EVS>f-)x>jk|iMwRK{O)D^O7)<3`Yye7YgNTDI)5eb8Z| zvymUX9~_Alsx=K?!EkQ2zKsi)SgoeB6)Uh=SF-1%R$f2Aq=EE}VOQWmP5u!H6tt z=MNa?RR>;ERK-51!K=}kvNbW!&P0#vt>Z^y&Nx>n_g%HF&p)_WF`50Mn3`|G z!dF~Hk}T6MZ_llmk#9ox5HdP*IQ1+${j$pHLu-4YQ0dSleY-RSbPgG`?+PVQ2)-Wv zgh9D8Ona7^-ISGVv2Jsr8N9AgCBWt8HF3u(dn}4K&1e)t^(=npvNv39(U^ra0ijLp zfg+XcNRvFFvvHZB6UTE@bLDbe6PB_Zvhl+BkoZ`iz|CwS&$N8Li*xslSuel%55w(U zB_P2}6Rf`N3x_Oz^FPjh6c5hJx?Eu_&t-ppH}wsH2EE{_X=6Dju;{%sTMVLLO?Sgl zfQ5PWQ`CwOa;5k!6C$}tW%_ytSj>UEeQsdq_;Pq`QBif?8%0B23>!JIvYEkt4bs@E z%sP4tjSa}O6Y5I+#@Y&hs?!UlXc#RwW9UvcKIn38e3_TxgsQ#!Bpo&p0Xu1j;=YsBnm1Q3`U*Rp-38(4lMa4H8ZB@&P#h`l z3bQpgt|%rTjDxOE{kKgErlzY&COzZFnRsER~5{%f*Pb` zq$86K7uNf05gUu4=4lki@)N4O<@2QU1R00TNXp8OW!m+Q*(KuhUoiRf%M0_??ZlUH zVM$#dwJmSTDqTc-j;2xAR4bdS>6Wdx6DWX$9F{(;jzKK#hOhKVCl&Bg>yPrk?E6^x zwoa>v9pFl_lx5X$wRz8vB!UO4W@_CIm#KhQd$muRXwmJeh_QZemAdY}S&GtD=Q;pwJUiuiCfh*J73pa#uOFNgkBqd-FK^@x@b=P9Qz=gEj7Qj6niveN^cjNp?<@%Q5fK%{ zkCOCVZcJrE(v3#8?~7)qPmSGwfP5A zD<&E4mR98GoBpPWg|C!e=9JU60Y{w3qz+BzeTKh4?(SMX|Ey(Ay{I5hkHbJfet4#n zvVxh+;stCJ&w+Zalg%xhG{+=M#C9_&L7W!9U<)>r#x_=pw>aQ1GQV#f`m_(en-;Uc zR`T}ICRrBdt;n{G4Hs>t;3}P(y-8hCtYd@gooHjHVRJP*M{TV#kTO&VaN-UY_0~H` z(TxHnT)C@pbY3~Vk+5SQXvmk6is87|Z?0FlnG1+^8sd?ZwjqDm_BF=-GthYaIgiL6 z=h=Vzur&v_D^SMi>ee2Ro!v7gRLv`M**V3t8I~?F@>zb4SCPAZzlf7qW1A8OX~l)X zYmoeOd5Ddo3ngQ3MduK*;01Q99wMaO8mXag)cK%*6guR-dTD0KzuUkl!B>cFT)ekN zcb-pv7$=IB!Wrs=!hU%j&#?w};j3lwtYdI+5Epm)jspu}wltyZ>3MFXPGlxv1 zuwllrvbL4tYd^#PtocQ8vEHR^vht!{alb*H7_QE6tEAZBi>kby)546`LMIZJckk?e zxX*rq{D-AY!im>@)GBZI&eF!HRK#|bNk-y?VmaDAzqmt%P(tv|>QPz2rKw?eFWlzM zx$Xl7b4$2v0oYbS(j~RCCo9cpniK*BEX9X+Uuwm5p;CS4e9BDQPv@s)(?~a08g5z3x_!_3ikea z;Qyb~avrXfto&#bt`}#bi@-@`*ihgmiIbs2%opaFo5-VMpgB-oJnQ5(`h;JD_xj_I zZ`&H9{Zwp36EMrf9nJgeUsO?DBRz*%_)RP>IC8$JsYIW$sC?Nv+Q?25K2Vc2*xnd^ z9-4-INWSwX8q77x#up9O&BFIyG>rH7`rEo_w&!qG=ZXGRC6Aj8=S-0kSA^Fv(}X=a zzp256xNjJ&uY}diQL%h=M<|mdb>|HV-*FA#BqbX6wx>^sxs&K6;`s%g);}GT)*pPD z2Y^CWtgtvbX${1zA^iovj^O3Z3TPXd4$*_lCK2890wKnbqscg1AT(03cWY+Bv?gKj z$?fCGEKzHB{o`y|#@t_XEs|x!wE4rL|23WPw~fG8*ziOivAxxt2rmoO!dz8HbTy!j zuHj-MCDw^U3iY^N+sG!Vl9phnOkOn3R=BSz=~xABp=1@kt9c}rhz}tS9EV_ClRaFU zW$a{iRZ~E8Km56pnr!b$AD@+h`G>3xr~jw9FOP?M|Nbv!iNd{EZr56FNwy?e##ZW5 zvPAZ^h!B!3jG3mAZdtETG^j9)eP=AA1tI&s4H3iG4aN*J^LxAZR`j{uX?}lw=dXFp zyx*_a>wRA5JkRnv=e!+^RW@ogmzz%*tx7RAXE0^-p5OUtwhiNdrm+Aui?L(2H+s$N zg*s*QQ8zKDs@_@BJc;n90I$nD*okOOm303Ix>*ySHLn^vynC8mbXz9hQk8zAth(Ew_8#$-gXo3HEgz5kGog=K z;b0&8ks=nwRJ#_syTZo*EEWr{ecd%ZS8u5u$mFxgwrdxPavdA%wZg^}#6C5?8K%-h z+nP@C7|nOAUJp^LaPb0D20t3rfiMMQExN4jR3L=;G6M@;QoT32o+EHTgK1@9=jEZk z&k^IK)!jgX`qJIeLB9cNhPiV%=Ft}=^OeL~IV#@tV47BT=x3SqKyPBmhQdESoQ6MhbV7GxQUJ3HOQixU%Jd6wq>ofolNq5 zjb&`?sj<|ZodR@IVLh5U$BE$o`FV0RMN-*u^0YY_ojSnAO|Fv|HnB^+% zKpq%tyP@kk{V30ZM+$Q|gK22M+gt8qjd(#(v-@MlXJ-C#4#pbsxT_nv51uM07Yw`` zJXU8}h5BVPR$5n3lp+`AEcWhw4C$$IewF4&d||VF)o<~J8a&2A_z(Du3QZ@F-NSXq zoF=U5(Rh4s5+FbALP#p8(9-H4Cf5Sw$&2au9RdD^w_N7CNIndRKYz^wT z?tqgB8LYg}*+1jxYGs^Kq3Y8DQ8h17@AWfVB|am1S!8~I_;eKT!&RsPW&8Yw)Id6D z1XR=))%tgUFn15EeqD$=h(t=u5x1v046UIhTN2+9*=oArfD(<0ig3vtel>q@7$OHdF4x^I*DJb zK1Mpj{JC{YYKr%2=V7A)%<}-1c;d=L+^0Be6(_MfloYf?I*#-P(9Nss?Ybo5?Ndgr z@ByiBeZ?{5x{V z(pfA5LOQLJVm1FYqT&BrYedyc%^ynHZjEJ>D)l$BBvvD(5Nk1G7Iq8OnV*WkmYyW> zGN`PpKC#}LCjNQV{{=HJ*TXkE-9i^1jK!67%?^G(pioZ|+H-RGRgo#{4-BHN#;tJu z&7G%JNs_58?u{nBz#&VHO6p0L;v`#H;guOu?Laz#}$5H=pC>o z?%UYH~z{cqiS{HshDNNuzkWw?J)gfm>=UQ2A0EfKz;Nx_sclbyE zC(=VdkcWnbiHbOOpH z_r3V-hf+{P8N}A)*A#6gMKkjDZhfTA732R=ISPN9=$3<-dOcvb%qEb}2LdJE84AxXNF;)n`C1FPRWq_Lm)b%21e0&iD*# z#W8n;SGxa{qXiVpd@vxFENr=b+e}GR7A{hYLFWA*mY;tfN(CqmnR^yRtM2Vv6j~Mm za1FA2Tr!Bh31JC1r575`fo?>0$9grLC;`-#h&`*n4pv<>F4BQ@=_( zh`G&wgi)mQC+FD;Rq37(s4tv5dNq+wN<*aoN}+*7@@Uc0QrlPwfR_t@m4S>`eW{(K zMdi;Ax*YI#2F;J0;BTij%o%oOC0m7F+AKo>KBQ1XvS=m@d@~(8!#;u4S=v?r+0xe4 z!h)-Z`&Cs{L?v#$)43%#jQFh|PGhRu_CK-=6YrnMj_ai1sMRZc7)usjN+bq9; zFbScqVP!?Nd}{Pr&cC7c7s|o}&ItzvJ2pd(wXfe_94q!OC29y!FK1d79Xm3otg5;} z@g*EcRrJKx^q|RVdDq)Uk&2Z>@0<_~cBLeoDHLN?b@kk!SL3YA)wNuOo7BKpZnAF# zgovLUuM(HIW!z?T7Z*9Ia?}dU_`c3*&32OOab;C4BTWseeq`a*W9WgBL7%!KlGfnn zXEL*sBA}IcdFW{{6?n7Wepv@&IG>u^jf#(5(k*Xt?2uvZQ}7~}9=EB3@-7ura+_Yp znaa_dbXlA$sXVyaZ%0Vbbp-kY zFm%W|G&l4d_tJ7P7F$=5NiMn;Y+=ZHZ7dH6bm(~Cn94M(@M&8IU&S^%ThgO0o;qHEc7vmIOR3x5qD<7LPEps-4%#_-t z)@rw?WPl-Wo{hb%s#2vam7uYwr>EUfa$zc@_e(?y>XKPsx!=NwfX_2+9_hZBvT#1o z5o=<*r+fhat}U{e>j9fFF`hn!d22=!3z9S$TwPrkyWGL@JQAi)3D7YY>z~$V3rr9$ z(&eKKOLeI_zm&AvLx!2W)&Ax4ODoI`<%ctQ$1 zO}!|;1xg1&=*sAMXGOs964Vy-CBXidB+LsH`U@I*%jcC8!xf2spf7Q?6A9*&C}pLOx{yf}SiZ`IYBhNp7t>810pgBxOpV~5b$xd&S! z?tV%?Mu?`CO3lm8rir{f%!i)~m=CW@Rr|@MJ3F)^asByqXXl0%gfphc8fvIa>K&7@ zo5-B$Cq0c|#B}_6Wd1}RII$u0WH4X8^N4K1^Jh7MA0{vLp+svub(P(sxL@~Vn(fzX z_CGe!VxymZB4J_$E3wzcxlTYuE-s$AZit}5spsH%tW2``ZcoV|#PLIms%*e)o`oB6 zK_tB9ZMaU0w91wKOGeZF3m-M{-Ysx>HK=MvK|r{m+zDz3e<`)fj|J_ex5XW1xnY?^ zg%Vn7d*&s+$4s9!bMGMrv5Ei+LF&W3a;IvO%9+8Zx8B37!c+oQpKsh|t!5WGRcM&_ z`d<9i*grs!_^Xgt?_ z%5sV%RsnC*9Bb08G-OZ}slt%?_> z5Mv1Rh7Lr+s>cdA`f$l^tV33;ebg)v_E8TAn5ETsVAf`0N)J1g1 z%%OagDCKID&12_}{pp$)>+dytPBcFb$ba;HsOWNy664Fd@FB4yy1k0Ep#u9iaW11^ z!7a|y+y=>0Igbgbl`-T9ccJ*%L6k$EArG1q^A+Hlfp>>C4;8_G4{sJ%%P}oG=Ac%j zYMXGT@zw8PM{Q0Vwa~b>PRxOtU?dq!`Iz=TPNwBmz)u;hm7O>XXP9b|Y%&T|ntP%uFCrUnbtEMG z4^VhZ_vH|mY_v>{Zsn~mM*;LrbPxthY zLHT0Lz}1P&KEFGDEkI8lf#%`FW+Z#8IqRHHkNL4PMS9Zaonyk@tdrJ0L?dGE+kEF9 zA#!!VO8`}uT-%A%jhR@yz6WtcmQTo!8UUPV1Fy|ZE90_;Z2WP+FM^ajh8RDM>m>9~ zyW_Z$DULj6b+ht-guMu(Cv(|=E;$`(-BI9yUg*N(-8R*b?s{xghSd44cx}lbM51rQ zd5?`eO_Q=@Ti^8IMjNm$f537i@o=4htXx>4&t>owH4rq6KE)=O7_f>LVXQOMQYu=O zQ1!+HFR>0dsfAL5a^ON8LWw{5+H=1&EJYn;1NnCO2&zd@$V2Xp8a+a)^BsP%VtsMe zkxf^Cl)=)x#dgn@M^>V z3wMh}n)?Dtkz;nhhd;Vp11hS~j`=iC+49h~9SnUr7ml5;bULC!i!AB{2E*{Df0}T+ zeYl$~Zj${-6QL$3Kj`HGc`aEod?4zGPKcqdvedA9R@%u*=PsNZv(DHPbEK}71kYGF zlwy(TI>2cv1=pK5WLG?TMCUoD*gGrd^_e0^r-HiqDOK5mJ07gTC0VYI+sw3lFY;8) zA>rURc^+*okZ6;VDsprA*!#B}P31#3@uVUI{PG@ui=r}oH*-HTJ3nXoh1+#8cSkp2 zWn8>F7y-0wv6)+X7bRkAy)P^A^;OG02&DN%tq{&ccNu#w3_T*9Skhd$}!O9j?zh&-Ukr1)qq1TK7%u=0ruBq8dJlRmN=wz>>)cfOidunWKqm-nTK*iw)$6&EtztpR zhT8LJ;@d=&fQQyJ3D@L_b!Rc4j-mKavx&Nes-8{1gIvd>9`j27!6r>Pr@S!o)`FM+okc&1?${yBc>e6^%LMu2$TuA}#0g)#UkU_3 z&g35qfu^Agp-Ly zuCByEJw>NL#)WLRipKjZ)6TyZzIN_!)AX_M1BJ>QVne#O#2gDkV51VwIXh)V<+qq> z<43fj3p%hDx48a5J<2|BRs(|WMR%Het^qp}_+rp=MfNn#%XUWB?kXUcqv>V%tM%>I z0AC?xP}()qy7Gu1oN^W-VU(NQNJ(7ZXLfT{O^pOYLab(Il$@>(`VlIL>567+ij1g$ z_U!VHska`Ip6m~Q?AfeTiOVlR&ubX1r@*7a)lP93Ajt7z-i!*0xux`;uFK_(vC z@TO+}ocB-R7JzyH00hnOe$6@hu3=!y#wGzKP2IjVK|1yt@YV3g>QgM9`?oKqG?k7b zp-)P*`KW8yeJM>^FD5XB4I|6rCO(4Y<#`TjawTBg!?zrg?(WWZ8>R58gT3%2xAYS$ zEAklNWg9Bs3)XUehCS}}__6#u9?t29R_(%bI9|Hn*xTv%YOTmUT3lHu@Y6@5F+o81BHwhSTLF4?5om+^u;y{>yY_31`L-)SZu&gs zX`;3f93kLsUp3UBc0{lLa2(UVhVtQC1MtP^8<_y!0)5OZl$UzP7NY@I#5mi$%c=B| zh~|^tTPtwXL({j*J3|mOYojX_PR*LP z`o(vcpw5+;emoWlR@<1gi+nRqu&*=J=FTJx1+;)c@byJKD0gG5JBvDkwN-xDN0SnQ z*NtC$l~PtVI5rnB7tSo`{~I(rJ+|Klkhv6Wf&i7+Cyn)_IvVSMDw$56JR7iT z*jX>0rr3@{;^juyN7)ro>?|*3hp|LN-u8hl3DJB_GiUR}=?T zpRdz<+#M4mJ?XS{~H8GSX@AP$4L-!xBSD?Wvu-Bm%NF zzz8YaRKEzwpdU4PEKJN@Ek2YaRe@6K?&@{gm-C_9)Lav1c;Kb(bgyH}P-AQ=Sub!@ zBM&=Q9vzt_T-7}_n&PIao z1eKD#qk59rdC4;-K!#Z%IYlp#_g>;2b_990?a%QyGi4wAopm$KE0rExa}koeWxsd+ zP^opCjrsbFqUWLUqXsKju3JLo9ZxIHc&F>>4R@$?cnbW<7|WNhPmXaG8&LsS7?M7u zl%)vY25LBu1nao~*7ekvxDwETdh^JAhIb7&&8k8oa1~I*a>pqt7`4DmS{%i4!$3GF zwPU)km`e%co>-YMJI+@r#pp=r4eSYBO;>(KnlGMCZqSGyv zan_*p_NVth5nZC#Zl`LPuLJ6TA}7JR!wS9GOV8Q@mBQKy3Kxn+`^y&Z@OCd;{&LQj z#tp<@&HdWD&(rdAij&llAyWKK zZ?R>+&Y~`~e+@rO5u_3jXyYd5@FAaBZ@FpY&Y7)dzAYc?$>f~;wy!+5_1~|90m54O z(@`$g@j0jUYBC|zq;h$1NrrFhB7n8+18Qg2NwOzsRbvacVs|HOI!uFYhIW{{j51fS zi*5Qg!`O-IXQ=2(P($7*)5{$=3@ixaIf%k+{2U-Hz4(958&XtQ;FTZvRn-2KG%`S#d0rY2K;z7E>!g2C zu6h^DDmj5U$B)j_o}CO>RxcxXc>suJTG-Zw0*?aBD7Y(KD3{(DVNr~vPfY`$|9J!& zaGbz$)IjYL{&ObMHqQ8FX=JHdAw-&OC2W&1D1`ThV~ZkzmOwtCC+ zazFa1xgQ2u`jh_Y^3_e?6@dYCZ(blQ;n}*o-@UD*+V&uygMnL_7Py$1ZQ1;H10gV^ z_;bb7Hy3W($hboLh9 z$&tnYuG%q(rEeQLLTTwBR=&L!V&B8?4%DeOFlD-{76kkbbx=bU~2 z56`p-L>d! z|EsuupZ*W`>nDeSZo%k8!^vYT^ezq{;IqtXy5%_OC%O?{Cn=--P$Qklq>fT=xrl;o z(D_*R_iSpfV0c+6eK(FW`b74Bjn@1ae841Nry`W5t5d$1;xqv5A0D;Mvc5-WbCaD6 zW(;s{6S})MS?*5{P4?lSlM7k)_nyPCK9-=B2lXv0OaZby`=uP`$B1zU(8{r}PBT#{ zdSyAo@#wb;ptb43+9QU>mb7e*5iXb-dZUN}f!fU5h~9tpvrj`=pXe8Wf%R~wbs0@( z1ylkRU#DhgO7z=3gi3#3zU&-xO4=oHL+Zmsxh>1y zC{fQMJ3=v&Rxh)sW$P&Aq893rO6wab|7`$PYwxj4d5|F&s1rP0VwILqLVl%AHVC$t z{W>%|PpPV>r4Xnp21%7P7UHk#h8n0xl0^6 zA^U{h+2R2fm47Yq-!k++L>mFavX#{C)7|8-RHRkbH^zcajkg1aXC!T~{7f&VjU=d> z3v9+482V&`AtVz}h{LUfo!ALfmrzP9*=+2=c(Es6? z04dS4yiTtR@SX>7hDV~PRJE=;dh^8--W&rwQd8@GH{KK@~G z*zHY+`SxyltptDzjjkPzp)=Y8%(h7n>76_1qlXg%oX6CfzI%29@y_yHbV~9&z}T!4 gD5KM#XW7`b@cZ3_+59xh4&ZbCobK7|Gq!jCA9o@nivR!s literal 0 HcmV?d00001 diff --git a/docs/tutorials/aws/img/finding-details.png b/docs/tutorials/aws/img/finding-details.png new file mode 100644 index 0000000000000000000000000000000000000000..34515e5637b837fee89c3fa3ed06c863e25e15c6 GIT binary patch literal 617259 zcmeEuby!@>vM(AY=n&i|5IjI|cZc8>+=2&p5AK#A39i8*c(5Tsf(3UE?(Y5;J2~g> zyU%|2dw2i+=KF@#vubs9cm1lXtEzhurYJ9ohD?YI0|SF5EhVN5To7Pj9{GbF0e8A} zFoR)WPz5YRMHQt*MInj~wx$+uOkiN7!V)x)Ua55Brfa{8jU5z8dg6hVizOrjVt9K( zJ_(Y3t7wFZfa9sDYPV|yOVmJ@JqcTp8JZ?uVW|I{hGyI7TUnDdtnPWje%gMD=l%7- z$NN-nR~rJDQ3Z#NB|cU7w_ZwF&jg-_GV`!U32!|DeTBvO0z;mp0Wt0PE&*#Eu--D$ zm@-H-%`W+IT=4q7*y0Egkq;*JRVeEPVv|=W2JBmnqxN?qFrh5-Mh;o8f(_xPpL~F{ zqnL2X`q7(kiTa&)dp}v80@uN0imWz>+1?D zqN(T=3@4bP&qvHmZ!+JXa`r_&m1E?z0@1ILb0!!V`f zDoCXq-@lT%otT1)Rwh%S@0Wk+_W`cLB<=+_p%Hs%8nOcxd4d2%MAg(#fWQ-rrsux0 zq05NbpCLg4>hZLXqcpCP*6>jK@n%vPR>bHJ{aSb0?Zmx5MJrKG3@PwD~}02n+d(5M1S37%sYx z-!N&9NHO`S-WnZHi@_g9?E$)eyA+PtPFB}%GQs%L5o%@s1D%Ikgeujw@DbeN_lcr33DA|M8KVto0F zs2XM(t}w3`@H)1)Fo6N*Tpf>qj) z?S*tOsg_~_Axctw@4|B_G($mgoMG@wVZ-C;%DhH+5FiAp8v)&IHISDi%=tih#H4gEdV0%1n_H)T*8uURmDEh!? z8q96ez~U7Z)i+b4yjR@nL1RWy2Lk$SJQaF76!PtxT=1@e^jyRWt?n1kyr`h~ z`Z4?M+XuKegm>WmwiZlt1PXunZy{fwMpC`Tq{5N`tp@G}wgs{tXl{`=Q9KE25F^UQ z^TJgL<8HTT?`TJBZ*G6z?y_WTBp4>f0^yFmkz#(vSQx7+q9r*kXGyM0=^Q6eP*C)t z=u1&xQEp+V>RM5J@s2WgmV?^r#~!oFM^oWDqR~%}yH&bnyJxzhR(e+$kIcfUI)axZ zrE^yl*A&NeuRKRw*) z*jn8}8e=Lxw~S>kVV@+_iTX&0Lnz6{!*<2Knar5XoP3!a!R~6IH@GuSZlP%vWPVt) zW@SCbQ+oO#dWd1;4Nr_f3^d9ocs@^Vw03CCeBC_BVt>eHWN&0>*nUEK{A0FCmZMI- z3f@S~`0B>mCgT`?rl-pJ`}7J@S%u6xsdDxGqIu6-!z;flxLf7h<}1zIHe8!W!FFil(znK3#Y={&*$1D=H6SWleiNKoOl6{MlgBhI_ zm#Caozh2S6(U5OOE6n38TKL|k5~ho$%2f=e z)}|SK)<53=SWn((Z?P4wFwlCfRZ?kQyHUkfLu|r5SNZ)Y8fPlpBEh=m`&R0hrxnpQ z_BP`9>G&MS6$f#OQ3_#-XD!Yl@rc2WnbR8;JTCMy(UI17_%5kzD<*CC;@;onn+oQTUSip&lOY zGJID2o=wl2hnwk|c|J`4c(rD<=5Fin8hieH-*}$Po6j5B8~x&Db$cUayRo;k5vF_eL?_ zF_(>&>6X&JH?}Lp2qpNU!XX^DgpELp7iR(O{J|S)vy#(^FkW= z8a29b%kZE*j|ZmWj|DiXTqXB}^knAey%KItZYanZl*$TBvb)=9v1U5Zm!8r<_5F^|wbv3z|NVgsNH6--=&-?rJH>-e_A{=|;*om&cT|NV61l9vU_4$m(d3 zYs)|U#IC@ZB4BpaMo>baZA#9{YRWNC`GMV6ePZYH6z{s?+DiYWciHhQj^jeV?8gbN z1-HAM%NXCs*Lk1BO2w3iE55pZ`xJB`ve;THZWA%iaHZbE)ck5qM_upCgxU76LtocN z_j>#5yC0O+viwOlIubfmS}u<6Uysu0*)*`r-I^Rmdm7Xt)$)qx%hEqziPU>ueqxVj zA7)Rp${FVzZEHWuYaWW`BfOE+_3QDt{r%3!Fy zRa8>kQ}?6}*V?;*!F{HF;X{j>E$6IW?d>-DP;`IVA+L5(b5XG?!LF88z_^r^hfB)LCo)57>1@7`=ojjX>~Pwu}?6Lk5u-WnJ2BjPlPk7=yNqnh+?Zuz{;I^EhishN>e z=MXwPDNuRaKK8aazYI~I*E7xWb~tK-XqWT7&HNVr%#eG8Z}GLu{H}&;_?{P(_nLH3 zZ__*KdKDv*RQ1;IymMZDpnn-7fUH(P#?9%RdH*ni8c_l2)aNVXsde|`MANy>>bxR- zFr9v&lW*VSsn213-HJk=Aie%HlsZM-p%))ebIG$wkg-f*JMq- zzUPDTc`n^WuE`cnGiJ~h|V7Ys);&3-q2u*@2*3HQhbpR+!GglU?G zg<-&f;hD`)`c8A^>mZ8lsm={||Cs(P)ZrK*6ZfvA^R%@k1s&$hI$(yWpj-g=?JGi< zuz46~Me?j7j2ib_zlG8zPk*Zr`r!b=KIzhJcKLd$=PMFSVw zd>`uky28H;hCu>;JpsOMnQ;Gl8Vw;6{$J%s{s0X|SVdG?8n~($JD8Z*IGWo!&C4RL z0yiGpNohL5z~E9od|{=PpB(`FCoNQ8IlYp5$zyD5&1m@A*2sj>&D!pP4-B6h4^Xr= zaWaIsS--JyYpCJ+wB7mP2+1&|>S2%p1i zQyyh8iQmu8gj%jJ6JDOw8Qe+)OW6m{?dCfF~Fn-EEu<-56{f zDSk2e7auVbM`H&IJ0}ZU8^{A+LnB*fCw_ABhlc+B`PEMoH;eyj$;R>buz&$FJy4jK z8DB8{n>SFE@8K?wqJ^8u8%;3_Yd~f|8v@K692|UqRQM0le>M51s;~a5Dl021%b%h-k$pGoWG~PsQ)8Zt=Y@9IVYxV*Q6DZ6~O^fTUXO@AJ2F5 zyS~(|8cHBUIPhB-1PF|u9qs4yK|`5DF6NFHyd)#B7%|G;f6lIomrwJ^f#Bc|hS`ErNw$5&Ypm zAsxSO8VbYsWq!89wMYHc!hb#ar%L}*aZwInaNzRYzUeoEAfU_0s4qqSnf?et;z1BF zwv0Ts3)U}Kej)=s*2xNY{-+$j*1&-f>c{b{LVhV^pgF)$GX5tq?f< z@jp~UFvuG~ISA?)%pd&Q?tBDC!4$C*7UmXM=J^XfGNAN`WU(b@? zqw)m$IE5v``&)*n4>Al^U_?jzhcf)}AVX6H26WV43=H%E#k`i-fc=LZ^oykeP?qAQ zm?ZmUF@#<`v=BKtiTzLY#$O7s4-o%$%ipSI>fwt z1pH#~3c&ewcYwq{?O>qPgHc_v_$L2*y7@~2F#WXuuKpYMzZum3+-Yz;&_%>Ns&T|$ z$_z4j=yD}i@Z4|5;(xCGH#;~xzO7Pq}gOnIl`VT9~b6Wc`zPr)m6nk9I@4G8jsVj)sLZUp^b z<|h^)#Fqw&X#W@TL(dIGfGNH`5-Jp1gQ4|%y)o1RWc|Y1!`|-irEIA4K=<*tcl&$# z!`;?;z+8?iz##aScn|(|fIuS;BHtW|2>7ife-Sxo`GJ0j71{Rp^am#s+z&Wel|FEQ zdhG_N|CarS2id>O&?6@Pd)edT0rbcW17gy@r9S}TXU7OkiBl{<8dhZ0|5}Nwfk7Bv zoh<$Qd#!8z@<6{qSU&iB`orBoM*xJ93>XlC=5;2{Z{$7!gFqh1$3sH;TWG-FALz@} z_#uB!e^5q9Dq!tj-y#S>x~7pze*xk5f&s7$9|W4Yxc+wH`Mm%JsfaK5jf?MZ>3?)) z5kMERO%04}T)_PI+z7M)2GM%5+41f7bo|SB1MMH^7mvR${yqHxXwW)4 zb0l9O{;B8{xYlgZ)pZ`~EvpapQi2tWB235@3(GEQLj|T3%Y(LkTu1c$Z5saw=Kidh zl7OLc5PR(X7u5eeeIeBk7TT0S3|JvM_i6jV|G^4HJ*aU$;lreEEKN_>tF}5PU5c|RTlgZaQLdMeD4qO_Ht*#n zKc#GXB!SL&%$E{aE{K-hMbEPvvfX34z|rOYBrSET!Rocr4(WPzz?f;C_nooGboV8 zFU|98q^$Y6@a5(c)$wMr&}q&c0D`})E)c#4wND=qi00=5HTmABGwL=;ePlKJgwJdo z93qOY)Om5Xt9^B~8ey4{4Pd#kU?}KyA(YX+-`?|tS@~HwDSt!dR*Hh}?N!1&)IDb= z#@tAdBJ39J%_aGpa=m(yIxpL>Z3dgcZH;nT!|cEl@1A(oOatMoy~cgG#xTYDrs8zh ztS9ii|G9F2|Cq#R4=^)Z^Sj=`MG>+my6nuFOiRvu&6$3)&=65px~GpdxU@@;_vRW^hf52}WCsMA z3pFEf8$8VDWbl}T>ul$g8I-5z(oFkOii@ttS+^%ja~Mf@wp@&F*W}{)CDC=8S#gLF zw&rrE(|Fv6ohs0@IaF$QrsQVYi~{I0Tn&d%I{(A3Ule^Xt;dmorHV1!o_5|YbWS-7 zwmzdPchd*!4}Y(nK-)$3GaE=(swH;EVZVE?mmf_S-PA7paiaWoUtJaAE3h?_pMUTF z^fj_yCfI@eGtr`m!D=#E`~B8v3EeG9cz{a>Pk>QNswNVgaKCvL6GCeS00WfGc#nL} zj{-ZFLKyKswC!gKC@@iI@Y^lY#%eE~A4}1zLgmcF&em_#1}@N%T)FL&j@$FSxg1tK zy@s@yCzNyvv>NIfzK5-dN6qdk8vEwr4JVtlj)~8M=Q0GmWjbR>+21(Qt4A(x!t+tX(yW7bwmJ}aE(K$TK3ODK9R42yv%bcC6oblH?dL&{5G4E~_ zAJs<~siyqwm-(Jre(>IMVyH}=v&C{wtLOd11rMz5`U~a7o^@UPr>%y6HbK7@1MG*z zAeRDg4|1&dU3R$CiVg33Y3Ka!)d2fMWvshUJ+)tLvhAXlKV4%vxFWr*=FDe|4Otrc zc;?9^ko?{zkFf|~A^!Ol0|FbIgPmjy z-Q$KXof?CTKf68biE^$~oT~K)zrQ$zeg~9bEjZx>dezL{Bu1pI6`gwbfQ$S0N+Qs= zQ|})V4~-<4Ty3pcUII%eXa=!Q5>8V@9mmdPkx>JLKx0+rt)z|Bmu=_ z|Q`7 z1{>P%YR;`yB?R8T|L}OZP|Nvr-_5ks`LqY8NKxXR7yJAk*Dtd&Pj)0~n-kTQQ)6$o z+O*B1t@f=dIsxB@wZ8Nm?UOo*sDk@UzXlIggl1rk6Dz}iYCfik|lQGZ?fK z2b~WkQtGC(g?f#anqj!BpKtW6r`Z@6fLQ!?XKIITxEG40 z2xL34DKLESsL|z8Sw3b<#+2;@Tl_b;g@9Dh>svMe?rF&}kK<2FIQH~eMeogm(Fk5T zZ;!u&dL?dO#03ZwD{{NsAlSPZ_3vyp@Osf-8}l5%^(K|)qNm-dmV*2sIFhk_fG}Ri zzlw`M`~k-Y`xp^%wL!;g61|kv4-)c$cyGmik(s3ND7F9cPPQ%sTEl?Hs`ZTSgMa`| zcl_H~7V2ELitNeh)+4d}OSA6dE5YHXE~SZabn6PF+32o!diqDubD8P^*Z6b5;JO$G zNMcS6GQw@_9@2EJRg&m}iPQFQ(0GZKwcF%35>SKNBAnW7{kuhIS3={tyJB*+#p;w0 zf4ZP+bdg3`wsz+keHXW_?_6#TDWCR`x zOXv5bk|UafsMgtmO5GTvvkd0Fikg?-cGc?gsyX)%Xb9}b&wO(lM8*%|%I`~+Ht9`5 znMO0THk5fQIza5Bp17Qz9uF~uGr{>wHu&j7U^MbaV5C;8G#JQRZ8_!t=wv@NDxO#WOVl}SO1#d%<7Jlq`YO77l;JlwC5*_PC=I#rbb*Y!|Tc$OA z$L*_)Ox?1P5Nui_gd#l}MDZwMrLn!OkBO{Jx!yl_QA?5%WK0y^)OS~rZ;aVQFLW^+ ziWgYvo|7?L^UmN8!wY-yJ>|z9t-4pdI$DirJE?bgo%86_@<|L;o!zF)m;>VRde-z9 zeessR@pnCldHZDd$xglgp!|G>4?j-?5mtM=+2MZ#=Zg<1EIX%4(V;9YME{EypZZgU zS9_A`__DR3&=tMxT#JmK=m=4S0{*5iQ%oBKXAjKkY(}?YI1;^6Et-7y1*~Tp641%` zq!5vDa*=W9A8G#V`gjW}_tqu&0UGejoagr#J~HWbQYe^k; zllhab&PFi4%@-Q;Zq3W_lSf$!Q=8u1p6e4bJD~2)S0#CQ+ioUClJMd>?@jt?Rhv^m z!Bu2MUwrQcg#ca#yD+;{Ym*wT4cFhyAs(^qDWYk$Idr~jM)qZ!D@3EX}roGS@wo?eK@S= zMMBU?vTl*kWjggL#q722&W#Fv*BR$FmhyUwOx{z<$sDiuz1!NGZ?K6i)WEv{#5_BZ&`wcbck880-)zO&vJYo`!$+7uM8BSR^aZuN<_r&+>3 z_vVHzJDr;1ctKeKN7l;4l}TI{k7;nsihk>UI`nMka8UjId0y2p$@`Vy^Zf;tHi^EC z1w5t|y3GoY8am}nIW=0-?+PED>72MyO@Fq*5sxAq8=s>Cs}>l*60*GEA`$Q!9oJ9) zxjyt$7@o$H<1}c|ftU2@PddM^2p(`%CB@OyG~*FMii$K(&@^}Dc>6DWaUEVgbDeg> z<}`inakfRlk4@2gF?&uFM%9Gi|H@^sN4ENU*7)%hjUB6N3=_k_LBe#B^K&WMC+)GH z0=5N##Mn!oXCeM@grFtx&{sp_jWi>tEO~2f<;vXgrxkA>YcZKHft@xs9#4OEZ?vY= zWHrnE-ZEa*XAJk(u)H-%$Q%QqbneTyMXW^Dq`PzM5Il)a1Dwxzpq_LJq|%w{IC8O2 zg9iOuk8|9XghELtbr%;7Fq_edc~3m|dk3805$Si&vU0oM6;2EI-o3OzM3LsyRb@9f zbvwyP^E|h-WG2!A;#G33N;}Nc{TU5cWWe1LyWv5Xy4+2=a#}es9Lw&0N1Y!a8B?&; z+WKQFp}62WV{2Oqh;dQO)O}Hdj#nqVB>?BbRV1qA?S5a%iAuNf9nQVnQ}AEi<7Yrt zqa*{^fYiJ$(9$T^l=Q9M%`93bK;KN|^WhrIId==?4X(DH7<%y|d(OPJMAM=_b@N1Y zx_X+*;%Th)p3dq^_3RdmtZJStLPt@RWnD6}W>T603T-rIWldsIrE_xQN$_H+=Bt7Um9 zM;b<%(4gS`ji_d2A-qzP3WKk$JUr4yOZ)D0DK&#ulWN@pl+#O!`+1`#Bvc=3`rxCD zNw(2dwX|xpmRb(gsPI=4IM~N$2(Jl}NQA)U_VYlH?UC$@wFZ9joJt>3O+!R|gKT7&l!? z#$?0}jBTHIAH9xOzma=mzZ)5Gj$8bDYwq9CfuAh{cp6?gC#!^~Y<> z)2VX}%S)d^PPe&TL=%5Uio0baY9trj_ZNr8o7~r`vqH>zO>Xfo?8#;5Y^u9Vg>~c0 zD_$`hOAq8cGt!QRelIx-@!j`%W+UT%x}^rh{`7e=Y2nJBUP{N2&$L*4YMOW5pO?nl z6m&m%#V7Fej(oRqazQCLl7Pm?AHjjMO;Qq0_(pf>)M{dLFKx!?URmYpWRqmNB@_SY z#_mj=)AE(`CO@50c6dMcHi7G}7t46u{$Bn>IhE1h=Q%Dr;E zfBVRPGGk%EHsbu!?QmIzXK`TQGFDk4248q2zeo}nrATP7GlncoQu!F?{(^gVXFcUj zdwEp|2I(OCq5Hw*h?xa{KeT_v8L=~mzMtC{y3pvEWHbLo8k1ZiR2@8)ZlJM{@EQzH_iM+s=M!KI#X@4_cez&uJ6LZwVTi# zl|e+K>z-mNmwm^=%doWRjIZfPyN3wtO-HvM?)zU-lq~~3Q`sux&hbH}X%yl16<`eh z5*Yutna|JPys_RhrsjO~GF$9%m}Fz2W>xS-#?1bTWeAx@iH_VZuanCcLD%OxU%;i> zRU+r&2)>U8OWb9rE648p7thphN&#Kf@9rS+t@a}?(|F{dLjYQ`PGHav>rdkycwe-% z>K^&dY7g!^36Jw09b%bkTE~x}wrkqb3+C>jC+hIR(WHXsDeT5{YK6+(AH@gp;QVmy zsD3WLToBryRr+bGfGjWW(gL;;F?gflfS9D^N@pufNO1!h z;ZPbS3<#DWG_L(Ssx3BXNa<0+BSE6#acN&5esx#UH(fn=;O>2*Xkb&nvCd0F`%ZXa zh>XqMQ@>ptPfR~=6|T}-FWq-Af|%P$|2a;qaVN`PJYOAJupYedKn8z~I)e{26r#nL z=j)K~Lc$YzKXE4p#IiYK#p**-tY#~wGZZnF%&#wA^u)2|m&$X0YpHS%Rnnu1$}srC zcP{tg#Z$FXrL-c|Qki;(>xJ0etpxhf(g+VW(B49`h60^VE=ZwBrWlt&?B`-!5hIX( zV0*IyQk!eycC=W&IxTA0tTL6s+c~n8OBuJ#%#n;4_OZ9$1dMXwNQUl4jLWX-t$Q%j z1u3ght`qYekS2BBaZmbV4I$P4XjO?{1xYU2t=v@DU3yS`RLl+*yp1 zdAu@pge#UhI&9|>3X~J*{E(6CLFV6@F01tdOBhop?x8(1B@}R~bDn3hB7{BOvH84p z`$C-Jv7(GO$;s@tWo(TL#$)d?|$r$3oIaF?5 z5pakLklK|KNNTn?Yz=BS?jcfyCiM{MRG8N6aRE6;Q6P1bJ=f@h*|KhlA}Hyw-Y0vb z)%}h=qIQbIcWKg|kmGfzbvpI5^Nvv7+?@D}H7x77%7kcAZor8njfa!Gx%$}R7FX0V zgo-4k5Jr@y*JS569y;(e=Ui*I!a>M-RR5DvuO|eGA!~$P~*Jh>7@tMFv zJc=E@;Z=O$u+PzYaP7^;nuK@9F_+5Pk7=rq^(cYjx!xNw>zV60gM_xkCNd-p;@ElF z3wPIz3ub%K`N<+{gfVW7vUtI54Mu%=--s5x$UF6)-reMSZF1Ud`A0Z(GK`R8ws4h5i|6E+P_hyEb^c}0fS^1S34E0r2T_LusyH|dQAdwiSw$S$J- z3*0ao`FgsW`;_Pe7P1Bd0Zq^cud>&)Z?hu;&mrODm8RGHA@^uv;d`o)va~D5v-6?^ zY<5dkZP()S$LQ(<9Q=h1DwiUXZ~rYj4b1}L+VP8D4$(p=Q3L-s#8ZJ#l;oprzeuClAO6+zr5QO-PFt8>l( zFMK3mP8PrlZqHdfDBzlAarq%tbT7-V#;)JhH4s3(RHoI_3R`+=r9oG`BcFok?-rQ% zRP@o5E>x|!)=6&mQd+x-DNSw8{@E8v(C}W&7@uG#2Fc|1pjC$@zj?shD!6C_Z{p46 z9T!n8U%;yQO5pA`idVTV#H+^(SUgX@4sq09p+EoG-HTCuISSu!cffu*>nTkp=$nVy zZKO0FZ(qbmmes z&5zv4Ds1+T)M3+-E2*4UV^df@oA%ygp7TCa-_jOveIi51#M2DkKEt`b*jR97v*=~_ zxSQV3jcp<+j1TZ8Q2D*+y6v_1PzJa78@kk? ztG(zZuU-N@r^`KA3pMy{lRV`qEGv!TWWnugrka#xSIozaCEIs7Mcz~2W`?;Vp6y(E ziH}7-=}5x}cWhrzk}cc`qjApuFwAx@$t$AhKdEG%<0f!1>nT1#+LXQW*hn#2bzw+> z`@PiqXzfqVRFFkhCg3H^hml37m&|9rd#;;JlPB}BRlUxsLu=EYyi6(%zh|W@2V+RghYzQfz z*Gsbj{rIg5!3A%;l&gn4oS=^~pRIS<^xAS~jI0`6VpX4hgIAEeTY7C@W72a8+7<=* z{DJg*6+N@f`P-0_trjvj_Y}b-S88;50vv(#-A29*|BI};th$*C&SPsk>+ zBf$*3Z|-BBu$rP4>FRnv{l3e4Zr*8w(crw!2&6sqrV)_hmO7$DxgB5UiCi8jXN#Tb z7fW0R^ZYrCesDz(ut4R0kQ|gx?tx+7L_-D@F{y_1MlDagrmC$|_TV(2nbm#!40$N= zQHew2_A~~UTWYmi{7Z1B3mu4s(=6WO&*@b9ZR3qhh+_QPau#VKT+(L8?_z4JO-86p zIFtFTi$GMA*|p?vvzuWwh-4O10-mR~ybVUJyr03c%@yegXS1B0go#4`+ROU{wB$n! zS~7^OMh0Mfp%;(mrUoWa`9PJ%&Aq>F?Ga=CSKHbbCieX9UnV(8%oNd+~j_hjHGVR66(2IE%}_ z^gp5<$(PMh?Q-tv8lvX*D$Dni3c6>mKQ8#b~m ztx*b=WF!b1O}D`%54Ti{@D9ECO}FyaOmR{+=aB7^^NDA%`lx(hR`oX&^qB+u8TuQ6 z-ly_r$Vh?XZw^qrllk{AsuqWGB+*G4ht^Y?1c{~ac`le}Q7I-g`6~^#YkgliGh4Ir z;G!>C&qLF$&Nr>TV5G12hZ7xquP9}u8K`ekMz=oQ8wx<*nPJk<6maMYZd2+}>bP*M zvlCeN#Yn9(fG&DwPoW=dLl13RKC%Pu%xvu#OT3##WawzVnL-Hah2!prb=tYwRBq0i zt`eOBRwNrZaA5rS12lv^R3HVRGglgOCz7p3f@NN{Oaa?G2saD7H{ zgzMUOcz76hR%H})q+Ca`R3?o^#Qq+yg1Af|JbHa{ zGvx>*ji{sW3-8`Z&b#Iqq|63Og1#t!r8{VwS#_~4RH>pnZ27DVq#$lS&f2d%1=2Rw z+L%cGT=*+*rhE?{qiJu;+0OfN=&)6QdQq)n(^#ltO05>`*D#}IoI0E|(Hrc32KDk_ zo)FY^Grd%#)o0mK=YMbGO}tbnco(QT@HDryIb!7XhrsYk%OrQy&f`G+#Wu`8y3_YBb zggC+8rVcl}8hw0gK}wN)ePokw5qdI#r(b5cDEd_Yx1;_bnvWnMi(WhX=sFMn_@YMD zZYec!unc35kRmDOD3A9tS-tdmfv)<*Q+#?6Wg41Hzs#g^y&-*y@5Q5A6Q#8NEK_fs zr=9U!>0ctDlU3DNQFC>TRLOeUABISE(;|n20LgbF6g=8wRO%YP%odGOigMOFSH0Di zZBOUZ#vJl;g8^uOa;T)9CJ(d6s+GNQKu8Q}uUbRrG&`NjH?J+SUcD9{(W*73tZR&$ z^z!K-U@yZI<{tytnSSnDW|0*$)D950_@9AKAbLr z#%W^Y{FECgn={V?d2ne}Z-e@Uzzeqv=7HdOS8GT?BR;M1X^&boY2s*k^M!6{Gl&c! zmkUUzWrFmHOP?D{L}gpN&!;Iy%@3dlSDT&NTs0S7xvI>c6;_#rO1@@6erx}#AoEL{ zfkAkVAB6O@u<2Ss-kL5GC`aXq5O{y?vs`{tqY-%*2g$nn^a8M&#i!;oKgPE=92FX& z(&S%ME0ihKYLq?*kA3qa$T>YSlIXO>0WB#Ra)Fj#E`FXH#_4s=2^93Wi0w&qsq=i= zI93Z4hnUYKGLXYeeYdPbo%x{?#dxxgbAWg=ok=y}3#j;hK#utJ)H9~eEDfJ1t|!R} zNsFCtp=KYNgC~d0Ut`ZFvVgHi*Hb43GE(v)l733(BZnBd?93TA(puRe`bP=`5Kq~o zBbLp5iOUu{Y}CwjAQ(`|FRY?kk$PpTBy*##1yoXKfr6mF|&g8*3;_zn$KeHVf zk|b@e6kV5Bc17?fRudKc^Fq1-B>#p}Xsm$LwI$b!+rwo^%LyoJsdjmb)a)C3bV(;5 z)0NC=CE_Ld#$*vjA^7DT9$}Al1n!T#N|Q1DdBUip)^AzIX8fxi=3CVt*~|~XGfjMP za;RoauMhcT7@=P)HT-$O?VXC7>)|KMF+sEz@170oCZzNG${#Lw>M3Zo5@}^d<(ht=;-r-3*guML763(>hx_Lzh?7m*TPh`?BEP40IR;RI~ z0e*V4kkx!pU)1^5i!q}P)n^kIjAO_S9&OPlvz#jm+KcUzFk(TD-NcnZM9_I=fQ!sB zt@8>6{*aj*{MzYLTCqy7nVU2z_op0CF7`mORAeI7x2yzUlPt1<;pl#+Cy_4N8sS6p zI_Z?eQ1`P|p%LvhwNlrP#YQ%h8TK(3H?k+8LjCMBQfy_95ehkqK2#thFwFZ#nC>a`neuKIk#eYdd2$pV>4SMK zS`p?Pwt=XZnA=h2^rlhsPN&}4o9hFcebbdG<2M}8)+{vO%i|@FF@ZyKOk-;KOim;0 zHJz!-;%T>F$+AVvH*hM%Xb6XhQ(lI(tdyB}=bRRkgLZ6>1@H=$^Rs>LE+<|{Ddp?& z6LL5NTH-~)F&Cku|GF!m9QFv^db=w*9a;H)a;nuz+Jd1zS8*;%%u0U*WMZ7c^9Za*>cjCZFiMn1NEKD8b$p*`K3P)Nqu^n=WIKjb|to^)7W4`2ajKb~ZL4u5@C zU%qv-5Xk{e4{*Y?#`{P*A zn^lyH@6jnzIh~QLZ#aufl=I$QRC+|x={PJdQC=0kL>wb0o<8JpR#l@O_;Ro6$Eerv zY(OTa2O^UqI6abFv&EEGKa#B0+uc_hYRO&o5!g%vjz^>)t*I@<=``AY!vygFhtt%` zH8mP7v>M!C>l>3Q$25wSLZV5ITQ)urx#ea_W2Jct95^g8fKT@3czfdL$?U=Mnp|wI zW9!+K$Rl8oI;^CKupu*Qdl#^G(x+m56-`vV^V52)hbvws#}1h;h5m7#6j*fZQ|jf- zD*a*C3t;~`p~!tSZOh0h1$1u`rq_Hew!5BM5#)JyMcD}Ic@}>q;Cbq28F_M_l4bWD zVYFW6(M%Vce#;Yn_e;I4UJ6wE$32+-xj5nXH_FcwunlBznUX;~UXp_wk8u3*J>a6*i$}YLY7+{^2voCYV zJ)5zu3i2Xr$wDNp%QY2f*>1Qm*ec>n{~8UBSJ{y*cGy(CKG|3}AKrK=aIP;sv-)=O zhx(-xX;B*T_m8n){gCy z5>yPwmfq}7yLP($RNmwuu~+K#UjS@h)d6GP`X<^`ML9PB#}~ ze9Ck_z6(v6J`AcJNav@>=$&sDPMNGQRvE$Vv+fP778(T30Cl)xjX6;;uXLv*anZz5 zS!-D=>@PGbFeGzi^(NgwL*8Q)RN-qD$Tij;m9)i3WJLlQ%&-M|4NQI1;^#PY>bcz` z`O<1CRC3w&Ih`~qd6^RTe(;6r&iDHcUjn8aje)3*%_{iH6U{xSDN=K@bEZH=d+bIg zk}i$f6J3pDAQJCdv)&S?FkKR~bX@klDGe*XId@+r{KUr-Ctb(;(E@Q#_g@eXUkux+ljv9Nq$XHLVrH7Q_pX30J+K&hG&*>d3Hqyjn%6* z@LMdvOe)h;ic&Si4qe zPJrDHIz~o+CWu6rbcO&wrBrO}()S2@=)~2_Bu1UwJ>5n^JyhS-HMB8v9@BkRFCSm4 z(b%4_IQ4gwvJwLwQH-v;vxS~}J-nvaJ#VfQ_|Co^zy~BcTeU*JR$Y(ek_B1fK05gAJj*V~ef}EH&FqE!`KnI?gFzo6quG_R#g=%2l80?l z`1ijsXJ*(om1u4xzTf+OZl*Lc(s!dNQWo0sswK;9G5Rcag&SsjtiA?%ief692D9P>Gf?`I@u>}P3 zz53&W0xSwgHhilT&y?gdz!Q0Fc)lYyuSTPgBPMM2`0Dc}Xzt6vx_lWKf}ZleOu910 zk}>LxRC34H$K~W*h0l-I`}0~Jp)0FTeY(8O)(JX#I5cDmhS-@N5Waf@=f8nKP9%H+d1lJ|}fiUl(5s#Puwn^oiI z-_f+{y%2Yg4`N-VPicIiIxRkPXPj+&X^k80_NUI0P2iABx}wtsg|r8FOSUD39aC* z(2K{fg8W-8@k1>zLCDF}AG*E{W_v@~Tx0IYJ?BNz$(EGbo)psfUR^Yx?KNHmUfu4V zFDquD9$Ki1-mXV>22qdt*6U|{+OsHBDjXg5h!=i_-urw{QIXvv*2XxS9PpBw`X0-5 z#9-LpiXcqyB8o#c<~o_kPn-hho9>^N`b_V;(`xtZtEO1;tj06EU@x<0>`7uwFPeKJ zK>%XeHdf!?5*mzOb5}KlxC`3wdB{akXS_4(F3BhreWBpBtr*Jze(iig@#wsQ9qAc3 zo=HKzNF}ETAC}D@_(uY~_8SFZwa!Ok<39)r56e$;8x%4GR2IHbsOG>Q#<---+%h7D zuOMoaObO*T_4iaQF?LiGD%3^SUjB;e)~%22m)o=SbZ2JP&UbjFW?bDT*W9xulWK=I zQXE!?ajf!S-t!H_=<-%$-jlr(D$;89VI>jV%zL9=>5dEEedw*AlLpqf8 z=F%ZvHnQlw;tdp^R{6F4;U$(mtb;o3fgvs(x6=*{C64eT6Xph?BqmdJJ%o}STXt() zkj$Ysa?zC|8aj5RtV7GR?Q+6se4-e(tu+eG{tX5Y!{lcQZ=il))KI^UH390 zKe9{}3HaPdF(k9Gqavb_vG?G{jTfeA;&0DAK(mnwe?^V8Pub3GVK0!Gc=|?hXm=GYJ;l-5nqm-8ca9!r>F&p zR}%4B^9f7)h?!H6DzI}+wvFZ4mqEXABQ~aO30Djf{0ppQ9!FZuM9y}{iMBL-? z06BYs7aDms@KVUpo$Mi&t72l{dDc%qH1<7+(t}0SdZOGyNvIUFOx!8rB3nUM3Qd19 z^TcGDdhj#=kI7|lB_N=Y=H{;YPc^X@<+BLahqvH!+U7n6rpyD=`*yckZCL;v`~n|X z9ZqIB*I;K<8&(=EReE~TlnZcdj%3Z$g%wWlLE6=uQx{e@UQUEOB2a4EXy(T@-K zAb_Q!X6Wzkbr;40>4Qwo|B*q<98kGIgx|jz{KBi7StodSH6xMAW>Wh^RQma(jS`3; z_ce}u#rn~HJhbEhsJ132leWGkQY`iBOu>kkI^NZMjoKAWs$GdqIdqK}?m6*W9Pg~u zFKj!So3ss!91~3TyKhs0Uh+pTBh#|QqxNa*V+_Y)lOsYYjpR!JIbg$76M;+b<`_f# zvf+ai0T5)Y`s%G}*N*iq>RcAvi-hU(Q@BMNGFuClX>Ow$f8~KHc2vGR_M6SzevuFE z7QrNwou4h*U8ukx`*7kEkcC5D5L_gp)RZMNrdSYBw!@2=PrNEcfaFPaSjuafd)t%o z54_7mZBMJol``Y}94tad3nSWhjAQp%ihWHfw)%cHhm-oH-?U>Ym(}ydR+ssybiM-j z#X9ScY1_zUBAAF@d1mq%EmR8fQ8r~%n`@(&AC#H|{*42QB=SQGaGZ6Kvmv+MAJ`37 z%9&7;8SA6IIo$8Cma<67jJ#}r|5d7wPN((DBC1IcKc@5KRiUe!`dK7Cb3P!!D1o?h zgngitDu%dkk+Jr@3lM;ydem(H7WG~Q*K{#rcIMFLVYytR-wCY2#02Luwm!I|aYekD z*1mli078#4Kf0_!a})4B_K%2I@vm3Idrm|8lRCR=R75Gr6PgFaDG;uX52*-femLCz z@A9osr6oRbShz%b5c5gXbxC8-v8e@@Z4IeFU-Fp!^rqJ?O{^%(3wUL)vJsAR4xaO+ z?3&R4(R>CL&b4OuPa0;WHjxe+D*KnV;a0D!Xq4^#D%3iHkZEGUN7)o+jMEgi+NCf<5;DixAw7WwQp536rO zi$6Rd%vsWPc5N##o8sSA8GsE4LnIFIzewf9N{YaWnhx_z2`yj0n!8_8;TB69-BDj~ zYj|~1YT|TZ_rRpvP*^E=zAANSr;+Z1*1P90$;<7z=e9pOMS2u`Ix*Q~Xhj)!sn*HW@z zhCWUx`;Fji+*-sL=0X6d<_ej#;PCfq2Ok1lpfgqRU$tTWPkK)6geTJfy7QjINx?!O ze5A$CUtNX$(WIQ|zBVgvq5D9h%ggyIc2owyzZe(g*8o~@B7@>{{S?DT&6Mt_N$BsK zy=y}WcXT*G_iLqvy8PH^)9q-cM0P1x$WmUz;ezYoL}s(g1<{gLLv{vAjYw>Z7afqc z2V@k4|C4Tcf!Z68&1&>|qkh?GKtEAv+e!~t>N_+&68k>ZE# zM}*ovufp9ovd~^1jsyH)b%xT6c}+5h;7sr%t$d7KeB^1w=0VcPE2O8wF(+2uGly^jCTttXt|<|+ z#mVD5ht)J%Nrglz+0HcfEg4gRWDpdH)_}H1vc&e)^qPm@Tvnooz{X|EV9*jcZqM7i zW*gQ*Gp)G@pj(A}_U~#yhh+`RqlBZAs#)EHVH1m02AS{Y6PzpE%QNGffOf_<894lU z9h=^H?k`m0QOoDH(^B%lh%RYXjxL1stKH=ilkZf;t?zF3Yu3A>GdZ}w(=LY*1xVX@ z&)-Thw9FTJi08$3`Q=lh6NZG*MV98U1TF7lPBTX`2r|S07 z2|yys5BG;q9|30jTFZfEg+azz7yBbAb3S|^0>&$8)U82P5^luwi2Lij(rB}G-v^l* z(*dPPD=Bn|=0@EnVhDB|bAFaTAh>Tur zr+P>6NL>h&hu`HXTihW4=+z!O(coUWJ9DR+06t*z2NdqdQvDjG`kT`x6@0h;xNdBO zHew!nCbB7oMAHxLiYc0wxc0I0V!x0?`Rnacelea3^~R{04P`rS_V?G+OSOkv7Ltw4 zZfznToH3LG!1j%|5p155ApqRVm|()SxUUAhsYFkNe?zFhe&yN9tp%r@8o^wGsAdHw*SC7H|OhjD@ox`aRnIbk<8IB}2np zK{L}kUWL!Z>IFLL^C#N!U!p8)puay@7>kveG!3e6ljp+)-i9mFr!X7j8u1+YXmj6Y zq*6;Fjh*EDjo2Ii6dowT0ST55%mTpm;AGXaC-FS(JX+J=jF_vnc=vF7jfO8|drw8k zI(Ge$cazO@T!3%zrY2K`ec6T9h7XJdoA}V5#Pk*we?S>13x@*Yq7Dw5OMaW#W_^>1 zGBa+=>3X!yfeb@81%SOFyF0!IR#U6^VN4@{5I7)-1hCb)O$NUF6i1oFw9oLT1oD)< z53IPsBC+1C`d99^TVM{)HjG8z+o}4vIPfNjlqoFIu@+w!F*4j!LRBU0ba&^Whegfy zSX6gd;s8|%BF<`aW{Q);3IP3Mo>Lah?(=qP>EA!9<=#U>+z93Q-f@$GlTYfBnd|)|Qo`WQ=4L+>x|L|vzp?~Q{Ctz{} zF**E3DK4H{Y*B>eWJkVaC@i6NyreLaV)>HEW`P|=Bq-S+Xd?kYQYGqpT#2BZWjAj} zFKJXbPK%k?r|R=j=6DPMO&7KyrW-B+1K|I_aT@Kq&6EF46i(J%?JgS$4v$4U5SvDA z`HMu;AYq+lX{MF8D2w4t8BTD|-N6id259bP_ezDA5)g0p@-7>cC4Wy>jWb1tE`Kd&An86`s9B1C7}_MC>w-8TuM9L#bdYe;9FiD5);wLY4Dx-W zv>eAM|8=6)DD9@psV^hq6>I#fHU9bvdb>voXXvBPynv!{Ut-*)*S^Z6_F(Xp$VjEW z7ohl)R}=R*-6%v}msIT?Gf}?)G;npSXpLc95Igx z%q15jluiZVvI2c0DM0D#+#j~yWym@yhOOurn)YKVI~Az{I2jV*QmShz|EOf+EV`e6 z0xHmSlMi3$o})oILpct1{KTw4=D)VeYPV(tci#}DD7=;L1lwtg$-D|f6LSRZ3^Ya7 zI(HFHmO!RT(5U6I+wEzo-~vBIWr{=Z@2YGJoi=|x zguF7%TtcA2g^JvJEsczCE)6m>`pG ze<&+jmVZn4eX2;CRyE)^`~i?LBcrpF{C01e`Kd? z1J`&t`LH?5ZDHV4&T zLPeBNwL$_Cf&OWvC}KdpEK7T9PZhy0F|S!}$umlWw26UfrbWY)K83&JMuvk4tibbu z$YZCgq=gT4x8u(p%=1T4)@_4VpBDh zFW?>)OE9Tp$n+avJElFyHL5~YeDGPT71ddP#posGk;q$QhB}6=q$uw;ZNQLR`qFb= z6vw5~Z@Jv_8r8P{mps>MMr0AvE|CK?tG^1Es;#3G)aVt%a6bDOrMAs zPc4M}Vo#?j_tw%BGgGeeX>)2;KU0TPhuqOS*kECDG(&_SgqNvfo@TdaXEypfiVF$g|n8{H@ zKhLWJSpY0z7htTx0$=VgOO=dYFBcCc1!OCCNR5297=Lj!Y)}B;x-ac@8Z0O`f2WQw zLGoSmrdhaYJ6tsw9RDy>84{bn*(uQ>5(ZQMyHZLGD)QVnNTpf`*X(o ziTu*DcIRZE$v|1Dlj)W&K&A?Fx>?hXAm**MY=G|11-)d^E(8|w2SQ*nv#vr$i}QE| zclNLwK!=W1VpP_%EM6+@>u!BEvv2Ic3n}r1q+ZV&&{Mh*B;DIsVgO!dnYRKKpT2z~t|m_of~JkW}5R|G1>l^LnD=^Cgk z%t6qUDAU7Ma`;?#GVXKxJlZ&13;2Uy2xoxdM&U8vgv8XtabcdX4N8@=EkHv@-witA z#1LLE$w;HZeisF-GMwmzYSr_%T{{Mb)tBCs>UeQwSYp` z^5M_+djE<%(}6Zv(ouM70U(bGK!Q}j3Ftf4;8Eq@A^;+Z{KGa+nMj}jssvtYv)Emu zK3$cLae++ck+xlMAFI0D+I@ohWl6nssOP~(Vr!xO(!gl}!38={#M{&W3hA%BK73Kc zTnqINKjdDJ@~PdM>Mif8^AI7$b02FjT-#@bhT^)eL{1F$IVdX1#EyJVtNjA+=z4UP z?S68x96)Hp9^Hs#3fHx0N{rTd+&oaf+-@Xgxm=QG<0RPPnwLa@TflT^()UC~rM0Rr zKR?}+U0cD7Nz7pqWffEEaXkow4V%loa6P|{`t?~L9?|f}k#smN9d=hVi7up%GTTJ% zF39#fqjt?mq0PMWg&r0*j3~f#%|*AFhg{lCwKjErpvn8Vp z-*Fw$eQaWI6@7^eW#w!cTgoT3)3{$;AFId##+PQg6RBXi`6@-T{$rau17xZuv@(-n z4mz4#Z#|c9b=K~hL_t?sWv>njTQ2jZ*OqDUL2sBW*H1&iqmz5mwE1NT^$ntt}b2uvn1)o_wwTq!#oy}X`&P5l13WjQZjPC;IZj&T`@KU!IKb-Hf zU+j-g*6-|&n-%{WR<}9p3kNt!02y6}ajD-H4()|M3y3wjsZ5+@$M zH1-2x3733}13$?qVoCL~FqV}r{CWd}B8$^R3+LmN4>sJl$&>)`cREg^!k}!vXskd+ z<-$^()+1tLEaXd;kZ&%V$!9QCD|x%#&1glwElFPlWU_SZ+#(@ST|p616BNcWCzsR> ztyJwJ*^Kl4%3&)GXj79jYtFV<@=g5qz>M1_0KU&v#I$;OmM_9-ef-xZc{b#7A|QW2I(ZFeociq0;2X;)5v7%0-s}@?y&W=P4czf0 z0C$T0RDKDzH{iYPkCL)0KG{g9H|gOVlDHY`su|Rkw-$bg{Zx5kSf!05(G*Q$MjGzZ z1h6R<`lCKdU15B3H2<)z4HW|Xg!-Ql)q!l*oOZEwB~|?c+t(Qk!Y z40qV6H&qbzL96juo5xx5km31DD03wEMEHg?0_uCEZw(nAg#P;UC&e@G!)bADTXTKG z#d6IN$Yy!-L)vyYR?uDXR$G-`UK46c2_%v7;<)_5}*diw^Bt2 zy z9N_7f^3_DfSKThDU5pP6Wb!6_!XPLu9ZKTou9*F1ppHMm4k+r})4<$T3TCYn+&6bZ zCNd5kiJYCH2u*Nqpx@@sSRRJyJ{){m(dCqY3)pPFS%WH5N)j53JOW~#r`}8^ZsQj1 zy|P=*yDkS#_>9@uYgg0$xOqQ5%}R3u`N`)g3tU%^^Bt@vyou#(nr}cJ{lPq^^~U)K zi#Y$7&u@rp4bO|_e-+67t|*2ME`8;+ zWDJ2%BC@`aBD$?fyO7UJe8|Xfz0}&c;P*t&*d6AE^qs%u^T3+Vo4tACB}jC^jS459 z$)&E>a#mxbJEUNrof6bG$L4fM>q}1w3|@JoB__q&QXD{Uke=(%eA{| zt@)_6`cS*#EBNmoCfjW+s^>eSHhY`M=%h~1v~|(5c$g~}zdyFAwY=E+vk~GSu@5FG z(EY4hsQ(|Lr=$RodJqmf(CMTwe7&bQ*`CV#*K<^6Vg!|!+zk|KL&gw(`(q?V0qjV2 zKvzjJcekj${j(!9@paXstdiN(li*398YAY|sOor!N7IM-t81D56@JIJgw`KpU8vUN z^i4yvJuAR1;fwe9o#*DZ^yqed|8c4Hu;Mm1P-=i)d+vJ+LaGgeV&=kHXqZbW%g@2v zTvC_-JS4equix||xPtYY1OPqg^hM+Gms=LF_-;aXE)2n%stjwNJU|1d)!7I;-`GSv zZ9EQ+*7q=-S1R22ZXwy(fitmD0Z`?*JMm=k-ym2vTZnmx^R%h?Bu* zmGjV771GQezF|`8s8mIr4!QA1>)f@goj#MdfD9H=y+WMPdZ{;;1pG$XgS8LqsHekk zS#|X@GOeP{!*A|B%oy(%#1Ze(W?1Y&)4Zp}dMTqwl5;NU7Y`|OgS?dLP9O`QVTZbY zGqZqHPt`36MvFR2V&GGI7(ely-SQ*hr|O%!A5iIXlfx3`dq`&?D3HfaFlc=cC*3BS zpBg@h-e`~TnYG@jw=_fqorACd zY(?k7iVAmv^kUp>FkaKh%h?5FzI{nDaeK9FGoSFxccNe)*^ zfzD4~f99E)qk^ZdIg1zpDmgBP`{g+SUSAP7HF}gUX^%VYaJiw10}@l;Cfc!VzOwRj z4uZ)l7CYk z*`=jG>c|rF?;lUg&wme-`!ZXg#^iTULTDpr?_7W$9V6M~Zxi)1zLE-lgp<$WlW!O( zDAVjj3&|^nkRSut#MMazPuRe74KI^4_hGyF=BP@dWpR)GA(FAdM3<8clSC$!=c3o>x@ z0;f;@flW1B#UwG*jK_urv)1+j!E&-WW3`%igzvy(VfVxLItJ7s5v42Awx?3toW8x~ z5?(;IjV>1^m`e$?Vi}N)bPm_Wr{|MCR0&k{&AQGXHbr9FB@8>r<7X?*lqs-$m0to3 z^7YmlXH_`I{UlOOHr1|H-vH2|mqc)YCv($#qSS8l8^&e7*CDZu2Q^4oC$#(;^D5Ep z>wO|4q*(R@jcf6v%&MU>1jVMSxXtwy1{fCCI#A`f>Vk;3<2oCo7f$&U#jv8pj}Y*J zfc3y#el5@i>H8hfj!PaRPv_^xgz_u8Ad|w3pl{?=9qXc%9 zZZrUHF>l`Jr;Utg0`^ZFrEvmwESOYRszS*wEbmNY@HI95nun}F_cP#I@w!NRpks@R zQME9EV@&jys<=PlP~ots;lwdvsTjp1uyBd+bYF;2Nnj-&9v+?#+OgEQ4FOG)AO;(U z4}*8V4;2mu+)T}egKiFD;H3TGq(L$;bo!XiiamD}5QilJ4|oLxKJk`bo_Mrz@B^P} z`}Mt3iI<0diFR3XqViA!zJB7ha+Xm~bZ^wO!Rs>3im}0O(bM{VZJ*sYP4@1uZq7C@ zb#2k4r}2Zb{1hsiw+PFIy8M{1y-oav_GkHKg_?Q$Iw6>FapGr^Q6|HgKQPeOOs`xZ z`CL72m^`N|Z%L8N5^=_onRJa$a=WT`szOxiJYAZWx-vTZ_D`f_Uc#YiG9wxp5aCU< zNH1UtmE|9-SII28rs3qE z9nW`ylosO!HT^Bf9~X!nl|a~{n0l?u%(_FBhFKiuGfGPyNBTY%$oZ1RteNMw$KX^+ z2xf59k=wFYRc&i^61EF&93T=0>SRR-O%A(h?Lvq07E9Fy?X}TNXzV zb%A3Ny^0QRD&YNQWI_{Oc77Uq_Td*ShA^Xgsm6EcAR%-pW}7586#S@1TQr=WOsXjG z0Y3xiKKFyJn`vRJzGA^+co9%$BG2Xsfo|6^gn#d78lpN1h|SV1dsiG1G5&BYnSzgPsXb-rS2x8kyq`mR=RuT$> zDI83v^Ejo62ptLqAq|seikg|vG{)5`A0>!|p!R|x%hn2XqU2k`VveoLN=IuFksF13 zl|2?BKfDhYF0g*KFaizUT<3ZdUYiVl<*dH00>cflT@`yE^;DRP)%vjRDMYhkP@n$v zk!lmtAS}IDOVp7q^o6#SHDcT>biTEku1wO9$LYrK7^<0C*X26SBh6{4O(VtOBzoYcNiJGc|GA7m?m(2{B}%yu!BM(vhUI7&bZ_DqT2Jq za<*VjP^kiXEx&Qm0yC^VEaa2#83l=FG4!3Sw<)U|s!%^eI@@1TAgO4l>fuS}bCID> za>B1)y;2BmIZX7vInxENu6SSe_K+buNOa!d!i8YRebnExpVn8YR-@Z9YV(@>8tu@V z&Rb)ZM(_@XO5|Ukl8|TcqDz$WqOsgr{uAzSqD(p*32_~UiT5{W@Dn90$9_suQKSqk zF9-_rDEOL@1C{Itzt)}3thX62wccP&8leO#t)u`aa*@O>gh{tvj=*9h+aPvi1B?ro zGde89EpFgrQ)_nDfgE^@!9Qs^q2gEKKvkT{oIw`v>*IykB}L>Q1TTsiF=;h2QzvZN z@^kYiB46*fRhHDzDUbX>&_Mre%{D@ko22*sD3!&;n`0~fA%Rw!fP7GFqF82rIRoA8 zOFI%=xGq_x2cwPl_0!ezK{l6Bbj9aAZG$p>&`Mew?WBz=Pl&rM!rkL?3N*Nxu!y=c{2g9E>{?7_*9zHsH1$DA0{o>rQ*tFchg%=HWEGmU| zH%q|Va@%)0paibCPMj_JmCsKzr|EuLRv)yM`N5l>0Qw?k?^L4<<)Ta2wvB7>)h7Fa zZY!Iilbp;zPxZK-UU@y!%Rc6L%;-a>5RjOG`7@jjiO|~%&q9mtXB?}V@;EtCv}Bf$ z0XK-@mfd#_A@z-*`wOe&UTTbb`n+3@Ic&e2Y*ozs`Jm<=w@PZeQr3)I;m$1+?rMa&vfg>`bB2d3K?n(zxlz-I-whzOYfV*9z!@HyaA;G6^W)+1tt%x zUw5vxs+i}y_=f#QepJogn*(ugGrcKJ7>dA;T$=4S7V$E)6FIJ5Yn$b>g=fjD} zF{fL4DC7Ax719xcZRXwj=r5p5T-FQ54?%`l7cplmY+g%8fxbJjnm*w*W>=vV{eH>J znjdqut4*v{?k7FSX_{~Qwj8wwXF9!`NlD)U_r%{n;wsG`+OMp7b-o!)BjK(I4pf2J z4T(X+XF*wL<|+<#tnErUVo$vztk_*d)|w)HVKb{cpEoX)aE(rv;as~(+M2Yk#j9Wj z-vwg_f3f*tdjA#?1HtCr%}JBBKZH-QBrv+KU9KZcKkW=Yl_FdH$SzIQLbySv4bd<)%*0s! zYT>f!V)88DEnZB`;{~l;o0J%E#+dQs?^S)zy5-Byl>FW=V5P4KhqZ$q$DZec_vUMr zKUQq=(HE}YyoBp&spne^7}-@C-ZSQuvZNaAVKnr)G4b%|{Qd3o$v&e_b7x-)@e%jp zGafC`;1xWvHjE|BO$hBzYYy_c_Af54d%k4xI!Qiw{gfwP23`)jIJCGB5Q_oEDpf1q z(V(I|yvcbBx7H&4i$xg9c(v?hsH8EFQa0(Nr_`1J63^tG_A&gF1~PwWb{WfkH=fPc zAyKZ?A~{wle|=y4Sk>~|$y>0mzhEzWwbanxh4xDu-UeF1xQM{Kkb zNAco-;RwwA4!T?e8r5aA_MMSOtCSm1njcfrhFK%u*qtn@y1$&?_XqMWaU#vS zc9lbOw=_M{H5P;8l&ORzs8V;dkLpx$ReU4-gwtZ3&BkgdX{_UBAA<3X^Xc}OZe5o= zW{{)L-FY$~Rw)5<2r}YpR$?h}5sHqS8y5C;;d?>hdk+o{6D`Kg;1=>63uI3FhnEpM zcTv3`%==Odk<(MStdZ`8AI!b*E=;IvzaJ&EIb%&5fgct78yf<_6dVWJWcezIhCduy zegZWA0=Xs`(RaWdrtGKuhMabZV6^f<|FoZFJY%%_9olHU6w&rrmSY)yBOQWbKyqFk&9hIl_kco0?$U zz!0k=ZFsXX>1wjJ;(mHPgoRi;RY<+p6^-lF2i+4bkZX^POZ0gcki-*Z@OJGet;D@Rigz? ztfl2GMKK@Sj;GRW>(h184=~&^=HNu_nF74R*?%Cz!-UzBCnliv`BV_U&UKg$Q^&-u zjFR@t*X7>5)cR(n)L3nw)7bJh)P7cPd^i+Dt8x-z1*>lCh!iMv=NRGGk96dJ8|AWv`aB~!+z==8QMX06wiZ9nJX@3<9=Tm;TOEQfY@(MBJY7+#28?J-Le zFTys^Ch2irj!vVMMK>k8>~(k7fw&#qL-7`cV9THygM~|=sj;JazXsNWX+G#Tt5Pe~ zU)EbX362)&l++dQ0yn{OT~J=#YU9*>rOU<^*8>%3NtEr~6+_wbeV=4YBd$7EGtk*5 zLF_|2E*=B{ldQrJEIL&Jt+!idwn%(nW_*wOlHPnVFYq?9%=uG=XR)WVK>J*+vd^T~ z!JLcZ`HXVi>NkINP1ebwbAU-@E!yMLhvL5aOQKpv`#In`HJB^4MCnVR5wwwxS};Yy z&+s!R%clEER9_bu_Xe{xNz7ehQ5weOupsy{wd>TC_E9{fC62gEbFHCrqD~q*SLoI0 zT$X~x={4)iISUJ9Qz9%Cnluiv!@bJ2zK?lo0R8ePOk`3tUXCuIzhItx69KnIv4VTt zNr^Cq_AZ*wWpVpVT6E+lf6$8>{yERq=WEL(^~t(A)c*D9B*h3zZQ!jJ5di`#*F3v3 z-`A&7ju(7Sfx@h&fj93+RE3_Rj}cc-;-6(0#w!BH*%o~|)(jCno+ar_g5!BER+v;Snymtp zQ4*|bq{b?Dcgvzx-0jNZ;ItuGtg&r2H_j)4tJc<=+db1n7onR-mi+F5CEG4cbCKfJ z7mH*^;mO-OOFwu}hBH62LwQY08w?E5!+4nY2C{qn3qJ5VhS) zOda+>FQOYLdP+eYrZOgsD))NMP@l)lFHCt1P?F`uZmsL6Ke8VEWA z4Cps>P}5Mhfmz=kLa>lIsT2s}36b|a5+vYQu^8qX6bFpwI;c+_(`o*OsGHF!lOJAG zS{CB)qrKv#rM^q$fhoUz^!7o!LdHf?ih(0dxN0NL0UuTr2#GrjNahyYrWZvI>?M^j zH>iGD{l%9BOi23&f{v7nK)=&4R8?7@hqYTym*8*MpZ#(g{=Mk7oEp*lZI3FJ4cYv; zqDoi*N5Dq0>aMvvchffGNdkZQ+3S4Q1xk_^XReG_vA2S&;XDqNYYgV9t#~)~W zb`~St2TQ^a-=*m77e7&ExE#@wat*$@wYu5Ji|MdU>=q=2EJ&b~VeB-8&}I2ma#dV8 zEha`p6)T<}Qa1n%HA0i}Y!3(nD3YY%MYj+f8@L*~M9Vp{{h;3r^Lo11%I5Vb50Z%F z!sDqIOHV&L5gh^f7K3JaY?-b;fxTkwNkfwp%$j`wT6@*!7fTyN;h^H5o0^Tbn9#Mo zs(i~jOVKOG$XEQ9wJ(VHIB1cH`c|=VEs!?XPP=v2^MO|>xN-t=!2~*){qs>ovKa^4 z*IlxSu{~awiBp<}cr~x2rz2xn(KUTO8&kTk)5zx!x=f>R6{e9{JLACVFBV3%vOzd~ zi0&HQh7ExBDTO{2ip@f|#m)zh#Q-=kgNd#@gP-N|60?eBB>D9u`|(LAS)Xi&)QGec^nGZeH+0eM`H6k4 z$4U<3W_MbUzV}q6J_GE;9GltYzCYU#YB>gzy6*gvYnq-$Lp1wr^Cyt;1VdHd1eq_A zjMR;RqEJa+Lz1Tp1OfTS8W!A#Gk&h0Y2*`U)?1_7_V4$g#)daGTXH0L&cV-iN&;Xv zzgo@173_v75j}u2ZiCc{wUo^w?~t~6!uVEBH=JW&&BA1?CM&69t{^6h{WeSF#2rYt-r7`U=FI#KyYyE+p;L`-m?Y4K9YPPo zdG;a0# zWR#z;HYET+dpc9`)3|Now=)SCF|$8mkLqa@Mc1}Ha9N>o_d}e*JPo`*gcYHZPw5Yk zO>Dk+Cx{-2&!qCPO3EbTR;gOIal74%DZs9Bp{Yy0mAC{%JHdC7zV>jLwjOAEP(D52 z&n3*iLomJEYfoFQ*HnGGI5Y2>$I*Y9{`Ytp=Z|rthJG@#Y2%XP#{6B?71 zOomTq)*bY^+|m-rVkwU*NoA85aj2gcy~XSjQHGJrnU!k4{6viuk$*E?YfBylk-BpE zEe$at{qM$m45tzSqV-l}E+;0Ms?sEC;O<4QYr-e;W;g4#=G_%jQ&zA!Wzi~Dnn5^P zZcuz#BA;ocSrx}_HY|OEf>#bjVfYz9_Zdl7na$Wg8`ej!!8U`K-%|}}e@OqNnguWv zF z|Kj&&TZ5L&HnC_#Q@ZFPU*>O6abp1mwsznvB+|#oZ=RF%+TXoH_U9Wk9e9}W%c4#J z_$+SW-Mw8aCU&JxQ{NhT!26Q10{unv)>l7f&DTGnIm(GVr~{^HHmRJno8 z2_kp-a6y0a_pN2W1%c^#qXYdSas48N%=k6x2;HN2=&8@M@7PnQ_P|=vult4;eYE2u+I z@S?SX12MvEG_6KGFIqmv%vmM8wj;Gd$D`AkaNIzizRD*?m3lQ6aFt(!P(d`)JS9);|Z zaajx)t%XdVQi*^>G5^5qL^hR@hK#J?d3u~eyI3D71#QgIlmR+@os_r;iJBq5vF&ET4*|??2`lveqxypXF?!6b2^JS ze4+W}B7#^F`Pc`!vY0B9`Pp zv}j4No47pO(W5BaeQrVRGZ(4iYc>OmEgb+il=+|;O)5yQU1ORpbZ^yU`+r!FKLA1Rr>C+o z-n2;l-xj4L{R!~K0lo@cbJTy1!tiOz(;fXo|7ptCPfrPvy?6abq3Z7dD&O(RK`1`^!@QFIv=4T zEd2jz$}3J!yY1~iEBK#w`wzdj`Lu7D&wxL0_JRJ-QCxoo=Fv`S;2QmRBmA$q|JZ(d z>gHLE*MHjWr~i-bd)ha_=YJT4+MlC1=6ss6VCz2df0(lW@Y7Rg&rPrXYjOXFA3#Y@ z`{o4$d=>EW|L=hRVQByFfd9Kc0WS9cza8*XJY$7__5z6g|NOAiS|D5lxRm4NzV^EW zny7q0O>IGM!qiS}zqJnzggQ&7Y*BE!F^{F-PdMDQ8>zg}G;P}XWxWL7MPJ9gRsMBc z_lh)W&?~xcm)(roZ%9t1(jNVtSHRE#)Us89jtfd7^cYXB|1~TPTX8nbZtb`G?Eu(u z%H008)}oP==haF4lLv`U`%wwoV-o2JCgpKdaWosI-HhCb9UvH^xw6p~{+A!Pj(GB) z9q<0P&i_YMV0IFNMj!B!zkJ(8zIcAOLu0b8X#*lAzsK(*&BKii1`WZYjWbP7MT}a< zMQSA~+A_(Ear*}=XetN+!`s%eafXa_MEo0>bB|yH_1O>e?_le z>C+UTn6_Yk?dH<+hvPcrqZsyU)k?NrARB4EO+xv7<~EHICVPPYu=Jqn`(PFtwK`v< zD_uXZdtgi*L=tWri#XM=!0BA!k)@D^VgMIVmz-9Je3Wt1Ygu=#p6?sVQRW(6;l4 zr!&t)Q?LHCmH^b0r*$`a`@dax5H(U@H&{?~YbXQXl}g9ZrC`B*{URBu$gQef*ZnW*4_0{w$&A|7onB>BOcyhB}WXtKnv()TdAiF6q?%|BeQ)zZ{hT^0)tq( zv8Zc(Sf_8{w;@VS98hcUc3MwkpndA~_sWDj^sGegc0=+r&BK?C_`CitjW&5> zj+!;qnTIL%cu^KT7%`bRnD~&jBt(b~43n8B zqg6}|xjSf&TwGLa$*n^jl6 zJ&>d-8BP4M(tKeTfM&yN4v)@bSHj+W+=z^4(5!4cN=n2NK?>%gP%Bn4@Vwf!&=fZ6 zmP3Jr6cmdMCwh(jaF)eb@8v&u=Egy1WOzn(gXDd7 zXX@d1tFwo|*}s`Y%B}IPJ&js)uqOE+QRwI%O9@9D)uY-hQLKr*|Dl2bF2CS1(p_Be zBrz(mp^cbW6RqMAwLxs}ipYE0BM0*JBAM*XNGKm{q1sC&EfMKKnkgiFbx*tlO~uP2jd$ z;OEx8QjY75H(PFA!yAlT|4cg;q~f&-+lvD4IAT{lDkF0FJkU>mT?OfURTdDAfzx0J&3Jx9&0}pUoz?x7{ba$n!LjGoaY=G7^%vj! zPx-H`%3-xI#NfH5y4<(c0w`Z^&WQ>mE}%QLIse>uJl=U1(2=j}FH#hQ4f*<_SzlAz zw$gBHh;*2*>F5}F_p;ktyJ{*+>G@C!?7Sg;>R1ulZ$~}e`iDmQGU|^D%~$3kgv?93 zOCXW3FrI+~ucTs*_!SMIsk+zkcdQuyyf8%iD4r4#_y2X0BW)3w?drC`JX;O#%c+B* zJen&}(CAnp`i1X8iu%PINIs1#4nSFU8GBs;fOOR~5+BOsWI7yII$0|7aC;Gd@c3N= z0NaWk)<3DN#}g*+jUFy~8J`snviUt8Ij)K4&UdVsAKe@ibME;WIpIIH#jbqHuDSVvLkGL5hvSwR^Q#hH{{^U(mzVy&%; zS?jaR+H?`J`=KAyQHC*)<=y!y-A;E6-bAql#BEY`9(Yl}@8sw`|L)7bIMckWBw^c{8$A1> zX}!x(p9J28hFero02s(L>Ed7LAomhaIpYaX2K?XUqp@Rfq8(DLv`tQiTFm@kD01LL z@qu?cs$n`C_IL%t$xB5OCvh)(%f4ihv5za!`W|==dFTvT+CbI=Sa4PvOKAYx0d zTX-HXq)*7dOF~WIsT&^dY_3+9eXbEGpxWwjyh9g&iYP9Y6X;~H>#ZO|k*N=4l++^S8Z+0${HVZw&E9qQe z6o*g)fL1y2$ilB9Ru?kMq=^EziC~(P$PGke$Di+qrN@~*G6C@?2TS@8e5Ky|iLtrA^U1y+s`R%>d z+UGj^+dt3uhYOf7#(3Z7ee!uRM!IQ zPisW`pIRdXL3G%)l1|$-JaH#K!be{|ga}P%2;fPpzC0XeRd!1k$A}u1=L9B+7v^hM zsB@Z6(1F|W6wfTH7kTLA)4Vo1Zmv!QpXi?#m0C=5-Xip(7__7kxGZTt(0bC`I<5={ z@amFCP7C!7lB1o;GL@BHgO%av7Vfu8Z88cu^1`3B>SA&&>w1!TKxJ6DPiqvx!aq)NFS;f z;R7&8u0V+3T&{t|?RHvhp9o-eJHAD;RQB~JaZ}BETr`+Z){7OI*hbq}?$3P*5W)4- zrZRq=3@R|w`>;ZP25mNKCKxLDTx0rKbEsHK*hIc2ExP@(mB}@FDoqUtD$Z#bsU#nmm7=-j%xfRxP2HVM0<@jF(&ALHPBEc=wR_RWW5W(=u7+cG0M;epS?#w#21T%AK9 zs0K%sK0&=r3hHRg18rj!K~hBe(1ndP_Wp`=-R&NmiZ{g<3uy6GZ(=LXYLd?1Tph)t zdSuQ*%e&F4dro;vbW~n5fQvtp5L>?DYP;*UM?R%O>8YG&al}AS%mv$6?`3N_HR?{1 zZA_|q5o11K8G_Vyhgf>&t%CTIEIGz|%3BeHxpHs2$wmoALIg%s?Avia8NTyy&x0>2 zP!Fk99HmVec!+o5cT!j(R0~(M)9XH-ez3+T8Xr;@+JRp2YSvDgE|NA_Q;mJlIZw3A z27%bD*VQ>W(VZnN1>@N%)9e2B{@_Y9_+z+p=6CMQkc8>js7`&Y*37q)Sy!dd3%$-H zwt|&UHrY7(%RLFrwfLH1#cWP3ta&Ib3_M;hw$0I;85pod_&FRO#}eevQF-RxJa%*- zduC(->Pw(cKH^IcqmI_4`i#i=idBAF*{rWO83;0@R&Z+aSFsXPdl!;ooox-Gc5Wsp zZ_Fo*L%7ir-Ir%Wo@_4rn|c&~zG<4#2JgOf$AO}sK;J~X{g8dm7A zH(Io`{ZkND&zh0OZ(n#>qO(TtO^&BGYO|0N+HS3&uIDZ3%~5 zs8m6-kWVh#g$aG8BHD5q^;&mdO3loKIHX^JCNy0SY==c+ z#1J{Nn@*glIt!o6^Tg@DE_e+!bF;s&BO{6MyF&rf@T!xvr7jQPc;1RmNt&G=;H*IF^qoIhrj5Ofp!LSt*I z{heE_gj#snD5jOWjmVZK73cn%)pR&v%tcV6124}vR@ql!8iZf<-lwctnS5biX4;?u zwY0gLM>@Dx%3EG!8LnK9p^0E;b;|w#@NZrrk|cj;I3R=9a0~E9 zQ=vXL0|sCw%&x|)+bC^)5?10tVR2%;JRDc%O$A)sUtW5F}E?i`8tm)I|zD?Eh=y|-Pp^%#fl$5LWvR9bX3=)6TeFg zHf*ymV6{pT@$w?*ug0{B_nyArqIT3$>mu~2`hFn`I9Aw}#DW})oR`{>E;~ma^D)>@ z2mS4L`2B+dN^+09M}R-O!7!#nx=VamDIU1PICJ6G9N5R@ zH2!jJUeg%snfMa|PnD$!(U5Evxp4wbiQ~!jK&AQOG<;}8V?LZATGDRw(5%Vm)JI$q@ z#NsS}@fG#4<(p)1|5Wi!VC2H3~Ah|F~-MSqYrsU*UFU)1{SNzG8*sPsY4% zGEwY3W4oiplgM;t9C)AnI?^6v4+~k0+Xfzfb#c;t>D)BE622J1)h=0Ux0YYOh%Bs3 zbA&qMw_p&(WvP9(QPjkQ9U<$wG8z$+h+Q~dq{HfSS0L{LlOsid7bZCm696TMRm_&1 zGy(9G$OsDkDen0f%6ZyKwT?SR$)d|op)=EC+$6Eu4zd7-uoEbWUpx8qu2|+L0`K>;J-%Dw zC#jY!a8NV@Gz>Mp;70PjXXVV6eE&_n@hX7TEELpUb0L$U0=Zc43sQ)Q!y6i3g>q#D z^t=pSp6MPGi*@8Fe$LLi=!Ce6OWM;5=jn6yO>89&8!1aq{zS&xyn?({tU<7)328+fEo(@vUt0J5*^z^Ct1WHb_0`qF`#3qzc?k5e zksHohrJTpD(pq*RQ>2iyJX@bLfY7UCL(j#z@6dBGkoL@f3h?>x-JP|6s53?}?rg3c zw=elQBM4Eycnkry*-UC$Tbq7se$W4V^D88Ui#(d|{Mn!*jzahKkY74YqPI3=_+;}N_L$+?P-e!BqPu;hokw*Z39my>t%u8kBG5zYD-}^VVWf5-Fd^x_d}`t><{lwndHjCJq2thtb$p3&2O|%! zJjp5Ll@9+n@t0TaiCPI~zcYW#-X&iN;1ld_Bj0aM@`y`r|Unlf3fhdQ6z$M;L(uLd_5H+~dL z7^lkkLk?Zbr@-o^LY%I9JH#&)Go z#m-H=&Ev|V66E~06uciDyjsdxCU7(-q7`DFwAZ49fcXj`P>+SuaAoGsd+rloo7Z35 z+$^Wm&ldZAjmfImQB=UHU!U|p$e*G@jjHpeSM{lDbuYk~)m&%DG8xju%kppT>=V#8 zPf%uMiVj+hq9#5;HK&wV<4uf>&ZV}MMyN1x+pJ(J7E zFDjFFN?%yWE@?t^8618g1>QXlLo=ft65N>XaX4pNr5=J9n5j2}XS_Ooh&u{jHwmty zm_jcw!;hx5EGT3}N!(=5lrux)94LZyVH+;>QH?!Zmzn4=uMOfB;|H?5RIzy&z2BmC z^$WkhY+$#TWVzp=;l3u{EA)Ey(jNe#_Bo@WJ_HH=Rz&%E zVIk6Z=@eue4Dhppu81ByoAoCVB>HNWks4rRifNgCn$XlW&J{e?^f2}NCrd2_uz5kA z_bxwdx<9i{3BWs3gcA<0wN>=5wjXBr>NzzoD)?~hEq^W>J4eSJdQiavNbwt2EfL{M zvLS>W+Tj=C?Gm;x8Gtrb>b;&HUh`404{b^I`c@Y{2*_kC)HqTMrN;-KGS|MH6`;nO zA-2*9pxjV?Y4xZlilX2uiCOtmJ&PZm+>KEkkp4@5fXtn$vdXiDSGVLyGnaVU(5Qc7 zZC3Dghn5stUGK}6FkHnno6by*46|_-3S^4wcJ(ZvvxzmWgaK}yrX4HgUn)x+Aa`% zcg}F5>GTTdz#ua>-WTMRGl2tGhqPn5(4Ka`S!=D0X(hc64s{=!?pDLy&R*NPmgT5D zAg)H8S5uT?_$cL4@mb5iX+-7QVnCWtjoJfioxGwAERM#)Fd4XG6&=B&%fU}~%)y=_ z79@^$8}#O80?_tugS?Vbo^OPJ@3!_}(T?EkD3x?9OVM5K3dO}Z8B0^?)qre3+8Z=& z7^LXDhjqDi@(oa`+T4Uc2#x8eCxdK(SMMeKt_dmm*5IVEZQo}J>A*W4l^3wy z>3J+ullkvenY_!LXr5E!q|wrS$$rv(-8wAMoqno24ei7zAc9R83$3iO6~1?!B-0`( z_3>jdK^?5OdV${Z1Yaex1{OzAH>5&_&|oM<&NXkk5!Md7%gJ)l5t&(1z zI#*CT3=QfWn$bA-@dx+GECF$Yt?gl%DYMU8?B=}97b{uAEmp(c1E38r%%U9Yp-)m< zL*C{7;=Lulf;_3iTV0c64UKD;5hSgFJa(i&%}v*WX?#2)z&xCQc+7uJV;aYLt+X#) zgE+}ujBvFK(UCU4mHm2-3~0zXs;l5gf`C?v*WADBV=xb57A`8kf!0cB=6K2MI;Dy% zzbm%s7H;OZ|KVameWv51Al&}~=!xu=S{{@Q#I*a;Kx1e55Hj&Ty8ybBwPQ$@Y%7s1 zqx2@W*>6IuePd~OizUK{1AU`AAgm<+)=v>xS{%vvRuRXpc+Q1&j*-qgxl>6rv_3@n zrf^a9ri4b=iAb8wIQ!2 z&@J{T{TH=G`HezD_eupAH@!E`d? z8vE3I;tLPgjif2i<+sLe@ZI+$U&C%^P9|5Wh{5$_JG$NV5h!7Ov`K`=p?=&PW`C^% zg1!8x(0FO8cs#J`Glg&BJKp9tvN$u5P3ji@ppa?*nHVk7i1-4$Onr>f>C0yM zRLAS$WaoXxalGm~&7{cNgrFlv{Nmw@$^w?7k%~2Q1Z;$_$e=!q)vRYoYXzz2gANQW zaLwwAA6_AGo`sX?tfNNrMyBabZN>JV?#v)m(t{##PVh;f`9%cvWpgx8e^RZ%6UxXErKJX~gMA>N7OHCWf;oqQsmCc2y&CxV z#cJeG9GN$G$QVGZ;x!HC6iY;Cp&?yJ8qP5lsU4rP25J)~?2iXOw#k6)fNDgk^|;<> zktpH`Vl_jvTC3fMQ%y8j`LllM5ualjl@{D#?0bocC7p!Lc}yf+Q&`e?Mhj;?!LgXr z$D|c0N}7rNM%B*SGx-H5!tAk|;EZ?ZTTu`+;%01R3;wqSO;#6PRI2JL0jSDl(bI$^ zxjnj20l`AeLG3G>c!T~VV5pgK;b#1>8YY!A7b(aJD&ouxeY`QWT7BcrN{g-wzPZ$@ z$naP}L`*BIAI%4j=RIm1*`dg29)&ge zaYA6P1x-&dY6*5y&$Vg;ZHKjFFv39Jg?55ro!enfCT)lC3E^ zRDSlaQ_3UQ8#99^H->|pgqbA8yO$q#vWj1?4$5*@`w5{yIX|{6(}rZ zOM5#vn|cY5wOyIU&$=CA9H9Kk^UuiA7l#@&e^`#eCl*Bs03Nx*$MOD79!`?T8%l zmWSb>Cl)3IINpQv_At+$g#zG$MXs+%MZJ|X&t8qgXC-{5bQ|ZF)Ldt#x}N=kOZ1MC zyDi|c{TBti)qRraj0ec>2fbBK&W8I7T#tY3<-Go^PW|J0RTNzAazy03JxP%7sxw&| zU2fqjEzf&>PdJ?Zb*^$juAOJThI}1m$nI2J7*CQ;9@o34i(Q{C69x0596euvcNbg? zvUwEpG(SziqiiPLLZ6w(ZS&1DPf$+SeQq^&Poy7@63h>|neak0{y=7V1*O(es>{(- zE6Wl3`l;0sNkdAx;v;FZbolp~$NAmTGYU&*l#TVYH-0VWZNk zF~Ds1ncDlbAe*cWo}P4i9-;d2hgxr8kkw~GOdRVUkvVI_mPTo=_XG=vVq-)*fy#e7 zNB<=Q2v!VVJGqHO$#a;lpOFR9xwALx<{Qp-0L=#1CwCgsB0?pK6~YZ9r&M_ zI(UV{0Tjp-;@#bE>_x3V{Bg&8q`ukGdn=}O2(J#dOHSt=Y@`nthz7rk*tYvfbn_NT z`hG^YNcdfAKTL3w2=cuW&~qvt2<97E-v)o#yUzxW8Z#4Cj+H1qIj1e8V_UI56#~wl zxx}Ith%5gk;n0-zv%rc1gy?F`uTLBoct$nQ+$w@GbGJN14Quv-BF9Ky`V+@$1Uak( z8#Y)ASb|siJRO-YIAz&BJG=~r&xV{~o;)Chi2H#QZ;lCv&(Nh0eeD9ocli<%2CY$DX?WjhKJZ2#}hj--R#_fOoy$n zy@|DlXJBMfJ|}syt+CeHl@*nd=!>1597{{`n|s0oKythTNRn$MINwykcw z59yzvyK15J)G(3BBTz2HP-2!Ke6IUptDuWe)UwS1dVYk1oUA0vD|7BJg_BZic-r$Lvp&0%LsF2+Rrt-`BOHWgmok(l&q;AIljYN&2&10j%6 z(iDg*=?iTU-(aA&`34**IuK7@zBkYPL=)b~x4IK}q1-0u9Kg9ca&z_W(JGNvVU_iV z@CqmMxwsqBTgf6XRya7J!IFq~UJ0gLna2;I9&r!}hbtlvEwwS&T&+;&!(Gu}F$~$s zsL^$Sm=kU~5aWd`%jCOz^A;ge!L}*-FKGnEosM_!Cm?KK$Hi?#uAS?{XKjD@&OAFMU}yMrV3`8d<9_ID7@AQ4U0JO6 zbBsKD|I%GNP$+rs9d~86;vf|bXN}y2;Rt>?>LY|a@g7h{4Zyz5 zJ~x(!l~j%vLcYGpw>2IcO75Cn#;Q~1({btpQ{p3kE1gTi5(b}J^-DKRLUpYOd`{5{ z4Z-H_yv6VA$oR({;On;1_8Ob-4~y+70<2dq%s5*~gF!j50F;PiLm`g>W2me3R4k-%}y=Y*^7z4LD*9eM01STw5} ztWBJMtOswI59WVxpa{dgWNF!^_`t&PAw-fn)y}3Lr5GPZsvJCY^W5QlvCT%pf*%oFC1}{1H|O%l;0E{Y;3*W$TTiIB+SNX2coYr!@%1zN z7>%1^{-JPxo5EAe2kz1r56v{T&_$BI@;E*ynx@riqXDKuXw@0 z-7ZUb$Xe<&VfFc%Id-5GFkWvRvAxV|kpk;gUv;=8c0erZoOR&)#99TK>-x6Zg80x? z%>Go&lEYWA->@m;o47VVRK3<%aLe+c*Jk(RqPQBTP+2n{W4pB&qVgH$C1Vxj$9c1y zijPA(FnF<~0q;>XYZ@&Sx2Pr{9|*vL9Fpyx3jV<1YZkuO47rmy)D&;09S=-u9Lu_qAtSv(E+Pm8C(Vev-Vqyh1`pO*vV zAry@Ip(K-r%hIi*Ml)Yz;6RlE=^6C4Pk_4}M+@TDpru8`*?2GnlAo z{FBT~of}%D{UknT1x&JMbZ7gk_X4o&^?*zUL8Fc$@#4XX4sxiU4i*MD1 zM_XoP`Rp>rHbGd$HRl#9=P;R#?EXu}tNANMBj)MPWg5i#y&-F<{gZT5O_Fw{1B6HL zZve2Ben&=n!XR(hYD5H^^yHn**N1w~-q3M?C?yz|LI{HJk&+|?QaOy!|FG@6pTpHI>aecBue`QAz#hW`jI<`R7U2713GNcO zk*_76{KXp8;^DptY$Gu~tADW?DHflUNQwDv^09?R>l;EdjS@Zg_G^8cKpg+LH$*)R zj-waLR4eA$tsJrVicq`JeChW~%>8m@tLQ1yKuYUHiJRI=l$5Jz;NzZBq$w@RUNgK( z5-|tzmv%P8_DfFtBa?SxnR}$4namDmLq$^)#-JQ8>#@vQ^V0jsqw~`(o zxP%d*w`BSbabLn_QB%b}zCG&R5Jne z&5=+6)t)kj?SI8q7|oma#Eq|*0B9~Omn?JOn9zL zB|mARc`s}92COV*J4yiedLVWT`-)`dV-|IW)pSoV#vXWrgx^}ca+CXwMTSItU>HYv zmp`r>@(dH~9;+}IndEIcCKyXMeXU$<8WC9uV8twVKEXCQdGm?t&UvtP2heWwCCm9M zuU6Xkc;hOJcz@Ia1b3@V5PGL}=oDaooN z;v?swLH?Kt$m1FS^$-9?zTfY6h44MjYy&Tr7AmWH6Ja?rzMkTzd&fG9&N65UkADVC zOi3z&0T3;Cl_~RAsjj{}DHGc`?xNDi{T4%q1g$AE1_v}JQK$nB;IdzBiMCLj9(t-3 zd5>*ClARamb*a165RwzWQ!$EM?X}ESWN2q1o-53ymMFJ*)U`CWq0MpAnF*)_aIHcL zXIr#6B%lv3gOh!a?j8&g0vv3QnFdji*RlrsE~S~i4(O${V4jBV(h35Z)?$`TJWpnJ!NWi89UzZYFM*#ROfD7sZ3)`+|6AOjEis_?52 ze-vHE{fC09Wq!v^7fzxY?}_>~?FxA#c$(HY6GC-o3-g$`#^vzD+G=GJWK~pSrSs-L z#W5yE1xFs7ox2DH-$5vZ#ySIM-k{ca(H(7(3OUb8#P)8sJZDTryBclLZyLQzpwAex zQ}Q3DU2b`Q?)c*%lL~rho*%B!qDDQW(Ug=G25)0fU?Yq5h119obz}bkTw-Mf1$0=_ z$&(@g-ar)w)O)3(nDoTEvF7EX!vxO126Y3d*Y`wMQbM)U?|{u@)@q-15<^?_5XE;l zA?+;%M9$o4`*3~p&Y+Nx*ec76rgOMm6N4Gl+ybcZ-LGF#$iw5L)n1w~m=<-9xN)KO zc-(pov?A0B3nsn-;1Xd24!+|}8WbP0iYodGKT#42<5zN*W8Fps*h}axJ!l0B%~C_}%OjQU6`15iX6uFc;$QR8_7JsML*- zl)ekKvpc?K5-Rl!GR)dq`m44bd+cmk{R*&k~WOEoe){h901@v$#0(m z-FkR>4uGPe>|UPY9lf#7{rV<(0OjO{4cRO_l)l9ZK0Xdc*V`JSWFjSBV~aUzTjN`` zFLD|aU1j%jPW#qfO`FuQQ2R-Ac>Ud|WxVuZru+M>FtD~M0PXQ!LWT{fkmZ=&D^9|+ zGjh1BY_ZID5&>jm;qg1ivP9erDAiX6);ZVsD-F!Oy`FE&c*xwV0o$TE>Dsh1!ty!w z3%i@i9GRw_GapMQ_6E^mKdU&gj0S;*Th^ZwUj24=1pu0X@Dm}0|FkPu5)GC%-rh)Y z0H=0~xX6r^kObUaehCy7ZqgmsFI|dt4$RKg2R>umU-@S11fj`XW^=EBDar(|<;Epy zyBAyiGp!ay_BU<&ku!E?YNY4f9V3|(Wre2#Q7Mz)T~}FFA4Q&6zk#KPB|qT!%~B`AICez9c9odCNc+V-e*o-|h(@eTPp8v2jVF)TN2yg<@QCpKDw)CKrdmrL zBV;@QM{5A=K$!QOtgmQ@iV*X0!;MPs`FXX*B$iSB2ex^Zst-VWh8nbD*+8tej?*)KPq$o-BRAQ)kL-C71w@n=9q;HD%EqR zkceS1xEngGr9{2hG)xz_YWkU-k}dX9c-uEEpibzpf2c-yvy=-Fe#oiNO7X}Qe)tN@ ztolr^RzPp*6zFf7I+N_<;t++NZf%?; z8vI!HL{vw!{wg~DI*OL|k$|8M|EQ)7LpD3IRa~W0qJ3zM&*g*xwDzTt!SSh#QYH}h zDhnKhp$Qhn0NoR%=}Cwk!^YRqa>fO*gI&!X%#fP~=5Ewyy%2I=4?zYA{Nby-Mw|4{ zifpM@FR65LI51402+$`xG8$$_lldB}@92;=+I&=0%G;l33&)*CzuAPRz|Iuw+<*oT z8R~9s$=GIWw=eWVXy0W zZBcjRdXiZz7`~OKB)A7TG$82LYsAvgvat)@aSd}}p-34q6Xx5XSoeH8LUQpSBo9B* zc#1Y47JCiPhi`Tp=N2oTJkJ+c9%iN1QhP89V|F0#aoN2nNO$pE?!Y<4^ttHH(_y{` zjQ4%yJ3l(=%9^6fvs}$zRWcHC9dZSA4)4J4H*K0WMZSUu8?z*AU``Q*i4N#XrG>H$ zP>k8{=bvLdGn@lxKdLYap%$?!J(dkk3oi*?IK8+^xiok9ZV9TgN3{jNF{!f0SqgH7 zIZDQhY~PTxO#vNf4($Kbfd-J^g`ZUawFB)NS3Rw4%KKZ2k$*#XvCHB8o)Cur_(Z@+<%tn_05z2sB(vwX2X%JGC>{a@$QVJYPSAnUYFWe z65+bU!a)$d@X0ErM?p1^W5!pgPoSNrA5uSMyX%`F=NLgv!$umAbRvm1zHmplBlN00 z|4gG+p3^)1xeW@a6!3Hzc(F(nH^f~!)1Ujj8?{}+!)DX?LHo@%BvMOO1AiMS}Vbyu$zdDt@(WXkX%WZO$Y1eFC_=Z0Drirg@YD{tc zY$9vyb^eJHD*%Tdb)gkDz<%*1>5JQZ{#_L~|%8wuYgnCss^ma!gwWgue@E z|F)4EZ+=$+j7Ki`@1(KmmQ7=aD#`9@y3{c5aEI$l?(TOf0_pw~{>Z}pgV!GtAwT$L z6RKW#BQJEY=?=97XkcQG`Zo|sB;APg#1Wm}7w+oqmkCC{X>Ul>EJlpT;c4mlZI%D| zmrj7g2x6H}ur*aCVRA_Lo7zKx%DX9+IacKC;KjCP%_G~am+NMVohKYzg8RKugBOgJ z9-HhJ&;O`t{1dOt?U#eOy_aZZpQmv9CE0<35T-m;4K9vJpE&OuE7aPV9O=;0tCjkG zDS3OgkN?EF#ntB23Z@|q;CEh}?XO(7#9SpknQIqFr`EhCRp##jN3Y2E3$a5T7 znnaE){P|-)?=krYjg(Zfy=uxOTK5FWX3h9?hStAd_Rs!5qk8wjCI%qND$K-QExn6Ag0E(EMl59)h%2!~NQ>LmZ?>31G;D>jpXF83CvoGRDZdM5sg)ec zZ1@3N7cCEY!R#(ze{TNz?NGKfu9An*-|9WC)x9bmL zhvi%I#HIDWT{XSq|5wfI;>r~Tz<^f8*l)!2o@>K4tB`UfEMstxETgv zK&O+$2D<9g1BUSM#ezTz&r#MMy6iNZ;0S>ue2EtN2)AV&$`U(iKJc8uompJhqfYW` zwNI*05s<+`cYgo)vW5yzczX4aww zM*P>$71seHq3Vhr_xu0dJ>LE=JREqE9(!Om)x|*Y&o_A$09R4d&_)y*pr4 zfa#pGDsii#f4aTje@aRMPXez6zSsSS*w6od83V48&&=u#G4tpV|NX|_E4s-d1nJmj z>^Y$L+r_X-?R{(O_J8E}=cm{_534nZTTzkbev09fu5eE8WvZ`{9J z8b<+A2~4~$etdSZ)3gE@Y@4fd`>V0bt1D_zzx$Ew#vRggtml z$97=QeufAz|M;ho#04%$iv?!z_fxHa+_kR6e(z;vuyFfp1`!~nn4k8-;f(+!xa_0vdcu&0Q ztoZfi88sbUhXtlLgbRo0A72Ei0ZvP4<&*zPj@eLPuf2=`7u^P6Y*(H23kwU2VpQp~ zh=m{um%K4}{Kxub-agX#e|xD=QeK+XzU1IxX5iT*fWfqzPXJN8hl>9XMIqUDEAj=v zWB%_&Ug)KF+H9R;Fx6Mw>5Gm?>fk6AttrEVB~3sWHK#t9eUq3bqIYnmq8_JRZ2V&> zZ;#p=8Tb?Lf4-Z4-Z^hN;2od5o9j0MiwDiLIbt-8%$b_;vqyV2WZGOR`SBX?#g?a3D66` zbU#ojyxsg?H1N+i{C`%%M>W}`aM6D#qdN$7Kc%hozY>A}A8SoO=hd(P+L+wsmqsYA zxIIzb(*KQ;0QOlEI6pO54Zk$WggS7QiWR_q_J&RVRk?W00!C`m{hhPGU!~$7vg3;f z=>J0Cre^%Lf4#|^`Bs|tv*1Dlz^O9aX}r3f#RSZT$>!)lPI2EDW3F-MZCPPxY&3b~ zetyVe5!$uVeFMy<$X@>FFBM!=RFob+u8O|NZKv8&q{VI&&7%Dh@rl9X^*yE2)pHD7g^MN#q7#@_P1WhsIjGY6NJk0_%)}iRobZ&o;p8o^SmiY&uvQKb=00CI}Bw~ zBlCoM4DdY3zghh#p@Fjl0)t^V zv$e+rz$745kic+iQPv_j3qH?yM5hXV8SIInqs z1?P>m&fPzd!_9=wPC>VxK4&eq8fB=l->76uGw;Mvs1`yBNhKdJQ?vHYV7w0yr33>(0yL6Vfph5e{7i-DKg-K z6;b|G`V$opg{5!MBUo7LNml&}03h`xk8Og0XWM(Vp`x2RVXHhIhh90!x{=e17C=iy z=DN+R=}DUPz2h%jnXXmU7h?RWvm5?$N#PCtVGqOBR%2z!3KZLOBvh&kP`ofn_!-*! zlkoA;Z3Il;dY2_lmhp1cL>0|eQ%H~J+nbo}TG@9-v878B|6zW9D|{S)c1-?Fur2?; zJ17Xez-B(tk-2rPw2%DWz3Uz=&clhL@(0K<`|`N&i~KxK5N^<|g+~9(1}=BnQ*bUZ zYY;MvK^e5v&+OFFwu!qcHo!tUwYnxHxd8Gz05 z(JKFD*D{}MbORc)*5F(sBPaApR<4yg`stf=EHJp~*6T)h@MzZwm?l1Wde|_t*bY`~+h2toaJH=k(Q<_$#)t~K~ z)~)i<;CIF1;$KUK`d4{F?04!;Hlv*n;N8L&*=boJHN%2_)o;vu1@9bhh?})hk!KR+WujnNAX)`%ljg zmc#*6$cvUfvA=OU|FJ}rfIfGlxQ$(^kB&D-C5-wKEXq;u!o!I;$YM4pOFQSMSU;um zxQjb%O%e4PJxcp>S zkK65ghJM0nwj67S+33^tKkq77(%jn@6FD>L#*?9BwubD_;{99C@FQQJt&(2}Pf&Cm zxZr^HH@}x~FfnNcMblXv9<86{)(;j{or+CjN`*|3X;=<-{$89 zm8+})GstbVke0;jDadHmhR0OPAHiYR6SLcl^v)XI9D9S^1N8DUYI*khA?@0>Y zl~nO^ZLAPssl*~6op+b@JH!<4TE$+|$dEGY-=qg;Y*`RH`hCd@SyzJ)Zi%I+8|R~=0Csi`^?wO8J$-7aRaTx#5EN{5Q|+_|0iqk57!GyoOA%AoN%+AH=AJ^-F5!3ojlMQ!=AYU>B~MoBQPY_{+#`GLP(#E ze3L?|_AQJz?5TO0yYq?3i&&QArLjYmqm{)P&%W_)<^-4 zRi5Ym;KlxoZGUY=-rb|K?K6Vfu8*Sr{KvdRqpQ_2iB->X&&{;A*x_wQd0JDlsoYc+ z)Aj=bJ4v=CVTD6ga;$5^bt-nVgO#kBnOp1W?tOM7)b|KtBGsMfStK+aK?>vQCD!Sh zHAF_5oSxe=3THQ|!6D**b(SN6qx>8OfAVjSa^PuesDthU&HGsA1A;h@MThmM7cRveY=Ufs))&VX^r|^=OOb<(%7vP*JW~0k z@1clYn_jkv1+Sd3XdQ8j3SP?>nl(AxH2ag+CFzfcGMDNuQaT?LR2?0E`9f0az9Amg zB;dKyg-=hY*%#NeStN!-qS=+Bc-Yi+^uy(BdN46lBX(W?qc1% z$*61{P=RjEaXtb9@M*I=YXtQL*P~p+NGb`3Sd&|S#dOrHZu5NU3B*roL@4}xMyW{; zm)`)d^>sQgi+38p0p3whC!C`m&F~`BTrK3FElZagT)y!|nA_pJ+?v~y*=kPpUXSf> zP5F;?561)aV5CU0*{`JApCbW4^G=A}1}##zL5ua867SYXj#~d)MPXcgDU+-%fe)M( z25-MT1ZRR%y&+ zpZCe*87hp#;+2jPP`pJDq+cs{ZO$hg&Tz0eVTJMd*N^l)zqi^S=)&{=u=mzcS+3u@ z@Df3hMg^on1f&HNqDc?yL{?zCDAkmh-7p7(_$-yaY1xMe^+TObQg!cIiAo#;IAp&l zmUd8NXyo;Q?9aTp{XVn#q!O^uu2=yU^evs*P4nci-ceB0wC`^GO%{md#fw zCdAaCkSOQ|jx8@E&a1ztY$}G$Zq&ABd}}1#;BYZv#b8k&etB5+(W6MXl(rkIWV~bL zYa31j5Dh->Lt&Q5N*o(GGhLZy;E6-A@z#46{^uDI2Yc|L)He!CgFS>}g0fMIJYuh} z?A?)BA1`!lSBk!8RhTht-Ty`5#o`1d`O<81ASPJA%zwPAcWM)a(6Bvh!Hs6si#*}7 zg!LzVU#^B6pKu`2EQkGv8QllzG4a^;4F$hnn^+&9a)~m>Q z16?g!bfTtzyX0BB zz0yuQO>xJEXq@BU>@`k~H~b3q7MVvr<_gtR+NFTd)b&M=F@fJfx^#WS%)f}Jq2M|y zLc~U+#?jA;CF|QGbmY_?PZ-IsKJQK`aE4#;7oC3n!e6)5{yO9gKS0iK+(}W#;A;!( zw&VS}ajl|-FTKZm@$zNT=4BOIq^M|oHX8j=OmRWEqbx-NgC7HWY;~rjp{z|#*^5df zP&}7Aq%O49>eTca8hu6(lQS=watR0umF@8P&~LOB-`vk9eu6X zcv7;K5Ka{QE=cfODHELf-o0=0z3q|t0IblqHBpGjQlxKxzLszh_}I&^Ej)WQqp~_r zz3LI#T=zzA8hv~N&ox}stfvK@lII4#?TeUpryy@w$G@w*w!)r_hIkkl&F&siYgs*? zL6lF=yH|g_L1ZTaTRTa%|HGR9;}uUt9ha! z_x2*1Kd!pnj4@NWhU}$XMdO~UzF}R_RATn-{4#cVvD{CX@~bGn|e^uXq zB{)AbpHEPYxf21kg>IN{Y|YZ{ve=*9H^^#c1zXdG>I7qijtA_TLvDe}kJC~-sezg# z>ZXhb#XvNz_MEivit>hHxiG2RV>S@VmGYCcTjsDAon;SF*SoEN>+8=S%4V7PKxzjU zxD6;#z21_sn>D`}i%&nF)P9>t77n&NIR3kMH!9QRD^ z4Ov@QGO%Y-uv^kk$()Mibg+T!%DyaHeaKBJh^!v#02&rTf8(_fJwq=ll9*jm|1dEj4iejor> zFi3I|vK6!O+1AJMNu#2$WbDH67&g2E7EZRZGxmNx;cin3(KxX+otN8lnJrCoOf+Otsro=83#t%wd86(xMN4Lv^pZ2sg)c!R@ic+cBXPiNu&uA#);hLrt)%J8K&nD|VDFQnoxVrBR(z#v6SV1%9tSKFo}A8y ze0bpR^c-CY3AUnUbB1PBp})614~jt5u*?5?$bWcz1s%%p;qMy%*n#{k4aFekFc5=e za-4>8)mbce$?u8;l08_EienQa;>gJ#x`sS4EXiM)gavvUls)*&c~t z>wswMv~|-m_WBf4bcwci9Z2fwlxN)j$S@AMUFf9fgFDW4;M; zwHGjf3lAV-nT5CI9|kg1VAh7+WMgAGyuX&~kx;9YW)Aru{c@%XlpK8r(8IwyyL_8( zPo&(6+y!Q%roi{dhD5Zm(PHxr-R#=W*|nQl_9zd*wCMupkO9HqO3{ScQv+~scj2xN z3{!Y})~#Gc(mAJ`)Gdj(*L9XBbF;M;pf)5$38jn z*_zBFf@9a{6q@{*&41R<|KR~eF#y=|E~(?eufFiFkF3%|IF12?<9y95(@SSAv^DYJ zFSAJx+#X3MhZ`Wl4lcvG9hT|Q377`KFqz!j0#avkh5D_!D(9ecE1$J{s(ly)B1l@N zI<#Qoc*R(@E?zQ*TXmGb2L`sP=9jGvmx@_0cBMugK}IiX4rLv=4?Pk^>%NXs8ZV_M zv=3X>`c-e9OV|%ninaOLy+&)w+#ItjT<2Ji+}P)QG>s zXdgrM@m(9tpHbqkllkk&ppF%rwklK~TdkN6RK`6YFIG($%incM&kesaYuD6Mqmv}JuI$pJ$h^_{eOzoqqg*Jeg)7nfK zlg_|9@j&2E#qE|r{Td-ho;DMJ6RpgGq$pY(xA)h0^qV@g=hNvF;$k%0Zn%-q2HiJZ z>NQllR%0m!jMB|yow#D>9IyO+cIcmycgnAf@@qKgbA00QHmR$*f(F+d-&hiDB; zPZ|AE5>T6|KqL0$?Os47J=klityXGb_Qr1Y7OFKCmFwxiU6Y~G0KfV+#q3m9Z==1^ zLtt8Q#tm;;*y#$hOYf^AOh#A=~^Ea^d;Jps)-=uFb*;UH<+m zspHIfRQ$?jiVJ@S-`$i-1#t@FhOe#L>%rLL@oSxDrzwkO6BDDeM5xxWOLZXniG`)L ze45eb{@_2flxKqBBfnY9Ak)WPGJi>+?k-hLw%RphQa(F1dvgD}3E%1}J>g%O7t^Z1 za~Tn+{UiE{vndQdQE?q=g+xt)z^*-3PHS|?LEzw{=vh6?&s6mi5Zb_>+)Sx?xx zb4R~|HU0SrTj7f{5^!k-#y+l3CO0s%)C>#JE9Ts72E7k2KYYK+w>!_81!cX{x!Zgr zvUi&q9fc7Y((Rx_`~KLYIrj^KAU zY8?pE>5aPIitiEGjgKCKRp2W-K07@%A~HudlSqp+$t0kwgfHqYJ0-^kx_ZVA%ug_p zU5_UY05wDvn&Ve%X0Se95$oL!65|x<8ewMhtX{~)fda;2%@C6kJ|v-X_&`rI3CMa} zGUbK&IG`Xz4KkrUVov{dJWRAuZ(joT-=OZ2Pz=iKEcwf!{_1I0A;8>4=%Saf8_(+~ z-sHw3ZP=joL)l0)u#WQ^k{3C7#ElFYB7shynwqF zvsU$;nP)Shw3Zgvdfi-4>L0;E<&HlZNH%+1zB<1dl5DMvz6ouQg}@{?H#b(PBE|C( zv!S`o87k|ARn>{SH~Z~tKvXU9$!PqORamjb&KtM04-d#AM~c#Dhf5x^f@cku2Uks1 zoeqM4-Vvh8E3fq*38|L42+d)BErd>Lh1D(Yv}$+Ip2NQ#R{^k|ZIp85RSnOHj=RMc zOS&70?N{$HCwam{(e*g{XhQhUw`-6;v(0E@E+_Mj_WTg# znC@K*i$GOmPm=4m-+>w*9X%|n(mv{e*^toWll#;q4ALqu%OxzWv5+%~CxG-kW5ShL zt8&hIDzGi)^tcsNa}$r`U@#Pe&Mbq#X9%t{w0Akgq&+wLPb%CyKqIY4h`piOF&@8H zo=1s05H0mJ^<7IXkpcKn`4vwNV~a%=t^0X5-ZRDY=REECfoA^C_l%+dWXaT}4~PDd zF!(79D&7X}KxD~$Dda&=R|J*869uFM1%*dS^!xxUH8!{W5(Dz?5cBf8MY>@cI2g1} z-o0HL3v8aBdGGjWCy~WeEt8NhN)@JK1>A4DYubZ(jZbTh+U7hKAO;Ow$NR$Tw`a#k z=6di8EvMWTX;{Z{7Zy5W*i5!>9xcRJk-cVzoY}!!jL1&)QgM)jYj(luaPIHNZ0LhD zvC3Z|f^>|d0!80bBFX`su;lsHd;e3X;;|EnsIw5Xh^&f|gC9lP{NTE=k54&(R7gTJ zs}78-=fqSEYpwC}-&aa%-{hlr< zY0-Z_1Equ+j8P5lii_{Fuj;@l8G|G2%}=FGs|2_MbE4VACQKDc74x+TK;x-P`+b&N zf#+OD{Dke)%JXXn(!Fe}$w| z@B*XrSuaQr3ZFg?7fijA`EcKQ=^JG<`+>|g^r|}c&z~=y&hKgEr%uz(4uYJ)#|pUNl}O-RkP}{^f4E}E>fo_t?~1Tp64_p5muWoxx^<6T|J2F+AjPaH z8qLfjxsY1?*4`U>#sT|=O8e7FE5t__Y+H6q_jgnjFi+$zU4I45KfV=BC{f72^Yg6; zf(%u^zCoy|OHhWtN9hVS5m@B4C|)nqmhlepFLuEFgcxsEVvi^iiej%yXV(s0?i=(=8{eiU3CTdp~mlTt=(eH~< zFRGB^YF@xNHb%`g`jp2=Gonk`<%rD7M1PVg{=)%;%7fxYe#OT8*O2??M?AtI_OA=d z1qV5%0R_B!TID>AkdA2f9j|XUYa_?`0sq$@N{jPA*>=P_rl~V|;?O z9w(tp&h|$K+XhFA3GE;4uWs9B#Ch~%!CGfj>Ri1w%57WABU~!1#Ucs~{GD6~@bfgN z%Pgiiq}6Mm($R$rB*>-zVj!>nI~1qu7j#7jj|>lr1KfCZBsRlvJ2Pd`!5mdSY|*(v zsAvW-@)NHjQjxIHk~@@VAGq8W{8z`_KU)!Q$s}kI4P}}9#%9BT=L?ljF#8SH`NvI7 zu?1Pq0>f`eS2Rz`>qkjhc~a58QsdkNS(rZ|`y*4@A{ce;fN zp^v@z^~$~y+y)*c{ABPA&ksh@Z%R2)E+}LU`Cf#~A7}C}Ji;FI@k%=hr93qzkm!f7 z8+Els7bRJ5eHWrr`SdFMu9l=P9s`X589fuVM5NEzo!!4bLnz=oi*Hj;U-{E`|21ZV zXOjN}40WfG>i-h|p`-bKEAbzyT>n2zVg2D@{_ar!%Y^9vt4q0XAOHU`&y;<^Z=bCl zzuUd@UgtGhb|L0?9ty}BEnpT0M075cIo1Z;A^Fnhgx9c`sT=(W!njM!#6Y#Z3n$@n zddh!x*k_y{&1GXqr&gR1POm6W#F0S@2rFdGwGVWHPfib}oTd_Cms0>xZw-2@M{{A_ zynzR41qX1xRE>&4>#bgDxy3q%gS^8OF{;_RbB?Cv0=rGy29QLz4HtwAtqklaW&(^p zJxO@%1O?q-FlWT6#;wMwH?yxum>g;h{>GmReufGI8Tt@&0Ol~={Q*%0uUu4Z*8iF4 zMs^z&S+n*ezxuphWE;LZrRUNfK*FjqT4J6Yq+aWi$~$!Ab!#!>l0iG~odj1z0U5I| zH)Xl4<27{bp_ubncJ;O>7Fxhjh#EAH_u=k`Bj&_rQ(>o05W~%6ytsmOqyOC(VJ=h3 zJS@5HY49HPrYg9cb+}w!+bExPt2iFi$J*fhr^Q+L_->yc0uPKqCbJo?kj&n>bZQOP|kd~jWZhZ8W_sL%{$OzP@DW66`N~irCKg1 z!9D&?1ijKGH;#TI`&0i>#;f~lp`bNBF-nRFRhZSkXM(&cgJN$gNJ;-K zA(`2|rWGgb2}fq7^m5Q2?>GCV^5`+uV&;U7WUkDgvjE&7+TsNhk&yk?VwLSO`H1`U zt8hj+4W!GL_v{x*J+qWD8H?QGEc}(de0+ES!%9+XW1<`N<^$7VK^p19NrTvQ!Ql2k z(%S$=kgESeHQ8VmF<^0tDp`TyWzpkc#jA_(%1pRS+r3mys=oGV3 ztlp(yAUAry-l9;OnQK*$&z8PilPTYbhR73B%o+^$i(+0jH{>D0MYWDh@&AW&1e5?a z<$wDe2~ZILS6rS`?*z>{X9d8-wO#BYb^Ii%|Ho3<2z!e7ym%9JC>t2~ zfYtQc*o#%KsSQBmD^ldHhw--S{c`*##u@&{Zq<_u!HjCQj;%4tzoof&&Nt1tCg6fV>A40;juQ(NBoo63nXEi zkD$lB!0G=D!4CAe#HUx=b_v<{%2cXK&B2<7cwi%yDYbQtmQVZ2*5Hgx0UH> z`9kA*jV+)dVU7s*NIZP;g12RXNqv5+bZyTxz&pF$e^~%-fOj(sbhY2Sjqii+ES%BI zw?)`VvTOYxF9a-}Q#o2Bp{Dk}1feJMl z;dW;7u|HRRj8)QI>gTyHtkplBOHWw$e#K9U2;n{MPzYo`aydjLN@-;dTlB}S?2$SnaBcLhyXSLw=B41Swoq>zl0Aji?IRtV{5Xo8>Kn9 zF*y34SwnMATB#2#EebNkD6e6l=&sh<>@mxDFO`(k|}>MMJ|@f$SnOMPElG}_HZ z@}MBVqW=@t`PaKR?FB-u%^j%2_-_bo!)-kh399VF8vUYHEDIoo5$N#=3|evmRjXq5 z)5s92w|=8SEqx&uW+B^s-}3Cy^5E%%)2)>snAZ#EekV+#_MYVC-F=TuWxsgBqsg}d;GKs zEhw;gUpQpT+t;2vdC~&bH|=E~ArQU^3EH30$loy75@2vUV_T(}7 za!|58tSyEmf3{~_3yfNMUhMjVo*ZHZFr&nz|I+hkoa=16MCBm{Rt9pZ`rM;KMU^jj z#eypriu}|6RFN-6fLiH%kjFb&TJwCORMR~MIFWE_zXgf67-w2_Yr24Oe8X<#{W$y&yrYly*T(V%`dVp(b1tlW%!EGa2NVAPvZbt6L3MSti_f zEl%YQa9f?M5CSxf?-`Xf@ei%!O^3{li@g~&?}GB95031Kf&Vw!_mBK)8j@(++=YBm zT8$q*ONg6gb?Vhu9apXZZO;Tx*#}Iq&|1s7V=Yj>P(?5(hI^Ce#osxYE(cvxZ{&R7 z-~_)zEQAHXCirLFy7;JIu#@}Vz?u3a$owj+2OzlwwJ!m|-pWRTR#z++1JDcfI@Fu= zRYv#|o~H6og11EU(5VBgMBc=0dca|>LglzU$FTxYggLJ(dj|;|N%p%dJQbN0A!-Yn zZC*Ag5_pQ*Ucj!^v z!Eb=Cks>#1XuUm0cS-~_4Pll|fvkB^BuFqTt6N+1_vqB~3g38n!@Jp>`U$pQ#tb&u z2r0k6@8~;23UJ2fqvcAyX?u8!g0i+Yabsr20>%&Z5Zzr;;lJkyihJH>Q>-f4mh$RcMFu9LW&iyZscOM96O+o z7YernnFO`vf z%crVIB_9I`tVz`+MISrB*{b1YGuTF+<^6~Bo?`Ff&}^VXv#6mTS155}0!^8736&Ls zT45J14K@R`7sN5K#2n_6x0%#S1}sAaWv#X7)-i#H5mf<3Ht6!tKG36|3{^Z2?!2=g z#dmXeqwc&7h$^X__n$j0(I})zw(dpVn5%suilZd`4^`6EU0{495N8nZ)`JiD!#A2v zb&5B}YgK^`%%opWq1<*k^n`bhV5G{SZgsRoJx{X^@Y8wkVDsH%%vCG(*&nK>Io~bP zsN4J8KCpk3fqV&Zeb^&#cA> zC~8?{L)q#gY3FQ><{fsOMk~e3h@&7f9-5h%8AOF20Rz2M3`fXY%oVY>7=+^sJs05% zrv|XQm&~h|DRJfkuIv3hm-Ofd&6~S>d3-W~|C+P?NA%Nyl;ahYP)SlYsa8VV5(3mO z`<#fq5b(>McvkAMXp8moKvh1VW73VzJf0+F1X%*i#nn}_3F>W;70U%oxgJNju-U!` zD`I;MfJhuCSdPO|g8__F1wv|6I>49h!CN!yxh^vbZoho<~1 zy7cl-4iYfPc%MKr%v}+trx~(ZwPft_phf?^7f*p=sXw!?H>>l;bt0k_w(bhH)gl=U zPpK}~AFhBGAnQQoXwKk4VVQdCH}h&zq=BJk+Dtf_{yyD?dXBgtQm#Y&kLFZP(?r7s z|4jLGd!{JX$)}+CLJLHEZ3f1jAF$z7V>y6&+0f7sP+K~eK z)EY}y1j2bkg=#{6*Nwe1%`04r;^B9h8KPJQ)MGEhq#yf#q{0D0MDWdQ!&pV$yg0SfYVnxKief{pfJ|5nHsHT@yfuMwhY1TMRnRBjqMVZbV2hEGaF> z1#W=A>}WY}0@`>o^u@oDu%H+G5O`*;J1_r}X&sP;qN5W+Udnf~G+$;7W#|>>Y8Gku z-ei8>UqhE6D;<``qz~>0;sqWu(ZQO^HH?m=A4%be_!P)yXvjI@OPF<~j(W25(d-wM5GaiXT{yp=~c2mS3#-D&8232%Q2v1c=?z z6etR0lJpyxgwJ|j#e zkw}c9B@E5{ccBvtd;;s*#rgi;R(!yfqp)Fz942$kPx_QzF)2@>Ht2)~RC0Qupc9Bi z5!`;w?rd)!LBh4}?Gd}kX)!vEx@)^JsQ9*;m@wW73%T=XRykAY0UP7&!{&@0?bdHH z0z=t>nl2=+D-VDiD3U1#UY~?P$o4QnoP`H)YV+-*>R(?e4^SWD6quQ0`QjUUxq`dq8|9S%2(^}YZN1;>GjG)_o&0(!)Me-;LGF~I+pnOuOC z=E9|0jB$K|ep(Hf&|1PSjsnHA)|9zyt_VrTnr>nz8<6oC4Emci;Vf=;j&lL=Q$(9^ zLh>iK(<_kSYX#&BeoHKy3XRX-d!f!gxfPbH5x3xPGY{vMHRK7Y%j6Sm@`CmQDco_@9%v z|JBeT5OOZ&i2ycd-h^|CRamos>Dm~Fc>H(;^nT-O5G@_5MSDrW?ihjntyqmlGL5A; zwsSaX>*!#~RV_cnvP6P`DYH?Ao$7Ff>)bfDyTh!Rs@b)(`*(IbtRS#srOV5R+deWl zc;2Zm1LXFPy=nKX!N{H-z1m2bw^%m(5f`j&w@xDLX72a%*0-V3Taf;u=-B$_fD4TG zzd8oYYPrUG-ZvbB*{HZP=D6x9*wP39Fyo*6U~is>{D_Bk<supA;d_>WL?9KeUYe$Lm zHRd-k$xrCSqZ|YPwlb)1Iy3*Rxm+m$pVnHlM0}Oy-&s;g)~t65;%2eNB_A2vha=nqoBjq6}CBkNsA3 zC`#*FJ0u4948WE4Vz8kUB(+W4OSIq4eA=BJE^I>yOo|dX|3Rhr|ISDwC>CFI7t1CG zg9PY6FQ$KNpzA(EBuhv!s3rpZ@}9Lgleam{x_zq}Sbu05MIzG-Qjz)0^n|`DKroSL z(MAt=*2;vFa(0_Rlg2tdMNeek59B9SbzNQyOk*v;R(I19Xio2f?7X)f;ISl&m9EF7 zj2h)C{D?UPF01b;lNzAcqgrSjuZId1M1LS@0g!bYsZ}5FRc??}{yodMggi{?bMQ|I z2KWZ}5Z`1L7t(pcF;z=7;vGwidMrxYgIHTK?^%H~KxbN~MhL}MDIX0NaLm(j5Bx4q zx{1(8$L1)j0ombf?dj;P8&e*M`)dioJydn~x;8XkVBN!XI%ZlvQo~-fNM5bB>BXLM zX8>geJA%Zk$f#R9mHq*VqH4kOcMx?dznKGP?qO?Z4Cj1OAzr|QXX$e_+M}IC8{3_W z+!N8KGo)@xl%Z4x$6&r~z-e z=ip=~PJjBp6(Y<;J0jpvI=5epNRj^k!h%pPK^tRrHVzX)y0UJ#%g=XBuE zCAXJxDdrFrxf3YRo%UCfrC9*YJ;Gdl5I&#b{*o9F#qVX32AmzbM(VfS)QMdO+?Q?P z^Gg@<$=oOJzF#l2O)9AB{n#jxva`do>{>9gya*wFr7i|kU}GN}8?*EUYCxd|thT53 z=on8g2_`*UdU)PbnXTJGV6nzch6d#P7%V{wl3^p<^^E~9= z{CrvL#Z`^#P%T)2gp2E-KXrDBm|C=)s)hQ*Q6GiSfa`Jh@ec)B7%HQN*rg$*{S7~3%0 zE&-9m=2;bVQx^?uR!L%`d5lV*=E{$lca)lsrK;`>I#rG48i5+dLN5@MW|p;kr8!zP zgG&lkt4}jER6)B?%kuaztXscBS#NLqXM%ID$%&qX-{pzcMxPAOxh@RmcJVpQML`oL z%J>I9Sxh)BBgC;?MW_{(Ju>XfBHO*t-P;MMgqORr_*RnQEjOnx^{)1$$yH@s(6_!) zfQs%);;l+B?(Q-Q0r_2m5>lkNARu#VO&DFo$7>i#LwWV3b1;I z^5FjLjWK+5^>A%0r0y!CZw^WbKD~-1x~BGknu6kUDocg3{B{kk!`Ro_I`{Ka3xr ztvh6a=-{?9ZSSYMA=MRnPqRL?-4CrMORqhxBottfZz_TVx``$bY5gK+(_ez-kI8A4 z$^@o!Ip+q*4yKY@_Z&mNXp6KCygmLoJ_;ILN}a;I_?ve24@Yz{s&ogB2E_jx*;;rS zTvppDPmJrZvfT)|0EaeIz@7gzYB8B71no*3ubns+DL3Ov)QTS-L)v*^A);jFD|eoD z9W$gp*k2vdcm!Bp(4Ymb48E{YLJH-)SVY$!j@FC&E8*v-4vL%#&*&Ftp^2Y!ORQY( z>(wVVM}_)BNJ=PZb3+}zrrI>paNh7AiA@xg*u3#IR1wEQ#&k0Bd1HEhqAUV*B=e^S zlkXPjYAlr!XhF?2YxU^G3p&;6O&P+UBLeu-q~JauD0k}sCoJMS-op;{?B=8^hdPG$vZ z11xazNU5qF)toE9&o!8;Jtec$J?LTr^%Z`Q>*W0pHD#fXgOhZUTI#T_Av+d*%+u=_ z9J14I%fv+$=Q3-I`_Z=#{%_C-)A|L!0bn83?KKTEcAfp6HPfx9pHrDiBY-5N1xQ1B z(=+c$)w$KA%BP~KEghw$^fgpL*fhv6BkbUuOL`C$($(4F>poj#Gbr|igO1er$@v?~ zn}C3LsopS|l8^whU%kOQ6(yL&9IZFj5;*escEhk!XNyAY23XzeAMv>)sH0Dmxt^SL zB{sc5X5Q42(3#eEaoRhu+&i#p-dZ4bO;uX^fS8(v;E4V#)yIIDMPR9jsc*E%IfKA4u7+^F&+VU^DZ2}FO@J}=ilvTp4_pj~+T_a=^|I3{wy zEiScM64ufAnW@z&8K>I83FvT!oDafA>Q0kn;D7_Od@f90rf>oz-_?9enl-0hU}%hi z(d{z7uitd=QAcZx^6xu?B=$-PReNvaj+BG5|BU>*(YVkJKDi|M&y5z7)pXcH84O^^ zQ18Z|f=<496;`3i4!+z>l{pv+v3ece^D>`0(ssM5i>1#<{G9XZ3a3)0F3QpDf$El1 znBfK!5^PI6?hY-xx^^=r_59Qr$pKD`GJu79bQypA%$dp{h^%Nj$NyuZ@VOGIo*zTi z^S`zVIjOIBLXi9e(}A#W-)xw%$w2^D%Eu@uE_%JQF7T(0&l*!?9%!7w(7s5h!WU8a zSo;CRvp+zi#z|2+fj@ZzV-60F$v80F)1^C_%;m3|SP%g%sI$vgQ$=SQpkOvOtC;gt z6B~nCh(dG%W8*;?wHO{|7f-dVb80q*({b)g_x1Av2mDQ?o94INBZOt;#48^QR>H(9 zQ>q?U!j`dcgRd;(gcpm#Dv_z5r10Ft!K+8+uXA0fbY29#v4dFWb-Z$38~3`ZqQ2vV z5iX;H4)*-~0wI{}n`F1UD2Ns9B35i?3-+;@jSx=?cQIDdpVRhvN5EWur^4d|Wtrbk zdjGlS0EYyuAss&gds4c*3;z7OR4_gMrp5t(pl71%@jl2OF$cVc@|8uP4v+JJmkPm= z@t$>S6sJsi(voK)%8rplbZ=^drjouPh6K*dXuG24*L_ftaQ0KhqEzwrJ|V+!tw`=GGFmbgYVBJ4$}p<1!3Rx z1~i{D{(gnP&&mFusf58YfCH=~ik3KRy`TS>LL4m4xLdyNN`e9d>rErDqjF^lYHeE| z8C*;6jydgj1X>vVexIaEunN#qiv^R}@`&*5n*2#=qnI_7j@oOL)Bq;Dtfo}@oWlsY;zgx#d33 zr$%fR^^dj{fu`Y^UBGg0dYCfUZv3M3G7IM0*in`dM296VN!0$r%a99F|OYI!IH zPBve!91EPEC`3d9nUhIxMv{K(_1kI%Y>1h9yTlDZ8UvHpoTYWY`cu;R*S0*{ge4?D zr)`&lb3P9TLXg%1y{T3psJ!FoJJ;5xFfm$^BAbMi_rTrZqC>8od0h z2d6>phZBKy?sTwXaTJ1OU^!ea)-9Qg(x6VKxA;4T!cf^}P9N!ZH{XQv|% ze{3*W6C3?`If4D^C^dn<^Gw@-*~(}zmW@-Btb0IAI{rzZ?%mz>m{?pLwW zM79ghp4Be~MdyQZuW1n`B^JYPD}9XkOjfrj`E>K%0!Uiz!4DnO1`JA3K>xwQT=m;c z&P4_;-kfO^p0b*{xy$wKWdvF;VMLs!IvtwlVYy?a#0fV<<_BfU<_2^dQ(TS;eLeb& zo>SP2#a8S@M8NJbnWF|35htukV@(klcEvKC-*SI{Rjt^Vekr%5egnAEQo{Nh7w6Jer6wH9D^~u+3T>EPdgAZ5wGi$12A7tyfqCSbc z<-U|}>2Kv{Cg|jXU&6+3Gd{Xu>3mudwA+pBGFj78TJj`_Y{ICD5ca2s#NhzWu)*-_ z&7Y3&mt{78{c+k4YzL`rdGki$w{FwIGjYoO{4twRXA(1!pLmelPRV%fY4%*(joXoe z!%45Tvrxv)LRFtJI&Jj8rQE}uQ@(ia&V0F|{tR(@0KYQ^4S#^e%{>#(@}PRpkY#x| zDUMHtVw_HKv`hsRU(v1FPGY_Y-LsbU%_TskkhRLhDCk&^qeP#=#gSX*~gcJRFZK6g>{uUBh)tA#($4C~t88fC<)zQM*53&3-{0LY= z2FP7?h5h)+6wB_7h<|GB7xQSrB2$V=hu2 z2L->=J(o)N?UXI~*}WAf+4pWfYnAr!RAigl>qD%_bhm=GW}6R0ueTg-wixpOI;|JH zCUEZk25395w1!a^&F}Mjq2|7P$2N&uiqoft_XJ~^?GT^u{mAxQ7j?Fh+Y;sd7sTp_ zan{qQ1*KRXba!pniOKKOhjPAbGii zYgqaG3R@W_5w9e_dXY39X2?b{9VLEtM`Z`qS6QhKB~Q~SZKf@P3JlY1xOKJGr`&@d zOpWz{Qc})PGU21=-Z6e8F5p88Jc+Lz&%z@|ZAzSg^^YctkSEyb)_yU{3j2dTc>k>( zxztOC!fGDY-Kx*Q^_No=+ZXm1wquch?mD3m1iN2QQ2krQrdjX2>XiN@7r5NfY0zQg z9{7^L*T}T|7OO6IZSz)otWNJV(F>+w(Jv-cB<^iZRqW4g|7hQ}nr)KX*pg2dKb6gE zPS|I|{D--;o8`j5>VF@nV(Y7nsb;Xd8uA-7oQ+)ocYfv7|o+fVaCF@8R#I*Y{{e*CKfv|5<{H@TU7^cMS z^zPUKe8!lN%0DhYtHo!alGc9WXVZt$TWg7FMv2Fu$X=AC*K^xzKKf<%8&;=cMCA#yq_kKE?tdfUVnw>Ynne)`jsFfU$=4l?fhHhw-JduWaiQA zW^W5+pDF6RR4X-whg`8*k|`b{c^pEG+B^0PvA4B!2Nlf8tbjkVDI!5V)+LHmE}U=C zyVB}S&WP{-ph~?2p|?C(6NUD6!0$mqUMcMsw?mc8Zh?pYvw#x8K9M&RsI&KFYGv_p z&LbF)vg#SrT#n}5uqiJii`=?#R-WK~CggjQX{I1iKxF?pl9}H7I!ScXyV)<2JPTb$ zt_SJbJ@XLxT1SgGeBsOa#dN@g;`o4E_JEwxj9M)8D~?lBsLk6FiZ?NUtT3d%z8bxd z*_~YHNr7ru`g}4mr!1xWmTn2ks!kHU)yF4orX5LNL~@+b@vw-wMJfJx0Op$YF6wA| zCbC)vg_-m{&c8PFp4*Q8i*Ap(M22_eXt4$5>nr=5*@`0LSIfyIz2U9Ti%&m1lUhrB z*4ep!f`@!MWJAn<)vr#i>H62`wWdRlrPdRY07h7_YJwY-uC|Q76*9midK(x$+l(bq z{c>w}CA>~~qc*a!PMUPAHOBSP0$2W<(pMuk3+U@Y6Eiz^<-R`|TnuJ`1;<~Vr43-+ z-(NrN)sy}ld)V5{u$QvJ^Pc&w5K%|-iv-uw!4-)P+61@4Q9WGE#5KFBpft%iO1&vU z%M$a=#Iwi&7KUK5KX>JLya0>J?rIEwd_sfDut|c9Uh0L8w|&S=K+POX@C^6!+Xq}W z-oEE7nh(uY7+l+Y51Nzf2sTS_Lj~sFaAL-nwMFLV6doUAHE0bju#}2g&N_CC`?vZZ z9K?l1$BX>=zx?a^FtE<)8%Xw3`Zo7LEbDwj`7`oue#L>(=R7xX&k&wtcEL>~5xN;q>Gr2F~G`81l`4mgZiUat@J zA}9rWnXW&RW5VzHfHm|?O{4zyIm(Wq`ccT0K~mvBC-vIl>$*qHXS1bsem!zZFGthS zWj}o)$O)s7^86k?R$*2KW)XZk6w(R z;SGF(@i{vCFWz=|vgG;Mp(!vDvA6ONZytBSJ^`6~5J`$0*E7-W@)ZWSWO;_#18wEV z*bb|c>H5o#*&BcO#e}{1dikwAo9(b@G`mAB8mx{{?V&Q@=*RJs;c{4ZIRiCK#(bP$ zlecPGpH=sy>-K6ZgVX7R!vg zSUUoYBk$Lzm7S?WD4%+MarHcIv^BmlYRKIY^2wiLr)I=3_>ch=k-u09YNMi@c-Wn5 zW=|iO4Srfs@bUa4!M;GWdWb==I-aJE`p8jbNipBTTr7bay+>VjO zms_5V^a?tQ`mN}Z&DQhGI@hd9%}+JJHac&5jW|t4l`Q>hgb%DU3^1|ujsfp3n@ut) z@w9erJhSGRT)J2F;dgX;Qu`q?4wrE6#xFZYGHR!nvXuvxK zfagQJb_xF!KlLwtTG|IaIU_a(hdw>{N z!AGH-olm?kqihC0p<-S&s~Of1bogZLgDG=jS2P*(%$2rphfx)gl+$L!@k#$a-=2x z<1RLjO>j$F;)qaS>n^t>erB<9A3$LbtbaH4K!H9ONS^YNx zF?A2Om$$(x=61wo{6WJGlFH9#HPH&G@{PeLlPXVRI9v_0QzfDp!@oEBsx789uQi*O zHMZ5__k5WDzBE|7^VTjbO)YR2xgiT))lzqCLY; zY}M~P1lzAnB9hsNshHmx!SjxgJ&nFletspA`n{7KyrtaX5y7M5EcRic9Ylkb%KKXa z7CB!7h?@&4eQ=QLv&8JacwQ%Ya|s8lF_3gDtGiZZzRD6?^*b#?$m`}c{%f{5C?EJ$ zVBhxOoOiT6f`yE9w&!c(#Cemo7eEX1j^$bKed$P--Qu*V+I!@>6h7BhvHXT5<=(ln zN>a>z(XyaeL_FlzSJ@Od_USpXJ45wspl>&CepXh1H%P*3ym>FWPA4Rb>=89;u>Ae1VX_=x)vp_cjjfl^*{Jus1XWu~-*kweW0jijqnl2SX$cz_PRakZT zYHjF;61aLj;($@}o)Vby?C37%lkrXb`OCq)F^aWOZ&X9)y;T~`syBz=QluXn&wM_EPWWFD#RHWBEDiK=Rls^aT3|A(mM?`7`vTrw>Qg2lL75|7@*#3h zC)Ru3Hl#EfpZLifdpwF=JB@Tq*8AmCu9c0pO$?`#DylPm=bSzr_QYfCbzng9P&;vuhhFNE5FvD=u{tV1IcOJjSCSfa7C8oFzo!ZR96~jP%JJ$Q8B^tb^HEXVMqfN4u_-E{X|cG=rigwk*epA?(g|o9b1i=7Zmp0R;$tI+sJnP zB;H>wL>$p!vgI2sz=jM1DyqVq8-mmKT!wX8W4Xdq4c?INp(<5d77|s(Fr$A~p+nFK z*Jw~1PD017WkYrm3%yhNVR7T5qy9I7mF_q`g|-NEyi_JY7W7yN`X7i3c< zgG6fPk%p~=Q|vGmWr|gA*T9W~d_%fx)vT-_brEnL>-sZ?WKrs^TWa}uNKkO?(bX2a zSb2)+9;;LC zf|{O=`D6J;TgMV8dRP`GJbM0IG*9js?Q=F9tdB6$h0=NtwJ#r})_EqLTU+#b(W*Ru zxf}C3@^A>QTl_~592>Z?J6-p)t-)p3ap8Bm&ucWGV zhSE@`f&`5}I_|cB;s4<6t)r@3yS~vaf^{rDM6$JL`tL^WJz};k`mG_ z-QC^N-Q9hz<<|Y|?|XdD8RLxaoPQik1`2E4_dTyUe>J1A^Hw(cDj&{C;li&+O;%a& zJgjlD!6cA*dqBtT+DJoNE{ZneaA~qUT}9*dl+K;r0V6;*k2&`DulRFG>fd*{2yBY7 z08c1Cd286;XPHO@oe1Rlhw015$k4{3)S|cBjz+Uzi{Tc&7c`P9Ucd#mY8 zu_6uHO|V_QGK%4~i_$Bm*1%fIcDcZ~D!|~lE+&!$CneGg5w z1!N#eeN%`vRi#8H=8XmjVWyQ@|3_MMx46mV8xepJtbf9TU#H5jULTa+dCf=4Hi3Iz z$MhUf00+xVX@eVODeQSs)3WTtFYnW0!sOUIjAY zjUgQ31)KEXuLk6`Y~m;cgDIrfH#23mtwF3>jjNVL`fLs(R;xRj?jeX6dQP27$erW~ zCmT=-6`zxQw>n;gDCG5j3L;ek=pK5Z6atv0lLr+5U2UR2im$SjX?oTpun<3^u@0rE zHg9l>7Kwk4r_{GuYVh|W+d~>4jWn~6d&}tu0iDb%rrC9sE_)Pr$_15m8 zrv_0&b43m4ZC+nb?_D_*FO_hnU3au{yJFRQ3E8J3NI*i!>&XVxI*{;s=U!Xw! z{im=Sx%b;2;eglh5E!_vMyUHl4bB&z<%>gBP~FW%wsYy*c)U`JCc^{E(VWo=VX|w9 zS#L_%P3_%p(7lEo)ME?EvfNq{Te3~DPAc2gD1yvls{*dt*hec9ZG9x@b9!b&Zj+f; zJ2xl9@+^oAVn7CvYT&=3Rkira*E9hp|NiJMw!EkyRMKLfc#jIHQFI4+R~}#Odr_4l ztqc-AQ*2aV96rLt;doy#*|~Ir+l|9SiBmB5yK!alOQtiC1yG_9iweZF1;_#@kX$0K zBcFfmvzsLgJKJA$@}ZyzXrRhTPjKuE>fWE)7J_(z+nVC%ZOxzcL@SP^-{@-$i|><> zF0=8ZglfUJsY;x9s!7i|WKzB2zZEWWzou9eGuYe56s^&6xjcaRi z_NZT#G?^Rp1<=izHgPQOzsE0E5rWBDO^x-jG6fL_vQmn7H&Ag-(D;q40KHH9cZU0< zleb_7u3Wyyi~0;8G;jeLWv*c=*}{Mx7ml!6?RDDARI2(WODH@_-MtQvYWaoR#ON9+ zkQ-|R79$7d5jOW_vMsN7l>kM0OLl~PVRbB#_!%;~e~4}Z@9%cx`t&;fNlDq@V+RV` zhVs_^{;$-E+sCg|IeGmlRH>ToZzVgp5d@{kyX@PuLn$KCcB!5iE!bzOr&Lx0gnoU} zoFaK-!IGKtbj*_$NtDk$=#kqHA`{Y=M^1TYQWGGb(q9ve|u&4)6g>ZRF+*CW7Bu znDv9vApOzWWFbFni0!|#8uq?K+Z16~8eC?wJn2@K`Aql%N>R0(Hd9mSgsd(2KtHbf z#_^F<0&|SB(-wcGTILr&3>k`y*=T^1c2`n6y&n=5o)R+bKKU%+BD?bwWsXYSlAmR9 z0T}aO`HOet!rc0i3Av_ouzNoeRp|L7L3&hlYtcVXuX9K2GFgE(2n60!6EA zMXw{2TA4y$d|cpHy`=K;VUme@j{2rFYnXvq81fh1%*h1~{MQf6<0QNw?5?u;yVCD0 zfa~vNHZ19->;bqrFZH8)Ndbc4L1s3fpcCUXmM3W0ZLbAgR{zdm64eb`9Mo``0z6Ec9m~Ku zZ@IjoGEr*g4FdyOAZlsCymNeacd6kl#`0%FFr!%rOr7_82Fynu>E2BNE-2}2RhHq) zhc(q)h9DKdhFJM|3(7LBUMpJGHQ-2j^KMi3uk2(aLxB#;s6Q!>B5=Cl%TR*grG8tU zre(ugIMYjzsYcAJQe^$Cu0HJD;afR0rgAoW{cAu^(Hidb-?UWG36Q&$+U8Ok^E1B8 ze;sK$q0PgLx2pI$j7Dk;SY>a7v?;bP(1}&}2P6pj*HUC-IHi9vl9CH+d-AZ9E@LY+ zfy8vV*k?rsPU?HC)UMU`(jMLcxzqjGzdl~rEiLrSfL4ab2*{JoC!K8A|d4$M~H zWVJ?X?vfh5^OoqbX!nGTc$a~AIG>)aI;6ftzWVZF zu4x%YW1Wv?pvHRZ^Nt%nYUR#xH00Rfn7%&fVzd0QmSWOMNWy9D@yNVU^!;F}R8A`B zovgp}n9!b$-JdDUjsDcbz}ZVziwi&yotWR@rSo zYDGSXQ#I=erw^_SF0P3iF}cBv2%o4W;xf#B%iSCjomuH7XXh@1=}-MT1z1rIOQcoFaZV7Spmg#u?Qo6W`}<>*hI zH;K;GgVo%@DXcVwx8>V(*8KznUTvZwwQD5)R3|$#JL3cw&>h=W%)SD@#b7IwDkaw~ zH6#-pemk#MP3$adkJEUY_7?5aI=`Ym)O)!naSx7F07_AuH|b?VeDz$& zXi(V%P4A`FR$uJclH{twNUwTBzscWzRVVz z#HMn?W7w{iz7q=ZB)wSJ*Fk_>>_pH?<3^tn^blOTqAQPMP3ZNQncibU8qD<`1}3i7 z8m=ERp7T$}RuQLP`PLNtA{TWL+%9{@U<;Bm4?!7L`Pjo{Hv?B9*^D;xtA_=(c}j@?eW^VLQ;T-)V@Q+rdp#M$EpEikWLzbZH&L6m z&4$`uvXsfpsr(LC8GQ(L7cN9=E-7V{MJqhaoko|>BvkP5Yt1IAA^D@}!s8WkhPMM7 z%VBKhWNnpG7X(BFA6H5&BbBw>R*u)XX2J*bW?rmQzIp#6wNT&T9M6WV{Wu$~wGIa6 zzM0@FerwO7$~Cku@v~i!ATU#Kwu>9iIfZ+v5TX?7nfD&5s?`GQ#+dz1#_{|hy^OA_Cj2(eLloBax zHpzEu=KjH_LZe3-ZoqB1sA9ZdDM5YxI7ZO07RP}C4AN(Lc*YF}KoG20Z0jPkw4)rS z8L%7CiZ)aiy{H+$+RHxlS)%%MvdXZkDB09&9tm|}+|+PnBluVcQ<%s3Gq*)tszS89 zXG%U8$G1XT*PCxJdKm)AyjEk$1TWNfKOH?j+kcN9rA?W^9)IIfCVu$M^7h6>{pv=M z>&NEVXlzZYp0_R8d?hV@Fw!>s6_2@AK2Hq$r)|)>fo~gaJ?!0@;HplDzjCM*5xho3 z11WxEu_{ia8l~^(#JoLB;Zh_-W%W>|k3J0LqwZd9v$@=*DJDrzsl|R_-x{O-ZKjPn zz>ok*87zX+dzQWUHUG2%WhO+@FmQDo1Sr^>%BE@y^XPvTG)xE}IWCnDyg(iYrVCY_ z`Kb;w;5`pCR6<*ixHqb!QDXYOhAlzB;7c{vj%Io)nJ&ORS027Ul+=&&urrNao{M)J z+o{QMm_XwVK9N)1t2J0iWdNdbSuWo(Y%8jjXG5Oe;W01W%CHl9SAnNj<0{&k}8nypnKl5NYKYjF0K9ID7E;+db~|9QrZ@9XgCod zS#XPqwf1fsOLk4)y^1~zT>g}ykO~KxgDGn4v)@BV$i%a)MzvZ|pGf?G#p_F3WM;fH z>F@zrs>xE<_bkr};au#u9Owg_G}NE%g-)T2x~XYZ>VL)M&7qo@PI-tVN_^}IF%iC$ zWPF+X^^4Y5XTBIglgew(*L_W|hIg5)lJt5QYFLp(1>5TQ7fPtv8!7R*2-KYmjcS0> zWZqVn%+?`@=uVY`PT2y86;DA~c1AWU&`Edk?qv*g`RY--S8w!Uuui;+?8o=*B-<8o zs!I}+x5ES_=f>$Vqpoqkr~{WC+|`MpwMImjAfBOhE1Re4NTL%L_U`?tP&T*t-sbPg z%MmZ@N_9ZvI)N=%w!TPgbH>khkH2jFu*;1Bsqy{%ISTHJ$CQ6<4Af-XxasPu6@Lqq z8+Ii<=165zwd&g1b=fr8S{p^Dya#>Qu1%0|^2BAV2o-tqZ z1PB)MoYP~HguvRVGNlBU6LtS@?+X!kqbULyo@ada3w{T_VG@@Wr^rW};LaLx>6v3~ z(Sxm~MLMLczY(bVPGm|5N>e9l0vo3DaR~}$K1Dm@@Se_4+*x1iX~9vz8EZU0N>26{ zj9qDv8?ZJ&Cs5pg(yHWw2x~y-=^eS)63%R;vA-yBrVPDCs1F^; z@$H1K^-D^=hTgc0b(-4mu_BMT8?sLuvktBi+ssXE5xl0(@uHIod-|p=h<3GCdrwCx zZ_0$z&NidJ0bEV>4}|#u0#l0e+LITvvz?b#>mw)#(%3%!;nnihT$$sYUW?x{Ed=_L zCXQ;y2t7FsDp>kt2TMyT`|`0cl-o$L38ja~K&r!!UErc7$$Rpe>7@$|*!EJ2=oH`d zrfUvzJ#tyS7r<34qU~bZy7+E2t1ZSgzJ%x-`SGTA#!n#wce5~IFo^Q6D*CQ3PM8qc zCA?PzUuw83l=*V@@ccWVfm`3wSfDd0UJ5=nFQ>OKZoz_0WM@%SVmgr+pPz}X437A=3}zA&xA}NSYO;* zC|58q0hr5e%S^gkI8H9y-xEVznUZp|$a+wPOnO8f*F>!*dVYcV^=!cPAQf3LOIfPq z!yQyad=}T)MZ}d`Q7jJxe6@FXR{KQ5)5w{_d1q179|m|*Vkrw84=aI9JM)Nh^6`}& z1RAAT1v<>|F`gT$zV$s<78O>}WTWr13!J$CvqyGqwqo~WqmlHAFi?|JDOGYlVi;wp zjled<^PQMofdKp_NiF`)nm>9Yj`Ny-+crK_rz88_{__S>{P|SLgxBVN(b@!->-@DB zIJ*vbNeJcB^shMC%wgr?8nBwFFkWv$zEPYxA?rnP-Z3?(A&on!Eiw^>E4~SWmC|K- zlyIck{U7Yv%ObL$PrMQt0yrOF-9CFS=kR;+=`z={6a1xHwxBD9s9u7=DU>726YQ$M zZTehchKy^F8o@Rx?^SM8i9I7gxG&%WK-P^+;FuVT-&YQPyX`2iz%QA$2vkTvzOSPi zOk7FM`^z-?>ih?&2IQi9T8QwQsnop6S zRF3aKeriGlvu1D6iMMC?P(XY`q61ytglU^zft3cJq8ho%Y6kMcb2RE8n$bdKq2?ai5Bd`L=~3~SqX;>YiJ?v3Ivb-U;1d36d(UV9)>=lf7GIc>7OQL2 z`2FdpRZfA#23@hpH~CSe36na7^bLo|SNQM^3n6Swr1m?(#JoWg+H$c%O0CtTRNXrx z#j)1ggHkPfEZznx{ivkUj-k-3?m zLaEV^;yv^=!?!Ob)E3vrgqQfrPLtPo3*$XBt3b2#Cd?dkQOs1dd`x(-1i{<3%lxMvm_mbWC$lB7>O1C%^8 zD?j`&j@HETkYlX0*<9MMUFl-Olsv@G%{|52o-DyrG4b>C)1Rn8V;i-B($L#9FYz&p0T5qCVQ$rA!6M2f<9FjYR$4krr zq0!5sm$5dZlAl&PO3gGf(G75jPG4`07e?OxDA`TZnO{)lz~X86;&ik&ph7rDMQuX%GqSe(YU|K5hAl_W zzKv&xxZ054eyt!2PERk6!@KE8(7Nl*Il=k*YGO{$7oe4-1d1%~l#y>QHLGlkc#a!v z7D=@mJ=mnL&h{fC<8}Df1E@faSY1$M(NI%e)(u2)Nz)+ZcRNX?m27T#)=csalH&cR zhNu1$fN04cSIa*{IuLFA>zA;@-V%@!xUaQ^0kC`3pU9+eXOn6y_grn;)Cl3Rz3tXG zZQvK~vNu~*`meAt$lP3y0%cJl?{Hkddm&H`&9~`n9o#1Gr?A>`X_h*tmFSQgZ3(~s zRp*$Hpay7Lt-j*4l}(K}NJd+%RPYeBkmo6?nhfd-Dh#j7lP(5sJ>l6hJZY-}JkNIn zoW`}CsWsD zp=3M2xNjGA-Qat{y-dnpb-j?{Cq>QP;=1Rc@z8ipS^q?i%wA!;a4 zdc2Qp>Go;CKs?#qKb!v%V8wq?38TrzOQ`z`eLZoFh73!;c#AWSt3N3#v|n9l@rPdG zs@hwpqe8Lr*peFf@F9CXBUM#BG0La=^Yyvt#-l2 z*ck(AY$8>iFBu%B+T8bArz>ru;_?X(r4~FaPkS|OX7%oL15gEhpij}Hfz(6Mpi8B6 zg>{NpZ7PaUg;9^}T)p<}O*XA1_hgp;lWz9(MK{4RvmdyOaiUHISOrpx&%$`j9yA2? z!|(_oIsXbDSYf&R6bIS%{SX1!Jw3{Y0#>otwN1zHjPIV2m4js2vR>L{UM|CBf z_=#WTKFk~CPudZw(R)OS4jr$Lh&>_pr0dl<`(vUZR%{*~Cob7#bLx%OSTiEd`nBl|PIm>`KIc{H2DZG0 z-_6Iv;9?7^g@*v3CtTE1TSaPr>tK7}Q`AS1K5`%JTdi8h5zY>C=in0l=>?zb_|FOC z0rj0bdvQ~Mq-QzfY0zMEdMRjz}j3?P4br@ApNX|-vMSqP3BaBbS}}e3a&Qv0T;ALnw(XC*l@jz z7ne}Oo=_;|alSLZwZ0oc(S5_(GPZ(PiAQ*O)}P-HJ^ObBtqIcut59P)}Snkz8(puij@i3$-2TBR4&C=~i@>{U#%N$uYN2Ez9 z)6!;B{kvJLD(43gZNXPZ76e+55D9k-dPmZW@zOf;*T$k6G(oxdtM( zJw-ZQm6&bEhyM!M?fF7Y{VZtzU92nA6aSk|3y`EuzOlYWT-`%~_G4@nXs1b|XQMk# z_9rZPr4d+hxPTUf;(a^d__P93$gcx#FuHW_Sbp-71EyoPCh4q&Ydm;#Ql7zr8SdE< z*`w(;^4t)xOF(@cpZPWOT}1SfUKfXgdU8}1Yw!3Mg<@H;Lo9dJQRSVNA%Z#>1nL01 zH`5jgVjs%YKF!qcJ1KH7Cbh|yL~71!Q+s?r6m%x{p&ziJF5$q_XO~e>d{Oq z-gDEQCuLO1uakslHc`c=P!c&@{B#<8caExckz0?PE6M$z`vF0uh3mjj%uPEMJcw_T z=)rzVdXh533!wJr@_1r77EA5CWa0?|uEVdsfAS+eQ6*7WilmE;}D8RK#>IWS$eGJ0j%EZQ{3b z8DlcM%1J$bZRTno490MmP~K)Ctm}FRQmQ!(lzsZg`wGkaj;RSQ?5(mxz=zzy5{nT{ zUFrEk*tbS{U3zb6_%FBG=q6D)@JK4#UdI#WaHjPUUXa}(=ACos+1Z+{(=}5s!@U3h=mg7L@pWnO}|n>U|Tt8z()AKC887~f{! zF!=oTs!`^F;BfRk813xiD3y33d)7&#)wKX?k#kB4LK0PD#pX2iI~13dagMU5f0V`W z79l{eIeM?Q^$x!{lTNE`Ivf>3E#AKGPfB;!c3Zt?l3l=hH{CpEfi6HDD2NOyP*nAF z1y$`T$7ze;A+@cgtTfG4%+*7dRwq3|JZ2zR3C&;Q=d&09D7JG)Hg7q8m^eby?|SV3VzUeGj&?`H;D?^^rTD_>N z0_PF~wm!#jTT}x{1yw4=_AP)n;ql324Ow$I`>q9_4XdHhy)978x>Mm$)@lZs%>n zz#Oc}<6Yr)e-`Fa-RN}?SCf5-hZ<^)3hue636k#n+x*t0<8OK!;L^dz87np1TV0;+ zf?Qkh0R^>lui~tm%Ocl#&-6!i3syu>sjU(Zbzw1^P`-|?QO6*rN`cFOH-Ms?)vPAv zo8YGQuv11>ztqT`1(5PN`@ACbD%V-%(acz;Lqf@R8;IKLHUp7x(S?hm%x$_bNu6NE z^vHl0(4$62GQD&P)D1`k9hXRQ>q24biyepKts=m{E-I}9j+7WAT?pmT2PP}``I0f68{%EWM848ka zjGTATu!}w~kL0}2M6O3AU?kkLd*#AWm%qDQ3s1h(wKUDS~d15P2iX* zn>&95)3I=dp1aDqeLH!H9l(Mh?fD)}t~X?=Qg8>g|^p`3oqnZ=!_>p{~enz@INq&sM$0=RkXT0Cu@{ z0asgH6MxARp;dRF|6pV3uC1~51f`cL(BfNg(ED?Q{Rn1u{VG|?bn zOKtSg6@!F=6>$8gbfYppl!=msAsB*BUb|kk2eshynolV&JV4R~{+H!)uG|_pB=P

&7u;yr9M3uxH=<2rkhSM(tTM0<- z86>PiN{_bRU*Mw+JYwIf^tEjRYMt^?nmpBd9l^A>+ZS1KYNk+e`q25GYChh{08;lt zij{^>w?wF~2a(}jIqo`RwTb!=x2o~m-Bbh5vs^+Txi${1G!27NT8Id~LyXyAu<+Ff zP5DH=lpWrHh5$f*TJ;I0)BAD@e@@`dTZeKW(n;=B>vQB7Uytb>ozC8d03SfsK5_z4 zV8y*fZYmP3Y5{}pRW53k- zj^+@ohi?`G?dauC;Ihnv+;_9EUexPS2lVmg>`UhR56eM{CE&d8JHPCWtold`*Jj0; zz_i_q`;gMPd5>~1$4Ji!Cvo*XltO=yw|4*)!hi2*mkG=KY!eCupknSYa4V~^=-$NS zc*t^-0h98ps>c*m_)SfgOw8pMn?Fj8XzwB(sdQZ9`IjR@VTqwN0Vdxy(rt_t>;Wlg zAJ1cutelNs#1|SXDZWdcUi#RRRPZ3u@n$HO6=Kc%_6R9`31Lr?FE@#KWMELlzuRrZ^ARQpP>=d>J+;;OKKsTj<{jt5gp#^1Eq*(z5c@! zi1i32iku0?g|9f&{cYHOYV@-euL1CDTX01UvQG5v6@uR@{}-bGnXn|R8XF81d5X2x zU+8b}$N-QhX^zKP*e{s7U>&}@_p`rHzXRWq(f0UOsmSKnM`3us9^1c=1@>WD9nkIu zXcs)U*wjS2C%Y=You;sxFggxI7X4mXES zUMj1nv)UUCe_7a~3LqUWg9`?^f(u0ft76ZN?NG(;VTP!(#AZ965nzMqD(CK|@c75p z9=wMk+Um{X58PU)97!uZDNL81mzvUUp2Hcu`4k-IrLs%zR&8KfX)#b#`>7m^4AK#d zChFg=b=IjERJof`BEe-O*h~t3LUigA>$H)X9$}zFqKixxWj#+J1V!rTSho?0D0SJS zOV<}_YAnLS#a`^56*`${ccY$Ci*+c}mE8FLbgu1F`jmEMHR zh2z3|l=$%K@;d-lICxbdtr{^c9nETs98B@>b78Iq01e`6tvUQ10@hU*gbz6Zayxl;AOOk^myx|BeSx#KI-1qvtpU-fIN@{%^d@ z%HyOtMrec}q%=n@EqSl$a;0xf+{XaLNmIb>07%Ztv^R!LGFVAaB`{oT6c(C&50~8M zVAu310~`o(jI>x3!!M3x(3HmSP9#ms3nmczJ*EGBa{)qxZL^U`pm=Aps;Q~b7|8Qr z+XvujGRX1Y+^-J#OG^Ue{}3@b54DzfNzxYE?5qsrXB!PYL&zcw~fBNh3}9zB_Q%7|sX)T{J-#DCv$Z7!N@+me4^78%xT37y-g=^cO>RJ{4| zB^v_dW9sb7U;c|HMNWoORh$l;+<0RzgO@^M&{Kxs1d8;tKL z|8KBKrC)apU?5Y0!_N3?2Z%8Uj|TNU!I$_Yt7a{8EU)?gxVtszK@`iMw_{!_P%&v) z?ZLmT<<&@Vy)bHMOanF|b$)ccXoIcNzq!C*V)v@LYdWR$-VlO-mM_{n!a6K-%{DoI zbH}?DRWzm1zhTrlWPlhvABR%-&=k0%y#D@ffaY!YXEJK)WCX|w!e*7-dzC010mcy! z{%=M(S+=W8sYVmjvT#!llj1qdg)rIO*(4%c$XMzKiy06KuKX~cGSWq>JtLrHG!0LF z@#f<6t$ZZN)V5!)v)y)LP%AITyJ`7$90tM%HmCGBoVUMl>Rzca^=b#d@3{xeB~aiX z@e{W;p#jxIEdaXwupA7Y?R&bPYO*j?u~JcmpTjVn+@6n9@W{7Uhry}R_d6XYNBc;5 zNe+w)u=l#y>Li2WzV=DiwpL97x$+npev~IgDyD7R`DEKk=|mqG4vi-5)|gF3^Ik$g zm|Y~`Y1RiigU_>-V-BK5=r!LJ+3(}5^HS)O=pLq?{?yd{e z0RHz_{;zT(Fb^x*~m(h6)fMx;Cm$QK9&(j@lr*J2|T- z<`7T)aNT%}F6Y&Cq4g#i6&%zi3fQA00U7Z6kb+YHnk0O4CU!tL`iR2IyV(D|a#EA< zHK~X_kaJQ%YWUgVPxlvEijARb^F3u3UEW=)83kZ}VLPyFJAUZrgFG&9n`LFHt4jcO zM46Z(yxb*n*8(-LW7IUh%Hayn{|pD-W@k`L=w?YtMI3BySlZ^G7R;&w!I{drs$D<& z+j>MprX6umDy>$7xZe*p78Sr$^+a4xhN%V$uv7F;wj8p0F}7zzYR!*NGPKRLeQ{b0 zX5vn(o2|%*zK6qk`XTR7mor8(b*B0*3LebV-PRX$b1T3+mTB(x20-W5xw|Xu1`h$G ziQDDl9G*)6?Gqv;Qw;GT7pmr6NLHRAZ8K>$dvhq2zmwvsTF@$fX0u6>0QM6yLPCkw zXxcy7JQToel1t#$GOpfH_lg-CdqK|c9<*J&+A9SRikxKKi}HCWA?E^<7k_cHi&J&L)n+_Rrmnrn5XZAJ%{&T;Gj0 zKk{wI0>VL-?l~XxstndqOH?kW*$-I;t?G=WuIQIxbW&6xgCP1oy*wiX1wXP0fl3HP z6-%FBRt#&fM221}hST%PdXv6^ju&j`Eo43al;)qRHb6DXC!qFD8-Q?3XpP~bUdNkY z$U&*?T8#G)#=uw6;b^ul=vJ&$mRfXCx2ymR=~VT33S|~wDzjH9=LNhq<1fz9 zIP@Ke!ci>HxkKALUTITRk5jw@jK7kIUBLMo9jVNq)Y&2v4UZoIw0h=vg?4?mQa~DP zbF-dqlB&1*euKniw#dLr3J~?mxv$hcHEW%LU!2J(O@iEJXBeW6;&@VV_H!*ca22AP zsPYeU4Mp`3=X@u$Dt|u&L3-I%pmUJ?q7S4x2Ht39GRwy91Kl*r&my*BbN1wd>E>fe z>?>ebqrwsRbh19A1lCW}V3G-hfP4`RD%RnV8V!Q=ff|2_5sjKI68J?} z2Yvf&|30VwyNrj-bsXe5oXuReOrn3AMa1B3vBrn#rl6tGZq0K?!COdIIdUT>_v^BwWwtE0@^RaHUufLy4LF z#Ch|Gje-*&Q_{**Gs->SRW^byr)pS=2|s$oGwHZpGH86$=w#pBR_Tuh38}Nv$$f&Z zU#ELan3prq>R@HKE|>C0fm6LZxVa-0v1k z1P)si{ErecSnvaK69<%VsMZCV5%bwYv+u^FMsqQ-)#@7&nR7gVa0m*szyX~Qma46U z2~{m80uz#GMI}YcOF<;_p>Jtu5BmFE&*u(r zhkE)O06*nu1sf*3xHpFDI`;KU4j<>6CBk6#Yj`S@Ax;(GYeUjix+C&|`T+K2F zAeWcaf{A=C8^3?YB?3`gD6lFfBZ#)1e(%JxQeFLB65-}c+ z;V7CxWDB*sEu0K#!P7g21RC!;s;jZ?LU8pftqg;_jnXU!l4%Fs=5!*(>)xw5I@k^3 z!k}aIxHjxJ0j}o97Bv{bXsy1zbHDnX6B^62J?zX^f=>k&W%ewdHb@>JlMrh zEpy#OUH;gITmHEOsu%@OQd2uc)GKxmXL2!fKx2{sY0z0I2Tt!uaVvmv$?jU`Xyk`( zO%qUwzG8PPjbPC1WQajQ-TjGqsa~1GGeg`FrZmh?aFCRyNSI$Yg!TDFW|M}alk|hI zVbdL}CVEq24#OP*BEAi?wkyIeF*Fl{@&2|B$Ws_gL1fsi`RyI*Iy-soM0z@tNpUrp z!nuT*sbFzRF^?_$XtOvLKX|0&fzW`H&jf6*%O8Hahp7}5arAvpFYaXb^qa)wr+N5i z_h;gn?*~?l?0|M7XQNWjr+9>X_~LAg(;MKB3`k?7k;1ujDTIaOyuQ3~a-eKL-Kf0k zeJ6wDUJnr4C4d`Q0%Ql4kVUvHMPoFS8fuu}Ya&C+k)Cl_J-|l5s-xDrp9iC8C?334=9O%8EqC z<$T}QlP%0(Qa1t6ZZlpFDF|;z(GD&^Nex3s*~t-Z!B+2$1VO8d99a4HeWeKWSf|&1 zg*N9027G!`8V{LVysX1m&0hHe;wJck;HTTux?7MEEsV00FS7AS#y6uda36UdwOPtH z@RGyfK;O?>J^0#(!)5yi2<0k2F$}PX2cLtx0f{y%p*&Vd!ea-;p3KkmoNr~xcP__X zUS1(%nqV{w683yv{f|v{aK*2Pyx)B3FYg~k7A!F@>y$k| z`1iQmD*gWvF}4FH40kI7b!|M+|V^B$hk!EV6y z{}FTef4l*!g?_hYf4))MVG1pN%|H3Pw1C-bv2E%PeJ7x|uts3Hh$Bv)$Nmwa{wBTt zmw$j21DkWwW&Yn)^<+oP!;63Xn16gh6%IQ#tQn9jSDVy+y;q+>@Iz7ZoEVT$g2=7@ zGYtJ}{t6LM2B_zA?$t?CZV%^C$e%Lg%+3*uD7= zIr0x#|L+$*vfx&z7)tw-motsx;bYhCfAuB*{%l{wgLnR-#@oT=-(UUj*P&9dhoJKR zr-#7(A!M#k_%_1r=3D{>Qvki*D7Ay!>CSZc<>_vADM+HwNO0W9lqiZf#YKMl=qD(e z@;4~@f9_#)ZJDXLjGd}*lEA4wONLG7`2sIk20$%lsj}S;ed>E(3Rw1%e=G}*j#*uu zAv36atFH7qS|9A#(bORC*z5>dH)yDVw_EDJ19AfPsVC%l{NR%xfQJ#f`QrcdbCFmG z(vd*8<}}^qsT-|fUwrXki~ngr1oM7Y1cTBmSZpQR1FEm|4I_DzB7mIBU7R7J4kUhL zkHdOdSl$YYwQuPhQPChbfIJ`6&tyr!g;#&LM(HjIyTd>D{GWabs^9F+*0D8t1&65@ zuR69&+=Y3tSv0td5hW_D)DWd3=~8SoN3v8x)w$BuSNCA~+_t+DOasZ{;ULgY8iZU5 zEReT^w-xrtlYqxIxse?_K(MEn&UcR#{IcY{D^!0jRzF)r1!;xDCx5Y_OYjod=l#JxDoO`R2wa83;kVbdmMTGH*QzbT3{Z;Krd22LFzd3) znBZm2x?+j3!7}e{4cB{UKq9+T{LW;t*kCGh$vwSq4#Ppgda?0@pe8@{gz;~%5-p1} z&krzQq4(Y5{~03w{U|D+fbU9(NLaD?1GN0Fy7crOtl($D3Vs{)$%Ichekvb0Erc94mF;1Y*6>#JT<(Ii!-+388`aXweqo^hKELrM*T239wA`6;fI0Gy)~Cf199D?V z&%za!ug?7$&EkJNq80aB0`|tb_RJx}C9sH<^F#mh^Zhmr##;5ER+x$-I{`%B!e;NB z($+v?iJ5nkKm5v^Y`1?OBxb#?v(N+%4B(i&vCp+; zFdEK)1{#(Dg31!U9~*=*XLU(7)&Ku#TE zO0fBKB`q7M*GoO&8phRHnw?QBi=l}0q|A1nkn%5gs(do{ z!yWwEM66mn>v|~{E5mlGU(kt#qgPmdWE>7qdv}q$-7tVU z{C#1b&vD5Fhy=gFrbVII@9HgIUB53*`zkGM7gEA82FsR)S6I!2qpc4~`6?RZekPsd zVR8?^OLAaT&Z6_i^hSEo8bC(b6Z>f3O-&5|PogU^hD1Z{P+)62+H+!t;EcK8pTLgr zh)k}>cGXa&L#=K=x@cOcbA)eo+0Ff9jsaSDq zWKe7V?Oz^R-w3-{k)Q=x#wB0gDkioCk^bnYzvCjffQU)N3gm__T$s zW5;deZj#H4kCynw)|QrJIUo12dG zMD@l%622m^`8Ux%0(BqZDPg4;F%G@7DKZPtXrzv1UQWY9U{oG(d=7;3U##}T(?+6s zjbx35T_e^i8aWVvDpK8;oRg#G(;9sG-QYAS-NObc-tGa9zTcz`;rkL%VWdXo0k+pNil{!*Pwinhw;4PAzmWo^=rNIOoAg zmXbED`$KxUjbY>0vyXDl!Mh(3vo8gCRt@Fc@vKOkO-CtO1RmB{!!Z~(20UsFigH5j zguk-@hQ_qXIX~s5up*(P-sZr;+tZGsDEqr_l0l$# zyOM%nTG;f>@ypB?DS5OzF@Vwp;cHqg)8!UQS{;#njCo+;<-y5XXc$<`iFX2e*mg|e ztE4NehPU*%w>Mp&TaOT%5Dc^;TWg&v-10QYl@QJH?sIAD_v9L&9-sh?LG(+pT7CgwE{; z+D^e)1ho?nB-Z9sSPYjN1b4$|OBAm)v2Cz7tx-cN1E=9v5<509) z7HlX1&z$AaS{WnSVu`r_H`Qw3MY&9JsVW7C0i_>j&NEn#?&}Jxr;bNkddpl0I&c3v zQ+TwKxjr<@_30@Ayl2^M&QBfk2cQ`WVM<`927TLo?EC-Bt^do5`uni#F#5_%hy8!I zMF0I70vokRDPW^k^&84Td%Fc(On)xNWGZnKh8JzwE&l5boprE)rs;3-2hkwWT}Z96 zoxkUc&0wXO6W$CkB*BpHgH2HyBw^d#sSRDh_G}7j3MvFh#$k#|7ma$6zPyS!5TU_E zknkP8YW!+rA`~UyAPO(>HZ847xd2{?DcX$!B&2bG%Vf36qObmAqD0SMzddBe@ReXA zIY>F3>2UiwF3>$4HXv98iT^nH_|YJ1Xji2ffIAFEg9fFItKA6yP zE1Cs6-NFup*k`I$RCel_e^M#H>;oX~a&GNiWz$Vn7JZ3tX}w zhspe=ffN6AADL#FT|QZ-`E4|}dd6q@pP&BL@*!~a)yIIxs`vF3Iv5_c75`%g{a=qU z1z3Zc(Cxaa^5;qTclY@-({YOLXX|OW<%voVnU>VD%Vs011U5~^0M)d>=~l5Sc=zGV zlmpFnv!Q@*d}Z-%6%YZ6$;#?BuhMPhVmQw=m-98t+`-0JiSxF<4;7B$Gl6HR6z$PE zEja>I%F38K-~i5iNA3%f*uizyX91sETb%}uk{&L)?ajGg zU7ya9jos(BHFW^O7J)|l1*tgziPLIT8!oADmudFl3j7BVaBoZei>L8sGrw-w6GX6U zzG?Q^Khqwjc13`3+&W_KhFW~@w;dfw!eM&;)wU$oK*kVhDIbiR^CGz)2=Cf!oG5p_ zk`MR`9uBBiBh|s+s31QW9HrYj18SYRiQ0|&cY9wjgf&yUxL=(wg$KWU#Wv1wx6TTd z>Z%%1$V%<#m;sAy6&&`x*F6tL3;@U7nRp#3aIhF$7U4GHhnep@1q-NgwsUNEf+Q+G6Y2; zrXa#L1A#cWG2p&HIm|cTn^^Y{hKYJ0Yey(&DoS73?<3$_&NVV28G|Xpbf#K7@+&IT z+Fxn8vzE>uzgNX*>-Gv8UbD_s%yxT*nt)9!4D{VHU|oc=Q!pt%uq6`Z`=JF>thENl z9!TdotA^LsIW|<1=hV9i0$a-bwy@K=0R0`D55Nx}!bRXF#(;DXjr(WZFr+>lfF?;2 zDYM13aY`WXDt6@aFCISkFk|WbO_!?COmbiwt&7zelT^r@Loj=S2i6(LXh{?A;<4Q8 z*TwrdizyLE@=SncFA=+b%6d$VdJn+0A6}feJ&VVKfqwPjGCGBYwYjq&8&Lily@O7U zzaa6~Q#kK{67xEuL^+Um>{kTm=;lQ3pJ_f-{&nc&&5v&H;*lsyBUCS<><4v+^~u3(*UVng5cKj53xh!f%rvunEoP{81V?3 z{_}5pKLci5#a>NLw}u8w7uLT@NP+$}@#7oH*K5EE94Bbk+gWyW?WqW!eH*P@N0te< zIi}^))!EyLDja*#tkYW>1Am{VCnfqFte0BK86KiE18--?JVIRlFV4O)EXuZPml#TF z=!T)Bl$LHJq@-IK0cmNF?rxFpZloMKB&EAS8l*vBsD1N1@3;4l{q8^ej~s_^0K;6@ zy4O0_8PRcX2qdU!=kO z@Ywm)I(98&-?|zBYg>^?Q2e|T^Vjmb@ye&6bl&%!%)e==Q8PWuM!D*pcI_5AZZAZh zgW3li3Yp*R0eQ-tt=9b?&$>@@FuZQRyBzX-I-eZA+|8a4{hLEBD+6?)1)9~3>|rux zBGo}T+lG||fFB}h&})rVPYhma*=xRFDuxhjGLyCfAvao(v7^YROTHebWLu;ssSpX& z01H}ozJSj1spCwQteD60NoNNd5VacPrbSuCdt!L$P8|4`AbyEWCVw>XETi8FQE;@K zsO$*;>8IH(7# zjukSvQ$t#Lmy_;~%BmTCAHNjwiM;!Q+KEa`=Hc`7fPLA6EweYi(c`@HOXmlZ8IYK< zmm7Mn*8b(T#Iu1J#HJtjTCZ^;sg!ESA)Y3)8tKoTsJ6(%e?9 zMNND&I-ZEG5DqZ#>yNMJI^W+ozJK!(m!~6e?dXJw&B6p^LI%9gKWKjiLEOFsC^dM# z-JfmXaygh+n$7p}^uNwVK%#W5>`+LZ1hGjr*{$TgTKG)n(P3~#zkz5139k-4=S#Ljem$Z!LT)TcR|6Gz?1eHqA^%sOXI33Il^u7lVYgH8PI8R2C?rMV5 z;bg$Mh8CP_5sEez$|WZNNtm>vHsv?UsN#3nPWzTzUirRGKuw6Rv~B%HrL#li5PN z2D_C6G5i-Py-3u1fE8B#3rbZidiPgI*b1cI4yfLcybz7B-{TWOKd@zGTwU z-l4|_0s8EKdPvQKI1rQcp3Ac^X#R`ZlS+f+@%rsmCSj2HKmNUh?$9;(a z5PXY}&_z=+ye@#%K_XQX@=0iFE}5TjxddFL1UutP88%u z(%#g1TP#6c1clew(~S7dPQ_m8_ifa8kmNi38Vo98Yh5P{?b*9kwG&uzqHp5goN~#& zxLhqv^Eki3P5^`6m*328Y7B{JhOB461t?N|5;;p!x%{(lDoyO4+ao<5bUi{xt%f{| z_NUW$$~IYfjivG`=<~5ODzjm2+47%m`8N0C$_KmTl!}Z{oG=%l>TF?g-~}w70T4IC zBe(r*Qb;?m?CgbW2Yfb%(u%%+MItuwr+K^tA+ znYj>%y*Ia)z>3#Nn>2;H@t2#9V3}q#@l)9=n+L`dLBQlG-(0?fy{a4~163RdzAQjM ziX`Uiq16EHup*naVKpoSP~|g~qX&a8eV?v0!LGiBcPqS;odaQ8V)Hm~3p?M(2uZJ`Cr8h? zK90V;ud-)I<+8|YIff3K2@zmWqpr#kvPL{A@&Y0Dm-D8DOdp`m&bQ}dmz%MoxIFqn z?$jV--Xp*J^(%76YkFhIvuYo`Nl{$rm zg5AA$V2xmF0+1A?x+b!U_N$DXip2jW#4r8qCL>m~Fsm(3XoQ|8VfhYEH0L@bhCKu? zs6@3J>rYyZF=D(<3Nq#a5Qr^##W?4{H$YTH6xP!VBm_==t5qS>1j4~}-91MrHxFtE zyee$yCHpyb_>te%l5Utsb#pM_rL~_1=v83phb6b{UxLe{E=&ZdQK7spq;B2Yz&*1? z6L)Wd9v-)lFB#UobxgbQnQl?534*kuKnHuUh2PF=za{i98j<-60+k_(^A~$@ z&Ma`&JDMK-L0Eu#Ae{a4`7{%=9_y#ja<5|!F9-Muq`6>qLIcyCkxWxJ5)zb2)B)PK z(nJQ;Oo0gu-QNAJw2|~#)v64BoFhhWSi9*TDEm>*AUCnyK`)k!<>p49*LJ98f44Z@ zUNexa5R>Iyl%=vLpYDP?9IEzmV(Pt&M~_N!?@MagYO=W{s7KpTL8-^ID#_|AW zmR`Q3KrFgMoC}H$@Xff@n+m}`PD?e8T+dGd<|H35dK5==_Gf04Ofw=T{ zYflbA08B&A6QhKK@_JLA5!4!`(!66PF-c_Lphhe+$q}a%ThJ)bAmz)O!R;s{{Ge`I zTv6nHcsCPcn=Z7Fo|j;RDt;QmV`=0&)qt3J<6VuR-jU)wKV#BEJb;q;a$N1b^b%T2 z^3zS?kLi31s^?5d^ioTeldNx10pvy?6Zq$DA#muqTTmzkoOfAPpjX)D0EmEJo&BZJ z2&chzZX!&Vc{%7S0AXZ3K?tEhb`|#|;jgD8X7$sZJool_>e3H)j3zkDes@s0-}JqT zHF!FJgd^&e=$DS{;~4|#(_CDtaP_QtIuHS~YKG4v|0lQPYlf&o*qE?s{V=P;-l_3B zI&sodP4lJJE99&Fm7XeDS;y#fp5mGExq-T#5Uiq)Y;QOY&L%%*a+}Rn1IZv@;)XZ} zFI0)lpK?MkMa~VxlzqZ{48eAnv3>4cX`JSynC@;hzY-bT>=v7;55#>h_c+P`I3uc` z>QzMD#}Si^P1^H4j!moH0mk3DjFbV&Iw@7cs4WO$4i5n2{Zspk?FuydKzK=Pr;7?` ziJH#1m^YvM2guKo0|9^EH#Qtxiff8YY8&I=(2t1ghJ^U#OQeNFA ztaH3gN$Iuc30%XpafT0+dT7FF!y>>+1_!N8J_4K*6<|a}B%N!rxf1YxaGBomXtt{f z$^qE*;nv_4kKN3&g{+txVHxfz2;JL&&>ZDE+)w=P#a4C{40cLWUILD#J&?lr?a+9^ z$7fC!>%tpWeOnB5?Bnu3{1>Tr_or7&Fo}F*XF!^ff0WIZ_I@5do!*!h2x>PYJzsTLc=r;7#5)U^ z*m3fd{ERt~Ct`~*?g8sZXQbnViK5bhHqYk8yk^SmnE)tDy)>ci^=dLphw{Yl!f1Jv ziwaDl+wSHYTMS?e5HMTyflY5+8WkF?sBoF`ms1+eN-4y;vu&NQ$~yRaR#46q9w{{= z`APD|H`-iqz*paf00XbKXh)Cvk`(WXD92HF>2+6H;H|j^o|iyPE}8}it19Jls|7MI z@N)n+KxNi0ld(AJz#AM0$p^sP{12$+7bGReXrnvW^5;2y5%#sw`_YW6coq9$ErTLp zpQYMZp|jsNLIyaHn=k%w;_VW|*2nEh1cRt}t%Y?`{+<94XHulgiK`6yVc7uLhf@ns zt-hlT>0r390a}fN>1gKIu+Q6+i9sp9QaLAZ#F0}UCi;tDCW+vn*kbFSSoY6`0&0>Q zB5$0EQ1+H%cT0g`NWJloDW~F7;N$TE-a{aG5>Q)(obU4bLS~1xdz9f^4rYsiNP)=5 zl;nbpyJLBoUEfwQ$e~da5B=esk3103tWkU(XrIG#_#n|zBZ(h#vku!|_Nc!vPnPzs z6-R~bq|XE)mEzVo0{eJ_gp$#$yZD{a^!GqGvc_OST>ihkjSc@fu~qC`g?OcIn*;!& z%7kKhzXy2EJVJL6wUVG5Kq#mJC|0MkeWj0%Q3B=;s~hsj7rsxi1(-D*q}!uCj7#AJ z+(%^_P=%5JV<*Y;*lD^+AB-k$p!{3tzs#He>3`@9fVK$#8#rhIJ}{iqoFz@@13sH( z5}|J`q;Kno=M}T!g99>Pc#w`o$@f;&@P`D+WN|Sr0}&(8}SweTM)#it`W$V z->9`jJi_bf&lL8Woz4O#o+8rUylr#39dg&JUez{4sIR>K9v4cYV58^%F@E`8W}aR7 zN%1h5a71yp1a1yya)vA5a0)g?(Lt?JQ@CH9%JtSeOV@o#V)1~eI$%~yy^K7u3e=}z zv->`c208OvJuM(yNm1(W(SrE?WZ|2i{F#?t77+geq(Nq%jvyjDuuwapbi(}l(M@>b zrNT;asd3M)qDIhS3c&IB@aP&bf-{!E&vN+Xa)L%(>E0Fak*pqETLd=h7W(D(*#?t| z*ff3%K)Ov7H>jp|UHE$0wAUD~d*Qn%&nOO@jyzgTHrFnm3v=wl>aik|>f0kTtP>W~ zens|4AZJ^)!CIJ_hwEO)q|W0)6L!^PSSnwPRrJA0GPRg0+?5>v$R9}Y3tBy1l8^Zr zmHPeX@-p4d0yTd>yG)sS)mwmfpVUiigTN^FrhxK)@`6H7I-hpw97oSk(I$=O6c9> zN+Epaj(NM(ytqQOZ&&wuo7uDBicI<|kQ^7WR$ETGYk*)ElykPpF!?OGcthM%t@UNU zP_AF7d2Dwyaxs^Ra%MDqEu_Weg#N;dUi~21_s1U=0mt7#Q3>-RXU$nQFUGPv{CuG9 zDt#M1evc{$A0qBZ3}V=`9kHp~lyhZDT2DK-gGzk>_mRVSPnqrqD6Hc{Rip^4WYCgK z02M|&c`&23CEWVdDXz>54DnY+QyWC$H(=+(#z@_w|WbQ;SSyFT~vA4k$mg%F3(^-$*n8T}uE7n?PIb`>H0 zMV!Z>7~`);YGnHvAuI==E$oZA=TBF2hQB=oKV)_PMH>4CTefXRm?{^0 z@;%=dqP>$>Oy?6Z_5YbrsB-NoU_5uBI>m^a&5ZGYEJz!L)<-p#B@z50!qMZK!I#|l z%Kp6J6gG6dq}#d|^N-x%MqbzF6&duUP>gYwF(v|=JJ?%45}#E80Ll{_hrd?GIbrX+ z`v~2iO1jQK`#e&6$^x39yOR6%bbGa5tLx)TLmKvBS7e1pShHttzw%gv+%UU%E73u8jfr7ZkE*Hfyf3pDuI_l0 zp1-`W(QY#R!iK&yxa{$H*sc0&ch#iT1xkgvMTEtM-I+nN*R=subo1fTGQRt=7w^sX z{5r*Y)0%H$V`j9WO+gyTG>&Uz4O>tW{)wBrOzn$Ri)q1ko@e_0SQ;j6_D0rFqYawH zXM6{654ygG|tz&kM8|pM=Sewf=J1| z^v1|hZQB9kugK&uG8vXe@!?$84v4H*kbZV|d_|}3V=lsP9Yg(JqVo_2#ZOP8C384> z8$r^jx<4kLyb6gb&h)#vC{8|#hFymq&Q%TXTAlrt`gu{$)NnFR&xkEf#$%U9M8?a- zN-=a-qoR$z2V0-{S{>$A^n^Exv@>K+GU;F{&wF=O#y7}Or=%)0xr~&;OebG#rX1q1o z)ho5RnuD7!x93AAge<+JDA%OqVOvAVYE{L$ZHtrIOQue-C$klWfuUG~Cu#dZ!h-C6 zD8^Uh8guLU&ri+NvzjabVT}kI{y_u!VaAcbi8|R+R-J-ADgTld%YQh5h~kD zIloex?p|bS)VVZ1s|aVsazicbL)*^CIsj`P3yU|!z!vi)X>lk42FeE8JFGIju}8_I zl?Ht3fw7x~nPErZ@ejrWUfa)Jx^Kil{}@QPYySTpBhRRTp3WYCKcbozUE{I>reFET z9|NSvnNp!{v0SxXyGe)fq?}BE{ow!c1)}iEw;^-@PbAFIAfgR(t^Dvk0uTvE?gkt4 zg((<-knadsl2UY@@R6ZF&;UJHY#ES9GO2$LSr`Y0$W$8o%9FJrpa$vGE^`mBrC!;D8!&ql*;7Hw}tZ<;uJJWcH2p#Ih{@ z;yZ3@m2YrH)JbE$9g>`kL82})eMNuT=SZ%R6%ZwEC@)!NQguqi>znAmed~8qcR&1d zGLS&Xe?#P&My7p@4Rcexj+pM4fOjG~)wp+Rt1u<{5Bnv`kMYP$@0O0*T81$ENJ43{ zdoQL~A-f<*lp4xWlRY@V?>*z^2bkfdvVV6S;{e^=^-%%Pj`W=B`|&NKvm2c=JBd6d zdHy|M`MycH*lwG+;h|8CC|w;Kk;I;-S*ib#7%Pw+v4=}afs4}$o|ycvZ!udTU_lv4 zKe_uf&q0f}rBuFm&2=0beiF-72P8qtCP?AHS7Q=KN@cV0Om3W69l4c9IkCa-G47#k zqjgn9edWc&HO5H6AxW-KN{H?0!UEUKp?E)lq*UF5Z0 zG=s_6d@Hk$E8i7&|65^|pk44guuD7n%xQX;f3ekhkOtV~c;acWx%6NatM8xpadnQ+ zLU>AoRfIsj{qOMlhuJas#2Y_P*?*(Tm&WAU2=0bCp=~zW$|vPQE41&_D%?r(qt~in zLlFAIO9-Xz^BzK}Z!x-tgbORjIg^5$jjK9%?sN-KO0vmuLgN)hWi&Lo_E9Yc3Qtaf?LnKxeR0ficpC zO8wgDei+FZ;vuPC;bxeNNEqLc zQ>jwH^o33j^myPaZQ83=$qFV)Fr8Ldj13S~ittbrX6_ymEZ2)%TH?0GI7u$ViA6;yRWwzNc5VT1fz9!EYK}3rI_yu$J9l1; zZ@LCtF=XMrU}+Ija_owU7r`p|t~F-It+bpj$E#g!%8O+OlQ2vPE*rZ)K)0s)GaC3) zaRz6|yI=^}>oR}J@in+@^_aKwDif#RSFNdZFT@CWX;%4yfm=eEZ2G-hB;bOuw(HQLbo9cp3e2Y+r!#B)A4I)Tah-+2R5AHxD31@$ZOJ zownhSDb>tB52s%G>aXwu@Np?)<{d46qo`SS1q34x_Ec$Woo(Pzb*mM}ta{6hg?^}a zFvWhdM}Y_{2G<74h5of=)EdoTmZPjTcu+fL=Xv^$#IXqX8QWE3!my+!5!DBuk48HO z>PLqlO)UaygM7=JpFnr)k9m6}5Zqd>Rh`?Xm_BR*Y)}h4oObs#zI6ls%H8;82V3Fl z#iMFP&VLThH|j|yX=7;yAc(FNoq2U3+x-{?#!U%Aw|Q=(wYUXw3~}p-xUOzpO1u#_ z1u5d$f-aV9LYwvYEjVvkthdekQfoyDf7?qOrApdEQJ)S?P4^EG#n#)7U zW8-IvezfG#!Sp+B*L}|n0v6yMbdiY5ZU+VafHtnCEQzD49@S7101rc&JbF)S)kBrOreo+6c#g-~R4BCjZfor*Z zX}+(BtaB>pSsZhu|9Oew2Tp*qsY+5v*NIqeq)|;8_kQMI0)bvugVvI7rw7~s2h8#y2~<)pSE2pY3Ncm|MvR$_Xta)}o^QH10b+Gt zD)S#0`M)^C4(g>woJ=+_jHFX-FQ8G*pSA*E6U!T$>9^+8^$qHS3Ec+2-|w#=&NCr4 z*)BE8(-g)pP>&zX5Oxo1+oyh-N!~;0!$Kg#Hph=S)2(xl=b)#p;=3H-Z_^Ry8y zo~&VYfEp`!d%iBR1K#4)$@dcLhxJnXnJ`}x6DNr;GvJhX+OU@;4uY3+B)1_3xEK9K2Qmaq}uJjds> z#IC5o^!9NyIM2<%2@9XgU?0UMhnnWxD&-T}CRe_~+nIgsNFg>JXg^E^ZPs#p;nWXd z7bM62H=VcgO>0ZpO*7xif9o&e2G;vpsD-6aN(8zE`W%QFNkDyWw`BNe1-ym=NN{xW ze}!#GmZE~dh$KM4i>mQHu90D;D(D1E_eqp2Xb}wwpYcuES zx1t{KdmWQ!3OUNLs^)&%XypP7&{#5iO=oHo-drfv(jkH|U@ zcb%nvEnA30H0$t&Y7RllWB=TI|9rBvtxWM|KKDDDxF&)MJwE(we{6P6WC|;eLm)ga zyPwI=$mn!;E3QRPg=U%H7RO(K_jv~8k$g?oLA01#Bwu8u^(Kqt<@w(Vw#IPa(=WG} z$S@e;Dl8Z+V!e8w%`fR2Mp1SQy<@$_8An(0>0|r$*U>;4!to4W`{q+pp^85-7#R5A z94l6%&y~7wSQvwd{pTg&s4Uc8zE`>~RFoe)ZWnw-^xKQ?75iuUe?Yr$U?XqafWT)i z$vO`NOy;@A;~dB~2ozV!=Pjj?#JKrc%f#}J?4PHc2xGLiOYK&WN-`)duCzK}q@A$V z`bP+t{9(gygQ7>y1mLE;*1bVWeytZ0LBytn9k#YQ8R2%%@|zbp(8YrvN;FK9jQLxy zoDV1DrF+0)M8vrGtoj3C2wiYlL;$5q@+!+?HB1Js#UTYp(2R_HJX9q#}cWd-U= zm|oXLePRDEhHb+fxkjWH@j;WCT}ijYCyHNBwbn)2D8sODpF_=!>rTo;rI1Hd` zjBm!yi77{9^DK^FFJl8>oA~KagZtnl@mweeQcr3^HOy2b|@%lfin? zOwo|90o6y$r}~>nAJ@I{ubdV`Z+F@Bb7*B^C$L4y<3lPw2*`L)BJghv79YF|G$U@Q z#5ZvF%O#puZ17uou=0Hc1-och65#Jhl5!d0+J%ibC2KRso7YNV7pZU`A zUy-6yq8SQrg0M=kaMMc!nQMr*t%t7?Nb=6=kM zz#c(A8j)x+LDiU2AL08f!+LG2o^|UHH^bq~`C98c09Z8F6g)vZMRoc6N5^w7_ukW` zz>6NpNahnZ6kT)*9zyN5y-I6{@>#!~`&0NbB$p%1h#g;J^+k>NKHmH3q@O_bpRa8( zA5Mv0*;L^bTJKCu!37trx^KP-z##`Uw~9K}4aVtvz)5Z&y(;18r4B-8_35b-EsXdM^01KW&U~_s+ zcFI)yso_f@QsH~wZ1TXT@HI~q404-u_GiKbayT|!IBBe?)n0Cy2J=+VSw3cUXbH%= z*bUZUy$2Evf~?OgRm>Qhg1R2smG?YXxblxnPZk>v)$7!CBvE)Qm9s-INW}(&9tc6M z;_k?pq?cLoG7O+#&M~u}#y3s?N2HcRTrvN{>~)e@O3kPwu`WR4m5%eTBbM5LKi(#+ zCY|dHS)Vu33pZSW&wSXLy29|r{(RgUzKJoG)=70CFC6Qza-_#A7x-}onf$6@J;bFP zvn_X5e4d3GwU@`n`9rBHQhr3fNwij_bUg$5I-F3_-dlViNqvV=qpU#gE13p1Ip5og z%#K9I__wIt%T{M{PE)XHxi7VzQ(OW&9P8#$6;6{Ue0w0kyiN`dRWti`hKMqk)BGYp zulbmEDwsm4J9lb>zC8I9p`;g@6|64?6a$FagIvI2c4@-)51`i`u5Ghvj8obKeNJ^hu*w z&kLb&9|m^?K&*k>^#;FbEBwW%kr+uz5g0wy>ZurdPZ4x=p6_3y}csZ z6sA{BzjU6T=t}>T8-NtN;>IKVuF4kH#x;KG7cn9v=A)74JJ)@&r?^2<3-HsJGHX^s z#8TSmGQ{^Nn>PL+9WjQa*wLq~WNN>t6JL zItn1|p@AV;=>M!=!1xFi)qw$#TwFj`{0ahQ6~;$b+++q8IFKk*c523#)TpOl0WDS@ z#wJKG0MRGN@Nt`{FXs3B4?^ijsJ7dPPwVVdh(FnR7otC>@^rLU+(#MI02O>!tHz6I ze;!@oAat@?;YiLDcdy3qH=g#lnx}2A6 zJRjmjO#Y<_X5AA9=eYKzMVB~LDn%xPN&+19O6<9TRx7E*9SXNMZLi9?y^R5Ibct;5>NLjIP5aU)R|N#55{{ z=Ot^^%J*C>wZ2MC7~rBlT}UuOJJkT#4#dW#U{a4xDpKXAU!@VyjZ z7x(>`6N3ORAa&hX>{=jy4s%lW znB~Vj+`I4@_senr6@bX~sV=4^k@_&FOA_-uY=%!O`$^MO%H?59M9-2qjb%)TS&^3; zV2v$uf9_>Z?8+G;`c->rN`SH1e4<%h(CTsCOo+mP>>bnzrsCVnJG59CM@M!zwL_XX z(Q2#sFpo}cd8@^;*D#mg`dh5{SE?|rv<7sSJnnF@DRRi3;)JU>rmwl!c@mwu(GyWT zV}@k`;L~jFRLY_gnkJ!18DXI3YYTRLfv4`5+p8Te@893zBd%_rg=q-uj3P;W4d~|p z2U5fIkrpg&>wXq}=7VP{(GKsAa+ea2dJFKa1dMx{jpF>3cO3LrE@nOc{8Lah?NdI< zHrlU=j|o$?wNGEQR`tZM9s9f$3Ofei`+yv7Sqi?KY>drVrTQAun?vbp0v64j_dCD1 zhf3k1JTHXt6~nUcyFi|GuK2a4kM~H^KdiA+3C6w&w=|KMK{P039#$vO#B+afwXG`m zXlohSM!PV8PMFrdv}LFkoGPV#AC(mJj)01$U7#69S8Vmx_Vj(6_HpSSN-p1d*=f1UtjFaF#}@T&hb>`{1fEPh*E z=**GNw%YBULeQ&=z=vs?$y04&CU%FE%&p73B{IH6g2L4^R|phsQSmNHA)L>MM|O4Y z9#;p91}yEmZ{UDF=WXWZZLQDeED+`bnHOKh4?4;c&KtZv@Pxte9R+YCx5JO}l~6yo z5H800FxKJ*sJE`1T}WM&nuS~1muRX+lTi;;i3lrQ#}HOs%eDDfYy0kwuQ65JUY^J( z1wrO5uJ`X^8cKvhkICuU->j4Ryq!Z4hPqLMO)3y@)%H0FFvjc!aPYU3E~Ua}5bGjh zEAvIPPG4I-V|wx)6K9FVUt~{S)N%Fhdw{U(PU+AcY43+I!tb#G-W0<#dFpIqdMT(A z*h$D04kZ+cO|EGfa;h?estj+UKivqj=R@5=~xnAs4E4AWWz{{3Q zbO?6%1}J94@C=~S{7(7}@yn)iUuEVqNwJ+MlFT~Kh+VIFJcW$#XMTo%4vvvG1-F_0 zGcmL~O04-x`CEGb3|}Dqh8Jx2%J{ ziIOGg-K*cu`K%dwXy%ZNtpW4DGVMzqgORh%)nvYTtawyi!jXXUACo^{Dz6;}6WI1E8!5~*I_>wo0!uy@ zMl=#1%uPjyW(t9TVAfSg4!=jcz~`-!QyO(WP0TTVQ|Z_^<3n#_i_S;i?n9N;dzDo` z<$-X&98p>zd3JQ(TTna7yhq|De~hj8x2u6q#yO1v?+avjl3r}4YrCBO%ByUlifLR)PcA-f%OhSv1q?gRD& z3=+zW7r%7f7zt=l9$&Y_eK_NzQvNY{U3O1sN#pbHU)i(X~T~JregumW+7))IBY0krJJNE@NKc{L~2qa6kYPcQJVHbo(g3a2RB)qHNre}aC zjWPK5&*GMYA);U>+95I4`v@owy#NY=F-7E3V>sz2EZ-b z>?w5&>r5GL&r4)@ACVdP7)RC3s^1K$HprFW*JXd2;+G3d0GqHr6y2N>3mHT9hKST!q4L4N$djz_3P&`}|5(Mgq zJ(?-Y${T#0zS810)g>8fm3?Y*o<84+MTvMk76&*&69?yo0I*lxahjd_4z99b++uQY z6TZ9R1br2%xa-lxk};8{H~i?2b0M=KTscFUXzUyHEF)Go^%+37 zw)rVu@75+L=H|j_`L5+qVSr(|;uc?$20}F{u$#{T=movwM9lBm`+c7tQtEbpS>R7x zh2rc}=a8vuRBI*!dYA*<7t)o(9lGy;6%BVtQ@yGQ!%lEF1bdCdrBuJ+WhS4as`LWM zw+&vmU-V&#UGWOeH~H6H2f@XTQz=$JMnYYIoqF-f@8el}7GuS=6`ky-+ILuRgTE8z z6-M4g5WJSl6l_Qt6c88NM&UqRU8D4E4XJcPZKDDL6>?J2c)m(iwgf*pxOZ%H?adkb z=6{;WW*?wsg!5jgKZ{haUY!c5?f4WZ;7JYIr=zQX=tAKt|J`?1);wqQ3)!Q{-~*{B z>w!lxSqJsVsO3`GSSH4Imz7+y0^~?X_RUZpmLJSQKQ?|OGtUS+Z}zQSPQ52WyME!E zhg%^Iuny_^go`ID`vFFrYU$*5v}0gDSc-V5-IPICt0VrE$yGsKqF0B0T^OZzeOSXM zkE+BcXKX7+DIlrNBT{^|#x^JH51WS`@KzZx$9 z*dF+O{FU)K6x~cEPWp(h5h#Di1E-qE)#hM#-k=moK}Q-8QaMXtYLDxYSVpp}Fuwr9&gVM6MJMPDsB3`yrBo>VljB{Xc_hr+WDO18!c{Y6=w^1L@;ZV!hb8A zuiR8mt8$z1@~F9vC}T+iI)m<({KP50?qGDBRm5cAc%DL%cx-i(Z3JdZ3})(!utLB= zSB`V66pB~-3?#kRc>pXkP~y<0b#SHE1G`(VE6i4lryhWa?G2E?)g5WzIh6I9Y$Xv!x!(p(c>xp~+a=esHOQx<^-G_sF`0)2 zvXtvw#3US|5rFkaZT!so%ODL!HKGm-F3?#2sOZgCTXe?%uf)ku^qFvv-66{Wq7d}f zb*&LwZG99NDtw-97(rN6k)PW#d1Yd9hIF_tgl(jP#(+=!(|=S{_e3(x^#SFji}raW zx=;QA0={MMv!0}m0ff2t)JTqeKaYhF$qMAXQ!MSlQx7CKGa9{BL&}E;p+6aVg>i&UM z|0Z0w9Y%U2>YyC^bpv24DW@n=FntjC?w?Nt91kW)v3v5rf&pQ3SGK-xpz&x{W+w(D zKmM?XnTX_RSVL2kjUI1x6TRZ|Z|c6JyozR=Q8Hi#kWllmi$~&qFenkryBrA7_h_2T z?NAtG`H_ z`1#Fwgne@Exw-C-&4s#T7dh-v)Xj0>m(u4@SyX$5%fas4Bb z;Mw1S$Z2!OK(vzxK)zMFddmJOxchbFka0K=d-0>2C*{(|#<$)1wv~%6QErecA&Ew# z>}rE6|HtK-a9)@s( zQ-P~3$_hyT)Ir_m^MgS-K?0J^hR;M3Ce)htn56i1S9XMOB7cYd+}=pYbp}ot)xU^_ z?AjoS0V!biZ$YZyP4p$1{d9$zgC}`7Wy~87(7K5xt$Hhm+TjN~0q|GW(kD@kSR=DT zjfxO0CfZL|>R@3+UX%7cKwP(4y=Tl9lN$9W z%Fk+p4GBS_{P^ zM6QXs@ZExK zrc}!?Q#C&X({g@XyxU6xmzMS0^Nkj88N<%@;Y$9-Q=P55HR88eywhO zHRs>8%;I|G87*%a1fduM^mmyx=sO-cV_FX$f7F}awA;2QUH<${&-tvF89q_vL;HJs zph2~l?!RZ|?)_oC(Pw;#>X%>-z*OA74N;-|qE1nxHJ0_7C6nJvsa>#ag!*?H82=BK ze1j-86>tqjpuipO4^^{AMCgd5;#Mt^6?a>4nX_#cFiiNj!4LkY!RH0K{EhxX691qG zv1SaxRB)2A1?qJq@Fg@z@UwIAoVd$a(vUM6;E|i;jZ)WEK|V?V2=PO1bN0i zGHJ+{!}O5~WPSV6wF5V*Q+?b3olT9T32%k*#cf4U&chw{c;b6e(=r6){h4x&_$&@F zSw^+SJSJg$2{3a_qtwx(P1*9s+v^JdR}_Nv`AXfA!K^@=*!{-d&F~MZIMn#nVhJ9q z1J;Dw(@eBpzG^tu@tPE1))HR~-Dr?=J8%AXXm8fE0S5phy1>q?7updPFEy%*M2!=y z&V1PF&&{=|yZb_`W3)J2)DXq}8i#2=p3qyyg?eL5b3AFWt}sIha8)6h-9GgAq~obb zCh{w%t5rw}Ww{$&XxDkU)`>{?PJeoI7&zDk{NF8Z%9r{j4BE2A+K>2%A0H_(YvJNjqdC%V5!|MddSmVU>uy1Zf7|Yvf1d9Ob6!{>8X#eQ7N&hBRjOk ze4p0VrgKzGJ+QhFF^F7BHS-B6ggq6c_bFX3g;24nIMVviyixr7Io(+U_r~aXPl$bl zL4%REH+Yu+JaNq_^V9$H%+(`k)dakny(6Kn`;0xaqPYOnN2~$x{zOu_rgR&G=CVzp z@aMmDs8rUP?uLczkSC!V)iaWDR{{Pzsc$+`oR&>brE{Wuvwg~VqN#Xamh6^X2^j3= z&Ww9KEZSqTh55LI+Qn6Rb=EeztUxWtWL*oay~k)f zfxpB_J|I3wF`E>#b&|XO&!bi%+a5s3a+_AatTg^mg1zFo47NqAmt||-e>iudvPyBm zfX(dBay0sMjI&jEnY}1*yZXHG;y=8km71BgVUb76m%w_di>GDkVxH%_B3;%(GZD4j zm~DDq5#vL<;}ptiRk#~bm`|I}2}S|n)idZWx(YKx;_-Dpr&u+2#4d4DH=E<_3AdJr zQ*^@f#s_e=;(x(5_5YDYL&Tq#-M&4;z&|&RR??7M;F|R)y#&!ulXO1-l0JV~alb2< zf+$c^AdYM+YLGlOy#eUQZj{))7{HYQ%mV<+Euv%=L#g9}YUu{|+Pur#yxTt3WvDUf zd1t5hh+FxdKMH3VO_j__GYUzI%l_N>Tb;rG$UK#c6QV$>3AkV!N}qx-fn=F-@o2kW zK^RH~{LZFiTY=Zu?(ky(8 zgDUQ`WZ9M?K@Fnda}WC@sx$ZPJF0d#R?*vGz`K`s`}j8EG+;}GHbgF;T7EW12@v*K zFl+wi$j4|c?L?oWa9cL+MS2kw2nNw^9SOP)$?u1RK&czg-~OKF*_*k?mcg_CkM0|5 z`imOW&b`%UfA>;7lktSh^#aHm^UZl)G9|6GyU>~sUHUmzAsDjWMX--i&t?u?-JTQ> z0R$g)Z1J+!KC#e^`5?#qQiC=D>14nSBrl;`5`!)q0!Vu1SNED$giZ15(G=1}5?A-1 zsuZjyZ;vZ<#$RejQ8(NsO0TTRdrhYN^N?Mrk8sd`s6x&I)++@sn?lIl%V6k;|<+?)tv=;+FY$Jd*#PDa{k*5pZo=sM>Z($aMKoypw#j$30eYi;zi$ zN4a%?`u=kSMv%owb8S8-<{ct|i{iBacI9C`UOyIDy4B&e0wYw?FyBwT_2boCqjd)0 z^ME7E4nF)&=m^tQW_U%dNaUS$V0uJ=-sDl1IF=dJ;|A~n+_n7Yandgvp#b9wys9F8 zUmtPYFaT{o^IS6u#IQ+%XELmMHS)kcgu3SWnr+vhkCA+n{i=rqBbu?e$v1-e@R!_o2_3M^)l1#+&?PKt8Fw7hf1 z5FgSrA4LMMjoghei}TSwVDG>EIHUCv#6(B4IRFf_j{nHmGKQXkt!LdKo#j8huKWLI zuggx2O8aB);^%a`q{URu0rD(x6Bslq)K}h;2E@M!W~w(c7wFp-3b zyF(xl+}+*X0)$|}-7UDgB{;ze?(QCfySux4-k58xz3bk3=j?my)p>sal}RX=WAxE_ z>#cq5_pQpE4KcY5)!^twlmw70cfaEH@VjP zNU8(mN`SE*d>-j}Xna8~Dq{qi3 z(->O1fi8FyoJ16ArlVZXw^Xjb{PFcKrkyIDroD2`)a&DdZW2NoS;fDg_mzBgz9`Oc zDZ(+)!&WLT4S_FgQ2rttjOhwQRKDDid+(4x?6{pwtJ*w+ezjin-SKcnuIn4W@|uBR z@(N(BsR*2YkPUTJFJA7LRO?SBVaXrvGwCo^xMxBi^WlKeG`>wdJ?OIm<}YW8GJY<7w1D*}$P z5nsUMGD+0*qdK+T@#-Z{+CjjqEVt7sR{AJ)*6Sw6W2ws>pLd2|-!LMIoBYlY0p`WY z!@qjoT_(~pTS}}zzu!97R={n7zkH*&6h|TT`6HTUCz!wpE@b*!BVdWZ>Y}IWLF`on z+Rv5U3ZBhzfp0Yh)0K!1>Am@_sKF_E`zbq~O?A1vbtMQGz7)@eE$% z4f#c9LV&0Y9IPG#>I*)-K?b-%LSjU8@14*N6h)!;YPWx3^?%8ij}X~NIc>`a{3KE@ z=rr%RoQ|fZLtySXfD`D@C1ez_5m7CIm8Xk%fbQ%fZ{Y|2tvjwp&IKcE+FxBny+{1a zt8Xu9vv2lBpYO;M>9FNqJezH7y6{x6OJJIuPQ_%}Kho#uTfd+I-2c&m4U;vXBDiMs zHR4{g@-y3}n_n$&h8&4S$Jt%aU_7hIFl=R#?&q3*T7Z0$fs5$|`a0$ND9(2(h#WLq zkt=n2rMSQs?nJb3jWjx#&rnMO)*?|yE7V`MlW!qTq|+Chi4<^NxjQ?7V*Y`~1MMr% z4r})?Z+bMV{lNPM!uTQct#dwH&>Fek8jMGm9M>T7|EF5#qr*=ybW?^{Z z{nCrJsf#rV1!ha!yM2Q^Z#tSL4)FhCq?7s$`(LA$%Cn-%`Jk{HU%3L!1VC~Tbrt@r z5w&{hDsa~6JHLXX7gp*+7lJrLL*OC5y}3UT@!Rw=^e0>5588~$0CACMlUb9>>2!Qi z(_e(ar}eXzq&rH0tE-(<1}`q(xv1Rvi+V?ceAZWaSisSix059myOX!`u?S6fwve+R zClOTQLoWFJZvcouOmArbM*;V>>vLnk-KSOB>!yjJ^tDq>2wOfv5tj*>*5~ALipAGA5%~z3qb+DD&i4@5S)T++aW>Bo5JrI$t+UNOYpa1>qBIPd3&^I1_oWF z_g&kQAa&r#uP*E7b$>$=-=9NO!<{N-B`5`Ariy=tLSUi+Hc0#|*KVUnDsjtwitkNl z2)Z73OOhI9KNjhp^R3uzSN6lfb|L=bp16B)iS?f8b< zKIXz-QH)q2U|1Mn>=~=JwOo-3w(s<`<+4oZYiL*`^IUy1@if8ezf`y=3%2_{e;zX_ z6!unv6>*UtFSiECLxsKwL?qoF&C?E=KnCxz^}kS;?~8+!gIXB-erjg7l+cOAO4<=r8Dx)KB~UPS56#CEVP_whTSZGoLH8CsOa8w zQCkA6P4VSbujaUmo!^FO&OWn+ zQ4od{F@VmlHL^cf3p8@$9BGsW6ev$j|;8&t&9AG>jx=uQacAfO? z3Pm&lpZH|{Z$>_!%{XuX`|)D^>KSLjLJ0W@O!IEDd>Vpr#{R4=(qp# z&r3>#30oX3@G>PjBY_V9d5Yh*`18Lz=nQ&8LK#88rcQ~PoJ{UE4c$pw2{dwZ_ii88dczj7@}O+M^o!NuH^iHgW6ccvm+4k4F3Xw{SQVwu((6~ znf2seV1B;ubmS+4yTIiOA(J!U(AI37_9Iyh0ElH2((#rPUF7}myfqWT?ObXP+mr;u`!!tXja zuad9G3AW%fJ2qJ6=4dp~ln@=I$J;gRRF{DvNrmJxo4;PGF=bRWIXV~L~ z?fy(QT>`*HMMC}$RWv~4P`3|zIhtO~IgE<*J3=z#ZU@MSi-ABVi2gTTuw759C7Wmc zjstgpb>ru4Y8!8wXml*eV5mDl9gcgcl~_q+a0G&p#rbwPaeMp{RR4ib59KiEyiyK? zX#7tJ<*=a_o-ZGr&M_Kq58hGX=Zwuant#A`cWe%vmcn0Z z(xWm1>|ht)mV2ZHV3>J7<7tUmdpBE0FL%F5bM#Qdim#gVf+h0Ara?)f_~g4&GY0`-66T6_I&6 zBskl{jkn@oy2_n41QA4T{L&~nNSMZm_NM#x2LZz9!5|(Eovp<@2q?(epUhW$xVrsL z4^_Tc-tyqyu{#TpmSpuRWD_~lEaw`e%6<{X$r-5tREum37f9ElKLtVP1TgXZyV>}P zJO&UP3CFar8wJT4O*S#USqg;}X2X19?zr{`vK)vY73r1t` zTXGO5@dmI-S>IM9OT?8QB-Uj~qA^sF|JjMDMVrb<9?9V@{@dgExP?Ts@M?G8< ze_2?@Kc6#bF8G2HCB5cl2yg^hT~-a4Pv;dL1Fo8xTw z#$-qAD2;_>7cu_|wXTVz;6Y(bBE!J3-=HApigtX}ZFAn*4O8r!L+zIL4-1(+z?E-qfBL|8QjUn}A%|E5+V#J9z z4{An0BMm!)_oh&#ie;%PDmy+oOmX2$>7upwD~09B$mO>Hi|y&lNI$FPoTPt+pZvNv zt>zvoo`5s!@v6_){Lyb>UkcJc73=^I>PZ!a8Rj@9;$qd(_lKgo7Hy9UXBZ|%7dU`l zB2T1`4;dk^?SP}eey>3TGT{$o4yTQg_*#qcEtGdS^Fk|kpN3SmYtE2VG9!`yyykW> zS13nhpu1gih>nFVmoSg2w|K;II-VGpbUagb+i z&VHb_dmqjXTMnkHo3D7!6n&}5 zwP;EATC>UboxzE=8Kh70vJov7EAP*v7odHV0j+QHkd`MbG8KS z>48d|d_hxXzf=2g^jqB%iQcOY515#KKo*%!Ys_h#?x2OPs0=IPsk2$89<*NXm~$t5 zCb(S!YEpZbqsenoq!(T2Br`}eyCr(jvla3|SD!(T01SV?w2@h}Ua!C=Gh^x^G1+Pt zIfAU&@z`vk@?)Y6P~C#gewb{$j5wbGpfG)E)7#fL2Lw^!9{dR};!Q-8p;+p|;67xy z0idlLR@oQucAp}H2^e5xMfL@9=JW~+FYiN(cO{dM+OKn1%LfqE!F(w`$>Dc9ANq$U zByQ)UfGfQOk-gHmJZZ^tt_SViYPU>~0*w-psc^dKgHw7}HW~mCx_^y{Mf4Urlpn<| z`t$S5?J-nP0ihbdep^dinkGPo!^GU&lW@smF6rb?W7lm9?kW5zx~6qDve-%(*?z7U zc#X?Dx1WmN@uj8t%o#4)60CcA2=rNywyHhqNWA|Bjgo?-H#k=8O8nYNp4>65P*0&C z9DzJJkMc9ebI^35UOE86H*%Hk;hA`H8_&2XxrXHq-VNngF~|1T4BsVOnYJZnv$_fM zj22Cc4<=dSfN1$3FgSPX%?HhbNCJLU_kGY*hT#5R6|FUZ*;w`qdY|Qr4Z{l+MBePk z&`@OWeF~5YlXHmE%MSW^0Dkha+-WS$n^Cxu(e>AT(R-`*eUXGxqx>qP4o=*pd)@Ej zb8lH00<-t&zvU*te?Y*^alpqSUHt zMi50g5=1go#z{Q*ObJW+hREhEg2)4Uzk*^I#(M~wH-XIpONZRNwX6XY%&f5aL-&Er z+6BMz=Xs*OcQ!nWX+A)eD&UX{8gH949U1El$3|%WzM4r20|09hFSdV~df52g*-9?; z2O?r(?B9q+;$S0yp>m{R;L7#?grCT|QvuS6q$=az(k`oBE??uA;td2{xAst*9M7v* zjhfye&olF#y)yolkqB6=2mxp12(3N#Udz=s5wru_`%jT(J`ek3gnZ5s^hhGCIBeVK z+y?-E`OO?U4mUCP72mV#OUu+GHGH~jGwi0*Mh^mT28}yH%HWs}@E%O%V91mG-c_sh zPls@b_pAgKMaCN1UxPPC(6ZU>Fn`QY>%B|a#|&ir^Cc)$j8TF;Au1ssz#Eq;Gqa(- z;*tIAcOuKKRjP+Kqw_%lQM4)S3{o<^F4pZbr5y@Yq9Mq$v^n~4+wTqVn5XxE3p4&a zpZYj%Y)NrDUo{Z$fT73ga)oDMhwPXHY?dE_FLnm$GBdOH@&sqkQ;3ELqG~+! zPAxoV4LfcCkJUJwXs6TTsXXp7-!AT0QB=@1Gen5)Nf9U{%I$vCV2LKFSUj@~n>az%y(~mQ+j>q(hQ^gKXZuU{Q>7jZS}Y;8 z5Ge2=jq7OV1KMGy>TT|ir_Y38w~+wvsbS{vdUh4en<7l39`SBsz0pgL_Y!bP)K}72 ziJ3_#!^R4Ya8nxNnUvnRVtt36_V?#^Hu1`h0@Ds=ydc>`Ice zXv|lDNvqdKVivHG*LxYb;nru{ra?n}c4Dhua+)2Tr6AaFPUDK*?}2^L!2+mq;Pd4B zTN*A$IxLhJW`Sdp`6isFM>qE&u*j4PHgqXs_@~QX6DVZxQX=r;_BP96ja%2dkhGSl z;G916M-vwS_M`(Ym!2D53>fyYD$fMOM34e`6!~Au^8cx3*STR@Lt<>`R}EoBqq+>8 zUQmw@>WPlG_7@hs)kILhJ!^C2=?Mip@+`!Sl?^_S z*^6W3Mge8$A-GPNU*E>b$qMY2;ufR65|ZxKafIQ6Z6GP;;~0R4AtaXnH$erB6(X7E zXo2YFi2;2)8V&S1^O2FTqHsFt5(7jEivfsaC59wzd2oDt!UY?y6gR|TJVro0D8S{z z5aLhZ4=c@-`T2^RekO$?!kl~{U&Hk6?#dx=Q8ogvyp%wryaw2E z5W;hUlpJ2WAb_%+O^F0lcTLX6O=p&l5r|j;9Fo=WNUkpTcbf`D8kyd3$|Pnx!{56( zqkjPnO<{@DYq7n#UZ=r-Ahg@Y0)O{TNy}0@X2U;0-c6@JI!bCE5b}i#|56A3Pc>7# zBhc%anStxCXcUE1PqR*T2DHj2(7VTT`uAkkarZ_oW{pgnosMO#7F%L%d5D5Cpnf8t zzZ>_u&C3CNuhEgeCPM10(up)h^7r3ffjNN#a_PrLX`COcVzljgVh~$`R%kct#hEt{ zax?6h%n39(*c%p*+6yCLdkMWpyHqKNzqWnCL@1%r=AAlnd}; z0j}qZ$QocArkZ!K8Q`W|=BYIlOU{!glNz;_XVf2+4p)Rc&jTd0gbVepR&z|G)Q)>v z`TZ|fJ3zPwd>nd)Vup3Od9o;2rlKc*0DmsgMghvoL8d91{P?Cq-fWA zvxrmmMd3<~^64-DuLF%UK@8}jj@38O0B8~QB(EyEcdE#Go0IOGBnu?u>yFHza(Zn_11h$!p?_dn>ni2-#e)=+*uI@!(iUO92p_Ib2@A~@QJr)Ax(iwtPKBAHEwaoWNu#!_DHHc{LG#B`HX$i!J00?;y9%uXiW(yD*Rmdmoy%UC{j=#~f3CYye-MOh4Dvzi(sxdM)OO``((0d@ZV@z+rdt^Z8ORtN9f#-y?GT?lS78 zDhDK72fao8pO4pn^-CF{l|WCAr|nn3he`^o88u*xi7XQXT553%FVlUDKWV*PA(64a zxeMvg_jwlENXiEE%{~1)4ym}li%}f_2T2aF`zWaC`U#6f4yJ+DZ2rm{2XyJ09#5J@ zN`rohaYC0cka>P>aQo}m^*{lShduoF|Is?Y9h3Z$^uJ^q|8J=MU;PWn>KhORbQvd` zUH>7kMaW}C_OM=RkSaQrN>ps>c|HsMTX?nQK+>g2&>X(p;`B?^aDwMFm*=FR8v}b7 zqMz6wvT2_@)%cUu9{5)3J1$W8 zElGs`hYO1)yg!}FK3U%Nnv3GQt&m=|u$!AK$ZL~7AnNb;i1C0E(7d$`Wa&-Ei*nQI z?^S{(3S=z8F5T^)u5cF~pKoD*#HvYS&`5Gso8+|yw^Omft7bgZW+)2rGygS90&ovd z$U;T{b-R!Y;s&{lD=O#hq(Y71s<+e~Y!RzZS(+-4T>oVOU{_hUy_@Rx6{zV9*IwWP zB_UBfNa(CVUBCIKm;ax>^iV;b3x4hY5MZziuX;1f$4*4x<>pVM-LcgeG-fbdn&rJ) zTx08wRt%dw+tRoS2f9&GH|{9TNg?7MF}U|J95$lMY$=oqxKfFnz6 zI)YFX$PU<)_+imf+nj|@w&ooiUnVGvG7Tz_QRu<0!ZP2QCK0nw;6fY@jrur z|Mcqq%P%1ckOrPt4J7$PDFANQ->xPIcz|B;9$$|K#@UB0sNT_&6rJkiZ(73dfKOl6C&faQ@kCv2dzUJ~6IR z5OFlmEP(TKlw?zwAOsz9h3ov>kIUP?OpfR>g`~`Qa<->)&z13Y_Vwni*jl76v#b>r zt67FtT3`2wYXcXwTM87GV0X z@?Tw3;KFu~ma;nM|M@)4aRn$B`v#JvVyusNqk9H$KKC5RrS8uPyf8{@(5s{{=gOF- z{p=98Jt@ag<7ZS9|uPCLjG{vtV>AqdQp6?kol7l&fB( zOAOTHc8EoXF#=Kn0yO-mL-Po8p4*@mUdow6VT9 z?oO*elGcU3B(h$}{o@em^)8+DPm_kD1U9kDoN_YRZM7gv*bB0R9|6YbzoPViWlQqU_t5Ae zn+LJZ-_rMg7I1{1pEwXFUxJc>PiGFaR`nu{L#JDAqIr*e+Ah{EWU%Yp^#OK&_K8O) zf9r6(fAmKY?>RZ~ek4xap0!$(PxiT|{E!Ura+LR#4T@-&5+N&>ANSiSm*Y2Jw$9M6 zO7X?>O7Ub#oS{Z_viyTlpqbn6JJ;5@=9djoS3X^Fig>tyROeM+K#7*Y6(uN-Ai=&{QsayAK6PsuV z;*MI^<_L24qVEUx7dyyk;0By&8{)sJ?Ej5<5hU;H`g=$GPrZKYJPjKxJ$LWun+e0; zIuGMy33Lu77LJ-D*kzh##r=_BqamCg1YY8Gfe`RI*!8_MS%iy0$Dx|7m+R*ypwZom zb)G&NR+@jk-kvX?zCo);JgfeCSU_>FRB`@Sh)eWO z(`3}=mv+8g7RTFJ140X0OMg!gwx~c8BGGQvWowB~i37K0E0o|<&Gai)SzpBkXa*-K zLxW{(OPv zo)4cAlV{Da;0dVBj6=46ND+FAs>XYZg_m_?v!&>BJS!Yeqn+K4XQbasDo;h2Fgd(QY ze4CRVz4eRsA#r)29A40T?za2Z@p{z4e%2@VJ;ST-EGr6(j_n*y=B<*N-Hfihjz_MV z2c8r*L^QyDt9gLvLJ1tdBW#GMuu7kNZpvUr%r_2K+JBJA#n7~B?6=;MiKVb2(IEPP zpg;GDt0`eX2{nBs3CSXv@Hka-X9%14soQQd@*zHb_?_FJjPva=^K7OOGaU<6{NUCx zp95Cv)Vnpsl?HV=n3ZFJle|sS5u9E7EYWr0e7m1BuQ3DhFhBEO+A6Plt&!+9+xZLh z+kS)}++4|(dN0ycqgwJwNM-^)!`BKpID0q^x6143ALvQC=`rlP{tG($t04!*4O~s8RM=q-M8MltAj4WUIUYs z1>dt?Gr!sqH~6MA!@Tj;GEq92`FChPAcRnneJ{rj?qqClWU9YZ<^)>0KHCdU+?{>P z<=FIN#Fk~jo7{Z}$d|+wBbl_xQh5kH@Ga=J$@4zgX>$^{%SLlJ9 z$9UwM(1>*aQ?PL2`9>nGr*~iV2V~g8Da&W&5=Ei1Ci0E$bPmyb+eMlo9YPc$9us9k z{|mH`ld8eFu&dR%M>A}XRb7+2&LV+-)g|FSDm@f6>jLPkzuzYo=q9Z;yf z>2FhKijE6m?KcWCzx1zo1yvU-X(D#SHVdA7bX?nGTJX55Ncc?b`AzqherNBk>BDPU zjql8UyfLX<>O*i;Qk-9Pj(Zq(VNeU09cnZPxz!4!V&K;*_O}#OYXrSd*63&3okpXF zV{fRqXvA^kkEeenhNBW2iGt;KVoTVeO8o4PWF_D3?A;DUrZ(iTcXg#q|Fi(xW0h-J zkllpxasorsu{22^I&;cCHjDq7v5ASttt@y&buRda zXyTgxZkcLqSB>}M+inBAdl|+m@eG1_5j4N7FLj>*A1bW`hQWgXhpQdkW-eTiU3Q5{ zFXG2Q5w9DiGGqUTq~7jM=#d!*oO@-?kem(HB4wpgY0OBAuLBKIq;C?vD?ko6Bj#IL zP1bxGD5$6;&<5VlhI%`BwmbW&vh${-DtC5<4GInVjNsv<65ZW=oJ9Hu5{Kf^E(Ej7 zq;keYC{jB8kuOzLeFzw5Mn60Hys+3`0^K@A6GBUKGRl|9Q)6}x(;sggHgcADB7`Eu z81m6L4%LffNvc3`CY-864s|bmvy$l#ihp&p2EbQo`uHeJ7tB`bF0&+g`soB zVvV%;+IugAUC8Gbv#j$4*5+B#)G7ADW>1YUp0XRje$;ZifFqwU^bVSciXTMuvYxHm zWzhZM6!FSTg99XCkC%{lW{qxg?F}=pOvFQ0&N*bUXnXpzkaps)^;xRl#0Oc8xKIVB zE)FASBV^CFMQ84LGG_l;bN_LfijyEh0c(^9Aq8;KikAQP>K6PVE(nximRBTQ8YCr0 ziZ0SMd(!G{7^$oc6icDZB%Es0F~vl^354JlfU(}}4}f@1odTiR**9UVLflEEDseLR zy?-wP0h3S|GXx1($vVf<*4rrzosdWJ6AY1U^#)q>GuL;LZIO92zccSQ;Z^5cVM*g4C2u=dM znq5OfT@l2<)PVua<(F~E-iRCT2sW^p$WnA*vY~Q+-H}0(0;~3?t;x$;o-4Eo&o>iq zL4;Loh3bhvp9bu*yDrkKlL4W*Q04h6m3})z;1F0)@|_u1OXvmmd^}RsK-KHmIq(TEljd=L}&IORZLeZs;2j#sveq<@8< z#-ooX<@s~((__+9UPIf)-5c~u+YLoK(P)qX13giZAtEW}imi7UMXYPo_ynS-hEXe= zezpM?LgQ2#btRs&*IvQV;3?0kAcxKVb4P4WW2>i8Ds`+a-Yf*yRU44~MzLEmmKS%q;T~VN(L0iO zGGEHDuqLFX((WpU8(>uv(Ijx#ShCVqaQg$H>C5QZsVtjC+mDpjyGESv_1o>@vC1Rg znFt!}u#%??Y!ZuNfR$%#R^?4c#iBKMeQ-v*1Sz0}6xHj5v=^p|8buy~?Xkx-N=O=- zOG;BQAnQ?ORYH+JPAZ~7T>K_NF`5<_AYv9N=Vuv3 zxQ23pFRP1}-X#>SiJ}yEeRH>A5?2bYKs(}to`6{)q_I;=9~F5ItT)jbQub)~Hs|0n zS9S8|=YSPWzS)DNjr>^vJ?hF|(H6gJH9Y_Na%*SE?pyd)qxiefA9Q|TSWH}|S$~R$ zQ=dN*=aZ(N!TNZr<>G_iyNoz5gI4Q;07!^1c%~fpq+P)Ld0@rifSbc12>Bx_%51&1 zLV0SR3ft7j)fFp>2e=br0VI<`vmP>Z_`-?+qVE zz2Vhwa#s_@H5azUOD5dOLW8OW8Sva57vvPkhpKpc#>7S;E-8z5T-F#JH{poBT_=fx zRu3Q%!h^MgjhZA`{5l5%Z~XI#Z7A8)VFKY{e^y`4sv|$Rb(ZS$2sN4HkXim zh5LI&>u$S?KDc6Z3^-wAX)V@|gCL`6VU9>cl`N$E-KoyUKUhqCn5d&97=Gy$d z`CUdr;J=@aoo~Lo(DPktECgz8uv8B7s{JR4_#ETCv>Fi~T-5~$Frp?TE67&9s>0f% z4u`F&)LP>DP1YuAZI8yiCx5;Q|BeiMO#qHANt;nBS8E2egnk{uPD>*R{Df-sx(ijM z(D+QVzDpG7Ki0lRKW_JRr6;!xPi8Mbz2=yrlJ(vV;dIIflM_~K_!d&vx1-ccI#qk+ zNr;$zC!=vnIp9U&=*pG|PN4E|rcr8$F=nG>x6YN(_<@k6?j}?ipJ*TUcfpbg42MotQqR<($G?g)%0T& zw+z;M%VK%2@&;1aqJUXN3!RT+zr5Jk7`x>Cv^m5z>m3~+JKk&Hek;EkFZjO=OkW{^ z$^SnFrlP#^)fTDn@7ht8G^n56I@~=;*x$+aIcNBUaIOBzj|@zot){)XM(r6?b- zet@UQ=o=SmS>XNh9VjW2OMF)iSOWVAcDzCrVRxf)rQJr1#qN1s=!;=w)l44X7e|dg zH6DH-YOvFxO>MK1MNjzi8j>1;5rhQ(xJR)c%^7rI2axbCb|J`9i=?$XhGtn)B99FB zB4OrYMx2o&za1ud1o;tcs1?{1-hX{Xwb(w4@W3Os3}@IfP`W!BwzioFrqD+*;1y6j z^&<;Pe+}qcp~Iggq9)qNB_iJWPr-I!?NAOYFcx}$8i6Te6v9*9)d7db?EJF=eh|90 zrx^#-ASE+Q*5Y$;8qnUi4suq?M#yZ{lCc(Tg#xxHf#IQhrj|t4p2rc^!YSoyWC%N2 zT9N&Y1>;3DOg&*WWcEKD5<^_LX8;6~pkC6O(?|zw`iVf=?8`b>?FdEFl&#m_Fp9#eSmfMAk2l?_k87Wu6hWyc7eRNbh zw^h^oxz3O3&lUDRph!U@SzW5|)3W=MEVbdvWb@~Hy_Jj!lUv(AXTRJBy~#gJq*e{N z*cz}7t0sGw@LoHCtIA~O-j4(}o2;<%h|6`r(dvFnK0iyf^NVa{(9H`ljIhY1K z^$soU_1{VKQs$qR$7poBm(xElqYb)>JM%RxDHTcda(KmhZ3HeWeU~)IhTz=v)?k!y zYI#wpL2>qL+|h6JbU>j}e59+}od5fg!S&KTC2Z$Cf&8947AvXbu_33XCYP&!Pp#20 zw=muZpfvBe{lL~_yU#2DUxbvKZIky1FRbd2Z@tso^&Ju`zWf@GFZiTZ@9{?2L+q;7zt^j<$6pQ_IK2Qks3Ny*_oFWR)H8Xgb1gOF zYTCnK0Q6DnY=w3X$ljql!9ywP7N+A#mMFY}+hN$~1!;GUf|O5^2g&Ldi&ed0N;ktO zI8G!$lKYNRI0LrU8rh9BT?n{IAsWCS+a?Jf)_%J}cJ$oRHc)ThS#CWnYkm*7h0}}( zeTpADyz}>pH=qkRE%m^`)z;aNSOfZVTkWM;1r57)t!@gQBoU25mah_7&6Fo?I?u<6 zynfF~tT_|xRz?@M`Tcu^{5#wJyE=fz0aOmQJbl=JasY99@xL;7z}OOqH}}o0u_v~% zKpJjGHAQ&1yprxIyPU7t=_h`}C5s7rz}q#EFE7VNlYm_iCBYE2lMNiR{Ay$iGg1=LPb4S0G;?kBpO^2Jzr!4W8ubL8ann()nJcnZ4ww?j0D9G)cqp?H^||S zFl;0dYzB&S4UX5voO!}-7mDkiO6Cek>ZK+$DDC)WijR%<$4zz_0vhx*+9d6EQD2KO zOs*rk4G`s*s|H67fN|-rTAD-}F%%<72K^a~I`9{K)vunFP&~? z;+6|_yArUCYP32@tKGyXV)2OUux-Y-*0F)3TIxL?$o=Iy4qLX2Gx!~!V9AAvY8vf_ z_auRJuBOKnIv+n5K7LutR)=8Lwla`l$cR0tULy!Klu27afXQ5fX1c|tPFFIbM&j{n z$j02eL;`QR#6VO;?(Kn~^=}k_?4%=7%LI%#e1TsH3|2_Xg^`G!SdHt-U+O~(#MR>S zz|i8GTDW1@DZGEK+P1fQiRx?CW|srSje`i^nlIx#NOK1RHxrx*`XUTgYJY(-J8B4h zVsE)Iw>fz5+`Vg|MA%q>e@l?tbd7&rw=#M3f&ksrzWWbfrjnXt64S`ZTI9aH~rpt_SMss&wn+`xJB=EXb*%pV~ zF?%!itx}W$DjOikpy(JDApI<_hv_qbLPrWDJNKZ*YQnWqdvHtIC>=*w>w>KNct{!S zzgqXeH&Fx{uPARee}_e;Zc)z~6oS~w)FubY<4~s@$#cXy!gJiH3#3%bxqlV&RFaRr zkV}}Y#uf@(Z4v~%WGyptn(1DiYwF?k}F$`L>xo8o#GjK|$oO}H6om(W(_d*7 zl16!cYP%Tv$e0QEwIE~9QoZ-0Gx{J2u=)lpt8!Wro5Ta-C_%He%=Oq2&ygT5mVS6dGb}Su!-N=w7k%48@F@K z&Ew^laN2E9G#jZrdHBQGN+_x1j>f0Un$=59CbeKCg0D7LyspmsMRfJo-NZYZ2tz2# zphDLo?4%Mx66_M_B(6@qnSuRMiqHLKXT-?bT8r++<6two)*)VPH`Ek%!#?e&uI?{y z20+YDYGvGx01Pa2NP4gN%Bp5Qzg$cH+EM+etjxw7fZEUj;sV&o!7tHXv%rT-H1T7j zG2OS*-QjeJ#ro5%V@q_D`Ju|ls)OlLIl%Vn2d}Kw@}M9^`pq=5_5iyS_pcW{5@avh z5%wFmv(B!mm(YH$BJtdLLLpgUU6~~MoK}Go@~hWLWN!8}quz^N*NMr6irIT|3!;4Z zbE~d>QG^Wgy2SkvM8-u#oL+shFE4t(RtEhzHN&2h)bnM{4kj86B_$?R3gjmnfEk3t z8LOJz{?-;g5;g$Kl7YwW8G^^*KH!A!yN?~8&p2U{(Bx&1U%2>~M^yGJcnF7n$G-J^ zdiCyGd3n{F0rwmC`91IF2d5&rL-oGK%nm?DJm2tLP~Ypimgz=G-}t84Cy^$x=+a^I zfee*ir_C>4Ayew{TQT3s_lh4VSlQUk?SgwU;G`I)s)Ii!bp~U*IsF&8Q%9#V#6DNP zYIPMGQA9lAFz{_Q3CCmW?~A)$`VMB`-adSds#^VM08Dk}d3&w0V=gz?u>iE%sD1z< zo#5Uw7a1%OjVqDLZpFUsOZvxK7p3wEr)<8z2eYK0^wYl1R zV204X3N@qs6RFqbZ_7cII`Hl*rXEAP5NvK6n5q#X9Xr!o zmsYg5efGdfu0JAG5XYwLt3nZ=@-U0MHDRyN+C)k&|1zH{CCpK4M%c zSsw_jiOY0?Phz<9X&gH4+r*yT`|>{fgDGf&bOW{!z;AQ`m7i5%El_R~yOmy{VU>J>`em zMhxb7p-CX3qtC&kYaVm`0|>Ts-=s2>WP#jyCB@da>@kp*QG|DtYOS%*N1|UXYCekLGKc7lx7j zae}yIhD9R0dUpg@3plJXS1#kxCP&@(qYYnwyEN|hC<(g?#sv7$N*dI%qHPV_2lw3X zCV)&Oh~{(1T zf2T6r;aLg!2qL59qxmh3;8UL#lx{r8_XD-(PZDAG?8%#iSrnr%-mx83akjni=G#Iu3jZ+JNL&ZhC z$JYo@*8hIjYvlfz?mf;iL0V%n&3v)(YD+OO78c%)M|iA-7)vpEw;9(>h{<9e1P^JhVNk!!C&}2PlGiwmFj*p(UEUVc-Up zn7ZWfIC5h%-vB)&`GAtEpo;xERjjJ?N8uKUUtS9Qd5V8% zxu^eq=bmreM1asgY|zbL=g5k2ug*w$?(+CH@B*+JQ5@ zedjYtlwYusEE0Y?Glr~ zOjUYH~J>TKsEn_EV^kHHOo11zWG!>45R}q^)82EX)BaZ5dC$Qwl2;aao z>^90G98z3&)43M?rN?wUH%-w=>zYLsx7iWgQEBI2QD>z+9_+u0UeLz`YVj-V{xVkj zHPiIXDNjuAipL+3+6A0l5w|A`e%kSZZ}wtmqJutSudg&v=J&z%dC${(9~6Z?j1 z;d(bTeLwj?S*f;|6*9T0XTG7ScFWuohYgo*fCvCgej-v{_4)C}Iy#;zvLJ=6IJGL6 zCyM;FVf$zt0^c&T*xZ@uhamPfr z?L062&U*r~*mJ}~+3=7WLe z6Mtk_Wkt`q4`#t+ABiD<4_XT3a34c3JneBsNdCEF|05f94Qqn;lCR+s3axta{GFRS zyZX<>NGVV^OSO5m+bnC0(b}u1-K(il0hZd-_))OTz}=4cJJ z%yo}y&&6t=pP(j&DqGci!xDDdRP%2(dZc^FfhNJyKAr>iPBuve7+an2K&++Yp)&6H z!Y%fFQxRM*6}5m{rR^?d{Uz%Hb1*8Aar~ow)Ujog?{lTRI%XwsmN&#Tq&7|ZkoFPI z4>oNr8}!=#^@?#7DTAtCmWloPh4D!ML%e9LhB^ol8~r}T4s+(R7I!~@U7y&nIr?O- zesn2R$CTvo6TMu@716_CdHcNkuFJ#mt-zhO&^t!}img@pn^9ro{uR`I8BctL(>z;~ z=P}LWA3SnJiQoHQ&~_Yo@v9)}E9QKeUpb7cr(CXMHAzYcLe{%)hJSi5(A1C969DD3 zPmTW1vG2*r89yH<(-qDs;$vQlk^&yEQ#NK9oT=>~qM5|H~D)*Qk zt7_``{Ko5HAJlE9*s4b@JT|5fJQ))$u-%_2&l&T7ubnfd(Nu?@dLO}oKPJ|HVE z0{kpad^xgt;bdeC>QTTE2s&VPLa>UB7W{}tNoGtikLtIEGgBz#u$X$o@u-JdOgS)B zw8?TclR7@KUiaEbxP=^?y!p`)D{9Vm01M8v5fO7pDT;t=uKqN0c<>Tds1~L<*@xY; zaA4>EVeKu0>gv`t(S#ri4ekqf2=49{+}+(JxCIXm!3j=+JHg!@f;$9vcfXTw@3Z@M zSD(67x4ZH;UUQ7`zKM@nZHa)FWq- zbm)_QQ*10fLUWfN=N6iym6r^6VJ60h7kIQuC;~hA07&4IQ8at6o8P8!o83gUY@}n% zwT33UTvsjak=yC4Eg?q&m%_&ZE}YaR9>%18g1+a;-b>@Bm(wrD5`=z3TL>Rfl?PGD z_uf6~ekLzp;)3LvsmLc6jhyEHc4@cbHR0yG6Ruo7gaRZc=zvZG6v8nF=9)&0Won7j z(oMt?sz@RE=I)`i%ARC#U5cGQ?QqY~sFqt$jSmJ9wX7*g`Pp;#gJ!LKh#>vH5&w_| zb=`fb4uFC~PH%i(ygr;OItwH>R&jQCC6G=!(o^PT@MU{=&$@7VjWdELLEqhYA@$IUdz z481_N7(Ub7)Cd1;`I9U5*@Dw6*$An&8sIty;|r7s#gQ>X&ZDYc$JbuZ%q8rmcJss) zfH*NxwQ`kBH`xoq$7X%nn@D>zI8(-}Mz7oQ^hodfA=5ObO}we*y+^JZx|y;_@fA48 zu&TA|aKgw5Fco8+SrD}&gF_51yOp5S{F*l-2V5=fR;`xv3KI4Qm=;e$P(P=b)R^pom zm8oE74@@Lbn}f953_l2k5huK9uK}UD$xuFbLmKLW)Cx@^HOA6HA28SY9euR8OoCsQS0*O@MYI#PH@2E;yb?pMxVvT`o?KbHxZ`Dj98X0jdnY$7gB$B&VWwi1c+B(~ zq6bO})OCsYiy>7bz*>V^#{;<8w#8a2(=dkcXb60(z7@w=Jg&BWNq<()4IP~=>jaCT2XdXFl6!IL)3dtJ-EH0Q?vwfG{ z75DOp{(v(VM6`e-_&0K;Vg2Y69Xhe3opWJJ?if)Fknme@*pXV>OKKaHar}eLC*_#= zHKznTmT@p+=@=;JjZ9wZiJ81P08~ZH(4)ZgS7o;9gHSM<#1;IF03Rjh$*@PkPp2a$S+k`Z37(4@QB3BMz@bG!`Te>z{X zOx0eqb831j7v?>Oj&AHmIMB$Za^>jffa1}jTYR@|0 zurNyS-96?98VKd_cHcZ{W~16TNRw(-Fkl`&d3dZ(JEnrsX_v<`K$u^KV*ewdcTWOb zZXzSQz0NR(StJ4-5sw}T0aE$?f|*@c6`O@{Ea3=gV|x{oewM+HZj~~E>*hG`aRRU3 zpITp6-*F8oYY-$m)Tv?={+)lZDWDh6K%P zn0?|q`hc%-`#PZs-md^6)vvadP=PhA@xrmv=)Lu4Kuo60mUiAH{Rg1T`B#6Yd-!hO zWtE-mReh~0hKBm~nDtF($E9PY?GcUSGw`iZ5hYP+juEAOC1diQS1^7KkrmAJKF|z| z4LyC&TXP3qju>=qpGt!~1%i>2(q=U@IE3~UkujfXT0DBOpRa24U?GgDej1h`b}w3> zEC2aC$gUXlp0Ko0JQ{a&{Cqsx7Ejii*<&Rcn@Kz?=jaka`Ocp!$|JLLhw%P!f9qT% z6Es+edMl|`6ES*9JfaB&hr#A)R6E9wY7g}kX{>^>h7EI0SCq2n?DfV-5#aq4MIat% zO#OdxQUIDOC`b!=FTyqnrbi8TKG3Qge$$7h*o7P&*-1CJR2$4#)oHgbgkeaND4_eV zm{>aOs3cm$aPr1I|t?`LDlf*feP*!?b-rBp_gA= z>S|p9fUoLhg5tE4&dN~ra;5lkWf%LL=8$hN>)RcOOO*80AQyMKD!YMvsaW<$qh~mN zDC2;m0)8bk=kzDtdj2hz=xQ!(MX0g$YTz~$ZdG5PHyfTmNw{-VX1`9YCb^%dhRi8% zj8rH@jZ$dmm3ZhC{*6T@9ZPN6-7;OOr`xnS`*ClN(jghqBaONLS)n<6&=mQGg+X&P z!s*#4li%S8`x)Q{G$n&Qzd0Yg;h$rmzNsfVuJH4sRwBL_U(;7M-w z$#3cQI=?)pFUWKf2dclvw(wz&>ja?nkwr>6`0KWa$lW@!!HRiX7?RCEG z-bzw0AS64AWZvcZxPG-vwgZdL4uP)IHSmRNlm3yi%qN2fSB)9IH6jJ z(}zP>ko!E)%~_u~)194nPnPpl~&n(rMvmXX9Rdgi*El2@s>6ESW> z-gkT>zXTaSOpFXM#;{s0GKXA9k)a0s@r~s^WV0}_!99~c)tfF`x)h(=06qv>I>h@k z9}%wcVSGIL)c!qQ_#kbGhVjL|s2`~pBYEOz*||&ijnQ?d4y2o9U(ty71}5^Re@ek` zHd3pX)A?|D2+up`HPoqBhXXU@*7*SGr$WF7u9EOvrlv;iNFwp|?$szJ`EFb2MzeYk zrb+w$2a`jgR&A0HV;Z{)YL>a!4-v3PnG~aa`?DN6@wl`m{Pl;^wA$P!_UdLLX|CEq z+P=c!anD|cKAQ7xJ3d;0-BwT6f=s?9JVr9t$cYJiGoN9O8o~Mf)_^ZOKu;Ji;jVk; z&FPY9@+dn$eS7G%<9aYM`biT{8`I4r-NGtohCvuGq-k~;iCPKAz7IzFk5KyWjR-KN zJ*_wc8+d3I)${QNIYl)>I@WTS@F| z3bKCfrg9ZeMl9xUo~Qpp#5yn*dDo47!i9gHlWqJ<#YD_iaAly`@DZtL;N_3GDfL1> zkE^+SCY@D1AJ;fR-Qjr7X8$&oQU=915X5_^`CL6yp%pxgM0(Pb%JTbluL_%tCXO)r zNnvXckja0WlpqAX2`*v*VW$3lW}K#qwL&W{x%vwcOfL@A_&|txnc^s}lS(9`U*E!* zhlG4acwERgAO=F=exrARg`o8@Z{V9b3erxsDp1JGT$!<5Izr?6$ZsyX4oMU#|1!DM<7amhr=8YB2~dDpg>lb% z8czQUfR&KaYMLyj8xuqtrKZLBSoHcyHRldmJEDq7$7dn8!meXKr8D&E>v=jirk9}qG6aBPG-RmRx!oo5M`TgcP7*}u5t;>Fg$_gYT{h_ zq=3CjodVCG+enieXJ*FeE*SW`w2a^tQZCnpv(JO)SiawB=0{V@kP8s6 zBG%Dx@$06sKD}h~uHr1E7-Oq&Zr9RH1{uoHbkB~a>;`*iF6EA->iZJMQk<7}d4o3O z+wi$8&lhVcu1Q?%5RGhU7mu#n!kyy2AXpKE|K#7Vd;8j$Q2qe9UqRWFO9FDrZRz3w zzw=YK*-bedow|_q(Y3f!B?6Bva^D*VO?5Y=L?#tEdeVV0iG$%x7}SMS?l2N$yYPGL zcSQ5$%nEQ29^qwEIKxh@yc2w|c83zz^(!ge;3W}uj}065%l=jE@GqfgmH^m^9jnhgt|z%!*qto{fx$&& z${&0;&RrAMXKyQ3*s4VCzyBI;U?FjBl5N>)daP2~^)T<(1^{@Jf42 zPR}}W~Ebrkge;|%WY)-eA=(WtHqPH->u|u$nn3BX+__OfYT@s zw9CW5UTM4qb3c}h(e;TQYEpkFAj{dhu;}Xa7D>nj3fgJ(3?43rX?7b$Ldb$c-aIs?0s zy3yUl(g0t2{i^RYs-*^=A}%qHWG)^1;4!d6y3Wg zWFVIf4LJHT#T`x>nnMBrK_AQk9}!5m**EaTt^ajz)$6->8HQ3mtNE2jNaMl7=nrpO z*Z5IeAfF10GNNl=m7=gPS!jt~udQp>lUG|IA|^^e%VmJx{ku7f_JUHzB=$t-3#B;IbdFEZz8AoQFb&RuGS*qRP3eK})c4 zmIhlpc?pU_7XYw@jrK37Ypt9y)1zj$Lum(-`kGEcgj`o!ZEcGFS>;ixnayiY$Y@unDO8(^HA4l>VH@r?n|G=k622pcOl zOZgZ+oSfkUxi>uQV?ga$H5zLX^J=*5H6P$YwPVxXbXetLjL!uwx_N=b#LT=kdK5? zfdUUH_3wiiY;fOqQA@@$(jIvPT*z~p5c~?SloVU%wGzQv3NY1+%kOb2^E(%zp|=%~ z2bVPp*FVfcJKr-!Nefd`;;29XZC458#i<}Lav zgk16!<99-8Fb@I)eez{e_ZXEYf|yMCi*R64W-^~|}9i<6k|mQ)sT>$(aaJ+Y+g3o>WE*+KB`cos)Gmm^bxg7W( zO#`P`(z609fin&Wl=3xe+F8Gv3X1L(B@ z%oX$6T+Y2aocisCq_vihoTu~-BdMf3%1u(AIdHgad&5=pxxT!7bO!Ns!2{X(BuK{C z02R=-s@NDK}RiqmXF;n}&P zjP+R+nD*N>JVBz1CboO7KAmRAZY#9+?t|Y=r`H#D-Cc6ht+rQoOi{nd%-&foniO{> zR2<3ZVF}tIY_1Hpa8hv3Y?6OM--(;ozvnkDhjnW6J-+6!JovqjFI@P;;P{5J8B1x~N$f5&K?XY}5fd ztO$w99SFb{DN+AqN@Hc2Qfwd;4Yl*Jlp~Ni5qWxjpAvQ)6Jc)cw_}u)A=H+>&^riC zSh8a$jN-E=;D`qZ!|cdmgE|z{(J%pInNvZ%NNw2tBb?YQn8$UZdsOSfEcgK$)i#C! zurrLONng|{lc7D=a2E$;|#^^Czo?317voPDQ)+dlVo0V)B_CkrNIf{UqM%bZf z)kw66&(1mtjgcKiDbI8j+l*8lr72?woy4?~*HqQ4QB}TOYfTvaioAtqPrh>pfa45q zwswL^9=^HWyPc=K?%P5@sU@!60v*sbKk7*iiZn$yKlZmrrd5VT1EdW`eHsSDei32U z6zrQ0&2d{|H_f79O55%(7in|0V8>^^pXItM#jUU{Jrkpxm>!#Gn?#x96CZuPygi*< zoBu0c@;}+E_9t=ud%^`3qBGKv6Eq~gog}{lYT|2a4u1^-bli+dF8 z|CdfBThO;yAqSuDabzkXpa|cSjT0G;jWCw4Erl`Z?_UOlplts@enxbp^z`*?BM3@P z!+EJ@@5br`TJc&2B|$@-O}=%Hh)BFXI3!^r%uYuBmc<;A(0vl+;7^?(?ptQ3KpPu2$dHJ)MwrmuW3JO=ZasS$+h z&dF*kt!lAGr=gI;^GlsmkBt# z+t2$-@*Uwq>&nz^WApIOE&J0BrD_sbq#1S?iT-to1QBLo#QLD4T z*+BU>r$zjy3|2|MSL>a(BNknGca~$Q2yZG&4u4uqFN$t zI)6Faa^KA~5ShuHZ{kVNaJ4*WLhq6>YH%VV|dUR#!&p>B}(-EknALUcd zidMo6b9(6qIdt!XVN(+0dF37M3eLMfA((Hgd*0^Stz>d+XI^ZxdInMtb{@=>h-~)z z+DRwNn-plah$J)U4#dM_(A%}dV2)%RO5!Ih<&7y`)QZkW80S)L-eSXDN*>zVjLoGS zUSQE#33?i=*+~N>D+2wG(5K+}CHw1~=yCqhZoQYdDizouCqC>v>=H(ow!}*h*uXCf zfXXJ4qy~Gx7GHbZqqgTO%EOBBcV^YNFi@v1tRcy8Gqv;Y$f3|5`LLp+@?aj-%}5&;Qj<{Ba<1ApzG$>WVo zoM_tM1y7LgUe2EDRZ2Ckob6}w?}#ApJ!a2FBhH~N9|$m?)nSD+)`WbJLvC3H1m_iq zB;(hb8&;dxXuFD65sCMRmK=)ZT0_L2<-#pF>|ey8;IUXPv~1-J$)w+VAR5$CplD8< z?sB`a&0==cD;Jm-nnvtgy}%Go-d^rpmfp$vzP7&De2626q0rH_Q z$he!`*LmC4zpD0cuNh5yhhZ4|i&U&uFgsn*`G%Vlgsi18CSBBwG6S3b!vETcmI(0Sn%L zn};BuJPRUIdt(izgR*2a!I)K_~4 z-in~_w-1Pa4AfO@@N2lh~57&ax{zy)8keOA}(xpQs z77yD|sPFc)WRrQ$$K#3NB}I~D$y5gZ*H z=+dyMqbBb^l~F2QPzN4!(U;ATNo5hprU-T+2uBVA2uAHONhZEeOTjlS9jnQ*KiG4c z7tG+RKLN5~6eb>AMLV}{iTC%<0nVu^{?0ss!kWWs$B`x#&3{X_%kW(VaG3!=A$x#6 z=`^;ol%fNs8u&LysrEi6$2$=NSZ9$VhfRZFTKGLe3>J(_$)mU9%luLt5Pc+?Ay4wn zqYsZ)hw>euJ~L4$yX`O^Jv zR`2=#^cGZVI3Znbw+*D7+!d^ayDo2PN%(It>$}bN=D5aqj(`$W!>X7H|Lbyd+|Bl?kvJZ>zcI~jx@xQ zV^}9?Qsvz=bmKJuO{!Jn3g&y5k8i=5XM}(wm80;JFT@knNK{^{0A_~9<+wbFBD1nR zdr2a6sB)tz(9dc7?ge2!}-lzYFXs}(iqW!2+RT+Smx4j9@XaZlDZMebZvNfdR!b6z;{5?t#0P2_@%D~ z5mp2W()Jx;-dEIhtj9Zo-3Tm(U*;*E=m_K3nQVp^ECzs%%9sXU#n2U)MlHG(@pjCk zZz9<2zYhCtIZ}li==Inwr)nFrW*jJe_9>TZpVvkCkFgRJyf5K zkas4f^ds|HJT8cMI1-V!eml2OkwzcbopcTA{?rENkf=7xeaQ2vwVwG2yD2dRmf@Q% zGxRn}?|S3@m&E)8BXg^9<){iy2vdiqL}bK7u^HbbiG_=oymtD}OL@rI#p9{sa3Iy? z^7+QtF~;<~^zC?mLc{8h!Vv@XOKb+vnm;Y7Ci}26Uc2$TYEF8`vIOL3iszUPkWH(Q zcy13HvCkz5FV-KYo32SoN_I&XS3=6-dw3zM?C+A zwd{1|fJ<*cvOy)q7yX#2H{9S?a_Rx($Wb`a-m}|OJyC!}| zQGi{;Unl-Qd|TVA1QrSTJ-&~nKL@`&9Wt~{5iWj2{j)NXbK-j=Q8YQSze8XOa~L$; z-(X`6pmaKQn);sslu9F2UD6T|2(0_|B4qwo7C;1c zH0ni01IKHjiA_~351Mu2Uw!zDX*!wU)T&iHx*eVRt{94xdf|9iPqKi}>x-4!<4Kf{*YR(~ zh}9kUzCa-vWN0ohJj4Lq)6xqyrkl|>Z>k%QZUCJS{m3I6d-U!T+LsoCDCj0~>6U*p z+N+d~ehhjoq6{~Yp1$q@y#n)=gmMAJ!7S0!+*{6^s>w9U6W^+plZ2rc{NK{10Ef=Q zW{d!p#|8S;?V6wCE+ujhq(Abt!Pwo-p(S)DJ$+UGb!+sc!zmUzjbLSSe;~dzHQUc-a?)Hw}m&|8Xek#gev}iz?U8i4eQY-TsQ$RrZIt z_wcz8Kx&SogUI+s z$4bQ8g`|o@sLQ*Pie*TLUQfr%E4=zD4tZmv#pNPzv6`K&_@92H1@IRIe$PfX z`4SsmBx$L^?<>RI>mwfjMs<8Xs#e&Q=_$3E>27kRGup8#PZZlO5mcBEl!UiTuit9M zuen@24j1dX0&hQPQ<2I#2Vs^ePypMcG~)Q+9F+l0pv#t{d^ZG{EZ(;YdJ$+Rw^e?9 zx|ARKA&~YCHyq)}RW<?m_m6KlcWshl45+HhzX0jioQQT}~p_r^(eP4#ms$!baoJeyORGZJz*c zdTk_4_RdFezMs%XuuQ8Ky}PZtHJc2@8cXWAI!by9)bYeMAh%a!Y6}>U=hI6 z|8Wx?hX9BEzIpQ>H<7LuX{-hcXsAjV=w>+`sz%DAG3@N zLQoJ6;5rsRN04w@)z#1^)q+$NQ{8MRS&pKQ9|*FuHy(4!GM3DEaqb|@@59np-;L#rO! z#mW#A6N10Hj$uBWo6CpK0h@OP-Qw7np%a!7f;wmcE&MgUeOyhnUd7cUqs1^sk(X#VaxlOd3p>Uary*@uFq!=HhFprEk-B5KI&cM z%Gy29)~`?>vFh_AqFEaE%Vh%=pD^XN5N0_$sO$|Y^k+sjx6{R;#Exn2oH3??yi*t? z0;8?08gJ5s7LQA%^)4u!)LeEpo8`#t-%vHA^}$WhlctHt=`moI@3_+yp#~a&%dm?F z;4pO&FqlfNr2*vKfpq$j%x-LU^bj%lk0c4CkRe8o26p=85B3PPO58uMx}Md~o4N4$ zfOhbW!N8pt(6aoKpvVPlJ{E{di;iKSK{;Ej85p|lCpZgrj}x*BF&>)XL3|0R7`kRI zs}?WlC5O)=>9)ErJ1RjAX~-L3akVfo9!2lEzZ~{P@oX;JcbsUiShrr_uE-ICdQK-z z^Q5xnwzg9|J~HMyqb`{>>c(dW5b$~7;n`}8e%7cklqH{bQ0$Y!!Pu9>MDMd(U1M^r zq5RfAf`?{|ye()UFtD0I1V>C|04Gy3ftj0`T7azTU89bvWxr zH;xE%^gJZc-427B{0&&2B}pOQf1B^&+__vo)nv9yN1A`L-PZj%gZytEdi$R|t(MIG z?T;m&ts%R_h^YGIo)JR5V7_qu6SD-Qi1Fz+cT4TQolc{V05qR7Z=F-F2|VGTw`1-k z5Bi?rHJn5(+m++>$14za2wkqu_>n?7jkQP_Gajw6>9E0AC_;25=Up>qcO!YiAdj#} z*t;Ga+RM)%B{%-nb~nmjl5qk0L;sx0>b!IHDGFtvR5V3tygh-%?KgM#lgFCkMD7HD z7qu~H{SM;M*ZdXMz(5hb8U5@)_xzOLr2B?kQ-M^U#T%Ox?r1_yuXq;dnY;qf9A586tXC0DD}Ts8sa!BQ)|!mq7M zZtr637IJZfG7xX}Hsx_3DTL&S5(~Wa}4nx0U-xW18!MN{yA>;?i`>i>;#R-7+c{oSu^A z`(clj5Hx0S<~Z!SgSV7HSDZSEq zu3YgRPBp3)dZW4ZPq3Z`msTRvcaTuZ6coF~Az42D!;bbT$$;%}z6%g#Ans^|-%Sqb zk#VWgZ<+U=7^2zLCg<@~-Z+&O*aLjC*kZA)=X?hChSOAssm#al`x<|I#UQ2vYICP| zN8J!0=ntxZ9IVEWG)k)Ka6I8y?zy3#ezm#^j5hOBR*2|Uh`Xk;0kV_?bZUzY=`s+k zB%1GRKMkWFWjjF!HmTj(P2gdkNhZHS23P&KmbNjpnNclV134Mx2t!$(cNNx}8uib^ z!8dbi+Rj>**{JKSRzio%T<(mqSN8!#8ld}oCvIbipFIBEQQ7|T4Q&7T?!P&g|Ac-1 ze}P-95cLcYLZc$}3;|8Mxc))@{~D^J@C4!>ZXy;3f2)=xEpsssG}Dzx-;qORa5;z2 zsFfSCeuNX6U*}G+U2aI#s`W@Prv-XqNAFMYhDm&Zb+=|^ab}oWBKjz4&M7=7UjO|2 zL^y7N9De>=;}TPNha;av`IC6d(L4oOaNoZ-yNi3o0VIRM!%Icdy&UN4y=a~j#^Mu! zzkIkXuDk*TZyS2`Q|==yuST#?jB_Cgx+zka!%L9M!5xCL=!w`{7vO{d)u4e+ z2XNp`Si4L+7-s1ix@-Kg*$*z6c$Wd9rwBl`G%?qzjIsEZOUdQow`Hs}{l$Lj3nLdN zsDe}iWajMn5US;X;^0Q5Fy32D)-V<2km zI16$b?QQl`Q}VS~1%_ZWZgJ*vz4vFiX2$CEXv84XzUUtVs!PbwTuz%IGZZ8#yl#VI zCj%e5`=H&`42gv`)}Clh(N4cUM?~U zb1Iq!zr*K+iQ@V7Ziz^X=35MAK!sDN0@qMR`psO{B?-$aOUYRnx(pra2NPL#RvAvKo&%>$ z{uE5fg|b*SL?WlBUATt8{Ni}d_jAnA&W~34amN+EWcz5$7;Uq`GwJBTwYeAg)-J&S zYiI8Lr5NC*{vD|E7R9@DdIN||1)jcGMhP1I^VG?Lq)SOfZ{Idjpq&YbBcpZ`t`{M7 zcqBod=KbCz5?3^=XJ6&Eb6u z?)j}Y<~%KPe?AqHL2szLjKETe@FUJhx6l*msV9=eW#TYaKM@@{yYQdwVf8|dustSL z>m7BKavfGnT9A$y*tbuy6*>xWSDEq}RUnASMSUM*7Uq;Ib3|&Y9yJXiM$Px?G0(w>GFZ~`BGWa6om4R5Y&$~3-M5FEHVnDP$s-Qq*iQu&E&h#KJ0Z{TqjXM=DjAWf{>fd=hOgZ z)a45_A+c)hu$0Tl2{Qnu2?C&+85xWaw6H0F6d_*)Z6v>sM!gFyN_va?`1a|+0R8-q zSlq$iD25PF)^xSPEa15AX1Mh!FoXjF|HV>%tbf^AtceFJ8vt|9p$Jv8;Y%$Gvgi5$ zk}?Lv7PH+TuM-a2QC)O)CL50ZZ`1vadw_nt+JUoroOb3BM!o>l3Homgc%&Qkh9JZT zoROHpH7}a=j?b+Co=7SYm4CbX8mo?|I%28sYv_UFA@ipCwpw{W8TQtjBlEg>8W{MZ zxQVv*_?WU$KGTQYFu%vNY0=Sfd++jWV}lBejB~U?#x_t-744aM%rZh!^AEMOZwVMr zSFRlzS4;cuFHascs`;EC_@z%vPJ{v|+XOnK_KN%^Nki14gDaIe~`7xe?Q&g-hl;2qMo z_)qi(_j6SBCP4uM-}EI_03O~_%(A)L1lrAbM>7ynUgz^{_n&W}u{GbaIEy31L#hqfgq%f!K`m+N`Qi+?)aKg*0G>{Kqg z5Hjz4NsQ&TzHx(0gedGV#Clbr;oay13cO!l9_=6QcWa`DY^^*J@dKG)6Vnm#IKn=E z&j^6PU&!g;*dDeNUnO90%}e%dwMdWn+7iLJk!=Da*6eUJT%YFrZzf=UaGjbi}=3Vlv!mW5sfB3}ZVHZAMDo8w;MPN9o@vm+<)6Z>&;YI)KtUT<+Lk z?HM0OowD@YKSRTZmu@5>|MU&jLZSLMCkC;yxdtJ3h)`jTTAE?ftIUh$&aNWDgU4!P z)Z)gE|3px0J0(53bHGa#xl*nk(19J4^<{t3sru)lRH=);L3omOo!zEXvD4=9SEgBD zolOmz{8>do8Q3w`I1C^1z_4nM-G5<^D-libONYx@%Lu_>#@f`{WdR_RZQ`H%i6}rvhUbn}TM=#V%)c{EV z6sWM;@^a`&Es@vVb3<1o^AmjiB| z8q`hJoBfjwt?beotw7W1(;eFef3lQ@s-QO83< z2EBfp%y3c}<2S8bAAnbsYkf<&iq3Ml8&9OAG#yFtf4P4o+{si$5uKdZS^(sRO5690`;_zre-(T^h;~ zjoLT0d?sd1NEPAn{dkE;9i#d$yjU*t&vad`??dD5ixa5#H-1I@HXUZ4@p5z{oCJO^^$Ap9j{LXB3(CiSuAD8APBFlj-z%vt zizCbRc+nR9@lAcE#O1l`K~_jZ*OBM@-1MXy<`zh#N>WkW62!^ld}v^;zDmOn8rf`a zuj0~Y(5*|)JoytQ5?b{)rlgoeL;x%&!v8W|Xulgh+ULyZx-44$`-2Ni;i&20 z_tdwFw@@VThA1Hug`$Q_of!UrN7<4nPsDiEEg0j|1JQR4a46S#Y}WDvjFm*rh!mn! zf-D_&*vmY4+l_c<47`*#7@I58aCv;{8)gheV}2m)@O=h9IV z$S%EBeKs~k<7U7_(s%#{LEd5VxIS^(E;VKB22K(Kj%kpGpp(tHr1q5C_VTHj;^6n* zxTA#tl9C2;$Q*y4RnJfg`An?TZFlm{2%*k|#x!a}=QcyDm z@P=XeaF~}XVze#%V5z2@mEc%-G@L8v0~$-IjKN{I(|y4F8D=MLis_%tcvG!+9^n{j z&OH$gZf;;kTlK)1@1tpdx}XJfy2nz;rQ3{f?VW4{Ujpf9R7M4RzDE7-J?2@L_ZY>l zchG~WEHF#&Ncmp#`FuAZ)vr<3h&x18<+__Vfd%!6<98Zc$>p^}z6=gE`J-6}G~wZ_ zJyB_QkYUs-;AN!fqMUs4{TTMJf)Btr=+xMcK1s_4C6}UaY4>BKLTCZ$=MzQ$$pMxG zU~FK-St|KIxY^Q8OaekYv2ujpVc@C?NseNTHL458{;-xwXAC)*j$UnCl*QS?;WNWW z#J+2@b;Y4fM20lCODMQp)QMC3$J+L5apL3QDBSys+#rpY`%Ssr;Z0oJ27r^!wBDyV-NGw(m=Ayo2wNc zep$MQe))}KSd?0j<>HDt5~b_c4nD4oDRYcw_h$Z*lJm}FhJuTp7$v~SEByl&XWT8} z8G&0vykj-oc*+YoCB!$@!hkIX4VCms0CQ;|%|cm6b`SwMQQ1j5EzS@gh{?O`S&$5* z!qHMH)ZGL8&1Z8}hD{k2>w<(DzzF17r;HUBRcEI+F6AR0B=Rn(h%)oYfTT&&G_)(T zxQpaM2x@1veifr22?*!yi@~#PwrKz5?rf?-YeVpb|I+v z=xxi$p|__3g4ejL?DWk}y+$WGF`!2NbbF2Z?`S0`m_bBA86(k=Ji#cc>wEMv1X&LA z!MVxm@nJ!(rrZ4FCXq)ElpDYZ@H8@4|A839SqzyV2H#%L6%6P2%~UwHV|gD`;LCa2 z%(mQ~3;1=`{JZ(V!lOS@RezTreBWh{HLa_311c}w(yE(?FH_(&(i@6M_skJTH30oa zYmcOm+?r%=qXr8Q*^q<3S|FQN$9NzCR(QFrP7QAGRWQL|2qG#hXt_ARqv#5>i1GG* zD7v`Un6V;te7Job@z1IK3-g`zxwKeO)0u3}sXmW-IRFdSJ zZE{eupkzTMC&^hFBqs$#GJ<4~sN|d!fhOmS z%;=uK+0+xbm=@KtTQ#lBB^*|5GU!AH|4c3Mh<-d*9%ynTC zog!^=TE?2Da|Z*}1Gg!CgOMtEY6yrM2g=&f#e2E0+Uj5_CpXJc!fS0un9XX)d%Yk} z{7?WO6Mtf(z{v@7u<*B=ygpHvlI76-y0ns~b_NH)VzW8|wU^kiV`^SLakaE!P!_duOpl43N#R~m3=u_6AnbB9jCuYMDY=w#ehFGsnYM)6!{DDmnZrO&tPbu6 zgVpo>Id>_z!_9J;m0nKF(yI{oJxOPHzyrUt>nSn;WPRKK%~op*-+fY*_vdw&y795F z9sSj?lzxm<>LmyeE2~j9Pd3z8ZYv$2?jRkSQ)rea zW4AigjyxD%np-QVxgBplg%1n3nN@omFEm^|4q-`>F}Q0GGU@n(&5fNfrrLi>LqJwq zik@$x;4bgb{=>$e__Wpjs13(x)RK4Ld5F(R;=|_(dnYuIz=!YFa-EigQ+1LAtcEDZ zzelvxWt!)$c~%%T@AOP{VuyM991DM6wUJ;s!t zd~T}@sQWeiTX{KZ>9#HgQAX4fdnDiy-U-+Sh**$0N!{RMC44s{$o#=qETRoy>n%TT zBz`G>1tbiF;V=(c)SI))#Acl7KLCCE%jzHhO7-yo>KtDL`6gAx)bnEx5lkqUIhYYs zR;(yj$Cww|AQFyZZ>zNETj;R>7h!cDD(Zh@j#Q+K*Uj}8d>7J43~wMl6SkX@iK&V< zuHT)lOw-Cy=`7tjB1|vhTge&?U)YYuzxNUuo@l5WBs)q(gGjCs0uuqy+?N#&-6>-A z{W+VN{Lkf5+GKDy`+3{?&seM9Zwr2GVf3m4eD@VxW}xO-H0=G;|77ncb^zRdesyu< z>l>iJcTMv0`rz`zX2yEA9oh;4X&Yiw$td3S59)cq$)H=^p3f7J5GL z<4t;WNbFpl9PM1}n(lRoQ-_-KF8L5uXls(@(Bdc zCTeLSy-%N&-M!FsvwKDmtk@IJCTX-QVY3%T!s3|(R7*zAo{i2nNk09-mjU4Ki%xI~ zj%Pg5uYSa~+K>??F|aG;sio!KMnQmd6`%J5#bT5c%V2{1EJF8LSBjNBpev_~Iji?& z2acHgu7o!^VlYkl1B7AidF7OtR9%5yA2SIYB)Xm9f4$<|6164V2EYVeqUk@gfdbYE zMdPdt?L^4;)1tCF&iB%~Pec+g!rci;<+x00AB#Hw{xVbROs#hDMk;7g0ClsS=9)>? zNzolc3_nC#plfNNGnw8Q;$&l-g|aajg}-%CQgwG%R#Fami_XNv_9_6Kec}vRJzv}3 z%C)e zzI(B^5pc1mw|tsS#Ru|@Sx%R9J+C5;GZx;IQA%JZ%Tc}nzv}yNfBXAfB zr*@u>$s5V{!*N8S4qK>slRWcosn1*ErP}>0^m@+Ga$&>=4{@w-ULOlLb!|CvlkZ}H z*HY7Q8XS0q>s>bZt`4`jA?vp4;o5m;7Lr z>e@^hVrIJ*-T|mbe^{4cfbp)3n!Uo`zhJsBt2TzLp4chh|8KbXqnfRV1Xm$&>ncXSS$`RO9Qnwn; z#qsJV>P5vSewUX8IEA#Em8AF&vm5c5z;BvmfR8oi0+~l(Fd8EiL@ac`_=+#)j7iX!* zmG!OETa+O$GYrh$wUnr~s6kw|P89U%+0gexgP+zCE$lF>uJ*n!)ZZjRzkO%`m^k)8 z49=6o4%|HGEd+A=S2;G|X0;}izz6cZ&VT-all&G8Z>w)$0^`PH#FL}rBs}_pCoT_( z*Vuz>Bm&<_%~I{Ybd)Ias~eZJP_pFw~FM4-@RSK3Dj?C<^_7cfPTS0Fja zZ$B9D(XXiWpMTu5LaebQ)6);7b6%by;o0tXqy2XH^ZxOYaeR^}%8y zEVAS7?XBBbfSEYO%fY(+nHloaiM8RQk`?gF((RfoC6|pbBm(n7n&^_VYsmzR-?EN+ zaQGtzwp8ZL6;iqQj~6U*o?7|M1uektO)gk^@s43k3%H;|i!k@*^$g z3+|s+dJ9n+xV`b*N|YOHV1+|(ea*x_=i=I#JI7}oMuhp!y%u-_u+klcG`+9Bs^k8b z0lUiSsr1T8e5O>@c!zlPgYN}^aRxnF2fb_{NK1PIXd4^=lF8J|XmZ)z_8d*|^Yzw_rjH#-7h#UI1n<%XV?-M^zT6U!V_q6@flK+|Rr4N8K%xwJg z`;Y<8y8Lo0ZvXfsVlhDH-9O@Zct!Hh7yQ>01k?bl4t1~l|JL09b@~68^nf5WV9s!^ za8+;q`GWtx8t9|~h-2DU;Em3d3jZE<0O-l>oEsSfr$o2@P%n*X;n|E%^kfKKP@NbcsWsFdo#pTikL4F1n;(N*;JV8`GHOZt zaBx6deebRI{%@)I+l~UB5GsQX!E)Ug2&Pv~;KMbb7`{gY>MVUNU3#D5Xpznr zQnp>3()NEF7zAB7sYPA->aj!Vw9D?>9>b&+Q2cB64vpL zlm9=I?7qtF+4tr4G-lD=+@3^QcJ~{xH`&il9r@(omLGOl$d!m4CqTh#w4!E|g4UF^ z3H!jkGxW6j@89l~8qwPmjUHu50dn0QRCIM5`t)MaRp;M^Dg*5SSM6LTTMrtvV=FxW zb(z8phx*gMxp#Z7P;&I!h$BFXy3y{d1-e45_lxfx+307wH1}4YwgQ#vWt*=~QYIsQ z|BOqys37qNU7v3`oFfs^BRFyQlvMx+F}ykMR}wKO0B}-&)r4Hfd$Ym}`wXf{d>*RC zvl88Zk~~t%A24*q_bUKU+SL+hy}Z2R9fmZ{_Bb*vQFodU`*gvvB2H#1W)DI4V7Ghs z)<9H>E1L(-t@H?U+oHs&At3bm)T_Cvv7k>?icl;XbBPCSE`aZ)Pp^dRXkmiYRD9T~ zQ;qn0Vvz6Apr)6@ykA?0aV15{kKbG~cbQlIn8ieY_NVE8OyYl8rq8!~J;t!=Mv83n zxY4NR3aGyggx;hF+XX!X1+@{R{CX!r}25VJuyig8IU)Z-EpaO>^`PzQb$W+guRm(GWF#wLZ;nH^n3YqXr@OS^ zc0h`QttC<>aLCrwH=B6AmG*ME0nH%M&1B-;YEU{r`uRE}iJEx=l)DeDyY6%iR7(?k z^6Hm#sal+<^Mk2x=BkDnTAR(CIK3IovBrC|ddEwhxlvXNcjm7-=QyqWVnMe(oi0uo zGV{`XJ`8>Fy!T`1deWgoB9cY>W(cd0 zKvv4|cRO**mBP_n;ox!aCKaH$3y#jn<7S^Tn`D0XCPvm%oz9isq_{fQotL@dJ3iNE z6awa}wqh>pK*jFgH9aQ-frMHBn=)T3CtT<3EL=_AZdu%QS3&x6KhRD;^G7&Yk2a9c zW>@*HM`Y+qcDYQ&aZmVscs!B2=(~{3SbR7cr`fc)LsFSzocwKXAcTSbGhvL+@5Gbs%CiE)Nxq{Q=NvY`1@^NtCa~AdXsC)>!?|~g z6W_mu>&7r%;hebpy8LkEm)5M)M0iO=m(Ibk&r#T193f=C)_Gie( ziDELl=_c7@W?I-la8!yVP}L*d^Jsl8;mz+KyQ0l6BaP7y*uZcPyS4sVz{6z}^S_4U z-0ze`X&fwd=DTbV9~ma`soZ<{;K4$g*D(zT3{rQxTGl#}={K9d!zrQcx<1i~;HP!4 ztpLc&<=qupV-KI_7xOZ-lnd5GodtlT1BOc0>XN!Y_b0;XLI6^NBF1_1i|MCePt#`X z7o8i!7V8~9fP*}#@0+H24KNpo*V-r zetd*Sx0=xg0MuwXt@I@1c)2d$T)dn*N)m7!&=|!c0wpD~{HCieUnFR^8PD#j2O*y0 znD2g+@~w+Sko<%Ldgt!SkEHJ6Hy2}1tc}eSK()>seS`4rWRnv@DUtlSv(SdU>kF%+ z9|Qg|$3-GN1i*3i7tFw-Yh8r{A7}x>4B!fyq&-7gh-8@<*ru*Qwn52lrQ$I&? zSS*HZ7&$s{z|P#e1tSQ31ZWI1EpB0nbCp|H{U3}TsMoED?{1fMhGGlFD{R!@_?==o zHfkw}6Upy=X1N;ptGK|)x!yJ5p zm*PVEy(UBDBfEt{Uxs)D(7Dc@9!Y1v9_1n2{^@(EOQ!3dtwv|bQe?GWDKB0?{b8XU ziX)y|aX9Zu#S`a<1}fh-HZj`z&{p+Kmpre=j@yWRo$H>}Yv14RM}ls$y?uB4;6zh^ z)a9$q23Os*TolUl2uXP^<(q7Mr8dsjE%q_!eCpSvHA0#C8Ad5whVHr~7gnGg7YxD} zNg)Cj#LM|qDVc{?A(k?qo8u#AE;{BRcF%*2>N{xH>7g8iFbE4CJ>TQ76b#1J!fT$@ zC+lb&2n)}LT^t%f0)ypHhm+rIbS^IhIneFgMb361csh>}s%ENTPi9vCx6tiOIq@&G zC2?bl6Ub&B?&i9ixgvX$)C*Lr^+vtfb+hg-HA;$u$5pXIe;gRMiubcE7}yMTRMU2@ zvr_a|2Ml|b93&KtIojp*n*e+nSLrEEIeI+jNL9%?cg^n~>+Box*9_3n6W>LA94LFi zY}kzAQP=-&OSIB|93*8oVNi;99LAL@?mLVLYmJnLXdLg2hZO3T6xTxyXwb*jGHc6Y zv1&YV;_@D6Gs=dfJfChD3HNHeF7%`|5wEU;vL?@=YF@WS;-AtL?f|v+0GoDs>&t>3TYzW>L1$^`9J`ka}@v0?#Vc7Y@XO5s|jt$J0Jg@1`22ghN$5Dh80f705 z{ovO6EZ54`gpd}!CkhXZhvxeQKBzKZ;~Hfr0?Ds0DGATTdUFJ-L7`Ndo-z ze{_QRULNok8kD}@dGeC1qlLAHnw%?D6+y`XWA;Jzk-hQ=C;OTPPl1Aq%z<45pYyVT zpAo*XkqiLAGH9h?BrIwVibEYJ&~f0VhFIo!^rk_mfp)^dxyC&r34#qsD(55}(7I=}x*8K@dM@=O1z6DLhoSj51^ql*FQ~JMB~ugwRkMsQQZ}tMLk+nVD>9=Ez<@y z?m}j5Ft!i6jZf6Q@JO!n*{G=f;F%AH>QHC+9&SB`VE<9+fg(?fi-E2}f}&d;K-EzV zKl9OZU}H0a^~)T2k9}q>94&=|cX+#MvG7w0cSR-Jg|qiW*764(1}Cb!iiY=Q8`J20 z1=^ojsTktGp(4(A_Z7a(SKFW6<2=Xd2!Z}!_juR(q7{x9y6RH-4X}%{OPkJnj^29I zgW--A4MR;NC4zEmV4(R<%*p|8a@V6GA}P6hfYqyO7m|rKr&;`>UA%~`dNE1?yP8)z zc7a8sPO7_aCRp60f_ep;I>h-ULhTt|K**%?>L86T_CBjK!!giyykk$_2?klsB4dAg ztlBL?xJcAASe2-y6Dne8;!C(57j$8lxph#ng0*EyNG`8<`s-OQS{CcI5e7H^R@8}p zGlQt}mzt?Ky5o|u|JK8DW)He2{G4@doHY>x@F`o$Ro{?+ zTD4=0tv1e7$XE@&caLmWJr2SH(GekBfGJuH8aFRNrFy>0i z;V92$yyIbY$)f?;*S_s@w8|tbogOaxZJiHo zD>3#S?+*p>I9*P>En*A#CBk)%ns#W`%<17C$m_bH^>idA>5!*6^=#bbHfho-S+(zz zelbG{sM~PCWGp;t86ecJb?}VMr~O>8{P5B=)HR()PD*0Izdc*Avv{d^xR|MsIfU>N zikc#8A)W4KjIurSLdritSj(BZa7P;w45VVmMR)`GJwOoxK;JIkcOT2Z6w9h%%K19RGz99OD!S zaWWK4AA?1>?N5^5!{&e$P(u!S{_ft6v6XC^xNGRQ4-$uTysJ>Ep}b}*^!k+6o9$X> zmr}-;N=baLiiZ`4DJ>hLEfBOQWaLTn&6Ro|V?A}cRewfv=K0}-`Ez_ip{*+rNX^{u zc9=)c_U&clYLNHs;~9EHY}0O^a>OcLb7C^!po86Rv3SN-N#3U>TRq&$p zS+S)i^1L^#`mGmgBjh3bvu5Y-_S0&8$<<>&zcYPzY{u{Hk=%9+Ja!-Zn#GdQyR6qU zH5W}crCI$o?efrZ70}ok<|K$afyN$>sH9(1P}z~~y}RK2j0rm(+nUa!NDyig2DJZ| z{*X2M-I=o>2PrxxHv2`qlB*%0@7;8al$grX!cm>PV6gRgH0Nu6^eFk7<`*gF`iQw) zY&M_3y~#?+kI>%YBcb_4M1X>3z1tIN$-^hUmh~%39%(QTELqNR+R|%2d&S50S%rsG z>o7GT#GimpXa-S#03?s#Prq?U2YDL3pXqiW&Qr_y+?&KV$yG?aT|2XC**ZpMcQ#)9 zTyaOt<;3PA7=Gypas_~-Ovl;tq*)Nm@X>JASwv6(PMmGtoocV0>2JrX^rF^yQM7_% z+|dkQl$;3DB%RwLt%s^G8|ypsm@=eXKO|qKgmn?bAAag+7pynR*D05B8b+_B#=gW*ok;uP@n zKa{V}-6CCQcS(8G7v&+KMa^Xe{DRj}6p@%)^an^YGr@R%j%#=WdtLV5{)> zx%PPP(efO%{HV#kXZY_kMum{KG-z{yW5vd;aS3Y@p&*$vq5YyC?P$W!s!2efaUZ5; zb_%@1CC_}NN^w5gn>39BcX`cq9ze%LuJ$OjqZ(w(kJ=G`bi6gn8}vx3)Zo0q>zAZo z8wYEHlN^&{FpfOrORbMp=o~H?*JnbjmBY>>z{l=0pA2Jc$q4-PEXxjP%+!q~p|)qz z=#`NEbB&uAmJEgqd|voIc+{l$>ukc51uT;ez-ZI^3YQJFkh`G#o#~6|D&~x!b>_DR z<+hV5#r#d7 z$YWfakwTkXi=U~JpIUxv6FxL_^E;VbBaMWvkDK^Ey#Wu-d1~;Eq-+f5Wjk9ShH=_$ zhzRZB&~${V|GsSQH7q9a+b#f&L_t;B6gvP+rtf!yXGX4}x&+L`=Pc)qUbqzCvUM{B7tnCP#4q7 zcMv7W(e(v3P?lTqO4rw<+P;wmHUQKU?;XuAXX3!)-EPB@H9gWwabsr#fQ5nb7(#LC zxXFYyCt#Pfy`ZJIT80x-(#eJj+MPchl^5rQ8CC@#kLnOnI4=xqtyi>q5}SF9E=~-d zzDrwU@sRO)=*@*Bt&GGZ`}L92oZj5x=#!Jc>ur%{5n9@b=9HmaLf0?()94TJOv&s;Dk^i zliaV1t8?3U45X1(bIH^YEW9~C%IlKJvcS`v!1vnRV8L&n&)X;f z8q@&BiH@;24AP)g^6X5APW&Y7g`Q*hSL0fhq{^4MYd!Hy52KR>thA6469I}9jo$Ox zPMGPwA8|>4l=jDzV+N}@uW@CfPImM*D6xTrpZt@9JdMxrcxe-3B&GN>4HuwRgUd)+ z+}m#UREFSn000TRMNe$$FLBE-xUYg+g(cVx&o_yWx1@jgDA3Sk4UZIPCw&_&e9rvQ zk$}UB`*~gDE!fCF<8uwv1A&)x4r5J|D@^nFO=D78IZW0?edIKNW!L%Zf3t-VN;o#Ndo8qJTRTlIv#1RmsH+WJDfrA; zr0dc{q5H15iZOo0xnvYHtO zbdli2udR2ph$E^>9i8-<+Jcuqmx5}JyFA`v!pjK>%|+k5%zFff{(fgkih3wRy?muv z^xE~?-U{OMAkOl%*-g@ee17&QI??RAr;Km32360}^ESa&$v6>Zvz5W!0+tLNRK|%9 zHiEQ1>VkqXgSU%RsEgXBg;taM=rVKB6aAs<0?H=S2`JFzzP@CUQII8wx9C|{Wfe$` z5qD3`_Pe0xVST~VU$5(^%D+>p5;9zCbOKdyRXKNQIpS1<^k9&}1?LqjZ5HBm15iD$ z$$d)yKMFpZexiG4=39!?<$mY^LG8C>@Dv<0ejf5;)?=KV@&0IkoGzt8wQ^=^*q( z=1pG9)4SEQ*2O`=DBs5OsHb*r!TqVVDbP^=W~UgzgJVuK&72c08s%0@3(7($>qKo; zQ`M*O{$xqLu!(*uXP}D)AGKSBXhPbWzt$J=J`qqiQvFB z$O#^r?nP+;5Ot4ps+g&NLx0i1RT)t6<|1s|Sx$%?z`fN2@_i zS3vaBj6BHE?bk=UDxXgFm3zw-i#bA#2Pv9Bb=#5D{L}*jT-2DQup&Rlg*$e%^hc`n z^uI3ln_rQPt}s#O)g(P;_)+*EzN{ucWzgu$RaD|;isb? zeE$XaWCYI5*gb27i#=^Olp!k|TJHrX0!=0;(h9%9y9cf)3Z#h__4J2{+Mm7>G+jE@ z#}`2DP3PdLc+!_%%vj=bn3yj%ng;51z2BX`WfTs*>Pf+R{H&Z7YlBA%Rz?DnufuPx z7&@yh7r^5)`0H6sK{?G=o{dI4ukrm8UTiyEIiKQQ>ptCKi|orb>DVi;f3EMz+QR;VT86o z=-qJE5GMP-vI(L3qMmIm*JZeH<9;zT(t|$H+neJ~Gk55nc%-(6azdDCJa*f% z@@Mk($B#E{8Z8HxasXI2Vk^M?ErGBsqyt~(KrL0;pRvTtJIbEes@*D7na{#^CenQ> zfc4Ev_a|C|keK zudgG*-b1f^{aAA;y)qchnQgf-yZtlaiDsb=+wteAH|9=q6JhLUh5P4JipHU>&`m0d z-%n_#uqbz<=p`jS)&xptxHjjf%ZqCkXiMAR%?-uAWWH354)_t?;*#8Vz9L*jF z{Or1IENv^xOvGnb)Rr@yB3~ONHr<_h%%MR_uX=O^rq@=ZLTFHReH?u~55>pMRwwzp zaj@#$J_FoD&>+1G5Qt5Hl3uu(ODz$JRGW2%4`pFG>oi=GuwKP7x)mB{NB8g6_|`tL zX}bu=zQ(JGGH-}N~H5q?+!VI;OL!_I@g8 zCi9S%nO(y>ru_ZwtH#<;J_9^aE602;W6b$YKv=rsx&(j?&!jN>H_Kn72F190&?Bgj zZ+e|~(9_)w#kVfoxk|NZ{Rwy|7{qLA&YBGCy>f_4krgJ?S-v~IID0MWrN=z;DQ@sg z$5sCG28U8(SvoPd(U9`*011}`jC<_2GVgXVKV8s80@iaGm}man5D532M>-5SHhH?# zW7wTdEIa@&IX~N~7oYGHBrkfKCq_538qwhEqZS7QAL>L7JVnW)EMGi)+qPEuy35~v zKZ@7Ntk;a)%~`-0Yi_oT2Lq(8_W65x?47T4KeOJ3uY zv_sFZ42f6N_*7zsuR6Vn<}serBXPXtA-~^c`qBgX#96tl+!zyfKb#^vN0q!|>21t5 zfTyJ#@aL*)7OKd(>U{K1w_O{g92c#tc+5aFhIBcvYSp>BCs0>8MOwmf%o>Zti9!0c7Pl|Db>cF_gD9% z7Jc)Z^{MaY+`=Jia2^6fo%Pg&7hN~&9b*{*kJr!S9UNCMw;s>P&~a--=i6(C^3GXY ziFB;Qgf(z_nZ%g*Umk>5*NibEaB+DD8D94H{xW{I_O|8B(TX3MXStWU>mFAU5T ziO73bJ`W*BFL$N4KEWGiYSO(gsV~Mnq@9SrO7GG=#BBhAT$ch>W|L+sjLM2{V6oAa z_82&D$39b~(nhUJA6Bd|Ly17KftUb{ivo+F`8_3P+(ijR!=S7!MH+gwvocY{5_+f- zF8t`M*g$f3iYf(59P98x5#e9FRvG>@nod#qj2gWy-^1BhnKGtw zSJAAgBkHik2e>=Eu;oz}aT{}!a~?sEH{&NB(*X#a70jq{HjeL<_Fa4X_`E2WLL?74 z`w#~Cii3i;bXwJwq}C220~_{-#(_M8LQ0eiIm0}$?%>;$eRb5Yt&cRLTcWv%6^p$& z{^uJkUQH^l$k{OD3;Wx+N&DU9$!Bf$TgWxnhi%7*8{5e4r*qAg8FBju(I$kU{`*&$ zYLw%yEiUZ&|hO2k2A zUZP<(;N*{!{}O1rLf_Mn%xyVTE-St{_D#DuSAQ)bgOa{t@f}Gkz{qdJ=3Q-J zo=i0H%V`KO>nDzcf+Ge=xwP6G>;pXI_1lM+aoPh}{iO~JdMk47UY#!r>CDwh7e_y1`p||W1>D-mK%cqtuGf(sM4%Ufv^&8RyR9L3)R~6VTVgLc{sID>{!oCO zqTB-S-sUa%{u?O}(g;wve%A{PUSGt|(z%G^!s!ubU#vj4E{XwyD49%nVj*~4Y<5fN zR`G2!;C-ui@qX$`f~8r6&rJq|pK<|^U+H@*hq;YZQ!?s=f7B0nVs6v?4r}e}J z>fD9$x801JTqJq)gDj|nk_C-3Kg(ii0rf0Kd3EoHWy~D&W;wc>N@DO@YSt+H}HVq;R-}^uA;Hj{@zy0^75-KKAKq@8<_k;(xGE zwr!rMetf9SAz|}E;|mDJ6S_4rXc1^8v@oBBP4DvvN6e*RG!sAgB~X4(1D+9rkI=rw z4K65$7YZ21Nz@@A1BnH(qaERaBm36I-%y6;m=_IWW0VML!D0u>vNI6=E%8FoeyI0I z3C>4}H2nl_1@awo^rl<|I%RnZSLg+rPM1{K4XeKNL`aXVO?z=~9ekvrl)(eZ>eCe? zz)L0YUZAz1##aeXS0XXbOJ)_Ihyg$*dESWOBJ+#94;+m0sAe>*cZ)LS+YT~)9Dawn z!_`LbeUtQd|CP+Q!k&*x^F_}tQM>hV9Nb18yp|YVEM6s?LnaVx&KZ2DrQ^ zmWw9)>DkgaRAt3ncr7D1y{5Q^zb0Bi-QSiy72A5n20XFQYbFuG0i+H*G6WJux{OkX z)gVD0bPbUK`+g(kaR?jqbk0acugJmU$7w?CM+6p)>aOXJ3`!MFXPED9{!ZtZ?ee)! z4PgSeRe}~la|T|v1HNrYlS*Al?bMKR$~j8ceX;0`OSNgoHPsnbhCLl&^)$*n?cB%% zr7rnrWi-Xwc^|d;?Uv6PUz5Gkzw3ywpiDV$THO0Qlq@X;gv82XMYSKeZc1NY1~#2< zejwJiDP{kJ-~@U`E%e4F@w*d)Uf>n#)Fz*Owby9oY816C6Qjtu+tG=l?l&4PqZmc< zi#r8dD~0->3g46XU=~?*my-XWX@D`cR-lVxM;T&1mil~nv<<7yzQJLUNRNv8%X;Tr@NAH&Pz1FbggR|Pxea~foTkNuE%saR_(|)1{lHfCh=C=NVY!+I zQ?C8$oRDvATK9#D2#Vw81mlj6?5JSZ_`~OX+CX*3(HS)7KF2v&eqv0k(?MULGl=AL zV&NVbu9yOFt5QbapgHCvtwSTAd@?N!+gDfKW_?yQAv8XyD4@NdZD1UfHTEq7auq0m zGw2|-DWte1ZOYU4X(L5^S+oV2DDKWxNq30?$-NO0`Q9(SpEjQ5$uIlk^3I0@y?Hc@ zkWWhn9Y!MVQx1#Z4os5$hfni$Mt#&=Qfer~j^shGR*k5i9Q1IrXEWs9?;)VpsKv38 zX)M)QWp}1UF3M-UVvXB7-CF{%l^F_?#f-UHe;= z49gIY=cM4nqY(?G7RtBKuGtzl3I;UUj32AthJ*q*Y!3$)GX0XvM_eL38Pn^oT;>qf99S$Yc zz!)RBfR-|HRznh5aebVTT)ffiWftQ?J)aIVfq33GTmq?j$F8G?op)O_@UYCmy1YRt zP9lfiywMk{DID>LXK3_jX75pi+Xwu_a+d&El-0q{gr2M6Zq9r@VE_%9I1XIMc1Di- zn^oRnBCBR3c`uSGx**j5rg*;W=d(LwiP%M^=7P2$u93=cy=%@wA)m`N^E-&;R~a;c zbt}~;fizXEZ(T-yEcz+5+q)hJaJ{XdzB#;@P-A`TRkIM_?Xa-+tj<={b!!({h{Y`H z5iztF)r4VrlIpoxwq`S101$XK?m6FWH=tZ#T6oU>Z2x)l(=DePx{FiU;b#c;$VZ|Q zA$vQM0Y+q}l5LG6j$a`cE!km$k4TSP=HRc7ij#)(x1DoF%a6}okn}$gn6LrW5(CYU z=(H!i^z4SUKD?3_wth&%*4;-(?@(02{j07EwYKw3C035T!y?RES9wTLNkzj@&NGk7x*Vd*5F!sy+L z;h7j0?%Eag9}0$mv^eSWDar`c_GFP_VsBzYbh`+l$(FRskAyB1^ zU-l8@o{01vKQrC582)bG!OvG5Vm~1tuFZNexru`^unFmemXAHGSLi9`ZT9uCxoN~~ zrz%C44D65gbQ6yoDK`zN(eoZZuSm&Tk|E(Anpm8pDRD;MdM0q$#~9zSPa3!% zbMUp+<*efT>*9FvEQj6tDE+JsJ-5I8NovQINB2CD+MXi!)e0iO@A~f$ux@89Hj|%P zS*b~B^dTf$o>rF-=Hr9^N(zIQwu^@b zi+pAd#@byg2AHpBt4=m4M$`;6Q0rg|b-E_OhK&~O0^=&Q14#K-Kkr($IUHAGyR_j3 z^UztRn}e3pu=JQM7a){Wi5ZcMUQGvd#s$cwE=1iW!?bEM(py;e$s8zuJHi`D731eJK$^S$ z7^n~Ul*4qn24Erzcw{={SlYK_HTFa@NQVW-(3XT-wB7g?Q6BpuRZw67FUWdoF-Z3OsdHoYcu9b_G1k0tWHp}_Kr)M`<@ zLDa4bjg+V#oSmA(oO%D^PPd@VxNzgnz6HINnCYc=<2cP`tO>5B6VjT_qB!NPsQ z&x)w8L1bM-BI>l_k{L?N<7M8}{VI61K%awq1!aIU&8`7;;f?)@Z4l~FUUAVTuj)}% z>rj2@FM=SVxJN)WV&eIoUwyTVL>U%)>{*`vp}FYnc>D~o=6?JtWkkV)tDM&WTUTqP ztZ4NE_Q?*x&rg%qL8a_2XMvu-`soZpxy^QjR>k!UO!bq=Iz@vO5wW7jvuoB1Shct<#Y`IEux^amGzvD6^cw}}^BPZGobIJg@e_x}!c z{Ez%5;1}rUKM{@azakp50Ah%aVc%Q!3hCAJp82)lD~@bx!L8)1PmdIQ#wspFnm{lS zi+ktY@33B}BxX%k=AK`|weC8{VBJ@l@Fra3phhI~CiHydTz01}_KVtz zxwA|_IoSS|Bax9c@PJEqt5anaJmZ1Mk=ed~5lBeDF6;5d8NnvvhRZ`eS!*NAX;cRn zvhy3~PH`nWNvd4^1SfBfyrI9R{xQ`QlqTZD#4pNq(Sc7iI0mpNlGj$mfjpKnBYBZn z%})kiWe-o;2P~(Pw7Y@kCBGYzI`q!%Mhit72QOTkUF>~UUu*o3$26*U`2y65xEM8e zZ;879e)pb;Bj125mGH9T7r=;GHZ~~>zZ|{^=haBZ=5%avl?I61D!4iGb!wbEZRK&$ zeC;*+FNlb>U;X04G16Bram7sXbrZT`kYOjMmCb&$)3BZ-W= zbN^LO$VM$+PM?qmuO&Y}jreWGmVWIG5RM%b26~1NQkx~=Z47IN-+bBU*SV_;>FDMI z&N{&RO>p9vG8atsJx@Y+=_?b5wYVz9vv$>J$W!}s8P+I0E1-v!hR67VeWCiW^}&*e zLzh6`MruzWc_o3!=9tg)+}QbWmE&bP1?v8;I%tl*esu8ZgJnY0y?4k+`m z!*d@d{^sC9o(pp$Pa~EWk*NZng;G_sCwt@FM-vu(cVy3jLY>3#cM+rPNC`>*riQ9F zoy16A`hMpQQ7)s3x40DH2l*X{pC|`;7^Jz{iO@;?DNqBJQDPoElYaxy6SJe!eA}?* z{F?}uw^Yb{gR5J?aG(dkMQB8TM(Ok?hIL;uR-lmE+lr|x7tDN4oN>Am3f2kMA)y?&A|iC zi6!)a4rlYO=$Z<@$LgwLf0{1b{or>*2P$&*3`*YRo<#1u?DtmW6sSC2_KW@v zt;Mrad%O1f3GMH$EB$G|NYg_26IbcyXF6U2Zqs5ir^)xwir20uAmS2d;?m_=iY`gx z8cStlvQ=qrtCZ@c=zue+PLHIOS@f0C=1A_ix>SD+4*b+xB>oH!C9wQ`KWrGK0CCKu<}Jo%b;TlzxK4dr2PnY8OAVLi(DK;YR@Z zAf0j$Ag%Li+iR*T1R5#~DzaW!_TFv4d@V4eE^WceN0bVJ{V&4a0;=k6>mF7FIdq70 zhlJ7~-6=@7vJLNLX&>LA{-@4BpVBLf&jV%?W|y}Pmdv{KZYXu4QA2TGmlwaOO28L@7#hpE z7=egvNd*0*Z_LboWrLafc+;is=5+id>*(Yh?Uq^$@l-_kTk+@3O=>#@x@8h+%)cf4 zfyM_qEi}=J2|t_9+bKEUrGYGUF8HXfqdhAn(j~%4^G(;AGLMfZ2yMA=81JXg_3__B zdN=t+>a_e~7j; z57>BL)FYp!U`#a*i{m{oAnA;mw7n38W2(`qvMo4b$VPcL8(u6w$Dp^WiCbwtSvULI zGsl9!SBSoKyYYJX<`Suot)8f8kP1XPwc&4OVcIk0SwX$`?C>mzcG75{I!-n#-hWRg zGy14k_6~&!x8uGGNbDt#4jjDfW7quQK2E|-o$%!v z+((8ma17W8Af9&Tt(Gm8rhpYBiN29llI z&Iq9-wvfY@Mto_f6GcJ<-9myB6~-h=4-CFYlbG3L@t@g}1W`bi46^u*)9E?9S5kv2 zAy1ZH^1_q7#^nf1^=cwF>|SD39d9LqU{&I9?tSi=O1-^yQ~(qdi=@h}U3OS2MTo0b zSJU|V6PHW&_HtBQyRxNvZS`tPzA6hG15VR;L1k^_0z=xF$_g74b)}v!7Jr z@DK)F5w;9om+#ct$5k3!8_5yxSb`YD{d3(qna_(+KQcWaL^UQ5A#_)eun@)ni*LH6 zHqQ_khHkhPsK>6<86L|e{jBSH%%T_VBpF^R2#;dTW9mu#BvVq#1t#pF5_}>fnN|KW zQ@1UefTQ^Ek7ewd@3_L0kggPACKrXEQ=RK2*0e4Rv)kV>rS9Y4gLAPF9L>Zf`)#d6 z)-GJcHfv&1Z*O#%Ow1x0f=k~^{)5DGKyk{qUENx%$J~8WqZhe*>7pqzxsF`>z3oeh z_1dt(JiZlwmgPR~T?+i2I;<}Iwt6K1ou#h!XU-?6yAa3~iK0IN6)9Bk1fmKX%b+vx zh&vu=mXAz!Imx&}ZO0|qsc27o!~hZQaNO5(ru67SFESf=AqxtFUgMfPyxu&hY1~=- zKBtG3zg=^t=N)PlBJIUx8wf9{HFs-^b1z)#Px;eC$RndrC?t^Cv9%6D;0|x}n=;zc zeQxtjK8jz-TYMRxWgJ@c9w>?lNb`y#!yHHxNTd6C-2x|2_l6<8Ja<|1;r=7~%2C4u zl-XK4c+TH&P*2x>N67E)pIUn48|q{0dHqesi0;|ziy?#z(Zjd?Dld10v!3<6-)!@TaXc$4(}>z~*JSK2ehkY`XV zA08L#0O~u)wGR=GQ^8x0`3*68O|}sgPRm9_)MVrn`EmeT4L9O;9bS=jmf;^~5)+da z4|e)zoM?`(ilMi6aH|vXNJJ*6WIFJzlbc>^tFJ*!< zKmlP&qm$21*i=C#7v^HPL_Nbd}d!c!wJJ=izZvKH9O(_rLZSlW<7F|v4j@+51%pwErt ztMa81okpnv+_?|--V@mdL5^F|^UE!~5(l5+neBRS-UDe8f(`>rfTjvMtkt_IbmCNg zJ(9;m?>~QisuF)_xllB*OibI#D?MRjGT%gB<#9xGxD=@8jcV_?X~+(FO-F5K~H zxU1Bg^B0f66?fQb#|@fJ8Q88CD%+>GWZI*I2)ot9Kk2=#j2FzdS<^=LJLpg0CY`bi zJ^>Q+o-Ow61ejOB3GoDWTlaV8&8gE^uf_WZi$K{`djdFd5Mo{Qg;&Ucj^UF=5l#Ao z8++4-;2r=yT`AS}%fWo};?`#MVicpDpMcGX+8Kugs z?+EF18uCjqI(4Z5mb=F4-ryrSY3T#Y=I@2pFj2{jLO7^a6*VtybGVx)`}PK5oyed2 z0@t!S8sX@G|M7L7pD~f0MV@^6_X|&Q?Jn)NS_QRXSPdp@qjB*;mGhSgyYqH2z2`{^?Hgj{)tr-;Mw^}po8=xHUS`$o!)A7-g_WU7pM=pM28ReTry1u6f{hH%Kb2t{ zc?Q#+sJHb)n8&4Lv7Xy?wLar>v(uYH6094PcGF(p^%9xwzHt-t7`>B!iN-YNi-F@i zcAzMBcO4W)Rg>?(e)x4DLTFhSkl48O!(Y1nVrwqnygJ>Ey?!;nHUEpby~l$vGKlnG zabVBQ%@KVH{k1n4AMzGPuIy()0*ZX z>s9dY4$iEt7>xqGoGudP)^b!~2S_10X>u#8;vsx>4jD*k9^yUmrJ^4Y(Gyj@$c%W0 z4`b$z+&&{=0!CVm1nLWAttR(L@4hA#IH82+>wRj2Sigi$!VcBk9{L9f;SL7kXKJAP zkL}v6|1>)zn)~HyzrRGS?n^CFd=_P00nmZ!X?NOD8{E@K!&Eiv2CIEpDJuv=&JAEug|x!yHI`stdoTJ^2b0{$7Kbzj8$l|3k}FoJf&|A z+R&6sJq=n3(H{yYfXOr?B4~Uofn>#Of1(To4OS8>%eckmmS&uY5Yv%Nmf z7wd8gltQ9W0*A4Mn9Xs7poM|YXY?W>jY*?J1E*zh9hDL?d|Ae4kLwW0inAz0c#hn= z@5ax6wEkqC?V!#ar?^@FXx{K*h6hV1diHW>sfP3y!z?{R!oEYsFTiSCWz}bhH@9f|LocFOWNHAF+^mpR@LIeRU)Jcn^X(l ze3Xi#6AFlU+I;YcK=r8ZWXy1?(YSQ0-f}%vdzw(KcgW=*G>SQ>4*<{e`ebN6gyWko zqvtabG$Bl4`C7iB6A3o!SYE^(C{cDvc*(!3_tI-M-Bi)We!qngq4jq; zHY&Kao?dX=6Es<+Q+^ro9tHvKncQb_^-a8o&$Zh&V&IE1o(!W0sdNCsKI(uJkJDam zr%X~2CvF)buf6*2cAV2K3%m^z(5D#6`;l7)GV2tD7xB0Bk^$!lMoAv02B;PC+0+Yx zte5rcX#@h3Ic|IyUL}u0w2A{uW}-s~UbHB+0w$+<(swoUt_qm8FO;u7OstK?{3-OP zafJpqVyrM5h}9qI(&JkMady=ml~;xHqk@X>1rBTrF_}T9gu{p0)l+yLel$WhWxV4o zmfhX9;)Gpm3^6t&-x{A(Z62#{q`?I6JT4vj69&7s%Z4*~1Q7v_Wa-{P<>PK=@|TPN zdFqhn&pXo}L}W%21~vqc)NN=zs*wXI_cr|vH?^$xXV>#3~Nx0vo zn><-Ly%ZG#*SNwGv}<>bn$mkr0n9a?6ub>Mnuw_Q&Ntz(HIWM1Df#_R0k~9J7_^f+8gi9-2~z&%%(K;R{> z8XW$(i}tVE_t*e6botP&mjCvp22yh$#DMw@tPn_wfc~?XY_G~}d}Ff#u8+Zh`C;(o z!sej##pSv#jqaUrZhp53YTLe51Mr-kecE#!dg>l?argCCh=FC<-ZO|V&_r{jsSjT@ z*sf(je92Ggeb$Tg+j9N6h+ssS4v@h}cqs=$H7`yP%Y!|~CQ#MgXh+#`BEVhnu&WE9 zZw0_N3Hb%-tHBk)e}uBZ)_X1P_<>`K66wQIVsuM?%nLgpHS>M20?vxO3OGD$zgYJH zsndzSt;;gF%4v53fBWWr!e8Lf*6EQ2&K?hB{qU#>Z9NHo9rEm;yoC-T%=c?w4sx6J zTxp6IF3l@|rBqz(z!_PNAA;WH#NKIh)8sdAkLp=AaK^td@NHI0P{ru7ZJHa%g-1RX zj}Y#T7K|u=yE!(Z|8*!vtw$VnP116;SKi;KYceg4b3A=?NBGjeuBGWo*@3r?e`o1i z$AkDq1tm9EaeLtBl|LF9I9TNIz^c1AF@OFkFjJ($1RiB+>IF8mkXE$E*2i1eq*H+K zNF_At2Z*e~+*r53RJ-aHgUCU-P&o!jiF}H&Kzai@GDFf9Qw4VF_fS*QLe+xT2jo~Z zZ27w511Xy6Hy;@OB6j(JFhIjZQB4SqNG3vqZr1|o0X;YOLMZ&7S&Y(sFOL<^y1owj z-Pf(&{IVW#xf-#vUs%wuvpzgl$0hhx5VODshl0x;+SFvLa@r^p_AHiKtzVrmnfz08 zW2EDbryLayqhj#Z7@}pzw`~s3^vUD+!MyeU>lB#GY=o>pbY!cA&CSF`sp@y-ty0Bb zSW9LP7%Zl~Y7=4qI7eo;z%?k&JpQ5jcg}C$`+%t?>HO1RXl=OnaasW#7Ig;wQK|qK zM6hjqQ3lK@M%s{$>haph_~e7-gwUrj$8VRPBSzuz`I?Ru6C(-LSg6;UvbXr5g_AE1 zeeZ!0P|YH1dShPv7#}0eUr~m$f?a)Fvt1jUeC%zb{`q z4QqSY02fE6L9TiO0_LlD2JLUBo|&wg5pQQyYsU;5%$E!0c6sa-Qh5d+2Ok;rC2VO3 zwgzZ9_QK@2ZE_^6GxO#E#g_ivjE3^pcQ##_=x|ssw6yRf$wtaD{POkvT2rGr1Q2Ca#VzMPo%~$XFEz+ZFy6l?N81E8QDZ-0 zmzRJ^4g0Zr1aIR^X&no-fl|tzA@Zn8d4Lf0oCu_*>lAnFY&AZA-HiD>v>SaT4Jhd? zCcj1`R=dBdLhQ^Z_;t-ov}IJ6lg8&J8?tOa_XmbM%_v7-p6})%=Y2@p9uP#@P~Voq z7{HCX9Vz>nJLNH&ixLSYuggN?XD}I+HFE#vVmYeQN$jm%i%&+I_#luGt6=l&v+24Y zQmK4V9cd_K>T1_wm9P2iOWKQ4s8VVeS+D9tZ%iCY3h_WY*MxbQ7?H@v!PluD*=+t3 zW+2t4>2fXf=qTaEq;@wF{tjp3<2lDtU(!(`&@XI;KlDI)h=^k=;?82Q_TpFvRSX^E z(zUj6y_Yd#enyo8uP)qR=M#?Cdb0_+zFuqps#xy_Hf8L+`)~~J4th2gy#?TbDnL*L z;Oea@1MZh&YRdW6y&QB639U)AXa~sWv_0Tq)O1Web+aqKC!^I6t%2j3W-R?F&y_Wp@nHd z#_o|?CHPin3!ED7&LUEXiP>p{vGhP*w z%sW1NoyPq$ft0uOV=q1NnM~4Lj>k0`I@T0G;7LFyBdj})K5Is)Rfb9!Ov^SI3(YaA zwZ6`J-YUU1V{9;dI3m|X!V?o1@?2G(R<$_z4YT3TVZ&S;N^NXSNPM0B)_ZsNN+#9X z=%-s;1d}*002A|vI=wAogoD}>P`^vG8pR(4MySpia8_Ma6)Bas!Z|A!-|}70<#qJT zpM`ZvD5t5_%NNGltm9Ab`#(fA>em(>N5*&}3}9o3Z;mz0nn0=jrim(Z_WZW}yqCe< zPrYZHJILUVV(?tkO!@Z8Z%WE~HJV+O%@djAVhy*Iy&`awmL!+M)iLK#$!PfJ2tS!? z;EBm*6$A6VG7*Q%;}mW?)u&&SvI;SgHMV06{#FRakpwM%)kuFQn{t+Ffac}>IM8FY zC!W1=y7x0d1)?=&!&mEvo$ZGP1*R%#3I((5HlawJ8;m8_>p)p=Nl+6r$YMZcrIjW4 zurrZqN|feW%OsKA?oB#*dnt;l>Fy9;r#fB$_3Px!yVCCGt@p7u&FUgK>qQ0k=SR-e zXv$11z31lo4g-9~m8T)pwsem=-0qJ_uFmSMHq*;%KE8w%_FxL1`)cTyM#dl@$8>Eo zMvYqu=9&zfBO;?rSDO{_!p#ERIePfGzICP9xMc?d%nPEL#V5$0ikjskQa#sbyW_{J zqYcyTwWFpTx4-R<7Q2|m!SOaaJ9y{CfboZgEHhzP95nWt`h;-se+)$&76vK?);M^5 zW3$*yh{A%Cv)7?vC?(Tgitpf zk!fjM;nGeN0{JWCO`2Crl-#icr5xHJ`$((^s(<8{W-4#;Eu9O<}hFpv(v=*xY<)zM-MMRtiwm=Ua;Fa-VG z_h%w*hr)yneeeASMFO1|?{>)e65)iBal%vT9XCZM!*`8=-MMspNxDqZycmwM_mHkT zlCR#3TCO?Vh%@ehPM+-U=1*Ri4gF;=MSL1Ic zQ!M+`b_ zQK8th;o1X2&BkP-bgGrXnAE%{gMP6)CGSr9;;i1^UdiN=J)`TGsOvxQ2jo5SV?tF+ zoivJ@{UWI`e9wJeUV}?yG#6lxD4<9(f180;bmYmSG#*Wu+WKD&X;_p z{W^qoQRBJUuVN|r5I5bh-sliFN;ag)9oS@H4ild^d;bP-{!f=6pi334?7p-+2&iC~U0c7uRs)!8h3Lj4!5 zrim~4y7V9Yrd(A(T;}z% zN(>=(ys$$z`At?~OAC8ygFFzb{sU(GHr%GPmu)BPR2WgR8dRROx|h}bIM0`PxvhoZ zmV5ya5k7wI0n{6uQRCmc9s}5-=`*k?(Eqxw!%V?kDz3@pHS6f?2W(Z5K}X1p8q%6v zW1Yjs9sC~k zjMW9v7U)0H5goUmpY3JChqDnSug!65Te*0NqGuQQe*<|u565qtVcLR(eBGCi3rm|X z1DW!3<llR|4|`I*3;caMS4~<=t~uJgX&FSI?la@((*XR(wp*u9pYyny)Ms8M zeVl0G%;n=F&*>8;3p(Ha-#QKN8vsSxj>md>8X-zk7?dm%JzM zv#5CF@Elh;sf%Y^5Bxkl=Q8z@ku%WHBv1iCMtg?N+Z#}eS9W|~T31O|gdHz=w3H-k zYiXS#totUE3=rJz%5LKrYg3Jz-uU$%WREmz8mlnK*XgdJ!ZTJ|$T2a9Ss#TO(04Zq zlghX~S$rG-OzRGa#~KU?>;hc3xlRs$E|cJe+2sb~2%#ev);LR7Kb%Hf?HK~9d1Wkf z#Hp(NcO}UE#~SBg1kI}~iB4yE5Z3GXi-b}myBrt1o4O-muE$HXv$#+3FY&6$=NQtp z->0E6HFVm2X(ZWn&a(j6#932y)E3A4rBQpTXQRtYpudr!506HysB>=5Lr7poIT3NL zN`}xN)Drvw-m)gb8De$VRE2c#9@c2)!8`*A^7r-r&l$K|Cz23fc^p;FQY&XmZr2k7 z?W%IU1I%vFy>uab-(~t@{}YM9UMGrK+(qCz(mL1G$_0Y2Lf*7pdqC{3xOo?z6aJ}! zQfVzj--bw^I_(KCH1k8VgvrK4w8(x=R!A zdb!FXx}+oQ4)KMldSpS&VOfbub<~jTk`MCZuJz3Z&!+v8M%64MZKa!^$Mw5y%Q&KT zkej)nGNY6HMN6^U;S1KMK(`g=&mAv5SukQWnBLM>W=6nNvgKq0eunZ)jv3mUrnhn2 z@aKA%yLOoTUe$2zm<#RNg)HTC<@AAa82C*KMU%hy&^3{<| zW9|*HjW)~hTa#A7-H1X17cqXDfcSHusJx2DZA<8JI7U^aTk;ygHN&<;-4KUCQ*3|t z-kX>SS^5o|h2ZBqZI?%x8NjYQ;j#;_HNQPjFch9?TMzQ7%wtqN?r^Ms*ZJ$8c=sOz zB7$+C&0_sXC?H@ND2d=(-1$J)9lPSHY}RFWsYc;Ppp&Z7-c0QdFvzko&?~0g>fq@G zN|gM0Z=r58gi_p2#kh#4w)*a=Kx~qVHS9?VE0n<$S#;;}6!xJijm5>qvcZXa+*T-i zcrQO^83*b4`MiK+)z&D-F%fXKnRT<$V_a0#M-6w=UnzRz>C}@{8f}tp&Yn7QSq9pi zNL6g%h4#1r(mV1@kGjMz>N7CBg_fpjwX2)1B#(m+9D@NkeB*E z8G?zp(tBF@`R1}i&cf@X<1sp{->QzsRUtR9&yn*YAI6TAwJx=sfERv!o?rvtM5ri2x1ugj!!(YaI{(Pa7Ie}U7gf_VBN82d zeeokEOZgNoEus6>gNJ^jUsuz*Xvek|ZV2gyFCH!a1lECwBSUooBzBO+Rs&QA91!tGNP5JTH8%@Wyos*ffu!{GSK`)zSy(N6s$% z3cBfL!A}>=ewD0Ko7%C=RDMJ2VzNzPvEcslrk49x)%qpKmL=&?7&Xudrvj`~DS|2I z2>C-*aRV1`TsmB=Wi+cTGdf>;=s07!UB;n$dWhq%X%lfbWWsuZ+Efijs)+PQ&u!sA z8(g~Myz-n%&TO9HPhGiF$&(Q8)7~CV|l=%e~rela1ls zh>dI5<=REa$BheW>es2cYNINGhIzZ=;RkF3dBNuwgzNkJT5rMr9Qt z)S#?Rlj`M&KejBhj3?Ru0924lpcXE8wJh#AH)ZeHe*?r4`9L&buQ)hOuPJ=3g9NaN zbAe82Sj);ihm41_T>XPTEAsozs!Z2kBT`*O_DDdOV2Ou7ETz3 zU3R|#$4ik?+*Wu0myA`JI;Gdi$OjD>{l@l0&Qa$iObMS}oK6mJI5)J_;~ocLc7!R! zyv?~AnA7;KsZgnZLxn~A@Kp{^?590cj2r?Ce)(9`ocem9Y%zQ+`8rKS!Oh1)LQ)T3 zU7n>Z_oh^wC-arB>-0DBE)UdKDDhmUMNGC`_dfrijo{1KmbR_ZEKv+A{bvzbGX&=`+4|h0T#sWGC?ex5L)bSM57uJa*FrXSB_(<(lea zRETfy%FR4*h)pDd75e2)ZolVYpaOrVuu0Trn12_&{BbGhg0L;c0cTl47SC~iO3Gv; zJEnfZ_W{KF0i*#ImK5@p<3|g~FlmGa6H$^(I-<;;7FPy-Fz!BH6s24F%+ziv(T zhr%W`AG%Kt?t?|`*5T$;b$*}R??v({zFjwP84k~c2hlB%>9>4Xt+ZITR4B9$$y7dW zqa!x;e@DXXIhexY5h>}+s-f5>61`0FKt!r0iqG{VVajPU2T>g%$(jF$F9lyRr$b<; zOzN`_OI=YCey&bq6=FA|pDWmmG7aK}K6D@|?QW@v#0kMb|M35K`LjQS_!9d2-JTbe zHKCH*UYn!aoNO?*rgKhDYjiXZeU9+9@jQcEv?fGIapNyNLN))X$+gGEI!LHcQ2EdvLhEu=O=HxXz*rpiB3qAw;id4m zEqEjcFn2%*YWqDOE>@-!MG%ika4To>Lb*fSFV(kny|4N6Jd-Hb4)Y6OJ|vr3-`n+e zfI_WAi}|i`83tTB(lZ=09N(&$!lZj0G_af}^LxfMbHnjwLZ9`X`dXyHH5m`2<`k)w zhA{t3AoD{{fYTIk;bqimpzI7qxphgt;FmPUjhBcbrk|fNkZx*B+|^(eKZ z+Il}b=+V)s*VYMb-CY-o4P%9c;@9j~9S+glDyC8A-sW@t9_+{q8dytPe7l9Sf;n*0?jbIR>;vQCY|ED ~VL`$cNH9%Dzb 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

  • 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 z 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

    imH;AWEKyGqd~wzEP78{cJyD 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˪fwoNsv8eB!sHkOgs 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 literal 0 HcmV?d00001 diff --git a/docs/tutorials/aws/img/findings.png b/docs/tutorials/aws/img/findings.png new file mode 100644 index 0000000000000000000000000000000000000000..88c506b28a2298ee53916fde6c479b00ff6846fb GIT binary patch literal 279400 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μl}XJ|*Q&=N5mpK8OMv9|jfzgbF< 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%0De{{Ef`c64zVp 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 E0W7mt7XSbN literal 0 HcmV?d00001 diff --git a/docs/tutorials/aws/organizations.md b/docs/tutorials/aws/organizations.md index 820749c28d0..5745ecda11d 100644 --- a/docs/tutorials/aws/organizations.md +++ b/docs/tutorials/aws/organizations.md @@ -1,21 +1,28 @@ # AWS Organizations + ## Get AWS Account details from your AWS Organization -Prowler allows you to get additional information of the scanned account in CSV and JSON outputs. When scanning a single account you get the Account ID as part of the output. +Prowler allows you to get additional information of the scanned account from AWS Organizations. + +If you have AWS Organizations enabled, Prowler can get your account details like account name, email, ARN, organization id and tags and you will have them next to every finding's output. -If you have AWS Organizations Prowler can get your account details like Account Name, Email, ARN, Organization ID and Tags and you will have them next to every finding in the CSV and JSON outputs. +In order to do that you can use the argument `-O`/`--organizations-role `. If this argument is not present Prowler will try to fetch that information automatically if the AWS account is a delegated administrator for the AWS Organization. -In order to do that you can use the option `-O`/`--organizations-role `. See the following sample command: +???+ note + Refer [here](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_delegate_policies.html) for more information about AWS Organizations delegated administrator. + +See the following sample command: ```shell prowler aws \ -O arn:aws:iam:::role/ ``` -> Make sure the role in your AWS Organizations management account has the permissions `organizations:ListAccounts*` and `organizations:ListTagsForResource`. +???+ note + Make sure the role in your AWS Organizations management account has the permissions `organizations:DescribeAccount` and `organizations:ListTagsForResource`. -In that command Prowler will scan the account and getting the account details from the AWS Organizations management account assuming a role and creating two reports with those details in JSON and CSV. +Prowler will scan the AWS account and get the account details from AWS Organizations. -In the JSON output below (redacted) you can see tags coded in base64 to prevent breaking CSV or JSON due to its format: +In the JSON output below you can see tags coded in base64 to prevent breaking CSV or JSON due to its format: ```json "Account Email": "my-prod-account@domain.com", @@ -25,13 +32,15 @@ In the JSON output below (redacted) you can see tags coded in base64 to prevent "Account tags": "\"eyJUYWdzIjpasf0=\"" ``` -The additional fields in CSV header output are as follow: +The additional fields in CSV header output are as follows: -```csv -ACCOUNT_DETAILS_EMAIL,ACCOUNT_DETAILS_NAME,ACCOUNT_DETAILS_ARN,ACCOUNT_DETAILS_ORG,ACCOUNT_DETAILS_TAGS -``` +- ACCOUNT_DETAILS_EMAIL +- ACCOUNT_DETAILS_NAME +- ACCOUNT_DETAILS_ARN +- ACCOUNT_DETAILS_ORG +- ACCOUNT_DETAILS_TAGS -## Extra: run Prowler across all accounts in AWS Organizations by assuming roles +## Extra: Run Prowler across all accounts in AWS Organizations by assuming roles If you want to run Prowler across all accounts of AWS Organizations you can do this: @@ -55,4 +64,6 @@ If you want to run Prowler across all accounts of AWS Organizations you can do t done ``` -> Using the same for loop it can be scanned a list of accounts with a variable like `ACCOUNTS_LIST='11111111111 2222222222 333333333'` +???+ note + Using the same for loop it can be scanned a list of accounts with a variable like: +
    `ACCOUNTS_LIST='11111111111 2222222222 333333333'` diff --git a/docs/tutorials/aws/regions-and-partitions.md b/docs/tutorials/aws/regions-and-partitions.md index 0644f2ddcbe..74ea0238973 100644 --- a/docs/tutorials/aws/regions-and-partitions.md +++ b/docs/tutorials/aws/regions-and-partitions.md @@ -6,10 +6,13 @@ By default Prowler is able to scan the following AWS partitions: - China: `aws-cn` - GovCloud (US): `aws-us-gov` -> To check the available regions for each partition and service please refer to the following document [aws_regions_by_service.json](https://github.com/prowler-cloud/prowler/blob/master/prowler/providers/aws/aws_regions_by_service.json) +???+ note + To check the available regions for each partition and service please refer to the following document [aws_regions_by_service.json](https://github.com/prowler-cloud/prowler/blob/master/prowler/providers/aws/aws_regions_by_service.json) It is important to take into consideration that to scan the China (`aws-cn`) or GovCloud (`aws-us-gov`) partitions it is either required to have a valid region for that partition in your AWS credentials or to specify the regions you want to audit for that partition using the `-f/--region` flag. -> Please, refer to https://boto3.amazonaws.com/v1/documentation/api/latest/guide/credentials.html#configuring-credentials for more information about the AWS credentials configuration. + +???+ note + Please, refer to https://boto3.amazonaws.com/v1/documentation/api/latest/guide/credentials.html#configuring-credentials for more information about the AWS credentials configuration. Prowler can scan specific region(s) with: ```console @@ -34,7 +37,8 @@ aws_access_key_id = XXXXXXXXXXXXXXXXXXX aws_secret_access_key = XXXXXXXXXXXXXXXXXXX region = cn-north-1 ``` -> With this option all the partition regions will be scanned without the need of use the `-f/--region` flag +???+ note + With this option all the partition regions will be scanned without the need of use the `-f/--region` flag ## AWS GovCloud (US) @@ -52,7 +56,8 @@ aws_access_key_id = XXXXXXXXXXXXXXXXXXX aws_secret_access_key = XXXXXXXXXXXXXXXXXXX region = us-gov-east-1 ``` -> With this option all the partition regions will be scanned without the need of use the `-f/--region` flag +???+ note + With this option all the partition regions will be scanned without the need of use the `-f/--region` flag ## AWS ISO (US & Europe) diff --git a/docs/tutorials/aws/role-assumption.md b/docs/tutorials/aws/role-assumption.md index 20ab7ad6533..5dc01a4b42d 100644 --- a/docs/tutorials/aws/role-assumption.md +++ b/docs/tutorials/aws/role-assumption.md @@ -23,6 +23,16 @@ prowler aws -R arn:aws:iam:::role/ prowler aws -T/--session-duration -I/--external-id -R arn:aws:iam:::role/ ``` +## Custom Role Session Name + +Prowler can use your custom Role Session name with: +```console +prowler aws --role-session-name +``` + +???+ note + It defaults to `ProwlerAssessmentSession`. + ## Role MFA If your IAM Role has MFA configured you can use `--mfa` along with `-R`/`--role ` and Prowler will ask you to input the following values to get a new temporary session for the IAM Role provided: @@ -34,6 +44,7 @@ If your IAM Role has MFA configured you can use `--mfa` along with `-R`/`--role To create a role to be assumed in one or multiple accounts you can use either as CloudFormation Stack or StackSet the following [template](https://github.com/prowler-cloud/prowler/blob/master/permissions/create_role_to_assume_cfn.yaml) and adapt it. -> _NOTE 1 about Session Duration_: Depending on the amount of checks you run and the size of your infrastructure, Prowler may require more than 1 hour to finish. Use option `-T ` to allow up to 12h (43200 seconds). To allow more than 1h you need to modify _"Maximum CLI/API session duration"_ for that particular role, read more [here](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use.html#id_roles_use_view-role-max-session). +???+ note "About Session Duration" + Depending on the amount of checks you run and the size of your infrastructure, Prowler may require more than 1 hour to finish. Use option `-T ` to allow up to 12h (43200 seconds). To allow more than 1h you need to modify _"Maximum CLI/API session duration"_ for that particular role, read more [here](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use.html#id_roles_use_view-role-max-session). -> _NOTE 2 about Session Duration_: Bear in mind that if you are using roles assumed by role chaining there is a hard limit of 1 hour so consider not using role chaining if possible, read more about that, in foot note 1 below the table [here](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use.html). + Bear in mind that if you are using roles assumed by role chaining there is a hard limit of 1 hour so consider not using role chaining if possible, read more about that, in foot note 1 below the table [here](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use.html). diff --git a/docs/tutorials/aws/s3.md b/docs/tutorials/aws/s3.md index b7846dea23f..d781ac90287 100644 --- a/docs/tutorials/aws/s3.md +++ b/docs/tutorials/aws/s3.md @@ -21,6 +21,5 @@ By default Prowler sends HTML, JSON and CSV output formats, if you want to send prowler -M csv -B my-bucket ``` -> In the case you do not want to use the assumed role credentials but the initial credentials to put the reports into the S3 bucket, use `-D`/`--output-bucket-no-assume` instead of `-B`/`--output-bucket`. - -> Make sure that the used credentials have `s3:PutObject` permissions in the S3 path where the reports are going to be uploaded. +???+ note + In the case you do not want to use the assumed role credentials but the initial credentials to put the reports into the S3 bucket, use `-D`/`--output-bucket-no-assume` instead of `-B`/`--output-bucket`. Make sure that the used credentials have `s3:PutObject` permissions in the S3 path where the reports are going to be uploaded. diff --git a/docs/tutorials/aws/securityhub.md b/docs/tutorials/aws/securityhub.md index 4fb845f13dd..50249eaefbe 100644 --- a/docs/tutorials/aws/securityhub.md +++ b/docs/tutorials/aws/securityhub.md @@ -1,61 +1,137 @@ # AWS Security Hub Integration -Prowler supports natively and as **official integration** sending findings to [AWS Security Hub](https://aws.amazon.com/security-hub). This integration allows Prowler to import its findings to AWS Security Hub. +Prowler supports natively and as **official integration** sending findings to [AWS Security Hub](https://aws.amazon.com/security-hub). This integration allows **Prowler** to import its findings to AWS Security Hub. -With Security Hub, you now have a single place that aggregates, organizes, and prioritizes your security alerts, or findings, from multiple AWS services, such as Amazon GuardDuty, Amazon Inspector, Amazon Macie, AWS Identity and Access Management (IAM) Access Analyzer, and AWS Firewall Manager, as well as from AWS Partner solutions and from Prowler for free. -Before sending findings to Prowler, you will need to perform next steps: +Before sending findings, you will need to enable AWS Security Hub and the **Prowler** integration. -1. Since Security Hub is a region based service, enable it in the region or regions you require. Use the AWS Management Console or using the AWS CLI with this command if you have enough permissions: - - `aws securityhub enable-security-hub --region `. -2. Enable Prowler as partner integration integration. Use the AWS Management Console or using the AWS CLI with this command if you have enough permissions: - - `aws securityhub enable-import-findings-for-product --region --product-arn arn:aws:securityhub:::product/prowler/prowler` (change region also inside the ARN). - - Using the AWS Management Console: - ![Screenshot 2020-10-29 at 10 26 02 PM](https://user-images.githubusercontent.com/3985464/97634660-5ade3400-1a36-11eb-9a92-4a45cc98c158.png) -3. Allow Prowler to import its findings to AWS Security Hub by adding the policy below to the role or user running Prowler: - - [prowler-security-hub.json](https://github.com/prowler-cloud/prowler/blob/master/permissions/prowler-security-hub.json) +## Enable AWS Security Hub +To enable the integration you have to perform the following steps, in _at least_ one AWS region of a given AWS account, to enable **AWS Security Hub** and **Prowler** as a partner integration. + +Since **AWS Security Hub** is a region based service, you will need to enable it in the region or regions you require. You can configure it using the AWS Management Console or the AWS CLI. + +???+ note + Take into account that enabling this integration will incur in costs in AWS Security Hub, please refer to its pricing [here](https://aws.amazon.com/security-hub/pricing/) for more information. + +### Using the AWS Management Console + +#### Enable AWS Security Hub + +If you have currently AWS Security Hub enabled you can skip to the [next section](#enable-prowler-integration). + +1. Open the **AWS Security Hub** console at https://console.aws.amazon.com/securityhub/. + +2. When you open the Security Hub console for the first time make sure that you are in the region you want to enable, then choose **Go to Security Hub**. +![](./img/enable.png) + +3. On the next page, the Security standards section lists the security standards that Security Hub supports. Select the check box for a standard to enable it, and clear the check box to disable it. + +4. Choose **Enable Security Hub**. +![](./img/enable-2.png) + +#### Enable Prowler Integration + +If you have currently the Prowler integration enabled in AWS Security Hub you can skip to the [next section](#send-findings) and start sending findings. + +Once **AWS Security Hub** is enabled you will need to enable **Prowler** as partner integration to allow **Prowler** to send findings to your **AWS Security Hub**. + +1. Open the **AWS Security Hub** console at https://console.aws.amazon.com/securityhub/. + +2. Select the **Integrations** tab in the right-side menu bar. +![](./img/enable-partner-integration.png) + +3. Search for _Prowler_ in the text search box and the **Prowler** integration will appear. + +4. Once there, click on **Accept Findings** to allow **AWS Security Hub** to receive findings from **Prowler**. +![](./img/enable-partner-integration-2.png) + +5. A new modal will appear to confirm that you are enabling the **Prowler** integration. +![](./img/enable-partner-integration-3.png) + +6. Right after click on **Accept Findings**, you will see that the integration is enabled in **AWS Security Hub**. +![](./img/enable-partner-integration-4.png) + +### Using the AWS CLI + +To enable **AWS Security Hub** and the **Prowler** integration you have to run the following commands using the AWS CLI: + +```shell +aws securityhub enable-security-hub --region +``` +???+ note + For this command to work you will need the `securityhub:EnableSecurityHub` permission. You will need to set the AWS region where you want to enable AWS Security Hub. + +Once **AWS Security Hub** is enabled you will need to enable **Prowler** as partner integration to allow **Prowler** to send findings to your AWS Security Hub. You have to run the following commands using the AWS CLI: + +```shell +aws securityhub enable-import-findings-for-product --region eu-west-1 --product-arn arn:aws:securityhub:::product/prowler/prowler +``` +???+ note + You will need to set the AWS region where you want to enable the integration and also the AWS region also within the ARN. For this command to work you will need the `securityhub:securityhub:EnableImportFindingsForProduct` permission. + + +## Send Findings Once it is enabled, it is as simple as running the command below (for all regions): ```sh -prowler aws -S +prowler aws --security-hub ``` or for only one filtered region like eu-west-1: ```sh -prowler -S -f eu-west-1 +prowler --security-hub --region eu-west-1 ``` -> **Note 1**: It is recommended to send only fails to Security Hub and that is possible adding `-q` to the command. +???+ note + It is recommended to send only fails to Security Hub and that is possible adding `-q/--quiet` to the command. You can use, instead of the `-q/--quiet` argument, the `--send-sh-only-fails` argument to save all the findings in the Prowler outputs but just to send FAIL findings to AWS Security Hub. -> **Note 2**: Since Prowler perform checks to all regions by default you may need to filter by region when running Security Hub integration, as shown in the example above. Remember to enable Security Hub in the region or regions you need by calling `aws securityhub enable-security-hub --region ` and run Prowler with the option `-f ` (if no region is used it will try to push findings in all regions hubs). Prowler will send findings to the Security Hub on the region where the scanned resource is located. + Since Prowler perform checks to all regions by default you may need to filter by region when running Security Hub integration, as shown in the example above. Remember to enable Security Hub in the region or regions you need by calling `aws securityhub enable-security-hub --region ` and run Prowler with the option `-f/--region ` (if no region is used it will try to push findings in all regions hubs). Prowler will send findings to the Security Hub on the region where the scanned resource is located. -> **Note 3**: To have updated findings in Security Hub you have to run Prowler periodically. Once a day or every certain amount of hours. + To have updated findings in Security Hub you have to run Prowler periodically. Once a day or every certain amount of hours. -Once you run findings for first time you will be able to see Prowler findings in Findings section: +### See you Prowler findings in AWS Security Hub -![Screenshot 2020-10-29 at 10 29 05 PM](https://user-images.githubusercontent.com/3985464/97634676-66c9f600-1a36-11eb-9341-70feb06f6331.png) +Once configured the **AWS Security Hub** in your next scan you will receive the **Prowler** findings in the AWS regions configured. To review those findings in **AWS Security Hub**: + +1. Open the **AWS Security Hub** console at https://console.aws.amazon.com/securityhub/. + +2. Select the **Findings** tab in the right-side menu bar. +![](./img/findings.png) + +3. Use the search box filters and use the **Product Name** filter with the value _Prowler_ to see the findings sent from **Prowler**. + +4. Then, you can click on the check **Title** to see the details and the history of a finding. +![](./img/finding-details.png) + +As you can see in the related requirements section, in the detailed view of the findings, **Prowler** also sends compliance information related to every finding. ## Send findings to Security Hub assuming an IAM Role When you are auditing a multi-account AWS environment, you can send findings to a Security Hub of another account by assuming an IAM role from that account using the `-R` flag in the Prowler command: ```sh -prowler -S -R arn:aws:iam::123456789012:role/ProwlerExecRole +prowler --security-hub --role arn:aws:iam::123456789012:role/ProwlerExecutionRole ``` -> Remember that the used role needs to have permissions to send findings to Security Hub. To get more information about the permissions required, please refer to the following IAM policy [prowler-security-hub.json](https://github.com/prowler-cloud/prowler/blob/master/permissions/prowler-security-hub.json) +???+ note + Remember that the used role needs to have permissions to send findings to Security Hub. To get more information about the permissions required, please refer to the following IAM policy [prowler-security-hub.json](https://github.com/prowler-cloud/prowler/blob/master/permissions/prowler-security-hub.json) ## Send only failed findings to Security Hub -When using Security Hub it is recommended to send only the failed findings generated. To follow that recommendation you could add the `-q` flag to the Prowler command: +When using the **AWS Security Hub** integration you can send only the `FAIL` findings generated by **Prowler**. Therefore, the **AWS Security Hub** usage costs eventually would be lower. To follow that recommendation you could add the `-q/--quiet` flag to the Prowler command: ```sh -prowler -S -q +prowler --security-hub --quiet ``` +You can use, instead of the `-q/--quiet` argument, the `--send-sh-only-fails` argument to save all the findings in the Prowler outputs but just to send FAIL findings to AWS Security Hub: + +```sh +prowler --security-hub --send-sh-only-fails +``` ## Skip sending updates of findings to Security Hub @@ -63,5 +139,5 @@ By default, Prowler archives all its findings in Security Hub that have not appe You can skip this logic by using the option `--skip-sh-update` so Prowler will not archive older findings: ```sh -prowler -S --skip-sh-update +prowler --security-hub --skip-sh-update ``` diff --git a/docs/tutorials/check-aliases.md b/docs/tutorials/check-aliases.md index d94781d8ce7..9d274d294e6 100644 --- a/docs/tutorials/check-aliases.md +++ b/docs/tutorials/check-aliases.md @@ -1,19 +1,19 @@ # Check Aliases Prowler allows you to use aliases for the checks. You only have to add the `CheckAliases` key to the check's metadata with a list of the aliases: - - "Provider": "", - "CheckID": "", - "CheckTitle": "", - "CheckAliases": [ - "" - "", - ... - ], - ... - +```json title="check.metadata.json" +"Provider": "", +"CheckID": "", +"CheckTitle": "", +"CheckAliases": [ + "" + "", + ... +], +... +``` Then, you can execute the check either with its check ID or with one of the previous aliases: -```console +```shell prowler -c/--checks Using alias for check ... diff --git a/docs/tutorials/compliance.md b/docs/tutorials/compliance.md index 6d39e96e847..136da5be273 100644 --- a/docs/tutorials/compliance.md +++ b/docs/tutorials/compliance.md @@ -21,35 +21,35 @@ prowler --list-compliance ``` Currently, the available frameworks are: -- `cis_1.4_aws` -- `cis_1.5_aws` -- `cis_2.0_aws` -- `cisa_aws` -- `ens_rd2022_aws` +- `aws_account_security_onboarding_aws` - `aws_audit_manager_control_tower_guardrails_aws` - `aws_foundational_security_best_practices_aws` - `aws_well_architected_framework_reliability_pillar_aws` - `aws_well_architected_framework_security_pillar_aws` +- `cis_1.4_aws` +- `cis_1.5_aws` +- `cis_2.0_aws` +- `cis_2.0_gcp` +- `cis_3.0_aws` - `cisa_aws` +- `ens_rd2022_aws` - `fedramp_low_revision_4_aws` - `fedramp_moderate_revision_4_aws` - `ffiec_aws` - `gdpr_aws` -- `gxp_eu_annex_11_aws` - `gxp_21_cfr_part_11_aws` +- `gxp_eu_annex_11_aws` - `hipaa_aws` - `iso27001_2013_aws` -- `iso27001_2013_aws` - `mitre_attack_aws` +- `nist_800_171_revision_2_aws` - `nist_800_53_revision_4_aws` - `nist_800_53_revision_5_aws` -- `nist_800_171_revision_2_aws` - `nist_csf_1.1_aws` - `pci_3.2.1_aws` - `rbi_cyber_security_framework_aws` - `soc2_aws` - ## List Requirements of Compliance Frameworks For each compliance framework, you can use option `--list-compliance-requirements` to list its requirements: ```sh diff --git a/docs/tutorials/configuration_file.md b/docs/tutorials/configuration_file.md index 6aa8c8f63d6..3c7dac1c071 100644 --- a/docs/tutorials/configuration_file.md +++ b/docs/tutorials/configuration_file.md @@ -37,13 +37,24 @@ The following list includes all the AWS checks with configurable variables that ## Azure ### Configurable Checks +The following list includes all the Azure checks with configurable variables that can be changed in the configuration yaml file: + +| Check Name | Value | Type | +|---------------------------------------------------------------|--------------------------------------------------|-----------------| +| `network_public_ip_shodan` | `shodan_api_key` | String | +| `app_ensure_php_version_is_latest` | `php_latest_version` | String | +| `app_ensure_python_version_is_latest` | `python_latest_version` | String | +| `app_ensure_java_version_is_latest` | `java_latest_version` | String | + ## GCP ### Configurable Checks ## Config YAML File Structure -> This is the new Prowler configuration file format. The old one without provider keys is still compatible just for the AWS provider. + +???+ note + This is the new Prowler configuration file format. The old one without provider keys is still compatible just for the AWS provider. ```yaml title="config.yaml" # AWS Configuration @@ -126,6 +137,17 @@ aws: # Azure Configuration azure: + # Azure Network Configuration + # azure.network_public_ip_shodan + shodan_api_key: null + + # Azure App Configuration + # azure.app_ensure_php_version_is_latest + php_latest_version: "8.2" + # azure.app_ensure_python_version_is_latest + python_latest_version: "3.12" + # azure.app_ensure_java_version_is_latest + java_latest_version: "17" # GCP Configuration gcp: diff --git a/docs/tutorials/gcp/authentication.md b/docs/tutorials/gcp/authentication.md index 35977dab5dd..5796dc6baef 100644 --- a/docs/tutorials/gcp/authentication.md +++ b/docs/tutorials/gcp/authentication.md @@ -13,7 +13,8 @@ Otherwise, you can generate and download Service Account keys in JSON format (re prowler gcp --credentials-file path ``` -> `prowler` will scan the GCP project associated with the credentials. +???+ note + `prowler` will scan the GCP project associated with the credentials. Prowler will follow the same credentials search as [Google authentication libraries](https://cloud.google.com/docs/authentication/application-default-credentials#search_order): diff --git a/docs/tutorials/ignore-unused-services.md b/docs/tutorials/ignore-unused-services.md index c6921e55310..30fa3b670d0 100644 --- a/docs/tutorials/ignore-unused-services.md +++ b/docs/tutorials/ignore-unused-services.md @@ -1,6 +1,7 @@ # Ignore Unused Services -> Currently only available on the AWS provider. +???+ note + Currently only available on the AWS provider. Prowler allows you to ignore unused services findings, so you can reduce the number of findings in Prowler's reports. @@ -47,7 +48,7 @@ It is a best practice to encrypt both metadata and connection passwords in AWS G #### Inspector Amazon Inspector is a vulnerability discovery service that automates continuous scanning for security vulnerabilities within your Amazon EC2, Amazon ECR, and AWS Lambda environments. Prowler recommends to enable it and resolve all the Inspector's findings. Ignoring the unused services, Prowler will only notify you if there are any Lambda functions, EC2 instances or ECR repositories in the region where Amazon inspector should be enabled. - - `inspector2_findings_exist` + - `inspector2_is_enabled` #### Macie Amazon Macie is a security service that uses machine learning to automatically discover, classify and protect sensitive data in S3 buckets. Prowler will only create a finding when Macie is not enabled if there are S3 buckets in your account. diff --git a/docs/tutorials/integrations.md b/docs/tutorials/integrations.md index d6004251575..b30d8bd13cb 100644 --- a/docs/tutorials/integrations.md +++ b/docs/tutorials/integrations.md @@ -10,7 +10,9 @@ prowler --slack ![Prowler Slack Message](img/slack-prowler-message.png) -> Slack integration needs SLACK_API_TOKEN and SLACK_CHANNEL_ID environment variables. +???+ note + Slack integration needs SLACK_API_TOKEN and SLACK_CHANNEL_ID environment variables. + ### Configuration To configure the Slack Integration, follow the next steps: diff --git a/docs/tutorials/logging.md b/docs/tutorials/logging.md index 48036c46538..38e5c89c5b2 100644 --- a/docs/tutorials/logging.md +++ b/docs/tutorials/logging.md @@ -18,7 +18,8 @@ You can establish the log level of Prowler with `--log-level` option: prowler --log-level {DEBUG,INFO,WARNING,ERROR,CRITICAL} ``` -> By default, Prowler will run with the `CRITICAL` log level, since critical errors will abort the execution. +???+ note + By default, Prowler will run with the `CRITICAL` log level, since critical errors will abort the execution. ## Export Logs to File @@ -45,4 +46,5 @@ An example of a log file will be the following: "message": "eu-west-2 -- ClientError[124]: An error occurred (UnauthorizedOperation) when calling the DescribeNetworkAcls operation: You are not authorized to perform this operation." } -> NOTE: Each finding is represented as a `json` object. +???+ note + Each finding is represented as a `json` object. diff --git a/docs/tutorials/misc.md b/docs/tutorials/misc.md index 74fa48dbd68..6b640103aec 100644 --- a/docs/tutorials/misc.md +++ b/docs/tutorials/misc.md @@ -61,21 +61,26 @@ Prowler allows you to include your custom checks with the flag: ```console prowler -x/--checks-folder ``` -> S3 URIs are also supported as folders for custom checks, e.g. s3://bucket/prefix/checks_folder/. Make sure that the used credentials have s3:GetObject permissions in the S3 path where the custom checks are located. + +???+ note + S3 URIs are also supported as folders for custom checks, e.g. `s3://bucket/prefix/checks_folder/`. Make sure that the used credentials have `s3:GetObject` permissions in the S3 path where the custom checks are located. The custom checks folder must contain one subfolder per check, each subfolder must be named as the check and must contain: - An empty `__init__.py`: to make Python treat this check folder as a package. - A `check_name.py` containing the check's logic. - A `check_name.metadata.json` containing the check's metadata. ->The check name must start with the service name followed by an underscore (e.g., ec2_instance_public_ip). + +???+ note + The check name must start with the service name followed by an underscore (e.g., ec2_instance_public_ip). To see more information about how to write checks see the [Developer Guide](../developer-guide/checks.md#create-a-new-check-for-a-provider). -> If you want to run ONLY your custom check(s), import it with -x (--checks-folder) and then run it with -c (--checks), e.g.: -```console -prowler aws -x s3://bucket/prowler/providers/aws/services/s3/s3_bucket_policy/ -c s3_bucket_policy -``` +???+ note + If you want to run ONLY your custom check(s), import it with -x (--checks-folder) and then run it with -c (--checks), e.g.: + ```console + prowler aws -x s3://bucket/prowler/providers/aws/services/s3/s3_bucket_policy/ -c s3_bucket_policy + ``` ## Severities Each of Prowler's checks has a severity, which can be: diff --git a/docs/tutorials/mutelist.md b/docs/tutorials/mutelist.md index 8320a4550d0..bfdacc4095b 100644 --- a/docs/tutorials/mutelist.md +++ b/docs/tutorials/mutelist.md @@ -113,7 +113,8 @@ You will need to pass the S3 URI where your Mute List YAML file was uploaded to ``` prowler aws -w s3:////mutelist.yaml ``` -> Make sure that the used AWS credentials have s3:GetObject permissions in the S3 path where the mutelist file is located. +???+ note + Make sure that the used AWS credentials have s3:GetObject permissions in the S3 path where the allowlist file is located. ### AWS DynamoDB Table ARN @@ -138,7 +139,8 @@ The following example will mute all resources in all accounts for the EC2 checks -> Make sure that the used AWS credentials have `dynamodb:PartiQLSelect` permissions in the table. +???+ note + Make sure that the used AWS credentials have `dynamodb:PartiQLSelect` permissions in the table. ### AWS Lambda ARN diff --git a/docs/tutorials/parallel-execution.md b/docs/tutorials/parallel-execution.md new file mode 100644 index 00000000000..3e4cb2aeb1b --- /dev/null +++ b/docs/tutorials/parallel-execution.md @@ -0,0 +1,188 @@ +# Parallel Execution + +The strategy used here will be to execute Prowler once per service. You can modify this approach as per your requirements. + +This can help for really large accounts, but please be aware of AWS API rate limits: + +1. **Service-Specific Limits**: Each AWS service has its own rate limits. For instance, Amazon EC2 might have different rate limits for launching instances versus making API calls to describe instances. +2. **API Rate Limits**: Most of the rate limits in AWS are applied at the API level. Each API call to an AWS service counts towards the rate limit for that service. +3. **Throttling Responses**: When you exceed the rate limit for a service, AWS responds with a throttling error. In AWS SDKs, these are typically represented as `ThrottlingException` or `RateLimitExceeded` errors. + +For information on Prowler's retrier configuration please refer to this [page](https://docs.prowler.cloud/en/latest/tutorials/aws/boto3-configuration/). + +???+ note + You might need to increase the `--aws-retries-max-attempts` parameter from the default value of 3. The retrier follows an exponential backoff strategy. + +## Linux + +Generate a list of services that Prowler supports, and populate this info into a file: + +```bash +prowler aws --list-services | awk -F"- " '{print $2}' | sed '/^$/d' > services +``` + +Make any modifications for services you would like to skip scanning by modifying this file. + +Then create a new PowerShell script file `parallel-prowler.sh` and add the following contents. Update the `$profile` variable to the AWS CLI profile you want to run Prowler with. + +```bash +#!/bin/bash + +# Change these variables as needed +profile="your_profile" +account_id=$(aws sts get-caller-identity --profile "${profile}" --query 'Account' --output text) + +echo "Executing in account: ${account_id}" + +# Maximum number of concurrent processes +MAX_PROCESSES=5 + +# Loop through the services +while read service; do + echo "$(date '+%Y-%m-%d %H:%M:%S'): Starting job for service: ${service}" + + # Run the command in the background + (prowler -p "$profile" -s "$service" -F "${account_id}-${service}" --ignore-unused-services --only-logs; echo "$(date '+%Y-%m-%d %H:%M:%S') - ${service} has completed") & + + # Check if we have reached the maximum number of processes + while [ $(jobs -r | wc -l) -ge ${MAX_PROCESSES} ]; do + # Wait for a second before checking again + sleep 1 + done +done < ./services + +# Wait for all background processes to finish +wait +echo "All jobs completed" +``` + +Output will be stored in the `output/` folder that is in the same directory from which you executed the script. + +## Windows + +Generate a list of services that Prowler supports, and populate this info into a file: + +```powershell +prowler aws --list-services | ForEach-Object { + # Capture lines that are likely service names + if ($_ -match '^\- \w+$') { + $_.Trim().Substring(2) + } +} | Where-Object { + # Filter out empty or null lines + $_ -ne $null -and $_ -ne '' +} | Set-Content -Path "services" +``` + +Make any modifications for services you would like to skip scanning by modifying this file. + +Then create a new PowerShell script file `parallel-prowler.ps1` and add the following contents. Update the `$profile` variable to the AWS CLI profile you want to run prowler with. + +Change any parameters you would like when calling prowler in the `Start-Job -ScriptBlock` section. Note that you need to keep the `--only-logs` parameter, else some encoding issue occurs when trying to render the progress-bar and prowler won't successfully execute. + +```powershell +$profile = "your_profile" +$account_id = Invoke-Expression -Command "aws sts get-caller-identity --profile $profile --query 'Account' --output text" + +Write-Host "Executing Prowler in $account_id" + +# Maximum number of concurrent jobs +$MAX_PROCESSES = 5 + +# Read services from a file +$services = Get-Content -Path "services" + +# Array to keep track of started jobs +$jobs = @() + +foreach ($service in $services) { + # Start the command as a job + $job = Start-Job -ScriptBlock { + prowler -p ${using:profile} -s ${using:service} -F "${using:account_id}-${using:service}" --ignore-unused-services --only-logs + $endTimestamp = Get-Date -Format "yyyy-MM-dd HH:mm:ss" + Write-Output "${endTimestamp} - $using:service has completed" + } + $jobs += $job + Write-Host "$(Get-Date -Format 'yyyy-MM-dd HH:mm:ss') - Starting job for service: $service" + + # Check if we have reached the maximum number of jobs + while (($jobs | Where-Object { $_.State -eq 'Running' }).Count -ge $MAX_PROCESSES) { + Start-Sleep -Seconds 1 + # Check for any completed jobs and receive their output + $completedJobs = $jobs | Where-Object { $_.State -eq 'Completed' } + foreach ($completedJob in $completedJobs) { + Receive-Job -Job $completedJob -Keep | ForEach-Object { Write-Host $_ } + $jobs = $jobs | Where-Object { $_.Id -ne $completedJob.Id } + Remove-Job -Job $completedJob + } + } +} + +# Check for any remaining completed jobs +$remainingCompletedJobs = $jobs | Where-Object { $_.State -eq 'Completed' } +foreach ($remainingJob in $remainingCompletedJobs) { + Receive-Job -Job $remainingJob -Keep | ForEach-Object { Write-Host $_ } + Remove-Job -Job $remainingJob +} + +Write-Host "$(Get-Date -Format 'yyyy-MM-dd HH:mm:ss') - All jobs completed" +``` + +Output will be stored in `C:\Users\YOUR-USER\Documents\output\` + +## Combining the output files + +Guidance is provided for the CSV file format. From the ouput directory, execute either the following Bash or PowerShell script. The script will collect the output from the CSV files, only include the header from the first file, and then output the result as CombinedCSV.csv in the current working directory. + +There is no logic implemented in terms of which CSV files it will combine. If you have additional CSV files from other actions, such as running a quick inventory, you will need to move that out of the current (or any nested) directory, or move the output you want to combine into its own folder and run the script from there. + +```bash +#!/bin/bash + +# Initialize a variable to indicate the first file +firstFile=true + +# Find all CSV files and loop through them +find . -name "*.csv" -print0 | while IFS= read -r -d '' file; do + if [ "$firstFile" = true ]; then + # For the first file, keep the header + cat "$file" > CombinedCSV.csv + firstFile=false + else + # For subsequent files, skip the header + tail -n +2 "$file" >> CombinedCSV.csv + fi +done +``` + +```powershell +# Get all CSV files from current directory and its subdirectories +$csvFiles = Get-ChildItem -Recurse -Filter "*.csv" + +# Initialize a variable to track if it's the first file +$firstFile = $true + +# Loop through each CSV file +foreach ($file in $csvFiles) { + if ($firstFile) { + # For the first file, keep the header and change the flag + $combinedCsv = Import-Csv -Path $file.FullName + $firstFile = $false + } else { + # For subsequent files, skip the header + $tempCsv = Import-Csv -Path $file.FullName + $combinedCsv += $tempCsv | Select-Object * -Skip 1 + } +} + +# Export the combined data to a new CSV file +$combinedCsv | Export-Csv -Path "CombinedCSV.csv" -NoTypeInformation +``` + +## TODO: Additional Improvements + +Some services need to instantiate another service to perform a check. For instance, `cloudwatch` will instantiate Prowler's `iam` service to perform the `cloudwatch_cross_account_sharing_disabled` check. When the `iam` service is instantiated, it will perform the `__init__` function, and pull all the information required for that service. This provides an opportunity for an improvement in the above script to group related services together so that the `iam` services (or any other cross-service references) isn't repeatedily instantiated by grouping dependant services together. A complete mapping between these services still needs to be further investigated, but these are the cross-references that have been noted: + +* inspector2 needs lambda and ec2 +* cloudwatch needs iam +* dlm needs ec2 diff --git a/docs/tutorials/pentesting.md b/docs/tutorials/pentesting.md index 03d566070fc..b31de750fb8 100644 --- a/docs/tutorials/pentesting.md +++ b/docs/tutorials/pentesting.md @@ -50,6 +50,7 @@ Several checks analyse resources that are exposed to the Internet, these are: - sagemaker_notebook_instance_without_direct_internet_access_configured - sns_topics_not_publicly_accessible - sqs_queues_not_publicly_accessible +- network_public_ip_shodan ... @@ -64,5 +65,9 @@ prowler --categories internet-exposed Prowler allows you check if any elastic ip in your AWS Account is exposed in Shodan with `-N`/`--shodan ` option: ```console -prowler aws --shodan -c ec2_elastic_ip_shodan +prowler aws -N/--shodan -c ec2_elastic_ip_shodan +``` +Also, you can check if any of your Azure Subscription has an public IP exposed in shodan: +```console +prowler azure -N/--shodan -c network_public_ip_shodan ``` diff --git a/docs/tutorials/quick-inventory.md b/docs/tutorials/quick-inventory.md index 67736018707..62214469671 100644 --- a/docs/tutorials/quick-inventory.md +++ b/docs/tutorials/quick-inventory.md @@ -1,14 +1,18 @@ # Quick Inventory Prowler allows you to execute a quick inventory to extract the number of resources in your provider. -> Currently, it is only available for AWS provider. + +???+ note + Currently, it is only available for AWS provider. - You can use option `-i`/`--quick-inventory` to execute it: ```sh prowler -i ``` -> By default, it extracts resources from all the regions, you could use `-f`/`--filter-region` to specify the regions to execute the analysis. + +???+ note + By default, it extracts resources from all the regions, you could use `-f`/`--filter-region` to specify the regions to execute the analysis. - This feature specify both the number of resources for each service and for each resource type. diff --git a/docs/tutorials/reporting.md b/docs/tutorials/reporting.md index f6bb27699ce..5ce50243124 100644 --- a/docs/tutorials/reporting.md +++ b/docs/tutorials/reporting.md @@ -19,11 +19,12 @@ prowler -M csv json json-asff html -F ```console prowler -M csv json json-asff html -o ``` -> Both flags can be used simultaneously to provide a custom directory and filename. -```console -prowler -M csv json json-asff html \ - -F -o -``` +???+ note + Both flags can be used simultaneously to provide a custom directory and filename. + ```console + prowler -M csv json json-asff html \ + -F -o + ``` ## Output timestamp format By default, the timestamp format of the output files is ISO 8601. This can be changed with the flag `--unix-timestamp` generating the timestamp fields in pure unix timestamp format. @@ -41,50 +42,74 @@ Hereunder is the structure for each of the supported report formats by Prowler: ### HTML ![HTML Output](../img/output-html.png) + ### CSV -The following are the columns present in the CSV format: +CSV format has a set of common columns for all the providers, and then provider specific columns. +The common columns are the following: - ASSESSMENT_START_TIME - FINDING_UNIQUE_ID - PROVIDER +- CHECK_ID +- CHECK_TITLE +- CHECK_TYPE +- STATUS +- STATUS_EXTENDED +- SERVICE_NAME +- SUBSERVICE_NAME +- SEVERITY +- RESOURCE_TYPE +- RESOURCE_DETAILS +- RESOURCE_TAGS +- DESCRIPTION +- RISK +- RELATED_URL +- REMEDIATION_RECOMMENDATION_TEXT +- REMEDIATION_RECOMMENDATION_URL +- REMEDIATION_RECOMMENDATION_CODE_NATIVEIAC +- REMEDIATION_RECOMMENDATION_CODE_TERRAFORM +- REMEDIATION_RECOMMENDATION_CODE_CLI +- REMEDIATION_RECOMMENDATION_CODE_OTHER +- COMPLIANCE +- CATEGORIES +- DEPENDS_ON +- RELATED_TO +- NOTES + +And then by the provider specific columns: + +#### AWS + - PROFILE - ACCOUNT_ID -- ACCOUNT_NAME -- ACCOUNT_EMAIL -- ACCOUNT_ARN -- ACCOUNT_ORG -- ACCOUNT_TAGS -- REGION -- CHECK_ID -- CHECK_TITLE -- CHECK_TYPE -- STATUS -- STATUS_EXTENDED -- SERVICE_NAME -- SUBSERVICE_NAME -- SEVERITY -- RESOURCE_ID -- RESOURCE_ARN -- RESOURCE_TYPE -- RESOURCE_DETAILS -- RESOURCE_TAGS -- DESCRIPTION -- COMPLIANCE -- RISK -- RELATED_URL -- REMEDIATION_RECOMMENDATION_TEXT -- REMEDIATION_RECOMMENDATION_URL -- REMEDIATION_RECOMMENDATION_CODE_NATIVEIAC -- REMEDIATION_RECOMMENDATION_CODE_TERRAFORM -- REMEDIATION_RECOMMENDATION_CODE_CLI -- REMEDIATION_RECOMMENDATION_CODE_OTHER -- CATEGORIES -- DEPENDS_ON -- RELATED_TO -- NOTES - -> Since Prowler v3 the CSV column delimiter is the semicolon (`;`) +- ACCOUNT_NAME +- ACCOUNT_EMAIL +- ACCOUNT_ARN +- ACCOUNT_ORG +- ACCOUNT_TAGS +- REGION +- RESOURCE_ID +- RESOURCE_ARN + +#### AZURE + +- TENANT_DOMAIN +- SUBSCRIPTION +- RESOURCE_ID +- RESOURCE_NAME + +#### GCP + +- PROJECT_ID +- LOCATION +- RESOURCE_ID +- RESOURCE_NAME + + +???+ note + Since Prowler v3 the CSV column delimiter is the semicolon (`;`) + ### JSON The following code is an example output of the JSON format: @@ -181,7 +206,8 @@ The following code is an example output of the JSON format: }] ``` -> NOTE: Each finding is a `json` object within a list. This has changed in v3 since in v2 the format used was [ndjson](http://ndjson.org/). +???+ note + Each finding is a `json` object within a list. This has changed in v3 since in v2 the format used was [ndjson](http://ndjson.org/). ### JSON-OCSF @@ -442,7 +468,9 @@ Based on [Open Cybersecurity Schema Framework Security Finding v1.0.0-rc.3](http }] ``` -> NOTE: Each finding is a `json` object. +???+ note + Each finding is a `json` object. + ### JSON-ASFF The following code is an example output of the [JSON-ASFF](https://docs.aws.amazon.com/securityhub/latest/userguide/securityhub-findings-format-syntax.html) format: @@ -575,4 +603,5 @@ The following code is an example output of the [JSON-ASFF](https://docs.aws.amaz }] ``` -> NOTE: Each finding is a `json` object within a list. +???+ note + Each finding is a `json` object within a list. diff --git a/mkdocs.yml b/mkdocs.yml index ea71d7bd1a6..82cdb35bb84 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -1,15 +1,15 @@ # Project information -site_name: Prowler Documentation -site_url: https://docs.prowler.pro/ +site_name: Prowler Open Source Documentation +site_url: https://docs.prowler.com/ site_description: >- - Prowler Documentation Site + Prowler Open Source Documentation # Theme Configuration theme: language: en - logo: img/prowler-logo.png + logo: img/prowler-logo-white.png name: material - favicon: img/prowler-icon.svg + favicon: favicon.ico features: - navigation.tabs - navigation.tabs.sticky @@ -19,6 +19,11 @@ theme: primary: black accent: green +plugins: + - search + - git-revision-date-localized: + enable_creation_date: true + edit_uri: "https://github.com/prowler-cloud/prowler/tree/master/docs" # Prowler OSS Repository repo_url: https://github.com/prowler-cloud/prowler/ @@ -41,6 +46,7 @@ nav: - Custom Metadata: tutorials/custom-checks-metadata.md - Ignore Unused Services: tutorials/ignore-unused-services.md - Pentesting: tutorials/pentesting.md + - Parallel Execution: tutorials/parallel-execution.md - Developer Guide: developer-guide/introduction.md - AWS: - Authentication: tutorials/aws/authentication.md @@ -73,11 +79,13 @@ nav: - Testing: - Unit Tests: developer-guide/unit-testing.md - Integration Tests: developer-guide/integration-testing.md + - Debugging: developer-guide/debugging.md - Security: security.md - Contact Us: contact.md - Troubleshooting: troubleshooting.md - About: about.md - - ProwlerPro: https://prowler.pro + - Prowler SaaS: https://prowler.com + # Customization extra: consent: @@ -101,11 +109,15 @@ extra: link: https://twitter.com/prowlercloud # Copyright -copyright: Copyright © 2022 Toni de la Fuente, Maintained by the Prowler Team at Verica, Inc.
    +copyright: > + Copyright © Toni de la Fuente, Maintained by the Prowler Team at ProwlerPro, Inc. +
    Change cookie settings markdown_extensions: - abbr - admonition + - pymdownx.details + - pymdownx.superfences - attr_list - def_list - footnotes @@ -119,8 +131,8 @@ markdown_extensions: - pymdownx.caret - pymdownx.details - pymdownx.emoji: - emoji_generator: !!python/name:materialx.emoji.to_svg - emoji_index: !!python/name:materialx.emoji.twemoji + emoji_index: !!python/name:material.extensions.emoji.twemoji + emoji_generator: !!python/name:material.extensions.emoji.to_svg - pymdownx.highlight: anchor_linenums: true - pymdownx.inlinehilite diff --git a/poetry.lock b/poetry.lock index 0dcf2a6c7fd..37759e1abde 100644 --- a/poetry.lock +++ b/poetry.lock @@ -28,6 +28,116 @@ PyJWT = ">=1.0.0,<3" python-dateutil = ">=2.1.0,<3" requests = ">=2.0.0,<3" +[[package]] +name = "aiohttp" +version = "3.9.3" +description = "Async http client/server framework (asyncio)" +optional = false +python-versions = ">=3.8" +files = [ + {file = "aiohttp-3.9.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:939677b61f9d72a4fa2a042a5eee2a99a24001a67c13da113b2e30396567db54"}, + {file = "aiohttp-3.9.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:1f5cd333fcf7590a18334c90f8c9147c837a6ec8a178e88d90a9b96ea03194cc"}, + {file = "aiohttp-3.9.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:82e6aa28dd46374f72093eda8bcd142f7771ee1eb9d1e223ff0fa7177a96b4a5"}, + {file = "aiohttp-3.9.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f56455b0c2c7cc3b0c584815264461d07b177f903a04481dfc33e08a89f0c26b"}, + {file = "aiohttp-3.9.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bca77a198bb6e69795ef2f09a5f4c12758487f83f33d63acde5f0d4919815768"}, + {file = "aiohttp-3.9.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e083c285857b78ee21a96ba1eb1b5339733c3563f72980728ca2b08b53826ca5"}, + {file = "aiohttp-3.9.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ab40e6251c3873d86ea9b30a1ac6d7478c09277b32e14745d0d3c6e76e3c7e29"}, + {file = "aiohttp-3.9.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:df822ee7feaaeffb99c1a9e5e608800bd8eda6e5f18f5cfb0dc7eeb2eaa6bbec"}, + {file = "aiohttp-3.9.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:acef0899fea7492145d2bbaaaec7b345c87753168589cc7faf0afec9afe9b747"}, + {file = "aiohttp-3.9.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:cd73265a9e5ea618014802ab01babf1940cecb90c9762d8b9e7d2cc1e1969ec6"}, + {file = "aiohttp-3.9.3-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:a78ed8a53a1221393d9637c01870248a6f4ea5b214a59a92a36f18151739452c"}, + {file = "aiohttp-3.9.3-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:6b0e029353361f1746bac2e4cc19b32f972ec03f0f943b390c4ab3371840aabf"}, + {file = "aiohttp-3.9.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:7cf5c9458e1e90e3c390c2639f1017a0379a99a94fdfad3a1fd966a2874bba52"}, + {file = "aiohttp-3.9.3-cp310-cp310-win32.whl", hash = "sha256:3e59c23c52765951b69ec45ddbbc9403a8761ee6f57253250c6e1536cacc758b"}, + {file = "aiohttp-3.9.3-cp310-cp310-win_amd64.whl", hash = "sha256:055ce4f74b82551678291473f66dc9fb9048a50d8324278751926ff0ae7715e5"}, + {file = "aiohttp-3.9.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:6b88f9386ff1ad91ace19d2a1c0225896e28815ee09fc6a8932fded8cda97c3d"}, + {file = "aiohttp-3.9.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c46956ed82961e31557b6857a5ca153c67e5476972e5f7190015018760938da2"}, + {file = "aiohttp-3.9.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:07b837ef0d2f252f96009e9b8435ec1fef68ef8b1461933253d318748ec1acdc"}, + {file = "aiohttp-3.9.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dad46e6f620574b3b4801c68255492e0159d1712271cc99d8bdf35f2043ec266"}, + {file = "aiohttp-3.9.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5ed3e046ea7b14938112ccd53d91c1539af3e6679b222f9469981e3dac7ba1ce"}, + {file = "aiohttp-3.9.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:039df344b45ae0b34ac885ab5b53940b174530d4dd8a14ed8b0e2155b9dddccb"}, + {file = "aiohttp-3.9.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7943c414d3a8d9235f5f15c22ace69787c140c80b718dcd57caaade95f7cd93b"}, + {file = "aiohttp-3.9.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:84871a243359bb42c12728f04d181a389718710129b36b6aad0fc4655a7647d4"}, + {file = "aiohttp-3.9.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:5eafe2c065df5401ba06821b9a054d9cb2848867f3c59801b5d07a0be3a380ae"}, + {file = "aiohttp-3.9.3-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:9d3c9b50f19704552f23b4eaea1fc082fdd82c63429a6506446cbd8737823da3"}, + {file = "aiohttp-3.9.3-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:f033d80bc6283092613882dfe40419c6a6a1527e04fc69350e87a9df02bbc283"}, + {file = "aiohttp-3.9.3-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:2c895a656dd7e061b2fd6bb77d971cc38f2afc277229ce7dd3552de8313a483e"}, + {file = "aiohttp-3.9.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:1f5a71d25cd8106eab05f8704cd9167b6e5187bcdf8f090a66c6d88b634802b4"}, + {file = "aiohttp-3.9.3-cp311-cp311-win32.whl", hash = "sha256:50fca156d718f8ced687a373f9e140c1bb765ca16e3d6f4fe116e3df7c05b2c5"}, + {file = "aiohttp-3.9.3-cp311-cp311-win_amd64.whl", hash = "sha256:5fe9ce6c09668063b8447f85d43b8d1c4e5d3d7e92c63173e6180b2ac5d46dd8"}, + {file = "aiohttp-3.9.3-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:38a19bc3b686ad55804ae931012f78f7a534cce165d089a2059f658f6c91fa60"}, + {file = "aiohttp-3.9.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:770d015888c2a598b377bd2f663adfd947d78c0124cfe7b959e1ef39f5b13869"}, + {file = "aiohttp-3.9.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ee43080e75fc92bf36219926c8e6de497f9b247301bbf88c5c7593d931426679"}, + {file = "aiohttp-3.9.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:52df73f14ed99cee84865b95a3d9e044f226320a87af208f068ecc33e0c35b96"}, + {file = "aiohttp-3.9.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:dc9b311743a78043b26ffaeeb9715dc360335e5517832f5a8e339f8a43581e4d"}, + {file = "aiohttp-3.9.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b955ed993491f1a5da7f92e98d5dad3c1e14dc175f74517c4e610b1f2456fb11"}, + {file = "aiohttp-3.9.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:504b6981675ace64c28bf4a05a508af5cde526e36492c98916127f5a02354d53"}, + {file = "aiohttp-3.9.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a6fe5571784af92b6bc2fda8d1925cccdf24642d49546d3144948a6a1ed58ca5"}, + {file = "aiohttp-3.9.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:ba39e9c8627edc56544c8628cc180d88605df3892beeb2b94c9bc857774848ca"}, + {file = "aiohttp-3.9.3-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:e5e46b578c0e9db71d04c4b506a2121c0cb371dd89af17a0586ff6769d4c58c1"}, + {file = "aiohttp-3.9.3-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:938a9653e1e0c592053f815f7028e41a3062e902095e5a7dc84617c87267ebd5"}, + {file = "aiohttp-3.9.3-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:c3452ea726c76e92f3b9fae4b34a151981a9ec0a4847a627c43d71a15ac32aa6"}, + {file = "aiohttp-3.9.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:ff30218887e62209942f91ac1be902cc80cddb86bf00fbc6783b7a43b2bea26f"}, + {file = "aiohttp-3.9.3-cp312-cp312-win32.whl", hash = "sha256:38f307b41e0bea3294a9a2a87833191e4bcf89bb0365e83a8be3a58b31fb7f38"}, + {file = "aiohttp-3.9.3-cp312-cp312-win_amd64.whl", hash = "sha256:b791a3143681a520c0a17e26ae7465f1b6f99461a28019d1a2f425236e6eedb5"}, + {file = "aiohttp-3.9.3-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:0ed621426d961df79aa3b963ac7af0d40392956ffa9be022024cd16297b30c8c"}, + {file = "aiohttp-3.9.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:7f46acd6a194287b7e41e87957bfe2ad1ad88318d447caf5b090012f2c5bb528"}, + {file = "aiohttp-3.9.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:feeb18a801aacb098220e2c3eea59a512362eb408d4afd0c242044c33ad6d542"}, + {file = "aiohttp-3.9.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f734e38fd8666f53da904c52a23ce517f1b07722118d750405af7e4123933511"}, + {file = "aiohttp-3.9.3-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b40670ec7e2156d8e57f70aec34a7216407848dfe6c693ef131ddf6e76feb672"}, + {file = "aiohttp-3.9.3-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fdd215b7b7fd4a53994f238d0f46b7ba4ac4c0adb12452beee724ddd0743ae5d"}, + {file = "aiohttp-3.9.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:017a21b0df49039c8f46ca0971b3a7fdc1f56741ab1240cb90ca408049766168"}, + {file = "aiohttp-3.9.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e99abf0bba688259a496f966211c49a514e65afa9b3073a1fcee08856e04425b"}, + {file = "aiohttp-3.9.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:648056db9a9fa565d3fa851880f99f45e3f9a771dd3ff3bb0c048ea83fb28194"}, + {file = "aiohttp-3.9.3-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:8aacb477dc26797ee089721536a292a664846489c49d3ef9725f992449eda5a8"}, + {file = "aiohttp-3.9.3-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:522a11c934ea660ff8953eda090dcd2154d367dec1ae3c540aff9f8a5c109ab4"}, + {file = "aiohttp-3.9.3-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:5bce0dc147ca85caa5d33debc4f4d65e8e8b5c97c7f9f660f215fa74fc49a321"}, + {file = "aiohttp-3.9.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:4b4af9f25b49a7be47c0972139e59ec0e8285c371049df1a63b6ca81fdd216a2"}, + {file = "aiohttp-3.9.3-cp38-cp38-win32.whl", hash = "sha256:298abd678033b8571995650ccee753d9458dfa0377be4dba91e4491da3f2be63"}, + {file = "aiohttp-3.9.3-cp38-cp38-win_amd64.whl", hash = "sha256:69361bfdca5468c0488d7017b9b1e5ce769d40b46a9f4a2eed26b78619e9396c"}, + {file = "aiohttp-3.9.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:0fa43c32d1643f518491d9d3a730f85f5bbaedcbd7fbcae27435bb8b7a061b29"}, + {file = "aiohttp-3.9.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:835a55b7ca49468aaaac0b217092dfdff370e6c215c9224c52f30daaa735c1c1"}, + {file = "aiohttp-3.9.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:06a9b2c8837d9a94fae16c6223acc14b4dfdff216ab9b7202e07a9a09541168f"}, + {file = "aiohttp-3.9.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:abf151955990d23f84205286938796c55ff11bbfb4ccfada8c9c83ae6b3c89a3"}, + {file = "aiohttp-3.9.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:59c26c95975f26e662ca78fdf543d4eeaef70e533a672b4113dd888bd2423caa"}, + {file = "aiohttp-3.9.3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f95511dd5d0e05fd9728bac4096319f80615aaef4acbecb35a990afebe953b0e"}, + {file = "aiohttp-3.9.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:595f105710293e76b9dc09f52e0dd896bd064a79346234b521f6b968ffdd8e58"}, + {file = "aiohttp-3.9.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c7c8b816c2b5af5c8a436df44ca08258fc1a13b449393a91484225fcb7545533"}, + {file = "aiohttp-3.9.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:f1088fa100bf46e7b398ffd9904f4808a0612e1d966b4aa43baa535d1b6341eb"}, + {file = "aiohttp-3.9.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:f59dfe57bb1ec82ac0698ebfcdb7bcd0e99c255bd637ff613760d5f33e7c81b3"}, + {file = "aiohttp-3.9.3-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:361a1026c9dd4aba0109e4040e2aecf9884f5cfe1b1b1bd3d09419c205e2e53d"}, + {file = "aiohttp-3.9.3-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:363afe77cfcbe3a36353d8ea133e904b108feea505aa4792dad6585a8192c55a"}, + {file = "aiohttp-3.9.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:8e2c45c208c62e955e8256949eb225bd8b66a4c9b6865729a786f2aa79b72e9d"}, + {file = "aiohttp-3.9.3-cp39-cp39-win32.whl", hash = "sha256:f7217af2e14da0856e082e96ff637f14ae45c10a5714b63c77f26d8884cf1051"}, + {file = "aiohttp-3.9.3-cp39-cp39-win_amd64.whl", hash = "sha256:27468897f628c627230dba07ec65dc8d0db566923c48f29e084ce382119802bc"}, + {file = "aiohttp-3.9.3.tar.gz", hash = "sha256:90842933e5d1ff760fae6caca4b2b3edba53ba8f4b71e95dacf2818a2aca06f7"}, +] + +[package.dependencies] +aiosignal = ">=1.1.2" +async-timeout = {version = ">=4.0,<5.0", markers = "python_version < \"3.11\""} +attrs = ">=17.3.0" +frozenlist = ">=1.1.1" +multidict = ">=4.5,<7.0" +yarl = ">=1.0,<2.0" + +[package.extras] +speedups = ["Brotli", "aiodns", "brotlicffi"] + +[[package]] +name = "aiosignal" +version = "1.3.1" +description = "aiosignal: a list of registered asynchronous callbacks" +optional = false +python-versions = ">=3.7" +files = [ + {file = "aiosignal-1.3.1-py3-none-any.whl", hash = "sha256:f8376fb07dd1e86a584e4fcdec80b36b7f81aac666ebc724e2c090300dd83b17"}, + {file = "aiosignal-1.3.1.tar.gz", hash = "sha256:54cd96e15e1649b75d6c87526a6ff0b6c1b0dd3459f43d9ca11d48c339b68cfc"}, +] + +[package.dependencies] +frozenlist = ">=1.1.0" + [[package]] name = "alive-progress" version = "3.1.5" @@ -43,57 +153,105 @@ files = [ about-time = "4.2.1" grapheme = "0.6.0" +[[package]] +name = "anyio" +version = "4.3.0" +description = "High level compatibility layer for multiple asynchronous event loop implementations" +optional = false +python-versions = ">=3.8" +files = [ + {file = "anyio-4.3.0-py3-none-any.whl", hash = "sha256:048e05d0f6caeed70d731f3db756d35dcc1f35747c8c403364a8332c630441b8"}, + {file = "anyio-4.3.0.tar.gz", hash = "sha256:f75253795a87df48568485fd18cdd2a3fa5c4f7c5be8e5e36637733fce06fed6"}, +] + +[package.dependencies] +exceptiongroup = {version = ">=1.0.2", markers = "python_version < \"3.11\""} +idna = ">=2.8" +sniffio = ">=1.1" +typing-extensions = {version = ">=4.1", markers = "python_version < \"3.11\""} + +[package.extras] +doc = ["Sphinx (>=7)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx-rtd-theme"] +test = ["anyio[trio]", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "uvloop (>=0.17)"] +trio = ["trio (>=0.23)"] + [[package]] name = "astroid" -version = "3.0.1" +version = "3.1.0" description = "An abstract syntax tree for Python with inference support." optional = false python-versions = ">=3.8.0" files = [ - {file = "astroid-3.0.1-py3-none-any.whl", hash = "sha256:7d5895c9825e18079c5aeac0572bc2e4c83205c95d416e0b4fee8bc361d2d9ca"}, - {file = "astroid-3.0.1.tar.gz", hash = "sha256:86b0bb7d7da0be1a7c4aedb7974e391b32d4ed89e33de6ed6902b4b15c97577e"}, + {file = "astroid-3.1.0-py3-none-any.whl", hash = "sha256:951798f922990137ac090c53af473db7ab4e70c770e6d7fae0cec59f74411819"}, + {file = "astroid-3.1.0.tar.gz", hash = "sha256:ac248253bfa4bd924a0de213707e7ebeeb3138abeb48d798784ead1e56d419d4"}, ] [package.dependencies] typing-extensions = {version = ">=4.0.0", markers = "python_version < \"3.11\""} +[[package]] +name = "async-timeout" +version = "4.0.3" +description = "Timeout context manager for asyncio programs" +optional = false +python-versions = ">=3.7" +files = [ + {file = "async-timeout-4.0.3.tar.gz", hash = "sha256:4640d96be84d82d02ed59ea2b7105a0f7b33abe8703703cd0ab0bf87c427522f"}, + {file = "async_timeout-4.0.3-py3-none-any.whl", hash = "sha256:7405140ff1230c310e51dc27b3145b9092d659ce68ff733fb0cefe3ee42be028"}, +] + [[package]] name = "attrs" -version = "23.1.0" +version = "23.2.0" description = "Classes Without Boilerplate" optional = false python-versions = ">=3.7" files = [ - {file = "attrs-23.1.0-py3-none-any.whl", hash = "sha256:1f28b4522cdc2fb4256ac1a020c78acf9cba2c6b461ccd2c126f3aa8e8335d04"}, - {file = "attrs-23.1.0.tar.gz", hash = "sha256:6279836d581513a26f1bf235f9acd333bc9115683f14f7e8fae46c98fc50e015"}, + {file = "attrs-23.2.0-py3-none-any.whl", hash = "sha256:99b87a485a5820b23b879f04c2305b44b951b502fd64be915879d77a7e8fc6f1"}, + {file = "attrs-23.2.0.tar.gz", hash = "sha256:935dc3b529c262f6cf76e50877d35a4bd3c1de194fd41f47a2b7ae8f19971f30"}, ] [package.extras] cov = ["attrs[tests]", "coverage[toml] (>=5.3)"] -dev = ["attrs[docs,tests]", "pre-commit"] +dev = ["attrs[tests]", "pre-commit"] docs = ["furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier", "zope-interface"] tests = ["attrs[tests-no-zope]", "zope-interface"] -tests-no-zope = ["cloudpickle", "hypothesis", "mypy (>=1.1.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] +tests-mypy = ["mypy (>=1.6)", "pytest-mypy-plugins"] +tests-no-zope = ["attrs[tests-mypy]", "cloudpickle", "hypothesis", "pympler", "pytest (>=4.3.0)", "pytest-xdist[psutil]"] + +[[package]] +name = "authlib" +version = "1.3.0" +description = "The ultimate Python library in building OAuth and OpenID Connect servers and clients." +optional = false +python-versions = ">=3.8" +files = [ + {file = "Authlib-1.3.0-py2.py3-none-any.whl", hash = "sha256:9637e4de1fb498310a56900b3e2043a206b03cb11c05422014b0302cbc814be3"}, + {file = "Authlib-1.3.0.tar.gz", hash = "sha256:959ea62a5b7b5123c5059758296122b57cd2585ae2ed1c0622c21b371ffdae06"}, +] + +[package.dependencies] +cryptography = "*" [[package]] name = "aws-sam-translator" -version = "1.80.0" +version = "1.85.0" description = "AWS SAM Translator is a library that transform SAM templates into AWS CloudFormation templates" optional = false -python-versions = ">=3.7, <=4.0, !=4.0" +python-versions = ">=3.8, <=4.0, !=4.0" files = [ - {file = "aws-sam-translator-1.80.0.tar.gz", hash = "sha256:36afb8b802af0180a35efa68a8ab19d5d929d0a6a649a0101e8a4f8e1f05681f"}, - {file = "aws_sam_translator-1.80.0-py3-none-any.whl", hash = "sha256:f00215f9314cef1bbbdbd7520e3b0c75a76b88bdc3f0dedb6a2c69a12e904b12"}, + {file = "aws-sam-translator-1.85.0.tar.gz", hash = "sha256:e41938affa128fb5bde5e1989b260bf539a96369bba3faf316ce66651351df39"}, + {file = "aws_sam_translator-1.85.0-py3-none-any.whl", hash = "sha256:e8c69a4db7279421ff6c3579cd4d43395fe9b6781f50416528e984be68e25481"}, ] [package.dependencies] boto3 = ">=1.19.5,<2.dev0" jsonschema = ">=3.2,<5" pydantic = ">=1.8,<3" -typing-extensions = ">=4.4,<5" +typing-extensions = ">=4.4" [package.extras] -dev = ["black (==23.3.0)", "boto3 (>=1.23,<2)", "boto3-stubs[appconfig,serverlessrepo] (>=1.19.5,<2.dev0)", "coverage (>=5.3,<8)", "dateparser (>=1.1,<2.0)", "importlib-metadata", "mypy (>=1.3.0,<1.4.0)", "parameterized (>=0.7,<1.0)", "pytest (>=6.2,<8)", "pytest-cov (>=2.10,<5)", "pytest-env (>=0.6,<1)", "pytest-rerunfailures (>=9.1,<12)", "pytest-xdist (>=2.5,<4)", "pyyaml (>=6.0,<7.0)", "requests (>=2.28,<3.0)", "ruamel.yaml (==0.17.21)", "ruff (==0.0.284)", "tenacity (>=8.0,<9.0)", "types-PyYAML (>=6.0,<7.0)", "types-jsonschema (>=3.2,<4.0)"] +dev = ["black (==23.10.1)", "boto3 (>=1.23,<2)", "boto3-stubs[appconfig,serverlessrepo] (>=1.19.5,<2.dev0)", "coverage (>=5.3,<8)", "dateparser (>=1.1,<2.0)", "mypy (>=1.3.0,<1.4.0)", "parameterized (>=0.7,<1.0)", "pytest (>=6.2,<8)", "pytest-cov (>=2.10,<5)", "pytest-env (>=0.6,<1)", "pytest-rerunfailures (>=9.1,<12)", "pytest-xdist (>=2.5,<4)", "pyyaml (>=6.0,<7.0)", "requests (>=2.28,<3.0)", "ruamel.yaml (==0.17.21)", "ruff (>=0.1.0,<0.2.0)", "tenacity (>=8.0,<9.0)", "types-PyYAML (>=6.0,<7.0)", "types-jsonschema (>=3.2,<4.0)"] [[package]] name = "aws-xray-sdk" @@ -134,19 +292,19 @@ files = [ [[package]] name = "azure-core" -version = "1.28.0" +version = "1.30.0" description = "Microsoft Azure Core Library for Python" optional = false python-versions = ">=3.7" files = [ - {file = "azure-core-1.28.0.zip", hash = "sha256:e9eefc66fc1fde56dab6f04d4e5d12c60754d5a9fa49bdcfd8534fc96ed936bd"}, - {file = "azure_core-1.28.0-py3-none-any.whl", hash = "sha256:dec36dfc8eb0b052a853f30c07437effec2f9e3e1fc8f703d9bdaa5cfc0043d9"}, + {file = "azure-core-1.30.0.tar.gz", hash = "sha256:6f3a7883ef184722f6bd997262eddaf80cfe7e5b3e0caaaf8db1695695893d35"}, + {file = "azure_core-1.30.0-py3-none-any.whl", hash = "sha256:3dae7962aad109610e68c9a7abb31d79720e1d982ddf61363038d175a5025e89"}, ] [package.dependencies] -requests = ">=2.18.4" +requests = ">=2.21.0" six = ">=1.11.0" -typing-extensions = ">=4.3.0" +typing-extensions = ">=4.6.0" [package.extras] aio = ["aiohttp (>=3.0)"] @@ -168,6 +326,39 @@ cryptography = ">=2.5" msal = ">=1.24.0,<2.0.0" msal-extensions = ">=0.3.0,<2.0.0" +[[package]] +name = "azure-keyvault-keys" +version = "4.9.0" +description = "Microsoft Azure Key Vault Keys Client Library for Python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "azure-keyvault-keys-4.9.0.tar.gz", hash = "sha256:08632dcd6ece28657204e9a256ad64369fe2b0e385ed43349f932f007d89f774"}, + {file = "azure_keyvault_keys-4.9.0-py3-none-any.whl", hash = "sha256:05eff85600f2f288a38e5c818ff77c5121840d327e66188cfa7ad333defb545b"}, +] + +[package.dependencies] +azure-core = ">=1.29.5,<2.0.0" +cryptography = ">=2.1.4" +isodate = ">=0.6.1" +typing-extensions = ">=4.0.1" + +[[package]] +name = "azure-mgmt-applicationinsights" +version = "4.0.0" +description = "Microsoft Azure Application Insights Management Client Library for Python" +optional = false +python-versions = ">=3.7" +files = [ + {file = "azure-mgmt-applicationinsights-4.0.0.zip", hash = "sha256:50c3db05573e0cc2d56314a0556fb346ef05ec489ac000f4d720d92c6b647e06"}, + {file = "azure_mgmt_applicationinsights-4.0.0-py3-none-any.whl", hash = "sha256:2b1ffd9a0114974455795c73a3a5d17c849e32b961d707d2db393b99254b576f"}, +] + +[package.dependencies] +azure-common = ">=1.1,<2.0" +azure-mgmt-core = ">=1.3.2,<2.0.0" +isodate = ">=0.6.1,<1.0.0" + [[package]] name = "azure-mgmt-authorization" version = "4.0.0" @@ -184,6 +375,22 @@ azure-common = ">=1.1,<2.0" azure-mgmt-core = ">=1.3.2,<2.0.0" isodate = ">=0.6.1,<1.0.0" +[[package]] +name = "azure-mgmt-compute" +version = "30.5.0" +description = "Microsoft Azure Compute Management Client Library for Python" +optional = false +python-versions = ">=3.7" +files = [ + {file = "azure-mgmt-compute-30.5.0.tar.gz", hash = "sha256:ed3ea34b799db0d52ee55e2f1ab4b0f09fa4a08f35e061ecb9aad9fb5a218844"}, + {file = "azure_mgmt_compute-30.5.0-py3-none-any.whl", hash = "sha256:b65a6c1e22be7334604257d8d9f96a9c6dc4c6d4869f95d0d551c7c8170a2e71"}, +] + +[package.dependencies] +azure-common = ">=1.1,<2.0" +azure-mgmt-core = ">=1.3.2,<2.0.0" +isodate = ">=0.6.1,<1.0.0" + [[package]] name = "azure-mgmt-core" version = "1.4.0" @@ -198,15 +405,111 @@ files = [ [package.dependencies] azure-core = ">=1.26.2,<2.0.0" +[[package]] +name = "azure-mgmt-cosmosdb" +version = "9.4.0" +description = "Microsoft Azure Cosmos DB Management Client Library for Python" +optional = false +python-versions = ">=3.7" +files = [ + {file = "azure-mgmt-cosmosdb-9.4.0.tar.gz", hash = "sha256:cabb821cd446b09e73d24c31c287a60fcc3623488f1ffa9335c692267e79c341"}, + {file = "azure_mgmt_cosmosdb-9.4.0-py3-none-any.whl", hash = "sha256:8ce9ab58df018980c4cf8defb38022fa5f2a9dcbccdeb73e952374cbaff919c5"}, +] + +[package.dependencies] +azure-common = ">=1.1,<2.0" +azure-mgmt-core = ">=1.3.2,<2.0.0" +isodate = ">=0.6.1,<1.0.0" + +[[package]] +name = "azure-mgmt-keyvault" +version = "10.3.0" +description = "Microsoft Azure Key Vault Management Client Library for Python" +optional = false +python-versions = ">=3.7" +files = [ + {file = "azure-mgmt-keyvault-10.3.0.tar.gz", hash = "sha256:183b4164cf1868b8ea7efeaa98edad7d2a4e14a9bd977c2818b12b75150cd2a2"}, + {file = "azure_mgmt_keyvault-10.3.0-py3-none-any.whl", hash = "sha256:3410cf6c703e9570ed3c8e9716e483c02b1804adde6ab437ddc8feac4545acd6"}, +] + +[package.dependencies] +azure-common = ">=1.1,<2.0" +azure-mgmt-core = ">=1.3.2,<2.0.0" +isodate = ">=0.6.1,<1.0.0" + +[[package]] +name = "azure-mgmt-monitor" +version = "6.0.2" +description = "Microsoft Azure Monitor Client Library for Python" +optional = false +python-versions = ">=3.7" +files = [ + {file = "azure-mgmt-monitor-6.0.2.tar.gz", hash = "sha256:5ffbf500e499ab7912b1ba6d26cef26480d9ae411532019bb78d72562196e07b"}, + {file = "azure_mgmt_monitor-6.0.2-py3-none-any.whl", hash = "sha256:fe4cf41e6680b74a228f81451dc5522656d599c6f343ecf702fc790fda9a357b"}, +] + +[package.dependencies] +azure-common = ">=1.1,<2.0" +azure-mgmt-core = ">=1.3.2,<2.0.0" +isodate = ">=0.6.1,<1.0.0" + +[[package]] +name = "azure-mgmt-network" +version = "25.3.0" +description = "Microsoft Azure Network Management Client Library for Python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "azure-mgmt-network-25.3.0.tar.gz", hash = "sha256:dce2cafb1ae0e563e0b5efc537dc98a7c0ad824d4261e64bed75f788196dd5c6"}, + {file = "azure_mgmt_network-25.3.0-py3-none-any.whl", hash = "sha256:87b5338d14c957bd3a28a5ec85fb74043749d1a16a48cd5978ef51c4a1036af3"}, +] + +[package.dependencies] +azure-common = ">=1.1,<2.0" +azure-mgmt-core = ">=1.3.2,<2.0.0" +isodate = ">=0.6.1,<1.0.0" + +[[package]] +name = "azure-mgmt-rdbms" +version = "10.1.0" +description = "Microsoft Azure RDBMS Management Client Library for Python" +optional = false +python-versions = ">=3.6" +files = [ + {file = "azure-mgmt-rdbms-10.1.0.zip", hash = "sha256:a87d401c876c84734cdd4888af551e4a1461b4b328d9816af60cb8ac5979f035"}, + {file = "azure_mgmt_rdbms-10.1.0-py3-none-any.whl", hash = "sha256:8eac17d1341a91d7ed914435941ba917b5ef1568acabc3e65653603966a7cc88"}, +] + +[package.dependencies] +azure-common = ">=1.1,<2.0" +azure-mgmt-core = ">=1.3.0,<2.0.0" +msrest = ">=0.6.21" + +[[package]] +name = "azure-mgmt-resource" +version = "23.0.1" +description = "Microsoft Azure Resource Management Client Library for Python" +optional = false +python-versions = ">=3.7" +files = [ + {file = "azure-mgmt-resource-23.0.1.zip", hash = "sha256:c2ba6cfd99df95f55f36eadc4245e3dc713257302a1fd0277756d94bd8cb28e0"}, + {file = "azure_mgmt_resource-23.0.1-py3-none-any.whl", hash = "sha256:f185eec72bbc39f42bcb83ae6f1bad744f0e3f20a12d9b2b3e70d16c74ad9cc0"}, +] + +[package.dependencies] +azure-common = ">=1.1,<2.0" +azure-mgmt-core = ">=1.3.2,<2.0.0" +isodate = ">=0.6.1,<1.0.0" + [[package]] name = "azure-mgmt-security" -version = "5.0.0" +version = "6.0.0" description = "Microsoft Azure Security Center Management Client Library for Python" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "azure-mgmt-security-5.0.0.zip", hash = "sha256:38b03efe82c2344cea203fda95e6d00b7ac22782fa1c0b585cd0ea2c8ff3e702"}, - {file = "azure_mgmt_security-5.0.0-py3-none-any.whl", hash = "sha256:73a74ce8f6ffb1b345ce101c8abdd42238f161f0988d168d23918feda0089654"}, + {file = "azure-mgmt-security-6.0.0.tar.gz", hash = "sha256:ceafc1869899067110bd830c5cc98bc9b8f32d8ea840ca1f693b1a5f52a5f8b0"}, + {file = "azure_mgmt_security-6.0.0-py3-none-any.whl", hash = "sha256:c88570003ac8138c59e6e549e2d8bb6a6c7057c496303d8c33392fdfe05f294c"}, ] [package.dependencies] @@ -262,6 +565,22 @@ azure-common = ">=1.1,<2.0" azure-mgmt-core = ">=1.3.2,<2.0.0" msrest = ">=0.7.1" +[[package]] +name = "azure-mgmt-web" +version = "7.2.0" +description = "Microsoft Azure Web Apps Management Client Library for Python" +optional = false +python-versions = ">=3.7" +files = [ + {file = "azure-mgmt-web-7.2.0.tar.gz", hash = "sha256:efcfe6f7f520ed0abcfe86517e1c8cf02a712f737a3db0db7cb46c6d647981ed"}, + {file = "azure_mgmt_web-7.2.0-py3-none-any.whl", hash = "sha256:28e88602ad9d6d03ed3ba89f966f478b6148e28d292d165e5f371c92c59621df"}, +] + +[package.dependencies] +azure-common = ">=1.1,<2.0" +azure-mgmt-core = ">=1.3.2,<2.0.0" +isodate = ">=0.6.1,<1.0.0" + [[package]] name = "azure-storage-blob" version = "12.19.0" @@ -284,70 +603,84 @@ aio = ["azure-core[aio] (>=1.28.0,<2.0.0)"] [[package]] name = "babel" -version = "2.12.1" +version = "2.14.0" description = "Internationalization utilities" -optional = true +optional = false python-versions = ">=3.7" files = [ - {file = "Babel-2.12.1-py3-none-any.whl", hash = "sha256:b4246fb7677d3b98f501a39d43396d3cafdc8eadb045f4a31be01863f655c610"}, - {file = "Babel-2.12.1.tar.gz", hash = "sha256:cc2d99999cd01d44420ae725a21c9e3711b3aadc7976d6147f622d8581963455"}, + {file = "Babel-2.14.0-py3-none-any.whl", hash = "sha256:efb1a25b7118e67ce3a259bed20545c29cb68be8ad2c784c83689981b7a57287"}, + {file = "Babel-2.14.0.tar.gz", hash = "sha256:6919867db036398ba21eb5c7a0f6b28ab8cbc3ae7a73a44ebe34ae74a4e7d363"}, ] +[package.extras] +dev = ["freezegun (>=1.0,<2.0)", "pytest (>=6.0)", "pytest-cov"] + [[package]] name = "bandit" -version = "1.7.5" +version = "1.7.7" description = "Security oriented static analyser for python code." optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "bandit-1.7.5-py3-none-any.whl", hash = "sha256:75665181dc1e0096369112541a056c59d1c5f66f9bb74a8d686c3c362b83f549"}, - {file = "bandit-1.7.5.tar.gz", hash = "sha256:bdfc739baa03b880c2d15d0431b31c658ffc348e907fe197e54e0389dd59e11e"}, + {file = "bandit-1.7.7-py3-none-any.whl", hash = "sha256:17e60786a7ea3c9ec84569fd5aee09936d116cb0cb43151023258340dbffb7ed"}, + {file = "bandit-1.7.7.tar.gz", hash = "sha256:527906bec6088cb499aae31bc962864b4e77569e9d529ee51df3a93b4b8ab28a"}, ] [package.dependencies] colorama = {version = ">=0.3.9", markers = "platform_system == \"Windows\""} -GitPython = ">=1.0.1" PyYAML = ">=5.3.1" rich = "*" stevedore = ">=1.20.0" [package.extras] -test = ["beautifulsoup4 (>=4.8.0)", "coverage (>=4.5.4)", "fixtures (>=3.0.0)", "flake8 (>=4.0.0)", "pylint (==1.9.4)", "stestr (>=2.5.0)", "testscenarios (>=0.5.0)", "testtools (>=2.3.0)", "tomli (>=1.1.0)"] +baseline = ["GitPython (>=3.1.30)"] +test = ["beautifulsoup4 (>=4.8.0)", "coverage (>=4.5.4)", "fixtures (>=3.0.0)", "flake8 (>=4.0.0)", "pylint (==1.9.4)", "stestr (>=2.5.0)", "testscenarios (>=0.5.0)", "testtools (>=2.3.0)"] toml = ["tomli (>=1.1.0)"] yaml = ["PyYAML"] [[package]] name = "black" -version = "22.12.0" +version = "24.2.0" description = "The uncompromising code formatter." optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "black-22.12.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9eedd20838bd5d75b80c9f5487dbcb06836a43833a37846cf1d8c1cc01cef59d"}, - {file = "black-22.12.0-cp310-cp310-win_amd64.whl", hash = "sha256:159a46a4947f73387b4d83e87ea006dbb2337eab6c879620a3ba52699b1f4351"}, - {file = "black-22.12.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d30b212bffeb1e252b31dd269dfae69dd17e06d92b87ad26e23890f3efea366f"}, - {file = "black-22.12.0-cp311-cp311-win_amd64.whl", hash = "sha256:7412e75863aa5c5411886804678b7d083c7c28421210180d67dfd8cf1221e1f4"}, - {file = "black-22.12.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c116eed0efb9ff870ded8b62fe9f28dd61ef6e9ddd28d83d7d264a38417dcee2"}, - {file = "black-22.12.0-cp37-cp37m-win_amd64.whl", hash = "sha256:1f58cbe16dfe8c12b7434e50ff889fa479072096d79f0a7f25e4ab8e94cd8350"}, - {file = "black-22.12.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:77d86c9f3db9b1bf6761244bc0b3572a546f5fe37917a044e02f3166d5aafa7d"}, - {file = "black-22.12.0-cp38-cp38-win_amd64.whl", hash = "sha256:82d9fe8fee3401e02e79767016b4907820a7dc28d70d137eb397b92ef3cc5bfc"}, - {file = "black-22.12.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:101c69b23df9b44247bd88e1d7e90154336ac4992502d4197bdac35dd7ee3320"}, - {file = "black-22.12.0-cp39-cp39-win_amd64.whl", hash = "sha256:559c7a1ba9a006226f09e4916060982fd27334ae1998e7a38b3f33a37f7a2148"}, - {file = "black-22.12.0-py3-none-any.whl", hash = "sha256:436cc9167dd28040ad90d3b404aec22cedf24a6e4d7de221bec2730ec0c97bcf"}, - {file = "black-22.12.0.tar.gz", hash = "sha256:229351e5a18ca30f447bf724d007f890f97e13af070bb6ad4c0a441cd7596a2f"}, + {file = "black-24.2.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:6981eae48b3b33399c8757036c7f5d48a535b962a7c2310d19361edeef64ce29"}, + {file = "black-24.2.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d533d5e3259720fdbc1b37444491b024003e012c5173f7d06825a77508085430"}, + {file = "black-24.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:61a0391772490ddfb8a693c067df1ef5227257e72b0e4108482b8d41b5aee13f"}, + {file = "black-24.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:992e451b04667116680cb88f63449267c13e1ad134f30087dec8527242e9862a"}, + {file = "black-24.2.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:163baf4ef40e6897a2a9b83890e59141cc8c2a98f2dda5080dc15c00ee1e62cd"}, + {file = "black-24.2.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e37c99f89929af50ffaf912454b3e3b47fd64109659026b678c091a4cd450fb2"}, + {file = "black-24.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4f9de21bafcba9683853f6c96c2d515e364aee631b178eaa5145fc1c61a3cc92"}, + {file = "black-24.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:9db528bccb9e8e20c08e716b3b09c6bdd64da0dd129b11e160bf082d4642ac23"}, + {file = "black-24.2.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:d84f29eb3ee44859052073b7636533ec995bd0f64e2fb43aeceefc70090e752b"}, + {file = "black-24.2.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1e08fb9a15c914b81dd734ddd7fb10513016e5ce7e6704bdd5e1251ceee51ac9"}, + {file = "black-24.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:810d445ae6069ce64030c78ff6127cd9cd178a9ac3361435708b907d8a04c693"}, + {file = "black-24.2.0-cp312-cp312-win_amd64.whl", hash = "sha256:ba15742a13de85e9b8f3239c8f807723991fbfae24bad92d34a2b12e81904982"}, + {file = "black-24.2.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:7e53a8c630f71db01b28cd9602a1ada68c937cbf2c333e6ed041390d6968faf4"}, + {file = "black-24.2.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:93601c2deb321b4bad8f95df408e3fb3943d85012dddb6121336b8e24a0d1218"}, + {file = "black-24.2.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a0057f800de6acc4407fe75bb147b0c2b5cbb7c3ed110d3e5999cd01184d53b0"}, + {file = "black-24.2.0-cp38-cp38-win_amd64.whl", hash = "sha256:faf2ee02e6612577ba0181f4347bcbcf591eb122f7841ae5ba233d12c39dcb4d"}, + {file = "black-24.2.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:057c3dc602eaa6fdc451069bd027a1b2635028b575a6c3acfd63193ced20d9c8"}, + {file = "black-24.2.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:08654d0797e65f2423f850fc8e16a0ce50925f9337fb4a4a176a7aa4026e63f8"}, + {file = "black-24.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ca610d29415ee1a30a3f30fab7a8f4144e9d34c89a235d81292a1edb2b55f540"}, + {file = "black-24.2.0-cp39-cp39-win_amd64.whl", hash = "sha256:4dd76e9468d5536abd40ffbc7a247f83b2324f0c050556d9c371c2b9a9a95e31"}, + {file = "black-24.2.0-py3-none-any.whl", hash = "sha256:e8a6ae970537e67830776488bca52000eaa37fa63b9988e8c487458d9cd5ace6"}, + {file = "black-24.2.0.tar.gz", hash = "sha256:bce4f25c27c3435e4dace4815bcb2008b87e167e3bf4ee47ccdc5ce906eb4894"}, ] [package.dependencies] click = ">=8.0.0" mypy-extensions = ">=0.4.3" +packaging = ">=22.0" pathspec = ">=0.9.0" platformdirs = ">=2" -tomli = {version = ">=1.1.0", markers = "python_full_version < \"3.11.0a7\""} -typing-extensions = {version = ">=3.10.0.0", markers = "python_version < \"3.10\""} +tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""} +typing-extensions = {version = ">=4.0.1", markers = "python_version < \"3.11\""} [package.extras] colorama = ["colorama (>=0.4.3)"] -d = ["aiohttp (>=3.7.4)"] +d = ["aiohttp (>=3.7.4)", "aiohttp (>=3.7.4,!=3.9.0)"] jupyter = ["ipython (>=7.8.0)", "tokenize-rt (>=3.2.0)"] uvloop = ["uvloop (>=0.15.2)"] @@ -391,97 +724,85 @@ crt = ["awscrt (==0.16.9)"] [[package]] name = "cachetools" -version = "5.3.0" +version = "5.3.3" description = "Extensible memoizing collections and decorators" optional = false -python-versions = "~=3.7" +python-versions = ">=3.7" files = [ - {file = "cachetools-5.3.0-py3-none-any.whl", hash = "sha256:429e1a1e845c008ea6c85aa35d4b98b65d6a9763eeef3e37e92728a12d1de9d4"}, - {file = "cachetools-5.3.0.tar.gz", hash = "sha256:13dfddc7b8df938c21a940dfa6557ce6e94a2f1cdfa58eb90c805721d58f2c14"}, + {file = "cachetools-5.3.3-py3-none-any.whl", hash = "sha256:0abad1021d3f8325b2fc1d2e9c8b9c9d57b04c3932657a72465447332c24d945"}, + {file = "cachetools-5.3.3.tar.gz", hash = "sha256:ba29e2dfa0b8b556606f097407ed1aa62080ee108ab0dc5ec9d6a723a007d105"}, ] [[package]] name = "certifi" -version = "2023.7.22" +version = "2024.2.2" description = "Python package for providing Mozilla's CA Bundle." optional = false python-versions = ">=3.6" files = [ - {file = "certifi-2023.7.22-py3-none-any.whl", hash = "sha256:92d6037539857d8206b8f6ae472e8b77db8058fec5937a1ef3f54304089edbb9"}, - {file = "certifi-2023.7.22.tar.gz", hash = "sha256:539cc1d13202e33ca466e88b2807e29f4c13049d6d87031a3c110744495cb082"}, + {file = "certifi-2024.2.2-py3-none-any.whl", hash = "sha256:dc383c07b76109f368f6106eee2b593b04a011ea4d55f652c6ca24a754d1cdd1"}, + {file = "certifi-2024.2.2.tar.gz", hash = "sha256:0569859f95fc761b18b45ef421b1290a0f65f147e92a1e5eb3e635f9a5e4e66f"}, ] [[package]] name = "cffi" -version = "1.15.1" +version = "1.16.0" description = "Foreign Function Interface for Python calling C code." optional = false -python-versions = "*" +python-versions = ">=3.8" files = [ - {file = "cffi-1.15.1-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:a66d3508133af6e8548451b25058d5812812ec3798c886bf38ed24a98216fab2"}, - {file = "cffi-1.15.1-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:470c103ae716238bbe698d67ad020e1db9d9dba34fa5a899b5e21577e6d52ed2"}, - {file = "cffi-1.15.1-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:9ad5db27f9cabae298d151c85cf2bad1d359a1b9c686a275df03385758e2f914"}, - {file = "cffi-1.15.1-cp27-cp27m-win32.whl", hash = "sha256:b3bbeb01c2b273cca1e1e0c5df57f12dce9a4dd331b4fa1635b8bec26350bde3"}, - {file = "cffi-1.15.1-cp27-cp27m-win_amd64.whl", hash = "sha256:e00b098126fd45523dd056d2efba6c5a63b71ffe9f2bbe1a4fe1716e1d0c331e"}, - {file = "cffi-1.15.1-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:d61f4695e6c866a23a21acab0509af1cdfd2c013cf256bbf5b6b5e2695827162"}, - {file = "cffi-1.15.1-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:ed9cb427ba5504c1dc15ede7d516b84757c3e3d7868ccc85121d9310d27eed0b"}, - {file = "cffi-1.15.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:39d39875251ca8f612b6f33e6b1195af86d1b3e60086068be9cc053aa4376e21"}, - {file = "cffi-1.15.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:285d29981935eb726a4399badae8f0ffdff4f5050eaa6d0cfc3f64b857b77185"}, - {file = "cffi-1.15.1-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3eb6971dcff08619f8d91607cfc726518b6fa2a9eba42856be181c6d0d9515fd"}, - {file = "cffi-1.15.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:21157295583fe8943475029ed5abdcf71eb3911894724e360acff1d61c1d54bc"}, - {file = "cffi-1.15.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5635bd9cb9731e6d4a1132a498dd34f764034a8ce60cef4f5319c0541159392f"}, - {file = "cffi-1.15.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2012c72d854c2d03e45d06ae57f40d78e5770d252f195b93f581acf3ba44496e"}, - {file = "cffi-1.15.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd86c085fae2efd48ac91dd7ccffcfc0571387fe1193d33b6394db7ef31fe2a4"}, - {file = "cffi-1.15.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:fa6693661a4c91757f4412306191b6dc88c1703f780c8234035eac011922bc01"}, - {file = "cffi-1.15.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:59c0b02d0a6c384d453fece7566d1c7e6b7bae4fc5874ef2ef46d56776d61c9e"}, - {file = "cffi-1.15.1-cp310-cp310-win32.whl", hash = "sha256:cba9d6b9a7d64d4bd46167096fc9d2f835e25d7e4c121fb2ddfc6528fb0413b2"}, - {file = "cffi-1.15.1-cp310-cp310-win_amd64.whl", hash = "sha256:ce4bcc037df4fc5e3d184794f27bdaab018943698f4ca31630bc7f84a7b69c6d"}, - {file = "cffi-1.15.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3d08afd128ddaa624a48cf2b859afef385b720bb4b43df214f85616922e6a5ac"}, - {file = "cffi-1.15.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3799aecf2e17cf585d977b780ce79ff0dc9b78d799fc694221ce814c2c19db83"}, - {file = "cffi-1.15.1-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a591fe9e525846e4d154205572a029f653ada1a78b93697f3b5a8f1f2bc055b9"}, - {file = "cffi-1.15.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3548db281cd7d2561c9ad9984681c95f7b0e38881201e157833a2342c30d5e8c"}, - {file = "cffi-1.15.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:91fc98adde3d7881af9b59ed0294046f3806221863722ba7d8d120c575314325"}, - {file = "cffi-1.15.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:94411f22c3985acaec6f83c6df553f2dbe17b698cc7f8ae751ff2237d96b9e3c"}, - {file = "cffi-1.15.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:03425bdae262c76aad70202debd780501fabeaca237cdfddc008987c0e0f59ef"}, - {file = "cffi-1.15.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:cc4d65aeeaa04136a12677d3dd0b1c0c94dc43abac5860ab33cceb42b801c1e8"}, - {file = "cffi-1.15.1-cp311-cp311-win32.whl", hash = "sha256:a0f100c8912c114ff53e1202d0078b425bee3649ae34d7b070e9697f93c5d52d"}, - {file = "cffi-1.15.1-cp311-cp311-win_amd64.whl", hash = "sha256:04ed324bda3cda42b9b695d51bb7d54b680b9719cfab04227cdd1e04e5de3104"}, - {file = "cffi-1.15.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:50a74364d85fd319352182ef59c5c790484a336f6db772c1a9231f1c3ed0cbd7"}, - {file = "cffi-1.15.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e263d77ee3dd201c3a142934a086a4450861778baaeeb45db4591ef65550b0a6"}, - {file = "cffi-1.15.1-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cec7d9412a9102bdc577382c3929b337320c4c4c4849f2c5cdd14d7368c5562d"}, - {file = "cffi-1.15.1-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4289fc34b2f5316fbb762d75362931e351941fa95fa18789191b33fc4cf9504a"}, - {file = "cffi-1.15.1-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:173379135477dc8cac4bc58f45db08ab45d228b3363adb7af79436135d028405"}, - {file = "cffi-1.15.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:6975a3fac6bc83c4a65c9f9fcab9e47019a11d3d2cf7f3c0d03431bf145a941e"}, - {file = "cffi-1.15.1-cp36-cp36m-win32.whl", hash = "sha256:2470043b93ff09bf8fb1d46d1cb756ce6132c54826661a32d4e4d132e1977adf"}, - {file = "cffi-1.15.1-cp36-cp36m-win_amd64.whl", hash = "sha256:30d78fbc8ebf9c92c9b7823ee18eb92f2e6ef79b45ac84db507f52fbe3ec4497"}, - {file = "cffi-1.15.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:198caafb44239b60e252492445da556afafc7d1e3ab7a1fb3f0584ef6d742375"}, - {file = "cffi-1.15.1-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5ef34d190326c3b1f822a5b7a45f6c4535e2f47ed06fec77d3d799c450b2651e"}, - {file = "cffi-1.15.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8102eaf27e1e448db915d08afa8b41d6c7ca7a04b7d73af6514df10a3e74bd82"}, - {file = "cffi-1.15.1-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5df2768244d19ab7f60546d0c7c63ce1581f7af8b5de3eb3004b9b6fc8a9f84b"}, - {file = "cffi-1.15.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a8c4917bd7ad33e8eb21e9a5bbba979b49d9a97acb3a803092cbc1133e20343c"}, - {file = "cffi-1.15.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0e2642fe3142e4cc4af0799748233ad6da94c62a8bec3a6648bf8ee68b1c7426"}, - {file = "cffi-1.15.1-cp37-cp37m-win32.whl", hash = "sha256:e229a521186c75c8ad9490854fd8bbdd9a0c9aa3a524326b55be83b54d4e0ad9"}, - {file = "cffi-1.15.1-cp37-cp37m-win_amd64.whl", hash = "sha256:a0b71b1b8fbf2b96e41c4d990244165e2c9be83d54962a9a1d118fd8657d2045"}, - {file = "cffi-1.15.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:320dab6e7cb2eacdf0e658569d2575c4dad258c0fcc794f46215e1e39f90f2c3"}, - {file = "cffi-1.15.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1e74c6b51a9ed6589199c787bf5f9875612ca4a8a0785fb2d4a84429badaf22a"}, - {file = "cffi-1.15.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a5c84c68147988265e60416b57fc83425a78058853509c1b0629c180094904a5"}, - {file = "cffi-1.15.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3b926aa83d1edb5aa5b427b4053dc420ec295a08e40911296b9eb1b6170f6cca"}, - {file = "cffi-1.15.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:87c450779d0914f2861b8526e035c5e6da0a3199d8f1add1a665e1cbc6fc6d02"}, - {file = "cffi-1.15.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4f2c9f67e9821cad2e5f480bc8d83b8742896f1242dba247911072d4fa94c192"}, - {file = "cffi-1.15.1-cp38-cp38-win32.whl", hash = "sha256:8b7ee99e510d7b66cdb6c593f21c043c248537a32e0bedf02e01e9553a172314"}, - {file = "cffi-1.15.1-cp38-cp38-win_amd64.whl", hash = "sha256:00a9ed42e88df81ffae7a8ab6d9356b371399b91dbdf0c3cb1e84c03a13aceb5"}, - {file = "cffi-1.15.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:54a2db7b78338edd780e7ef7f9f6c442500fb0d41a5a4ea24fff1c929d5af585"}, - {file = "cffi-1.15.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:fcd131dd944808b5bdb38e6f5b53013c5aa4f334c5cad0c72742f6eba4b73db0"}, - {file = "cffi-1.15.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7473e861101c9e72452f9bf8acb984947aa1661a7704553a9f6e4baa5ba64415"}, - {file = "cffi-1.15.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6c9a799e985904922a4d207a94eae35c78ebae90e128f0c4e521ce339396be9d"}, - {file = "cffi-1.15.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3bcde07039e586f91b45c88f8583ea7cf7a0770df3a1649627bf598332cb6984"}, - {file = "cffi-1.15.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:33ab79603146aace82c2427da5ca6e58f2b3f2fb5da893ceac0c42218a40be35"}, - {file = "cffi-1.15.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5d598b938678ebf3c67377cdd45e09d431369c3b1a5b331058c338e201f12b27"}, - {file = "cffi-1.15.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:db0fbb9c62743ce59a9ff687eb5f4afbe77e5e8403d6697f7446e5f609976f76"}, - {file = "cffi-1.15.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:98d85c6a2bef81588d9227dde12db8a7f47f639f4a17c9ae08e773aa9c697bf3"}, - {file = "cffi-1.15.1-cp39-cp39-win32.whl", hash = "sha256:40f4774f5a9d4f5e344f31a32b5096977b5d48560c5592e2f3d2c4374bd543ee"}, - {file = "cffi-1.15.1-cp39-cp39-win_amd64.whl", hash = "sha256:70df4e3b545a17496c9b3f41f5115e69a4f2e77e94e1d2a8e1070bc0c38c8a3c"}, - {file = "cffi-1.15.1.tar.gz", hash = "sha256:d400bfb9a37b1351253cb402671cea7e89bdecc294e8016a707f6d1d8ac934f9"}, + {file = "cffi-1.16.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:6b3d6606d369fc1da4fd8c357d026317fbb9c9b75d36dc16e90e84c26854b088"}, + {file = "cffi-1.16.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ac0f5edd2360eea2f1daa9e26a41db02dd4b0451b48f7c318e217ee092a213e9"}, + {file = "cffi-1.16.0-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7e61e3e4fa664a8588aa25c883eab612a188c725755afff6289454d6362b9673"}, + {file = "cffi-1.16.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a72e8961a86d19bdb45851d8f1f08b041ea37d2bd8d4fd19903bc3083d80c896"}, + {file = "cffi-1.16.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5b50bf3f55561dac5438f8e70bfcdfd74543fd60df5fa5f62d94e5867deca684"}, + {file = "cffi-1.16.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7651c50c8c5ef7bdb41108b7b8c5a83013bfaa8a935590c5d74627c047a583c7"}, + {file = "cffi-1.16.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e4108df7fe9b707191e55f33efbcb2d81928e10cea45527879a4749cbe472614"}, + {file = "cffi-1.16.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:32c68ef735dbe5857c810328cb2481e24722a59a2003018885514d4c09af9743"}, + {file = "cffi-1.16.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:673739cb539f8cdaa07d92d02efa93c9ccf87e345b9a0b556e3ecc666718468d"}, + {file = "cffi-1.16.0-cp310-cp310-win32.whl", hash = "sha256:9f90389693731ff1f659e55c7d1640e2ec43ff725cc61b04b2f9c6d8d017df6a"}, + {file = "cffi-1.16.0-cp310-cp310-win_amd64.whl", hash = "sha256:e6024675e67af929088fda399b2094574609396b1decb609c55fa58b028a32a1"}, + {file = "cffi-1.16.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b84834d0cf97e7d27dd5b7f3aca7b6e9263c56308ab9dc8aae9784abb774d404"}, + {file = "cffi-1.16.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1b8ebc27c014c59692bb2664c7d13ce7a6e9a629be20e54e7271fa696ff2b417"}, + {file = "cffi-1.16.0-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ee07e47c12890ef248766a6e55bd38ebfb2bb8edd4142d56db91b21ea68b7627"}, + {file = "cffi-1.16.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8a9d3ebe49f084ad71f9269834ceccbf398253c9fac910c4fd7053ff1386936"}, + {file = "cffi-1.16.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e70f54f1796669ef691ca07d046cd81a29cb4deb1e5f942003f401c0c4a2695d"}, + {file = "cffi-1.16.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5bf44d66cdf9e893637896c7faa22298baebcd18d1ddb6d2626a6e39793a1d56"}, + {file = "cffi-1.16.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7b78010e7b97fef4bee1e896df8a4bbb6712b7f05b7ef630f9d1da00f6444d2e"}, + {file = "cffi-1.16.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:c6a164aa47843fb1b01e941d385aab7215563bb8816d80ff3a363a9f8448a8dc"}, + {file = "cffi-1.16.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e09f3ff613345df5e8c3667da1d918f9149bd623cd9070c983c013792a9a62eb"}, + {file = "cffi-1.16.0-cp311-cp311-win32.whl", hash = "sha256:2c56b361916f390cd758a57f2e16233eb4f64bcbeee88a4881ea90fca14dc6ab"}, + {file = "cffi-1.16.0-cp311-cp311-win_amd64.whl", hash = "sha256:db8e577c19c0fda0beb7e0d4e09e0ba74b1e4c092e0e40bfa12fe05b6f6d75ba"}, + {file = "cffi-1.16.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:fa3a0128b152627161ce47201262d3140edb5a5c3da88d73a1b790a959126956"}, + {file = "cffi-1.16.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:68e7c44931cc171c54ccb702482e9fc723192e88d25a0e133edd7aff8fcd1f6e"}, + {file = "cffi-1.16.0-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:abd808f9c129ba2beda4cfc53bde801e5bcf9d6e0f22f095e45327c038bfe68e"}, + {file = "cffi-1.16.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:88e2b3c14bdb32e440be531ade29d3c50a1a59cd4e51b1dd8b0865c54ea5d2e2"}, + {file = "cffi-1.16.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fcc8eb6d5902bb1cf6dc4f187ee3ea80a1eba0a89aba40a5cb20a5087d961357"}, + {file = "cffi-1.16.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b7be2d771cdba2942e13215c4e340bfd76398e9227ad10402a8767ab1865d2e6"}, + {file = "cffi-1.16.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e715596e683d2ce000574bae5d07bd522c781a822866c20495e52520564f0969"}, + {file = "cffi-1.16.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:2d92b25dbf6cae33f65005baf472d2c245c050b1ce709cc4588cdcdd5495b520"}, + {file = "cffi-1.16.0-cp312-cp312-win32.whl", hash = "sha256:b2ca4e77f9f47c55c194982e10f058db063937845bb2b7a86c84a6cfe0aefa8b"}, + {file = "cffi-1.16.0-cp312-cp312-win_amd64.whl", hash = "sha256:68678abf380b42ce21a5f2abde8efee05c114c2fdb2e9eef2efdb0257fba1235"}, + {file = "cffi-1.16.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0c9ef6ff37e974b73c25eecc13952c55bceed9112be2d9d938ded8e856138bcc"}, + {file = "cffi-1.16.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a09582f178759ee8128d9270cd1344154fd473bb77d94ce0aeb2a93ebf0feaf0"}, + {file = "cffi-1.16.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e760191dd42581e023a68b758769e2da259b5d52e3103c6060ddc02c9edb8d7b"}, + {file = "cffi-1.16.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:80876338e19c951fdfed6198e70bc88f1c9758b94578d5a7c4c91a87af3cf31c"}, + {file = "cffi-1.16.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a6a14b17d7e17fa0d207ac08642c8820f84f25ce17a442fd15e27ea18d67c59b"}, + {file = "cffi-1.16.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6602bc8dc6f3a9e02b6c22c4fc1e47aa50f8f8e6d3f78a5e16ac33ef5fefa324"}, + {file = "cffi-1.16.0-cp38-cp38-win32.whl", hash = "sha256:131fd094d1065b19540c3d72594260f118b231090295d8c34e19a7bbcf2e860a"}, + {file = "cffi-1.16.0-cp38-cp38-win_amd64.whl", hash = "sha256:31d13b0f99e0836b7ff893d37af07366ebc90b678b6664c955b54561fc36ef36"}, + {file = "cffi-1.16.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:582215a0e9adbe0e379761260553ba11c58943e4bbe9c36430c4ca6ac74b15ed"}, + {file = "cffi-1.16.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b29ebffcf550f9da55bec9e02ad430c992a87e5f512cd63388abb76f1036d8d2"}, + {file = "cffi-1.16.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dc9b18bf40cc75f66f40a7379f6a9513244fe33c0e8aa72e2d56b0196a7ef872"}, + {file = "cffi-1.16.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9cb4a35b3642fc5c005a6755a5d17c6c8b6bcb6981baf81cea8bfbc8903e8ba8"}, + {file = "cffi-1.16.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b86851a328eedc692acf81fb05444bdf1891747c25af7529e39ddafaf68a4f3f"}, + {file = "cffi-1.16.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c0f31130ebc2d37cdd8e44605fb5fa7ad59049298b3f745c74fa74c62fbfcfc4"}, + {file = "cffi-1.16.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f8e709127c6c77446a8c0a8c8bf3c8ee706a06cd44b1e827c3e6a2ee6b8c098"}, + {file = "cffi-1.16.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:748dcd1e3d3d7cd5443ef03ce8685043294ad6bd7c02a38d1bd367cfd968e000"}, + {file = "cffi-1.16.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:8895613bcc094d4a1b2dbe179d88d7fb4a15cee43c052e8885783fac397d91fe"}, + {file = "cffi-1.16.0-cp39-cp39-win32.whl", hash = "sha256:ed86a35631f7bfbb28e108dd96773b9d5a6ce4811cf6ea468bb6a359b256b1e4"}, + {file = "cffi-1.16.0-cp39-cp39-win_amd64.whl", hash = "sha256:3686dffb02459559c74dd3d81748269ffb0eb027c39a6fc99502de37d501faa8"}, + {file = "cffi-1.16.0.tar.gz", hash = "sha256:bcb3ef43e58665bbda2fb198698fcae6776483e0c4a631aa5647806c25e02cc0"}, ] [package.dependencies] @@ -489,17 +810,17 @@ pycparser = "*" [[package]] name = "cfn-lint" -version = "0.83.3" +version = "0.85.3" description = "Checks CloudFormation templates for practices and behaviour that could potentially be improved" optional = false -python-versions = ">=3.7, <=4.0, !=4.0" +python-versions = ">=3.8, <=4.0, !=4.0" files = [ - {file = "cfn-lint-0.83.3.tar.gz", hash = "sha256:cb1b5da6f3f15742f07f89006b9cc6ca459745f350196b559688ac0982111c5f"}, - {file = "cfn_lint-0.83.3-py3-none-any.whl", hash = "sha256:7acb5c40b6ae454006bfa19d586c67d0c4ed9a6dbb344fd470bc773981a0642a"}, + {file = "cfn-lint-0.85.3.tar.gz", hash = "sha256:efed015205051664285f0aedac106209c80f8b251b231fce93d0911db0e07cec"}, + {file = "cfn_lint-0.85.3-py3-none-any.whl", hash = "sha256:53121526fe50c04a3551379fd835417d7c05959280df8869e12070946af977a3"}, ] [package.dependencies] -aws-sam-translator = ">=1.79.0" +aws-sam-translator = ">=1.85.0" jschema-to-python = ">=1.2.3,<1.3.0" jsonpatch = "*" jsonschema = ">=3.0,<5" @@ -512,97 +833,112 @@ sympy = ">=1.0.0" [[package]] name = "charset-normalizer" -version = "3.1.0" +version = "3.3.2" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." optional = false python-versions = ">=3.7.0" files = [ - {file = "charset-normalizer-3.1.0.tar.gz", hash = "sha256:34e0a2f9c370eb95597aae63bf85eb5e96826d81e3dcf88b8886012906f509b5"}, - {file = "charset_normalizer-3.1.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:e0ac8959c929593fee38da1c2b64ee9778733cdf03c482c9ff1d508b6b593b2b"}, - {file = "charset_normalizer-3.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d7fc3fca01da18fbabe4625d64bb612b533533ed10045a2ac3dd194bfa656b60"}, - {file = "charset_normalizer-3.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:04eefcee095f58eaabe6dc3cc2262f3bcd776d2c67005880894f447b3f2cb9c1"}, - {file = "charset_normalizer-3.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:20064ead0717cf9a73a6d1e779b23d149b53daf971169289ed2ed43a71e8d3b0"}, - {file = "charset_normalizer-3.1.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1435ae15108b1cb6fffbcea2af3d468683b7afed0169ad718451f8db5d1aff6f"}, - {file = "charset_normalizer-3.1.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c84132a54c750fda57729d1e2599bb598f5fa0344085dbde5003ba429a4798c0"}, - {file = "charset_normalizer-3.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:75f2568b4189dda1c567339b48cba4ac7384accb9c2a7ed655cd86b04055c795"}, - {file = "charset_normalizer-3.1.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:11d3bcb7be35e7b1bba2c23beedac81ee893ac9871d0ba79effc7fc01167db6c"}, - {file = "charset_normalizer-3.1.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:891cf9b48776b5c61c700b55a598621fdb7b1e301a550365571e9624f270c203"}, - {file = "charset_normalizer-3.1.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:5f008525e02908b20e04707a4f704cd286d94718f48bb33edddc7d7b584dddc1"}, - {file = "charset_normalizer-3.1.0-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:b06f0d3bf045158d2fb8837c5785fe9ff9b8c93358be64461a1089f5da983137"}, - {file = "charset_normalizer-3.1.0-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:49919f8400b5e49e961f320c735388ee686a62327e773fa5b3ce6721f7e785ce"}, - {file = "charset_normalizer-3.1.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:22908891a380d50738e1f978667536f6c6b526a2064156203d418f4856d6e86a"}, - {file = "charset_normalizer-3.1.0-cp310-cp310-win32.whl", hash = "sha256:12d1a39aa6b8c6f6248bb54550efcc1c38ce0d8096a146638fd4738e42284448"}, - {file = "charset_normalizer-3.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:65ed923f84a6844de5fd29726b888e58c62820e0769b76565480e1fdc3d062f8"}, - {file = "charset_normalizer-3.1.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:9a3267620866c9d17b959a84dd0bd2d45719b817245e49371ead79ed4f710d19"}, - {file = "charset_normalizer-3.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6734e606355834f13445b6adc38b53c0fd45f1a56a9ba06c2058f86893ae8017"}, - {file = "charset_normalizer-3.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f8303414c7b03f794347ad062c0516cee0e15f7a612abd0ce1e25caf6ceb47df"}, - {file = "charset_normalizer-3.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aaf53a6cebad0eae578f062c7d462155eada9c172bd8c4d250b8c1d8eb7f916a"}, - {file = "charset_normalizer-3.1.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3dc5b6a8ecfdc5748a7e429782598e4f17ef378e3e272eeb1340ea57c9109f41"}, - {file = "charset_normalizer-3.1.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e1b25e3ad6c909f398df8921780d6a3d120d8c09466720226fc621605b6f92b1"}, - {file = "charset_normalizer-3.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0ca564606d2caafb0abe6d1b5311c2649e8071eb241b2d64e75a0d0065107e62"}, - {file = "charset_normalizer-3.1.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b82fab78e0b1329e183a65260581de4375f619167478dddab510c6c6fb04d9b6"}, - {file = "charset_normalizer-3.1.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:bd7163182133c0c7701b25e604cf1611c0d87712e56e88e7ee5d72deab3e76b5"}, - {file = "charset_normalizer-3.1.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:11d117e6c63e8f495412d37e7dc2e2fff09c34b2d09dbe2bee3c6229577818be"}, - {file = "charset_normalizer-3.1.0-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:cf6511efa4801b9b38dc5546d7547d5b5c6ef4b081c60b23e4d941d0eba9cbeb"}, - {file = "charset_normalizer-3.1.0-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:abc1185d79f47c0a7aaf7e2412a0eb2c03b724581139193d2d82b3ad8cbb00ac"}, - {file = "charset_normalizer-3.1.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:cb7b2ab0188829593b9de646545175547a70d9a6e2b63bf2cd87a0a391599324"}, - {file = "charset_normalizer-3.1.0-cp311-cp311-win32.whl", hash = "sha256:c36bcbc0d5174a80d6cccf43a0ecaca44e81d25be4b7f90f0ed7bcfbb5a00909"}, - {file = "charset_normalizer-3.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:cca4def576f47a09a943666b8f829606bcb17e2bc2d5911a46c8f8da45f56755"}, - {file = "charset_normalizer-3.1.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:0c95f12b74681e9ae127728f7e5409cbbef9cd914d5896ef238cc779b8152373"}, - {file = "charset_normalizer-3.1.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fca62a8301b605b954ad2e9c3666f9d97f63872aa4efcae5492baca2056b74ab"}, - {file = "charset_normalizer-3.1.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ac0aa6cd53ab9a31d397f8303f92c42f534693528fafbdb997c82bae6e477ad9"}, - {file = "charset_normalizer-3.1.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c3af8e0f07399d3176b179f2e2634c3ce9c1301379a6b8c9c9aeecd481da494f"}, - {file = "charset_normalizer-3.1.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3a5fc78f9e3f501a1614a98f7c54d3969f3ad9bba8ba3d9b438c3bc5d047dd28"}, - {file = "charset_normalizer-3.1.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:628c985afb2c7d27a4800bfb609e03985aaecb42f955049957814e0491d4006d"}, - {file = "charset_normalizer-3.1.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:74db0052d985cf37fa111828d0dd230776ac99c740e1a758ad99094be4f1803d"}, - {file = "charset_normalizer-3.1.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:1e8fcdd8f672a1c4fc8d0bd3a2b576b152d2a349782d1eb0f6b8e52e9954731d"}, - {file = "charset_normalizer-3.1.0-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:04afa6387e2b282cf78ff3dbce20f0cc071c12dc8f685bd40960cc68644cfea6"}, - {file = "charset_normalizer-3.1.0-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:dd5653e67b149503c68c4018bf07e42eeed6b4e956b24c00ccdf93ac79cdff84"}, - {file = "charset_normalizer-3.1.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:d2686f91611f9e17f4548dbf050e75b079bbc2a82be565832bc8ea9047b61c8c"}, - {file = "charset_normalizer-3.1.0-cp37-cp37m-win32.whl", hash = "sha256:4155b51ae05ed47199dc5b2a4e62abccb274cee6b01da5b895099b61b1982974"}, - {file = "charset_normalizer-3.1.0-cp37-cp37m-win_amd64.whl", hash = "sha256:322102cdf1ab682ecc7d9b1c5eed4ec59657a65e1c146a0da342b78f4112db23"}, - {file = "charset_normalizer-3.1.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:e633940f28c1e913615fd624fcdd72fdba807bf53ea6925d6a588e84e1151531"}, - {file = "charset_normalizer-3.1.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:3a06f32c9634a8705f4ca9946d667609f52cf130d5548881401f1eb2c39b1e2c"}, - {file = "charset_normalizer-3.1.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:7381c66e0561c5757ffe616af869b916c8b4e42b367ab29fedc98481d1e74e14"}, - {file = "charset_normalizer-3.1.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3573d376454d956553c356df45bb824262c397c6e26ce43e8203c4c540ee0acb"}, - {file = "charset_normalizer-3.1.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e89df2958e5159b811af9ff0f92614dabf4ff617c03a4c1c6ff53bf1c399e0e1"}, - {file = "charset_normalizer-3.1.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:78cacd03e79d009d95635e7d6ff12c21eb89b894c354bd2b2ed0b4763373693b"}, - {file = "charset_normalizer-3.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:de5695a6f1d8340b12a5d6d4484290ee74d61e467c39ff03b39e30df62cf83a0"}, - {file = "charset_normalizer-3.1.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1c60b9c202d00052183c9be85e5eaf18a4ada0a47d188a83c8f5c5b23252f649"}, - {file = "charset_normalizer-3.1.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:f645caaf0008bacf349875a974220f1f1da349c5dbe7c4ec93048cdc785a3326"}, - {file = "charset_normalizer-3.1.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:ea9f9c6034ea2d93d9147818f17c2a0860d41b71c38b9ce4d55f21b6f9165a11"}, - {file = "charset_normalizer-3.1.0-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:80d1543d58bd3d6c271b66abf454d437a438dff01c3e62fdbcd68f2a11310d4b"}, - {file = "charset_normalizer-3.1.0-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:73dc03a6a7e30b7edc5b01b601e53e7fc924b04e1835e8e407c12c037e81adbd"}, - {file = "charset_normalizer-3.1.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:6f5c2e7bc8a4bf7c426599765b1bd33217ec84023033672c1e9a8b35eaeaaaf8"}, - {file = "charset_normalizer-3.1.0-cp38-cp38-win32.whl", hash = "sha256:12a2b561af122e3d94cdb97fe6fb2bb2b82cef0cdca131646fdb940a1eda04f0"}, - {file = "charset_normalizer-3.1.0-cp38-cp38-win_amd64.whl", hash = "sha256:3160a0fd9754aab7d47f95a6b63ab355388d890163eb03b2d2b87ab0a30cfa59"}, - {file = "charset_normalizer-3.1.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:38e812a197bf8e71a59fe55b757a84c1f946d0ac114acafaafaf21667a7e169e"}, - {file = "charset_normalizer-3.1.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6baf0baf0d5d265fa7944feb9f7451cc316bfe30e8df1a61b1bb08577c554f31"}, - {file = "charset_normalizer-3.1.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:8f25e17ab3039b05f762b0a55ae0b3632b2e073d9c8fc88e89aca31a6198e88f"}, - {file = "charset_normalizer-3.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3747443b6a904001473370d7810aa19c3a180ccd52a7157aacc264a5ac79265e"}, - {file = "charset_normalizer-3.1.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b116502087ce8a6b7a5f1814568ccbd0e9f6cfd99948aa59b0e241dc57cf739f"}, - {file = "charset_normalizer-3.1.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d16fd5252f883eb074ca55cb622bc0bee49b979ae4e8639fff6ca3ff44f9f854"}, - {file = "charset_normalizer-3.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21fa558996782fc226b529fdd2ed7866c2c6ec91cee82735c98a197fae39f706"}, - {file = "charset_normalizer-3.1.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6f6c7a8a57e9405cad7485f4c9d3172ae486cfef1344b5ddd8e5239582d7355e"}, - {file = "charset_normalizer-3.1.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:ac3775e3311661d4adace3697a52ac0bab17edd166087d493b52d4f4f553f9f0"}, - {file = "charset_normalizer-3.1.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:10c93628d7497c81686e8e5e557aafa78f230cd9e77dd0c40032ef90c18f2230"}, - {file = "charset_normalizer-3.1.0-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:6f4f4668e1831850ebcc2fd0b1cd11721947b6dc7c00bf1c6bd3c929ae14f2c7"}, - {file = "charset_normalizer-3.1.0-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:0be65ccf618c1e7ac9b849c315cc2e8a8751d9cfdaa43027d4f6624bd587ab7e"}, - {file = "charset_normalizer-3.1.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:53d0a3fa5f8af98a1e261de6a3943ca631c526635eb5817a87a59d9a57ebf48f"}, - {file = "charset_normalizer-3.1.0-cp39-cp39-win32.whl", hash = "sha256:a04f86f41a8916fe45ac5024ec477f41f886b3c435da2d4e3d2709b22ab02af1"}, - {file = "charset_normalizer-3.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:830d2948a5ec37c386d3170c483063798d7879037492540f10a475e3fd6f244b"}, - {file = "charset_normalizer-3.1.0-py3-none-any.whl", hash = "sha256:3d9098b479e78c85080c98e1e35ff40b4a31d8953102bb0fd7d1b6f8a2111a3d"}, + {file = "charset-normalizer-3.3.2.tar.gz", hash = "sha256:f30c3cb33b24454a82faecaf01b19c18562b1e89558fb6c56de4d9118a032fd5"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:25baf083bf6f6b341f4121c2f3c548875ee6f5339300e08be3f2b2ba1721cdd3"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:06435b539f889b1f6f4ac1758871aae42dc3a8c0e24ac9e60c2384973ad73027"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9063e24fdb1e498ab71cb7419e24622516c4a04476b17a2dab57e8baa30d6e03"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6897af51655e3691ff853668779c7bad41579facacf5fd7253b0133308cf000d"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1d3193f4a680c64b4b6a9115943538edb896edc190f0b222e73761716519268e"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cd70574b12bb8a4d2aaa0094515df2463cb429d8536cfb6c7ce983246983e5a6"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8465322196c8b4d7ab6d1e049e4c5cb460d0394da4a27d23cc242fbf0034b6b5"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a9a8e9031d613fd2009c182b69c7b2c1ef8239a0efb1df3f7c8da66d5dd3d537"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:beb58fe5cdb101e3a055192ac291b7a21e3b7ef4f67fa1d74e331a7f2124341c"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e06ed3eb3218bc64786f7db41917d4e686cc4856944f53d5bdf83a6884432e12"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:2e81c7b9c8979ce92ed306c249d46894776a909505d8f5a4ba55b14206e3222f"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:572c3763a264ba47b3cf708a44ce965d98555f618ca42c926a9c1616d8f34269"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fd1abc0d89e30cc4e02e4064dc67fcc51bd941eb395c502aac3ec19fab46b519"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-win32.whl", hash = "sha256:3d47fa203a7bd9c5b6cee4736ee84ca03b8ef23193c0d1ca99b5089f72645c73"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:10955842570876604d404661fbccbc9c7e684caf432c09c715ec38fbae45ae09"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:802fe99cca7457642125a8a88a084cef28ff0cf9407060f7b93dca5aa25480db"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:573f6eac48f4769d667c4442081b1794f52919e7edada77495aaed9236d13a96"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:549a3a73da901d5bc3ce8d24e0600d1fa85524c10287f6004fbab87672bf3e1e"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f27273b60488abe721a075bcca6d7f3964f9f6f067c8c4c605743023d7d3944f"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ceae2f17a9c33cb48e3263960dc5fc8005351ee19db217e9b1bb15d28c02574"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:65f6f63034100ead094b8744b3b97965785388f308a64cf8d7c34f2f2e5be0c4"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:753f10e867343b4511128c6ed8c82f7bec3bd026875576dfd88483c5c73b2fd8"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4a78b2b446bd7c934f5dcedc588903fb2f5eec172f3d29e52a9096a43722adfc"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e537484df0d8f426ce2afb2d0f8e1c3d0b114b83f8850e5f2fbea0e797bd82ae"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:eb6904c354526e758fda7167b33005998fb68c46fbc10e013ca97f21ca5c8887"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:deb6be0ac38ece9ba87dea880e438f25ca3eddfac8b002a2ec3d9183a454e8ae"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:4ab2fe47fae9e0f9dee8c04187ce5d09f48eabe611be8259444906793ab7cbce"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:80402cd6ee291dcb72644d6eac93785fe2c8b9cb30893c1af5b8fdd753b9d40f"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-win32.whl", hash = "sha256:7cd13a2e3ddeed6913a65e66e94b51d80a041145a026c27e6bb76c31a853c6ab"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:663946639d296df6a2bb2aa51b60a2454ca1cb29835324c640dafb5ff2131a77"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:0b2b64d2bb6d3fb9112bafa732def486049e63de9618b5843bcdd081d8144cd8"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:ddbb2551d7e0102e7252db79ba445cdab71b26640817ab1e3e3648dad515003b"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:55086ee1064215781fff39a1af09518bc9255b50d6333f2e4c74ca09fac6a8f6"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8f4a014bc36d3c57402e2977dada34f9c12300af536839dc38c0beab8878f38a"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a10af20b82360ab00827f916a6058451b723b4e65030c5a18577c8b2de5b3389"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8d756e44e94489e49571086ef83b2bb8ce311e730092d2c34ca8f7d925cb20aa"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:90d558489962fd4918143277a773316e56c72da56ec7aa3dc3dbbe20fdfed15b"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6ac7ffc7ad6d040517be39eb591cac5ff87416c2537df6ba3cba3bae290c0fed"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:7ed9e526742851e8d5cc9e6cf41427dfc6068d4f5a3bb03659444b4cabf6bc26"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:8bdb58ff7ba23002a4c5808d608e4e6c687175724f54a5dade5fa8c67b604e4d"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:6b3251890fff30ee142c44144871185dbe13b11bab478a88887a639655be1068"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:b4a23f61ce87adf89be746c8a8974fe1c823c891d8f86eb218bb957c924bb143"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:efcb3f6676480691518c177e3b465bcddf57cea040302f9f4e6e191af91174d4"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-win32.whl", hash = "sha256:d965bba47ddeec8cd560687584e88cf699fd28f192ceb452d1d7ee807c5597b7"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:96b02a3dc4381e5494fad39be677abcb5e6634bf7b4fa83a6dd3112607547001"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:95f2a5796329323b8f0512e09dbb7a1860c46a39da62ecb2324f116fa8fdc85c"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c002b4ffc0be611f0d9da932eb0f704fe2602a9a949d1f738e4c34c75b0863d5"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a981a536974bbc7a512cf44ed14938cf01030a99e9b3a06dd59578882f06f985"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3287761bc4ee9e33561a7e058c72ac0938c4f57fe49a09eae428fd88aafe7bb6"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:42cb296636fcc8b0644486d15c12376cb9fa75443e00fb25de0b8602e64c1714"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0a55554a2fa0d408816b3b5cedf0045f4b8e1a6065aec45849de2d6f3f8e9786"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:c083af607d2515612056a31f0a8d9e0fcb5876b7bfc0abad3ecd275bc4ebc2d5"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:87d1351268731db79e0f8e745d92493ee2841c974128ef629dc518b937d9194c"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:bd8f7df7d12c2db9fab40bdd87a7c09b1530128315d047a086fa3ae3435cb3a8"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:c180f51afb394e165eafe4ac2936a14bee3eb10debc9d9e4db8958fe36afe711"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:8c622a5fe39a48f78944a87d4fb8a53ee07344641b0562c540d840748571b811"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-win32.whl", hash = "sha256:db364eca23f876da6f9e16c9da0df51aa4f104a972735574842618b8c6d999d4"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-win_amd64.whl", hash = "sha256:86216b5cee4b06df986d214f664305142d9c76df9b6512be2738aa72a2048f99"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:6463effa3186ea09411d50efc7d85360b38d5f09b870c48e4600f63af490e56a"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6c4caeef8fa63d06bd437cd4bdcf3ffefe6738fb1b25951440d80dc7df8c03ac"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:37e55c8e51c236f95b033f6fb391d7d7970ba5fe7ff453dad675e88cf303377a"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fb69256e180cb6c8a894fee62b3afebae785babc1ee98b81cdf68bbca1987f33"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ae5f4161f18c61806f411a13b0310bea87f987c7d2ecdbdaad0e94eb2e404238"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b2b0a0c0517616b6869869f8c581d4eb2dd83a4d79e0ebcb7d373ef9956aeb0a"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:45485e01ff4d3630ec0d9617310448a8702f70e9c01906b0d0118bdf9d124cf2"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eb00ed941194665c332bf8e078baf037d6c35d7c4f3102ea2d4f16ca94a26dc8"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:2127566c664442652f024c837091890cb1942c30937add288223dc895793f898"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a50aebfa173e157099939b17f18600f72f84eed3049e743b68ad15bd69b6bf99"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:4d0d1650369165a14e14e1e47b372cfcb31d6ab44e6e33cb2d4e57265290044d"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:923c0c831b7cfcb071580d3f46c4baf50f174be571576556269530f4bbd79d04"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:06a81e93cd441c56a9b65d8e1d043daeb97a3d0856d177d5c90ba85acb3db087"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-win32.whl", hash = "sha256:6ef1d82a3af9d3eecdba2321dc1b3c238245d890843e040e41e470ffa64c3e25"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-win_amd64.whl", hash = "sha256:eb8821e09e916165e160797a6c17edda0679379a4be5c716c260e836e122f54b"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c235ebd9baae02f1b77bcea61bce332cb4331dc3617d254df3323aa01ab47bd4"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5b4c145409bef602a690e7cfad0a15a55c13320ff7a3ad7ca59c13bb8ba4d45d"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:68d1f8a9e9e37c1223b656399be5d6b448dea850bed7d0f87a8311f1ff3dabb0"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22afcb9f253dac0696b5a4be4a1c0f8762f8239e21b99680099abd9b2b1b2269"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e27ad930a842b4c5eb8ac0016b0a54f5aebbe679340c26101df33424142c143c"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1f79682fbe303db92bc2b1136016a38a42e835d932bab5b3b1bfcfbf0640e519"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b261ccdec7821281dade748d088bb6e9b69e6d15b30652b74cbbac25e280b796"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:122c7fa62b130ed55f8f285bfd56d5f4b4a5b503609d181f9ad85e55c89f4185"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:d0eccceffcb53201b5bfebb52600a5fb483a20b61da9dbc885f8b103cbe7598c"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:9f96df6923e21816da7e0ad3fd47dd8f94b2a5ce594e00677c0013018b813458"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:7f04c839ed0b6b98b1a7501a002144b76c18fb1c1850c8b98d458ac269e26ed2"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:34d1c8da1e78d2e001f363791c98a272bb734000fcef47a491c1e3b0505657a8"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ff8fa367d09b717b2a17a052544193ad76cd49979c805768879cb63d9ca50561"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-win32.whl", hash = "sha256:aed38f6e4fb3f5d6bf81bfa990a07806be9d83cf7bacef998ab1a9bd660a581f"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:b01b88d45a6fcb69667cd6d2f7a9aeb4bf53760d7fc536bf679ec94fe9f3ff3d"}, + {file = "charset_normalizer-3.3.2-py3-none-any.whl", hash = "sha256:3e4d1f6587322d2788836a99c69062fbb091331ec940e02d12d179c1d53e25fc"}, ] [[package]] name = "click" -version = "8.1.3" +version = "8.1.7" description = "Composable command line interface toolkit" optional = false python-versions = ">=3.7" files = [ - {file = "click-8.1.3-py3-none-any.whl", hash = "sha256:bb4d8133cb15a609f44e8213d9b391b0809795062913b383c62be0ee95b1db48"}, - {file = "click-8.1.3.tar.gz", hash = "sha256:7682dc8afb30297001674575ea00d1814d808d6a36af415a82bd481d37ba7b8e"}, + {file = "click-8.1.7-py3-none-any.whl", hash = "sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28"}, + {file = "click-8.1.7.tar.gz", hash = "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de"}, ] [package.dependencies] @@ -649,63 +985,63 @@ files = [ [[package]] name = "coverage" -version = "7.3.2" +version = "7.4.3" description = "Code coverage measurement for Python" optional = false python-versions = ">=3.8" files = [ - {file = "coverage-7.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d872145f3a3231a5f20fd48500274d7df222e291d90baa2026cc5152b7ce86bf"}, - {file = "coverage-7.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:310b3bb9c91ea66d59c53fa4989f57d2436e08f18fb2f421a1b0b6b8cc7fffda"}, - {file = "coverage-7.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f47d39359e2c3779c5331fc740cf4bce6d9d680a7b4b4ead97056a0ae07cb49a"}, - {file = "coverage-7.3.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:aa72dbaf2c2068404b9870d93436e6d23addd8bbe9295f49cbca83f6e278179c"}, - {file = "coverage-7.3.2-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:beaa5c1b4777f03fc63dfd2a6bd820f73f036bfb10e925fce067b00a340d0f3f"}, - {file = "coverage-7.3.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:dbc1b46b92186cc8074fee9d9fbb97a9dd06c6cbbef391c2f59d80eabdf0faa6"}, - {file = "coverage-7.3.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:315a989e861031334d7bee1f9113c8770472db2ac484e5b8c3173428360a9148"}, - {file = "coverage-7.3.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:d1bc430677773397f64a5c88cb522ea43175ff16f8bfcc89d467d974cb2274f9"}, - {file = "coverage-7.3.2-cp310-cp310-win32.whl", hash = "sha256:a889ae02f43aa45032afe364c8ae84ad3c54828c2faa44f3bfcafecb5c96b02f"}, - {file = "coverage-7.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:c0ba320de3fb8c6ec16e0be17ee1d3d69adcda99406c43c0409cb5c41788a611"}, - {file = "coverage-7.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ac8c802fa29843a72d32ec56d0ca792ad15a302b28ca6203389afe21f8fa062c"}, - {file = "coverage-7.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:89a937174104339e3a3ffcf9f446c00e3a806c28b1841c63edb2b369310fd074"}, - {file = "coverage-7.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e267e9e2b574a176ddb983399dec325a80dbe161f1a32715c780b5d14b5f583a"}, - {file = "coverage-7.3.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2443cbda35df0d35dcfb9bf8f3c02c57c1d6111169e3c85fc1fcc05e0c9f39a3"}, - {file = "coverage-7.3.2-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4175e10cc8dda0265653e8714b3174430b07c1dca8957f4966cbd6c2b1b8065a"}, - {file = "coverage-7.3.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0cbf38419fb1a347aaf63481c00f0bdc86889d9fbf3f25109cf96c26b403fda1"}, - {file = "coverage-7.3.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:5c913b556a116b8d5f6ef834038ba983834d887d82187c8f73dec21049abd65c"}, - {file = "coverage-7.3.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:1981f785239e4e39e6444c63a98da3a1db8e971cb9ceb50a945ba6296b43f312"}, - {file = "coverage-7.3.2-cp311-cp311-win32.whl", hash = "sha256:43668cabd5ca8258f5954f27a3aaf78757e6acf13c17604d89648ecc0cc66640"}, - {file = "coverage-7.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:e10c39c0452bf6e694511c901426d6b5ac005acc0f78ff265dbe36bf81f808a2"}, - {file = "coverage-7.3.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:4cbae1051ab791debecc4a5dcc4a1ff45fc27b91b9aee165c8a27514dd160836"}, - {file = "coverage-7.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:12d15ab5833a997716d76f2ac1e4b4d536814fc213c85ca72756c19e5a6b3d63"}, - {file = "coverage-7.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3c7bba973ebee5e56fe9251300c00f1579652587a9f4a5ed8404b15a0471f216"}, - {file = "coverage-7.3.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fe494faa90ce6381770746077243231e0b83ff3f17069d748f645617cefe19d4"}, - {file = "coverage-7.3.2-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f6e9589bd04d0461a417562649522575d8752904d35c12907d8c9dfeba588faf"}, - {file = "coverage-7.3.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:d51ac2a26f71da1b57f2dc81d0e108b6ab177e7d30e774db90675467c847bbdf"}, - {file = "coverage-7.3.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:99b89d9f76070237975b315b3d5f4d6956ae354a4c92ac2388a5695516e47c84"}, - {file = "coverage-7.3.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:fa28e909776dc69efb6ed975a63691bc8172b64ff357e663a1bb06ff3c9b589a"}, - {file = "coverage-7.3.2-cp312-cp312-win32.whl", hash = "sha256:289fe43bf45a575e3ab10b26d7b6f2ddb9ee2dba447499f5401cfb5ecb8196bb"}, - {file = "coverage-7.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:7dbc3ed60e8659bc59b6b304b43ff9c3ed858da2839c78b804973f613d3e92ed"}, - {file = "coverage-7.3.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:f94b734214ea6a36fe16e96a70d941af80ff3bfd716c141300d95ebc85339738"}, - {file = "coverage-7.3.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:af3d828d2c1cbae52d34bdbb22fcd94d1ce715d95f1a012354a75e5913f1bda2"}, - {file = "coverage-7.3.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:630b13e3036e13c7adc480ca42fa7afc2a5d938081d28e20903cf7fd687872e2"}, - {file = "coverage-7.3.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c9eacf273e885b02a0273bb3a2170f30e2d53a6d53b72dbe02d6701b5296101c"}, - {file = "coverage-7.3.2-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d8f17966e861ff97305e0801134e69db33b143bbfb36436efb9cfff6ec7b2fd9"}, - {file = "coverage-7.3.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:b4275802d16882cf9c8b3d057a0839acb07ee9379fa2749eca54efbce1535b82"}, - {file = "coverage-7.3.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:72c0cfa5250f483181e677ebc97133ea1ab3eb68645e494775deb6a7f6f83901"}, - {file = "coverage-7.3.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:cb536f0dcd14149425996821a168f6e269d7dcd2c273a8bff8201e79f5104e76"}, - {file = "coverage-7.3.2-cp38-cp38-win32.whl", hash = "sha256:307adb8bd3abe389a471e649038a71b4eb13bfd6b7dd9a129fa856f5c695cf92"}, - {file = "coverage-7.3.2-cp38-cp38-win_amd64.whl", hash = "sha256:88ed2c30a49ea81ea3b7f172e0269c182a44c236eb394718f976239892c0a27a"}, - {file = "coverage-7.3.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b631c92dfe601adf8f5ebc7fc13ced6bb6e9609b19d9a8cd59fa47c4186ad1ce"}, - {file = "coverage-7.3.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:d3d9df4051c4a7d13036524b66ecf7a7537d14c18a384043f30a303b146164e9"}, - {file = "coverage-7.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5f7363d3b6a1119ef05015959ca24a9afc0ea8a02c687fe7e2d557705375c01f"}, - {file = "coverage-7.3.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2f11cc3c967a09d3695d2a6f03fb3e6236622b93be7a4b5dc09166a861be6d25"}, - {file = "coverage-7.3.2-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:149de1d2401ae4655c436a3dced6dd153f4c3309f599c3d4bd97ab172eaf02d9"}, - {file = "coverage-7.3.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:3a4006916aa6fee7cd38db3bfc95aa9c54ebb4ffbfc47c677c8bba949ceba0a6"}, - {file = "coverage-7.3.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:9028a3871280110d6e1aa2df1afd5ef003bab5fb1ef421d6dc748ae1c8ef2ebc"}, - {file = "coverage-7.3.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9f805d62aec8eb92bab5b61c0f07329275b6f41c97d80e847b03eb894f38d083"}, - {file = "coverage-7.3.2-cp39-cp39-win32.whl", hash = "sha256:d1c88ec1a7ff4ebca0219f5b1ef863451d828cccf889c173e1253aa84b1e07ce"}, - {file = "coverage-7.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:b4767da59464bb593c07afceaddea61b154136300881844768037fd5e859353f"}, - {file = "coverage-7.3.2-pp38.pp39.pp310-none-any.whl", hash = "sha256:ae97af89f0fbf373400970c0a21eef5aa941ffeed90aee43650b81f7d7f47637"}, - {file = "coverage-7.3.2.tar.gz", hash = "sha256:be32ad29341b0170e795ca590e1c07e81fc061cb5b10c74ce7203491484404ef"}, + {file = "coverage-7.4.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:8580b827d4746d47294c0e0b92854c85a92c2227927433998f0d3320ae8a71b6"}, + {file = "coverage-7.4.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:718187eeb9849fc6cc23e0d9b092bc2348821c5e1a901c9f8975df0bc785bfd4"}, + {file = "coverage-7.4.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:767b35c3a246bcb55b8044fd3a43b8cd553dd1f9f2c1eeb87a302b1f8daa0524"}, + {file = "coverage-7.4.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ae7f19afe0cce50039e2c782bff379c7e347cba335429678450b8fe81c4ef96d"}, + {file = "coverage-7.4.3-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba3a8aaed13770e970b3df46980cb068d1c24af1a1968b7818b69af8c4347efb"}, + {file = "coverage-7.4.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:ee866acc0861caebb4f2ab79f0b94dbfbdbfadc19f82e6e9c93930f74e11d7a0"}, + {file = "coverage-7.4.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:506edb1dd49e13a2d4cac6a5173317b82a23c9d6e8df63efb4f0380de0fbccbc"}, + {file = "coverage-7.4.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fd6545d97c98a192c5ac995d21c894b581f1fd14cf389be90724d21808b657e2"}, + {file = "coverage-7.4.3-cp310-cp310-win32.whl", hash = "sha256:f6a09b360d67e589236a44f0c39218a8efba2593b6abdccc300a8862cffc2f94"}, + {file = "coverage-7.4.3-cp310-cp310-win_amd64.whl", hash = "sha256:18d90523ce7553dd0b7e23cbb28865db23cddfd683a38fb224115f7826de78d0"}, + {file = "coverage-7.4.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:cbbe5e739d45a52f3200a771c6d2c7acf89eb2524890a4a3aa1a7fa0695d2a47"}, + {file = "coverage-7.4.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:489763b2d037b164846ebac0cbd368b8a4ca56385c4090807ff9fad817de4113"}, + {file = "coverage-7.4.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:451f433ad901b3bb00184d83fd83d135fb682d780b38af7944c9faeecb1e0bfe"}, + {file = "coverage-7.4.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fcc66e222cf4c719fe7722a403888b1f5e1682d1679bd780e2b26c18bb648cdc"}, + {file = "coverage-7.4.3-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b3ec74cfef2d985e145baae90d9b1b32f85e1741b04cd967aaf9cfa84c1334f3"}, + {file = "coverage-7.4.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:abbbd8093c5229c72d4c2926afaee0e6e3140de69d5dcd918b2921f2f0c8baba"}, + {file = "coverage-7.4.3-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:35eb581efdacf7b7422af677b92170da4ef34500467381e805944a3201df2079"}, + {file = "coverage-7.4.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:8249b1c7334be8f8c3abcaaa996e1e4927b0e5a23b65f5bf6cfe3180d8ca7840"}, + {file = "coverage-7.4.3-cp311-cp311-win32.whl", hash = "sha256:cf30900aa1ba595312ae41978b95e256e419d8a823af79ce670835409fc02ad3"}, + {file = "coverage-7.4.3-cp311-cp311-win_amd64.whl", hash = "sha256:18c7320695c949de11a351742ee001849912fd57e62a706d83dfc1581897fa2e"}, + {file = "coverage-7.4.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:b51bfc348925e92a9bd9b2e48dad13431b57011fd1038f08316e6bf1df107d10"}, + {file = "coverage-7.4.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:d6cdecaedea1ea9e033d8adf6a0ab11107b49571bbb9737175444cea6eb72328"}, + {file = "coverage-7.4.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3b2eccb883368f9e972e216c7b4c7c06cabda925b5f06dde0650281cb7666a30"}, + {file = "coverage-7.4.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6c00cdc8fa4e50e1cc1f941a7f2e3e0f26cb2a1233c9696f26963ff58445bac7"}, + {file = "coverage-7.4.3-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b9a4a8dd3dcf4cbd3165737358e4d7dfbd9d59902ad11e3b15eebb6393b0446e"}, + {file = "coverage-7.4.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:062b0a75d9261e2f9c6d071753f7eef0fc9caf3a2c82d36d76667ba7b6470003"}, + {file = "coverage-7.4.3-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:ebe7c9e67a2d15fa97b77ea6571ce5e1e1f6b0db71d1d5e96f8d2bf134303c1d"}, + {file = "coverage-7.4.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:c0a120238dd71c68484f02562f6d446d736adcc6ca0993712289b102705a9a3a"}, + {file = "coverage-7.4.3-cp312-cp312-win32.whl", hash = "sha256:37389611ba54fd6d278fde86eb2c013c8e50232e38f5c68235d09d0a3f8aa352"}, + {file = "coverage-7.4.3-cp312-cp312-win_amd64.whl", hash = "sha256:d25b937a5d9ffa857d41be042b4238dd61db888533b53bc76dc082cb5a15e914"}, + {file = "coverage-7.4.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:28ca2098939eabab044ad68850aac8f8db6bf0b29bc7f2887d05889b17346454"}, + {file = "coverage-7.4.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:280459f0a03cecbe8800786cdc23067a8fc64c0bd51dc614008d9c36e1659d7e"}, + {file = "coverage-7.4.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6c0cdedd3500e0511eac1517bf560149764b7d8e65cb800d8bf1c63ebf39edd2"}, + {file = "coverage-7.4.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9a9babb9466fe1da12417a4aed923e90124a534736de6201794a3aea9d98484e"}, + {file = "coverage-7.4.3-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dec9de46a33cf2dd87a5254af095a409ea3bf952d85ad339751e7de6d962cde6"}, + {file = "coverage-7.4.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:16bae383a9cc5abab9bb05c10a3e5a52e0a788325dc9ba8499e821885928968c"}, + {file = "coverage-7.4.3-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:2c854ce44e1ee31bda4e318af1dbcfc929026d12c5ed030095ad98197eeeaed0"}, + {file = "coverage-7.4.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:ce8c50520f57ec57aa21a63ea4f325c7b657386b3f02ccaedeccf9ebe27686e1"}, + {file = "coverage-7.4.3-cp38-cp38-win32.whl", hash = "sha256:708a3369dcf055c00ddeeaa2b20f0dd1ce664eeabde6623e516c5228b753654f"}, + {file = "coverage-7.4.3-cp38-cp38-win_amd64.whl", hash = "sha256:1bf25fbca0c8d121a3e92a2a0555c7e5bc981aee5c3fdaf4bb7809f410f696b9"}, + {file = "coverage-7.4.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3b253094dbe1b431d3a4ac2f053b6d7ede2664ac559705a704f621742e034f1f"}, + {file = "coverage-7.4.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:77fbfc5720cceac9c200054b9fab50cb2a7d79660609200ab83f5db96162d20c"}, + {file = "coverage-7.4.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6679060424faa9c11808598504c3ab472de4531c571ab2befa32f4971835788e"}, + {file = "coverage-7.4.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4af154d617c875b52651dd8dd17a31270c495082f3d55f6128e7629658d63765"}, + {file = "coverage-7.4.3-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8640f1fde5e1b8e3439fe482cdc2b0bb6c329f4bb161927c28d2e8879c6029ee"}, + {file = "coverage-7.4.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:69b9f6f66c0af29642e73a520b6fed25ff9fd69a25975ebe6acb297234eda501"}, + {file = "coverage-7.4.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:0842571634f39016a6c03e9d4aba502be652a6e4455fadb73cd3a3a49173e38f"}, + {file = "coverage-7.4.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a78ed23b08e8ab524551f52953a8a05d61c3a760781762aac49f8de6eede8c45"}, + {file = "coverage-7.4.3-cp39-cp39-win32.whl", hash = "sha256:c0524de3ff096e15fcbfe8f056fdb4ea0bf497d584454f344d59fce069d3e6e9"}, + {file = "coverage-7.4.3-cp39-cp39-win_amd64.whl", hash = "sha256:0209a6369ccce576b43bb227dc8322d8ef9e323d089c6f3f26a597b09cb4d2aa"}, + {file = "coverage-7.4.3-pp38.pp39.pp310-none-any.whl", hash = "sha256:7cbde573904625509a3f37b6fecea974e363460b556a627c60dc2f47e2fffa51"}, + {file = "coverage-7.4.3.tar.gz", hash = "sha256:276f6077a5c61447a48d133ed13e759c09e62aff0dc84274a68dc18660104d52"}, ] [package.dependencies] @@ -716,49 +1052,75 @@ toml = ["tomli"] [[package]] name = "cryptography" -version = "41.0.4" +version = "42.0.5" description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers." optional = false python-versions = ">=3.7" files = [ - {file = "cryptography-41.0.4-cp37-abi3-macosx_10_12_universal2.whl", hash = "sha256:80907d3faa55dc5434a16579952ac6da800935cd98d14dbd62f6f042c7f5e839"}, - {file = "cryptography-41.0.4-cp37-abi3-macosx_10_12_x86_64.whl", hash = "sha256:35c00f637cd0b9d5b6c6bd11b6c3359194a8eba9c46d4e875a3660e3b400005f"}, - {file = "cryptography-41.0.4-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cecfefa17042941f94ab54f769c8ce0fe14beff2694e9ac684176a2535bf9714"}, - {file = "cryptography-41.0.4-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e40211b4923ba5a6dc9769eab704bdb3fbb58d56c5b336d30996c24fcf12aadb"}, - {file = "cryptography-41.0.4-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:23a25c09dfd0d9f28da2352503b23e086f8e78096b9fd585d1d14eca01613e13"}, - {file = "cryptography-41.0.4-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:2ed09183922d66c4ec5fdaa59b4d14e105c084dd0febd27452de8f6f74704143"}, - {file = "cryptography-41.0.4-cp37-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:5a0f09cefded00e648a127048119f77bc2b2ec61e736660b5789e638f43cc397"}, - {file = "cryptography-41.0.4-cp37-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:9eeb77214afae972a00dee47382d2591abe77bdae166bda672fb1e24702a3860"}, - {file = "cryptography-41.0.4-cp37-abi3-win32.whl", hash = "sha256:3b224890962a2d7b57cf5eeb16ccaafba6083f7b811829f00476309bce2fe0fd"}, - {file = "cryptography-41.0.4-cp37-abi3-win_amd64.whl", hash = "sha256:c880eba5175f4307129784eca96f4e70b88e57aa3f680aeba3bab0e980b0f37d"}, - {file = "cryptography-41.0.4-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:004b6ccc95943f6a9ad3142cfabcc769d7ee38a3f60fb0dddbfb431f818c3a67"}, - {file = "cryptography-41.0.4-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:86defa8d248c3fa029da68ce61fe735432b047e32179883bdb1e79ed9bb8195e"}, - {file = "cryptography-41.0.4-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:37480760ae08065437e6573d14be973112c9e6dcaf5f11d00147ee74f37a3829"}, - {file = "cryptography-41.0.4-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:b5f4dfe950ff0479f1f00eda09c18798d4f49b98f4e2006d644b3301682ebdca"}, - {file = "cryptography-41.0.4-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:7e53db173370dea832190870e975a1e09c86a879b613948f09eb49324218c14d"}, - {file = "cryptography-41.0.4-pp38-pypy38_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:5b72205a360f3b6176485a333256b9bcd48700fc755fef51c8e7e67c4b63e3ac"}, - {file = "cryptography-41.0.4-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:93530900d14c37a46ce3d6c9e6fd35dbe5f5601bf6b3a5c325c7bffc030344d9"}, - {file = "cryptography-41.0.4-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:efc8ad4e6fc4f1752ebfb58aefece8b4e3c4cae940b0994d43649bdfce8d0d4f"}, - {file = "cryptography-41.0.4-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:c3391bd8e6de35f6f1140e50aaeb3e2b3d6a9012536ca23ab0d9c35ec18c8a91"}, - {file = "cryptography-41.0.4-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:0d9409894f495d465fe6fda92cb70e8323e9648af912d5b9141d616df40a87b8"}, - {file = "cryptography-41.0.4-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:8ac4f9ead4bbd0bc8ab2d318f97d85147167a488be0e08814a37eb2f439d5cf6"}, - {file = "cryptography-41.0.4-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:047c4603aeb4bbd8db2756e38f5b8bd7e94318c047cfe4efeb5d715e08b49311"}, - {file = "cryptography-41.0.4.tar.gz", hash = "sha256:7febc3094125fc126a7f6fb1f420d0da639f3f32cb15c8ff0dc3997c4549f51a"}, -] - -[package.dependencies] -cffi = ">=1.12" + {file = "cryptography-42.0.5-cp37-abi3-macosx_10_12_universal2.whl", hash = "sha256:a30596bae9403a342c978fb47d9b0ee277699fa53bbafad14706af51fe543d16"}, + {file = "cryptography-42.0.5-cp37-abi3-macosx_10_12_x86_64.whl", hash = "sha256:b7ffe927ee6531c78f81aa17e684e2ff617daeba7f189f911065b2ea2d526dec"}, + {file = "cryptography-42.0.5-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2424ff4c4ac7f6b8177b53c17ed5d8fa74ae5955656867f5a8affaca36a27abb"}, + {file = "cryptography-42.0.5-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:329906dcc7b20ff3cad13c069a78124ed8247adcac44b10bea1130e36caae0b4"}, + {file = "cryptography-42.0.5-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:b03c2ae5d2f0fc05f9a2c0c997e1bc18c8229f392234e8a0194f202169ccd278"}, + {file = "cryptography-42.0.5-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:f8837fe1d6ac4a8052a9a8ddab256bc006242696f03368a4009be7ee3075cdb7"}, + {file = "cryptography-42.0.5-cp37-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:0270572b8bd2c833c3981724b8ee9747b3ec96f699a9665470018594301439ee"}, + {file = "cryptography-42.0.5-cp37-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:b8cac287fafc4ad485b8a9b67d0ee80c66bf3574f655d3b97ef2e1082360faf1"}, + {file = "cryptography-42.0.5-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:16a48c23a62a2f4a285699dba2e4ff2d1cff3115b9df052cdd976a18856d8e3d"}, + {file = "cryptography-42.0.5-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:2bce03af1ce5a5567ab89bd90d11e7bbdff56b8af3acbbec1faded8f44cb06da"}, + {file = "cryptography-42.0.5-cp37-abi3-win32.whl", hash = "sha256:b6cd2203306b63e41acdf39aa93b86fb566049aeb6dc489b70e34bcd07adca74"}, + {file = "cryptography-42.0.5-cp37-abi3-win_amd64.whl", hash = "sha256:98d8dc6d012b82287f2c3d26ce1d2dd130ec200c8679b6213b3c73c08b2b7940"}, + {file = "cryptography-42.0.5-cp39-abi3-macosx_10_12_universal2.whl", hash = "sha256:5e6275c09d2badf57aea3afa80d975444f4be8d3bc58f7f80d2a484c6f9485c8"}, + {file = "cryptography-42.0.5-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e4985a790f921508f36f81831817cbc03b102d643b5fcb81cd33df3fa291a1a1"}, + {file = "cryptography-42.0.5-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7cde5f38e614f55e28d831754e8a3bacf9ace5d1566235e39d91b35502d6936e"}, + {file = "cryptography-42.0.5-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:7367d7b2eca6513681127ebad53b2582911d1736dc2ffc19f2c3ae49997496bc"}, + {file = "cryptography-42.0.5-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:cd2030f6650c089aeb304cf093f3244d34745ce0cfcc39f20c6fbfe030102e2a"}, + {file = "cryptography-42.0.5-cp39-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:a2913c5375154b6ef2e91c10b5720ea6e21007412f6437504ffea2109b5a33d7"}, + {file = "cryptography-42.0.5-cp39-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:c41fb5e6a5fe9ebcd58ca3abfeb51dffb5d83d6775405305bfa8715b76521922"}, + {file = "cryptography-42.0.5-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:3eaafe47ec0d0ffcc9349e1708be2aaea4c6dd4978d76bf6eb0cb2c13636c6fc"}, + {file = "cryptography-42.0.5-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:1b95b98b0d2af784078fa69f637135e3c317091b615cd0905f8b8a087e86fa30"}, + {file = "cryptography-42.0.5-cp39-abi3-win32.whl", hash = "sha256:1f71c10d1e88467126f0efd484bd44bca5e14c664ec2ede64c32f20875c0d413"}, + {file = "cryptography-42.0.5-cp39-abi3-win_amd64.whl", hash = "sha256:a011a644f6d7d03736214d38832e030d8268bcff4a41f728e6030325fea3e400"}, + {file = "cryptography-42.0.5-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:9481ffe3cf013b71b2428b905c4f7a9a4f76ec03065b05ff499bb5682a8d9ad8"}, + {file = "cryptography-42.0.5-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:ba334e6e4b1d92442b75ddacc615c5476d4ad55cc29b15d590cc6b86efa487e2"}, + {file = "cryptography-42.0.5-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:ba3e4a42397c25b7ff88cdec6e2a16c2be18720f317506ee25210f6d31925f9c"}, + {file = "cryptography-42.0.5-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:111a0d8553afcf8eb02a4fea6ca4f59d48ddb34497aa8706a6cf536f1a5ec576"}, + {file = "cryptography-42.0.5-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:cd65d75953847815962c84a4654a84850b2bb4aed3f26fadcc1c13892e1e29f6"}, + {file = "cryptography-42.0.5-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:e807b3188f9eb0eaa7bbb579b462c5ace579f1cedb28107ce8b48a9f7ad3679e"}, + {file = "cryptography-42.0.5-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:f12764b8fffc7a123f641d7d049d382b73f96a34117e0b637b80643169cec8ac"}, + {file = "cryptography-42.0.5-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:37dd623507659e08be98eec89323469e8c7b4c1407c85112634ae3dbdb926fdd"}, + {file = "cryptography-42.0.5.tar.gz", hash = "sha256:6fe07eec95dfd477eb9530aef5bead34fec819b3aaf6c5bd6d20565da607bfe1"}, +] + +[package.dependencies] +cffi = {version = ">=1.12", markers = "platform_python_implementation != \"PyPy\""} [package.extras] docs = ["sphinx (>=5.3.0)", "sphinx-rtd-theme (>=1.1.1)"] -docstest = ["pyenchant (>=1.6.11)", "sphinxcontrib-spelling (>=4.0.1)", "twine (>=1.12.0)"] +docstest = ["pyenchant (>=1.6.11)", "readme-renderer", "sphinxcontrib-spelling (>=4.0.1)"] nox = ["nox"] -pep8test = ["black", "check-sdist", "mypy", "ruff"] +pep8test = ["check-sdist", "click", "mypy", "ruff"] sdist = ["build"] ssh = ["bcrypt (>=3.1.5)"] -test = ["pretend", "pytest (>=6.2.0)", "pytest-benchmark", "pytest-cov", "pytest-xdist"] +test = ["certifi", "pretend", "pytest (>=6.2.0)", "pytest-benchmark", "pytest-cov", "pytest-xdist"] test-randomorder = ["pytest-randomly"] +[[package]] +name = "deprecated" +version = "1.2.14" +description = "Python @deprecated decorator to deprecate old python classes, functions or methods." +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ + {file = "Deprecated-1.2.14-py2.py3-none-any.whl", hash = "sha256:6fac8b097794a90302bdbb17b9b815e732d3c4720583ff1b198499d78470466c"}, + {file = "Deprecated-1.2.14.tar.gz", hash = "sha256:e5323eb936458dccc2582dc6f9c322c852a775a27065ff2b0c4970b9d53d01b3"}, +] + +[package.dependencies] +wrapt = ">=1.10,<2" + +[package.extras] +dev = ["PyTest", "PyTest-Cov", "bump2version (<1)", "sphinx (<2)", "tox"] + [[package]] name = "detect-secrets" version = "1.4.0" @@ -780,27 +1142,28 @@ word-list = ["pyahocorasick"] [[package]] name = "dill" -version = "0.3.7" +version = "0.3.8" description = "serialize all of Python" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "dill-0.3.7-py3-none-any.whl", hash = "sha256:76b122c08ef4ce2eedcd4d1abd8e641114bfc6c2867f49f3c41facf65bf19f5e"}, - {file = "dill-0.3.7.tar.gz", hash = "sha256:cc1c8b182eb3013e24bd475ff2e9295af86c1a38eb1aff128dac8962a9ce3c03"}, + {file = "dill-0.3.8-py3-none-any.whl", hash = "sha256:c36ca9ffb54365bdd2f8eb3eff7d2a21237f8452b57ace88b1ac615b7e815bd7"}, + {file = "dill-0.3.8.tar.gz", hash = "sha256:3ebe3c479ad625c4553aca177444d89b486b1d84982eeacded644afc0cf797ca"}, ] [package.extras] graph = ["objgraph (>=1.7.2)"] +profile = ["gprof2dot (>=2022.7.29)"] [[package]] name = "docker" -version = "6.1.3" +version = "7.0.0" description = "A Python library for the Docker Engine API." optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "docker-6.1.3-py3-none-any.whl", hash = "sha256:aecd2277b8bf8e506e484f6ab7aec39abe0038e29fa4a6d3ba86c3fe01844ed9"}, - {file = "docker-6.1.3.tar.gz", hash = "sha256:aa6d17830045ba5ef0168d5eaa34d37beeb113948c413affe1d5991fc11f9a20"}, + {file = "docker-7.0.0-py3-none-any.whl", hash = "sha256:12ba681f2777a0ad28ffbcc846a69c31b4dfd9752b47eb425a274ee269c5e14b"}, + {file = "docker-7.0.0.tar.gz", hash = "sha256:323736fb92cd9418fc5e7133bc953e11a9da04f4483f828b527db553f1e7e5a3"}, ] [package.dependencies] @@ -808,57 +1171,41 @@ packaging = ">=14.0" pywin32 = {version = ">=304", markers = "sys_platform == \"win32\""} requests = ">=2.26.0" urllib3 = ">=1.26.0" -websocket-client = ">=0.32.0" [package.extras] ssh = ["paramiko (>=2.4.3)"] +websockets = ["websocket-client (>=1.3.0)"] [[package]] name = "dparse" -version = "0.6.2" +version = "0.6.4b0" description = "A parser for Python dependency files" optional = false -python-versions = ">=3.5" +python-versions = ">=3.7" files = [ - {file = "dparse-0.6.2-py3-none-any.whl", hash = "sha256:8097076f1dd26c377f30d4745e6ec18fef42f3bf493933b842ac5bafad8c345f"}, - {file = "dparse-0.6.2.tar.gz", hash = "sha256:d45255bda21f998bc7ddf2afd5e62505ba6134756ba2d42a84c56b0826614dfe"}, + {file = "dparse-0.6.4b0-py3-none-any.whl", hash = "sha256:592ff183348b8a5ea0a18442a7965e29445d3a26063654ec2c7e8ef42cd5753c"}, + {file = "dparse-0.6.4b0.tar.gz", hash = "sha256:f8d49b41a527f3d16a269f854e6665245b325e50e41d2c213810cb984553e5c8"}, ] [package.dependencies] packaging = "*" -toml = "*" +tomli = {version = "*", markers = "python_version < \"3.11\""} [package.extras] +all = ["dparse[conda]", "dparse[pipenv]", "dparse[poetry]"] conda = ["pyyaml"] pipenv = ["pipenv"] - -[[package]] -name = "ecdsa" -version = "0.18.0" -description = "ECDSA cryptographic signature library (pure python)" -optional = false -python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" -files = [ - {file = "ecdsa-0.18.0-py2.py3-none-any.whl", hash = "sha256:80600258e7ed2f16b9aa1d7c295bd70194109ad5a30fdee0eaeefef1d4c559dd"}, - {file = "ecdsa-0.18.0.tar.gz", hash = "sha256:190348041559e21b22a1d65cee485282ca11a6f81d503fddb84d5017e9ed1e49"}, -] - -[package.dependencies] -six = ">=1.9.0" - -[package.extras] -gmpy = ["gmpy"] -gmpy2 = ["gmpy2"] +poetry = ["poetry"] [[package]] name = "exceptiongroup" -version = "1.1.1" +version = "1.2.0" description = "Backport of PEP 654 (exception groups)" optional = false python-versions = ">=3.7" files = [ - {file = "exceptiongroup-1.1.1-py3-none-any.whl", hash = "sha256:232c37c63e4f682982c8b6459f33a8981039e5fb8756b2074364e5055c498c9e"}, - {file = "exceptiongroup-1.1.1.tar.gz", hash = "sha256:d484c3090ba2889ae2928419117447a14daf3c1231d5e30d0aae34f354f01785"}, + {file = "exceptiongroup-1.2.0-py3-none-any.whl", hash = "sha256:4bfd3996ac73b41e9b9628b04e079f193850720ea5945fc96a08633c66912f14"}, + {file = "exceptiongroup-1.2.0.tar.gz", hash = "sha256:91f5c769735f051a4290d52edd0858999b57e5876e9f85937691bd4c9fa3ed68"}, ] [package.extras] @@ -866,68 +1213,155 @@ test = ["pytest (>=6)"] [[package]] name = "execnet" -version = "1.9.0" +version = "2.0.2" description = "execnet: rapid multi-Python deployment" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +python-versions = ">=3.7" files = [ - {file = "execnet-1.9.0-py2.py3-none-any.whl", hash = "sha256:a295f7cc774947aac58dde7fdc85f4aa00c42adf5d8f5468fc630c1acf30a142"}, - {file = "execnet-1.9.0.tar.gz", hash = "sha256:8f694f3ba9cc92cab508b152dcfe322153975c29bda272e2fd7f3f00f36e47c5"}, + {file = "execnet-2.0.2-py3-none-any.whl", hash = "sha256:88256416ae766bc9e8895c76a87928c0012183da3cc4fc18016e6f050e025f41"}, + {file = "execnet-2.0.2.tar.gz", hash = "sha256:cc59bc4423742fd71ad227122eb0dd44db51efb3dc4095b45ac9a08c770096af"}, ] [package.extras] -testing = ["pre-commit"] +testing = ["hatch", "pre-commit", "pytest", "tox"] [[package]] name = "filelock" -version = "3.12.2" +version = "3.13.1" description = "A platform independent file lock." optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "filelock-3.12.2-py3-none-any.whl", hash = "sha256:cbb791cdea2a72f23da6ac5b5269ab0a0d161e9ef0100e653b69049a7706d1ec"}, - {file = "filelock-3.12.2.tar.gz", hash = "sha256:002740518d8aa59a26b0c76e10fb8c6e15eae825d34b6fdf670333fd7b938d81"}, + {file = "filelock-3.13.1-py3-none-any.whl", hash = "sha256:57dbda9b35157b05fb3e58ee91448612eb674172fab98ee235ccb0b5bee19a1c"}, + {file = "filelock-3.13.1.tar.gz", hash = "sha256:521f5f56c50f8426f5e03ad3b281b490a87ef15bc6c526f168290f0c7148d44e"}, ] [package.extras] -docs = ["furo (>=2023.5.20)", "sphinx (>=7.0.1)", "sphinx-autodoc-typehints (>=1.23,!=1.23.4)"] -testing = ["covdefaults (>=2.3)", "coverage (>=7.2.7)", "diff-cover (>=7.5)", "pytest (>=7.3.1)", "pytest-cov (>=4.1)", "pytest-mock (>=3.10)", "pytest-timeout (>=2.1)"] +docs = ["furo (>=2023.9.10)", "sphinx (>=7.2.6)", "sphinx-autodoc-typehints (>=1.24)"] +testing = ["covdefaults (>=2.3)", "coverage (>=7.3.2)", "diff-cover (>=8)", "pytest (>=7.4.3)", "pytest-cov (>=4.1)", "pytest-mock (>=3.12)", "pytest-timeout (>=2.2)"] +typing = ["typing-extensions (>=4.8)"] [[package]] name = "flake8" -version = "6.1.0" +version = "7.0.0" description = "the modular source code checker: pep8 pyflakes and co" optional = false python-versions = ">=3.8.1" files = [ - {file = "flake8-6.1.0-py2.py3-none-any.whl", hash = "sha256:ffdfce58ea94c6580c77888a86506937f9a1a227dfcd15f245d694ae20a6b6e5"}, - {file = "flake8-6.1.0.tar.gz", hash = "sha256:d5b3857f07c030bdb5bf41c7f53799571d75c4491748a3adcd47de929e34cd23"}, + {file = "flake8-7.0.0-py2.py3-none-any.whl", hash = "sha256:a6dfbb75e03252917f2473ea9653f7cd799c3064e54d4c8140044c5c065f53c3"}, + {file = "flake8-7.0.0.tar.gz", hash = "sha256:33f96621059e65eec474169085dc92bf26e7b2d47366b70be2f67ab80dc25132"}, ] [package.dependencies] mccabe = ">=0.7.0,<0.8.0" pycodestyle = ">=2.11.0,<2.12.0" -pyflakes = ">=3.1.0,<3.2.0" +pyflakes = ">=3.2.0,<3.3.0" [[package]] name = "freezegun" -version = "1.2.2" +version = "1.4.0" description = "Let your Python tests travel through time" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" files = [ - {file = "freezegun-1.2.2-py3-none-any.whl", hash = "sha256:ea1b963b993cb9ea195adbd893a48d573fda951b0da64f60883d7e988b606c9f"}, - {file = "freezegun-1.2.2.tar.gz", hash = "sha256:cd22d1ba06941384410cd967d8a99d5ae2442f57dfafeff2fda5de8dc5c05446"}, + {file = "freezegun-1.4.0-py3-none-any.whl", hash = "sha256:55e0fc3c84ebf0a96a5aa23ff8b53d70246479e9a68863f1fcac5a3e52f19dd6"}, + {file = "freezegun-1.4.0.tar.gz", hash = "sha256:10939b0ba0ff5adaecf3b06a5c2f73071d9678e507c5eaedb23c761d56ac774b"}, ] [package.dependencies] python-dateutil = ">=2.7" +[[package]] +name = "frozenlist" +version = "1.4.1" +description = "A list-like structure which implements collections.abc.MutableSequence" +optional = false +python-versions = ">=3.8" +files = [ + {file = "frozenlist-1.4.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:f9aa1878d1083b276b0196f2dfbe00c9b7e752475ed3b682025ff20c1c1f51ac"}, + {file = "frozenlist-1.4.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:29acab3f66f0f24674b7dc4736477bcd4bc3ad4b896f5f45379a67bce8b96868"}, + {file = "frozenlist-1.4.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:74fb4bee6880b529a0c6560885fce4dc95936920f9f20f53d99a213f7bf66776"}, + {file = "frozenlist-1.4.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:590344787a90ae57d62511dd7c736ed56b428f04cd8c161fcc5e7232c130c69a"}, + {file = "frozenlist-1.4.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:068b63f23b17df8569b7fdca5517edef76171cf3897eb68beb01341131fbd2ad"}, + {file = "frozenlist-1.4.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5c849d495bf5154cd8da18a9eb15db127d4dba2968d88831aff6f0331ea9bd4c"}, + {file = "frozenlist-1.4.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9750cc7fe1ae3b1611bb8cfc3f9ec11d532244235d75901fb6b8e42ce9229dfe"}, + {file = "frozenlist-1.4.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a9b2de4cf0cdd5bd2dee4c4f63a653c61d2408055ab77b151c1957f221cabf2a"}, + {file = "frozenlist-1.4.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:0633c8d5337cb5c77acbccc6357ac49a1770b8c487e5b3505c57b949b4b82e98"}, + {file = "frozenlist-1.4.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:27657df69e8801be6c3638054e202a135c7f299267f1a55ed3a598934f6c0d75"}, + {file = "frozenlist-1.4.1-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:f9a3ea26252bd92f570600098783d1371354d89d5f6b7dfd87359d669f2109b5"}, + {file = "frozenlist-1.4.1-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:4f57dab5fe3407b6c0c1cc907ac98e8a189f9e418f3b6e54d65a718aaafe3950"}, + {file = "frozenlist-1.4.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:e02a0e11cf6597299b9f3bbd3f93d79217cb90cfd1411aec33848b13f5c656cc"}, + {file = "frozenlist-1.4.1-cp310-cp310-win32.whl", hash = "sha256:a828c57f00f729620a442881cc60e57cfcec6842ba38e1b19fd3e47ac0ff8dc1"}, + {file = "frozenlist-1.4.1-cp310-cp310-win_amd64.whl", hash = "sha256:f56e2333dda1fe0f909e7cc59f021eba0d2307bc6f012a1ccf2beca6ba362439"}, + {file = "frozenlist-1.4.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:a0cb6f11204443f27a1628b0e460f37fb30f624be6051d490fa7d7e26d4af3d0"}, + {file = "frozenlist-1.4.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b46c8ae3a8f1f41a0d2ef350c0b6e65822d80772fe46b653ab6b6274f61d4a49"}, + {file = "frozenlist-1.4.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:fde5bd59ab5357e3853313127f4d3565fc7dad314a74d7b5d43c22c6a5ed2ced"}, + {file = "frozenlist-1.4.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:722e1124aec435320ae01ee3ac7bec11a5d47f25d0ed6328f2273d287bc3abb0"}, + {file = "frozenlist-1.4.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2471c201b70d58a0f0c1f91261542a03d9a5e088ed3dc6c160d614c01649c106"}, + {file = "frozenlist-1.4.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c757a9dd70d72b076d6f68efdbb9bc943665ae954dad2801b874c8c69e185068"}, + {file = "frozenlist-1.4.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f146e0911cb2f1da549fc58fc7bcd2b836a44b79ef871980d605ec392ff6b0d2"}, + {file = "frozenlist-1.4.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4f9c515e7914626b2a2e1e311794b4c35720a0be87af52b79ff8e1429fc25f19"}, + {file = "frozenlist-1.4.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:c302220494f5c1ebeb0912ea782bcd5e2f8308037b3c7553fad0e48ebad6ad82"}, + {file = "frozenlist-1.4.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:442acde1e068288a4ba7acfe05f5f343e19fac87bfc96d89eb886b0363e977ec"}, + {file = "frozenlist-1.4.1-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:1b280e6507ea8a4fa0c0a7150b4e526a8d113989e28eaaef946cc77ffd7efc0a"}, + {file = "frozenlist-1.4.1-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:fe1a06da377e3a1062ae5fe0926e12b84eceb8a50b350ddca72dc85015873f74"}, + {file = "frozenlist-1.4.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:db9e724bebd621d9beca794f2a4ff1d26eed5965b004a97f1f1685a173b869c2"}, + {file = "frozenlist-1.4.1-cp311-cp311-win32.whl", hash = "sha256:e774d53b1a477a67838a904131c4b0eef6b3d8a651f8b138b04f748fccfefe17"}, + {file = "frozenlist-1.4.1-cp311-cp311-win_amd64.whl", hash = "sha256:fb3c2db03683b5767dedb5769b8a40ebb47d6f7f45b1b3e3b4b51ec8ad9d9825"}, + {file = "frozenlist-1.4.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:1979bc0aeb89b33b588c51c54ab0161791149f2461ea7c7c946d95d5f93b56ae"}, + {file = "frozenlist-1.4.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:cc7b01b3754ea68a62bd77ce6020afaffb44a590c2289089289363472d13aedb"}, + {file = "frozenlist-1.4.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:c9c92be9fd329ac801cc420e08452b70e7aeab94ea4233a4804f0915c14eba9b"}, + {file = "frozenlist-1.4.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5c3894db91f5a489fc8fa6a9991820f368f0b3cbdb9cd8849547ccfab3392d86"}, + {file = "frozenlist-1.4.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ba60bb19387e13597fb059f32cd4d59445d7b18b69a745b8f8e5db0346f33480"}, + {file = "frozenlist-1.4.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8aefbba5f69d42246543407ed2461db31006b0f76c4e32dfd6f42215a2c41d09"}, + {file = "frozenlist-1.4.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:780d3a35680ced9ce682fbcf4cb9c2bad3136eeff760ab33707b71db84664e3a"}, + {file = "frozenlist-1.4.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9acbb16f06fe7f52f441bb6f413ebae6c37baa6ef9edd49cdd567216da8600cd"}, + {file = "frozenlist-1.4.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:23b701e65c7b36e4bf15546a89279bd4d8675faabc287d06bbcfac7d3c33e1e6"}, + {file = "frozenlist-1.4.1-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:3e0153a805a98f5ada7e09826255ba99fb4f7524bb81bf6b47fb702666484ae1"}, + {file = "frozenlist-1.4.1-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:dd9b1baec094d91bf36ec729445f7769d0d0cf6b64d04d86e45baf89e2b9059b"}, + {file = "frozenlist-1.4.1-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:1a4471094e146b6790f61b98616ab8e44f72661879cc63fa1049d13ef711e71e"}, + {file = "frozenlist-1.4.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:5667ed53d68d91920defdf4035d1cdaa3c3121dc0b113255124bcfada1cfa1b8"}, + {file = "frozenlist-1.4.1-cp312-cp312-win32.whl", hash = "sha256:beee944ae828747fd7cb216a70f120767fc9f4f00bacae8543c14a6831673f89"}, + {file = "frozenlist-1.4.1-cp312-cp312-win_amd64.whl", hash = "sha256:64536573d0a2cb6e625cf309984e2d873979709f2cf22839bf2d61790b448ad5"}, + {file = "frozenlist-1.4.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:20b51fa3f588ff2fe658663db52a41a4f7aa6c04f6201449c6c7c476bd255c0d"}, + {file = "frozenlist-1.4.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:410478a0c562d1a5bcc2f7ea448359fcb050ed48b3c6f6f4f18c313a9bdb1826"}, + {file = "frozenlist-1.4.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:c6321c9efe29975232da3bd0af0ad216800a47e93d763ce64f291917a381b8eb"}, + {file = "frozenlist-1.4.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:48f6a4533887e189dae092f1cf981f2e3885175f7a0f33c91fb5b7b682b6bab6"}, + {file = "frozenlist-1.4.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6eb73fa5426ea69ee0e012fb59cdc76a15b1283d6e32e4f8dc4482ec67d1194d"}, + {file = "frozenlist-1.4.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fbeb989b5cc29e8daf7f976b421c220f1b8c731cbf22b9130d8815418ea45887"}, + {file = "frozenlist-1.4.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:32453c1de775c889eb4e22f1197fe3bdfe457d16476ea407472b9442e6295f7a"}, + {file = "frozenlist-1.4.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:693945278a31f2086d9bf3df0fe8254bbeaef1fe71e1351c3bd730aa7d31c41b"}, + {file = "frozenlist-1.4.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:1d0ce09d36d53bbbe566fe296965b23b961764c0bcf3ce2fa45f463745c04701"}, + {file = "frozenlist-1.4.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:3a670dc61eb0d0eb7080890c13de3066790f9049b47b0de04007090807c776b0"}, + {file = "frozenlist-1.4.1-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:dca69045298ce5c11fd539682cff879cc1e664c245d1c64da929813e54241d11"}, + {file = "frozenlist-1.4.1-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:a06339f38e9ed3a64e4c4e43aec7f59084033647f908e4259d279a52d3757d09"}, + {file = "frozenlist-1.4.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:b7f2f9f912dca3934c1baec2e4585a674ef16fe00218d833856408c48d5beee7"}, + {file = "frozenlist-1.4.1-cp38-cp38-win32.whl", hash = "sha256:e7004be74cbb7d9f34553a5ce5fb08be14fb33bc86f332fb71cbe5216362a497"}, + {file = "frozenlist-1.4.1-cp38-cp38-win_amd64.whl", hash = "sha256:5a7d70357e7cee13f470c7883a063aae5fe209a493c57d86eb7f5a6f910fae09"}, + {file = "frozenlist-1.4.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:bfa4a17e17ce9abf47a74ae02f32d014c5e9404b6d9ac7f729e01562bbee601e"}, + {file = "frozenlist-1.4.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b7e3ed87d4138356775346e6845cccbe66cd9e207f3cd11d2f0b9fd13681359d"}, + {file = "frozenlist-1.4.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c99169d4ff810155ca50b4da3b075cbde79752443117d89429595c2e8e37fed8"}, + {file = "frozenlist-1.4.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:edb678da49d9f72c9f6c609fbe41a5dfb9a9282f9e6a2253d5a91e0fc382d7c0"}, + {file = "frozenlist-1.4.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6db4667b187a6742b33afbbaf05a7bc551ffcf1ced0000a571aedbb4aa42fc7b"}, + {file = "frozenlist-1.4.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:55fdc093b5a3cb41d420884cdaf37a1e74c3c37a31f46e66286d9145d2063bd0"}, + {file = "frozenlist-1.4.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:82e8211d69a4f4bc360ea22cd6555f8e61a1bd211d1d5d39d3d228b48c83a897"}, + {file = "frozenlist-1.4.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:89aa2c2eeb20957be2d950b85974b30a01a762f3308cd02bb15e1ad632e22dc7"}, + {file = "frozenlist-1.4.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9d3e0c25a2350080e9319724dede4f31f43a6c9779be48021a7f4ebde8b2d742"}, + {file = "frozenlist-1.4.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:7268252af60904bf52c26173cbadc3a071cece75f873705419c8681f24d3edea"}, + {file = "frozenlist-1.4.1-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:0c250a29735d4f15321007fb02865f0e6b6a41a6b88f1f523ca1596ab5f50bd5"}, + {file = "frozenlist-1.4.1-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:96ec70beabbd3b10e8bfe52616a13561e58fe84c0101dd031dc78f250d5128b9"}, + {file = "frozenlist-1.4.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:23b2d7679b73fe0e5a4560b672a39f98dfc6f60df63823b0a9970525325b95f6"}, + {file = "frozenlist-1.4.1-cp39-cp39-win32.whl", hash = "sha256:a7496bfe1da7fb1a4e1cc23bb67c58fab69311cc7d32b5a99c2007b4b2a0e932"}, + {file = "frozenlist-1.4.1-cp39-cp39-win_amd64.whl", hash = "sha256:e6a20a581f9ce92d389a8c7d7c3dd47c81fd5d6e655c8dddf341e14aa48659d0"}, + {file = "frozenlist-1.4.1-py3-none-any.whl", hash = "sha256:04ced3e6a46b4cfffe20f9ae482818e34eba9b5fb0ce4056e4cc9b6e212d09b7"}, + {file = "frozenlist-1.4.1.tar.gz", hash = "sha256:c037a86e8513059a2613aaba4d817bb90b9d9b6b69aace3ce9c877e8c8ed402b"}, +] + [[package]] name = "ghp-import" version = "2.1.0" description = "Copy your docs directly to the gh-pages branch." -optional = true +optional = false python-versions = "*" files = [ {file = "ghp-import-2.1.0.tar.gz", hash = "sha256:9c535c4c61193c2df8871222567d7fd7e5014d835f97dc7b7439069e2413d343"}, @@ -942,13 +1376,13 @@ dev = ["flake8", "markdown", "twine", "wheel"] [[package]] name = "gitdb" -version = "4.0.10" +version = "4.0.11" description = "Git Object Database" optional = false python-versions = ">=3.7" files = [ - {file = "gitdb-4.0.10-py3-none-any.whl", hash = "sha256:c286cf298426064079ed96a9e4a9d39e7f3e9bf15ba60701e95f5492f28415c7"}, - {file = "gitdb-4.0.10.tar.gz", hash = "sha256:6eb990b69df4e15bad899ea868dc46572c3f75339735663b81de79b06f17eb9a"}, + {file = "gitdb-4.0.11-py3-none-any.whl", hash = "sha256:81a3407ddd2ee8df444cbacea00e2d038e40150acfa3001696fe0dcf1d3adfa4"}, + {file = "gitdb-4.0.11.tar.gz", hash = "sha256:bf5421126136d6d0af55bc1e7c1af1c397a34f5b7bd79e776cd3e89785c2b04b"}, ] [package.dependencies] @@ -956,52 +1390,52 @@ smmap = ">=3.0.1,<6" [[package]] name = "gitpython" -version = "3.1.37" +version = "3.1.42" description = "GitPython is a Python library used to interact with Git repositories" optional = false python-versions = ">=3.7" files = [ - {file = "GitPython-3.1.37-py3-none-any.whl", hash = "sha256:5f4c4187de49616d710a77e98ddf17b4782060a1788df441846bddefbb89ab33"}, - {file = "GitPython-3.1.37.tar.gz", hash = "sha256:f9b9ddc0761c125d5780eab2d64be4873fc6817c2899cbcb34b02344bdc7bc54"}, + {file = "GitPython-3.1.42-py3-none-any.whl", hash = "sha256:1bf9cd7c9e7255f77778ea54359e54ac22a72a5b51288c457c881057b7bb9ecd"}, + {file = "GitPython-3.1.42.tar.gz", hash = "sha256:2d99869e0fef71a73cbd242528105af1d6c1b108c60dfabd994bf292f76c3ceb"}, ] [package.dependencies] gitdb = ">=4.0.1,<5" [package.extras] -test = ["black", "coverage[toml]", "ddt (>=1.1.1,!=1.4.3)", "mypy", "pre-commit", "pytest", "pytest-cov", "pytest-sugar"] +test = ["black", "coverage[toml]", "ddt (>=1.1.1,!=1.4.3)", "mock", "mypy", "pre-commit", "pytest (>=7.3.1)", "pytest-cov", "pytest-instafail", "pytest-mock", "pytest-sugar"] [[package]] name = "google-api-core" -version = "2.11.0" +version = "2.17.1" description = "Google API client core library" optional = false python-versions = ">=3.7" files = [ - {file = "google-api-core-2.11.0.tar.gz", hash = "sha256:4b9bb5d5a380a0befa0573b302651b8a9a89262c1730e37bf423cec511804c22"}, - {file = "google_api_core-2.11.0-py3-none-any.whl", hash = "sha256:ce222e27b0de0d7bc63eb043b956996d6dccab14cc3b690aaea91c9cc99dc16e"}, + {file = "google-api-core-2.17.1.tar.gz", hash = "sha256:9df18a1f87ee0df0bc4eea2770ebc4228392d8cc4066655b320e2cfccb15db95"}, + {file = "google_api_core-2.17.1-py3-none-any.whl", hash = "sha256:610c5b90092c360736baccf17bd3efbcb30dd380e7a6dc28a71059edb8bd0d8e"}, ] [package.dependencies] -google-auth = ">=2.14.1,<3.0dev" -googleapis-common-protos = ">=1.56.2,<2.0dev" -protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.0 || >4.21.0,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<5.0.0dev" -requests = ">=2.18.0,<3.0.0dev" +google-auth = ">=2.14.1,<3.0.dev0" +googleapis-common-protos = ">=1.56.2,<2.0.dev0" +protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.0 || >4.21.0,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<5.0.0.dev0" +requests = ">=2.18.0,<3.0.0.dev0" [package.extras] -grpc = ["grpcio (>=1.33.2,<2.0dev)", "grpcio (>=1.49.1,<2.0dev)", "grpcio-status (>=1.33.2,<2.0dev)", "grpcio-status (>=1.49.1,<2.0dev)"] -grpcgcp = ["grpcio-gcp (>=0.2.2,<1.0dev)"] -grpcio-gcp = ["grpcio-gcp (>=0.2.2,<1.0dev)"] +grpc = ["grpcio (>=1.33.2,<2.0dev)", "grpcio (>=1.49.1,<2.0dev)", "grpcio-status (>=1.33.2,<2.0.dev0)", "grpcio-status (>=1.49.1,<2.0.dev0)"] +grpcgcp = ["grpcio-gcp (>=0.2.2,<1.0.dev0)"] +grpcio-gcp = ["grpcio-gcp (>=0.2.2,<1.0.dev0)"] [[package]] name = "google-api-python-client" -version = "2.108.0" +version = "2.118.0" description = "Google API Client Library for Python" optional = false python-versions = ">=3.7" files = [ - {file = "google-api-python-client-2.108.0.tar.gz", hash = "sha256:6396efca83185fb205c0abdbc1c2ee57b40475578c6af37f6d0e30a639aade99"}, - {file = "google_api_python_client-2.108.0-py2.py3-none-any.whl", hash = "sha256:9d1327213e388943ebcd7db5ce6e7f47987a7e6874e3e1f6116010eea4a0e75d"}, + {file = "google-api-python-client-2.118.0.tar.gz", hash = "sha256:ebf4927a3f5184096647be8f705d090e7f06d48ad82b0fa431a2fe80c2cbe182"}, + {file = "google_api_python_client-2.118.0-py2.py3-none-any.whl", hash = "sha256:9d83b178496b180e058fd206ebfb70ea1afab49f235dd326f557513f56f496d5"}, ] [package.dependencies] @@ -1013,37 +1447,36 @@ uritemplate = ">=3.0.1,<5" [[package]] name = "google-auth" -version = "2.17.3" +version = "2.28.1" description = "Google Authentication Library" optional = false -python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*" +python-versions = ">=3.7" files = [ - {file = "google-auth-2.17.3.tar.gz", hash = "sha256:ce311e2bc58b130fddf316df57c9b3943c2a7b4f6ec31de9663a9333e4064efc"}, - {file = "google_auth-2.17.3-py2.py3-none-any.whl", hash = "sha256:f586b274d3eb7bd932ea424b1c702a30e0393a2e2bc4ca3eae8263ffd8be229f"}, + {file = "google-auth-2.28.1.tar.gz", hash = "sha256:34fc3046c257cedcf1622fc4b31fc2be7923d9b4d44973d481125ecc50d83885"}, + {file = "google_auth-2.28.1-py2.py3-none-any.whl", hash = "sha256:25141e2d7a14bfcba945f5e9827f98092716e99482562f15306e5b026e21aa72"}, ] [package.dependencies] cachetools = ">=2.0.0,<6.0" pyasn1-modules = ">=0.2.1" -rsa = {version = ">=3.1.4,<5", markers = "python_version >= \"3.6\""} -six = ">=1.9.0" +rsa = ">=3.1.4,<5" [package.extras] -aiohttp = ["aiohttp (>=3.6.2,<4.0.0dev)", "requests (>=2.20.0,<3.0.0dev)"] +aiohttp = ["aiohttp (>=3.6.2,<4.0.0.dev0)", "requests (>=2.20.0,<3.0.0.dev0)"] enterprise-cert = ["cryptography (==36.0.2)", "pyopenssl (==22.0.0)"] pyopenssl = ["cryptography (>=38.0.3)", "pyopenssl (>=20.0.0)"] reauth = ["pyu2f (>=0.1.5)"] -requests = ["requests (>=2.20.0,<3.0.0dev)"] +requests = ["requests (>=2.20.0,<3.0.0.dev0)"] [[package]] name = "google-auth-httplib2" -version = "0.1.1" +version = "0.2.0" description = "Google Authentication Library: httplib2 transport" optional = false python-versions = "*" files = [ - {file = "google-auth-httplib2-0.1.1.tar.gz", hash = "sha256:c64bc555fdc6dd788ea62ecf7bccffcf497bf77244887a3f3d7a5a02f8e3fc29"}, - {file = "google_auth_httplib2-0.1.1-py2.py3-none-any.whl", hash = "sha256:42c50900b8e4dcdf8222364d1f0efe32b8421fb6ed72f2613f12f75cc933478c"}, + {file = "google-auth-httplib2-0.2.0.tar.gz", hash = "sha256:38aa7badf48f974f1eb9861794e9c0cb2a0511a4ec0679b1f886d108f5640e05"}, + {file = "google_auth_httplib2-0.2.0-py2.py3-none-any.whl", hash = "sha256:b65a0a2123300dd71281a7bf6e64d65a0759287df52729bdd1ae2e47dc311a3d"}, ] [package.dependencies] @@ -1052,20 +1485,20 @@ httplib2 = ">=0.19.0" [[package]] name = "googleapis-common-protos" -version = "1.59.0" +version = "1.62.0" description = "Common protobufs used in Google APIs" optional = false python-versions = ">=3.7" files = [ - {file = "googleapis-common-protos-1.59.0.tar.gz", hash = "sha256:4168fcb568a826a52f23510412da405abd93f4d23ba544bb68d943b14ba3cb44"}, - {file = "googleapis_common_protos-1.59.0-py2.py3-none-any.whl", hash = "sha256:b287dc48449d1d41af0c69f4ea26242b5ae4c3d7249a38b0984c86a4caffff1f"}, + {file = "googleapis-common-protos-1.62.0.tar.gz", hash = "sha256:83f0ece9f94e5672cced82f592d2a5edf527a96ed1794f0bab36d5735c996277"}, + {file = "googleapis_common_protos-1.62.0-py2.py3-none-any.whl", hash = "sha256:4750113612205514f9f6aa4cb00d523a94f3e8c06c5ad2fee466387dc4875f07"}, ] [package.dependencies] -protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<5.0.0dev" +protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<5.0.0.dev0" [package.extras] -grpc = ["grpcio (>=1.44.0,<2.0.0dev)"] +grpc = ["grpcio (>=1.44.0,<2.0.0.dev0)"] [[package]] name = "grapheme" @@ -1091,6 +1524,64 @@ files = [ {file = "graphql_core-3.2.3-py3-none-any.whl", hash = "sha256:5766780452bd5ec8ba133f8bf287dc92713e3868ddd83aee4faab9fc3e303dc3"}, ] +[[package]] +name = "h11" +version = "0.14.0" +description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1" +optional = false +python-versions = ">=3.7" +files = [ + {file = "h11-0.14.0-py3-none-any.whl", hash = "sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761"}, + {file = "h11-0.14.0.tar.gz", hash = "sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d"}, +] + +[[package]] +name = "h2" +version = "4.1.0" +description = "HTTP/2 State-Machine based protocol implementation" +optional = false +python-versions = ">=3.6.1" +files = [ + {file = "h2-4.1.0-py3-none-any.whl", hash = "sha256:03a46bcf682256c95b5fd9e9a99c1323584c3eec6440d379b9903d709476bc6d"}, + {file = "h2-4.1.0.tar.gz", hash = "sha256:a83aca08fbe7aacb79fec788c9c0bac936343560ed9ec18b82a13a12c28d2abb"}, +] + +[package.dependencies] +hpack = ">=4.0,<5" +hyperframe = ">=6.0,<7" + +[[package]] +name = "hpack" +version = "4.0.0" +description = "Pure-Python HPACK header compression" +optional = false +python-versions = ">=3.6.1" +files = [ + {file = "hpack-4.0.0-py3-none-any.whl", hash = "sha256:84a076fad3dc9a9f8063ccb8041ef100867b1878b25ef0ee63847a5d53818a6c"}, + {file = "hpack-4.0.0.tar.gz", hash = "sha256:fc41de0c63e687ebffde81187a948221294896f6bdc0ae2312708df339430095"}, +] + +[[package]] +name = "httpcore" +version = "1.0.4" +description = "A minimal low-level HTTP client." +optional = false +python-versions = ">=3.8" +files = [ + {file = "httpcore-1.0.4-py3-none-any.whl", hash = "sha256:ac418c1db41bade2ad53ae2f3834a3a0f5ae76b56cf5aa497d2d033384fc7d73"}, + {file = "httpcore-1.0.4.tar.gz", hash = "sha256:cb2839ccfcba0d2d3c1131d3c3e26dfc327326fbe7a5dc0dbfe9f6c9151bb022"}, +] + +[package.dependencies] +certifi = "*" +h11 = ">=0.13,<0.15" + +[package.extras] +asyncio = ["anyio (>=4.0,<5.0)"] +http2 = ["h2 (>=3,<5)"] +socks = ["socksio (==1.*)"] +trio = ["trio (>=0.22.0,<0.25.0)"] + [[package]] name = "httplib2" version = "0.22.0" @@ -1105,35 +1596,71 @@ files = [ [package.dependencies] pyparsing = {version = ">=2.4.2,<3.0.0 || >3.0.0,<3.0.1 || >3.0.1,<3.0.2 || >3.0.2,<3.0.3 || >3.0.3,<4", markers = "python_version > \"3.0\""} +[[package]] +name = "httpx" +version = "0.27.0" +description = "The next generation HTTP client." +optional = false +python-versions = ">=3.8" +files = [ + {file = "httpx-0.27.0-py3-none-any.whl", hash = "sha256:71d5465162c13681bff01ad59b2cc68dd838ea1f10e51574bac27103f00c91a5"}, + {file = "httpx-0.27.0.tar.gz", hash = "sha256:a0cb88a46f32dc874e04ee956e4c2764aba2aa228f650b06788ba6bda2962ab5"}, +] + +[package.dependencies] +anyio = "*" +certifi = "*" +h2 = {version = ">=3,<5", optional = true, markers = "extra == \"http2\""} +httpcore = "==1.*" +idna = "*" +sniffio = "*" + +[package.extras] +brotli = ["brotli", "brotlicffi"] +cli = ["click (==8.*)", "pygments (==2.*)", "rich (>=10,<14)"] +http2 = ["h2 (>=3,<5)"] +socks = ["socksio (==1.*)"] + +[[package]] +name = "hyperframe" +version = "6.0.1" +description = "HTTP/2 framing layer for Python" +optional = false +python-versions = ">=3.6.1" +files = [ + {file = "hyperframe-6.0.1-py3-none-any.whl", hash = "sha256:0ec6bafd80d8ad2195c4f03aacba3a8265e57bc4cff261e802bf39970ed02a15"}, + {file = "hyperframe-6.0.1.tar.gz", hash = "sha256:ae510046231dc8e9ecb1a6586f63d2347bf4c8905914aa84ba585ae85f28a914"}, +] + [[package]] name = "idna" -version = "3.4" +version = "3.6" description = "Internationalized Domain Names in Applications (IDNA)" optional = false python-versions = ">=3.5" files = [ - {file = "idna-3.4-py3-none-any.whl", hash = "sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2"}, - {file = "idna-3.4.tar.gz", hash = "sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4"}, + {file = "idna-3.6-py3-none-any.whl", hash = "sha256:c05567e9c24a6b9faaa835c4821bad0590fbb9d5779e7caa6e1cc4978e7eb24f"}, + {file = "idna-3.6.tar.gz", hash = "sha256:9ecdbbd083b06798ae1e86adcbfe8ab1479cf864e4ee30fe4e46a003d12491ca"}, ] [[package]] name = "importlib-metadata" -version = "6.6.0" +version = "6.11.0" description = "Read metadata from Python packages" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "importlib_metadata-6.6.0-py3-none-any.whl", hash = "sha256:43dd286a2cd8995d5eaef7fee2066340423b818ed3fd70adf0bad5f1fac53fed"}, - {file = "importlib_metadata-6.6.0.tar.gz", hash = "sha256:92501cdf9cc66ebd3e612f1b4f0c0765dfa42f0fa38ffb319b6bd84dd675d705"}, + {file = "importlib_metadata-6.11.0-py3-none-any.whl", hash = "sha256:f0afba6205ad8f8947c7d338b5342d5db2afbfd82f9cbef7879a9539cc12eb9b"}, + {file = "importlib_metadata-6.11.0.tar.gz", hash = "sha256:1231cf92d825c9e03cfc4da076a16de6422c863558229ea0b22b675657463443"}, ] [package.dependencies] zipp = ">=0.5" [package.extras] -docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] +docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (<7.2.5)", "sphinx (>=3.5)", "sphinx-lint"] perf = ["ipython"] -testing = ["flake8 (<5)", "flufl.flake8", "importlib-resources (>=1.3)", "packaging", "pyfakefs", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)", "pytest-perf (>=0.9.2)"] +testing = ["flufl.flake8", "importlib-resources (>=1.3)", "packaging", "pyfakefs", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-perf (>=0.9.2)", "pytest-ruff"] [[package]] name = "iniconfig" @@ -1162,30 +1689,27 @@ six = "*" [[package]] name = "isort" -version = "5.12.0" +version = "5.13.2" description = "A Python utility / library to sort Python imports." optional = false python-versions = ">=3.8.0" files = [ - {file = "isort-5.12.0-py3-none-any.whl", hash = "sha256:f84c2818376e66cf843d497486ea8fed8700b340f308f076c6fb1229dff318b6"}, - {file = "isort-5.12.0.tar.gz", hash = "sha256:8bef7dde241278824a6d83f44a544709b065191b95b6e50894bdc722fcba0504"}, + {file = "isort-5.13.2-py3-none-any.whl", hash = "sha256:8ca5e72a8d85860d5a3fa69b8745237f2939afe12dbf656afbcb47fe72d947a6"}, + {file = "isort-5.13.2.tar.gz", hash = "sha256:48fdfcb9face5d58a4f6dde2e72a1fb8dcaf8ab26f95ab49fab84c2ddefb0109"}, ] [package.extras] -colors = ["colorama (>=0.4.3)"] -pipfile-deprecated-finder = ["pip-shims (>=0.5.2)", "pipreqs", "requirementslib"] -plugins = ["setuptools"] -requirements-deprecated-finder = ["pip-api", "pipreqs"] +colors = ["colorama (>=0.4.6)"] [[package]] name = "jinja2" -version = "3.1.2" +version = "3.1.3" description = "A very fast and expressive template engine." optional = false python-versions = ">=3.7" files = [ - {file = "Jinja2-3.1.2-py3-none-any.whl", hash = "sha256:6088930bfe239f0e6710546ab9c19c9ef35e29792895fed6e6e31a023a182a61"}, - {file = "Jinja2-3.1.2.tar.gz", hash = "sha256:31351a702a408a9e7595a8fc6150fc3f43bb6bf7e319770cbc0db9df9437e852"}, + {file = "Jinja2-3.1.3-py3-none-any.whl", hash = "sha256:7d6d50dd97d52cbc355597bd845fabfbac3f551e1f99619e39a35ce8c370b5fa"}, + {file = "Jinja2-3.1.3.tar.gz", hash = "sha256:ac8bd6544d4bb2c9792bf3a159e80bba8fda7f07e81bc3aed565432d5925ba90"}, ] [package.dependencies] @@ -1205,6 +1729,23 @@ files = [ {file = "jmespath-1.0.1.tar.gz", hash = "sha256:90261b206d6defd58fdd5e85f478bf633a2901798906be2ad389150c5c60edbe"}, ] +[[package]] +name = "joserfc" +version = "0.9.0" +description = "The ultimate Python library for JOSE RFCs, including JWS, JWE, JWK, JWA, JWT" +optional = false +python-versions = ">=3.8" +files = [ + {file = "joserfc-0.9.0-py3-none-any.whl", hash = "sha256:4026bdbe2c196cd40574e916fa1e28874d99649412edaab0e373dec3077153fb"}, + {file = "joserfc-0.9.0.tar.gz", hash = "sha256:eebca7f587b1761ce43a98ffd5327f2b600b9aa5bb0a77b947687f503ad43bc0"}, +] + +[package.dependencies] +cryptography = "*" + +[package.extras] +drafts = ["pycryptodome"] + [[package]] name = "jschema-to-python" version = "1.2.3" @@ -1248,19 +1789,18 @@ jsonpointer = ">=1.9" [[package]] name = "jsonpickle" -version = "3.0.2" +version = "3.0.3" description = "Python library for serializing any arbitrary object graph into JSON" optional = false python-versions = ">=3.7" files = [ - {file = "jsonpickle-3.0.2-py3-none-any.whl", hash = "sha256:4a8442d97ca3f77978afa58068768dba7bff2dbabe79a9647bc3cdafd4ef019f"}, - {file = "jsonpickle-3.0.2.tar.gz", hash = "sha256:e37abba4bfb3ca4a4647d28bb9f4706436f7b46c8a8333b4a718abafa8e46b37"}, + {file = "jsonpickle-3.0.3-py3-none-any.whl", hash = "sha256:e8d6dcc58f6722bea0321cd328fbda81c582461185688a535df02be0f699afb4"}, + {file = "jsonpickle-3.0.3.tar.gz", hash = "sha256:5691f44495327858ab3a95b9c440a79b41e35421be1a6e09a47b6c9b9421fd06"}, ] [package.extras] -docs = ["jaraco.packaging (>=3.2)", "rst.linker (>=1.9)", "sphinx"] -testing = ["ecdsa", "feedparser", "gmpy2", "numpy", "pandas", "pymongo", "pytest (>=3.5,!=3.7.3)", "pytest-black-multipy", "pytest-checkdocs (>=1.2.3)", "pytest-cov", "pytest-flake8 (>=1.1.1)", "scikit-learn", "sqlalchemy"] -testing-libs = ["simplejson", "ujson"] +docs = ["furo", "jaraco.packaging (>=9)", "rst.linker (>=1.9)", "sphinx"] +testing = ["ecdsa", "feedparser", "gmpy2", "numpy", "pandas", "pymongo", "pytest (>=3.5,!=3.7.3)", "pytest-checkdocs (>=1.2.3)", "pytest-cov", "pytest-enabler (>=1.0.1)", "pytest-ruff", "scikit-learn", "simplejson", "sqlalchemy", "ujson"] [[package]] name = "jsonpointer" @@ -1275,13 +1815,13 @@ files = [ [[package]] name = "jsonschema" -version = "4.18.0" +version = "4.21.1" description = "An implementation of JSON Schema validation for Python" optional = false python-versions = ">=3.8" files = [ - {file = "jsonschema-4.18.0-py3-none-any.whl", hash = "sha256:b508dd6142bd03f4c3670534c80af68cd7bbff9ea830b9cf2625d4a3c49ddf60"}, - {file = "jsonschema-4.18.0.tar.gz", hash = "sha256:8caf5b57a990a98e9b39832ef3cb35c176fe331414252b6e1b26fd5866f891a4"}, + {file = "jsonschema-4.21.1-py3-none-any.whl", hash = "sha256:7996507afae316306f9e2290407761157c6f78002dcf7419acb99822143d1c6f"}, + {file = "jsonschema-4.21.1.tar.gz", hash = "sha256:85727c00279f5fa6bedbe6238d2aa6403bedd8b4864ab11207d07df3cc1b2ee5"}, ] [package.dependencies] @@ -1296,34 +1836,34 @@ format-nongpl = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339- [[package]] name = "jsonschema-path" -version = "0.3.1" +version = "0.3.2" description = "JSONSchema Spec with object-oriented paths" optional = false python-versions = ">=3.8.0,<4.0.0" files = [ - {file = "jsonschema_path-0.3.1-py3-none-any.whl", hash = "sha256:06f01b1848a28963f49a17730e11204d252aa6ff5db4ef84ec77e5ac93cfa831"}, - {file = "jsonschema_path-0.3.1.tar.gz", hash = "sha256:07ea584b5c9b41a614b4d011c5575955676f48d0abbfd93d9ea8e933018d716d"}, + {file = "jsonschema_path-0.3.2-py3-none-any.whl", hash = "sha256:271aedfefcd161a0f467bdf23e1d9183691a61eaabf4b761046a914e369336c7"}, + {file = "jsonschema_path-0.3.2.tar.gz", hash = "sha256:4d0dababf341e36e9b91a5fb2a3e3fd300b0150e7fe88df4e55cc8253c5a3989"}, ] [package.dependencies] pathable = ">=0.4.1,<0.5.0" PyYAML = ">=5.1" -referencing = ">=0.28.0,<0.31.0" +referencing = ">=0.28.0,<0.32.0" requests = ">=2.31.0,<3.0.0" [[package]] name = "jsonschema-specifications" -version = "2023.6.1" +version = "2023.12.1" description = "The JSON Schema meta-schemas and vocabularies, exposed as a Registry" optional = false python-versions = ">=3.8" files = [ - {file = "jsonschema_specifications-2023.6.1-py3-none-any.whl", hash = "sha256:3d2b82663aff01815f744bb5c7887e2121a63399b49b104a3c96145474d091d7"}, - {file = "jsonschema_specifications-2023.6.1.tar.gz", hash = "sha256:ca1c4dd059a9e7b34101cf5b3ab7ff1d18b139f35950d598d629837ef66e8f28"}, + {file = "jsonschema_specifications-2023.12.1-py3-none-any.whl", hash = "sha256:87e4fdf3a94858b8a2ba2778d9ba57d8a9cafca7c7489c46ba0d30a8bc6a9c3c"}, + {file = "jsonschema_specifications-2023.12.1.tar.gz", hash = "sha256:48a76787b3e70f5ed53f1160d2b81f586e4ca6d1548c5de7085d1682674764cc"}, ] [package.dependencies] -referencing = ">=0.28.0" +referencing = ">=0.31.0" [[package]] name = "junit-xml" @@ -1367,76 +1907,77 @@ adal = ["adal (>=1.0.2)"] [[package]] name = "lazy-object-proxy" -version = "1.9.0" +version = "1.10.0" description = "A fast and thorough lazy object proxy." optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "lazy-object-proxy-1.9.0.tar.gz", hash = "sha256:659fb5809fa4629b8a1ac5106f669cfc7bef26fbb389dda53b3e010d1ac4ebae"}, - {file = "lazy_object_proxy-1.9.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b40387277b0ed2d0602b8293b94d7257e17d1479e257b4de114ea11a8cb7f2d7"}, - {file = "lazy_object_proxy-1.9.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e8c6cfb338b133fbdbc5cfaa10fe3c6aeea827db80c978dbd13bc9dd8526b7d4"}, - {file = "lazy_object_proxy-1.9.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:721532711daa7db0d8b779b0bb0318fa87af1c10d7fe5e52ef30f8eff254d0cd"}, - {file = "lazy_object_proxy-1.9.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:66a3de4a3ec06cd8af3f61b8e1ec67614fbb7c995d02fa224813cb7afefee701"}, - {file = "lazy_object_proxy-1.9.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:1aa3de4088c89a1b69f8ec0dcc169aa725b0ff017899ac568fe44ddc1396df46"}, - {file = "lazy_object_proxy-1.9.0-cp310-cp310-win32.whl", hash = "sha256:f0705c376533ed2a9e5e97aacdbfe04cecd71e0aa84c7c0595d02ef93b6e4455"}, - {file = "lazy_object_proxy-1.9.0-cp310-cp310-win_amd64.whl", hash = "sha256:ea806fd4c37bf7e7ad82537b0757999264d5f70c45468447bb2b91afdbe73a6e"}, - {file = "lazy_object_proxy-1.9.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:946d27deaff6cf8452ed0dba83ba38839a87f4f7a9732e8f9fd4107b21e6ff07"}, - {file = "lazy_object_proxy-1.9.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:79a31b086e7e68b24b99b23d57723ef7e2c6d81ed21007b6281ebcd1688acb0a"}, - {file = "lazy_object_proxy-1.9.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f699ac1c768270c9e384e4cbd268d6e67aebcfae6cd623b4d7c3bfde5a35db59"}, - {file = "lazy_object_proxy-1.9.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:bfb38f9ffb53b942f2b5954e0f610f1e721ccebe9cce9025a38c8ccf4a5183a4"}, - {file = "lazy_object_proxy-1.9.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:189bbd5d41ae7a498397287c408617fe5c48633e7755287b21d741f7db2706a9"}, - {file = "lazy_object_proxy-1.9.0-cp311-cp311-win32.whl", hash = "sha256:81fc4d08b062b535d95c9ea70dbe8a335c45c04029878e62d744bdced5141586"}, - {file = "lazy_object_proxy-1.9.0-cp311-cp311-win_amd64.whl", hash = "sha256:f2457189d8257dd41ae9b434ba33298aec198e30adf2dcdaaa3a28b9994f6adb"}, - {file = "lazy_object_proxy-1.9.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:d9e25ef10a39e8afe59a5c348a4dbf29b4868ab76269f81ce1674494e2565a6e"}, - {file = "lazy_object_proxy-1.9.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cbf9b082426036e19c6924a9ce90c740a9861e2bdc27a4834fd0a910742ac1e8"}, - {file = "lazy_object_proxy-1.9.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9f5fa4a61ce2438267163891961cfd5e32ec97a2c444e5b842d574251ade27d2"}, - {file = "lazy_object_proxy-1.9.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:8fa02eaab317b1e9e03f69aab1f91e120e7899b392c4fc19807a8278a07a97e8"}, - {file = "lazy_object_proxy-1.9.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:e7c21c95cae3c05c14aafffe2865bbd5e377cfc1348c4f7751d9dc9a48ca4bda"}, - {file = "lazy_object_proxy-1.9.0-cp37-cp37m-win32.whl", hash = "sha256:f12ad7126ae0c98d601a7ee504c1122bcef553d1d5e0c3bfa77b16b3968d2734"}, - {file = "lazy_object_proxy-1.9.0-cp37-cp37m-win_amd64.whl", hash = "sha256:edd20c5a55acb67c7ed471fa2b5fb66cb17f61430b7a6b9c3b4a1e40293b1671"}, - {file = "lazy_object_proxy-1.9.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:2d0daa332786cf3bb49e10dc6a17a52f6a8f9601b4cf5c295a4f85854d61de63"}, - {file = "lazy_object_proxy-1.9.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9cd077f3d04a58e83d04b20e334f678c2b0ff9879b9375ed107d5d07ff160171"}, - {file = "lazy_object_proxy-1.9.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:660c94ea760b3ce47d1855a30984c78327500493d396eac4dfd8bd82041b22be"}, - {file = "lazy_object_proxy-1.9.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:212774e4dfa851e74d393a2370871e174d7ff0ebc980907723bb67d25c8a7c30"}, - {file = "lazy_object_proxy-1.9.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:f0117049dd1d5635bbff65444496c90e0baa48ea405125c088e93d9cf4525b11"}, - {file = "lazy_object_proxy-1.9.0-cp38-cp38-win32.whl", hash = "sha256:0a891e4e41b54fd5b8313b96399f8b0e173bbbfc03c7631f01efbe29bb0bcf82"}, - {file = "lazy_object_proxy-1.9.0-cp38-cp38-win_amd64.whl", hash = "sha256:9990d8e71b9f6488e91ad25f322898c136b008d87bf852ff65391b004da5e17b"}, - {file = "lazy_object_proxy-1.9.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9e7551208b2aded9c1447453ee366f1c4070602b3d932ace044715d89666899b"}, - {file = "lazy_object_proxy-1.9.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5f83ac4d83ef0ab017683d715ed356e30dd48a93746309c8f3517e1287523ef4"}, - {file = "lazy_object_proxy-1.9.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7322c3d6f1766d4ef1e51a465f47955f1e8123caee67dd641e67d539a534d006"}, - {file = "lazy_object_proxy-1.9.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:18b78ec83edbbeb69efdc0e9c1cb41a3b1b1ed11ddd8ded602464c3fc6020494"}, - {file = "lazy_object_proxy-1.9.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:09763491ce220c0299688940f8dc2c5d05fd1f45af1e42e636b2e8b2303e4382"}, - {file = "lazy_object_proxy-1.9.0-cp39-cp39-win32.whl", hash = "sha256:9090d8e53235aa280fc9239a86ae3ea8ac58eff66a705fa6aa2ec4968b95c821"}, - {file = "lazy_object_proxy-1.9.0-cp39-cp39-win_amd64.whl", hash = "sha256:db1c1722726f47e10e0b5fdbf15ac3b8adb58c091d12b3ab713965795036985f"}, + {file = "lazy-object-proxy-1.10.0.tar.gz", hash = "sha256:78247b6d45f43a52ef35c25b5581459e85117225408a4128a3daf8bf9648ac69"}, + {file = "lazy_object_proxy-1.10.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:855e068b0358ab916454464a884779c7ffa312b8925c6f7401e952dcf3b89977"}, + {file = "lazy_object_proxy-1.10.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7ab7004cf2e59f7c2e4345604a3e6ea0d92ac44e1c2375527d56492014e690c3"}, + {file = "lazy_object_proxy-1.10.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dc0d2fc424e54c70c4bc06787e4072c4f3b1aa2f897dfdc34ce1013cf3ceef05"}, + {file = "lazy_object_proxy-1.10.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:e2adb09778797da09d2b5ebdbceebf7dd32e2c96f79da9052b2e87b6ea495895"}, + {file = "lazy_object_proxy-1.10.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b1f711e2c6dcd4edd372cf5dec5c5a30d23bba06ee012093267b3376c079ec83"}, + {file = "lazy_object_proxy-1.10.0-cp310-cp310-win32.whl", hash = "sha256:76a095cfe6045c7d0ca77db9934e8f7b71b14645f0094ffcd842349ada5c5fb9"}, + {file = "lazy_object_proxy-1.10.0-cp310-cp310-win_amd64.whl", hash = "sha256:b4f87d4ed9064b2628da63830986c3d2dca7501e6018347798313fcf028e2fd4"}, + {file = "lazy_object_proxy-1.10.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:fec03caabbc6b59ea4a638bee5fce7117be8e99a4103d9d5ad77f15d6f81020c"}, + {file = "lazy_object_proxy-1.10.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:02c83f957782cbbe8136bee26416686a6ae998c7b6191711a04da776dc9e47d4"}, + {file = "lazy_object_proxy-1.10.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:009e6bb1f1935a62889ddc8541514b6a9e1fcf302667dcb049a0be5c8f613e56"}, + {file = "lazy_object_proxy-1.10.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:75fc59fc450050b1b3c203c35020bc41bd2695ed692a392924c6ce180c6f1dc9"}, + {file = "lazy_object_proxy-1.10.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:782e2c9b2aab1708ffb07d4bf377d12901d7a1d99e5e410d648d892f8967ab1f"}, + {file = "lazy_object_proxy-1.10.0-cp311-cp311-win32.whl", hash = "sha256:edb45bb8278574710e68a6b021599a10ce730d156e5b254941754a9cc0b17d03"}, + {file = "lazy_object_proxy-1.10.0-cp311-cp311-win_amd64.whl", hash = "sha256:e271058822765ad5e3bca7f05f2ace0de58a3f4e62045a8c90a0dfd2f8ad8cc6"}, + {file = "lazy_object_proxy-1.10.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:e98c8af98d5707dcdecc9ab0863c0ea6e88545d42ca7c3feffb6b4d1e370c7ba"}, + {file = "lazy_object_proxy-1.10.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:952c81d415b9b80ea261d2372d2a4a2332a3890c2b83e0535f263ddfe43f0d43"}, + {file = "lazy_object_proxy-1.10.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80b39d3a151309efc8cc48675918891b865bdf742a8616a337cb0090791a0de9"}, + {file = "lazy_object_proxy-1.10.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:e221060b701e2aa2ea991542900dd13907a5c90fa80e199dbf5a03359019e7a3"}, + {file = "lazy_object_proxy-1.10.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:92f09ff65ecff3108e56526f9e2481b8116c0b9e1425325e13245abfd79bdb1b"}, + {file = "lazy_object_proxy-1.10.0-cp312-cp312-win32.whl", hash = "sha256:3ad54b9ddbe20ae9f7c1b29e52f123120772b06dbb18ec6be9101369d63a4074"}, + {file = "lazy_object_proxy-1.10.0-cp312-cp312-win_amd64.whl", hash = "sha256:127a789c75151db6af398b8972178afe6bda7d6f68730c057fbbc2e96b08d282"}, + {file = "lazy_object_proxy-1.10.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9e4ed0518a14dd26092614412936920ad081a424bdcb54cc13349a8e2c6d106a"}, + {file = "lazy_object_proxy-1.10.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5ad9e6ed739285919aa9661a5bbed0aaf410aa60231373c5579c6b4801bd883c"}, + {file = "lazy_object_proxy-1.10.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2fc0a92c02fa1ca1e84fc60fa258458e5bf89d90a1ddaeb8ed9cc3147f417255"}, + {file = "lazy_object_proxy-1.10.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:0aefc7591920bbd360d57ea03c995cebc204b424524a5bd78406f6e1b8b2a5d8"}, + {file = "lazy_object_proxy-1.10.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:5faf03a7d8942bb4476e3b62fd0f4cf94eaf4618e304a19865abf89a35c0bbee"}, + {file = "lazy_object_proxy-1.10.0-cp38-cp38-win32.whl", hash = "sha256:e333e2324307a7b5d86adfa835bb500ee70bfcd1447384a822e96495796b0ca4"}, + {file = "lazy_object_proxy-1.10.0-cp38-cp38-win_amd64.whl", hash = "sha256:cb73507defd385b7705c599a94474b1d5222a508e502553ef94114a143ec6696"}, + {file = "lazy_object_proxy-1.10.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:366c32fe5355ef5fc8a232c5436f4cc66e9d3e8967c01fb2e6302fd6627e3d94"}, + {file = "lazy_object_proxy-1.10.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2297f08f08a2bb0d32a4265e98a006643cd7233fb7983032bd61ac7a02956b3b"}, + {file = "lazy_object_proxy-1.10.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:18dd842b49456aaa9a7cf535b04ca4571a302ff72ed8740d06b5adcd41fe0757"}, + {file = "lazy_object_proxy-1.10.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:217138197c170a2a74ca0e05bddcd5f1796c735c37d0eee33e43259b192aa424"}, + {file = "lazy_object_proxy-1.10.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9a3a87cf1e133e5b1994144c12ca4aa3d9698517fe1e2ca82977781b16955658"}, + {file = "lazy_object_proxy-1.10.0-cp39-cp39-win32.whl", hash = "sha256:30b339b2a743c5288405aa79a69e706a06e02958eab31859f7f3c04980853b70"}, + {file = "lazy_object_proxy-1.10.0-cp39-cp39-win_amd64.whl", hash = "sha256:a899b10e17743683b293a729d3a11f2f399e8a90c73b089e29f5d0fe3509f0dd"}, + {file = "lazy_object_proxy-1.10.0-pp310.pp311.pp312.pp38.pp39-none-any.whl", hash = "sha256:80fa48bd89c8f2f456fc0765c11c23bf5af827febacd2f523ca5bc1893fcc09d"}, ] [[package]] name = "markdown" -version = "3.4.4" +version = "3.5.2" description = "Python implementation of John Gruber's Markdown." -optional = true -python-versions = ">=3.7" +optional = false +python-versions = ">=3.8" files = [ - {file = "Markdown-3.4.4-py3-none-any.whl", hash = "sha256:a4c1b65c0957b4bd9e7d86ddc7b3c9868fb9670660f6f99f6d1bca8954d5a941"}, - {file = "Markdown-3.4.4.tar.gz", hash = "sha256:225c6123522495d4119a90b3a3ba31a1e87a70369e03f14799ea9c0d7183a3d6"}, + {file = "Markdown-3.5.2-py3-none-any.whl", hash = "sha256:d43323865d89fc0cb9b20c75fc8ad313af307cc087e84b657d9eec768eddeadd"}, + {file = "Markdown-3.5.2.tar.gz", hash = "sha256:e1ac7b3dc550ee80e602e71c1d168002f062e49f1b11e26a36264dafd4df2ef8"}, ] [package.dependencies] importlib-metadata = {version = ">=4.4", markers = "python_version < \"3.10\""} [package.extras] -docs = ["mdx-gh-links (>=0.2)", "mkdocs (>=1.0)", "mkdocs-nature (>=0.4)"] +docs = ["mdx-gh-links (>=0.2)", "mkdocs (>=1.5)", "mkdocs-gen-files", "mkdocs-literate-nav", "mkdocs-nature (>=0.6)", "mkdocs-section-index", "mkdocstrings[python]"] testing = ["coverage", "pyyaml"] [[package]] name = "markdown-it-py" -version = "2.2.0" +version = "3.0.0" description = "Python port of markdown-it. Markdown parsing, done right!" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "markdown-it-py-2.2.0.tar.gz", hash = "sha256:7c9a5e412688bc771c67432cbfebcdd686c93ce6484913dccf06cb5a0bea35a1"}, - {file = "markdown_it_py-2.2.0-py3-none-any.whl", hash = "sha256:5a35f8d1870171d9acc47b99612dc146129b631baf04970128b568f190d0cc30"}, + {file = "markdown-it-py-3.0.0.tar.gz", hash = "sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb"}, + {file = "markdown_it_py-3.0.0-py3-none-any.whl", hash = "sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1"}, ] [package.dependencies] @@ -1449,68 +1990,97 @@ compare = ["commonmark (>=0.9,<1.0)", "markdown (>=3.4,<4.0)", "mistletoe (>=1.0 linkify = ["linkify-it-py (>=1,<3)"] plugins = ["mdit-py-plugins"] profiling = ["gprof2dot"] -rtd = ["attrs", "myst-parser", "pyyaml", "sphinx", "sphinx-copybutton", "sphinx-design", "sphinx_book_theme"] +rtd = ["jupyter_sphinx", "mdit-py-plugins", "myst-parser", "pyyaml", "sphinx", "sphinx-copybutton", "sphinx-design", "sphinx_book_theme"] testing = ["coverage", "pytest", "pytest-cov", "pytest-regressions"] [[package]] name = "markupsafe" -version = "2.1.2" +version = "2.1.5" description = "Safely add untrusted strings to HTML/XML markup." optional = false python-versions = ">=3.7" files = [ - {file = "MarkupSafe-2.1.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:665a36ae6f8f20a4676b53224e33d456a6f5a72657d9c83c2aa00765072f31f7"}, - {file = "MarkupSafe-2.1.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:340bea174e9761308703ae988e982005aedf427de816d1afe98147668cc03036"}, - {file = "MarkupSafe-2.1.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22152d00bf4a9c7c83960521fc558f55a1adbc0631fbb00a9471e097b19d72e1"}, - {file = "MarkupSafe-2.1.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:28057e985dace2f478e042eaa15606c7efccb700797660629da387eb289b9323"}, - {file = "MarkupSafe-2.1.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ca244fa73f50a800cf8c3ebf7fd93149ec37f5cb9596aa8873ae2c1d23498601"}, - {file = "MarkupSafe-2.1.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:d9d971ec1e79906046aa3ca266de79eac42f1dbf3612a05dc9368125952bd1a1"}, - {file = "MarkupSafe-2.1.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:7e007132af78ea9df29495dbf7b5824cb71648d7133cf7848a2a5dd00d36f9ff"}, - {file = "MarkupSafe-2.1.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:7313ce6a199651c4ed9d7e4cfb4aa56fe923b1adf9af3b420ee14e6d9a73df65"}, - {file = "MarkupSafe-2.1.2-cp310-cp310-win32.whl", hash = "sha256:c4a549890a45f57f1ebf99c067a4ad0cb423a05544accaf2b065246827ed9603"}, - {file = "MarkupSafe-2.1.2-cp310-cp310-win_amd64.whl", hash = "sha256:835fb5e38fd89328e9c81067fd642b3593c33e1e17e2fdbf77f5676abb14a156"}, - {file = "MarkupSafe-2.1.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:2ec4f2d48ae59bbb9d1f9d7efb9236ab81429a764dedca114f5fdabbc3788013"}, - {file = "MarkupSafe-2.1.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:608e7073dfa9e38a85d38474c082d4281f4ce276ac0010224eaba11e929dd53a"}, - {file = "MarkupSafe-2.1.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:65608c35bfb8a76763f37036547f7adfd09270fbdbf96608be2bead319728fcd"}, - {file = "MarkupSafe-2.1.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f2bfb563d0211ce16b63c7cb9395d2c682a23187f54c3d79bfec33e6705473c6"}, - {file = "MarkupSafe-2.1.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:da25303d91526aac3672ee6d49a2f3db2d9502a4a60b55519feb1a4c7714e07d"}, - {file = "MarkupSafe-2.1.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:9cad97ab29dfc3f0249b483412c85c8ef4766d96cdf9dcf5a1e3caa3f3661cf1"}, - {file = "MarkupSafe-2.1.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:085fd3201e7b12809f9e6e9bc1e5c96a368c8523fad5afb02afe3c051ae4afcc"}, - {file = "MarkupSafe-2.1.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:1bea30e9bf331f3fef67e0a3877b2288593c98a21ccb2cf29b74c581a4eb3af0"}, - {file = "MarkupSafe-2.1.2-cp311-cp311-win32.whl", hash = "sha256:7df70907e00c970c60b9ef2938d894a9381f38e6b9db73c5be35e59d92e06625"}, - {file = "MarkupSafe-2.1.2-cp311-cp311-win_amd64.whl", hash = "sha256:e55e40ff0cc8cc5c07996915ad367fa47da6b3fc091fdadca7f5403239c5fec3"}, - {file = "MarkupSafe-2.1.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:a6e40afa7f45939ca356f348c8e23048e02cb109ced1eb8420961b2f40fb373a"}, - {file = "MarkupSafe-2.1.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cf877ab4ed6e302ec1d04952ca358b381a882fbd9d1b07cccbfd61783561f98a"}, - {file = "MarkupSafe-2.1.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:63ba06c9941e46fa389d389644e2d8225e0e3e5ebcc4ff1ea8506dce646f8c8a"}, - {file = "MarkupSafe-2.1.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f1cd098434e83e656abf198f103a8207a8187c0fc110306691a2e94a78d0abb2"}, - {file = "MarkupSafe-2.1.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:55f44b440d491028addb3b88f72207d71eeebfb7b5dbf0643f7c023ae1fba619"}, - {file = "MarkupSafe-2.1.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:a6f2fcca746e8d5910e18782f976489939d54a91f9411c32051b4aab2bd7c513"}, - {file = "MarkupSafe-2.1.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:0b462104ba25f1ac006fdab8b6a01ebbfbce9ed37fd37fd4acd70c67c973e460"}, - {file = "MarkupSafe-2.1.2-cp37-cp37m-win32.whl", hash = "sha256:7668b52e102d0ed87cb082380a7e2e1e78737ddecdde129acadb0eccc5423859"}, - {file = "MarkupSafe-2.1.2-cp37-cp37m-win_amd64.whl", hash = "sha256:6d6607f98fcf17e534162f0709aaad3ab7a96032723d8ac8750ffe17ae5a0666"}, - {file = "MarkupSafe-2.1.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:a806db027852538d2ad7555b203300173dd1b77ba116de92da9afbc3a3be3eed"}, - {file = "MarkupSafe-2.1.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:a4abaec6ca3ad8660690236d11bfe28dfd707778e2442b45addd2f086d6ef094"}, - {file = "MarkupSafe-2.1.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f03a532d7dee1bed20bc4884194a16160a2de9ffc6354b3878ec9682bb623c54"}, - {file = "MarkupSafe-2.1.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4cf06cdc1dda95223e9d2d3c58d3b178aa5dacb35ee7e3bbac10e4e1faacb419"}, - {file = "MarkupSafe-2.1.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:22731d79ed2eb25059ae3df1dfc9cb1546691cc41f4e3130fe6bfbc3ecbbecfa"}, - {file = "MarkupSafe-2.1.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:f8ffb705ffcf5ddd0e80b65ddf7bed7ee4f5a441ea7d3419e861a12eaf41af58"}, - {file = "MarkupSafe-2.1.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:8db032bf0ce9022a8e41a22598eefc802314e81b879ae093f36ce9ddf39ab1ba"}, - {file = "MarkupSafe-2.1.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:2298c859cfc5463f1b64bd55cb3e602528db6fa0f3cfd568d3605c50678f8f03"}, - {file = "MarkupSafe-2.1.2-cp38-cp38-win32.whl", hash = "sha256:50c42830a633fa0cf9e7d27664637532791bfc31c731a87b202d2d8ac40c3ea2"}, - {file = "MarkupSafe-2.1.2-cp38-cp38-win_amd64.whl", hash = "sha256:bb06feb762bade6bf3c8b844462274db0c76acc95c52abe8dbed28ae3d44a147"}, - {file = "MarkupSafe-2.1.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:99625a92da8229df6d44335e6fcc558a5037dd0a760e11d84be2260e6f37002f"}, - {file = "MarkupSafe-2.1.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:8bca7e26c1dd751236cfb0c6c72d4ad61d986e9a41bbf76cb445f69488b2a2bd"}, - {file = "MarkupSafe-2.1.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40627dcf047dadb22cd25ea7ecfe9cbf3bbbad0482ee5920b582f3809c97654f"}, - {file = "MarkupSafe-2.1.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:40dfd3fefbef579ee058f139733ac336312663c6706d1163b82b3003fb1925c4"}, - {file = "MarkupSafe-2.1.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:090376d812fb6ac5f171e5938e82e7f2d7adc2b629101cec0db8b267815c85e2"}, - {file = "MarkupSafe-2.1.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:2e7821bffe00aa6bd07a23913b7f4e01328c3d5cc0b40b36c0bd81d362faeb65"}, - {file = "MarkupSafe-2.1.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:c0a33bc9f02c2b17c3ea382f91b4db0e6cde90b63b296422a939886a7a80de1c"}, - {file = "MarkupSafe-2.1.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:b8526c6d437855442cdd3d87eede9c425c4445ea011ca38d937db299382e6fa3"}, - {file = "MarkupSafe-2.1.2-cp39-cp39-win32.whl", hash = "sha256:137678c63c977754abe9086a3ec011e8fd985ab90631145dfb9294ad09c102a7"}, - {file = "MarkupSafe-2.1.2-cp39-cp39-win_amd64.whl", hash = "sha256:0576fe974b40a400449768941d5d0858cc624e3249dfd1e0c33674e5c7ca7aed"}, - {file = "MarkupSafe-2.1.2.tar.gz", hash = "sha256:abcabc8c2b26036d62d4c746381a6f7cf60aafcc653198ad678306986b09450d"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a17a92de5231666cfbe003f0e4b9b3a7ae3afb1ec2845aadc2bacc93ff85febc"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:72b6be590cc35924b02c78ef34b467da4ba07e4e0f0454a2c5907f473fc50ce5"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e61659ba32cf2cf1481e575d0462554625196a1f2fc06a1c777d3f48e8865d46"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2174c595a0d73a3080ca3257b40096db99799265e1c27cc5a610743acd86d62f"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ae2ad8ae6ebee9d2d94b17fb62763125f3f374c25618198f40cbb8b525411900"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:075202fa5b72c86ad32dc7d0b56024ebdbcf2048c0ba09f1cde31bfdd57bcfff"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:598e3276b64aff0e7b3451b72e94fa3c238d452e7ddcd893c3ab324717456bad"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fce659a462a1be54d2ffcacea5e3ba2d74daa74f30f5f143fe0c58636e355fdd"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-win32.whl", hash = "sha256:d9fad5155d72433c921b782e58892377c44bd6252b5af2f67f16b194987338a4"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-win_amd64.whl", hash = "sha256:bf50cd79a75d181c9181df03572cdce0fbb75cc353bc350712073108cba98de5"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:629ddd2ca402ae6dbedfceeba9c46d5f7b2a61d9749597d4307f943ef198fc1f"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5b7b716f97b52c5a14bffdf688f971b2d5ef4029127f1ad7a513973cfd818df2"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6ec585f69cec0aa07d945b20805be741395e28ac1627333b1c5b0105962ffced"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b91c037585eba9095565a3556f611e3cbfaa42ca1e865f7b8015fe5c7336d5a5"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7502934a33b54030eaf1194c21c692a534196063db72176b0c4028e140f8f32c"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0e397ac966fdf721b2c528cf028494e86172b4feba51d65f81ffd65c63798f3f"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:c061bb86a71b42465156a3ee7bd58c8c2ceacdbeb95d05a99893e08b8467359a"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3a57fdd7ce31c7ff06cdfbf31dafa96cc533c21e443d57f5b1ecc6cdc668ec7f"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-win32.whl", hash = "sha256:397081c1a0bfb5124355710fe79478cdbeb39626492b15d399526ae53422b906"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-win_amd64.whl", hash = "sha256:2b7c57a4dfc4f16f7142221afe5ba4e093e09e728ca65c51f5620c9aaeb9a617"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:8dec4936e9c3100156f8a2dc89c4b88d5c435175ff03413b443469c7c8c5f4d1"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:3c6b973f22eb18a789b1460b4b91bf04ae3f0c4234a0a6aa6b0a92f6f7b951d4"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ac07bad82163452a6884fe8fa0963fb98c2346ba78d779ec06bd7a6262132aee"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f5dfb42c4604dddc8e4305050aa6deb084540643ed5804d7455b5df8fe16f5e5"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ea3d8a3d18833cf4304cd2fc9cbb1efe188ca9b5efef2bdac7adc20594a0e46b"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:d050b3361367a06d752db6ead6e7edeb0009be66bc3bae0ee9d97fb326badc2a"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:bec0a414d016ac1a18862a519e54b2fd0fc8bbfd6890376898a6c0891dd82e9f"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:58c98fee265677f63a4385256a6d7683ab1832f3ddd1e66fe948d5880c21a169"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-win32.whl", hash = "sha256:8590b4ae07a35970728874632fed7bd57b26b0102df2d2b233b6d9d82f6c62ad"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-win_amd64.whl", hash = "sha256:823b65d8706e32ad2df51ed89496147a42a2a6e01c13cfb6ffb8b1e92bc910bb"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c8b29db45f8fe46ad280a7294f5c3ec36dbac9491f2d1c17345be8e69cc5928f"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ec6a563cff360b50eed26f13adc43e61bc0c04d94b8be985e6fb24b81f6dcfdf"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a549b9c31bec33820e885335b451286e2969a2d9e24879f83fe904a5ce59d70a"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4f11aa001c540f62c6166c7726f71f7573b52c68c31f014c25cc7901deea0b52"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:7b2e5a267c855eea6b4283940daa6e88a285f5f2a67f2220203786dfa59b37e9"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:2d2d793e36e230fd32babe143b04cec8a8b3eb8a3122d2aceb4a371e6b09b8df"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:ce409136744f6521e39fd8e2a24c53fa18ad67aa5bc7c2cf83645cce5b5c4e50"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-win32.whl", hash = "sha256:4096e9de5c6fdf43fb4f04c26fb114f61ef0bf2e5604b6ee3019d51b69e8c371"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-win_amd64.whl", hash = "sha256:4275d846e41ecefa46e2015117a9f491e57a71ddd59bbead77e904dc02b1bed2"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:656f7526c69fac7f600bd1f400991cc282b417d17539a1b228617081106feb4a"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:97cafb1f3cbcd3fd2b6fbfb99ae11cdb14deea0736fc2b0952ee177f2b813a46"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f3fbcb7ef1f16e48246f704ab79d79da8a46891e2da03f8783a5b6fa41a9532"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fa9db3f79de01457b03d4f01b34cf91bc0048eb2c3846ff26f66687c2f6d16ab"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ffee1f21e5ef0d712f9033568f8344d5da8cc2869dbd08d87c84656e6a2d2f68"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:5dedb4db619ba5a2787a94d877bc8ffc0566f92a01c0ef214865e54ecc9ee5e0"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:30b600cf0a7ac9234b2638fbc0fb6158ba5bdcdf46aeb631ead21248b9affbc4"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:8dd717634f5a044f860435c1d8c16a270ddf0ef8588d4887037c5028b859b0c3"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-win32.whl", hash = "sha256:daa4ee5a243f0f20d528d939d06670a298dd39b1ad5f8a72a4275124a7819eff"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-win_amd64.whl", hash = "sha256:619bc166c4f2de5caa5a633b8b7326fbe98e0ccbfacabd87268a2b15ff73a029"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:7a68b554d356a91cce1236aa7682dc01df0edba8d043fd1ce607c49dd3c1edcf"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:db0b55e0f3cc0be60c1f19efdde9a637c32740486004f20d1cff53c3c0ece4d2"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e53af139f8579a6d5f7b76549125f0d94d7e630761a2111bc431fd820e163b8"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:17b950fccb810b3293638215058e432159d2b71005c74371d784862b7e4683f3"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4c31f53cdae6ecfa91a77820e8b151dba54ab528ba65dfd235c80b086d68a465"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:bff1b4290a66b490a2f4719358c0cdcd9bafb6b8f061e45c7a2460866bf50c2e"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:bc1667f8b83f48511b94671e0e441401371dfd0f0a795c7daa4a3cd1dde55bea"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5049256f536511ee3f7e1b3f87d1d1209d327e818e6ae1365e8653d7e3abb6a6"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-win32.whl", hash = "sha256:00e046b6dd71aa03a41079792f8473dc494d564611a8f89bbbd7cb93295ebdcf"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-win_amd64.whl", hash = "sha256:fa173ec60341d6bb97a89f5ea19c85c5643c1e7dedebc22f5181eb73573142c5"}, + {file = "MarkupSafe-2.1.5.tar.gz", hash = "sha256:d283d37a890ba4c1ae73ffadf8046435c76e7bc2247bbb63c00bd1a709c6544b"}, +] + +[[package]] +name = "marshmallow" +version = "3.21.0" +description = "A lightweight library for converting complex datatypes to and from native Python datatypes." +optional = false +python-versions = ">=3.8" +files = [ + {file = "marshmallow-3.21.0-py3-none-any.whl", hash = "sha256:e7997f83571c7fd476042c2c188e4ee8a78900ca5e74bd9c8097afa56624e9bd"}, + {file = "marshmallow-3.21.0.tar.gz", hash = "sha256:20f53be28c6e374a711a16165fb22a8dc6003e3f7cda1285e3ca777b9193885b"}, ] +[package.dependencies] +packaging = ">=17.0" + +[package.extras] +dev = ["marshmallow[tests]", "pre-commit (>=3.5,<4.0)", "tox"] +docs = ["alabaster (==0.7.16)", "autodocsumm (==0.2.12)", "sphinx (==7.2.6)", "sphinx-issues (==4.0.0)", "sphinx-version-warning (==1.1.2)"] +tests = ["pytest", "pytz", "simplejson"] + [[package]] name = "mccabe" version = "0.7.0" @@ -1537,18 +2107,99 @@ files = [ name = "mergedeep" version = "1.3.4" description = "A deep merge function for 🐍." -optional = true +optional = false python-versions = ">=3.6" files = [ {file = "mergedeep-1.3.4-py3-none-any.whl", hash = "sha256:70775750742b25c0d8f36c55aed03d24c3384d17c951b3175d898bd778ef0307"}, {file = "mergedeep-1.3.4.tar.gz", hash = "sha256:0096d52e9dad9939c3d975a774666af186eda617e6ca84df4c94dec30004f2a8"}, ] +[[package]] +name = "microsoft-kiota-abstractions" +version = "1.2.0" +description = "Core abstractions for kiota generated libraries in Python" +optional = false +python-versions = "*" +files = [ + {file = "microsoft_kiota_abstractions-1.2.0-py2.py3-none-any.whl", hash = "sha256:09061cec7e9c9da8bc3eced4488118c8b4a7ebd26aa8de2b46c43f07fee5610a"}, + {file = "microsoft_kiota_abstractions-1.2.0.tar.gz", hash = "sha256:2b38241402995952c5598923391dcbb84bd97e48c0d76f93e2817c69ba19e3f6"}, +] + +[package.dependencies] +opentelemetry-api = ">=1.19.0" +opentelemetry-sdk = ">=1.19.0" +std-uritemplate = ">=0.0.38" + +[[package]] +name = "microsoft-kiota-authentication-azure" +version = "1.0.0" +description = "Authentication provider for Kiota using Azure Identity" +optional = false +python-versions = "*" +files = [ + {file = "microsoft_kiota_authentication_azure-1.0.0-py2.py3-none-any.whl", hash = "sha256:289fe002951ae661415a6d3fa7c422c096b739165acb32d786316988120a1b27"}, + {file = "microsoft_kiota_authentication_azure-1.0.0.tar.gz", hash = "sha256:752304f8d94b884cfec12583dd763ec0478805c7f80b29344e78c6d55a97bd01"}, +] + +[package.dependencies] +aiohttp = ">=3.8.0" +azure-core = ">=1.21.1" +microsoft-kiota-abstractions = ">=1.0.0,<2.0.0" +opentelemetry-api = ">=1.20.0" +opentelemetry-sdk = ">=1.20.0" + +[[package]] +name = "microsoft-kiota-http" +version = "1.3.0" +description = "Kiota http request adapter implementation for httpx library" +optional = false +python-versions = "*" +files = [ + {file = "microsoft_kiota_http-1.3.0-py2.py3-none-any.whl", hash = "sha256:4be1fd892dcef31ecd8d616969e970437a0b6b98c3223980d6c4aa55582729aa"}, + {file = "microsoft_kiota_http-1.3.0.tar.gz", hash = "sha256:ae97bbfe4544c94e43591b44c8a60791689f31f7d16a9154df7738e829a28481"}, +] + +[package.dependencies] +httpx = {version = ">=0.23.0", extras = ["http2"]} +microsoft-kiota_abstractions = ">=1.0.0,<2.0.0" +opentelemetry-api = ">=1.20.0" +opentelemetry-sdk = ">=1.20.0" + +[[package]] +name = "microsoft-kiota-serialization-json" +version = "1.0.1" +description = "Implementation of Kiota Serialization interfaces for JSON" +optional = false +python-versions = "*" +files = [ + {file = "microsoft_kiota_serialization_json-1.0.1-py2.py3-none-any.whl", hash = "sha256:1b54602c6ec8185499213f6da24dcc90add2ffa5e328a61bdb50ddf8e1ba483b"}, + {file = "microsoft_kiota_serialization_json-1.0.1.tar.gz", hash = "sha256:1d93ecee5d31941e3bdfa3c0b319cfe629d4f59a95fb0fbe0b054f7dbdc0ff60"}, +] + +[package.dependencies] +microsoft-kiota_abstractions = ">=1.0.0,<2.0.0" +pendulum = ">=3.0.0b1" + +[[package]] +name = "microsoft-kiota-serialization-text" +version = "1.0.0" +description = "Implementation of Kiota Serialization interfaces for text/plain" +optional = false +python-versions = "*" +files = [ + {file = "microsoft_kiota_serialization_text-1.0.0-py2.py3-none-any.whl", hash = "sha256:1d3789e012b603e059a36cc675d1fd08cb81e0dde423d970c0af2eabce9c0d43"}, + {file = "microsoft_kiota_serialization_text-1.0.0.tar.gz", hash = "sha256:c3dd3f409b1c4f4963bd1e41d51b65f7e53e852130bb441d79b77dad88ee76ed"}, +] + +[package.dependencies] +microsoft-kiota_abstractions = ">=1.0.0,<2.0.0" +python-dateutil = ">=2.8.2" + [[package]] name = "mkdocs" version = "1.5.3" description = "Project documentation with Markdown." -optional = true +optional = false python-versions = ">=3.7" files = [ {file = "mkdocs-1.5.3-py3-none-any.whl", hash = "sha256:3b3a78e736b31158d64dbb2f8ba29bd46a379d0c6e324c2246c3bc3d2189cfc1"}, @@ -1575,15 +2226,32 @@ watchdog = ">=2.0" i18n = ["babel (>=2.9.0)"] min-versions = ["babel (==2.9.0)", "click (==7.0)", "colorama (==0.4)", "ghp-import (==1.0)", "importlib-metadata (==4.3)", "jinja2 (==2.11.1)", "markdown (==3.2.1)", "markupsafe (==2.0.1)", "mergedeep (==1.3.4)", "packaging (==20.5)", "pathspec (==0.11.1)", "platformdirs (==2.2.0)", "pyyaml (==5.1)", "pyyaml-env-tag (==0.1)", "typing-extensions (==3.10)", "watchdog (==2.0)"] +[[package]] +name = "mkdocs-git-revision-date-localized-plugin" +version = "1.2.4" +description = "Mkdocs plugin that enables displaying the localized date of the last git modification of a markdown file." +optional = false +python-versions = ">=3.8" +files = [ + {file = "mkdocs-git-revision-date-localized-plugin-1.2.4.tar.gz", hash = "sha256:08fd0c6f33c8da9e00daf40f7865943113b3879a1c621b2bbf0fa794ffe997d3"}, + {file = "mkdocs_git_revision_date_localized_plugin-1.2.4-py3-none-any.whl", hash = "sha256:1f94eb510862ef94e982a2910404fa17a1657ecf29f45a07b0f438c00767fc85"}, +] + +[package.dependencies] +babel = ">=2.7.0" +GitPython = "*" +mkdocs = ">=1.0" +pytz = "*" + [[package]] name = "mkdocs-material" -version = "9.4.10" +version = "9.5.11" description = "Documentation that simply works" -optional = true +optional = false python-versions = ">=3.8" files = [ - {file = "mkdocs_material-9.4.10-py3-none-any.whl", hash = "sha256:207c4ebc07faebb220437d2c626edb0c9760c82ccfc484500bd3eb30dfce988c"}, - {file = "mkdocs_material-9.4.10.tar.gz", hash = "sha256:421adedaeaa461dcaf55b8d406673934ade3d4f05ed9819e4cc7b4ee1d646a62"}, + {file = "mkdocs_material-9.5.11-py3-none-any.whl", hash = "sha256:788ee0f3e036dca2dc20298d65e480297d348a44c9d7b2ee05c5262983e66072"}, + {file = "mkdocs_material-9.5.11.tar.gz", hash = "sha256:7af7f8af0dea16175558f3fb9245d26c83a17199baa5f157755e63d7437bf971"}, ] [package.dependencies] @@ -1591,7 +2259,7 @@ babel = ">=2.10,<3.0" colorama = ">=0.4,<1.0" jinja2 = ">=3.0,<4.0" markdown = ">=3.2,<4.0" -mkdocs = ">=1.5.3,<2.0" +mkdocs = ">=1.5.3,<1.6.0" mkdocs-material-extensions = ">=1.3,<2.0" paginate = ">=0.5,<1.0" pygments = ">=2.16,<3.0" @@ -1600,19 +2268,19 @@ regex = ">=2022.4" requests = ">=2.26,<3.0" [package.extras] -git = ["mkdocs-git-committers-plugin-2 (>=1.1,<2.0)", "mkdocs-git-revision-date-localized-plugin (>=1.2,<2.0)"] -imaging = ["cairosvg (>=2.6,<3.0)", "pillow (>=9.4,<10.0)"] +git = ["mkdocs-git-committers-plugin-2 (>=1.1,<2.0)", "mkdocs-git-revision-date-localized-plugin (>=1.2.4,<2.0)"] +imaging = ["cairosvg (>=2.6,<3.0)", "pillow (>=10.2,<11.0)"] recommended = ["mkdocs-minify-plugin (>=0.7,<1.0)", "mkdocs-redirects (>=1.2,<2.0)", "mkdocs-rss-plugin (>=1.6,<2.0)"] [[package]] name = "mkdocs-material-extensions" -version = "1.3" +version = "1.3.1" description = "Extension pack for Python Markdown and MkDocs Material." -optional = true +optional = false python-versions = ">=3.8" files = [ - {file = "mkdocs_material_extensions-1.3-py3-none-any.whl", hash = "sha256:0297cc48ba68a9fdd1ef3780a3b41b534b0d0df1d1181a44676fda5f464eeadc"}, - {file = "mkdocs_material_extensions-1.3.tar.gz", hash = "sha256:f0446091503acb110a7cab9349cbc90eeac51b58d1caa92a704a81ca1e24ddbd"}, + {file = "mkdocs_material_extensions-1.3.1-py3-none-any.whl", hash = "sha256:adff8b62700b25cb77b53358dad940f3ef973dd6db797907c49e3c2ef3ab4e31"}, + {file = "mkdocs_material_extensions-1.3.1.tar.gz", hash = "sha256:10c9511cea88f568257f960358a467d12b970e1f7b2c0e5fb2bb48cab1928443"}, ] [[package]] @@ -1633,64 +2301,56 @@ test = ["pytest", "pytest-cov"] [[package]] name = "moto" -version = "4.2.9" +version = "5.0.2" description = "" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "moto-4.2.9-py2.py3-none-any.whl", hash = "sha256:c85289d13d15d5274d0a643381af1f1b03d7ee88f0943c9d2d6c28e6177a298a"}, - {file = "moto-4.2.9.tar.gz", hash = "sha256:24de81eeaa450a20b57c5cdf9a757ea5216bddc7db798e335d2de1f2376bf324"}, + {file = "moto-5.0.2-py2.py3-none-any.whl", hash = "sha256:71bb832a18b64f10fc4cec117b9b0e2305e5831d9a17eb74f6b9819ed7613843"}, + {file = "moto-5.0.2.tar.gz", hash = "sha256:7e27395e5c63ff9554ae14b5baa41bfe6d6b1be0e59eb02977c6ce28411246de"}, ] [package.dependencies] aws-xray-sdk = {version = ">=0.93,<0.96 || >0.96", optional = true, markers = "extra == \"all\""} boto3 = ">=1.9.201" -botocore = ">=1.12.201" +botocore = ">=1.14.0" cfn-lint = {version = ">=0.40.0", optional = true, markers = "extra == \"all\""} cryptography = ">=3.3.1" docker = {version = ">=3.0.0", optional = true, markers = "extra == \"all\""} -ecdsa = {version = "!=0.15", optional = true, markers = "extra == \"all\""} graphql-core = {version = "*", optional = true, markers = "extra == \"all\""} Jinja2 = ">=2.10.1" +joserfc = {version = ">=0.9.0", optional = true, markers = "extra == \"all\""} jsondiff = {version = ">=1.1.2", optional = true, markers = "extra == \"all\""} multipart = {version = "*", optional = true, markers = "extra == \"all\""} openapi-spec-validator = {version = ">=0.5.0", optional = true, markers = "extra == \"all\""} -py-partiql-parser = {version = "0.4.2", optional = true, markers = "extra == \"all\""} +py-partiql-parser = {version = "0.5.1", optional = true, markers = "extra == \"all\""} pyparsing = {version = ">=3.0.7", optional = true, markers = "extra == \"all\""} python-dateutil = ">=2.1,<3.0.0" -python-jose = {version = ">=3.1.0,<4.0.0", extras = ["cryptography"], optional = true, markers = "extra == \"all\""} PyYAML = {version = ">=5.1", optional = true, markers = "extra == \"all\""} requests = ">=2.5" -responses = ">=0.13.0" +responses = ">=0.15.0" setuptools = {version = "*", optional = true, markers = "extra == \"all\""} -sshpubkeys = {version = ">=3.1.0", optional = true, markers = "extra == \"all\""} werkzeug = ">=0.5,<2.2.0 || >2.2.0,<2.2.1 || >2.2.1" xmltodict = "*" [package.extras] -all = ["PyYAML (>=5.1)", "aws-xray-sdk (>=0.93,!=0.96)", "cfn-lint (>=0.40.0)", "docker (>=3.0.0)", "ecdsa (!=0.15)", "graphql-core", "jsondiff (>=1.1.2)", "multipart", "openapi-spec-validator (>=0.5.0)", "py-partiql-parser (==0.4.2)", "pyparsing (>=3.0.7)", "python-jose[cryptography] (>=3.1.0,<4.0.0)", "setuptools", "sshpubkeys (>=3.1.0)"] -apigateway = ["PyYAML (>=5.1)", "ecdsa (!=0.15)", "openapi-spec-validator (>=0.5.0)", "python-jose[cryptography] (>=3.1.0,<4.0.0)"] -apigatewayv2 = ["PyYAML (>=5.1)"] +all = ["PyYAML (>=5.1)", "aws-xray-sdk (>=0.93,!=0.96)", "cfn-lint (>=0.40.0)", "docker (>=3.0.0)", "graphql-core", "joserfc (>=0.9.0)", "jsondiff (>=1.1.2)", "multipart", "openapi-spec-validator (>=0.5.0)", "py-partiql-parser (==0.5.1)", "pyparsing (>=3.0.7)", "setuptools"] +apigateway = ["PyYAML (>=5.1)", "joserfc (>=0.9.0)", "openapi-spec-validator (>=0.5.0)"] +apigatewayv2 = ["PyYAML (>=5.1)", "openapi-spec-validator (>=0.5.0)"] appsync = ["graphql-core"] awslambda = ["docker (>=3.0.0)"] batch = ["docker (>=3.0.0)"] -cloudformation = ["PyYAML (>=5.1)", "aws-xray-sdk (>=0.93,!=0.96)", "cfn-lint (>=0.40.0)", "docker (>=3.0.0)", "ecdsa (!=0.15)", "graphql-core", "jsondiff (>=1.1.2)", "openapi-spec-validator (>=0.5.0)", "py-partiql-parser (==0.4.2)", "pyparsing (>=3.0.7)", "python-jose[cryptography] (>=3.1.0,<4.0.0)", "setuptools", "sshpubkeys (>=3.1.0)"] -cognitoidp = ["ecdsa (!=0.15)", "python-jose[cryptography] (>=3.1.0,<4.0.0)"] -ds = ["sshpubkeys (>=3.1.0)"] -dynamodb = ["docker (>=3.0.0)", "py-partiql-parser (==0.4.2)"] -dynamodbstreams = ["docker (>=3.0.0)", "py-partiql-parser (==0.4.2)"] -ebs = ["sshpubkeys (>=3.1.0)"] -ec2 = ["sshpubkeys (>=3.1.0)"] -efs = ["sshpubkeys (>=3.1.0)"] -eks = ["sshpubkeys (>=3.1.0)"] +cloudformation = ["PyYAML (>=5.1)", "aws-xray-sdk (>=0.93,!=0.96)", "cfn-lint (>=0.40.0)", "docker (>=3.0.0)", "graphql-core", "joserfc (>=0.9.0)", "jsondiff (>=1.1.2)", "openapi-spec-validator (>=0.5.0)", "py-partiql-parser (==0.5.1)", "pyparsing (>=3.0.7)", "setuptools"] +cognitoidp = ["joserfc (>=0.9.0)"] +dynamodb = ["docker (>=3.0.0)", "py-partiql-parser (==0.5.1)"] +dynamodbstreams = ["docker (>=3.0.0)", "py-partiql-parser (==0.5.1)"] glue = ["pyparsing (>=3.0.7)"] iotdata = ["jsondiff (>=1.1.2)"] -proxy = ["PyYAML (>=5.1)", "aws-xray-sdk (>=0.93,!=0.96)", "cfn-lint (>=0.40.0)", "docker (>=2.5.1)", "ecdsa (!=0.15)", "graphql-core", "jsondiff (>=1.1.2)", "multipart", "openapi-spec-validator (>=0.5.0)", "py-partiql-parser (==0.4.2)", "pyparsing (>=3.0.7)", "python-jose[cryptography] (>=3.1.0,<4.0.0)", "setuptools", "sshpubkeys (>=3.1.0)"] -resourcegroupstaggingapi = ["PyYAML (>=5.1)", "cfn-lint (>=0.40.0)", "docker (>=3.0.0)", "ecdsa (!=0.15)", "graphql-core", "jsondiff (>=1.1.2)", "openapi-spec-validator (>=0.5.0)", "py-partiql-parser (==0.4.2)", "pyparsing (>=3.0.7)", "python-jose[cryptography] (>=3.1.0,<4.0.0)", "sshpubkeys (>=3.1.0)"] -route53resolver = ["sshpubkeys (>=3.1.0)"] -s3 = ["PyYAML (>=5.1)", "py-partiql-parser (==0.4.2)"] -s3crc32c = ["PyYAML (>=5.1)", "crc32c", "py-partiql-parser (==0.4.2)"] -server = ["PyYAML (>=5.1)", "aws-xray-sdk (>=0.93,!=0.96)", "cfn-lint (>=0.40.0)", "docker (>=3.0.0)", "ecdsa (!=0.15)", "flask (!=2.2.0,!=2.2.1)", "flask-cors", "graphql-core", "jsondiff (>=1.1.2)", "openapi-spec-validator (>=0.5.0)", "py-partiql-parser (==0.4.2)", "pyparsing (>=3.0.7)", "python-jose[cryptography] (>=3.1.0,<4.0.0)", "setuptools", "sshpubkeys (>=3.1.0)"] +proxy = ["PyYAML (>=5.1)", "aws-xray-sdk (>=0.93,!=0.96)", "cfn-lint (>=0.40.0)", "docker (>=2.5.1)", "graphql-core", "joserfc (>=0.9.0)", "jsondiff (>=1.1.2)", "multipart", "openapi-spec-validator (>=0.5.0)", "py-partiql-parser (==0.5.1)", "pyparsing (>=3.0.7)", "setuptools"] +resourcegroupstaggingapi = ["PyYAML (>=5.1)", "cfn-lint (>=0.40.0)", "docker (>=3.0.0)", "graphql-core", "joserfc (>=0.9.0)", "jsondiff (>=1.1.2)", "openapi-spec-validator (>=0.5.0)", "py-partiql-parser (==0.5.1)", "pyparsing (>=3.0.7)"] +s3 = ["PyYAML (>=5.1)", "py-partiql-parser (==0.5.1)"] +s3crc32c = ["PyYAML (>=5.1)", "crc32c", "py-partiql-parser (==0.5.1)"] +server = ["PyYAML (>=5.1)", "aws-xray-sdk (>=0.93,!=0.96)", "cfn-lint (>=0.40.0)", "docker (>=3.0.0)", "flask (!=2.2.0,!=2.2.1)", "flask-cors", "graphql-core", "joserfc (>=0.9.0)", "jsondiff (>=1.1.2)", "openapi-spec-validator (>=0.5.0)", "py-partiql-parser (==0.5.1)", "pyparsing (>=3.0.7)", "setuptools"] ssm = ["PyYAML (>=5.1)"] xray = ["aws-xray-sdk (>=0.93,!=0.96)", "setuptools"] @@ -1713,52 +2373,85 @@ tests = ["pytest (>=4.6)"] [[package]] name = "msal" -version = "1.24.1" -description = "The Microsoft Authentication Library (MSAL) for Python library" +version = "1.27.0" +description = "The Microsoft Authentication Library (MSAL) for Python library enables your app to access the Microsoft Cloud by supporting authentication of users with Microsoft Azure Active Directory accounts (AAD) and Microsoft Accounts (MSA) using industry standard OAuth2 and OpenID Connect." optional = false python-versions = ">=2.7" files = [ - {file = "msal-1.24.1-py2.py3-none-any.whl", hash = "sha256:ce4320688f95c301ee74a4d0e9dbcfe029a63663a8cc61756f40d0d0d36574ad"}, - {file = "msal-1.24.1.tar.gz", hash = "sha256:aa0972884b3c6fdec53d9a0bd15c12e5bd7b71ac1b66d746f54d128709f3f8f8"}, + {file = "msal-1.27.0-py2.py3-none-any.whl", hash = "sha256:572d07149b83e7343a85a3bcef8e581167b4ac76befcbbb6eef0c0e19643cdc0"}, + {file = "msal-1.27.0.tar.gz", hash = "sha256:3109503c038ba6b307152b0e8d34f98113f2e7a78986e28d0baf5b5303afda52"}, ] [package.dependencies] -cryptography = ">=0.6,<44" +cryptography = ">=0.6,<45" PyJWT = {version = ">=1.0.0,<3", extras = ["crypto"]} requests = ">=2.0.0,<3" [package.extras] -broker = ["pymsalruntime (>=0.13.2,<0.14)"] +broker = ["pymsalruntime (>=0.13.2,<0.15)"] [[package]] name = "msal-extensions" -version = "1.0.0" +version = "1.1.0" description = "Microsoft Authentication Library extensions (MSAL EX) provides a persistence API that can save your data on disk, encrypted on Windows, macOS and Linux. Concurrent data access will be coordinated by a file lock mechanism." optional = false -python-versions = "*" +python-versions = ">=3.7" files = [ - {file = "msal-extensions-1.0.0.tar.gz", hash = "sha256:c676aba56b0cce3783de1b5c5ecfe828db998167875126ca4b47dc6436451354"}, - {file = "msal_extensions-1.0.0-py2.py3-none-any.whl", hash = "sha256:91e3db9620b822d0ed2b4d1850056a0f133cba04455e62f11612e40f5502f2ee"}, + {file = "msal-extensions-1.1.0.tar.gz", hash = "sha256:6ab357867062db7b253d0bd2df6d411c7891a0ee7308d54d1e4317c1d1c54252"}, + {file = "msal_extensions-1.1.0-py3-none-any.whl", hash = "sha256:01be9711b4c0b1a151450068eeb2c4f0997df3bba085ac299de3a66f585e382f"}, ] [package.dependencies] msal = ">=0.4.1,<2.0.0" +packaging = "*" portalocker = [ - {version = ">=1.0,<3", markers = "python_version >= \"3.5\" and platform_system != \"Windows\""}, - {version = ">=1.6,<3", markers = "python_version >= \"3.5\" and platform_system == \"Windows\""}, + {version = ">=1.0,<3", markers = "platform_system != \"Windows\""}, + {version = ">=1.6,<3", markers = "platform_system == \"Windows\""}, ] [[package]] name = "msgraph-core" -version = "0.2.2" -description = "Core component of the Microsoft Graph Python SDK consisting of HTTP/Graph Client and a configurable middleware pipeline (Preview)." +version = "1.0.0" +description = "Core component of the Microsoft Graph Python SDK" optional = false -python-versions = ">=3.5" +python-versions = ">=3.8" +files = [ + {file = "msgraph-core-1.0.0.tar.gz", hash = "sha256:f26bcbbb3cd149dd7f1613159e0c2ed862888d61bfd20ef0b08b9408eb670c9d"}, + {file = "msgraph_core-1.0.0-py3-none-any.whl", hash = "sha256:f3de5149e246833b4b03605590d0b4eacf58d9c5a10fd951c37e53f0a345afd5"}, +] + +[package.dependencies] +httpx = {version = ">=0.23.0", extras = ["http2"]} +microsoft-kiota-abstractions = ">=1.0.0,<2.0.0" +microsoft-kiota-authentication-azure = ">=1.0.0,<2.0.0" +microsoft-kiota-http = ">=1.0.0,<2.0.0" + +[package.extras] +dev = ["bumpver", "isort", "mypy", "pylint", "pytest", "yapf"] + +[[package]] +name = "msgraph-sdk" +version = "1.0.0" +description = "The Microsoft Graph Python SDK" +optional = false +python-versions = ">=3.8" files = [ - {file = "msgraph-core-0.2.2.tar.gz", hash = "sha256:147324246788abe8ed7e05534cd9e4e0ec98b33b30e011693b8d014cebf97f63"}, - {file = "msgraph_core-0.2.2-py3-none-any.whl", hash = "sha256:e297564b9a0ca228493d8851f95cb2de9522143d82efa40ce3a6ad286e21392e"}, + {file = "msgraph-sdk-1.0.0.tar.gz", hash = "sha256:78c301d2aac7ac19bf3e2ace4356c6a077f50f3fd6e6da222fbe4dcbac0c5540"}, + {file = "msgraph_sdk-1.0.0-py3-none-any.whl", hash = "sha256:977cf806490077743530d0aa239c517be0035025299b62d50395b7fbf7e534ef"}, ] +[package.dependencies] +azure-identity = ">=1.12.0" +microsoft-kiota-abstractions = ">=1.0.0,<2.0.0" +microsoft-kiota-authentication-azure = ">=1.0.0,<2.0.0" +microsoft-kiota-http = ">=1.0.0,<2.0.0" +microsoft-kiota-serialization-json = ">=1.0.0,<2.0.0" +microsoft-kiota-serialization-text = ">=1.0.0,<2.0.0" +msgraph-core = ">=1.0.0a2" + +[package.extras] +dev = ["bumpver", "isort", "mypy", "pylint", "pytest", "yapf"] + [[package]] name = "msrest" version = "0.7.1" @@ -1796,6 +2489,105 @@ adal = ">=0.6.0,<2.0.0" msrest = ">=0.6.0,<2.0.0" six = "*" +[[package]] +name = "multidict" +version = "6.0.5" +description = "multidict implementation" +optional = false +python-versions = ">=3.7" +files = [ + {file = "multidict-6.0.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:228b644ae063c10e7f324ab1ab6b548bdf6f8b47f3ec234fef1093bc2735e5f9"}, + {file = "multidict-6.0.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:896ebdcf62683551312c30e20614305f53125750803b614e9e6ce74a96232604"}, + {file = "multidict-6.0.5-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:411bf8515f3be9813d06004cac41ccf7d1cd46dfe233705933dd163b60e37600"}, + {file = "multidict-6.0.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1d147090048129ce3c453f0292e7697d333db95e52616b3793922945804a433c"}, + {file = "multidict-6.0.5-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:215ed703caf15f578dca76ee6f6b21b7603791ae090fbf1ef9d865571039ade5"}, + {file = "multidict-6.0.5-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7c6390cf87ff6234643428991b7359b5f59cc15155695deb4eda5c777d2b880f"}, + {file = "multidict-6.0.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21fd81c4ebdb4f214161be351eb5bcf385426bf023041da2fd9e60681f3cebae"}, + {file = "multidict-6.0.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3cc2ad10255f903656017363cd59436f2111443a76f996584d1077e43ee51182"}, + {file = "multidict-6.0.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:6939c95381e003f54cd4c5516740faba40cf5ad3eeff460c3ad1d3e0ea2549bf"}, + {file = "multidict-6.0.5-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:220dd781e3f7af2c2c1053da9fa96d9cf3072ca58f057f4c5adaaa1cab8fc442"}, + {file = "multidict-6.0.5-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:766c8f7511df26d9f11cd3a8be623e59cca73d44643abab3f8c8c07620524e4a"}, + {file = "multidict-6.0.5-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:fe5d7785250541f7f5019ab9cba2c71169dc7d74d0f45253f8313f436458a4ef"}, + {file = "multidict-6.0.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:c1c1496e73051918fcd4f58ff2e0f2f3066d1c76a0c6aeffd9b45d53243702cc"}, + {file = "multidict-6.0.5-cp310-cp310-win32.whl", hash = "sha256:7afcdd1fc07befad18ec4523a782cde4e93e0a2bf71239894b8d61ee578c1319"}, + {file = "multidict-6.0.5-cp310-cp310-win_amd64.whl", hash = "sha256:99f60d34c048c5c2fabc766108c103612344c46e35d4ed9ae0673d33c8fb26e8"}, + {file = "multidict-6.0.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:f285e862d2f153a70586579c15c44656f888806ed0e5b56b64489afe4a2dbfba"}, + {file = "multidict-6.0.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:53689bb4e102200a4fafa9de9c7c3c212ab40a7ab2c8e474491914d2305f187e"}, + {file = "multidict-6.0.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:612d1156111ae11d14afaf3a0669ebf6c170dbb735e510a7438ffe2369a847fd"}, + {file = "multidict-6.0.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7be7047bd08accdb7487737631d25735c9a04327911de89ff1b26b81745bd4e3"}, + {file = "multidict-6.0.5-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:de170c7b4fe6859beb8926e84f7d7d6c693dfe8e27372ce3b76f01c46e489fcf"}, + {file = "multidict-6.0.5-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:04bde7a7b3de05732a4eb39c94574db1ec99abb56162d6c520ad26f83267de29"}, + {file = "multidict-6.0.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:85f67aed7bb647f93e7520633d8f51d3cbc6ab96957c71272b286b2f30dc70ed"}, + {file = "multidict-6.0.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:425bf820055005bfc8aa9a0b99ccb52cc2f4070153e34b701acc98d201693733"}, + {file = "multidict-6.0.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:d3eb1ceec286eba8220c26f3b0096cf189aea7057b6e7b7a2e60ed36b373b77f"}, + {file = "multidict-6.0.5-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:7901c05ead4b3fb75113fb1dd33eb1253c6d3ee37ce93305acd9d38e0b5f21a4"}, + {file = "multidict-6.0.5-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:e0e79d91e71b9867c73323a3444724d496c037e578a0e1755ae159ba14f4f3d1"}, + {file = "multidict-6.0.5-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:29bfeb0dff5cb5fdab2023a7a9947b3b4af63e9c47cae2a10ad58394b517fddc"}, + {file = "multidict-6.0.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e030047e85cbcedbfc073f71836d62dd5dadfbe7531cae27789ff66bc551bd5e"}, + {file = "multidict-6.0.5-cp311-cp311-win32.whl", hash = "sha256:2f4848aa3baa109e6ab81fe2006c77ed4d3cd1e0ac2c1fbddb7b1277c168788c"}, + {file = "multidict-6.0.5-cp311-cp311-win_amd64.whl", hash = "sha256:2faa5ae9376faba05f630d7e5e6be05be22913782b927b19d12b8145968a85ea"}, + {file = "multidict-6.0.5-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:51d035609b86722963404f711db441cf7134f1889107fb171a970c9701f92e1e"}, + {file = "multidict-6.0.5-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:cbebcd5bcaf1eaf302617c114aa67569dd3f090dd0ce8ba9e35e9985b41ac35b"}, + {file = "multidict-6.0.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2ffc42c922dbfddb4a4c3b438eb056828719f07608af27d163191cb3e3aa6cc5"}, + {file = "multidict-6.0.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ceb3b7e6a0135e092de86110c5a74e46bda4bd4fbfeeb3a3bcec79c0f861e450"}, + {file = "multidict-6.0.5-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:79660376075cfd4b2c80f295528aa6beb2058fd289f4c9252f986751a4cd0496"}, + {file = "multidict-6.0.5-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e4428b29611e989719874670fd152b6625500ad6c686d464e99f5aaeeaca175a"}, + {file = "multidict-6.0.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d84a5c3a5f7ce6db1f999fb9438f686bc2e09d38143f2d93d8406ed2dd6b9226"}, + {file = "multidict-6.0.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:76c0de87358b192de7ea9649beb392f107dcad9ad27276324c24c91774ca5271"}, + {file = "multidict-6.0.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:79a6d2ba910adb2cbafc95dad936f8b9386e77c84c35bc0add315b856d7c3abb"}, + {file = "multidict-6.0.5-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:92d16a3e275e38293623ebf639c471d3e03bb20b8ebb845237e0d3664914caef"}, + {file = "multidict-6.0.5-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:fb616be3538599e797a2017cccca78e354c767165e8858ab5116813146041a24"}, + {file = "multidict-6.0.5-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:14c2976aa9038c2629efa2c148022ed5eb4cb939e15ec7aace7ca932f48f9ba6"}, + {file = "multidict-6.0.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:435a0984199d81ca178b9ae2c26ec3d49692d20ee29bc4c11a2a8d4514c67eda"}, + {file = "multidict-6.0.5-cp312-cp312-win32.whl", hash = "sha256:9fe7b0653ba3d9d65cbe7698cca585bf0f8c83dbbcc710db9c90f478e175f2d5"}, + {file = "multidict-6.0.5-cp312-cp312-win_amd64.whl", hash = "sha256:01265f5e40f5a17f8241d52656ed27192be03bfa8764d88e8220141d1e4b3556"}, + {file = "multidict-6.0.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:19fe01cea168585ba0f678cad6f58133db2aa14eccaf22f88e4a6dccadfad8b3"}, + {file = "multidict-6.0.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6bf7a982604375a8d49b6cc1b781c1747f243d91b81035a9b43a2126c04766f5"}, + {file = "multidict-6.0.5-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:107c0cdefe028703fb5dafe640a409cb146d44a6ae201e55b35a4af8e95457dd"}, + {file = "multidict-6.0.5-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:403c0911cd5d5791605808b942c88a8155c2592e05332d2bf78f18697a5fa15e"}, + {file = "multidict-6.0.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aeaf541ddbad8311a87dd695ed9642401131ea39ad7bc8cf3ef3967fd093b626"}, + {file = "multidict-6.0.5-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e4972624066095e52b569e02b5ca97dbd7a7ddd4294bf4e7247d52635630dd83"}, + {file = "multidict-6.0.5-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:d946b0a9eb8aaa590df1fe082cee553ceab173e6cb5b03239716338629c50c7a"}, + {file = "multidict-6.0.5-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:b55358304d7a73d7bdf5de62494aaf70bd33015831ffd98bc498b433dfe5b10c"}, + {file = "multidict-6.0.5-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:a3145cb08d8625b2d3fee1b2d596a8766352979c9bffe5d7833e0503d0f0b5e5"}, + {file = "multidict-6.0.5-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:d65f25da8e248202bd47445cec78e0025c0fe7582b23ec69c3b27a640dd7a8e3"}, + {file = "multidict-6.0.5-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:c9bf56195c6bbd293340ea82eafd0071cb3d450c703d2c93afb89f93b8386ccc"}, + {file = "multidict-6.0.5-cp37-cp37m-win32.whl", hash = "sha256:69db76c09796b313331bb7048229e3bee7928eb62bab5e071e9f7fcc4879caee"}, + {file = "multidict-6.0.5-cp37-cp37m-win_amd64.whl", hash = "sha256:fce28b3c8a81b6b36dfac9feb1de115bab619b3c13905b419ec71d03a3fc1423"}, + {file = "multidict-6.0.5-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:76f067f5121dcecf0d63a67f29080b26c43c71a98b10c701b0677e4a065fbd54"}, + {file = "multidict-6.0.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:b82cc8ace10ab5bd93235dfaab2021c70637005e1ac787031f4d1da63d493c1d"}, + {file = "multidict-6.0.5-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:5cb241881eefd96b46f89b1a056187ea8e9ba14ab88ba632e68d7a2ecb7aadf7"}, + {file = "multidict-6.0.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e8e94e6912639a02ce173341ff62cc1201232ab86b8a8fcc05572741a5dc7d93"}, + {file = "multidict-6.0.5-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:09a892e4a9fb47331da06948690ae38eaa2426de97b4ccbfafbdcbe5c8f37ff8"}, + {file = "multidict-6.0.5-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:55205d03e8a598cfc688c71ca8ea5f66447164efff8869517f175ea632c7cb7b"}, + {file = "multidict-6.0.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:37b15024f864916b4951adb95d3a80c9431299080341ab9544ed148091b53f50"}, + {file = "multidict-6.0.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f2a1dee728b52b33eebff5072817176c172050d44d67befd681609b4746e1c2e"}, + {file = "multidict-6.0.5-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:edd08e6f2f1a390bf137080507e44ccc086353c8e98c657e666c017718561b89"}, + {file = "multidict-6.0.5-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:60d698e8179a42ec85172d12f50b1668254628425a6bd611aba022257cac1386"}, + {file = "multidict-6.0.5-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:3d25f19500588cbc47dc19081d78131c32637c25804df8414463ec908631e453"}, + {file = "multidict-6.0.5-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:4cc0ef8b962ac7a5e62b9e826bd0cd5040e7d401bc45a6835910ed699037a461"}, + {file = "multidict-6.0.5-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:eca2e9d0cc5a889850e9bbd68e98314ada174ff6ccd1129500103df7a94a7a44"}, + {file = "multidict-6.0.5-cp38-cp38-win32.whl", hash = "sha256:4a6a4f196f08c58c59e0b8ef8ec441d12aee4125a7d4f4fef000ccb22f8d7241"}, + {file = "multidict-6.0.5-cp38-cp38-win_amd64.whl", hash = "sha256:0275e35209c27a3f7951e1ce7aaf93ce0d163b28948444bec61dd7badc6d3f8c"}, + {file = "multidict-6.0.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:e7be68734bd8c9a513f2b0cfd508802d6609da068f40dc57d4e3494cefc92929"}, + {file = "multidict-6.0.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:1d9ea7a7e779d7a3561aade7d596649fbecfa5c08a7674b11b423783217933f9"}, + {file = "multidict-6.0.5-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ea1456df2a27c73ce51120fa2f519f1bea2f4a03a917f4a43c8707cf4cbbae1a"}, + {file = "multidict-6.0.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cf590b134eb70629e350691ecca88eac3e3b8b3c86992042fb82e3cb1830d5e1"}, + {file = "multidict-6.0.5-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5c0631926c4f58e9a5ccce555ad7747d9a9f8b10619621f22f9635f069f6233e"}, + {file = "multidict-6.0.5-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dce1c6912ab9ff5f179eaf6efe7365c1f425ed690b03341911bf4939ef2f3046"}, + {file = "multidict-6.0.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0868d64af83169e4d4152ec612637a543f7a336e4a307b119e98042e852ad9c"}, + {file = "multidict-6.0.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:141b43360bfd3bdd75f15ed811850763555a251e38b2405967f8e25fb43f7d40"}, + {file = "multidict-6.0.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:7df704ca8cf4a073334e0427ae2345323613e4df18cc224f647f251e5e75a527"}, + {file = "multidict-6.0.5-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:6214c5a5571802c33f80e6c84713b2c79e024995b9c5897f794b43e714daeec9"}, + {file = "multidict-6.0.5-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:cd6c8fca38178e12c00418de737aef1261576bd1b6e8c6134d3e729a4e858b38"}, + {file = "multidict-6.0.5-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:e02021f87a5b6932fa6ce916ca004c4d441509d33bbdbeca70d05dff5e9d2479"}, + {file = "multidict-6.0.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ebd8d160f91a764652d3e51ce0d2956b38efe37c9231cd82cfc0bed2e40b581c"}, + {file = "multidict-6.0.5-cp39-cp39-win32.whl", hash = "sha256:04da1bb8c8dbadf2a18a452639771951c662c5ad03aefe4884775454be322c9b"}, + {file = "multidict-6.0.5-cp39-cp39-win_amd64.whl", hash = "sha256:d6f6d4f185481c9669b9447bf9d9cf3b95a0e9df9d169bbc17e363b7d5487755"}, + {file = "multidict-6.0.5-py3-none-any.whl", hash = "sha256:0d63c74e3d7ab26de115c49bffc92cc77ed23395303d496eae515d4204a625e7"}, + {file = "multidict-6.0.5.tar.gz", hash = "sha256:f7e301075edaf50500f0b341543c41194d8df3ae5caf4702f2095f3ca73dd8da"}, +] + [[package]] name = "multipart" version = "0.2.4" @@ -1854,17 +2646,17 @@ signedtoken = ["cryptography (>=3.0.0)", "pyjwt (>=2.0.0,<3)"] [[package]] name = "openapi-schema-validator" -version = "0.6.0" +version = "0.6.2" description = "OpenAPI schema validation for Python" optional = false python-versions = ">=3.8.0,<4.0.0" files = [ - {file = "openapi_schema_validator-0.6.0-py3-none-any.whl", hash = "sha256:9e95b95b621efec5936245025df0d6a7ffacd1551e91d09196b3053040c931d7"}, - {file = "openapi_schema_validator-0.6.0.tar.gz", hash = "sha256:921b7c1144b856ca3813e41ecff98a4050f7611824dfc5c6ead7072636af0520"}, + {file = "openapi_schema_validator-0.6.2-py3-none-any.whl", hash = "sha256:c4887c1347c669eb7cded9090f4438b710845cd0f90d1fb9e1b3303fb37339f8"}, + {file = "openapi_schema_validator-0.6.2.tar.gz", hash = "sha256:11a95c9c9017912964e3e5f2545a5b11c3814880681fcacfb73b1759bb4f2804"}, ] [package.dependencies] -jsonschema = ">=4.18.0,<5.0.0" +jsonschema = ">=4.19.1,<5.0.0" jsonschema-specifications = ">=2023.5.2,<2024.0.0" rfc3339-validator = "*" @@ -1886,24 +2678,63 @@ lazy-object-proxy = ">=1.7.1,<2.0.0" openapi-schema-validator = ">=0.6.0,<0.7.0" [[package]] -name = "packaging" -version = "21.3" -description = "Core utilities for Python packages" +name = "opentelemetry-api" +version = "1.23.0" +description = "OpenTelemetry Python API" optional = false -python-versions = ">=3.6" +python-versions = ">=3.8" +files = [ + {file = "opentelemetry_api-1.23.0-py3-none-any.whl", hash = "sha256:cc03ea4025353048aadb9c64919099663664672ea1c6be6ddd8fee8e4cd5e774"}, + {file = "opentelemetry_api-1.23.0.tar.gz", hash = "sha256:14a766548c8dd2eb4dfc349739eb4c3893712a0daa996e5dbf945f9da665da9d"}, +] + +[package.dependencies] +deprecated = ">=1.2.6" +importlib-metadata = ">=6.0,<7.0" + +[[package]] +name = "opentelemetry-sdk" +version = "1.23.0" +description = "OpenTelemetry Python SDK" +optional = false +python-versions = ">=3.8" files = [ - {file = "packaging-21.3-py3-none-any.whl", hash = "sha256:ef103e05f519cdc783ae24ea4e2e0f508a9c99b2d4969652eed6a2e1ea5bd522"}, - {file = "packaging-21.3.tar.gz", hash = "sha256:dd47c42927d89ab911e606518907cc2d3a1f38bbd026385970643f9c5b8ecfeb"}, + {file = "opentelemetry_sdk-1.23.0-py3-none-any.whl", hash = "sha256:a93c96990ac0f07c6d679e2f1015864ff7a4f5587122dd5af968034436efb1fd"}, + {file = "opentelemetry_sdk-1.23.0.tar.gz", hash = "sha256:9ddf60195837b59e72fd2033d6a47e2b59a0f74f0ec37d89387d89e3da8cab7f"}, ] [package.dependencies] -pyparsing = ">=2.0.2,<3.0.5 || >3.0.5" +opentelemetry-api = "1.23.0" +opentelemetry-semantic-conventions = "0.44b0" +typing-extensions = ">=3.7.4" + +[[package]] +name = "opentelemetry-semantic-conventions" +version = "0.44b0" +description = "OpenTelemetry Semantic Conventions" +optional = false +python-versions = ">=3.8" +files = [ + {file = "opentelemetry_semantic_conventions-0.44b0-py3-none-any.whl", hash = "sha256:7c434546c9cbd797ab980cc88bf9ff3f4a5a28f941117cad21694e43d5d92019"}, + {file = "opentelemetry_semantic_conventions-0.44b0.tar.gz", hash = "sha256:2e997cb28cd4ca81a25a9a43365f593d0c2b76be0685015349a89abdf1aa4ffa"}, +] + +[[package]] +name = "packaging" +version = "23.2" +description = "Core utilities for Python packages" +optional = false +python-versions = ">=3.7" +files = [ + {file = "packaging-23.2-py3-none-any.whl", hash = "sha256:8c491190033a9af7e1d931d0b5dacc2ef47509b34dd0de67ed209b5203fc88c7"}, + {file = "packaging-23.2.tar.gz", hash = "sha256:048fb0e9405036518eaaf48a55953c750c11e1a1b68e0dd1a9d62ed0c092cfc5"}, +] [[package]] name = "paginate" version = "0.5.6" description = "Divides large result sets into pages for easier browsing" -optional = true +optional = false python-versions = "*" files = [ {file = "paginate-0.5.6.tar.gz", hash = "sha256:5e6007b6a9398177a7e1648d04fdd9f8c9766a1a945bceac82f1929e8c78af2d"}, @@ -1922,50 +2753,149 @@ files = [ [[package]] name = "pathspec" -version = "0.11.1" +version = "0.12.1" description = "Utility library for gitignore style pattern matching of file paths." optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "pathspec-0.11.1-py3-none-any.whl", hash = "sha256:d8af70af76652554bd134c22b3e8a1cc46ed7d91edcdd721ef1a0c51a84a5293"}, - {file = "pathspec-0.11.1.tar.gz", hash = "sha256:2798de800fa92780e33acca925945e9a19a133b715067cf165b8866c15a31687"}, + {file = "pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08"}, + {file = "pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712"}, ] [[package]] name = "pbr" -version = "5.11.1" +version = "6.0.0" description = "Python Build Reasonableness" optional = false python-versions = ">=2.6" files = [ - {file = "pbr-5.11.1-py2.py3-none-any.whl", hash = "sha256:567f09558bae2b3ab53cb3c1e2e33e726ff3338e7bae3db5dc954b3a44eef12b"}, - {file = "pbr-5.11.1.tar.gz", hash = "sha256:aefc51675b0b533d56bb5fd1c8c6c0522fe31896679882e1c4c63d5e4a0fccb3"}, + {file = "pbr-6.0.0-py2.py3-none-any.whl", hash = "sha256:4a7317d5e3b17a3dccb6a8cfe67dab65b20551404c52c8ed41279fa4f0cb4cda"}, + {file = "pbr-6.0.0.tar.gz", hash = "sha256:d1377122a5a00e2f940ee482999518efe16d745d423a670c27773dfbc3c9a7d9"}, +] + +[[package]] +name = "pendulum" +version = "3.0.0" +description = "Python datetimes made easy" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pendulum-3.0.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:2cf9e53ef11668e07f73190c805dbdf07a1939c3298b78d5a9203a86775d1bfd"}, + {file = "pendulum-3.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:fb551b9b5e6059377889d2d878d940fd0bbb80ae4810543db18e6f77b02c5ef6"}, + {file = "pendulum-3.0.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6c58227ac260d5b01fc1025176d7b31858c9f62595737f350d22124a9a3ad82d"}, + {file = "pendulum-3.0.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:60fb6f415fea93a11c52578eaa10594568a6716602be8430b167eb0d730f3332"}, + {file = "pendulum-3.0.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b69f6b4dbcb86f2c2fe696ba991e67347bcf87fe601362a1aba6431454b46bde"}, + {file = "pendulum-3.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:138afa9c373ee450ede206db5a5e9004fd3011b3c6bbe1e57015395cd076a09f"}, + {file = "pendulum-3.0.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:83d9031f39c6da9677164241fd0d37fbfc9dc8ade7043b5d6d62f56e81af8ad2"}, + {file = "pendulum-3.0.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:0c2308af4033fa534f089595bcd40a95a39988ce4059ccd3dc6acb9ef14ca44a"}, + {file = "pendulum-3.0.0-cp310-none-win_amd64.whl", hash = "sha256:9a59637cdb8462bdf2dbcb9d389518c0263799189d773ad5c11db6b13064fa79"}, + {file = "pendulum-3.0.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:3725245c0352c95d6ca297193192020d1b0c0f83d5ee6bb09964edc2b5a2d508"}, + {file = "pendulum-3.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:6c035f03a3e565ed132927e2c1b691de0dbf4eb53b02a5a3c5a97e1a64e17bec"}, + {file = "pendulum-3.0.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:597e66e63cbd68dd6d58ac46cb7a92363d2088d37ccde2dae4332ef23e95cd00"}, + {file = "pendulum-3.0.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:99a0f8172e19f3f0c0e4ace0ad1595134d5243cf75985dc2233e8f9e8de263ca"}, + {file = "pendulum-3.0.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:77d8839e20f54706aed425bec82a83b4aec74db07f26acd039905d1237a5e1d4"}, + {file = "pendulum-3.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:afde30e8146292b059020fbc8b6f8fd4a60ae7c5e6f0afef937bbb24880bdf01"}, + {file = "pendulum-3.0.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:660434a6fcf6303c4efd36713ca9212c753140107ee169a3fc6c49c4711c2a05"}, + {file = "pendulum-3.0.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:dee9e5a48c6999dc1106eb7eea3e3a50e98a50651b72c08a87ee2154e544b33e"}, + {file = "pendulum-3.0.0-cp311-none-win_amd64.whl", hash = "sha256:d4cdecde90aec2d67cebe4042fd2a87a4441cc02152ed7ed8fb3ebb110b94ec4"}, + {file = "pendulum-3.0.0-cp311-none-win_arm64.whl", hash = "sha256:773c3bc4ddda2dda9f1b9d51fe06762f9200f3293d75c4660c19b2614b991d83"}, + {file = "pendulum-3.0.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:409e64e41418c49f973d43a28afe5df1df4f1dd87c41c7c90f1a63f61ae0f1f7"}, + {file = "pendulum-3.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a38ad2121c5ec7c4c190c7334e789c3b4624798859156b138fcc4d92295835dc"}, + {file = "pendulum-3.0.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fde4d0b2024b9785f66b7f30ed59281bd60d63d9213cda0eb0910ead777f6d37"}, + {file = "pendulum-3.0.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4b2c5675769fb6d4c11238132962939b960fcb365436b6d623c5864287faa319"}, + {file = "pendulum-3.0.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8af95e03e066826f0f4c65811cbee1b3123d4a45a1c3a2b4fc23c4b0dff893b5"}, + {file = "pendulum-3.0.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2165a8f33cb15e06c67070b8afc87a62b85c5a273e3aaa6bc9d15c93a4920d6f"}, + {file = "pendulum-3.0.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:ad5e65b874b5e56bd942546ea7ba9dd1d6a25121db1c517700f1c9de91b28518"}, + {file = "pendulum-3.0.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:17fe4b2c844bbf5f0ece69cfd959fa02957c61317b2161763950d88fed8e13b9"}, + {file = "pendulum-3.0.0-cp312-none-win_amd64.whl", hash = "sha256:78f8f4e7efe5066aca24a7a57511b9c2119f5c2b5eb81c46ff9222ce11e0a7a5"}, + {file = "pendulum-3.0.0-cp312-none-win_arm64.whl", hash = "sha256:28f49d8d1e32aae9c284a90b6bb3873eee15ec6e1d9042edd611b22a94ac462f"}, + {file = "pendulum-3.0.0-cp37-cp37m-macosx_10_12_x86_64.whl", hash = "sha256:d4e2512f4e1a4670284a153b214db9719eb5d14ac55ada5b76cbdb8c5c00399d"}, + {file = "pendulum-3.0.0-cp37-cp37m-macosx_11_0_arm64.whl", hash = "sha256:3d897eb50883cc58d9b92f6405245f84b9286cd2de6e8694cb9ea5cb15195a32"}, + {file = "pendulum-3.0.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2e169cc2ca419517f397811bbe4589cf3cd13fca6dc38bb352ba15ea90739ebb"}, + {file = "pendulum-3.0.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f17c3084a4524ebefd9255513692f7e7360e23c8853dc6f10c64cc184e1217ab"}, + {file = "pendulum-3.0.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:826d6e258052715f64d05ae0fc9040c0151e6a87aae7c109ba9a0ed930ce4000"}, + {file = "pendulum-3.0.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d2aae97087872ef152a0c40e06100b3665d8cb86b59bc8471ca7c26132fccd0f"}, + {file = "pendulum-3.0.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:ac65eeec2250d03106b5e81284ad47f0d417ca299a45e89ccc69e36130ca8bc7"}, + {file = "pendulum-3.0.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:a5346d08f3f4a6e9e672187faa179c7bf9227897081d7121866358af369f44f9"}, + {file = "pendulum-3.0.0-cp37-none-win_amd64.whl", hash = "sha256:235d64e87946d8f95c796af34818c76e0f88c94d624c268693c85b723b698aa9"}, + {file = "pendulum-3.0.0-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:6a881d9c2a7f85bc9adafcfe671df5207f51f5715ae61f5d838b77a1356e8b7b"}, + {file = "pendulum-3.0.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:d7762d2076b9b1cb718a6631ad6c16c23fc3fac76cbb8c454e81e80be98daa34"}, + {file = "pendulum-3.0.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e8e36a8130819d97a479a0e7bf379b66b3b1b520e5dc46bd7eb14634338df8c"}, + {file = "pendulum-3.0.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7dc843253ac373358ffc0711960e2dd5b94ab67530a3e204d85c6e8cb2c5fa10"}, + {file = "pendulum-3.0.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0a78ad3635d609ceb1e97d6aedef6a6a6f93433ddb2312888e668365908c7120"}, + {file = "pendulum-3.0.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b30a137e9e0d1f751e60e67d11fc67781a572db76b2296f7b4d44554761049d6"}, + {file = "pendulum-3.0.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:c95984037987f4a457bb760455d9ca80467be792236b69d0084f228a8ada0162"}, + {file = "pendulum-3.0.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:d29c6e578fe0f893766c0d286adbf0b3c726a4e2341eba0917ec79c50274ec16"}, + {file = "pendulum-3.0.0-cp38-none-win_amd64.whl", hash = "sha256:deaba8e16dbfcb3d7a6b5fabdd5a38b7c982809567479987b9c89572df62e027"}, + {file = "pendulum-3.0.0-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:b11aceea5b20b4b5382962b321dbc354af0defe35daa84e9ff3aae3c230df694"}, + {file = "pendulum-3.0.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a90d4d504e82ad236afac9adca4d6a19e4865f717034fc69bafb112c320dcc8f"}, + {file = "pendulum-3.0.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:825799c6b66e3734227756fa746cc34b3549c48693325b8b9f823cb7d21b19ac"}, + {file = "pendulum-3.0.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ad769e98dc07972e24afe0cff8d365cb6f0ebc7e65620aa1976fcfbcadc4c6f3"}, + {file = "pendulum-3.0.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a6fc26907eb5fb8cc6188cc620bc2075a6c534d981a2f045daa5f79dfe50d512"}, + {file = "pendulum-3.0.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0c717eab1b6d898c00a3e0fa7781d615b5c5136bbd40abe82be100bb06df7a56"}, + {file = "pendulum-3.0.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:3ddd1d66d1a714ce43acfe337190be055cdc221d911fc886d5a3aae28e14b76d"}, + {file = "pendulum-3.0.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:822172853d7a9cf6da95d7b66a16c7160cb99ae6df55d44373888181d7a06edc"}, + {file = "pendulum-3.0.0-cp39-none-win_amd64.whl", hash = "sha256:840de1b49cf1ec54c225a2a6f4f0784d50bd47f68e41dc005b7f67c7d5b5f3ae"}, + {file = "pendulum-3.0.0-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:3b1f74d1e6ffe5d01d6023870e2ce5c2191486928823196f8575dcc786e107b1"}, + {file = "pendulum-3.0.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:729e9f93756a2cdfa77d0fc82068346e9731c7e884097160603872686e570f07"}, + {file = "pendulum-3.0.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e586acc0b450cd21cbf0db6bae386237011b75260a3adceddc4be15334689a9a"}, + {file = "pendulum-3.0.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:22e7944ffc1f0099a79ff468ee9630c73f8c7835cd76fdb57ef7320e6a409df4"}, + {file = "pendulum-3.0.0-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:fa30af36bd8e50686846bdace37cf6707bdd044e5cb6e1109acbad3277232e04"}, + {file = "pendulum-3.0.0-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:440215347b11914ae707981b9a57ab9c7b6983ab0babde07063c6ee75c0dc6e7"}, + {file = "pendulum-3.0.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:314c4038dc5e6a52991570f50edb2f08c339debdf8cea68ac355b32c4174e820"}, + {file = "pendulum-3.0.0-pp37-pypy37_pp73-macosx_10_12_x86_64.whl", hash = "sha256:5acb1d386337415f74f4d1955c4ce8d0201978c162927d07df8eb0692b2d8533"}, + {file = "pendulum-3.0.0-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a789e12fbdefaffb7b8ac67f9d8f22ba17a3050ceaaa635cd1cc4645773a4b1e"}, + {file = "pendulum-3.0.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:860aa9b8a888e5913bd70d819306749e5eb488e6b99cd6c47beb701b22bdecf5"}, + {file = "pendulum-3.0.0-pp37-pypy37_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:5ebc65ea033ef0281368217fbf59f5cb05b338ac4dd23d60959c7afcd79a60a0"}, + {file = "pendulum-3.0.0-pp37-pypy37_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:d9fef18ab0386ef6a9ac7bad7e43ded42c83ff7ad412f950633854f90d59afa8"}, + {file = "pendulum-3.0.0-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:1c134ba2f0571d0b68b83f6972e2307a55a5a849e7dac8505c715c531d2a8795"}, + {file = "pendulum-3.0.0-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:385680812e7e18af200bb9b4a49777418c32422d05ad5a8eb85144c4a285907b"}, + {file = "pendulum-3.0.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9eec91cd87c59fb32ec49eb722f375bd58f4be790cae11c1b70fac3ee4f00da0"}, + {file = "pendulum-3.0.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4386bffeca23c4b69ad50a36211f75b35a4deb6210bdca112ac3043deb7e494a"}, + {file = "pendulum-3.0.0-pp38-pypy38_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:dfbcf1661d7146d7698da4b86e7f04814221081e9fe154183e34f4c5f5fa3bf8"}, + {file = "pendulum-3.0.0-pp38-pypy38_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:04a1094a5aa1daa34a6b57c865b25f691848c61583fb22722a4df5699f6bf74c"}, + {file = "pendulum-3.0.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:5b0ec85b9045bd49dd3a3493a5e7ddfd31c36a2a60da387c419fa04abcaecb23"}, + {file = "pendulum-3.0.0-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:0a15b90129765b705eb2039062a6daf4d22c4e28d1a54fa260892e8c3ae6e157"}, + {file = "pendulum-3.0.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:bb8f6d7acd67a67d6fedd361ad2958ff0539445ef51cbe8cd288db4306503cd0"}, + {file = "pendulum-3.0.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fd69b15374bef7e4b4440612915315cc42e8575fcda2a3d7586a0d88192d0c88"}, + {file = "pendulum-3.0.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dc00f8110db6898360c53c812872662e077eaf9c75515d53ecc65d886eec209a"}, + {file = "pendulum-3.0.0-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:83a44e8b40655d0ba565a5c3d1365d27e3e6778ae2a05b69124db9e471255c4a"}, + {file = "pendulum-3.0.0-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:1a3604e9fbc06b788041b2a8b78f75c243021e0f512447806a6d37ee5214905d"}, + {file = "pendulum-3.0.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:92c307ae7accebd06cbae4729f0ba9fa724df5f7d91a0964b1b972a22baa482b"}, + {file = "pendulum-3.0.0.tar.gz", hash = "sha256:5d034998dea404ec31fae27af6b22cff1708f830a1ed7353be4d1019bb9f584e"}, ] +[package.dependencies] +python-dateutil = ">=2.6" +tzdata = ">=2020.1" + +[package.extras] +test = ["time-machine (>=2.6.0)"] + [[package]] name = "platformdirs" -version = "3.5.0" +version = "4.2.0" description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "platformdirs-3.5.0-py3-none-any.whl", hash = "sha256:47692bc24c1958e8b0f13dd727307cff1db103fca36399f457da8e05f222fdc4"}, - {file = "platformdirs-3.5.0.tar.gz", hash = "sha256:7954a68d0ba23558d753f73437c55f89027cf8f5108c19844d4b82e5af396335"}, + {file = "platformdirs-4.2.0-py3-none-any.whl", hash = "sha256:0614df2a2f37e1a662acbd8e2b25b92ccf8632929bc6d43467e17fe89c75e068"}, + {file = "platformdirs-4.2.0.tar.gz", hash = "sha256:ef0cc731df711022c174543cb70a9b5bd22e5a9337c8624ef2c2ceb8ddad8768"}, ] [package.extras] -docs = ["furo (>=2023.3.27)", "proselint (>=0.13)", "sphinx (>=6.1.3)", "sphinx-autodoc-typehints (>=1.23,!=1.23.4)"] -test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.3.1)", "pytest-cov (>=4)", "pytest-mock (>=3.10)"] +docs = ["furo (>=2023.9.10)", "proselint (>=0.13)", "sphinx (>=7.2.6)", "sphinx-autodoc-typehints (>=1.25.2)"] +test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.4.3)", "pytest-cov (>=4.1)", "pytest-mock (>=3.12)"] [[package]] name = "pluggy" -version = "1.0.0" +version = "1.4.0" description = "plugin and hook calling mechanisms for python" optional = false -python-versions = ">=3.6" +python-versions = ">=3.8" files = [ - {file = "pluggy-1.0.0-py2.py3-none-any.whl", hash = "sha256:74134bbf457f031a36d68416e1509f34bd5ccc019f0bcc952c7b909d06b37bd3"}, - {file = "pluggy-1.0.0.tar.gz", hash = "sha256:4224373bacce55f955a878bf9cfa763c1e360858e330072059e10bad68531159"}, + {file = "pluggy-1.4.0-py3-none-any.whl", hash = "sha256:7db9f7b503d67d1c5b95f59773ebb58a8c1c288129a88665838012cfb07b8981"}, + {file = "pluggy-1.4.0.tar.gz", hash = "sha256:8c85c2876142a764e5b7548e7d9a0e0ddb46f5185161049a79b7e974454223be"}, ] [package.extras] @@ -1974,13 +2904,13 @@ testing = ["pytest", "pytest-benchmark"] [[package]] name = "portalocker" -version = "2.7.0" +version = "2.8.2" description = "Wraps the portalocker recipe for easy usage" optional = false -python-versions = ">=3.5" +python-versions = ">=3.8" files = [ - {file = "portalocker-2.7.0-py2.py3-none-any.whl", hash = "sha256:a07c5b4f3985c3cf4798369631fb7011adb498e2a46d8440efc75a8f29a0f983"}, - {file = "portalocker-2.7.0.tar.gz", hash = "sha256:032e81d534a88ec1736d03f780ba073f047a06c478b06e2937486f334e955c51"}, + {file = "portalocker-2.8.2-py3-none-any.whl", hash = "sha256:cfb86acc09b9aa7c3b43594e19be1345b9d16af3feb08bf92f23d4dce513a28e"}, + {file = "portalocker-2.8.2.tar.gz", hash = "sha256:2b035aa7828e46c58e9b31390ee1f169b98e1066ab10b9a6a861fe7e25ee4f33"}, ] [package.dependencies] @@ -1989,53 +2919,51 @@ pywin32 = {version = ">=226", markers = "platform_system == \"Windows\""} [package.extras] docs = ["sphinx (>=1.7.1)"] redis = ["redis"] -tests = ["pytest (>=5.4.1)", "pytest-cov (>=2.8.1)", "pytest-mypy (>=0.8.0)", "pytest-timeout (>=2.1.0)", "redis", "sphinx (>=6.0.0)"] +tests = ["pytest (>=5.4.1)", "pytest-cov (>=2.8.1)", "pytest-mypy (>=0.8.0)", "pytest-timeout (>=2.1.0)", "redis", "sphinx (>=6.0.0)", "types-redis"] [[package]] name = "protobuf" -version = "4.23.0" +version = "4.25.3" description = "" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "protobuf-4.23.0-cp310-abi3-win32.whl", hash = "sha256:6c16657d6717a0c62d5d740cb354fbad1b0d8cb811669e06fc1caa0ff4799ddd"}, - {file = "protobuf-4.23.0-cp310-abi3-win_amd64.whl", hash = "sha256:baca40d067dddd62141a129f244703160d278648b569e90bb0e3753067644711"}, - {file = "protobuf-4.23.0-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:2b94bd6df92d71bd1234a2ffe7ce96ddf6d10cf637a18d6b55ad0a89fbb7fc21"}, - {file = "protobuf-4.23.0-cp37-abi3-manylinux2014_aarch64.whl", hash = "sha256:9f5a0fbfcdcc364f3986f9ed9f8bb1328fb84114fd790423ff3d7fdb0f85c2d1"}, - {file = "protobuf-4.23.0-cp37-abi3-manylinux2014_x86_64.whl", hash = "sha256:ebde3a023b8e11bfa6c890ef34cd6a8b47d586f26135e86c21344fe433daf2e2"}, - {file = "protobuf-4.23.0-cp37-cp37m-win32.whl", hash = "sha256:7cb5b9a05ce52c6a782bb97de52679bd3438ff2b7460eff5da348db65650f227"}, - {file = "protobuf-4.23.0-cp37-cp37m-win_amd64.whl", hash = "sha256:6fe180b56e1169d72ecc4acbd39186339aed20af5384531b8e8979b02bbee159"}, - {file = "protobuf-4.23.0-cp38-cp38-win32.whl", hash = "sha256:d5a35ff54e3f62e8fc7be02bb0d2fbc212bba1a5a9cc2748090690093996f07b"}, - {file = "protobuf-4.23.0-cp38-cp38-win_amd64.whl", hash = "sha256:e62fb869762b4ba18666370e2f8a18f17f8ab92dd4467295c6d38be6f8fef60b"}, - {file = "protobuf-4.23.0-cp39-cp39-win32.whl", hash = "sha256:03eee35b60317112a72d19c54d0bff7bc58ff12fea4cd7b018232bd99758ffdf"}, - {file = "protobuf-4.23.0-cp39-cp39-win_amd64.whl", hash = "sha256:36f5370a930cb77c8ad2f4135590c672d0d2c72d4a707c7d0058dce4b4b4a598"}, - {file = "protobuf-4.23.0-py3-none-any.whl", hash = "sha256:9744e934ea5855d12191040ea198eaf704ac78665d365a89d9572e3b627c2688"}, - {file = "protobuf-4.23.0.tar.gz", hash = "sha256:5f1eba1da2a2f3f7df469fccddef3cc060b8a16cfe3cc65961ad36b4dbcf59c5"}, + {file = "protobuf-4.25.3-cp310-abi3-win32.whl", hash = "sha256:d4198877797a83cbfe9bffa3803602bbe1625dc30d8a097365dbc762e5790faa"}, + {file = "protobuf-4.25.3-cp310-abi3-win_amd64.whl", hash = "sha256:209ba4cc916bab46f64e56b85b090607a676f66b473e6b762e6f1d9d591eb2e8"}, + {file = "protobuf-4.25.3-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:f1279ab38ecbfae7e456a108c5c0681e4956d5b1090027c1de0f934dfdb4b35c"}, + {file = "protobuf-4.25.3-cp37-abi3-manylinux2014_aarch64.whl", hash = "sha256:e7cb0ae90dd83727f0c0718634ed56837bfeeee29a5f82a7514c03ee1364c019"}, + {file = "protobuf-4.25.3-cp37-abi3-manylinux2014_x86_64.whl", hash = "sha256:7c8daa26095f82482307bc717364e7c13f4f1c99659be82890dcfc215194554d"}, + {file = "protobuf-4.25.3-cp38-cp38-win32.whl", hash = "sha256:f4f118245c4a087776e0a8408be33cf09f6c547442c00395fbfb116fac2f8ac2"}, + {file = "protobuf-4.25.3-cp38-cp38-win_amd64.whl", hash = "sha256:c053062984e61144385022e53678fbded7aea14ebb3e0305ae3592fb219ccfa4"}, + {file = "protobuf-4.25.3-cp39-cp39-win32.whl", hash = "sha256:19b270aeaa0099f16d3ca02628546b8baefe2955bbe23224aaf856134eccf1e4"}, + {file = "protobuf-4.25.3-cp39-cp39-win_amd64.whl", hash = "sha256:e3c97a1555fd6388f857770ff8b9703083de6bf1f9274a002a332d65fbb56c8c"}, + {file = "protobuf-4.25.3-py3-none-any.whl", hash = "sha256:f0700d54bcf45424477e46a9f0944155b46fb0639d69728739c0e47bab83f2b9"}, + {file = "protobuf-4.25.3.tar.gz", hash = "sha256:25b5d0b42fd000320bd7830b349e3b696435f3b329810427a6bcce6a5492cc5c"}, ] [[package]] name = "py-partiql-parser" -version = "0.4.2" +version = "0.5.1" description = "Pure Python PartiQL Parser" optional = false python-versions = "*" files = [ - {file = "py-partiql-parser-0.4.2.tar.gz", hash = "sha256:9c99d545be7897c6bfa97a107f6cfbcd92e359d394e4f3b95430e6409e8dd1e1"}, - {file = "py_partiql_parser-0.4.2-py3-none-any.whl", hash = "sha256:f3f34de8dddf65ed2d47b4263560bbf97be1ecc6bd5c61da039ede90f26a10ce"}, + {file = "py-partiql-parser-0.5.1.tar.gz", hash = "sha256:aeac8f46529d8651bbae88a1a6c14dc3aa38ebc4bc6bd1eb975044c0564246c6"}, + {file = "py_partiql_parser-0.5.1-py3-none-any.whl", hash = "sha256:53053e70987dea2983e1990ad85f87a7d8cec13dd4a4b065a740bcfd661f5a6b"}, ] [package.extras] -dev = ["black (==22.6.0)", "flake8", "mypy (==0.971)", "pytest"] +dev = ["black (==22.6.0)", "flake8", "mypy", "pytest"] [[package]] name = "pyasn1" -version = "0.5.0" +version = "0.5.1" description = "Pure-Python implementation of ASN.1 types and DER/BER/CER codecs (X.208)" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" files = [ - {file = "pyasn1-0.5.0-py2.py3-none-any.whl", hash = "sha256:87a2121042a1ac9358cabcaf1d07680ff97ee6404333bacca15f76aa8ad01a57"}, - {file = "pyasn1-0.5.0.tar.gz", hash = "sha256:97b7290ca68e62a832558ec3976f15cbf911bf5d7c7039d8b861c2a0ece69fde"}, + {file = "pyasn1-0.5.1-py2.py3-none-any.whl", hash = "sha256:4439847c58d40b1d0a573d07e3856e95333f1976294494c325775aeca506eb58"}, + {file = "pyasn1-0.5.1.tar.gz", hash = "sha256:6d391a96e59b23130a5cfa74d6fd7f388dbbe26cc8f1edf39fdddf08d9d6676c"}, ] [[package]] @@ -2054,13 +2982,13 @@ pyasn1 = ">=0.4.6,<0.6.0" [[package]] name = "pycodestyle" -version = "2.11.0" +version = "2.11.1" description = "Python style guide checker" optional = false python-versions = ">=3.8" files = [ - {file = "pycodestyle-2.11.0-py2.py3-none-any.whl", hash = "sha256:5d1013ba8dc7895b548be5afb05740ca82454fd899971563d2ef625d090326f8"}, - {file = "pycodestyle-2.11.0.tar.gz", hash = "sha256:259bcc17857d8a8b3b4a2327324b79e5f020a13c16074670f9c8c8f872ea76d0"}, + {file = "pycodestyle-2.11.1-py2.py3-none-any.whl", hash = "sha256:44fe31000b2d866f2e41841b18528a505fbd7fef9017b04eff4e2648a0fadc67"}, + {file = "pycodestyle-2.11.1.tar.gz", hash = "sha256:41ba0e7afc9752dfb53ced5489e89f8186be00e599e712660695b7a75ff2663f"}, ] [[package]] @@ -2076,47 +3004,47 @@ files = [ [[package]] name = "pydantic" -version = "1.10.13" +version = "1.10.14" description = "Data validation and settings management using python type hints" optional = false python-versions = ">=3.7" files = [ - {file = "pydantic-1.10.13-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:efff03cc7a4f29d9009d1c96ceb1e7a70a65cfe86e89d34e4a5f2ab1e5693737"}, - {file = "pydantic-1.10.13-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:3ecea2b9d80e5333303eeb77e180b90e95eea8f765d08c3d278cd56b00345d01"}, - {file = "pydantic-1.10.13-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1740068fd8e2ef6eb27a20e5651df000978edce6da6803c2bef0bc74540f9548"}, - {file = "pydantic-1.10.13-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:84bafe2e60b5e78bc64a2941b4c071a4b7404c5c907f5f5a99b0139781e69ed8"}, - {file = "pydantic-1.10.13-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:bc0898c12f8e9c97f6cd44c0ed70d55749eaf783716896960b4ecce2edfd2d69"}, - {file = "pydantic-1.10.13-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:654db58ae399fe6434e55325a2c3e959836bd17a6f6a0b6ca8107ea0571d2e17"}, - {file = "pydantic-1.10.13-cp310-cp310-win_amd64.whl", hash = "sha256:75ac15385a3534d887a99c713aa3da88a30fbd6204a5cd0dc4dab3d770b9bd2f"}, - {file = "pydantic-1.10.13-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c553f6a156deb868ba38a23cf0df886c63492e9257f60a79c0fd8e7173537653"}, - {file = "pydantic-1.10.13-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5e08865bc6464df8c7d61439ef4439829e3ab62ab1669cddea8dd00cd74b9ffe"}, - {file = "pydantic-1.10.13-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e31647d85a2013d926ce60b84f9dd5300d44535a9941fe825dc349ae1f760df9"}, - {file = "pydantic-1.10.13-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:210ce042e8f6f7c01168b2d84d4c9eb2b009fe7bf572c2266e235edf14bacd80"}, - {file = "pydantic-1.10.13-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:8ae5dd6b721459bfa30805f4c25880e0dd78fc5b5879f9f7a692196ddcb5a580"}, - {file = "pydantic-1.10.13-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:f8e81fc5fb17dae698f52bdd1c4f18b6ca674d7068242b2aff075f588301bbb0"}, - {file = "pydantic-1.10.13-cp311-cp311-win_amd64.whl", hash = "sha256:61d9dce220447fb74f45e73d7ff3b530e25db30192ad8d425166d43c5deb6df0"}, - {file = "pydantic-1.10.13-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:4b03e42ec20286f052490423682016fd80fda830d8e4119f8ab13ec7464c0132"}, - {file = "pydantic-1.10.13-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f59ef915cac80275245824e9d771ee939133be38215555e9dc90c6cb148aaeb5"}, - {file = "pydantic-1.10.13-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5a1f9f747851338933942db7af7b6ee8268568ef2ed86c4185c6ef4402e80ba8"}, - {file = "pydantic-1.10.13-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:97cce3ae7341f7620a0ba5ef6cf043975cd9d2b81f3aa5f4ea37928269bc1b87"}, - {file = "pydantic-1.10.13-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:854223752ba81e3abf663d685f105c64150873cc6f5d0c01d3e3220bcff7d36f"}, - {file = "pydantic-1.10.13-cp37-cp37m-win_amd64.whl", hash = "sha256:b97c1fac8c49be29486df85968682b0afa77e1b809aff74b83081cc115e52f33"}, - {file = "pydantic-1.10.13-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:c958d053453a1c4b1c2062b05cd42d9d5c8eb67537b8d5a7e3c3032943ecd261"}, - {file = "pydantic-1.10.13-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4c5370a7edaac06daee3af1c8b1192e305bc102abcbf2a92374b5bc793818599"}, - {file = "pydantic-1.10.13-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7d6f6e7305244bddb4414ba7094ce910560c907bdfa3501e9db1a7fd7eaea127"}, - {file = "pydantic-1.10.13-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d3a3c792a58e1622667a2837512099eac62490cdfd63bd407993aaf200a4cf1f"}, - {file = "pydantic-1.10.13-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:c636925f38b8db208e09d344c7aa4f29a86bb9947495dd6b6d376ad10334fb78"}, - {file = "pydantic-1.10.13-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:678bcf5591b63cc917100dc50ab6caebe597ac67e8c9ccb75e698f66038ea953"}, - {file = "pydantic-1.10.13-cp38-cp38-win_amd64.whl", hash = "sha256:6cf25c1a65c27923a17b3da28a0bdb99f62ee04230c931d83e888012851f4e7f"}, - {file = "pydantic-1.10.13-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:8ef467901d7a41fa0ca6db9ae3ec0021e3f657ce2c208e98cd511f3161c762c6"}, - {file = "pydantic-1.10.13-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:968ac42970f57b8344ee08837b62f6ee6f53c33f603547a55571c954a4225691"}, - {file = "pydantic-1.10.13-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9849f031cf8a2f0a928fe885e5a04b08006d6d41876b8bbd2fc68a18f9f2e3fd"}, - {file = "pydantic-1.10.13-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:56e3ff861c3b9c6857579de282ce8baabf443f42ffba355bf070770ed63e11e1"}, - {file = "pydantic-1.10.13-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:9f00790179497767aae6bcdc36355792c79e7bbb20b145ff449700eb076c5f96"}, - {file = "pydantic-1.10.13-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:75b297827b59bc229cac1a23a2f7a4ac0031068e5be0ce385be1462e7e17a35d"}, - {file = "pydantic-1.10.13-cp39-cp39-win_amd64.whl", hash = "sha256:e70ca129d2053fb8b728ee7d1af8e553a928d7e301a311094b8a0501adc8763d"}, - {file = "pydantic-1.10.13-py3-none-any.whl", hash = "sha256:b87326822e71bd5f313e7d3bfdc77ac3247035ac10b0c0618bd99dcf95b1e687"}, - {file = "pydantic-1.10.13.tar.gz", hash = "sha256:32c8b48dcd3b2ac4e78b0ba4af3a2c2eb6048cb75202f0ea7b34feb740efc340"}, + {file = "pydantic-1.10.14-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:7f4fcec873f90537c382840f330b90f4715eebc2bc9925f04cb92de593eae054"}, + {file = "pydantic-1.10.14-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8e3a76f571970fcd3c43ad982daf936ae39b3e90b8a2e96c04113a369869dc87"}, + {file = "pydantic-1.10.14-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:82d886bd3c3fbeaa963692ef6b643159ccb4b4cefaf7ff1617720cbead04fd1d"}, + {file = "pydantic-1.10.14-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:798a3d05ee3b71967844a1164fd5bdb8c22c6d674f26274e78b9f29d81770c4e"}, + {file = "pydantic-1.10.14-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:23d47a4b57a38e8652bcab15a658fdb13c785b9ce217cc3a729504ab4e1d6bc9"}, + {file = "pydantic-1.10.14-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:f9f674b5c3bebc2eba401de64f29948ae1e646ba2735f884d1594c5f675d6f2a"}, + {file = "pydantic-1.10.14-cp310-cp310-win_amd64.whl", hash = "sha256:24a7679fab2e0eeedb5a8924fc4a694b3bcaac7d305aeeac72dd7d4e05ecbebf"}, + {file = "pydantic-1.10.14-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:9d578ac4bf7fdf10ce14caba6f734c178379bd35c486c6deb6f49006e1ba78a7"}, + {file = "pydantic-1.10.14-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:fa7790e94c60f809c95602a26d906eba01a0abee9cc24150e4ce2189352deb1b"}, + {file = "pydantic-1.10.14-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aad4e10efa5474ed1a611b6d7f0d130f4aafadceb73c11d9e72823e8f508e663"}, + {file = "pydantic-1.10.14-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1245f4f61f467cb3dfeced2b119afef3db386aec3d24a22a1de08c65038b255f"}, + {file = "pydantic-1.10.14-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:21efacc678a11114c765eb52ec0db62edffa89e9a562a94cbf8fa10b5db5c046"}, + {file = "pydantic-1.10.14-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:412ab4a3f6dbd2bf18aefa9f79c7cca23744846b31f1d6555c2ee2b05a2e14ca"}, + {file = "pydantic-1.10.14-cp311-cp311-win_amd64.whl", hash = "sha256:e897c9f35281f7889873a3e6d6b69aa1447ceb024e8495a5f0d02ecd17742a7f"}, + {file = "pydantic-1.10.14-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:d604be0f0b44d473e54fdcb12302495fe0467c56509a2f80483476f3ba92b33c"}, + {file = "pydantic-1.10.14-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a42c7d17706911199798d4c464b352e640cab4351efe69c2267823d619a937e5"}, + {file = "pydantic-1.10.14-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:596f12a1085e38dbda5cbb874d0973303e34227b400b6414782bf205cc14940c"}, + {file = "pydantic-1.10.14-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:bfb113860e9288d0886e3b9e49d9cf4a9d48b441f52ded7d96db7819028514cc"}, + {file = "pydantic-1.10.14-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:bc3ed06ab13660b565eed80887fcfbc0070f0aa0691fbb351657041d3e874efe"}, + {file = "pydantic-1.10.14-cp37-cp37m-win_amd64.whl", hash = "sha256:ad8c2bc677ae5f6dbd3cf92f2c7dc613507eafe8f71719727cbc0a7dec9a8c01"}, + {file = "pydantic-1.10.14-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:c37c28449752bb1f47975d22ef2882d70513c546f8f37201e0fec3a97b816eee"}, + {file = "pydantic-1.10.14-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:49a46a0994dd551ec051986806122767cf144b9702e31d47f6d493c336462597"}, + {file = "pydantic-1.10.14-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:53e3819bd20a42470d6dd0fe7fc1c121c92247bca104ce608e609b59bc7a77ee"}, + {file = "pydantic-1.10.14-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0fbb503bbbbab0c588ed3cd21975a1d0d4163b87e360fec17a792f7d8c4ff29f"}, + {file = "pydantic-1.10.14-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:336709883c15c050b9c55a63d6c7ff09be883dbc17805d2b063395dd9d9d0022"}, + {file = "pydantic-1.10.14-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:4ae57b4d8e3312d486e2498d42aed3ece7b51848336964e43abbf9671584e67f"}, + {file = "pydantic-1.10.14-cp38-cp38-win_amd64.whl", hash = "sha256:dba49d52500c35cfec0b28aa8b3ea5c37c9df183ffc7210b10ff2a415c125c4a"}, + {file = "pydantic-1.10.14-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:c66609e138c31cba607d8e2a7b6a5dc38979a06c900815495b2d90ce6ded35b4"}, + {file = "pydantic-1.10.14-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:d986e115e0b39604b9eee3507987368ff8148222da213cd38c359f6f57b3b347"}, + {file = "pydantic-1.10.14-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:646b2b12df4295b4c3148850c85bff29ef6d0d9621a8d091e98094871a62e5c7"}, + {file = "pydantic-1.10.14-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:282613a5969c47c83a8710cc8bfd1e70c9223feb76566f74683af889faadc0ea"}, + {file = "pydantic-1.10.14-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:466669501d08ad8eb3c4fecd991c5e793c4e0bbd62299d05111d4f827cded64f"}, + {file = "pydantic-1.10.14-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:13e86a19dca96373dcf3190fcb8797d40a6f12f154a244a8d1e8e03b8f280593"}, + {file = "pydantic-1.10.14-cp39-cp39-win_amd64.whl", hash = "sha256:08b6ec0917c30861e3fe71a93be1648a2aa4f62f866142ba21670b24444d7fd8"}, + {file = "pydantic-1.10.14-py3-none-any.whl", hash = "sha256:8ee853cd12ac2ddbf0ecbac1c289f95882b2d4482258048079d13be700aa114c"}, + {file = "pydantic-1.10.14.tar.gz", hash = "sha256:46f17b832fe27de7850896f3afee50ea682220dd218f7e9c88d436788419dca6"}, ] [package.dependencies] @@ -2128,38 +3056,39 @@ email = ["email-validator (>=1.0.3)"] [[package]] name = "pyflakes" -version = "3.1.0" +version = "3.2.0" description = "passive checker of Python programs" optional = false python-versions = ">=3.8" files = [ - {file = "pyflakes-3.1.0-py2.py3-none-any.whl", hash = "sha256:4132f6d49cb4dae6819e5379898f2b8cce3c5f23994194c24b77d5da2e36f774"}, - {file = "pyflakes-3.1.0.tar.gz", hash = "sha256:a0aae034c444db0071aa077972ba4768d40c830d9539fd45bf4cd3f8f6992efc"}, + {file = "pyflakes-3.2.0-py2.py3-none-any.whl", hash = "sha256:84b5be138a2dfbb40689ca07e2152deb896a65c3a3e24c251c5c62489568074a"}, + {file = "pyflakes-3.2.0.tar.gz", hash = "sha256:1c61603ff154621fb2a9172037d84dca3500def8c8b630657d1701f026f8af3f"}, ] [[package]] name = "pygments" -version = "2.16.1" +version = "2.17.2" description = "Pygments is a syntax highlighting package written in Python." optional = false python-versions = ">=3.7" files = [ - {file = "Pygments-2.16.1-py3-none-any.whl", hash = "sha256:13fc09fa63bc8d8671a6d247e1eb303c4b343eaee81d861f3404db2935653692"}, - {file = "Pygments-2.16.1.tar.gz", hash = "sha256:1daff0494820c69bc8941e407aa20f577374ee88364ee10a98fdbe0aece96e29"}, + {file = "pygments-2.17.2-py3-none-any.whl", hash = "sha256:b27c2826c47d0f3219f29554824c30c5e8945175d888647acd804ddd04af846c"}, + {file = "pygments-2.17.2.tar.gz", hash = "sha256:da46cec9fd2de5be3a8a784f434e4c4ab670b4ff54d605c4c2717e9d49c4c367"}, ] [package.extras] plugins = ["importlib-metadata"] +windows-terminal = ["colorama (>=0.4.6)"] [[package]] name = "pyjwt" -version = "2.6.0" +version = "2.8.0" description = "JSON Web Token implementation in Python" optional = false python-versions = ">=3.7" files = [ - {file = "PyJWT-2.6.0-py3-none-any.whl", hash = "sha256:d83c3d892a77bbb74d3e1a2cfa90afaadb60945205d1095d9221f04466f64c14"}, - {file = "PyJWT-2.6.0.tar.gz", hash = "sha256:69285c7e31fc44f68a1feb309e948e0df53259d579295e6cfe2b1792329f05fd"}, + {file = "PyJWT-2.8.0-py3-none-any.whl", hash = "sha256:59127c392cc44c2da5bb3192169a91f429924e17aff6534d70fdc02ab3e04320"}, + {file = "PyJWT-2.8.0.tar.gz", hash = "sha256:57e28d156e3d5c10088e0c68abb90bfac3df82b40a71bd0daa20c65ccd5c23de"}, ] [package.dependencies] @@ -2173,23 +3102,24 @@ tests = ["coverage[toml] (==5.0.4)", "pytest (>=6.0.0,<7.0.0)"] [[package]] name = "pylint" -version = "3.0.2" +version = "3.1.0" description = "python code static checker" optional = false python-versions = ">=3.8.0" files = [ - {file = "pylint-3.0.2-py3-none-any.whl", hash = "sha256:60ed5f3a9ff8b61839ff0348b3624ceeb9e6c2a92c514d81c9cc273da3b6bcda"}, - {file = "pylint-3.0.2.tar.gz", hash = "sha256:0d4c286ef6d2f66c8bfb527a7f8a629009e42c99707dec821a03e1b51a4c1496"}, + {file = "pylint-3.1.0-py3-none-any.whl", hash = "sha256:507a5b60953874766d8a366e8e8c7af63e058b26345cfcb5f91f89d987fd6b74"}, + {file = "pylint-3.1.0.tar.gz", hash = "sha256:6a69beb4a6f63debebaab0a3477ecd0f559aa726af4954fc948c51f7a2549e23"}, ] [package.dependencies] -astroid = ">=3.0.1,<=3.1.0-dev0" +astroid = ">=3.1.0,<=3.2.0-dev0" colorama = {version = ">=0.4.5", markers = "sys_platform == \"win32\""} dill = [ {version = ">=0.2", markers = "python_version < \"3.11\""}, - {version = ">=0.3.6", markers = "python_version >= \"3.11\""}, + {version = ">=0.3.7", markers = "python_version >= \"3.12\""}, + {version = ">=0.3.6", markers = "python_version >= \"3.11\" and python_version < \"3.12\""}, ] -isort = ">=4.2.5,<6" +isort = ">=4.2.5,<5.13.0 || >5.13.0,<6" mccabe = ">=0.6,<0.8" platformdirs = ">=2.2.0" tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""} @@ -2202,17 +3132,17 @@ testutils = ["gitpython (>3)"] [[package]] name = "pymdown-extensions" -version = "10.3" +version = "10.7" description = "Extension pack for Python Markdown." -optional = true +optional = false python-versions = ">=3.8" files = [ - {file = "pymdown_extensions-10.3-py3-none-any.whl", hash = "sha256:77a82c621c58a83efc49a389159181d570e370fff9f810d3a4766a75fc678b66"}, - {file = "pymdown_extensions-10.3.tar.gz", hash = "sha256:94a0d8a03246712b64698af223848fd80aaf1ae4c4be29c8c61939b0467b5722"}, + {file = "pymdown_extensions-10.7-py3-none-any.whl", hash = "sha256:6ca215bc57bc12bf32b414887a68b810637d039124ed9b2e5bd3325cbb2c050c"}, + {file = "pymdown_extensions-10.7.tar.gz", hash = "sha256:c0d64d5cf62566f59e6b2b690a4095c931107c250a8c8e1351c1de5f6b036deb"}, ] [package.dependencies] -markdown = ">=3.2" +markdown = ">=3.5" pyyaml = "*" [package.extras] @@ -2220,13 +3150,13 @@ extra = ["pygments (>=2.12)"] [[package]] name = "pyparsing" -version = "3.0.9" +version = "3.1.1" description = "pyparsing module - Classes and methods to define and execute parsing grammars" optional = false python-versions = ">=3.6.8" files = [ - {file = "pyparsing-3.0.9-py3-none-any.whl", hash = "sha256:5026bae9a10eeaefb61dab2f09052b9f4307d44aee4eda64b309723d8d206bbc"}, - {file = "pyparsing-3.0.9.tar.gz", hash = "sha256:2b020ecf7d21b687f219b71ecad3631f644a47f01403fa1d1036b0c6416d70fb"}, + {file = "pyparsing-3.1.1-py3-none-any.whl", hash = "sha256:32c7c0b711493c72ff18a981d24f28aaf9c1fb7ed5e9667c9e84e3db623bdbfb"}, + {file = "pyparsing-3.1.1.tar.gz", hash = "sha256:ede28a1a32462f5a9705e07aea48001a08f7cf81a021585011deba701581a0db"}, ] [package.extras] @@ -2234,13 +3164,13 @@ diagrams = ["jinja2", "railroad-diagrams"] [[package]] name = "pytest" -version = "7.4.3" +version = "8.0.2" description = "pytest: simple powerful testing with Python" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "pytest-7.4.3-py3-none-any.whl", hash = "sha256:0d009c083ea859a71b76adf7c1d502e4bc170b80a8ef002da5806527b9591fac"}, - {file = "pytest-7.4.3.tar.gz", hash = "sha256:d989d136982de4e3b29dabcc838ad581c64e8ed52c11fbe86ddebd9da0818cd5"}, + {file = "pytest-8.0.2-py3-none-any.whl", hash = "sha256:edfaaef32ce5172d5466b5127b42e0d6d35ebbe4453f0e3505d96afd93f6b096"}, + {file = "pytest-8.0.2.tar.gz", hash = "sha256:d4051d623a2e0b7e51960ba963193b09ce6daeb9759a451844a21e4ddedfc1bd"}, ] [package.dependencies] @@ -2248,7 +3178,7 @@ colorama = {version = "*", markers = "sys_platform == \"win32\""} exceptiongroup = {version = ">=1.0.0rc8", markers = "python_version < \"3.11\""} iniconfig = "*" packaging = "*" -pluggy = ">=0.12,<2.0" +pluggy = ">=1.3.0,<2.0" tomli = {version = ">=1.0.0", markers = "python_version < \"3.11\""} [package.extras] @@ -2272,6 +3202,24 @@ pytest = ">=4.6" [package.extras] testing = ["fields", "hunter", "process-tests", "pytest-xdist", "six", "virtualenv"] +[[package]] +name = "pytest-env" +version = "1.1.3" +description = "pytest plugin that allows you to add environment variables." +optional = false +python-versions = ">=3.8" +files = [ + {file = "pytest_env-1.1.3-py3-none-any.whl", hash = "sha256:aada77e6d09fcfb04540a6e462c58533c37df35fa853da78707b17ec04d17dfc"}, + {file = "pytest_env-1.1.3.tar.gz", hash = "sha256:fcd7dc23bb71efd3d35632bde1bbe5ee8c8dc4489d6617fb010674880d96216b"}, +] + +[package.dependencies] +pytest = ">=7.4.3" +tomli = {version = ">=2.0.1", markers = "python_version < \"3.11\""} + +[package.extras] +test = ["covdefaults (>=2.3)", "coverage (>=7.3.2)", "pytest-mock (>=3.12)"] + [[package]] name = "pytest-randomly" version = "3.15.0" @@ -2289,13 +3237,13 @@ pytest = "*" [[package]] name = "pytest-xdist" -version = "3.4.0" +version = "3.5.0" description = "pytest xdist plugin for distributed testing, most importantly across multiple CPUs" optional = false python-versions = ">=3.7" files = [ - {file = "pytest-xdist-3.4.0.tar.gz", hash = "sha256:3a94a931dd9e268e0b871a877d09fe2efb6175c2c23d60d56a6001359002b832"}, - {file = "pytest_xdist-3.4.0-py3-none-any.whl", hash = "sha256:e513118bf787677a427e025606f55e95937565e06dfaac8d87f55301e57ae607"}, + {file = "pytest-xdist-3.5.0.tar.gz", hash = "sha256:cbb36f3d67e0c478baa57fa4edc8843887e0f6cfc42d677530a36d7472b32d8a"}, + {file = "pytest_xdist-3.5.0-py3-none-any.whl", hash = "sha256:d075629c7e00b611df89f490a5063944bee7a4362a5ff11c7cc7824a03dfce24"}, ] [package.dependencies] @@ -2322,27 +3270,16 @@ files = [ six = ">=1.5" [[package]] -name = "python-jose" -version = "3.3.0" -description = "JOSE implementation in Python" +name = "pytz" +version = "2024.1" +description = "World timezone definitions, modern and historical" optional = false python-versions = "*" files = [ - {file = "python-jose-3.3.0.tar.gz", hash = "sha256:55779b5e6ad599c6336191246e95eb2293a9ddebd555f796a65f838f07e5d78a"}, - {file = "python_jose-3.3.0-py2.py3-none-any.whl", hash = "sha256:9b1376b023f8b298536eedd47ae1089bcdb848f1535ab30555cd92002d78923a"}, + {file = "pytz-2024.1-py2.py3-none-any.whl", hash = "sha256:328171f4e3623139da4983451950b28e95ac706e13f3f2630a879749e7a8b319"}, + {file = "pytz-2024.1.tar.gz", hash = "sha256:2a29735ea9c18baf14b448846bde5a48030ed267578472d8955cd0e7443a9812"}, ] -[package.dependencies] -cryptography = {version = ">=3.4.0", optional = true, markers = "extra == \"cryptography\""} -ecdsa = "!=0.15" -pyasn1 = "*" -rsa = "*" - -[package.extras] -cryptography = ["cryptography (>=3.4.0)"] -pycrypto = ["pyasn1", "pycrypto (>=2.6.0,<2.7.0)"] -pycryptodome = ["pyasn1", "pycryptodome (>=3.3.1,<4.0.0)"] - [[package]] name = "pywin32" version = "306" @@ -2368,58 +3305,58 @@ files = [ [[package]] name = "pyyaml" -version = "6.0" +version = "6.0.1" description = "YAML parser and emitter for Python" optional = false python-versions = ">=3.6" files = [ - {file = "PyYAML-6.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d4db7c7aef085872ef65a8fd7d6d09a14ae91f691dec3e87ee5ee0539d516f53"}, - {file = "PyYAML-6.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9df7ed3b3d2e0ecfe09e14741b857df43adb5a3ddadc919a2d94fbdf78fea53c"}, - {file = "PyYAML-6.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:77f396e6ef4c73fdc33a9157446466f1cff553d979bd00ecb64385760c6babdc"}, - {file = "PyYAML-6.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a80a78046a72361de73f8f395f1f1e49f956c6be882eed58505a15f3e430962b"}, - {file = "PyYAML-6.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f84fbc98b019fef2ee9a1cb3ce93e3187a6df0b2538a651bfb890254ba9f90b5"}, - {file = "PyYAML-6.0-cp310-cp310-win32.whl", hash = "sha256:2cd5df3de48857ed0544b34e2d40e9fac445930039f3cfe4bcc592a1f836d513"}, - {file = "PyYAML-6.0-cp310-cp310-win_amd64.whl", hash = "sha256:daf496c58a8c52083df09b80c860005194014c3698698d1a57cbcfa182142a3a"}, - {file = "PyYAML-6.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:d4b0ba9512519522b118090257be113b9468d804b19d63c71dbcf4a48fa32358"}, - {file = "PyYAML-6.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:81957921f441d50af23654aa6c5e5eaf9b06aba7f0a19c18a538dc7ef291c5a1"}, - {file = "PyYAML-6.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:afa17f5bc4d1b10afd4466fd3a44dc0e245382deca5b3c353d8b757f9e3ecb8d"}, - {file = "PyYAML-6.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dbad0e9d368bb989f4515da330b88a057617d16b6a8245084f1b05400f24609f"}, - {file = "PyYAML-6.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:432557aa2c09802be39460360ddffd48156e30721f5e8d917f01d31694216782"}, - {file = "PyYAML-6.0-cp311-cp311-win32.whl", hash = "sha256:bfaef573a63ba8923503d27530362590ff4f576c626d86a9fed95822a8255fd7"}, - {file = "PyYAML-6.0-cp311-cp311-win_amd64.whl", hash = "sha256:01b45c0191e6d66c470b6cf1b9531a771a83c1c4208272ead47a3ae4f2f603bf"}, - {file = "PyYAML-6.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:897b80890765f037df3403d22bab41627ca8811ae55e9a722fd0392850ec4d86"}, - {file = "PyYAML-6.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:50602afada6d6cbfad699b0c7bb50d5ccffa7e46a3d738092afddc1f9758427f"}, - {file = "PyYAML-6.0-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:48c346915c114f5fdb3ead70312bd042a953a8ce5c7106d5bfb1a5254e47da92"}, - {file = "PyYAML-6.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:98c4d36e99714e55cfbaaee6dd5badbc9a1ec339ebfc3b1f52e293aee6bb71a4"}, - {file = "PyYAML-6.0-cp36-cp36m-win32.whl", hash = "sha256:0283c35a6a9fbf047493e3a0ce8d79ef5030852c51e9d911a27badfde0605293"}, - {file = "PyYAML-6.0-cp36-cp36m-win_amd64.whl", hash = "sha256:07751360502caac1c067a8132d150cf3d61339af5691fe9e87803040dbc5db57"}, - {file = "PyYAML-6.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:819b3830a1543db06c4d4b865e70ded25be52a2e0631ccd2f6a47a2822f2fd7c"}, - {file = "PyYAML-6.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:473f9edb243cb1935ab5a084eb238d842fb8f404ed2193a915d1784b5a6b5fc0"}, - {file = "PyYAML-6.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0ce82d761c532fe4ec3f87fc45688bdd3a4c1dc5e0b4a19814b9009a29baefd4"}, - {file = "PyYAML-6.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:231710d57adfd809ef5d34183b8ed1eeae3f76459c18fb4a0b373ad56bedcdd9"}, - {file = "PyYAML-6.0-cp37-cp37m-win32.whl", hash = "sha256:c5687b8d43cf58545ade1fe3e055f70eac7a5a1a0bf42824308d868289a95737"}, - {file = "PyYAML-6.0-cp37-cp37m-win_amd64.whl", hash = "sha256:d15a181d1ecd0d4270dc32edb46f7cb7733c7c508857278d3d378d14d606db2d"}, - {file = "PyYAML-6.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0b4624f379dab24d3725ffde76559cff63d9ec94e1736b556dacdfebe5ab6d4b"}, - {file = "PyYAML-6.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:213c60cd50106436cc818accf5baa1aba61c0189ff610f64f4a3e8c6726218ba"}, - {file = "PyYAML-6.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9fa600030013c4de8165339db93d182b9431076eb98eb40ee068700c9c813e34"}, - {file = "PyYAML-6.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:277a0ef2981ca40581a47093e9e2d13b3f1fbbeffae064c1d21bfceba2030287"}, - {file = "PyYAML-6.0-cp38-cp38-win32.whl", hash = "sha256:d4eccecf9adf6fbcc6861a38015c2a64f38b9d94838ac1810a9023a0609e1b78"}, - {file = "PyYAML-6.0-cp38-cp38-win_amd64.whl", hash = "sha256:1e4747bc279b4f613a09eb64bba2ba602d8a6664c6ce6396a4d0cd413a50ce07"}, - {file = "PyYAML-6.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:055d937d65826939cb044fc8c9b08889e8c743fdc6a32b33e2390f66013e449b"}, - {file = "PyYAML-6.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e61ceaab6f49fb8bdfaa0f92c4b57bcfbea54c09277b1b4f7ac376bfb7a7c174"}, - {file = "PyYAML-6.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d67d839ede4ed1b28a4e8909735fc992a923cdb84e618544973d7dfc71540803"}, - {file = "PyYAML-6.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cba8c411ef271aa037d7357a2bc8f9ee8b58b9965831d9e51baf703280dc73d3"}, - {file = "PyYAML-6.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:40527857252b61eacd1d9af500c3337ba8deb8fc298940291486c465c8b46ec0"}, - {file = "PyYAML-6.0-cp39-cp39-win32.whl", hash = "sha256:b5b9eccad747aabaaffbc6064800670f0c297e52c12754eb1d976c57e4f74dcb"}, - {file = "PyYAML-6.0-cp39-cp39-win_amd64.whl", hash = "sha256:b3d267842bf12586ba6c734f89d1f5b871df0273157918b0ccefa29deb05c21c"}, - {file = "PyYAML-6.0.tar.gz", hash = "sha256:68fb519c14306fec9720a2a5b45bc9f0c8d1b9c72adf45c37baedfcd949c35a2"}, + {file = "PyYAML-6.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d858aa552c999bc8a8d57426ed01e40bef403cd8ccdd0fc5f6f04a00414cac2a"}, + {file = "PyYAML-6.0.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:fd66fc5d0da6d9815ba2cebeb4205f95818ff4b79c3ebe268e75d961704af52f"}, + {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:69b023b2b4daa7548bcfbd4aa3da05b3a74b772db9e23b982788168117739938"}, + {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:81e0b275a9ecc9c0c0c07b4b90ba548307583c125f54d5b6946cfee6360c733d"}, + {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba336e390cd8e4d1739f42dfe9bb83a3cc2e80f567d8805e11b46f4a943f5515"}, + {file = "PyYAML-6.0.1-cp310-cp310-win32.whl", hash = "sha256:bd4af7373a854424dabd882decdc5579653d7868b8fb26dc7d0e99f823aa5924"}, + {file = "PyYAML-6.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:fd1592b3fdf65fff2ad0004b5e363300ef59ced41c2e6b3a99d4089fa8c5435d"}, + {file = "PyYAML-6.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6965a7bc3cf88e5a1c3bd2e0b5c22f8d677dc88a455344035f03399034eb3007"}, + {file = "PyYAML-6.0.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f003ed9ad21d6a4713f0a9b5a7a0a79e08dd0f221aff4525a2be4c346ee60aab"}, + {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42f8152b8dbc4fe7d96729ec2b99c7097d656dc1213a3229ca5383f973a5ed6d"}, + {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc"}, + {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d2b04aac4d386b172d5b9692e2d2da8de7bfb6c387fa4f801fbf6fb2e6ba4673"}, + {file = "PyYAML-6.0.1-cp311-cp311-win32.whl", hash = "sha256:1635fd110e8d85d55237ab316b5b011de701ea0f29d07611174a1b42f1444741"}, + {file = "PyYAML-6.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34"}, + {file = "PyYAML-6.0.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:50550eb667afee136e9a77d6dc71ae76a44df8b3e51e41b77f6de2932bfe0f47"}, + {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1fe35611261b29bd1de0070f0b2f47cb6ff71fa6595c077e42bd0c419fa27b98"}, + {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:704219a11b772aea0d8ecd7058d0082713c3562b4e271b849ad7dc4a5c90c13c"}, + {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:afd7e57eddb1a54f0f1a974bc4391af8bcce0b444685d936840f125cf046d5bd"}, + {file = "PyYAML-6.0.1-cp36-cp36m-win32.whl", hash = "sha256:fca0e3a251908a499833aa292323f32437106001d436eca0e6e7833256674585"}, + {file = "PyYAML-6.0.1-cp36-cp36m-win_amd64.whl", hash = "sha256:f22ac1c3cac4dbc50079e965eba2c1058622631e526bd9afd45fedd49ba781fa"}, + {file = "PyYAML-6.0.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:b1275ad35a5d18c62a7220633c913e1b42d44b46ee12554e5fd39c70a243d6a3"}, + {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:18aeb1bf9a78867dc38b259769503436b7c72f7a1f1f4c93ff9a17de54319b27"}, + {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:596106435fa6ad000c2991a98fa58eeb8656ef2325d7e158344fb33864ed87e3"}, + {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:baa90d3f661d43131ca170712d903e6295d1f7a0f595074f151c0aed377c9b9c"}, + {file = "PyYAML-6.0.1-cp37-cp37m-win32.whl", hash = "sha256:9046c58c4395dff28dd494285c82ba00b546adfc7ef001486fbf0324bc174fba"}, + {file = "PyYAML-6.0.1-cp37-cp37m-win_amd64.whl", hash = "sha256:4fb147e7a67ef577a588a0e2c17b6db51dda102c71de36f8549b6816a96e1867"}, + {file = "PyYAML-6.0.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1d4c7e777c441b20e32f52bd377e0c409713e8bb1386e1099c2415f26e479595"}, + {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a0cd17c15d3bb3fa06978b4e8958dcdc6e0174ccea823003a106c7d4d7899ac5"}, + {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:28c119d996beec18c05208a8bd78cbe4007878c6dd15091efb73a30e90539696"}, + {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7e07cbde391ba96ab58e532ff4803f79c4129397514e1413a7dc761ccd755735"}, + {file = "PyYAML-6.0.1-cp38-cp38-win32.whl", hash = "sha256:184c5108a2aca3c5b3d3bf9395d50893a7ab82a38004c8f61c258d4428e80206"}, + {file = "PyYAML-6.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:1e2722cc9fbb45d9b87631ac70924c11d3a401b2d7f410cc0e3bbf249f2dca62"}, + {file = "PyYAML-6.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9eb6caa9a297fc2c2fb8862bc5370d0303ddba53ba97e71f08023b6cd73d16a8"}, + {file = "PyYAML-6.0.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c8098ddcc2a85b61647b2590f825f3db38891662cfc2fc776415143f599bb859"}, + {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5773183b6446b2c99bb77e77595dd486303b4faab2b086e7b17bc6bef28865f6"}, + {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b786eecbdf8499b9ca1d697215862083bd6d2a99965554781d0d8d1ad31e13a0"}, + {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc1bf2925a1ecd43da378f4db9e4f799775d6367bdb94671027b73b393a7c42c"}, + {file = "PyYAML-6.0.1-cp39-cp39-win32.whl", hash = "sha256:faca3bdcf85b2fc05d06ff3fbc1f83e1391b3e724afa3feba7d13eeab355484c"}, + {file = "PyYAML-6.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:510c9deebc5c0225e8c96813043e62b680ba2f9c50a08d3724c7f28a747d1486"}, + {file = "PyYAML-6.0.1.tar.gz", hash = "sha256:bfdf460b1736c775f2ba9f6a92bca30bc2095067b8a9d77876d1fad6cc3b4a43"}, ] [[package]] name = "pyyaml-env-tag" version = "0.1" description = "A custom YAML tag for referencing environment variables in YAML files. " -optional = true +optional = false python-versions = ">=3.6" files = [ {file = "pyyaml_env_tag-0.1-py3-none-any.whl", hash = "sha256:af31106dec8a4d68c60207c1886031cbf839b68aa7abccdb19868200532c2069"}, @@ -2431,13 +3368,13 @@ pyyaml = "*" [[package]] name = "referencing" -version = "0.29.1" +version = "0.31.1" description = "JSON Referencing + Python" optional = false python-versions = ">=3.8" files = [ - {file = "referencing-0.29.1-py3-none-any.whl", hash = "sha256:d3c8f323ee1480095da44d55917cfb8278d73d6b4d5f677e3e40eb21314ac67f"}, - {file = "referencing-0.29.1.tar.gz", hash = "sha256:90cb53782d550ba28d2166ef3f55731f38397def8832baac5d45235f1995e35e"}, + {file = "referencing-0.31.1-py3-none-any.whl", hash = "sha256:c19c4d006f1757e3dd75c4f784d38f8698d87b649c54f9ace14e5e8c9667c01d"}, + {file = "referencing-0.31.1.tar.gz", hash = "sha256:81a1471c68c9d5e3831c30ad1dd9815c45b558e596653db751a2bfdd17b3b9ec"}, ] [package.dependencies] @@ -2446,99 +3383,104 @@ rpds-py = ">=0.7.0" [[package]] name = "regex" -version = "2023.8.8" +version = "2023.12.25" description = "Alternative regular expression module, to replace re." optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" files = [ - {file = "regex-2023.8.8-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:88900f521c645f784260a8d346e12a1590f79e96403971241e64c3a265c8ecdb"}, - {file = "regex-2023.8.8-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:3611576aff55918af2697410ff0293d6071b7e00f4b09e005d614686ac4cd57c"}, - {file = "regex-2023.8.8-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b8a0ccc8f2698f120e9e5742f4b38dc944c38744d4bdfc427616f3a163dd9de5"}, - {file = "regex-2023.8.8-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c662a4cbdd6280ee56f841f14620787215a171c4e2d1744c9528bed8f5816c96"}, - {file = "regex-2023.8.8-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cf0633e4a1b667bfe0bb10b5e53fe0d5f34a6243ea2530eb342491f1adf4f739"}, - {file = "regex-2023.8.8-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:551ad543fa19e94943c5b2cebc54c73353ffff08228ee5f3376bd27b3d5b9800"}, - {file = "regex-2023.8.8-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:54de2619f5ea58474f2ac211ceea6b615af2d7e4306220d4f3fe690c91988a61"}, - {file = "regex-2023.8.8-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:5ec4b3f0aebbbe2fc0134ee30a791af522a92ad9f164858805a77442d7d18570"}, - {file = "regex-2023.8.8-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:3ae646c35cb9f820491760ac62c25b6d6b496757fda2d51be429e0e7b67ae0ab"}, - {file = "regex-2023.8.8-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:ca339088839582d01654e6f83a637a4b8194d0960477b9769d2ff2cfa0fa36d2"}, - {file = "regex-2023.8.8-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:d9b6627408021452dcd0d2cdf8da0534e19d93d070bfa8b6b4176f99711e7f90"}, - {file = "regex-2023.8.8-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:bd3366aceedf274f765a3a4bc95d6cd97b130d1dda524d8f25225d14123c01db"}, - {file = "regex-2023.8.8-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:7aed90a72fc3654fba9bc4b7f851571dcc368120432ad68b226bd593f3f6c0b7"}, - {file = "regex-2023.8.8-cp310-cp310-win32.whl", hash = "sha256:80b80b889cb767cc47f31d2b2f3dec2db8126fbcd0cff31b3925b4dc6609dcdb"}, - {file = "regex-2023.8.8-cp310-cp310-win_amd64.whl", hash = "sha256:b82edc98d107cbc7357da7a5a695901b47d6eb0420e587256ba3ad24b80b7d0b"}, - {file = "regex-2023.8.8-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1e7d84d64c84ad97bf06f3c8cb5e48941f135ace28f450d86af6b6512f1c9a71"}, - {file = "regex-2023.8.8-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ce0f9fbe7d295f9922c0424a3637b88c6c472b75eafeaff6f910494a1fa719ef"}, - {file = "regex-2023.8.8-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:06c57e14ac723b04458df5956cfb7e2d9caa6e9d353c0b4c7d5d54fcb1325c46"}, - {file = "regex-2023.8.8-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e7a9aaa5a1267125eef22cef3b63484c3241aaec6f48949b366d26c7250e0357"}, - {file = "regex-2023.8.8-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9b7408511fca48a82a119d78a77c2f5eb1b22fe88b0d2450ed0756d194fe7a9a"}, - {file = "regex-2023.8.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:14dc6f2d88192a67d708341f3085df6a4f5a0c7b03dec08d763ca2cd86e9f559"}, - {file = "regex-2023.8.8-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:48c640b99213643d141550326f34f0502fedb1798adb3c9eb79650b1ecb2f177"}, - {file = "regex-2023.8.8-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0085da0f6c6393428bf0d9c08d8b1874d805bb55e17cb1dfa5ddb7cfb11140bf"}, - {file = "regex-2023.8.8-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:964b16dcc10c79a4a2be9f1273fcc2684a9eedb3906439720598029a797b46e6"}, - {file = "regex-2023.8.8-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:7ce606c14bb195b0e5108544b540e2c5faed6843367e4ab3deb5c6aa5e681208"}, - {file = "regex-2023.8.8-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:40f029d73b10fac448c73d6eb33d57b34607f40116e9f6e9f0d32e9229b147d7"}, - {file = "regex-2023.8.8-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3b8e6ea6be6d64104d8e9afc34c151926f8182f84e7ac290a93925c0db004bfd"}, - {file = "regex-2023.8.8-cp311-cp311-win32.whl", hash = "sha256:942f8b1f3b223638b02df7df79140646c03938d488fbfb771824f3d05fc083a8"}, - {file = "regex-2023.8.8-cp311-cp311-win_amd64.whl", hash = "sha256:51d8ea2a3a1a8fe4f67de21b8b93757005213e8ac3917567872f2865185fa7fb"}, - {file = "regex-2023.8.8-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:e951d1a8e9963ea51efd7f150450803e3b95db5939f994ad3d5edac2b6f6e2b4"}, - {file = "regex-2023.8.8-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:704f63b774218207b8ccc6c47fcef5340741e5d839d11d606f70af93ee78e4d4"}, - {file = "regex-2023.8.8-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:22283c769a7b01c8ac355d5be0715bf6929b6267619505e289f792b01304d898"}, - {file = "regex-2023.8.8-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:91129ff1bb0619bc1f4ad19485718cc623a2dc433dff95baadbf89405c7f6b57"}, - {file = "regex-2023.8.8-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:de35342190deb7b866ad6ba5cbcccb2d22c0487ee0cbb251efef0843d705f0d4"}, - {file = "regex-2023.8.8-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b993b6f524d1e274a5062488a43e3f9f8764ee9745ccd8e8193df743dbe5ee61"}, - {file = "regex-2023.8.8-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:3026cbcf11d79095a32d9a13bbc572a458727bd5b1ca332df4a79faecd45281c"}, - {file = "regex-2023.8.8-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:293352710172239bf579c90a9864d0df57340b6fd21272345222fb6371bf82b3"}, - {file = "regex-2023.8.8-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:d909b5a3fff619dc7e48b6b1bedc2f30ec43033ba7af32f936c10839e81b9217"}, - {file = "regex-2023.8.8-cp36-cp36m-musllinux_1_1_ppc64le.whl", hash = "sha256:3d370ff652323c5307d9c8e4c62efd1956fb08051b0e9210212bc51168b4ff56"}, - {file = "regex-2023.8.8-cp36-cp36m-musllinux_1_1_s390x.whl", hash = "sha256:b076da1ed19dc37788f6a934c60adf97bd02c7eea461b73730513921a85d4235"}, - {file = "regex-2023.8.8-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:e9941a4ada58f6218694f382e43fdd256e97615db9da135e77359da257a7168b"}, - {file = "regex-2023.8.8-cp36-cp36m-win32.whl", hash = "sha256:a8c65c17aed7e15a0c824cdc63a6b104dfc530f6fa8cb6ac51c437af52b481c7"}, - {file = "regex-2023.8.8-cp36-cp36m-win_amd64.whl", hash = "sha256:aadf28046e77a72f30dcc1ab185639e8de7f4104b8cb5c6dfa5d8ed860e57236"}, - {file = "regex-2023.8.8-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:423adfa872b4908843ac3e7a30f957f5d5282944b81ca0a3b8a7ccbbfaa06103"}, - {file = "regex-2023.8.8-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4ae594c66f4a7e1ea67232a0846649a7c94c188d6c071ac0210c3e86a5f92109"}, - {file = "regex-2023.8.8-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e51c80c168074faa793685656c38eb7a06cbad7774c8cbc3ea05552d615393d8"}, - {file = "regex-2023.8.8-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:09b7f4c66aa9d1522b06e31a54f15581c37286237208df1345108fcf4e050c18"}, - {file = "regex-2023.8.8-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2e73e5243af12d9cd6a9d6a45a43570dbe2e5b1cdfc862f5ae2b031e44dd95a8"}, - {file = "regex-2023.8.8-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:941460db8fe3bd613db52f05259c9336f5a47ccae7d7def44cc277184030a116"}, - {file = "regex-2023.8.8-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f0ccf3e01afeb412a1a9993049cb160d0352dba635bbca7762b2dc722aa5742a"}, - {file = "regex-2023.8.8-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:2e9216e0d2cdce7dbc9be48cb3eacb962740a09b011a116fd7af8c832ab116ca"}, - {file = "regex-2023.8.8-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:5cd9cd7170459b9223c5e592ac036e0704bee765706445c353d96f2890e816c8"}, - {file = "regex-2023.8.8-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:4873ef92e03a4309b3ccd8281454801b291b689f6ad45ef8c3658b6fa761d7ac"}, - {file = "regex-2023.8.8-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:239c3c2a339d3b3ddd51c2daef10874410917cd2b998f043c13e2084cb191684"}, - {file = "regex-2023.8.8-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:1005c60ed7037be0d9dea1f9c53cc42f836188227366370867222bda4c3c6bd7"}, - {file = "regex-2023.8.8-cp37-cp37m-win32.whl", hash = "sha256:e6bd1e9b95bc5614a7a9c9c44fde9539cba1c823b43a9f7bc11266446dd568e3"}, - {file = "regex-2023.8.8-cp37-cp37m-win_amd64.whl", hash = "sha256:9a96edd79661e93327cfeac4edec72a4046e14550a1d22aa0dd2e3ca52aec921"}, - {file = "regex-2023.8.8-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:f2181c20ef18747d5f4a7ea513e09ea03bdd50884a11ce46066bb90fe4213675"}, - {file = "regex-2023.8.8-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:a2ad5add903eb7cdde2b7c64aaca405f3957ab34f16594d2b78d53b8b1a6a7d6"}, - {file = "regex-2023.8.8-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9233ac249b354c54146e392e8a451e465dd2d967fc773690811d3a8c240ac601"}, - {file = "regex-2023.8.8-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:920974009fb37b20d32afcdf0227a2e707eb83fe418713f7a8b7de038b870d0b"}, - {file = "regex-2023.8.8-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cd2b6c5dfe0929b6c23dde9624483380b170b6e34ed79054ad131b20203a1a63"}, - {file = "regex-2023.8.8-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:96979d753b1dc3b2169003e1854dc67bfc86edf93c01e84757927f810b8c3c93"}, - {file = "regex-2023.8.8-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2ae54a338191e1356253e7883d9d19f8679b6143703086245fb14d1f20196be9"}, - {file = "regex-2023.8.8-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:2162ae2eb8b079622176a81b65d486ba50b888271302190870b8cc488587d280"}, - {file = "regex-2023.8.8-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:c884d1a59e69e03b93cf0dfee8794c63d7de0ee8f7ffb76e5f75be8131b6400a"}, - {file = "regex-2023.8.8-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:cf9273e96f3ee2ac89ffcb17627a78f78e7516b08f94dc435844ae72576a276e"}, - {file = "regex-2023.8.8-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:83215147121e15d5f3a45d99abeed9cf1fe16869d5c233b08c56cdf75f43a504"}, - {file = "regex-2023.8.8-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:3f7454aa427b8ab9101f3787eb178057c5250478e39b99540cfc2b889c7d0586"}, - {file = "regex-2023.8.8-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:f0640913d2c1044d97e30d7c41728195fc37e54d190c5385eacb52115127b882"}, - {file = "regex-2023.8.8-cp38-cp38-win32.whl", hash = "sha256:0c59122ceccb905a941fb23b087b8eafc5290bf983ebcb14d2301febcbe199c7"}, - {file = "regex-2023.8.8-cp38-cp38-win_amd64.whl", hash = "sha256:c12f6f67495ea05c3d542d119d270007090bad5b843f642d418eb601ec0fa7be"}, - {file = "regex-2023.8.8-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:82cd0a69cd28f6cc3789cc6adeb1027f79526b1ab50b1f6062bbc3a0ccb2dbc3"}, - {file = "regex-2023.8.8-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:bb34d1605f96a245fc39790a117ac1bac8de84ab7691637b26ab2c5efb8f228c"}, - {file = "regex-2023.8.8-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:987b9ac04d0b38ef4f89fbc035e84a7efad9cdd5f1e29024f9289182c8d99e09"}, - {file = "regex-2023.8.8-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9dd6082f4e2aec9b6a0927202c85bc1b09dcab113f97265127c1dc20e2e32495"}, - {file = "regex-2023.8.8-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7eb95fe8222932c10d4436e7a6f7c99991e3fdd9f36c949eff16a69246dee2dc"}, - {file = "regex-2023.8.8-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7098c524ba9f20717a56a8d551d2ed491ea89cbf37e540759ed3b776a4f8d6eb"}, - {file = "regex-2023.8.8-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4b694430b3f00eb02c594ff5a16db30e054c1b9589a043fe9174584c6efa8033"}, - {file = "regex-2023.8.8-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:b2aeab3895d778155054abea5238d0eb9a72e9242bd4b43f42fd911ef9a13470"}, - {file = "regex-2023.8.8-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:988631b9d78b546e284478c2ec15c8a85960e262e247b35ca5eaf7ee22f6050a"}, - {file = "regex-2023.8.8-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:67ecd894e56a0c6108ec5ab1d8fa8418ec0cff45844a855966b875d1039a2e34"}, - {file = "regex-2023.8.8-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:14898830f0a0eb67cae2bbbc787c1a7d6e34ecc06fbd39d3af5fe29a4468e2c9"}, - {file = "regex-2023.8.8-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:f2200e00b62568cfd920127782c61bc1c546062a879cdc741cfcc6976668dfcf"}, - {file = "regex-2023.8.8-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9691a549c19c22d26a4f3b948071e93517bdf86e41b81d8c6ac8a964bb71e5a6"}, - {file = "regex-2023.8.8-cp39-cp39-win32.whl", hash = "sha256:6ab2ed84bf0137927846b37e882745a827458689eb969028af8032b1b3dac78e"}, - {file = "regex-2023.8.8-cp39-cp39-win_amd64.whl", hash = "sha256:5543c055d8ec7801901e1193a51570643d6a6ab8751b1f7dd9af71af467538bb"}, - {file = "regex-2023.8.8.tar.gz", hash = "sha256:fcbdc5f2b0f1cd0f6a56cdb46fe41d2cce1e644e3b68832f3eeebc5fb0f7712e"}, + {file = "regex-2023.12.25-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:0694219a1d54336fd0445ea382d49d36882415c0134ee1e8332afd1529f0baa5"}, + {file = "regex-2023.12.25-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b014333bd0217ad3d54c143de9d4b9a3ca1c5a29a6d0d554952ea071cff0f1f8"}, + {file = "regex-2023.12.25-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d865984b3f71f6d0af64d0d88f5733521698f6c16f445bb09ce746c92c97c586"}, + {file = "regex-2023.12.25-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1e0eabac536b4cc7f57a5f3d095bfa557860ab912f25965e08fe1545e2ed8b4c"}, + {file = "regex-2023.12.25-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c25a8ad70e716f96e13a637802813f65d8a6760ef48672aa3502f4c24ea8b400"}, + {file = "regex-2023.12.25-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a9b6d73353f777630626f403b0652055ebfe8ff142a44ec2cf18ae470395766e"}, + {file = "regex-2023.12.25-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a9cc99d6946d750eb75827cb53c4371b8b0fe89c733a94b1573c9dd16ea6c9e4"}, + {file = "regex-2023.12.25-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:88d1f7bef20c721359d8675f7d9f8e414ec5003d8f642fdfd8087777ff7f94b5"}, + {file = "regex-2023.12.25-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:cb3fe77aec8f1995611f966d0c656fdce398317f850d0e6e7aebdfe61f40e1cd"}, + {file = "regex-2023.12.25-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:7aa47c2e9ea33a4a2a05f40fcd3ea36d73853a2aae7b4feab6fc85f8bf2c9704"}, + {file = "regex-2023.12.25-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:df26481f0c7a3f8739fecb3e81bc9da3fcfae34d6c094563b9d4670b047312e1"}, + {file = "regex-2023.12.25-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:c40281f7d70baf6e0db0c2f7472b31609f5bc2748fe7275ea65a0b4601d9b392"}, + {file = "regex-2023.12.25-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:d94a1db462d5690ebf6ae86d11c5e420042b9898af5dcf278bd97d6bda065423"}, + {file = "regex-2023.12.25-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:ba1b30765a55acf15dce3f364e4928b80858fa8f979ad41f862358939bdd1f2f"}, + {file = "regex-2023.12.25-cp310-cp310-win32.whl", hash = "sha256:150c39f5b964e4d7dba46a7962a088fbc91f06e606f023ce57bb347a3b2d4630"}, + {file = "regex-2023.12.25-cp310-cp310-win_amd64.whl", hash = "sha256:09da66917262d9481c719599116c7dc0c321ffcec4b1f510c4f8a066f8768105"}, + {file = "regex-2023.12.25-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:1b9d811f72210fa9306aeb88385b8f8bcef0dfbf3873410413c00aa94c56c2b6"}, + {file = "regex-2023.12.25-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:d902a43085a308cef32c0d3aea962524b725403fd9373dea18110904003bac97"}, + {file = "regex-2023.12.25-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d166eafc19f4718df38887b2bbe1467a4f74a9830e8605089ea7a30dd4da8887"}, + {file = "regex-2023.12.25-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c7ad32824b7f02bb3c9f80306d405a1d9b7bb89362d68b3c5a9be53836caebdb"}, + {file = "regex-2023.12.25-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:636ba0a77de609d6510235b7f0e77ec494d2657108f777e8765efc060094c98c"}, + {file = "regex-2023.12.25-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0fda75704357805eb953a3ee15a2b240694a9a514548cd49b3c5124b4e2ad01b"}, + {file = "regex-2023.12.25-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f72cbae7f6b01591f90814250e636065850c5926751af02bb48da94dfced7baa"}, + {file = "regex-2023.12.25-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:db2a0b1857f18b11e3b0e54ddfefc96af46b0896fb678c85f63fb8c37518b3e7"}, + {file = "regex-2023.12.25-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:7502534e55c7c36c0978c91ba6f61703faf7ce733715ca48f499d3dbbd7657e0"}, + {file = "regex-2023.12.25-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:e8c7e08bb566de4faaf11984af13f6bcf6a08f327b13631d41d62592681d24fe"}, + {file = "regex-2023.12.25-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:283fc8eed679758de38fe493b7d7d84a198b558942b03f017b1f94dda8efae80"}, + {file = "regex-2023.12.25-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:f44dd4d68697559d007462b0a3a1d9acd61d97072b71f6d1968daef26bc744bd"}, + {file = "regex-2023.12.25-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:67d3ccfc590e5e7197750fcb3a2915b416a53e2de847a728cfa60141054123d4"}, + {file = "regex-2023.12.25-cp311-cp311-win32.whl", hash = "sha256:68191f80a9bad283432385961d9efe09d783bcd36ed35a60fb1ff3f1ec2efe87"}, + {file = "regex-2023.12.25-cp311-cp311-win_amd64.whl", hash = "sha256:7d2af3f6b8419661a0c421584cfe8aaec1c0e435ce7e47ee2a97e344b98f794f"}, + {file = "regex-2023.12.25-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:8a0ccf52bb37d1a700375a6b395bff5dd15c50acb745f7db30415bae3c2b0715"}, + {file = "regex-2023.12.25-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c3c4a78615b7762740531c27cf46e2f388d8d727d0c0c739e72048beb26c8a9d"}, + {file = "regex-2023.12.25-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ad83e7545b4ab69216cef4cc47e344d19622e28aabec61574b20257c65466d6a"}, + {file = "regex-2023.12.25-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b7a635871143661feccce3979e1727c4e094f2bdfd3ec4b90dfd4f16f571a87a"}, + {file = "regex-2023.12.25-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d498eea3f581fbe1b34b59c697512a8baef88212f92e4c7830fcc1499f5b45a5"}, + {file = "regex-2023.12.25-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:43f7cd5754d02a56ae4ebb91b33461dc67be8e3e0153f593c509e21d219c5060"}, + {file = "regex-2023.12.25-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:51f4b32f793812714fd5307222a7f77e739b9bc566dc94a18126aba3b92b98a3"}, + {file = "regex-2023.12.25-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ba99d8077424501b9616b43a2d208095746fb1284fc5ba490139651f971d39d9"}, + {file = "regex-2023.12.25-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:4bfc2b16e3ba8850e0e262467275dd4d62f0d045e0e9eda2bc65078c0110a11f"}, + {file = "regex-2023.12.25-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:8c2c19dae8a3eb0ea45a8448356ed561be843b13cbc34b840922ddf565498c1c"}, + {file = "regex-2023.12.25-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:60080bb3d8617d96f0fb7e19796384cc2467447ef1c491694850ebd3670bc457"}, + {file = "regex-2023.12.25-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:b77e27b79448e34c2c51c09836033056a0547aa360c45eeeb67803da7b0eedaf"}, + {file = "regex-2023.12.25-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:518440c991f514331f4850a63560321f833979d145d7d81186dbe2f19e27ae3d"}, + {file = "regex-2023.12.25-cp312-cp312-win32.whl", hash = "sha256:e2610e9406d3b0073636a3a2e80db05a02f0c3169b5632022b4e81c0364bcda5"}, + {file = "regex-2023.12.25-cp312-cp312-win_amd64.whl", hash = "sha256:cc37b9aeebab425f11f27e5e9e6cf580be7206c6582a64467a14dda211abc232"}, + {file = "regex-2023.12.25-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:da695d75ac97cb1cd725adac136d25ca687da4536154cdc2815f576e4da11c69"}, + {file = "regex-2023.12.25-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d126361607b33c4eb7b36debc173bf25d7805847346dd4d99b5499e1fef52bc7"}, + {file = "regex-2023.12.25-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4719bb05094d7d8563a450cf8738d2e1061420f79cfcc1fa7f0a44744c4d8f73"}, + {file = "regex-2023.12.25-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5dd58946bce44b53b06d94aa95560d0b243eb2fe64227cba50017a8d8b3cd3e2"}, + {file = "regex-2023.12.25-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:22a86d9fff2009302c440b9d799ef2fe322416d2d58fc124b926aa89365ec482"}, + {file = "regex-2023.12.25-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2aae8101919e8aa05ecfe6322b278f41ce2994c4a430303c4cd163fef746e04f"}, + {file = "regex-2023.12.25-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:e692296c4cc2873967771345a876bcfc1c547e8dd695c6b89342488b0ea55cd8"}, + {file = "regex-2023.12.25-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:263ef5cc10979837f243950637fffb06e8daed7f1ac1e39d5910fd29929e489a"}, + {file = "regex-2023.12.25-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:d6f7e255e5fa94642a0724e35406e6cb7001c09d476ab5fce002f652b36d0c39"}, + {file = "regex-2023.12.25-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:88ad44e220e22b63b0f8f81f007e8abbb92874d8ced66f32571ef8beb0643b2b"}, + {file = "regex-2023.12.25-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:3a17d3ede18f9cedcbe23d2daa8a2cd6f59fe2bf082c567e43083bba3fb00347"}, + {file = "regex-2023.12.25-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:d15b274f9e15b1a0b7a45d2ac86d1f634d983ca40d6b886721626c47a400bf39"}, + {file = "regex-2023.12.25-cp37-cp37m-win32.whl", hash = "sha256:ed19b3a05ae0c97dd8f75a5d8f21f7723a8c33bbc555da6bbe1f96c470139d3c"}, + {file = "regex-2023.12.25-cp37-cp37m-win_amd64.whl", hash = "sha256:a6d1047952c0b8104a1d371f88f4ab62e6275567d4458c1e26e9627ad489b445"}, + {file = "regex-2023.12.25-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:b43523d7bc2abd757119dbfb38af91b5735eea45537ec6ec3a5ec3f9562a1c53"}, + {file = "regex-2023.12.25-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:efb2d82f33b2212898f1659fb1c2e9ac30493ac41e4d53123da374c3b5541e64"}, + {file = "regex-2023.12.25-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:b7fca9205b59c1a3d5031f7e64ed627a1074730a51c2a80e97653e3e9fa0d415"}, + {file = "regex-2023.12.25-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:086dd15e9435b393ae06f96ab69ab2d333f5d65cbe65ca5a3ef0ec9564dfe770"}, + {file = "regex-2023.12.25-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e81469f7d01efed9b53740aedd26085f20d49da65f9c1f41e822a33992cb1590"}, + {file = "regex-2023.12.25-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:34e4af5b27232f68042aa40a91c3b9bb4da0eeb31b7632e0091afc4310afe6cb"}, + {file = "regex-2023.12.25-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9852b76ab558e45b20bf1893b59af64a28bd3820b0c2efc80e0a70a4a3ea51c1"}, + {file = "regex-2023.12.25-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ff100b203092af77d1a5a7abe085b3506b7eaaf9abf65b73b7d6905b6cb76988"}, + {file = "regex-2023.12.25-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:cc038b2d8b1470364b1888a98fd22d616fba2b6309c5b5f181ad4483e0017861"}, + {file = "regex-2023.12.25-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:094ba386bb5c01e54e14434d4caabf6583334090865b23ef58e0424a6286d3dc"}, + {file = "regex-2023.12.25-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:5cd05d0f57846d8ba4b71d9c00f6f37d6b97d5e5ef8b3c3840426a475c8f70f4"}, + {file = "regex-2023.12.25-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:9aa1a67bbf0f957bbe096375887b2505f5d8ae16bf04488e8b0f334c36e31360"}, + {file = "regex-2023.12.25-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:98a2636994f943b871786c9e82bfe7883ecdaba2ef5df54e1450fa9869d1f756"}, + {file = "regex-2023.12.25-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:37f8e93a81fc5e5bd8db7e10e62dc64261bcd88f8d7e6640aaebe9bc180d9ce2"}, + {file = "regex-2023.12.25-cp38-cp38-win32.whl", hash = "sha256:d78bd484930c1da2b9679290a41cdb25cc127d783768a0369d6b449e72f88beb"}, + {file = "regex-2023.12.25-cp38-cp38-win_amd64.whl", hash = "sha256:b521dcecebc5b978b447f0f69b5b7f3840eac454862270406a39837ffae4e697"}, + {file = "regex-2023.12.25-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:f7bc09bc9c29ebead055bcba136a67378f03d66bf359e87d0f7c759d6d4ffa31"}, + {file = "regex-2023.12.25-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:e14b73607d6231f3cc4622809c196b540a6a44e903bcfad940779c80dffa7be7"}, + {file = "regex-2023.12.25-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:9eda5f7a50141291beda3edd00abc2d4a5b16c29c92daf8d5bd76934150f3edc"}, + {file = "regex-2023.12.25-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cc6bb9aa69aacf0f6032c307da718f61a40cf970849e471254e0e91c56ffca95"}, + {file = "regex-2023.12.25-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:298dc6354d414bc921581be85695d18912bea163a8b23cac9a2562bbcd5088b1"}, + {file = "regex-2023.12.25-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2f4e475a80ecbd15896a976aa0b386c5525d0ed34d5c600b6d3ebac0a67c7ddf"}, + {file = "regex-2023.12.25-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:531ac6cf22b53e0696f8e1d56ce2396311254eb806111ddd3922c9d937151dae"}, + {file = "regex-2023.12.25-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:22f3470f7524b6da61e2020672df2f3063676aff444db1daa283c2ea4ed259d6"}, + {file = "regex-2023.12.25-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:89723d2112697feaa320c9d351e5f5e7b841e83f8b143dba8e2d2b5f04e10923"}, + {file = "regex-2023.12.25-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0ecf44ddf9171cd7566ef1768047f6e66975788258b1c6c6ca78098b95cf9a3d"}, + {file = "regex-2023.12.25-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:905466ad1702ed4acfd67a902af50b8db1feeb9781436372261808df7a2a7bca"}, + {file = "regex-2023.12.25-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:4558410b7a5607a645e9804a3e9dd509af12fb72b9825b13791a37cd417d73a5"}, + {file = "regex-2023.12.25-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:7e316026cc1095f2a3e8cc012822c99f413b702eaa2ca5408a513609488cb62f"}, + {file = "regex-2023.12.25-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:3b1de218d5375cd6ac4b5493e0b9f3df2be331e86520f23382f216c137913d20"}, + {file = "regex-2023.12.25-cp39-cp39-win32.whl", hash = "sha256:11a963f8e25ab5c61348d090bf1b07f1953929c13bd2309a0662e9ff680763c9"}, + {file = "regex-2023.12.25-cp39-cp39-win_amd64.whl", hash = "sha256:e693e233ac92ba83a87024e1d32b5f9ab15ca55ddd916d878146f4e3406b5c91"}, + {file = "regex-2023.12.25.tar.gz", hash = "sha256:29171aa128da69afdf4bde412d5bedc335f2ca8fcfe4489038577d05f16181e5"}, ] [[package]] @@ -2564,18 +3506,17 @@ use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] [[package]] name = "requests-file" -version = "1.5.1" +version = "2.0.0" description = "File transport adapter for Requests" optional = false python-versions = "*" files = [ - {file = "requests-file-1.5.1.tar.gz", hash = "sha256:07d74208d3389d01c38ab89ef403af0cfec63957d53a0081d8eca738d0247d8e"}, - {file = "requests_file-1.5.1-py2.py3-none-any.whl", hash = "sha256:dfe5dae75c12481f68ba353183c53a65e6044c923e64c24b2209f6c7570ca953"}, + {file = "requests-file-2.0.0.tar.gz", hash = "sha256:20c5931629c558fda566cacc10cfe2cd502433e628f568c34c80d96a0cc95972"}, + {file = "requests_file-2.0.0-py2.py3-none-any.whl", hash = "sha256:3e493d390adb44aa102ebea827a48717336d5268968c370eaf19abaf5cae13bf"}, ] [package.dependencies] requests = ">=1.0.0" -six = "*" [[package]] name = "requests-oauthlib" @@ -2597,23 +3538,22 @@ rsa = ["oauthlib[signedtoken] (>=3.0.0)"] [[package]] name = "responses" -version = "0.23.1" +version = "0.25.0" description = "A utility library for mocking out the `requests` Python library." optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "responses-0.23.1-py3-none-any.whl", hash = "sha256:8a3a5915713483bf353b6f4079ba8b2a29029d1d1090a503c70b0dc5d9d0c7bd"}, - {file = "responses-0.23.1.tar.gz", hash = "sha256:c4d9aa9fc888188f0c673eff79a8dadbe2e75b7fe879dc80a221a06e0a68138f"}, + {file = "responses-0.25.0-py3-none-any.whl", hash = "sha256:2f0b9c2b6437db4b528619a77e5d565e4ec2a9532162ac1a131a83529db7be1a"}, + {file = "responses-0.25.0.tar.gz", hash = "sha256:01ae6a02b4f34e39bffceb0fc6786b67a25eae919c6368d05eabc8d9576c2a66"}, ] [package.dependencies] pyyaml = "*" -requests = ">=2.22.0,<3.0" -types-PyYAML = "*" -urllib3 = ">=1.25.10" +requests = ">=2.30.0,<3.0" +urllib3 = ">=1.25.10,<3.0" [package.extras] -tests = ["coverage (>=6.0.0)", "flake8", "mypy", "pytest (>=7.0.0)", "pytest-asyncio", "pytest-cov", "pytest-httpserver", "tomli", "tomli-w", "types-requests"] +tests = ["coverage (>=6.0.0)", "flake8", "mypy", "pytest (>=7.0.0)", "pytest-asyncio", "pytest-cov", "pytest-httpserver", "tomli", "tomli-w", "types-PyYAML", "types-requests"] [[package]] name = "rfc3339-validator" @@ -2631,17 +3571,17 @@ six = "*" [[package]] name = "rich" -version = "13.3.5" +version = "13.7.1" description = "Render rich text, tables, progress bars, syntax highlighting, markdown and more to the terminal" optional = false python-versions = ">=3.7.0" files = [ - {file = "rich-13.3.5-py3-none-any.whl", hash = "sha256:69cdf53799e63f38b95b9bf9c875f8c90e78dd62b2f00c13a911c7a3b9fa4704"}, - {file = "rich-13.3.5.tar.gz", hash = "sha256:2d11b9b8dd03868f09b4fffadc84a6a8cda574e40dc90821bd845720ebb8e89c"}, + {file = "rich-13.7.1-py3-none-any.whl", hash = "sha256:4edbae314f59eb482f54e9e30bf00d33350aaa94f4bfcd4e9e3110e64d0d7222"}, + {file = "rich-13.7.1.tar.gz", hash = "sha256:9be308cb1fe2f1f57d67ce99e95af38a1e2bc71ad9813b0e247cf7ffbcc3a432"}, ] [package.dependencies] -markdown-it-py = ">=2.2.0,<3.0.0" +markdown-it-py = ">=2.2.0" pygments = ">=2.13.0,<3.0.0" [package.extras] @@ -2649,108 +3589,110 @@ jupyter = ["ipywidgets (>=7.5.1,<9)"] [[package]] name = "rpds-py" -version = "0.8.10" +version = "0.18.0" description = "Python bindings to Rust's persistent data structures (rpds)" optional = false python-versions = ">=3.8" files = [ - {file = "rpds_py-0.8.10-cp310-cp310-macosx_10_7_x86_64.whl", hash = "sha256:93d06cccae15b3836247319eee7b6f1fdcd6c10dabb4e6d350d27bd0bdca2711"}, - {file = "rpds_py-0.8.10-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:3816a890a6a9e9f1de250afa12ca71c9a7a62f2b715a29af6aaee3aea112c181"}, - {file = "rpds_py-0.8.10-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a7c6304b894546b5a6bdc0fe15761fa53fe87d28527a7142dae8de3c663853e1"}, - {file = "rpds_py-0.8.10-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ad3bfb44c8840fb4be719dc58e229f435e227fbfbe133dc33f34981ff622a8f8"}, - {file = "rpds_py-0.8.10-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:14f1c356712f66653b777ecd8819804781b23dbbac4eade4366b94944c9e78ad"}, - {file = "rpds_py-0.8.10-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:82bb361cae4d0a627006dadd69dc2f36b7ad5dc1367af9d02e296ec565248b5b"}, - {file = "rpds_py-0.8.10-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b2e3c4f2a8e3da47f850d7ea0d7d56720f0f091d66add889056098c4b2fd576c"}, - {file = "rpds_py-0.8.10-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:15a90d0ac11b4499171067ae40a220d1ca3cb685ec0acc356d8f3800e07e4cb8"}, - {file = "rpds_py-0.8.10-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:70bb9c8004b97b4ef7ae56a2aa56dfaa74734a0987c78e7e85f00004ab9bf2d0"}, - {file = "rpds_py-0.8.10-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:d64f9f88d5203274a002b54442cafc9c7a1abff2a238f3e767b70aadf919b451"}, - {file = "rpds_py-0.8.10-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:ccbbd276642788c4376fbe8d4e6c50f0fb4972ce09ecb051509062915891cbf0"}, - {file = "rpds_py-0.8.10-cp310-none-win32.whl", hash = "sha256:fafc0049add8043ad07ab5382ee80d80ed7e3699847f26c9a5cf4d3714d96a84"}, - {file = "rpds_py-0.8.10-cp310-none-win_amd64.whl", hash = "sha256:915031002c86a5add7c6fd4beb601b2415e8a1c956590a5f91d825858e92fe6e"}, - {file = "rpds_py-0.8.10-cp311-cp311-macosx_10_7_x86_64.whl", hash = "sha256:84eb541a44f7a18f07a6bfc48b95240739e93defe1fdfb4f2a295f37837945d7"}, - {file = "rpds_py-0.8.10-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f59996d0550894affaad8743e97b9b9c98f638b221fac12909210ec3d9294786"}, - {file = "rpds_py-0.8.10-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f9adb5664b78fcfcd830000416c8cc69853ef43cb084d645b3f1f0296edd9bae"}, - {file = "rpds_py-0.8.10-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f96f3f98fbff7af29e9edf9a6584f3c1382e7788783d07ba3721790625caa43e"}, - {file = "rpds_py-0.8.10-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:376b8de737401050bd12810003d207e824380be58810c031f10ec563ff6aef3d"}, - {file = "rpds_py-0.8.10-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5d1c2bc319428d50b3e0fa6b673ab8cc7fa2755a92898db3a594cbc4eeb6d1f7"}, - {file = "rpds_py-0.8.10-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:73a1e48430f418f0ac3dfd87860e4cc0d33ad6c0f589099a298cb53724db1169"}, - {file = "rpds_py-0.8.10-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:134ec8f14ca7dbc6d9ae34dac632cdd60939fe3734b5d287a69683c037c51acb"}, - {file = "rpds_py-0.8.10-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:4b519bac7c09444dd85280fd60f28c6dde4389c88dddf4279ba9b630aca3bbbe"}, - {file = "rpds_py-0.8.10-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:9cd57981d9fab04fc74438d82460f057a2419974d69a96b06a440822d693b3c0"}, - {file = "rpds_py-0.8.10-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:69d089c026f6a8b9d64a06ff67dc3be196707b699d7f6ca930c25f00cf5e30d8"}, - {file = "rpds_py-0.8.10-cp311-none-win32.whl", hash = "sha256:220bdcad2d2936f674650d304e20ac480a3ce88a40fe56cd084b5780f1d104d9"}, - {file = "rpds_py-0.8.10-cp311-none-win_amd64.whl", hash = "sha256:6c6a0225b8501d881b32ebf3f5807a08ad3685b5eb5f0a6bfffd3a6e039b2055"}, - {file = "rpds_py-0.8.10-cp312-cp312-macosx_10_7_x86_64.whl", hash = "sha256:e3d0cd3dff0e7638a7b5390f3a53057c4e347f4ef122ee84ed93fc2fb7ea4aa2"}, - {file = "rpds_py-0.8.10-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:d77dff3a5aa5eedcc3da0ebd10ff8e4969bc9541aa3333a8d41715b429e99f47"}, - {file = "rpds_py-0.8.10-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:41c89a366eae49ad9e65ed443a8f94aee762931a1e3723749d72aeac80f5ef2f"}, - {file = "rpds_py-0.8.10-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3793c21494bad1373da517001d0849eea322e9a049a0e4789e50d8d1329df8e7"}, - {file = "rpds_py-0.8.10-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:805a5f3f05d186c5d50de2e26f765ba7896d0cc1ac5b14ffc36fae36df5d2f10"}, - {file = "rpds_py-0.8.10-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b01b39ad5411563031ea3977bbbc7324d82b088e802339e6296f082f78f6115c"}, - {file = "rpds_py-0.8.10-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f3f1e860be21f3e83011116a65e7310486300e08d9a3028e73e8d13bb6c77292"}, - {file = "rpds_py-0.8.10-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a13c8e56c46474cd5958d525ce6a9996727a83d9335684e41f5192c83deb6c58"}, - {file = "rpds_py-0.8.10-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:93d99f957a300d7a4ced41615c45aeb0343bb8f067c42b770b505de67a132346"}, - {file = "rpds_py-0.8.10-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:148b0b38d719c0760e31ce9285a9872972bdd7774969a4154f40c980e5beaca7"}, - {file = "rpds_py-0.8.10-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3cc5e5b5514796f45f03a568981971b12a3570f3de2e76114f7dc18d4b60a3c4"}, - {file = "rpds_py-0.8.10-cp38-cp38-macosx_10_7_x86_64.whl", hash = "sha256:e8e24b210a4deb5a7744971f8f77393005bae7f873568e37dfd9effe808be7f7"}, - {file = "rpds_py-0.8.10-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:b41941583adce4242af003d2a8337b066ba6148ca435f295f31ac6d9e4ea2722"}, - {file = "rpds_py-0.8.10-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3c490204e16bca4f835dba8467869fe7295cdeaa096e4c5a7af97f3454a97991"}, - {file = "rpds_py-0.8.10-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:1ee45cd1d84beed6cbebc839fd85c2e70a3a1325c8cfd16b62c96e2ffb565eca"}, - {file = "rpds_py-0.8.10-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4a8ca409f1252e1220bf09c57290b76cae2f14723746215a1e0506472ebd7bdf"}, - {file = "rpds_py-0.8.10-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:96b293c0498c70162effb13100624c5863797d99df75f2f647438bd10cbf73e4"}, - {file = "rpds_py-0.8.10-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b4627520a02fccbd324b33c7a83e5d7906ec746e1083a9ac93c41ac7d15548c7"}, - {file = "rpds_py-0.8.10-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e39d7ab0c18ac99955b36cd19f43926450baba21e3250f053e0704d6ffd76873"}, - {file = "rpds_py-0.8.10-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:ba9f1d1ebe4b63801977cec7401f2d41e888128ae40b5441270d43140efcad52"}, - {file = "rpds_py-0.8.10-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:802f42200d8caf7f25bbb2a6464cbd83e69d600151b7e3b49f49a47fa56b0a38"}, - {file = "rpds_py-0.8.10-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:d19db6ba816e7f59fc806c690918da80a7d186f00247048cd833acdab9b4847b"}, - {file = "rpds_py-0.8.10-cp38-none-win32.whl", hash = "sha256:7947e6e2c2ad68b1c12ee797d15e5f8d0db36331200b0346871492784083b0c6"}, - {file = "rpds_py-0.8.10-cp38-none-win_amd64.whl", hash = "sha256:fa326b3505d5784436d9433b7980171ab2375535d93dd63fbcd20af2b5ca1bb6"}, - {file = "rpds_py-0.8.10-cp39-cp39-macosx_10_7_x86_64.whl", hash = "sha256:7b38a9ac96eeb6613e7f312cd0014de64c3f07000e8bf0004ad6ec153bac46f8"}, - {file = "rpds_py-0.8.10-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c4d42e83ddbf3445e6514f0aff96dca511421ed0392d9977d3990d9f1ba6753c"}, - {file = "rpds_py-0.8.10-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1b21575031478609db6dbd1f0465e739fe0e7f424a8e7e87610a6c7f68b4eb16"}, - {file = "rpds_py-0.8.10-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:574868858a7ff6011192c023a5289158ed20e3f3b94b54f97210a773f2f22921"}, - {file = "rpds_py-0.8.10-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ae40f4a70a1f40939d66ecbaf8e7edc144fded190c4a45898a8cfe19d8fc85ea"}, - {file = "rpds_py-0.8.10-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:37f7ee4dc86db7af3bac6d2a2cedbecb8e57ce4ed081f6464510e537589f8b1e"}, - {file = "rpds_py-0.8.10-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:695f642a3a5dbd4ad2ffbbacf784716ecd87f1b7a460843b9ddf965ccaeafff4"}, - {file = "rpds_py-0.8.10-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f43ab4cb04bde6109eb2555528a64dfd8a265cc6a9920a67dcbde13ef53a46c8"}, - {file = "rpds_py-0.8.10-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:a11ab0d97be374efd04f640c04fe5c2d3dabc6dfb998954ea946ee3aec97056d"}, - {file = "rpds_py-0.8.10-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:92cf5b3ee60eef41f41e1a2cabca466846fb22f37fc580ffbcb934d1bcab225a"}, - {file = "rpds_py-0.8.10-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:ceaac0c603bf5ac2f505a78b2dcab78d3e6b706be6596c8364b64cc613d208d2"}, - {file = "rpds_py-0.8.10-cp39-none-win32.whl", hash = "sha256:dd4f16e57c12c0ae17606c53d1b57d8d1c8792efe3f065a37cb3341340599d49"}, - {file = "rpds_py-0.8.10-cp39-none-win_amd64.whl", hash = "sha256:c03a435d26c3999c2a8642cecad5d1c4d10c961817536af52035f6f4ee2f5dd0"}, - {file = "rpds_py-0.8.10-pp310-pypy310_pp73-macosx_10_7_x86_64.whl", hash = "sha256:0da53292edafecba5e1d8c1218f99babf2ed0bf1c791d83c0ab5c29b57223068"}, - {file = "rpds_py-0.8.10-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:7d20a8ed227683401cc508e7be58cba90cc97f784ea8b039c8cd01111e6043e0"}, - {file = "rpds_py-0.8.10-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:97cab733d303252f7c2f7052bf021a3469d764fc2b65e6dbef5af3cbf89d4892"}, - {file = "rpds_py-0.8.10-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8c398fda6df361a30935ab4c4bccb7f7a3daef2964ca237f607c90e9f3fdf66f"}, - {file = "rpds_py-0.8.10-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2eb4b08c45f8f8d8254cdbfacd3fc5d6b415d64487fb30d7380b0d0569837bf1"}, - {file = "rpds_py-0.8.10-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e7dfb1cbb895810fa2b892b68153c17716c6abaa22c7dc2b2f6dcf3364932a1c"}, - {file = "rpds_py-0.8.10-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:89c92b74e8bf6f53a6f4995fd52f4bd510c12f103ee62c99e22bc9e05d45583c"}, - {file = "rpds_py-0.8.10-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e9c0683cb35a9b5881b41bc01d5568ffc667910d9dbc632a1fba4e7d59e98773"}, - {file = "rpds_py-0.8.10-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:0eeb2731708207d0fe2619afe6c4dc8cb9798f7de052da891de5f19c0006c315"}, - {file = "rpds_py-0.8.10-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:7495010b658ec5b52835f21d8c8b1a7e52e194c50f095d4223c0b96c3da704b1"}, - {file = "rpds_py-0.8.10-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:c72ebc22e70e04126158c46ba56b85372bc4d54d00d296be060b0db1671638a4"}, - {file = "rpds_py-0.8.10-pp38-pypy38_pp73-macosx_10_7_x86_64.whl", hash = "sha256:2cd3045e7f6375dda64ed7db1c5136826facb0159ea982f77d9cf6125025bd34"}, - {file = "rpds_py-0.8.10-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:2418cf17d653d24ffb8b75e81f9f60b7ba1b009a23298a433a4720b2a0a17017"}, - {file = "rpds_py-0.8.10-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1a2edf8173ac0c7a19da21bc68818be1321998528b5e3f748d6ee90c0ba2a1fd"}, - {file = "rpds_py-0.8.10-pp38-pypy38_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7f29b8c55fd3a2bc48e485e37c4e2df3317f43b5cc6c4b6631c33726f52ffbb3"}, - {file = "rpds_py-0.8.10-pp38-pypy38_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9a7d20c1cf8d7b3960c5072c265ec47b3f72a0c608a9a6ee0103189b4f28d531"}, - {file = "rpds_py-0.8.10-pp38-pypy38_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:521fc8861a86ae54359edf53a15a05fabc10593cea7b3357574132f8427a5e5a"}, - {file = "rpds_py-0.8.10-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d5c191713e98e7c28800233f039a32a42c1a4f9a001a8a0f2448b07391881036"}, - {file = "rpds_py-0.8.10-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:083df0fafe199371206111583c686c985dddaf95ab3ee8e7b24f1fda54515d09"}, - {file = "rpds_py-0.8.10-pp38-pypy38_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:ed41f3f49507936a6fe7003985ea2574daccfef999775525d79eb67344e23767"}, - {file = "rpds_py-0.8.10-pp38-pypy38_pp73-musllinux_1_2_i686.whl", hash = "sha256:2614c2732bf45de5c7f9e9e54e18bc78693fa2f635ae58d2895b7965e470378c"}, - {file = "rpds_py-0.8.10-pp38-pypy38_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:c60528671d9d467009a6ec284582179f6b88651e83367d0ab54cb739021cd7de"}, - {file = "rpds_py-0.8.10-pp39-pypy39_pp73-macosx_10_7_x86_64.whl", hash = "sha256:ee744fca8d1ea822480a2a4e7c5f2e1950745477143668f0b523769426060f29"}, - {file = "rpds_py-0.8.10-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:a38b9f526d0d6cbdaa37808c400e3d9f9473ac4ff64d33d9163fd05d243dbd9b"}, - {file = "rpds_py-0.8.10-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:60e0e86e870350e03b3e25f9b1dd2c6cc72d2b5f24e070249418320a6f9097b7"}, - {file = "rpds_py-0.8.10-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f53f55a8852f0e49b0fc76f2412045d6ad9d5772251dea8f55ea45021616e7d5"}, - {file = "rpds_py-0.8.10-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c493365d3fad241d52f096e4995475a60a80f4eba4d3ff89b713bc65c2ca9615"}, - {file = "rpds_py-0.8.10-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:300eb606e6b94a7a26f11c8cc8ee59e295c6649bd927f91e1dbd37a4c89430b6"}, - {file = "rpds_py-0.8.10-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5a665f6f1a87614d1c3039baf44109094926dedf785e346d8b0a728e9cabd27a"}, - {file = "rpds_py-0.8.10-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:927d784648211447201d4c6f1babddb7971abad922b32257ab74de2f2750fad0"}, - {file = "rpds_py-0.8.10-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:c200b30dd573afa83847bed7e3041aa36a8145221bf0cfdfaa62d974d720805c"}, - {file = "rpds_py-0.8.10-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:08166467258fd0240a1256fce272f689f2360227ee41c72aeea103e9e4f63d2b"}, - {file = "rpds_py-0.8.10-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:996cc95830de9bc22b183661d95559ec6b3cd900ad7bc9154c4cbf5be0c9b734"}, - {file = "rpds_py-0.8.10.tar.gz", hash = "sha256:13e643ce8ad502a0263397362fb887594b49cf84bf518d6038c16f235f2bcea4"}, + {file = "rpds_py-0.18.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:5b4e7d8d6c9b2e8ee2d55c90b59c707ca59bc30058269b3db7b1f8df5763557e"}, + {file = "rpds_py-0.18.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c463ed05f9dfb9baebef68048aed8dcdc94411e4bf3d33a39ba97e271624f8f7"}, + {file = "rpds_py-0.18.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:01e36a39af54a30f28b73096dd39b6802eddd04c90dbe161c1b8dbe22353189f"}, + {file = "rpds_py-0.18.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d62dec4976954a23d7f91f2f4530852b0c7608116c257833922a896101336c51"}, + {file = "rpds_py-0.18.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:dd18772815d5f008fa03d2b9a681ae38d5ae9f0e599f7dda233c439fcaa00d40"}, + {file = "rpds_py-0.18.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:923d39efa3cfb7279a0327e337a7958bff00cc447fd07a25cddb0a1cc9a6d2da"}, + {file = "rpds_py-0.18.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:39514da80f971362f9267c600b6d459bfbbc549cffc2cef8e47474fddc9b45b1"}, + {file = "rpds_py-0.18.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a34d557a42aa28bd5c48a023c570219ba2593bcbbb8dc1b98d8cf5d529ab1434"}, + {file = "rpds_py-0.18.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:93df1de2f7f7239dc9cc5a4a12408ee1598725036bd2dedadc14d94525192fc3"}, + {file = "rpds_py-0.18.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:34b18ba135c687f4dac449aa5157d36e2cbb7c03cbea4ddbd88604e076aa836e"}, + {file = "rpds_py-0.18.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:c0b5dcf9193625afd8ecc92312d6ed78781c46ecbf39af9ad4681fc9f464af88"}, + {file = "rpds_py-0.18.0-cp310-none-win32.whl", hash = "sha256:c4325ff0442a12113a6379af66978c3fe562f846763287ef66bdc1d57925d337"}, + {file = "rpds_py-0.18.0-cp310-none-win_amd64.whl", hash = "sha256:7223a2a5fe0d217e60a60cdae28d6949140dde9c3bcc714063c5b463065e3d66"}, + {file = "rpds_py-0.18.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:3a96e0c6a41dcdba3a0a581bbf6c44bb863f27c541547fb4b9711fd8cf0ffad4"}, + {file = "rpds_py-0.18.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:30f43887bbae0d49113cbaab729a112251a940e9b274536613097ab8b4899cf6"}, + {file = "rpds_py-0.18.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fcb25daa9219b4cf3a0ab24b0eb9a5cc8949ed4dc72acb8fa16b7e1681aa3c58"}, + {file = "rpds_py-0.18.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d68c93e381010662ab873fea609bf6c0f428b6d0bb00f2c6939782e0818d37bf"}, + {file = "rpds_py-0.18.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b34b7aa8b261c1dbf7720b5d6f01f38243e9b9daf7e6b8bc1fd4657000062f2c"}, + {file = "rpds_py-0.18.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2e6d75ab12b0bbab7215e5d40f1e5b738aa539598db27ef83b2ec46747df90e1"}, + {file = "rpds_py-0.18.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0b8612cd233543a3781bc659c731b9d607de65890085098986dfd573fc2befe5"}, + {file = "rpds_py-0.18.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:aec493917dd45e3c69d00a8874e7cbed844efd935595ef78a0f25f14312e33c6"}, + {file = "rpds_py-0.18.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:661d25cbffaf8cc42e971dd570d87cb29a665f49f4abe1f9e76be9a5182c4688"}, + {file = "rpds_py-0.18.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:1df3659d26f539ac74fb3b0c481cdf9d725386e3552c6fa2974f4d33d78e544b"}, + {file = "rpds_py-0.18.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:a1ce3ba137ed54f83e56fb983a5859a27d43a40188ba798993812fed73c70836"}, + {file = "rpds_py-0.18.0-cp311-none-win32.whl", hash = "sha256:69e64831e22a6b377772e7fb337533c365085b31619005802a79242fee620bc1"}, + {file = "rpds_py-0.18.0-cp311-none-win_amd64.whl", hash = "sha256:998e33ad22dc7ec7e030b3df701c43630b5bc0d8fbc2267653577e3fec279afa"}, + {file = "rpds_py-0.18.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:7f2facbd386dd60cbbf1a794181e6aa0bd429bd78bfdf775436020172e2a23f0"}, + {file = "rpds_py-0.18.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1d9a5be316c15ffb2b3c405c4ff14448c36b4435be062a7f578ccd8b01f0c4d8"}, + {file = "rpds_py-0.18.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cd5bf1af8efe569654bbef5a3e0a56eca45f87cfcffab31dd8dde70da5982475"}, + {file = "rpds_py-0.18.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5417558f6887e9b6b65b4527232553c139b57ec42c64570569b155262ac0754f"}, + {file = "rpds_py-0.18.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:56a737287efecafc16f6d067c2ea0117abadcd078d58721f967952db329a3e5c"}, + {file = "rpds_py-0.18.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8f03bccbd8586e9dd37219bce4d4e0d3ab492e6b3b533e973fa08a112cb2ffc9"}, + {file = "rpds_py-0.18.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4457a94da0d5c53dc4b3e4de1158bdab077db23c53232f37a3cb7afdb053a4e3"}, + {file = "rpds_py-0.18.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0ab39c1ba9023914297dd88ec3b3b3c3f33671baeb6acf82ad7ce883f6e8e157"}, + {file = "rpds_py-0.18.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:9d54553c1136b50fd12cc17e5b11ad07374c316df307e4cfd6441bea5fb68496"}, + {file = "rpds_py-0.18.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:0af039631b6de0397ab2ba16eaf2872e9f8fca391b44d3d8cac317860a700a3f"}, + {file = "rpds_py-0.18.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:84ffab12db93b5f6bad84c712c92060a2d321b35c3c9960b43d08d0f639d60d7"}, + {file = "rpds_py-0.18.0-cp312-none-win32.whl", hash = "sha256:685537e07897f173abcf67258bee3c05c374fa6fff89d4c7e42fb391b0605e98"}, + {file = "rpds_py-0.18.0-cp312-none-win_amd64.whl", hash = "sha256:e003b002ec72c8d5a3e3da2989c7d6065b47d9eaa70cd8808b5384fbb970f4ec"}, + {file = "rpds_py-0.18.0-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:08f9ad53c3f31dfb4baa00da22f1e862900f45908383c062c27628754af2e88e"}, + {file = "rpds_py-0.18.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:c0013fe6b46aa496a6749c77e00a3eb07952832ad6166bd481c74bda0dcb6d58"}, + {file = "rpds_py-0.18.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e32a92116d4f2a80b629778280103d2a510a5b3f6314ceccd6e38006b5e92dcb"}, + {file = "rpds_py-0.18.0-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e541ec6f2ec456934fd279a3120f856cd0aedd209fc3852eca563f81738f6861"}, + {file = "rpds_py-0.18.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bed88b9a458e354014d662d47e7a5baafd7ff81c780fd91584a10d6ec842cb73"}, + {file = "rpds_py-0.18.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2644e47de560eb7bd55c20fc59f6daa04682655c58d08185a9b95c1970fa1e07"}, + {file = "rpds_py-0.18.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8e8916ae4c720529e18afa0b879473049e95949bf97042e938530e072fde061d"}, + {file = "rpds_py-0.18.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:465a3eb5659338cf2a9243e50ad9b2296fa15061736d6e26240e713522b6235c"}, + {file = "rpds_py-0.18.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:ea7d4a99f3b38c37eac212dbd6ec42b7a5ec51e2c74b5d3223e43c811609e65f"}, + {file = "rpds_py-0.18.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:67071a6171e92b6da534b8ae326505f7c18022c6f19072a81dcf40db2638767c"}, + {file = "rpds_py-0.18.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:41ef53e7c58aa4ef281da975f62c258950f54b76ec8e45941e93a3d1d8580594"}, + {file = "rpds_py-0.18.0-cp38-none-win32.whl", hash = "sha256:fdea4952db2793c4ad0bdccd27c1d8fdd1423a92f04598bc39425bcc2b8ee46e"}, + {file = "rpds_py-0.18.0-cp38-none-win_amd64.whl", hash = "sha256:7cd863afe7336c62ec78d7d1349a2f34c007a3cc6c2369d667c65aeec412a5b1"}, + {file = "rpds_py-0.18.0-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:5307def11a35f5ae4581a0b658b0af8178c65c530e94893345bebf41cc139d33"}, + {file = "rpds_py-0.18.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:77f195baa60a54ef9d2de16fbbfd3ff8b04edc0c0140a761b56c267ac11aa467"}, + {file = "rpds_py-0.18.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:39f5441553f1c2aed4de4377178ad8ff8f9d733723d6c66d983d75341de265ab"}, + {file = "rpds_py-0.18.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9a00312dea9310d4cb7dbd7787e722d2e86a95c2db92fbd7d0155f97127bcb40"}, + {file = "rpds_py-0.18.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8f2fc11e8fe034ee3c34d316d0ad8808f45bc3b9ce5857ff29d513f3ff2923a1"}, + {file = "rpds_py-0.18.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:586f8204935b9ec884500498ccc91aa869fc652c40c093bd9e1471fbcc25c022"}, + {file = "rpds_py-0.18.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ddc2f4dfd396c7bfa18e6ce371cba60e4cf9d2e5cdb71376aa2da264605b60b9"}, + {file = "rpds_py-0.18.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5ddcba87675b6d509139d1b521e0c8250e967e63b5909a7e8f8944d0f90ff36f"}, + {file = "rpds_py-0.18.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:7bd339195d84439cbe5771546fe8a4e8a7a045417d8f9de9a368c434e42a721e"}, + {file = "rpds_py-0.18.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:d7c36232a90d4755b720fbd76739d8891732b18cf240a9c645d75f00639a9024"}, + {file = "rpds_py-0.18.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:6b0817e34942b2ca527b0e9298373e7cc75f429e8da2055607f4931fded23e20"}, + {file = "rpds_py-0.18.0-cp39-none-win32.whl", hash = "sha256:99f70b740dc04d09e6b2699b675874367885217a2e9f782bdf5395632ac663b7"}, + {file = "rpds_py-0.18.0-cp39-none-win_amd64.whl", hash = "sha256:6ef687afab047554a2d366e112dd187b62d261d49eb79b77e386f94644363294"}, + {file = "rpds_py-0.18.0-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:ad36cfb355e24f1bd37cac88c112cd7730873f20fb0bdaf8ba59eedf8216079f"}, + {file = "rpds_py-0.18.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:36b3ee798c58ace201289024b52788161e1ea133e4ac93fba7d49da5fec0ef9e"}, + {file = "rpds_py-0.18.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f8a2f084546cc59ea99fda8e070be2fd140c3092dc11524a71aa8f0f3d5a55ca"}, + {file = "rpds_py-0.18.0-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e4461d0f003a0aa9be2bdd1b798a041f177189c1a0f7619fe8c95ad08d9a45d7"}, + {file = "rpds_py-0.18.0-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8db715ebe3bb7d86d77ac1826f7d67ec11a70dbd2376b7cc214199360517b641"}, + {file = "rpds_py-0.18.0-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:793968759cd0d96cac1e367afd70c235867831983f876a53389ad869b043c948"}, + {file = "rpds_py-0.18.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:66e6a3af5a75363d2c9a48b07cb27c4ea542938b1a2e93b15a503cdfa8490795"}, + {file = "rpds_py-0.18.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6ef0befbb5d79cf32d0266f5cff01545602344eda89480e1dd88aca964260b18"}, + {file = "rpds_py-0.18.0-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:1d4acf42190d449d5e89654d5c1ed3a4f17925eec71f05e2a41414689cda02d1"}, + {file = "rpds_py-0.18.0-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:a5f446dd5055667aabaee78487f2b5ab72e244f9bc0b2ffebfeec79051679984"}, + {file = "rpds_py-0.18.0-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:9dbbeb27f4e70bfd9eec1be5477517365afe05a9b2c441a0b21929ee61048124"}, + {file = "rpds_py-0.18.0-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:22806714311a69fd0af9b35b7be97c18a0fc2826e6827dbb3a8c94eac6cf7eeb"}, + {file = "rpds_py-0.18.0-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:b34ae4636dfc4e76a438ab826a0d1eed2589ca7d9a1b2d5bb546978ac6485461"}, + {file = "rpds_py-0.18.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8c8370641f1a7f0e0669ddccca22f1da893cef7628396431eb445d46d893e5cd"}, + {file = "rpds_py-0.18.0-pp38-pypy38_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c8362467a0fdeccd47935f22c256bec5e6abe543bf0d66e3d3d57a8fb5731863"}, + {file = "rpds_py-0.18.0-pp38-pypy38_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:11a8c85ef4a07a7638180bf04fe189d12757c696eb41f310d2426895356dcf05"}, + {file = "rpds_py-0.18.0-pp38-pypy38_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b316144e85316da2723f9d8dc75bada12fa58489a527091fa1d5a612643d1a0e"}, + {file = "rpds_py-0.18.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cf1ea2e34868f6fbf070e1af291c8180480310173de0b0c43fc38a02929fc0e3"}, + {file = "rpds_py-0.18.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e546e768d08ad55b20b11dbb78a745151acbd938f8f00d0cfbabe8b0199b9880"}, + {file = "rpds_py-0.18.0-pp38-pypy38_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:4901165d170a5fde6f589acb90a6b33629ad1ec976d4529e769c6f3d885e3e80"}, + {file = "rpds_py-0.18.0-pp38-pypy38_pp73-musllinux_1_2_i686.whl", hash = "sha256:618a3d6cae6ef8ec88bb76dd80b83cfe415ad4f1d942ca2a903bf6b6ff97a2da"}, + {file = "rpds_py-0.18.0-pp38-pypy38_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:ed4eb745efbff0a8e9587d22a84be94a5eb7d2d99c02dacf7bd0911713ed14dd"}, + {file = "rpds_py-0.18.0-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:6c81e5f372cd0dc5dc4809553d34f832f60a46034a5f187756d9b90586c2c307"}, + {file = "rpds_py-0.18.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:43fbac5f22e25bee1d482c97474f930a353542855f05c1161fd804c9dc74a09d"}, + {file = "rpds_py-0.18.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6d7faa6f14017c0b1e69f5e2c357b998731ea75a442ab3841c0dbbbfe902d2c4"}, + {file = "rpds_py-0.18.0-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:08231ac30a842bd04daabc4d71fddd7e6d26189406d5a69535638e4dcb88fe76"}, + {file = "rpds_py-0.18.0-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:044a3e61a7c2dafacae99d1e722cc2d4c05280790ec5a05031b3876809d89a5c"}, + {file = "rpds_py-0.18.0-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3f26b5bd1079acdb0c7a5645e350fe54d16b17bfc5e71f371c449383d3342e17"}, + {file = "rpds_py-0.18.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:482103aed1dfe2f3b71a58eff35ba105289b8d862551ea576bd15479aba01f66"}, + {file = "rpds_py-0.18.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1374f4129f9bcca53a1bba0bb86bf78325a0374577cf7e9e4cd046b1e6f20e24"}, + {file = "rpds_py-0.18.0-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:635dc434ff724b178cb192c70016cc0ad25a275228f749ee0daf0eddbc8183b1"}, + {file = "rpds_py-0.18.0-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:bc362ee4e314870a70f4ae88772d72d877246537d9f8cb8f7eacf10884862432"}, + {file = "rpds_py-0.18.0-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:4832d7d380477521a8c1644bbab6588dfedea5e30a7d967b5fb75977c45fd77f"}, + {file = "rpds_py-0.18.0.tar.gz", hash = "sha256:42821446ee7a76f5d9f71f9e33a4fb2ffd724bb3e7f93386150b61a43115788d"}, ] [[package]] @@ -2769,76 +3711,90 @@ pyasn1 = ">=0.1.3" [[package]] name = "ruamel-yaml" -version = "0.17.24" +version = "0.18.6" description = "ruamel.yaml is a YAML parser/emitter that supports roundtrip preservation of comments, seq/map flow style, and map key order" optional = false -python-versions = ">=3" +python-versions = ">=3.7" files = [ - {file = "ruamel.yaml-0.17.24-py3-none-any.whl", hash = "sha256:f251bd9096207af604af69d6495c3c650a3338d0493d27b04bc55477d7a884ed"}, - {file = "ruamel.yaml-0.17.24.tar.gz", hash = "sha256:90e398ee24524ebe20fc48cd1861cedd25520457b9a36cfb548613e57fde30a0"}, + {file = "ruamel.yaml-0.18.6-py3-none-any.whl", hash = "sha256:57b53ba33def16c4f3d807c0ccbc00f8a6081827e81ba2491691b76882d0c636"}, + {file = "ruamel.yaml-0.18.6.tar.gz", hash = "sha256:8b27e6a217e786c6fbe5634d8f3f11bc63e0f80f6a5890f28863d9c45aac311b"}, ] [package.dependencies] -"ruamel.yaml.clib" = {version = ">=0.2.7", markers = "platform_python_implementation == \"CPython\" and python_version < \"3.12\""} +"ruamel.yaml.clib" = {version = ">=0.2.7", markers = "platform_python_implementation == \"CPython\" and python_version < \"3.13\""} [package.extras] -docs = ["ryd"] +docs = ["mercurial (>5.7)", "ryd"] jinja2 = ["ruamel.yaml.jinja2 (>=0.2)"] [[package]] name = "ruamel-yaml-clib" -version = "0.2.7" +version = "0.2.8" description = "C version of reader, parser and emitter for ruamel.yaml derived from libyaml" optional = false -python-versions = ">=3.5" +python-versions = ">=3.6" files = [ - {file = "ruamel.yaml.clib-0.2.7-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d5859983f26d8cd7bb5c287ef452e8aacc86501487634573d260968f753e1d71"}, - {file = "ruamel.yaml.clib-0.2.7-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:debc87a9516b237d0466a711b18b6ebeb17ba9f391eb7f91c649c5c4ec5006c7"}, - {file = "ruamel.yaml.clib-0.2.7-cp310-cp310-manylinux2014_aarch64.whl", hash = "sha256:df5828871e6648db72d1c19b4bd24819b80a755c4541d3409f0f7acd0f335c80"}, - {file = "ruamel.yaml.clib-0.2.7-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:efa08d63ef03d079dcae1dfe334f6c8847ba8b645d08df286358b1f5293d24ab"}, - {file = "ruamel.yaml.clib-0.2.7-cp310-cp310-win32.whl", hash = "sha256:763d65baa3b952479c4e972669f679fe490eee058d5aa85da483ebae2009d231"}, - {file = "ruamel.yaml.clib-0.2.7-cp310-cp310-win_amd64.whl", hash = "sha256:d000f258cf42fec2b1bbf2863c61d7b8918d31ffee905da62dede869254d3b8a"}, - {file = "ruamel.yaml.clib-0.2.7-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:045e0626baf1c52e5527bd5db361bc83180faaba2ff586e763d3d5982a876a9e"}, - {file = "ruamel.yaml.clib-0.2.7-cp311-cp311-macosx_12_6_arm64.whl", hash = "sha256:721bc4ba4525f53f6a611ec0967bdcee61b31df5a56801281027a3a6d1c2daf5"}, - {file = "ruamel.yaml.clib-0.2.7-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:41d0f1fa4c6830176eef5b276af04c89320ea616655d01327d5ce65e50575c94"}, - {file = "ruamel.yaml.clib-0.2.7-cp311-cp311-win32.whl", hash = "sha256:f6d3d39611ac2e4f62c3128a9eed45f19a6608670c5a2f4f07f24e8de3441d38"}, - {file = "ruamel.yaml.clib-0.2.7-cp311-cp311-win_amd64.whl", hash = "sha256:da538167284de58a52109a9b89b8f6a53ff8437dd6dc26d33b57bf6699153122"}, - {file = "ruamel.yaml.clib-0.2.7-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:4b3a93bb9bc662fc1f99c5c3ea8e623d8b23ad22f861eb6fce9377ac07ad6072"}, - {file = "ruamel.yaml.clib-0.2.7-cp36-cp36m-macosx_12_0_arm64.whl", hash = "sha256:a234a20ae07e8469da311e182e70ef6b199d0fbeb6c6cc2901204dd87fb867e8"}, - {file = "ruamel.yaml.clib-0.2.7-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:15910ef4f3e537eea7fe45f8a5d19997479940d9196f357152a09031c5be59f3"}, - {file = "ruamel.yaml.clib-0.2.7-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:370445fd795706fd291ab00c9df38a0caed0f17a6fb46b0f607668ecb16ce763"}, - {file = "ruamel.yaml.clib-0.2.7-cp36-cp36m-win32.whl", hash = "sha256:ecdf1a604009bd35c674b9225a8fa609e0282d9b896c03dd441a91e5f53b534e"}, - {file = "ruamel.yaml.clib-0.2.7-cp36-cp36m-win_amd64.whl", hash = "sha256:f34019dced51047d6f70cb9383b2ae2853b7fc4dce65129a5acd49f4f9256646"}, - {file = "ruamel.yaml.clib-0.2.7-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:2aa261c29a5545adfef9296b7e33941f46aa5bbd21164228e833412af4c9c75f"}, - {file = "ruamel.yaml.clib-0.2.7-cp37-cp37m-macosx_12_0_arm64.whl", hash = "sha256:f01da5790e95815eb5a8a138508c01c758e5f5bc0ce4286c4f7028b8dd7ac3d0"}, - {file = "ruamel.yaml.clib-0.2.7-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:40d030e2329ce5286d6b231b8726959ebbe0404c92f0a578c0e2482182e38282"}, - {file = "ruamel.yaml.clib-0.2.7-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:c3ca1fbba4ae962521e5eb66d72998b51f0f4d0f608d3c0347a48e1af262efa7"}, - {file = "ruamel.yaml.clib-0.2.7-cp37-cp37m-win32.whl", hash = "sha256:7bdb4c06b063f6fd55e472e201317a3bb6cdeeee5d5a38512ea5c01e1acbdd93"}, - {file = "ruamel.yaml.clib-0.2.7-cp37-cp37m-win_amd64.whl", hash = "sha256:be2a7ad8fd8f7442b24323d24ba0b56c51219513cfa45b9ada3b87b76c374d4b"}, - {file = "ruamel.yaml.clib-0.2.7-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:91a789b4aa0097b78c93e3dc4b40040ba55bef518f84a40d4442f713b4094acb"}, - {file = "ruamel.yaml.clib-0.2.7-cp38-cp38-macosx_12_0_arm64.whl", hash = "sha256:99e77daab5d13a48a4054803d052ff40780278240a902b880dd37a51ba01a307"}, - {file = "ruamel.yaml.clib-0.2.7-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:3243f48ecd450eddadc2d11b5feb08aca941b5cd98c9b1db14b2fd128be8c697"}, - {file = "ruamel.yaml.clib-0.2.7-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:8831a2cedcd0f0927f788c5bdf6567d9dc9cc235646a434986a852af1cb54b4b"}, - {file = "ruamel.yaml.clib-0.2.7-cp38-cp38-win32.whl", hash = "sha256:3110a99e0f94a4a3470ff67fc20d3f96c25b13d24c6980ff841e82bafe827cac"}, - {file = "ruamel.yaml.clib-0.2.7-cp38-cp38-win_amd64.whl", hash = "sha256:92460ce908546ab69770b2e576e4f99fbb4ce6ab4b245345a3869a0a0410488f"}, - {file = "ruamel.yaml.clib-0.2.7-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5bc0667c1eb8f83a3752b71b9c4ba55ef7c7058ae57022dd9b29065186a113d9"}, - {file = "ruamel.yaml.clib-0.2.7-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:4a4d8d417868d68b979076a9be6a38c676eca060785abaa6709c7b31593c35d1"}, - {file = "ruamel.yaml.clib-0.2.7-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:bf9a6bc4a0221538b1a7de3ed7bca4c93c02346853f44e1cd764be0023cd3640"}, - {file = "ruamel.yaml.clib-0.2.7-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:a7b301ff08055d73223058b5c46c55638917f04d21577c95e00e0c4d79201a6b"}, - {file = "ruamel.yaml.clib-0.2.7-cp39-cp39-win32.whl", hash = "sha256:d5e51e2901ec2366b79f16c2299a03e74ba4531ddcfacc1416639c557aef0ad8"}, - {file = "ruamel.yaml.clib-0.2.7-cp39-cp39-win_amd64.whl", hash = "sha256:184faeaec61dbaa3cace407cffc5819f7b977e75360e8d5ca19461cd851a5fc5"}, - {file = "ruamel.yaml.clib-0.2.7.tar.gz", hash = "sha256:1f08fd5a2bea9c4180db71678e850b995d2a5f4537be0e94557668cf0f5f9497"}, + {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:b42169467c42b692c19cf539c38d4602069d8c1505e97b86387fcf7afb766e1d"}, + {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-macosx_13_0_arm64.whl", hash = "sha256:07238db9cbdf8fc1e9de2489a4f68474e70dffcb32232db7c08fa61ca0c7c462"}, + {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-manylinux2014_aarch64.whl", hash = "sha256:d92f81886165cb14d7b067ef37e142256f1c6a90a65cd156b063a43da1708cfd"}, + {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:fff3573c2db359f091e1589c3d7c5fc2f86f5bdb6f24252c2d8e539d4e45f412"}, + {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:840f0c7f194986a63d2c2465ca63af8ccbbc90ab1c6001b1978f05119b5e7334"}, + {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:024cfe1fc7c7f4e1aff4a81e718109e13409767e4f871443cbff3dba3578203d"}, + {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-win32.whl", hash = "sha256:c69212f63169ec1cfc9bb44723bf2917cbbd8f6191a00ef3410f5a7fe300722d"}, + {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-win_amd64.whl", hash = "sha256:cabddb8d8ead485e255fe80429f833172b4cadf99274db39abc080e068cbcc31"}, + {file = "ruamel.yaml.clib-0.2.8-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:bef08cd86169d9eafb3ccb0a39edb11d8e25f3dae2b28f5c52fd997521133069"}, + {file = "ruamel.yaml.clib-0.2.8-cp311-cp311-macosx_13_0_arm64.whl", hash = "sha256:b16420e621d26fdfa949a8b4b47ade8810c56002f5389970db4ddda51dbff248"}, + {file = "ruamel.yaml.clib-0.2.8-cp311-cp311-manylinux2014_aarch64.whl", hash = "sha256:b5edda50e5e9e15e54a6a8a0070302b00c518a9d32accc2346ad6c984aacd279"}, + {file = "ruamel.yaml.clib-0.2.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:25c515e350e5b739842fc3228d662413ef28f295791af5e5110b543cf0b57d9b"}, + {file = "ruamel.yaml.clib-0.2.8-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:46d378daaac94f454b3a0e3d8d78cafd78a026b1d71443f4966c696b48a6d899"}, + {file = "ruamel.yaml.clib-0.2.8-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:09b055c05697b38ecacb7ac50bdab2240bfca1a0c4872b0fd309bb07dc9aa3a9"}, + {file = "ruamel.yaml.clib-0.2.8-cp311-cp311-win32.whl", hash = "sha256:53a300ed9cea38cf5a2a9b069058137c2ca1ce658a874b79baceb8f892f915a7"}, + {file = "ruamel.yaml.clib-0.2.8-cp311-cp311-win_amd64.whl", hash = "sha256:c2a72e9109ea74e511e29032f3b670835f8a59bbdc9ce692c5b4ed91ccf1eedb"}, + {file = "ruamel.yaml.clib-0.2.8-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:ebc06178e8821efc9692ea7544aa5644217358490145629914d8020042c24aa1"}, + {file = "ruamel.yaml.clib-0.2.8-cp312-cp312-macosx_13_0_arm64.whl", hash = "sha256:edaef1c1200c4b4cb914583150dcaa3bc30e592e907c01117c08b13a07255ec2"}, + {file = "ruamel.yaml.clib-0.2.8-cp312-cp312-manylinux2014_aarch64.whl", hash = "sha256:7048c338b6c86627afb27faecf418768acb6331fc24cfa56c93e8c9780f815fa"}, + {file = "ruamel.yaml.clib-0.2.8-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d176b57452ab5b7028ac47e7b3cf644bcfdc8cacfecf7e71759f7f51a59e5c92"}, + {file = "ruamel.yaml.clib-0.2.8-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:3213ece08ea033eb159ac52ae052a4899b56ecc124bb80020d9bbceeb50258e9"}, + {file = "ruamel.yaml.clib-0.2.8-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:aab7fd643f71d7946f2ee58cc88c9b7bfc97debd71dcc93e03e2d174628e7e2d"}, + {file = "ruamel.yaml.clib-0.2.8-cp312-cp312-win32.whl", hash = "sha256:5c365d91c88390c8d0a8545df0b5857172824b1c604e867161e6b3d59a827eaa"}, + {file = "ruamel.yaml.clib-0.2.8-cp312-cp312-win_amd64.whl", hash = "sha256:1758ce7d8e1a29d23de54a16ae867abd370f01b5a69e1a3ba75223eaa3ca1a1b"}, + {file = "ruamel.yaml.clib-0.2.8-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:a5aa27bad2bb83670b71683aae140a1f52b0857a2deff56ad3f6c13a017a26ed"}, + {file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c58ecd827313af6864893e7af0a3bb85fd529f862b6adbefe14643947cfe2942"}, + {file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-macosx_12_0_arm64.whl", hash = "sha256:f481f16baec5290e45aebdc2a5168ebc6d35189ae6fea7a58787613a25f6e875"}, + {file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:3fcc54cb0c8b811ff66082de1680b4b14cf8a81dce0d4fbf665c2265a81e07a1"}, + {file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:7f67a1ee819dc4562d444bbafb135832b0b909f81cc90f7aa00260968c9ca1b3"}, + {file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:4ecbf9c3e19f9562c7fdd462e8d18dd902a47ca046a2e64dba80699f0b6c09b7"}, + {file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:87ea5ff66d8064301a154b3933ae406b0863402a799b16e4a1d24d9fbbcbe0d3"}, + {file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-win32.whl", hash = "sha256:75e1ed13e1f9de23c5607fe6bd1aeaae21e523b32d83bb33918245361e9cc51b"}, + {file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-win_amd64.whl", hash = "sha256:3f215c5daf6a9d7bbed4a0a4f760f3113b10e82ff4c5c44bec20a68c8014f675"}, + {file = "ruamel.yaml.clib-0.2.8-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1b617618914cb00bf5c34d4357c37aa15183fa229b24767259657746c9077615"}, + {file = "ruamel.yaml.clib-0.2.8-cp38-cp38-macosx_12_0_arm64.whl", hash = "sha256:a6a9ffd280b71ad062eae53ac1659ad86a17f59a0fdc7699fd9be40525153337"}, + {file = "ruamel.yaml.clib-0.2.8-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:665f58bfd29b167039f714c6998178d27ccd83984084c286110ef26b230f259f"}, + {file = "ruamel.yaml.clib-0.2.8-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:700e4ebb569e59e16a976857c8798aee258dceac7c7d6b50cab63e080058df91"}, + {file = "ruamel.yaml.clib-0.2.8-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:e2b4c44b60eadec492926a7270abb100ef9f72798e18743939bdbf037aab8c28"}, + {file = "ruamel.yaml.clib-0.2.8-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:e79e5db08739731b0ce4850bed599235d601701d5694c36570a99a0c5ca41a9d"}, + {file = "ruamel.yaml.clib-0.2.8-cp38-cp38-win32.whl", hash = "sha256:955eae71ac26c1ab35924203fda6220f84dce57d6d7884f189743e2abe3a9fbe"}, + {file = "ruamel.yaml.clib-0.2.8-cp38-cp38-win_amd64.whl", hash = "sha256:56f4252222c067b4ce51ae12cbac231bce32aee1d33fbfc9d17e5b8d6966c312"}, + {file = "ruamel.yaml.clib-0.2.8-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:03d1162b6d1df1caa3a4bd27aa51ce17c9afc2046c31b0ad60a0a96ec22f8001"}, + {file = "ruamel.yaml.clib-0.2.8-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:bba64af9fa9cebe325a62fa398760f5c7206b215201b0ec825005f1b18b9bccf"}, + {file = "ruamel.yaml.clib-0.2.8-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:9eb5dee2772b0f704ca2e45b1713e4e5198c18f515b52743576d196348f374d3"}, + {file = "ruamel.yaml.clib-0.2.8-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:da09ad1c359a728e112d60116f626cc9f29730ff3e0e7db72b9a2dbc2e4beed5"}, + {file = "ruamel.yaml.clib-0.2.8-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:184565012b60405d93838167f425713180b949e9d8dd0bbc7b49f074407c5a8b"}, + {file = "ruamel.yaml.clib-0.2.8-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a75879bacf2c987c003368cf14bed0ffe99e8e85acfa6c0bfffc21a090f16880"}, + {file = "ruamel.yaml.clib-0.2.8-cp39-cp39-win32.whl", hash = "sha256:84b554931e932c46f94ab306913ad7e11bba988104c5cff26d90d03f68258cd5"}, + {file = "ruamel.yaml.clib-0.2.8-cp39-cp39-win_amd64.whl", hash = "sha256:25ac8c08322002b06fa1d49d1646181f0b2c72f5cbc15a85e80b4c30a544bb15"}, + {file = "ruamel.yaml.clib-0.2.8.tar.gz", hash = "sha256:beb2e0404003de9a4cab9753a8805a8fe9320ee6673136ed7f04255fe60bb512"}, ] [[package]] name = "s3transfer" -version = "0.6.1" +version = "0.6.2" description = "An Amazon S3 Transfer Manager" optional = false python-versions = ">= 3.7" files = [ - {file = "s3transfer-0.6.1-py3-none-any.whl", hash = "sha256:3c0da2d074bf35d6870ef157158641178a4204a6e689e82546083e31e0311346"}, - {file = "s3transfer-0.6.1.tar.gz", hash = "sha256:640bb492711f4c0c0905e1f62b6aaeb771881935ad27884852411f8e9cacbca9"}, + {file = "s3transfer-0.6.2-py3-none-any.whl", hash = "sha256:b014be3a8a2aab98cfe1abc7229cc5a9a0cf05eb9c1f2b86b230fd8df3f78084"}, + {file = "s3transfer-0.6.2.tar.gz", hash = "sha256:cab66d3380cca3e70939ef2255d01cd8aece6a4907a9528740f668c4b0611861"}, ] [package.dependencies] @@ -2849,26 +3805,54 @@ crt = ["botocore[crt] (>=1.20.29,<2.0a.0)"] [[package]] name = "safety" -version = "2.3.5" +version = "3.0.1" description = "Checks installed dependencies for known vulnerabilities and licenses." optional = false -python-versions = "*" +python-versions = ">=3.7" files = [ - {file = "safety-2.3.5-py3-none-any.whl", hash = "sha256:2227fcac1b22b53c1615af78872b48348661691450aa25d6704a5504dbd1f7e2"}, - {file = "safety-2.3.5.tar.gz", hash = "sha256:a60c11f8952f412cbb165d70cb1f673a3b43a2ba9a93ce11f97e6a4de834aa3a"}, + {file = "safety-3.0.1-py3-none-any.whl", hash = "sha256:1ed058bc4bef132b974e58d7fcad020fb897cd255328016f8a5a194b94ca91d2"}, + {file = "safety-3.0.1.tar.gz", hash = "sha256:1f2000f03652f3a0bfc67f8fd1e98bc5723ccb76e15cb1bdd68545c3d803df01"}, ] [package.dependencies] +Authlib = ">=1.2.0" Click = ">=8.0.2" -dparse = ">=0.6.2" -packaging = ">=21.0,<22.0" +dparse = ">=0.6.4b0" +jinja2 = ">=3.1.0" +marshmallow = ">=3.15.0" +packaging = ">=21.0" +pydantic = ">=1.10.12,<2.0" requests = "*" +rich = "*" "ruamel.yaml" = ">=0.17.21" -setuptools = ">=19.3" +safety-schemas = ">=0.0.1" +setuptools = ">=65.5.1" +typer = "*" +typing-extensions = ">=4.7.1" +urllib3 = ">=1.26.5" [package.extras] -github = ["jinja2 (>=3.1.0)", "pygithub (>=1.43.3)"] +github = ["pygithub (>=1.43.3)"] gitlab = ["python-gitlab (>=1.3.0)"] +spdx = ["spdx-tools (>=0.8.2)"] + +[[package]] +name = "safety-schemas" +version = "0.0.2" +description = "Schemas for Safety tools" +optional = false +python-versions = ">=3.7" +files = [ + {file = "safety_schemas-0.0.2-py3-none-any.whl", hash = "sha256:277c077ce6e53221874a87c29515ffdd2f3773a6db4d035a9f67cc98db3b8c7f"}, + {file = "safety_schemas-0.0.2.tar.gz", hash = "sha256:7d1b040ec06480f05cff6b45ea7a93e09c8942df864fb0d01ddeb67c323cfa8c"}, +] + +[package.dependencies] +dparse = ">=0.6.4b0" +packaging = ">=21.0" +pydantic = "*" +ruamel-yaml = ">=0.17.21" +typing-extensions = ">=4.7.1" [[package]] name = "sarif-om" @@ -2901,28 +3885,28 @@ contextlib2 = ">=0.5.5" [[package]] name = "setuptools" -version = "67.7.2" +version = "69.1.1" description = "Easily download, build, install, upgrade, and uninstall Python packages" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "setuptools-67.7.2-py3-none-any.whl", hash = "sha256:23aaf86b85ca52ceb801d32703f12d77517b2556af839621c641fca11287952b"}, - {file = "setuptools-67.7.2.tar.gz", hash = "sha256:f104fa03692a2602fa0fec6c6a9e63b6c8a968de13e17c026957dd1f53d80990"}, + {file = "setuptools-69.1.1-py3-none-any.whl", hash = "sha256:02fa291a0471b3a18b2b2481ed902af520c69e8ae0919c13da936542754b4c56"}, + {file = "setuptools-69.1.1.tar.gz", hash = "sha256:5c0806c7d9af348e6dd3777b4f4dbb42c7ad85b190104837488eab9a7c945cf8"}, ] [package.extras] -docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-hoverxref (<2)", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (==0.8.3)", "sphinx-reredirects", "sphinxcontrib-towncrier"] -testing = ["build[virtualenv]", "filelock (>=3.4.0)", "flake8 (<5)", "flake8-2020", "ini2toml[lite] (>=0.9)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pip (>=19.1)", "pip-run (>=8.8)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)", "pytest-perf", "pytest-timeout", "pytest-xdist", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] -testing-integration = ["build[virtualenv]", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"] +docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (<7.2.5)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier"] +testing = ["build[virtualenv]", "filelock (>=3.4.0)", "flake8-2020", "ini2toml[lite] (>=0.9)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "packaging (>=23.2)", "pip (>=19.1)", "pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-home (>=0.5)", "pytest-mypy (>=0.9.1)", "pytest-perf", "pytest-ruff (>=0.2.1)", "pytest-timeout", "pytest-xdist", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] +testing-integration = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "packaging (>=23.2)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"] [[package]] name = "shodan" -version = "1.30.1" +version = "1.31.0" description = "Python library and command-line utility for Shodan (https://developer.shodan.io)" optional = false python-versions = "*" files = [ - {file = "shodan-1.30.1.tar.gz", hash = "sha256:bedb6e8c2b4459592c1bc17b4d4b57dab0cb58a455ad589ee26a6304242cd505"}, + {file = "shodan-1.31.0.tar.gz", hash = "sha256:c73275386ea02390e196c35c660706a28dd4d537c5a21eb387ab6236fac251f6"}, ] [package.dependencies] @@ -2946,57 +3930,60 @@ files = [ [[package]] name = "slack-sdk" -version = "3.24.0" +version = "3.27.0" description = "The Slack API Platform SDK for Python" optional = false -python-versions = ">=3.6.0" +python-versions = ">=3.6" files = [ - {file = "slack_sdk-3.24.0-py2.py3-none-any.whl", hash = "sha256:cae64f0177a53d34cca59cc691d4535edd18929843a936b97cea421db9e4fbfe"}, - {file = "slack_sdk-3.24.0.tar.gz", hash = "sha256:741ea5381e65f4407d24ed81203912cbd6bfe807a6704b1d3c5ad346c86000b6"}, + {file = "slack_sdk-3.27.0-py2.py3-none-any.whl", hash = "sha256:a901c68cb5547d5459cdefd81343d116db56d65f6b33f4081ddf1cdd243bf07e"}, + {file = "slack_sdk-3.27.0.tar.gz", hash = "sha256:811472ce598db855ab3c02f098fa430323ccb253cfe17ba20c7b05ab206d984d"}, ] [package.extras] -optional = ["SQLAlchemy (>=1.4,<3)", "aiodns (>1.0)", "aiohttp (>=3.7.3,<4)", "boto3 (<=2)", "websocket-client (>=1,<2)", "websockets (>=10,<11)"] -testing = ["Flask (>=1,<2)", "Flask-Sockets (>=0.2,<1)", "Jinja2 (==3.0.3)", "Werkzeug (<2)", "black (==22.8.0)", "boto3 (<=2)", "click (==8.0.4)", "flake8 (>=5,<6)", "itsdangerous (==1.1.0)", "moto (>=3,<4)", "psutil (>=5,<6)", "pytest (>=6.2.5,<7)", "pytest-asyncio (<1)", "pytest-cov (>=2,<3)"] +optional = ["SQLAlchemy (>=1.4,<3)", "aiodns (>1.0)", "aiohttp (>=3.7.3,<4)", "boto3 (<=2)", "websocket-client (>=1,<2)", "websockets (>=10,<11)", "websockets (>=9.1,<10)"] [[package]] name = "smmap" -version = "5.0.0" +version = "5.0.1" description = "A pure Python implementation of a sliding window memory map manager" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" files = [ - {file = "smmap-5.0.0-py3-none-any.whl", hash = "sha256:2aba19d6a040e78d8b09de5c57e96207b09ed71d8e55ce0959eeee6c8e190d94"}, - {file = "smmap-5.0.0.tar.gz", hash = "sha256:c840e62059cd3be204b0c9c9f74be2c09d5648eddd4580d9314c3ecde0b30936"}, + {file = "smmap-5.0.1-py3-none-any.whl", hash = "sha256:e6d8668fa5f93e706934a62d7b4db19c8d9eb8cf2adbb75ef1b675aa332b69da"}, + {file = "smmap-5.0.1.tar.gz", hash = "sha256:dceeb6c0028fdb6734471eb07c0cd2aae706ccaecab45965ee83f11c8d3b1f62"}, ] [[package]] -name = "sshpubkeys" -version = "3.3.1" -description = "SSH public key parser" +name = "sniffio" +version = "1.3.1" +description = "Sniff out which async library your code is running under" optional = false -python-versions = ">=3" +python-versions = ">=3.7" files = [ - {file = "sshpubkeys-3.3.1-py2.py3-none-any.whl", hash = "sha256:946f76b8fe86704b0e7c56a00d80294e39bc2305999844f079a217885060b1ac"}, - {file = "sshpubkeys-3.3.1.tar.gz", hash = "sha256:3020ed4f8c846849299370fbe98ff4157b0ccc1accec105e07cfa9ae4bb55064"}, + {file = "sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2"}, + {file = "sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc"}, ] -[package.dependencies] -cryptography = ">=2.1.4" -ecdsa = ">=0.13" - -[package.extras] -dev = ["twine", "wheel", "yapf"] +[[package]] +name = "std-uritemplate" +version = "0.0.54" +description = "std-uritemplate implementation for Python" +optional = false +python-versions = ">=3.8,<4.0" +files = [ + {file = "std_uritemplate-0.0.54-py3-none-any.whl", hash = "sha256:b58c0db64675df084af4d22d63e17f07cd2588d85c2633fb49582985ea002936"}, + {file = "std_uritemplate-0.0.54.tar.gz", hash = "sha256:1552a7077bff4fb795e8842468a43c085ba620c7373cf94080d3853688507fd4"}, +] [[package]] name = "stevedore" -version = "5.0.0" +version = "5.2.0" description = "Manage dynamic plugins for Python applications" optional = false python-versions = ">=3.8" files = [ - {file = "stevedore-5.0.0-py3-none-any.whl", hash = "sha256:bd5a71ff5e5e5f5ea983880e4a1dd1bb47f8feebbb3d95b592398e2f02194771"}, - {file = "stevedore-5.0.0.tar.gz", hash = "sha256:2c428d2338976279e8eb2196f7a94910960d9f7ba2f41f3988511e95ca447021"}, + {file = "stevedore-5.2.0-py3-none-any.whl", hash = "sha256:1c15d95766ca0569cad14cb6272d4d31dae66b011a929d7c18219c176ea1b5c9"}, + {file = "stevedore-5.2.0.tar.gz", hash = "sha256:46b93ca40e1114cea93d738a6c1e365396981bb6bb78c27045b7587c9473544d"}, ] [package.dependencies] @@ -3032,13 +4019,13 @@ widechars = ["wcwidth"] [[package]] name = "tldextract" -version = "3.4.4" +version = "5.1.1" description = "Accurately separates a URL's subdomain, domain, and public suffix, using the Public Suffix List (PSL). By default, this includes the public ICANN TLDs and their exceptions. You can optionally support the Public Suffix List's private domains as well." optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "tldextract-3.4.4-py3-none-any.whl", hash = "sha256:581e7dbefc90e7bb857bb6f768d25c811a3c5f0892ed56a9a2999ddb7b1b70c2"}, - {file = "tldextract-3.4.4.tar.gz", hash = "sha256:5fe3210c577463545191d45ad522d3d5e78d55218ce97215e82004dcae1e1234"}, + {file = "tldextract-5.1.1-py3-none-any.whl", hash = "sha256:b9c4510a8766d377033b6bace7e9f1f17a891383ced3c5d50c150f181e9e1cc2"}, + {file = "tldextract-5.1.1.tar.gz", hash = "sha256:9b6dbf803cb5636397f0203d48541c0da8ba53babaf0e8a6feda2d88746813d4"}, ] [package.dependencies] @@ -3047,16 +4034,8 @@ idna = "*" requests = ">=2.1.0" requests-file = ">=1.4" -[[package]] -name = "toml" -version = "0.10.2" -description = "Python Library for Tom's Obvious, Minimal Language" -optional = false -python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" -files = [ - {file = "toml-0.10.2-py2.py3-none-any.whl", hash = "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b"}, - {file = "toml-0.10.2.tar.gz", hash = "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f"}, -] +[package.extras] +testing = ["black", "mypy", "pytest", "pytest-gitignore", "pytest-mock", "responses", "ruff", "tox", "types-filelock", "types-requests"] [[package]] name = "tomli" @@ -3071,35 +4050,56 @@ files = [ [[package]] name = "tomlkit" -version = "0.11.8" +version = "0.12.4" description = "Style preserving TOML library" optional = false python-versions = ">=3.7" files = [ - {file = "tomlkit-0.11.8-py3-none-any.whl", hash = "sha256:8c726c4c202bdb148667835f68d68780b9a003a9ec34167b6c673b38eff2a171"}, - {file = "tomlkit-0.11.8.tar.gz", hash = "sha256:9330fc7faa1db67b541b28e62018c17d20be733177d290a13b24c62d1614e0c3"}, + {file = "tomlkit-0.12.4-py3-none-any.whl", hash = "sha256:5cd82d48a3dd89dee1f9d64420aa20ae65cfbd00668d6f094d7578a78efbb77b"}, + {file = "tomlkit-0.12.4.tar.gz", hash = "sha256:7ca1cfc12232806517a8515047ba66a19369e71edf2439d0f5824f91032b6cc3"}, ] [[package]] -name = "types-pyyaml" -version = "6.0.12.9" -description = "Typing stubs for PyYAML" +name = "typer" +version = "0.9.0" +description = "Typer, build great CLIs. Easy to code. Based on Python type hints." optional = false -python-versions = "*" +python-versions = ">=3.6" files = [ - {file = "types-PyYAML-6.0.12.9.tar.gz", hash = "sha256:c51b1bd6d99ddf0aa2884a7a328810ebf70a4262c292195d3f4f9a0005f9eeb6"}, - {file = "types_PyYAML-6.0.12.9-py3-none-any.whl", hash = "sha256:5aed5aa66bd2d2e158f75dda22b059570ede988559f030cf294871d3b647e3e8"}, + {file = "typer-0.9.0-py3-none-any.whl", hash = "sha256:5d96d986a21493606a358cae4461bd8cdf83cbf33a5aa950ae629ca3b51467ee"}, + {file = "typer-0.9.0.tar.gz", hash = "sha256:50922fd79aea2f4751a8e0408ff10d2662bd0c8bbfa84755a699f3bada2978b2"}, ] +[package.dependencies] +click = ">=7.1.1,<9.0.0" +typing-extensions = ">=3.7.4.3" + +[package.extras] +all = ["colorama (>=0.4.3,<0.5.0)", "rich (>=10.11.0,<14.0.0)", "shellingham (>=1.3.0,<2.0.0)"] +dev = ["autoflake (>=1.3.1,<2.0.0)", "flake8 (>=3.8.3,<4.0.0)", "pre-commit (>=2.17.0,<3.0.0)"] +doc = ["cairosvg (>=2.5.2,<3.0.0)", "mdx-include (>=1.4.1,<2.0.0)", "mkdocs (>=1.1.2,<2.0.0)", "mkdocs-material (>=8.1.4,<9.0.0)", "pillow (>=9.3.0,<10.0.0)"] +test = ["black (>=22.3.0,<23.0.0)", "coverage (>=6.2,<7.0)", "isort (>=5.0.6,<6.0.0)", "mypy (==0.910)", "pytest (>=4.4.0,<8.0.0)", "pytest-cov (>=2.10.0,<5.0.0)", "pytest-sugar (>=0.9.4,<0.10.0)", "pytest-xdist (>=1.32.0,<4.0.0)", "rich (>=10.11.0,<14.0.0)", "shellingham (>=1.3.0,<2.0.0)"] + [[package]] name = "typing-extensions" -version = "4.5.0" -description = "Backported and Experimental Type Hints for Python 3.7+" +version = "4.10.0" +description = "Backported and Experimental Type Hints for Python 3.8+" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" +files = [ + {file = "typing_extensions-4.10.0-py3-none-any.whl", hash = "sha256:69b1a937c3a517342112fb4c6df7e72fc39a38e7891a5730ed4985b5214b5475"}, + {file = "typing_extensions-4.10.0.tar.gz", hash = "sha256:b0abd7c89e8fb96f98db18d86106ff1d90ab692004eb746cf6eda2682f91b3cb"}, +] + +[[package]] +name = "tzdata" +version = "2024.1" +description = "Provider of IANA time zone data" +optional = false +python-versions = ">=2" files = [ - {file = "typing_extensions-4.5.0-py3-none-any.whl", hash = "sha256:fb33085c39dd998ac16d1431ebc293a8b3eedd00fd4a32de0ff79002c19511b4"}, - {file = "typing_extensions-4.5.0.tar.gz", hash = "sha256:5cb5f4a79139d699607b3ef622a1dedafa84e115ab0024e0d9c044a9479ca7cb"}, + {file = "tzdata-2024.1-py2.py3-none-any.whl", hash = "sha256:9068bc196136463f5245e51efda838afa15aaeca9903f49050dfa2679db4d252"}, + {file = "tzdata-2024.1.tar.gz", hash = "sha256:2674120f8d891909751c38abcdfd386ac0a5a1127954fbc332af6b5ceae07efd"}, ] [[package]] @@ -3131,52 +4131,54 @@ socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] [[package]] name = "vulture" -version = "2.10" +version = "2.11" description = "Find dead code" optional = false python-versions = ">=3.8" files = [ - {file = "vulture-2.10-py2.py3-none-any.whl", hash = "sha256:568a4176db7468d0157817ae3bb1847a19f1ddc629849af487f9d3b279bff77d"}, - {file = "vulture-2.10.tar.gz", hash = "sha256:2a5c3160bffba77595b6e6dfcc412016bd2a09cd4b66cdf7fbba913684899f6f"}, + {file = "vulture-2.11-py2.py3-none-any.whl", hash = "sha256:12d745f7710ffbf6aeb8279ba9068a24d4e52e8ed333b8b044035c9d6b823aba"}, + {file = "vulture-2.11.tar.gz", hash = "sha256:f0fbb60bce6511aad87ee0736c502456737490a82d919a44e6d92262cb35f1c2"}, ] [package.dependencies] -toml = "*" +tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""} [[package]] name = "watchdog" -version = "3.0.0" +version = "4.0.0" description = "Filesystem events monitoring" -optional = true -python-versions = ">=3.7" +optional = false +python-versions = ">=3.8" files = [ - {file = "watchdog-3.0.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:336adfc6f5cc4e037d52db31194f7581ff744b67382eb6021c868322e32eef41"}, - {file = "watchdog-3.0.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:a70a8dcde91be523c35b2bf96196edc5730edb347e374c7de7cd20c43ed95397"}, - {file = "watchdog-3.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:adfdeab2da79ea2f76f87eb42a3ab1966a5313e5a69a0213a3cc06ef692b0e96"}, - {file = "watchdog-3.0.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:2b57a1e730af3156d13b7fdddfc23dea6487fceca29fc75c5a868beed29177ae"}, - {file = "watchdog-3.0.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:7ade88d0d778b1b222adebcc0927428f883db07017618a5e684fd03b83342bd9"}, - {file = "watchdog-3.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:7e447d172af52ad204d19982739aa2346245cc5ba6f579d16dac4bfec226d2e7"}, - {file = "watchdog-3.0.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:9fac43a7466eb73e64a9940ac9ed6369baa39b3bf221ae23493a9ec4d0022674"}, - {file = "watchdog-3.0.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:8ae9cda41fa114e28faf86cb137d751a17ffd0316d1c34ccf2235e8a84365c7f"}, - {file = "watchdog-3.0.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:25f70b4aa53bd743729c7475d7ec41093a580528b100e9a8c5b5efe8899592fc"}, - {file = "watchdog-3.0.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4f94069eb16657d2c6faada4624c39464f65c05606af50bb7902e036e3219be3"}, - {file = "watchdog-3.0.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:7c5f84b5194c24dd573fa6472685b2a27cc5a17fe5f7b6fd40345378ca6812e3"}, - {file = "watchdog-3.0.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3aa7f6a12e831ddfe78cdd4f8996af9cf334fd6346531b16cec61c3b3c0d8da0"}, - {file = "watchdog-3.0.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:233b5817932685d39a7896b1090353fc8efc1ef99c9c054e46c8002561252fb8"}, - {file = "watchdog-3.0.0-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:13bbbb462ee42ec3c5723e1205be8ced776f05b100e4737518c67c8325cf6100"}, - {file = "watchdog-3.0.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:8f3ceecd20d71067c7fd4c9e832d4e22584318983cabc013dbf3f70ea95de346"}, - {file = "watchdog-3.0.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:c9d8c8ec7efb887333cf71e328e39cffbf771d8f8f95d308ea4125bf5f90ba64"}, - {file = "watchdog-3.0.0-py3-none-manylinux2014_aarch64.whl", hash = "sha256:0e06ab8858a76e1219e68c7573dfeba9dd1c0219476c5a44d5333b01d7e1743a"}, - {file = "watchdog-3.0.0-py3-none-manylinux2014_armv7l.whl", hash = "sha256:d00e6be486affb5781468457b21a6cbe848c33ef43f9ea4a73b4882e5f188a44"}, - {file = "watchdog-3.0.0-py3-none-manylinux2014_i686.whl", hash = "sha256:c07253088265c363d1ddf4b3cdb808d59a0468ecd017770ed716991620b8f77a"}, - {file = "watchdog-3.0.0-py3-none-manylinux2014_ppc64.whl", hash = "sha256:5113334cf8cf0ac8cd45e1f8309a603291b614191c9add34d33075727a967709"}, - {file = "watchdog-3.0.0-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:51f90f73b4697bac9c9a78394c3acbbd331ccd3655c11be1a15ae6fe289a8c83"}, - {file = "watchdog-3.0.0-py3-none-manylinux2014_s390x.whl", hash = "sha256:ba07e92756c97e3aca0912b5cbc4e5ad802f4557212788e72a72a47ff376950d"}, - {file = "watchdog-3.0.0-py3-none-manylinux2014_x86_64.whl", hash = "sha256:d429c2430c93b7903914e4db9a966c7f2b068dd2ebdd2fa9b9ce094c7d459f33"}, - {file = "watchdog-3.0.0-py3-none-win32.whl", hash = "sha256:3ed7c71a9dccfe838c2f0b6314ed0d9b22e77d268c67e015450a29036a81f60f"}, - {file = "watchdog-3.0.0-py3-none-win_amd64.whl", hash = "sha256:4c9956d27be0bb08fc5f30d9d0179a855436e655f046d288e2bcc11adfae893c"}, - {file = "watchdog-3.0.0-py3-none-win_ia64.whl", hash = "sha256:5d9f3a10e02d7371cd929b5d8f11e87d4bad890212ed3901f9b4d68767bee759"}, - {file = "watchdog-3.0.0.tar.gz", hash = "sha256:4d98a320595da7a7c5a18fc48cb633c2e73cda78f93cac2ef42d42bf609a33f9"}, + {file = "watchdog-4.0.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:39cb34b1f1afbf23e9562501673e7146777efe95da24fab5707b88f7fb11649b"}, + {file = "watchdog-4.0.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c522392acc5e962bcac3b22b9592493ffd06d1fc5d755954e6be9f4990de932b"}, + {file = "watchdog-4.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6c47bdd680009b11c9ac382163e05ca43baf4127954c5f6d0250e7d772d2b80c"}, + {file = "watchdog-4.0.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:8350d4055505412a426b6ad8c521bc7d367d1637a762c70fdd93a3a0d595990b"}, + {file = "watchdog-4.0.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c17d98799f32e3f55f181f19dd2021d762eb38fdd381b4a748b9f5a36738e935"}, + {file = "watchdog-4.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4986db5e8880b0e6b7cd52ba36255d4793bf5cdc95bd6264806c233173b1ec0b"}, + {file = "watchdog-4.0.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:11e12fafb13372e18ca1bbf12d50f593e7280646687463dd47730fd4f4d5d257"}, + {file = "watchdog-4.0.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:5369136a6474678e02426bd984466343924d1df8e2fd94a9b443cb7e3aa20d19"}, + {file = "watchdog-4.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:76ad8484379695f3fe46228962017a7e1337e9acadafed67eb20aabb175df98b"}, + {file = "watchdog-4.0.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:45cc09cc4c3b43fb10b59ef4d07318d9a3ecdbff03abd2e36e77b6dd9f9a5c85"}, + {file = "watchdog-4.0.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:eed82cdf79cd7f0232e2fdc1ad05b06a5e102a43e331f7d041e5f0e0a34a51c4"}, + {file = "watchdog-4.0.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:ba30a896166f0fee83183cec913298151b73164160d965af2e93a20bbd2ab605"}, + {file = "watchdog-4.0.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:d18d7f18a47de6863cd480734613502904611730f8def45fc52a5d97503e5101"}, + {file = "watchdog-4.0.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:2895bf0518361a9728773083908801a376743bcc37dfa252b801af8fd281b1ca"}, + {file = "watchdog-4.0.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:87e9df830022488e235dd601478c15ad73a0389628588ba0b028cb74eb72fed8"}, + {file = "watchdog-4.0.0-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:6e949a8a94186bced05b6508faa61b7adacc911115664ccb1923b9ad1f1ccf7b"}, + {file = "watchdog-4.0.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:6a4db54edea37d1058b08947c789a2354ee02972ed5d1e0dca9b0b820f4c7f92"}, + {file = "watchdog-4.0.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:d31481ccf4694a8416b681544c23bd271f5a123162ab603c7d7d2dd7dd901a07"}, + {file = "watchdog-4.0.0-py3-none-manylinux2014_aarch64.whl", hash = "sha256:8fec441f5adcf81dd240a5fe78e3d83767999771630b5ddfc5867827a34fa3d3"}, + {file = "watchdog-4.0.0-py3-none-manylinux2014_armv7l.whl", hash = "sha256:6a9c71a0b02985b4b0b6d14b875a6c86ddea2fdbebd0c9a720a806a8bbffc69f"}, + {file = "watchdog-4.0.0-py3-none-manylinux2014_i686.whl", hash = "sha256:557ba04c816d23ce98a06e70af6abaa0485f6d94994ec78a42b05d1c03dcbd50"}, + {file = "watchdog-4.0.0-py3-none-manylinux2014_ppc64.whl", hash = "sha256:d0f9bd1fd919134d459d8abf954f63886745f4660ef66480b9d753a7c9d40927"}, + {file = "watchdog-4.0.0-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:f9b2fdca47dc855516b2d66eef3c39f2672cbf7e7a42e7e67ad2cbfcd6ba107d"}, + {file = "watchdog-4.0.0-py3-none-manylinux2014_s390x.whl", hash = "sha256:73c7a935e62033bd5e8f0da33a4dcb763da2361921a69a5a95aaf6c93aa03a87"}, + {file = "watchdog-4.0.0-py3-none-manylinux2014_x86_64.whl", hash = "sha256:6a80d5cae8c265842c7419c560b9961561556c4361b297b4c431903f8c33b269"}, + {file = "watchdog-4.0.0-py3-none-win32.whl", hash = "sha256:8f9a542c979df62098ae9c58b19e03ad3df1c9d8c6895d96c0d51da17b243b1c"}, + {file = "watchdog-4.0.0-py3-none-win_amd64.whl", hash = "sha256:f970663fa4f7e80401a7b0cbeec00fa801bf0287d93d48368fc3e6fa32716245"}, + {file = "watchdog-4.0.0-py3-none-win_ia64.whl", hash = "sha256:9a03e16e55465177d416699331b0f3564138f1807ecc5f2de9d55d8f188d08c7"}, + {file = "watchdog-4.0.0.tar.gz", hash = "sha256:e3e7065cbdabe6183ab82199d7a4f6b3ba0a438c5a512a68559846ccb76a78ec"}, ] [package.extras] @@ -3184,17 +4186,17 @@ watchmedo = ["PyYAML (>=3.10)"] [[package]] name = "websocket-client" -version = "1.5.1" +version = "1.7.0" description = "WebSocket client for Python with low level API options" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "websocket-client-1.5.1.tar.gz", hash = "sha256:3f09e6d8230892547132177f575a4e3e73cfdf06526e20cc02aa1c3b47184d40"}, - {file = "websocket_client-1.5.1-py3-none-any.whl", hash = "sha256:cdf5877568b7e83aa7cf2244ab56a3213de587bbe0ce9d8b9600fc77b455d89e"}, + {file = "websocket-client-1.7.0.tar.gz", hash = "sha256:10e511ea3a8c744631d3bd77e61eb17ed09304c413ad42cf6ddfa4c7787e8fe6"}, + {file = "websocket_client-1.7.0-py3-none-any.whl", hash = "sha256:f4c3d22fec12a2461427a29957ff07d35098ee2d976d3ba244e688b8b4057588"}, ] [package.extras] -docs = ["Sphinx (>=3.4)", "sphinx-rtd-theme (>=0.5)"] +docs = ["Sphinx (>=6.0)", "sphinx-rtd-theme (>=1.1.0)"] optional = ["python-socks", "wsaccel"] test = ["websockets"] @@ -3296,13 +4298,13 @@ files = [ [[package]] name = "xlsxwriter" -version = "3.1.0" +version = "3.2.0" description = "A Python module for creating Excel XLSX files." optional = false python-versions = ">=3.6" files = [ - {file = "XlsxWriter-3.1.0-py3-none-any.whl", hash = "sha256:b70a147d36235d1ee835cfd037396f789db1f76740a0e5c917d54137169341de"}, - {file = "XlsxWriter-3.1.0.tar.gz", hash = "sha256:02913b50b74c00f165933d5da3e3a02cab4204cb4932722a1b342c5c71034122"}, + {file = "XlsxWriter-3.2.0-py3-none-any.whl", hash = "sha256:ecfd5405b3e0e228219bcaf24c2ca0915e012ca9464a14048021d21a995d490e"}, + {file = "XlsxWriter-3.2.0.tar.gz", hash = "sha256:9977d0c661a72866a61f9f7a809e25ebbb0fb7036baa3b9fe74afcfca6b3cb8c"}, ] [[package]] @@ -3316,25 +4318,125 @@ files = [ {file = "xmltodict-0.13.0.tar.gz", hash = "sha256:341595a488e3e01a85a9d8911d8912fd922ede5fecc4dce437eb4b6c8d037e56"}, ] +[[package]] +name = "yarl" +version = "1.9.4" +description = "Yet another URL library" +optional = false +python-versions = ">=3.7" +files = [ + {file = "yarl-1.9.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a8c1df72eb746f4136fe9a2e72b0c9dc1da1cbd23b5372f94b5820ff8ae30e0e"}, + {file = "yarl-1.9.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:a3a6ed1d525bfb91b3fc9b690c5a21bb52de28c018530ad85093cc488bee2dd2"}, + {file = "yarl-1.9.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c38c9ddb6103ceae4e4498f9c08fac9b590c5c71b0370f98714768e22ac6fa66"}, + {file = "yarl-1.9.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d9e09c9d74f4566e905a0b8fa668c58109f7624db96a2171f21747abc7524234"}, + {file = "yarl-1.9.4-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b8477c1ee4bd47c57d49621a062121c3023609f7a13b8a46953eb6c9716ca392"}, + {file = "yarl-1.9.4-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d5ff2c858f5f6a42c2a8e751100f237c5e869cbde669a724f2062d4c4ef93551"}, + {file = "yarl-1.9.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:357495293086c5b6d34ca9616a43d329317feab7917518bc97a08f9e55648455"}, + {file = "yarl-1.9.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:54525ae423d7b7a8ee81ba189f131054defdb122cde31ff17477951464c1691c"}, + {file = "yarl-1.9.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:801e9264d19643548651b9db361ce3287176671fb0117f96b5ac0ee1c3530d53"}, + {file = "yarl-1.9.4-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e516dc8baf7b380e6c1c26792610230f37147bb754d6426462ab115a02944385"}, + {file = "yarl-1.9.4-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:7d5aaac37d19b2904bb9dfe12cdb08c8443e7ba7d2852894ad448d4b8f442863"}, + {file = "yarl-1.9.4-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:54beabb809ffcacbd9d28ac57b0db46e42a6e341a030293fb3185c409e626b8b"}, + {file = "yarl-1.9.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:bac8d525a8dbc2a1507ec731d2867025d11ceadcb4dd421423a5d42c56818541"}, + {file = "yarl-1.9.4-cp310-cp310-win32.whl", hash = "sha256:7855426dfbddac81896b6e533ebefc0af2f132d4a47340cee6d22cac7190022d"}, + {file = "yarl-1.9.4-cp310-cp310-win_amd64.whl", hash = "sha256:848cd2a1df56ddbffeb375535fb62c9d1645dde33ca4d51341378b3f5954429b"}, + {file = "yarl-1.9.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:35a2b9396879ce32754bd457d31a51ff0a9d426fd9e0e3c33394bf4b9036b099"}, + {file = "yarl-1.9.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4c7d56b293cc071e82532f70adcbd8b61909eec973ae9d2d1f9b233f3d943f2c"}, + {file = "yarl-1.9.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d8a1c6c0be645c745a081c192e747c5de06e944a0d21245f4cf7c05e457c36e0"}, + {file = "yarl-1.9.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4b3c1ffe10069f655ea2d731808e76e0f452fc6c749bea04781daf18e6039525"}, + {file = "yarl-1.9.4-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:549d19c84c55d11687ddbd47eeb348a89df9cb30e1993f1b128f4685cd0ebbf8"}, + {file = "yarl-1.9.4-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a7409f968456111140c1c95301cadf071bd30a81cbd7ab829169fb9e3d72eae9"}, + {file = "yarl-1.9.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e23a6d84d9d1738dbc6e38167776107e63307dfc8ad108e580548d1f2c587f42"}, + {file = "yarl-1.9.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d8b889777de69897406c9fb0b76cdf2fd0f31267861ae7501d93003d55f54fbe"}, + {file = "yarl-1.9.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:03caa9507d3d3c83bca08650678e25364e1843b484f19986a527630ca376ecce"}, + {file = "yarl-1.9.4-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:4e9035df8d0880b2f1c7f5031f33f69e071dfe72ee9310cfc76f7b605958ceb9"}, + {file = "yarl-1.9.4-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:c0ec0ed476f77db9fb29bca17f0a8fcc7bc97ad4c6c1d8959c507decb22e8572"}, + {file = "yarl-1.9.4-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:ee04010f26d5102399bd17f8df8bc38dc7ccd7701dc77f4a68c5b8d733406958"}, + {file = "yarl-1.9.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:49a180c2e0743d5d6e0b4d1a9e5f633c62eca3f8a86ba5dd3c471060e352ca98"}, + {file = "yarl-1.9.4-cp311-cp311-win32.whl", hash = "sha256:81eb57278deb6098a5b62e88ad8281b2ba09f2f1147c4767522353eaa6260b31"}, + {file = "yarl-1.9.4-cp311-cp311-win_amd64.whl", hash = "sha256:d1d2532b340b692880261c15aee4dc94dd22ca5d61b9db9a8a361953d36410b1"}, + {file = "yarl-1.9.4-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:0d2454f0aef65ea81037759be5ca9947539667eecebca092733b2eb43c965a81"}, + {file = "yarl-1.9.4-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:44d8ffbb9c06e5a7f529f38f53eda23e50d1ed33c6c869e01481d3fafa6b8142"}, + {file = "yarl-1.9.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:aaaea1e536f98754a6e5c56091baa1b6ce2f2700cc4a00b0d49eca8dea471074"}, + {file = "yarl-1.9.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3777ce5536d17989c91696db1d459574e9a9bd37660ea7ee4d3344579bb6f129"}, + {file = "yarl-1.9.4-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9fc5fc1eeb029757349ad26bbc5880557389a03fa6ada41703db5e068881e5f2"}, + {file = "yarl-1.9.4-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ea65804b5dc88dacd4a40279af0cdadcfe74b3e5b4c897aa0d81cf86927fee78"}, + {file = "yarl-1.9.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aa102d6d280a5455ad6a0f9e6d769989638718e938a6a0a2ff3f4a7ff8c62cc4"}, + {file = "yarl-1.9.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:09efe4615ada057ba2d30df871d2f668af661e971dfeedf0c159927d48bbeff0"}, + {file = "yarl-1.9.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:008d3e808d03ef28542372d01057fd09168419cdc8f848efe2804f894ae03e51"}, + {file = "yarl-1.9.4-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:6f5cb257bc2ec58f437da2b37a8cd48f666db96d47b8a3115c29f316313654ff"}, + {file = "yarl-1.9.4-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:992f18e0ea248ee03b5a6e8b3b4738850ae7dbb172cc41c966462801cbf62cf7"}, + {file = "yarl-1.9.4-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:0e9d124c191d5b881060a9e5060627694c3bdd1fe24c5eecc8d5d7d0eb6faabc"}, + {file = "yarl-1.9.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:3986b6f41ad22988e53d5778f91855dc0399b043fc8946d4f2e68af22ee9ff10"}, + {file = "yarl-1.9.4-cp312-cp312-win32.whl", hash = "sha256:4b21516d181cd77ebd06ce160ef8cc2a5e9ad35fb1c5930882baff5ac865eee7"}, + {file = "yarl-1.9.4-cp312-cp312-win_amd64.whl", hash = "sha256:a9bd00dc3bc395a662900f33f74feb3e757429e545d831eef5bb280252631984"}, + {file = "yarl-1.9.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:63b20738b5aac74e239622d2fe30df4fca4942a86e31bf47a81a0e94c14df94f"}, + {file = "yarl-1.9.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7d7f7de27b8944f1fee2c26a88b4dabc2409d2fea7a9ed3df79b67277644e17"}, + {file = "yarl-1.9.4-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c74018551e31269d56fab81a728f683667e7c28c04e807ba08f8c9e3bba32f14"}, + {file = "yarl-1.9.4-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ca06675212f94e7a610e85ca36948bb8fc023e458dd6c63ef71abfd482481aa5"}, + {file = "yarl-1.9.4-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5aef935237d60a51a62b86249839b51345f47564208c6ee615ed2a40878dccdd"}, + {file = "yarl-1.9.4-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2b134fd795e2322b7684155b7855cc99409d10b2e408056db2b93b51a52accc7"}, + {file = "yarl-1.9.4-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:d25039a474c4c72a5ad4b52495056f843a7ff07b632c1b92ea9043a3d9950f6e"}, + {file = "yarl-1.9.4-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:f7d6b36dd2e029b6bcb8a13cf19664c7b8e19ab3a58e0fefbb5b8461447ed5ec"}, + {file = "yarl-1.9.4-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:957b4774373cf6f709359e5c8c4a0af9f6d7875db657adb0feaf8d6cb3c3964c"}, + {file = "yarl-1.9.4-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:d7eeb6d22331e2fd42fce928a81c697c9ee2d51400bd1a28803965883e13cead"}, + {file = "yarl-1.9.4-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:6a962e04b8f91f8c4e5917e518d17958e3bdee71fd1d8b88cdce74dd0ebbf434"}, + {file = "yarl-1.9.4-cp37-cp37m-win32.whl", hash = "sha256:f3bc6af6e2b8f92eced34ef6a96ffb248e863af20ef4fde9448cc8c9b858b749"}, + {file = "yarl-1.9.4-cp37-cp37m-win_amd64.whl", hash = "sha256:ad4d7a90a92e528aadf4965d685c17dacff3df282db1121136c382dc0b6014d2"}, + {file = "yarl-1.9.4-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:ec61d826d80fc293ed46c9dd26995921e3a82146feacd952ef0757236fc137be"}, + {file = "yarl-1.9.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:8be9e837ea9113676e5754b43b940b50cce76d9ed7d2461df1af39a8ee674d9f"}, + {file = "yarl-1.9.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:bef596fdaa8f26e3d66af846bbe77057237cb6e8efff8cd7cc8dff9a62278bbf"}, + {file = "yarl-1.9.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2d47552b6e52c3319fede1b60b3de120fe83bde9b7bddad11a69fb0af7db32f1"}, + {file = "yarl-1.9.4-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:84fc30f71689d7fc9168b92788abc977dc8cefa806909565fc2951d02f6b7d57"}, + {file = "yarl-1.9.4-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4aa9741085f635934f3a2583e16fcf62ba835719a8b2b28fb2917bb0537c1dfa"}, + {file = "yarl-1.9.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:206a55215e6d05dbc6c98ce598a59e6fbd0c493e2de4ea6cc2f4934d5a18d130"}, + {file = "yarl-1.9.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:07574b007ee20e5c375a8fe4a0789fad26db905f9813be0f9fef5a68080de559"}, + {file = "yarl-1.9.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:5a2e2433eb9344a163aced6a5f6c9222c0786e5a9e9cac2c89f0b28433f56e23"}, + {file = "yarl-1.9.4-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:6ad6d10ed9b67a382b45f29ea028f92d25bc0bc1daf6c5b801b90b5aa70fb9ec"}, + {file = "yarl-1.9.4-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:6fe79f998a4052d79e1c30eeb7d6c1c1056ad33300f682465e1b4e9b5a188b78"}, + {file = "yarl-1.9.4-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:a825ec844298c791fd28ed14ed1bffc56a98d15b8c58a20e0e08c1f5f2bea1be"}, + {file = "yarl-1.9.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:8619d6915b3b0b34420cf9b2bb6d81ef59d984cb0fde7544e9ece32b4b3043c3"}, + {file = "yarl-1.9.4-cp38-cp38-win32.whl", hash = "sha256:686a0c2f85f83463272ddffd4deb5e591c98aac1897d65e92319f729c320eece"}, + {file = "yarl-1.9.4-cp38-cp38-win_amd64.whl", hash = "sha256:a00862fb23195b6b8322f7d781b0dc1d82cb3bcac346d1e38689370cc1cc398b"}, + {file = "yarl-1.9.4-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:604f31d97fa493083ea21bd9b92c419012531c4e17ea6da0f65cacdcf5d0bd27"}, + {file = "yarl-1.9.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:8a854227cf581330ffa2c4824d96e52ee621dd571078a252c25e3a3b3d94a1b1"}, + {file = "yarl-1.9.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ba6f52cbc7809cd8d74604cce9c14868306ae4aa0282016b641c661f981a6e91"}, + {file = "yarl-1.9.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a6327976c7c2f4ee6816eff196e25385ccc02cb81427952414a64811037bbc8b"}, + {file = "yarl-1.9.4-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8397a3817d7dcdd14bb266283cd1d6fc7264a48c186b986f32e86d86d35fbac5"}, + {file = "yarl-1.9.4-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e0381b4ce23ff92f8170080c97678040fc5b08da85e9e292292aba67fdac6c34"}, + {file = "yarl-1.9.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:23d32a2594cb5d565d358a92e151315d1b2268bc10f4610d098f96b147370136"}, + {file = "yarl-1.9.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ddb2a5c08a4eaaba605340fdee8fc08e406c56617566d9643ad8bf6852778fc7"}, + {file = "yarl-1.9.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:26a1dc6285e03f3cc9e839a2da83bcbf31dcb0d004c72d0730e755b33466c30e"}, + {file = "yarl-1.9.4-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:18580f672e44ce1238b82f7fb87d727c4a131f3a9d33a5e0e82b793362bf18b4"}, + {file = "yarl-1.9.4-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:29e0f83f37610f173eb7e7b5562dd71467993495e568e708d99e9d1944f561ec"}, + {file = "yarl-1.9.4-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:1f23e4fe1e8794f74b6027d7cf19dc25f8b63af1483d91d595d4a07eca1fb26c"}, + {file = "yarl-1.9.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:db8e58b9d79200c76956cefd14d5c90af54416ff5353c5bfd7cbe58818e26ef0"}, + {file = "yarl-1.9.4-cp39-cp39-win32.whl", hash = "sha256:c7224cab95645c7ab53791022ae77a4509472613e839dab722a72abe5a684575"}, + {file = "yarl-1.9.4-cp39-cp39-win_amd64.whl", hash = "sha256:824d6c50492add5da9374875ce72db7a0733b29c2394890aef23d533106e2b15"}, + {file = "yarl-1.9.4-py3-none-any.whl", hash = "sha256:928cecb0ef9d5a7946eb6ff58417ad2fe9375762382f1bf5c55e61645f2c43ad"}, + {file = "yarl-1.9.4.tar.gz", hash = "sha256:566db86717cf8080b99b58b083b773a908ae40f06681e87e589a976faf8246bf"}, +] + +[package.dependencies] +idna = ">=2.0" +multidict = ">=4.0" + [[package]] name = "zipp" -version = "3.15.0" +version = "3.17.0" description = "Backport of pathlib-compatible object wrapper for zip files" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "zipp-3.15.0-py3-none-any.whl", hash = "sha256:48904fc76a60e542af151aded95726c1a5c34ed43ab4134b597665c86d7ad556"}, - {file = "zipp-3.15.0.tar.gz", hash = "sha256:112929ad649da941c23de50f356a2b5570c954b65150642bccdd66bf194d224b"}, + {file = "zipp-3.17.0-py3-none-any.whl", hash = "sha256:0e923e726174922dce09c53c59ad483ff7bbb8e572e00c7f7c46b88556409f31"}, + {file = "zipp-3.17.0.tar.gz", hash = "sha256:84e64a1c28cf7e91ed2078bb8cc8c259cb19b76942096c8d7b84947690cabaf0"}, ] [package.extras] -docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] -testing = ["big-O", "flake8 (<5)", "jaraco.functools", "jaraco.itertools", "more-itertools", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)"] - -[extras] -docs = ["mkdocs", "mkdocs-material"] +docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (<7.2.5)", "sphinx (>=3.5)", "sphinx-lint"] +testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-ignore-flaky", "pytest-mypy (>=0.9.1)", "pytest-ruff"] [metadata] lock-version = "2.0" -python-versions = ">=3.9,<3.12" -content-hash = "5eeda2c0549c1a40ebedefe766f0d7e27e78ed123aaacb3e42d242271774b1da" +python-versions = ">=3.9,<3.13" +content-hash = "dc655cec9f8bc9b586a4af5cdadc1fa8babc95467a0cd2a25482c0a0b0fd1171" diff --git a/prowler/compliance/aws/aws_account_security_onboarding_aws.json b/prowler/compliance/aws/aws_account_security_onboarding_aws.json new file mode 100644 index 00000000000..53f8fbb3e0a --- /dev/null +++ b/prowler/compliance/aws/aws_account_security_onboarding_aws.json @@ -0,0 +1,1190 @@ +{ + "Framework": "AWS-Account-Security-Onboarding", + "Version": "", + "Provider": "AWS", + "Description": "Checklist when onboarding new AWS Accounts to existing AWS Organization.", + "Requirements": [ + { + "Id": "Predefine IAM Roles", + "Description": "Check if exists predefine IAM Roles", + "Attributes": [ + { + "Section": "Deploy account from predefined IaC template", + "Service": "IAM", + "Type": "Automated" + } + ], + "Checks": [ + "iam_no_custom_policy_permissive_role_assumption", + "iam_policy_attached_only_to_group_or_roles", + "iam_support_role_created", + "iam_role_cross_service_confused_deputy_prevention" + ] + }, + { + "Id": "Enabled security services", + "Description": "Check if security services are enabled", + "Attributes": [ + { + "Section": "Deploy account from predefined IaC template", + "Service": "SecurityServices", + "Type": "Automated" + } + ], + "Checks": [ + "securityhub_enabled", + "guardduty_is_enabled", + "accessanalyzer_enabled", + "macie_is_enabled" + ] + }, + { + "Id": "IDC integration, SSO configuration", + "Description": "Check if IDC integration and SSO configuration is enabled", + "Attributes": [ + { + "Section": "Deploy account from predefined IaC template", + "Service": "IAM Identity Center", + "Type": "Manual" + } + ], + "Checks": [] + }, + { + "Id": "Organization invitation", + "Description": "Check if organization invitation is enabled", + "Attributes": [ + { + "Section": "Deploy account from predefined IaC template", + "Service": "Organizations", + "Type": "Manual" + } + ], + "Checks": [] + }, + { + "Id": "Billing, emergency, security contacts", + "Description": "Check if billing, emergency, security contacts are configured", + "Attributes": [ + { + "Section": "Deploy account from predefined IaC template", + "Service": "Billing", + "Type": "Automated" + } + ], + "Checks": [ + "account_maintain_current_contact_details", + "account_security_contact_information_is_registered" + ] + }, + { + "Id": "Root user - distribution email + MFA", + "Description": "Check if root user has distribution email and MFA enabled", + "Attributes": [ + { + "Section": "Deploy account from predefined IaC template", + "Service": "IAM", + "Type": "Automated" + } + ], + "Checks": [ + "iam_root_mfa_enabled", + "iam_root_hardware_mfa_enabled" + ] + }, + { + "Id": "S3 Block Public Access", + "Description": "Block public access to S3 buckets", + "Attributes": [ + { + "Section": "Deploy account from predefined IaC template", + "Service": "S3", + "Type": "Automated" + } + ], + "Checks": [ + "s3_account_level_public_access_blocks", + "s3_bucket_public_access", + "s3_bucket_level_public_access_block" + ] + }, + { + "Id": "Disable AMI public sharing", + "Description": "Disable AMI public sharing", + "Attributes": [ + { + "Section": "Deploy account from predefined IaC template", + "Service": "EC2", + "Type": "Automated" + } + ], + "Checks": [ + "ec2_ami_public" + ] + }, + { + "Id": "Block unused regions", + "Description": "Block unsued regions", + "Attributes": [ + { + "Section": "SCPs", + "SubSection": "Apply existing SCPs based on OU placement", + "Service": "IAM", + "Type": "Automated" + } + ], + "Checks": [ + "organizations_scp_check_deny_regions" + ] + }, + { + "Id": "Block tampering with security-related settings and services", + "Description": "Block tampering with security-related settings and services", + "Attributes": [ + { + "Section": "SCPs", + "SubSection": "Apply existing SCPs based on OU placement", + "Service": "IAM", + "Type": "Manual" + } + ], + "Checks": [] + }, + { + "Id": "Restrict instances types", + "Description": "Restrict instances types", + "Attributes": [ + { + "Section": "SCPs", + "SubSection": "Apply existing SCPs based on OU placement", + "Service": "IAM", + "Type": "Manual" + } + ], + "Checks": [] + }, + { + "Id": "Block root user", + "Description": "Block root user", + "Attributes": [ + { + "Section": "SCPs", + "SubSection": "Apply existing SCPs based on OU placement", + "Service": "IAM", + "Type": "Automated" + } + ], + "Checks": [ + "iam_no_root_access_key", + "iam_avoid_root_usage" + ] + }, + { + "Id": "Add custom SCPs if required", + "Description": "Add custom SCPs if required", + "Attributes": [ + { + "Section": "SCPs", + "Service": "IAM", + "Type": "Manual" + } + ], + "Checks": [] + }, + { + "Id": "Send DNS Resolvers queries to SIEM", + "Description": "Send DNS Resolvers queries to SIEM", + "Attributes": [ + { + "Section": "Logging", + "Service": "Logging", + "Type": "Manual" + } + ], + "Checks": [] + }, + { + "Id": "Send VPC Flow Logs (only DENYs) to S3 bucket", + "Description": "Send VPC Flow Logs (only DENYs) to S3 bucket", + "Attributes": [ + { + "Section": "Logging", + "Service": "Logging", + "Type": "Automated" + } + ], + "Checks": [ + "vpc_flow_logs_enabled" + ] + }, + { + "Id": "Send S3 access logs for critical buckets to separate S3 bucket", + "Description": "Send S3 access logs for critical buckets to separate S3 bucket", + "Attributes": [ + { + "Section": "Logging", + "Service": "Logging", + "Type": "Automated" + } + ], + "Checks": [ + "cloudtrail_logs_s3_bucket_access_logging_enabled", + "cloudtrail_s3_dataevents_write_enabled" + ] + }, + { + "Id": "Establish ready-to-be-enabled pipelines to deliver ALB and CFD to SIEM to toggle in case of emergency and investigations", + "Description": "Establish ready-to-be-enabled pipelines to deliver ALB and CFD to SIEM to toggle in case of emergency and investigations", + "Attributes": [ + { + "Section": "Logging", + "Service": "Logging", + "Type": "Manual" + } + ], + "Checks": [] + }, + { + "Id": "Alert on each High finding", + "Description": "Checks that GuardDuty is enabled and configured to send High findings to CloudWatch Events", + "Attributes": [ + { + "Section": "Alerting", + "SubSection": "GuardDuty", + "Service": "GuardDuty", + "Type": "Automated" + } + ], + "Checks": [ + "guardduty_is_enabled", + "guardduty_is_enabled" + ] + }, + { + "Id": "Alerts based on aggregated findings with severity Medium and below", + "Description": "Alert based on aggregated findings with severity Medium and below", + "Attributes": [ + { + "Section": "Alerting", + "SubSection": "GuardDuty", + "Service": "GuardDuty", + "Type": "Manual" + } + ], + "Checks": [] + }, + { + "Id": "Critical alert on every root user activity", + "Description": "Send critical alert on every root user activity", + "Attributes": [ + { + "Section": "Alerting", + "SubSection": "CloudTrail", + "Service": "CloudTrail", + "Type": "Automated" + } + ], + "Checks": [ + "cloudwatch_log_metric_filter_root_usage" + ] + }, + { + "Id": "Critical alert on cloudtrail settings changes", + "Description": "Send critical alert on cloudtrail settings changes", + "Attributes": [ + { + "Section": "Alerting", + "SubSection": "CloudTrail", + "Service": "CloudTrail", + "Type": "Automated" + } + ], + "Checks": [ + "cloudwatch_log_metric_filter_and_alarm_for_cloudtrail_configuration_changes_enabled" + ] + }, + { + "Id": "Alert on rise of ConsoleLoginFailures events", + "Description": "Alert on rise ConsoleLoginFailures events", + "Attributes": [ + { + "Section": "Alerting", + "SubSection": "CloudTrail", + "Service": "CloudTrail", + "Type": "Automated" + } + ], + "Checks": [ + "cloudwatch_log_metric_filter_authentication_failures" + ] + }, + { + "Id": "Alert on IAM user changes", + "Description": "Alert on IAM user changes", + "Attributes": [ + { + "Section": "Alerting", + "SubSection": "CloudTrail", + "Service": "CloudTrail", + "Type": "Manual" + } + ], + "Checks": [] + }, + { + "Id": "Alert on snapshot manipulations", + "Description": "Alert when a snapshot is manipulated", + "Attributes": [ + { + "Section": "Alerting", + "SubSection": "CloudTrail", + "Service": "CloudTrail", + "Type": "Manual" + } + ], + "Checks": [] + }, + { + "Id": "Alerts on raised cost anomaly events", + "Description": "Alert when cost anomaly events are raised", + "Attributes": [ + { + "Section": "Alerting", + "SubSection": "Cost Anomaly", + "Service": "Billing", + "Type": "Manual" + } + ], + "Checks": [] + }, + { + "Id": "Alerts based on (at least) each new CRITICAL finding", + "Description": "Alerts triggered by every new CRITICAL finding, at a minimum.", + "Attributes": [ + { + "Section": "Alerting", + "SubSection": "SecurityHub", + "Service": "SecurityHub", + "Type": "Manual" + } + ], + "Checks": [] + }, + { + "Id": "Realert on inactivity in a set period", + "Description": "Activate a re-alert system for detecting inactivity within a specified time frame.", + "Attributes": [ + { + "Section": "Alerting", + "SubSection": "SecurityHub", + "Service": "SecurityHub", + "Type": "Manual" + } + ], + "Checks": [] + }, + { + "Id": "Alerts based on rate-based rules", + "Description": "Notifications triggered by rate-based regulations", + "Attributes": [ + { + "Section": "Alerting", + "SubSection": "WAF", + "Service": "WAF", + "Type": "Manual" + } + ], + "Checks": [] + }, + { + "Id": "Alerts based on high amount of blocked requests by managed rules", + "Description": "Notifications triggered by a significant number of blocked requests as a result of managed rules.", + "Attributes": [ + { + "Section": "Alerting", + "SubSection": "WAF", + "Service": "WAF", + "Type": "Manual" + } + ], + "Checks": [] + }, + { + "Id": "Alert based on DDoSDetected metric", + "Description": "Generate an alert triggered by the detection of a DDoS attack based on the DDoSDetected metric.", + "Attributes": [ + { + "Section": "Alerting", + "SubSection": "Shield", + "Service": "Shield", + "Type": "Manual" + } + ], + "Checks": [] + }, + { + "Id": "Adopt incident response guide and prepared battle card", + "Description": "Utilize the incident response manual and have the battle card ready for use.", + "Attributes": [ + { + "Section": "Alerting", + "SubSection": "Shield", + "Service": "Shield", + "Type": "Manual" + } + ], + "Checks": [] + }, + { + "Id": "Alert on blocked DNS query", + "Description": "Notify when a DNS query is obstructed.", + "Attributes": [ + { + "Section": "Alerting", + "SubSection": "R53 DNS Resolver", + "Service": "Route53", + "Type": "Manual" + } + ], + "Checks": [] + }, + { + "Id": "Alert on critical vulnerabilities in AMIs/Images", + "Description": "Notification regarding severe vulnerabilities detected in AMIs/Images.", + "Attributes": [ + { + "Section": "Alerting", + "SubSection": "Vulnerability Scanning", + "Service": "Inspector", + "Type": "Manual" + } + ], + "Checks": [] + }, + { + "Id": "Create Cost Anomaly Detection monitors to alert spending anomalies", + "Description": "Develop monitoring systems for detecting cost anomalies and generating alerts for irregular spending patterns.", + "Attributes": [ + { + "Section": "Budget Alarms", + "SubSection": "Prod", + "Service": "CloudWatch", + "Type": "Manual" + } + ], + "Checks": [] + }, + { + "Id": "Create Cost Anomaly Detection monitors to alert spending anomalies", + "Description": "Establish monitoring systems for cost anomaly detection to promptly notify about unusual spending patterns.", + "Attributes": [ + { + "Section": "Budget Alarms", + "SubSection": "QA", + "Service": "CloudWatch", + "Type": "Manual" + } + ], + "Checks": [] + }, + { + "Id": "Configure Budgets Actions to stop services in cases of big unexpected spendings", + "Description": "Set up Budgets Actions to halt services when significant unexpected expenses occur.", + "Attributes": [ + { + "Section": "Budget Alarms", + "SubSection": "QA", + "Service": "SNS", + "Type": "Manual" + } + ], + "Checks": [] + }, + { + "Id": "Create analyzers in each active regions", + "Description": "Establish analyzers within every active region.", + "Attributes": [ + { + "Section": "IAM Access Analyzer", + "Service": "IAM Access Analyzer", + "Type": "Automated" + } + ], + "Checks": [ + "accessanalyzer_enabled", + "accessanalyzer_enabled_without_findings" + ] + }, + { + "Id": "Verify that events are present in SecurityHub aggregated view", + "Description": "Confirm the presence of events within the aggregated view of SecurityHub.", + "Attributes": [ + { + "Section": "IAM Access Analyzer", + "Service": "SecurityHub", + "Type": "Automated" + } + ], + "Checks": [ + "securityhub_enabled", + "accessanalyzer_enabled", + "accessanalyzer_enabled_without_findings" + ] + }, + { + "Id": "Consider enabling for critical buckets only", + "Description": "Please contemplate activating this feature exclusively for essential or crucial buckets.", + "Attributes": [ + { + "Section": "Macie", + "Service": "Macie", + "Type": "Automated" + } + ], + "Checks": [ + "macie_is_enabled" + ] + }, + { + "Id": "Enable and configure AWS Inspector", + "Description": "Enable and set up AWS Inspector.", + "Attributes": [ + { + "Section": "Vulnerability Scanning", + "SubSection": "EC2 used as servers", + "Service": "EC2", + "Type": "Automated" + } + ], + "Checks": [ + "inspector2_findings_exist" + ] + }, + { + "Id": "Export scan results as metrics in centralized collector", + "Description": "Export scan results as metrics to a centralized collector.", + "Attributes": [ + { + "Section": "Vulnerability Scanning", + "SubSection": "EC2 used as servers", + "Service": "EC2", + "Type": "Automated" + } + ], + "Checks": [ + "guardduty_centrally_managed" + ] + }, + { + "Id": "Scan images for vulnerability on upload to ECR", + "Description": "Check uploaded images for vulnerabilities when adding them to the ECR (Elastic Container Registry).", + "Attributes": [ + { + "Section": "Vulnerability Scanning", + "SubSection": "ECR used as docker images hub", + "Service": "ECR", + "Type": "Automated" + } + ], + "Checks": [ + "inspector2_findings_exist", + "ecr_registry_scan_images_on_push_enabled", + "ecr_repositories_scan_vulnerabilities_in_latest_image", + "ecr_repositories_scan_images_on_push_enabled" + ] + }, + { + "Id": "Deploy solution to periodically rescan currently used images and report found vulnerabilities", + "Description": "Implement a solution to conduct regular scans on currently employed images and notify about any identified vulnerabilities.", + "Attributes": [ + { + "Section": "Vulnerability Scanning", + "SubSection": "ECR used as docker images hub", + "Service": "ECR", + "Type": "Automated" + } + ], + "Checks": [ + "ecr_repositories_scan_vulnerabilities_in_latest_image" + ] + }, + { + "Id": "Export scan results as metrics in centralized collector", + "Description": "Generate metric data from scan results and store it in a centralized collector.", + "Attributes": [ + { + "Section": "Vulnerability Scanning", + "SubSection": "ECR used as docker images hub", + "Service": "ECR", + "Type": "Manual" + } + ], + "Checks": [] + }, + { + "Id": "Enable as part of Organization trail", + "Description": "Activate as a component of the Organization trail.", + "Attributes": [ + { + "Section": "AWS Cloudtrail", + "Service": "CloudTrail", + "Type": "Automated" + } + ], + "Checks": [ + "cloudtrail_multi_region_enabled", + "cloudtrail_multi_region_enabled_logging_management_events" + ] + }, + { + "Id": "Confirm that logs are present in S3 bucket and SIEM", + "Description": "Verify the existence of logs within both the S3 bucket and the SIEM system.", + "Attributes": [ + { + "Section": "AWS Cloudtrail", + "Service": "CloudTrail", + "Type": "Automated" + } + ], + "Checks": [ + "cloudtrail_logs_s3_bucket_access_logging_enabled", + "cloudtrail_s3_dataevents_read_enabled", + "cloudtrail_s3_dataevents_write_enabled" + ] + }, + { + "Id": "Deploy solution to alert on at least critical new findings", + "Description": "Implement a solution to trigger alerts for newly identified critical issues at minimum.", + "Attributes": [ + { + "Section": "Enable AWS SecurityHub", + "Service": "SecurityHub", + "Type": "Automated" + } + ], + "Checks": [ + "securityhub_enabled" + ] + }, + { + "Id": "Apply SecurityHub Central Configuration for Organization", + "Description": "Apply SecurityHub Central Configuration for Organization", + "Attributes": [ + { + "Section": "Enable AWS SecurityHub", + "Service": "SecurityHub", + "Type": "Automated" + } + ], + "Checks": [ + "securityhub_enabled" + ] + }, + { + "Id": "Enable/disable additional standards and controls", + "Description": "Implement SecurityHub Central Configuration across the organization.", + "Attributes": [ + { + "Section": "Enable AWS SecurityHub", + "Service": "SecurityHub", + "Type": "Automated" + } + ], + "Checks": [ + "securityhub_enabled" + ] + }, + { + "Id": "Confirm that findings are being visible in the aggregated view", + "Description": "Please verify that the findings are visible when viewed in the aggregated perspective.", + "Attributes": [ + { + "Section": "Enable AWS SecurityHub", + "Service": "SecurityHub", + "Type": "Automated" + } + ], + "Checks": [ + "securityhub_enabled" + ] + }, + { + "Id": "Ensure that there are no critical (and considered critical) findings present in account", + "Description": "Make certain that there are no critical findings, whether deemed critical or not, within the account.", + "Attributes": [ + { + "Section": "Enable AWS SecurityHub", + "Service": "SecurityHub", + "Type": "Automated" + } + ], + "Checks": [ + "securityhub_enabled" + ] + }, + { + "Id": "Enable continuous recording for most of the resources", + "Description": "Activate continuous recording for the majority of resources.", + "Attributes": [ + { + "Section": "Enable AWS Config", + "Service": "Config", + "Type": "Automated" + } + ], + "Checks": [ + "config_recorder_all_regions_enabled" + ] + }, + { + "Id": "Consider periodic recording for some resources to optimize bill", + "Description": "Think about implementing scheduled monitoring for specific resources in order to maximize cost efficiency.", + "Attributes": [ + { + "Section": "Enable AWS Config", + "Service": "Config", + "Type": "Manual" + } + ], + "Checks": [] + }, + { + "Id": "Confirm that records are present in central aggregator", + "Description": "Confirm that records are present in central aggregator", + "Attributes": [ + { + "Section": "Enable AWS Config", + "Service": "Config", + "Type": "Automated" + } + ], + "Checks": [ + "config_recorder_all_regions_enabled" + ] + }, + { + "Id": "Enable as part of central configuration for Organization", + "Description": "Please verify the existence of records within the central aggregator.", + "Attributes": [ + { + "Section": "Enable GuardDuty", + "Service": "GuardDuty", + "Type": "Must" + } + ], + "Checks": [ + "guardduty_is_enabled", + "guardduty_centrally_managed" + ] + }, + { + "Id": "Threat Detection", + "Description": "Detection of Threats in your AWS environment", + "Attributes": [ + { + "Section": "Enable GuardDuty", + "Service": "GuardDuty", + "Type": "Must" + } + ], + "Checks": [ + "guardduty_is_enabled", + "guardduty_no_high_severity_findings" + ] + }, + { + "Id": "RDS protection", + "Description": "Protection for RDS instances", + "Attributes": [ + { + "Section": "Enable GuardDuty", + "Service": "GuardDuty", + "Type": "Must" + } + ], + "Checks": [ + "guardduty_is_enabled", + "guardduty_no_high_severity_findings" + ] + }, + { + "Id": "Lambda protection", + "Description": "Protection using Lambda", + "Attributes": [ + { + "Section": "Enable GuardDuty", + "Service": "Lambda", + "Type": "Must" + } + ], + "Checks": [ + "guardduty_is_enabled", + "guardduty_no_high_severity_findings" + ] + }, + { + "Id": "S3 protection", + "Description": "Protection using S3", + "Attributes": [ + { + "Section": "Enable GuardDuty", + "Service": "S3", + "Type": "Must" + } + ], + "Checks": [ + "guardduty_is_enabled", + "guardduty_no_high_severity_findings" + ] + }, + { + "Id": "Malware Scanning", + "Description": "Conducting a Comprehensive Scan for Malicious Software", + "Attributes": [ + { + "Section": "Enable GuardDuty", + "Service": "GuardDuty", + "Type": "Must" + } + ], + "Checks": [ + "guardduty_is_enabled", + "guardduty_no_high_severity_findings" + ] + }, + { + "Id": "Confirm that events are present in SIEM", + "Description": "Confirm that events are present in SIEM", + "Attributes": [ + { + "Section": "Enable GuardDuty", + "Service": "GuardDuty", + "Type": "Must" + } + ], + "Checks": [ + "guardduty_is_enabled", + "guardduty_no_high_severity_findings" + ] + }, + { + "Id": "Apply suppression filters to disable useless findings", + "Description": "Implementing suppression filters to deactivate non-essential detections.", + "Attributes": [ + { + "Section": "Enable GuardDuty", + "Service": "GuardDuty", + "Type": "Must" + } + ], + "Checks": [ + "guardduty_is_enabled", + "guardduty_no_high_severity_findings" + ] + }, + { + "Id": "Include in process of incident response based on events", + "Description": "Incorporate within the procedural framework of incident response, taking into account the triggering events.", + "Attributes": [ + { + "Section": "Enable GuardDuty", + "Service": "GuardDuty", + "Type": "Must" + } + ], + "Checks": [ + "guardduty_is_enabled", + "guardduty_no_high_severity_findings" + ] + }, + { + "Id": "Runtime protection", + "Description": "Brand new and in need of thorough testing.", + "Attributes": [ + { + "Section": "Enable GuardDuty", + "Service": "GuardDuty", + "Type": "Optional" + } + ], + "Checks": [ + "guardduty_is_enabled", + "guardduty_no_high_severity_findings" + ] + }, + { + "Id": "EKS protection (if EKS is used)", + "Description": "Enhanced Kubernetes Security (EKS) protection, if the Kubernetes service is employed.", + "Attributes": [ + { + "Section": "Enable GuardDuty", + "Service": "EKS", + "Type": "Optional" + } + ], + "Checks": [] + }, + { + "Id": "Apply managed domain name lists for Resolver in block mode)", + "Description": "Utilize managed domain name lists within Resolver to implement block mode.", + "Attributes": [ + { + "Section": "R53 DNS Resolver Firewall", + "Service": "Route53", + "Type": "Automated" + } + ], + "Checks": [ + "route53_domains_privacy_protection_enabled", + "route53_domains_transferlock_enabled" + ] + }, + { + "Id": "Use strictly AWS VPC DNS resolver", + "Description": "Exclusively Employ Amazon Web Services (AWS) Virtual Private Cloud (VPC) DNS Resolver", + "Attributes": [ + { + "Section": "R53 DNS Resolver Firewall", + "Service": "Route53", + "Type": "Manual" + } + ], + "Checks": [] + }, + { + "Id": "Ban outbound DNS calls from all VPCs to ports 53", + "Description": "Prohibit all Virtual Private Clouds (VPCs) from initiating outbound DNS calls on port 53.", + "Attributes": [ + { + "Section": "R53 DNS Resolver Firewall", + "Service": "Route53", + "Type": "Manual" + } + ], + "Checks": [] + }, + { + "Id": "Apply custom threat list for GuardDuty to alert on access to DoH servers", + "Description": "Implement a customized threat list within GuardDuty to generate alerts when there is access to Domain Name System over HTTPS (DoH) servers.", + "Attributes": [ + { + "Section": "R53 DNS Resolver Firewall", + "Service": "Route53", + "Type": "Manual" + } + ], + "Checks": [] + }, + { + "Id": "Enable Shield Advanced subscription for public facing account", + "Description": "Activate the Shield Advanced subscription for the publicly accessible account.", + "Attributes": [ + { + "Section": "Shield Advanced", + "Service": "Shield Advanced", + "Type": "Automated" + } + ], + "Checks": [ + "shield_advanced_protection_in_route53_hosted_zones", + "shield_advanced_protection_in_classic_load_balancers", + "shield_advanced_protection_in_internet_facing_load_balancers", + "shield_advanced_protection_in_cloudfront_distributions", + "shield_advanced_protection_in_associated_elastic_ips", + "shield_advanced_protection_in_global_accelerators" + ] + }, + { + "Id": "Export metrics in centralized collector", + "Description": "Exporting metrics to a centralized collector for data aggregation and analysis.", + "Attributes": [ + { + "Section": "Shield Advanced", + "Service": "Shield Advanced", + "Type": "Manual" + } + ], + "Checks": [] + }, + { + "Id": "Create DDoS battle card with main info about protected services", + "Description": "Prepare a Detailed Distributed Denial of Service (DDoS) Battle Card Encompassing Key Information Regarding Safeguarded Services.", + "Attributes": [ + { + "Section": "Shield Advanced", + "Service": "Shield Advanced", + "Type": "Automated" + } + ], + "Checks": [ + "shield_advanced_protection_in_route53_hosted_zones", + "shield_advanced_protection_in_classic_load_balancers", + "shield_advanced_protection_in_internet_facing_load_balancers", + "shield_advanced_protection_in_cloudfront_distributions", + "shield_advanced_protection_in_associated_elastic_ips", + "shield_advanced_protection_in_global_accelerators" + ] + }, + { + "Id": "CFD + ALB + secret rotation architecture", + "Description": "Designing an Architecture for Computational Fluid Dynamics (CFD), Application Load Balancing (ALB), and Secret Rotation Integration", + "Attributes": [ + { + "Section": "WAFv2", + "SubSection": "Deploy WAF setup for each public web service", + "Service": "WAFv2", + "Type": "Must" + } + ], + "Checks": [ + "apigateway_restapi_waf_acl_attached", + "cloudfront_distributions_using_waf", + "elbv2_waf_acl_attached" + ] + }, + { + "Id": "Predefined set of managed rules", + "Description": "A pre-established collection of rules under management control.", + "Attributes": [ + { + "Section": "WAFv2", + "SubSection": "Deploy WAF setup for each public web service", + "Service": "WAFv2", + "Type": "Must" + } + ], + "Checks": [ + "apigateway_restapi_waf_acl_attached", + "cloudfront_distributions_using_waf", + "elbv2_waf_acl_attached" + ] + }, + { + "Id": "Global allow - and block-lists", + "Description": "Establishing International Lists for Permissions and Restrictions", + "Attributes": [ + { + "Section": "WAFv2", + "SubSection": "Deploy WAF setup for each public web service", + "Service": "WAFv2", + "Type": "Must" + } + ], + "Checks": [ + "apigateway_restapi_waf_acl_attached", + "cloudfront_distributions_using_waf", + "elbv2_waf_acl_attached" + ] + }, + { + "Id": "Blanket rate-based rules", + "Description": "Establishing rules based on a standardized, all-encompassing rate.", + "Attributes": [ + { + "Section": "WAFv2", + "SubSection": "Deploy WAF setup for each public web service", + "Service": "WAFv2", + "Type": "Must" + } + ], + "Checks": [] + }, + { + "Id": "Service-unique exclusion rules", + "Description": "Exclusion rules specific to the service provided.", + "Attributes": [ + { + "Section": "WAFv2", + "SubSection": "Deploy WAF setup for each public web service", + "Service": "WAFv2", + "Type": "Must" + } + ], + "Checks": [ + "apigateway_restapi_waf_acl_attached", + "cloudfront_distributions_using_waf", + "elbv2_waf_acl_attached" + ] + }, + { + "Id": "Additional managed rules", + "Description": "Supplementary managed rules", + "Attributes": [ + { + "Section": "WAFv2", + "SubSection": "Deploy WAF setup for each public web service", + "Service": "WAFv2", + "Type": "Discuss" + } + ], + "Checks": [] + }, + { + "Id": "Scoped-down rate-based rules", + "Description": "Rate-based rules with a narrowed scope", + "Attributes": [ + { + "Section": "WAFv2", + "SubSection": "Deploy WAF setup for each public web service", + "Service": "WAFv2", + "Type": "Discuss" + } + ], + "Checks": [ + "apigateway_restapi_waf_acl_attached", + "cloudfront_distributions_using_waf", + "elbv2_waf_acl_attached" + ] + }, + { + "Id": "Enable Shield Advanced automatic application layer DDoS mitigation", + "Description": "Activate automatic application layer Distributed Denial of Service (DDoS) mitigation within Shield Advanced.", + "Attributes": [ + { + "Section": "WAFv2", + "Service": "Shield Advanced", + "Type": "Manual" + } + ], + "Checks": [] + }, + { + "Id": "Configure R53 health checks for all protected resources", + "Description": "Establishing Amazon Route 53 (R53) health checks to monitor the well-being of all safeguarded resources.", + "Attributes": [ + { + "Section": "WAFv2", + "Service": "Route53", + "Type": "Manual" + } + ], + "Checks": [] + }, + { + "Id": "Configure sensitive fields redaction and send WAF logs to SIEM", + "Description": "Configure the redaction of sensitive fields and transmit Web Application Firewall (WAF) logs to the Security Information and Event Management (SIEM) system.", + "Attributes": [ + { + "Section": "WAFv2", + "Service": "WAFv2", + "Type": "Manual" + } + ], + "Checks": [] + }, + { + "Id": "Export metrics in centralized collector", + "Description": "Exporting metrics to a centralized collector for comprehensive data aggregation.", + "Attributes": [ + { + "Section": "WAFv2", + "Service": "CloudWatch", + "Type": "Automated" + } + ], + "Checks": [ + "wafv2_webacl_logging_enabled" + ] + } + ] +} diff --git a/prowler/compliance/aws/cis_2.0_aws.json b/prowler/compliance/aws/cis_2.0_aws.json index 6ea5cdad135..a89bace8106 100644 --- a/prowler/compliance/aws/cis_2.0_aws.json +++ b/prowler/compliance/aws/cis_2.0_aws.json @@ -468,27 +468,6 @@ }, { "Id": "2.1.1", - "Description": "Ensure all S3 buckets employ encryption-at-rest", - "Checks": [ - "s3_bucket_default_encryption" - ], - "Attributes": [ - { - "Section": "2.1. Simple Storage Service (S3)", - "Profile": "Level 2", - "AssessmentStatus": "Automated", - "Description": "Amazon S3 provides a variety of no, or low, cost encryption options to protect data at rest.", - "RationaleStatement": "Encrypting data at rest reduces the likelihood that it is unintentionally exposed and can nullify the impact of disclosure if the encryption remains unbroken.", - "ImpactStatement": "Amazon S3 buckets with default bucket encryption using SSE-KMS cannot be used as destination buckets for Amazon S3 server access logging. Only SSE-S3 default encryption is supported for server access log destination buckets.", - "RemediationProcedure": "**From Console:** 1. Login to AWS Management Console and open the Amazon S3 console using https://console.aws.amazon.com/s3/ 2. Select a Bucket. 3. Click on 'Properties'. 4. Click edit on `Default Encryption`. 5. Select either `AES-256`, `AWS-KMS`, `SSE-KMS` or `SSE-S3`. 6. Click `Save` 7. Repeat for all the buckets in your AWS account lacking encryption. **From Command Line:** Run either ``` aws s3api put-bucket-encryption --bucket --server-side-encryption-configuration '{\"Rules\": [{\"ApplyServerSideEncryptionByDefault\": {\"SSEAlgorithm\": \"AES256\"}}]}' ``` or ``` aws s3api put-bucket-encryption --bucket --server-side-encryption-configuration '{\"Rules\": [{\"ApplyServerSideEncryptionByDefault\": {\"SSEAlgorithm\": \"aws:kms\",\"KMSMasterKeyID\": \"aws/s3\"}}]}' ``` **Note:** the KMSMasterKeyID can be set to the master key of your choosing; aws/s3 is an AWS preconfigured default.", - "AuditProcedure": "**From Console:** 1. Login to AWS Management Console and open the Amazon S3 console using https://console.aws.amazon.com/s3/ 2. Select a Bucket. 3. Click on 'Properties'. 4. Verify that `Default Encryption` is enabled, and displays either `AES-256`, `AWS-KMS`, `SSE-KMS` or `SSE-S3`. 5. Repeat for all the buckets in your AWS account. **From Command Line:** 1. Run command to list buckets ``` aws s3 ls ``` 2. For each bucket, run ``` aws s3api get-bucket-encryption --bucket ``` 3. Verify that either ``` \"SSEAlgorithm\": \"AES256\" ``` or ``` \"SSEAlgorithm\": \"aws:kms\"``` is displayed.", - "AdditionalInformation": "S3 bucket encryption only applies to objects as they are placed in the bucket. Enabling S3 bucket encryption does **not** encrypt objects previously stored within the bucket.", - "References": "https://docs.aws.amazon.com/AmazonS3/latest/user-guide/default-bucket-encryption.html:https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-encryption.html#bucket-encryption-related-resources" - } - ] - }, - { - "Id": "2.1.2", "Description": "Ensure S3 Bucket Policy is set to deny HTTP requests", "Checks": [ "s3_bucket_secure_transport_policy" @@ -509,7 +488,7 @@ ] }, { - "Id": "2.1.3", + "Id": "2.1.2", "Description": "Ensure MFA Delete is enabled on S3 buckets", "Checks": [ "s3_bucket_no_mfa_delete" @@ -530,7 +509,7 @@ ] }, { - "Id": "2.1.4", + "Id": "2.1.3", "Description": "Ensure all data in Amazon S3 has been discovered, classified and secured when required.", "Checks": [ "macie_is_enabled" @@ -551,7 +530,7 @@ ] }, { - "Id": "2.1.5", + "Id": "2.1.4", "Description": "Ensure that S3 Buckets are configured with 'Block public access (bucket settings)'", "Checks": [ "s3_bucket_level_public_access_block", diff --git a/prowler/compliance/aws/cis_3.0_aws.json b/prowler/compliance/aws/cis_3.0_aws.json new file mode 100644 index 00000000000..39bcc11b535 --- /dev/null +++ b/prowler/compliance/aws/cis_3.0_aws.json @@ -0,0 +1,1317 @@ +{ + "Framework": "CIS", + "Version": "3.0", + "Provider": "AWS", + "Description": "The CIS Amazon Web Services Foundations Benchmark provides prescriptive guidance for configuring security options for a subset of Amazon Web Services with an emphasis on foundational, testable, and architecture agnostic settings.", + "Requirements": [ + { + "Id": "1.1", + "Description": "Maintain current contact details", + "Checks": [ + "account_maintain_current_contact_details" + ], + "Attributes": [ + { + "Section": "1. Identity and Access Management", + "Profile": "Level 1", + "AssessmentStatus": "Manual", + "Description": "Ensure contact email and telephone details for AWS accounts are current and map to more than one individual in your organization. An AWS account supports a number of contact details, and AWS will use these to contact the account owner if activity judged to be in breach of Acceptable Use Policy or indicative of likely security compromise is observed by the AWS Abuse team. Contact details should not be for a single individual, as circumstances may arise where that individual is unavailable. Email contact details should point to a mail alias which forwards email to multiple individuals within the organization; where feasible, phone contact details should point to a PABX hunt group or other call-forwarding system.", + "RationaleStatement": "If an AWS account is observed to be behaving in a prohibited or suspicious manner, AWS will attempt to contact the account owner by email and phone using the contact details listed. If this is unsuccessful and the account behavior needs urgent mitigation, proactive measures may be taken, including throttling of traffic between the account exhibiting suspicious behavior and the AWS API endpoints and the Internet. This will result in impaired service to and from the account in question, so it is in both the customers' and AWS' best interests that prompt contact can be established. This is best achieved by setting AWS account contact details to point to resources which have multiple individuals as recipients, such as email aliases and PABX hunt groups.", + "ImpactStatement": "", + "RemediationProcedure": "This activity can only be performed via the AWS Console, with a user who has permission to read and write Billing information (aws-portal:*Billing ). 1. Sign in to the AWS Management Console and open the Billing and Cost Management console at https://console.aws.amazon.com/billing/home#/. 2. On the navigation bar, choose your account name, and then choose Account. 3. On the Account Settings page, next to Account Settings, choose Edit. 4. Next to the field that you need to update, choose Edit. 5. After you have entered your changes, choose Save changes. 6. After you have made your changes, choose Done. 7. To edit your contact information, under Contact Information, choose Edit. 8. For the fields that you want to change, type your updated information, and then choose Update.", + "AuditProcedure": "This activity can only be performed via the AWS Console, with a user who has permission to read and write Billing information (aws-portal:*Billing ) 1. Sign in to the AWS Management Console and open the Billing and Cost Management console at https://console.aws.amazon.com/billing/home#/. 2. On the navigation bar, choose your account name, and then choose Account. 3. On the Account Settings page, review and verify the current details. 4. Under Contact Information, review and verify the current details.", + "AdditionalInformation": "", + "References": "https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/manage-account-payment.html#contact-info" + } + ] + }, + { + "Id": "1.10", + "Description": "Ensure multi-factor authentication (MFA) is enabled for all IAM users that have a console password", + "Checks": [ + "iam_user_mfa_enabled_console_access" + ], + "Attributes": [ + { + "Section": "1. Identity and Access Management", + "Profile": "Level 1", + "AssessmentStatus": "Automated", + "Description": "Multi-Factor Authentication (MFA) adds an extra layer of authentication assurance beyond traditional credentials. With MFA enabled, when a user signs in to the AWS Console, they will be prompted for their user name and password as well as for an authentication code from their physical or virtual MFA token. It is recommended that MFA be enabled for all accounts that have a console password.", + "RationaleStatement": "Enabling MFA provides increased security for console access as it requires the authenticating principal to possess a device that displays a time-sensitive key and have knowledge of a credential.", + "ImpactStatement": "AWS will soon end support for SMS multi-factor authentication (MFA). New customers are not allowed to use this feature. We recommend that existing customers switch to one of the following alternative methods of MFA.", + "RemediationProcedure": "Perform the following to enable MFA: **From Console:** 1. Sign in to the AWS Management Console and open the IAM console at 'https://console.aws.amazon.com/iam/' 2. In the left pane, select `Users`. 3. In the `User Name` list, choose the name of the intended MFA user. 4. Choose the `Security Credentials` tab, and then choose `Manage MFA Device`. 5. In the `Manage MFA Device wizard`, choose `Virtual MFA` device, and then choose `Continue`. IAM generates and displays configuration information for the virtual MFA device, including a QR code graphic. The graphic is a representation of the 'secret configuration key' that is available for manual entry on devices that do not support QR codes. 6. Open your virtual MFA application. (For a list of apps that you can use for hosting virtual MFA devices, see Virtual MFA Applications at https://aws.amazon.com/iam/details/mfa/#Virtual_MFA_Applications). If the virtual MFA application supports multiple accounts (multiple virtual MFA devices), choose the option to create a new account (a new virtual MFA device). 7. Determine whether the MFA app supports QR codes, and then do one of the following: - Use the app to scan the QR code. For example, you might choose the camera icon or choose an option similar to Scan code, and then use the device's camera to scan the code. - In the Manage MFA Device wizard, choose Show secret key for manual configuration, and then type the secret configuration key into your MFA application. When you are finished, the virtual MFA device starts generating one-time passwords. 8. In the `Manage MFA Device wizard`, in the `MFA Code 1 box`, type the `one-time password` that currently appears in the virtual MFA device. Wait up to 30 seconds for the device to generate a new one-time password. Then type the second `one-time password` into the `MFA Code 2 box`. 9. Click `Assign MFA`.", + "AuditProcedure": "Perform the following to determine if a MFA device is enabled for all IAM users having a console password: **From Console:** 1. Open the IAM console at [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/). 2. In the left pane, select `Users` 3. If the `MFA` or `Password age` columns are not visible in the table, click the gear icon at the upper right corner of the table and ensure a checkmark is next to both, then click `Close`. 4. Ensure that for each user where the `Password age` column shows a password age, the `MFA` column shows `Virtual`, `U2F Security Key`, or `Hardware`. **From Command Line:** 1. Run the following command (OSX/Linux/UNIX) to generate a list of all IAM users along with their password and MFA status: ``` aws iam generate-credential-report ``` ``` aws iam get-credential-report --query 'Content' --output text | base64 -d | cut -d, -f1,4,8 ``` 2. The output of this command will produce a table similar to the following: ``` user,password_enabled,mfa_active elise,false,false brandon,true,true rakesh,false,false helene,false,false paras,true,true anitha,false,false ``` 3. For any column having `password_enabled` set to `true` , ensure `mfa_active` is also set to `true.`", + "AdditionalInformation": "**Forced IAM User Self-Service Remediation** Amazon has published a pattern that forces users to self-service setup MFA before they have access to their complete permissions set. Until they complete this step, they cannot access their full permissions. This pattern can be used on new AWS accounts. It can also be used on existing accounts - it is recommended users are given instructions and a grace period to accomplish MFA enrollment before active enforcement on existing AWS accounts.", + "References": "https://tools.ietf.org/html/rfc6238:https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_mfa.html:https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#enable-mfa-for-privileged-users:https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_mfa_enable_virtual.html:https://blogs.aws.amazon.com/security/post/Tx2SJJYE082KBUK/How-to-Delegate-Management-of-Multi-Factor-Authentication-to-AWS-IAM-Users" + } + ] + }, + { + "Id": "1.11", + "Description": "Do not setup access keys during initial user setup for all IAM users that have a console password", + "Checks": [ + "iam_user_no_setup_initial_access_key" + ], + "Attributes": [ + { + "Section": "1. Identity and Access Management", + "Profile": "Level 1", + "AssessmentStatus": "Automated", + "Description": "AWS console defaults to no check boxes selected when creating a new IAM user. When cerating the IAM User credentials you have to determine what type of access they require. Programmatic access: The IAM user might need to make API calls, use the AWS CLI, or use the Tools for Windows PowerShell. In that case, create an access key (access key ID and a secret access key) for that user. AWS Management Console access: If the user needs to access the AWS Management Console, create a password for the user.", + "RationaleStatement": "Requiring the additional steps be taken by the user for programmatic access after their profile has been created will give a stronger indication of intent that access keys are [a] necessary for their work and [b] once the access key is established on an account that the keys may be in use somewhere in the organization. **Note**: Even if it is known the user will need access keys, require them to create the keys themselves or put in a support ticket to have them created as a separate step from user creation.", + "ImpactStatement": "", + "RemediationProcedure": "Perform the following to delete access keys that do not pass the audit: **From Console:** 1. Login to the AWS Management Console: 2. Click `Services` 3. Click `IAM` 4. Click on `Users` 5. Click on `Security Credentials` 6. As an Administrator - Click on the X `(Delete)` for keys that were created at the same time as the user profile but have not been used. 7. As an IAM User - Click on the X `(Delete)` for keys that were created at the same time as the user profile but have not been used. **From Command Line:** ``` aws iam delete-access-key --access-key-id --user-name ```", + "AuditProcedure": "Perform the following to determine if access keys were created upon user creation and are being used and rotated as prescribed: **From Console:** 1. Login to the AWS Management Console 2. Click `Services` 3. Click `IAM` 4. Click on a User where column `Password age` and `Access key age` is not set to `None` 5. Click on `Security credentials` Tab 6. Compare the user 'Creation time` to the Access Key `Created` date. 6. For any that match, the key was created during initial user setup. - Keys that were created at the same time as the user profile and do not have a last used date should be deleted. Refer to the remediation below. **From Command Line:** 1. Run the following command (OSX/Linux/UNIX) to generate a list of all IAM users along with their access keys utilization: ``` aws iam generate-credential-report ``` ``` aws iam get-credential-report --query 'Content' --output text | base64 -d | cut -d, -f1,4,9,11,14,16 ``` 2. The output of this command will produce a table similar to the following: ``` user,password_enabled,access_key_1_active,access_key_1_last_used_date,access_key_2_active,access_key_2_last_used_date elise,false,true,2015-04-16T15:14:00+00:00,false,N/A brandon,true,true,N/A,false,N/A rakesh,false,false,N/A,false,N/A helene,false,true,2015-11-18T17:47:00+00:00,false,N/A paras,true,true,2016-08-28T12:04:00+00:00,true,2016-03-04T10:11:00+00:00 anitha,true,true,2016-06-08T11:43:00+00:00,true,N/A ``` 3. For any user having `password_enabled` set to `true` AND `access_key_last_used_date` set to `N/A` refer to the remediation below.", + "AdditionalInformation": "Credential report does not appear to contain \"Key Creation Date\"", + "References": "https://docs.aws.amazon.com/cli/latest/reference/iam/delete-access-key.html:https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_create.html" + } + ] + }, + { + "Id": "1.12", + "Description": "Ensure credentials unused for 45 days or greater are disabled", + "Checks": [ + "iam_user_accesskey_unused", + "iam_user_console_access_unused" + ], + "Attributes": [ + { + "Section": "1. Identity and Access Management", + "Profile": "Level 1", + "AssessmentStatus": "Automated", + "Description": "AWS IAM users can access AWS resources using different types of credentials, such as passwords or access keys. It is recommended that all credentials that have been unused in 45 or greater days be deactivated or removed.", + "RationaleStatement": "Disabling or removing unnecessary credentials will reduce the window of opportunity for credentials associated with a compromised or abandoned account to be used.", + "ImpactStatement": "", + "RemediationProcedure": "**From Console:** Perform the following to manage Unused Password (IAM user console access) 1. Login to the AWS Management Console: 2. Click `Services` 3. Click `IAM` 4. Click on `Users` 5. Click on `Security Credentials` 6. Select user whose `Console last sign-in` is greater than 45 days 7. Click `Security credentials` 8. In section `Sign-in credentials`, `Console password` click `Manage` 9. Under Console Access select `Disable` 10.Click `Apply` Perform the following to deactivate Access Keys: 1. Login to the AWS Management Console: 2. Click `Services` 3. Click `IAM` 4. Click on `Users` 5. Click on `Security Credentials` 6. Select any access keys that are over 45 days old and that have been used and - Click on `Make Inactive` 7. Select any access keys that are over 45 days old and that have not been used and - Click the X to `Delete`", + "AuditProcedure": "Perform the following to determine if unused credentials exist: **From Console:** 1. Login to the AWS Management Console 2. Click `Services` 3. Click `IAM` 4. Click on `Users` 5. Click the `Settings` (gear) icon. 6. Select `Console last sign-in`, `Access key last used`, and `Access Key Id` 7. Click on `Close` 8. Check and ensure that `Console last sign-in` is less than 45 days ago. **Note** - `Never` means the user has never logged in. 9. Check and ensure that `Access key age` is less than 45 days and that `Access key last used` does not say `None` If the user hasn't signed into the Console in the last 45 days or Access keys are over 45 days old refer to the remediation. **From Command Line:** **Download Credential Report:** 1. Run the following commands: ``` aws iam generate-credential-report aws iam get-credential-report --query 'Content' --output text | base64 -d | cut -d, -f1,4,5,6,9,10,11,14,15,16 | grep -v '^' ``` **Ensure unused credentials do not exist:** 2. For each user having `password_enabled` set to `TRUE` , ensure `password_last_used_date` is less than `45` days ago. - When `password_enabled` is set to `TRUE` and `password_last_used` is set to `No_Information` , ensure `password_last_changed` is less than 45 days ago. 3. For each user having an `access_key_1_active` or `access_key_2_active` to `TRUE` , ensure the corresponding `access_key_n_last_used_date` is less than `45` days ago. - When a user having an `access_key_x_active` (where x is 1 or 2) to `TRUE` and corresponding access_key_x_last_used_date is set to `N/A', ensure `access_key_x_last_rotated` is less than 45 days ago.", + "AdditionalInformation": " is excluded in the audit since the root account should not be used for day to day business and would likely be unused for more than 45 days.", + "References": "https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#remove-credentials:https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_finding-unused.html:https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_passwords_admin-change-user.html:https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_access-keys.html" + } + ] + }, + { + "Id": "1.13", + "Description": "Ensure there is only one active access key available for any single IAM user", + "Checks": [ + "iam_user_two_active_access_key" + ], + "Attributes": [ + { + "Section": "1. Identity and Access Management", + "Profile": "Level 1", + "AssessmentStatus": "Automated", + "Description": "Access keys are long-term credentials for an IAM user or the AWS account 'root' user. You can use access keys to sign programmatic requests to the AWS CLI or AWS API (directly or using the AWS SDK)", + "RationaleStatement": "Access keys are long-term credentials for an IAM user or the AWS account 'root' user. You can use access keys to sign programmatic requests to the AWS CLI or AWS API. One of the best ways to protect your account is to not allow users to have multiple access keys.", + "ImpactStatement": "", + "RemediationProcedure": "**From Console:** 1. Sign in to the AWS Management Console and navigate to IAM dashboard at `https://console.aws.amazon.com/iam/`. 2. In the left navigation panel, choose `Users`. 3. Click on the IAM user name that you want to examine. 4. On the IAM user configuration page, select `Security Credentials` tab. 5. In `Access Keys` section, choose one access key that is less than 90 days old. This should be the only active key used by this IAM user to access AWS resources programmatically. Test your application(s) to make sure that the chosen access key is working. 6. In the same `Access Keys` section, identify your non-operational access keys (other than the chosen one) and deactivate it by clicking the `Make Inactive` link. 7. If you receive the `Change Key Status` confirmation box, click `Deactivate` to switch off the selected key. 8. Repeat steps no. 3 – 7 for each IAM user in your AWS account. **From Command Line:** 1. Using the IAM user and access key information provided in the `Audit CLI`, choose one access key that is less than 90 days old. This should be the only active key used by this IAM user to access AWS resources programmatically. Test your application(s) to make sure that the chosen access key is working. 2. Run the `update-access-key` command below using the IAM user name and the non-operational access key IDs to deactivate the unnecessary key(s). Refer to the Audit section to identify the unnecessary access key ID for the selected IAM user **Note** - the command does not return any output: ``` aws iam update-access-key --access-key-id --status Inactive --user-name ``` 3. To confirm that the selected access key pair has been successfully `deactivated` run the `list-access-keys` audit command again for that IAM User: ``` aws iam list-access-keys --user-name ``` - The command output should expose the metadata for each access key associated with the IAM user. If the non-operational key pair(s) `Status` is set to `Inactive`, the key has been successfully deactivated and the IAM user access configuration adheres now to this recommendation. 4. Repeat steps no. 1 – 3 for each IAM user in your AWS account.", + "AuditProcedure": "**From Console:** 1. Sign in to the AWS Management Console and navigate to IAM dashboard at `https://console.aws.amazon.com/iam/`. 2. In the left navigation panel, choose `Users`. 3. Click on the IAM user name that you want to examine. 4. On the IAM user configuration page, select `Security Credentials` tab. 5. Under `Access Keys` section, in the Status column, check the current status for each access key associated with the IAM user. If the selected IAM user has more than one access key activated then the users access configuration does not adhere to security best practices and the risk of accidental exposures increases. - Repeat steps no. 3 – 5 for each IAM user in your AWS account. **From Command Line:** 1. Run `list-users` command to list all IAM users within your account: ``` aws iam list-users --query \"Users[*].UserName\" ``` The command output should return an array that contains all your IAM user names. 2. Run `list-access-keys` command using the IAM user name list to return the current status of each access key associated with the selected IAM user: ``` aws iam list-access-keys --user-name ``` The command output should expose the metadata `(\"Username\", \"AccessKeyId\", \"Status\", \"CreateDate\")` for each access key on that user account. 3. Check the `Status` property value for each key returned to determine each keys current state. If the `Status` property value for more than one IAM access key is set to `Active`, the user access configuration does not adhere to this recommendation, refer to the remediation below. - Repeat steps no. 2 and 3 for each IAM user in your AWS account.", + "AdditionalInformation": "", + "References": "https://docs.aws.amazon.com/general/latest/gr/aws-access-keys-best-practices.html" + } + ] + }, + { + "Id": "1.14", + "Description": "Ensure access keys are rotated every 90 days or less", + "Checks": [ + "iam_rotate_access_key_90_days" + ], + "Attributes": [ + { + "Section": "1. Identity and Access Management", + "Profile": "Level 1", + "AssessmentStatus": "Automated", + "Description": "Access keys consist of an access key ID and secret access key, which are used to sign programmatic requests that you make to AWS. AWS users need their own access keys to make programmatic calls to AWS from the AWS Command Line Interface (AWS CLI), Tools for Windows PowerShell, the AWS SDKs, or direct HTTP calls using the APIs for individual AWS services. It is recommended that all access keys be regularly rotated.", + "RationaleStatement": "Rotating access keys will reduce the window of opportunity for an access key that is associated with a compromised or terminated account to be used. Access keys should be rotated to ensure that data cannot be accessed with an old key which might have been lost, cracked, or stolen.", + "ImpactStatement": "", + "RemediationProcedure": "Perform the following to rotate access keys: **From Console:** 1. Go to Management Console (https://console.aws.amazon.com/iam) 2. Click on `Users` 3. Click on `Security Credentials` 4. As an Administrator - Click on `Make Inactive` for keys that have not been rotated in `90` Days 5. As an IAM User - Click on `Make Inactive` or `Delete` for keys which have not been rotated or used in `90` Days 6. Click on `Create Access Key` 7. Update programmatic call with new Access Key credentials **From Command Line:** 1. While the first access key is still active, create a second access key, which is active by default. Run the following command: ``` aws iam create-access-key ``` At this point, the user has two active access keys. 2. Update all applications and tools to use the new access key. 3. Determine whether the first access key is still in use by using this command: ``` aws iam get-access-key-last-used ``` 4. One approach is to wait several days and then check the old access key for any use before proceeding. Even if step Step 3 indicates no use of the old key, it is recommended that you do not immediately delete the first access key. Instead, change the state of the first access key to Inactive using this command: ``` aws iam update-access-key ``` 5. Use only the new access key to confirm that your applications are working. Any applications and tools that still use the original access key will stop working at this point because they no longer have access to AWS resources. If you find such an application or tool, you can switch its state back to Active to reenable the first access key. Then return to step Step 2 and update this application to use the new key. 6. After you wait some period of time to ensure that all applications and tools have been updated, you can delete the first access key with this command: ``` aws iam delete-access-key ```", + "AuditProcedure": "Perform the following to determine if access keys are rotated as prescribed: **From Console:** 1. Go to Management Console (https://console.aws.amazon.com/iam) 2. Click on `Users` 3. Click `setting` icon 4. Select `Console last sign-in` 5. Click `Close` 6. Ensure that `Access key age` is less than 90 days ago. note) `None` in the `Access key age` means the user has not used the access key. **From Command Line:** ``` aws iam generate-credential-report aws iam get-credential-report --query 'Content' --output text | base64 -d ``` The `access_key_1_last_rotated` field in this file notes The date and time, in ISO 8601 date-time format, when the user's access key was created or last changed. If the user does not have an active access key, the value in this field is N/A (not applicable).", + "AdditionalInformation": "", + "References": "https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#rotate-credentials:https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_finding-unused.html:https://docs.aws.amazon.com/general/latest/gr/managing-aws-access-keys.html:https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_access-keys.html" + } + ] + }, + { + "Id": "1.15", + "Description": "Ensure IAM Users Receive Permissions Only Through Groups", + "Checks": [ + "iam_policy_attached_only_to_group_or_roles" + ], + "Attributes": [ + { + "Section": "1. Identity and Access Management", + "Profile": "Level 1", + "AssessmentStatus": "Automated", + "Description": "IAM users are granted access to services, functions, and data through IAM policies. There are three ways to define policies for a user: 1) Edit the user policy directly, aka an inline, or user, policy; 2) attach a policy directly to a user; 3) add the user to an IAM group that has an attached policy. Only the third implementation is recommended.", + "RationaleStatement": "Assigning IAM policy only through groups unifies permissions management to a single, flexible layer consistent with organizational functional roles. By unifying permissions management, the likelihood of excessive permissions is reduced.", + "ImpactStatement": "", + "RemediationProcedure": "Perform the following to create an IAM group and assign a policy to it: 1. Sign in to the AWS Management Console and open the IAM console at [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/). 2. In the navigation pane, click `Groups` and then click `Create New Group` . 3. In the `Group Name` box, type the name of the group and then click `Next Step` . 4. In the list of policies, select the check box for each policy that you want to apply to all members of the group. Then click `Next Step` . 5. Click `Create Group` Perform the following to add a user to a given group: 1. Sign in to the AWS Management Console and open the IAM console at [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/). 2. In the navigation pane, click `Groups` 3. Select the group to add a user to 4. Click `Add Users To Group` 5. Select the users to be added to the group 6. Click `Add Users` Perform the following to remove a direct association between a user and policy: 1. Sign in to the AWS Management Console and open the IAM console at [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/). 2. In the left navigation pane, click on Users 3. For each user: - Select the user - Click on the `Permissions` tab - Expand `Permissions policies` - Click `X` for each policy; then click Detach or Remove (depending on policy type)", + "AuditProcedure": "Perform the following to determine if an inline policy is set or a policy is directly attached to users: 1. Run the following to get a list of IAM users: ``` aws iam list-users --query 'Users[*].UserName' --output text ``` 2. For each user returned, run the following command to determine if any policies are attached to them: ``` aws iam list-attached-user-policies --user-name aws iam list-user-policies --user-name ``` 3. If any policies are returned, the user has an inline policy or direct policy attachment.", + "AdditionalInformation": "", + "References": "http://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html:http://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html" + } + ] + }, + { + "Id": "1.16", + "Description": "Ensure IAM policies that allow full \"*:*\" administrative privileges are not attached", + "Checks": [ + "iam_aws_attached_policy_no_administrative_privileges", + "iam_customer_attached_policy_no_administrative_privileges" + ], + "Attributes": [ + { + "Section": "1. Identity and Access Management", + "Profile": "Level 1", + "AssessmentStatus": "Automated", + "Description": "IAM policies are the means by which privileges are granted to users, groups, or roles. It is recommended and considered a standard security advice to grant _least privilege_ -that is, granting only the permissions required to perform a task. Determine what users need to do and then craft policies for them that let the users perform _only_ those tasks, instead of allowing full administrative privileges.", + "RationaleStatement": "It's more secure to start with a minimum set of permissions and grant additional permissions as necessary, rather than starting with permissions that are too lenient and then trying to tighten them later. Providing full administrative privileges instead of restricting to the minimum set of permissions that the user is required to do exposes the resources to potentially unwanted actions. IAM policies that have a statement with \"Effect\": \"Allow\" with \"Action\": \"\\*\" over \"Resource\": \"\\*\" should be removed.", + "ImpactStatement": "", + "RemediationProcedure": "From Console: Perform the following to detach the policy that has full administrative privileges: 1. Sign in to the AWS Management Console and open the IAM console at https://console.aws.amazon.com/iam/. 2. In the navigation pane, click Policies and then search for the policy name found in the audit step. 3. Select the policy that needs to be deleted. 4. In the policy action menu, select first Detach 5. Select all Users, Groups, Roles that have this policy attached 6. Click Detach Policy 7. In the policy action menu, select Detach 8. Select the newly detached policy and select Delete From Command Line: Perform the following to detach the policy that has full administrative privileges as found in the audit step: 1. Lists all IAM users, groups, and roles that the specified managed policy is attached to. aws iam list-entities-for-policy --policy-arn 2. Detach the policy from all IAM Users: aws iam detach-user-policy --user-name --policy-arn 3. Detach the policy from all IAM Groups: aws iam detach-group-policy --group-name --policy-arn 4. Detach the policy from all IAM Roles: aws iam detach-role-policy --role-name --policy-arn ", + "AuditProcedure": "Perform the following to determine what policies are created: **From Command Line:** 1. Run the following to get a list of IAM policies: ``` aws iam list-policies --only-attached --output text ``` 2. For each policy returned, run the following command to determine if any policies is allowing full administrative privileges on the account: ``` aws iam get-policy-version --policy-arn --version-id ``` 3. In output ensure policy should not have any Statement block with `\"Effect\": \"Allow\"` and `Action` set to `\"*\"` and `Resource` set to `\"*\"`", + "AdditionalInformation": "", + "References": "https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html:https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html:https://docs.aws.amazon.com/cli/latest/reference/iam/index.html#cli-aws-iam" + } + ] + }, + { + "Id": "1.17", + "Description": "Ensure a support role has been created to manage incidents with AWS Support", + "Checks": [ + "iam_support_role_created" + ], + "Attributes": [ + { + "Section": "1. Identity and Access Management", + "Profile": "Level 1", + "AssessmentStatus": "Automated", + "Description": "AWS provides a support center that can be used for incident notification and response, as well as technical support and customer services. Create an IAM Role to allow authorized users to manage incidents with AWS Support.", + "RationaleStatement": "By implementing least privilege for access control, an IAM Role will require an appropriate IAM Policy to allow Support Center Access in order to manage Incidents with AWS Support.", + "ImpactStatement": "All AWS Support plans include an unlimited number of account and billing supportcases, with no long-term contracts. Support billing calculations are performed on a per-account basis for all plans. Enterprise Support plan customers have the option toinclude multiple enabled accounts in an aggregated monthly billing calculation. Monthlycharges for the Business and Enterprise support plans are based on each month's AWSusage charges, subject to a monthly minimum, billed in advance.When assigning rights, keep in mind that other policies may grant access to Support aswell. This may include AdministratorAccess and other policies including customermanaged policies. Utilizing the AWS managed 'AWSSupportAccess' role is one simpleway of ensuring that this permission is properly granted.To better support the principle of separation of duties, it would be best to only attach thisrole where necessary.", + "RemediationProcedure": "**From Command Line:** 1. Create an IAM role for managing incidents with AWS: - Create a trust relationship policy document that allows to manage AWS incidents, and save it locally as /tmp/TrustPolicy.json: ``` { \"Version\": \"2012-10-17\", \"Statement\": [ { \"Effect\": \"Allow\", \"Principal\": { \"AWS\": \"\" }, \"Action\": \"sts:AssumeRole\" } ] } ``` 2. Create the IAM role using the above trust policy: ``` aws iam create-role --role-name --assume-role-policy-document file:///tmp/TrustPolicy.json ``` 3. Attach 'AWSSupportAccess' managed policy to the created IAM role: ``` aws iam attach-role-policy --policy-arn arn:aws:iam::aws:policy/AWSSupportAccess --role-name ```", + "AuditProcedure": "**From Command Line:** 1. List IAM policies, filter for the 'AWSSupportAccess' managed policy, and note the \"Arn\" element value: ``` aws iam list-policies --query \"Policies[?PolicyName == 'AWSSupportAccess']\" ``` 2. Check if the 'AWSSupportAccess' policy is attached to any role: ``` aws iam list-entities-for-policy --policy-arn arn:aws:iam::aws:policy/AWSSupportAccess ``` 3. In Output, Ensure `PolicyRoles` does not return empty. 'Example: Example: PolicyRoles: [ ]' If it returns empty refer to the remediation below.", + "AdditionalInformation": "AWSSupportAccess policy is a global AWS resource. It has same ARN as `arn:aws:iam::aws:policy/AWSSupportAccess` for every account.", + "References": "https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html:https://aws.amazon.com/premiumsupport/pricing/:https://docs.aws.amazon.com/cli/latest/reference/iam/list-policies.html:https://docs.aws.amazon.com/cli/latest/reference/iam/attach-role-policy.html:https://docs.aws.amazon.com/cli/latest/reference/iam/list-entities-for-policy.html" + } + ] + }, + { + "Id": "1.18", + "Description": "Ensure IAM instance roles are used for AWS resource access from instances", + "Checks": [ + "ec2_instance_profile_attached" + ], + "Attributes": [ + { + "Section": "1. Identity and Access Management", + "Profile": "Level 2", + "AssessmentStatus": "Manual", + "Description": "AWS access from within AWS instances can be done by either encoding AWS keys into AWS API calls or by assigning the instance to a role which has an appropriate permissions policy for the required access. \"AWS Access\" means accessing the APIs of AWS in order to access AWS resources or manage AWS account resources.", + "RationaleStatement": "AWS IAM roles reduce the risks associated with sharing and rotating credentials that can be used outside of AWS itself. If credentials are compromised, they can be used from outside of the AWS account they give access to. In contrast, in order to leverage role permissions an attacker would need to gain and maintain access to a specific instance to use the privileges associated with it. Additionally, if credentials are encoded into compiled applications or other hard to change mechanisms, then they are even more unlikely to be properly rotated due to service disruption risks. As time goes on, credentials that cannot be rotated are more likely to be known by an increasing number of individuals who no longer work for the organization owning the credentials.", + "ImpactStatement": "", + "RemediationProcedure": "IAM roles can only be associated at the launch of an instance. To remediate an instance to add it to a role you must create a new instance. If the instance has no external dependencies on its current private ip or public addresses are elastic IPs: 1. In AWS IAM create a new role. Assign a permissions policy if needed permissions are already known. 2. In the AWS console launch a new instance with identical settings to the existing instance, and ensure that the newly created role is selected. 3. Shutdown both the existing instance and the new instance. 4. Detach disks from both instances. 5. Attach the existing instance disks to the new instance. 6. Boot the new instance and you should have the same machine, but with the associated role. **Note:** if your environment has dependencies on a dynamically assigned PRIVATE IP address you can create an AMI from the existing instance, destroy the old one and then when launching from the AMI, manually assign the previous private IP address. **Note: **if your environment has dependencies on a dynamically assigned PUBLIC IP address there is not a way ensure the address is retained and assign an instance role. Dependencies on dynamically assigned public IP addresses are a bad practice and, if possible, you may wish to rebuild the instance with a new elastic IP address and make the investment to remediate affected systems while assigning the system to a role.", + "AuditProcedure": "Where an instance is associated with a Role: For instances that are known to perform AWS actions, ensure that they belong to an instance role that has the necessary permissions: 1. Login to AWS Console (with appropriate permissions to View Identity Access Management Account Settings) 2. Open the EC2 Dashboard and choose \"Instances\" 3. Click the EC2 instance that performs AWS actions, in the lower pane details find \"IAM Role\" 4. If the Role is blank, the instance is not assigned to one. 5. If the Role is filled in, it does not mean the instance might not \\*also\\* have credentials encoded on it for some activities. Where an Instance Contains Embedded Credentials: - On the instance that is known to perform AWS actions, audit all scripts and environment variables to ensure that none of them contain AWS credentials. Where an Instance Application Contains Embedded Credentials: - Applications that run on an instance may also have credentials embedded. This is a bad practice, but even worse if the source code is stored in a public code repository such as github. When an application contains credentials can be determined by eliminating all other sources of credentials and if the application can still access AWS resources - it likely contains embedded credentials. Another method is to examine all source code and configuration files of the application.", + "AdditionalInformation": "", + "References": "https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2.html:https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html" + } + ] + }, + { + "Id": "1.19", + "Description": "Ensure that all the expired SSL/TLS certificates stored in AWS IAM are removed", + "Checks": [ + "iam_no_expired_server_certificates_stored" + ], + "Attributes": [ + { + "Section": "1. Identity and Access Management", + "Profile": "Level 1", + "AssessmentStatus": "Automated", + "Description": "To enable HTTPS connections to your website or application in AWS, you need an SSL/TLS server certificate. You can use ACM or IAM to store and deploy server certificates. Use IAM as a certificate manager only when you must support HTTPS connections in a region that is not supported by ACM. IAM securely encrypts your private keys and stores the encrypted version in IAM SSL certificate storage. IAM supports deploying server certificates in all regions, but you must obtain your certificate from an external provider for use with AWS. You cannot upload an ACM certificate to IAM. Additionally, you cannot manage your certificates from the IAM Console.", + "RationaleStatement": "Removing expired SSL/TLS certificates eliminates the risk that an invalid certificate will be deployed accidentally to a resource such as AWS Elastic Load Balancer (ELB), which can damage the credibility of the application/website behind the ELB. As a best practice, it is recommended to delete expired certificates.", + "ImpactStatement": "Deleting the certificate could have implications for your application if you are using an expired server certificate with Elastic Load Balancing, CloudFront, etc. One has to make configurations at respective services to ensure there is no interruption in application functionality.", + "RemediationProcedure": "**From Console:** Removing expired certificates via AWS Management Console is not currently supported. To delete SSL/TLS certificates stored in IAM via the AWS API use the Command Line Interface (CLI). **From Command Line:** To delete Expired Certificate run following command by replacing with the name of the certificate to delete: ``` aws iam delete-server-certificate --server-certificate-name ``` When the preceding command is successful, it does not return any output.", + "AuditProcedure": "**From Console:** Getting the certificates expiration information via AWS Management Console is not currently supported. To request information about the SSL/TLS certificates stored in IAM via the AWS API use the Command Line Interface (CLI). **From Command Line:** Run list-server-certificates command to list all the IAM-stored server certificates: ``` aws iam list-server-certificates ``` The command output should return an array that contains all the SSL/TLS certificates currently stored in IAM and their metadata (name, ID, expiration date, etc): ``` { \"ServerCertificateMetadataList\": [ { \"ServerCertificateId\": \"EHDGFRW7EJFYTE88D\", \"ServerCertificateName\": \"MyServerCertificate\", \"Expiration\": \"2018-07-10T23:59:59Z\", \"Path\": \"/\", \"Arn\": \"arn:aws:iam::012345678910:server-certificate/MySSLCertificate\", \"UploadDate\": \"2018-06-10T11:56:08Z\" } ] } ``` Verify the `ServerCertificateName` and `Expiration` parameter value (expiration date) for each SSL/TLS certificate returned by the list-server-certificates command and determine if there are any expired server certificates currently stored in AWS IAM. If so, use the AWS API to remove them. If this command returns: ``` { { \"ServerCertificateMetadataList\": [] } ``` This means that there are no expired certificates, It DOES NOT mean that no certificates exist.", + "AdditionalInformation": "", + "References": "https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_server-certs.html:https://docs.aws.amazon.com/cli/latest/reference/iam/delete-server-certificate.html" + } + ] + }, + { + "Id": "1.2", + "Description": "Ensure security contact information is registered", + "Checks": [ + "account_security_contact_information_is_registered" + ], + "Attributes": [ + { + "Section": "1. Identity and Access Management", + "Profile": "Level 1", + "AssessmentStatus": "Manual", + "Description": "AWS provides customers with the option of specifying the contact information for account's security team. It is recommended that this information be provided.", + "RationaleStatement": "Specifying security-specific contact information will help ensure that security advisories sent by AWS reach the team in your organization that is best equipped to respond to them.", + "ImpactStatement": "", + "RemediationProcedure": "Perform the following to establish security contact information: **From Console:** 1. Click on your account name at the top right corner of the console. 2. From the drop-down menu Click `My Account` 3. Scroll down to the `Alternate Contacts` section 4. Enter contact information in the `Security` section **Note:** Consider specifying an internal email distribution list to ensure emails are regularly monitored by more than one individual.", + "AuditProcedure": "Perform the following to determine if security contact information is present: **From Console:** 1. Click on your account name at the top right corner of the console 2. From the drop-down menu Click `My Account` 3. Scroll down to the `Alternate Contacts` section 4. Ensure contact information is specified in the `Security` section", + "AdditionalInformation": "", + "References": "" + } + ] + }, + { + "Id": "1.20", + "Description": "Ensure that IAM Access analyzer is enabled for all regions", + "Checks": [ + "accessanalyzer_enabled" + ], + "Attributes": [ + { + "Section": "1. Identity and Access Management", + "Profile": "Level 1", + "AssessmentStatus": "Automated", + "Description": "Enable IAM Access analyzer for IAM policies about all resources in each region. IAM Access Analyzer is a technology introduced at AWS reinvent 2019. After the Analyzer is enabled in IAM, scan results are displayed on the console showing the accessible resources. Scans show resources that other accounts and federated users can access, such as KMS keys and IAM roles. So the results allow you to determine if an unintended user is allowed, making it easier for administrators to monitor least privileges access. Access Analyzer analyzes only policies that are applied to resources in the same AWS Region.", + "RationaleStatement": "AWS IAM Access Analyzer helps you identify the resources in your organization and accounts, such as Amazon S3 buckets or IAM roles, that are shared with an external entity. This lets you identify unintended access to your resources and data. Access Analyzer identifies resources that are shared with external principals by using logic-based reasoning to analyze the resource-based policies in your AWS environment. IAM Access Analyzer continuously monitors all policies for S3 bucket, IAM roles, KMS(Key Management Service) keys, AWS Lambda functions, and Amazon SQS(Simple Queue Service) queues.", + "ImpactStatement": "", + "RemediationProcedure": "**From Console:** Perform the following to enable IAM Access analyzer for IAM policies: 1. Open the IAM console at `https://console.aws.amazon.com/iam/.` 2. Choose `Access analyzer`. 3. Choose `Create analyzer`. 4. On the `Create analyzer` page, confirm that the `Region` displayed is the Region where you want to enable Access Analyzer. 5. Enter a name for the analyzer. `Optional as it will generate a name for you automatically`. 6. Add any tags that you want to apply to the analyzer. `Optional`. 7. Choose `Create Analyzer`. 8. Repeat these step for each active region **From Command Line:** Run the following command: ``` aws accessanalyzer create-analyzer --analyzer-name --type ``` Repeat this command above for each active region. **Note:** The IAM Access Analyzer is successfully configured only when the account you use has the necessary permissions.", + "AuditProcedure": "**From Console:** 1. Open the IAM console at `https://console.aws.amazon.com/iam/` 2. Choose `Access analyzer` 3. Click 'Analyzers' 4. Ensure that at least one analyzer is present 5. Ensure that the `STATUS` is set to `Active` 6. Repeat these step for each active region **From Command Line:** 1. Run the following command: ``` aws accessanalyzer list-analyzers | grep status ``` 2. Ensure that at least one Analyzer the `status` is set to `ACTIVE` 3. Repeat the steps above for each active region. If an Access analyzer is not listed for each region or the status is not set to active refer to the remediation procedure below.", + "AdditionalInformation": "", + "References": "https://docs.aws.amazon.com/IAM/latest/UserGuide/what-is-access-analyzer.html:https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-getting-started.html:https://docs.aws.amazon.com/cli/latest/reference/accessanalyzer/get-analyzer.html:https://docs.aws.amazon.com/cli/latest/reference/accessanalyzer/create-analyzer.html" + } + ] + }, + { + "Id": "1.21", + "Description": "Ensure IAM users are managed centrally via identity federation or AWS Organizations for multi-account environments", + "Checks": [ + "iam_check_saml_providers_sts" + ], + "Attributes": [ + { + "Section": "1. Identity and Access Management", + "Profile": "Level 2", + "AssessmentStatus": "Manual", + "Description": "In multi-account environments, IAM user centralization facilitates greater user control. User access beyond the initial account is then provided via role assumption. Centralization of users can be accomplished through federation with an external identity provider or through the use of AWS Organizations.", + "RationaleStatement": "Centralizing IAM user management to a single identity store reduces complexity and thus the likelihood of access management errors.", + "ImpactStatement": "", + "RemediationProcedure": "The remediation procedure will vary based on the individual organization's implementation of identity federation and/or AWS Organizations with the acceptance criteria that no non-service IAM users, and non-root accounts, are present outside the account providing centralized IAM user management.", + "AuditProcedure": "For multi-account AWS environments with an external identity provider: 1. Determine the master account for identity federation or IAM user management 2. Login to that account through the AWS Management Console 3. Click Services 4. Click IAM 5. Click Identity providers 6. Verify the configuration Then, determine all accounts that should not have local users present. For each account: 1. Determine all accounts that should not have local users present 2. Log into the AWS Management Console 3. Switch role into each identified account 4. Click Services 5. Click IAM 6. Click Users 7. Confirm that no IAM users representing individuals are present For multi-account AWS environments implementing AWS Organizations without an external identity provider: 1. Determine all accounts that should not have local users present 2. Log into the AWS Management Console 3. Switch role into each identified account 4. Click Services 5. Click IAM 6. Click Users 7. Confirm that no IAM users representing individuals are present", + "AdditionalInformation": "", + "References": "" + } + ] + }, + { + "Id": "1.22", + "Description": "Ensure access to AWSCloudShellFullAccess is restricted", + "Checks": [], + "Attributes": [ + { + "Section": "1. Identity and Access Management", + "Profile": "Level 1", + "AssessmentStatus": "Manual", + "Description": "AWS CloudShell is a convenient way of running CLI commands against AWS services; a managed IAM policy ('AWSCloudShellFullAccess') provides full access to CloudShell, which allows file upload and download capability between a user's local system and the CloudShell environment. Within the CloudShell environment a user has sudo permissions, and can access the internet. So it is feasible to install file transfer software (for example) and move data from CloudShell to external internet servers.", + "RationaleStatement": "Access to this policy should be restricted as it presents a potential channel for data exfiltration by malicious cloud admins that are given full permissions to the service. AWS documentation describes how to create a more restrictive IAM policy which denies file transfer permissions.", + "ImpactStatement": "", + "RemediationProcedure": "**From Console** 1. Open the IAM console at https://console.aws.amazon.com/iam/ 2. In the left pane, select Policies 3. Search for and select AWSCloudShellFullAccess 4. On the Entities attached tab, for each item, check the box and select Detach", + "AuditProcedure": "**From Console** 1. Open the IAM console at https://console.aws.amazon.com/iam/ 2. In the left pane, select Policies 3. Search for and select AWSCloudShellFullAccess 4. On the Entities attached tab, ensure that there are no entities using this policy **From Command Line** 1. List IAM policies, filter for the 'AWSCloudShellFullAccess' managed policy, and note the \"\"Arn\"\" element value: ``` aws iam list-policies --query \"\"Policies[?PolicyName == 'AWSCloudShellFullAccess']\"\" ``` 2. Check if the 'AWSCloudShellFullAccess' policy is attached to any role: ``` aws iam list-entities-for-policy --policy-arn arn:aws:iam::aws:policy/AWSCloudShellFullAccess ``` 3. In Output, Ensure PolicyRoles returns empty. 'Example: Example: PolicyRoles: [ ]' If it does not return empty refer to the remediation below. Note: Keep in mind that other policies may grant access.", + "AdditionalInformation": "", + "References": "https://docs.aws.amazon.com/cloudshell/latest/userguide/sec-auth-with-identities.html" + } + ] + }, + { + "Id": "1.3", + "Description": "Ensure security questions are registered in the AWS account", + "Checks": [ + "account_security_questions_are_registered_in_the_aws_account" + ], + "Attributes": [ + { + "Section": "1. Identity and Access Management", + "Profile": "Level 1", + "AssessmentStatus": "Manual", + "Description": "The AWS support portal allows account owners to establish security questions that can be used to authenticate individuals calling AWS customer service for support. It is recommended that security questions be established.", + "RationaleStatement": "When creating a new AWS account, a default super user is automatically created. This account is referred to as the 'root user' or 'root' account. It is recommended that the use of this account be limited and highly controlled. During events in which the 'root' password is no longer accessible or the MFA token associated with 'root' is lost/destroyed it is possible, through authentication using secret questions and associated answers, to recover 'root' user login access.", + "ImpactStatement": "", + "RemediationProcedure": "**From Console:** 1. Login to the AWS Account as the 'root' user 2. Click on the __ from the top right of the console 3. From the drop-down menu Click _My Account_ 4. Scroll down to the `Configure Security Questions` section 5. Click on `Edit` 6. Click on each `Question` - From the drop-down select an appropriate question - Click on the `Answer` section - Enter an appropriate answer - Follow process for all 3 questions 7. Click `Update` when complete 8. Save Questions and Answers and place in a secure physical location", + "AuditProcedure": "**From Console:** 1. Login to the AWS account as the 'root' user 2. On the top right you will see the __ 3. Click on the __ 4. From the drop-down menu Click `My Account` 5. In the `Configure Security Challenge Questions` section on the `Personal Information` page, configure three security challenge questions. 6. Click `Save questions` .", + "AdditionalInformation": "", + "References": "" + } + ] + }, + { + "Id": "1.4", + "Description": "Ensure no 'root' user account access key exists", + "Checks": [ + "iam_no_root_access_key" + ], + "Attributes": [ + { + "Section": "1. Identity and Access Management", + "Profile": "Level 1", + "AssessmentStatus": "Automated", + "Description": "The 'root' user account is the most privileged user in an AWS account. AWS Access Keys provide programmatic access to a given AWS account. It is recommended that all access keys associated with the 'root' user account be removed.", + "RationaleStatement": "Removing access keys associated with the 'root' user account limits vectors by which the account can be compromised. Additionally, removing the 'root' access keys encourages the creation and use of role based accounts that are least privileged.", + "ImpactStatement": "", + "RemediationProcedure": "Perform the following to delete or disable active 'root' user access keys **From Console:** 1. Sign in to the AWS Management Console as 'root' and open the IAM console at [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/). 2. Click on __ at the top right and select `My Security Credentials` from the drop down list 3. On the pop out screen Click on `Continue to Security Credentials` 4. Click on `Access Keys` _(Access Key ID and Secret Access Key)_ 5. Under the `Status` column if there are any Keys which are Active - Click on `Make Inactive` - (Temporarily disable Key - may be needed again) - Click `Delete` - (Deleted keys cannot be recovered)", + "AuditProcedure": "Perform the following to determine if the 'root' user account has access keys: **From Console:** 1. Login to the AWS Management Console 2. Click `Services` 3. Click `IAM` 4. Click on `Credential Report` 5. This will download a `.csv` file which contains credential usage for all IAM users within an AWS Account - open this file 6. For the `` user, ensure the `access_key_1_active` and `access_key_2_active` fields are set to `FALSE` . **From Command Line:** Run the following command: ``` aws iam get-account-summary | grep \"AccountAccessKeysPresent\" ``` If no 'root' access keys exist the output will show \"AccountAccessKeysPresent\": 0,. If the output shows a \"1\" than 'root' keys exist, refer to the remediation procedure below.", + "AdditionalInformation": "IAM User account \"root\" for us-gov cloud regions is not enabled by default. However, on request to AWS support enables 'root' access only through access-keys (CLI, API methods) for us-gov cloud region.", + "References": "http://docs.aws.amazon.com/general/latest/gr/aws-access-keys-best-practices.html:http://docs.aws.amazon.com/general/latest/gr/managing-aws-access-keys.html:http://docs.aws.amazon.com/IAM/latest/APIReference/API_GetAccountSummary.html:https://aws.amazon.com/blogs/security/an-easier-way-to-determine-the-presence-of-aws-account-access-keys/" + } + ] + }, + { + "Id": "1.5", + "Description": "Ensure MFA is enabled for the 'root' user account", + "Checks": [ + "iam_root_mfa_enabled" + ], + "Attributes": [ + { + "Section": "1. Identity and Access Management", + "Profile": "Level 1", + "AssessmentStatus": "Automated", + "Description": "The 'root' user account is the most privileged user in an AWS account. Multi-factor Authentication (MFA) adds an extra layer of protection on top of a username and password. With MFA enabled, when a user signs in to an AWS website, they will be prompted for their username and password as well as for an authentication code from their AWS MFA device. **Note:** When virtual MFA is used for 'root' accounts, it is recommended that the device used is NOT a personal device, but rather a dedicated mobile device (tablet or phone) that is managed to be kept charged and secured independent of any individual personal devices. (\"non-personal virtual MFA\") This lessens the risks of losing access to the MFA due to device loss, device trade-in or if the individual owning the device is no longer employed at the company.", + "RationaleStatement": "Enabling MFA provides increased security for console access as it requires the authenticating principal to possess a device that emits a time-sensitive key and have knowledge of a credential.", + "ImpactStatement": "", + "RemediationProcedure": "Perform the following to establish MFA for the 'root' user account: 1. Sign in to the AWS Management Console and open the IAM console at [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/). Note: to manage MFA devices for the 'root' AWS account, you must use your 'root' account credentials to sign in to AWS. You cannot manage MFA devices for the 'root' account using other credentials. 2. Choose `Dashboard` , and under `Security Status` , expand `Activate MFA` on your root account. 3. Choose `Activate MFA` 4. In the wizard, choose `A virtual MFA` device and then choose `Next Step` . 5. IAM generates and displays configuration information for the virtual MFA device, including a QR code graphic. The graphic is a representation of the 'secret configuration key' that is available for manual entry on devices that do not support QR codes. 6. Open your virtual MFA application. (For a list of apps that you can use for hosting virtual MFA devices, see [Virtual MFA Applications](http://aws.amazon.com/iam/details/mfa/#Virtual_MFA_Applications).) If the virtual MFA application supports multiple accounts (multiple virtual MFA devices), choose the option to create a new account (a new virtual MFA device). 7. Determine whether the MFA app supports QR codes, and then do one of the following: - Use the app to scan the QR code. For example, you might choose the camera icon or choose an option similar to Scan code, and then use the device's camera to scan the code. - In the Manage MFA Device wizard, choose Show secret key for manual configuration, and then type the secret configuration key into your MFA application. When you are finished, the virtual MFA device starts generating one-time passwords. In the Manage MFA Device wizard, in the Authentication Code 1 box, type the one-time password that currently appears in the virtual MFA device. Wait up to 30 seconds for the device to generate a new one-time password. Then type the second one-time password into the Authentication Code 2 box. Choose Assign Virtual MFA.", + "AuditProcedure": "Perform the following to determine if the 'root' user account has MFA setup: **From Console:** 1. Login to the AWS Management Console 2. Click `Services` 3. Click `IAM` 4. Click on `Credential Report` 5. This will download a `.csv` file which contains credential usage for all IAM users within an AWS Account - open this file 6. For the `` user, ensure the `mfa_active` field is set to `TRUE` . **From Command Line:** 1. Run the following command: ``` aws iam get-account-summary | grep \"AccountMFAEnabled\" ``` 2. Ensure the AccountMFAEnabled property is set to 1", + "AdditionalInformation": "IAM User account \"root\" for us-gov cloud regions does not have console access. This recommendation is not applicable for us-gov cloud regions.", + "References": "https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html#id_root-user_manage_mfa:https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_mfa_enable_virtual.html#enable-virt-mfa-for-root" + } + ] + }, + { + "Id": "1.6", + "Description": "Ensure hardware MFA is enabled for the 'root' user account", + "Checks": [ + "iam_root_hardware_mfa_enabled" + ], + "Attributes": [ + { + "Section": "1. Identity and Access Management", + "Profile": "Level 2", + "AssessmentStatus": "Automated", + "Description": "The 'root' user account is the most privileged user in an AWS account. MFA adds an extra layer of protection on top of a user name and password. With MFA enabled, when a user signs in to an AWS website, they will be prompted for their user name and password as well as for an authentication code from their AWS MFA device. For Level 2, it is recommended that the 'root' user account be protected with a hardware MFA.", + "RationaleStatement": "A hardware MFA has a smaller attack surface than a virtual MFA. For example, a hardware MFA does not suffer the attack surface introduced by the mobile smartphone on which a virtual MFA resides. **Note**: Using hardware MFA for many, many AWS accounts may create a logistical device management issue. If this is the case, consider implementing this Level 2 recommendation selectively to the highest security AWS accounts and the Level 1 recommendation applied to the remaining accounts.", + "ImpactStatement": "", + "RemediationProcedure": "Perform the following to establish a hardware MFA for the 'root' user account: 1. Sign in to the AWS Management Console and open the IAM console at [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/). Note: to manage MFA devices for the AWS 'root' user account, you must use your 'root' account credentials to sign in to AWS. You cannot manage MFA devices for the 'root' account using other credentials. 2. Choose `Dashboard` , and under `Security Status` , expand `Activate MFA` on your root account. 3. Choose `Activate MFA` 4. In the wizard, choose `A hardware MFA` device and then choose `Next Step` . 5. In the `Serial Number` box, enter the serial number that is found on the back of the MFA device. 6. In the `Authentication Code 1` box, enter the six-digit number displayed by the MFA device. You might need to press the button on the front of the device to display the number. 7. Wait 30 seconds while the device refreshes the code, and then enter the next six-digit number into the `Authentication Code 2` box. You might need to press the button on the front of the device again to display the second number. 8. Choose `Next Step` . The MFA device is now associated with the AWS account. The next time you use your AWS account credentials to sign in, you must type a code from the hardware MFA device. Remediation for this recommendation is not available through AWS CLI.", + "AuditProcedure": "Perform the following to determine if the 'root' user account has a hardware MFA setup: 1. Run the following command to determine if the 'root' account has MFA setup: ``` aws iam get-account-summary | grep \"AccountMFAEnabled\" ``` The `AccountMFAEnabled` property is set to `1` will ensure that the 'root' user account has MFA (Virtual or Hardware) Enabled. If `AccountMFAEnabled` property is set to `0` the account is not compliant with this recommendation. 2. If `AccountMFAEnabled` property is set to `1`, determine 'root' account has Hardware MFA enabled. Run the following command to list all virtual MFA devices: ``` aws iam list-virtual-mfa-devices ``` If the output contains one MFA with the following Serial Number, it means the MFA is virtual, not hardware and the account is not compliant with this recommendation: `\"SerialNumber\": \"arn:aws:iam::__:mfa/root-account-mfa-device\"`", + "AdditionalInformation": "IAM User account 'root' for us-gov cloud regions does not have console access. This control is not applicable for us-gov cloud regions.", + "References": "https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_mfa_enable_virtual.html:https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_mfa_enable_physical.html#enable-hw-mfa-for-root" + } + ] + }, + { + "Id": "1.7", + "Description": "Eliminate use of the 'root' user for administrative and daily tasks", + "Checks": [ + "iam_avoid_root_usage" + ], + "Attributes": [ + { + "Section": "1. Identity and Access Management", + "Profile": "Level 1", + "AssessmentStatus": "Automated", + "Description": "With the creation of an AWS account, a 'root user' is created that cannot be disabled or deleted. That user has unrestricted access to and control over all resources in the AWS account. It is highly recommended that the use of this account be avoided for everyday tasks.", + "RationaleStatement": "The 'root user' has unrestricted access to and control over all account resources. Use of it is inconsistent with the principles of least privilege and separation of duties, and can lead to unnecessary harm due to error or account compromise.", + "ImpactStatement": "", + "RemediationProcedure": "If you find that the 'root' user account is being used for daily activity to include administrative tasks that do not require the 'root' user: 1. Change the 'root' user password. 2. Deactivate or delete any access keys associate with the 'root' user. **Remember, anyone who has 'root' user credentials for your AWS account has unrestricted access to and control of all the resources in your account, including billing information.", + "AuditProcedure": "**From Console:** 1. Login to the AWS Management Console at `https://console.aws.amazon.com/iam/` 2. In the left pane, click `Credential Report` 3. Click on `Download Report` 4. Open of Save the file locally 5. Locate the `` under the user column 6. Review `password_last_used, access_key_1_last_used_date, access_key_2_last_used_date` to determine when the 'root user' was last used. **From Command Line:** Run the following CLI commands to provide a credential report for determining the last time the 'root user' was used: ``` aws iam generate-credential-report ``` ``` aws iam get-credential-report --query 'Content' --output text | base64 -d | cut -d, -f1,5,11,16 | grep -B1 '' ``` Review `password_last_used`, `access_key_1_last_used_date`, `access_key_2_last_used_date` to determine when the _root user_ was last used. **Note:** There are a few conditions under which the use of the 'root' user account is required. Please see the reference links for all of the tasks that require use of the 'root' user.", + "AdditionalInformation": "The 'root' user for us-gov cloud regions is not enabled by default. However, on request to AWS support, they can enable the 'root' user and grant access only through access-keys (CLI, API methods) for us-gov cloud region. If the 'root' user for us-gov cloud regions is enabled, this recommendation is applicable. Monitoring usage of the 'root' user can be accomplished by implementing recommendation 3.3 Ensure a log metric filter and alarm exist for usage of the 'root' user.", + "References": "https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html:https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html:https://docs.aws.amazon.com/general/latest/gr/aws_tasks-that-require-root.html" + } + ] + }, + { + "Id": "1.8", + "Description": "Ensure IAM password policy requires minimum length of 14 or greater", + "Checks": [ + "iam_password_policy_minimum_length_14" + ], + "Attributes": [ + { + "Section": "1. Identity and Access Management", + "Profile": "Level 1", + "AssessmentStatus": "Automated", + "Description": "Password policies are, in part, used to enforce password complexity requirements. IAM password policies can be used to ensure password are at least a given length. It is recommended that the password policy require a minimum password length 14.", + "RationaleStatement": "Setting a password complexity policy increases account resiliency against brute force login attempts.", + "ImpactStatement": "", + "RemediationProcedure": "Perform the following to set the password policy as prescribed: **From Console:** 1. Login to AWS Console (with appropriate permissions to View Identity Access Management Account Settings) 2. Go to IAM Service on the AWS Console 3. Click on Account Settings on the Left Pane 4. Set \"Minimum password length\" to `14` or greater. 5. Click \"Apply password policy\" **From Command Line:** ``` aws iam update-account-password-policy --minimum-password-length 14 ``` Note: All commands starting with \"aws iam update-account-password-policy\" can be combined into a single command.", + "AuditProcedure": "Perform the following to ensure the password policy is configured as prescribed: **From Console:** 1. Login to AWS Console (with appropriate permissions to View Identity Access Management Account Settings) 2. Go to IAM Service on the AWS Console 3. Click on Account Settings on the Left Pane 4. Ensure \"Minimum password length\" is set to 14 or greater. **From Command Line:** ``` aws iam get-account-password-policy ``` Ensure the output of the above command includes \"MinimumPasswordLength\": 14 (or higher)", + "AdditionalInformation": "", + "References": "https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_passwords_account-policy.html:https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#configure-strong-password-policy" + } + ] + }, + { + "Id": "1.9", + "Description": "Ensure IAM password policy prevents password reuse", + "Checks": [ + "iam_password_policy_reuse_24" + ], + "Attributes": [ + { + "Section": "1. Identity and Access Management", + "Profile": "Level 1", + "AssessmentStatus": "Automated", + "Description": "IAM password policies can prevent the reuse of a given password by the same user. It is recommended that the password policy prevent the reuse of passwords.", + "RationaleStatement": "Preventing password reuse increases account resiliency against brute force login attempts.", + "ImpactStatement": "", + "RemediationProcedure": "Perform the following to set the password policy as prescribed: **From Console:** 1. Login to AWS Console (with appropriate permissions to View Identity Access Management Account Settings) 2. Go to IAM Service on the AWS Console 3. Click on Account Settings on the Left Pane 4. Check \"Prevent password reuse\" 5. Set \"Number of passwords to remember\" is set to `24` **From Command Line:** ``` aws iam update-account-password-policy --password-reuse-prevention 24 ``` Note: All commands starting with \"aws iam update-account-password-policy\" can be combined into a single command.", + "AuditProcedure": "Perform the following to ensure the password policy is configured as prescribed: **From Console:** 1. Login to AWS Console (with appropriate permissions to View Identity Access Management Account Settings) 2. Go to IAM Service on the AWS Console 3. Click on Account Settings on the Left Pane 4. Ensure \"Prevent password reuse\" is checked 5. Ensure \"Number of passwords to remember\" is set to 24 **From Command Line:** ``` aws iam get-account-password-policy ``` Ensure the output of the above command includes \"PasswordReusePrevention\": 24", + "AdditionalInformation": "", + "References": "https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_passwords_account-policy.html:https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#configure-strong-password-policy" + } + ] + }, + { + "Id": "2.1.1", + "Description": "Ensure S3 Bucket Policy is set to deny HTTP requests", + "Checks": [ + "s3_bucket_secure_transport_policy" + ], + "Attributes": [ + { + "Section": "2.1. Simple Storage Service (S3)", + "Profile": "Level 2", + "AssessmentStatus": "Automated", + "Description": "At the Amazon S3 bucket level, you can configure permissions through a bucket policy making the objects accessible only through HTTPS.", + "RationaleStatement": "By default, Amazon S3 allows both HTTP and HTTPS requests. To achieve only allowing access to Amazon S3 objects through HTTPS you also have to explicitly deny access to HTTP requests. Bucket policies that allow HTTPS requests without explicitly denying HTTP requests will not comply with this recommendation.", + "ImpactStatement": "", + "RemediationProcedure": "**From Console:** 1. Login to AWS Management Console and open the Amazon S3 console using https://console.aws.amazon.com/s3/ 2. Select the Check box next to the Bucket. 3. Click on 'Permissions'. 4. Click 'Bucket Policy' 5. Add this to the existing policy filling in the required information ``` { \"Sid\": \", \"Effect\": \"Deny\", \"Principal\": \"*\", \"Action\": \"s3:*\", \"Resource\": \"arn:aws:s3:::/*\", \"Condition\": { \"Bool\": { \"aws:SecureTransport\": \"false\" } } } ``` 6. Save 7. Repeat for all the buckets in your AWS account that contain sensitive data. **From Console** using AWS Policy Generator: 1. Repeat steps 1-4 above. 2. Click on `Policy Generator` at the bottom of the Bucket Policy Editor 3. Select Policy Type `S3 Bucket Policy` 4. Add Statements - `Effect` = Deny - `Principal` = * - `AWS Service` = Amazon S3 - `Actions` = * - `Amazon Resource Name` = 5. Generate Policy 6. Copy the text and add it to the Bucket Policy. **From Command Line:** 1. Export the bucket policy to a json file. ``` aws s3api get-bucket-policy --bucket --query Policy --output text > policy.json ``` 2. Modify the policy.json file by adding in this statement: ``` { \"Sid\": \", \"Effect\": \"Deny\", \"Principal\": \"*\", \"Action\": \"s3:*\", \"Resource\": \"arn:aws:s3:::/*\", \"Condition\": { \"Bool\": { \"aws:SecureTransport\": \"false\" } } } ``` 3. Apply this modified policy back to the S3 bucket: ``` aws s3api put-bucket-policy --bucket --policy file://policy.json ```", + "AuditProcedure": "To allow access to HTTPS you can use a condition that checks for the key `\"aws:SecureTransport: true\"`. This means that the request is sent through HTTPS but that HTTP can still be used. So to make sure you do not allow HTTP access confirm that there is a bucket policy that explicitly denies access for HTTP requests and that it contains the key \"aws:SecureTransport\": \"false\". **From Console:** 1. Login to AWS Management Console and open the Amazon S3 console using https://console.aws.amazon.com/s3/ 2. Select the Check box next to the Bucket. 3. Click on 'Permissions', then Click on `Bucket Policy`. 4. Ensure that a policy is listed that matches: ``` '{ \"Sid\": , \"Effect\": \"Deny\", \"Principal\": \"*\", \"Action\": \"s3:*\", \"Resource\": \"arn:aws:s3:::/*\", \"Condition\": { \"Bool\": { \"aws:SecureTransport\": \"false\" }' ``` `` and `` will be specific to your account 5. Repeat for all the buckets in your AWS account. **From Command Line:** 1. List all of the S3 Buckets ``` aws s3 ls ``` 2. Using the list of buckets run this command on each of them: ``` aws s3api get-bucket-policy --bucket | grep aws:SecureTransport ``` 3. Confirm that `aws:SecureTransport` is set to false `aws:SecureTransport:false` 4. Confirm that the policy line has Effect set to Deny 'Effect:Deny'", + "AdditionalInformation": "", + "References": "https://aws.amazon.com/premiumsupport/knowledge-center/s3-bucket-policy-for-config-rule/:https://aws.amazon.com/blogs/security/how-to-use-bucket-policies-and-apply-defense-in-depth-to-help-secure-your-amazon-s3-data/:https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/get-bucket-policy.html" + } + ] + }, + { + "Id": "2.1.2", + "Description": "Ensure MFA Delete is enabled on S3 buckets", + "Checks": [ + "s3_bucket_no_mfa_delete" + ], + "Attributes": [ + { + "Section": "2.1. Simple Storage Service (S3)", + "Profile": "Level 1", + "AssessmentStatus": "Automated", + "Description": "Once MFA Delete is enabled on your sensitive and classified S3 bucket it requires the user to have two forms of authentication.", + "RationaleStatement": "Adding MFA delete to an S3 bucket, requires additional authentication when you change the version state of your bucket or you delete and object version adding another layer of security in the event your security credentials are compromised or unauthorized access is granted.", + "ImpactStatement": "", + "RemediationProcedure": "Perform the steps below to enable MFA delete on an S3 bucket. Note: -You cannot enable MFA Delete using the AWS Management Console. You must use the AWS CLI or API. -You must use your 'root' account to enable MFA Delete on S3 buckets. **From Command line:** 1. Run the s3api put-bucket-versioning command ``` aws s3api put-bucket-versioning --profile my-root-profile --bucket Bucket_Name --versioning-configuration Status=Enabled,MFADelete=Enabled --mfa “arn:aws:iam::aws_account_id:mfa/root-account-mfa-device passcode” ```", + "AuditProcedure": "Perform the steps below to confirm MFA delete is configured on an S3 Bucket **From Console:** 1. Login to the S3 console at `https://console.aws.amazon.com/s3/` 2. Click the `Check` box next to the Bucket name you want to confirm 3. In the window under `Properties` 4. Confirm that Versioning is `Enabled` 5. Confirm that MFA Delete is `Enabled` **From Command Line:** 1. Run the `get-bucket-versioning` ``` aws s3api get-bucket-versioning --bucket my-bucket ``` Output example: ``` Enabled Enabled ``` If the Console or the CLI output does not show Versioning and MFA Delete `enabled` refer to the remediation below.", + "AdditionalInformation": "", + "References": "https://docs.aws.amazon.com/AmazonS3/latest/dev/Versioning.html#MultiFactorAuthenticationDelete:https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingMFADelete.html:https://aws.amazon.com/blogs/security/securing-access-to-aws-using-mfa-part-3/:https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_mfa_lost-or-broken.html" + } + ] + }, + { + "Id": "2.1.3", + "Description": "Ensure all data in Amazon S3 has been discovered, classified and secured when required.", + "Checks": [ + "macie_is_enabled" + ], + "Attributes": [ + { + "Section": "2.1. Simple Storage Service (S3)", + "Profile": "Level 2", + "AssessmentStatus": "Manual", + "Description": "Amazon S3 buckets can contain sensitive data, that for security purposes should be discovered, monitored, classified and protected. Macie along with other 3rd party tools can automatically provide an inventory of Amazon S3 buckets.", + "RationaleStatement": "Using a Cloud service or 3rd Party software to continuously monitor and automate the process of data discovery and classification for S3 buckets using machine learning and pattern matching is a strong defense in protecting that information. Amazon Macie is a fully managed data security and data privacy service that uses machine learning and pattern matching to discover and protect your sensitive data in AWS.", + "ImpactStatement": "There is a cost associated with using Amazon Macie. There is also typically a cost associated with 3rd Party tools that perform similar processes and protection.", + "RemediationProcedure": "Perform the steps below to enable and configure Amazon Macie **From Console:** 1. Log on to the Macie console at `https://console.aws.amazon.com/macie/` 2. Click `Get started`. 3. Click `Enable Macie`. Setup a repository for sensitive data discovery results 1. In the Left pane, under Settings, click `Discovery results`. 2. Make sure `Create bucket` is selected. 3. Create a bucket, enter a name for the bucket. The name must be unique across all S3 buckets. In addition, the name must start with a lowercase letter or a number. 4. Click on `Advanced`. 5. Block all public access, make sure `Yes` is selected. 6. KMS encryption, specify the AWS KMS key that you want to use to encrypt the results. The key must be a symmetric, customer master key (CMK) that's in the same Region as the S3 bucket. 7. Click on `Save` Create a job to discover sensitive data 1. In the left pane, click `S3 buckets`. Macie displays a list of all the S3 buckets for your account. 2. Select the `check box` for each bucket that you want Macie to analyze as part of the job 3. Click `Create job`. 3. Click `Quick create`. 4. For the Name and description step, enter a name and, optionally, a description of the job. 5. Then click `Next`. 6. For the Review and create step, click `Submit`. Review your findings 1. In the left pane, click `Findings`. 2. To view the details of a specific finding, choose any field other than the check box for the finding. If you are using a 3rd Party tool to manage and protect your s3 data, follow the Vendor documentation for implementing and configuring that tool.", + "AuditProcedure": "Perform the following steps to determine if Macie is running: **From Console:** 1. Login to the Macie console at https://console.aws.amazon.com/macie/ 2. In the left hand pane click on By job under findings. 3. Confirm that you have a Job setup for your S3 Buckets When you log into the Macie console if you aren't taken to the summary page and you don't have a job setup and running then refer to the remediation procedure below. If you are using a 3rd Party tool to manage and protect your s3 data you meet this recommendation.", + "AdditionalInformation": "", + "References": "https://aws.amazon.com/macie/getting-started/:https://docs.aws.amazon.com/workspaces/latest/adminguide/data-protection.html:https://docs.aws.amazon.com/macie/latest/user/data-classification.html" + } + ] + }, + { + "Id": "2.1.4", + "Description": "Ensure that S3 Buckets are configured with 'Block public access (bucket settings)'", + "Checks": [ + "s3_bucket_level_public_access_block", + "s3_account_level_public_access_blocks" + ], + "Attributes": [ + { + "Section": "2.1. Simple Storage Service (S3)", + "Profile": "Level 1", + "AssessmentStatus": "Automated", + "Description": "Amazon S3 provides `Block public access (bucket settings)` and `Block public access (account settings)` to help you manage public access to Amazon S3 resources. By default, S3 buckets and objects are created with public access disabled. However, an IAM principal with sufficient S3 permissions can enable public access at the bucket and/or object level. While enabled, `Block public access (bucket settings)` prevents an individual bucket, and its contained objects, from becoming publicly accessible. Similarly, `Block public access (account settings)` prevents all buckets, and contained objects, from becoming publicly accessible across the entire account.", + "RationaleStatement": "Amazon S3 `Block public access (bucket settings)` prevents the accidental or malicious public exposure of data contained within the respective bucket(s). Amazon S3 `Block public access (account settings)` prevents the accidental or malicious public exposure of data contained within all buckets of the respective AWS account. Whether blocking public access to all or some buckets is an organizational decision that should be based on data sensitivity, least privilege, and use case.", + "ImpactStatement": "When you apply Block Public Access settings to an account, the settings apply to all AWS Regions globally. The settings might not take effect in all Regions immediately or simultaneously, but they eventually propagate to all Regions.", + "RemediationProcedure": "**If utilizing Block Public Access (bucket settings)** **From Console:** 1. Login to AWS Management Console and open the Amazon S3 console using https://console.aws.amazon.com/s3/ 2. Select the Check box next to the Bucket. 3. Click on 'Edit public access settings'. 4. Click 'Block all public access' 5. Repeat for all the buckets in your AWS account that contain sensitive data. **From Command Line:** 1. List all of the S3 Buckets ``` aws s3 ls ``` 2. Set the Block Public Access to true on that bucket ``` aws s3api put-public-access-block --bucket --public-access-block-configuration \"BlockPublicAcls=true,IgnorePublicAcls=true,BlockPublicPolicy=true,RestrictPublicBuckets=true\" ``` **If utilizing Block Public Access (account settings)** **From Console:** If the output reads `true` for the separate configuration settings then it is set on the account. 1. Login to AWS Management Console and open the Amazon S3 console using https://console.aws.amazon.com/s3/ 2. Choose `Block Public Access (account settings)` 3. Choose `Edit` to change the block public access settings for all the buckets in your AWS account 4. Choose the settings you want to change, and then choose `Save`. For details about each setting, pause on the `i` icons. 5. When you're asked for confirmation, enter `confirm`. Then Click `Confirm` to save your changes. **From Command Line:** To set Block Public access settings for this account, run the following command: ``` aws s3control put-public-access-block --public-access-block-configuration BlockPublicAcls=true, IgnorePublicAcls=true, BlockPublicPolicy=true, RestrictPublicBuckets=true --account-id ```", + "AuditProcedure": "**If utilizing Block Public Access (bucket settings)** **From Console:** 1. Login to AWS Management Console and open the Amazon S3 console using https://console.aws.amazon.com/s3/ 2. Select the Check box next to the Bucket. 3. Click on 'Edit public access settings'. 4. Ensure that block public access settings are set appropriately for this bucket 5. Repeat for all the buckets in your AWS account. **From Command Line:** 1. List all of the S3 Buckets ``` aws s3 ls ``` 2. Find the public access setting on that bucket ``` aws s3api get-public-access-block --bucket ``` Output if Block Public access is enabled: ``` { \"PublicAccessBlockConfiguration\": { \"BlockPublicAcls\": true, \"IgnorePublicAcls\": true, \"BlockPublicPolicy\": true, \"RestrictPublicBuckets\": true } } ``` If the output reads `false` for the separate configuration settings then proceed to the remediation. **If utilizing Block Public Access (account settings)** **From Console:** 1. Login to AWS Management Console and open the Amazon S3 console using https://console.aws.amazon.com/s3/ 2. Choose `Block public access (account settings)` 3. Ensure that block public access settings are set appropriately for your AWS account. **From Command Line:** To check Public access settings for this account status, run the following command, `aws s3control get-public-access-block --account-id --region ` Output if Block Public access is enabled: ``` { \"PublicAccessBlockConfiguration\": { \"IgnorePublicAcls\": true, \"BlockPublicPolicy\": true, \"BlockPublicAcls\": true, \"RestrictPublicBuckets\": true } } ``` If the output reads `false` for the separate configuration settings then proceed to the remediation.", + "AdditionalInformation": "", + "References": "https://docs.aws.amazon.com/AmazonS3/latest/user-guide/block-public-access-account.html" + } + ] + }, + { + "Id": "2.2.1", + "Description": "Ensure EBS Volume Encryption is Enabled in all Regions", + "Checks": [ + "ec2_ebs_volume_encryption" + ], + "Attributes": [ + { + "Section": "2.2. Elastic Compute Cloud (EC2)", + "Profile": "Level 1", + "AssessmentStatus": "Automated", + "Description": "Elastic Compute Cloud (EC2) supports encryption at rest when using the Elastic Block Store (EBS) service. While disabled by default, forcing encryption at EBS volume creation is supported.", + "RationaleStatement": "Encrypting data at rest reduces the likelihood that it is unintentionally exposed and can nullify the impact of disclosure if the encryption remains unbroken.", + "ImpactStatement": "Losing access or removing the KMS key in use by the EBS volumes will result in no longer being able to access the volumes.", + "RemediationProcedure": "**From Console:** 1. Login to AWS Management Console and open the Amazon EC2 console using https://console.aws.amazon.com/ec2/ 2. Under `Account attributes`, click `EBS encryption`. 3. Click `Manage`. 4. Click the `Enable` checkbox. 5. Click `Update EBS encryption` 6. Repeat for every region requiring the change. **Note:** EBS volume encryption is configured per region. **From Command Line:** 1. Run ``` aws --region ec2 enable-ebs-encryption-by-default ``` 2. Verify that `\"EbsEncryptionByDefault\": true` is displayed. 3. Repeat every region requiring the change. **Note:** EBS volume encryption is configured per region.", + "AuditProcedure": "**From Console:** 1. Login to AWS Management Console and open the Amazon EC2 console using https://console.aws.amazon.com/ec2/ 2. Under `Account attributes`, click `EBS encryption`. 3. Verify `Always encrypt new EBS volumes` displays `Enabled`. 4. Review every region in-use. **Note:** EBS volume encryption is configured per region. **From Command Line:** 1. Run ``` aws --region ec2 get-ebs-encryption-by-default ``` 2. Verify that `\"EbsEncryptionByDefault\": true` is displayed. 3. Review every region in-use. **Note:** EBS volume encryption is configured per region.", + "AdditionalInformation": "Default EBS volume encryption only applies to newly created EBS volumes. Existing EBS volumes are **not** converted automatically.", + "References": "https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSEncryption.html:https://aws.amazon.com/blogs/aws/new-opt-in-to-default-encryption-for-new-ebs-volumes/" + } + ] + }, + { + "Id": "2.3.1", + "Description": "Ensure that encryption is enabled for RDS Instances", + "Checks": [ + "rds_instance_storage_encrypted" + ], + "Attributes": [ + { + "Section": "2.3. Relational Database Service (RDS)", + "Profile": "Level 1", + "AssessmentStatus": "Automated", + "Description": "Amazon RDS encrypted DB instances use the industry standard AES-256 encryption algorithm to encrypt your data on the server that hosts your Amazon RDS DB instances. After your data is encrypted, Amazon RDS handles authentication of access and decryption of your data transparently with a minimal impact on performance.", + "RationaleStatement": "Databases are likely to hold sensitive and critical data, it is highly recommended to implement encryption in order to protect your data from unauthorized access or disclosure. With RDS encryption enabled, the data stored on the instance's underlying storage, the automated backups, read replicas, and snapshots, are all encrypted.", + "ImpactStatement": "", + "RemediationProcedure": "**From Console:** 1. Login to the AWS Management Console and open the RDS dashboard at https://console.aws.amazon.com/rds/. 2. In the left navigation panel, click on `Databases` 3. Select the Database instance that needs to be encrypted. 4. Click on `Actions` button placed at the top right and select `Take Snapshot`. 5. On the Take Snapshot page, enter a database name of which you want to take a snapshot in the `Snapshot Name` field and click on `Take Snapshot`. 6. Select the newly created snapshot and click on the `Action` button placed at the top right and select `Copy snapshot` from the Action menu. 7. On the Make Copy of DB Snapshot page, perform the following: - In the New DB Snapshot Identifier field, Enter a name for the `new snapshot`. - Check `Copy Tags`, New snapshot must have the same tags as the source snapshot. - Select `Yes` from the `Enable Encryption` dropdown list to enable encryption, You can choose to use the AWS default encryption key or custom key from Master Key dropdown list. 8. Click `Copy Snapshot` to create an encrypted copy of the selected instance snapshot. 9. Select the new Snapshot Encrypted Copy and click on the `Action` button placed at the top right and select `Restore Snapshot` button from the Action menu, This will restore the encrypted snapshot to a new database instance. 10. On the Restore DB Instance page, enter a unique name for the new database instance in the DB Instance Identifier field. 11. Review the instance configuration details and click `Restore DB Instance`. 12. As the new instance provisioning process is completed can update application configuration to refer to the endpoint of the new Encrypted database instance Once the database endpoint is changed at the application level, can remove the unencrypted instance. **From Command Line:** 1. Run `describe-db-instances` command to list all RDS database names available in the selected AWS region, The command output should return the database instance identifier. ``` aws rds describe-db-instances --region --query 'DBInstances[*].DBInstanceIdentifier' ``` 2. Run `create-db-snapshot` command to create a snapshot for the selected database instance, The command output will return the `new snapshot` with name DB Snapshot Name. ``` aws rds create-db-snapshot --region --db-snapshot-identifier --db-instance-identifier ``` 3. Now run `list-aliases` command to list the KMS keys aliases available in a specified region, The command output should return each `key alias currently available`. For our RDS encryption activation process, locate the ID of the AWS default KMS key. ``` aws kms list-aliases --region ``` 4. Run `copy-db-snapshot` command using the default KMS key ID for RDS instances returned earlier to create an encrypted copy of the database instance snapshot, The command output will return the `encrypted instance snapshot configuration`. ``` aws rds copy-db-snapshot --region --source-db-snapshot-identifier --target-db-snapshot-identifier --copy-tags --kms-key-id ``` 5. Run `restore-db-instance-from-db-snapshot` command to restore the encrypted snapshot created at the previous step to a new database instance, If successful, the command output should return the new encrypted database instance configuration. ``` aws rds restore-db-instance-from-db-snapshot --region --db-instance-identifier --db-snapshot-identifier ``` 6. Run `describe-db-instances` command to list all RDS database names, available in the selected AWS region, Output will return database instance identifier name Select encrypted database name that we just created DB-Name-Encrypted. ``` aws rds describe-db-instances --region --query 'DBInstances[*].DBInstanceIdentifier' ``` 7. Run again `describe-db-instances` command using the RDS instance identifier returned earlier, to determine if the selected database instance is encrypted, The command output should return the encryption status `True`. ``` aws rds describe-db-instances --region --db-instance-identifier --query 'DBInstances[*].StorageEncrypted' ```", + "AuditProcedure": "**From Console:** 1. Login to the AWS Management Console and open the RDS dashboard at https://console.aws.amazon.com/rds/ 2. In the navigation pane, under RDS dashboard, click `Databases`. 3. Select the RDS Instance that you want to examine 4. Click `Instance Name` to see details, then click on `Configuration` tab. 5. Under Configuration Details section, In Storage pane search for the `Encryption Enabled` Status. 6. If the current status is set to `Disabled`, Encryption is not enabled for the selected RDS Instance database instance. 7. Repeat steps 3 to 7 to verify encryption status of other RDS Instance in same region. 8. Change region from the top of the navigation bar and repeat audit for other regions. **From Command Line:** 1. Run `describe-db-instances` command to list all RDS Instance database names, available in the selected AWS region, Output will return each Instance database identifier-name. ``` aws rds describe-db-instances --region --query 'DBInstances[*].DBInstanceIdentifier' ``` 2. Run again `describe-db-instances` command using the RDS Instance identifier returned earlier, to determine if the selected database instance is encrypted, The command output should return the encryption status `True` Or `False`. ``` aws rds describe-db-instances --region --db-instance-identifier --query 'DBInstances[*].StorageEncrypted' ``` 3. If the StorageEncrypted parameter value is `False`, Encryption is not enabled for the selected RDS database instance. 4. Repeat steps 1 to 3 for auditing each RDS Instance and change Region to verify for other regions", + "AdditionalInformation": "", + "References": "https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Overview.Encryption.html:https://aws.amazon.com/blogs/database/selecting-the-right-encryption-options-for-amazon-rds-and-amazon-aurora-database-engines/#:~:text=With%20RDS%2Dencrypted%20resources%2C%20data,transparent%20to%20your%20database%20engine.:https://aws.amazon.com/rds/features/security/" + } + ] + }, + { + "Id": "2.3.2", + "Description": "Ensure Auto Minor Version Upgrade feature is Enabled for RDS Instances", + "Checks": [ + "rds_instance_minor_version_upgrade_enabled" + ], + "Attributes": [ + { + "Section": "2.3. Relational Database Service (RDS)", + "Profile": "Level 1", + "AssessmentStatus": "Automated", + "Description": "Ensure that RDS database instances have the Auto Minor Version Upgrade flag enabled in order to receive automatically minor engine upgrades during the specified maintenance window. So, RDS instances can get the new features, bug fixes, and security patches for their database engines.", + "RationaleStatement": "AWS RDS will occasionally deprecate minor engine versions and provide new ones for an upgrade. When the last version number within the release is replaced, the version changed is considered minor. With Auto Minor Version Upgrade feature enabled, the version upgrades will occur automatically during the specified maintenance window so your RDS instances can get the new features, bug fixes, and security patches for their database engines.", + "ImpactStatement": "", + "RemediationProcedure": "**From Console:** 1. Log in to the AWS management console and navigate to the RDS dashboard at https://console.aws.amazon.com/rds/. 2. In the left navigation panel, click on `Databases`. 3. Select the RDS instance that wants to update. 4. Click on the `Modify` button placed on the top right side. 5. On the `Modify DB Instance: ` page, In the `Maintenance` section, select `Auto minor version upgrade` click on the `Yes` radio button. 6. At the bottom of the page click on `Continue`, check to Apply Immediately to apply the changes immediately, or select `Apply during the next scheduled maintenance window` to avoid any downtime. 7. Review the changes and click on `Modify DB Instance`. The instance status should change from available to modifying and back to available. Once the feature is enabled, the `Auto Minor Version Upgrade` status should change to `Yes`. **From Command Line:** 1. Run `describe-db-instances` command to list all RDS database instance names, available in the selected AWS region: ``` aws rds describe-db-instances --region --query 'DBInstances[*].DBInstanceIdentifier' ``` 2. The command output should return each database instance identifier. 3. Run the `modify-db-instance` command to modify the selected RDS instance configuration this command will apply the changes immediately, Remove `--apply-immediately` to apply changes during the next scheduled maintenance window and avoid any downtime: ``` aws rds modify-db-instance --region --db-instance-identifier --auto-minor-version-upgrade --apply-immediately ``` 4. The command output should reveal the new configuration metadata for the RDS instance and check `AutoMinorVersionUpgrade` parameter value. 5. Run `describe-db-instances` command to check if the Auto Minor Version Upgrade feature has been successfully enable: ``` aws rds describe-db-instances --region --db-instance-identifier --query 'DBInstances[*].AutoMinorVersionUpgrade' ``` 6. The command output should return the feature current status set to `true`, the feature is `enabled` and the minor engine upgrades will be applied to the selected RDS instance.", + "AuditProcedure": "**From Console:** 1. Log in to the AWS management console and navigate to the RDS dashboard at https://console.aws.amazon.com/rds/. 2. In the left navigation panel, click on `Databases`. 3. Select the RDS instance that wants to examine. 4. Click on the `Maintenance and backups` panel. 5. Under the `Maintenance` section, search for the Auto Minor Version Upgrade status. - If the current status is set to `Disabled`, means the feature is not set and the minor engine upgrades released will not be applied to the selected RDS instance **From Command Line:** 1. Run `describe-db-instances` command to list all RDS database names, available in the selected AWS region: ``` aws rds describe-db-instances --region --query 'DBInstances[*].DBInstanceIdentifier' ``` 2. The command output should return each database instance identifier. 3. Run again `describe-db-instances` command using the RDS instance identifier returned earlier to determine the Auto Minor Version Upgrade status for the selected instance: ``` aws rds describe-db-instances --region --db-instance-identifier --query 'DBInstances[*].AutoMinorVersionUpgrade' ``` 4. The command output should return the feature current status. If the current status is set to `true`, the feature is enabled and the minor engine upgrades will be applied to the selected RDS instance.", + "AdditionalInformation": "", + "References": "https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_RDS_Managing.html:https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_UpgradeDBInstance.Upgrading.html:https://aws.amazon.com/rds/faqs/" + } + ] + }, + { + "Id": "2.3.3", + "Description": "Ensure that public access is not given to RDS Instance", + "Checks": [ + "rds_instance_no_public_access" + ], + "Attributes": [ + { + "Section": "2.3. Relational Database Service (RDS)", + "Profile": "Level 1", + "AssessmentStatus": "Automated", + "Description": "Ensure and verify that RDS database instances provisioned in your AWS account do restrict unauthorized access in order to minimize security risks. To restrict access to anypublicly accessible RDS database instance, you must disable the database PubliclyAccessible flag and update the VPC security group associated with the instance", + "RationaleStatement": "Ensure that no public-facing RDS database instances are provisioned in your AWS account and restrict unauthorized access in order to minimize security risks. When the RDS instance allows unrestricted access (0.0.0.0/0), everyone and everything on the Internet can establish a connection to your database and this can increase the opportunity for malicious activities such as brute force attacks, PostgreSQL injections, or DoS/DDoS attacks.", + "ImpactStatement": "", + "RemediationProcedure": "From Console: 1. Log in to the AWS management console and navigate to the RDS dashboard at https://console.aws.amazon.com/rds/. 2. Under the navigation panel, On RDS Dashboard, click Databases. 3. Select the RDS instance that you want to update. 4. Click Modify from the dashboard top menu. 5. On the Modify DB Instance panel, under the Connectivity section, click on Additional connectivity configuration and update the value for Publicly Accessible to Not publicly accessible to restrict public access. Follow the below steps to update subnet configurations: • Select the Connectivity and security tab, and click on the VPC attribute value inside the Networking section. • Select the Details tab from the VPC dashboard bottom panel and click on Route table configuration attribute value. • On the Route table details page, select the Routes tab from the dashboard bottom panel and click on Edit routes. • On the Edit routes page, update the Destination of Target which is set to igw- xxxxx and click on Save routes. 6. On the Modify DB Instance panel Click on Continue and In the Scheduling of modifications section, perform one of the following actions based on your requirements: • Select Apply during the next scheduled maintenance window to apply the changes automatically during the next scheduled maintenance window. • Select Apply immediately to apply the changes right away. With this option, any pending modifications will be asynchronously applied as soon as possible, regardless of the maintenance window setting for this RDS database instance. Note that any changes available in the pending modifications queue are also applied. If any of the pending modifications require downtime, choosing this option can cause unexpected downtime for the application. 7. Repeat steps 3 to 6 for each RDS instance available in the current region. 8. Change the AWS region from the navigation bar to repeat the process for other regions. From Command Line: 1. Run describe-db-instances command to list all RDS database names identifiers, available in the selected AWS region: aws rds describe-db-instances --region --query 'DBInstances[*].DBInstanceIdentifier' 2. The command output should return each database instance identifier. 3. Run modify-db-instance command to modify the selected RDS instance configuration. Then use the following command to disable the Publicly Accessible flag for the selected RDS instances. This command use the apply- immediately flag. If you want to avoid any downtime --no-apply-immediately flag can be used: aws rds modify-db-instance --region --db-instance-identifier --no-publicly-accessible --apply-immediately 4. The command output should reveal the PubliclyAccessible configuration under pending values and should get applied at the specified time. 5. Updating the Internet Gateway Destination via AWS CLI is not currently supported To update information about Internet Gateway use the AWS Console Procedure. 6. Repeat steps 1 to 5 for each RDS instance provisioned in the current region. 7. Change the AWS region by using the --region filter to repeat the process for other regions.", + "AuditProcedure": "From Console: 1. Log in to the AWS management console and navigate to the RDS dashboard at https://console.aws.amazon.com/rds/. 2. Under the navigation panel, On RDS Dashboard, click Databases. 3. Select the RDS instance that you want to examine. 4. Click Instance Name from the dashboard, Under `Connectivity and Security. 5. On the Security, check if the Publicly Accessible flag status is set to Yes, follow the below-mentioned steps to check database subnet access. • In the networking section, click the subnet link available under Subnets • The link will redirect you to the VPC Subnets page. • Select the subnet listed on the page and click the Route Table tab from the dashboard bottom panel. If the route table contains any entries with the destination CIDR block set to 0.0.0.0/0 and with an Internet Gateway attached. • The selected RDS database instance was provisioned inside a public subnet, therefore is not running within a logically isolated environment and can be accessible from the Internet. 6. Repeat steps no. 4 and 5 to determine the type (public or private) and subnet for other RDS database instances provisioned in the current region. 7. Change the AWS region from the navigation bar and repeat the audit process for other regions. From Command Line: 1. Run describe-db-instances command to list all RDS database names, available in the selected AWS region: aws rds describe-db-instances --region --query 'DBInstances[*].DBInstanceIdentifier' 2. The command output should return each database instance identifier. 3. Run again describe-db-instances command using the PubliclyAccessible parameter as query filter to reveal the database instance Publicly Accessible flag status: aws rds describe-db-instances --region --db-instance-identifier --query 'DBInstances[*].PubliclyAccessible' 4. Check for the Publicly Accessible parameter status, If the Publicly Accessible flag is set to Yes. Then selected RDS database instance is publicly accessible and insecure, follow the below-mentioned steps to check database subnet access 5. Run again describe-db-instances command using the RDS database instance identifier that you want to check and appropriate filtering to describe the VPC subnet(s) associated with the selected instance: aws rds describe-db-instances --region --db-instance-identifier --query 'DBInstances[*].DBSubnetGroup.Subnets[]' • The command output should list the subnets available in the selected database subnet group. 6. Run describe-route-tables command using the ID of the subnet returned at the previous step to describe the routes of the VPC route table associated with the selected subnet: aws ec2 describe-route-tables --region --filters 'Name=association.subnet-id,Values=' --query 'RouteTables[*].Routes[]' • If the command returns the route table associated with database instance subnet ID. Check the GatewayId and DestinationCidrBlock attributes values returned in the output. If the route table contains any entries with the GatewayId value set to igw-xxxxxxxx and the DestinationCidrBlock value set to 0.0.0.0/0, the selected RDS database instance was provisioned inside a public subnet. • Or • If the command returns empty results, the route table is implicitly associated with subnet, therefore the audit process continues with the next step 7. Run again describe-db-instances command using the RDS database instance identifier that you want to check and appropriate filtering to describe the VPC ID associated with the selected instance: aws rds describe-db-instances --region --db-instance-identifier --query 'DBInstances[*].DBSubnetGroup.VpcId' • The command output should show the VPC ID in the selected database subnet group 8. Now run describe-route-tables command using the ID of the VPC returned at the previous step to describe the routes of the VPC main route table implicitly associated with the selected subnet: aws ec2 describe-route-tables --region --filters 'Name=vpc- id,Values=' 'Name=association.main,Values=true' --query 'RouteTables[*].Routes[]' • The command output returns the VPC main route table implicitly associated with database instance subnet ID. Check the GatewayId and DestinationCidrBlock attributes values returned in the output. If the route table contains any entries with the GatewayId value set to igw-xxxxxxxx and the DestinationCidrBlock value set to 0.0.0.0/0, the selected RDS database instance was provisioned inside a public subnet, therefore is not running within a logically isolated environment and does not adhere to AWS security best practices.", + "AdditionalInformation": "", + "References": "1. https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.html:https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Scenario2.html:https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_VPC.WorkingWithRDSInstanceinaVPC.html:https://aws.amazon.com/rds/faqs/" + } + ] + }, + { + "Id": "2.4.1", + "Description": "Ensure that encryption is enabled for EFS file systems", + "Checks": [ + "efs_encryption_at_rest_enabled" + ], + "Attributes": [ + { + "Section": "2.4 Relational Database Service (RDS)", + "Profile": "Level 1", + "AssessmentStatus": "Automated", + "Description": "EFS data should be encrypted at rest using AWS KMS (Key Management Service).", + "RationaleStatement": "Data should be encrypted at rest to reduce the risk of a data breach via direct access to the storage device.", + "ImpactStatement": "", + "RemediationProcedure": "**It is important to note that EFS file system data at rest encryption must be turned on when creating the file system.** If an EFS file system has been created without data at rest encryption enabled then you must create another EFS file system with the correct configuration and transfer the data. **Steps to create an EFS file system with data encrypted at rest:** **From Console:** 1. Login to the AWS Management Console and Navigate to `Elastic File System (EFS)` dashboard. 2. Select `File Systems` from the left navigation panel. 3. Click `Create File System` button from the dashboard top menu to start the file system setup process. 4. On the `Configure file system access` configuration page, perform the following actions. - Choose the right VPC from the VPC dropdown list. - Within Create mount targets section, select the checkboxes for all of the Availability Zones (AZs) within the selected VPC. These will be your mount targets. - Click `Next step` to continue. 5. Perform the following on the `Configure optional settings` page. - Create `tags` to describe your new file system. - Choose `performance mode` based on your requirements. - Check `Enable encryption` checkbox and choose `aws/elasticfilesystem` from Select KMS master key dropdown list to enable encryption for the new file system using the default master key provided and managed by AWS KMS. - Click `Next step` to continue. 6. Review the file system configuration details on the `review and create` page and then click `Create File System` to create your new AWS EFS file system. 7. Copy the data from the old unencrypted EFS file system onto the newly create encrypted file system. 8. Remove the unencrypted file system as soon as your data migration to the newly create encrypted file system is completed. 9. Change the AWS region from the navigation bar and repeat the entire process for other aws regions. **From CLI:** 1. Run describe-file-systems command to describe the configuration information available for the selected (unencrypted) file system (see Audit section to identify the right resource): ``` aws efs describe-file-systems --region --file-system-id ``` 2. The command output should return the requested configuration information. 3. To provision a new AWS EFS file system, you need to generate a universally unique identifier (UUID) in order to create the token required by the create-file-system command. To create the required token, you can use a randomly generated UUID from \"https://www.uuidgenerator.net\". 4. Run create-file-system command using the unique token created at the previous step. ``` aws efs create-file-system --region --creation-token --performance-mode generalPurpose --encrypted ``` 5. The command output should return the new file system configuration metadata. 6. Run create-mount-target command using the newly created EFS file system ID returned at the previous step as identifier and the ID of the Availability Zone (AZ) that will represent the mount target: ``` aws efs create-mount-target --region --file-system-id --subnet-id ``` 7. The command output should return the new mount target metadata. 8. Now you can mount your file system from an EC2 instance. 9. Copy the data from the old unencrypted EFS file system onto the newly create encrypted file system. 10. Remove the unencrypted file system as soon as your data migration to the newly create encrypted file system is completed. ``` aws efs delete-file-system --region --file-system-id ``` 11. Change the AWS region by updating the --region and repeat the entire process for other aws regions.", + "AuditProcedure": "**From Console:** 1. Login to the AWS Management Console and Navigate to `Elastic File System (EFS) dashboard. 2. Select `File Systems` from the left navigation panel. 3. Each item on the list has a visible Encrypted field that displays data at rest encryption status. 4. Validate that this field reads `Encrypted` for all EFS file systems in all AWS regions. **From CLI:** 1. Run describe-file-systems command using custom query filters to list the identifiers of all AWS EFS file systems currently available within the selected region: ``` aws efs describe-file-systems --region --output table --query 'FileSystems[*].FileSystemId' ``` 2. The command output should return a table with the requested file system IDs. 3. Run describe-file-systems command using the ID of the file system that you want to examine as identifier and the necessary query filters: ``` aws efs describe-file-systems --region --file-system-id --query 'FileSystems[*].Encrypted' ``` 4. The command output should return the file system encryption status true or false. If the returned value is `false`, the selected AWS EFS file system is not encrypted and if the returned value is `true`, the selected AWS EFS file system is encrypted.", + "AdditionalInformation": "", + "References": "https://docs.aws.amazon.com/efs/latest/ug/encryption-at-rest.html:https://awscli.amazonaws.com/v2/documentation/api/latest/reference/efs/index.html#efs" + } + ] + }, + { + "Id": "3.1", + "Description": "Ensure CloudTrail is enabled in all regions", + "Checks": [ + "cloudtrail_multi_region_enabled" + ], + "Attributes": [ + { + "Section": "3. Logging", + "Profile": "Level 1", + "AssessmentStatus": "Automated", + "Description": "AWS CloudTrail is a web service that records AWS API calls for your account and delivers log files to you. The recorded information includes the identity of the API caller, the time of the API call, the source IP address of the API caller, the request parameters, and the response elements returned by the AWS service. CloudTrail provides a history of AWS API calls for an account, including API calls made via the Management Console, SDKs, command line tools, and higher-level AWS services (such as CloudFormation).", + "RationaleStatement": "The AWS API call history produced by CloudTrail enables security analysis, resource change tracking, and compliance auditing. Additionally, - ensuring that a multi-regions trail exists will ensure that unexpected activity occurring in otherwise unused regions is detected - ensuring that a multi-regions trail exists will ensure that `Global Service Logging` is enabled for a trail by default to capture recording of events generated on AWS global services - for a multi-regions trail, ensuring that management events configured for all type of Read/Writes ensures recording of management operations that are performed on all resources in an AWS account", + "ImpactStatement": "S3 lifecycle features can be used to manage the accumulation and management of logs over time. See the following AWS resource for more information on these features: 1. https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html", + "RemediationProcedure": "Perform the following to enable global (Multi-region) CloudTrail logging: **From Console:** 1. Sign in to the AWS Management Console and open the IAM console at [https://console.aws.amazon.com/cloudtrail](https://console.aws.amazon.com/cloudtrail) 2. Click on _Trails_ on the left navigation pane 3. Click `Get Started Now` , if presented - Click `Add new trail` - Enter a trail name in the `Trail name` box - Set the `Apply trail to all regions` option to `Yes` - Specify an S3 bucket name in the `S3 bucket` box - Click `Create` 4. If 1 or more trails already exist, select the target trail to enable for global logging 5. Click the edit icon (pencil) next to `Apply trail to all regions` , Click `Yes` and Click `Save`. 6. Click the edit icon (pencil) next to `Management Events` click `All` for setting `Read/Write Events` and Click `Save`. **From Command Line:** ``` aws cloudtrail create-trail --name --bucket-name --is-multi-region-trail aws cloudtrail update-trail --name --is-multi-region-trail ``` Note: Creating CloudTrail via CLI without providing any overriding options configures `Management Events` to set `All` type of `Read/Writes` by default.", + "AuditProcedure": "Perform the following to determine if CloudTrail is enabled for all regions: **From Console:** 1. Sign in to the AWS Management Console and open the CloudTrail console at [https://console.aws.amazon.com/cloudtrail](https://console.aws.amazon.com/cloudtrail) 2. Click on `Trails` on the left navigation pane - You will be presented with a list of trails across all regions 3. Ensure at least one Trail has `All` specified in the `Region` column 4. Click on a trail via the link in the _Name_ column 5. Ensure `Logging` is set to `ON` 6. Ensure `Apply trail to all regions` is set to `Yes` 7. In section `Management Events` ensure `Read/Write Events` set to `ALL` **From Command Line:** ``` aws cloudtrail describe-trails ``` Ensure `IsMultiRegionTrail` is set to `true` ``` aws cloudtrail get-trail-status --name ``` Ensure `IsLogging` is set to `true` ``` aws cloudtrail get-event-selectors --trail-name ``` Ensure there is at least one Event Selector for a Trail with `IncludeManagementEvents` set to `true` and `ReadWriteType` set to `All`", + "AdditionalInformation": "", + "References": "https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-concepts.html#cloudtrail-concepts-management-events:https://docs.aws.amazon.com/awscloudtrail/latest/userguide/logging-management-and-data-events-with-cloudtrail.html?icmpid=docs_cloudtrail_console#logging-management-events:https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-supported-services.html#cloud-trail-supported-services-data-events" + } + ] + }, + { + "Id": "3.8", + "Description": "Ensure that Object-level logging for write events is enabled for S3 bucket", + "Checks": [ + "cloudtrail_s3_dataevents_write_enabled" + ], + "Attributes": [ + { + "Section": "3. Logging", + "Profile": "Level 2", + "AssessmentStatus": "Automated", + "Description": "S3 object-level API operations such as GetObject, DeleteObject, and PutObject are called data events. By default, CloudTrail trails don't log data events and so it is recommended to enable Object-level logging for S3 buckets.", + "RationaleStatement": "Enabling object-level logging will help you meet data compliance requirements within your organization, perform comprehensive security analysis, monitor specific patterns of user behavior in your AWS account or take immediate actions on any object-level API activity within your S3 Buckets using Amazon CloudWatch Events.", + "ImpactStatement": "", + "RemediationProcedure": "**From Console:** 1. Login to the AWS Management Console and navigate to S3 dashboard at https://console.aws.amazon.com/s3/ 2. In the left navigation panel, click buckets and then click on the S3 Bucket Name that you want to examine. 3. Click Properties tab to see in detail bucket configuration. 4. In the AWS Cloud Trail data events' section select the CloudTrail name for the recording activity. You can choose an existing Cloudtrail or create a new one by slicking the Configure in Cloudtrailbutton or navigating to the Cloudtrail console linkhttps://console.aws.amazon.com/cloudtrail/` 5. Once the Cloudtrail is selected, Select the data Data Events check box. 6. Select S3 from the `Data event type drop down. 7. Select Log all events from the Log selector template drop down. 8. Repeat steps 2 to 5 to enable object-level logging of write events for other S3 buckets.", + "AuditProcedure": "**From Console:** 1. Login to the AWS Management Console and navigate to CloudTrail dashboard at https://console.aws.amazon.com/cloudtrail/ 2. In the left panel, click Trails and then click on the CloudTrail Name that you want to examine. 3. Review General details 4. Confirm that Multi-region trail is set to Yes 5. Scroll down to Data events 6. Confirm that it reads: Data Events:S3 Log selector template Log all events If 'basic events selectors' is being used it should read: Data events: S3 Bucket Name: All current and future S3 buckets Write: Enabled 7. Repeat steps 2 to 6 to verify that Multi-region trail and Data events logging of S3 buckets in CloudTrail. If the CloudTrails do not have multi-region and data events configured for S3 refer to the remediation below..", + "AdditionalInformation": "", + "References": "https://docs.aws.amazon.com/AmazonS3/latest/user-guide/enable-cloudtrail-events.html" + } + ] + }, + { + "Id": "3.9", + "Description": "Ensure that Object-level logging for read events is enabled for S3 bucket", + "Checks": [ + "cloudtrail_s3_dataevents_read_enabled" + ], + "Attributes": [ + { + "Section": "3. Logging", + "Profile": "Level 2", + "AssessmentStatus": "Automated", + "Description": "S3 object-level API operations such as GetObject, DeleteObject, and PutObject are called data events. By default, CloudTrail trails don't log data events and so it is recommended to enable Object-level logging for S3 buckets.", + "RationaleStatement": "Enabling object-level logging will help you meet data compliance requirements within your organization, perform comprehensive security analysis, monitor specific patterns of user behavior in your AWS account or take immediate actions on any object-level API activity using Amazon CloudWatch Events.", + "ImpactStatement": "", + "RemediationProcedure": "**From Console:** 1. Login to the AWS Management Console and navigate to S3 dashboard at `https://console.aws.amazon.com/s3/` 2. In the left navigation panel, click `buckets` and then click on the S3 Bucket Name that you want to examine. 3. Click `Properties` tab to see in detail bucket configuration. 4. Click on the `Object-level` logging setting, enter the CloudTrail name for the recording activity. You can choose an existing Cloudtrail or create a new one by navigating to the Cloudtrail console link `https://console.aws.amazon.com/cloudtrail/` 5. Once the Cloudtrail is selected, check the Read event checkbox, so that `object-level` logging for `Read` events is enabled. 6. Repeat steps 2 to 5 to enable `object-level` logging of read events for other S3 buckets. **From Command Line:** 1. To enable `object-level` data events logging for S3 buckets within your AWS account, run `put-event-selectors` command using the name of the trail that you want to reconfigure as identifier: ``` aws cloudtrail put-event-selectors --region --trail-name --event-selectors '[{ \"ReadWriteType\": \"ReadOnly\", \"IncludeManagementEvents\":true, \"DataResources\": [{ \"Type\": \"AWS::S3::Object\", \"Values\": [\"arn:aws:s3:::/\"] }] }]' ``` 2. The command output will be `object-level` event trail configuration. 3. If you want to enable it for all buckets at ones then change Values parameter to `[\"arn:aws:s3\"]` in command given above. 4. Repeat step 1 for each s3 bucket to update `object-level` logging of read events. 5. Change the AWS region by updating the `--region` command parameter and perform the process for other regions.", + "AuditProcedure": "**From Console:** 1. Login to the AWS Management Console and navigate to S3 dashboard at `https://console.aws.amazon.com/s3/` 2. In the left navigation panel, click `buckets` and then click on the S3 Bucket Name that you want to examine. 3. Click `Properties` tab to see in detail bucket configuration. 4. If the current status for `Object-level` logging is set to `Disabled`, then object-level logging of read events for the selected s3 bucket is not set. 5. If the current status for `Object-level` logging is set to `Enabled`, but the Read event check-box is unchecked, then object-level logging of read events for the selected s3 bucket is not set. 6. Repeat steps 2 to 5 to verify `object-level` logging for `read` events of your other S3 buckets. **From Command Line:** 1. Run `describe-trails` command to list the names of all Amazon CloudTrail trails currently available in the selected AWS region: ``` aws cloudtrail describe-trails --region --output table --query trailList[*].Name ``` 2. The command output will be table of the requested trail names. 3. Run `get-event-selectors` command using the name of the trail returned at the previous step and custom query filters to determine if Data events logging feature is enabled within the selected CloudTrail trail configuration for s3 bucket resources: ``` aws cloudtrail get-event-selectors --region --trail-name --query EventSelectors[*].DataResources[] ``` 4. The command output should be an array that contains the configuration of the AWS resource(S3 bucket) defined for the Data events selector. 5. If the `get-event-selectors` command returns an empty array, the Data events are not included into the selected AWS Cloudtrail trail logging configuration, therefore the S3 object-level API operations performed within your AWS account are not recorded. 6. Repeat steps 1 to 5 for auditing each s3 bucket to identify other trails that are missing the capability to log Data events. 7. Change the AWS region by updating the `--region` command parameter and perform the audit process for other regions.", + "AdditionalInformation": "", + "References": "https://docs.aws.amazon.com/AmazonS3/latest/user-guide/enable-cloudtrail-events.html" + } + ] + }, + { + "Id": "3.2", + "Description": "Ensure CloudTrail log file validation is enabled", + "Checks": [ + "cloudtrail_log_file_validation_enabled" + ], + "Attributes": [ + { + "Section": "3. Logging", + "Profile": "Level 2", + "AssessmentStatus": "Automated", + "Description": "CloudTrail log file validation creates a digitally signed digest file containing a hash of each log that CloudTrail writes to S3. These digest files can be used to determine whether a log file was changed, deleted, or unchanged after CloudTrail delivered the log. It is recommended that file validation be enabled on all CloudTrails.", + "RationaleStatement": "Enabling log file validation will provide additional integrity checking of CloudTrail logs.", + "ImpactStatement": "", + "RemediationProcedure": "Perform the following to enable log file validation on a given trail: **From Console:** 1. Sign in to the AWS Management Console and open the IAM console at [https://console.aws.amazon.com/cloudtrail](https://console.aws.amazon.com/cloudtrail) 2. Click on `Trails` on the left navigation pane 3. Click on target trail 4. Within the `General details` section click `edit` 5. Under the `Advanced settings` section 6. Check the enable box under `Log file validation` 7. Click `Save changes` **From Command Line:** ``` aws cloudtrail update-trail --name --enable-log-file-validation ``` Note that periodic validation of logs using these digests can be performed by running the following command: ``` aws cloudtrail validate-logs --trail-arn --start-time --end-time ```", + "AuditProcedure": "Perform the following on each trail to determine if log file validation is enabled: **From Console:** 1. Sign in to the AWS Management Console and open the IAM console at [https://console.aws.amazon.com/cloudtrail](https://console.aws.amazon.com/cloudtrail) 2. Click on `Trails` on the left navigation pane 3. For Every Trail: - Click on a trail via the link in the _Name_ column - Under the `General details` section, ensure `Log file validation` is set to `Enabled` **From Command Line:** ``` aws cloudtrail describe-trails ``` Ensure `LogFileValidationEnabled` is set to `true` for each trail", + "AdditionalInformation": "", + "References": "https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-log-file-validation-enabling.html" + } + ] + }, + { + "Id": "3.3", + "Description": "Ensure AWS Config is enabled in all regions", + "Checks": [ + "config_recorder_all_regions_enabled" + ], + "Attributes": [ + { + "Section": "3. Logging", + "Profile": "Level 2", + "AssessmentStatus": "Automated", + "Description": "AWS Config is a web service that performs configuration management of supported AWS resources within your account and delivers log files to you. The recorded information includes the configuration item (AWS resource), relationships between configuration items (AWS resources), any configuration changes between resources. It is recommended AWS Config be enabled in all regions.", + "RationaleStatement": "The AWS configuration item history captured by AWS Config enables security analysis, resource change tracking, and compliance auditing.", + "ImpactStatement": "It is recommended AWS Config be enabled in all regions.", + "RemediationProcedure": "To implement AWS Config configuration: **From Console:** 1. Select the region you want to focus on in the top right of the console 2. Click `Services` 3. Click `Config` 4. Define which resources you want to record in the selected region 5. Choose to include global resources (IAM resources) 6. Specify an S3 bucket in the same account or in another managed AWS account 7. Create an SNS Topic from the same AWS account or another managed AWS account **From Command Line:** 1. Ensure there is an appropriate S3 bucket, SNS topic, and IAM role per the [AWS Config Service prerequisites](http://docs.aws.amazon.com/config/latest/developerguide/gs-cli-prereq.html). 2. Run this command to set up the configuration recorder ``` aws configservice subscribe --s3-bucket my-config-bucket --sns-topic arn:aws:sns:us-east-1:012345678912:my-config-notice --iam-role arn:aws:iam::012345678912:role/myConfigRole ``` 3. Run this command to start the configuration recorder: ``` start-configuration-recorder --configuration-recorder-name ```", + "AuditProcedure": "Process to evaluate AWS Config configuration per region **From Console:** 1. Sign in to the AWS Management Console and open the AWS Config console at [https://console.aws.amazon.com/config/](https://console.aws.amazon.com/config/). 2. On the top right of the console select target Region. 3. If presented with Setup AWS Config - follow remediation procedure: 4. On the Resource inventory page, Click on edit (the gear icon). The Set Up AWS Config page appears. 5. Ensure 1 or both check-boxes under \"All Resources\" is checked. - Include global resources related to IAM resources - which needs to be enabled in 1 region only 6. Ensure the correct S3 bucket has been defined. 7. Ensure the correct SNS topic has been defined. 8. Repeat steps 2 to 7 for each region. **From Command Line:** 1. Run this command to show all AWS Config recorders and their properties: ``` aws configservice describe-configuration-recorders ``` 2. Evaluate the output to ensure that there's at least one recorder for which `recordingGroup` object includes `\"allSupported\": true` AND `\"includeGlobalResourceTypes\": true` Note: There is one more parameter \"ResourceTypes\" in recordingGroup object. We don't need to check the same as whenever we set \"allSupported\": true, AWS enforces resource types to be empty (\"ResourceTypes\":[]) Sample Output: ``` { \"ConfigurationRecorders\": [ { \"recordingGroup\": { \"allSupported\": true, \"resourceTypes\": [], \"includeGlobalResourceTypes\": true }, \"roleARN\": \"arn:aws:iam:::role/service-role/\", \"name\": \"default\" } ] } ``` 3. Run this command to show the status for all AWS Config recorders: ``` aws configservice describe-configuration-recorder-status ``` 4. In the output, find recorders with `name` key matching the recorders that met criteria in step 2. Ensure that at least one of them includes `\"recording\": true` and `\"lastStatus\": \"SUCCESS\"`", + "AdditionalInformation": "", + "References": "https://docs.aws.amazon.com/cli/latest/reference/configservice/describe-configuration-recorder-status.html" + } + ] + }, + { + "Id": "3.4", + "Description": "Ensure S3 bucket access logging is enabled on the CloudTrail S3 bucket", + "Checks": [ + "cloudtrail_logs_s3_bucket_access_logging_enabled" + ], + "Attributes": [ + { + "Section": "3. Logging", + "Profile": "Level 1", + "AssessmentStatus": "Automated", + "Description": "S3 Bucket Access Logging generates a log that contains access records for each request made to your S3 bucket. An access log record contains details about the request, such as the request type, the resources specified in the request worked, and the time and date the request was processed. It is recommended that bucket access logging be enabled on the CloudTrail S3 bucket.", + "RationaleStatement": "By enabling S3 bucket logging on target S3 buckets, it is possible to capture all events which may affect objects within any target buckets. Configuring logs to be placed in a separate bucket allows access to log information which can be useful in security and incident response workflows.", + "ImpactStatement": "", + "RemediationProcedure": "Perform the following to enable S3 bucket logging: **From Console:** 1. Sign in to the AWS Management Console and open the S3 console at [https://console.aws.amazon.com/s3](https://console.aws.amazon.com/s3). 2. Under `All Buckets` click on the target S3 bucket 3. Click on `Properties` in the top right of the console 4. Under `Bucket:` click on `Logging` 5. Configure bucket logging - Click on the `Enabled` checkbox - Select Target Bucket from list - Enter a Target Prefix 6. Click `Save`. **From Command Line:** 1. Get the name of the S3 bucket that CloudTrail is logging to: ``` aws cloudtrail describe-trails --region --query trailList[*].S3BucketName ``` 2. Copy and add target bucket name at ``, Prefix for logfile at `` and optionally add an email address in the following template and save it as ``: ``` { \"LoggingEnabled\": { \"TargetBucket\": \"\", \"TargetPrefix\": \"\", \"TargetGrants\": [ { \"Grantee\": { \"Type\": \"AmazonCustomerByEmail\", \"EmailAddress\": \"\" }, \"Permission\": \"FULL_CONTROL\" } ] } } ``` 3. Run the `put-bucket-logging` command with bucket name and `` as input, for more information refer at [put-bucket-logging](https://docs.aws.amazon.com/cli/latest/reference/s3api/put-bucket-logging.html): ``` aws s3api put-bucket-logging --bucket --bucket-logging-status file:// ```", + "AuditProcedure": "Perform the following ensure the CloudTrail S3 bucket has access logging is enabled: **From Console:** 1. Go to the Amazon CloudTrail console at [https://console.aws.amazon.com/cloudtrail/home](https://console.aws.amazon.com/cloudtrail/home) 2. In the API activity history pane on the left, click Trails 3. In the Trails pane, note the bucket names in the S3 bucket column 4. Sign in to the AWS Management Console and open the S3 console at [https://console.aws.amazon.com/s3](https://console.aws.amazon.com/s3). 5. Under `All Buckets` click on a target S3 bucket 6. Click on `Properties` in the top right of the console 7. Under `Bucket:` _ `` _ click on `Logging` 8. Ensure `Enabled` is checked. **From Command Line:** 1. Get the name of the S3 bucket that CloudTrail is logging to: ``` aws cloudtrail describe-trails --query 'trailList[*].S3BucketName' ``` 2. Ensure Bucket Logging is enabled: ``` aws s3api get-bucket-logging --bucket ``` Ensure command does not returns empty output. Sample Output for a bucket with logging enabled: ``` { \"LoggingEnabled\": { \"TargetPrefix\": \"\", \"TargetBucket\": \"\" } } ```", + "AdditionalInformation": "", + "References": "https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerLogs.html" + } + ] + }, + { + "Id": "3.5", + "Description": "Ensure CloudTrail logs are encrypted at rest using KMS CMKs", + "Checks": [ + "cloudtrail_kms_encryption_enabled" + ], + "Attributes": [ + { + "Section": "3. Logging", + "Profile": "Level 2", + "AssessmentStatus": "Automated", + "Description": "AWS CloudTrail is a web service that records AWS API calls for an account and makes those logs available to users and resources in accordance with IAM policies. AWS Key Management Service (KMS) is a managed service that helps create and control the encryption keys used to encrypt account data, and uses Hardware Security Modules (HSMs) to protect the security of encryption keys. CloudTrail logs can be configured to leverage server side encryption (SSE) and KMS customer created master keys (CMK) to further protect CloudTrail logs. It is recommended that CloudTrail be configured to use SSE-KMS.", + "RationaleStatement": "Configuring CloudTrail to use SSE-KMS provides additional confidentiality controls on log data as a given user must have S3 read permission on the corresponding log bucket and must be granted decrypt permission by the CMK policy.", + "ImpactStatement": "Customer created keys incur an additional cost. See https://aws.amazon.com/kms/pricing/ for more information.", + "RemediationProcedure": "Perform the following to configure CloudTrail to use SSE-KMS: **From Console:** 1. Sign in to the AWS Management Console and open the CloudTrail console at [https://console.aws.amazon.com/cloudtrail](https://console.aws.amazon.com/cloudtrail) 2. In the left navigation pane, choose `Trails` . 3. Click on a Trail 4. Under the `S3` section click on the edit button (pencil icon) 5. Click `Advanced` 6. Select an existing CMK from the `KMS key Id` drop-down menu - Note: Ensure the CMK is located in the same region as the S3 bucket - Note: You will need to apply a KMS Key policy on the selected CMK in order for CloudTrail as a service to encrypt and decrypt log files using the CMK provided. Steps are provided [here](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/create-kms-key-policy-for-cloudtrail.html) for editing the selected CMK Key policy 7. Click `Save` 8. You will see a notification message stating that you need to have decrypt permissions on the specified KMS key to decrypt log files. 9. Click `Yes` **From Command Line:** ``` aws cloudtrail update-trail --name --kms-id aws kms put-key-policy --key-id --policy ```", + "AuditProcedure": "Perform the following to determine if CloudTrail is configured to use SSE-KMS: **From Console:** 1. Sign in to the AWS Management Console and open the CloudTrail console at [https://console.aws.amazon.com/cloudtrail](https://console.aws.amazon.com/cloudtrail) 2. In the left navigation pane, choose `Trails` . 3. Select a Trail 4. Under the `S3` section, ensure `Encrypt log files` is set to `Yes` and a KMS key ID is specified in the `KSM Key Id` field. **From Command Line:** 1. Run the following command: ``` aws cloudtrail describe-trails ``` 2. For each trail listed, SSE-KMS is enabled if the trail has a `KmsKeyId` property defined.", + "AdditionalInformation": "3 statements which need to be added to the CMK policy: 1\\. Enable Cloudtrail to describe CMK properties ```

    {  \"Sid\": \"Allow CloudTrail access\",  \"Effect\": \"Allow\",  \"Principal\": {  \"Service\": \"cloudtrail.amazonaws.com\"  },  \"Action\": \"kms:DescribeKey\",  \"Resource\": \"*\" } ``` 2\\. Granting encrypt permissions ``` 
    {  \"Sid\": \"Allow CloudTrail to encrypt logs\",  \"Effect\": \"Allow\",  \"Principal\": {  \"Service\": \"cloudtrail.amazonaws.com\"  },  \"Action\": \"kms:GenerateDataKey*\",  \"Resource\": \"*\",  \"Condition\": {  \"StringLike\": {  \"kms:EncryptionContext:aws:cloudtrail:arn\": [  \"arn:aws:cloudtrail:*:aws-account-id:trail/*\"  ]  }  } } ``` 3\\. Granting decrypt permissions ``` 
    {  \"Sid\": \"Enable CloudTrail log decrypt permissions\",  \"Effect\": \"Allow\",  \"Principal\": {  \"AWS\": \"arn:aws:iam::aws-account-id:user/username\"  },  \"Action\": \"kms:Decrypt\",  \"Resource\": \"*\",  \"Condition\": {  \"Null\": {  \"kms:EncryptionContext:aws:cloudtrail:arn\": \"false\"  }  } } ```",
    +          "References": "https://docs.aws.amazon.com/awscloudtrail/latest/userguide/encrypting-cloudtrail-log-files-with-aws-kms.html:https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html"
    +        }
    +      ]
    +    },
    +    {
    +      "Id": "3.6",
    +      "Description": "Ensure rotation for customer created symmetric CMKs is enabled",
    +      "Checks": [
    +        "kms_cmk_rotation_enabled"
    +      ],
    +      "Attributes": [
    +        {
    +          "Section": "3. Logging",
    +          "Profile": "Level 2",
    +          "AssessmentStatus": "Automated",
    +          "Description": "AWS Key Management Service (KMS) allows customers to rotate the backing key which is key material stored within the KMS which is tied to the key ID of the Customer Created customer master key (CMK). It is the backing key that is used to perform cryptographic operations such as encryption and decryption. Automated key rotation currently retains all prior backing keys so that decryption of encrypted data can take place transparently. It is recommended that CMK key rotation be enabled for symmetric keys. Key rotation can not be enabled for any asymmetric CMK.",
    +          "RationaleStatement": "Rotating encryption keys helps reduce the potential impact of a compromised key as data encrypted with a new key cannot be accessed with a previous key that may have been exposed. Keys should be rotated every year, or upon event that would result in the compromise of that key.",
    +          "ImpactStatement": "Creation, management, and storage of CMKs may require additional time from and administrator.",
    +          "RemediationProcedure": "**From Console:**  1. Sign in to the AWS Management Console and open the KMS console at: https://console.aws.amazon.com/kms. 2. In the left navigation pane, click Customer-managed keys. 3. Select a key where Key spec = SYMMETRIC_DEFAULT that does not have automatic rotation enabled. 4. Select the Key rotation tab. 5. Check the Automatically rotate this KMS key every year checkbox. 6. Click Save. 7. Repeat steps 3–6 for all customer-managed CMKs that do not have automatic rotation enabled.",
    +          "AuditProcedure": "**From Console:**  1. Sign in to the AWS Management Console and open the KMS console at: https://console.aws.amazon.com/kms. 2. In the left navigation pane, click Customer-managed keys. 3. Select a customer managed CMK where Key spec = SYMMETRIC_DEFAULT. 4. Select the Key rotation tab. 5. Ensure the Automatically rotate this KMS key every year checkbox is checked. 6. Repeat steps 3–5 for all customer-managed CMKs where 'Key spec = SYMMETRIC_DEFAULT'.",
    +          "AdditionalInformation": "",
    +          "References": "https://aws.amazon.com/kms/pricing/:https://csrc.nist.gov/publications/detail/sp/800-57-part-1/rev-5/final"
    +        }
    +      ]
    +    },
    +    {
    +      "Id": "3.7",
    +      "Description": "Ensure VPC flow logging is enabled in all VPCs",
    +      "Checks": [
    +        "vpc_flow_logs_enabled"
    +      ],
    +      "Attributes": [
    +        {
    +          "Section": "3. Logging",
    +          "Profile": "Level 2",
    +          "AssessmentStatus": "Automated",
    +          "Description": "VPC Flow Logs is a feature that enables you to capture information about the IP traffic going to and from network interfaces in your VPC. After you've created a flow log, you can view and retrieve its data in Amazon CloudWatch Logs. It is recommended that VPC Flow Logs be enabled for packet \"Rejects\" for VPCs.",
    +          "RationaleStatement": "VPC Flow Logs provide visibility into network traffic that traverses the VPC and can be used to detect anomalous traffic or insight during security workflows.",
    +          "ImpactStatement": "By default, CloudWatch Logs will store Logs indefinitely unless a specific retention period is defined for the log group. When choosing the number of days to retain, keep in mind the average days it takes an organization to realize they have been breached is 210 days (at the time of this writing). Since additional time is required to research a breach, a minimum 365 day retention policy allows time for detection and research. You may also wish to archive the logs to a cheaper storage service rather than simply deleting them. See the following AWS resource to manage CloudWatch Logs retention periods:  1. https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/SettingLogRetention.html",
    +          "RemediationProcedure": "Perform the following to determine if VPC Flow logs is enabled:  **From Console:**  1. Sign into the management console 2. Select `Services` then `VPC`  3. In the left navigation pane, select `Your VPCs`  4. Select a VPC 5. In the right pane, select the `Flow Logs` tab. 6. If no Flow Log exists, click `Create Flow Log`  7. For Filter, select `Reject` 8. Enter in a `Role` and `Destination Log Group`  9. Click `Create Log Flow`  10. Click on `CloudWatch Logs Group`   **Note:** Setting the filter to \"Reject\" will dramatically reduce the logging data accumulation for this recommendation and provide sufficient information for the purposes of breach detection, research and remediation. However, during periods of least privilege security group engineering, setting this the filter to \"All\" can be very helpful in discovering existing traffic flows required for proper operation of an already running environment.  **From Command Line:**  1. Create a policy document and name it as `role_policy_document.json` and paste the following content: ``` {  \"Version\": \"2012-10-17\",  \"Statement\": [  {  \"Sid\": \"test\",  \"Effect\": \"Allow\",  \"Principal\": {  \"Service\": \"ec2.amazonaws.com\"  },  \"Action\": \"sts:AssumeRole\"  }  ] } ``` 2. Create another policy document and name it as `iam_policy.json` and paste the following content: ``` {  \"Version\": \"2012-10-17\",  \"Statement\": [  {  \"Effect\": \"Allow\",  \"Action\":[  \"logs:CreateLogGroup\",  \"logs:CreateLogStream\",  \"logs:DescribeLogGroups\",  \"logs:DescribeLogStreams\",  \"logs:PutLogEvents\",  \"logs:GetLogEvents\",  \"logs:FilterLogEvents\"  ],  \"Resource\": \"*\"  }  ] } ``` 3. Run the below command to create an IAM role: ``` aws iam create-role --role-name  --assume-role-policy-document file://role_policy_document.json  ``` 4. Run the below command to create an IAM policy: ``` aws iam create-policy --policy-name  --policy-document file://iam-policy.json ``` 5. Run `attach-group-policy` command using the IAM policy ARN returned at the previous step to attach the policy to the IAM role (if the command succeeds, no output is returned): ``` aws iam attach-group-policy --policy-arn arn:aws:iam:::policy/ --group-name  ``` 6. Run `describe-vpcs` to get the VpcId available in the selected region: ``` aws ec2 describe-vpcs --region  ``` 7. The command output should return the VPC Id available in the selected region. 8. Run `create-flow-logs` to create a flow log for the vpc: ``` aws ec2 create-flow-logs --resource-type VPC --resource-ids  --traffic-type REJECT --log-group-name  --deliver-logs-permission-arn  ``` 9. Repeat step 8 for other vpcs available in the selected region. 10. Change the region by updating --region and repeat remediation procedure for other vpcs.",
    +          "AuditProcedure": "Perform the following to determine if VPC Flow logs are enabled:  **From Console:**  1. Sign into the management console 2. Select `Services` then `VPC`  3. In the left navigation pane, select `Your VPCs`  4. Select a VPC 5. In the right pane, select the `Flow Logs` tab. 6. Ensure a Log Flow exists that has `Active` in the `Status` column.  **From Command Line:**  1. Run `describe-vpcs` command (OSX/Linux/UNIX) to list the VPC networks available in the current AWS region: ``` aws ec2 describe-vpcs --region  --query Vpcs[].VpcId ``` 2. The command output returns the `VpcId` available in the selected region. 3. Run `describe-flow-logs` command (OSX/Linux/UNIX) using the VPC ID to determine if the selected virtual network has the Flow Logs feature enabled: ``` aws ec2 describe-flow-logs --filter \"Name=resource-id,Values=\" ``` 4. If there are no Flow Logs created for the selected VPC, the command output will return an `empty list []`. 5. Repeat step 3 for other VPCs available in the same region. 6. Change the region by updating `--region` and repeat steps 1 - 5 for all the VPCs.",
    +          "AdditionalInformation": "",
    +          "References": "https://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/flow-logs.html"
    +        }
    +      ]
    +    },
    +    {
    +      "Id": "4.1",
    +      "Description": "Ensure a log metric filter and alarm exist for unauthorized API calls",
    +      "Checks": [
    +        "cloudwatch_log_metric_filter_unauthorized_api_calls"
    +      ],
    +      "Attributes": [
    +        {
    +          "Section": "4. Monitoring",
    +          "Profile": "Level 1",
    +          "AssessmentStatus": "Automated",
    +          "Description": "Real-time monitoring of API calls can be achieved by directing CloudTrail Logs to CloudWatch Logs and establishing corresponding metric filters and alarms. It is recommended that a metric filter and alarm be established for unauthorized API calls.",
    +          "RationaleStatement": "Monitoring unauthorized API calls will help reveal application errors and may reduce time to detect malicious activity.",
    +          "ImpactStatement": "This alert may be triggered by normal read-only console activities that attempt to opportunistically gather optional information, but gracefully fail if they don't have permissions.  If an excessive number of alerts are being generated then an organization may wish to consider adding read access to the limited IAM user permissions simply to quiet the alerts.  In some cases doing this may allow the users to actually view some areas of the system - any additional access given should be reviewed for alignment with the original limited IAM user intent.",
    +          "RemediationProcedure": "Perform the following to setup the metric filter, alarm, SNS topic, and subscription:  1. Create a metric filter based on filter pattern provided which checks for unauthorized API calls and the `` taken from audit step 1. ``` aws logs put-metric-filter --log-group-name \"cloudtrail_log_group_name\" --filter-name \"\" --metric-transformations metricName=unauthorized_api_calls_metric,metricNamespace=CISBenchmark,metricValue=1 --filter-pattern \"{ ($.errorCode = \"*UnauthorizedOperation\") || ($.errorCode = \"AccessDenied*\") || ($.sourceIPAddress!=\"delivery.logs.amazonaws.com\") || ($.eventName!=\"HeadBucket\") }\" ```  **Note**: You can choose your own metricName and metricNamespace strings. Using the same metricNamespace for all Foundations Benchmark metrics will group them together.  2. Create an SNS topic that the alarm will notify ``` aws sns create-topic --name  ``` **Note**: you can execute this command once and then re-use the same topic for all monitoring alarms. **Note**: Capture the TopicArn displayed when creating the SNS Topic in Step 2.  3. Create an SNS subscription to the topic created in step 2 ``` aws sns subscribe --topic-arn  --protocol  --notification-endpoint  ```  **Note**: you can execute this command once and then re-use the SNS subscription for all monitoring alarms.  4. Create an alarm that is associated with the CloudWatch Logs Metric Filter created in step 1 and an SNS topic created in step 2 ``` aws cloudwatch put-metric-alarm --alarm-name \"unauthorized_api_calls_alarm\" --metric-name \"unauthorized_api_calls_metric\" --statistic Sum --period 300 --threshold 1 --comparison-operator GreaterThanOrEqualToThreshold --evaluation-periods 1 --namespace \"CISBenchmark\" --alarm-actions  ```",
    +          "AuditProcedure": "Perform the following to ensure that there is at least one active multi-region CloudTrail with prescribed metric filters and alarms configured:  1. Identify the log group name configured for use with active multi-region CloudTrail:  - List all CloudTrails: `aws cloudtrail describe-trails`  - Identify Multi region Cloudtrails: `Trails with \"IsMultiRegionTrail\" set to true`  - From value associated with \"Name\":` note ``  - From value associated with \"CloudWatchLogsLogGroupArn\" note   Example: for CloudWatchLogsLogGroupArn that looks like arn:aws:logs:::log-group:NewGroup:*,  would be NewGroup  - Ensure Identified Multi region CloudTrail is active  `aws cloudtrail get-trail-status --name `  ensure `IsLogging` is set to `TRUE`  - Ensure identified Multi-region Cloudtrail captures all Management Events  `aws cloudtrail get-event-selectors --trail-name <\"Name\" as shown in describe-trails>`  Ensure there is at least one Event Selector for a Trail with `IncludeManagementEvents` set to `true` and `ReadWriteType` set to `All`  2. Get a list of all associated metric filters for this `` that you captured in step 1:  ``` aws logs describe-metric-filters --log-group-name \"\" ```  3. Ensure the output from the above command contains the following:  ``` \"filterPattern\": \"{ ($.errorCode = *UnauthorizedOperation) || ($.errorCode = AccessDenied*) || ($.sourceIPAddress!=delivery.logs.amazonaws.com) || ($.eventName!=HeadBucket) }\", ```  4. Note the \"filterName\" `` value associated with the `filterPattern` found in step 3.  5. Get a list of CloudWatch alarms and filter on the `` captured in step 4.  ``` aws cloudwatch describe-alarms --query \"MetricAlarms[?MetricName == `unauthorized_api_calls_metric`]\" ```  6. Note the `AlarmActions` value - this will provide the SNS topic ARN value.  7. Ensure there is at least one active subscriber to the SNS topic  ``` aws sns list-subscriptions-by-topic --topic-arn   ``` at least one subscription should have \"SubscriptionArn\" with valid aws ARN.  ``` Example of valid \"SubscriptionArn\": \"arn:aws:sns::::\" ```",
    +          "AdditionalInformation": "Configuring log metric filter and alarm on Multi-region (global) CloudTrail - ensures that activities from all regions (used as well as unused) are monitored - ensures that activities on all supported global services are monitored - ensures that all management events across all regions are monitored",
    +          "References": "https://aws.amazon.com/sns/:https://docs.aws.amazon.com/awscloudtrail/latest/userguide/receive-cloudtrail-log-files-from-multiple-regions.html:https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudwatch-alarms-for-cloudtrail.html:https://docs.aws.amazon.com/sns/latest/dg/SubscribeTopic.html"
    +        }
    +      ]
    +    },
    +    {
    +      "Id": "4.10",
    +      "Description": "Ensure a log metric filter and alarm exist for security group changes",
    +      "Checks": [
    +        "cloudwatch_log_metric_filter_security_group_changes"
    +      ],
    +      "Attributes": [
    +        {
    +          "Section": "4. Monitoring",
    +          "Profile": "Level 2",
    +          "AssessmentStatus": "Automated",
    +          "Description": "Real-time monitoring of API calls can be achieved by directing CloudTrail Logs to CloudWatch Logs and establishing corresponding metric filters and alarms. Security Groups are a stateful packet filter that controls ingress and egress traffic within a VPC. It is recommended that a metric filter and alarm be established for detecting changes to Security Groups.",
    +          "RationaleStatement": "Monitoring changes to security group will help ensure that resources and services are not unintentionally exposed.",
    +          "ImpactStatement": "",
    +          "RemediationProcedure": "Perform the following to setup the metric filter, alarm, SNS topic, and subscription:  1. Create a metric filter based on filter pattern provided which checks for security groups changes and the `` taken from audit step 1. ``` aws logs put-metric-filter --log-group-name \"\" --filter-name \"\" --metric-transformations metricName= \"\" ,metricNamespace=\"CISBenchmark\",metricValue=1 --filter-pattern \"{ ($.eventName = AuthorizeSecurityGroupIngress) || ($.eventName = AuthorizeSecurityGroupEgress) || ($.eventName = RevokeSecurityGroupIngress) || ($.eventName = RevokeSecurityGroupEgress) || ($.eventName = CreateSecurityGroup) || ($.eventName = DeleteSecurityGroup) }\" ```  **Note**: You can choose your own metricName and metricNamespace strings. Using the same metricNamespace for all Foundations Benchmark metrics will group them together.  2. Create an SNS topic that the alarm will notify ``` aws sns create-topic --name \"\" ```  **Note**: you can execute this command once and then re-use the same topic for all monitoring alarms.  3. Create an SNS subscription to the topic created in step 2 ``` aws sns subscribe --topic-arn \"\" --protocol  --notification-endpoint \"\" ```  **Note**: you can execute this command once and then re-use the SNS subscription for all monitoring alarms.  4. Create an alarm that is associated with the CloudWatch Logs Metric Filter created in step 1 and an SNS topic created in step 2 ``` aws cloudwatch put-metric-alarm --alarm-name \"\" --metric-name \"\" --statistic Sum --period 300 --threshold 1 --comparison-operator GreaterThanOrEqualToThreshold --evaluation-periods 1 --namespace \"CISBenchmark\" --alarm-actions \"\" ```",
    +          "AuditProcedure": "Perform the following to ensure that there is at least one active multi-region CloudTrail with prescribed metric filters and alarms configured:  1. Identify the log group name configured for use with active multi-region CloudTrail:  - List all CloudTrails: `aws cloudtrail describe-trails`  - Identify Multi region Cloudtrails: `Trails with \"IsMultiRegionTrail\" set to true`  - From value associated with CloudWatchLogsLogGroupArn note ``  Example: for CloudWatchLogsLogGroupArn that looks like `arn:aws:logs:::log-group:NewGroup:*`, `` would be `NewGroup`  - Ensure Identified Multi region CloudTrail is active  `aws cloudtrail get-trail-status --name `  ensure `IsLogging` is set to `TRUE`  - Ensure identified Multi-region Cloudtrail captures all Management Events  `aws cloudtrail get-event-selectors --trail-name `  Ensure there is at least one Event Selector for a Trail with `IncludeManagementEvents` set to `true` and `ReadWriteType` set to `All`  2. Get a list of all associated metric filters for this ``: ``` aws logs describe-metric-filters --log-group-name \"\" ``` 3. Ensure the output from the above command contains the following: ``` \"filterPattern\": \"{ ($.eventName = AuthorizeSecurityGroupIngress) || ($.eventName = AuthorizeSecurityGroupEgress) || ($.eventName = RevokeSecurityGroupIngress) || ($.eventName = RevokeSecurityGroupEgress) || ($.eventName = CreateSecurityGroup) || ($.eventName = DeleteSecurityGroup) }\" ``` 4. Note the `` value associated with the `filterPattern` found in step 3.  5. Get a list of CloudWatch alarms and filter on the `` captured in step 4. ``` aws cloudwatch describe-alarms --query \"MetricAlarms[?MetricName== '']\" ``` 6. Note the `AlarmActions` value - this will provide the SNS topic ARN value.  7. Ensure there is at least one active subscriber to the SNS topic ``` aws sns list-subscriptions-by-topic --topic-arn   ``` at least one subscription should have \"SubscriptionArn\" with valid aws ARN. ``` Example of valid \"SubscriptionArn\": \"arn:aws:sns::::\" ```",
    +          "AdditionalInformation": "Configuring log metric filter and alarm on Multi-region (global) CloudTrail - ensures that activities from all regions (used as well as unused) are monitored - ensures that activities on all supported global services are monitored - ensures that all management events across all regions are monitored",
    +          "References": "https://docs.aws.amazon.com/awscloudtrail/latest/userguide/receive-cloudtrail-log-files-from-multiple-regions.html:https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudwatch-alarms-for-cloudtrail.html:https://docs.aws.amazon.com/sns/latest/dg/SubscribeTopic.html"
    +        }
    +      ]
    +    },
    +    {
    +      "Id": "4.11",
    +      "Description": "Ensure a log metric filter and alarm exist for changes to Network Access Control Lists (NACL)",
    +      "Checks": [
    +        "cloudwatch_changes_to_network_acls_alarm_configured"
    +      ],
    +      "Attributes": [
    +        {
    +          "Section": "4. Monitoring",
    +          "Profile": "Level 2",
    +          "AssessmentStatus": "Automated",
    +          "Description": "Real-time monitoring of API calls can be achieved by directing CloudTrail Logs to CloudWatch Logs and establishing corresponding metric filters and alarms. NACLs are used as a stateless packet filter to control ingress and egress traffic for subnets within a VPC. It is recommended that a metric filter and alarm be established for changes made to NACLs.",
    +          "RationaleStatement": "Monitoring changes to NACLs will help ensure that AWS resources and services are not unintentionally exposed.",
    +          "ImpactStatement": "",
    +          "RemediationProcedure": "Perform the following to setup the metric filter, alarm, SNS topic, and subscription:  1. Create a metric filter based on filter pattern provided which checks for NACL changes and the `` taken from audit step 1. ``` aws logs put-metric-filter --log-group-name  --filter-name `` --metric-transformations metricName= `` ,metricNamespace='CISBenchmark',metricValue=1 --filter-pattern '{ ($.eventName = CreateNetworkAcl) || ($.eventName = CreateNetworkAclEntry) || ($.eventName = DeleteNetworkAcl) || ($.eventName = DeleteNetworkAclEntry) || ($.eventName = ReplaceNetworkAclEntry) || ($.eventName = ReplaceNetworkAclAssociation) }' ```  **Note**: You can choose your own metricName and metricNamespace strings. Using the same metricNamespace for all Foundations Benchmark metrics will group them together.  2. Create an SNS topic that the alarm will notify ``` aws sns create-topic --name  ```  **Note**: you can execute this command once and then re-use the same topic for all monitoring alarms.  3. Create an SNS subscription to the topic created in step 2 ``` aws sns subscribe --topic-arn  --protocol  --notification-endpoint  ```  **Note**: you can execute this command once and then re-use the SNS subscription for all monitoring alarms.  4. Create an alarm that is associated with the CloudWatch Logs Metric Filter created in step 1 and an SNS topic created in step 2 ``` aws cloudwatch put-metric-alarm --alarm-name `` --metric-name `` --statistic Sum --period 300 --threshold 1 --comparison-operator GreaterThanOrEqualToThreshold --evaluation-periods 1 --namespace 'CISBenchmark' --alarm-actions  ```",
    +          "AuditProcedure": "Perform the following to ensure that there is at least one active multi-region CloudTrail with prescribed metric filters and alarms configured:  1. Identify the log group name configured for use with active multi-region CloudTrail:  - List all CloudTrails: `aws cloudtrail describe-trails`  - Identify Multi region Cloudtrails: `Trails with \"IsMultiRegionTrail\" set to true`  - From value associated with CloudWatchLogsLogGroupArn note ``  Example: for CloudWatchLogsLogGroupArn that looks like `arn:aws:logs:::log-group:NewGroup:*`, `` would be `NewGroup`  - Ensure Identified Multi region CloudTrail is active  `aws cloudtrail get-trail-status --name `  ensure `IsLogging` is set to `TRUE`  - Ensure identified Multi-region Cloudtrail captures all Management Events  `aws cloudtrail get-event-selectors --trail-name `  Ensure there is at least one Event Selector for a Trail with `IncludeManagementEvents` set to `true` and `ReadWriteType` set to `All`  2. Get a list of all associated metric filters for this ``: ``` aws logs describe-metric-filters --log-group-name \"\" ``` 3. Ensure the output from the above command contains the following: ``` \"filterPattern\": \"{ ($.eventName = CreateNetworkAcl) || ($.eventName = CreateNetworkAclEntry) || ($.eventName = DeleteNetworkAcl) || ($.eventName = DeleteNetworkAclEntry) || ($.eventName = ReplaceNetworkAclEntry) || ($.eventName = ReplaceNetworkAclAssociation) }\" ``` 4. Note the `` value associated with the `filterPattern` found in step 3.  5. Get a list of CloudWatch alarms and filter on the `` captured in step 4. ``` aws cloudwatch describe-alarms --query 'MetricAlarms[?MetricName== ``]' ``` 6. Note the `AlarmActions` value - this will provide the SNS topic ARN value.  7. Ensure there is at least one active subscriber to the SNS topic ``` aws sns list-subscriptions-by-topic --topic-arn   ``` at least one subscription should have \"SubscriptionArn\" with valid aws ARN. ``` Example of valid \"SubscriptionArn\": \"arn:aws:sns::::\" ```",
    +          "AdditionalInformation": "Configuring log metric filter and alarm on Multi-region (global) CloudTrail - ensures that activities from all regions (used as well as unused) are monitored - ensures that activities on all supported global services are monitored - ensures that all management events across all regions are monitored",
    +          "References": "https://docs.aws.amazon.com/awscloudtrail/latest/userguide/receive-cloudtrail-log-files-from-multiple-regions.html:https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudwatch-alarms-for-cloudtrail.html:https://docs.aws.amazon.com/sns/latest/dg/SubscribeTopic.html"
    +        }
    +      ]
    +    },
    +    {
    +      "Id": "4.12",
    +      "Description": "Ensure a log metric filter and alarm exist for changes to network gateways",
    +      "Checks": [
    +        "cloudwatch_changes_to_network_gateways_alarm_configured"
    +      ],
    +      "Attributes": [
    +        {
    +          "Section": "4. Monitoring",
    +          "Profile": "Level 1",
    +          "AssessmentStatus": "Automated",
    +          "Description": "Real-time monitoring of API calls can be achieved by directing CloudTrail Logs to CloudWatch Logs and establishing corresponding metric filters and alarms. Network gateways are required to send/receive traffic to a destination outside of a VPC. It is recommended that a metric filter and alarm be established for changes to network gateways.",
    +          "RationaleStatement": "Monitoring changes to network gateways will help ensure that all ingress/egress traffic traverses the VPC border via a controlled path.",
    +          "ImpactStatement": "",
    +          "RemediationProcedure": "Perform the following to setup the metric filter, alarm, SNS topic, and subscription:  1. Create a metric filter based on filter pattern provided which checks for network gateways changes and the `` taken from audit step 1. ``` aws logs put-metric-filter --log-group-name  --filter-name `` --metric-transformations metricName= `` ,metricNamespace='CISBenchmark',metricValue=1 --filter-pattern '{ ($.eventName = CreateCustomerGateway) || ($.eventName = DeleteCustomerGateway) || ($.eventName = AttachInternetGateway) || ($.eventName = CreateInternetGateway) || ($.eventName = DeleteInternetGateway) || ($.eventName = DetachInternetGateway) }' ```  **Note**: You can choose your own metricName and metricNamespace strings. Using the same metricNamespace for all Foundations Benchmark metrics will group them together.  2. Create an SNS topic that the alarm will notify ``` aws sns create-topic --name  ```  **Note**: you can execute this command once and then re-use the same topic for all monitoring alarms.  3. Create an SNS subscription to the topic created in step 2 ``` aws sns subscribe --topic-arn  --protocol  --notification-endpoint  ```  **Note**: you can execute this command once and then re-use the SNS subscription for all monitoring alarms.  4. Create an alarm that is associated with the CloudWatch Logs Metric Filter created in step 1 and an SNS topic created in step 2 ``` aws cloudwatch put-metric-alarm --alarm-name `` --metric-name `` --statistic Sum --period 300 --threshold 1 --comparison-operator GreaterThanOrEqualToThreshold --evaluation-periods 1 --namespace 'CISBenchmark' --alarm-actions  ```",
    +          "AuditProcedure": "Perform the following to ensure that there is at least one active multi-region CloudTrail with prescribed metric filters and alarms configured:  1. Identify the log group name configured for use with active multi-region CloudTrail:  - List all CloudTrails: `aws cloudtrail describe-trails`  - Identify Multi region Cloudtrails: `Trails with \"IsMultiRegionTrail\" set to true`  - From value associated with CloudWatchLogsLogGroupArn note ``  Example: for CloudWatchLogsLogGroupArn that looks like `arn:aws:logs:::log-group:NewGroup:*`, `` would be `NewGroup`  - Ensure Identified Multi region CloudTrail is active  `aws cloudtrail get-trail-status --name `  ensure `IsLogging` is set to `TRUE`  - Ensure identified Multi-region Cloudtrail captures all Management Events  `aws cloudtrail get-event-selectors --trail-name `  Ensure there is at least one Event Selector for a Trail with `IncludeManagementEvents` set to `true` and `ReadWriteType` set to `All`  2. Get a list of all associated metric filters for this ``: ``` aws logs describe-metric-filters --log-group-name \"\" ``` 3. Ensure the output from the above command contains the following: ``` \"filterPattern\": \"{ ($.eventName = CreateCustomerGateway) || ($.eventName = DeleteCustomerGateway) || ($.eventName = AttachInternetGateway) || ($.eventName = CreateInternetGateway) || ($.eventName = DeleteInternetGateway) || ($.eventName = DetachInternetGateway) }\" ``` 4. Note the `` value associated with the `filterPattern` found in step 3.  5. Get a list of CloudWatch alarms and filter on the `` captured in step 4. ``` aws cloudwatch describe-alarms --query 'MetricAlarms[?MetricName== ``]' ``` 6. Note the `AlarmActions` value - this will provide the SNS topic ARN value.  7. Ensure there is at least one active subscriber to the SNS topic ``` aws sns list-subscriptions-by-topic --topic-arn   ``` at least one subscription should have \"SubscriptionArn\" with valid aws ARN. ``` Example of valid \"SubscriptionArn\": \"arn:aws:sns::::\" ```",
    +          "AdditionalInformation": "Configuring log metric filter and alarm on Multi-region (global) CloudTrail - ensures that activities from all regions (used as well as unused) are monitored - ensures that activities on all supported global services are monitored - ensures that all management events across all regions are monitored",
    +          "References": "https://docs.aws.amazon.com/awscloudtrail/latest/userguide/receive-cloudtrail-log-files-from-multiple-regions.html:https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudwatch-alarms-for-cloudtrail.html:https://docs.aws.amazon.com/sns/latest/dg/SubscribeTopic.html"
    +        }
    +      ]
    +    },
    +    {
    +      "Id": "4.13",
    +      "Description": "Ensure route table changes are monitored",
    +      "Checks": [
    +        "cloudwatch_changes_to_network_route_tables_alarm_configured"
    +      ],
    +      "Attributes": [
    +        {
    +          "Section": "4. Monitoring",
    +          "Profile": "Level 1",
    +          "AssessmentStatus": "Automated",
    +          "Description": "Real-time monitoring of API calls can be achieved by directing CloudTrail Logs to CloudWatch Logs and establishing corresponding metric filters and alarms. Routing tables are used to route network traffic between subnets and to network gateways. It is recommended that a metric filter and alarm be established for changes to route tables.",
    +          "RationaleStatement": "CloudWatch is an AWS native service that allows you to observe and monitor resources and applications. CloudTrail Logs can also be sent to an external Security informationand event management (SIEM) environment for monitoring and alerting.Monitoring changes to route tables will help ensure that all VPC traffic flows through anexpected path and prevent any accidental or intentional modifications that may lead touncontrolled network traffic. An alarm should be triggered every time an AWS API call isperformed to create, replace, delete, or disassociate a Route Table.",
    +          "ImpactStatement": "",
    +          "RemediationProcedure": "If you are using CloudTrails and CloudWatch, perform the following to setup the metric filter, alarm, SNS topic, and subscription: 1. Create a metric filter based on filter pattern provided which checks for route table changes and the  taken from audit step 1. aws logs put-metric-filter --log-group-name  -- filter-name `` --metric-transformations metricName= `` ,metricNamespace='CISBenchmark',metricValue=1 --filter-pattern '{ ($.eventName = CreateRoute) || ($.eventName = CreateRouteTable) || ($.eventName = ReplaceRoute) || ($.eventName = ReplaceRouteTableAssociation) || ($.eventName = DeleteRouteTable) || ($.eventName = DeleteRoute) || ($.eventName = DisassociateRouteTable) }' Note: You can choose your own metricName and metricNamespace strings. Using the same metricNamespace for all Foundations Benchmark metrics will group them together. 2. Create an SNS topic that the alarm will notify aws sns create-topic --name  Note: you can execute this command once and then re-use the same topic for all monitoring alarms. 3. Create an SNS subscription to the topic created in step 2 aws sns subscribe --topic-arn  --protocol  - -notification-endpoint  Note: you can execute this command once and then re-use the SNS subscription for all monitoring alarms. 4. Create an alarm that is associated with the CloudWatch Logs Metric Filter created in step 1 and an SNS topic created in step 2 aws cloudwatch put-metric-alarm --alarm-name `` --metric-name `` --statistic Sum --period 300 - -threshold 1 --comparison-operator GreaterThanOrEqualToThreshold -- evaluation-periods 1 --namespace 'CISBenchmark' --alarm-actions ",
    +          "AuditProcedure": "If you are using CloudTrails and CloudWatch , perform the following to ensure that there is at least one active multi-region CloudTrail with prescribed metric filters and alarmsconfigured:1. Identify the log group name configured for use with active multi-region CloudTrail:• List all CloudTrails: aws cloudtrail describe-trails• Identify Multi region Cloudtrails: Trails with 'IsMultiRegionTrail' set totrue• From value associated with CloudWatchLogsLogGroupArn noteExample: for CloudWatchLogsLogGroupArn that looks likearn:aws:logs:::log-group:NewGroup:*, would be NewGroup• Ensure Identified Multi region CloudTrail is activeaws cloudtrail get-trail-status --name ensure IsLogging is set to TRUE• Ensure identified Multi-region Cloudtrail captures all Management Eventsaws cloudtrail get-event-selectors --trail-name Ensure there is at least one Event Selector for a Trail with IncludeManagementEvents setto true and ReadWriteType set to All2. Get a list of all associated metric filters for this :aws logs describe-metric-filters --log-group-name''3. Ensure the output from the above command contains the following:'filterPattern': '{($.eventSource = ec2.amazonaws.com) && ($.eventName =CreateRoute) || ($.eventName = CreateRouteTable) || ($.eventName =ReplaceRoute) || ($.eventName = ReplaceRouteTableAssociation) || ($.eventName= DeleteRouteTable) || ($.eventName = DeleteRoute) || ($.eventName =DisassociateRouteTable) }'4. Note the  value associated with thefilterPattern found in step 3.5. Get a list of CloudWatch alarms and filter on the captured in step 4.aws cloudwatch describe-alarms --query 'MetricAlarms[?MetricName==``]'6. Note the AlarmActions value - this will provide the SNS topic ARN value.7. Ensure there is at least one active subscriber to the SNS topicaws sns list-subscriptions-by-topic --topic-arn at least one subscription should have 'SubscriptionArn' with valid aws ARN.Example of valid 'SubscriptionArn':'arn:aws:sns::::'",
    +          "AdditionalInformation": "Configuring log metric filter and alarm on Multi-region (global) CloudTrail - ensures that activities from all regions (used as well as unused) are monitored - ensures that activities on all supported global services are monitored - ensures that all management events across all regions are monitored",
    +          "References": "https://docs.aws.amazon.com/awscloudtrail/latest/userguide/receive-cloudtrail-log-files-from-multiple-regions.html:https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudwatch-alarms-for-cloudtrail.html:https://docs.aws.amazon.com/sns/latest/dg/SubscribeTopic.html"
    +        }
    +      ]
    +    },
    +    {
    +      "Id": "4.14",
    +      "Description": "Ensure a log metric filter and alarm exist for VPC changes",
    +      "Checks": [
    +        "cloudwatch_changes_to_vpcs_alarm_configured"
    +      ],
    +      "Attributes": [
    +        {
    +          "Section": "4. Monitoring",
    +          "Profile": "Level 1",
    +          "AssessmentStatus": "Automated",
    +          "Description": "Real-time monitoring of API calls can be achieved by directing CloudTrail Logs to CloudWatch Logs and establishing corresponding metric filters and alarms. It is possible to have more than 1 VPC within an account, in addition it is also possible to create a peer connection between 2 VPCs enabling network traffic to route between VPCs. It is recommended that a metric filter and alarm be established for changes made to VPCs.",
    +          "RationaleStatement": "Monitoring changes to VPC will help ensure VPC traffic flow is not getting impacted.",
    +          "ImpactStatement": "",
    +          "RemediationProcedure": "Perform the following to setup the metric filter, alarm, SNS topic, and subscription:  1. Create a metric filter based on filter pattern provided which checks for VPC changes and the `` taken from audit step 1. ``` aws logs put-metric-filter --log-group-name  --filter-name `` --metric-transformations metricName= `` ,metricNamespace='CISBenchmark',metricValue=1 --filter-pattern '{ ($.eventName = CreateVpc) || ($.eventName = DeleteVpc) || ($.eventName = ModifyVpcAttribute) || ($.eventName = AcceptVpcPeeringConnection) || ($.eventName = CreateVpcPeeringConnection) || ($.eventName = DeleteVpcPeeringConnection) || ($.eventName = RejectVpcPeeringConnection) || ($.eventName = AttachClassicLinkVpc) || ($.eventName = DetachClassicLinkVpc) || ($.eventName = DisableVpcClassicLink) || ($.eventName = EnableVpcClassicLink) }' ```  **Note**: You can choose your own metricName and metricNamespace strings. Using the same metricNamespace for all Foundations Benchmark metrics will group them together.  2. Create an SNS topic that the alarm will notify ``` aws sns create-topic --name  ```  **Note**: you can execute this command once and then re-use the same topic for all monitoring alarms.  3. Create an SNS subscription to the topic created in step 2 ``` aws sns subscribe --topic-arn  --protocol  --notification-endpoint  ```  **Note**: you can execute this command once and then re-use the SNS subscription for all monitoring alarms.  4. Create an alarm that is associated with the CloudWatch Logs Metric Filter created in step 1 and an SNS topic created in step 2 ``` aws cloudwatch put-metric-alarm --alarm-name `` --metric-name `` --statistic Sum --period 300 --threshold 1 --comparison-operator GreaterThanOrEqualToThreshold --evaluation-periods 1 --namespace 'CISBenchmark' --alarm-actions  ```",
    +          "AuditProcedure": "Perform the following to ensure that there is at least one active multi-region CloudTrail with prescribed metric filters and alarms configured:  1. Identify the log group name configured for use with active multi-region CloudTrail:  - List all CloudTrails: `aws cloudtrail describe-trails`  - Identify Multi region Cloudtrails: `Trails with \"IsMultiRegionTrail\" set to true`  - From value associated with CloudWatchLogsLogGroupArn note ``  Example: for CloudWatchLogsLogGroupArn that looks like `arn:aws:logs:::log-group:NewGroup:*`, `` would be `NewGroup`  - Ensure Identified Multi region CloudTrail is active  `aws cloudtrail get-trail-status --name `  ensure `IsLogging` is set to `TRUE`  - Ensure identified Multi-region Cloudtrail captures all Management Events  `aws cloudtrail get-event-selectors --trail-name `  Ensure there is at least one Event Selector for a Trail with `IncludeManagementEvents` set to `true` and `ReadWriteType` set to `All`  2. Get a list of all associated metric filters for this ``:  ``` aws logs describe-metric-filters --log-group-name \"\" ```  3. Ensure the output from the above command contains the following:  ``` \"filterPattern\": \"{ ($.eventName = CreateVpc) || ($.eventName = DeleteVpc) || ($.eventName = ModifyVpcAttribute) || ($.eventName = AcceptVpcPeeringConnection) || ($.eventName = CreateVpcPeeringConnection) || ($.eventName = DeleteVpcPeeringConnection) || ($.eventName = RejectVpcPeeringConnection) || ($.eventName = AttachClassicLinkVpc) || ($.eventName = DetachClassicLinkVpc) || ($.eventName = DisableVpcClassicLink) || ($.eventName = EnableVpcClassicLink) }\" ```  4. Note the `` value associated with the `filterPattern` found in step 3.  5. Get a list of CloudWatch alarms and filter on the `` captured in step 4.  ``` aws cloudwatch describe-alarms --query 'MetricAlarms[?MetricName== ``]' ```  6. Note the `AlarmActions` value - this will provide the SNS topic ARN value.  7. Ensure there is at least one active subscriber to the SNS topic  ``` aws sns list-subscriptions-by-topic --topic-arn   ``` at least one subscription should have \"SubscriptionArn\" with valid aws ARN.  ``` Example of valid \"SubscriptionArn\": \"arn:aws:sns::::\" ```",
    +          "AdditionalInformation": "Configuring log metric filter and alarm on Multi-region (global) CloudTrail - ensures that activities from all regions (used as well as unused) are monitored - ensures that activities on all supported global services are monitored - ensures that all management events across all regions are monitored",
    +          "References": "https://docs.aws.amazon.com/awscloudtrail/latest/userguide/receive-cloudtrail-log-files-from-multiple-regions.html:https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudwatch-alarms-for-cloudtrail.html:https://docs.aws.amazon.com/sns/latest/dg/SubscribeTopic.html"
    +        }
    +      ]
    +    },
    +    {
    +      "Id": "4.15",
    +      "Description": "Ensure a log metric filter and alarm exists for AWS Organizations changes",
    +      "Checks": [
    +        "cloudwatch_log_metric_filter_aws_organizations_changes"
    +      ],
    +      "Attributes": [
    +        {
    +          "Section": "4. Monitoring",
    +          "Profile": "Level 1",
    +          "AssessmentStatus": "Automated",
    +          "Description": "Real-time monitoring of API calls can be achieved by directing CloudTrail Logs to CloudWatch Logs and establishing corresponding metric filters and alarms. It is recommended that a metric filter and alarm be established for AWS Organizations changes made in the master AWS Account.",
    +          "RationaleStatement": "Monitoring AWS Organizations changes can help you prevent any unwanted, accidental or intentional modifications that may lead to unauthorized access or other security breaches. This monitoring technique helps you to ensure that any unexpected changes performed within your AWS Organizations can be investigated and any unwanted changes can be rolled back.",
    +          "ImpactStatement": "",
    +          "RemediationProcedure": "Perform the following to setup the metric filter, alarm, SNS topic, and subscription:  1. Create a metric filter based on filter pattern provided which checks for AWS Organizations changes and the `` taken from audit step 1: ``` aws logs put-metric-filter --log-group-name  --filter-name `` --metric-transformations metricName= `` ,metricNamespace='CISBenchmark',metricValue=1 --filter-pattern '{ ($.eventSource = organizations.amazonaws.com) && (($.eventName = \"AcceptHandshake\") || ($.eventName = \"AttachPolicy\") || ($.eventName = \"CreateAccount\") || ($.eventName = \"CreateOrganizationalUnit\") || ($.eventName = \"CreatePolicy\") || ($.eventName = \"DeclineHandshake\") || ($.eventName = \"DeleteOrganization\") || ($.eventName = \"DeleteOrganizationalUnit\") || ($.eventName = \"DeletePolicy\") || ($.eventName = \"DetachPolicy\") || ($.eventName = \"DisablePolicyType\") || ($.eventName = \"EnablePolicyType\") || ($.eventName = \"InviteAccountToOrganization\") || ($.eventName = \"LeaveOrganization\") || ($.eventName = \"MoveAccount\") || ($.eventName = \"RemoveAccountFromOrganization\") || ($.eventName = \"UpdatePolicy\") || ($.eventName = \"UpdateOrganizationalUnit\")) }' ``` **Note:** You can choose your own metricName and metricNamespace strings. Using the same metricNamespace for all Foundations Benchmark metrics will group them together.  2. Create an SNS topic that the alarm will notify: ``` aws sns create-topic --name  ``` **Note:** you can execute this command once and then re-use the same topic for all monitoring alarms.  3. Create an SNS subscription to the topic created in step 2: ``` aws sns subscribe --topic-arn  --protocol  --notification-endpoint  ``` **Note:** you can execute this command once and then re-use the SNS subscription for all monitoring alarms.  4. Create an alarm that is associated with the CloudWatch Logs Metric Filter created in step 1 and an SNS topic created in step 2: ``` aws cloudwatch put-metric-alarm --alarm-name `` --metric-name `` --statistic Sum --period 300 --threshold 1 --comparison-operator GreaterThanOrEqualToThreshold --evaluation-periods 1 --namespace 'CISBenchmark' --alarm-actions  ```",
    +          "AuditProcedure": "1. Perform the following to ensure that there is at least one active multi-region CloudTrail with prescribed metric filters and alarms configured: - Identify the log group name configured for use with active multi-region CloudTrail: - List all CloudTrails:  ``` aws cloudtrail describe-trails ``` - Identify Multi region Cloudtrails, Trails with `\"IsMultiRegionTrail\"` set to true - From value associated with CloudWatchLogsLogGroupArn note   **Example:** for CloudWatchLogsLogGroupArn that looks like arn:aws:logs:::log-group:NewGroup:*,  would be NewGroup  - Ensure Identified Multi region CloudTrail is active: ``` aws cloudtrail get-trail-status --name  ``` Ensure `IsLogging` is set to `TRUE`  - Ensure identified Multi-region Cloudtrail captures all Management Events: ``` aws cloudtrail get-event-selectors --trail-name  ``` - Ensure there is at least one Event Selector for a Trail with `IncludeManagementEvents` set to true and `ReadWriteType` set to `All`.  2. Get a list of all associated metric filters for this : ``` aws logs describe-metric-filters --log-group-name \"\" ``` 3. Ensure the output from the above command contains the following: ``` \"filterPattern\": \"{ ($.eventSource = organizations.amazonaws.com) && (($.eventName = \"AcceptHandshake\") || ($.eventName = \"AttachPolicy\") || ($.eventName = \"CreateAccount\") || ($.eventName = \"CreateOrganizationalUnit\") || ($.eventName = \"CreatePolicy\") || ($.eventName = \"DeclineHandshake\") || ($.eventName = \"DeleteOrganization\") || ($.eventName = \"DeleteOrganizationalUnit\") || ($.eventName = \"DeletePolicy\") || ($.eventName = \"DetachPolicy\") || ($.eventName = \"DisablePolicyType\") || ($.eventName = \"EnablePolicyType\") || ($.eventName = \"InviteAccountToOrganization\") || ($.eventName = \"LeaveOrganization\") || ($.eventName = \"MoveAccount\") || ($.eventName = \"RemoveAccountFromOrganization\") || ($.eventName = \"UpdatePolicy\") || ($.eventName = \"UpdateOrganizationalUnit\")) }\" ``` 4. Note the `` value associated with the filterPattern found in step 3.  5. Get a list of CloudWatch alarms and filter on the `` captured in step 4: ``` aws cloudwatch describe-alarms --query 'MetricAlarms[?MetricName== ``]' ``` 6. Note the AlarmActions value - this will provide the SNS topic ARN value.  7. Ensure there is at least one active subscriber to the SNS topic: ``` aws sns list-subscriptions-by-topic --topic-arn   ``` at least one subscription should have \"SubscriptionArn\" with valid aws ARN. Example of valid \"SubscriptionArn\":  ``` \"arn:aws:sns::::\" ```",
    +          "AdditionalInformation": "",
    +          "References": "https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudwatch-alarms-for-cloudtrail.html:https://docs.aws.amazon.com/organizations/latest/userguide/orgs_security_incident-response.html"
    +        }
    +      ]
    +    },
    +    {
    +      "Id": "4.16",
    +      "Description": "Ensure AWS Security Hub is enabled",
    +      "Checks": [
    +        "securityhub_enabled"
    +      ],
    +      "Attributes": [
    +        {
    +          "Section": "4. Monitoring",
    +          "Profile": "Level 2",
    +          "AssessmentStatus": "Automated",
    +          "Description": "Security Hub collects security data from across AWS accounts, services, and supported third-party partner products and helps you analyze your security trends and identify the highest priority security issues. When you enable Security Hub, it begins to consume, aggregate, organize, and prioritize findings from AWS services that you have enabled, such as Amazon GuardDuty, Amazon Inspector, and Amazon Macie. You can also enable integrations with AWS partner security products.",
    +          "RationaleStatement": "AWS Security Hub provides you with a comprehensive view of your security state in AWS and helps you check your environment against security industry standards and best practices - enabling you to quickly assess the security posture across your AWS accounts.",
    +          "ImpactStatement": "It is recommended AWS Security Hub be enabled in all regions. AWS Security Hub requires AWS Config to be enabled.",
    +          "RemediationProcedure": "To grant the permissions required to enable Security Hub, attach the Security Hub managed policy AWSSecurityHubFullAccess to an IAM user, group, or role.  Enabling Security Hub  **From Console:**  1. Use the credentials of the IAM identity to sign in to the Security Hub console. 2. When you open the Security Hub console for the first time, choose Enable AWS Security Hub. 3. On the welcome page, Security standards list the security standards that Security Hub supports. 4. Choose Enable Security Hub.  **From Command Line:**  1. Run the enable-security-hub command. To enable the default standards, include `--enable-default-standards`. ``` aws securityhub enable-security-hub --enable-default-standards ```  2. To enable the security hub without the default standards, include `--no-enable-default-standards`. ``` aws securityhub enable-security-hub --no-enable-default-standards ```",
    +          "AuditProcedure": "The process to evaluate AWS Security Hub configuration per region   **From Console:**  1. Sign in to the AWS Management Console and open the AWS Security Hub console at https://console.aws.amazon.com/securityhub/. 2. On the top right of the console, select the target Region. 3. If presented with the Security Hub > Summary page then Security Hub is set-up for the selected region. 4. If presented with Setup Security Hub or Get Started With Security Hub - follow the online instructions. 5. Repeat steps 2 to 4 for each region.",
    +          "AdditionalInformation": "",
    +          "References": "https://docs.aws.amazon.com/securityhub/latest/userguide/securityhub-get-started.html:https://docs.aws.amazon.com/securityhub/latest/userguide/securityhub-enable.html#securityhub-enable-api:https://awscli.amazonaws.com/v2/documentation/api/latest/reference/securityhub/enable-security-hub.html"
    +        }
    +      ]
    +    },
    +    {
    +      "Id": "4.2",
    +      "Description": "Ensure a log metric filter and alarm exist for Management Console sign-in without MFA",
    +      "Checks": [
    +        "cloudwatch_log_metric_filter_sign_in_without_mfa"
    +      ],
    +      "Attributes": [
    +        {
    +          "Section": "4. Monitoring",
    +          "Profile": "Level 1",
    +          "AssessmentStatus": "Automated",
    +          "Description": "Real-time monitoring of API calls can be achieved by directing CloudTrail Logs to CloudWatch Logs and establishing corresponding metric filters and alarms. It is recommended that a metric filter and alarm be established for console logins that are not protected by multi-factor authentication (MFA).",
    +          "RationaleStatement": "Monitoring for single-factor console logins will increase visibility into accounts that are not protected by MFA.",
    +          "ImpactStatement": "",
    +          "RemediationProcedure": "Perform the following to setup the metric filter, alarm, SNS topic, and subscription:  1. Create a metric filter based on filter pattern provided which checks for AWS Management Console sign-in without MFA and the `` taken from audit step 1.  Use Command:   ``` aws logs put-metric-filter --log-group-name  --filter-name `` --metric-transformations metricName= `` ,metricNamespace='CISBenchmark',metricValue=1 --filter-pattern '{ ($.eventName = \"ConsoleLogin\") && ($.additionalEventData.MFAUsed != \"Yes\") }' ```  Or (To reduce false positives incase Single Sign-On (SSO) is used in organization):  ``` aws logs put-metric-filter --log-group-name  --filter-name `` --metric-transformations metricName= `` ,metricNamespace='CISBenchmark',metricValue=1 --filter-pattern '{ ($.eventName = \"ConsoleLogin\") && ($.additionalEventData.MFAUsed != \"Yes\") && ($.userIdentity.type = \"IAMUser\") && ($.responseElements.ConsoleLogin = \"Success\") }' ```  **Note**: You can choose your own metricName and metricNamespace strings. Using the same metricNamespace for all Foundations Benchmark metrics will group them together.  2. Create an SNS topic that the alarm will notify ``` aws sns create-topic --name  ```  **Note**: you can execute this command once and then re-use the same topic for all monitoring alarms.  3. Create an SNS subscription to the topic created in step 2 ``` aws sns subscribe --topic-arn  --protocol  --notification-endpoint  ```  **Note**: you can execute this command once and then re-use the SNS subscription for all monitoring alarms.  4. Create an alarm that is associated with the CloudWatch Logs Metric Filter created in step 1 and an SNS topic created in step 2 ``` aws cloudwatch put-metric-alarm --alarm-name `` --metric-name `` --statistic Sum --period 300 --threshold 1 --comparison-operator GreaterThanOrEqualToThreshold --evaluation-periods 1 --namespace 'CISBenchmark' --alarm-actions  ```",
    +          "AuditProcedure": "Perform the following to ensure that there is at least one active multi-region CloudTrail with prescribed metric filters and alarms configured:  1. Identify the log group name configured for use with active multi-region CloudTrail:  - List all `CloudTrails`:  ``` aws cloudtrail describe-trails ```  - Identify Multi region Cloudtrails: `Trails with \"IsMultiRegionTrail\" set to true`  - From value associated with CloudWatchLogsLogGroupArn note ``  Example: for CloudWatchLogsLogGroupArn that looks like `arn:aws:logs:::log-group:NewGroup:*`, `` would be `NewGroup`  - Ensure Identified Multi region `CloudTrail` is active  ``` aws cloudtrail get-trail-status --name  ```  Ensure in the output that `IsLogging` is set to `TRUE`  - Ensure identified Multi-region 'Cloudtrail' captures all Management Events  ``` aws cloudtrail get-event-selectors --trail-name  ```  Ensure in the output there is at least one Event Selector for a Trail with `IncludeManagementEvents` set to `true` and `ReadWriteType` set to `All`  2. Get a list of all associated metric filters for this ``: ``` aws logs describe-metric-filters --log-group-name \"\" ``` 3. Ensure the output from the above command contains the following: ``` \"filterPattern\": \"{ ($.eventName = \"ConsoleLogin\") && ($.additionalEventData.MFAUsed != \"Yes\") }\" ```  Or (To reduce false positives incase Single Sign-On (SSO) is used in organization):  ``` \"filterPattern\": \"{ ($.eventName = \"ConsoleLogin\") && ($.additionalEventData.MFAUsed != \"Yes\") && ($.userIdentity.type = \"IAMUser\") && ($.responseElements.ConsoleLogin = \"Success\") }\" ```  4. Note the `` value associated with the `filterPattern` found in step 3.  5. Get a list of CloudWatch alarms and filter on the `` captured in step 4.  ``` aws cloudwatch describe-alarms --query 'MetricAlarms[?MetricName== ``]' ``` 6. Note the `AlarmActions` value - this will provide the SNS topic ARN value.  7. Ensure there is at least one active subscriber to the SNS topic ``` aws sns list-subscriptions-by-topic --topic-arn   ``` at least one subscription should have \"SubscriptionArn\" with valid aws ARN. ``` Example of valid \"SubscriptionArn\": \"arn:aws:sns::::\" ```",
    +          "AdditionalInformation": "Configuring log metric filter and alarm on Multi-region (global) CloudTrail - ensures that activities from all regions (used as well as unused) are monitored - ensures that activities on all supported global services are monitored - ensures that all management events across all regions are monitored -Filter pattern set to `{ ($.eventName = \"ConsoleLogin\") && ($.additionalEventData.MFAUsed != \"Yes\") && ($.userIdentity.type = \"IAMUser\") && ($.responseElements.ConsoleLogin = \"Success\"}` reduces false alarms raised when user logs in via SSO account.",
    +          "References": "https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/viewing_metrics_with_cloudwatch.html:https://docs.aws.amazon.com/awscloudtrail/latest/userguide/receive-cloudtrail-log-files-from-multiple-regions.html:https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudwatch-alarms-for-cloudtrail.html:https://docs.aws.amazon.com/sns/latest/dg/SubscribeTopic.html"
    +        }
    +      ]
    +    },
    +    {
    +      "Id": "4.3",
    +      "Description": "Ensure a log metric filter and alarm exist for usage of 'root' account",
    +      "Checks": [
    +        "cloudwatch_log_metric_filter_root_usage"
    +      ],
    +      "Attributes": [
    +        {
    +          "Section": "4. Monitoring",
    +          "Profile": "Level 1",
    +          "AssessmentStatus": "Automated",
    +          "Description": "Real-time monitoring of API calls can be achieved by directing CloudTrail Logs to CloudWatch Logs and establishing corresponding metric filters and alarms. It is recommended that a metric filter and alarm be established for 'root' login attempts.",
    +          "RationaleStatement": "Monitoring for 'root' account logins will provide visibility into the use of a fully privileged account and an opportunity to reduce the use of it.",
    +          "ImpactStatement": "",
    +          "RemediationProcedure": "Perform the following to setup the metric filter, alarm, SNS topic, and subscription:  1. Create a metric filter based on filter pattern provided which checks for 'Root' account usage and the `` taken from audit step 1. ``` aws logs put-metric-filter --log-group-name `` --filter-name `` --metric-transformations metricName= `` ,metricNamespace='CISBenchmark',metricValue=1 --filter-pattern '{ $.userIdentity.type = \"Root\" && $.userIdentity.invokedBy NOT EXISTS && $.eventType != \"AwsServiceEvent\" }' ```  **Note**: You can choose your own metricName and metricNamespace strings. Using the same metricNamespace for all Foundations Benchmark metrics will group them together.  2. Create an SNS topic that the alarm will notify ``` aws sns create-topic --name  ```  **Note**: you can execute this command once and then re-use the same topic for all monitoring alarms.  3. Create an SNS subscription to the topic created in step 2 ``` aws sns subscribe --topic-arn  --protocol  --notification-endpoint  ```  **Note**: you can execute this command once and then re-use the SNS subscription for all monitoring alarms.  4. Create an alarm that is associated with the CloudWatch Logs Metric Filter created in step 1 and an SNS topic created in step 2 ``` aws cloudwatch put-metric-alarm --alarm-name `` --metric-name `` --statistic Sum --period 300 --threshold 1 --comparison-operator GreaterThanOrEqualToThreshold --evaluation-periods 1 --namespace 'CISBenchmark' --alarm-actions  ```",
    +          "AuditProcedure": "Perform the following to ensure that there is at least one active multi-region CloudTrail with prescribed metric filters and alarms configured:  1. Identify the log group name configured for use with active multi-region CloudTrail:  - List all CloudTrails:  `aws cloudtrail describe-trails`  - Identify Multi region Cloudtrails: `Trails with \"IsMultiRegionTrail\" set to true`  - From value associated with CloudWatchLogsLogGroupArn note ``  Example: for CloudWatchLogsLogGroupArn that looks like `arn:aws:logs:::log-group:NewGroup:*`, `` would be `NewGroup`  - Ensure Identified Multi region CloudTrail is active  `aws cloudtrail get-trail-status --name `  ensure `IsLogging` is set to `TRUE`  - Ensure identified Multi-region Cloudtrail captures all Management Events  `aws cloudtrail get-event-selectors --trail-name `  Ensure there is at least one Event Selector for a Trail with `IncludeManagementEvents` set to `true` and `ReadWriteType` set to `All`  2. Get a list of all associated metric filters for this ``:  ``` aws logs describe-metric-filters --log-group-name \"\" ```  3. Ensure the output from the above command contains the following:  ``` \"filterPattern\": \"{ $.userIdentity.type = \"Root\" && $.userIdentity.invokedBy NOT EXISTS && $.eventType != \"AwsServiceEvent\" }\" ```  4. Note the `` value associated with the `filterPattern` found in step 3.  5. Get a list of CloudWatch alarms and filter on the `` captured in step 4.  ``` aws cloudwatch describe-alarms --query 'MetricAlarms[?MetricName== ``]' ```  6. Note the `AlarmActions` value - this will provide the SNS topic ARN value.  7. Ensure there is at least one active subscriber to the SNS topic  ``` aws sns list-subscriptions-by-topic --topic-arn   ``` at least one subscription should have \"SubscriptionArn\" with valid aws ARN.  ``` Example of valid \"SubscriptionArn\": \"arn:aws:sns::::\" ```",
    +          "AdditionalInformation": "**Configuring log metric filter and alarm on Multi-region (global) CloudTrail**  - ensures that activities from all regions (used as well as unused) are monitored  - ensures that activities on all supported global services are monitored  - ensures that all management events across all regions are monitored",
    +          "References": "https://docs.aws.amazon.com/awscloudtrail/latest/userguide/receive-cloudtrail-log-files-from-multiple-regions.html:https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudwatch-alarms-for-cloudtrail.html:https://docs.aws.amazon.com/sns/latest/dg/SubscribeTopic.html"
    +        }
    +      ]
    +    },
    +    {
    +      "Id": "4.4",
    +      "Description": "Ensure a log metric filter and alarm exist for IAM policy changes",
    +      "Checks": [
    +        "cloudwatch_log_metric_filter_policy_changes"
    +      ],
    +      "Attributes": [
    +        {
    +          "Section": "4. Monitoring",
    +          "Profile": "Level 1",
    +          "AssessmentStatus": "Automated",
    +          "Description": "Real-time monitoring of API calls can be achieved by directing CloudTrail Logs to CloudWatch Logs and establishing corresponding metric filters and alarms. It is recommended that a metric filter and alarm be established changes made to Identity and Access Management (IAM) policies.",
    +          "RationaleStatement": "Monitoring changes to IAM policies will help ensure authentication and authorization controls remain intact.",
    +          "ImpactStatement": "",
    +          "RemediationProcedure": "Perform the following to setup the metric filter, alarm, SNS topic, and subscription:  1. Create a metric filter based on filter pattern provided which checks for IAM policy changes and the `` taken from audit step 1. ``` aws logs put-metric-filter --log-group-name `` --filter-name `` --metric-transformations metricName= `` ,metricNamespace='CISBenchmark',metricValue=1 --filter-pattern '{($.eventName=DeleteGroupPolicy)||($.eventName=DeleteRolePolicy)||($.eventName=DeleteUserPolicy)||($.eventName=PutGroupPolicy)||($.eventName=PutRolePolicy)||($.eventName=PutUserPolicy)||($.eventName=CreatePolicy)||($.eventName=DeletePolicy)||($.eventName=CreatePolicyVersion)||($.eventName=DeletePolicyVersion)||($.eventName=AttachRolePolicy)||($.eventName=DetachRolePolicy)||($.eventName=AttachUserPolicy)||($.eventName=DetachUserPolicy)||($.eventName=AttachGroupPolicy)||($.eventName=DetachGroupPolicy)}' ```  **Note**: You can choose your own metricName and metricNamespace strings. Using the same metricNamespace for all Foundations Benchmark metrics will group them together.  2. Create an SNS topic that the alarm will notify ``` aws sns create-topic --name  ```  **Note**: you can execute this command once and then re-use the same topic for all monitoring alarms.  3. Create an SNS subscription to the topic created in step 2 ``` aws sns subscribe --topic-arn  --protocol  --notification-endpoint  ```  **Note**: you can execute this command once and then re-use the SNS subscription for all monitoring alarms.  4. Create an alarm that is associated with the CloudWatch Logs Metric Filter created in step 1 and an SNS topic created in step 2 ``` aws cloudwatch put-metric-alarm --alarm-name `` --metric-name `` --statistic Sum --period 300 --threshold 1 --comparison-operator GreaterThanOrEqualToThreshold --evaluation-periods 1 --namespace 'CISBenchmark' --alarm-actions  ```",
    +          "AuditProcedure": "Perform the following to ensure that there is at least one active multi-region CloudTrail with prescribed metric filters and alarms configured:  1. Identify the log group name configured for use with active multi-region CloudTrail:  - List all CloudTrails:  `aws cloudtrail describe-trails`  - Identify Multi region Cloudtrails: `Trails with \"IsMultiRegionTrail\" set to true`  - From value associated with CloudWatchLogsLogGroupArn note ``  Example: for CloudWatchLogsLogGroupArn that looks like `arn:aws:logs:::log-group:NewGroup:*`, `` would be `NewGroup`  - Ensure Identified Multi region CloudTrail is active  `aws cloudtrail get-trail-status --name `  ensure `IsLogging` is set to `TRUE`  - Ensure identified Multi-region Cloudtrail captures all Management Events  `aws cloudtrail get-event-selectors --trail-name `  Ensure there is at least one Event Selector for a Trail with `IncludeManagementEvents` set to `true` and `ReadWriteType` set to `All`  2. Get a list of all associated metric filters for this ``:  ``` aws logs describe-metric-filters --log-group-name \"\" ```  3. Ensure the output from the above command contains the following:  ``` \"filterPattern\": \"{($.eventName=DeleteGroupPolicy)||($.eventName=DeleteRolePolicy)||($.eventName=DeleteUserPolicy)||($.eventName=PutGroupPolicy)||($.eventName=PutRolePolicy)||($.eventName=PutUserPolicy)||($.eventName=CreatePolicy)||($.eventName=DeletePolicy)||($.eventName=CreatePolicyVersion)||($.eventName=DeletePolicyVersion)||($.eventName=AttachRolePolicy)||($.eventName=DetachRolePolicy)||($.eventName=AttachUserPolicy)||($.eventName=DetachUserPolicy)||($.eventName=AttachGroupPolicy)||($.eventName=DetachGroupPolicy)}\" ```  4. Note the `` value associated with the `filterPattern` found in step 3.  5. Get a list of CloudWatch alarms and filter on the `` captured in step 4.  ``` aws cloudwatch describe-alarms --query 'MetricAlarms[?MetricName== ``]' ```  6. Note the `AlarmActions` value - this will provide the SNS topic ARN value.  7. Ensure there is at least one active subscriber to the SNS topic  ``` aws sns list-subscriptions-by-topic --topic-arn   ``` at least one subscription should have \"SubscriptionArn\" with valid aws ARN.  ``` Example of valid \"SubscriptionArn\": \"arn:aws:sns::::\" ```",
    +          "AdditionalInformation": "Configuring log metric filter and alarm on Multi-region (global) CloudTrail - ensures that activities from all regions (used as well as unused) are monitored - ensures that activities on all supported global services are monitored - ensures that all management events across all regions are monitored",
    +          "References": "https://docs.aws.amazon.com/awscloudtrail/latest/userguide/receive-cloudtrail-log-files-from-multiple-regions.html:https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudwatch-alarms-for-cloudtrail.html:https://docs.aws.amazon.com/sns/latest/dg/SubscribeTopic.html"
    +        }
    +      ]
    +    },
    +    {
    +      "Id": "4.5",
    +      "Description": "Ensure a log metric filter and alarm exist for CloudTrail configuration changes",
    +      "Checks": [
    +        "cloudwatch_log_metric_filter_and_alarm_for_cloudtrail_configuration_changes_enabled"
    +      ],
    +      "Attributes": [
    +        {
    +          "Section": "4. Monitoring",
    +          "Profile": "Level 1",
    +          "AssessmentStatus": "Automated",
    +          "Description": "Real-time monitoring of API calls can be achieved by directing CloudTrail Logs to CloudWatch Logs and establishing corresponding metric filters and alarms. It is recommended that a metric filter and alarm be established for detecting changes to CloudTrail's configurations.",
    +          "RationaleStatement": "Monitoring changes to CloudTrail's configuration will help ensure sustained visibility to activities performed in the AWS account.",
    +          "ImpactStatement": "",
    +          "RemediationProcedure": "Perform the following to setup the metric filter, alarm, SNS topic, and subscription:  1. Create a metric filter based on filter pattern provided which checks for cloudtrail configuration changes and the `` taken from audit step 1. ``` aws logs put-metric-filter --log-group-name  --filter-name `` --metric-transformations metricName= `` ,metricNamespace='CISBenchmark',metricValue=1 --filter-pattern '{ ($.eventName = CreateTrail) || ($.eventName = UpdateTrail) || ($.eventName = DeleteTrail) || ($.eventName = StartLogging) || ($.eventName = StopLogging) }' ```  **Note**: You can choose your own metricName and metricNamespace strings. Using the same metricNamespace for all Foundations Benchmark metrics will group them together.  2. Create an SNS topic that the alarm will notify ``` aws sns create-topic --name  ```  **Note**: you can execute this command once and then re-use the same topic for all monitoring alarms.  3. Create an SNS subscription to the topic created in step 2 ``` aws sns subscribe --topic-arn  --protocol  --notification-endpoint  ```  **Note**: you can execute this command once and then re-use the SNS subscription for all monitoring alarms.  4. Create an alarm that is associated with the CloudWatch Logs Metric Filter created in step 1 and an SNS topic created in step 2 ``` aws cloudwatch put-metric-alarm --alarm-name `` --metric-name `` --statistic Sum --period 300 --threshold 1 --comparison-operator GreaterThanOrEqualToThreshold --evaluation-periods 1 --namespace 'CISBenchmark' --alarm-actions  ```",
    +          "AuditProcedure": "Perform the following to ensure that there is at least one active multi-region CloudTrail with prescribed metric filters and alarms configured:  1. Identify the log group name configured for use with active multi-region CloudTrail:  - List all CloudTrails: `aws cloudtrail describe-trails`  - Identify Multi region Cloudtrails: `Trails with \"IsMultiRegionTrail\" set to true`  - From value associated with CloudWatchLogsLogGroupArn note ``  Example: for CloudWatchLogsLogGroupArn that looks like `arn:aws:logs:::log-group:NewGroup:*`, `` would be `NewGroup`  - Ensure Identified Multi region CloudTrail is active  `aws cloudtrail get-trail-status --name `  ensure `IsLogging` is set to `TRUE`  - Ensure identified Multi-region Cloudtrail captures all Management Events  `aws cloudtrail get-event-selectors --trail-name `  Ensure there is at least one Event Selector for a Trail with `IncludeManagementEvents` set to `true` and `ReadWriteType` set to `All`  2. Get a list of all associated metric filters for this ``:  ``` aws logs describe-metric-filters --log-group-name \"\" ```  3. Ensure the output from the above command contains the following:  ``` \"filterPattern\": \"{ ($.eventName = CreateTrail) || ($.eventName = UpdateTrail) || ($.eventName = DeleteTrail) || ($.eventName = StartLogging) || ($.eventName = StopLogging) }\" ```  4. Note the `` value associated with the `filterPattern` found in step 3.  5. Get a list of CloudWatch alarms and filter on the `` captured in step 4.  ``` aws cloudwatch describe-alarms --query 'MetricAlarms[?MetricName== ``]' ```  6. Note the `AlarmActions` value - this will provide the SNS topic ARN value.  7. Ensure there is at least one active subscriber to the SNS topic  ``` aws sns list-subscriptions-by-topic --topic-arn   ``` at least one subscription should have \"SubscriptionArn\" with valid aws ARN.  ``` Example of valid \"SubscriptionArn\": \"arn:aws:sns::::\" ```",
    +          "AdditionalInformation": "Configuring log metric filter and alarm on Multi-region (global) CloudTrail - ensures that activities from all regions (used as well as unused) are monitored - ensures that activities on all supported global services are monitored - ensures that all management events across all regions are monitored",
    +          "References": "https://docs.aws.amazon.com/awscloudtrail/latest/userguide/receive-cloudtrail-log-files-from-multiple-regions.html:https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudwatch-alarms-for-cloudtrail.html:https://docs.aws.amazon.com/sns/latest/dg/SubscribeTopic.html"
    +        }
    +      ]
    +    },
    +    {
    +      "Id": "4.6",
    +      "Description": "Ensure a log metric filter and alarm exist for AWS Management Console authentication failures",
    +      "Checks": [
    +        "cloudwatch_log_metric_filter_authentication_failures"
    +      ],
    +      "Attributes": [
    +        {
    +          "Section": "4. Monitoring",
    +          "Profile": "Level 2",
    +          "AssessmentStatus": "Automated",
    +          "Description": "Real-time monitoring of API calls can be achieved by directing CloudTrail Logs to CloudWatch Logs and establishing corresponding metric filters and alarms. It is recommended that a metric filter and alarm be established for failed console authentication attempts.",
    +          "RationaleStatement": "Monitoring failed console logins may decrease lead time to detect an attempt to brute force a credential, which may provide an indicator, such as source IP, that can be used in other event correlation.",
    +          "ImpactStatement": "",
    +          "RemediationProcedure": "Perform the following to setup the metric filter, alarm, SNS topic, and subscription:  1. Create a metric filter based on filter pattern provided which checks for AWS management Console Login Failures and the `` taken from audit step 1. ``` aws logs put-metric-filter --log-group-name  --filter-name `` --metric-transformations metricName= `` ,metricNamespace='CISBenchmark',metricValue=1 --filter-pattern '{ ($.eventName = ConsoleLogin) && ($.errorMessage = \"Failed authentication\") }' ``` **Note**: You can choose your own metricName and metricNamespace strings. Using the same metricNamespace for all Foundations Benchmark metrics will group them together.  2. Create an SNS topic that the alarm will notify ``` aws sns create-topic --name  ``` **Note**: you can execute this command once and then re-use the same topic for all monitoring alarms.  3. Create an SNS subscription to the topic created in step 2 ``` aws sns subscribe --topic-arn  --protocol  --notification-endpoint  ``` **Note**: you can execute this command once and then re-use the SNS subscription for all monitoring alarms.  4. Create an alarm that is associated with the CloudWatch Logs Metric Filter created in step 1 and an SNS topic created in step 2 ``` aws cloudwatch put-metric-alarm --alarm-name `` --metric-name `` --statistic Sum --period 300 --threshold 1 --comparison-operator GreaterThanOrEqualToThreshold --evaluation-periods 1 --namespace 'CISBenchmark' --alarm-actions  ```",
    +          "AuditProcedure": "Perform the following to ensure that there is at least one active multi-region CloudTrail with prescribed metric filters and alarms configured:  1. Identify the log group name configured for use with active multi-region CloudTrail:  - List all CloudTrails: `aws cloudtrail describe-trails`  - Identify Multi region Cloudtrails: `Trails with \"IsMultiRegionTrail\" set to true`  - From value associated with CloudWatchLogsLogGroupArn note ``  Example: for CloudWatchLogsLogGroupArn that looks like `arn:aws:logs:::log-group:NewGroup:*`, `` would be `NewGroup`  - Ensure Identified Multi region CloudTrail is active  `aws cloudtrail get-trail-status --name `  ensure `IsLogging` is set to `TRUE`  - Ensure identified Multi-region Cloudtrail captures all Management Events  `aws cloudtrail get-event-selectors --trail-name `  Ensure there is at least one Event Selector for a Trail with `IncludeManagementEvents` set to `true` and `ReadWriteType` set to `All`  2. Get a list of all associated metric filters for this ``: ``` aws logs describe-metric-filters --log-group-name \"\" ``` 3. Ensure the output from the above command contains the following: ``` \"filterPattern\": \"{ ($.eventName = ConsoleLogin) && ($.errorMessage = \"Failed authentication\") }\" ```  4. Note the `` value associated with the `filterPattern` found in step 3.  5. Get a list of CloudWatch alarms and filter on the `` captured in step 4. ``` aws cloudwatch describe-alarms --query 'MetricAlarms[?MetricName== ``]' ``` 6. Note the `AlarmActions` value - this will provide the SNS topic ARN value.  7. Ensure there is at least one active subscriber to the SNS topic ``` aws sns list-subscriptions-by-topic --topic-arn   ``` at least one subscription should have \"SubscriptionArn\" with valid aws ARN. ``` Example of valid \"SubscriptionArn\": \"arn:aws:sns::::\" ```",
    +          "AdditionalInformation": "Configuring log metric filter and alarm on Multi-region (global) CloudTrail - ensures that activities from all regions (used as well as unused) are monitored - ensures that activities on all supported global services are monitored - ensures that all management events across all regions are monitored",
    +          "References": "https://docs.aws.amazon.com/awscloudtrail/latest/userguide/receive-cloudtrail-log-files-from-multiple-regions.html:https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudwatch-alarms-for-cloudtrail.html:https://docs.aws.amazon.com/sns/latest/dg/SubscribeTopic.html"
    +        }
    +      ]
    +    },
    +    {
    +      "Id": "4.7",
    +      "Description": "Ensure a log metric filter and alarm exist for disabling or scheduled deletion of customer created CMKs",
    +      "Checks": [
    +        "cloudwatch_log_metric_filter_disable_or_scheduled_deletion_of_kms_cmk"
    +      ],
    +      "Attributes": [
    +        {
    +          "Section": "4. Monitoring",
    +          "Profile": "Level 2",
    +          "AssessmentStatus": "Automated",
    +          "Description": "Real-time monitoring of API calls can be achieved by directing CloudTrail Logs to CloudWatch Logs and establishing corresponding metric filters and alarms. It is recommended that a metric filter and alarm be established for customer created CMKs which have changed state to disabled or scheduled deletion.",
    +          "RationaleStatement": "Data encrypted with disabled or deleted keys will no longer be accessible.",
    +          "ImpactStatement": "",
    +          "RemediationProcedure": "Perform the following to setup the metric filter, alarm, SNS topic, and subscription:  1. Create a metric filter based on filter pattern provided which checks for disabled or scheduled for deletion CMK's and the `` taken from audit step 1. ``` aws logs put-metric-filter --log-group-name  --filter-name `` --metric-transformations metricName= `` ,metricNamespace='CISBenchmark',metricValue=1 --filter-pattern '{($.eventSource = kms.amazonaws.com) && (($.eventName=DisableKey)||($.eventName=ScheduleKeyDeletion)) }' ``` **Note**: You can choose your own metricName and metricNamespace strings. Using the same metricNamespace for all Foundations Benchmark metrics will group them together.  2. Create an SNS topic that the alarm will notify ``` aws sns create-topic --name  ``` **Note**: you can execute this command once and then re-use the same topic for all monitoring alarms.  3. Create an SNS subscription to the topic created in step 2 ``` aws sns subscribe --topic-arn  --protocol  --notification-endpoint  ``` **Note**: you can execute this command once and then re-use the SNS subscription for all monitoring alarms.  4. Create an alarm that is associated with the CloudWatch Logs Metric Filter created in step 1 and an SNS topic created in step 2 ``` aws cloudwatch put-metric-alarm --alarm-name `` --metric-name `` --statistic Sum --period 300 --threshold 1 --comparison-operator GreaterThanOrEqualToThreshold --evaluation-periods 1 --namespace 'CISBenchmark' --alarm-actions  ```",
    +          "AuditProcedure": "Perform the following to ensure that there is at least one active multi-region CloudTrail with prescribed metric filters and alarms configured:  1. Identify the log group name configured for use with active multi-region CloudTrail:  - List all CloudTrails: `aws cloudtrail describe-trails`  - Identify Multi region Cloudtrails: `Trails with \"IsMultiRegionTrail\" set to true`  - From value associated with CloudWatchLogsLogGroupArn note ``  Example: for CloudWatchLogsLogGroupArn that looks like `arn:aws:logs:::log-group:NewGroup:*`, `` would be `NewGroup`  - Ensure Identified Multi region CloudTrail is active  `aws cloudtrail get-trail-status --name `  ensure `IsLogging` is set to `TRUE`  - Ensure identified Multi-region Cloudtrail captures all Management Events  `aws cloudtrail get-event-selectors --trail-name `  Ensure there is at least one Event Selector for a Trail with `IncludeManagementEvents` set to `true` and `ReadWriteType` set to `All`  2. Get a list of all associated metric filters for this ``: ``` aws logs describe-metric-filters --log-group-name \"\" ``` 3. Ensure the output from the above command contains the following: ``` \"filterPattern\": \"{($.eventSource = kms.amazonaws.com) && (($.eventName=DisableKey)||($.eventName=ScheduleKeyDeletion)) }\" ``` 4. Note the `` value associated with the `filterPattern` found in step 3.  5. Get a list of CloudWatch alarms and filter on the `` captured in step 4. ``` aws cloudwatch describe-alarms --query 'MetricAlarms[?MetricName== ``]' ``` 6. Note the `AlarmActions` value - this will provide the SNS topic ARN value.  7. Ensure there is at least one active subscriber to the SNS topic ``` aws sns list-subscriptions-by-topic --topic-arn   ``` at least one subscription should have \"SubscriptionArn\" with valid aws ARN. ``` Example of valid \"SubscriptionArn\": \"arn:aws:sns::::\" ```",
    +          "AdditionalInformation": "Configuring log metric filter and alarm on Multi-region (global) CloudTrail - ensures that activities from all regions (used as well as unused) are monitored - ensures that activities on all supported global services are monitored - ensures that all management events across all regions are monitored",
    +          "References": "https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudwatch-alarms-for-cloudtrail.html:https://docs.aws.amazon.com/awscloudtrail/latest/userguide/receive-cloudtrail-log-files-from-multiple-regions.html:https://docs.aws.amazon.com/sns/latest/dg/SubscribeTopic.html"
    +        }
    +      ]
    +    },
    +    {
    +      "Id": "4.8",
    +      "Description": "Ensure a log metric filter and alarm exist for S3 bucket policy changes",
    +      "Checks": [
    +        "cloudwatch_log_metric_filter_for_s3_bucket_policy_changes"
    +      ],
    +      "Attributes": [
    +        {
    +          "Section": "4. Monitoring",
    +          "Profile": "Level 1",
    +          "AssessmentStatus": "Automated",
    +          "Description": "Real-time monitoring of API calls can be achieved by directing CloudTrail Logs to CloudWatch Logs and establishing corresponding metric filters and alarms. It is recommended that a metric filter and alarm be established for changes to S3 bucket policies.",
    +          "RationaleStatement": "Monitoring changes to S3 bucket policies may reduce time to detect and correct permissive policies on sensitive S3 buckets.",
    +          "ImpactStatement": "",
    +          "RemediationProcedure": "Perform the following to setup the metric filter, alarm, SNS topic, and subscription:  1. Create a metric filter based on filter pattern provided which checks for S3 bucket policy changes and the `` taken from audit step 1. ``` aws logs put-metric-filter --log-group-name  --filter-name `` --metric-transformations metricName= `` ,metricNamespace='CISBenchmark',metricValue=1 --filter-pattern '{ ($.eventSource = s3.amazonaws.com) && (($.eventName = PutBucketAcl) || ($.eventName = PutBucketPolicy) || ($.eventName = PutBucketCors) || ($.eventName = PutBucketLifecycle) || ($.eventName = PutBucketReplication) || ($.eventName = DeleteBucketPolicy) || ($.eventName = DeleteBucketCors) || ($.eventName = DeleteBucketLifecycle) || ($.eventName = DeleteBucketReplication)) }' ```  **Note**: You can choose your own metricName and metricNamespace strings. Using the same metricNamespace for all Foundations Benchmark metrics will group them together.  2. Create an SNS topic that the alarm will notify ``` aws sns create-topic --name  ```  **Note**: you can execute this command once and then re-use the same topic for all monitoring alarms.  3. Create an SNS subscription to the topic created in step 2 ``` aws sns subscribe --topic-arn  --protocol  --notification-endpoint  ```  **Note**: you can execute this command once and then re-use the SNS subscription for all monitoring alarms.  4. Create an alarm that is associated with the CloudWatch Logs Metric Filter created in step 1 and an SNS topic created in step 2 ``` aws cloudwatch put-metric-alarm --alarm-name `` --metric-name `` --statistic Sum --period 300 --threshold 1 --comparison-operator GreaterThanOrEqualToThreshold --evaluation-periods 1 --namespace 'CISBenchmark' --alarm-actions  ```",
    +          "AuditProcedure": "Perform the following to ensure that there is at least one active multi-region CloudTrail with prescribed metric filters and alarms configured:  1. Identify the log group name configured for use with active multi-region CloudTrail:  - List all CloudTrails: `aws cloudtrail describe-trails`  - Identify Multi region Cloudtrails: `Trails with \"IsMultiRegionTrail\" set to true`  - From value associated with CloudWatchLogsLogGroupArn note ``  Example: for CloudWatchLogsLogGroupArn that looks like `arn:aws:logs:::log-group:NewGroup:*`, `` would be `NewGroup`  - Ensure Identified Multi region CloudTrail is active  `aws cloudtrail get-trail-status --name `  ensure `IsLogging` is set to `TRUE`  - Ensure identified Multi-region Cloudtrail captures all Management Events  `aws cloudtrail get-event-selectors --trail-name `  Ensure there is at least one Event Selector for a Trail with `IncludeManagementEvents` set to `true` and `ReadWriteType` set to `All`  2. Get a list of all associated metric filters for this ``: ``` aws logs describe-metric-filters --log-group-name \"\" ``` 3. Ensure the output from the above command contains the following: ``` \"filterPattern\": \"{ ($.eventSource = s3.amazonaws.com) && (($.eventName = PutBucketAcl) || ($.eventName = PutBucketPolicy) || ($.eventName = PutBucketCors) || ($.eventName = PutBucketLifecycle) || ($.eventName = PutBucketReplication) || ($.eventName = DeleteBucketPolicy) || ($.eventName = DeleteBucketCors) || ($.eventName = DeleteBucketLifecycle) || ($.eventName = DeleteBucketReplication)) }\" ``` 4. Note the `` value associated with the `filterPattern` found in step 3.  5. Get a list of CloudWatch alarms and filter on the `` captured in step 4. ``` aws cloudwatch describe-alarms --query 'MetricAlarms[?MetricName== ``]' ``` 6. Note the `AlarmActions` value - this will provide the SNS topic ARN value.  7. Ensure there is at least one active subscriber to the SNS topic ``` aws sns list-subscriptions-by-topic --topic-arn   ``` at least one subscription should have \"SubscriptionArn\" with valid aws ARN. ``` Example of valid \"SubscriptionArn\": \"arn:aws:sns::::\" ```",
    +          "AdditionalInformation": "Configuring log metric filter and alarm on Multi-region (global) CloudTrail - ensures that activities from all regions (used as well as unused) are monitored - ensures that activities on all supported global services are monitored - ensures that all management events across all regions are monitored",
    +          "References": "https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudwatch-alarms-for-cloudtrail.html:https://docs.aws.amazon.com/awscloudtrail/latest/userguide/receive-cloudtrail-log-files-from-multiple-regions.html:https://docs.aws.amazon.com/sns/latest/dg/SubscribeTopic.html"
    +        }
    +      ]
    +    },
    +    {
    +      "Id": "4.9",
    +      "Description": "Ensure a log metric filter and alarm exist for AWS Config configuration changes",
    +      "Checks": [
    +        "cloudwatch_log_metric_filter_and_alarm_for_aws_config_configuration_changes_enabled"
    +      ],
    +      "Attributes": [
    +        {
    +          "Section": "4. Monitoring",
    +          "Profile": "Level 2",
    +          "AssessmentStatus": "Automated",
    +          "Description": "Real-time monitoring of API calls can be achieved by directing CloudTrail Logs to CloudWatch Logs and establishing corresponding metric filters and alarms. It is recommended that a metric filter and alarm be established for detecting changes to CloudTrail's configurations.",
    +          "RationaleStatement": "Monitoring changes to AWS Config configuration will help ensure sustained visibility of configuration items within the AWS account.",
    +          "ImpactStatement": "",
    +          "RemediationProcedure": "Perform the following to setup the metric filter, alarm, SNS topic, and subscription:  1. Create a metric filter based on filter pattern provided which checks for AWS Configuration changes and the `` taken from audit step 1. ``` aws logs put-metric-filter --log-group-name  --filter-name `` --metric-transformations metricName= `` ,metricNamespace='CISBenchmark',metricValue=1 --filter-pattern '{ ($.eventSource = config.amazonaws.com) && (($.eventName=StopConfigurationRecorder)||($.eventName=DeleteDeliveryChannel)||($.eventName=PutDeliveryChannel)||($.eventName=PutConfigurationRecorder)) }' ```  **Note**: You can choose your own metricName and metricNamespace strings. Using the same metricNamespace for all Foundations Benchmark metrics will group them together.  2. Create an SNS topic that the alarm will notify ``` aws sns create-topic --name  ```  **Note**: you can execute this command once and then re-use the same topic for all monitoring alarms.  3. Create an SNS subscription to topic created in step 2 ``` aws sns subscribe --topic-arn  --protocol  --notification-endpoint  ```  **Note**: you can execute this command once and then re-use the SNS subscription for all monitoring alarms.  4. Create an alarm that is associated with the CloudWatch Logs Metric Filter created in step 1 and an SNS topic created in step 2 ``` aws cloudwatch put-metric-alarm --alarm-name `` --metric-name `` --statistic Sum --period 300 --threshold 1 --comparison-operator GreaterThanOrEqualToThreshold --evaluation-periods 1 --namespace 'CISBenchmark' --alarm-actions  ```",
    +          "AuditProcedure": "Perform the following to ensure that there is at least one active multi-region CloudTrail with prescribed metric filters and alarms configured:  1. Identify the log group name configured for use with active multi-region CloudTrail:  - List all CloudTrails: `aws cloudtrail describe-trails`  - Identify Multi region Cloudtrails: `Trails with \"IsMultiRegionTrail\" set to true`  - From value associated with CloudWatchLogsLogGroupArn note ``  Example: for CloudWatchLogsLogGroupArn that looks like `arn:aws:logs:::log-group:NewGroup:*`, `` would be `NewGroup`  - Ensure Identified Multi region CloudTrail is active  `aws cloudtrail get-trail-status --name `  ensure `IsLogging` is set to `TRUE`  - Ensure identified Multi-region Cloudtrail captures all Management Events  `aws cloudtrail get-event-selectors --trail-name `  Ensure there is at least one Event Selector for a Trail with `IncludeManagementEvents` set to `true` and `ReadWriteType` set to `All`  2. Get a list of all associated metric filters for this ``: ``` aws logs describe-metric-filters --log-group-name \"\" ``` 3. Ensure the output from the above command contains the following: ``` \"filterPattern\": \"{ ($.eventSource = config.amazonaws.com) && (($.eventName=StopConfigurationRecorder)||($.eventName=DeleteDeliveryChannel)||($.eventName=PutDeliveryChannel)||($.eventName=PutConfigurationRecorder)) }\" ``` 4. Note the `` value associated with the `filterPattern` found in step 3.  5. Get a list of CloudWatch alarms and filter on the `` captured in step 4. ``` aws cloudwatch describe-alarms --query 'MetricAlarms[?MetricName== ``]' ``` 6. Note the `AlarmActions` value - this will provide the SNS topic ARN value.  7. Ensure there is at least one active subscriber to the SNS topic ``` aws sns list-subscriptions-by-topic --topic-arn   ``` at least one subscription should have \"SubscriptionArn\" with valid aws ARN. ``` Example of valid \"SubscriptionArn\": \"arn:aws:sns::::\" ```",
    +          "AdditionalInformation": "Configuring log metric filter and alarm on Multi-region (global) CloudTrail - ensures that activities from all regions (used as well as unused) are monitored - ensures that activities on all supported global services are monitored - ensures that all management events across all regions are monitored",
    +          "References": "https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudwatch-alarms-for-cloudtrail.html:https://docs.aws.amazon.com/awscloudtrail/latest/userguide/receive-cloudtrail-log-files-from-multiple-regions.html:https://docs.aws.amazon.com/sns/latest/dg/SubscribeTopic.html"
    +        }
    +      ]
    +    },
    +    {
    +      "Id": "5.1",
    +      "Description": "Ensure no Network ACLs allow ingress from 0.0.0.0/0 to remote server administration ports",
    +      "Checks": [
    +        "ec2_networkacl_allow_ingress_any_port",
    +        "ec2_networkacl_allow_ingress_tcp_port_22",
    +        "ec2_networkacl_allow_ingress_tcp_port_3389"
    +      ],
    +      "Attributes": [
    +        {
    +          "Section": "5. Networking",
    +          "Profile": "Level 1",
    +          "AssessmentStatus": "Automated",
    +          "Description": "The Network Access Control List (NACL) function provide stateless filtering of ingress and egress network traffic to AWS resources. It is recommended that no NACL allows unrestricted ingress access to remote server administration ports, such as SSH to port `22` and RDP to port `3389`.",
    +          "RationaleStatement": "Public access to remote server administration ports, such as 22 and 3389, increases resource attack surface and unnecessarily raises the risk of resource compromise.",
    +          "ImpactStatement": "",
    +          "RemediationProcedure": "**From Console:**  Perform the following: 1. Login to the AWS Management Console at https://console.aws.amazon.com/vpc/home 2. In the left pane, click `Network ACLs` 3. For each network ACL to remediate, perform the following:  - Select the network ACL  - Click the `Inbound Rules` tab  - Click `Edit inbound rules`  - Either A) update the Source field to a range other than 0.0.0.0/0, or, B) Click `Delete` to remove the offending inbound rule  - Click `Save`",
    +          "AuditProcedure": "**From Console:**  Perform the following to determine if the account is configured as prescribed: 1. Login to the AWS Management Console at https://console.aws.amazon.com/vpc/home 2. In the left pane, click `Network ACLs` 3. For each network ACL, perform the following:  - Select the network ACL  - Click the `Inbound Rules` tab  - Ensure no rule exists that has a port range that includes port `22`, `3389`, or other remote server administration ports for your environment and has a `Source` of `0.0.0.0/0` and shows `ALLOW`  **Note:** A Port value of `ALL` or a port range such as `0-1024` are inclusive of port `22`, `3389`, and other remote server administration ports",
    +          "AdditionalInformation": "",
    +          "References": "https://docs.aws.amazon.com/vpc/latest/userguide/vpc-network-acls.html:https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Security.html#VPC_Security_Comparison"
    +        }
    +      ]
    +    },
    +    {
    +      "Id": "5.2",
    +      "Description": "Ensure no security groups allow ingress from 0.0.0.0/0 to remote server administration ports",
    +      "Checks": [
    +        "ec2_securitygroup_allow_ingress_from_internet_to_any_port",
    +        "ec2_securitygroup_allow_ingress_from_internet_to_tcp_port_22",
    +        "ec2_securitygroup_allow_ingress_from_internet_to_tcp_port_3389"
    +      ],
    +      "Attributes": [
    +        {
    +          "Section": "5. Networking",
    +          "Profile": "Level 1",
    +          "AssessmentStatus": "Automated",
    +          "Description": "Security groups provide stateful filtering of ingress and egress network traffic to AWS resources. It is recommended that no security group allows unrestricted ingress access to remote server administration ports, such as SSH to port `22` and RDP to port `3389`.",
    +          "RationaleStatement": "Public access to remote server administration ports, such as 22 and 3389, increases resource attack surface and unnecessarily raises the risk of resource compromise.",
    +          "ImpactStatement": "When updating an existing environment, ensure that administrators have access to remote server administration ports through another mechanism before removing access by deleting the 0.0.0.0/0 inbound rule.",
    +          "RemediationProcedure": "Perform the following to implement the prescribed state:  1. Login to the AWS Management Console at [https://console.aws.amazon.com/vpc/home](https://console.aws.amazon.com/vpc/home) 2. In the left pane, click `Security Groups`  3. For each security group, perform the following: 1. Select the security group 2. Click the `Inbound Rules` tab 3. Click the `Edit inbound rules` button 4. Identify the rules to be edited or removed 5. Either A) update the Source field to a range other than 0.0.0.0/0, or, B) Click `Delete` to remove the offending inbound rule 6. Click `Save rules`",
    +          "AuditProcedure": "Perform the following to determine if the account is configured as prescribed:  1. Login to the AWS Management Console at [https://console.aws.amazon.com/vpc/home](https://console.aws.amazon.com/vpc/home) 2. In the left pane, click `Security Groups`  3. For each security group, perform the following: 1. Select the security group 2. Click the `Inbound Rules` tab 3. Ensure no rule exists that has a port range that includes port `22`, `3389`, or other remote server administration ports for your environment and has a `Source` of `0.0.0.0/0`   **Note:** A Port value of `ALL` or a port range such as `0-1024` are inclusive of port `22`, `3389`, and other remote server administration ports.",
    +          "AdditionalInformation": "",
    +          "References": "https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-security-groups.html#deleting-security-group-rule"
    +        }
    +      ]
    +    },
    +    {
    +      "Id": "5.3",
    +      "Description": "Ensure no security groups allow ingress from ::/0 to remote server administration ports",
    +      "Checks": [
    +        "ec2_securitygroup_allow_ingress_from_internet_to_any_port",
    +        "ec2_securitygroup_allow_ingress_from_internet_to_tcp_port_22",
    +        "ec2_securitygroup_allow_ingress_from_internet_to_tcp_port_3389"
    +      ],
    +      "Attributes": [
    +        {
    +          "Section": "5. Networking",
    +          "Profile": "Level 1",
    +          "AssessmentStatus": "Automated",
    +          "Description": "Security groups provide stateful filtering of ingress and egress network traffic to AWS resources. It is recommended that no security group allows unrestricted ingress access to remote server administration ports, such as SSH to port `22` and RDP to port `3389`.",
    +          "RationaleStatement": "Public access to remote server administration ports, such as 22 and 3389, increases resource attack surface and unnecessarily raises the risk of resource compromise.",
    +          "ImpactStatement": "When updating an existing environment, ensure that administrators have access to remote server administration ports through another mechanism before removing access by deleting the ::/0 inbound rule.",
    +          "RemediationProcedure": "Perform the following to implement the prescribed state:  1. Login to the AWS Management Console at [https://console.aws.amazon.com/vpc/home](https://console.aws.amazon.com/vpc/home) 2. In the left pane, click `Security Groups`  3. For each security group, perform the following: 1. Select the security group 2. Click the `Inbound Rules` tab 3. Click the `Edit inbound rules` button 4. Identify the rules to be edited or removed 5. Either A) update the Source field to a range other than ::/0, or, B) Click `Delete` to remove the offending inbound rule 6. Click `Save rules`",
    +          "AuditProcedure": "Perform the following to determine if the account is configured as prescribed:  1. Login to the AWS Management Console at [https://console.aws.amazon.com/vpc/home](https://console.aws.amazon.com/vpc/home) 2. In the left pane, click `Security Groups`  3. For each security group, perform the following: 1. Select the security group 2. Click the `Inbound Rules` tab 3. Ensure no rule exists that has a port range that includes port `22`, `3389`, or other remote server administration ports for your environment and has a `Source` of `::/0`   **Note:** A Port value of `ALL` or a port range such as `0-1024` are inclusive of port `22`, `3389`, and other remote server administration ports.",
    +          "AdditionalInformation": "",
    +          "References": "https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-security-groups.html#deleting-security-group-rule"
    +        }
    +      ]
    +    },
    +    {
    +      "Id": "5.4",
    +      "Description": "Ensure the default security group of every VPC restricts all traffic",
    +      "Checks": [
    +        "ec2_securitygroup_default_restrict_traffic"
    +      ],
    +      "Attributes": [
    +        {
    +          "Section": "5. Networking",
    +          "Profile": "Level 2",
    +          "AssessmentStatus": "Automated",
    +          "Description": "A VPC comes with a default security group whose initial settings deny all inbound traffic, allow all outbound traffic, and allow all traffic between instances assigned to the security group. If you don't specify a security group when you launch an instance, the instance is automatically assigned to this default security group. Security groups provide stateful filtering of ingress/egress network traffic to AWS resources. It is recommended that the default security group restrict all traffic.  The default VPC in every region should have its default security group updated to comply. Any newly created VPCs will automatically contain a default security group that will need remediation to comply with this recommendation.  **NOTE:** When implementing this recommendation, VPC flow logging is invaluable in determining the least privilege port access required by systems to work properly because it can log all packet acceptances and rejections occurring under the current security groups. This dramatically reduces the primary barrier to least privilege engineering - discovering the minimum ports required by systems in the environment. Even if the VPC flow logging recommendation in this benchmark is not adopted as a permanent security measure, it should be used during any period of discovery and engineering for least privileged security groups.",
    +          "RationaleStatement": "Configuring all VPC default security groups to restrict all traffic will encourage least privilege security group development and mindful placement of AWS resources into security groups which will in-turn reduce the exposure of those resources.",
    +          "ImpactStatement": "Implementing this recommendation in an existing VPC containing operating resources requires extremely careful migration planning as the default security groups are likely to be enabling many ports that are unknown. Enabling VPC flow logging (of accepts) in an existing environment that is known to be breach free will reveal the current pattern of ports being used for each instance to communicate successfully.",
    +          "RemediationProcedure": "Security Group Members  Perform the following to implement the prescribed state:  1. Identify AWS resources that exist within the default security group 2. Create a set of least privilege security groups for those resources 3. Place the resources in those security groups 4. Remove the resources noted in #1 from the default security group  Security Group State  1. Login to the AWS Management Console at [https://console.aws.amazon.com/vpc/home](https://console.aws.amazon.com/vpc/home) 2. Repeat the next steps for all VPCs - including the default VPC in each AWS region: 3. In the left pane, click `Security Groups`  4. For each default security group, perform the following: 1. Select the `default` security group 2. Click the `Inbound Rules` tab 3. Remove any inbound rules 4. Click the `Outbound Rules` tab 5. Remove any Outbound rules  Recommended:  IAM groups allow you to edit the \"name\" field. After remediating default groups rules for all VPCs in all regions, edit this field to add text similar to \"DO NOT USE. DO NOT ADD RULES\"",
    +          "AuditProcedure": "Perform the following to determine if the account is configured as prescribed:  Security Group State  1. Login to the AWS Management Console at [https://console.aws.amazon.com/vpc/home](https://console.aws.amazon.com/vpc/home) 2. Repeat the next steps for all VPCs - including the default VPC in each AWS region: 3. In the left pane, click `Security Groups`  4. For each default security group, perform the following: 1. Select the `default` security group 2. Click the `Inbound Rules` tab 3. Ensure no rule exist 4. Click the `Outbound Rules` tab 5. Ensure no rules exist  Security Group Members  1. Login to the AWS Management Console at [https://console.aws.amazon.com/vpc/home](https://console.aws.amazon.com/vpc/home) 2. Repeat the next steps for all default groups in all VPCs - including the default VPC in each AWS region: 3. In the left pane, click `Security Groups`  4. Copy the id of the default security group. 5. Change to the EC2 Management Console at https://console.aws.amazon.com/ec2/v2/home 6. In the filter column type 'Security Group ID : < security group id from #4 >'",
    +          "AdditionalInformation": "",
    +          "References": "https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-network-security.html:https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-security-groups.html#default-security-group"
    +        }
    +      ]
    +    },
    +    {
    +      "Id": "5.5",
    +      "Description": "Ensure routing tables for VPC peering are \"least access\"",
    +      "Checks": [
    +        "vpc_peering_routing_tables_with_least_privilege"
    +      ],
    +      "Attributes": [
    +        {
    +          "Section": "5. Networking",
    +          "Profile": "Level 2",
    +          "AssessmentStatus": "Manual",
    +          "Description": "Once a VPC peering connection is established, routing tables must be updated to establish any connections between the peered VPCs. These routes can be as specific as desired - even peering a VPC to only a single host on the other side of the connection.",
    +          "RationaleStatement": "Being highly selective in peering routing tables is a very effective way of minimizing the impact of breach as resources outside of these routes are inaccessible to the peered VPC.",
    +          "ImpactStatement": "",
    +          "RemediationProcedure": "Remove and add route table entries to ensure that the least number of subnets or hosts as is required to accomplish the purpose for peering are routable.  **From Command Line:**  1. For each __ containing routes non compliant with your routing policy (which grants more than desired \"least access\"), delete the non compliant route: ``` aws ec2 delete-route --route-table-id  --destination-cidr-block  ```  2. Create a new compliant route: ``` aws ec2 create-route --route-table-id  --destination-cidr-block  --vpc-peering-connection-id  ```",
    +          "AuditProcedure": "Review routing tables of peered VPCs for whether they route all subnets of each VPC and whether that is necessary to accomplish the intended purposes for peering the VPCs.  **From Command Line:**  1. List all the route tables from a VPC and check if \"GatewayId\" is pointing to a __ (e.g. pcx-1a2b3c4d) and if \"DestinationCidrBlock\" is as specific as desired. ``` aws ec2 describe-route-tables --filter \"Name=vpc-id,Values=\" --query \"RouteTables[*].{RouteTableId:RouteTableId, VpcId:VpcId, Routes:Routes, AssociatedSubnets:Associations[*].SubnetId}\" ```",
    +          "AdditionalInformation": "If an organization has AWS transit gateway implemented in their VPC architecture they should look to apply the recommendation above for \"least access\" routing architecture at the AWS transit gateway level in combination with what must be implemented at the standard VPC route table. More specifically, to route traffic between two or more VPCs via a transit gateway VPCs must have an attachment to a transit gateway route table as well as a route, therefore to avoid routing traffic between VPCs an attachment to the transit gateway route table should only be added where there is an intention to route traffic between the VPCs. As transit gateways are able to host multiple route tables it is possible to group VPCs by attaching them to a common route table.",
    +          "References": "https://docs.aws.amazon.com/AmazonVPC/latest/PeeringGuide/peering-configurations-partial-access.html:https://docs.aws.amazon.com/cli/latest/reference/ec2/create-vpc-peering-connection.html"
    +        }
    +      ]
    +    },
    +    {
    +      "Id": "5.6",
    +      "Description": "Ensure that EC2 Metadata Service only allows IMDSv2",
    +      "Checks": [
    +        "ec2_instance_imdsv2_enabled"
    +      ],
    +      "Attributes": [
    +        {
    +          "Section": "5. Networking",
    +          "Profile": "Level 1",
    +          "AssessmentStatus": "Automated",
    +          "Description": "When enabling the Metadata Service on AWS EC2 instances, users have the option of using either Instance Metadata Service Version 1 (IMDSv1; a request/response method) or Instance Metadata Service Version 2 (IMDSv2; a session-oriented method).",
    +          "RationaleStatement": "Instance metadata is data about your instance that you can use to configure or manage the running instance. Instance metadata is divided into categories, for example, host name, events, and security groups. When enabling the Metadata Service on AWS EC2 instances, users have the option of using either Instance Metadata Service Version 1 (IMDSv1; a request/response method) or Instance Metadata Service Version 2 (IMDSv2; a session-oriented method). With IMDSv2, every request is now protected by session authentication. A session begins and ends a series of requests that software running on an EC2 instance uses to access the locally-stored EC2 instance metadata and credentials. Allowing Version 1 of the service may open EC2 instances to Server-Side Request Forgery (SSRF) attacks, so Amazon recommends utilizing Version 2 for better instance security.",
    +          "ImpactStatement": "",
    +          "RemediationProcedure": "From Console: 1. Sign in to the AWS Management Console and navigate to the EC2 dashboard at https://console.aws.amazon.com/ec2/. 2. In the left navigation panel, under the INSTANCES section, choose Instances. 3. Select the EC2 instance that you want to examine. 4. Choose Actions > Instance Settings > Modify instance metadata options. 5. Ensure Instance metadata service is set to Enable and set IMDSv2 to Required. 6. Repeat steps no. 1 – 5 to perform the remediation process for other EC2 Instances in the all applicable AWS region(s). From Command Line: 1. Run the describe-instances command using appropriate filtering to list the IDs of all the existing EC2 instances currently available in the selected region: aws ec2 describe-instances --region  --output table -- query 'Reservations[*].Instances[*].InstanceId' 2. The command output should return a table with the requested instance IDs. 3. Now run the modify-instance-metadata-options command using an instance ID returned at the previous step to update the Instance Metadata Version: aws ec2 modify-instance-metadata-options --instance-id  --http-tokens required --region  4. Repeat steps no. 1 – 3 to perform the remediation process for other EC2 Instances in the same AWS region. 5. Change the region by updating --region and repeat the entire process for other regions.",
    +          "AuditProcedure": "From Console: 1. Sign in to the AWS Management Console and navigate to the EC2 dashboard at https://console.aws.amazon.com/ec2/. 2. In the left navigation panel, under the INSTANCES section, choose Instances. 3. Select the EC2 instance that you want to examine. 4. Check for the IMDSv2 status, and ensure that it is set to Required. From Command Line: 1. Run the describe-instances command using appropriate filtering to list the IDs of all the existing EC2 instances currently available in the selected region: aws ec2 describe-instances --region  --output table --query 'Reservations[*].Instances[*].InstanceId' 2. The command output should return a table with the requested instance IDs. 3. Now run the describe-instances command using an instance ID returned at the previous step and custom filtering to determine whether the selected instance has IMDSv2: aws ec2 describe-instances --region  --instance-ids  --query 'Reservations[*].Instances[*].MetadataOptions' --output table 4. Ensure for all ec2 instances HttpTokens is set to required and State is set to applied. 5. Repeat steps no. 3 and 4 to verify other EC2 instances provisioned within the current region. 6. Repeat steps no. 1 – 5 to perform the audit process for other AWS regions.",
    +          "AdditionalInformation": "",
    +          "References": "https://aws.amazon.com/blogs/security/defense-in-depth-open-firewalls-reverse-proxies-ssrf-vulnerabilities-ec2-instance-metadata-service/:https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instances.html"
    +        }
    +      ]
    +    }
    +  ]
    +}
    diff --git a/prowler/compliance/aws/ens_rd2022_aws.json b/prowler/compliance/aws/ens_rd2022_aws.json
    index e850e92ca60..5d6a847cd7d 100644
    --- a/prowler/compliance/aws/ens_rd2022_aws.json
    +++ b/prowler/compliance/aws/ens_rd2022_aws.json
    @@ -211,6 +211,31 @@
             "iam_avoid_root_usage"
           ]
         },
    +    {
    +      "Id": "op.acc.4.aws.iam.8",
    +      "Description": "Proceso de gestión de derechos de acceso",
    +      "Attributes": [
    +        {
    +          "IdGrupoControl": "op.acc.4",
    +          "Marco": "operacional",
    +          "Categoria": "control de acceso",
    +          "DescripcionControl": "Se restringirá todo acceso a las acciones especificadas para el usuario root de una cuenta.",
    +          "Nivel": "alto",
    +          "Tipo": "requisito",
    +          "Dimensiones": [
    +            "confidencialidad",
    +            "integridad",
    +            "trazabilidad",
    +            "autenticidad"
    +          ],
    +          "ModoEjecucion": "automático"
    +        }
    +      ],
    +      "Checks": [
    +        "organizations_account_part_of_organizations",
    +        "organizations_scp_check_deny_regions"
    +      ]
    +    },
         {
           "Id": "op.acc.4.aws.iam.9",
           "Description": "Proceso de gestión de derechos de acceso",
    @@ -789,7 +814,8 @@
             }
           ],
           "Checks": [
    -        "inspector2_findings_exist"
    +        "inspector2_is_enabled",
    +        "inspector2_active_findings_exist"
           ]
         },
         {
    @@ -1121,6 +1147,30 @@
             "cloudtrail_insights_exist"
           ]
         },
    +    {
    +      "Id": "op.exp.8.r1.aws.ct.3",
    +      "Description": "Revisión de los registros",
    +      "Attributes": [
    +        {
    +          "IdGrupoControl": "op.exp.8.r1",
    +          "Marco": "operacional",
    +          "Categoria": "explotación",
    +          "DescripcionControl": "Registrar los eventos de lectura y escritura de datos.",
    +          "Nivel": "alto",
    +          "Tipo": "refuerzo",
    +          "Dimensiones": [
    +            "trazabilidad"
    +          ],
    +          "ModoEjecucion": "automático"
    +        }
    +      ],
    +      "Checks": [
    +        "cloudwatch_log_metric_filter_and_alarm_for_cloudtrail_configuration_changes_enabled",
    +        "cloudtrail_s3_dataevents_write_enabled",
    +        "cloudtrail_s3_dataevents_read_enabled",
    +        "cloudtrail_insights_exist"
    +      ]
    +    },
         {
           "Id": "op.exp.8.r1.aws.ct.4",
           "Description": "Revisión de los registros",
    @@ -1233,6 +1283,33 @@
             "iam_role_cross_service_confused_deputy_prevention"
           ]
         },
    +    {
    +      "Id": "op.exp.8.r4.aws.ct.1",
    +      "Description": "Control de acceso",
    +      "Attributes": [
    +        {
    +          "IdGrupoControl": "op.exp.8.r4",
    +          "Marco": "operacional",
    +          "Categoria": "explotación",
    +          "DescripcionControl": "Asignar correctamente las políticas AWS IAM para el acceso y borrado de los registros y sus copias de seguridad haciendo uso del principio de mínimo privilegio.",
    +          "Nivel": "alto",
    +          "Tipo": "refuerzo",
    +          "Dimensiones": [
    +            "trazabilidad"
    +          ],
    +          "ModoEjecucion": "automático"
    +        }
    +      ],
    +      "Checks": [
    +        "iam_policy_allows_privilege_escalation",
    +        "iam_customer_attached_policy_no_administrative_privileges",
    +        "iam_customer_unattached_policy_no_administrative_privilege",
    +        "iam_no_custom_policy_permissive_role_assumption",
    +        "iam_policy_attached_only_to_group_or_roles",
    +        "iam_role_cross_service_confused_deputy_prevention",
    +        "iam_policy_no_full_access_to_cloudtrail"
    +      ]
    +    },
         {
           "Id": "op.exp.8.r4.aws.ct.2",
           "Description": "Control de acceso",
    @@ -1859,7 +1936,8 @@
             }
           ],
           "Checks": [
    -        "inspector2_findings_exist"
    +        "inspector2_is_enabled",
    +        "inspector2_active_findings_exist"
           ]
         },
         {
    @@ -1934,7 +2012,8 @@
             }
           ],
           "Checks": [
    -        "inspector2_findings_exist"
    +        "inspector2_is_enabled",
    +        "inspector2_active_findings_exist"
           ]
         },
         {
    @@ -2110,7 +2189,7 @@
             }
           ],
           "Checks": [
    -        "networkfirewall_in_all_vpc"
    +        "fms_policy_compliant"
           ]
         },
         {
    @@ -2251,6 +2330,31 @@
             "cloudfront_distributions_https_enabled"
           ]
         },
    +    {
    +      "Id": "mp.com.4.aws.ws.1",
    +      "Description": "Separación de flujos de información en la red",
    +      "Attributes": [
    +        {
    +          "IdGrupoControl": "mp.com.4",
    +          "Marco": "medidas de protección",
    +          "Categoria": "segregación de redes",
    +          "DescripcionControl": "Se deberán abrir solo los puertos necesarios para el uso del servicio AWS WorkSpaces.",
    +          "Nivel": "alto",
    +          "Tipo": "requisito",
    +          "Dimensiones": [
    +            "confidencialidad",
    +            "integridad",
    +            "trazabilidad",
    +            "autenticidad",
    +            "disponibilidad"
    +          ],
    +          "ModoEjecucion": "automático"
    +        }
    +      ],
    +      "Checks": [
    +        "workspaces_vpc_2private_1public_subnets_nat"
    +      ]
    +    },
         {
           "Id": "mp.com.4.aws.vpc.1",
           "Description": "Separación de flujos de información en la red",
    @@ -2323,7 +2427,8 @@
             }
           ],
           "Checks": [
    -        "vpc_subnet_separate_private_public"
    +        "vpc_subnet_separate_private_public",
    +        "vpc_different_regions"
           ]
         },
         {
    @@ -2370,7 +2475,8 @@
             }
           ],
           "Checks": [
    -        "vpc_subnet_different_az"
    +        "vpc_subnet_different_az",
    +        "vpc_different_regions"
           ]
         },
         {
    diff --git a/prowler/compliance/aws/mitre_attack_aws.json b/prowler/compliance/aws/mitre_attack_aws.json
    index 06551f03f2c..d21edb96df4 100644
    --- a/prowler/compliance/aws/mitre_attack_aws.json
    +++ b/prowler/compliance/aws/mitre_attack_aws.json
    @@ -29,7 +29,8 @@
             "securityhub_enabled",
             "elbv2_waf_acl_attached",
             "guardduty_is_enabled",
    -        "inspector2_findings_exist",
    +        "inspector2_is_enabled",
    +        "inspector2_active_findings_exist",
             "awslambda_function_not_publicly_accessible",
             "ec2_instance_public_ip"
           ],
    @@ -576,7 +577,8 @@
             "config_recorder_all_regions_enabled",
             "securityhub_enabled",
             "guardduty_is_enabled",
    -        "inspector2_findings_exist"
    +        "inspector2_is_enabled",
    +        "inspector2_active_findings_exist"
           ],
           "Attributes": [
             {
    @@ -737,7 +739,8 @@
             "iam_user_hardware_mfa_enabled",
             "iam_user_mfa_enabled_console_access",
             "securityhub_enabled",
    -        "inspector2_findings_exist"
    +        "inspector2_is_enabled",
    +        "inspector2_active_findings_exist"
           ],
           "Attributes": [
             {
    @@ -1892,7 +1895,8 @@
             "networkfirewall_in_all_vpc",
             "elbv2_waf_acl_attached",
             "guardduty_is_enabled",
    -        "inspector2_findings_exist",
    +        "inspector2_is_enabled",
    +        "inspector2_active_findings_exist",
             "ec2_networkacl_allow_ingress_any_port",
             "ec2_networkacl_allow_ingress_tcp_port_22",
             "ec2_networkacl_allow_ingress_tcp_port_3389",
    diff --git a/prowler/compliance/aws/soc2_aws.json b/prowler/compliance/aws/soc2_aws.json
    index 35e3e61f3f4..860ede2a772 100644
    --- a/prowler/compliance/aws/soc2_aws.json
    +++ b/prowler/compliance/aws/soc2_aws.json
    @@ -13,7 +13,7 @@
               "ItemId": "cc_1_1",
               "Section": "CC1.0 - Common Criteria Related to Control Environment",
               "Service": "aws",
    -          "Soc_Type": "manual"
    +          "Type": "manual"
             }
           ],
           "Checks": []
    @@ -27,7 +27,7 @@
               "ItemId": "cc_1_2",
               "Section": "CC1.0 - Common Criteria Related to Control Environment",
               "Service": "aws",
    -          "Soc_Type": "manual"
    +          "Type": "manual"
             }
           ],
           "Checks": []
    @@ -41,7 +41,7 @@
               "ItemId": "cc_1_3",
               "Section": "CC1.0 - Common Criteria Related to Control Environment",
               "Service": "aws",
    -          "Soc_Type": "automated"
    +          "Type": "automated"
             }
           ],
           "Checks": [
    @@ -62,7 +62,7 @@
               "ItemId": "cc_1_4",
               "Section": "CC1.0 - Common Criteria Related to Control Environment",
               "Service": "aws",
    -          "Soc_Type": "manual"
    +          "Type": "manual"
             }
           ],
           "Checks": []
    @@ -76,7 +76,7 @@
               "ItemId": "cc_1_5",
               "Section": "CC1.0 - Common Criteria Related to Control Environment",
               "Service": "aws",
    -          "Soc_Type": "manual"
    +          "Type": "manual"
             }
           ],
           "Checks": []
    @@ -90,7 +90,7 @@
               "ItemId": "cc_2_1",
               "Section": "CC2.0 - Common Criteria Related to Communication and Information",
               "Service": "aws",
    -          "Soc_Type": "automated"
    +          "Type": "automated"
             }
           ],
           "Checks": [
    @@ -109,7 +109,7 @@
               "ItemId": "cc_2_2",
               "Section": "CC2.0 - Common Criteria Related to Communication and Information",
               "Service": "aws",
    -          "Soc_Type": "manual"
    +          "Type": "manual"
             }
           ],
           "Checks": []
    @@ -123,7 +123,7 @@
               "ItemId": "cc_2_3",
               "Section": "CC2.0 - Common Criteria Related to Communication and Information",
               "Service": "aws",
    -          "Soc_Type": "manual"
    +          "Type": "manual"
             }
           ],
           "Checks": []
    @@ -137,7 +137,7 @@
               "ItemId": "cc_3_1",
               "Section": "CC3.0 - Common Criteria Related to Risk Assessment",
               "Service": "aws",
    -          "Soc_Type": "automated"
    +          "Type": "automated"
             }
           ],
           "Checks": [
    @@ -155,7 +155,7 @@
               "ItemId": "cc_3_2",
               "Section": "CC3.0 - Common Criteria Related to Risk Assessment",
               "Service": "aws",
    -          "Soc_Type": "automated"
    +          "Type": "automated"
             }
           ],
           "Checks": [
    @@ -175,7 +175,7 @@
               "ItemId": "cc_3_3",
               "Section": "CC3.0 - Common Criteria Related to Risk Assessment",
               "Service": "aws",
    -          "Soc_Type": "manual"
    +          "Type": "manual"
             }
           ],
           "Checks": []
    @@ -189,7 +189,7 @@
               "ItemId": "cc_3_4",
               "Section": "CC3.0 - Common Criteria Related to Risk Assessment",
               "Service": "config",
    -          "Soc_Type": "automated"
    +          "Type": "automated"
             }
           ],
           "Checks": [
    @@ -205,7 +205,7 @@
               "ItemId": "cc_4_1",
               "Section": "CC4.0 - Monitoring Activities",
               "Service": "aws",
    -          "Soc_Type": "manual"
    +          "Type": "manual"
             }
           ],
           "Checks": []
    @@ -219,7 +219,7 @@
               "ItemId": "cc_4_2",
               "Section": "CC4.0 - Monitoring Activities",
               "Service": "guardduty",
    -          "Soc_Type": "automated"
    +          "Type": "automated"
             }
           ],
           "Checks": [
    @@ -236,7 +236,7 @@
               "ItemId": "cc_5_1",
               "Section": "CC5.0 - Control Activities",
               "Service": "aws",
    -          "Soc_Type": "manual"
    +          "Type": "manual"
             }
           ],
           "Checks": []
    @@ -250,7 +250,7 @@
               "ItemId": "cc_5_2",
               "Section": "CC5.0 - Control Activities",
               "Service": "aws",
    -          "Soc_Type": "manual"
    +          "Type": "manual"
             }
           ],
           "Checks": []
    @@ -264,7 +264,7 @@
               "ItemId": "cc_5_3",
               "Section": "CC5.0 - Control Activities",
               "Service": "aws",
    -          "Soc_Type": "manual"
    +          "Type": "manual"
             }
           ],
           "Checks": []
    @@ -278,7 +278,7 @@
               "ItemId": "cc_6_1",
               "Section": "CC6.0 - Logical and Physical Access",
               "Service": "s3",
    -          "Soc_Type": "automated"
    +          "Type": "automated"
             }
           ],
           "Checks": [
    @@ -294,7 +294,7 @@
               "ItemId": "cc_6_2",
               "Section": "CC6.0 - Logical and Physical Access",
               "Service": "rds",
    -          "Soc_Type": "automated"
    +          "Type": "automated"
             }
           ],
           "Checks": [
    @@ -310,7 +310,7 @@
               "ItemId": "cc_6_3",
               "Section": "CC6.0 - Logical and Physical Access",
               "Service": "iam",
    -          "Soc_Type": "automated"
    +          "Type": "automated"
             }
           ],
           "Checks": [
    @@ -328,7 +328,7 @@
               "ItemId": "cc_6_4",
               "Section": "CC6.0 - Logical and Physical Access",
               "Service": "aws",
    -          "Soc_Type": "manual"
    +          "Type": "manual"
             }
           ],
           "Checks": []
    @@ -342,7 +342,7 @@
               "ItemId": "cc_6_5",
               "Section": "CC6.0 - Logical and Physical Access",
               "Service": "aws",
    -          "Soc_Type": "manual"
    +          "Type": "manual"
             }
           ],
           "Checks": []
    @@ -356,7 +356,7 @@
               "ItemId": "cc_6_6",
               "Section": "CC6.0 - Logical and Physical Access",
               "Service": "ec2",
    -          "Soc_Type": "automated"
    +          "Type": "automated"
             }
           ],
           "Checks": [
    @@ -372,7 +372,7 @@
               "ItemId": "cc_6_7",
               "Section": "CC6.0 - Logical and Physical Access",
               "Service": "acm",
    -          "Soc_Type": "automated"
    +          "Type": "automated"
             }
           ],
           "Checks": [
    @@ -388,7 +388,7 @@
               "ItemId": "cc_6_8",
               "Section": "CC6.0 - Logical and Physical Access",
               "Service": "aws",
    -          "Soc_Type": "automated"
    +          "Type": "automated"
             }
           ],
           "Checks": [
    @@ -405,7 +405,7 @@
               "ItemId": "cc_7_1",
               "Section": "CC7.0 - System Operations",
               "Service": "aws",
    -          "Soc_Type": "automated"
    +          "Type": "automated"
             }
           ],
           "Checks": [
    @@ -424,7 +424,7 @@
               "ItemId": "cc_7_2",
               "Section": "CC7.0 - System Operations",
               "Service": "aws",
    -          "Soc_Type": "automated"
    +          "Type": "automated"
             }
           ],
           "Checks": [
    @@ -460,7 +460,7 @@
               "ItemId": "cc_7_3",
               "Section": "CC7.0 - System Operations",
               "Service": "aws",
    -          "Soc_Type": "automated"
    +          "Type": "automated"
             }
           ],
           "Checks": [
    @@ -492,7 +492,7 @@
               "ItemId": "cc_7_4",
               "Section": "CC7.0 - System Operations",
               "Service": "aws",
    -          "Soc_Type": "automated"
    +          "Type": "automated"
             }
           ],
           "Checks": [
    @@ -523,7 +523,7 @@
               "ItemId": "cc_7_5",
               "Section": "CC7.0 - System Operations",
               "Service": "aws",
    -          "Soc_Type": "manual"
    +          "Type": "manual"
             }
           ],
           "Checks": []
    @@ -537,7 +537,7 @@
               "ItemId": "cc_8_1",
               "Section": "CC8.0 - Change Management",
               "Service": "aws",
    -          "Soc_Type": "automated"
    +          "Type": "automated"
             }
           ],
           "Checks": [
    @@ -553,7 +553,7 @@
               "ItemId": "cc_9_1",
               "Section": "CC9.0 - Risk Mitigation",
               "Service": "aws",
    -          "Soc_Type": "manual"
    +          "Type": "manual"
             }
           ],
           "Checks": []
    @@ -567,7 +567,7 @@
               "ItemId": "cc_9_2",
               "Section": "CC9.0 - Risk Mitigation",
               "Service": "aws",
    -          "Soc_Type": "manual"
    +          "Type": "manual"
             }
           ],
           "Checks": []
    @@ -581,7 +581,7 @@
               "ItemId": "cc_a_1_1",
               "Section": "CCA1.0 - Additional Criterial for Availability",
               "Service": "aws",
    -          "Soc_Type": "manual"
    +          "Type": "manual"
             }
           ],
           "Checks": []
    @@ -595,7 +595,7 @@
               "ItemId": "cc_a_1_2",
               "Section": "CCA1.0 - Additional Criterial for Availability",
               "Service": "aws",
    -          "Soc_Type": "automated"
    +          "Type": "automated"
             }
           ],
           "Checks": [
    @@ -626,7 +626,7 @@
               "ItemId": "cc_a_1_3",
               "Section": "CCA1.0 - Additional Criterial for Availability",
               "Service": "aws",
    -          "Soc_Type": "manual"
    +          "Type": "manual"
             }
           ],
           "Checks": []
    @@ -640,7 +640,7 @@
               "ItemId": "cc_c_1_1",
               "Section": "CCC1.0 - Additional Criterial for Confidentiality",
               "Service": "aws",
    -          "Soc_Type": "automated"
    +          "Type": "automated"
             }
           ],
           "Checks": [
    @@ -656,7 +656,7 @@
               "ItemId": "cc_c_1_2",
               "Section": "CCC1.0 - Additional Criterial for Confidentiality",
               "Service": "s3",
    -          "Soc_Type": "automated"
    +          "Type": "automated"
             }
           ],
           "Checks": [
    @@ -672,7 +672,7 @@
               "ItemId": "p_1_1",
               "Section": "P1.0 - Privacy Criteria Related to Notice and Communication of Objectives Related to Privacy",
               "Service": "aws",
    -          "Soc_Type": "manual"
    +          "Type": "manual"
             }
           ],
           "Checks": []
    @@ -686,7 +686,7 @@
               "ItemId": "p_2_1",
               "Section": "P2.0 - Privacy Criteria Related to Choice and Consent",
               "Service": "aws",
    -          "Soc_Type": "manual"
    +          "Type": "manual"
             }
           ],
           "Checks": []
    @@ -700,7 +700,7 @@
               "ItemId": "p_3_1",
               "Section": "P3.0 - Privacy Criteria Related to Collection",
               "Service": "aws",
    -          "Soc_Type": "manual"
    +          "Type": "manual"
             }
           ],
           "Checks": []
    @@ -714,7 +714,7 @@
               "ItemId": "p_3_2",
               "Section": "P3.0 - Privacy Criteria Related to Collection",
               "Service": "aws",
    -          "Soc_Type": "manual"
    +          "Type": "manual"
             }
           ],
           "Checks": []
    @@ -728,7 +728,7 @@
               "ItemId": "p_4_1",
               "Section": "P4.0 - Privacy Criteria Related to Use, Retention, and Disposal",
               "Service": "aws",
    -          "Soc_Type": "manual"
    +          "Type": "manual"
             }
           ],
           "Checks": []
    @@ -742,7 +742,7 @@
               "ItemId": "p_4_2",
               "Section": "P4.0 - Privacy Criteria Related to Use, Retention, and Disposal",
               "Service": "aws",
    -          "Soc_Type": "manual"
    +          "Type": "manual"
             }
           ],
           "Checks": []
    @@ -756,7 +756,7 @@
               "ItemId": "p_4_3",
               "Section": "P4.0 - Privacy Criteria Related to Use, Retention, and Disposal",
               "Service": "aws",
    -          "Soc_Type": "manual"
    +          "Type": "manual"
             }
           ],
           "Checks": []
    @@ -770,7 +770,7 @@
               "ItemId": "p_5_1",
               "Section": "P5.0 - Privacy Criteria Related to Access",
               "Service": "aws",
    -          "Soc_Type": "manual"
    +          "Type": "manual"
             }
           ],
           "Checks": []
    @@ -784,7 +784,7 @@
               "ItemId": "p_5_2",
               "Section": "P5.0 - Privacy Criteria Related to Access",
               "Service": "aws",
    -          "Soc_Type": "manual"
    +          "Type": "manual"
             }
           ],
           "Checks": []
    @@ -798,7 +798,7 @@
               "ItemId": "p_6_1",
               "Section": "P6.0 - Privacy Criteria Related to Disclosure and Notification",
               "Service": "aws",
    -          "Soc_Type": "manual"
    +          "Type": "manual"
             }
           ],
           "Checks": []
    @@ -812,7 +812,7 @@
               "ItemId": "p_6_2",
               "Section": "P6.0 - Privacy Criteria Related to Disclosure and Notification",
               "Service": "aws",
    -          "Soc_Type": "manual"
    +          "Type": "manual"
             }
           ],
           "Checks": []
    @@ -826,7 +826,7 @@
               "ItemId": "p_6_3",
               "Section": "P6.0 - Privacy Criteria Related to Disclosure and Notification",
               "Service": "aws",
    -          "Soc_Type": "manual"
    +          "Type": "manual"
             }
           ],
           "Checks": []
    @@ -840,7 +840,7 @@
               "ItemId": "p_6_4",
               "Section": "P6.0 - Privacy Criteria Related to Disclosure and Notification",
               "Service": "aws",
    -          "Soc_Type": "manual"
    +          "Type": "manual"
             }
           ],
           "Checks": []
    @@ -854,7 +854,7 @@
               "ItemId": "p_6_5",
               "Section": "P6.0 - Privacy Criteria Related to Disclosure and Notification",
               "Service": "aws",
    -          "Soc_Type": "manual"
    +          "Type": "manual"
             }
           ],
           "Checks": []
    @@ -868,7 +868,7 @@
               "ItemId": "p_6_6",
               "Section": "P6.0 - Privacy Criteria Related to Disclosure and Notification",
               "Service": "aws",
    -          "Soc_Type": "manual"
    +          "Type": "manual"
             }
           ],
           "Checks": []
    @@ -882,7 +882,7 @@
               "ItemId": "p_6_7",
               "Section": "P6.0 - Privacy Criteria Related to Disclosure and Notification",
               "Service": "aws",
    -          "Soc_Type": "manual"
    +          "Type": "manual"
             }
           ],
           "Checks": []
    @@ -896,7 +896,7 @@
               "ItemId": "p_7_1",
               "Section": "P7.0 - Privacy Criteria Related to Quality",
               "Service": "aws",
    -          "Soc_Type": "manual"
    +          "Type": "manual"
             }
           ],
           "Checks": []
    @@ -910,7 +910,7 @@
               "ItemId": "p_8_1",
               "Section": "P8.0 - Privacy Criteria Related to Monitoring and Enforcement",
               "Service": "aws",
    -          "Soc_Type": "manual"
    +          "Type": "manual"
             }
           ],
           "Checks": []
    diff --git a/prowler/config/aws_mutelist.yaml b/prowler/config/aws_mutelist.yaml
    index cc42ec728e3..facda6b51d9 100644
    --- a/prowler/config/aws_mutelist.yaml
    +++ b/prowler/config/aws_mutelist.yaml
    @@ -38,6 +38,9 @@ Mute List:
                 - "aws-controltower-ReadOnlyExecutionRole"
                 - "AWSControlTower_VPCFlowLogsRole"
                 - "AWSControlTowerExecution"
    +            - "AWSAFTAdmin"
    +            - "AWSAFTExecution"
    +            - "AWSAFTService"
             "iam_policy_*":
               Regions:
                 - "*"
    diff --git a/prowler/config/config.py b/prowler/config/config.py
    index b7e66ecf949..3975d59dece 100644
    --- a/prowler/config/config.py
    +++ b/prowler/config/config.py
    @@ -11,7 +11,7 @@
     
     timestamp = datetime.today()
     timestamp_utc = datetime.now(timezone.utc).replace(tzinfo=timezone.utc)
    -prowler_version = "3.11.3"
    +prowler_version = "3.14.0"
     html_logo_url = "https://github.com/prowler-cloud/prowler/"
     html_logo_img = "https://user-images.githubusercontent.com/3985464/113734260-7ba06900-96fb-11eb-82bc-d4f68a1e2710.png"
     square_logo_img = "https://user-images.githubusercontent.com/38561120/235905862-9ece5bd7-9aa3-4e48-807a-3a9035eb8bfb.png"
    @@ -23,6 +23,7 @@
     banner_color = "\033[1;92m"
     
     finding_statuses = ["PASS", "FAIL", "MANUAL"]
    +valid_severities = ["critical", "high", "medium", "low", "informational"]
     
     # Compliance
     actual_directory = pathlib.Path(os.path.dirname(os.path.realpath(__file__)))
    diff --git a/prowler/config/config.yaml b/prowler/config/config.yaml
    index 57f3c643f37..64518dbc855 100644
    --- a/prowler/config/config.yaml
    +++ b/prowler/config/config.yaml
    @@ -1,11 +1,10 @@
     # AWS Configuration
     aws:
    -
       # AWS Global Configuration
    -  # aws.mute_non_default_regions --> Set to True to mute failed findings in non-default regions for GuardDuty, SecurityHub, DRS and Config
    -  mute_non_default_regions: False
    -  # If you want to mute failed findings only in specific regions, create a file with the following syntax and run it with `prowler aws -w mutelist.yaml`:
    -  # Mute List:
    +  # aws.allowlist_non_default_regions --> Set to True to allowlist failed findings in non-default regions for AccessAnalyzer, GuardDuty, SecurityHub, DRS and Config
    +  allowlist_non_default_regions: False
    +  # If you want to allowlist/mute failed findings only in specific regions, create a file with the following syntax and run it with `prowler aws -w allowlist.yaml`:
    +  # Allowlist:
       #  Accounts:
       #   "*":
       #     Checks:
    @@ -69,8 +68,8 @@ aws:
       # AWS Organizations
       # organizations_scp_check_deny_regions
       # organizations_enabled_regions: [
    -  #   'eu-central-1',
    -  #   'eu-west-1',
    +  #   "eu-central-1",
    +  #   "eu-west-1",
       #   "us-east-1"
       # ]
       organizations_enabled_regions: []
    @@ -89,13 +88,23 @@ aws:
     
     # Azure Configuration
     azure:
    +  # Azure Network Configuration
    +  # azure.network_public_ip_shodan
    +  shodan_api_key: null
    +
    +  # Azure App Service
    +  # azure.app_ensure_php_version_is_latest
    +  php_latest_version: "8.2"
    +  # azure.app_ensure_python_version_is_latest
    +  python_latest_version: "3.12"
    +  # azure.app_ensure_java_version_is_latest
    +  java_latest_version: "17"
     
     # GCP Configuration
     gcp:
     
     # Kubernetes Configuration
     kubernetes:
    -
       # Kubernetes API Server
       # apiserver_audit_log_maxbackup_set
       audit_log_maxbackup: 10
    diff --git a/prowler/lib/banner.py b/prowler/lib/banner.py
    index a60edc98010..6a2f47a5d54 100644
    --- a/prowler/lib/banner.py
    +++ b/prowler/lib/banner.py
    @@ -4,7 +4,7 @@
     
     
     def print_banner(args):
    -    banner = f"""{banner_color}                         _
    +    banner = rf"""{banner_color}                         _
      _ __  _ __ _____      _| | ___ _ __
     | '_ \| '__/ _ \ \ /\ / / |/ _ \ '__|
     | |_) | | | (_) \ V  V /| |  __/ |
    diff --git a/prowler/lib/check/check.py b/prowler/lib/check/check.py
    index 58911ba620e..80d983e58dc 100644
    --- a/prowler/lib/check/check.py
    +++ b/prowler/lib/check/check.py
    @@ -68,9 +68,9 @@ def bulk_load_compliance_frameworks(provider: str) -> dict:
                             # cis_v1.4_aws.json --> cis_v1.4_aws
                             compliance_framework_name = filename.split(".json")[0]
                             # Store the compliance info
    -                        bulk_compliance_frameworks[
    -                            compliance_framework_name
    -                        ] = load_compliance_framework(file_path)
    +                        bulk_compliance_frameworks[compliance_framework_name] = (
    +                            load_compliance_framework(file_path)
    +                        )
         except Exception as e:
             logger.error(f"{e.__class__.__name__}[{e.__traceback__.tb_lineno}] -- {e}")
     
    @@ -108,14 +108,20 @@ def exclude_services_to_run(
     
     # Load checks from checklist.json
     def parse_checks_from_file(input_file: str, provider: str) -> set:
    -    checks_to_execute = set()
    -    with open_file(input_file) as f:
    -        json_file = parse_json_file(f)
    +    """parse_checks_from_file returns a set of checks read from the given file"""
    +    try:
    +        checks_to_execute = set()
    +        with open_file(input_file) as f:
    +            json_file = parse_json_file(f)
     
    -    for check_name in json_file[provider]:
    -        checks_to_execute.add(check_name)
    +        for check_name in json_file[provider]:
    +            checks_to_execute.add(check_name)
     
    -    return checks_to_execute
    +        return checks_to_execute
    +    except Exception as error:
    +        logger.error(
    +            f"{error.__class__.__name__}[{error.__traceback__.tb_lineno}] -- {error}"
    +        )
     
     
     # Load checks from custom folder
    @@ -212,7 +218,7 @@ def print_categories(categories: set):
         singular_string = f"\nThere is {Fore.YELLOW}{categories_num}{Style.RESET_ALL} available category.\n"
     
         message = plural_string if categories_num > 1 else singular_string
    -    for category in categories:
    +    for category in sorted(categories):
             print(f"- {category}")
     
         print(message)
    @@ -241,7 +247,7 @@ def print_compliance_frameworks(
         singular_string = f"\nThere is {Fore.YELLOW}{frameworks_num}{Style.RESET_ALL} available Compliance Framework.\n"
         message = plural_string if frameworks_num > 1 else singular_string
     
    -    for framework in bulk_compliance_frameworks.keys():
    +    for framework in sorted(bulk_compliance_frameworks.keys()):
             print(f"- {framework}")
     
         print(message)
    @@ -311,7 +317,7 @@ def print_checks(
     def parse_checks_from_compliance_framework(
         compliance_frameworks: list, bulk_compliance_frameworks: dict
     ) -> list:
    -    """Parse checks from compliance frameworks specification"""
    +    """parse_checks_from_compliance_framework returns a set of checks from the given compliance_frameworks"""
         checks_to_execute = set()
         try:
             for framework in compliance_frameworks:
    @@ -611,22 +617,32 @@ def update_audit_metadata(
             )
     
     
    -def recover_checks_from_service(service_list: list, provider: str) -> list:
    -    checks = set()
    -    service_list = [
    -        "awslambda" if service == "lambda" else service for service in service_list
    -    ]
    -    for service in service_list:
    -        modules = recover_checks_from_provider(provider, service)
    -        if not modules:
    -            logger.error(f"Service '{service}' does not have checks.")
    +def recover_checks_from_service(service_list: list, provider: str) -> set:
    +    """
    +    Recover all checks from the selected provider and service
     
    -        else:
    -            for check_module in modules:
    -                # Recover check name and module name from import path
    -                # Format: "providers.{provider}.services.{service}.{check_name}.{check_name}"
    -                check_name = check_module[0].split(".")[-1]
    -                # If the service is present in the group list passed as parameters
    -                # if service_name in group_list: checks_from_arn.add(check_name)
    -                checks.add(check_name)
    -    return checks
    +    Returns a set of checks from the given services
    +    """
    +    try:
    +        checks = set()
    +        service_list = [
    +            "awslambda" if service == "lambda" else service for service in service_list
    +        ]
    +        for service in service_list:
    +            service_checks = recover_checks_from_provider(provider, service)
    +            if not service_checks:
    +                logger.error(f"Service '{service}' does not have checks.")
    +
    +            else:
    +                for check in service_checks:
    +                    # Recover check name and module name from import path
    +                    # Format: "providers.{provider}.services.{service}.{check_name}.{check_name}"
    +                    check_name = check[0].split(".")[-1]
    +                    # If the service is present in the group list passed as parameters
    +                    # if service_name in group_list: checks_from_arn.add(check_name)
    +                    checks.add(check_name)
    +        return checks
    +    except Exception as error:
    +        logger.error(
    +            f"{error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}"
    +        )
    diff --git a/prowler/lib/check/checks_loader.py b/prowler/lib/check/checks_loader.py
    index c82a601e1f9..6936f8c1cd0 100644
    --- a/prowler/lib/check/checks_loader.py
    +++ b/prowler/lib/check/checks_loader.py
    @@ -1,5 +1,6 @@
     from colorama import Fore, Style
     
    +from prowler.config.config import valid_severities
     from prowler.lib.check.check import (
         parse_checks_from_compliance_framework,
         parse_checks_from_file,
    @@ -10,7 +11,6 @@
     
     
     # Generate the list of checks to execute
    -# PENDING Test for this function
     def load_checks_to_execute(
         bulk_checks_metadata: dict,
         bulk_compliance_frameworks: dict,
    @@ -22,84 +22,110 @@ def load_checks_to_execute(
         categories: set,
         provider: str,
     ) -> set:
    -    """Generate the list of checks to execute based on the cloud provider and input arguments specified"""
    -    checks_to_execute = set()
    -
    -    # Handle if there are checks passed using -c/--checks
    -    if check_list:
    -        for check_name in check_list:
    -            checks_to_execute.add(check_name)
    -
    -    # Handle if there are some severities passed using --severity
    -    elif severities:
    -        for check in bulk_checks_metadata:
    -            # Check check's severity
    -            if bulk_checks_metadata[check].Severity in severities:
    -                checks_to_execute.add(check)
    -        if service_list:
    -            checks_to_execute = (
    -                recover_checks_from_service(service_list, provider) & checks_to_execute
    -            )
    +    """Generate the list of checks to execute based on the cloud provider and the input arguments given"""
    +    try:
    +        # Local subsets
    +        checks_to_execute = set()
    +        check_aliases = {}
    +        check_severities = {key: [] for key in valid_severities}
    +        check_categories = {}
    +
    +        # First, loop over the bulk_checks_metadata to extract the needed subsets
    +        for check, metadata in bulk_checks_metadata.items():
    +            # Aliases
    +            for alias in metadata.CheckAliases:
    +                if alias not in check_aliases:
    +                    check_aliases[alias] = []
    +                check_aliases[alias].append(check)
    +
    +            # Severities
    +            if metadata.Severity:
    +                check_severities[metadata.Severity].append(check)
    +
    +            # Categories
    +            for category in metadata.Categories:
    +                if category not in check_categories:
    +                    check_categories[category] = []
    +                check_categories[category].append(check)
    +
    +        # Handle if there are checks passed using -c/--checks
    +        if check_list:
    +            for check_name in check_list:
    +                checks_to_execute.add(check_name)
    +
    +        # Handle if there are some severities passed using --severity
    +        elif severities:
    +            for severity in severities:
    +                checks_to_execute.update(check_severities[severity])
    +
    +            if service_list:
    +                checks_to_execute = (
    +                    recover_checks_from_service(service_list, provider)
    +                    & checks_to_execute
    +                )
     
    -    # Handle if there are checks passed using -C/--checks-file
    -    elif checks_file:
    -        try:
    +        # Handle if there are checks passed using -C/--checks-file
    +        elif checks_file:
                 checks_to_execute = parse_checks_from_file(checks_file, provider)
    -        except Exception as e:
    -            logger.error(f"{e.__class__.__name__}[{e.__traceback__.tb_lineno}] -- {e}")
     
    -    # Handle if there are services passed using -s/--services
    -    elif service_list:
    -        checks_to_execute = recover_checks_from_service(service_list, provider)
    +        # Handle if there are services passed using -s/--services
    +        elif service_list:
    +            checks_to_execute = recover_checks_from_service(service_list, provider)
     
    -    # Handle if there are compliance frameworks passed using --compliance
    -    elif compliance_frameworks:
    -        try:
    +        # Handle if there are compliance frameworks passed using --compliance
    +        elif compliance_frameworks:
                 checks_to_execute = parse_checks_from_compliance_framework(
                     compliance_frameworks, bulk_compliance_frameworks
                 )
    -        except Exception as e:
    -            logger.error(f"{e.__class__.__name__}[{e.__traceback__.tb_lineno}] -- {e}")
    -
    -    # Handle if there are categories passed using --categories
    -    elif categories:
    -        for cat in categories:
    -            for check in bulk_checks_metadata:
    -                # Check check's categories
    -                if cat in bulk_checks_metadata[check].Categories:
    -                    checks_to_execute.add(check)
    -
    -    # If there are no checks passed as argument
    -    else:
    -        try:
    +
    +        # Handle if there are categories passed using --categories
    +        elif categories:
    +            for category in categories:
    +                checks_to_execute.update(check_categories[category])
    +
    +        # If there are no checks passed as argument
    +        else:
                 # Get all check modules to run with the specific provider
                 checks = recover_checks_from_provider(provider)
    -        except Exception as e:
    -            logger.error(f"{e.__class__.__name__}[{e.__traceback__.tb_lineno}] -- {e}")
    -        else:
    +
                 for check_info in checks:
                     # Recover check name from import path (last part)
                     # Format: "providers.{provider}.services.{service}.{check_name}.{check_name}"
                     check_name = check_info[0]
                     checks_to_execute.add(check_name)
     
    -    # Get Check Aliases mapping
    -    check_aliases = {}
    -    for check, metadata in bulk_checks_metadata.items():
    -        for alias in metadata.CheckAliases:
    -            check_aliases[alias] = check
    +        # Check Aliases
    +        checks_to_execute = update_checks_to_execute_with_aliases(
    +            checks_to_execute, check_aliases
    +        )
     
    -    # Verify if any input check is an alias of another check
    -    for input_check in checks_to_execute:
    -        if (
    -            input_check in check_aliases
    -            and check_aliases[input_check] not in checks_to_execute
    -        ):
    -            # Remove input check name and add the real one
    -            checks_to_execute.remove(input_check)
    -            checks_to_execute.add(check_aliases[input_check])
    -            print(
    -                f"\nUsing alias {Fore.YELLOW}{input_check}{Style.RESET_ALL} for check {Fore.YELLOW}{check_aliases[input_check]}{Style.RESET_ALL}...\n"
    -            )
    +        return checks_to_execute
     
    -    return checks_to_execute
    +    except Exception as error:
    +        logger.error(
    +            f"{error.__class__.__name__}[{error.__traceback__.tb_lineno}] -- {error}"
    +        )
    +
    +
    +def update_checks_to_execute_with_aliases(
    +    checks_to_execute: set, check_aliases: dict
    +) -> set:
    +    """update_checks_to_execute_with_aliases returns the checks_to_execute updated using the check aliases."""
    +    # Verify if any input check is an alias of another check
    +    try:
    +        new_checks_to_execute = checks_to_execute.copy()
    +        for input_check in checks_to_execute:
    +            if input_check in check_aliases:
    +                # Remove input check name and add the real one
    +                new_checks_to_execute.remove(input_check)
    +                for alias in check_aliases[input_check]:
    +                    if alias not in new_checks_to_execute:
    +                        new_checks_to_execute.add(alias)
    +                        print(
    +                            f"\nUsing alias {Fore.YELLOW}{input_check}{Style.RESET_ALL} for check {Fore.YELLOW}{alias}{Style.RESET_ALL}..."
    +                        )
    +        return new_checks_to_execute
    +    except Exception as error:
    +        logger.error(
    +            f"{error.__class__.__name__}[{error.__traceback__.tb_lineno}] -- {error}"
    +        )
    diff --git a/prowler/lib/check/compliance_models.py b/prowler/lib/check/compliance_models.py
    index 29c9e0ea5fd..607ef887213 100644
    --- a/prowler/lib/check/compliance_models.py
    +++ b/prowler/lib/check/compliance_models.py
    @@ -52,12 +52,12 @@ class ENS_Requirement_Attribute(BaseModel):
     class Generic_Compliance_Requirement_Attribute(BaseModel):
         """Generic Compliance Requirement Attribute"""
     
    -    ItemId: str
    +    ItemId: Optional[str]
         Section: Optional[str]
         SubSection: Optional[str]
         SubGroup: Optional[str]
    -    Service: str
    -    Soc_Type: Optional[str]
    +    Service: Optional[str]
    +    Type: Optional[str]
     
     
     class CIS_Requirement_Attribute_Profile(str):
    diff --git a/prowler/lib/check/custom_checks_metadata.py b/prowler/lib/check/custom_checks_metadata.py
    index 87acb97ab58..f12ce0c26f5 100644
    --- a/prowler/lib/check/custom_checks_metadata.py
    +++ b/prowler/lib/check/custom_checks_metadata.py
    @@ -3,9 +3,9 @@
     import yaml
     from jsonschema import validate
     
    +from prowler.config.config import valid_severities
     from prowler.lib.logger import logger
     
    -valid_severities = ["critical", "high", "medium", "low", "informational"]
     custom_checks_metadata_schema = {
         "type": "object",
         "properties": {
    diff --git a/prowler/lib/cli/parser.py b/prowler/lib/cli/parser.py
    index d13b63ed1ed..881c9395e0b 100644
    --- a/prowler/lib/cli/parser.py
    +++ b/prowler/lib/cli/parser.py
    @@ -8,6 +8,7 @@
         default_config_file_path,
         default_output_directory,
         finding_statuses,
    +    valid_severities,
     )
     from prowler.providers.common.arguments import (
         init_providers_parser,
    @@ -225,8 +226,8 @@ def __init_checks_parser__(self):
             common_checks_parser.add_argument(
                 "--severity",
                 nargs="+",
    -            help="List of severities to be executed [informational, low, medium, high, critical]",
    -            choices=["informational", "low", "medium", "high", "critical"],
    +            help=f"List of severities to be executed {valid_severities}",
    +            choices=valid_severities,
             )
             group.add_argument(
                 "--compliance",
    diff --git a/prowler/lib/outputs/compliance/compliance.py b/prowler/lib/outputs/compliance/compliance.py
    index 5c53eb2b284..0f8fe74ab6a 100644
    --- a/prowler/lib/outputs/compliance/compliance.py
    +++ b/prowler/lib/outputs/compliance/compliance.py
    @@ -187,7 +187,8 @@ def display_compliance_table(
                                             "Bajo": 0,
                                         }
                                     if finding.status == "FAIL":
    -                                    fail_count += 1
    +                                    if attribute.Tipo != "recomendacion":
    +                                        fail_count += 1
                                         marcos[marco_categoria][
                                             "Estado"
                                         ] = f"{Fore.RED}NO CUMPLE{Style.RESET_ALL}"
    diff --git a/prowler/lib/outputs/compliance/generic.py b/prowler/lib/outputs/compliance/generic.py
    index f71621aa824..abe250101e2 100644
    --- a/prowler/lib/outputs/compliance/generic.py
    +++ b/prowler/lib/outputs/compliance/generic.py
    @@ -42,7 +42,7 @@ def write_compliance_row_generic(
                     Requirements_Attributes_SubSection=attribute.SubSection,
                     Requirements_Attributes_SubGroup=attribute.SubGroup,
                     Requirements_Attributes_Service=attribute.Service,
    -                Requirements_Attributes_Soc_Type=attribute.Soc_Type,
    +                Requirements_Attributes_Type=attribute.Type,
                     Status=finding.status,
                     StatusExtended=finding.status_extended,
                     ResourceId=finding.resource_id,
    diff --git a/prowler/lib/outputs/html.py b/prowler/lib/outputs/html.py
    index 104f0c12f84..bddf3779006 100644
    --- a/prowler/lib/outputs/html.py
    +++ b/prowler/lib/outputs/html.py
    @@ -408,7 +408,7 @@ def get_azure_html_assessment_summary(audit_info):
             if isinstance(audit_info, Azure_Audit_Info):
                 printed_subscriptions = []
                 for key, value in audit_info.identity.subscriptions.items():
    -                intermediate = key + " : " + value
    +                intermediate = f"{key} : {value}"
                     printed_subscriptions.append(intermediate)
     
                 # check if identity is str(coming from SP) or dict(coming from browser or)
    diff --git a/prowler/lib/outputs/json.py b/prowler/lib/outputs/json.py
    index 7a5ab71d496..ac822bb9048 100644
    --- a/prowler/lib/outputs/json.py
    +++ b/prowler/lib/outputs/json.py
    @@ -51,9 +51,9 @@ def fill_json_asff(finding_output, audit_info, finding, output_options):
             finding_output.GeneratorId = "prowler-" + finding.check_metadata.CheckID
             finding_output.AwsAccountId = audit_info.audited_account
             finding_output.Types = finding.check_metadata.CheckType
    -        finding_output.FirstObservedAt = (
    -            finding_output.UpdatedAt
    -        ) = finding_output.CreatedAt = timestamp_utc.strftime("%Y-%m-%dT%H:%M:%SZ")
    +        finding_output.FirstObservedAt = finding_output.UpdatedAt = (
    +            finding_output.CreatedAt
    +        ) = timestamp_utc.strftime("%Y-%m-%dT%H:%M:%SZ")
             finding_output.Severity = Severity(
                 Label=finding.check_metadata.Severity.upper()
             )
    diff --git a/prowler/lib/outputs/models.py b/prowler/lib/outputs/models.py
    index 94561830b06..9dd747dd78a 100644
    --- a/prowler/lib/outputs/models.py
    +++ b/prowler/lib/outputs/models.py
    @@ -64,9 +64,9 @@ def generate_provider_output_csv(
                 data["resource_name"] = finding.resource_name
                 data["subscription"] = finding.subscription
                 data["tenant_domain"] = audit_info.identity.domain
    -            data[
    -                "finding_unique_id"
    -            ] = f"prowler-{provider}-{finding.check_metadata.CheckID}-{finding.subscription}-{finding.resource_id}"
    +            data["finding_unique_id"] = (
    +                f"prowler-{provider}-{finding.check_metadata.CheckID}-{finding.subscription}-{finding.resource_id}"
    +            )
                 data["compliance"] = unroll_dict(
                     get_check_compliance(finding, provider, output_options)
                 )
    @@ -77,9 +77,9 @@ def generate_provider_output_csv(
                 data["resource_name"] = finding.resource_name
                 data["project_id"] = finding.project_id
                 data["location"] = finding.location.lower()
    -            data[
    -                "finding_unique_id"
    -            ] = f"prowler-{provider}-{finding.check_metadata.CheckID}-{finding.project_id}-{finding.resource_id}"
    +            data["finding_unique_id"] = (
    +                f"prowler-{provider}-{finding.check_metadata.CheckID}-{finding.project_id}-{finding.resource_id}"
    +            )
                 data["compliance"] = unroll_dict(
                     get_check_compliance(finding, provider, output_options)
                 )
    @@ -89,9 +89,9 @@ def generate_provider_output_csv(
                 data["resource_id"] = finding.resource_id
                 data["resource_name"] = finding.resource_name
                 data["namespace"] = finding.namespace
    -            data[
    -                "finding_unique_id"
    -            ] = f"prowler-{provider}-{finding.check_metadata.CheckID}-{finding.namespace}-{finding.resource_id}"
    +            data["finding_unique_id"] = (
    +                f"prowler-{provider}-{finding.check_metadata.CheckID}-{finding.namespace}-{finding.resource_id}"
    +            )
                 data["compliance"] = unroll_dict(
                     get_check_compliance(finding, provider, output_options)
                 )
    @@ -103,9 +103,9 @@ def generate_provider_output_csv(
                 data["region"] = finding.region
                 data["resource_id"] = finding.resource_id
                 data["resource_arn"] = finding.resource_arn
    -            data[
    -                "finding_unique_id"
    -            ] = f"prowler-{provider}-{finding.check_metadata.CheckID}-{audit_info.audited_account}-{finding.region}-{finding.resource_id}"
    +            data["finding_unique_id"] = (
    +                f"prowler-{provider}-{finding.check_metadata.CheckID}-{audit_info.audited_account}-{finding.region}-{finding.resource_id}"
    +            )
                 data["compliance"] = unroll_dict(
                     get_check_compliance(finding, provider, output_options)
                 )
    @@ -658,8 +658,8 @@ class Check_Output_CSV_Generic_Compliance(BaseModel):
         Requirements_Attributes_Section: Optional[str]
         Requirements_Attributes_SubSection: Optional[str]
         Requirements_Attributes_SubGroup: Optional[str]
    -    Requirements_Attributes_Service: str
    -    Requirements_Attributes_Soc_Type: Optional[str]
    +    Requirements_Attributes_Service: Optional[str]
    +    Requirements_Attributes_Type: Optional[str]
         Status: str
         StatusExtended: str
         ResourceId: str
    diff --git a/prowler/lib/outputs/slack.py b/prowler/lib/outputs/slack.py
    index 1c8a8ad63d9..d972d372d14 100644
    --- a/prowler/lib/outputs/slack.py
    +++ b/prowler/lib/outputs/slack.py
    @@ -13,7 +13,7 @@ def send_slack_message(token, channel, stats, provider, audit_info):
             response = client.chat_postMessage(
                 username="Prowler",
                 icon_url=square_logo_img,
    -            channel="#" + channel,
    +            channel=f"#{channel}",
                 blocks=create_message_blocks(identity, logo, stats),
             )
             return response
    @@ -35,7 +35,7 @@ def create_message_identity(provider, audit_info):
             elif provider == "azure":
                 printed_subscriptions = []
                 for key, value in audit_info.identity.subscriptions.items():
    -                intermediate = "- *" + key + ": " + value + "*\n"
    +                intermediate = f"- *{key}: {value}*\n"
                     printed_subscriptions.append(intermediate)
                 identity = f"Azure Subscriptions:\n{''.join(printed_subscriptions)}"
                 logo = azure_logo
    @@ -66,14 +66,14 @@ def create_message_blocks(identity, logo, stats):
                     "type": "section",
                     "text": {
                         "type": "mrkdwn",
    -                    "text": f"\n:white_check_mark: *{stats['total_pass']} Passed findings* ({round(stats['total_pass']/stats['findings_count']*100,2)}%)\n",
    +                    "text": f"\n:white_check_mark: *{stats['total_pass']} Passed findings* ({round(stats['total_pass'] / stats['findings_count'] * 100 , 2)}%)\n",
                     },
                 },
                 {
                     "type": "section",
                     "text": {
                         "type": "mrkdwn",
    -                    "text": f"\n:x: *{stats['total_fail']} Failed findings* ({round(stats['total_fail']/stats['findings_count']*100,2)}%)\n ",
    +                    "text": f"\n:x: *{stats['total_fail']} Failed findings* ({round(stats['total_fail'] / stats['findings_count'] * 100 , 2)}%)\n ",
                     },
                 },
                 {
    diff --git a/prowler/lib/outputs/summary_table.py b/prowler/lib/outputs/summary_table.py
    index 6e121018ad4..51a12c85c63 100644
    --- a/prowler/lib/outputs/summary_table.py
    +++ b/prowler/lib/outputs/summary_table.py
    @@ -99,8 +99,8 @@ def display_summary_table(
                 print("\nOverview Results:")
                 overview_table = [
                     [
    -                    f"{Fore.RED}{round(fail_count/len(findings)*100, 2)}% ({fail_count}) Failed{Style.RESET_ALL}",
    -                    f"{Fore.GREEN}{round(pass_count/len(findings)*100, 2)}% ({pass_count}) Passed{Style.RESET_ALL}",
    +                    f"{Fore.RED}{round(fail_count / len(findings) * 100, 2)}% ({fail_count}) Failed{Style.RESET_ALL}",
    +                    f"{Fore.GREEN}{round(pass_count / len(findings) * 100, 2)}% ({pass_count}) Passed{Style.RESET_ALL}",
                     ]
                 ]
                 print(tabulate(overview_table, tablefmt="rounded_grid"))
    diff --git a/prowler/providers/aws/aws_provider.py b/prowler/providers/aws/aws_provider.py
    index 85d21d1bfa9..94c2ff1645c 100644
    --- a/prowler/providers/aws/aws_provider.py
    +++ b/prowler/providers/aws/aws_provider.py
    @@ -10,7 +10,10 @@
     from prowler.lib.check.check import list_modules, recover_checks_from_service
     from prowler.lib.logger import logger
     from prowler.lib.utils.utils import open_file, parse_json_file
    -from prowler.providers.aws.config import AWS_STS_GLOBAL_ENDPOINT_REGION
    +from prowler.providers.aws.config import (
    +    AWS_STS_GLOBAL_ENDPOINT_REGION,
    +    ROLE_SESSION_NAME,
    +)
     from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info, AWSAssumeRole
     from prowler.providers.aws.lib.credentials.credentials import create_sts_session
     
    @@ -113,9 +116,15 @@ def assume_role(
         sts_endpoint_region: str = None,
     ) -> dict:
         try:
    +        role_session_name = (
    +            assumed_role_info.role_session_name
    +            if assumed_role_info.role_session_name
    +            else ROLE_SESSION_NAME
    +        )
    +
             assume_role_arguments = {
                 "RoleArn": assumed_role_info.role_arn,
    -            "RoleSessionName": "ProwlerAsessmentSession",
    +            "RoleSessionName": role_session_name,
                 "DurationSeconds": assumed_role_info.session_duration,
             }
     
    @@ -152,23 +161,31 @@ def input_role_mfa_token_and_code() -> tuple[str]:
     
     
     def generate_regional_clients(
    -    service: str, audit_info: AWS_Audit_Info, global_service: bool = False
    +    service: str,
    +    audit_info: AWS_Audit_Info,
     ) -> dict:
    +    """generate_regional_clients returns a dict with the following format for the given service:
    +
    +    Example:
    +        {"eu-west-1": boto3_service_client}
    +    """
         try:
             regional_clients = {}
             service_regions = get_available_aws_service_regions(service, audit_info)
    -        # Check if it is global service to gather only one region
    -        if global_service:
    -            if service_regions:
    -                if audit_info.profile_region in service_regions:
    -                    service_regions = [audit_info.profile_region]
    -                service_regions = service_regions[:1]
    -        for region in service_regions:
    +
    +        # Get the regions enabled for the account and get the intersection with the service available regions
    +        if audit_info.enabled_regions:
    +            enabled_regions = service_regions.intersection(audit_info.enabled_regions)
    +        else:
    +            enabled_regions = service_regions
    +
    +        for region in enabled_regions:
                 regional_client = audit_info.audit_session.client(
                     service, region_name=region, config=audit_info.session_config
                 )
                 regional_client.region = region
                 regional_clients[region] = regional_client
    +
             return regional_clients
         except Exception as error:
             logger.error(
    @@ -176,6 +193,26 @@ def generate_regional_clients(
             )
     
     
    +def get_aws_enabled_regions(audit_info: AWS_Audit_Info) -> set:
    +    """get_aws_enabled_regions returns a set of enabled AWS regions"""
    +
    +    # EC2 Client to check enabled regions
    +    service = "ec2"
    +    default_region = get_default_region(service, audit_info)
    +    ec2_client = audit_info.audit_session.client(service, region_name=default_region)
    +
    +    enabled_regions = set()
    +    try:
    +        # With AllRegions=False we only get the enabled regions for the account
    +        for region in ec2_client.describe_regions(AllRegions=False).get("Regions", []):
    +            enabled_regions.add(region.get("RegionName"))
    +    except Exception as error:
    +        logger.warning(
    +            f"{error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}"
    +        )
    +    return enabled_regions
    +
    +
     def get_aws_available_regions():
         try:
             actual_directory = pathlib.Path(os.path.dirname(os.path.realpath(__file__)))
    @@ -216,6 +253,8 @@ def get_checks_from_input_arn(audit_resources: list, provider: str) -> set:
                         service = "efs"
                     elif service == "logs":
                         service = "cloudwatch"
    +                elif service == "cognito":
    +                    service = "cognito-idp"
                     # Check if Prowler has checks in service
                     try:
                         list_modules(provider, service)
    @@ -267,17 +306,18 @@ def get_regions_from_audit_resources(audit_resources: list) -> set:
         return audited_regions
     
     
    -def get_available_aws_service_regions(service: str, audit_info: AWS_Audit_Info) -> list:
    +def get_available_aws_service_regions(service: str, audit_info: AWS_Audit_Info) -> set:
         # Get json locally
         actual_directory = pathlib.Path(os.path.dirname(os.path.realpath(__file__)))
         with open_file(f"{actual_directory}/{aws_services_json_file}") as f:
             data = parse_json_file(f)
    -    # Check if it is a subservice
    -    json_regions = data["services"][service]["regions"][audit_info.audited_partition]
    -    if audit_info.audited_regions:  # Check for input aws audit_info.audited_regions
    -        regions = list(
    -            set(json_regions).intersection(audit_info.audited_regions)
    -        )  # Get common regions between input and json
    +    json_regions = set(
    +        data["services"][service]["regions"][audit_info.audited_partition]
    +    )
    +    # Check for input aws audit_info.audited_regions
    +    if audit_info.audited_regions:
    +        # Get common regions between input and json
    +        regions = json_regions.intersection(audit_info.audited_regions)
         else:  # Get all regions from json of the service and partition
             regions = json_regions
         return regions
    diff --git a/prowler/providers/aws/aws_provider_new.py b/prowler/providers/aws/aws_provider_new.py
    index cbd4afb635b..8ff08acff84 100644
    --- a/prowler/providers/aws/aws_provider_new.py
    +++ b/prowler/providers/aws/aws_provider_new.py
    @@ -360,7 +360,7 @@ def print_credentials(self):
     
     AWS-CLI Profile: {Fore.YELLOW}[{profile}]{Style.RESET_ALL} AWS Filter Region: {Fore.YELLOW}[{regions}]{Style.RESET_ALL}
     AWS Account: {Fore.YELLOW}[{self.identity.account}]{Style.RESET_ALL} UserId: {Fore.YELLOW}[{self.identity.user_id}]{Style.RESET_ALL}
    -Caller Identity ARN: {Fore.YELLOW}[{ self.identity.identity_arn}]{Style.RESET_ALL}
    +Caller Identity ARN: {Fore.YELLOW}[{self.identity.identity_arn}]{Style.RESET_ALL}
     """
             # If -A is set, print Assumed Role ARN
             if self.assumed_role.assumed_role_info.role_arn is not None:
    @@ -596,9 +596,9 @@ def __assume_role__(
     
                 # Set the info to assume the role from the partition, account and role name
                 if self.assumed_role.assumed_role_info.external_id:
    -                assume_role_arguments[
    -                    "ExternalId"
    -                ] = self.assumed_role.assumed_role_info.external_id
    +                assume_role_arguments["ExternalId"] = (
    +                    self.assumed_role.assumed_role_info.external_id
    +                )
     
                 if self.assumed_role.assumed_role_info.mfa_enabled:
                     mfa_ARN, mfa_TOTP = self.__input_role_mfa_token_and_code__()
    diff --git a/prowler/providers/aws/aws_regions_by_service.json b/prowler/providers/aws/aws_regions_by_service.json
    index 96b19504e2f..ac2fff7df70 100644
    --- a/prowler/providers/aws/aws_regions_by_service.json
    +++ b/prowler/providers/aws/aws_regions_by_service.json
    @@ -15,6 +15,7 @@
               "ap-southeast-3",
               "ap-southeast-4",
               "ca-central-1",
    +          "ca-west-1",
               "eu-central-1",
               "eu-central-2",
               "eu-north-1",
    @@ -95,6 +96,7 @@
               "ap-southeast-3",
               "ap-southeast-4",
               "ca-central-1",
    +          "ca-west-1",
               "eu-central-1",
               "eu-central-2",
               "eu-north-1",
    @@ -137,6 +139,7 @@
               "ap-southeast-3",
               "ap-southeast-4",
               "ca-central-1",
    +          "ca-west-1",
               "eu-central-1",
               "eu-central-2",
               "eu-north-1",
    @@ -319,6 +322,7 @@
               "ap-southeast-3",
               "ap-southeast-4",
               "ca-central-1",
    +          "ca-west-1",
               "eu-central-1",
               "eu-central-2",
               "eu-north-1",
    @@ -397,6 +401,7 @@
               "eu-west-1",
               "eu-west-2",
               "eu-west-3",
    +          "me-central-1",
               "me-south-1",
               "sa-east-1",
               "us-east-1",
    @@ -429,6 +434,7 @@
               "ap-southeast-3",
               "ap-southeast-4",
               "ca-central-1",
    +          "ca-west-1",
               "eu-central-1",
               "eu-central-2",
               "eu-north-1",
    @@ -471,6 +477,7 @@
               "ap-southeast-3",
               "ap-southeast-4",
               "ca-central-1",
    +          "ca-west-1",
               "eu-central-1",
               "eu-central-2",
               "eu-north-1",
    @@ -715,6 +722,7 @@
               "ap-southeast-1",
               "ap-southeast-2",
               "ap-southeast-3",
    +          "ap-southeast-4",
               "ca-central-1",
               "eu-central-1",
               "eu-central-2",
    @@ -724,6 +732,7 @@
               "eu-west-1",
               "eu-west-2",
               "eu-west-3",
    +          "il-central-1",
               "me-central-1",
               "me-south-1",
               "sa-east-1",
    @@ -776,6 +785,7 @@
               "ap-southeast-3",
               "ap-southeast-4",
               "ca-central-1",
    +          "ca-west-1",
               "eu-central-1",
               "eu-central-2",
               "eu-north-1",
    @@ -818,6 +828,7 @@
               "ap-southeast-3",
               "ap-southeast-4",
               "ca-central-1",
    +          "ca-west-1",
               "eu-central-1",
               "eu-central-2",
               "eu-north-1",
    @@ -939,6 +950,7 @@
               "ap-southeast-3",
               "ap-southeast-4",
               "ca-central-1",
    +          "ca-west-1",
               "eu-central-1",
               "eu-central-2",
               "eu-north-1",
    @@ -981,6 +993,7 @@
               "ap-southeast-3",
               "ap-southeast-4",
               "ca-central-1",
    +          "ca-west-1",
               "eu-central-1",
               "eu-central-2",
               "eu-north-1",
    @@ -1034,6 +1047,7 @@
               "ap-southeast-3",
               "ap-southeast-4",
               "ca-central-1",
    +          "ca-west-1",
               "eu-central-1",
               "eu-central-2",
               "eu-north-1",
    @@ -1061,6 +1075,17 @@
             ]
           }
         },
    +    "b2bi": {
    +      "regions": {
    +        "aws": [
    +          "us-east-1",
    +          "us-east-2",
    +          "us-west-2"
    +        ],
    +        "aws-cn": [],
    +        "aws-us-gov": []
    +      }
    +    },
         "backup": {
           "regions": {
             "aws": [
    @@ -1191,6 +1216,7 @@
               "ap-southeast-3",
               "ap-southeast-4",
               "ca-central-1",
    +          "ca-west-1",
               "eu-central-1",
               "eu-central-2",
               "eu-north-1",
    @@ -1228,7 +1254,9 @@
               "us-west-2"
             ],
             "aws-cn": [],
    -        "aws-us-gov": []
    +        "aws-us-gov": [
    +          "us-gov-west-1"
    +        ]
           }
         },
         "billingconductor": {
    @@ -1463,6 +1491,25 @@
             "aws-us-gov": []
           }
         },
    +    "cleanroomsml": {
    +      "regions": {
    +        "aws": [
    +          "ap-northeast-1",
    +          "ap-northeast-2",
    +          "ap-southeast-1",
    +          "ap-southeast-2",
    +          "eu-central-1",
    +          "eu-north-1",
    +          "eu-west-1",
    +          "eu-west-2",
    +          "us-east-1",
    +          "us-east-2",
    +          "us-west-2"
    +        ],
    +        "aws-cn": [],
    +        "aws-us-gov": []
    +      }
    +    },
         "cloud9": {
           "regions": {
             "aws": [
    @@ -1481,6 +1528,7 @@
               "eu-west-1",
               "eu-west-2",
               "eu-west-3",
    +          "il-central-1",
               "me-south-1",
               "sa-east-1",
               "us-east-1",
    @@ -1507,6 +1555,7 @@
               "ap-southeast-3",
               "ap-southeast-4",
               "ca-central-1",
    +          "ca-west-1",
               "eu-central-1",
               "eu-central-2",
               "eu-north-1",
    @@ -1632,6 +1681,7 @@
               "ap-southeast-3",
               "ap-southeast-4",
               "ca-central-1",
    +          "ca-west-1",
               "eu-central-1",
               "eu-central-2",
               "eu-north-1",
    @@ -1674,6 +1724,7 @@
               "ap-southeast-3",
               "ap-southeast-4",
               "ca-central-1",
    +          "ca-west-1",
               "eu-central-1",
               "eu-central-2",
               "eu-north-1",
    @@ -1707,6 +1758,7 @@
               "ap-northeast-2",
               "ap-northeast-3",
               "ap-south-1",
    +          "ap-south-2",
               "ap-southeast-1",
               "ap-southeast-2",
               "ap-southeast-3",
    @@ -1801,6 +1853,7 @@
               "ap-southeast-3",
               "ap-southeast-4",
               "ca-central-1",
    +          "ca-west-1",
               "eu-central-1",
               "eu-central-2",
               "eu-north-1",
    @@ -1830,7 +1883,9 @@
         },
         "cloudtrail-data": {
           "regions": {
    -        "aws": [],
    +        "aws": [
    +          "me-central-1"
    +        ],
             "aws-cn": [],
             "aws-us-gov": []
           }
    @@ -1850,6 +1905,7 @@
               "ap-southeast-3",
               "ap-southeast-4",
               "ca-central-1",
    +          "ca-west-1",
               "eu-central-1",
               "eu-central-2",
               "eu-north-1",
    @@ -2004,6 +2060,7 @@
               "ap-southeast-3",
               "ap-southeast-4",
               "ca-central-1",
    +          "ca-west-1",
               "eu-central-1",
               "eu-central-2",
               "eu-north-1",
    @@ -2183,15 +2240,58 @@
             "aws-us-gov": []
           }
         },
    +    "codewhisperer": {
    +      "regions": {
    +        "aws": [
    +          "us-east-1"
    +        ],
    +        "aws-cn": [],
    +        "aws-us-gov": []
    +      }
    +    },
    +    "cognito": {
    +      "regions": {
    +        "aws": [
    +          "af-south-1",
    +          "ap-northeast-1",
    +          "ap-northeast-2",
    +          "ap-northeast-3",
    +          "ap-south-1",
    +          "ap-southeast-1",
    +          "ap-southeast-2",
    +          "ap-southeast-3",
    +          "ca-central-1",
    +          "eu-central-1",
    +          "eu-north-1",
    +          "eu-south-1",
    +          "eu-west-1",
    +          "eu-west-2",
    +          "eu-west-3",
    +          "il-central-1",
    +          "me-south-1",
    +          "sa-east-1",
    +          "us-east-1",
    +          "us-east-2",
    +          "us-west-1",
    +          "us-west-2"
    +        ],
    +        "aws-cn": [],
    +        "aws-us-gov": [
    +          "us-gov-west-1"
    +        ]
    +      }
    +    },
         "cognito-identity": {
           "regions": {
             "aws": [
    +          "af-south-1",
               "ap-northeast-1",
               "ap-northeast-2",
               "ap-northeast-3",
               "ap-south-1",
               "ap-southeast-1",
               "ap-southeast-2",
    +          "ap-southeast-3",
               "ca-central-1",
               "eu-central-1",
               "eu-north-1",
    @@ -2218,12 +2318,14 @@
         "cognito-idp": {
           "regions": {
             "aws": [
    +          "af-south-1",
               "ap-northeast-1",
               "ap-northeast-2",
               "ap-northeast-3",
               "ap-south-1",
               "ap-southeast-1",
               "ap-southeast-2",
    +          "ap-southeast-3",
               "ca-central-1",
               "eu-central-1",
               "eu-north-1",
    @@ -2360,6 +2462,7 @@
               "ap-southeast-3",
               "ap-southeast-4",
               "ca-central-1",
    +          "ca-west-1",
               "eu-central-1",
               "eu-central-2",
               "eu-north-1",
    @@ -2513,6 +2616,15 @@
             ]
           }
         },
    +    "cost-optimization-hub": {
    +      "regions": {
    +        "aws": [
    +          "us-east-1"
    +        ],
    +        "aws-cn": [],
    +        "aws-us-gov": []
    +      }
    +    },
         "costexplorer": {
           "regions": {
             "aws": [
    @@ -2632,6 +2744,7 @@
               "ap-southeast-3",
               "ap-southeast-4",
               "ca-central-1",
    +          "ca-west-1",
               "eu-central-1",
               "eu-central-2",
               "eu-north-1",
    @@ -2663,12 +2776,14 @@
           "regions": {
             "aws": [
               "ap-northeast-1",
    +          "ap-northeast-2",
               "ap-southeast-1",
               "ap-southeast-2",
               "ca-central-1",
               "eu-central-1",
               "eu-north-1",
               "eu-west-1",
    +          "eu-west-2",
               "sa-east-1",
               "us-east-1",
               "us-east-2",
    @@ -2711,17 +2826,6 @@
             "aws-us-gov": []
           }
         },
    -    "deeplens": {
    -      "regions": {
    -        "aws": [
    -          "ap-northeast-1",
    -          "eu-central-1",
    -          "us-east-1"
    -        ],
    -        "aws-cn": [],
    -        "aws-us-gov": []
    -      }
    -    },
         "deepracer": {
           "regions": {
             "aws": [
    @@ -2811,6 +2915,7 @@
               "ap-southeast-3",
               "ap-southeast-4",
               "ca-central-1",
    +          "ca-west-1",
               "eu-central-1",
               "eu-central-2",
               "eu-north-1",
    @@ -2868,6 +2973,7 @@
               "ap-southeast-3",
               "ap-southeast-4",
               "ca-central-1",
    +          "ca-west-1",
               "eu-central-1",
               "eu-central-2",
               "eu-north-1",
    @@ -2876,6 +2982,7 @@
               "eu-west-1",
               "eu-west-2",
               "eu-west-3",
    +          "il-central-1",
               "me-central-1",
               "me-south-1",
               "sa-east-1",
    @@ -2909,6 +3016,7 @@
               "ap-southeast-3",
               "ap-southeast-4",
               "ca-central-1",
    +          "ca-west-1",
               "eu-central-1",
               "eu-central-2",
               "eu-north-1",
    @@ -3000,7 +3108,10 @@
               "us-west-2"
             ],
             "aws-cn": [],
    -        "aws-us-gov": []
    +        "aws-us-gov": [
    +          "us-gov-east-1",
    +          "us-gov-west-1"
    +        ]
           }
         },
         "ds": {
    @@ -3018,6 +3129,7 @@
               "ap-southeast-3",
               "ap-southeast-4",
               "ca-central-1",
    +          "ca-west-1",
               "eu-central-1",
               "eu-central-2",
               "eu-north-1",
    @@ -3060,6 +3172,7 @@
               "ap-southeast-3",
               "ap-southeast-4",
               "ca-central-1",
    +          "ca-west-1",
               "eu-central-1",
               "eu-central-2",
               "eu-north-1",
    @@ -3102,6 +3215,7 @@
               "ap-southeast-3",
               "ap-southeast-4",
               "ca-central-1",
    +          "ca-west-1",
               "eu-central-1",
               "eu-central-2",
               "eu-north-1",
    @@ -3144,6 +3258,7 @@
               "ap-southeast-3",
               "ap-southeast-4",
               "ca-central-1",
    +          "ca-west-1",
               "eu-central-1",
               "eu-central-2",
               "eu-north-1",
    @@ -3186,6 +3301,7 @@
               "ap-southeast-3",
               "ap-southeast-4",
               "ca-central-1",
    +          "ca-west-1",
               "eu-central-1",
               "eu-central-2",
               "eu-north-1",
    @@ -3228,6 +3344,7 @@
               "ap-southeast-3",
               "ap-southeast-4",
               "ca-central-1",
    +          "ca-west-1",
               "eu-central-1",
               "eu-central-2",
               "eu-north-1",
    @@ -3280,6 +3397,7 @@
               "ap-southeast-3",
               "ap-southeast-4",
               "ca-central-1",
    +          "ca-west-1",
               "eu-central-1",
               "eu-central-2",
               "eu-north-1",
    @@ -3322,6 +3440,7 @@
               "ap-southeast-3",
               "ap-southeast-4",
               "ca-central-1",
    +          "ca-west-1",
               "eu-central-1",
               "eu-central-2",
               "eu-north-1",
    @@ -3364,6 +3483,7 @@
               "ap-southeast-3",
               "ap-southeast-4",
               "ca-central-1",
    +          "ca-west-1",
               "eu-central-1",
               "eu-central-2",
               "eu-north-1",
    @@ -3391,6 +3511,43 @@
             ]
           }
         },
    +    "eks-auth": {
    +      "regions": {
    +        "aws": [
    +          "af-south-1",
    +          "ap-east-1",
    +          "ap-northeast-1",
    +          "ap-northeast-2",
    +          "ap-northeast-3",
    +          "ap-south-1",
    +          "ap-south-2",
    +          "ap-southeast-1",
    +          "ap-southeast-2",
    +          "ap-southeast-3",
    +          "ap-southeast-4",
    +          "ca-central-1",
    +          "ca-west-1",
    +          "eu-central-1",
    +          "eu-central-2",
    +          "eu-north-1",
    +          "eu-south-1",
    +          "eu-south-2",
    +          "eu-west-1",
    +          "eu-west-2",
    +          "eu-west-3",
    +          "il-central-1",
    +          "me-central-1",
    +          "me-south-1",
    +          "sa-east-1",
    +          "us-east-1",
    +          "us-east-2",
    +          "us-west-1",
    +          "us-west-2"
    +        ],
    +        "aws-cn": [],
    +        "aws-us-gov": []
    +      }
    +    },
         "elastic-inference": {
           "regions": {
             "aws": [
    @@ -3420,6 +3577,7 @@
               "ap-southeast-3",
               "ap-southeast-4",
               "ca-central-1",
    +          "ca-west-1",
               "eu-central-1",
               "eu-central-2",
               "eu-north-1",
    @@ -3515,6 +3673,7 @@
               "ap-southeast-3",
               "ap-southeast-4",
               "ca-central-1",
    +          "ca-west-1",
               "eu-central-1",
               "eu-central-2",
               "eu-north-1",
    @@ -3557,6 +3716,7 @@
               "ap-southeast-3",
               "ap-southeast-4",
               "ca-central-1",
    +          "ca-west-1",
               "eu-central-1",
               "eu-central-2",
               "eu-north-1",
    @@ -3599,6 +3759,7 @@
               "ap-southeast-3",
               "ap-southeast-4",
               "ca-central-1",
    +          "ca-west-1",
               "eu-central-1",
               "eu-central-2",
               "eu-north-1",
    @@ -3679,9 +3840,11 @@
               "eu-central-1",
               "eu-north-1",
               "eu-south-1",
    +          "eu-south-2",
               "eu-west-1",
               "eu-west-2",
               "eu-west-3",
    +          "me-central-1",
               "me-south-1",
               "sa-east-1",
               "us-east-1",
    @@ -3693,7 +3856,10 @@
               "cn-north-1",
               "cn-northwest-1"
             ],
    -        "aws-us-gov": []
    +        "aws-us-gov": [
    +          "us-gov-east-1",
    +          "us-gov-west-1"
    +        ]
           }
         },
         "entityresolution": {
    @@ -3729,6 +3895,7 @@
               "ap-southeast-3",
               "ap-southeast-4",
               "ca-central-1",
    +          "ca-west-1",
               "eu-central-1",
               "eu-central-2",
               "eu-north-1",
    @@ -3771,6 +3938,7 @@
               "ap-southeast-3",
               "ap-southeast-4",
               "ca-central-1",
    +          "ca-west-1",
               "eu-central-1",
               "eu-central-2",
               "eu-north-1",
    @@ -3813,6 +3981,7 @@
               "ap-southeast-3",
               "ap-southeast-4",
               "ca-central-1",
    +          "ca-west-1",
               "eu-central-1",
               "eu-central-2",
               "eu-north-1",
    @@ -3872,6 +4041,7 @@
               "ap-southeast-3",
               "ap-southeast-4",
               "ca-central-1",
    +          "ca-west-1",
               "eu-central-1",
               "eu-central-2",
               "eu-north-1",
    @@ -3963,6 +4133,7 @@
               "ap-southeast-3",
               "ap-southeast-4",
               "ca-central-1",
    +          "ca-west-1",
               "eu-central-1",
               "eu-central-2",
               "eu-north-1",
    @@ -4271,19 +4442,30 @@
         "fsx-openzfs": {
           "regions": {
             "aws": [
    +          "af-south-1",
               "ap-east-1",
               "ap-northeast-1",
               "ap-northeast-2",
    +          "ap-northeast-3",
               "ap-south-1",
    +          "ap-south-2",
               "ap-southeast-1",
               "ap-southeast-2",
    +          "ap-southeast-3",
               "ca-central-1",
               "eu-central-1",
               "eu-north-1",
    +          "eu-south-1",
               "eu-west-1",
               "eu-west-2",
    +          "eu-west-3",
    +          "il-central-1",
    +          "me-central-1",
    +          "me-south-1",
    +          "sa-east-1",
               "us-east-1",
               "us-east-2",
    +          "us-west-1",
               "us-west-2"
             ],
             "aws-cn": [],
    @@ -4451,6 +4633,7 @@
               "ap-southeast-3",
               "ap-southeast-4",
               "ca-central-1",
    +          "ca-west-1",
               "eu-central-1",
               "eu-central-2",
               "eu-north-1",
    @@ -4622,6 +4805,7 @@
               "ap-southeast-3",
               "ap-southeast-4",
               "ca-central-1",
    +          "ca-west-1",
               "eu-central-1",
               "eu-central-2",
               "eu-north-1",
    @@ -4670,6 +4854,7 @@
               "eu-west-2",
               "eu-west-3",
               "il-central-1",
    +          "me-central-1",
               "me-south-1",
               "sa-east-1",
               "us-east-1",
    @@ -4699,6 +4884,7 @@
               "ap-southeast-1",
               "ap-southeast-2",
               "ap-southeast-3",
    +          "ap-southeast-4",
               "ca-central-1",
               "eu-central-1",
               "eu-central-2",
    @@ -4708,6 +4894,7 @@
               "eu-west-2",
               "eu-west-3",
               "il-central-1",
    +          "me-central-1",
               "me-south-1",
               "sa-east-1",
               "us-east-1",
    @@ -4740,6 +4927,7 @@
               "ap-southeast-3",
               "ap-southeast-4",
               "ca-central-1",
    +          "ca-west-1",
               "eu-central-1",
               "eu-central-2",
               "eu-north-1",
    @@ -4806,7 +4994,7 @@
             ]
           }
         },
    -    "inspector2": {
    +    "inspector-scan": {
           "regions": {
             "aws": [
               "af-south-1",
    @@ -4840,6 +5028,43 @@
             ]
           }
         },
    +    "inspector2": {
    +      "regions": {
    +        "aws": [
    +          "af-south-1",
    +          "ap-east-1",
    +          "ap-northeast-1",
    +          "ap-northeast-2",
    +          "ap-northeast-3",
    +          "ap-south-1",
    +          "ap-southeast-1",
    +          "ap-southeast-2",
    +          "ap-southeast-3",
    +          "ca-central-1",
    +          "eu-central-1",
    +          "eu-central-2",
    +          "eu-north-1",
    +          "eu-south-1",
    +          "eu-west-1",
    +          "eu-west-2",
    +          "eu-west-3",
    +          "me-south-1",
    +          "sa-east-1",
    +          "us-east-1",
    +          "us-east-2",
    +          "us-west-1",
    +          "us-west-2"
    +        ],
    +        "aws-cn": [
    +          "cn-north-1",
    +          "cn-northwest-1"
    +        ],
    +        "aws-us-gov": [
    +          "us-gov-east-1",
    +          "us-gov-west-1"
    +        ]
    +      }
    +    },
         "internetmonitor": {
           "regions": {
             "aws": [
    @@ -5218,7 +5443,9 @@
               "us-east-1",
               "us-west-2"
             ],
    -        "aws-cn": [],
    +        "aws-cn": [
    +          "cn-north-1"
    +        ],
             "aws-us-gov": [
               "us-gov-west-1"
             ]
    @@ -5402,6 +5629,7 @@
               "ap-southeast-3",
               "ap-southeast-4",
               "ca-central-1",
    +          "ca-west-1",
               "eu-central-1",
               "eu-central-2",
               "eu-north-1",
    @@ -5512,6 +5740,7 @@
               "ap-southeast-3",
               "ap-southeast-4",
               "ca-central-1",
    +          "ca-west-1",
               "eu-central-1",
               "eu-central-2",
               "eu-north-1",
    @@ -5596,6 +5825,7 @@
               "ap-southeast-3",
               "ap-southeast-4",
               "ca-central-1",
    +          "ca-west-1",
               "eu-central-1",
               "eu-central-2",
               "eu-north-1",
    @@ -5636,10 +5866,13 @@
               "ap-southeast-1",
               "ap-southeast-2",
               "ap-southeast-3",
    +          "ap-southeast-4",
               "ca-central-1",
               "eu-central-1",
    +          "eu-central-2",
               "eu-north-1",
               "eu-south-1",
    +          "eu-south-2",
               "eu-west-1",
               "eu-west-2",
               "eu-west-3",
    @@ -5674,10 +5907,13 @@
               "ap-southeast-1",
               "ap-southeast-2",
               "ap-southeast-3",
    +          "ap-southeast-4",
               "ca-central-1",
               "eu-central-1",
    +          "eu-central-2",
               "eu-north-1",
               "eu-south-1",
    +          "eu-south-2",
               "eu-west-1",
               "eu-west-2",
               "eu-west-3",
    @@ -5812,6 +6048,7 @@
               "ap-southeast-3",
               "ap-southeast-4",
               "ca-central-1",
    +          "ca-west-1",
               "eu-central-1",
               "eu-central-2",
               "eu-north-1",
    @@ -5912,6 +6149,7 @@
               "ap-southeast-3",
               "ap-southeast-4",
               "ca-central-1",
    +          "ca-west-1",
               "eu-central-1",
               "eu-central-2",
               "eu-north-1",
    @@ -6011,16 +6249,22 @@
         "m2": {
           "regions": {
             "aws": [
    +          "af-south-1",
               "ap-northeast-1",
               "ap-northeast-2",
    +          "ap-northeast-3",
               "ap-south-1",
               "ap-southeast-1",
               "ap-southeast-2",
               "ca-central-1",
               "eu-central-1",
    +          "eu-north-1",
    +          "eu-south-1",
    +          "eu-south-2",
               "eu-west-1",
               "eu-west-2",
               "eu-west-3",
    +          "il-central-1",
               "sa-east-1",
               "us-east-1",
               "us-east-2",
    @@ -6175,6 +6419,7 @@
               "ap-southeast-3",
               "ap-southeast-4",
               "ca-central-1",
    +          "ca-west-1",
               "eu-central-1",
               "eu-central-2",
               "eu-north-1",
    @@ -6270,14 +6515,17 @@
               "ap-northeast-2",
               "ap-northeast-3",
               "ap-south-1",
    +          "ap-south-2",
               "ap-southeast-1",
               "ap-southeast-2",
    +          "ap-southeast-4",
               "ca-central-1",
               "eu-central-1",
               "eu-north-1",
               "eu-west-1",
               "eu-west-2",
               "eu-west-3",
    +          "me-central-1",
               "sa-east-1",
               "us-east-1",
               "us-east-2",
    @@ -6328,6 +6576,7 @@
               "ap-south-1",
               "ap-southeast-1",
               "ap-southeast-2",
    +          "ap-southeast-4",
               "ca-central-1",
               "eu-central-1",
               "eu-north-1",
    @@ -6352,6 +6601,7 @@
               "ap-south-1",
               "ap-southeast-1",
               "ap-southeast-2",
    +          "ap-southeast-4",
               "ca-central-1",
               "eu-central-1",
               "eu-north-1",
    @@ -6377,6 +6627,7 @@
               "ap-south-1",
               "ap-southeast-1",
               "ap-southeast-2",
    +          "ap-southeast-4",
               "ca-central-1",
               "eu-central-1",
               "eu-north-1",
    @@ -6398,9 +6649,12 @@
             "aws": [
               "ap-northeast-1",
               "ap-northeast-2",
    +          "ap-northeast-3",
               "ap-south-1",
               "ap-southeast-1",
               "ap-southeast-2",
    +          "ap-southeast-4",
    +          "ca-central-1",
               "eu-central-1",
               "eu-north-1",
               "eu-west-1",
    @@ -6708,6 +6962,7 @@
               "eu-west-1",
               "eu-west-2",
               "eu-west-3",
    +          "il-central-1",
               "me-central-1",
               "me-south-1",
               "sa-east-1",
    @@ -6796,6 +7051,21 @@
             ]
           }
         },
    +    "neptune-graph": {
    +      "regions": {
    +        "aws": [
    +          "ap-northeast-1",
    +          "ap-southeast-1",
    +          "eu-central-1",
    +          "eu-west-1",
    +          "us-east-1",
    +          "us-east-2",
    +          "us-west-2"
    +        ],
    +        "aws-cn": [],
    +        "aws-us-gov": []
    +      }
    +    },
         "network-firewall": {
           "regions": {
             "aws": [
    @@ -6867,6 +7137,32 @@
             ]
           }
         },
    +    "networkmonitor": {
    +      "regions": {
    +        "aws": [
    +          "ap-east-1",
    +          "ap-northeast-1",
    +          "ap-northeast-2",
    +          "ap-south-1",
    +          "ap-southeast-1",
    +          "ap-southeast-2",
    +          "ca-central-1",
    +          "eu-central-1",
    +          "eu-north-1",
    +          "eu-west-1",
    +          "eu-west-2",
    +          "eu-west-3",
    +          "me-south-1",
    +          "sa-east-1",
    +          "us-east-1",
    +          "us-east-2",
    +          "us-west-1",
    +          "us-west-2"
    +        ],
    +        "aws-cn": [],
    +        "aws-us-gov": []
    +      }
    +    },
         "nimble": {
           "regions": {
             "aws": [
    @@ -6937,6 +7233,7 @@
               "ap-southeast-3",
               "ap-southeast-4",
               "ca-central-1",
    +          "ca-west-1",
               "eu-central-1",
               "eu-central-2",
               "eu-north-1",
    @@ -6991,6 +7288,7 @@
               "ap-southeast-3",
               "ap-southeast-4",
               "ca-central-1",
    +          "ca-west-1",
               "eu-central-1",
               "eu-central-2",
               "eu-north-1",
    @@ -7123,6 +7421,7 @@
               "ap-southeast-3",
               "ap-southeast-4",
               "ca-central-1",
    +          "ca-west-1",
               "eu-central-1",
               "eu-central-2",
               "eu-north-1",
    @@ -7160,8 +7459,10 @@
               "ap-southeast-2",
               "ca-central-1",
               "eu-central-1",
    +          "eu-north-1",
               "eu-west-1",
               "eu-west-2",
    +          "sa-east-1",
               "us-east-1",
               "us-east-2",
               "us-west-1",
    @@ -7224,6 +7525,7 @@
           "regions": {
             "aws": [
               "us-east-1",
    +          "us-east-2",
               "us-west-2"
             ],
             "aws-cn": [],
    @@ -7301,6 +7603,7 @@
               "ap-southeast-3",
               "ap-southeast-4",
               "ca-central-1",
    +          "ca-west-1",
               "eu-central-1",
               "eu-central-2",
               "eu-north-1",
    @@ -7381,19 +7684,37 @@
         "pinpoint-sms-voice-v2": {
           "regions": {
             "aws": [
    +          "af-south-1",
               "ap-northeast-1",
    +          "ap-northeast-2",
    +          "ap-northeast-3",
               "ap-south-1",
    +          "ap-south-2",
               "ap-southeast-1",
               "ap-southeast-2",
    +          "ap-southeast-3",
    +          "ap-southeast-4",
               "ca-central-1",
               "eu-central-1",
    +          "eu-central-2",
    +          "eu-north-1",
    +          "eu-south-1",
    +          "eu-south-2",
               "eu-west-1",
               "eu-west-2",
    +          "eu-west-3",
    +          "il-central-1",
    +          "me-central-1",
    +          "me-south-1",
    +          "sa-east-1",
               "us-east-1",
    +          "us-east-2",
    +          "us-west-1",
               "us-west-2"
             ],
             "aws-cn": [],
             "aws-us-gov": [
    +          "us-gov-east-1",
               "us-gov-west-1"
             ]
           }
    @@ -7428,7 +7749,10 @@
               "us-west-1",
               "us-west-2"
             ],
    -        "aws-cn": [],
    +        "aws-cn": [
    +          "cn-north-1",
    +          "cn-northwest-1"
    +        ],
             "aws-us-gov": []
           }
         },
    @@ -7492,6 +7816,7 @@
               "ap-southeast-3",
               "ap-southeast-4",
               "ca-central-1",
    +          "ca-west-1",
               "eu-central-1",
               "eu-central-2",
               "eu-north-1",
    @@ -7606,7 +7931,9 @@
               "us-east-2",
               "us-west-2"
             ],
    -        "aws-cn": [],
    +        "aws-cn": [
    +          "cn-north-1"
    +        ],
             "aws-us-gov": [
               "us-gov-west-1"
             ]
    @@ -7627,6 +7954,7 @@
               "ap-southeast-3",
               "ap-southeast-4",
               "ca-central-1",
    +          "ca-west-1",
               "eu-central-1",
               "eu-central-2",
               "eu-north-1",
    @@ -7669,6 +7997,7 @@
               "ap-southeast-3",
               "ap-southeast-4",
               "ca-central-1",
    +          "ca-west-1",
               "eu-central-1",
               "eu-central-2",
               "eu-north-1",
    @@ -7711,6 +8040,7 @@
               "ap-southeast-3",
               "ap-southeast-4",
               "ca-central-1",
    +          "ca-west-1",
               "eu-central-1",
               "eu-central-2",
               "eu-north-1",
    @@ -7784,6 +8114,7 @@
               "ap-southeast-3",
               "ap-southeast-4",
               "ca-central-1",
    +          "ca-west-1",
               "eu-central-1",
               "eu-central-2",
               "eu-north-1",
    @@ -7826,6 +8157,7 @@
               "ap-southeast-3",
               "ap-southeast-4",
               "ca-central-1",
    +          "ca-west-1",
               "eu-central-1",
               "eu-central-2",
               "eu-north-1",
    @@ -7853,6 +8185,23 @@
             ]
           }
         },
    +    "redshift-serverless": {
    +      "regions": {
    +        "aws": [
    +          "ap-south-1",
    +          "ca-central-1",
    +          "eu-west-3",
    +          "us-east-1",
    +          "us-east-2",
    +          "us-west-1",
    +          "us-west-2"
    +        ],
    +        "aws-cn": [
    +          "cn-north-1"
    +        ],
    +        "aws-us-gov": []
    +      }
    +    },
         "rekognition": {
           "regions": {
             "aws": [
    @@ -7877,6 +8226,16 @@
             ]
           }
         },
    +    "repostspace": {
    +      "regions": {
    +        "aws": [
    +          "eu-central-1",
    +          "us-west-2"
    +        ],
    +        "aws-cn": [],
    +        "aws-us-gov": []
    +      }
    +    },
         "resiliencehub": {
           "regions": {
             "aws": [
    @@ -7950,6 +8309,7 @@
               "ap-southeast-3",
               "ap-southeast-4",
               "ca-central-1",
    +          "ca-west-1",
               "eu-central-1",
               "eu-central-2",
               "eu-north-1",
    @@ -7992,6 +8352,7 @@
               "ap-southeast-3",
               "ap-southeast-4",
               "ca-central-1",
    +          "ca-west-1",
               "eu-central-1",
               "eu-central-2",
               "eu-north-1",
    @@ -8045,16 +8406,22 @@
               "ap-northeast-2",
               "ap-northeast-3",
               "ap-south-1",
    +          "ap-south-2",
               "ap-southeast-1",
               "ap-southeast-2",
               "ap-southeast-3",
    +          "ap-southeast-4",
               "ca-central-1",
               "eu-central-1",
    +          "eu-central-2",
               "eu-north-1",
               "eu-south-1",
    +          "eu-south-2",
               "eu-west-1",
               "eu-west-2",
               "eu-west-3",
    +          "il-central-1",
    +          "me-central-1",
               "me-south-1",
               "sa-east-1",
               "us-east-1",
    @@ -8103,7 +8470,10 @@
               "us-west-2"
             ],
             "aws-cn": [],
    -        "aws-us-gov": []
    +        "aws-us-gov": [
    +          "us-gov-east-1",
    +          "us-gov-west-1"
    +        ]
           }
         },
         "route53": {
    @@ -8121,45 +8491,7 @@
               "ap-southeast-3",
               "ap-southeast-4",
               "ca-central-1",
    -          "eu-central-1",
    -          "eu-central-2",
    -          "eu-north-1",
    -          "eu-south-1",
    -          "eu-south-2",
    -          "eu-west-1",
    -          "eu-west-2",
    -          "eu-west-3",
    -          "il-central-1",
    -          "me-central-1",
    -          "me-south-1",
    -          "sa-east-1",
    -          "us-east-1",
    -          "us-east-2",
    -          "us-west-1",
    -          "us-west-2"
    -        ],
    -        "aws-cn": [
    -          "cn-north-1",
    -          "cn-northwest-1"
    -        ],
    -        "aws-us-gov": []
    -      }
    -    },
    -    "route53-application-recovery-controller": {
    -      "regions": {
    -        "aws": [
    -          "af-south-1",
    -          "ap-east-1",
    -          "ap-northeast-1",
    -          "ap-northeast-2",
    -          "ap-northeast-3",
    -          "ap-south-1",
    -          "ap-south-2",
    -          "ap-southeast-1",
    -          "ap-southeast-2",
    -          "ap-southeast-3",
    -          "ap-southeast-4",
    -          "ca-central-1",
    +          "ca-west-1",
               "eu-central-1",
               "eu-central-2",
               "eu-north-1",
    @@ -8217,6 +8549,7 @@
               "ap-southeast-3",
               "ap-southeast-4",
               "ca-central-1",
    +          "ca-west-1",
               "eu-central-1",
               "eu-central-2",
               "eu-north-1",
    @@ -8277,6 +8610,7 @@
               "ap-southeast-3",
               "ap-southeast-4",
               "ca-central-1",
    +          "ca-west-1",
               "eu-central-1",
               "eu-central-2",
               "eu-north-1",
    @@ -8384,6 +8718,7 @@
               "ap-southeast-3",
               "ap-southeast-4",
               "ca-central-1",
    +          "ca-west-1",
               "eu-central-1",
               "eu-central-2",
               "eu-north-1",
    @@ -8427,6 +8762,7 @@
               "eu-central-1",
               "eu-north-1",
               "eu-south-1",
    +          "eu-south-2",
               "eu-west-1",
               "eu-west-2",
               "eu-west-3",
    @@ -8468,6 +8804,7 @@
               "ap-southeast-3",
               "ap-southeast-4",
               "ca-central-1",
    +          "ca-west-1",
               "eu-central-1",
               "eu-central-2",
               "eu-north-1",
    @@ -8510,6 +8847,7 @@
               "ap-southeast-3",
               "ap-southeast-4",
               "ca-central-1",
    +          "ca-west-1",
               "eu-central-1",
               "eu-central-2",
               "eu-north-1",
    @@ -8552,6 +8890,7 @@
               "ap-southeast-3",
               "ap-southeast-4",
               "ca-central-1",
    +          "ca-west-1",
               "eu-central-1",
               "eu-central-2",
               "eu-north-1",
    @@ -8681,6 +9020,7 @@
               "ap-southeast-3",
               "ap-southeast-4",
               "ca-central-1",
    +          "ca-west-1",
               "eu-central-1",
               "eu-central-2",
               "eu-north-1",
    @@ -8723,6 +9063,7 @@
               "ap-southeast-3",
               "ap-southeast-4",
               "ca-central-1",
    +          "ca-west-1",
               "eu-central-1",
               "eu-central-2",
               "eu-north-1",
    @@ -8822,6 +9163,7 @@
               "ap-southeast-3",
               "ap-southeast-4",
               "ca-central-1",
    +          "ca-west-1",
               "eu-central-1",
               "eu-central-2",
               "eu-north-1",
    @@ -8906,6 +9248,7 @@
               "ap-southeast-3",
               "ap-southeast-4",
               "ca-central-1",
    +          "ca-west-1",
               "eu-central-1",
               "eu-central-2",
               "eu-north-1",
    @@ -8945,6 +9288,7 @@
               "ap-southeast-3",
               "ap-southeast-4",
               "ca-central-1",
    +          "ca-west-1",
               "eu-central-1",
               "eu-central-2",
               "eu-north-1",
    @@ -9231,6 +9575,7 @@
               "ap-southeast-3",
               "ap-southeast-4",
               "ca-central-1",
    +          "ca-west-1",
               "eu-central-1",
               "eu-central-2",
               "eu-north-1",
    @@ -9273,6 +9618,7 @@
               "ap-southeast-3",
               "ap-southeast-4",
               "ca-central-1",
    +          "ca-west-1",
               "eu-central-1",
               "eu-central-2",
               "eu-north-1",
    @@ -9315,6 +9661,7 @@
               "ap-southeast-3",
               "ap-southeast-4",
               "ca-central-1",
    +          "ca-west-1",
               "eu-central-1",
               "eu-central-2",
               "eu-north-1",
    @@ -9441,6 +9788,7 @@
               "eu-west-2",
               "eu-west-3",
               "il-central-1",
    +          "me-central-1",
               "me-south-1",
               "sa-east-1",
               "us-east-1",
    @@ -9473,6 +9821,7 @@
               "ap-southeast-3",
               "ap-southeast-4",
               "ca-central-1",
    +          "ca-west-1",
               "eu-central-1",
               "eu-central-2",
               "eu-north-1",
    @@ -9557,6 +9906,7 @@
               "ap-southeast-3",
               "ap-southeast-4",
               "ca-central-1",
    +          "ca-west-1",
               "eu-central-1",
               "eu-central-2",
               "eu-north-1",
    @@ -9584,6 +9934,17 @@
             ]
           }
         },
    +    "supplychain": {
    +      "regions": {
    +        "aws": [
    +          "eu-central-1",
    +          "us-east-1",
    +          "us-west-2"
    +        ],
    +        "aws-cn": [],
    +        "aws-us-gov": []
    +      }
    +    },
         "support": {
           "regions": {
             "aws": [
    @@ -9599,6 +9960,7 @@
               "ap-southeast-3",
               "ap-southeast-4",
               "ca-central-1",
    +          "ca-west-1",
               "eu-central-1",
               "eu-central-2",
               "eu-north-1",
    @@ -9652,6 +10014,7 @@
               "ap-southeast-3",
               "ap-southeast-4",
               "ca-central-1",
    +          "ca-west-1",
               "eu-central-1",
               "eu-central-2",
               "eu-north-1",
    @@ -9694,6 +10057,7 @@
               "ap-southeast-3",
               "ap-southeast-4",
               "ca-central-1",
    +          "ca-west-1",
               "eu-central-1",
               "eu-central-2",
               "eu-north-1",
    @@ -9745,6 +10109,21 @@
             ]
           }
         },
    +    "thinclient": {
    +      "regions": {
    +        "aws": [
    +          "ap-south-1",
    +          "ca-central-1",
    +          "eu-central-1",
    +          "eu-west-1",
    +          "eu-west-2",
    +          "us-east-1",
    +          "us-west-2"
    +        ],
    +        "aws-cn": [],
    +        "aws-us-gov": []
    +      }
    +    },
         "timestream": {
           "regions": {
             "aws": [
    @@ -9782,10 +10161,14 @@
         "tnb": {
           "regions": {
             "aws": [
    +          "ap-northeast-2",
               "ap-southeast-2",
               "ca-central-1",
               "eu-central-1",
    +          "eu-north-1",
    +          "eu-south-2",
               "eu-west-3",
    +          "sa-east-1",
               "us-east-1",
               "us-west-2"
             ],
    @@ -9883,6 +10266,7 @@
               "ap-southeast-3",
               "ap-southeast-4",
               "ca-central-1",
    +          "ca-west-1",
               "eu-central-1",
               "eu-central-2",
               "eu-north-1",
    @@ -9951,6 +10335,7 @@
               "ap-southeast-3",
               "ap-southeast-4",
               "ca-central-1",
    +          "ca-west-1",
               "eu-central-1",
               "eu-central-2",
               "eu-north-1",
    @@ -9982,12 +10367,18 @@
           "regions": {
             "aws": [
               "ap-northeast-1",
    +          "ap-northeast-2",
    +          "ap-south-1",
               "ap-southeast-1",
               "ap-southeast-2",
    +          "ap-southeast-3",
               "ca-central-1",
               "eu-central-1",
    +          "eu-north-1",
    +          "eu-south-1",
               "eu-west-1",
               "eu-west-2",
    +          "il-central-1",
               "sa-east-1",
               "us-east-1",
               "us-east-2",
    @@ -9995,7 +10386,10 @@
               "us-west-2"
             ],
             "aws-cn": [],
    -        "aws-us-gov": []
    +        "aws-us-gov": [
    +          "us-gov-east-1",
    +          "us-gov-west-1"
    +        ]
           }
         },
         "verifiedpermissions": {
    @@ -10099,6 +10493,7 @@
               "ap-southeast-3",
               "ap-southeast-4",
               "ca-central-1",
    +          "ca-west-1",
               "eu-central-1",
               "eu-central-2",
               "eu-north-1",
    @@ -10160,6 +10555,7 @@
               "ap-southeast-3",
               "ap-southeast-4",
               "ca-central-1",
    +          "ca-west-1",
               "eu-central-1",
               "eu-central-2",
               "eu-north-1",
    @@ -10400,7 +10796,10 @@
           "regions": {
             "aws": [
               "ap-northeast-1",
    +          "ap-northeast-2",
    +          "ap-southeast-1",
               "ap-southeast-2",
    +          "ca-central-1",
               "eu-central-1",
               "eu-west-2",
               "us-east-1",
    @@ -10506,6 +10905,7 @@
               "ap-southeast-3",
               "ap-southeast-4",
               "ca-central-1",
    +          "ca-west-1",
               "eu-central-1",
               "eu-central-2",
               "eu-north-1",
    @@ -10534,4 +10934,4 @@
           }
         }
       }
    -}
    \ No newline at end of file
    +}
    diff --git a/prowler/providers/aws/config.py b/prowler/providers/aws/config.py
    index 619b433f883..aec929250f9 100644
    --- a/prowler/providers/aws/config.py
    +++ b/prowler/providers/aws/config.py
    @@ -1,2 +1,3 @@
     AWS_STS_GLOBAL_ENDPOINT_REGION = "us-east-1"
     BOTO3_USER_AGENT_EXTRA = "APN_1826889"
    +ROLE_SESSION_NAME = "ProwlerAssessmentSession"
    diff --git a/prowler/providers/aws/lib/arguments/arguments.py b/prowler/providers/aws/lib/arguments/arguments.py
    index 67477aca71e..a4ffc85ac99 100644
    --- a/prowler/providers/aws/lib/arguments/arguments.py
    +++ b/prowler/providers/aws/lib/arguments/arguments.py
    @@ -1,6 +1,8 @@
     from argparse import ArgumentTypeError, Namespace
    +from re import fullmatch, search
     
     from prowler.providers.aws.aws_provider import get_aws_available_regions
    +from prowler.providers.aws.config import ROLE_SESSION_NAME
     from prowler.providers.aws.lib.arn.arn import arn_type
     
     
    @@ -26,6 +28,13 @@ def init_parser(self):
             help="ARN of the role to be assumed",
             # Pending ARN validation
         )
    +    aws_auth_subparser.add_argument(
    +        "--role-session-name",
    +        nargs="?",
    +        default=ROLE_SESSION_NAME,
    +        help="An identifier for the assumed role session. Defaults to ProwlerAssessmentSession",
    +        type=validate_role_session_name,
    +    )
         aws_auth_subparser.add_argument(
             "--mfa",
             action="store_true",
    @@ -78,6 +87,11 @@ def init_parser(self):
             action="store_true",
             help="Skip updating previous findings of Prowler in Security Hub",
         )
    +    aws_security_hub_subparser.add_argument(
    +        "--send-sh-only-fails",
    +        action="store_true",
    +        help="Send only Prowler failed findings to SecurityHub",
    +    )
         # AWS Quick Inventory
         aws_quick_inventory_subparser = aws_parser.add_argument_group("Quick Inventory")
         aws_quick_inventory_subparser.add_argument(
    @@ -93,6 +107,7 @@ def init_parser(self):
             "-B",
             "--output-bucket",
             nargs="?",
    +        type=validate_bucket,
             default=None,
             help="Custom output bucket, requires -M  and it can work also with -o flag.",
         )
    @@ -100,6 +115,7 @@ def init_parser(self):
             "-D",
             "--output-bucket-no-assume",
             nargs="?",
    +        type=validate_bucket,
             default=None,
             help="Same as -B but do not use the assumed role credentials to put objects to the bucket, instead uses the initial credentials.",
         )
    @@ -173,9 +189,37 @@ def validate_arguments(arguments: Namespace) -> tuple[bool, str]:
     
         # Handle if session_duration is not the default value or external_id is set
         if (
    -        arguments.session_duration and arguments.session_duration != 3600
    -    ) or arguments.external_id:
    +        (arguments.session_duration and arguments.session_duration != 3600)
    +        or arguments.external_id
    +        or arguments.role_session_name != ROLE_SESSION_NAME
    +    ):
             if not arguments.role:
    -            return (False, "To use -I/-T options -R option is needed")
    +            return (
    +                False,
    +                "To use -I/--external-id, -T/--session-duration or --role-session-name options -R/--role option is needed",
    +            )
     
         return (True, "")
    +
    +
    +def validate_bucket(bucket_name):
    +    """validate_bucket validates that the input bucket_name is valid"""
    +    if search("(?!(^xn--|.+-s3alias$))^[a-z0-9][a-z0-9-]{1,61}[a-z0-9]$", bucket_name):
    +        return bucket_name
    +    else:
    +        raise ArgumentTypeError(
    +            "Bucket name must be valid (https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucketnamingrules.html)"
    +        )
    +
    +
    +def validate_role_session_name(session_name):
    +    """
    +    validates that the role session name is valid
    +    Documentation: https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html
    +    """
    +    if fullmatch("[\w+=,.@-]{2,64}", session_name):
    +        return session_name
    +    else:
    +        raise ArgumentTypeError(
    +            "Role Session Name must be 2-64 characters long and consist only of upper- and lower-case alphanumeric characters with no spaces. You can also include underscores or any of the following characters: =,.@-"
    +        )
    diff --git a/prowler/providers/aws/lib/audit_info/audit_info.py b/prowler/providers/aws/lib/audit_info/audit_info.py
    index 2030c5bb56d..fe2aba2a30e 100644
    --- a/prowler/providers/aws/lib/audit_info/audit_info.py
    +++ b/prowler/providers/aws/lib/audit_info/audit_info.py
    @@ -30,6 +30,7 @@
             session_duration=None,
             external_id=None,
             mfa_enabled=None,
    +        role_session_name=None,
         ),
         mfa_enabled=None,
         audit_resources=None,
    @@ -38,4 +39,5 @@
         audit_metadata=None,
         audit_config=None,
         ignore_unused_services=False,
    +    enabled_regions=set(),
     )
    diff --git a/prowler/providers/aws/lib/audit_info/models.py b/prowler/providers/aws/lib/audit_info/models.py
    index 20538a048fa..110126730fb 100644
    --- a/prowler/providers/aws/lib/audit_info/models.py
    +++ b/prowler/providers/aws/lib/audit_info/models.py
    @@ -1,4 +1,4 @@
    -from dataclasses import dataclass
    +from dataclasses import dataclass, field
     from datetime import datetime
     from typing import Any, Optional
     
    @@ -20,6 +20,7 @@ class AWSAssumeRole:
         session_duration: int
         external_id: str
         mfa_enabled: bool
    +    role_session_name: str
     
     
     @dataclass
    @@ -53,3 +54,4 @@ class AWS_Audit_Info:
         audit_metadata: Optional[Any]
         audit_config: Optional[dict] = None
         ignore_unused_services: bool = False
    +    enabled_regions: set = field(default_factory=set)
    diff --git a/prowler/providers/aws/lib/mutelist/mutelist.py b/prowler/providers/aws/lib/mutelist/mutelist.py
    index da255f9b867..0d2274a87eb 100644
    --- a/prowler/providers/aws/lib/mutelist/mutelist.py
    +++ b/prowler/providers/aws/lib/mutelist/mutelist.py
    @@ -118,7 +118,7 @@ def parse_mutelist_file(audit_info, mutelist_file):
     def mutelist_findings(
         mutelist: dict,
         audited_account: str,
    -    check_findings: [Any],
    +    check_findings: list[Any],
     ):
         # Check if finding is muted
         for finding in check_findings:
    @@ -143,28 +143,23 @@ def is_muted(
         finding_tags,
     ):
         try:
    -        muted_checks = {}
             # By default is not muted
             is_finding_muted = False
    -        # First set account key from mutelist dict
    -        if audited_account in mutelist["Accounts"]:
    -            muted_checks = mutelist["Accounts"][audited_account]["Checks"]
    -        # If there is a *, it affects to all accounts
    -        # This cannot be elif since in the case of * and single accounts we
    -        # want to merge muted checks from * to the other accounts check list
    -        if "*" in mutelist["Accounts"]:
    -            checks_multi_account = mutelist["Accounts"]["*"]["Checks"]
    -            muted_checks.update(checks_multi_account)
    -        # Test if it is muted
    -        if is_muted_in_check(
    -            muted_checks,
    -            audited_account,
    -            check,
    -            finding_region,
    -            finding_resource,
    -            finding_tags,
    -        ):
    -            is_finding_muted = True
    +
    +        # We always check all the accounts present in the mutelist
    +        # if one mutes the finding we set the finding as muted
    +        for account in mutelist["Accounts"]:
    +            if account == audited_account or account == "*":
    +                if is_muted_in_check(
    +                    mutelist["Accounts"][account]["Checks"],
    +                    audited_account,
    +                    check,
    +                    finding_region,
    +                    finding_resource,
    +                    finding_tags,
    +                ):
    +                    is_finding_muted = True
    +                    break
     
             return is_finding_muted
         except Exception as error:
    @@ -204,7 +199,10 @@ def is_muted_in_check(
     
                 muted_regions = muted_check_info.get("Regions")
                 muted_resources = muted_check_info.get("Resources")
    -            muted_tags = muted_check_info.get("Tags")
    +            muted_tags = muted_check_info.get("Tags", "*")
    +            # We need to set the allowlisted_tags if None, "" or [], so the falsy helps
    +            if not muted_tags:
    +                muted_tags = "*"
                 # If there is a *, it affects to all checks
                 if (
                     "*" == muted_check
    @@ -221,13 +219,15 @@ def is_muted_in_check(
                     # For a finding to be muted requires the following set to True:
                     # - muted_in_check -> True
                     # - muted_in_region -> True
    -                # - muted_in_tags -> True or muted_in_resource -> True
    +                # - muted_in_tags -> True
    +                # - muted_in_resource -> True
                     # - excepted -> False
     
                     if (
                         muted_in_check
                         and muted_in_region
    -                    and (muted_in_tags or muted_in_resource)
    +                    and muted_in_tags
    +                    and muted_in_resource
                     ):
                         is_check_muted = True
     
    @@ -305,10 +305,17 @@ def is_excepted(
                 is_tag_excepted = __is_item_matched__(excepted_tags, finding_tags)
     
                 if (
    -                is_account_excepted
    -                and is_region_excepted
    -                and is_resource_excepted
    -                and is_tag_excepted
    +                not is_account_excepted
    +                and not is_region_excepted
    +                and not is_resource_excepted
    +                and not is_tag_excepted
    +            ):
    +                excepted = False
    +            elif (
    +                (is_account_excepted or not excepted_accounts)
    +                and (is_region_excepted or not excepted_regions)
    +                and (is_resource_excepted or not excepted_resources)
    +                and (is_tag_excepted or not excepted_tags)
                 ):
                     excepted = True
             return excepted
    diff --git a/prowler/providers/aws/lib/organizations/organizations.py b/prowler/providers/aws/lib/organizations/organizations.py
    index 130b7166b8a..c691b2a5a5e 100644
    --- a/prowler/providers/aws/lib/organizations/organizations.py
    +++ b/prowler/providers/aws/lib/organizations/organizations.py
    @@ -1,40 +1,61 @@
    -import sys
    -
    -from boto3 import client
    +from boto3 import client, session
     
     from prowler.lib.logger import logger
     from prowler.providers.aws.lib.audit_info.models import AWSOrganizationsInfo
     
     
     def get_organizations_metadata(
    -    metadata_account: str, assumed_credentials: dict
    -) -> AWSOrganizationsInfo:
    +    aws_account_id: str,
    +    assumed_credentials: dict = None,
    +    session: session = None,
    +) -> tuple[dict, dict]:
         try:
    -        organizations_client = client(
    -            "organizations",
    -            aws_access_key_id=assumed_credentials["Credentials"]["AccessKeyId"],
    -            aws_secret_access_key=assumed_credentials["Credentials"]["SecretAccessKey"],
    -            aws_session_token=assumed_credentials["Credentials"]["SessionToken"],
    -        )
    +        if assumed_credentials:
    +            organizations_client = client(
    +                "organizations",
    +                aws_access_key_id=assumed_credentials["Credentials"]["AccessKeyId"],
    +                aws_secret_access_key=assumed_credentials["Credentials"][
    +                    "SecretAccessKey"
    +                ],
    +                aws_session_token=assumed_credentials["Credentials"]["SessionToken"],
    +            )
    +        if session:
    +            organizations_client = session.client("organizations")
    +        else:
    +            organizations_client = client("organizations")
    +
             organizations_metadata = organizations_client.describe_account(
    -            AccountId=metadata_account
    +            AccountId=aws_account_id
             )
             list_tags_for_resource = organizations_client.list_tags_for_resource(
    -            ResourceId=metadata_account
    +            ResourceId=aws_account_id
             )
    +
    +        return organizations_metadata, list_tags_for_resource
         except Exception as error:
    -        logger.critical(f"{error.__class__.__name__} -- {error}")
    -        sys.exit(1)
    -    else:
    +        logger.warning(
    +            f"{error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}"
    +        )
    +        return {}, {}
    +
    +
    +def parse_organizations_metadata(metadata: dict, tags: dict) -> AWSOrganizationsInfo:
    +    try:
             # Convert Tags dictionary to String
             account_details_tags = ""
    -        for tag in list_tags_for_resource["Tags"]:
    +        for tag in tags.get("Tags", {}):
                 account_details_tags += tag["Key"] + ":" + tag["Value"] + ","
    +
    +        account_details = metadata.get("Account", {})
             organizations_info = AWSOrganizationsInfo(
    -            account_details_email=organizations_metadata["Account"]["Email"],
    -            account_details_name=organizations_metadata["Account"]["Name"],
    -            account_details_arn=organizations_metadata["Account"]["Arn"],
    -            account_details_org=organizations_metadata["Account"]["Arn"].split("/")[1],
    -            account_details_tags=account_details_tags,
    +            account_details_email=account_details.get("Email", ""),
    +            account_details_name=account_details.get("Name", ""),
    +            account_details_arn=account_details.get("Arn", ""),
    +            account_details_org=account_details.get("Arn", "").split("/")[1],
    +            account_details_tags=account_details_tags.rstrip(","),
             )
             return organizations_info
    +    except Exception as error:
    +        logger.warning(
    +            f"{error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}"
    +        )
    diff --git a/prowler/providers/aws/lib/policy_condition_parser/policy_condition_parser.py b/prowler/providers/aws/lib/policy_condition_parser/policy_condition_parser.py
    index 020aedc5057..d88d63bce78 100644
    --- a/prowler/providers/aws/lib/policy_condition_parser/policy_condition_parser.py
    +++ b/prowler/providers/aws/lib/policy_condition_parser/policy_condition_parser.py
    @@ -1,8 +1,11 @@
    -def is_account_only_allowed_in_condition(
    -    condition_statement: dict, source_account: str
    +def is_condition_block_restrictive(
    +    condition_statement: dict, source_account: str, is_cross_account_allowed=False
     ):
         """
    -    is_account_only_allowed_in_condition parses the IAM Condition policy block and returns True if the source_account passed as argument is within, False if not.
    +    is_condition_block_restrictive parses the IAM Condition policy block and, by default, returns True if the source_account passed as argument is within, False if not.
    +
    +    If argument is_cross_account_allowed is True it tests if the Condition block includes any of the operators allowlisted returning True if does, False if not.
    +
     
         @param condition_statement: dict with an IAM Condition block, e.g.:
             {
    @@ -54,13 +57,19 @@ def is_account_only_allowed_in_condition(
                             condition_statement[condition_operator][value],
                             list,
                         ):
    -                        # if there is an arn/account without the source account -> we do not consider it safe
    -                        # here by default we assume is true and look for false entries
                             is_condition_key_restrictive = True
    -                        for item in condition_statement[condition_operator][value]:
    -                            if source_account not in item:
    -                                is_condition_key_restrictive = False
    -                                break
    +                        # if cross account is not allowed check for each condition block looking for accounts
    +                        # different than default
    +                        if not is_cross_account_allowed:
    +                            # if there is an arn/account without the source account -> we do not consider it safe
    +                            # here by default we assume is true and look for false entries
    +                            for item in condition_statement[condition_operator][value]:
    +                                if source_account not in item:
    +                                    is_condition_key_restrictive = False
    +                                    break
    +
    +                        if is_condition_key_restrictive:
    +                            is_condition_valid = True
     
                             if is_condition_key_restrictive:
                                 is_condition_valid = True
    @@ -70,10 +79,13 @@ def is_account_only_allowed_in_condition(
                             condition_statement[condition_operator][value],
                             str,
                         ):
    -                        if (
    -                            source_account
    -                            in condition_statement[condition_operator][value]
    -                        ):
    +                        if is_cross_account_allowed:
                                 is_condition_valid = True
    +                        else:
    +                            if (
    +                                source_account
    +                                in condition_statement[condition_operator][value]
    +                            ):
    +                                is_condition_valid = True
     
         return is_condition_valid
    diff --git a/prowler/providers/aws/lib/quick_inventory/quick_inventory.py b/prowler/providers/aws/lib/quick_inventory/quick_inventory.py
    index 666c2896d5e..82471431d04 100644
    --- a/prowler/providers/aws/lib/quick_inventory/quick_inventory.py
    +++ b/prowler/providers/aws/lib/quick_inventory/quick_inventory.py
    @@ -211,9 +211,13 @@ def create_inventory_table(resources: list, resources_in_region: dict) -> dict:
     
     def create_output(resources: list, audit_info: AWS_Audit_Info, args):
         json_output = []
    -    output_file = (
    -        f"prowler-inventory-{audit_info.audited_account}-{output_file_timestamp}"
    -    )
    +    # Check if custom output filename was input, if not, set the default
    +    if not hasattr(args, "output_filename") or args.output_filename is None:
    +        output_file = (
    +            f"prowler-inventory-{audit_info.audited_account}-{output_file_timestamp}"
    +        )
    +    else:
    +        output_file = args.output_filename
     
         for item in sorted(resources, key=lambda d: d["arn"]):
             resource = {}
    @@ -275,8 +279,8 @@ def create_output(resources: list, audit_info: AWS_Audit_Info, args):
             f"\n{Fore.YELLOW}WARNING: Only resources that have or have had tags will appear (except for IAM and S3).\nSee more in https://docs.prowler.cloud/en/latest/tutorials/quick-inventory/#objections{Style.RESET_ALL}"
         )
         print("\nMore details in files:")
    -    print(f" - CSV: {args.output_directory}/{output_file+csv_file_suffix}")
    -    print(f" - JSON: {args.output_directory}/{output_file+json_file_suffix}")
    +    print(f" - CSV: {args.output_directory}/{output_file + csv_file_suffix}")
    +    print(f" - JSON: {args.output_directory}/{output_file + json_file_suffix}")
     
         # Send output to S3 if needed (-B / -D)
         for mode in ["json", "csv"]:
    diff --git a/prowler/providers/aws/lib/s3/s3.py b/prowler/providers/aws/lib/s3/s3.py
    index 0ef570514f4..6ebb711fff7 100644
    --- a/prowler/providers/aws/lib/s3/s3.py
    +++ b/prowler/providers/aws/lib/s3/s3.py
    @@ -1,5 +1,3 @@
    -import sys
    -
     from prowler.config.config import (
         csv_file_suffix,
         html_file_suffix,
    @@ -29,7 +27,7 @@ def send_to_s3_bucket(
             else:  # Compliance output mode
                 filename = f"{output_filename}_{output_mode}{csv_file_suffix}"
     
    -        logger.info(f"Sending outputs to S3 bucket {output_bucket_name}")
    +        logger.info(f"Sending output file {filename} to S3 bucket {output_bucket_name}")
             # File location
             file_name = output_directory + "/" + filename
     
    @@ -41,10 +39,9 @@ def send_to_s3_bucket(
             s3_client.upload_file(file_name, output_bucket_name, object_name)
     
         except Exception as error:
    -        logger.critical(
    +        logger.error(
                 f"{error.__class__.__name__}[{error.__traceback__.tb_lineno}] -- {error}"
             )
    -        sys.exit(1)
     
     
     def get_s3_object_path(output_directory: str) -> str:
    diff --git a/prowler/providers/aws/lib/security_hub/security_hub.py b/prowler/providers/aws/lib/security_hub/security_hub.py
    index 4c7f682a098..b4749aae174 100644
    --- a/prowler/providers/aws/lib/security_hub/security_hub.py
    +++ b/prowler/providers/aws/lib/security_hub/security_hub.py
    @@ -1,4 +1,5 @@
     from boto3 import session
    +from botocore.client import ClientError
     
     from prowler.config.config import timestamp_utc
     from prowler.lib.logger import logger
    @@ -11,7 +12,7 @@
     
     
     def prepare_security_hub_findings(
    -    findings: [], audit_info: AWS_Audit_Info, output_options, enabled_regions: []
    +    findings: list, audit_info: AWS_Audit_Info, output_options, enabled_regions: list
     ) -> dict:
         security_hub_findings_per_region = {}
     
    @@ -29,7 +30,11 @@ def prepare_security_hub_findings(
                 continue
     
             # Handle status filters, if any
    -        if not output_options.status or finding.status in output_options.status:
    +        if (
    +            not output_options.status
    +            or finding.status in output_options.status
    +            or output_options.send_sh_only_fails
    +        ):
                 continue
     
             # Get the finding region
    @@ -70,15 +75,32 @@ def verify_security_hub_integration_enabled_per_region(
             if security_hub_prowler_integration_arn not in str(
                 security_hub_client.list_enabled_products_for_import()
             ):
    -            logger.error(
    +            logger.warning(
                     f"Security Hub is enabled in {region} but Prowler integration does not accept findings. More info: https://docs.prowler.cloud/en/latest/tutorials/aws/securityhub/"
                 )
             else:
                 prowler_integration_enabled = True
     
    +    # Handle all the permissions / configuration errors
    +    except ClientError as client_error:
    +        # Check if Account is subscribed to Security Hub
    +        error_code = client_error.response["Error"]["Code"]
    +        error_message = client_error.response["Error"]["Message"]
    +        if (
    +            error_code == "InvalidAccessException"
    +            and f"Account {aws_account_number} is not subscribed to AWS Security Hub in region {region}"
    +            in error_message
    +        ):
    +            logger.warning(
    +                f"{client_error.__class__.__name__} -- [{client_error.__traceback__.tb_lineno}]: {client_error}"
    +            )
    +        else:
    +            logger.error(
    +                f"{client_error.__class__.__name__} -- [{client_error.__traceback__.tb_lineno}]: {client_error}"
    +            )
         except Exception as error:
             logger.error(
    -            f"{error.__class__.__name__} -- [{error.__traceback__.tb_lineno}]:{error} in region {region}"
    +            f"{error.__class__.__name__} -- [{error.__traceback__.tb_lineno}]: {error}"
             )
     
         finally:
    @@ -167,7 +189,7 @@ def resolve_security_hub_previous_findings(
     
     
     def __send_findings_to_security_hub__(
    -    findings: [dict], region: str, security_hub_client
    +    findings: list[dict], region: str, security_hub_client
     ):
         """Private function send_findings_to_security_hub chunks the findings in groups of 100 findings and send them to AWS Security Hub. It returns the number of sent findings."""
         success_count = 0
    diff --git a/prowler/providers/aws/lib/service/service.py b/prowler/providers/aws/lib/service/service.py
    index a3dd71f08ea..ce9c29c3a6b 100644
    --- a/prowler/providers/aws/lib/service/service.py
    +++ b/prowler/providers/aws/lib/service/service.py
    @@ -1,13 +1,23 @@
    -import threading
    +from concurrent.futures import ThreadPoolExecutor, as_completed
     
    +from prowler.lib.logger import logger
     from prowler.providers.aws.aws_provider_new import AwsProvider
     
    +# TODO: review the following code
    +# from prowler.providers.aws.aws_provider import (
    +#     generate_regional_clients,
    +#     get_default_region,
    +# )
    +
    +MAX_WORKERS = 10
    +
     
     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
    +    - Thread pool for the __threading_call__
         - Also handles if the AWS Service is Global
         """
     
    @@ -33,6 +43,8 @@ def __init__(self, service: str, provider: AwsProvider, global_service=False):
                 self.regional_clients = provider.generate_regional_clients(
                     self.service, global_service
                 )
    +            # TODO: review the following code
    +            # self.regional_clients = generate_regional_clients(self.service, audit_info)
     
             # 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
    @@ -40,14 +52,40 @@ def __init__(self, service: str, provider: AwsProvider, global_service=False):
             self.region = provider.get_default_region(self.service)
             self.client = self.session.client(self.service, self.region)
     
    +        # Thread pool for __threading_call__
    +        self.thread_pool = ThreadPoolExecutor(max_workers=MAX_WORKERS)
    +
         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 __threading_call__(self, call, iterator=None):
    +        # Use the provided iterator, or default to self.regional_clients
    +        items = iterator if iterator is not None else self.regional_clients.values()
    +        # Determine the total count for logging
    +        item_count = len(items)
    +
    +        # Trim leading and trailing underscores from the call's name
    +        call_name = call.__name__.strip("_")
    +        # Add Capitalization
    +        call_name = " ".join([x.capitalize() for x in call_name.split("_")])
    +
    +        # Print a message based on the call's name, and if its regional or processing a list of items
    +        if iterator is None:
    +            logger.info(
    +                f"{self.service.upper()} - Starting threads for '{call_name}' function across {item_count} regions..."
    +            )
    +        else:
    +            logger.info(
    +                f"{self.service.upper()} - Starting threads for '{call_name}' function to process {item_count} items..."
    +            )
    +
    +        # Submit tasks to the thread pool
    +        futures = [self.thread_pool.submit(call, item) for item in items]
    +
    +        # Wait for all tasks to complete
    +        for future in as_completed(futures):
    +            try:
    +                future.result()  # Raises exceptions from the thread, if any
    +            except Exception:
    +                # Handle exceptions if necessary
    +                pass  # Replace 'pass' with any additional exception handling logic. Currently handled within the called function
    diff --git a/prowler/providers/aws/services/accessanalyzer/accessanalyzer_service.py b/prowler/providers/aws/services/accessanalyzer/accessanalyzer_service.py
    index 54ee4abd00c..8e5eda2bd09 100644
    --- a/prowler/providers/aws/services/accessanalyzer/accessanalyzer_service.py
    +++ b/prowler/providers/aws/services/accessanalyzer/accessanalyzer_service.py
    @@ -85,21 +85,36 @@ def __get_finding_status__(self):
                     f"{regional_client.region} -- {error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}"
                 )
     
    +    # TODO: We need to include ListFindingsV2
    +    # https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/accessanalyzer/client/list_findings_v2.html
         def __list_findings__(self):
             logger.info("AccessAnalyzer - Listing Findings per Analyzer...")
             try:
                 for analyzer in self.analyzers:
    -                if analyzer.status == "ACTIVE":
    -                    regional_client = self.regional_clients[analyzer.region]
    -                    list_findings_paginator = regional_client.get_paginator(
    -                        "list_findings"
    +                try:
    +                    if analyzer.status == "ACTIVE":
    +                        regional_client = self.regional_clients[analyzer.region]
    +                        list_findings_paginator = regional_client.get_paginator(
    +                            "list_findings"
    +                        )
    +                        for page in list_findings_paginator.paginate(
    +                            analyzerArn=analyzer.arn
    +                        ):
    +                            for finding in page["findings"]:
    +                                analyzer.findings.append(Finding(id=finding["id"]))
    +                except ClientError as error:
    +                    if error.response["Error"]["Code"] == "ValidationException":
    +                        logger.warning(
    +                            f"{regional_client.region} -- {error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}"
    +                        )
    +                    else:
    +                        logger.error(
    +                            f"{regional_client.region} -- {error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}"
    +                        )
    +                except Exception as error:
    +                    logger.error(
    +                        f"{regional_client.region} -- {error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}"
                         )
    -                    for page in list_findings_paginator.paginate(
    -                        analyzerArn=analyzer.arn
    -                    ):
    -                        for finding in page["findings"]:
    -                            analyzer.findings.append(Finding(id=finding["id"]))
    -
             except Exception as error:
                 logger.error(
                     f"{regional_client.region} -- {error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}"
    diff --git a/prowler/providers/aws/services/acm/acm_certificates_expiration_check/acm_certificates_expiration_check.py b/prowler/providers/aws/services/acm/acm_certificates_expiration_check/acm_certificates_expiration_check.py
    index f8af3ead0e2..0557c51317a 100644
    --- a/prowler/providers/aws/services/acm/acm_certificates_expiration_check/acm_certificates_expiration_check.py
    +++ b/prowler/providers/aws/services/acm/acm_certificates_expiration_check/acm_certificates_expiration_check.py
    @@ -19,7 +19,11 @@ def execute(self):
                     report.resource_tags = certificate.tags
                 else:
                     report.status = "FAIL"
    -                report.status_extended = f"ACM Certificate {certificate.id} for {certificate.name} is about to expire in {DAYS_TO_EXPIRE_THRESHOLD} days."
    +                if certificate.expiration_days < 0:
    +                    report.status_extended = f"ACM Certificate {certificate.id} for {certificate.name} has expired ({abs(certificate.expiration_days)} days ago)."
    +                else:
    +                    report.status_extended = f"ACM Certificate {certificate.id} for {certificate.name} is about to expire in {certificate.expiration_days} days."
    +
                     report.resource_id = certificate.id
                     report.resource_details = certificate.name
                     report.resource_arn = certificate.arn
    diff --git a/prowler/providers/aws/services/apigateway/apigateway_restapi_authorizers_enabled/apigateway_restapi_authorizers_enabled.metadata.json b/prowler/providers/aws/services/apigateway/apigateway_restapi_authorizers_enabled/apigateway_restapi_authorizers_enabled.metadata.json
    index 1d8b25f2bfb..ea7cd2aec92 100644
    --- a/prowler/providers/aws/services/apigateway/apigateway_restapi_authorizers_enabled/apigateway_restapi_authorizers_enabled.metadata.json
    +++ b/prowler/providers/aws/services/apigateway/apigateway_restapi_authorizers_enabled/apigateway_restapi_authorizers_enabled.metadata.json
    @@ -1,7 +1,7 @@
     {
       "Provider": "aws",
       "CheckID": "apigateway_restapi_authorizers_enabled",
    -  "CheckTitle": "Check if API Gateway has configured authorizers.",
    +  "CheckTitle": "Check if API Gateway has configured authorizers at api or method level.",
       "CheckAliases": [
         "apigateway_authorizers_enabled"
       ],
    @@ -13,7 +13,7 @@
       "ResourceIdTemplate": "arn:partition:service:region:account-id:resource-id",
       "Severity": "medium",
       "ResourceType": "AwsApiGatewayRestApi",
    -  "Description": "Check if API Gateway has configured authorizers.",
    +  "Description": "Check if API Gateway has configured authorizers at api or method level.",
       "Risk": "If no authorizer is enabled anyone can use the service.",
       "RelatedUrl": "",
       "Remediation": {
    diff --git a/prowler/providers/aws/services/apigateway/apigateway_restapi_authorizers_enabled/apigateway_restapi_authorizers_enabled.py b/prowler/providers/aws/services/apigateway/apigateway_restapi_authorizers_enabled/apigateway_restapi_authorizers_enabled.py
    index ec154555427..70cabcd31c6 100644
    --- a/prowler/providers/aws/services/apigateway/apigateway_restapi_authorizers_enabled/apigateway_restapi_authorizers_enabled.py
    +++ b/prowler/providers/aws/services/apigateway/apigateway_restapi_authorizers_enabled/apigateway_restapi_authorizers_enabled.py
    @@ -13,12 +13,41 @@ def execute(self):
                 report.resource_id = rest_api.name
                 report.resource_arn = rest_api.arn
                 report.resource_tags = rest_api.tags
    +            # it there are not authorizers at api level and resources without methods (default case) ->
    +            report.status = "FAIL"
    +            report.status_extended = f"API Gateway {rest_api.name} ID {rest_api.id} does not have an authorizer configured at api level."
                 if rest_api.authorizer:
                     report.status = "PASS"
    -                report.status_extended = f"API Gateway {rest_api.name} ID {rest_api.id} has an authorizer configured."
    +                report.status_extended = f"API Gateway {rest_api.name} ID {rest_api.id} has an authorizer configured at api level"
                 else:
    -                report.status = "FAIL"
    -                report.status_extended = f"API Gateway {rest_api.name} ID {rest_api.id} does not have an authorizer configured."
    +                # we want to know if api has not authorizers and all the resources don't have methods configured
    +                resources_have_methods = False
    +                all_methods_authorized = True
    +                resource_paths_with_unathorized_methods = []
    +                for resource in rest_api.resources:
    +                    # if the resource has methods test if they have all configured authorizer
    +                    if resource.resource_methods:
    +                        resources_have_methods = True
    +                        for (
    +                            http_method,
    +                            authorization_method,
    +                        ) in resource.resource_methods.items():
    +                            if authorization_method == "NONE":
    +                                all_methods_authorized = False
    +                                unauthorized_method = (
    +                                    f"{resource.path} -> {http_method}"
    +                                )
    +                                resource_paths_with_unathorized_methods.append(
    +                                    unauthorized_method
    +                                )
    +                # if there are methods in at least one resource and are all authorized
    +                if all_methods_authorized and resources_have_methods:
    +                    report.status = "PASS"
    +                    report.status_extended = f"API Gateway {rest_api.name} ID {rest_api.id} has all methods authorized"
    +                # if there are methods in at least one result but some of then are not authorized-> list it
    +                elif not all_methods_authorized:
    +                    report.status_extended = f"API Gateway {rest_api.name} ID {rest_api.id} does not have authorizers at api level and the following paths and methods are unauthorized: {'; '.join(resource_paths_with_unathorized_methods)}."
    +
                 findings.append(report)
     
             return findings
    diff --git a/prowler/providers/aws/services/apigateway/apigateway_service.py b/prowler/providers/aws/services/apigateway/apigateway_service.py
    index 73ea8cce0bf..461c88032d6 100644
    --- a/prowler/providers/aws/services/apigateway/apigateway_service.py
    +++ b/prowler/providers/aws/services/apigateway/apigateway_service.py
    @@ -17,6 +17,7 @@ def __init__(self, provider):
             self.__get_authorizers__()
             self.__get_rest_api__()
             self.__get_stages__()
    +        self.__get_resources__()
     
         def __get_rest_apis__(self, regional_client):
             logger.info("APIGateway - Getting Rest APIs...")
    @@ -53,7 +54,9 @@ def __get_authorizers__(self):
                     if authorizers:
                         rest_api.authorizer = True
             except Exception as error:
    -            logger.error(f"{error.__class__.__name__}: {error}")
    +            logger.error(
    +                f"{regional_client.region} -- {error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}"
    +            )
     
         def __get_rest_api__(self):
             logger.info("APIGateway - Describing Rest API...")
    @@ -64,7 +67,9 @@ def __get_rest_api__(self):
                     if rest_api_info["endpointConfiguration"]["types"] == ["PRIVATE"]:
                         rest_api.public_endpoint = False
             except Exception as error:
    -            logger.error(f"{error.__class__.__name__}: {error}")
    +            logger.error(
    +                f"{regional_client.region} -- {error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}"
    +            )
     
         def __get_stages__(self):
             logger.info("APIGateway - Getting stages for Rest APIs...")
    @@ -95,7 +100,46 @@ def __get_stages__(self):
                             )
                         )
             except Exception as error:
    -            logger.error(f"{error.__class__.__name__}: {error}")
    +            logger.error(
    +                f"{regional_client.region} -- {error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}"
    +            )
    +
    +    def __get_resources__(self):
    +        logger.info("APIGateway - Getting API resources...")
    +        try:
    +            for rest_api in self.rest_apis:
    +                regional_client = self.regional_clients[rest_api.region]
    +                get_resources_paginator = regional_client.get_paginator("get_resources")
    +                for page in get_resources_paginator.paginate(restApiId=rest_api.id):
    +                    for resource in page["items"]:
    +                        id = resource["id"]
    +                        resource_methods = []
    +                        methods_auth = {}
    +                        for resource_method in resource.get(
    +                            "resourceMethods", {}
    +                        ).keys():
    +                            resource_methods.append(resource_method)
    +
    +                        for resource_method in resource_methods:
    +                            if resource_method != "OPTIONS":
    +                                method_config = regional_client.get_method(
    +                                    restApiId=rest_api.id,
    +                                    resourceId=id,
    +                                    httpMethod=resource_method,
    +                                )
    +                                auth_type = method_config["authorizationType"]
    +                                methods_auth.update({resource_method: auth_type})
    +
    +                        rest_api.resources.append(
    +                            PathResourceMethods(
    +                                path=resource["path"], resource_methods=methods_auth
    +                            )
    +                        )
    +
    +        except Exception as error:
    +            logger.error(
    +                f"{regional_client.region} -- {error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}"
    +            )
     
     
     class Stage(BaseModel):
    @@ -107,6 +151,11 @@ class Stage(BaseModel):
         tags: Optional[list] = []
     
     
    +class PathResourceMethods(BaseModel):
    +    path: str
    +    resource_methods: dict
    +
    +
     class RestAPI(BaseModel):
         id: str
         arn: str
    @@ -116,3 +165,4 @@ class RestAPI(BaseModel):
         public_endpoint: bool = True
         stages: list[Stage] = []
         tags: Optional[list] = []
    +    resources: list[PathResourceMethods] = []
    diff --git a/prowler/providers/aws/services/apigatewayv2/apigatewayv2_api_access_logging_enabled/apigatewayv2_api_access_logging_enabled.py b/prowler/providers/aws/services/apigatewayv2/apigatewayv2_api_access_logging_enabled/apigatewayv2_api_access_logging_enabled.py
    index 3a3c6f5681c..6ca506f07c1 100644
    --- a/prowler/providers/aws/services/apigatewayv2/apigatewayv2_api_access_logging_enabled/apigatewayv2_api_access_logging_enabled.py
    +++ b/prowler/providers/aws/services/apigatewayv2/apigatewayv2_api_access_logging_enabled/apigatewayv2_api_access_logging_enabled.py
    @@ -14,13 +14,13 @@ def execute(self):
                     if stage.logging:
                         report.status = "PASS"
                         report.status_extended = f"API Gateway V2 {api.name} ID {api.id} in stage {stage.name} has access logging enabled."
    -                    report.resource_id = api.name
    +                    report.resource_id = f"{api.name}-{stage.name}"
                         report.resource_arn = api.arn
                         report.resource_tags = api.tags
                     else:
                         report.status = "FAIL"
                         report.status_extended = f"API Gateway V2 {api.name} ID {api.id} in stage {stage.name} has access logging disabled."
    -                    report.resource_id = api.name
    +                    report.resource_id = f"{api.name}-{stage.name}"
                         report.resource_arn = api.arn
                         report.resource_tags = api.tags
                     findings.append(report)
    diff --git a/prowler/providers/aws/services/athena/athena_service.py b/prowler/providers/aws/services/athena/athena_service.py
    index fa0a946bc63..67778910f35 100644
    --- a/prowler/providers/aws/services/athena/athena_service.py
    +++ b/prowler/providers/aws/services/athena/athena_service.py
    @@ -54,10 +54,8 @@ def __get_workgroups__(self):
                         )
     
                         wg_configuration = wg.get("WorkGroup").get("Configuration")
    -                    self.workgroups[
    -                        workgroup.arn
    -                    ].enforce_workgroup_configuration = wg_configuration.get(
    -                        "EnforceWorkGroupConfiguration", False
    +                    self.workgroups[workgroup.arn].enforce_workgroup_configuration = (
    +                        wg_configuration.get("EnforceWorkGroupConfiguration", False)
                         )
     
                         # We include an empty EncryptionConfiguration to handle if the workgroup does not have encryption configured
    @@ -77,9 +75,9 @@ def __get_workgroups__(self):
                             encryption_configuration = EncryptionConfiguration(
                                 encryption_option=encryption, encrypted=True
                             )
    -                        self.workgroups[
    -                            workgroup.arn
    -                        ].encryption_configuration = encryption_configuration
    +                        self.workgroups[workgroup.arn].encryption_configuration = (
    +                            encryption_configuration
    +                        )
                     except Exception as error:
                         logger.error(
                             f"{self.region} -- {error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}"
    diff --git a/prowler/providers/aws/services/awslambda/awslambda_function_no_secrets_in_code/awslambda_function_no_secrets_in_code.py b/prowler/providers/aws/services/awslambda/awslambda_function_no_secrets_in_code/awslambda_function_no_secrets_in_code.py
    index b90ba4e5e3f..cc3d1075250 100644
    --- a/prowler/providers/aws/services/awslambda/awslambda_function_no_secrets_in_code/awslambda_function_no_secrets_in_code.py
    +++ b/prowler/providers/aws/services/awslambda/awslambda_function_no_secrets_in_code/awslambda_function_no_secrets_in_code.py
    @@ -11,57 +11,55 @@
     class awslambda_function_no_secrets_in_code(Check):
         def execute(self):
             findings = []
    -        for function in awslambda_client.functions.values():
    -            if function.code:
    -                report = Check_Report_AWS(self.metadata())
    -                report.region = function.region
    -                report.resource_id = function.name
    -                report.resource_arn = function.arn
    -                report.resource_tags = function.tags
    +        if awslambda_client.functions:
    +            for function, function_code in awslambda_client.__get_function_code__():
    +                if function_code:
    +                    report = Check_Report_AWS(self.metadata())
    +                    report.region = function.region
    +                    report.resource_id = function.name
    +                    report.resource_arn = function.arn
    +                    report.resource_tags = function.tags
     
    -                report.status = "PASS"
    -                report.status_extended = (
    -                    f"No secrets found in Lambda function {function.name} code."
    -                )
    -                with tempfile.TemporaryDirectory() as tmp_dir_name:
    -                    function.code.code_zip.extractall(tmp_dir_name)
    -                    # List all files
    -                    files_in_zip = next(os.walk(tmp_dir_name))[2]
    -                    secrets_findings = []
    -                    for file in files_in_zip:
    -                        secrets = SecretsCollection()
    -                        with default_settings():
    -                            secrets.scan_file(f"{tmp_dir_name}/{file}")
    -                        detect_secrets_output = secrets.json()
    -                        if detect_secrets_output:
    -                            for (
    -                                file_name
    -                            ) in (
    -                                detect_secrets_output.keys()
    -                            ):  # Appears that only 1 file is being scanned at a time, so could rework this
    -                                output_file_name = file_name.replace(
    -                                    f"{tmp_dir_name}/", ""
    -                                )
    -                                secrets_string = ", ".join(
    -                                    [
    -                                        f"{secret['type']} on line {secret['line_number']}"
    -                                        for secret in detect_secrets_output[file_name]
    -                                    ]
    -                                )
    -                                secrets_findings.append(
    -                                    f"{output_file_name}: {secrets_string}"
    -                                )
    +                    report.status = "PASS"
    +                    report.status_extended = (
    +                        f"No secrets found in Lambda function {function.name} code."
    +                    )
    +                    with tempfile.TemporaryDirectory() as tmp_dir_name:
    +                        function_code.code_zip.extractall(tmp_dir_name)
    +                        # List all files
    +                        files_in_zip = next(os.walk(tmp_dir_name))[2]
    +                        secrets_findings = []
    +                        for file in files_in_zip:
    +                            secrets = SecretsCollection()
    +                            with default_settings():
    +                                secrets.scan_file(f"{tmp_dir_name}/{file}")
    +                            detect_secrets_output = secrets.json()
    +                            if detect_secrets_output:
    +                                for (
    +                                    file_name
    +                                ) in (
    +                                    detect_secrets_output.keys()
    +                                ):  # Appears that only 1 file is being scanned at a time, so could rework this
    +                                    output_file_name = file_name.replace(
    +                                        f"{tmp_dir_name}/", ""
    +                                    )
    +                                    secrets_string = ", ".join(
    +                                        [
    +                                            f"{secret['type']} on line {secret['line_number']}"
    +                                            for secret in detect_secrets_output[
    +                                                file_name
    +                                            ]
    +                                        ]
    +                                    )
    +                                    secrets_findings.append(
    +                                        f"{output_file_name}: {secrets_string}"
    +                                    )
     
    -                    if secrets_findings:
    -                        final_output_string = "; ".join(secrets_findings)
    -                        report.status = "FAIL"
    -                        # report.status_extended = f"Potential {'secrets' if len(secrets_findings)>1 else 'secret'} found in Lambda function {function.name} code. {final_output_string}."
    -                        if len(secrets_findings) > 1:
    -                            report.status_extended = f"Potential secrets found in Lambda function {function.name} code -> {final_output_string}."
    -                        else:
    -                            report.status_extended = f"Potential secret found in Lambda function {function.name} code -> {final_output_string}."
    -                        # break // Don't break as there may be additional findings
    +                        if secrets_findings:
    +                            final_output_string = "; ".join(secrets_findings)
    +                            report.status = "FAIL"
    +                            report.status_extended = f"Potential {'secrets' if len(secrets_findings) > 1 else 'secret'} found in Lambda function {function.name} code -> {final_output_string}."
     
    -                findings.append(report)
    +                    findings.append(report)
     
             return findings
    diff --git a/prowler/providers/aws/services/awslambda/awslambda_function_no_secrets_in_variables/awslambda_function_no_secrets_in_variables.py b/prowler/providers/aws/services/awslambda/awslambda_function_no_secrets_in_variables/awslambda_function_no_secrets_in_variables.py
    index 469fcfdd986..a791e46b13b 100644
    --- a/prowler/providers/aws/services/awslambda/awslambda_function_no_secrets_in_variables/awslambda_function_no_secrets_in_variables.py
    +++ b/prowler/providers/aws/services/awslambda/awslambda_function_no_secrets_in_variables/awslambda_function_no_secrets_in_variables.py
    @@ -42,7 +42,7 @@ def execute(self):
                         environment_variable_names = list(function.environment.keys())
                         secrets_string = ", ".join(
                             [
    -                            f"{secret['type']} in variable {environment_variable_names[int(secret['line_number'])-2]}"
    +                            f"{secret['type']} in variable {environment_variable_names[int(secret['line_number']) - 2]}"
                                 for secret in detect_secrets_output[temp_env_data_file.name]
                             ]
                         )
    diff --git a/prowler/providers/aws/services/awslambda/awslambda_service.py b/prowler/providers/aws/services/awslambda/awslambda_service.py
    index 78faad6066d..82f335227eb 100644
    --- a/prowler/providers/aws/services/awslambda/awslambda_service.py
    +++ b/prowler/providers/aws/services/awslambda/awslambda_service.py
    @@ -1,6 +1,7 @@
     import io
     import json
     import zipfile
    +from concurrent.futures import as_completed
     from enum import Enum
     from typing import Any, Optional
     
    @@ -21,15 +22,6 @@ def __init__(self, provider):
             self.functions = {}
             self.__threading_call__(self.__list_functions__)
             self.__list_tags_for_resource__()
    -
    -        # We only want to retrieve the Lambda code if the
    -        # awslambda_function_no_secrets_in_code check is set
    -        if (
    -            "awslambda_function_no_secrets_in_code"
    -            in provider.audit_metadata.expected_checks
    -        ):
    -            self.__threading_call__(self.__get_function__)
    -
             self.__threading_call__(self.__get_policy__)
             self.__threading_call__(self.__get_function_url_config__)
     
    @@ -70,28 +62,45 @@ def __list_functions__(self, regional_client):
                     f" {error}"
                 )
     
    -    def __get_function__(self, regional_client):
    -        logger.info("Lambda - Getting Function...")
    +    def __get_function_code__(self):
    +        logger.info("Lambda - Getting Function Code...")
    +        # Use a thread pool handle the queueing and execution of the __fetch_function_code__ tasks, up to max_workers tasks concurrently.
    +        lambda_functions_to_fetch = {
    +            self.thread_pool.submit(
    +                self.__fetch_function_code__, function.name, function.region
    +            ): function
    +            for function in self.functions.values()
    +        }
    +
    +        for fetched_lambda_code in as_completed(lambda_functions_to_fetch):
    +            function = lambda_functions_to_fetch[fetched_lambda_code]
    +            try:
    +                function_code = fetched_lambda_code.result()
    +                if function_code:
    +                    yield function, function_code
    +            except Exception as error:
    +                logger.error(
    +                    f"{function.region} -- {error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}"
    +                )
    +
    +    def __fetch_function_code__(self, function_name, function_region):
             try:
    -            for function in self.functions.values():
    -                if function.region == regional_client.region:
    -                    function_information = regional_client.get_function(
    -                        FunctionName=function.name
    -                    )
    -                    if "Location" in function_information["Code"]:
    -                        code_location_uri = function_information["Code"]["Location"]
    -                        raw_code_zip = requests.get(code_location_uri).content
    -                        self.functions[function.arn].code = LambdaCode(
    -                            location=code_location_uri,
    -                            code_zip=zipfile.ZipFile(io.BytesIO(raw_code_zip)),
    -                        )
    -
    +            regional_client = self.regional_clients[function_region]
    +            function_information = regional_client.get_function(
    +                FunctionName=function_name
    +            )
    +            if "Location" in function_information["Code"]:
    +                code_location_uri = function_information["Code"]["Location"]
    +                raw_code_zip = requests.get(code_location_uri).content
    +                return LambdaCode(
    +                    location=code_location_uri,
    +                    code_zip=zipfile.ZipFile(io.BytesIO(raw_code_zip)),
    +                )
             except Exception as error:
                 logger.error(
    -                f"{regional_client.region} --"
    -                f" {error.__class__.__name__}[{error.__traceback__.tb_lineno}]:"
    -                f" {error}"
    +                f"{regional_client.region} -- {error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}"
                 )
    +            raise
     
         def __get_policy__(self, regional_client):
             logger.info("Lambda - Getting Policy...")
    diff --git a/prowler/providers/aws/services/backup/backup_service.py b/prowler/providers/aws/services/backup/backup_service.py
    index fec72fc3ca2..fd77ab63977 100644
    --- a/prowler/providers/aws/services/backup/backup_service.py
    +++ b/prowler/providers/aws/services/backup/backup_service.py
    @@ -152,5 +152,5 @@ class BackupReportPlan(BaseModel):
         arn: str
         region: str
         name: str
    -    last_attempted_execution_date: datetime
    +    last_attempted_execution_date: Optional[datetime]
         last_successful_execution_date: Optional[datetime]
    diff --git a/prowler/providers/aws/services/cloudfront/cloudfront_service.py b/prowler/providers/aws/services/cloudfront/cloudfront_service.py
    index 05e60138d83..24851345362 100644
    --- a/prowler/providers/aws/services/cloudfront/cloudfront_service.py
    +++ b/prowler/providers/aws/services/cloudfront/cloudfront_service.py
    @@ -53,12 +53,12 @@ def __get_distribution_config__(self, client, distributions, region) -> dict:
                     distributions[distribution_id].logging_enabled = distribution_config[
                         "DistributionConfig"
                     ]["Logging"]["Enabled"]
    -                distributions[
    -                    distribution_id
    -                ].geo_restriction_type = GeoRestrictionType(
    -                    distribution_config["DistributionConfig"]["Restrictions"][
    -                        "GeoRestriction"
    -                    ]["RestrictionType"]
    +                distributions[distribution_id].geo_restriction_type = (
    +                    GeoRestrictionType(
    +                        distribution_config["DistributionConfig"]["Restrictions"][
    +                            "GeoRestriction"
    +                        ]["RestrictionType"]
    +                    )
                     )
                     distributions[distribution_id].web_acl_id = distribution_config[
                         "DistributionConfig"
    @@ -78,9 +78,9 @@ def __get_distribution_config__(self, client, distributions, region) -> dict:
                             "DefaultCacheBehavior"
                         ].get("FieldLevelEncryptionId"),
                     )
    -                distributions[
    -                    distribution_id
    -                ].default_cache_config = default_cache_config
    +                distributions[distribution_id].default_cache_config = (
    +                    default_cache_config
    +                )
     
             except Exception as error:
                 logger.error(
    diff --git a/prowler/providers/aws/services/cloudtrail/cloudtrail_service.py b/prowler/providers/aws/services/cloudtrail/cloudtrail_service.py
    index 06de17737bc..48116bc1532 100644
    --- a/prowler/providers/aws/services/cloudtrail/cloudtrail_service.py
    +++ b/prowler/providers/aws/services/cloudtrail/cloudtrail_service.py
    @@ -140,7 +140,16 @@ def __get_insight_selectors__(self):
                                     error.response["Error"]["Code"]
                                     == "InsightNotEnabledException"
                                 ):
    -                                continue
    +                                logger.warning(
    +                                    f"{client.region} -- {error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}"
    +                                )
    +                            elif (
    +                                error.response["Error"]["Code"]
    +                                == "UnsupportedOperationException"
    +                            ):
    +                                logger.warning(
    +                                    f"{client.region} -- {error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}"
    +                                )
                                 else:
                                     logger.error(
                                         f"{client.region} -- {error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}"
    diff --git a/prowler/providers/aws/services/cloudwatch/cloudwatch_changes_to_network_acls_alarm_configured/cloudwatch_changes_to_network_acls_alarm_configured.py b/prowler/providers/aws/services/cloudwatch/cloudwatch_changes_to_network_acls_alarm_configured/cloudwatch_changes_to_network_acls_alarm_configured.py
    index ae4f0f37918..6bf9e6f36c0 100644
    --- a/prowler/providers/aws/services/cloudwatch/cloudwatch_changes_to_network_acls_alarm_configured/cloudwatch_changes_to_network_acls_alarm_configured.py
    +++ b/prowler/providers/aws/services/cloudwatch/cloudwatch_changes_to_network_acls_alarm_configured/cloudwatch_changes_to_network_acls_alarm_configured.py
    @@ -1,5 +1,3 @@
    -import re
    -
     from prowler.lib.check.models import Check, Check_Report_AWS
     from prowler.providers.aws.services.cloudtrail.cloudtrail_client import (
         cloudtrail_client,
    @@ -7,6 +5,9 @@
     from prowler.providers.aws.services.cloudwatch.cloudwatch_client import (
         cloudwatch_client,
     )
    +from prowler.providers.aws.services.cloudwatch.lib.metric_filters import (
    +    check_cloudwatch_log_metric_filter,
    +)
     from prowler.providers.aws.services.cloudwatch.logs_client import logs_client
     
     
    @@ -22,26 +23,13 @@ def execute(self):
             report.region = cloudwatch_client.region
             report.resource_id = cloudtrail_client.audited_account
             report.resource_arn = cloudtrail_client.audited_account_arn
    -        # 1. Iterate for CloudWatch Log Group in CloudTrail trails
    -        log_groups = []
    -        for trail in cloudtrail_client.trails:
    -            if trail.log_group_arn:
    -                log_groups.append(trail.log_group_arn.split(":")[6])
    -        # 2. Describe metric filters for previous log groups
    -        for metric_filter in logs_client.metric_filters:
    -            if metric_filter.log_group in log_groups:
    -                if re.search(pattern, metric_filter.pattern, flags=re.DOTALL):
    -                    report.resource_id = metric_filter.log_group
    -                    report.resource_arn = metric_filter.arn
    -                    report.region = metric_filter.region
    -                    report.status = "FAIL"
    -                    report.status_extended = f"CloudWatch log group {metric_filter.log_group} found with metric filter {metric_filter.name} but no alarms associated."
    -                    # 3. Check if there is an alarm for the metric
    -                    for alarm in cloudwatch_client.metric_alarms:
    -                        if alarm.metric == metric_filter.metric:
    -                            report.status = "PASS"
    -                            report.status_extended = f"CloudWatch log group {metric_filter.log_group} found with metric filter {metric_filter.name} and alarms set."
    -                            break
    +        report = check_cloudwatch_log_metric_filter(
    +            pattern,
    +            cloudtrail_client.trails,
    +            logs_client.metric_filters,
    +            cloudwatch_client.metric_alarms,
    +            report,
    +        )
     
             findings.append(report)
             return findings
    diff --git a/prowler/providers/aws/services/cloudwatch/cloudwatch_changes_to_network_gateways_alarm_configured/cloudwatch_changes_to_network_gateways_alarm_configured.py b/prowler/providers/aws/services/cloudwatch/cloudwatch_changes_to_network_gateways_alarm_configured/cloudwatch_changes_to_network_gateways_alarm_configured.py
    index c24461253d8..2ad693d112a 100644
    --- a/prowler/providers/aws/services/cloudwatch/cloudwatch_changes_to_network_gateways_alarm_configured/cloudwatch_changes_to_network_gateways_alarm_configured.py
    +++ b/prowler/providers/aws/services/cloudwatch/cloudwatch_changes_to_network_gateways_alarm_configured/cloudwatch_changes_to_network_gateways_alarm_configured.py
    @@ -1,5 +1,3 @@
    -import re
    -
     from prowler.lib.check.models import Check, Check_Report_AWS
     from prowler.providers.aws.services.cloudtrail.cloudtrail_client import (
         cloudtrail_client,
    @@ -7,6 +5,9 @@
     from prowler.providers.aws.services.cloudwatch.cloudwatch_client import (
         cloudwatch_client,
     )
    +from prowler.providers.aws.services.cloudwatch.lib.metric_filters import (
    +    check_cloudwatch_log_metric_filter,
    +)
     from prowler.providers.aws.services.cloudwatch.logs_client import logs_client
     
     
    @@ -22,26 +23,13 @@ def execute(self):
             report.region = cloudwatch_client.region
             report.resource_id = cloudtrail_client.audited_account
             report.resource_arn = cloudtrail_client.audited_account_arn
    -        # 1. Iterate for CloudWatch Log Group in CloudTrail trails
    -        log_groups = []
    -        for trail in cloudtrail_client.trails:
    -            if trail.log_group_arn:
    -                log_groups.append(trail.log_group_arn.split(":")[6])
    -        # 2. Describe metric filters for previous log groups
    -        for metric_filter in logs_client.metric_filters:
    -            if metric_filter.log_group in log_groups:
    -                if re.search(pattern, metric_filter.pattern, flags=re.DOTALL):
    -                    report.resource_id = metric_filter.log_group
    -                    report.resource_arn = metric_filter.arn
    -                    report.region = metric_filter.region
    -                    report.status = "FAIL"
    -                    report.status_extended = f"CloudWatch log group {metric_filter.log_group} found with metric filter {metric_filter.name} but no alarms associated."
    -                    # 3. Check if there is an alarm for the metric
    -                    for alarm in cloudwatch_client.metric_alarms:
    -                        if alarm.metric == metric_filter.metric:
    -                            report.status = "PASS"
    -                            report.status_extended = f"CloudWatch log group {metric_filter.log_group} found with metric filter {metric_filter.name} and alarms set."
    -                            break
    +        report = check_cloudwatch_log_metric_filter(
    +            pattern,
    +            cloudtrail_client.trails,
    +            logs_client.metric_filters,
    +            cloudwatch_client.metric_alarms,
    +            report,
    +        )
     
             findings.append(report)
             return findings
    diff --git a/prowler/providers/aws/services/cloudwatch/cloudwatch_changes_to_network_route_tables_alarm_configured/cloudwatch_changes_to_network_route_tables_alarm_configured.metadata.json b/prowler/providers/aws/services/cloudwatch/cloudwatch_changes_to_network_route_tables_alarm_configured/cloudwatch_changes_to_network_route_tables_alarm_configured.metadata.json
    index ff9e50e60e9..4b3f3cad316 100644
    --- a/prowler/providers/aws/services/cloudwatch/cloudwatch_changes_to_network_route_tables_alarm_configured/cloudwatch_changes_to_network_route_tables_alarm_configured.metadata.json
    +++ b/prowler/providers/aws/services/cloudwatch/cloudwatch_changes_to_network_route_tables_alarm_configured/cloudwatch_changes_to_network_route_tables_alarm_configured.metadata.json
    @@ -1,7 +1,7 @@
     {
       "Provider": "aws",
       "CheckID": "cloudwatch_changes_to_network_route_tables_alarm_configured",
    -  "CheckTitle": "Ensure a log metric filter and alarm exist for route table changes.",
    +  "CheckTitle": "Ensure route table changes are monitored",
       "CheckType": [
         "Software and Configuration Checks/Industry and Regulatory Standards/CIS AWS Foundations Benchmark"
       ],
    @@ -10,8 +10,8 @@
       "ResourceIdTemplate": "arn:partition:cloudwatch:region:account-id:certificate/resource-id",
       "Severity": "medium",
       "ResourceType": "AwsCloudTrailTrail",
    -  "Description": "Ensure a log metric filter and alarm exist for route table changes.",
    -  "Risk": "Monitoring unauthorized API calls will help reveal application errors and may reduce time to detect malicious activity.",
    +  "Description": "Real-time monitoring of API calls can be achieved by directing Cloud Trail Logs to CloudWatch Logs, or an external Security information and event management (SIEM)environment, and establishing corresponding metric filters and alarms. Routing tablesare used to route network traffic between subnets and to network gateways. It isrecommended that a metric filter and alarm be established for changes to route tables.",
    +  "Risk": "CloudWatch is an AWS native service that allows you to ob serve and monitor resources and applications. CloudTrail Logs can also be sent to an external Security informationand event management (SIEM) environment for monitoring and alerting.Monitoring changes to route tables will help ensure that all VPC traffic flows through anexpected path and prevent any accidental or intentional modifications that may lead touncontrolled network traffic. An alarm should be triggered every time an AWS API call isperformed to create, replace, delete, or disassociate a Route Table.",
       "RelatedUrl": "https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudwatch-alarms-for-cloudtrail.html",
       "Remediation": {
         "Code": {
    @@ -21,12 +21,12 @@
           "Terraform": "https://docs.bridgecrew.io/docs/monitoring_13#fix---buildtime"
         },
         "Recommendation": {
    -      "Text": "It is recommended that a metric filter and alarm be established for unauthorized requests.",
    +      "Text": "If you are using CloudTrails and CloudWatch, perform the following to setup the metric filter, alarm, SNS topic, and subscription: 1. Create a metric filter based on filter pattern provided which checks for route table changes and the  taken from audit step 1. aws logs put-metric-filter --log-group-name  -- filter-name `` --metric-transformations metricName= `` ,metricNamespace='CISBenchmark',metricValue=1 --filter-pattern '{ ($.eventName = CreateRoute) || ($.eventName = CreateRouteTable) || ($.eventName = ReplaceRoute) || ($.eventName = ReplaceRouteTableAssociation) || ($.eventName = DeleteRouteTable) || ($.eventName = DeleteRoute) || ($.eventName = DisassociateRouteTable) }' Note: You can choose your own metricName and metricNamespace strings. Using the same metricNamespace for all Foundations Benchmark metrics will group them together. 2. Create an SNS topic that the alarm will notify aws sns create-topic --name  Note: you can execute this command once and then re-use the same topic for all monitoring alarms. 3. Create an SNS subscription to the topic created in step 2 aws sns subscribe --topic-arn  --protocol  - -notification-endpoint  Note: you can execute this command once and then re-use the SNS subscription for all monitoring alarms. 4. Create an alarm that is associated with the CloudWatch Logs Metric Filter created in step 1 and an SNS topic created in step 2 aws cloudwatch put-metric-alarm --alarm-name `` --metric-name `` --statistic Sum --period 300 - -threshold 1 --comparison-operator GreaterThanOrEqualToThreshold -- evaluation-periods 1 --namespace 'CISBenchmark' --alarm-actions ",
           "Url": "https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudwatch-alarms-for-cloudtrail.html"
         }
       },
       "Categories": [],
       "DependsOn": [],
       "RelatedTo": [],
    -  "Notes": "Logging and Monitoring"
    +  "Notes": ""
     }
    diff --git a/prowler/providers/aws/services/cloudwatch/cloudwatch_changes_to_network_route_tables_alarm_configured/cloudwatch_changes_to_network_route_tables_alarm_configured.py b/prowler/providers/aws/services/cloudwatch/cloudwatch_changes_to_network_route_tables_alarm_configured/cloudwatch_changes_to_network_route_tables_alarm_configured.py
    index 6d8655d4ed2..c220af9ef3f 100644
    --- a/prowler/providers/aws/services/cloudwatch/cloudwatch_changes_to_network_route_tables_alarm_configured/cloudwatch_changes_to_network_route_tables_alarm_configured.py
    +++ b/prowler/providers/aws/services/cloudwatch/cloudwatch_changes_to_network_route_tables_alarm_configured/cloudwatch_changes_to_network_route_tables_alarm_configured.py
    @@ -1,5 +1,3 @@
    -import re
    -
     from prowler.lib.check.models import Check, Check_Report_AWS
     from prowler.providers.aws.services.cloudtrail.cloudtrail_client import (
         cloudtrail_client,
    @@ -7,12 +5,15 @@
     from prowler.providers.aws.services.cloudwatch.cloudwatch_client import (
         cloudwatch_client,
     )
    +from prowler.providers.aws.services.cloudwatch.lib.metric_filters import (
    +    check_cloudwatch_log_metric_filter,
    +)
     from prowler.providers.aws.services.cloudwatch.logs_client import logs_client
     
     
     class cloudwatch_changes_to_network_route_tables_alarm_configured(Check):
         def execute(self):
    -        pattern = r"\$\.eventName\s*=\s*.?CreateRoute.+\$\.eventName\s*=\s*.?CreateRouteTable.+\$\.eventName\s*=\s*.?ReplaceRoute.+\$\.eventName\s*=\s*.?ReplaceRouteTableAssociation.+\$\.eventName\s*=\s*.?DeleteRouteTable.+\$\.eventName\s*=\s*.?DeleteRoute.+\$\.eventName\s*=\s*.?DisassociateRouteTable.?"
    +        pattern = r"\$\.eventSource\s*=\s*.?ec2.amazonaws.com.+\$\.eventName\s*=\s*.?CreateRoute.+\$\.eventName\s*=\s*.?CreateRouteTable.+\$\.eventName\s*=\s*.?ReplaceRoute.+\$\.eventName\s*=\s*.?ReplaceRouteTableAssociation.+\$\.eventName\s*=\s*.?DeleteRouteTable.+\$\.eventName\s*=\s*.?DeleteRoute.+\$\.eventName\s*=\s*.?DisassociateRouteTable.?"
             findings = []
             report = Check_Report_AWS(self.metadata())
             report.status = "FAIL"
    @@ -22,26 +23,13 @@ def execute(self):
             report.region = cloudwatch_client.region
             report.resource_id = cloudtrail_client.audited_account
             report.resource_arn = cloudtrail_client.audited_account_arn
    -        # 1. Iterate for CloudWatch Log Group in CloudTrail trails
    -        log_groups = []
    -        for trail in cloudtrail_client.trails:
    -            if trail.log_group_arn:
    -                log_groups.append(trail.log_group_arn.split(":")[6])
    -        # 2. Describe metric filters for previous log groups
    -        for metric_filter in logs_client.metric_filters:
    -            if metric_filter.log_group in log_groups:
    -                if re.search(pattern, metric_filter.pattern, flags=re.DOTALL):
    -                    report.resource_id = metric_filter.log_group
    -                    report.resource_arn = metric_filter.arn
    -                    report.region = metric_filter.region
    -                    report.status = "FAIL"
    -                    report.status_extended = f"CloudWatch log group {metric_filter.log_group} found with metric filter {metric_filter.name} but no alarms associated."
    -                    # 3. Check if there is an alarm for the metric
    -                    for alarm in cloudwatch_client.metric_alarms:
    -                        if alarm.metric == metric_filter.metric:
    -                            report.status = "PASS"
    -                            report.status_extended = f"CloudWatch log group {metric_filter.log_group} found with metric filter {metric_filter.name} and alarms set."
    -                            break
    +        report = check_cloudwatch_log_metric_filter(
    +            pattern,
    +            cloudtrail_client.trails,
    +            logs_client.metric_filters,
    +            cloudwatch_client.metric_alarms,
    +            report,
    +        )
     
             findings.append(report)
             return findings
    diff --git a/prowler/providers/aws/services/cloudwatch/cloudwatch_changes_to_vpcs_alarm_configured/cloudwatch_changes_to_vpcs_alarm_configured.py b/prowler/providers/aws/services/cloudwatch/cloudwatch_changes_to_vpcs_alarm_configured/cloudwatch_changes_to_vpcs_alarm_configured.py
    index e95dacf16d5..41b20039222 100644
    --- a/prowler/providers/aws/services/cloudwatch/cloudwatch_changes_to_vpcs_alarm_configured/cloudwatch_changes_to_vpcs_alarm_configured.py
    +++ b/prowler/providers/aws/services/cloudwatch/cloudwatch_changes_to_vpcs_alarm_configured/cloudwatch_changes_to_vpcs_alarm_configured.py
    @@ -1,5 +1,3 @@
    -import re
    -
     from prowler.lib.check.models import Check, Check_Report_AWS
     from prowler.providers.aws.services.cloudtrail.cloudtrail_client import (
         cloudtrail_client,
    @@ -7,6 +5,9 @@
     from prowler.providers.aws.services.cloudwatch.cloudwatch_client import (
         cloudwatch_client,
     )
    +from prowler.providers.aws.services.cloudwatch.lib.metric_filters import (
    +    check_cloudwatch_log_metric_filter,
    +)
     from prowler.providers.aws.services.cloudwatch.logs_client import logs_client
     
     
    @@ -22,26 +23,13 @@ def execute(self):
             report.region = cloudwatch_client.region
             report.resource_id = cloudtrail_client.audited_account
             report.resource_arn = cloudtrail_client.audited_account_arn
    -        # 1. Iterate for CloudWatch Log Group in CloudTrail trails
    -        log_groups = []
    -        for trail in cloudtrail_client.trails:
    -            if trail.log_group_arn:
    -                log_groups.append(trail.log_group_arn.split(":")[6])
    -        # 2. Describe metric filters for previous log groups
    -        for metric_filter in logs_client.metric_filters:
    -            if metric_filter.log_group in log_groups:
    -                if re.search(pattern, metric_filter.pattern, flags=re.DOTALL):
    -                    report.resource_id = metric_filter.log_group
    -                    report.resource_arn = metric_filter.arn
    -                    report.region = metric_filter.region
    -                    report.status = "FAIL"
    -                    report.status_extended = f"CloudWatch log group {metric_filter.log_group} found with metric filter {metric_filter.name} but no alarms associated."
    -                    # 3. Check if there is an alarm for the metric
    -                    for alarm in cloudwatch_client.metric_alarms:
    -                        if alarm.metric == metric_filter.metric:
    -                            report.status = "PASS"
    -                            report.status_extended = f"CloudWatch log group {metric_filter.log_group} found with metric filter {metric_filter.name} and alarms set."
    -                            break
    +        report = check_cloudwatch_log_metric_filter(
    +            pattern,
    +            cloudtrail_client.trails,
    +            logs_client.metric_filters,
    +            cloudwatch_client.metric_alarms,
    +            report,
    +        )
     
             findings.append(report)
             return findings
    diff --git a/prowler/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.py b/prowler/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.py
    index e43e786558f..57791fd8c76 100644
    --- a/prowler/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.py
    +++ b/prowler/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.py
    @@ -1,5 +1,3 @@
    -import re
    -
     from prowler.lib.check.models import Check, Check_Report_AWS
     from prowler.providers.aws.services.cloudtrail.cloudtrail_client import (
         cloudtrail_client,
    @@ -7,6 +5,9 @@
     from prowler.providers.aws.services.cloudwatch.cloudwatch_client import (
         cloudwatch_client,
     )
    +from prowler.providers.aws.services.cloudwatch.lib.metric_filters import (
    +    check_cloudwatch_log_metric_filter,
    +)
     from prowler.providers.aws.services.cloudwatch.logs_client import logs_client
     
     
    @@ -24,26 +25,13 @@ def execute(self):
             report.region = cloudwatch_client.region
             report.resource_id = cloudtrail_client.audited_account
             report.resource_arn = cloudtrail_client.audited_account_arn
    -        # 1. Iterate for CloudWatch Log Group in CloudTrail trails
    -        log_groups = []
    -        for trail in cloudtrail_client.trails:
    -            if trail.log_group_arn:
    -                log_groups.append(trail.log_group_arn.split(":")[6])
    -        # 2. Describe metric filters for previous log groups
    -        for metric_filter in logs_client.metric_filters:
    -            if metric_filter.log_group in log_groups:
    -                if re.search(pattern, metric_filter.pattern, flags=re.DOTALL):
    -                    report.resource_id = metric_filter.log_group
    -                    report.resource_arn = metric_filter.arn
    -                    report.region = metric_filter.region
    -                    report.status = "FAIL"
    -                    report.status_extended = f"CloudWatch log group {metric_filter.log_group} found with metric filter {metric_filter.name} but no alarms associated."
    -                    # 3. Check if there is an alarm for the metric
    -                    for alarm in cloudwatch_client.metric_alarms:
    -                        if alarm.metric == metric_filter.metric:
    -                            report.status = "PASS"
    -                            report.status_extended = f"CloudWatch log group {metric_filter.log_group} found with metric filter {metric_filter.name} and alarms set."
    -                            break
    +        report = check_cloudwatch_log_metric_filter(
    +            pattern,
    +            cloudtrail_client.trails,
    +            logs_client.metric_filters,
    +            cloudwatch_client.metric_alarms,
    +            report,
    +        )
     
             findings.append(report)
             return findings
    diff --git a/prowler/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.py b/prowler/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.py
    index 78f505b031a..90e8fcfa026 100644
    --- a/prowler/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.py
    +++ b/prowler/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.py
    @@ -1,5 +1,3 @@
    -import re
    -
     from prowler.lib.check.models import Check, Check_Report_AWS
     from prowler.providers.aws.services.cloudtrail.cloudtrail_client import (
         cloudtrail_client,
    @@ -7,6 +5,9 @@
     from prowler.providers.aws.services.cloudwatch.cloudwatch_client import (
         cloudwatch_client,
     )
    +from prowler.providers.aws.services.cloudwatch.lib.metric_filters import (
    +    check_cloudwatch_log_metric_filter,
    +)
     from prowler.providers.aws.services.cloudwatch.logs_client import logs_client
     
     
    @@ -24,26 +25,13 @@ def execute(self):
             report.region = cloudwatch_client.region
             report.resource_id = cloudtrail_client.audited_account
             report.resource_arn = cloudtrail_client.audited_account_arn
    -        # 1. Iterate for CloudWatch Log Group in CloudTrail trails
    -        log_groups = []
    -        for trail in cloudtrail_client.trails:
    -            if trail.log_group_arn:
    -                log_groups.append(trail.log_group_arn.split(":")[6])
    -        # 2. Describe metric filters for previous log groups
    -        for metric_filter in logs_client.metric_filters:
    -            if metric_filter.log_group in log_groups:
    -                if re.search(pattern, metric_filter.pattern, flags=re.DOTALL):
    -                    report.resource_id = metric_filter.log_group
    -                    report.resource_arn = metric_filter.arn
    -                    report.region = metric_filter.region
    -                    report.status = "FAIL"
    -                    report.status_extended = f"CloudWatch log group {metric_filter.log_group} found with metric filter {metric_filter.name} but no alarms associated."
    -                    # 3. Check if there is an alarm for the metric
    -                    for alarm in cloudwatch_client.metric_alarms:
    -                        if alarm.metric == metric_filter.metric:
    -                            report.status = "PASS"
    -                            report.status_extended = f"CloudWatch log group {metric_filter.log_group} found with metric filter {metric_filter.name} and alarms set."
    -                            break
    +        report = check_cloudwatch_log_metric_filter(
    +            pattern,
    +            cloudtrail_client.trails,
    +            logs_client.metric_filters,
    +            cloudwatch_client.metric_alarms,
    +            report,
    +        )
     
             findings.append(report)
             return findings
    diff --git a/prowler/providers/aws/services/cloudwatch/cloudwatch_log_metric_filter_authentication_failures/cloudwatch_log_metric_filter_authentication_failures.py b/prowler/providers/aws/services/cloudwatch/cloudwatch_log_metric_filter_authentication_failures/cloudwatch_log_metric_filter_authentication_failures.py
    index 861950a2ef7..17c627f12a4 100644
    --- a/prowler/providers/aws/services/cloudwatch/cloudwatch_log_metric_filter_authentication_failures/cloudwatch_log_metric_filter_authentication_failures.py
    +++ b/prowler/providers/aws/services/cloudwatch/cloudwatch_log_metric_filter_authentication_failures/cloudwatch_log_metric_filter_authentication_failures.py
    @@ -1,5 +1,3 @@
    -import re
    -
     from prowler.lib.check.models import Check, Check_Report_AWS
     from prowler.providers.aws.services.cloudtrail.cloudtrail_client import (
         cloudtrail_client,
    @@ -7,6 +5,9 @@
     from prowler.providers.aws.services.cloudwatch.cloudwatch_client import (
         cloudwatch_client,
     )
    +from prowler.providers.aws.services.cloudwatch.lib.metric_filters import (
    +    check_cloudwatch_log_metric_filter,
    +)
     from prowler.providers.aws.services.cloudwatch.logs_client import logs_client
     
     
    @@ -22,26 +23,13 @@ def execute(self):
             report.region = cloudwatch_client.region
             report.resource_id = cloudtrail_client.audited_account
             report.resource_arn = cloudtrail_client.audited_account_arn
    -        # 1. Iterate for CloudWatch Log Group in CloudTrail trails
    -        log_groups = []
    -        for trail in cloudtrail_client.trails:
    -            if trail.log_group_arn:
    -                log_groups.append(trail.log_group_arn.split(":")[6])
    -        # 2. Describe metric filters for previous log groups
    -        for metric_filter in logs_client.metric_filters:
    -            if metric_filter.log_group in log_groups:
    -                if re.search(pattern, metric_filter.pattern, flags=re.DOTALL):
    -                    report.resource_id = metric_filter.log_group
    -                    report.resource_arn = metric_filter.arn
    -                    report.region = metric_filter.region
    -                    report.status = "FAIL"
    -                    report.status_extended = f"CloudWatch log group {metric_filter.log_group} found with metric filter {metric_filter.name} but no alarms associated."
    -                    # 3. Check if there is an alarm for the metric
    -                    for alarm in cloudwatch_client.metric_alarms:
    -                        if alarm.metric == metric_filter.metric:
    -                            report.status = "PASS"
    -                            report.status_extended = f"CloudWatch log group {metric_filter.log_group} found with metric filter {metric_filter.name} and alarms set."
    -                            break
    +        report = check_cloudwatch_log_metric_filter(
    +            pattern,
    +            cloudtrail_client.trails,
    +            logs_client.metric_filters,
    +            cloudwatch_client.metric_alarms,
    +            report,
    +        )
     
             findings.append(report)
             return findings
    diff --git a/prowler/providers/aws/services/cloudwatch/cloudwatch_log_metric_filter_aws_organizations_changes/cloudwatch_log_metric_filter_aws_organizations_changes.py b/prowler/providers/aws/services/cloudwatch/cloudwatch_log_metric_filter_aws_organizations_changes/cloudwatch_log_metric_filter_aws_organizations_changes.py
    index 667f35d60ce..b4a49a90879 100644
    --- a/prowler/providers/aws/services/cloudwatch/cloudwatch_log_metric_filter_aws_organizations_changes/cloudwatch_log_metric_filter_aws_organizations_changes.py
    +++ b/prowler/providers/aws/services/cloudwatch/cloudwatch_log_metric_filter_aws_organizations_changes/cloudwatch_log_metric_filter_aws_organizations_changes.py
    @@ -1,5 +1,3 @@
    -import re
    -
     from prowler.lib.check.models import Check, Check_Report_AWS
     from prowler.providers.aws.services.cloudtrail.cloudtrail_client import (
         cloudtrail_client,
    @@ -7,6 +5,9 @@
     from prowler.providers.aws.services.cloudwatch.cloudwatch_client import (
         cloudwatch_client,
     )
    +from prowler.providers.aws.services.cloudwatch.lib.metric_filters import (
    +    check_cloudwatch_log_metric_filter,
    +)
     from prowler.providers.aws.services.cloudwatch.logs_client import logs_client
     
     
    @@ -22,26 +23,13 @@ def execute(self):
             report.region = cloudwatch_client.region
             report.resource_id = cloudtrail_client.audited_account
             report.resource_arn = cloudtrail_client.audited_account_arn
    -        # 1. Iterate for CloudWatch Log Group in CloudTrail trails
    -        log_groups = []
    -        for trail in cloudtrail_client.trails:
    -            if trail.log_group_arn:
    -                log_groups.append(trail.log_group_arn.split(":")[6])
    -        # 2. Describe metric filters for previous log groups
    -        for metric_filter in logs_client.metric_filters:
    -            if metric_filter.log_group in log_groups:
    -                if re.search(pattern, metric_filter.pattern, flags=re.DOTALL):
    -                    report.resource_id = metric_filter.log_group
    -                    report.resource_arn = metric_filter.arn
    -                    report.region = metric_filter.region
    -                    report.status = "FAIL"
    -                    report.status_extended = f"CloudWatch log group {metric_filter.log_group} found with metric filter {metric_filter.name} but no alarms associated."
    -                    # 3. Check if there is an alarm for the metric
    -                    for alarm in cloudwatch_client.metric_alarms:
    -                        if alarm.metric == metric_filter.metric:
    -                            report.status = "PASS"
    -                            report.status_extended = f"CloudWatch log group {metric_filter.log_group} found with metric filter {metric_filter.name} and alarms set."
    -                            break
    +        report = check_cloudwatch_log_metric_filter(
    +            pattern,
    +            cloudtrail_client.trails,
    +            logs_client.metric_filters,
    +            cloudwatch_client.metric_alarms,
    +            report,
    +        )
     
             findings.append(report)
             return findings
    diff --git a/prowler/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.py b/prowler/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.py
    index 483a9ec2788..cb963ca12f3 100644
    --- a/prowler/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.py
    +++ b/prowler/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.py
    @@ -1,5 +1,3 @@
    -import re
    -
     from prowler.lib.check.models import Check, Check_Report_AWS
     from prowler.providers.aws.services.cloudtrail.cloudtrail_client import (
         cloudtrail_client,
    @@ -7,6 +5,9 @@
     from prowler.providers.aws.services.cloudwatch.cloudwatch_client import (
         cloudwatch_client,
     )
    +from prowler.providers.aws.services.cloudwatch.lib.metric_filters import (
    +    check_cloudwatch_log_metric_filter,
    +)
     from prowler.providers.aws.services.cloudwatch.logs_client import logs_client
     
     
    @@ -22,26 +23,13 @@ def execute(self):
             report.region = cloudwatch_client.region
             report.resource_id = cloudtrail_client.audited_account
             report.resource_arn = cloudtrail_client.audited_account_arn
    -        # 1. Iterate for CloudWatch Log Group in CloudTrail trails
    -        log_groups = []
    -        for trail in cloudtrail_client.trails:
    -            if trail.log_group_arn:
    -                log_groups.append(trail.log_group_arn.split(":")[6])
    -        # 2. Describe metric filters for previous log groups
    -        for metric_filter in logs_client.metric_filters:
    -            if metric_filter.log_group in log_groups:
    -                if re.search(pattern, metric_filter.pattern, flags=re.DOTALL):
    -                    report.resource_id = metric_filter.log_group
    -                    report.resource_arn = metric_filter.arn
    -                    report.region = metric_filter.region
    -                    report.status = "FAIL"
    -                    report.status_extended = f"CloudWatch log group {metric_filter.log_group} found with metric filter {metric_filter.name} but no alarms associated."
    -                    # 3. Check if there is an alarm for the metric
    -                    for alarm in cloudwatch_client.metric_alarms:
    -                        if alarm.metric == metric_filter.metric:
    -                            report.status = "PASS"
    -                            report.status_extended = f"CloudWatch log group {metric_filter.log_group} found with metric filter {metric_filter.name} and alarms set."
    -                            break
    +        report = check_cloudwatch_log_metric_filter(
    +            pattern,
    +            cloudtrail_client.trails,
    +            logs_client.metric_filters,
    +            cloudwatch_client.metric_alarms,
    +            report,
    +        )
     
             findings.append(report)
             return findings
    diff --git a/prowler/providers/aws/services/cloudwatch/cloudwatch_log_metric_filter_for_s3_bucket_policy_changes/cloudwatch_log_metric_filter_for_s3_bucket_policy_changes.py b/prowler/providers/aws/services/cloudwatch/cloudwatch_log_metric_filter_for_s3_bucket_policy_changes/cloudwatch_log_metric_filter_for_s3_bucket_policy_changes.py
    index 4ed802404d4..1e80b5d21b8 100644
    --- a/prowler/providers/aws/services/cloudwatch/cloudwatch_log_metric_filter_for_s3_bucket_policy_changes/cloudwatch_log_metric_filter_for_s3_bucket_policy_changes.py
    +++ b/prowler/providers/aws/services/cloudwatch/cloudwatch_log_metric_filter_for_s3_bucket_policy_changes/cloudwatch_log_metric_filter_for_s3_bucket_policy_changes.py
    @@ -1,5 +1,3 @@
    -import re
    -
     from prowler.lib.check.models import Check, Check_Report_AWS
     from prowler.providers.aws.services.cloudtrail.cloudtrail_client import (
         cloudtrail_client,
    @@ -7,6 +5,9 @@
     from prowler.providers.aws.services.cloudwatch.cloudwatch_client import (
         cloudwatch_client,
     )
    +from prowler.providers.aws.services.cloudwatch.lib.metric_filters import (
    +    check_cloudwatch_log_metric_filter,
    +)
     from prowler.providers.aws.services.cloudwatch.logs_client import logs_client
     
     
    @@ -22,26 +23,14 @@ def execute(self):
             report.region = cloudwatch_client.region
             report.resource_id = cloudtrail_client.audited_account
             report.resource_arn = cloudtrail_client.audited_account_arn
    -        # 1. Iterate for CloudWatch Log Group in CloudTrail trails
    -        log_groups = []
    -        for trail in cloudtrail_client.trails:
    -            if trail.log_group_arn:
    -                log_groups.append(trail.log_group_arn.split(":")[6])
    -        # 2. Describe metric filters for previous log groups
    -        for metric_filter in logs_client.metric_filters:
    -            if metric_filter.log_group in log_groups:
    -                if re.search(pattern, metric_filter.pattern, flags=re.DOTALL):
    -                    report.resource_id = metric_filter.log_group
    -                    report.resource_arn = metric_filter.arn
    -                    report.region = metric_filter.region
    -                    report.status = "FAIL"
    -                    report.status_extended = f"CloudWatch log group {metric_filter.log_group} found with metric filter {metric_filter.name} but no alarms associated."
    -                    # 3. Check if there is an alarm for the metric
    -                    for alarm in cloudwatch_client.metric_alarms:
    -                        if alarm.metric == metric_filter.metric:
    -                            report.status = "PASS"
    -                            report.status_extended = f"CloudWatch log group {metric_filter.log_group} found with metric filter {metric_filter.name} and alarms set."
    -                            break
    +
    +        report = check_cloudwatch_log_metric_filter(
    +            pattern,
    +            cloudtrail_client.trails,
    +            logs_client.metric_filters,
    +            cloudwatch_client.metric_alarms,
    +            report,
    +        )
     
             findings.append(report)
             return findings
    diff --git a/prowler/providers/aws/services/cloudwatch/cloudwatch_log_metric_filter_policy_changes/cloudwatch_log_metric_filter_policy_changes.py b/prowler/providers/aws/services/cloudwatch/cloudwatch_log_metric_filter_policy_changes/cloudwatch_log_metric_filter_policy_changes.py
    index dbfb9a06089..b33e9425eeb 100644
    --- a/prowler/providers/aws/services/cloudwatch/cloudwatch_log_metric_filter_policy_changes/cloudwatch_log_metric_filter_policy_changes.py
    +++ b/prowler/providers/aws/services/cloudwatch/cloudwatch_log_metric_filter_policy_changes/cloudwatch_log_metric_filter_policy_changes.py
    @@ -1,5 +1,3 @@
    -import re
    -
     from prowler.lib.check.models import Check, Check_Report_AWS
     from prowler.providers.aws.services.cloudtrail.cloudtrail_client import (
         cloudtrail_client,
    @@ -7,6 +5,9 @@
     from prowler.providers.aws.services.cloudwatch.cloudwatch_client import (
         cloudwatch_client,
     )
    +from prowler.providers.aws.services.cloudwatch.lib.metric_filters import (
    +    check_cloudwatch_log_metric_filter,
    +)
     from prowler.providers.aws.services.cloudwatch.logs_client import logs_client
     
     
    @@ -22,26 +23,13 @@ def execute(self):
             report.region = cloudwatch_client.region
             report.resource_id = cloudtrail_client.audited_account
             report.resource_arn = cloudtrail_client.audited_account_arn
    -        # 1. Iterate for CloudWatch Log Group in CloudTrail trails
    -        log_groups = []
    -        for trail in cloudtrail_client.trails:
    -            if trail.log_group_arn:
    -                log_groups.append(trail.log_group_arn.split(":")[6])
    -        # 2. Describe metric filters for previous log groups
    -        for metric_filter in logs_client.metric_filters:
    -            if metric_filter.log_group in log_groups:
    -                if re.search(pattern, metric_filter.pattern, flags=re.DOTALL):
    -                    report.resource_id = metric_filter.log_group
    -                    report.resource_arn = metric_filter.arn
    -                    report.region = metric_filter.region
    -                    report.status = "FAIL"
    -                    report.status_extended = f"CloudWatch log group {metric_filter.log_group} found with metric filter {metric_filter.name} but no alarms associated."
    -                    # 3. Check if there is an alarm for the metric
    -                    for alarm in cloudwatch_client.metric_alarms:
    -                        if alarm.metric == metric_filter.metric:
    -                            report.status = "PASS"
    -                            report.status_extended = f"CloudWatch log group {metric_filter.log_group} found with metric filter {metric_filter.name} and alarms set."
    -                            break
    +        report = check_cloudwatch_log_metric_filter(
    +            pattern,
    +            cloudtrail_client.trails,
    +            logs_client.metric_filters,
    +            cloudwatch_client.metric_alarms,
    +            report,
    +        )
     
             findings.append(report)
             return findings
    diff --git a/prowler/providers/aws/services/cloudwatch/cloudwatch_log_metric_filter_root_usage/cloudwatch_log_metric_filter_root_usage.py b/prowler/providers/aws/services/cloudwatch/cloudwatch_log_metric_filter_root_usage/cloudwatch_log_metric_filter_root_usage.py
    index 36f92790286..4c78c4de1a0 100644
    --- a/prowler/providers/aws/services/cloudwatch/cloudwatch_log_metric_filter_root_usage/cloudwatch_log_metric_filter_root_usage.py
    +++ b/prowler/providers/aws/services/cloudwatch/cloudwatch_log_metric_filter_root_usage/cloudwatch_log_metric_filter_root_usage.py
    @@ -1,5 +1,3 @@
    -import re
    -
     from prowler.lib.check.models import Check, Check_Report_AWS
     from prowler.providers.aws.services.cloudtrail.cloudtrail_client import (
         cloudtrail_client,
    @@ -7,6 +5,9 @@
     from prowler.providers.aws.services.cloudwatch.cloudwatch_client import (
         cloudwatch_client,
     )
    +from prowler.providers.aws.services.cloudwatch.lib.metric_filters import (
    +    check_cloudwatch_log_metric_filter,
    +)
     from prowler.providers.aws.services.cloudwatch.logs_client import logs_client
     
     
    @@ -22,26 +23,13 @@ def execute(self):
             report.region = cloudwatch_client.region
             report.resource_id = cloudtrail_client.audited_account
             report.resource_arn = cloudtrail_client.audited_account_arn
    -        # 1. Iterate for CloudWatch Log Group in CloudTrail trails
    -        log_groups = []
    -        for trail in cloudtrail_client.trails:
    -            if trail.log_group_arn:
    -                log_groups.append(trail.log_group_arn.split(":")[6])
    -        # 2. Describe metric filters for previous log groups
    -        for metric_filter in logs_client.metric_filters:
    -            if metric_filter.log_group in log_groups:
    -                if re.search(pattern, metric_filter.pattern, flags=re.DOTALL):
    -                    report.resource_id = metric_filter.log_group
    -                    report.resource_arn = metric_filter.arn
    -                    report.region = metric_filter.region
    -                    report.status = "FAIL"
    -                    report.status_extended = f"CloudWatch log group {metric_filter.log_group} found with metric filter {metric_filter.name} but no alarms associated."
    -                    # 3. Check if there is an alarm for the metric
    -                    for alarm in cloudwatch_client.metric_alarms:
    -                        if alarm.metric == metric_filter.metric:
    -                            report.status = "PASS"
    -                            report.status_extended = f"CloudWatch log group {metric_filter.log_group} found with metric filter {metric_filter.name} and alarms set."
    -                            break
    +        report = check_cloudwatch_log_metric_filter(
    +            pattern,
    +            cloudtrail_client.trails,
    +            logs_client.metric_filters,
    +            cloudwatch_client.metric_alarms,
    +            report,
    +        )
     
             findings.append(report)
             return findings
    diff --git a/prowler/providers/aws/services/cloudwatch/cloudwatch_log_metric_filter_security_group_changes/cloudwatch_log_metric_filter_security_group_changes.py b/prowler/providers/aws/services/cloudwatch/cloudwatch_log_metric_filter_security_group_changes/cloudwatch_log_metric_filter_security_group_changes.py
    index 12b15696e98..e87275a592f 100644
    --- a/prowler/providers/aws/services/cloudwatch/cloudwatch_log_metric_filter_security_group_changes/cloudwatch_log_metric_filter_security_group_changes.py
    +++ b/prowler/providers/aws/services/cloudwatch/cloudwatch_log_metric_filter_security_group_changes/cloudwatch_log_metric_filter_security_group_changes.py
    @@ -1,5 +1,3 @@
    -import re
    -
     from prowler.lib.check.models import Check, Check_Report_AWS
     from prowler.providers.aws.services.cloudtrail.cloudtrail_client import (
         cloudtrail_client,
    @@ -7,6 +5,9 @@
     from prowler.providers.aws.services.cloudwatch.cloudwatch_client import (
         cloudwatch_client,
     )
    +from prowler.providers.aws.services.cloudwatch.lib.metric_filters import (
    +    check_cloudwatch_log_metric_filter,
    +)
     from prowler.providers.aws.services.cloudwatch.logs_client import logs_client
     
     
    @@ -22,26 +23,13 @@ def execute(self):
             report.region = cloudwatch_client.region
             report.resource_id = cloudtrail_client.audited_account
             report.resource_arn = cloudtrail_client.audited_account_arn
    -        # 1. Iterate for CloudWatch Log Group in CloudTrail trails
    -        log_groups = []
    -        for trail in cloudtrail_client.trails:
    -            if trail.log_group_arn:
    -                log_groups.append(trail.log_group_arn.split(":")[6])
    -        # 2. Describe metric filters for previous log groups
    -        for metric_filter in logs_client.metric_filters:
    -            if metric_filter.log_group in log_groups:
    -                if re.search(pattern, metric_filter.pattern, flags=re.DOTALL):
    -                    report.resource_id = metric_filter.log_group
    -                    report.resource_arn = metric_filter.arn
    -                    report.region = metric_filter.region
    -                    report.status = "FAIL"
    -                    report.status_extended = f"CloudWatch log group {metric_filter.log_group} found with metric filter {metric_filter.name} but no alarms associated."
    -                    # 3. Check if there is an alarm for the metric
    -                    for alarm in cloudwatch_client.metric_alarms:
    -                        if alarm.metric == metric_filter.metric:
    -                            report.status = "PASS"
    -                            report.status_extended = f"CloudWatch log group {metric_filter.log_group} found with metric filter {metric_filter.name} and alarms set."
    -                            break
    +        report = check_cloudwatch_log_metric_filter(
    +            pattern,
    +            cloudtrail_client.trails,
    +            logs_client.metric_filters,
    +            cloudwatch_client.metric_alarms,
    +            report,
    +        )
     
             findings.append(report)
             return findings
    diff --git a/prowler/providers/aws/services/cloudwatch/cloudwatch_log_metric_filter_sign_in_without_mfa/cloudwatch_log_metric_filter_sign_in_without_mfa.py b/prowler/providers/aws/services/cloudwatch/cloudwatch_log_metric_filter_sign_in_without_mfa/cloudwatch_log_metric_filter_sign_in_without_mfa.py
    index 3ac928224e8..bfa69df3d61 100644
    --- a/prowler/providers/aws/services/cloudwatch/cloudwatch_log_metric_filter_sign_in_without_mfa/cloudwatch_log_metric_filter_sign_in_without_mfa.py
    +++ b/prowler/providers/aws/services/cloudwatch/cloudwatch_log_metric_filter_sign_in_without_mfa/cloudwatch_log_metric_filter_sign_in_without_mfa.py
    @@ -1,5 +1,3 @@
    -import re
    -
     from prowler.lib.check.models import Check, Check_Report_AWS
     from prowler.providers.aws.services.cloudtrail.cloudtrail_client import (
         cloudtrail_client,
    @@ -7,6 +5,9 @@
     from prowler.providers.aws.services.cloudwatch.cloudwatch_client import (
         cloudwatch_client,
     )
    +from prowler.providers.aws.services.cloudwatch.lib.metric_filters import (
    +    check_cloudwatch_log_metric_filter,
    +)
     from prowler.providers.aws.services.cloudwatch.logs_client import logs_client
     
     
    @@ -22,26 +23,13 @@ def execute(self):
             report.region = cloudwatch_client.region
             report.resource_id = cloudtrail_client.audited_account
             report.resource_arn = cloudtrail_client.audited_account_arn
    -        # 1. Iterate for CloudWatch Log Group in CloudTrail trails
    -        log_groups = []
    -        for trail in cloudtrail_client.trails:
    -            if trail.log_group_arn:
    -                log_groups.append(trail.log_group_arn.split(":")[6])
    -        # 2. Describe metric filters for previous log groups
    -        for metric_filter in logs_client.metric_filters:
    -            if metric_filter.log_group in log_groups:
    -                if re.search(pattern, metric_filter.pattern, flags=re.DOTALL):
    -                    report.resource_id = metric_filter.log_group
    -                    report.resource_arn = metric_filter.arn
    -                    report.region = metric_filter.region
    -                    report.status = "FAIL"
    -                    report.status_extended = f"CloudWatch log group {metric_filter.log_group} found with metric filter {metric_filter.name} but no alarms associated."
    -                    # 3. Check if there is an alarm for the metric
    -                    for alarm in cloudwatch_client.metric_alarms:
    -                        if alarm.metric == metric_filter.metric:
    -                            report.status = "PASS"
    -                            report.status_extended = f"CloudWatch log group {metric_filter.log_group} found with metric filter {metric_filter.name} and alarms set."
    -                            break
    +        report = check_cloudwatch_log_metric_filter(
    +            pattern,
    +            cloudtrail_client.trails,
    +            logs_client.metric_filters,
    +            cloudwatch_client.metric_alarms,
    +            report,
    +        )
     
             findings.append(report)
             return findings
    diff --git a/prowler/providers/aws/services/cloudwatch/cloudwatch_log_metric_filter_unauthorized_api_calls/cloudwatch_log_metric_filter_unauthorized_api_calls.py b/prowler/providers/aws/services/cloudwatch/cloudwatch_log_metric_filter_unauthorized_api_calls/cloudwatch_log_metric_filter_unauthorized_api_calls.py
    index 7e8200bccdd..a9a96fa7314 100644
    --- a/prowler/providers/aws/services/cloudwatch/cloudwatch_log_metric_filter_unauthorized_api_calls/cloudwatch_log_metric_filter_unauthorized_api_calls.py
    +++ b/prowler/providers/aws/services/cloudwatch/cloudwatch_log_metric_filter_unauthorized_api_calls/cloudwatch_log_metric_filter_unauthorized_api_calls.py
    @@ -1,5 +1,3 @@
    -import re
    -
     from prowler.lib.check.models import Check, Check_Report_AWS
     from prowler.providers.aws.services.cloudtrail.cloudtrail_client import (
         cloudtrail_client,
    @@ -7,6 +5,9 @@
     from prowler.providers.aws.services.cloudwatch.cloudwatch_client import (
         cloudwatch_client,
     )
    +from prowler.providers.aws.services.cloudwatch.lib.metric_filters import (
    +    check_cloudwatch_log_metric_filter,
    +)
     from prowler.providers.aws.services.cloudwatch.logs_client import logs_client
     
     
    @@ -22,26 +23,13 @@ def execute(self):
             report.region = cloudwatch_client.region
             report.resource_id = cloudtrail_client.audited_account
             report.resource_arn = cloudtrail_client.audited_account_arn
    -        # 1. Iterate for CloudWatch Log Group in CloudTrail trails
    -        log_groups = []
    -        for trail in cloudtrail_client.trails:
    -            if trail.log_group_arn:
    -                log_groups.append(trail.log_group_arn.split(":")[6])
    -        # 2. Describe metric filters for previous log groups
    -        for metric_filter in logs_client.metric_filters:
    -            if metric_filter.log_group in log_groups:
    -                if re.search(pattern, metric_filter.pattern, flags=re.DOTALL):
    -                    report.resource_id = metric_filter.log_group
    -                    report.resource_arn = metric_filter.arn
    -                    report.region = metric_filter.region
    -                    report.status = "FAIL"
    -                    report.status_extended = f"CloudWatch log group {metric_filter.log_group} found with metric filter {metric_filter.name} but no alarms associated."
    -                    # 3. Check if there is an alarm for the metric
    -                    for alarm in cloudwatch_client.metric_alarms:
    -                        if alarm.metric == metric_filter.metric:
    -                            report.status = "PASS"
    -                            report.status_extended = f"CloudWatch log group {metric_filter.log_group} found with metric filter {metric_filter.name} and alarms set."
    -                            break
    +        report = check_cloudwatch_log_metric_filter(
    +            pattern,
    +            cloudtrail_client.trails,
    +            logs_client.metric_filters,
    +            cloudwatch_client.metric_alarms,
    +            report,
    +        )
     
             findings.append(report)
             return findings
    diff --git a/prowler/providers/aws/services/cloudwatch/cloudwatch_service.py b/prowler/providers/aws/services/cloudwatch/cloudwatch_service.py
    index c765c8e0bb5..93f0e1eaf68 100644
    --- a/prowler/providers/aws/services/cloudwatch/cloudwatch_service.py
    +++ b/prowler/providers/aws/services/cloudwatch/cloudwatch_service.py
    @@ -218,9 +218,9 @@ class LogGroup(BaseModel):
         never_expire: bool
         kms_id: Optional[str]
         region: str
    -    log_streams: dict[
    -        str, list[str]
    -    ] = {}  # Log stream name as the key, array of events as the value
    +    log_streams: dict[str, list[str]] = (
    +        {}
    +    )  # Log stream name as the key, array of events as the value
         tags: Optional[list] = []
     
     
    diff --git a/prowler/providers/aws/services/cloudwatch/lib/metric_filters.py b/prowler/providers/aws/services/cloudwatch/lib/metric_filters.py
    new file mode 100644
    index 00000000000..ea6dcafcd94
    --- /dev/null
    +++ b/prowler/providers/aws/services/cloudwatch/lib/metric_filters.py
    @@ -0,0 +1,34 @@
    +import re
    +
    +from prowler.lib.check.models import Check_Report_AWS
    +
    +
    +def check_cloudwatch_log_metric_filter(
    +    metric_filter_pattern: str,
    +    trails: list,
    +    metric_filters: list,
    +    metric_alarms: list,
    +    report: Check_Report_AWS,
    +):
    +    # 1. Iterate for CloudWatch Log Group in CloudTrail trails
    +    log_groups = []
    +    for trail in trails:
    +        if trail.log_group_arn:
    +            log_groups.append(trail.log_group_arn.split(":")[6])
    +    # 2. Describe metric filters for previous log groups
    +    for metric_filter in metric_filters:
    +        if metric_filter.log_group in log_groups:
    +            if re.search(metric_filter_pattern, metric_filter.pattern, flags=re.DOTALL):
    +                report.resource_id = metric_filter.log_group
    +                report.resource_arn = metric_filter.arn
    +                report.region = metric_filter.region
    +                report.status = "FAIL"
    +                report.status_extended = f"CloudWatch log group {metric_filter.log_group} found with metric filter {metric_filter.name} but no alarms associated."
    +                # 3. Check if there is an alarm for the metric
    +                for alarm in metric_alarms:
    +                    if alarm.metric == metric_filter.metric:
    +                        report.status = "PASS"
    +                        report.status_extended = f"CloudWatch log group {metric_filter.log_group} found with metric filter {metric_filter.name} and alarms set."
    +                        break
    +
    +    return report
    diff --git a/prowler/providers/aws/services/inspector2/inspector2_findings_exist/__init__.py b/prowler/providers/aws/services/cognito/__init__.py
    similarity index 100%
    rename from prowler/providers/aws/services/inspector2/inspector2_findings_exist/__init__.py
    rename to prowler/providers/aws/services/cognito/__init__.py
    diff --git a/prowler/providers/aws/services/cognito/cognito_idp_client.py b/prowler/providers/aws/services/cognito/cognito_idp_client.py
    new file mode 100644
    index 00000000000..f71f16aff5c
    --- /dev/null
    +++ b/prowler/providers/aws/services/cognito/cognito_idp_client.py
    @@ -0,0 +1,4 @@
    +from prowler.providers.aws.lib.audit_info.audit_info import current_audit_info
    +from prowler.providers.aws.services.cognito.cognito_service import CognitoIDP
    +
    +cognito_idp_client = CognitoIDP(current_audit_info)
    diff --git a/prowler/providers/aws/services/cognito/cognito_service.py b/prowler/providers/aws/services/cognito/cognito_service.py
    new file mode 100644
    index 00000000000..735846de0b9
    --- /dev/null
    +++ b/prowler/providers/aws/services/cognito/cognito_service.py
    @@ -0,0 +1,122 @@
    +from datetime import datetime
    +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.lib.service.service import AWSService
    +
    +
    +################## CognitoIDP
    +class CognitoIDP(AWSService):
    +    def __init__(self, audit_info):
    +        super().__init__("cognito-idp", audit_info)
    +        self.user_pools = {}
    +        self.__threading_call__(self.__list_user_pools__)
    +        self.__describe_user_pools__()
    +        self.__get_user_pool_mfa_config__()
    +
    +    def __list_user_pools__(self, regional_client):
    +        logger.info("Cognito - Listing User Pools...")
    +        try:
    +            user_pools_paginator = regional_client.get_paginator("list_user_pools")
    +            for page in user_pools_paginator.paginate(MaxResults=60):
    +                for user_pool in page["UserPools"]:
    +                    arn = f"arn:{self.audited_partition}:cognito-idp:{regional_client.region}:{self.audited_account}:userpool/{user_pool['Id']}"
    +                    if not self.audit_resources or (
    +                        is_resource_filtered(arn, self.audit_resources)
    +                    ):
    +                        try:
    +                            self.user_pools[arn] = UserPool(
    +                                id=user_pool["Id"],
    +                                arn=arn,
    +                                name=user_pool["Name"],
    +                                region=regional_client.region,
    +                                last_modified=user_pool["LastModifiedDate"],
    +                                creation_date=user_pool["CreationDate"],
    +                                status=user_pool.get("Status", "Disabled"),
    +                            )
    +                        except Exception as error:
    +                            logger.error(
    +                                f"{regional_client.region} -- {error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}"
    +                            )
    +        except Exception as error:
    +            logger.error(
    +                f"{regional_client.region} -- {error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}"
    +            )
    +
    +    def __describe_user_pools__(self):
    +        logger.info("Cognito - Describing User Pools...")
    +        try:
    +            for user_pool in self.user_pools.values():
    +                try:
    +                    user_pool_details = self.regional_clients[
    +                        user_pool.region
    +                    ].describe_user_pool(UserPoolId=user_pool.id)["UserPool"]
    +                    user_pool.password_policy = user_pool_details.get(
    +                        "Policies", {}
    +                    ).get("PasswordPolicy", {})
    +                    user_pool.deletion_protection = user_pool_details.get(
    +                        "DeletionProtection", "INACTIVE"
    +                    )
    +                    user_pool.advanced_security_mode = user_pool_details.get(
    +                        "UserPoolAddOns", {}
    +                    ).get("AdvancedSecurityMode", "OFF")
    +                    user_pool.tags = [user_pool_details.get("UserPoolTags", "")]
    +                except Exception as error:
    +                    logger.error(
    +                        f"{user_pool.region} -- {error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}"
    +                    )
    +        except Exception as error:
    +            logger.error(
    +                f"{user_pool.region} -- {error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}"
    +            )
    +
    +    def __get_user_pool_mfa_config__(self):
    +        logger.info("Cognito - Getting User Pool MFA Configuration...")
    +        try:
    +            for user_pool in self.user_pools.values():
    +                try:
    +                    mfa_config = self.regional_clients[
    +                        user_pool.region
    +                    ].get_user_pool_mfa_config(UserPoolId=user_pool.id)
    +                    if mfa_config["MfaConfiguration"] != "OFF":
    +                        user_pool.mfa_config = MFAConfig(
    +                            sms_authentication=mfa_config.get(
    +                                "SmsMfaConfiguration", {}
    +                            ),
    +                            software_token_mfa_authentication=mfa_config.get(
    +                                "SoftwareTokenMfaConfiguration", {}
    +                            ),
    +                            status=mfa_config["MfaConfiguration"],
    +                        )
    +                except Exception as error:
    +                    logger.error(
    +                        f"{user_pool.region} -- {error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}"
    +                    )
    +        except Exception as error:
    +            logger.error(
    +                f"{user_pool.region} -- {error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}"
    +            )
    +
    +
    +class MFAConfig(BaseModel):
    +    sms_authentication: Optional[dict]
    +    software_token_mfa_authentication: Optional[dict]
    +    status: str
    +
    +
    +class UserPool(BaseModel):
    +    id: str
    +    arn: str
    +    name: str
    +    region: str
    +    advanced_security_mode: str = "OFF"
    +    deletion_protection: str = "INACTIVE"
    +    last_modified: datetime
    +    creation_date: datetime
    +    status: str
    +    password_policy: Optional[dict]
    +    mfa_config: Optional[MFAConfig]
    +    tags: Optional[list] = []
    diff --git a/prowler/providers/aws/services/ec2/ec2_elastic_ip_shodan/ec2_elastic_ip_shodan.py b/prowler/providers/aws/services/ec2/ec2_elastic_ip_shodan/ec2_elastic_ip_shodan.py
    index b211d3c4697..af6832bd2a7 100644
    --- a/prowler/providers/aws/services/ec2/ec2_elastic_ip_shodan/ec2_elastic_ip_shodan.py
    +++ b/prowler/providers/aws/services/ec2/ec2_elastic_ip_shodan/ec2_elastic_ip_shodan.py
    @@ -37,6 +37,6 @@ def execute(self):
     
             else:
                 logger.error(
    -                "ERROR: No Shodan API Key -- Please input a Shodan API Key with -N/--shodan or in config.yaml"
    +                "No Shodan API Key -- Please input a Shodan API Key with -N/--shodan or in config.yaml"
                 )
             return findings
    diff --git a/prowler/providers/aws/services/ec2/ec2_service.py b/prowler/providers/aws/services/ec2/ec2_service.py
    index b08ca8aa3ce..9ab5c3cb0c1 100644
    --- a/prowler/providers/aws/services/ec2/ec2_service.py
    +++ b/prowler/providers/aws/services/ec2/ec2_service.py
    @@ -17,7 +17,7 @@ def __init__(self, provider):
             super().__init__(__class__.__name__, provider)
             self.instances = []
             self.__threading_call__(self.__describe_instances__)
    -        self.__get_instance_user_data__()
    +        self.__threading_call__(self.__get_instance_user_data__, self.instances)
             self.security_groups = []
             self.regions_with_sgs = []
             self.__threading_call__(self.__describe_security_groups__)
    @@ -27,7 +27,7 @@ def __init__(self, provider):
             self.volumes_with_snapshots = {}
             self.regions_with_snapshots = {}
             self.__threading_call__(self.__describe_snapshots__)
    -        self.__get_snapshot_public__()
    +        self.__threading_call__(self.__determine_public_snapshots__, self.snapshots)
             self.network_interfaces = []
             self.__threading_call__(self.__describe_public_network_interfaces__)
             self.__threading_call__(self.__describe_sg_network_interfaces__)
    @@ -36,12 +36,11 @@ def __init__(self, provider):
             self.volumes = []
             self.__threading_call__(self.__describe_volumes__)
             self.ebs_encryption_by_default = []
    -        self.__threading_call__(self.__get_ebs_encryption_by_default__)
    +        self.__threading_call__(self.__get_ebs_encryption_settings__)
             self.elastic_ips = []
    -        self.__threading_call__(self.__describe_addresses__)
    +        self.__threading_call__(self.__describe_ec2_addresses__)
     
         def __describe_instances__(self, regional_client):
    -        logger.info("EC2 - Describing EC2 Instances...")
             try:
                 describe_instances_paginator = regional_client.get_paginator(
                     "describe_instances"
    @@ -106,7 +105,6 @@ def __describe_instances__(self, regional_client):
                 )
     
         def __describe_security_groups__(self, regional_client):
    -        logger.info("EC2 - Describing Security Groups...")
             try:
                 describe_security_groups_paginator = regional_client.get_paginator(
                     "describe_security_groups"
    @@ -155,7 +153,6 @@ def __describe_security_groups__(self, regional_client):
                 )
     
         def __describe_network_acls__(self, regional_client):
    -        logger.info("EC2 - Describing Network ACLs...")
             try:
                 describe_network_acls_paginator = regional_client.get_paginator(
                     "describe_network_acls"
    @@ -186,7 +183,6 @@ def __describe_network_acls__(self, regional_client):
                 )
     
         def __describe_snapshots__(self, regional_client):
    -        logger.info("EC2 - Describing Snapshots...")
             try:
                 snapshots_in_region = False
                 describe_snapshots_paginator = regional_client.get_paginator(
    @@ -219,35 +215,30 @@ def __describe_snapshots__(self, regional_client):
                     f"{regional_client.region} -- {error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}"
                 )
     
    -    def __get_snapshot_public__(self):
    -        logger.info("EC2 - Getting snapshot volume attribute permissions...")
    -        for snapshot in self.snapshots:
    -            try:
    -                regional_client = self.regional_clients[snapshot.region]
    -                snapshot_public = regional_client.describe_snapshot_attribute(
    -                    Attribute="createVolumePermission", SnapshotId=snapshot.id
    -                )
    -                for permission in snapshot_public["CreateVolumePermissions"]:
    -                    if "Group" in permission:
    -                        if permission["Group"] == "all":
    -                            snapshot.public = True
    -
    -            except ClientError as error:
    -                if error.response["Error"]["Code"] == "InvalidSnapshot.NotFound":
    -                    logger.warning(
    -                        f"{snapshot.region} --"
    -                        f" {error.__class__.__name__}[{error.__traceback__.tb_lineno}]:"
    -                        f" {error}"
    -                    )
    -                    continue
    -
    -            except Exception as error:
    -                logger.error(
    -                    f"{error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}"
    +    def __determine_public_snapshots__(self, snapshot):
    +        try:
    +            regional_client = self.regional_clients[snapshot.region]
    +            snapshot_public = regional_client.describe_snapshot_attribute(
    +                Attribute="createVolumePermission", SnapshotId=snapshot.id
    +            )
    +            for permission in snapshot_public["CreateVolumePermissions"]:
    +                if "Group" in permission:
    +                    if permission["Group"] == "all":
    +                        snapshot.public = True
    +
    +        except ClientError as error:
    +            if error.response["Error"]["Code"] == "InvalidSnapshot.NotFound":
    +                logger.warning(
    +                    f"{snapshot.region} --"
    +                    f" {error.__class__.__name__}[{error.__traceback__.tb_lineno}]:"
    +                    f" {error}"
                     )
    +        except Exception as error:
    +            logger.error(
    +                f"{error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}"
    +            )
     
         def __describe_public_network_interfaces__(self, regional_client):
    -        logger.info("EC2 - Describing Network Interfaces...")
             try:
                 # Get Network Interfaces with Public IPs
                 describe_network_interfaces_paginator = regional_client.get_paginator(
    @@ -274,7 +265,6 @@ def __describe_public_network_interfaces__(self, regional_client):
                 )
     
         def __describe_sg_network_interfaces__(self, regional_client):
    -        logger.info("EC2 - Describing Network Interfaces...")
             try:
                 # Get Network Interfaces for Security Groups
                 for sg in self.security_groups:
    @@ -299,30 +289,25 @@ def __describe_sg_network_interfaces__(self, regional_client):
                     f"{regional_client.region} -- {error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}"
                 )
     
    -    def __get_instance_user_data__(self):
    -        logger.info("EC2 - Getting instance user data...")
    -        for instance in self.instances:
    -            try:
    -                regional_client = self.regional_clients[instance.region]
    -                user_data = regional_client.describe_instance_attribute(
    -                    Attribute="userData", InstanceId=instance.id
    -                )["UserData"]
    -                if "Value" in user_data:
    -                    instance.user_data = user_data["Value"]
    -
    -            except ClientError as error:
    -                if error.response["Error"]["Code"] == "InvalidInstanceID.NotFound":
    -                    logger.warning(
    -                        f"{error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}"
    -                    )
    -                    continue
    -            except Exception as error:
    -                logger.error(
    +    def __get_instance_user_data__(self, instance):
    +        try:
    +            regional_client = self.regional_clients[instance.region]
    +            user_data = regional_client.describe_instance_attribute(
    +                Attribute="userData", InstanceId=instance.id
    +            )["UserData"]
    +            if "Value" in user_data:
    +                instance.user_data = user_data["Value"]
    +        except ClientError as error:
    +            if error.response["Error"]["Code"] == "InvalidInstanceID.NotFound":
    +                logger.warning(
                         f"{error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}"
                     )
    +        except Exception as error:
    +            logger.error(
    +                f"{error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}"
    +            )
     
         def __describe_images__(self, regional_client):
    -        logger.info("EC2 - Describing Images...")
             try:
                 for image in regional_client.describe_images(Owners=["self"])["Images"]:
                     arn = f"arn:{self.audited_partition}:ec2:{regional_client.region}:{self.audited_account}:image/{image['ImageId']}"
    @@ -345,7 +330,6 @@ def __describe_images__(self, regional_client):
                 )
     
         def __describe_volumes__(self, regional_client):
    -        logger.info("EC2 - Describing Volumes...")
             try:
                 describe_volumes_paginator = regional_client.get_paginator(
                     "describe_volumes"
    @@ -370,8 +354,7 @@ def __describe_volumes__(self, regional_client):
                     f"{regional_client.region} -- {error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}"
                 )
     
    -    def __describe_addresses__(self, regional_client):
    -        logger.info("EC2 - Describing Elastic IPs...")
    +    def __describe_ec2_addresses__(self, regional_client):
             try:
                 for address in regional_client.describe_addresses()["Addresses"]:
                     public_ip = None
    @@ -402,8 +385,7 @@ def __describe_addresses__(self, regional_client):
                     f"{regional_client.region} -- {error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}"
                 )
     
    -    def __get_ebs_encryption_by_default__(self, regional_client):
    -        logger.info("EC2 - Get EBS Encryption By Default...")
    +    def __get_ebs_encryption_settings__(self, regional_client):
             try:
                 volumes_in_region = False
                 for volume in self.volumes:
    diff --git a/prowler/providers/aws/services/ecr/ecr_service.py b/prowler/providers/aws/services/ecr/ecr_service.py
    index c0d5f3d7cb3..9c9fc60feb0 100644
    --- a/prowler/providers/aws/services/ecr/ecr_service.py
    +++ b/prowler/providers/aws/services/ecr/ecr_service.py
    @@ -70,11 +70,20 @@ def __describe_repository_policies__(self, regional_client):
                 if regional_client.region in self.registries:
                     for repository in self.registries[regional_client.region].repositories:
                         client = self.regional_clients[repository.region]
    -                    policy = client.get_repository_policy(
    -                        repositoryName=repository.name
    -                    )
    -                    if "policyText" in policy:
    -                        repository.policy = loads(policy["policyText"])
    +                    try:
    +                        policy = client.get_repository_policy(
    +                            repositoryName=repository.name
    +                        )
    +                        if "policyText" in policy:
    +                            repository.policy = loads(policy["policyText"])
    +                    except ClientError as error:
    +                        if (
    +                            error.response["Error"]["Code"]
    +                            == "RepositoryPolicyNotFoundException"
    +                        ):
    +                            logger.warning(
    +                                f"{regional_client.region} -- {error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}"
    +                            )
     
             except Exception as error:
                 if "RepositoryPolicyNotFoundException" not in str(error):
    diff --git a/prowler/providers/gcp/services/serviceusage/serviceusage_cloudasset_inventory_enabled/__init__.py b/prowler/providers/aws/services/eks/eks_cluster_network_policy_enabled/__init__.py
    similarity index 100%
    rename from prowler/providers/gcp/services/serviceusage/serviceusage_cloudasset_inventory_enabled/__init__.py
    rename to prowler/providers/aws/services/eks/eks_cluster_network_policy_enabled/__init__.py
    diff --git a/prowler/providers/aws/services/eks/eks_cluster_network_policy_enabled/eks_cluster_network_policy_enabled.metadata.json b/prowler/providers/aws/services/eks/eks_cluster_network_policy_enabled/eks_cluster_network_policy_enabled.metadata.json
    new file mode 100644
    index 00000000000..1692b375089
    --- /dev/null
    +++ b/prowler/providers/aws/services/eks/eks_cluster_network_policy_enabled/eks_cluster_network_policy_enabled.metadata.json
    @@ -0,0 +1,35 @@
    +{
    +  "Provider": "aws",
    +  "CheckID": "eks_cluster_network_policy_enabled",
    +  "CheckTitle": "Ensure Network Policy is Enabled and Set as Appropriate",
    +  "CheckType": [
    +    "Security",
    +    "Configuration"
    +  ],
    +  "ServiceName": "eks",
    +  "SubServiceName": "",
    +  "ResourceIdTemplate": "arn:partition:service:region:account-id:resource-id",
    +  "Severity": "high",
    +  "ResourceType": "AwsEksCluster",
    +  "Description": "Ensure that Network Policy is enabled and set as appropriate in Amazon EKS clusters. Network Policy provides pod-level firewalling to restrict traffic between sources, enhancing network security within the cluster.",
    +  "Risk": "Without proper Network Policy settings, pods within the cluster may be vulnerable to unauthorized access and communication.",
    +  "RelatedUrl": "https://docs.aws.amazon.com/eks/latest/userguide/eks-networking-add-ons.html",
    +  "Remediation": {
    +    "Code": {
    +      "CLI": "",
    +      "NativeIaC": "",
    +      "Other": "https://www.trendmicro.com/cloudoneconformity/knowledge-base/aws/EKS/security-groups.html",
    +      "Terraform": "https://docs.bridgecrew.io/docs/bc_aws_kubernetes_1#terraform"
    +    },
    +    "Recommendation": {
    +      "Text": "Enable and configure Network Policy to enhance network security within the EKS cluster.",
    +      "Url": "https://docs.aws.amazon.com/eks/latest/userguide/eks-networking-add-ons.html"
    +    }
    +  },
    +  "Categories": [
    +    "internet-exposed"
    +  ],
    +  "DependsOn": [],
    +  "RelatedTo": [],
    +  "Notes": "Enabling Network Policy may cause a rolling update of all cluster nodes and consumes additional resources."
    +}
    diff --git a/prowler/providers/aws/services/eks/eks_cluster_network_policy_enabled/eks_cluster_network_policy_enabled.py b/prowler/providers/aws/services/eks/eks_cluster_network_policy_enabled/eks_cluster_network_policy_enabled.py
    new file mode 100644
    index 00000000000..56e58008521
    --- /dev/null
    +++ b/prowler/providers/aws/services/eks/eks_cluster_network_policy_enabled/eks_cluster_network_policy_enabled.py
    @@ -0,0 +1,22 @@
    +from prowler.lib.check.models import Check, Check_Report_AWS
    +from prowler.providers.aws.services.eks.eks_client import eks_client
    +
    +
    +class eks_cluster_network_policy_enabled(Check):
    +    def execute(self):
    +        findings = []
    +        for cluster in eks_client.clusters:
    +            report = Check_Report_AWS(self.metadata())
    +            report.region = cluster.region
    +            report.resource_id = cluster.name
    +            report.resource_arn = cluster.arn
    +            report.resource_tags = cluster.tags
    +            report.status = "FAIL"
    +            report.status_extended = f"EKS cluster {cluster.name} does not have a Network Policy. Cluster security group ID is not set."
    +            if cluster.security_group_id:
    +                report.status = "PASS"
    +                report.status_extended = f"EKS cluster {cluster.name} has a Network Policy with the security group {cluster.security_group_id}."
    +
    +            findings.append(report)
    +
    +        return findings
    diff --git a/prowler/providers/aws/services/eks/eks_cluster_private_nodes_enabled/__init__.py b/prowler/providers/aws/services/eks/eks_cluster_private_nodes_enabled/__init__.py
    new file mode 100644
    index 00000000000..e69de29bb2d
    diff --git a/prowler/providers/aws/services/eks/eks_cluster_private_nodes_enabled/eks_cluster_private_nodes_enabled.metadata.json b/prowler/providers/aws/services/eks/eks_cluster_private_nodes_enabled/eks_cluster_private_nodes_enabled.metadata.json
    new file mode 100644
    index 00000000000..697e311c31a
    --- /dev/null
    +++ b/prowler/providers/aws/services/eks/eks_cluster_private_nodes_enabled/eks_cluster_private_nodes_enabled.metadata.json
    @@ -0,0 +1,35 @@
    +{
    +  "Provider": "aws",
    +  "CheckID": "eks_cluster_private_nodes_enabled",
    +  "CheckTitle": "Ensure Clusters are created with Private Nodes",
    +  "CheckType": [
    +    "Security",
    +    "Configuration"
    +  ],
    +  "ServiceName": "EKS",
    +  "SubServiceName": "",
    +  "ResourceIdTemplate": "",
    +  "Severity": "high",
    +  "ResourceType": "AwsEksCluster",
    +  "Description": "Ensure that clusters are created with private nodes, disabling public IP addresses for cluster nodes. Private nodes have no public IP addresses, restricting access to internal networks and enhancing security.",
    +  "Risk": "Without private nodes, cluster nodes may have public IP addresses, increasing the attack surface and exposing them to potential threats from the internet.",
    +  "RelatedUrl": "https://docs.aws.amazon.com/eks/latest/userguide/private-clusters.html",
    +  "Remediation": {
    +    "Code": {
    +      "CLI": "aws eks update-cluster-config --region region-code --name my-cluster --resources-vpc-config endpointPrivateAccess=true",
    +      "NativeIaC": "",
    +      "Other": "",
    +      "Terraform": ""
    +    },
    +    "Recommendation": {
    +      "Text": "Update the cluster configuration to enable private nodes, disabling public IP addresses for cluster nodes.",
    +      "Url": "https://docs.aws.amazon.com/eks/latest/userguide/cluster-endpoint.html"
    +    }
    +  },
    +  "Categories": [
    +    "internet-exposed"
    +  ],
    +  "DependsOn": [],
    +  "RelatedTo": [],
    +  "Notes": "Enabling private nodes restricts outbound access to the public internet. If outbound internet access is required, Cloud NAT or a NAT gateway can be used."
    +}
    diff --git a/prowler/providers/aws/services/eks/eks_cluster_private_nodes_enabled/eks_cluster_private_nodes_enabled.py b/prowler/providers/aws/services/eks/eks_cluster_private_nodes_enabled/eks_cluster_private_nodes_enabled.py
    new file mode 100644
    index 00000000000..d8ddcabafe2
    --- /dev/null
    +++ b/prowler/providers/aws/services/eks/eks_cluster_private_nodes_enabled/eks_cluster_private_nodes_enabled.py
    @@ -0,0 +1,23 @@
    +from prowler.lib.check.models import Check, Check_Report_AWS
    +from prowler.providers.aws.services.eks.eks_client import eks_client
    +
    +
    +class eks_cluster_private_nodes_enabled(Check):
    +    def execute(self):
    +        findings = []
    +        for cluster in eks_client.clusters:
    +            report = Check_Report_AWS(self.metadata())
    +            report.region = cluster.region
    +            report.resource_id = cluster.name
    +            report.resource_arn = cluster.arn
    +            report.resource_tags = cluster.tags
    +            report.status = "PASS"
    +            report.status_extended = (
    +                f"EKS cluster {cluster.name} is created with private nodes."
    +            )
    +            if not cluster.endpoint_private_access:
    +                report.status = "FAIL"
    +                report.status_extended = f"Cluster endpoint private access is not enabled for EKS cluster {cluster.name}."
    +            findings.append(report)
    +
    +        return findings
    diff --git a/prowler/providers/aws/services/eks/eks_service.py b/prowler/providers/aws/services/eks/eks_service.py
    index 70ac050e75b..1dcca3379d5 100644
    --- a/prowler/providers/aws/services/eks/eks_service.py
    +++ b/prowler/providers/aws/services/eks/eks_service.py
    @@ -54,6 +54,13 @@ def __describe_cluster__(self, regional_clients):
                                 "clusterLogging"
                             ][0]["enabled"],
                         )
    +                if (
    +                    "clusterSecurityGroupId"
    +                    in describe_cluster["cluster"]["resourcesVpcConfig"]
    +                ):
    +                    cluster.security_group_id = describe_cluster["cluster"][
    +                        "resourcesVpcConfig"
    +                    ]["clusterSecurityGroupId"]
                     if (
                         "endpointPublicAccess"
                         in describe_cluster["cluster"]["resourcesVpcConfig"]
    @@ -95,6 +102,7 @@ class EKSCluster(BaseModel):
         arn: str
         region: str
         logging: EKSClusterLoggingEntity = None
    +    security_group_id: str = None
         endpoint_public_access: bool = None
         endpoint_private_access: bool = None
         public_access_cidrs: list[str] = None
    diff --git a/prowler/providers/aws/services/elasticache/elasticache_service.py b/prowler/providers/aws/services/elasticache/elasticache_service.py
    index 353ad4ff8cd..9e8d1c78110 100644
    --- a/prowler/providers/aws/services/elasticache/elasticache_service.py
    +++ b/prowler/providers/aws/services/elasticache/elasticache_service.py
    @@ -1,5 +1,6 @@
     from typing import Optional
     
    +from botocore.exceptions import ClientError
     from pydantic import BaseModel
     
     from prowler.lib.logger import logger
    @@ -73,7 +74,15 @@ def __list_tags_for_resource__(self):
                         cluster.tags = regional_client.list_tags_for_resource(
                             ResourceName=cluster.arn
                         )["TagList"]
    -
    +                except ClientError as error:
    +                    if error.response["Error"]["Code"] == "CacheClusterNotFound":
    +                        logger.warning(
    +                            f"{regional_client.region} -- {error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}"
    +                        )
    +                    else:
    +                        logger.error(
    +                            f"{regional_client.region} -- {error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}"
    +                        )
                     except Exception as error:
                         logger.error(
                             f"{regional_client.region} -- {error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}"
    diff --git a/prowler/providers/aws/services/elbv2/elbv2_insecure_ssl_ciphers/elbv2_insecure_ssl_ciphers.py b/prowler/providers/aws/services/elbv2/elbv2_insecure_ssl_ciphers/elbv2_insecure_ssl_ciphers.py
    index 40bcf1e1009..eeca1eb0742 100644
    --- a/prowler/providers/aws/services/elbv2/elbv2_insecure_ssl_ciphers/elbv2_insecure_ssl_ciphers.py
    +++ b/prowler/providers/aws/services/elbv2/elbv2_insecure_ssl_ciphers/elbv2_insecure_ssl_ciphers.py
    @@ -33,7 +33,7 @@ def execute(self):
                         and listener.ssl_policy not in secure_ssl_policies
                     ):
                         report.status = "FAIL"
    -                    report.status_extended = f"ELBv2 {lb.name} has listeners with insecure SSL protocols or ciphers."
    +                    report.status_extended = f"ELBv2 {lb.name} has listeners with insecure SSL protocols or ciphers ({listener.ssl_policy})."
     
                 findings.append(report)
     
    diff --git a/prowler/providers/aws/services/emr/emr_service.py b/prowler/providers/aws/services/emr/emr_service.py
    index 287025daba4..6dba118677b 100644
    --- a/prowler/providers/aws/services/emr/emr_service.py
    +++ b/prowler/providers/aws/services/emr/emr_service.py
    @@ -108,9 +108,9 @@ def __describe_cluster__(self, regional_client):
                         master_public_dns_name = cluster_info["Cluster"].get(
                             "MasterPublicDnsName"
                         )
    -                    self.clusters[
    -                        cluster.id
    -                    ].master_public_dns_name = master_public_dns_name
    +                    self.clusters[cluster.id].master_public_dns_name = (
    +                        master_public_dns_name
    +                    )
                         # Set cluster Public/Private
                         # Public EMR cluster have their DNS ending with .amazonaws.com
                         # while private ones have format of ip-xxx-xx-xx.us-east-1.compute.internal.
    @@ -136,12 +136,12 @@ def __get_block_public_access_configuration__(self, regional_client):
                     regional_client.get_block_public_access_configuration()
                 )
     
    -            self.block_public_access_configuration[
    -                regional_client.region
    -            ] = BlockPublicAccessConfiguration(
    -                block_public_security_group_rules=block_public_access_configuration[
    -                    "BlockPublicAccessConfiguration"
    -                ]["BlockPublicSecurityGroupRules"]
    +            self.block_public_access_configuration[regional_client.region] = (
    +                BlockPublicAccessConfiguration(
    +                    block_public_security_group_rules=block_public_access_configuration[
    +                        "BlockPublicAccessConfiguration"
    +                    ]["BlockPublicSecurityGroupRules"]
    +                )
                 )
             except Exception as error:
                 logger.error(
    diff --git a/prowler/providers/aws/services/fms/fms_policy_compliant/fms_policy_compliant.py b/prowler/providers/aws/services/fms/fms_policy_compliant/fms_policy_compliant.py
    index dcb0b4e58a1..bfb9b698b0e 100644
    --- a/prowler/providers/aws/services/fms/fms_policy_compliant/fms_policy_compliant.py
    +++ b/prowler/providers/aws/services/fms/fms_policy_compliant/fms_policy_compliant.py
    @@ -13,17 +13,24 @@ def execute(self):
                 report.status = "PASS"
                 report.status_extended = "FMS enabled with all compliant accounts."
                 non_compliant_policy = False
    -            for policy in fms_client.fms_policies:
    -                for policy_to_account in policy.compliance_status:
    -                    if policy_to_account.status == "NON_COMPLIANT":
    -                        report.status = "FAIL"
    -                        report.status_extended = f"FMS with non-compliant policy {policy.name} for account {policy_to_account.account_id}."
    -                        report.resource_id = policy.id
    -                        report.resource_arn = policy.arn
    -                        non_compliant_policy = True
    +            if fms_client.fms_policies:
    +                for policy in fms_client.fms_policies:
    +                    for policy_to_account in policy.compliance_status:
    +                        if (
    +                            policy_to_account.status == "NON_COMPLIANT"
    +                            or not policy_to_account.status
    +                        ):
    +                            report.status = "FAIL"
    +                            report.status_extended = f"FMS with non-compliant policy {policy.name} for account {policy_to_account.account_id}."
    +                            report.resource_id = policy.id
    +                            report.resource_arn = policy.arn
    +                            non_compliant_policy = True
    +                            break
    +                    if non_compliant_policy:
                             break
    -                if non_compliant_policy:
    -                    break
    +            else:
    +                report.status = "FAIL"
    +                report.status_extended = f"FMS without any compliant policy for account {fms_client.audited_account}."
     
                 findings.append(report)
             return findings
    diff --git a/prowler/providers/aws/services/fms/fms_service.py b/prowler/providers/aws/services/fms/fms_service.py
    index 5e645ae5440..b810e5d935a 100644
    --- a/prowler/providers/aws/services/fms/fms_service.py
    +++ b/prowler/providers/aws/services/fms/fms_service.py
    @@ -5,8 +5,6 @@
     from prowler.lib.scan_filters.scan_filters import is_resource_filtered
     from prowler.providers.aws.lib.service.service import AWSService
     
    -# from prowler.providers.aws.aws_provider import generate_regional_clients
    -
     
     ################## FMS
     class FMS(AWSService):
    @@ -68,14 +66,19 @@ def __list_compliance_status__(self):
                     for page in list_compliance_status_paginator.paginate(
                         PolicyId=fms_policy.id
                     ):
    -                    for fms_compliance_status in page["PolicyComplianceStatusList"]:
    +                    for fms_compliance_status in page.get(
    +                        "PolicyComplianceStatusList", []
    +                    ):
    +                        compliance_status = ""
    +                        if fms_compliance_status.get("EvaluationResults"):
    +                            compliance_status = fms_compliance_status.get(
    +                                "EvaluationResults"
    +                            )[0].get("ComplianceStatus", "")
                             fms_policy.compliance_status.append(
                                 PolicyAccountComplianceStatus(
                                     account_id=fms_compliance_status.get("MemberAccount"),
                                     policy_id=fms_compliance_status.get("PolicyId"),
    -                                status=fms_compliance_status.get("EvaluationResults")[
    -                                    0
    -                                ].get("ComplianceStatus"),
    +                                status=compliance_status,
                                 )
                             )
     
    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 c2fa7b91873..3fd7739e258 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
    @@ -1,6 +1,6 @@
     from prowler.lib.check.models import Check, Check_Report_AWS
     from prowler.providers.aws.lib.policy_condition_parser.policy_condition_parser import (
    -    is_account_only_allowed_in_condition,
    +    is_condition_block_restrictive,
     )
     from prowler.providers.aws.services.iam.iam_client import iam_client
     
    @@ -30,7 +30,7 @@ def execute(self) -> Check_Report_AWS:
                             and "Service" in statement["Principal"]
                             # Check to see if the appropriate condition statements have been implemented
                             and "Condition" in statement
    -                        and is_account_only_allowed_in_condition(
    +                        and is_condition_block_restrictive(
                                 statement["Condition"], iam_client.audited_account
                             )
                         ):
    diff --git a/prowler/providers/aws/services/iam/iam_service.py b/prowler/providers/aws/services/iam/iam_service.py
    index 21bf63ac289..3c378eef25f 100644
    --- a/prowler/providers/aws/services/iam/iam_service.py
    +++ b/prowler/providers/aws/services/iam/iam_service.py
    @@ -453,12 +453,29 @@ def __list_inline_user_policies__(self):
                                         document=inline_user_policy_doc,
                                     )
                                 )
    -
    +                        except ClientError as error:
    +                            if error.response["Error"]["Code"] == "NoSuchEntity":
    +                                logger.warning(
    +                                    f"{self.region} -- {error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}"
    +                                )
    +                            else:
    +                                logger.error(
    +                                    f"{self.region} -- {error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}"
    +                                )
                             except Exception as error:
                                 logger.error(
                                     f"{self.region} -- {error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}"
                                 )
                     user.inline_policies = inline_user_policies
    +            except ClientError as error:
    +                if error.response["Error"]["Code"] == "NoSuchEntity":
    +                    logger.warning(
    +                        f"{self.region} -- {error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}"
    +                    )
    +                else:
    +                    logger.error(
    +                        f"{self.region} -- {error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}"
    +                    )
                 except Exception as error:
                     logger.error(
                         f"{self.region} -- {error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}"
    @@ -494,11 +511,30 @@ def __list_inline_group_policies__(self):
                                         document=inline_group_policy_doc,
                                     )
                                 )
    +                        except ClientError as error:
    +                            if error.response["Error"]["Code"] == "NoSuchEntity":
    +                                logger.warning(
    +                                    f"{self.region} -- {error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}"
    +                                )
    +                            else:
    +                                logger.error(
    +                                    f"{self.region} -- {error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}"
    +                                )
    +
                             except Exception as error:
                                 logger.error(
                                     f"{self.region} -- {error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}"
                                 )
                     group.inline_policies = inline_group_policies
    +            except ClientError as error:
    +                if error.response["Error"]["Code"] == "NoSuchEntity":
    +                    logger.warning(
    +                        f"{self.region} -- {error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}"
    +                    )
    +                else:
    +                    logger.error(
    +                        f"{self.region} -- {error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}"
    +                    )
     
                 except Exception as error:
                     logger.error(
    @@ -600,9 +636,9 @@ def __list_policies__(self, scope):
                                     entity=policy["PolicyId"],
                                     version_id=policy["DefaultVersionId"],
                                     type="Custom" if scope == "Local" else "AWS",
    -                                attached=True
    -                                if policy["AttachmentCount"] > 0
    -                                else False,
    +                                attached=(
    +                                    True if policy["AttachmentCount"] > 0 else False
    +                                ),
                                 )
                             )
             except Exception as error:
    @@ -831,9 +867,9 @@ def __get_user_temporary_credentials_usage__(self):
                         services_accessed > 0 and access_keys_number > 0
                     )
     
    -                self.user_temporary_credentials_usage[
    -                    user_data
    -                ] = temporary_credentials_usage
    +                self.user_temporary_credentials_usage[user_data] = (
    +                    temporary_credentials_usage
    +                )
     
             except Exception as error:
                 logger.error(
    diff --git a/prowler/providers/aws/services/inspector2/inspector2_active_findings_exist/__init__.py b/prowler/providers/aws/services/inspector2/inspector2_active_findings_exist/__init__.py
    new file mode 100644
    index 00000000000..e69de29bb2d
    diff --git a/prowler/providers/aws/services/inspector2/inspector2_findings_exist/inspector2_findings_exist.metadata.json b/prowler/providers/aws/services/inspector2/inspector2_active_findings_exist/inspector2_active_findings_exist.metadata.json
    similarity index 85%
    rename from prowler/providers/aws/services/inspector2/inspector2_findings_exist/inspector2_findings_exist.metadata.json
    rename to prowler/providers/aws/services/inspector2/inspector2_active_findings_exist/inspector2_active_findings_exist.metadata.json
    index b788370dc5b..cc50df3f93f 100644
    --- a/prowler/providers/aws/services/inspector2/inspector2_findings_exist/inspector2_findings_exist.metadata.json
    +++ b/prowler/providers/aws/services/inspector2/inspector2_active_findings_exist/inspector2_active_findings_exist.metadata.json
    @@ -1,7 +1,10 @@
     {
       "Provider": "aws",
    -  "CheckID": "inspector2_findings_exist",
    +  "CheckID": "inspector2_active_findings_exist",
       "CheckTitle": "Check if Inspector2 findings exist",
    +  "CheckAliases": [
    +    "inspector2_findings_exist"
    +  ],
       "CheckType": [],
       "ServiceName": "inspector2",
       "SubServiceName": "",
    @@ -13,13 +16,13 @@
       "RelatedUrl": "https://docs.aws.amazon.com/inspector/latest/user/findings-understanding.html",
       "Remediation": {
         "Code": {
    -      "CLI": "aws inspector2 enable",
    +      "CLI": "",
           "NativeIaC": "",
           "Other": "https://www.trendmicro.com/cloudoneconformity/knowledge-base/aws/Inspector/amazon-inspector-findings.html",
           "Terraform": ""
         },
         "Recommendation": {
    -      "Text": "Enable Inspector2",
    +      "Text": "Review the active findings from Inspector2",
           "Url": "https://docs.aws.amazon.com/inspector/latest/user/what-is-inspector.html"
         }
       },
    diff --git a/prowler/providers/aws/services/inspector2/inspector2_active_findings_exist/inspector2_active_findings_exist.py b/prowler/providers/aws/services/inspector2/inspector2_active_findings_exist/inspector2_active_findings_exist.py
    new file mode 100644
    index 00000000000..b398ab208ae
    --- /dev/null
    +++ b/prowler/providers/aws/services/inspector2/inspector2_active_findings_exist/inspector2_active_findings_exist.py
    @@ -0,0 +1,33 @@
    +from prowler.lib.check.models import Check, Check_Report_AWS
    +from prowler.providers.aws.services.inspector2.inspector2_client import (
    +    inspector2_client,
    +)
    +
    +
    +class inspector2_active_findings_exist(Check):
    +    def execute(self):
    +        findings = []
    +        for inspector in inspector2_client.inspectors:
    +            if inspector.status == "ENABLED":
    +                report = Check_Report_AWS(self.metadata())
    +                report.resource_id = inspector.id
    +                report.resource_arn = inspector.arn
    +                report.region = inspector.region
    +                active_findings = 0
    +                report.status = "PASS"
    +                report.status_extended = "Inspector2 is enabled with no findings."
    +                for finding in inspector.findings:
    +                    if finding.status == "ACTIVE":
    +                        active_findings += 1
    +                if len(inspector.findings) > 0:
    +                    report.status_extended = (
    +                        "Inspector2 is enabled with no active findings."
    +                    )
    +                    if active_findings > 0:
    +                        report.status = "FAIL"
    +                        report.status_extended = (
    +                            f"There are {active_findings} active Inspector2 findings."
    +                        )
    +                findings.append(report)
    +
    +        return findings
    diff --git a/prowler/providers/aws/services/inspector2/inspector2_is_enabled/__init__.py b/prowler/providers/aws/services/inspector2/inspector2_is_enabled/__init__.py
    new file mode 100644
    index 00000000000..e69de29bb2d
    diff --git a/prowler/providers/aws/services/inspector2/inspector2_is_enabled/inspector2_is_enabled.metadata.json b/prowler/providers/aws/services/inspector2/inspector2_is_enabled/inspector2_is_enabled.metadata.json
    new file mode 100644
    index 00000000000..ec548c3401c
    --- /dev/null
    +++ b/prowler/providers/aws/services/inspector2/inspector2_is_enabled/inspector2_is_enabled.metadata.json
    @@ -0,0 +1,33 @@
    +{
    +  "Provider": "aws",
    +  "CheckID": "inspector2_is_enabled",
    +  "CheckTitle": "Check if Inspector2 is enabled",
    +  "CheckAliases": [
    +    "inspector2_findings_exist"
    +  ],
    +  "CheckType": [],
    +  "ServiceName": "inspector2",
    +  "SubServiceName": "",
    +  "ResourceIdTemplate": "arn:aws:inspector2:region:account-id/detector-id",
    +  "Severity": "medium",
    +  "ResourceType": "Other",
    +  "Description": "Check if Inspector2 is enabled",
    +  "Risk": "Without using AWS Inspector, you may not be aware of all the security vulnerabilities in your AWS resources, which could lead to unauthorized access, data breaches, or other security incidents.",
    +  "RelatedUrl": "https://docs.aws.amazon.com/inspector/latest/user/findings-understanding.html",
    +  "Remediation": {
    +    "Code": {
    +      "CLI": "aws inspector2 enable",
    +      "NativeIaC": "",
    +      "Other": "https://www.trendmicro.com/cloudoneconformity/knowledge-base/aws/Inspector/amazon-inspector-findings.html",
    +      "Terraform": ""
    +    },
    +    "Recommendation": {
    +      "Text": "Enable Inspector2",
    +      "Url": "https://docs.aws.amazon.com/inspector/latest/user/what-is-inspector.html"
    +    }
    +  },
    +  "Categories": [],
    +  "DependsOn": [],
    +  "RelatedTo": [],
    +  "Notes": ""
    +}
    diff --git a/prowler/providers/aws/services/inspector2/inspector2_findings_exist/inspector2_findings_exist.py b/prowler/providers/aws/services/inspector2/inspector2_is_enabled/inspector2_is_enabled.py
    similarity index 65%
    rename from prowler/providers/aws/services/inspector2/inspector2_findings_exist/inspector2_findings_exist.py
    rename to prowler/providers/aws/services/inspector2/inspector2_is_enabled/inspector2_is_enabled.py
    index fad57d213cd..d183c175a1b 100644
    --- a/prowler/providers/aws/services/inspector2/inspector2_findings_exist/inspector2_findings_exist.py
    +++ b/prowler/providers/aws/services/inspector2/inspector2_is_enabled/inspector2_is_enabled.py
    @@ -7,30 +7,17 @@
     )
     
     
    -class inspector2_findings_exist(Check):
    +class inspector2_is_enabled(Check):
         def execute(self):
             findings = []
             for inspector in inspector2_client.inspectors:
                 report = Check_Report_AWS(self.metadata())
    -            report.resource_id = inspector2_client.audited_account
    -            report.resource_arn = inspector2_client.audited_account_arn
    +            report.resource_id = inspector.id
    +            report.resource_arn = inspector.arn
                 report.region = inspector.region
                 if inspector.status == "ENABLED":
    -                active_findings = 0
                     report.status = "PASS"
    -                report.status_extended = "Inspector2 is enabled with no findings."
    -                for finding in inspector.findings:
    -                    if finding.status == "ACTIVE":
    -                        active_findings += 1
    -                if len(inspector.findings) > 0:
    -                    report.status_extended = (
    -                        "Inspector2 is enabled with no active findings."
    -                    )
    -                    if active_findings > 0:
    -                        report.status = "FAIL"
    -                        report.status_extended = (
    -                            f"There are {active_findings} ACTIVE Inspector2 findings."
    -                        )
    +                report.status_extended = "Inspector2 is enabled."
                     findings.append(report)
                 else:
                     if inspector2_client.provider.ignore_unused_services:
    diff --git a/prowler/providers/aws/services/inspector2/inspector2_service.py b/prowler/providers/aws/services/inspector2/inspector2_service.py
    index d5b7ff4d0e2..d8d3485ac1d 100644
    --- a/prowler/providers/aws/services/inspector2/inspector2_service.py
    +++ b/prowler/providers/aws/services/inspector2/inspector2_service.py
    @@ -23,7 +23,8 @@ def __batch_get_account_status__(self, regional_client):
                 ][0]
                 self.inspectors.append(
                     Inspector(
    -                    id=self.audited_account,
    +                    id="Inspector2",
    +                    arn=f"arn:{self.audited_partition}:inspector2:{regional_client.region}:{self.audited_account}:inspector2",
                         status=batch_get_account_status.get("state").get("status"),
                         region=regional_client.region,
                     )
    @@ -80,6 +81,7 @@ class InspectorFinding(BaseModel):
     
     class Inspector(BaseModel):
         id: str
    +    arn: str
         region: str
         status: str
         findings: list[InspectorFinding] = []
    diff --git a/prowler/providers/aws/services/organizations/organizations_scp_check_deny_regions/organizations_scp_check_deny_regions.py b/prowler/providers/aws/services/organizations/organizations_scp_check_deny_regions/organizations_scp_check_deny_regions.py
    index 4062c42b61c..ab9eb8573e2 100644
    --- a/prowler/providers/aws/services/organizations/organizations_scp_check_deny_regions/organizations_scp_check_deny_regions.py
    +++ b/prowler/providers/aws/services/organizations/organizations_scp_check_deny_regions/organizations_scp_check_deny_regions.py
    @@ -48,11 +48,12 @@ def execute(self):
                                     and "aws:RequestedRegion"
                                     in statement["Condition"]["StringNotEquals"]
                                 ):
    -                                if (
    -                                    organizations_enabled_regions
    -                                    == statement["Condition"]["StringNotEquals"][
    +                                if all(
    +                                    region
    +                                    in statement["Condition"]["StringNotEquals"][
                                             "aws:RequestedRegion"
                                         ]
    +                                    for region in organizations_enabled_regions
                                     ):
                                         # All defined regions are restricted, we exit here, no need to continue.
                                         report.status = "PASS"
    @@ -73,11 +74,12 @@ def execute(self):
                                     and "aws:RequestedRegion"
                                     in statement["Condition"]["StringEquals"]
                                 ):
    -                                if (
    -                                    organizations_enabled_regions
    -                                    == statement["Condition"]["StringEquals"][
    +                                if all(
    +                                    region
    +                                    in statement["Condition"]["StringEquals"][
                                             "aws:RequestedRegion"
                                         ]
    +                                    for region in organizations_enabled_regions
                                     ):
                                         # All defined regions are restricted, we exit here, no need to continue.
                                         report.status = "PASS"
    diff --git a/prowler/providers/aws/services/organizations/organizations_service.py b/prowler/providers/aws/services/organizations/organizations_service.py
    index 472efff23e1..ea7ecf5e259 100644
    --- a/prowler/providers/aws/services/organizations/organizations_service.py
    +++ b/prowler/providers/aws/services/organizations/organizations_service.py
    @@ -102,14 +102,13 @@ def __list_policies__(self):
                     )
                     for page in list_policies_paginator.paginate(Filter=policy_type):
                         for policy in page["Policies"]:
    -                        policy_content = self.__describe_policy__(policy.get("Id"))
    -                        policy_targets = self.__list_targets_for_policy__(
    -                            policy.get("Id")
    -                        )
    +                        policy_id = policy.get("Id")
    +                        policy_content = self.__describe_policy__(policy_id)
    +                        policy_targets = self.__list_targets_for_policy__(policy_id)
                             self.policies.append(
                                 Policy(
                                     arn=policy.get("Arn"),
    -                                id=policy.get("Id"),
    +                                id=policy_id,
                                     type=policy.get("Type"),
                                     aws_managed=policy.get("AwsManaged"),
                                     content=policy_content,
    @@ -134,23 +133,29 @@ def __describe_policy__(self, policy_id):
     
             # This operation can be called only from the organization’s management account or by a member account that is a delegated administrator for an Amazon Web Services service.
             try:
    -            policy_desc = self.client.describe_policy(PolicyId=policy_id)["Policy"]
    -            policy_content = policy_desc["Content"]
    -            policy_content_json = json.loads(policy_content)
    +            policy_content = {}
    +            if policy_id:
    +                policy_content = (
    +                    self.client.describe_policy(PolicyId=policy_id)
    +                    .get("Policy", {})
    +                    .get("Content", "")
    +                )
             except Exception as error:
                 logger.error(
                     f"{self.region} -- {error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}"
                 )
             finally:
    -            return policy_content_json
    +            return json.loads(policy_content)
     
         def __list_targets_for_policy__(self, policy_id):
             logger.info("Organizations - List Targets for policy: %s ...", policy_id)
     
             try:
    -            targets_for_policy = self.client.list_targets_for_policy(
    -                PolicyId=policy_id
    -            )["Targets"]
    +            targets_for_policy = []
    +            if policy_id:
    +                targets_for_policy = self.client.list_targets_for_policy(
    +                    PolicyId=policy_id
    +                )["Targets"]
             except Exception as error:
                 logger.error(
                     f"{self.region} -- {error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}"
    diff --git a/prowler/providers/aws/services/rds/rds_instance_no_public_access/rds_instance_no_public_access.py b/prowler/providers/aws/services/rds/rds_instance_no_public_access/rds_instance_no_public_access.py
    index a5e2cd297b1..8040302d804 100644
    --- a/prowler/providers/aws/services/rds/rds_instance_no_public_access/rds_instance_no_public_access.py
    +++ b/prowler/providers/aws/services/rds/rds_instance_no_public_access/rds_instance_no_public_access.py
    @@ -1,4 +1,5 @@
     from prowler.lib.check.models import Check, Check_Report_AWS
    +from prowler.providers.aws.services.ec2.ec2_client import ec2_client
     from prowler.providers.aws.services.rds.rds_client import rds_client
     
     
    @@ -11,17 +12,23 @@ def execute(self):
                 report.resource_id = db_instance.id
                 report.resource_arn = db_instance.arn
                 report.resource_tags = db_instance.tags
    -            if not db_instance.public:
    -                report.status = "PASS"
    -                report.status_extended = (
    -                    f"RDS Instance {db_instance.id} is not Publicly Accessible."
    -                )
    -            else:
    -                report.status = "FAIL"
    -                report.status_extended = (
    -                    f"RDS Instance {db_instance.id} is set as Publicly Accessible."
    -                )
    -
    +            report.status = "PASS"
    +            report.status_extended = (
    +                f"RDS Instance {db_instance.id} is not publicly accessible."
    +            )
    +            if db_instance.public:
    +                # Check if any DB Instance Security Group is publicly open
    +                if db_instance.security_groups:
    +                    report.status = "PASS"
    +                    report.status_extended = f"RDS Instance {db_instance.id} is public but filtered with security groups."
    +                    for security_group in ec2_client.security_groups:
    +                        if (
    +                            security_group.id in db_instance.security_groups
    +                            and security_group.public_ports
    +                        ):
    +                            report.status = "FAIL"
    +                            report.status_extended = f"RDS Instance {db_instance.id} is set as publicly accessible."
    +                            break
                 findings.append(report)
     
             return findings
    diff --git a/prowler/providers/aws/services/rds/rds_service.py b/prowler/providers/aws/services/rds/rds_service.py
    index 1a5f88a6d74..e2ac030a65f 100644
    --- a/prowler/providers/aws/services/rds/rds_service.py
    +++ b/prowler/providers/aws/services/rds/rds_service.py
    @@ -68,6 +68,11 @@ def __describe_db_instances__(self, regional_client):
                                             for item in instance["DBParameterGroups"]
                                         ],
                                         multi_az=instance["MultiAZ"],
    +                                    security_groups=[
    +                                        sg["VpcSecurityGroupId"]
    +                                        for sg in instance["VpcSecurityGroups"]
    +                                        if sg["Status"] == "active"
    +                                    ],
                                         cluster_id=instance.get("DBClusterIdentifier"),
                                         cluster_arn=f"arn:{self.audited_partition}:rds:{regional_client.region}:{self.audited_account}:cluster:{instance.get('DBClusterIdentifier')}",
                                         region=regional_client.region,
    @@ -232,7 +237,15 @@ def __describe_db_cluster_snapshot_attributes__(self, regional_client):
                         for att in response["DBClusterSnapshotAttributes"]:
                             if "all" in att["AttributeValues"]:
                                 snapshot.public = True
    -
    +        except ClientError as error:
    +            if error.response["Error"]["Code"] == "DBClusterSnapshotNotFoundFault":
    +                logger.warning(
    +                    f"{regional_client.region} -- {error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}"
    +                )
    +            else:
    +                logger.error(
    +                    f"{regional_client.region} -- {error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}"
    +                )
             except Exception as error:
                 logger.error(
                     f"{regional_client.region} -- {error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}"
    @@ -287,6 +300,7 @@ class DBInstance(BaseModel):
         multi_az: bool
         parameter_groups: list[str] = []
         parameters: list[dict] = []
    +    security_groups: list[str] = []
         cluster_id: Optional[str]
         cluster_arn: Optional[str]
         region: str
    diff --git a/prowler/providers/aws/services/route53/route53_service.py b/prowler/providers/aws/services/route53/route53_service.py
    index c715a7b1375..8c0ad23281a 100644
    --- a/prowler/providers/aws/services/route53/route53_service.py
    +++ b/prowler/providers/aws/services/route53/route53_service.py
    @@ -87,12 +87,12 @@ def __list_query_logging_configs__(self):
                     )
                     for page in list_query_logging_configs_paginator.paginate():
                         for logging_config in page["QueryLoggingConfigs"]:
    -                        self.hosted_zones[
    -                            hosted_zone.id
    -                        ].logging_config = LoggingConfig(
    -                            cloudwatch_log_group_arn=logging_config[
    -                                "CloudWatchLogsLogGroupArn"
    -                            ]
    +                        self.hosted_zones[hosted_zone.id].logging_config = (
    +                            LoggingConfig(
    +                                cloudwatch_log_group_arn=logging_config[
    +                                    "CloudWatchLogsLogGroupArn"
    +                                ]
    +                            )
                             )
     
             except Exception as error:
    diff --git a/prowler/providers/aws/services/s3/s3_bucket_policy_public_write_access/s3_bucket_policy_public_write_access.py b/prowler/providers/aws/services/s3/s3_bucket_policy_public_write_access/s3_bucket_policy_public_write_access.py
    index ca509904511..8828702290b 100644
    --- a/prowler/providers/aws/services/s3/s3_bucket_policy_public_write_access/s3_bucket_policy_public_write_access.py
    +++ b/prowler/providers/aws/services/s3/s3_bucket_policy_public_write_access/s3_bucket_policy_public_write_access.py
    @@ -46,9 +46,24 @@ def execute(self):
                                 and "*" in str(statement["Principal"])
                             )
                             and (
    -                            "s3:PutObject" in statement["Action"]
    -                            or "*" in statement["Action"]
    -                            or "s3:*" in statement["Action"]
    +                            (
    +                                isinstance(statement["Action"], list)
    +                                and (
    +                                    "s3:PutObject" in statement["Action"]
    +                                    or "*" in statement["Action"]
    +                                    or "s3:*" in statement["Action"]
    +                                    or "s3:Put*" in statement["Action"]
    +                                )
    +                            )
    +                            or (
    +                                isinstance(statement["Action"], str)
    +                                and (
    +                                    "s3:PutObject" == statement["Action"]
    +                                    or "*" == statement["Action"]
    +                                    or "s3:*" == statement["Action"]
    +                                    or "s3:Put*" == statement["Action"]
    +                                )
    +                            )
                             )
                         ):
                             report.status = "FAIL"
    diff --git a/prowler/providers/aws/services/s3/s3_service.py b/prowler/providers/aws/services/s3/s3_service.py
    index f7578c990a9..dfcb0146796 100644
    --- a/prowler/providers/aws/services/s3/s3_service.py
    +++ b/prowler/providers/aws/services/s3/s3_service.py
    @@ -28,6 +28,7 @@ def __init__(self, provider):
             self.__threading_call__(self.__get_bucket_tagging__)
     
         # In the S3 service we override the "__threading_call__" method because we spawn a process per bucket instead of per region
    +    # TODO: Replace the above function with the service __threading_call__ using the buckets as the iterator
         def __threading_call__(self, call):
             threads = []
             for bucket in self.buckets:
    @@ -101,6 +102,15 @@ def __get_bucket_versioning__(self, bucket):
                 if "MFADelete" in bucket_versioning:
                     if "Enabled" == bucket_versioning["MFADelete"]:
                         bucket.mfa_delete = True
    +        except ClientError as error:
    +            if error.response["Error"]["Code"] == "NoSuchBucket":
    +                logger.warning(
    +                    f"{error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}"
    +                )
    +            else:
    +                logger.error(
    +                    f"{error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}"
    +                )
             except Exception as error:
                 if bucket.region:
                     logger.error(
    @@ -153,6 +163,15 @@ def __get_bucket_logging__(self, bucket):
                     bucket.logging_target_bucket = bucket_logging["LoggingEnabled"][
                         "TargetBucket"
                     ]
    +        except ClientError as error:
    +            if error.response["Error"]["Code"] == "NoSuchBucket":
    +                logger.warning(
    +                    f"{error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}"
    +                )
    +            else:
    +                logger.error(
    +                    f"{error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}"
    +                )
             except Exception as error:
                 if regional_client:
                     logger.error(
    @@ -224,6 +243,15 @@ def __get_bucket_acl__(self, bucket):
                         grantee.permission = grant["Permission"]
                     grantees.append(grantee)
                 bucket.acl_grantees = grantees
    +        except ClientError as error:
    +            if error.response["Error"]["Code"] == "NoSuchBucket":
    +                logger.warning(
    +                    f"{error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}"
    +                )
    +            else:
    +                logger.error(
    +                    f"{error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}"
    +                )
             except Exception as error:
                 if regional_client:
                     logger.error(
    @@ -241,18 +269,26 @@ def __get_bucket_policy__(self, bucket):
                 bucket.policy = json.loads(
                     regional_client.get_bucket_policy(Bucket=bucket.name)["Policy"]
                 )
    -        except Exception as error:
    -            if "NoSuchBucketPolicy" in str(error):
    +        except ClientError as error:
    +            if error.response["Error"]["Code"] == "NoSuchBucketPolicy":
                     bucket.policy = {}
    +            elif error.response["Error"]["Code"] == "NoSuchBucket":
    +                logger.warning(
    +                    f"{error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}"
    +                )
                 else:
    -                if regional_client:
    -                    logger.error(
    -                        f"{regional_client.region} -- {error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}"
    -                    )
    -                else:
    -                    logger.error(
    -                        f"{error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}"
    -                    )
    +                logger.error(
    +                    f"{error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}"
    +                )
    +        except Exception as error:
    +            if regional_client:
    +                logger.error(
    +                    f"{regional_client.region} -- {error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}"
    +                )
    +            else:
    +                logger.error(
    +                    f"{error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}"
    +                )
     
         def __get_bucket_ownership_controls__(self, bucket):
             logger.info("S3 - Get buckets ownership controls...")
    diff --git a/prowler/providers/aws/services/sns/sns_topics_not_publicly_accessible/sns_topics_not_publicly_accessible.py b/prowler/providers/aws/services/sns/sns_topics_not_publicly_accessible/sns_topics_not_publicly_accessible.py
    index bec81d1ba51..91f2448212a 100644
    --- a/prowler/providers/aws/services/sns/sns_topics_not_publicly_accessible/sns_topics_not_publicly_accessible.py
    +++ b/prowler/providers/aws/services/sns/sns_topics_not_publicly_accessible/sns_topics_not_publicly_accessible.py
    @@ -1,6 +1,6 @@
     from prowler.lib.check.models import Check, Check_Report_AWS
     from prowler.providers.aws.lib.policy_condition_parser.policy_condition_parser import (
    -    is_account_only_allowed_in_condition,
    +    is_condition_block_restrictive,
     )
     from prowler.providers.aws.services.sns.sns_client import sns_client
     
    @@ -35,7 +35,7 @@ def execute(self):
                             ):
                                 if (
                                     "Condition" in statement
    -                                and is_account_only_allowed_in_condition(
    +                                and is_condition_block_restrictive(
                                         statement["Condition"], sns_client.audited_account
                                     )
                                 ):
    diff --git a/prowler/providers/aws/services/sqs/sqs_queues_not_publicly_accessible/sqs_queues_not_publicly_accessible.py b/prowler/providers/aws/services/sqs/sqs_queues_not_publicly_accessible/sqs_queues_not_publicly_accessible.py
    index f360b7bc482..9207d6c2daf 100644
    --- a/prowler/providers/aws/services/sqs/sqs_queues_not_publicly_accessible/sqs_queues_not_publicly_accessible.py
    +++ b/prowler/providers/aws/services/sqs/sqs_queues_not_publicly_accessible/sqs_queues_not_publicly_accessible.py
    @@ -1,6 +1,6 @@
     from prowler.lib.check.models import Check, Check_Report_AWS
     from prowler.providers.aws.lib.policy_condition_parser.policy_condition_parser import (
    -    is_account_only_allowed_in_condition,
    +    is_condition_block_restrictive,
     )
     from prowler.providers.aws.services.sqs.sqs_client import sqs_client
     
    @@ -32,8 +32,10 @@ def execute(self):
                                 )
                             ):
                                 if "Condition" in statement:
    -                                if is_account_only_allowed_in_condition(
    -                                    statement["Condition"], sqs_client.audited_account
    +                                if is_condition_block_restrictive(
    +                                    statement["Condition"],
    +                                    sqs_client.audited_account,
    +                                    True,
                                     ):
                                         report.status_extended = f"SQS queue {queue.id} is not public because its policy only allows access from the same account."
                                     else:
    diff --git a/prowler/providers/aws/services/trustedadvisor/trustedadvisor_premium_support_plan_subscribed/trustedadvisor_premium_support_plan_subscribed.metadata.json b/prowler/providers/aws/services/trustedadvisor/trustedadvisor_premium_support_plan_subscribed/trustedadvisor_premium_support_plan_subscribed.metadata.json
    index b4f7f21f337..c76338760bf 100644
    --- a/prowler/providers/aws/services/trustedadvisor/trustedadvisor_premium_support_plan_subscribed/trustedadvisor_premium_support_plan_subscribed.metadata.json
    +++ b/prowler/providers/aws/services/trustedadvisor/trustedadvisor_premium_support_plan_subscribed/trustedadvisor_premium_support_plan_subscribed.metadata.json
    @@ -7,7 +7,7 @@
       "SubServiceName": "",
       "ResourceIdTemplate": "arn:aws:iam::AWS_ACCOUNT_NUMBER:root",
       "Severity": "low",
    -  "ResourceType": "",
    +  "ResourceType": "Other",
       "Description": "Check if a Premium support plan is subscribed.",
       "Risk": "Ensure that the appropriate support level is enabled for the necessary AWS accounts. For example, if an AWS account is being used to host production systems and environments, it is highly recommended that the minimum AWS Support Plan should be Business.",
       "RelatedUrl": "https://aws.amazon.com/premiumsupport/plans/",
    diff --git a/prowler/providers/aws/services/trustedadvisor/trustedadvisor_service.py b/prowler/providers/aws/services/trustedadvisor/trustedadvisor_service.py
    index a09acc3f0a5..61999e6cccb 100644
    --- a/prowler/providers/aws/services/trustedadvisor/trustedadvisor_service.py
    +++ b/prowler/providers/aws/services/trustedadvisor/trustedadvisor_service.py
    @@ -34,9 +34,9 @@ def __init__(self, provider):
         def __describe_trusted_advisor_checks__(self):
             logger.info("TrustedAdvisor - Describing Checks...")
             try:
    -            for check in self.client.describe_trusted_advisor_checks(language="en")[
    -                "checks"
    -            ]:
    +            for check in self.client.describe_trusted_advisor_checks(language="en").get(
    +                "checks", []
    +            ):
                     self.checks.append(
                         Check(
                             id=check["id"],
    diff --git a/prowler/providers/aws/services/vpc/vpc_different_regions/vpc_different_regions.py b/prowler/providers/aws/services/vpc/vpc_different_regions/vpc_different_regions.py
    index 59c25dbf35d..ee7421a4275 100644
    --- a/prowler/providers/aws/services/vpc/vpc_different_regions/vpc_different_regions.py
    +++ b/prowler/providers/aws/services/vpc/vpc_different_regions/vpc_different_regions.py
    @@ -5,22 +5,23 @@
     class vpc_different_regions(Check):
         def execute(self):
             findings = []
    -        vpc_regions = set()
    -        for vpc in vpc_client.vpcs.values():
    -            if not vpc.default:
    -                vpc_regions.add(vpc.region)
    +        if len(vpc_client.vpcs) > 0:
    +            vpc_regions = set()
    +            for vpc in vpc_client.vpcs.values():
    +                if not vpc.default:
    +                    vpc_regions.add(vpc.region)
     
    -        report = Check_Report_AWS(self.metadata())
    -        # This is a global check under the vpc service: region, resource_id and tags are not relevant here but we keep them for consistency
    -        report.region = vpc_client.region
    -        report.resource_id = vpc_client.audited_account
    -        report.resource_arn = vpc_client.audited_account_arn
    -        report.status = "FAIL"
    -        report.status_extended = "VPCs found only in one region."
    -        if len(vpc_regions) > 1:
    -            report.status = "PASS"
    -            report.status_extended = "VPCs found in more than one region."
    +            report = Check_Report_AWS(self.metadata())
    +            report.region = vpc_client.region
    +            report.resource_id = vpc_client.audited_account
    +            report.resource_arn = vpc_client.audited_account_arn
     
    -        findings.append(report)
    +            report.status = "FAIL"
    +            report.status_extended = "VPCs found only in one region."
    +
    +            if len(vpc_regions) > 1:
    +                report.status = "PASS"
    +                report.status_extended = "VPCs found in more than one region."
    +            findings.append(report)
     
             return findings
    diff --git a/prowler/providers/aws/services/vpc/vpc_endpoint_connections_trust_boundaries/vpc_endpoint_connections_trust_boundaries.py b/prowler/providers/aws/services/vpc/vpc_endpoint_connections_trust_boundaries/vpc_endpoint_connections_trust_boundaries.py
    index 311a494280e..0884c2a5132 100644
    --- a/prowler/providers/aws/services/vpc/vpc_endpoint_connections_trust_boundaries/vpc_endpoint_connections_trust_boundaries.py
    +++ b/prowler/providers/aws/services/vpc/vpc_endpoint_connections_trust_boundaries/vpc_endpoint_connections_trust_boundaries.py
    @@ -2,7 +2,7 @@
     
     from prowler.lib.check.models import Check, Check_Report_AWS
     from prowler.providers.aws.lib.policy_condition_parser.policy_condition_parser import (
    -    is_account_only_allowed_in_condition,
    +    is_condition_block_restrictive,
     )
     from prowler.providers.aws.services.vpc.vpc_client import vpc_client
     
    @@ -35,7 +35,7 @@ def execute(self):
     
                             if "Condition" in statement:
                                 for account_id in trusted_account_ids:
    -                                if is_account_only_allowed_in_condition(
    +                                if is_condition_block_restrictive(
                                         statement["Condition"], account_id
                                     ):
                                         access_from_trusted_accounts = True
    @@ -70,7 +70,7 @@ def execute(self):
                                     access_from_trusted_accounts = False
                                     if "Condition" in statement:
                                         for account_id in trusted_account_ids:
    -                                        if is_account_only_allowed_in_condition(
    +                                        if is_condition_block_restrictive(
                                                 statement["Condition"], account_id
                                             ):
                                                 access_from_trusted_accounts = True
    @@ -102,7 +102,7 @@ def execute(self):
     
                                     if "Condition" in statement:
                                         for account_id in trusted_account_ids:
    -                                        if is_account_only_allowed_in_condition(
    +                                        if is_condition_block_restrictive(
                                                 statement["Condition"], account_id
                                             ):
                                                 access_from_trusted_accounts = True
    diff --git a/prowler/providers/aws/services/wellarchitected/wellarchitected_service.py b/prowler/providers/aws/services/wellarchitected/wellarchitected_service.py
    index c4ad76950ad..b323a293b91 100644
    --- a/prowler/providers/aws/services/wellarchitected/wellarchitected_service.py
    +++ b/prowler/providers/aws/services/wellarchitected/wellarchitected_service.py
    @@ -1,5 +1,6 @@
     from typing import Optional
     
    +from botocore.client import ClientError
     from pydantic import BaseModel
     
     from prowler.lib.logger import logger
    @@ -49,6 +50,15 @@ def __list_tags_for_resource__(self):
                         WorkloadArn=workload.arn
                     )["Tags"]
                     workload.tags = [response]
    +        except ClientError as error:
    +            if error.response["Error"]["Code"] == "BadRequestException":
    +                logger.warning(
    +                    f"{self.region} -- {error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}"
    +                )
    +            else:
    +                logger.error(
    +                    f"{self.region} -- {error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}"
    +                )
             except Exception as error:
                 logger.error(
                     f"{regional_client.region} -- {error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}"
    diff --git a/prowler/providers/aws/services/wellarchitected/wellarchitected_workload_no_high_or_medium_risks/wellarchitected_workload_no_high_or_medium_risks.py b/prowler/providers/aws/services/wellarchitected/wellarchitected_workload_no_high_or_medium_risks/wellarchitected_workload_no_high_or_medium_risks.py
    index a0ebf431b4f..e59b8730eed 100644
    --- a/prowler/providers/aws/services/wellarchitected/wellarchitected_workload_no_high_or_medium_risks/wellarchitected_workload_no_high_or_medium_risks.py
    +++ b/prowler/providers/aws/services/wellarchitected/wellarchitected_workload_no_high_or_medium_risks/wellarchitected_workload_no_high_or_medium_risks.py
    @@ -17,7 +17,7 @@ def execute(self):
                 report.status_extended = f"Well Architected workload {workload.name} does not contain high or medium risks."
                 if "HIGH" in workload.risks or "MEDIUM" in workload.risks:
                     report.status = "FAIL"
    -                report.status_extended = f"Well Architected workload {workload.name} contains {workload.risks.get('HIGH',0)} high and {workload.risks.get('MEDIUM',0)} medium risks."
    +                report.status_extended = f"Well Architected workload {workload.name} contains {workload.risks.get('HIGH' , 0)} high and {workload.risks.get('MEDIUM' , 0)} medium risks."
     
                 findings.append(report)
             return findings
    diff --git a/prowler/providers/azure/azure_provider.py b/prowler/providers/azure/azure_provider.py
    index df698625a22..60fb8bf20ac 100644
    --- a/prowler/providers/azure/azure_provider.py
    +++ b/prowler/providers/azure/azure_provider.py
    @@ -1,9 +1,11 @@
    +import asyncio
     import sys
     from os import getenv
     
    +import requests
     from azure.identity import DefaultAzureCredential, InteractiveBrowserCredential
     from azure.mgmt.subscription import SubscriptionClient
    -from msgraph.core import GraphClient
    +from msgraph import GraphServiceClient
     
     from prowler.lib.logger import logger
     from prowler.providers.azure.lib.audit_info.models import AzureIdentityInfo
    @@ -106,49 +108,52 @@ def __get_identity_info__(
             # With cli also should be possible but right now it does not work, azure python package issue is coming
             # At the time of writting this with az cli creds is not working, despite that is included
             if sp_env_auth or browser_auth or az_cli_auth:
    -            # Trying to recover tenant domain info
    -            try:
    -                logger.info(
    -                    "Trying to retrieve tenant domain from AAD to populate identity structure ..."
    -                )
    -                client = GraphClient(credential=credentials)
    -                domain_result = client.get("/domains").json()
    -                if "value" in domain_result:
    -                    if "id" in domain_result["value"][0]:
    -                        identity.domain = domain_result["value"][0]["id"]
    -            except Exception as error:
    -                logger.error(
    -                    "Provided identity does not have permissions to access AAD to retrieve tenant domain"
    -                )
    -                logger.error(
    -                    f"{error.__class__.__name__}[{error.__traceback__.tb_lineno}] -- {error}"
    -                )
    -            # since that exception is not considered as critical, we keep filling another identity fields
    -            if sp_env_auth:
    -                # The id of the sp can be retrieved from environment variables
    -                identity.identity_id = getenv("AZURE_CLIENT_ID")
    -                identity.identity_type = "Service Principal"
    -            # Same here, if user can access AAD, some fields are retrieved if not, default value, for az cli
    -            # should work but it doesn't, pending issue
    -            else:
    -                identity.identity_id = "Unknown user id (Missing AAD permissions)"
    -                identity.identity_type = "User"
    +
    +            async def get_azure_identity():
    +                # Trying to recover tenant domain info
                     try:
                         logger.info(
    -                        "Trying to retrieve user information from AAD to populate identity structure ..."
    +                        "Trying to retrieve tenant domain from AAD to populate identity structure ..."
                         )
    -                    client = GraphClient(credential=credentials)
    -                    user_name = client.get("/me").json()
    -                    if "userPrincipalName" in user_name:
    -                        identity.identity_id = user_name
    +                    client = GraphServiceClient(credentials=credentials)
    +
    +                    domain_result = await client.domains.get()
    +                    if getattr(domain_result, "value"):
    +                        if getattr(domain_result.value[0], "id"):
    +                            identity.domain = domain_result.value[0].id
     
                     except Exception as error:
    -                    logger.error(
    -                        "Provided identity does not have permissions to access AAD to retrieve user's metadata"
    -                    )
                         logger.error(
                             f"{error.__class__.__name__}[{error.__traceback__.tb_lineno}] -- {error}"
                         )
    +                # since that exception is not considered as critical, we keep filling another identity fields
    +                if sp_env_auth:
    +                    # The id of the sp can be retrieved from environment variables
    +                    identity.identity_id = getenv("AZURE_CLIENT_ID")
    +                    identity.identity_type = "Service Principal"
    +                # Same here, if user can access AAD, some fields are retrieved if not, default value, for az cli
    +                # should work but it doesn't, pending issue
    +                else:
    +                    identity.identity_id = "Unknown user id (Missing AAD permissions)"
    +                    identity.identity_type = "User"
    +                    try:
    +                        logger.info(
    +                            "Trying to retrieve user information from AAD to populate identity structure ..."
    +                        )
    +                        client = GraphServiceClient(credentials=credentials)
    +
    +                        me = await client.me.get()
    +                        if me:
    +                            if getattr(me, "user_principal_name"):
    +                                identity.identity_id = me.user_principal_name
    +
    +                    except Exception as error:
    +                        logger.error(
    +                            f"{error.__class__.__name__}[{error.__traceback__.tb_lineno}] -- {error}"
    +                        )
    +
    +            asyncio.run(get_azure_identity())
    +
             # Managed identities only can be assigned resource, resource group and subscription scope permissions
             elif managed_entity_auth:
                 identity.identity_id = "Default Managed Identity ID"
    @@ -209,3 +214,31 @@ def get_identity(self):
     
         def get_region_config(self):
             return self.region_config
    +
    +    def get_locations(self, credentials, region_config):
    +        locations = None
    +        if credentials and region_config:
    +            subscriptions_client = SubscriptionClient(
    +                credential=credentials,
    +                base_url=region_config["base_url"],
    +                credential_scopes=region_config["credential_scopes"],
    +            )
    +            list_subscriptions = subscriptions_client.subscriptions.list()
    +            list_subscriptions_ids = [
    +                subscription.subscription_id for subscription in list_subscriptions
    +            ]
    +            locations = {}
    +            token = credentials.get_token("https://management.azure.com/.default").token
    +            for subscription_id in list_subscriptions_ids:
    +                locations.update({subscription_id: []})
    +                url = f"https://management.azure.com/subscriptions/{subscription_id}/locations?api-version=2022-12-01"
    +                headers = {
    +                    "Authorization": f"Bearer {token}",
    +                    "Content-Type": "application/json",
    +                }
    +                response = requests.get(url, headers=headers)
    +                if response.status_code == 200:
    +                    data = response.json()
    +                    for location in data["value"]:
    +                        locations[subscription_id].append(location["name"])
    +        return locations
    diff --git a/prowler/providers/azure/lib/arguments/arguments.py b/prowler/providers/azure/lib/arguments/arguments.py
    index 30cf7a33d79..0be26292338 100644
    --- a/prowler/providers/azure/lib/arguments/arguments.py
    +++ b/prowler/providers/azure/lib/arguments/arguments.py
    @@ -52,6 +52,17 @@ def init_parser(self):
             type=validate_azure_region,
             help="Azure region from `az cloud list --output table`, by default AzureCloud",
         )
    +    # 3rd Party Integrations
    +    azure_3rd_party_subparser = azure_parser.add_argument_group(
    +        "3rd Party Integrations"
    +    )
    +    azure_3rd_party_subparser.add_argument(
    +        "-N",
    +        "--shodan",
    +        nargs="?",
    +        default=None,
    +        help="Shodan API key used by check network_public_ip_shodan.",
    +    )
     
     
     def validate_azure_region(region):
    diff --git a/prowler/providers/azure/lib/audit_info/audit_info.py b/prowler/providers/azure/lib/audit_info/audit_info.py
    index cb46d8a7b78..7f086d79844 100644
    --- a/prowler/providers/azure/lib/audit_info/audit_info.py
    +++ b/prowler/providers/azure/lib/audit_info/audit_info.py
    @@ -11,4 +11,5 @@
         audit_metadata=None,
         audit_config=None,
         azure_region_config=AzureRegionConfig(),
    +    locations=None,
     )
    diff --git a/prowler/providers/azure/lib/audit_info/models.py b/prowler/providers/azure/lib/audit_info/models.py
    index 2b1bb274e33..1ee60326fe2 100644
    --- a/prowler/providers/azure/lib/audit_info/models.py
    +++ b/prowler/providers/azure/lib/audit_info/models.py
    @@ -28,6 +28,7 @@ class Azure_Audit_Info:
         audit_metadata: Optional[Any]
         audit_config: dict
         azure_region_config: AzureRegionConfig
    +    locations: list[str]
     
         def __init__(
             self,
    @@ -37,6 +38,7 @@ def __init__(
             audit_resources,
             audit_config,
             azure_region_config,
    +        locations,
         ):
             self.credentials = credentials
             self.identity = identity
    @@ -44,3 +46,4 @@ def __init__(
             self.audit_resources = audit_resources
             self.audit_config = audit_config
             self.azure_region_config = azure_region_config
    +        self.locations = locations
    diff --git a/prowler/providers/azure/lib/service/service.py b/prowler/providers/azure/lib/service/service.py
    index 423df72694e..1dde43d75b7 100644
    --- a/prowler/providers/azure/lib/service/service.py
    +++ b/prowler/providers/azure/lib/service/service.py
    @@ -16,6 +16,10 @@ def __init__(
             )
     
             self.subscriptions = provider.identity.subscriptions
    +        # TODO: review locations
    +        self.locations = provider.locations
    +
    +        self.audit_config = provider.audit_config
     
         def __set_clients__(self, subscriptions, session, service, region_config):
             clients = {}
    diff --git a/prowler/providers/azure/services/app/__init__.py b/prowler/providers/azure/services/app/__init__.py
    new file mode 100644
    index 00000000000..e69de29bb2d
    diff --git a/prowler/providers/azure/services/app/app_client.py b/prowler/providers/azure/services/app/app_client.py
    new file mode 100644
    index 00000000000..6b7627f9fc1
    --- /dev/null
    +++ b/prowler/providers/azure/services/app/app_client.py
    @@ -0,0 +1,4 @@
    +from prowler.providers.azure.lib.audit_info.audit_info import azure_audit_info
    +from prowler.providers.azure.services.app.app_service import App
    +
    +app_client = App(azure_audit_info)
    diff --git a/prowler/providers/azure/services/app/app_client_certificates_on/__init__.py b/prowler/providers/azure/services/app/app_client_certificates_on/__init__.py
    new file mode 100644
    index 00000000000..e69de29bb2d
    diff --git a/prowler/providers/azure/services/app/app_client_certificates_on/app_client_certificates_on.metadata.json b/prowler/providers/azure/services/app/app_client_certificates_on/app_client_certificates_on.metadata.json
    new file mode 100644
    index 00000000000..bb1094db214
    --- /dev/null
    +++ b/prowler/providers/azure/services/app/app_client_certificates_on/app_client_certificates_on.metadata.json
    @@ -0,0 +1,30 @@
    +{
    +  "Provider": "azure",
    +  "CheckID": "app_client_certificates_on",
    +  "CheckTitle": "Ensure the web app has 'Client Certificates (Incoming client certificates)' set to 'On'",
    +  "CheckType": [],
    +  "ServiceName": "app",
    +  "SubServiceName": "",
    +  "ResourceIdTemplate": "",
    +  "Severity": "medium",
    +  "ResourceType": "Microsoft.Web/sites/config",
    +  "Description": "Client certificates allow for the app to request a certificate for incoming requests. Only clients that have a valid certificate will be able to reach the app.",
    +  "Risk": "The TLS mutual authentication technique in enterprise environments ensures the authenticity of clients to the server. If incoming client certificates are enabled, then only an authenticated client who has valid certificates can access the app.",
    +  "RelatedUrl": "https://learn.microsoft.com/en-us/azure/app-service/app-service-web-configure-tls-mutual-auth?tabs=azurecli",
    +  "Remediation": {
    +    "Code": {
    +      "CLI": "az webapp update --resource-group  --name  --set clientCertEnabled=true",
    +      "NativeIaC": "",
    +      "Other": "",
    +      "Terraform": "https://docs.bridgecrew.io/docs/bc_azr_networking_7#terraform"
    +    },
    +    "Recommendation": {
    +      "Text": "1. Login to Azure Portal using https://portal.azure.com 2. Go to App Services 3. Click on each App 4. Under the Settings section, Click on Configuration, then General settings 5. Set the option Client certificate mode located under Incoming client certificates to Require",
    +      "Url": "https://learn.microsoft.com/en-us/security/benchmark/azure/security-controls-v3-identity-management#im-4-authenticate-server-and-services"
    +    }
    +  },
    +  "Categories": [],
    +  "DependsOn": [],
    +  "RelatedTo": [],
    +  "Notes": "Utilizing and maintaining client certificates will require additional work to obtain and manage replacement and key rotation."
    +}
    diff --git a/prowler/providers/azure/services/app/app_client_certificates_on/app_client_certificates_on.py b/prowler/providers/azure/services/app/app_client_certificates_on/app_client_certificates_on.py
    new file mode 100644
    index 00000000000..2ff66971a9d
    --- /dev/null
    +++ b/prowler/providers/azure/services/app/app_client_certificates_on/app_client_certificates_on.py
    @@ -0,0 +1,27 @@
    +from prowler.lib.check.models import Check, Check_Report_Azure
    +from prowler.providers.azure.services.app.app_client import app_client
    +
    +
    +class app_client_certificates_on(Check):
    +    def execute(self) -> Check_Report_Azure:
    +        findings = []
    +
    +        for (
    +            subscription_name,
    +            apps,
    +        ) in app_client.apps.items():
    +            for app_name, app in apps.items():
    +                report = Check_Report_Azure(self.metadata())
    +                report.status = "PASS"
    +                report.subscription = subscription_name
    +                report.resource_name = app_name
    +                report.resource_id = app.resource_id
    +                report.status_extended = f"Clients are required to present a certificate for app '{app_name}' in subscription '{subscription_name}'."
    +
    +                if app.client_cert_mode != "Required":
    +                    report.status = "FAIL"
    +                    report.status_extended = f"Clients are not required to present a certificate for app '{app_name}' in subscription '{subscription_name}'."
    +
    +                findings.append(report)
    +
    +        return findings
    diff --git a/prowler/providers/azure/services/app/app_ensure_auth_is_set_up/__init__.py b/prowler/providers/azure/services/app/app_ensure_auth_is_set_up/__init__.py
    new file mode 100644
    index 00000000000..e69de29bb2d
    diff --git a/prowler/providers/azure/services/app/app_ensure_auth_is_set_up/app_ensure_auth_is_set_up.metadata.json b/prowler/providers/azure/services/app/app_ensure_auth_is_set_up/app_ensure_auth_is_set_up.metadata.json
    new file mode 100644
    index 00000000000..65308f2f09a
    --- /dev/null
    +++ b/prowler/providers/azure/services/app/app_ensure_auth_is_set_up/app_ensure_auth_is_set_up.metadata.json
    @@ -0,0 +1,30 @@
    +{
    +  "Provider": "azure",
    +  "CheckID": "app_ensure_auth_is_set_up",
    +  "CheckTitle": "Ensure App Service Authentication is set up for apps in Azure App Service",
    +  "CheckType": [],
    +  "ServiceName": "app",
    +  "SubServiceName": "",
    +  "ResourceIdTemplate": "",
    +  "Severity": "medium",
    +  "ResourceType": "Microsoft.Web/sites",
    +  "Description": "Azure App Service Authentication is a feature that can prevent anonymous HTTP requests from reaching a Web Application or authenticate those with tokens before they reach the app. If an anonymous request is received from a browser, App Service will redirect to a logon page. To handle the logon process, a choice from a set of identity providers can be made, or a custom authentication mechanism can be implemented.",
    +  "Risk": "By Enabling App Service Authentication, every incoming HTTP request passes through it before being handled by the application code. It also handles authentication of users with the specified provider (Azure Active Directory, Facebook, Google, Microsoft Account, and Twitter), validation, storing and refreshing of tokens, managing the authenticated sessions and injecting identity information into request headers.",
    +  "RelatedUrl": "https://learn.microsoft.com/en-us/azure/app-service/overview-authentication-authorization",
    +  "Remediation": {
    +    "Code": {
    +      "CLI": "az webapp auth update --resource-group  --name  --enabled true",
    +      "NativeIaC": "",
    +      "Other": "https://www.trendmicro.com/cloudoneconformity/knowledge-base/azure/AppService/enable-app-service-authentication.html",
    +      "Terraform": "https://docs.bridgecrew.io/docs/bc_azr_general_2#terraform"
    +    },
    +    "Recommendation": {
    +      "Text": "1. Login to Azure Portal using https://portal.azure.com 2. Go to App Services 3. Click on each App 4. Under Setting section, click on Authentication 5. If no identity providers are set up, then click Add identity provider 6. Choose other parameters as per your requirements and click on Add",
    +      "Url": "https://learn.microsoft.com/en-us/azure/role-based-access-control/built-in-roles#website-contributor"
    +    }
    +  },
    +  "Categories": [],
    +  "DependsOn": [],
    +  "RelatedTo": [],
    +  "Notes": "This is only required for App Services which require authentication. Enabling on site like a marketing or support website will prevent unauthenticated access which would be undesirable. Adding Authentication requirement will increase cost of App Service and require additional security components to facilitate the authentication"
    +}
    diff --git a/prowler/providers/azure/services/app/app_ensure_auth_is_set_up/app_ensure_auth_is_set_up.py b/prowler/providers/azure/services/app/app_ensure_auth_is_set_up/app_ensure_auth_is_set_up.py
    new file mode 100644
    index 00000000000..1d8eb24328a
    --- /dev/null
    +++ b/prowler/providers/azure/services/app/app_ensure_auth_is_set_up/app_ensure_auth_is_set_up.py
    @@ -0,0 +1,27 @@
    +from prowler.lib.check.models import Check, Check_Report_Azure
    +from prowler.providers.azure.services.app.app_client import app_client
    +
    +
    +class app_ensure_auth_is_set_up(Check):
    +    def execute(self) -> Check_Report_Azure:
    +        findings = []
    +
    +        for (
    +            subscription_name,
    +            apps,
    +        ) in app_client.apps.items():
    +            for app_name, app in apps.items():
    +                report = Check_Report_Azure(self.metadata())
    +                report.status = "PASS"
    +                report.subscription = subscription_name
    +                report.resource_name = app_name
    +                report.resource_id = app.resource_id
    +                report.status_extended = f"Authentication is set up for app '{app_name}' in subscription '{subscription_name}'."
    +
    +                if not app.auth_enabled:
    +                    report.status = "FAIL"
    +                    report.status_extended = f"Authentication is not set up for app '{app_name}' in subscription '{subscription_name}'."
    +
    +                findings.append(report)
    +
    +        return findings
    diff --git a/prowler/providers/azure/services/app/app_ensure_http_is_redirected_to_https/__init__.py b/prowler/providers/azure/services/app/app_ensure_http_is_redirected_to_https/__init__.py
    new file mode 100644
    index 00000000000..e69de29bb2d
    diff --git a/prowler/providers/azure/services/app/app_ensure_http_is_redirected_to_https/app_ensure_http_is_redirected_to_https.metadata.json b/prowler/providers/azure/services/app/app_ensure_http_is_redirected_to_https/app_ensure_http_is_redirected_to_https.metadata.json
    new file mode 100644
    index 00000000000..24250f00459
    --- /dev/null
    +++ b/prowler/providers/azure/services/app/app_ensure_http_is_redirected_to_https/app_ensure_http_is_redirected_to_https.metadata.json
    @@ -0,0 +1,30 @@
    +{
    +  "Provider": "azure",
    +  "CheckID": "app_ensure_http_is_redirected_to_https",
    +  "CheckTitle": "Ensure Web App Redirects All HTTP traffic to HTTPS in Azure App Service",
    +  "CheckType": [],
    +  "ServiceName": "app",
    +  "SubServiceName": "",
    +  "ResourceIdTemplate": "",
    +  "Severity": "medium",
    +  "ResourceType": "Microsoft.Web/sites/config",
    +  "Description": "Azure Web Apps allows sites to run under both HTTP and HTTPS by default. Web apps can be accessed by anyone using non-secure HTTP links by default. Non-secure HTTP requests can be restricted and all HTTP requests redirected to the secure HTTPS port. It is recommended to enforce HTTPS-only traffic.",
    +  "Risk": "Enabling HTTPS-only traffic will redirect all non-secure HTTP requests to HTTPS ports. HTTPS uses the TLS/SSL protocol to provide a secure connection which is both encrypted and authenticated. It is therefore important to support HTTPS for the security benefits.",
    +  "RelatedUrl": "https://learn.microsoft.com/en-us/azure/app-service/configure-ssl-bindings#enforce-https",
    +  "Remediation": {
    +    "Code": {
    +      "CLI": "az webapp update --resource-group  --name  --set httpsOnly=true",
    +      "NativeIaC": "",
    +      "Other": "https://www.trendmicro.com/cloudoneconformity/knowledge-base/azure/AppService/enable-https-only-traffic.html#",
    +      "Terraform": "https://docs.bridgecrew.io/docs/bc_azr_networking_5#terraform"
    +    },
    +    "Recommendation": {
    +      "Text": "1. Login to Azure Portal using https://portal.azure.com 2. Go to App Services 3. Click on each App 4. Under Setting section, Click on Configuration 5. In the General Settings section, set the HTTPS Only to On 6. Click Save",
    +      "Url": "https://learn.microsoft.com/en-us/security/benchmark/azure/security-controls-v3-data-protection#dp-3-encrypt-sensitive-data-in-transit"
    +    }
    +  },
    +  "Categories": [],
    +  "DependsOn": [],
    +  "RelatedTo": [],
    +  "Notes": "When it is enabled, every incoming HTTP request is redirected to the HTTPS port. This means an extra level of security will be added to the HTTP requests made to the app."
    +}
    diff --git a/prowler/providers/azure/services/app/app_ensure_http_is_redirected_to_https/app_ensure_http_is_redirected_to_https.py b/prowler/providers/azure/services/app/app_ensure_http_is_redirected_to_https/app_ensure_http_is_redirected_to_https.py
    new file mode 100644
    index 00000000000..ada2f7dbfe5
    --- /dev/null
    +++ b/prowler/providers/azure/services/app/app_ensure_http_is_redirected_to_https/app_ensure_http_is_redirected_to_https.py
    @@ -0,0 +1,27 @@
    +from prowler.lib.check.models import Check, Check_Report_Azure
    +from prowler.providers.azure.services.app.app_client import app_client
    +
    +
    +class app_ensure_http_is_redirected_to_https(Check):
    +    def execute(self) -> Check_Report_Azure:
    +        findings = []
    +
    +        for (
    +            subscription_name,
    +            apps,
    +        ) in app_client.apps.items():
    +            for app_name, app in apps.items():
    +                report = Check_Report_Azure(self.metadata())
    +                report.status = "PASS"
    +                report.subscription = subscription_name
    +                report.resource_name = app_name
    +                report.resource_id = app.resource_id
    +                report.status_extended = f"HTTP is redirected to HTTPS for app '{app_name}' in subscription '{subscription_name}'."
    +
    +                if not app.https_only:
    +                    report.status = "FAIL"
    +                    report.status_extended = f"HTTP is not redirected to HTTPS for app '{app_name}' in subscription '{subscription_name}'."
    +
    +                findings.append(report)
    +
    +        return findings
    diff --git a/prowler/providers/azure/services/app/app_ensure_java_version_is_latest/__init__.py b/prowler/providers/azure/services/app/app_ensure_java_version_is_latest/__init__.py
    new file mode 100644
    index 00000000000..e69de29bb2d
    diff --git a/prowler/providers/azure/services/app/app_ensure_java_version_is_latest/app_ensure_java_version_is_latest.metadata.json b/prowler/providers/azure/services/app/app_ensure_java_version_is_latest/app_ensure_java_version_is_latest.metadata.json
    new file mode 100644
    index 00000000000..da0990f1c21
    --- /dev/null
    +++ b/prowler/providers/azure/services/app/app_ensure_java_version_is_latest/app_ensure_java_version_is_latest.metadata.json
    @@ -0,0 +1,30 @@
    +{
    +  "Provider": "azure",
    +  "CheckID": "app_ensure_java_version_is_latest",
    +  "CheckTitle": "Ensure that 'Java version' is the latest, if used to run the Web App",
    +  "CheckType": [],
    +  "ServiceName": "app",
    +  "SubServiceName": "",
    +  "ResourceIdTemplate": "",
    +  "Severity": "low",
    +  "ResourceType": "Microsoft.Web/sites",
    +  "Description": "Periodically, newer versions are released for Java software either due to security flaws or to include additional functionality. Using the latest Java version for web apps is recommended in order to take advantage of security fixes, if any, and/or new functionalities of the newer version.",
    +  "Risk": "Newer versions may contain security enhancements and additional functionality. Using the latest software version is recommended in order to take advantage of enhancements and new capabilities. With each software installation, organizations need to determine if a given update meets their requirements. They must also verify the compatibility and support provided for any additional software against the update revision that is selected.",
    +  "RelatedUrl": "https://learn.microsoft.com/en-us/azure/app-service/configure-common?tabs=portal#general-settings",
    +  "Remediation": {
    +    "Code": {
    +      "CLI": "",
    +      "NativeIaC": "",
    +      "Other": "https://www.trendmicro.com/cloudoneconformity/knowledge-base/azure/AppService/latest-version-of-java.html",
    +      "Terraform": "https://docs.bridgecrew.io/docs/ensure-that-java-version-is-the-latest-if-used-to-run-the-web-app#terraform"
    +    },
    +    "Recommendation": {
    +      "Text": "1. Login to Azure Portal using https://portal.azure.com 2. Go to App Services 3. Click on each App 4. Under Settings section, click on Configuration 5. Click on the General settings pane and ensure that for a Stack of Java the Major Version and Minor Version reflect the latest stable and supported release, and that the Java web server version is set to the auto-update option. NOTE: No action is required if Java version is set to Off, as Java is not used by your web app.",
    +      "Url": "https://learn.microsoft.com/en-us/azure/app-service/configure-language-java?pivots=platform-linux#choosing-a-java-runtime-version"
    +    }
    +  },
    +  "Categories": [],
    +  "DependsOn": [],
    +  "RelatedTo": [],
    +  "Notes": "If your app is written using version-dependent features or libraries, they may not be available on the latest version. If you wish to upgrade, research the impact thoroughly. Upgrading may have unforeseen consequences that could result in downtime."
    +}
    diff --git a/prowler/providers/azure/services/app/app_ensure_java_version_is_latest/app_ensure_java_version_is_latest.py b/prowler/providers/azure/services/app/app_ensure_java_version_is_latest/app_ensure_java_version_is_latest.py
    new file mode 100644
    index 00000000000..04919aff617
    --- /dev/null
    +++ b/prowler/providers/azure/services/app/app_ensure_java_version_is_latest/app_ensure_java_version_is_latest.py
    @@ -0,0 +1,39 @@
    +from prowler.lib.check.models import Check, Check_Report_Azure
    +from prowler.providers.azure.services.app.app_client import app_client
    +
    +
    +class app_ensure_java_version_is_latest(Check):
    +    def execute(self) -> Check_Report_Azure:
    +        findings = []
    +
    +        for (
    +            subscription_name,
    +            apps,
    +        ) in app_client.apps.items():
    +            for app_name, app in apps.items():
    +                linux_framework = getattr(app.configurations, "linux_fx_version", "")
    +                windows_framework_version = getattr(
    +                    app.configurations, "java_version", None
    +                )
    +
    +                if "java" in linux_framework.lower() or windows_framework_version:
    +                    report = Check_Report_Azure(self.metadata())
    +                    report.status = "FAIL"
    +                    report.subscription = subscription_name
    +                    report.resource_name = app_name
    +                    report.resource_id = app.resource_id
    +                    java_latest_version = app_client.audit_config.get(
    +                        "java_latest_version", "17"
    +                    )
    +                    report.status_extended = f"Java version is set to '{f'java{windows_framework_version}' if windows_framework_version else linux_framework}', but should be set to 'java {java_latest_version}' for app '{app_name}' in subscription '{subscription_name}'."
    +
    +                    if (
    +                        f"java{java_latest_version}" in linux_framework
    +                        or java_latest_version == windows_framework_version
    +                    ):
    +                        report.status = "PASS"
    +                        report.status_extended = f"Java version is set to 'java {java_latest_version}' for app '{app_name}' in subscription '{subscription_name}'."
    +
    +                    findings.append(report)
    +
    +        return findings
    diff --git a/prowler/providers/azure/services/app/app_ensure_php_version_is_latest/__init__.py b/prowler/providers/azure/services/app/app_ensure_php_version_is_latest/__init__.py
    new file mode 100644
    index 00000000000..e69de29bb2d
    diff --git a/prowler/providers/azure/services/app/app_ensure_php_version_is_latest/app_ensure_php_version_is_latest.metadata.json b/prowler/providers/azure/services/app/app_ensure_php_version_is_latest/app_ensure_php_version_is_latest.metadata.json
    new file mode 100644
    index 00000000000..5b370e506d7
    --- /dev/null
    +++ b/prowler/providers/azure/services/app/app_ensure_php_version_is_latest/app_ensure_php_version_is_latest.metadata.json
    @@ -0,0 +1,30 @@
    +{
    +  "Provider": "azure",
    +  "CheckID": "app_ensure_php_version_is_latest",
    +  "CheckTitle": "Ensure That 'PHP version' is the Latest, If Used to Run the Web App",
    +  "CheckType": [],
    +  "ServiceName": "app",
    +  "SubServiceName": "",
    +  "ResourceIdTemplate": "",
    +  "Severity": "low",
    +  "ResourceType": "Microsoft.Web/sites",
    +  "Description": "Periodically newer versions are released for PHP software either due to security flaws or to include additional functionality. Using the latest PHP version for web apps is recommended in order to take advantage of security fixes, if any, and/or additional functionalities of the newer version.",
    +  "Risk": "Newer versions may contain security enhancements and additional functionality. Using the latest software version is recommended in order to take advantage of enhancements and new capabilities. With each software installation, organizations need to determine if a given update meets their requirements. They must also verify the compatibility and support provided for any additional software against the update revision that is selected.",
    +  "RelatedUrl": "https://learn.microsoft.com/en-us/azure/app-service/configure-common?tabs=portal#general-settings",
    +  "Remediation": {
    +    "Code": {
    +      "CLI": "az webapp config set --resource-group  --name  [--linux-fx-version ][--php-version ]",
    +      "NativeIaC": "",
    +      "Other": "https://www.trendmicro.com/cloudoneconformity/knowledge-base/azure/AppService/latest-version-of-php.html",
    +      "Terraform": "https://docs.bridgecrew.io/docs/ensure-that-php-version-is-the-latest-if-used-to-run-the-web-app#terraform"
    +    },
    +    "Recommendation": {
    +      "Text": "1. From Azure Home open the Portal Menu in the top left 2. Go to App Services 3. Click on each App 4. Under Settings section, click on Configuration 5. Click on the General settings pane, ensure that for a Stack of PHP the Major Version and Minor Version reflect the latest stable and supported release. NOTE: No action is required If PHP version is set to Off or is set with an empty value as PHP is not used by your web app",
    +      "Url": "https://learn.microsoft.com/en-us/azure/app-service/configure-language-php?pivots=platform-linux#set-php-version"
    +    }
    +  },
    +  "Categories": [],
    +  "DependsOn": [],
    +  "RelatedTo": [],
    +  "Notes": "If your app is written using version-dependent features or libraries, they may not be available on the latest version. If you wish to upgrade, research the impact thoroughly. Upgrading may have unforeseen consequences that could result in downtime"
    +}
    diff --git a/prowler/providers/azure/services/app/app_ensure_php_version_is_latest/app_ensure_php_version_is_latest.py b/prowler/providers/azure/services/app/app_ensure_php_version_is_latest/app_ensure_php_version_is_latest.py
    new file mode 100644
    index 00000000000..5e9f4f4e57b
    --- /dev/null
    +++ b/prowler/providers/azure/services/app/app_ensure_php_version_is_latest/app_ensure_php_version_is_latest.py
    @@ -0,0 +1,41 @@
    +from prowler.lib.check.models import Check, Check_Report_Azure
    +from prowler.providers.azure.services.app.app_client import app_client
    +
    +
    +class app_ensure_php_version_is_latest(Check):
    +    def execute(self) -> Check_Report_Azure:
    +        findings = []
    +
    +        for (
    +            subscription_name,
    +            apps,
    +        ) in app_client.apps.items():
    +            for app_name, app in apps.items():
    +                framework = getattr(app.configurations, "linux_fx_version", "")
    +
    +                if "php" in framework.lower() or getattr(
    +                    app.configurations, "php_version", ""
    +                ):
    +                    report = Check_Report_Azure(self.metadata())
    +                    report.status = "FAIL"
    +                    report.subscription = subscription_name
    +                    report.resource_name = app_name
    +                    report.resource_id = app.resource_id
    +
    +                    php_latest_version = app_client.audit_config.get(
    +                        "php_latest_version", "8.2"
    +                    )
    +
    +                    report.status_extended = f"PHP version is set to '{framework}', the latest version that you could use is the '{php_latest_version}' version, for app '{app_name}' in subscription '{subscription_name}'."
    +
    +                    if (
    +                        php_latest_version in framework
    +                        or getattr(app.configurations, "php_version", None)
    +                        == php_latest_version
    +                    ):
    +                        report.status = "PASS"
    +                        report.status_extended = f"PHP version is set to '{php_latest_version}' for app '{app_name}' in subscription '{subscription_name}'."
    +
    +                    findings.append(report)
    +
    +        return findings
    diff --git a/prowler/providers/azure/services/app/app_ensure_python_version_is_latest/__init__.py b/prowler/providers/azure/services/app/app_ensure_python_version_is_latest/__init__.py
    new file mode 100644
    index 00000000000..e69de29bb2d
    diff --git a/prowler/providers/azure/services/app/app_ensure_python_version_is_latest/app_ensure_python_version_is_latest.metadata.json b/prowler/providers/azure/services/app/app_ensure_python_version_is_latest/app_ensure_python_version_is_latest.metadata.json
    new file mode 100644
    index 00000000000..b7a7430ceb8
    --- /dev/null
    +++ b/prowler/providers/azure/services/app/app_ensure_python_version_is_latest/app_ensure_python_version_is_latest.metadata.json
    @@ -0,0 +1,30 @@
    +{
    +  "Provider": "azure",
    +  "CheckID": "app_ensure_python_version_is_latest",
    +  "CheckTitle": "Ensure that 'Python version' is the Latest Stable Version, if Used to Run the Web App",
    +  "CheckType": [],
    +  "ServiceName": "app",
    +  "SubServiceName": "",
    +  "ResourceIdTemplate": "",
    +  "Severity": "low",
    +  "ResourceType": "Microsoft.Web/sites",
    +  "Description": "Periodically, newer versions are released for Python software either due to security flaws or to include additional functionality. Using the latest full Python version for web apps is recommended in order to take advantage of security fixes, if any, and/or additional functionalities of the newer version.",
    +  "Risk": "Newer versions may contain security enhancements and additional functionality. Using the latest software version is recommended in order to take advantage of enhancements and new capabilities. With each software installation, organizations need to determine if a given update meets their requirements. They must also verify the compatibility and support provided for any additional software against the update revision that is selected. Using the latest full version will keep your stack secure to vulnerabilities and exploits.",
    +  "RelatedUrl": "https://learn.microsoft.com/en-us/azure/app-service/configure-common?tabs=portal#general-settings",
    +  "Remediation": {
    +    "Code": {
    +      "CLI": "az webapp config set --resource-group  --name  [--linux-fx-version 'PYTHON|3.12']",
    +      "NativeIaC": "",
    +      "Other": "https://www.trendmicro.com/cloudoneconformity/knowledge-base/azure/AppService/latest-version-of-python.html",
    +      "Terraform": "https://docs.bridgecrew.io/docs/ensure-that-python-version-is-the-latest-if-used-to-run-the-web-app"
    +    },
    +    "Recommendation": {
    +      "Text": "From Azure Portal 1. From Azure Home open the Portal Menu in the top left 2. Go to App Services 3. Click on each App 4. Under Settings section, click on Configuration 5. Click on the General settings pane and ensure that the Major Version and the Minor Version is set to the latest stable version available (Python 3.11, at the time of writing) NOTE: No action is required if Python version is set to Off, as Python is not used by your web app.",
    +      "Url": "https://learn.microsoft.com/en-us/azure/app-service/configure-language-python#configure-python-version"
    +    }
    +  },
    +  "Categories": [],
    +  "DependsOn": [],
    +  "RelatedTo": [],
    +  "Notes": "If your app is written using version-dependent features or libraries, they may not be available on the latest version. If you wish to upgrade, research the impact thoroughly. Upgrading may have unforeseen consequences that could result in downtime."
    +}
    diff --git a/prowler/providers/azure/services/app/app_ensure_python_version_is_latest/app_ensure_python_version_is_latest.py b/prowler/providers/azure/services/app/app_ensure_python_version_is_latest/app_ensure_python_version_is_latest.py
    new file mode 100644
    index 00000000000..852a761b6ac
    --- /dev/null
    +++ b/prowler/providers/azure/services/app/app_ensure_python_version_is_latest/app_ensure_python_version_is_latest.py
    @@ -0,0 +1,39 @@
    +from prowler.lib.check.models import Check, Check_Report_Azure
    +from prowler.providers.azure.services.app.app_client import app_client
    +
    +
    +class app_ensure_python_version_is_latest(Check):
    +    def execute(self) -> Check_Report_Azure:
    +        findings = []
    +
    +        for (
    +            subscription_name,
    +            apps,
    +        ) in app_client.apps.items():
    +            for app_name, app in apps.items():
    +                framework = getattr(app.configurations, "linux_fx_version", "")
    +
    +                if "python" in framework.lower() or getattr(
    +                    app.configurations, "python_version", ""
    +                ):
    +                    report = Check_Report_Azure(self.metadata())
    +                    report.status = "FAIL"
    +                    report.subscription = subscription_name
    +                    report.resource_name = app_name
    +                    report.resource_id = app.resource_id
    +                    python_latest_version = app_client.audit_config.get(
    +                        "python_latest_version", "3.12"
    +                    )
    +                    report.status_extended = f"Python version is '{framework}', the latest version that you could use is the '{python_latest_version}' version, for app '{app_name}' in subscription '{subscription_name}'."
    +
    +                    if (
    +                        python_latest_version in framework
    +                        or getattr(app.configurations, "python_version", None)
    +                        == python_latest_version
    +                    ):
    +                        report.status = "PASS"
    +                        report.status_extended = f"Python version is set to '{python_latest_version}' for app '{app_name}' in subscription '{subscription_name}'."
    +
    +                    findings.append(report)
    +
    +        return findings
    diff --git a/prowler/providers/azure/services/app/app_ensure_using_http20/__init__.py b/prowler/providers/azure/services/app/app_ensure_using_http20/__init__.py
    new file mode 100644
    index 00000000000..e69de29bb2d
    diff --git a/prowler/providers/azure/services/app/app_ensure_using_http20/app_ensure_using_http20.metadata.json b/prowler/providers/azure/services/app/app_ensure_using_http20/app_ensure_using_http20.metadata.json
    new file mode 100644
    index 00000000000..2289a3a5ad8
    --- /dev/null
    +++ b/prowler/providers/azure/services/app/app_ensure_using_http20/app_ensure_using_http20.metadata.json
    @@ -0,0 +1,30 @@
    +{
    +  "Provider": "azure",
    +  "CheckID": "app_ensure_using_http20",
    +  "CheckTitle": "Ensure that 'HTTP Version' is the Latest, if Used to Run the Web App",
    +  "CheckType": [],
    +  "ServiceName": "app",
    +  "SubServiceName": "",
    +  "ResourceIdTemplate": "",
    +  "Severity": "low",
    +  "ResourceType": "Microsoft.Web/sites",
    +  "Description": "Periodically, newer versions are released for HTTP either due to security flaws or to include additional functionality. Using the latest HTTP version for web apps to take advantage of security fixes, if any, and/or new functionalities of the newer version.",
    +  "Risk": "Newer versions may contain security enhancements and additional functionality. Using the latest version is recommended in order to take advantage of enhancements and new capabilities. With each software installation, organizations need to determine if a given update meets their requirements. They must also verify the compatibility and support provided for any additional software against the update revision that is selected. HTTP 2.0 has additional performance improvements on the head-of-line blocking problem of old HTTP version, header compression, and prioritization of requests. HTTP 2.0 no longer supports HTTP 1.1's chunked transfer encoding mechanism, as it provides its own, more efficient, mechanisms for data streaming.",
    +  "RelatedUrl": "https://learn.microsoft.com/en-us/azure/app-service/configure-common?tabs=portal#general-settings",
    +  "Remediation": {
    +    "Code": {
    +      "CLI": "az webapp config set --resource-group  --name  --http20-enabled true",
    +      "NativeIaC": "",
    +      "Other": "https://www.trendmicro.com/cloudoneconformity/knowledge-base/azure/AppService/enable-http-2-for-app-service-web-applications.html",
    +      "Terraform": ""
    +    },
    +    "Recommendation": {
    +      "Text": "1. Login to Azure Portal using https://portal.azure.com 2. Go to App Services 3. Click on each App 4. Under Setting section, Click on Configuration 5. Set HTTP version to 2.0 under General settings",
    +      "Url": "https://azure.microsoft.com/en-us/blog/announcing-http-2-support-in-azure-app-service/"
    +    }
    +  },
    +  "Categories": [],
    +  "DependsOn": [],
    +  "RelatedTo": [],
    +  "Notes": "https://learn.microsoft.com/en-us/security/benchmark/azure/security-controls-v3-posture-vulnerability-management#pv-7-rapidly-and-automatically-remediate-software-vulnerabilities"
    +}
    diff --git a/prowler/providers/azure/services/app/app_ensure_using_http20/app_ensure_using_http20.py b/prowler/providers/azure/services/app/app_ensure_using_http20/app_ensure_using_http20.py
    new file mode 100644
    index 00000000000..7f6e7e8d406
    --- /dev/null
    +++ b/prowler/providers/azure/services/app/app_ensure_using_http20/app_ensure_using_http20.py
    @@ -0,0 +1,29 @@
    +from prowler.lib.check.models import Check, Check_Report_Azure
    +from prowler.providers.azure.services.app.app_client import app_client
    +
    +
    +class app_ensure_using_http20(Check):
    +    def execute(self) -> Check_Report_Azure:
    +        findings = []
    +
    +        for (
    +            subscription_name,
    +            apps,
    +        ) in app_client.apps.items():
    +            for app_name, app in apps.items():
    +                report = Check_Report_Azure(self.metadata())
    +                report.status = "FAIL"
    +                report.subscription = subscription_name
    +                report.resource_name = app_name
    +                report.resource_id = app.resource_id
    +                report.status_extended = f"HTTP/2.0 is not enabled for app '{app_name}' in subscription '{subscription_name}'."
    +
    +                if app.configurations and getattr(
    +                    app.configurations, "http20_enabled", False
    +                ):
    +                    report.status = "PASS"
    +                    report.status_extended = f"HTTP/2.0 is enabled for app '{app_name}' in subscription '{subscription_name}'."
    +
    +                findings.append(report)
    +
    +        return findings
    diff --git a/prowler/providers/azure/services/app/app_ftp_deployment_disabled/__init__.py b/prowler/providers/azure/services/app/app_ftp_deployment_disabled/__init__.py
    new file mode 100644
    index 00000000000..e69de29bb2d
    diff --git a/prowler/providers/azure/services/app/app_ftp_deployment_disabled/app_ftp_deployment_disabled.metadata.json b/prowler/providers/azure/services/app/app_ftp_deployment_disabled/app_ftp_deployment_disabled.metadata.json
    new file mode 100644
    index 00000000000..93c5a0c2d68
    --- /dev/null
    +++ b/prowler/providers/azure/services/app/app_ftp_deployment_disabled/app_ftp_deployment_disabled.metadata.json
    @@ -0,0 +1,30 @@
    +{
    +  "Provider": "azure",
    +  "CheckID": "app_ftp_deployment_disabled",
    +  "CheckTitle": "Ensure FTP deployments are Disabled",
    +  "CheckType": [],
    +  "ServiceName": "app",
    +  "SubServiceName": "",
    +  "ResourceIdTemplate": "",
    +  "Severity": "medium",
    +  "ResourceType": "Microsoft.Web/sites/config",
    +  "Description": "By default, Azure Functions, Web, and API Services can be deployed over FTP. If FTP is required for an essential deployment workflow, FTPS should be required for FTP login for all App Service Apps and Functions.",
    +  "Risk": "Azure FTP deployment endpoints are public. An attacker listening to traffic on a wifi network used by a remote employee or a corporate network could see login traffic in clear-text which would then grant them full control of the code base of the app or service. This finding is more severe if User Credentials for deployment are set at the subscription level rather than using the default Application Credentials which are unique per App.",
    +  "RelatedUrl": "https://learn.microsoft.com/en-us/azure/app-service/deploy-ftp?tabs=portal",
    +  "Remediation": {
    +    "Code": {
    +      "CLI": "az webapp config set --resource-group  --name  --ftps-state [disabled|FtpsOnly]",
    +      "NativeIaC": "",
    +      "Other": "https://www.trendmicro.com/cloudoneconformity/knowledge-base/azure/AppService/ftp-access-disabled.html",
    +      "Terraform": "https://docs.bridgecrew.io/docs/ensure-ftp-deployments-are-disabled#terraform"
    +    },
    +    "Recommendation": {
    +      "Text": "1. Go to the Azure Portal 2. Select App Services 3. Click on an app 4. Select Settings and then Configuration 5. Under General Settings, for the Platform Settings, the FTP state should be set to Disabled or FTPS Only",
    +      "Url": ""
    +    }
    +  },
    +  "Categories": [],
    +  "DependsOn": [],
    +  "RelatedTo": [],
    +  "Notes": "Any deployment workflows that rely on FTP or FTPs rather than the WebDeploy or HTTPs endpoints may be affected."
    +}
    diff --git a/prowler/providers/azure/services/app/app_ftp_deployment_disabled/app_ftp_deployment_disabled.py b/prowler/providers/azure/services/app/app_ftp_deployment_disabled/app_ftp_deployment_disabled.py
    new file mode 100644
    index 00000000000..ef5a3036ba0
    --- /dev/null
    +++ b/prowler/providers/azure/services/app/app_ftp_deployment_disabled/app_ftp_deployment_disabled.py
    @@ -0,0 +1,31 @@
    +from prowler.lib.check.models import Check, Check_Report_Azure
    +from prowler.providers.azure.services.app.app_client import app_client
    +
    +
    +class app_ftp_deployment_disabled(Check):
    +    def execute(self) -> Check_Report_Azure:
    +        findings = []
    +
    +        for (
    +            subscription_name,
    +            apps,
    +        ) in app_client.apps.items():
    +            for app_name, app in apps.items():
    +                report = Check_Report_Azure(self.metadata())
    +                report.status = "FAIL"
    +                report.subscription = subscription_name
    +                report.resource_name = app_name
    +                report.resource_id = app.resource_id
    +                report.status_extended = f"FTP is enabled for app '{app_name}' in subscription '{subscription_name}'."
    +
    +                if (
    +                    app.configurations
    +                    and getattr(app.configurations, "ftps_state", "AllAllowed")
    +                    != "AllAllowed"
    +                ):
    +                    report.status = "PASS"
    +                    report.status_extended = f"FTP is disabled for app '{app_name}' in subscription '{subscription_name}'."
    +
    +                findings.append(report)
    +
    +        return findings
    diff --git a/prowler/providers/azure/services/app/app_minimum_tls_version_12/__init__.py b/prowler/providers/azure/services/app/app_minimum_tls_version_12/__init__.py
    new file mode 100644
    index 00000000000..e69de29bb2d
    diff --git a/prowler/providers/azure/services/app/app_minimum_tls_version_12/app_minimum_tls_version_12.metadata.json b/prowler/providers/azure/services/app/app_minimum_tls_version_12/app_minimum_tls_version_12.metadata.json
    new file mode 100644
    index 00000000000..0e4f567905a
    --- /dev/null
    +++ b/prowler/providers/azure/services/app/app_minimum_tls_version_12/app_minimum_tls_version_12.metadata.json
    @@ -0,0 +1,30 @@
    +{
    +  "Provider": "azure",
    +  "CheckID": "app_minimum_tls_version_12",
    +  "CheckTitle": "Ensure Web App is using the latest version of TLS encryption",
    +  "CheckType": [],
    +  "ServiceName": "app",
    +  "SubServiceName": "",
    +  "ResourceIdTemplate": "",
    +  "Severity": "high",
    +  "ResourceType": "Microsoft.Web/sites/config",
    +  "Description": "The TLS (Transport Layer Security) protocol secures transmission of data over the internet using standard encryption technology. Encryption should be set with the latest version of TLS. App service allows TLS 1.2 by default, which is the recommended TLS level by industry standards such as PCI DSS.",
    +  "Risk": "App service currently allows the web app to set TLS versions 1.0, 1.1 and 1.2. It is highly recommended to use the latest TLS 1.2 version for web app secure connections.",
    +  "RelatedUrl": "https://learn.microsoft.com/en-us/azure/app-service/configure-ssl-bindings#enforce-tls-versions",
    +  "Remediation": {
    +    "Code": {
    +      "CLI": "az webapp config set --resource-group  --name  --min-tls-version 1.2",
    +      "NativeIaC": "",
    +      "Other": "https://www.trendmicro.com/cloudoneconformity/knowledge-base/azure/AppService/latest-version-of-tls-encryption-in-use.html",
    +      "Terraform": "https://docs.bridgecrew.io/docs/bc_azr_networking_6#terraform"
    +    },
    +    "Recommendation": {
    +      "Text": "1. Login to Azure Portal using https://portal.azure.com 2. Go to App Services 3. Click on each App 4. Under Setting section, Click on TLS/SSL settings 5. Under the Bindings pane, ensure that Minimum TLS Version set to 1.2 under Protocol Settings",
    +      "Url": "https://docs.microsoft.com/en-us/security/benchmark/azure/security-controls-v3-data-protection#dp-3-encrypt-sensitive-data-in-transit"
    +    }
    +  },
    +  "Categories": [],
    +  "DependsOn": [],
    +  "RelatedTo": [],
    +  "Notes": "By default, TLS Version feature will be set to 1.2 when a new app is created using the command-line tool or Azure Portal console."
    +}
    diff --git a/prowler/providers/azure/services/app/app_minimum_tls_version_12/app_minimum_tls_version_12.py b/prowler/providers/azure/services/app/app_minimum_tls_version_12/app_minimum_tls_version_12.py
    new file mode 100644
    index 00000000000..f83187d27bd
    --- /dev/null
    +++ b/prowler/providers/azure/services/app/app_minimum_tls_version_12/app_minimum_tls_version_12.py
    @@ -0,0 +1,30 @@
    +from prowler.lib.check.models import Check, Check_Report_Azure
    +from prowler.providers.azure.services.app.app_client import app_client
    +
    +
    +class app_minimum_tls_version_12(Check):
    +    def execute(self) -> Check_Report_Azure:
    +        findings = []
    +
    +        for (
    +            subscription_name,
    +            apps,
    +        ) in app_client.apps.items():
    +            for app_name, app in apps.items():
    +                report = Check_Report_Azure(self.metadata())
    +                report.status = "FAIL"
    +                report.subscription = subscription_name
    +                report.resource_name = app_name
    +                report.resource_id = app.resource_id
    +                report.status_extended = f"Minimum TLS version is not set to 1.2 for app '{app_name}' in subscription '{subscription_name}'."
    +
    +                if (
    +                    app.configurations
    +                    and getattr(app.configurations, "min_tls_version", "") == "1.2"
    +                ):
    +                    report.status = "PASS"
    +                    report.status_extended = f"Minimum TLS version is set to 1.2 for app '{app_name}' in subscription '{subscription_name}'."
    +
    +                findings.append(report)
    +
    +        return findings
    diff --git a/prowler/providers/azure/services/app/app_register_with_identity/__init__.py b/prowler/providers/azure/services/app/app_register_with_identity/__init__.py
    new file mode 100644
    index 00000000000..e69de29bb2d
    diff --git a/prowler/providers/azure/services/app/app_register_with_identity/app_register_with_identity.metadata.json b/prowler/providers/azure/services/app/app_register_with_identity/app_register_with_identity.metadata.json
    new file mode 100644
    index 00000000000..5f367634871
    --- /dev/null
    +++ b/prowler/providers/azure/services/app/app_register_with_identity/app_register_with_identity.metadata.json
    @@ -0,0 +1,30 @@
    +{
    +  "Provider": "azure",
    +  "CheckID": "app_register_with_identity",
    +  "CheckTitle": "Ensure that Register with Azure Active Directory is enabled on App Service",
    +  "CheckType": [],
    +  "ServiceName": "app",
    +  "SubServiceName": "",
    +  "ResourceIdTemplate": "",
    +  "Severity": "medium",
    +  "ResourceType": "Microsoft.Web/sites",
    +  "Description": "Managed service identity in App Service provides more security by eliminating secrets from the app, such as credentials in the connection strings. When registering with Azure Active Directory in App Service, the app will connect to other Azure services securely without the need for usernames and passwords.",
    +  "Risk": "App Service provides a highly scalable, self-patching web hosting service in Azure. It also provides a managed identity for apps, which is a turn-key solution for securing access to Azure SQL Database and other Azure services.",
    +  "RelatedUrl": "https://learn.microsoft.com/en-us/azure/app-service/configure-authentication-provider-aad?tabs=workforce-tenant",
    +  "Remediation": {
    +    "Code": {
    +      "CLI": "az webapp identity assign --resource-group  --name ",
    +      "NativeIaC": "",
    +      "Other": "https://www.trendmicro.com/cloudoneconformity/knowledge-base/azure/AppService/enable-registration-with-microsoft-entra-id.html",
    +      "Terraform": "https://docs.bridgecrew.io/docs/bc_azr_iam_1#terraform"
    +    },
    +    "Recommendation": {
    +      "Text": "1. Login to Azure Portal using https://portal.azure.com 2. Go to App Services 3. Click on each App 4. Under Setting section, Click on Identity 5. Under the System assigned pane, set Status to On",
    +      "Url": "https://learn.microsoft.com/en-us/azure/app-service/scenario-secure-app-authentication-app-service"
    +    }
    +  },
    +  "Categories": [],
    +  "DependsOn": [],
    +  "RelatedTo": [],
    +  "Notes": "By default, Managed service identity via Azure AD is disabled."
    +}
    diff --git a/prowler/providers/azure/services/app/app_register_with_identity/app_register_with_identity.py b/prowler/providers/azure/services/app/app_register_with_identity/app_register_with_identity.py
    new file mode 100644
    index 00000000000..fa5fda09e97
    --- /dev/null
    +++ b/prowler/providers/azure/services/app/app_register_with_identity/app_register_with_identity.py
    @@ -0,0 +1,27 @@
    +from prowler.lib.check.models import Check, Check_Report_Azure
    +from prowler.providers.azure.services.app.app_client import app_client
    +
    +
    +class app_register_with_identity(Check):
    +    def execute(self) -> Check_Report_Azure:
    +        findings = []
    +
    +        for (
    +            subscription_name,
    +            apps,
    +        ) in app_client.apps.items():
    +            for app_name, app in apps.items():
    +                report = Check_Report_Azure(self.metadata())
    +                report.status = "PASS"
    +                report.subscription = subscription_name
    +                report.resource_name = app_name
    +                report.resource_id = app.resource_id
    +                report.status_extended = f"App '{app_name}' in subscription '{subscription_name}' has an identity configured."
    +
    +                if not app.identity:
    +                    report.status = "FAIL"
    +                    report.status_extended = f"App '{app_name}' in subscription '{subscription_name}' does not have an identity configured."
    +
    +                findings.append(report)
    +
    +        return findings
    diff --git a/prowler/providers/azure/services/app/app_service.py b/prowler/providers/azure/services/app/app_service.py
    new file mode 100644
    index 00000000000..b11d906bff1
    --- /dev/null
    +++ b/prowler/providers/azure/services/app/app_service.py
    @@ -0,0 +1,89 @@
    +from dataclasses import dataclass
    +
    +from azure.mgmt.web import WebSiteManagementClient
    +from azure.mgmt.web.models import ManagedServiceIdentity, SiteConfigResource
    +
    +from prowler.lib.logger import logger
    +from prowler.providers.azure.lib.audit_info.models import Azure_Audit_Info
    +from prowler.providers.azure.lib.service.service import AzureService
    +
    +
    +########################## App
    +class App(AzureService):
    +    def __init__(self, audit_info: Azure_Audit_Info):
    +        super().__init__(WebSiteManagementClient, audit_info)
    +        self.apps = self.__get_apps__()
    +
    +    def __get_apps__(self):
    +        logger.info("App - Getting apps...")
    +        apps = {}
    +
    +        for subscription_name, client in self.clients.items():
    +            try:
    +                apps_list = client.web_apps.list()
    +                apps.update({subscription_name: {}})
    +
    +                for app in apps_list:
    +                    platform_auth = getattr(
    +                        client.web_apps.get_auth_settings_v2(
    +                            resource_group_name=app.resource_group, name=app.name
    +                        ),
    +                        "platform",
    +                        None,
    +                    )
    +
    +                    apps[subscription_name].update(
    +                        {
    +                            app.name: WebApp(
    +                                resource_id=app.id,
    +                                auth_enabled=(
    +                                    getattr(platform_auth, "enabled", False)
    +                                    if platform_auth
    +                                    else False
    +                                ),
    +                                configurations=client.web_apps.get_configuration(
    +                                    resource_group_name=app.resource_group,
    +                                    name=app.name,
    +                                ),
    +                                client_cert_mode=self.__get_client_cert_mode__(
    +                                    getattr(app, "client_cert_enabled", False),
    +                                    getattr(app, "client_cert_mode", "Ignore"),
    +                                ),
    +                                https_only=getattr(app, "https_only", False),
    +                                identity=getattr(app, "identity", None),
    +                            )
    +                        }
    +                    )
    +            except Exception as error:
    +                logger.error(
    +                    f"Subscription name: {subscription_name} -- {error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}"
    +                )
    +
    +        return apps
    +
    +    def __get_client_cert_mode__(
    +        self, client_cert_enabled: bool, client_cert_mode: str
    +    ):
    +        cert_mode = "Ignore"
    +        if not client_cert_enabled and client_cert_mode == "OptionalInteractiveUser":
    +            cert_mode = "Ignore"
    +        elif client_cert_enabled and client_cert_mode == "OptionalInteractiveUser":
    +            cert_mode = "Optional"
    +        elif client_cert_enabled and client_cert_mode == "Optional":
    +            cert_mode = "Allow"
    +        elif client_cert_enabled and client_cert_mode == "Required":
    +            cert_mode = "Required"
    +        else:
    +            cert_mode = "Ignore"
    +
    +        return cert_mode
    +
    +
    +@dataclass
    +class WebApp:
    +    resource_id: str
    +    configurations: SiteConfigResource
    +    identity: ManagedServiceIdentity
    +    client_cert_mode: str = "Ignore"
    +    auth_enabled: bool = False
    +    https_only: bool = False
    diff --git a/prowler/providers/azure/services/appinsights/__init__.py b/prowler/providers/azure/services/appinsights/__init__.py
    new file mode 100644
    index 00000000000..e69de29bb2d
    diff --git a/prowler/providers/azure/services/appinsights/appinsights_client.py b/prowler/providers/azure/services/appinsights/appinsights_client.py
    new file mode 100644
    index 00000000000..ed3cc15d438
    --- /dev/null
    +++ b/prowler/providers/azure/services/appinsights/appinsights_client.py
    @@ -0,0 +1,4 @@
    +from prowler.providers.azure.lib.audit_info.audit_info import azure_audit_info
    +from prowler.providers.azure.services.appinsights.appinsights_service import AppInsights
    +
    +appinsights_client = AppInsights(azure_audit_info)
    diff --git a/prowler/providers/azure/services/appinsights/appinsights_ensure_is_configured/__init__.py b/prowler/providers/azure/services/appinsights/appinsights_ensure_is_configured/__init__.py
    new file mode 100644
    index 00000000000..e69de29bb2d
    diff --git a/prowler/providers/azure/services/appinsights/appinsights_ensure_is_configured/appinsights_ensure_is_configured.metadata.json b/prowler/providers/azure/services/appinsights/appinsights_ensure_is_configured/appinsights_ensure_is_configured.metadata.json
    new file mode 100644
    index 00000000000..badc97a65a7
    --- /dev/null
    +++ b/prowler/providers/azure/services/appinsights/appinsights_ensure_is_configured/appinsights_ensure_is_configured.metadata.json
    @@ -0,0 +1,30 @@
    +{
    +  "Provider": "azure",
    +  "CheckID": "appinsights_ensure_is_configured",
    +  "CheckTitle": "Ensure Application Insights are Configured.",
    +  "CheckType": [],
    +  "ServiceName": "appinsights",
    +  "SubServiceName": "",
    +  "ResourceIdTemplate": "",
    +  "Severity": "low",
    +  "ResourceType": "Microsoft.Insights/components",
    +  "Description": "Application Insights within Azure act as an Application Performance Monitoring solution providing valuable data into how well an application performs and additional information when performing incident response. The types of log data collected include application metrics, telemetry data, and application trace logging data providing organizations with detailed information about application activity and application transactions. Both data sets help organizations adopt a proactive and retroactive means to handle security and performance related metrics within their modern applications.",
    +  "Risk": "Configuring Application Insights provides additional data not found elsewhere within Azure as part of a much larger logging and monitoring program within an organization's Information Security practice. The types and contents of these logs will act as both a potential cost saving measure (application performance) and a means to potentially confirm the source of a potential incident (trace logging). Metrics and Telemetry data provide organizations with a proactive approach to cost savings by monitoring an application's performance, while the trace logging data provides necessary details in a reactive incident response scenario by helping organizations identify the potential source of an incident within their application.",
    +  "RelatedUrl": "https://learn.microsoft.com/en-us/azure/azure-monitor/app/app-insights-overview",
    +  "Remediation": {
    +    "Code": {
    +      "CLI": "az monitor app-insights component create --app  --resource-group  --location  --kind 'web' --retention-time  --workspace  -- subscription ",
    +      "NativeIaC": "",
    +      "Other": "https://www.tenable.com/audits/items/CIS_Microsoft_Azure_Foundations_v2.0.0_L2.audit:8a7a608d180042689ad9d3f16aa359f1",
    +      "Terraform": ""
    +    },
    +    "Recommendation": {
    +      "Text": "1. Navigate to Application Insights 2. Under the Basics tab within the PROJECT DETAILS section, select the Subscription 3. Select the Resource group 4. Within the INSTANCE DETAILS, enter a Name 5. Select a Region 6. Next to Resource Mode, select Workspace-based 7. Within the WORKSPACE DETAILS, select the Subscription for the log analytics workspace 8. Select the appropriate Log Analytics Workspace 9. Click Next:Tags > 10. Enter the appropriate Tags as Name, Value pairs. 11. Click Next:Review+Create 12. Click Create.",
    +      "Url": ""
    +    }
    +  },
    +  "Categories": [],
    +  "DependsOn": [],
    +  "RelatedTo": [],
    +  "Notes": "Because Application Insights relies on a Log Analytics Workspace, an organization will incur additional expenses when using this service."
    +}
    diff --git a/prowler/providers/azure/services/appinsights/appinsights_ensure_is_configured/appinsights_ensure_is_configured.py b/prowler/providers/azure/services/appinsights/appinsights_ensure_is_configured/appinsights_ensure_is_configured.py
    new file mode 100644
    index 00000000000..10b6ca0c9c1
    --- /dev/null
    +++ b/prowler/providers/azure/services/appinsights/appinsights_ensure_is_configured/appinsights_ensure_is_configured.py
    @@ -0,0 +1,25 @@
    +from prowler.lib.check.models import Check, Check_Report_Azure
    +from prowler.providers.azure.services.appinsights.appinsights_client import (
    +    appinsights_client,
    +)
    +
    +
    +class appinsights_ensure_is_configured(Check):
    +    def execute(self) -> Check_Report_Azure:
    +        findings = []
    +
    +        for subscription_name, components in appinsights_client.components.items():
    +            report = Check_Report_Azure(self.metadata())
    +            report.status = "PASS"
    +            report.subscription = subscription_name
    +            report.resource_name = "AppInsights"
    +            report.resource_id = "AppInsights"
    +            report.status_extended = f"There is at least one AppInsight configured in susbscription {subscription_name}."
    +
    +            if len(components) < 1:
    +                report.status = "FAIL"
    +                report.status_extended = f"There are no AppInsight configured in susbscription {subscription_name}."
    +
    +            findings.append(report)
    +
    +        return findings
    diff --git a/prowler/providers/azure/services/appinsights/appinsights_service.py b/prowler/providers/azure/services/appinsights/appinsights_service.py
    new file mode 100644
    index 00000000000..dc3140b0b65
    --- /dev/null
    +++ b/prowler/providers/azure/services/appinsights/appinsights_service.py
    @@ -0,0 +1,44 @@
    +from dataclasses import dataclass
    +
    +from azure.mgmt.applicationinsights import ApplicationInsightsManagementClient
    +
    +from prowler.lib.logger import logger
    +from prowler.providers.azure.lib.audit_info.models import Azure_Audit_Info
    +from prowler.providers.azure.lib.service.service import AzureService
    +
    +
    +########################## AppInsights
    +class AppInsights(AzureService):
    +    def __init__(self, audit_info: Azure_Audit_Info):
    +        super().__init__(ApplicationInsightsManagementClient, audit_info)
    +        self.components = self.__get_components__()
    +
    +    def __get_components__(self):
    +        logger.info("AppInsights - Getting components...")
    +        components = {}
    +
    +        for subscription_name, client in self.clients.items():
    +            try:
    +                components_list = client.components.list()
    +                components.update({subscription_name: {}})
    +
    +                for component in components_list:
    +                    components[subscription_name].update(
    +                        {
    +                            component.app_id: Component(
    +                                resource_id=component.id, resource_name=component.name
    +                            )
    +                        }
    +                    )
    +            except Exception as error:
    +                logger.error(
    +                    f"Subscription name: {subscription_name} -- {error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}"
    +                )
    +
    +        return components
    +
    +
    +@dataclass
    +class Component:
    +    resource_id: str
    +    resource_name: str
    diff --git a/prowler/providers/azure/services/cosmosdb/__init__.py b/prowler/providers/azure/services/cosmosdb/__init__.py
    new file mode 100644
    index 00000000000..e69de29bb2d
    diff --git a/prowler/providers/azure/services/cosmosdb/cosmosdb_account_firewall_use_selected_networks/__init__.py b/prowler/providers/azure/services/cosmosdb/cosmosdb_account_firewall_use_selected_networks/__init__.py
    new file mode 100644
    index 00000000000..e69de29bb2d
    diff --git a/prowler/providers/azure/services/cosmosdb/cosmosdb_account_firewall_use_selected_networks/cosmosdb_account_firewall_use_selected_networks.metadata.json b/prowler/providers/azure/services/cosmosdb/cosmosdb_account_firewall_use_selected_networks/cosmosdb_account_firewall_use_selected_networks.metadata.json
    new file mode 100644
    index 00000000000..57298ea92dc
    --- /dev/null
    +++ b/prowler/providers/azure/services/cosmosdb/cosmosdb_account_firewall_use_selected_networks/cosmosdb_account_firewall_use_selected_networks.metadata.json
    @@ -0,0 +1,30 @@
    +{
    +  "Provider": "azure",
    +  "CheckID": "cosmosdb_account_firewall_use_selected_networks",
    +  "CheckTitle": "Ensure That 'Firewalls & Networks' Is Limited to Use Selected Networks Instead of All Networks",
    +  "CheckType": [],
    +  "ServiceName": "cosmosdb",
    +  "SubServiceName": "",
    +  "ResourceIdTemplate": "",
    +  "Severity": "medium",
    +  "ResourceType": "CosmosDB",
    +  "Description": "Limiting your Cosmos DB to only communicate on whitelisted networks lowers its attack footprint.",
    +  "Risk": "Selecting certain networks for your Cosmos DB to communicate restricts the number of networks including the internet that can interact with what is stored within the database.",
    +  "RelatedUrl": "https://docs.microsoft.com/en-us/azure/cosmos-db/how-to-configure-private-endpoints",
    +  "Remediation": {
    +    "Code": {
    +      "CLI": "az cosmosdb database list / az cosmosdb show  **isVirtualNetworkFilterEnabled should be set to true**",
    +      "NativeIaC": "",
    +      "Other": "",
    +      "Terraform": ""
    +    },
    +    "Recommendation": {
    +      "Text": "1. Open the portal menu. 2. Select the Azure Cosmos DB blade. 3. Select a Cosmos DB account to audit. 4. Select Networking. 5. Under Public network access, select Selected networks. 6. Under Virtual networks, select + Add existing virtual network or + Add a new virtual network. 7. For existing networks, select subscription, virtual network, subnet and click Add. For new networks, provide a name, update the default values if required, and click Create. 8. Click Save.",
    +      "Url": "https://learn.microsoft.com/en-us/azure/storage/common/storage-network-security?tabs=azure-portal"
    +    }
    +  },
    +  "Categories": [],
    +  "DependsOn": [],
    +  "RelatedTo": [],
    +  "Notes": "Failure to whitelist the correct networks will result in a connection loss."
    +}
    diff --git a/prowler/providers/azure/services/cosmosdb/cosmosdb_account_firewall_use_selected_networks/cosmosdb_account_firewall_use_selected_networks.py b/prowler/providers/azure/services/cosmosdb/cosmosdb_account_firewall_use_selected_networks/cosmosdb_account_firewall_use_selected_networks.py
    new file mode 100644
    index 00000000000..ed7d5a42209
    --- /dev/null
    +++ b/prowler/providers/azure/services/cosmosdb/cosmosdb_account_firewall_use_selected_networks/cosmosdb_account_firewall_use_selected_networks.py
    @@ -0,0 +1,21 @@
    +from prowler.lib.check.models import Check, Check_Report_Azure
    +from prowler.providers.azure.services.cosmosdb.cosmosdb_client import cosmosdb_client
    +
    +
    +class cosmosdb_account_firewall_use_selected_networks(Check):
    +    def execute(self) -> Check_Report_Azure:
    +        findings = []
    +        for subscription, accounts in cosmosdb_client.accounts.items():
    +            for account in accounts:
    +                report = Check_Report_Azure(self.metadata())
    +                report.subscription = subscription
    +                report.resource_name = account.name
    +                report.resource_id = account.id
    +                report.status = "FAIL"
    +                report.status_extended = f"CosmosDB account {account.name} from subscription {subscription} has firewall rules that allow access from all networks."
    +                if account.is_virtual_network_filter_enabled:
    +                    report.status = "PASS"
    +                    report.status_extended = f"CosmosDB account {account.name} from subscription {subscription} has firewall rules that allow access only from selected networks."
    +                findings.append(report)
    +
    +        return findings
    diff --git a/prowler/providers/azure/services/cosmosdb/cosmosdb_account_use_aad_and_rbac/cosmosdb_account_use_aad_and_rbac.metadata.json b/prowler/providers/azure/services/cosmosdb/cosmosdb_account_use_aad_and_rbac/cosmosdb_account_use_aad_and_rbac.metadata.json
    new file mode 100644
    index 00000000000..a81188f8dcc
    --- /dev/null
    +++ b/prowler/providers/azure/services/cosmosdb/cosmosdb_account_use_aad_and_rbac/cosmosdb_account_use_aad_and_rbac.metadata.json
    @@ -0,0 +1,30 @@
    +{
    +  "Provider": "azure",
    +  "CheckID": "cosmosdb_account_use_aad_and_rbac",
    +  "CheckTitle": "Use Azure Active Directory (AAD) Client Authentication and Azure RBAC where possible.",
    +  "CheckType": [],
    +  "ServiceName": "cosmosdb",
    +  "SubServiceName": "",
    +  "ResourceIdTemplate": "",
    +  "Severity": "medium",
    +  "ResourceType": "CosmosDB",
    +  "Description": "Cosmos DB can use tokens or AAD for client authentication which in turn will use Azure RBAC for authorization. Using AAD is significantly more secure because AAD handles the credentials and allows for MFA and centralized management, and the Azure RBAC better integrated with the rest of Azure.",
    +  "Risk": "AAD client authentication is considerably more secure than token-based authentication because the tokens must be persistent at the client. AAD does not require this.",
    +  "RelatedUrl": "https://learn.microsoft.com/en-us/azure/cosmos-db/role-based-access-control",
    +  "Remediation": {
    +    "Code": {
    +      "CLI": "",
    +      "NativeIaC": "",
    +      "Other": "",
    +      "Terraform": ""
    +    },
    +    "Recommendation": {
    +      "Text": "Map all the resources that currently access to the Azure Cosmos DB account with keys or access tokens. Create an Azure Active Directory (AAD) identity for each of these resources: For Azure resources, you can create a managed identity . You may choose between system-assigned and user-assigned managed identities. For non-Azure resources, create an AAD identity. Grant each AAD identity the minimum permission it requires. When possible, we recommend you use one of the 2 built-in role definitions: Cosmos DB Built-in Data Reader or Cosmos DB Built-in Data Contributor. Validate that the new resource is functioning correctly. After new permissions are granted to identities, it may take a few hours until they propagate. When all resources are working correctly with the new identities, continue to the next step. You can use the az resource update powershell command: $cosmosdbname = 'cosmos-db-account-name' $resourcegroup = 'resource-group-name' $cosmosdb = az cosmosdb show --name $cosmosdbname --resource-group $resourcegroup | ConvertFrom-Json az resource update --ids $cosmosdb.id --set properties.disableLocalAuth=true --latest- include-preview",
    +      "Url": "https://learn.microsoft.com/en-us/azure/cosmos-db/role-based-access-control"
    +    }
    +  },
    +  "Categories": [],
    +  "DependsOn": [],
    +  "RelatedTo": [],
    +  "Notes": ""
    +}
    diff --git a/prowler/providers/azure/services/cosmosdb/cosmosdb_account_use_aad_and_rbac/cosmosdb_account_use_aad_and_rbac.py b/prowler/providers/azure/services/cosmosdb/cosmosdb_account_use_aad_and_rbac/cosmosdb_account_use_aad_and_rbac.py
    new file mode 100644
    index 00000000000..954cb5672dc
    --- /dev/null
    +++ b/prowler/providers/azure/services/cosmosdb/cosmosdb_account_use_aad_and_rbac/cosmosdb_account_use_aad_and_rbac.py
    @@ -0,0 +1,21 @@
    +from prowler.lib.check.models import Check, Check_Report_Azure
    +from prowler.providers.azure.services.cosmosdb.cosmosdb_client import cosmosdb_client
    +
    +
    +class cosmosdb_account_use_aad_and_rbac(Check):
    +    def execute(self) -> Check_Report_Azure:
    +        findings = []
    +        for subscription, accounts in cosmosdb_client.accounts.items():
    +            for account in accounts:
    +                report = Check_Report_Azure(self.metadata())
    +                report.subscription = subscription
    +                report.resource_name = account.name
    +                report.resource_id = account.id
    +                report.status = "FAIL"
    +                report.status_extended = f"CosmosDB account {account.name} from subscription {subscription} is not using AAD and RBAC"
    +                if account.disable_local_auth:
    +                    report.status = "PASS"
    +                    report.status_extended = f"CosmosDB account {account.name} from subscription {subscription} is using AAD and RBAC"
    +                findings.append(report)
    +
    +        return findings
    diff --git a/prowler/providers/azure/services/cosmosdb/cosmosdb_account_use_private_endpoints/__init__.py b/prowler/providers/azure/services/cosmosdb/cosmosdb_account_use_private_endpoints/__init__.py
    new file mode 100644
    index 00000000000..e69de29bb2d
    diff --git a/prowler/providers/azure/services/cosmosdb/cosmosdb_account_use_private_endpoints/cosmosdb_account_use_private_endpoints.metadata.json b/prowler/providers/azure/services/cosmosdb/cosmosdb_account_use_private_endpoints/cosmosdb_account_use_private_endpoints.metadata.json
    new file mode 100644
    index 00000000000..cece2160e2d
    --- /dev/null
    +++ b/prowler/providers/azure/services/cosmosdb/cosmosdb_account_use_private_endpoints/cosmosdb_account_use_private_endpoints.metadata.json
    @@ -0,0 +1,30 @@
    +{
    +  "Provider": "azure",
    +  "CheckID": "cosmosdb_account_use_private_endpoints",
    +  "CheckTitle": "Ensure That Private Endpoints Are Used Where Possible",
    +  "CheckType": [],
    +  "ServiceName": "cosmosdb",
    +  "SubServiceName": "",
    +  "ResourceIdTemplate": "",
    +  "Severity": "medium",
    +  "ResourceType": "CosmosDB",
    +  "Description": "Private endpoints limit network traffic to approved sources.",
    +  "Risk": "For sensitive data, private endpoints allow granular control of which services can communicate with Cosmos DB and ensure that this network traffic is private. You set this up on a case by case basis for each service you wish to be connected.",
    +  "RelatedUrl": "https://docs.microsoft.com/en-us/azure/cosmos-db/how-to-configure-private-endpoints",
    +  "Remediation": {
    +    "Code": {
    +      "CLI": "",
    +      "NativeIaC": "",
    +      "Other": "",
    +      "Terraform": ""
    +    },
    +    "Recommendation": {
    +      "Text": "1. Open the portal menu. 2. Select the Azure Cosmos DB blade. 3. Select the Azure Cosmos DB account. 4. Select Networking. 5. Select Private access. 6. Click + Private Endpoint. 7. Provide a Name. 8. Click Next. 9. From the Resource type drop down, select Microsoft.AzureCosmosDB/databaseAccounts. 10. From the Resource drop down, select the Cosmos DB account. 11. Click Next. 12. Provide appropriate Virtual Network details. 13. Click Next. 14. Provide appropriate DNS details. 15. Click Next. 16. Optionally provide Tags. 17. Click Next : Review + create. 18. Click Create.",
    +      "Url": "https://docs.microsoft.com/en-us/azure/private-link/tutorial-private-endpoint-cosmosdb-portal"
    +    }
    +  },
    +  "Categories": [],
    +  "DependsOn": [],
    +  "RelatedTo": [],
    +  "Notes": "Only whitelisted services will have access to communicate with the Cosmos DB."
    +}
    diff --git a/prowler/providers/azure/services/cosmosdb/cosmosdb_account_use_private_endpoints/cosmosdb_account_use_private_endpoints.py b/prowler/providers/azure/services/cosmosdb/cosmosdb_account_use_private_endpoints/cosmosdb_account_use_private_endpoints.py
    new file mode 100644
    index 00000000000..22bad479bc5
    --- /dev/null
    +++ b/prowler/providers/azure/services/cosmosdb/cosmosdb_account_use_private_endpoints/cosmosdb_account_use_private_endpoints.py
    @@ -0,0 +1,21 @@
    +from prowler.lib.check.models import Check, Check_Report_Azure
    +from prowler.providers.azure.services.cosmosdb.cosmosdb_client import cosmosdb_client
    +
    +
    +class cosmosdb_account_use_private_endpoints(Check):
    +    def execute(self) -> Check_Report_Azure:
    +        findings = []
    +        for subscription, accounts in cosmosdb_client.accounts.items():
    +            for account in accounts:
    +                report = Check_Report_Azure(self.metadata())
    +                report.subscription = subscription
    +                report.resource_name = account.name
    +                report.resource_id = account.id
    +                report.status = "FAIL"
    +                report.status_extended = f"CosmosDB account {account.name} from subscription {subscription} is not using private endpoints connections"
    +                if account.private_endpoint_connections:
    +                    report.status = "PASS"
    +                    report.status_extended = f"CosmosDB account {account.name} from subscription {subscription} is using private endpoints connections"
    +                findings.append(report)
    +
    +        return findings
    diff --git a/prowler/providers/azure/services/cosmosdb/cosmosdb_client.py b/prowler/providers/azure/services/cosmosdb/cosmosdb_client.py
    new file mode 100644
    index 00000000000..8fb122669b6
    --- /dev/null
    +++ b/prowler/providers/azure/services/cosmosdb/cosmosdb_client.py
    @@ -0,0 +1,4 @@
    +from prowler.providers.azure.lib.audit_info.audit_info import azure_audit_info
    +from prowler.providers.azure.services.cosmosdb.cosmosdb_service import CosmosDB
    +
    +cosmosdb_client = CosmosDB(azure_audit_info)
    diff --git a/prowler/providers/azure/services/cosmosdb/cosmosdb_service.py b/prowler/providers/azure/services/cosmosdb/cosmosdb_service.py
    new file mode 100644
    index 00000000000..a4e3229d05d
    --- /dev/null
    +++ b/prowler/providers/azure/services/cosmosdb/cosmosdb_service.py
    @@ -0,0 +1,53 @@
    +from dataclasses import dataclass
    +
    +from azure.mgmt.cosmosdb import CosmosDBManagementClient
    +from azure.mgmt.cosmosdb.models import PrivateEndpointConnection
    +
    +from prowler.lib.logger import logger
    +from prowler.providers.azure.lib.service.service import AzureService
    +
    +
    +class CosmosDB(AzureService):
    +    def __init__(self, audit_info):
    +        super().__init__(CosmosDBManagementClient, audit_info)
    +        self.accounts = self.__get_accounts__()
    +
    +    def __get_accounts__(self):
    +        logger.info("CosmosDB - Getting accounts...")
    +        accounts = {}
    +        for subscription, client in self.clients.items():
    +            try:
    +                accounts_list = client.database_accounts.list()
    +                accounts.update({subscription: []})
    +                for account in accounts_list:
    +                    accounts[subscription].append(
    +                        Account(
    +                            id=account.id,
    +                            name=account.name,
    +                            kind=account.kind,
    +                            location=account.location,
    +                            type=account.type,
    +                            tags=account.tags,
    +                            is_virtual_network_filter_enabled=account.is_virtual_network_filter_enabled,
    +                            private_endpoint_connections=account.private_endpoint_connections,
    +                            disable_local_auth=account.disable_local_auth,
    +                        )
    +                    )
    +            except Exception as error:
    +                logger.error(
    +                    f"Subscription name: {subscription} -- {error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}"
    +                )
    +        return accounts
    +
    +
    +@dataclass
    +class Account:
    +    id: str
    +    name: str
    +    kind: str
    +    location: str
    +    type: str
    +    tags: dict
    +    is_virtual_network_filter_enabled: bool
    +    private_endpoint_connections: list[PrivateEndpointConnection] = None
    +    disable_local_auth: bool = False
    diff --git a/prowler/providers/azure/services/defender/defender_additional_email_configured_with_a_security_contact/__init__.py b/prowler/providers/azure/services/defender/defender_additional_email_configured_with_a_security_contact/__init__.py
    new file mode 100644
    index 00000000000..e69de29bb2d
    diff --git a/prowler/providers/azure/services/defender/defender_additional_email_configured_with_a_security_contact/defender_additional_email_configured_with_a_security_contact.metadata.json b/prowler/providers/azure/services/defender/defender_additional_email_configured_with_a_security_contact/defender_additional_email_configured_with_a_security_contact.metadata.json
    new file mode 100644
    index 00000000000..4e018433c9f
    --- /dev/null
    +++ b/prowler/providers/azure/services/defender/defender_additional_email_configured_with_a_security_contact/defender_additional_email_configured_with_a_security_contact.metadata.json
    @@ -0,0 +1,30 @@
    +{
    +  "Provider": "azure",
    +  "CheckID": "defender_additional_email_configured_with_a_security_contact",
    +  "CheckTitle": "Ensure 'Additional email addresses' is Configured with a Security Contact Email",
    +  "CheckType": [],
    +  "ServiceName": "defender",
    +  "SubServiceName": "",
    +  "ResourceIdTemplate": "",
    +  "Severity": "medium",
    +  "ResourceType": "AzureEmailNotifications",
    +  "Description": "Microsoft Defender for Cloud emails the subscription owners whenever a high-severity alert is triggered for their subscription. You should provide a security contact email address as an additional email address.",
    +  "Risk": "Microsoft Defender for Cloud emails the Subscription Owner to notify them about security alerts. Adding your Security Contact's email address to the 'Additional email addresses' field ensures that your organization's Security Team is included in these alerts. This ensures that the proper people are aware of any potential compromise in order to mitigate the risk in a timely fashion.",
    +  "RelatedUrl": "https://docs.microsoft.com/en-us/azure/security-center/security-center-provide-security-contact-details",
    +  "Remediation": {
    +    "Code": {
    +      "CLI": "",
    +      "NativeIaC": "",
    +      "Other": "https://www.trendmicro.com/cloudoneconformity/knowledge-base/azure/SecurityCenter/security-contact-email.html",
    +      "Terraform": "https://docs.bridgecrew.io/docs/ensure-that-security-contact-emails-is-set#terraform"
    +    },
    +    "Recommendation": {
    +      "Text": "1. From Azure Home select the Portal Menu 2. Select Microsoft Defender for Cloud 3. Click on Environment Settings 4. Click on the appropriate Management Group, Subscription, or Workspace 5. Click on Email notifications 6. Enter a valid security contact email address (or multiple addresses separated by commas) in the Additional email addresses field 7. Click Save",
    +      "Url": "https://learn.microsoft.com/en-us/rest/api/defenderforcloud/security-contacts/list?view=rest-defenderforcloud-2020-01-01-preview&tabs=HTTP"
    +    }
    +  },
    +  "Categories": [],
    +  "DependsOn": [],
    +  "RelatedTo": [],
    +  "Notes": ""
    +}
    diff --git a/prowler/providers/azure/services/defender/defender_additional_email_configured_with_a_security_contact/defender_additional_email_configured_with_a_security_contact.py b/prowler/providers/azure/services/defender/defender_additional_email_configured_with_a_security_contact/defender_additional_email_configured_with_a_security_contact.py
    new file mode 100644
    index 00000000000..98bcbb801a6
    --- /dev/null
    +++ b/prowler/providers/azure/services/defender/defender_additional_email_configured_with_a_security_contact/defender_additional_email_configured_with_a_security_contact.py
    @@ -0,0 +1,36 @@
    +import re
    +
    +from prowler.lib.check.models import Check, Check_Report_Azure
    +from prowler.providers.azure.services.defender.defender_client import defender_client
    +
    +
    +class defender_additional_email_configured_with_a_security_contact(Check):
    +    def execute(self) -> Check_Report_Azure:
    +        findings = []
    +
    +        for (
    +            subscription_name,
    +            security_contacts,
    +        ) in defender_client.security_contacts.items():
    +            for contact_name, contact_info in security_contacts.items():
    +                report = Check_Report_Azure(self.metadata())
    +                report.status = "PASS"
    +                report.subscription = subscription_name
    +                report.resource_name = contact_name
    +                report.resource_id = contact_info.resource_id
    +                report.status_extended = f"There is another correct email configured for susbscription {subscription_name}."
    +
    +                emails = contact_info.emails.split(";")
    +
    +                for email in emails:
    +                    if re.fullmatch(
    +                        r"\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b", email
    +                    ):
    +                        break
    +                else:
    +                    report.status = "FAIL"
    +                    report.status_extended = f"There is not another correct email configured for susbscription {subscription_name}."
    +
    +                findings.append(report)
    +
    +        return findings
    diff --git a/prowler/providers/azure/services/defender/defender_assessments_vm_endpoint_protection_installed/__init__.py b/prowler/providers/azure/services/defender/defender_assessments_vm_endpoint_protection_installed/__init__.py
    new file mode 100644
    index 00000000000..e69de29bb2d
    diff --git a/prowler/providers/azure/services/defender/defender_assessments_vm_endpoint_protection_installed/defender_assessments_vm_endpoint_protection_installed.metadata.json b/prowler/providers/azure/services/defender/defender_assessments_vm_endpoint_protection_installed/defender_assessments_vm_endpoint_protection_installed.metadata.json
    new file mode 100644
    index 00000000000..943c62b6545
    --- /dev/null
    +++ b/prowler/providers/azure/services/defender/defender_assessments_vm_endpoint_protection_installed/defender_assessments_vm_endpoint_protection_installed.metadata.json
    @@ -0,0 +1,30 @@
    +{
    +  "Provider": "azure",
    +  "CheckID": "defender_assessments_vm_endpoint_protection_installed",
    +  "CheckTitle": "Ensure that Endpoint Protection for all Virtual Machines is installed",
    +  "CheckType": [],
    +  "ServiceName": "defender",
    +  "SubServiceName": "",
    +  "ResourceIdTemplate": "",
    +  "Severity": "high",
    +  "ResourceType": "Microsoft.Security/assessments",
    +  "Description": "Install endpoint protection for all virtual machines.",
    +  "Risk": "Installing endpoint protection systems (like anti-malware for Azure) provides for real-time protection capability that helps identify and remove viruses, spyware, and other malicious software. These also offer configurable alerts when known-malicious or unwanted software attempts to install itself or run on Azure systems.",
    +  "RelatedUrl": "https://learn.microsoft.com/en-us/azure/security/fundamentals/antimalware",
    +  "Remediation": {
    +    "Code": {
    +      "CLI": "",
    +      "NativeIaC": "",
    +      "Other": "https://www.trendmicro.com/cloudoneconformity/knowledge-base/azure/VirtualMachines/install-endpoint-protection.html#",
    +      "Terraform": ""
    +    },
    +    "Recommendation": {
    +      "Text": "Follow Microsoft Azure documentation to install endpoint protection from the security center. Alternatively, you can employ your own endpoint protection tool for your OS.",
    +      "Url": ""
    +    }
    +  },
    +  "Categories": [],
    +  "DependsOn": [],
    +  "RelatedTo": [],
    +  "Notes": "Endpoint protection will incur an additional cost to you."
    +}
    diff --git a/prowler/providers/azure/services/defender/defender_assessments_vm_endpoint_protection_installed/defender_assessments_vm_endpoint_protection_installed.py b/prowler/providers/azure/services/defender/defender_assessments_vm_endpoint_protection_installed/defender_assessments_vm_endpoint_protection_installed.py
    new file mode 100644
    index 00000000000..29e649cb837
    --- /dev/null
    +++ b/prowler/providers/azure/services/defender/defender_assessments_vm_endpoint_protection_installed/defender_assessments_vm_endpoint_protection_installed.py
    @@ -0,0 +1,41 @@
    +from prowler.lib.check.models import Check, Check_Report_Azure
    +from prowler.providers.azure.services.defender.defender_client import defender_client
    +
    +
    +class defender_assessments_vm_endpoint_protection_installed(Check):
    +    def execute(self) -> Check_Report_Azure:
    +        findings = []
    +
    +        for (
    +            subscription_name,
    +            assessments,
    +        ) in defender_client.assessments.items():
    +            pass
    +
    +            if (
    +                "Install endpoint protection solution on virtual machines"
    +                in assessments
    +            ):
    +                report = Check_Report_Azure(self.metadata())
    +                report.status = "PASS"
    +                report.subscription = subscription_name
    +                report.resource_name = assessments[
    +                    "Install endpoint protection solution on virtual machines"
    +                ].resource_name
    +                report.resource_id = assessments[
    +                    "Install endpoint protection solution on virtual machines"
    +                ].resource_id
    +                report.status_extended = f"Endpoint protection is set up in all VMs in subscription {subscription_name}."
    +
    +                if (
    +                    assessments[
    +                        "Install endpoint protection solution on virtual machines"
    +                    ].status
    +                    == "Unhealthy"
    +                ):
    +                    report.status = "FAIL"
    +                    report.status_extended = f"Endpoint protection is not set up in all VMs in subscription {subscription_name}."
    +
    +                findings.append(report)
    +
    +        return findings
    diff --git a/prowler/providers/azure/services/defender/defender_auto_provisioning_log_analytics_agent_vms_on/__init__.py b/prowler/providers/azure/services/defender/defender_auto_provisioning_log_analytics_agent_vms_on/__init__.py
    new file mode 100644
    index 00000000000..e69de29bb2d
    diff --git a/prowler/providers/azure/services/defender/defender_auto_provisioning_log_analytics_agent_vms_on/defender_auto_provisioning_log_analytics_agent_vms_on.metadata.json b/prowler/providers/azure/services/defender/defender_auto_provisioning_log_analytics_agent_vms_on/defender_auto_provisioning_log_analytics_agent_vms_on.metadata.json
    new file mode 100644
    index 00000000000..ec571bf45c3
    --- /dev/null
    +++ b/prowler/providers/azure/services/defender/defender_auto_provisioning_log_analytics_agent_vms_on/defender_auto_provisioning_log_analytics_agent_vms_on.metadata.json
    @@ -0,0 +1,30 @@
    +{
    +  "Provider": "azure",
    +  "CheckID": "defender_auto_provisioning_log_analytics_agent_vms_on",
    +  "CheckTitle": "Ensure that Auto provisioning of 'Log Analytics agent for Azure VMs' is Set to 'On'",
    +  "CheckType": [],
    +  "ServiceName": "defender",
    +  "SubServiceName": "",
    +  "ResourceIdTemplate": "",
    +  "Severity": "medium",
    +  "ResourceType": "AzureDefenderPlan",
    +  "Description": "Ensure that Auto provisioning of 'Log Analytics agent for Azure VMs' is Set to 'On'. The Microsoft Monitoring Agent scans for various security-related configurations and events such as system updates, OS vulnerabilities, endpoint protection, and provides alerts.",
    +  "Risk": "Missing critical security information about your Azure VMs, such as security alerts, security recommendations, and change tracking.",
    +  "RelatedUrl": "https://docs.microsoft.com/en-us/azure/security-center/security-center-data-security",
    +  "Remediation": {
    +    "Code": {
    +      "CLI": "",
    +      "NativeIaC": "",
    +      "Other": "https://www.trendmicro.com/cloudoneconformity-staging/knowledge-base/azure/SecurityCenter/automatic-provisioning-of-monitoring-agent.html",
    +      "Terraform": ""
    +    },
    +    "Recommendation": {
    +      "Text": "Ensure comprehensive visibility into possible security vulnerabilities, including missing updates, misconfigured operating system security settings, and active threats, allowing for timely mitigation and improved overall security posture",
    +      "Url": "https://learn.microsoft.com/en-us/azure/defender-for-cloud/monitoring-components"
    +    }
    +  },
    +  "Categories": [],
    +  "DependsOn": [],
    +  "RelatedTo": [],
    +  "Notes": ""
    +}
    diff --git a/prowler/providers/azure/services/defender/defender_auto_provisioning_log_analytics_agent_vms_on/defender_auto_provisioning_log_analytics_agent_vms_on.py b/prowler/providers/azure/services/defender/defender_auto_provisioning_log_analytics_agent_vms_on/defender_auto_provisioning_log_analytics_agent_vms_on.py
    new file mode 100644
    index 00000000000..ff14bd51e18
    --- /dev/null
    +++ b/prowler/providers/azure/services/defender/defender_auto_provisioning_log_analytics_agent_vms_on/defender_auto_provisioning_log_analytics_agent_vms_on.py
    @@ -0,0 +1,29 @@
    +from prowler.lib.check.models import Check, Check_Report_Azure
    +from prowler.providers.azure.services.defender.defender_client import defender_client
    +
    +
    +class defender_auto_provisioning_log_analytics_agent_vms_on(Check):
    +    def execute(self) -> Check_Report_Azure:
    +        findings = []
    +
    +        for (
    +            subscription_name,
    +            auto_provisioning_settings,
    +        ) in defender_client.auto_provisioning_settings.items():
    +
    +            for auto_provisioning_setting in auto_provisioning_settings.values():
    +
    +                report = Check_Report_Azure(self.metadata())
    +                report.status = "PASS"
    +                report.subscription = subscription_name
    +                report.resource_name = auto_provisioning_setting.resource_name
    +                report.resource_id = auto_provisioning_setting.resource_id
    +                report.status_extended = f"Defender Auto Provisioning Log Analytics Agents from subscription {subscription_name} is set to ON."
    +
    +                if auto_provisioning_setting.auto_provision != "On":
    +                    report.status = "FAIL"
    +                    report.status_extended = f"Defender Auto Provisioning Log Analytics Agents from subscription {subscription_name} is set to OFF."
    +
    +                findings.append(report)
    +
    +        return findings
    diff --git a/prowler/providers/azure/services/defender/defender_auto_provisioning_vulnerabilty_assessments_machines_on/__init__.py b/prowler/providers/azure/services/defender/defender_auto_provisioning_vulnerabilty_assessments_machines_on/__init__.py
    new file mode 100644
    index 00000000000..e69de29bb2d
    diff --git a/prowler/providers/azure/services/defender/defender_auto_provisioning_vulnerabilty_assessments_machines_on/defender_auto_provisioning_vulnerabilty_assessments_machines_on.metadata.json b/prowler/providers/azure/services/defender/defender_auto_provisioning_vulnerabilty_assessments_machines_on/defender_auto_provisioning_vulnerabilty_assessments_machines_on.metadata.json
    new file mode 100644
    index 00000000000..fb01fa9b248
    --- /dev/null
    +++ b/prowler/providers/azure/services/defender/defender_auto_provisioning_vulnerabilty_assessments_machines_on/defender_auto_provisioning_vulnerabilty_assessments_machines_on.metadata.json
    @@ -0,0 +1,30 @@
    +{
    +  "Provider": "azure",
    +  "CheckID": "defender_auto_provisioning_vulnerabilty_assessments_machines_on",
    +  "CheckTitle": "Ensure that Auto provisioning of 'Vulnerability assessment for machines' is Set to 'On'",
    +  "CheckType": [],
    +  "ServiceName": "defender",
    +  "SubServiceName": "",
    +  "ResourceIdTemplate": "",
    +  "Severity": "medium",
    +  "ResourceType": "AzureDefenderPlan",
    +  "Description": "Enable automatic provisioning of vulnerability assessment for machines on both Azure and hybrid (Arc enabled) machines.",
    +  "Risk": "Vulnerability assessment for machines scans for various security-related configurations and events such as system updates, OS vulnerabilities, and endpoint protection, then produces alerts on threat and vulnerability findings.",
    +  "RelatedUrl": "https://docs.microsoft.com/en-us/azure/defender-for-cloud/enable-data-collection?tabs=autoprovision-va",
    +  "Remediation": {
    +    "Code": {
    +      "CLI": "",
    +      "NativeIaC": "",
    +      "Other": "https://www.trendmicro.com/cloudoneconformity/knowledge-base/azure/SecurityCenter/automatic-provisioning-vulnerability-assessment-machines.html",
    +      "Terraform": ""
    +    },
    +    "Recommendation": {
    +      "Text": "1. From Azure Home select the Portal Menu. 2. Select Microsoft Defender for Cloud. 3. Then Environment Settings. 4. Select a subscription. 5. Click on Settings & Monitoring. 6. Ensure that Vulnerability assessment for machines is set to On. Repeat this for any additional subscriptions.",
    +      "Url": ""
    +    }
    +  },
    +  "Categories": [],
    +  "DependsOn": [],
    +  "RelatedTo": [],
    +  "Notes": "Additional licensing is required and configuration of Azure Arc introduces complexity beyond this recommendation."
    +}
    diff --git a/prowler/providers/azure/services/defender/defender_auto_provisioning_vulnerabilty_assessments_machines_on/defender_auto_provisioning_vulnerabilty_assessments_machines_on.py b/prowler/providers/azure/services/defender/defender_auto_provisioning_vulnerabilty_assessments_machines_on/defender_auto_provisioning_vulnerabilty_assessments_machines_on.py
    new file mode 100644
    index 00000000000..5c9b701ee78
    --- /dev/null
    +++ b/prowler/providers/azure/services/defender/defender_auto_provisioning_vulnerabilty_assessments_machines_on/defender_auto_provisioning_vulnerabilty_assessments_machines_on.py
    @@ -0,0 +1,39 @@
    +from prowler.lib.check.models import Check, Check_Report_Azure
    +from prowler.providers.azure.services.defender.defender_client import defender_client
    +
    +
    +class defender_auto_provisioning_vulnerabilty_assessments_machines_on(Check):
    +    def execute(self) -> Check_Report_Azure:
    +        findings = []
    +
    +        for (
    +            subscription_name,
    +            assessments,
    +        ) in defender_client.assessments.items():
    +            if (
    +                "Machines should have a vulnerability assessment solution"
    +                in assessments
    +            ):
    +                report = Check_Report_Azure(self.metadata())
    +                report.status = "PASS"
    +                report.subscription = subscription_name
    +                report.resource_name = assessments[
    +                    "Machines should have a vulnerability assessment solution"
    +                ].resource_name
    +                report.resource_id = assessments[
    +                    "Machines should have a vulnerability assessment solution"
    +                ].resource_id
    +                report.status_extended = f"Vulnerability assessment is set up in all VMs in subscription {subscription_name}."
    +
    +                if (
    +                    assessments[
    +                        "Machines should have a vulnerability assessment solution"
    +                    ].status
    +                    == "Unhealthy"
    +                ):
    +                    report.status = "FAIL"
    +                    report.status_extended = f"Vulnerability assessment is not set up in all VMs in subscription {subscription_name}."
    +
    +                findings.append(report)
    +
    +        return findings
    diff --git a/prowler/providers/azure/services/defender/defender_ensure_iot_hub_defender_is_on/__init__.py b/prowler/providers/azure/services/defender/defender_ensure_iot_hub_defender_is_on/__init__.py
    new file mode 100644
    index 00000000000..e69de29bb2d
    diff --git a/prowler/providers/azure/services/defender/defender_ensure_iot_hub_defender_is_on/defender_ensure_iot_hub_defender_is_on.metadata.json b/prowler/providers/azure/services/defender/defender_ensure_iot_hub_defender_is_on/defender_ensure_iot_hub_defender_is_on.metadata.json
    new file mode 100644
    index 00000000000..9f4d1f43500
    --- /dev/null
    +++ b/prowler/providers/azure/services/defender/defender_ensure_iot_hub_defender_is_on/defender_ensure_iot_hub_defender_is_on.metadata.json
    @@ -0,0 +1,30 @@
    +{
    +  "Provider": "azure",
    +  "CheckID": "defender_ensure_iot_hub_defender_is_on",
    +  "CheckTitle": "Ensure That Microsoft Defender for IoT Hub Is Set To 'On'",
    +  "CheckType": [],
    +  "ServiceName": "defender",
    +  "SubServiceName": "",
    +  "ResourceIdTemplate": "",
    +  "Severity": "high",
    +  "ResourceType": "DefenderIoT",
    +  "Description": "Microsoft Defender for IoT acts as a central security hub for IoT devices within your organization.",
    +  "Risk": "IoT devices are very rarely patched and can be potential attack vectors for enterprise networks. Updating their network configuration to use a central security hub allows for detection of these breaches.",
    +  "RelatedUrl": "https://azure.microsoft.com/en-us/services/iot-defender/#overview",
    +  "Remediation": {
    +    "Code": {
    +      "CLI": "",
    +      "NativeIaC": "",
    +      "Other": "",
    +      "Terraform": ""
    +    },
    +    "Recommendation": {
    +      "Text": "1. Go to IoT Hub. 2. Select a IoT Hub to validate. 3. Select Overview in Defender for IoT. 4. Click on Secure your IoT solution, and complete the onboarding.",
    +      "Url": "https://learn.microsoft.com/en-us/azure/defender-for-iot/device-builders/quickstart-onboard-iot-hub"
    +    }
    +  },
    +  "Categories": [],
    +  "DependsOn": [],
    +  "RelatedTo": [],
    +  "Notes": "Enabling Microsoft Defender for IoT will incur additional charges dependent on the level of usage."
    +}
    diff --git a/prowler/providers/azure/services/defender/defender_ensure_iot_hub_defender_is_on/defender_ensure_iot_hub_defender_is_on.py b/prowler/providers/azure/services/defender/defender_ensure_iot_hub_defender_is_on/defender_ensure_iot_hub_defender_is_on.py
    new file mode 100644
    index 00000000000..96efa542166
    --- /dev/null
    +++ b/prowler/providers/azure/services/defender/defender_ensure_iot_hub_defender_is_on/defender_ensure_iot_hub_defender_is_on.py
    @@ -0,0 +1,41 @@
    +from prowler.lib.check.models import Check, Check_Report_Azure
    +from prowler.providers.azure.services.defender.defender_client import defender_client
    +
    +
    +class defender_ensure_iot_hub_defender_is_on(Check):
    +    def execute(self) -> Check_Report_Azure:
    +        findings = []
    +
    +        for (
    +            subscription_name,
    +            iot_security_solutions,
    +        ) in defender_client.iot_security_solutions.items():
    +
    +            if not iot_security_solutions:
    +                report = Check_Report_Azure(self.metadata())
    +                report.status = "FAIL"
    +                report.subscription = subscription_name
    +                report.resource_name = "IoT Hub Defender"
    +                report.resource_id = "IoT Hub Defender"
    +                report.status_extended = f"No IoT Security Solutions found in the subscription {subscription_name}."
    +                findings.append(report)
    +                continue
    +
    +            for (
    +                iot_security_solution_name,
    +                iot_security_solution,
    +            ) in iot_security_solutions.items():
    +                report = Check_Report_Azure(self.metadata())
    +                report.status = "PASS"
    +                report.subscription = subscription_name
    +                report.resource_name = iot_security_solution_name
    +                report.resource_id = iot_security_solution.resource_id
    +                report.status_extended = f"The security solution {iot_security_solution_name} is enabled in susbscription {subscription_name}."
    +
    +                if iot_security_solution.status != "Enabled":
    +                    report.status = "FAIL"
    +                    report.status_extended = f"The security solution {iot_security_solution_name} is disabled in susbscription {subscription_name}"
    +
    +                findings.append(report)
    +
    +        return findings
    diff --git a/prowler/providers/azure/services/defender/defender_ensure_mcas_is_enabled/__init__.py b/prowler/providers/azure/services/defender/defender_ensure_mcas_is_enabled/__init__.py
    new file mode 100644
    index 00000000000..e69de29bb2d
    diff --git a/prowler/providers/azure/services/defender/defender_ensure_mcas_is_enabled/defender_ensure_mcas_is_enabled.metadata.json b/prowler/providers/azure/services/defender/defender_ensure_mcas_is_enabled/defender_ensure_mcas_is_enabled.metadata.json
    new file mode 100644
    index 00000000000..913f8f90447
    --- /dev/null
    +++ b/prowler/providers/azure/services/defender/defender_ensure_mcas_is_enabled/defender_ensure_mcas_is_enabled.metadata.json
    @@ -0,0 +1,30 @@
    +{
    +  "Provider": "azure",
    +  "CheckID": "defender_ensure_mcas_is_enabled",
    +  "CheckTitle": "Ensure that Microsoft Defender for Cloud Apps integration with Microsoft Defender for Cloud is Selected",
    +  "CheckType": [],
    +  "ServiceName": "defender",
    +  "SubServiceName": "",
    +  "ResourceIdTemplate": "",
    +  "Severity": "medium",
    +  "ResourceType": "DefenderSettings",
    +  "Description": "This integration setting enables Microsoft Defender for Cloud Apps (formerly 'Microsoft Cloud App Security' or 'MCAS' - see additional info) to communicate with Microsoft Defender for Cloud.",
    +  "Risk": "Microsoft Defender for Cloud offers an additional layer of protection by using Azure Resource Manager events, which is considered to be the control plane for Azure. By analyzing the Azure Resource Manager records, Microsoft Defender for Cloud detects unusual or potentially harmful operations in the Azure subscription environment. Several of the preceding analytics are powered by Microsoft Defender for Cloud Apps. To benefit from these analytics, subscription must have a Cloud App Security license. Microsoft Defender for Cloud Apps works only with Standard Tier subscriptions.",
    +  "RelatedUrl": "https://learn.microsoft.com/en-in/azure/defender-for-cloud/defender-for-cloud-introduction#secure-cloud-applications",
    +  "Remediation": {
    +    "Code": {
    +      "CLI": "",
    +      "NativeIaC": "",
    +      "Other": "https://www.trendmicro.com/cloudoneconformity/knowledge-base/azure/SecurityCenter/defender-cloud-apps-integration.html#",
    +      "Terraform": ""
    +    },
    +    "Recommendation": {
    +      "Text": "1. From Azure Home select the Portal Menu. 2. Select Microsoft Defender for Cloud. 3. Select Environment Settings blade. 4. Select the subscription. 5. Check App Service Defender Plan to On. 6. Select Save.",
    +      "Url": "https://docs.microsoft.com/en-us/rest/api/securitycenter/settings/list"
    +    }
    +  },
    +  "Categories": [],
    +  "DependsOn": [],
    +  "RelatedTo": [],
    +  "Notes": "Microsoft Defender for Cloud Apps works with Standard pricing tier Subscription. Choosing the Standard pricing tier of Microsoft Defender for Cloud incurs an additional cost per resource."
    +}
    diff --git a/prowler/providers/azure/services/defender/defender_ensure_mcas_is_enabled/defender_ensure_mcas_is_enabled.py b/prowler/providers/azure/services/defender/defender_ensure_mcas_is_enabled/defender_ensure_mcas_is_enabled.py
    new file mode 100644
    index 00000000000..aa1ca35bdb5
    --- /dev/null
    +++ b/prowler/providers/azure/services/defender/defender_ensure_mcas_is_enabled/defender_ensure_mcas_is_enabled.py
    @@ -0,0 +1,28 @@
    +from prowler.lib.check.models import Check, Check_Report_Azure
    +from prowler.providers.azure.services.defender.defender_client import defender_client
    +
    +
    +class defender_ensure_mcas_is_enabled(Check):
    +    def execute(self) -> Check_Report_Azure:
    +        findings = []
    +
    +        for (
    +            subscription_name,
    +            settings,
    +        ) in defender_client.settings.items():
    +            report = Check_Report_Azure(self.metadata())
    +            report.status = "FAIL"
    +            report.subscription = subscription_name
    +            report.resource_name = "MCAS"
    +            report.resource_id = "MCAS"
    +            report.status_extended = f"Microsoft Defender for Cloud Apps not exists for subscription {subscription_name}."
    +            if "MCAS" in settings:
    +                report.resource_id = settings["MCAS"].resource_id
    +                report.status_extended = f"Microsoft Defender for Cloud Apps is disabeld for subscription {subscription_name}."
    +                if settings["MCAS"].enabled:
    +                    report.status = "PASS"
    +                    report.status_extended = f"Microsoft Defender for Cloud Apps is enabled for subscription {subscription_name}."
    +
    +            findings.append(report)
    +
    +        return findings
    diff --git a/prowler/providers/azure/services/defender/defender_ensure_notify_alerts_severity_is_high/__init__.py b/prowler/providers/azure/services/defender/defender_ensure_notify_alerts_severity_is_high/__init__.py
    new file mode 100644
    index 00000000000..e69de29bb2d
    diff --git a/prowler/providers/azure/services/defender/defender_ensure_notify_alerts_severity_is_high/defender_ensure_notify_alerts_severity_is_high.metadata.json b/prowler/providers/azure/services/defender/defender_ensure_notify_alerts_severity_is_high/defender_ensure_notify_alerts_severity_is_high.metadata.json
    new file mode 100644
    index 00000000000..2a3fe081094
    --- /dev/null
    +++ b/prowler/providers/azure/services/defender/defender_ensure_notify_alerts_severity_is_high/defender_ensure_notify_alerts_severity_is_high.metadata.json
    @@ -0,0 +1,30 @@
    +{
    +  "Provider": "azure",
    +  "CheckID": "defender_ensure_notify_alerts_severity_is_high",
    +  "CheckTitle": "Ensure That 'Notify about alerts with the following severity' is Set to 'High'",
    +  "CheckType": [],
    +  "ServiceName": "defender",
    +  "SubServiceName": "",
    +  "ResourceIdTemplate": "",
    +  "Severity": "high",
    +  "ResourceType": "AzureEmailNotifications",
    +  "Description": "Microsoft Defender for Cloud emails the subscription owners whenever a high-severity alert is triggered for their subscription. You should provide a security contact email address as an additional email address.",
    +  "Risk": "Microsoft Defender for Cloud emails the Subscription Owner to notify them about security alerts. Adding your Security Contact's email address to the 'Additional email addresses' field ensures that your organization's Security Team is included in these alerts. This ensures that the proper people are aware of any potential compromise in order to mitigate the risk in a timely fashion.",
    +  "RelatedUrl": "https://docs.microsoft.com/en-us/azure/security-center/security-center-provide-security-contact-details",
    +  "Remediation": {
    +    "Code": {
    +      "CLI": "",
    +      "NativeIaC": "",
    +      "Other": "https://www.trendmicro.com/cloudoneconformity/knowledge-base/azure/SecurityCenter/enable-high-severity-email-notifications.html",
    +      "Terraform": "https://docs.bridgecrew.io/docs/bc_azr_general_4#terraform"
    +    },
    +    "Recommendation": {
    +      "Text": "1. From Azure Home select the Portal Menu 2. Select Microsoft Defender for Cloud 3. Click on Environment Settings 4. Click on the appropriate Management Group, Subscription, or Workspace 5. Click on Email notifications 6. Enter a valid security contact email address (or multiple addresses separated by commas) in the Additional email addresses field 7. Click Save",
    +      "Url": "https://docs.microsoft.com/en-us/rest/api/securitycenter/securitycontacts/list"
    +    }
    +  },
    +  "Categories": [],
    +  "DependsOn": [],
    +  "RelatedTo": [],
    +  "Notes": ""
    +}
    diff --git a/prowler/providers/azure/services/defender/defender_ensure_notify_alerts_severity_is_high/defender_ensure_notify_alerts_severity_is_high.py b/prowler/providers/azure/services/defender/defender_ensure_notify_alerts_severity_is_high/defender_ensure_notify_alerts_severity_is_high.py
    new file mode 100644
    index 00000000000..ca793906372
    --- /dev/null
    +++ b/prowler/providers/azure/services/defender/defender_ensure_notify_alerts_severity_is_high/defender_ensure_notify_alerts_severity_is_high.py
    @@ -0,0 +1,27 @@
    +from prowler.lib.check.models import Check, Check_Report_Azure
    +from prowler.providers.azure.services.defender.defender_client import defender_client
    +
    +
    +class defender_ensure_notify_alerts_severity_is_high(Check):
    +    def execute(self) -> Check_Report_Azure:
    +        findings = []
    +
    +        for (
    +            subscription_name,
    +            security_contacts,
    +        ) in defender_client.security_contacts.items():
    +            for contact_name, contact_info in security_contacts.items():
    +                report = Check_Report_Azure(self.metadata())
    +                report.status = "PASS"
    +                report.subscription = subscription_name
    +                report.resource_name = contact_name
    +                report.resource_id = contact_info.resource_id
    +                report.status_extended = f"Notifiy alerts are enabled for severity high in susbscription {subscription_name}."
    +
    +                if contact_info.alert_notifications_minimal_severity != "High":
    +                    report.status = "FAIL"
    +                    report.status_extended = f"Notifiy alerts are not enabled for severity high in susbscription {subscription_name}."
    +
    +                findings.append(report)
    +
    +        return findings
    diff --git a/prowler/providers/azure/services/defender/defender_ensure_notify_emails_to_owners/__init__.py b/prowler/providers/azure/services/defender/defender_ensure_notify_emails_to_owners/__init__.py
    new file mode 100644
    index 00000000000..e69de29bb2d
    diff --git a/prowler/providers/azure/services/defender/defender_ensure_notify_emails_to_owners/defender_ensure_notify_emails_to_owners.metadata.json b/prowler/providers/azure/services/defender/defender_ensure_notify_emails_to_owners/defender_ensure_notify_emails_to_owners.metadata.json
    new file mode 100644
    index 00000000000..a0375f9e930
    --- /dev/null
    +++ b/prowler/providers/azure/services/defender/defender_ensure_notify_emails_to_owners/defender_ensure_notify_emails_to_owners.metadata.json
    @@ -0,0 +1,30 @@
    +{
    +  "Provider": "azure",
    +  "CheckID": "defender_ensure_notify_emails_to_owners",
    +  "CheckTitle": "Ensure That 'All users with the following roles' is set to 'Owner'",
    +  "CheckType": [],
    +  "ServiceName": "defender",
    +  "SubServiceName": "",
    +  "ResourceIdTemplate": "",
    +  "Severity": "medium",
    +  "ResourceType": "AzureEmailNotifications",
    +  "Description": "Enable security alert emails to subscription owners.",
    +  "Risk": "Enabling security alert emails to subscription owners ensures that they receive security alert emails from Microsoft. This ensures that they are aware of any potential security issues and can mitigate the risk in a timely fashion.",
    +  "RelatedUrl": "https://docs.microsoft.com/en-us/azure/security-center/security-center-provide-security-contact-details",
    +  "Remediation": {
    +    "Code": {
    +      "CLI": "",
    +      "NativeIaC": "",
    +      "Other": "https://www.trendmicro.com/cloudoneconformity/knowledge-base/azure/SecurityCenter/email-to-subscription-owners.html",
    +      "Terraform": ""
    +    },
    +    "Recommendation": {
    +      "Text": "1. From Azure Home select the Portal Menu 2. Select Microsoft Defender for Cloud 3. Click on Environment Settings 4. Click on the appropriate Management Group, Subscription, or Workspace 5. Click on Email notifications 6. In the drop down of the All users with the following roles field select Owner 7. Click Save",
    +      "Url": "https://docs.microsoft.com/en-us/rest/api/securitycenter/securitycontacts/list"
    +    }
    +  },
    +  "Categories": [],
    +  "DependsOn": [],
    +  "RelatedTo": [],
    +  "Notes": ""
    +}
    diff --git a/prowler/providers/azure/services/defender/defender_ensure_notify_emails_to_owners/defender_ensure_notify_emails_to_owners.py b/prowler/providers/azure/services/defender/defender_ensure_notify_emails_to_owners/defender_ensure_notify_emails_to_owners.py
    new file mode 100644
    index 00000000000..c689b652d1b
    --- /dev/null
    +++ b/prowler/providers/azure/services/defender/defender_ensure_notify_emails_to_owners/defender_ensure_notify_emails_to_owners.py
    @@ -0,0 +1,34 @@
    +from prowler.lib.check.models import Check, Check_Report_Azure
    +from prowler.providers.azure.services.defender.defender_client import defender_client
    +
    +
    +class defender_ensure_notify_emails_to_owners(Check):
    +    def execute(self) -> Check_Report_Azure:
    +        findings = []
    +
    +        for (
    +            subscription_name,
    +            security_contacts,
    +        ) in defender_client.security_contacts.items():
    +
    +            for contact_name, contact_info in security_contacts.items():
    +
    +                report = Check_Report_Azure(self.metadata())
    +                report.status = "PASS"
    +                report.subscription = subscription_name
    +                report.resource_name = contact_name
    +                report.resource_id = contact_info.resource_id
    +                report.status_extended = (
    +                    f"The Owner role is notified for subscription {subscription_name}."
    +                )
    +
    +                if (
    +                    contact_info.notified_roles_state != "On"
    +                    or "Owner" not in contact_info.notified_roles
    +                ):
    +                    report.status = "FAIL"
    +                    report.status_extended = f"The Owner role is not notified for subscription {subscription_name}."
    +
    +                findings.append(report)
    +
    +        return findings
    diff --git a/prowler/providers/azure/services/defender/defender_ensure_system_updates_are_applied/__init__.py b/prowler/providers/azure/services/defender/defender_ensure_system_updates_are_applied/__init__.py
    new file mode 100644
    index 00000000000..e69de29bb2d
    diff --git a/prowler/providers/azure/services/defender/defender_ensure_system_updates_are_applied/defender_ensure_system_updates_are_applied.metadata.json b/prowler/providers/azure/services/defender/defender_ensure_system_updates_are_applied/defender_ensure_system_updates_are_applied.metadata.json
    new file mode 100644
    index 00000000000..787220adb1e
    --- /dev/null
    +++ b/prowler/providers/azure/services/defender/defender_ensure_system_updates_are_applied/defender_ensure_system_updates_are_applied.metadata.json
    @@ -0,0 +1,30 @@
    +{
    +  "Provider": "azure",
    +  "CheckID": "defender_ensure_system_updates_are_applied",
    +  "CheckTitle": "Ensure that Microsoft Defender Recommendation for 'Apply system updates' status is 'Completed'",
    +  "CheckType": [],
    +  "ServiceName": "defender",
    +  "SubServiceName": "",
    +  "ResourceIdTemplate": "",
    +  "Severity": "high",
    +  "ResourceType": "AzureDefenderRecommendation",
    +  "Description": "Ensure that the latest OS patches for all virtual machines are applied.",
    +  "Risk": "The Azure Security Center retrieves a list of available security and critical updates from Windows Update or Windows Server Update Services (WSUS), depending on which service is configured on a Windows VM. The security center also checks for the latest updates in Linux systems. If a VM is missing a system update, the security center will recommend system updates be applied.",
    +  "RelatedUrl": "https://docs.microsoft.com/en-us/security/benchmark/azure/security-controls-v3-posture-vulnerability-management#pv-7-rapidly-and-automatically-remediate-software-vulnerabilities",
    +  "Remediation": {
    +    "Code": {
    +      "CLI": "",
    +      "NativeIaC": "",
    +      "Other": "https://www.trendmicro.com/cloudoneconformity/knowledge-base/azure/VirtualMachines/apply-latest-os-patches.html",
    +      "Terraform": ""
    +    },
    +    "Recommendation": {
    +      "Text": "Follow Microsoft Azure documentation to apply security patches from the security center. Alternatively, you can employ your own patch assessment and management tool to periodically assess, report, and install the required security patches for your OS.",
    +      "Url": "https://learn.microsoft.com/en-us/azure/virtual-machines/updates-maintenance-overview"
    +    }
    +  },
    +  "Categories": [],
    +  "DependsOn": [],
    +  "RelatedTo": [],
    +  "Notes": "Running Microsoft Defender for Cloud incurs additional charges for each resource monitored. Please see attached reference for exact charges per hour."
    +}
    diff --git a/prowler/providers/azure/services/defender/defender_ensure_system_updates_are_applied/defender_ensure_system_updates_are_applied.py b/prowler/providers/azure/services/defender/defender_ensure_system_updates_are_applied/defender_ensure_system_updates_are_applied.py
    new file mode 100644
    index 00000000000..9155c107b77
    --- /dev/null
    +++ b/prowler/providers/azure/services/defender/defender_ensure_system_updates_are_applied/defender_ensure_system_updates_are_applied.py
    @@ -0,0 +1,50 @@
    +from prowler.lib.check.models import Check, Check_Report_Azure
    +from prowler.providers.azure.services.defender.defender_client import defender_client
    +
    +
    +class defender_ensure_system_updates_are_applied(Check):
    +    def execute(self) -> Check_Report_Azure:
    +        findings = []
    +
    +        for (
    +            subscription_name,
    +            assessments,
    +        ) in defender_client.assessments.items():
    +            if (
    +                "Log Analytics agent should be installed on virtual machines"
    +                in assessments
    +                and "Machines should be configured to periodically check for missing system updates"
    +                in assessments
    +                and "System updates should be installed on your machines" in assessments
    +            ):
    +                report = Check_Report_Azure(self.metadata())
    +                report.status = "PASS"
    +                report.subscription = subscription_name
    +                report.resource_name = assessments[
    +                    "System updates should be installed on your machines"
    +                ].resource_name
    +                report.resource_id = assessments[
    +                    "System updates should be installed on your machines"
    +                ].resource_id
    +                report.status_extended = f"System updates are applied for all the VMs in the subscription {subscription_name}."
    +
    +                if (
    +                    assessments[
    +                        "Log Analytics agent should be installed on virtual machines"
    +                    ].status
    +                    == "Unhealthy"
    +                    or assessments[
    +                        "Machines should be configured to periodically check for missing system updates"
    +                    ].status
    +                    == "Unhealthy"
    +                    or assessments[
    +                        "System updates should be installed on your machines"
    +                    ].status
    +                    == "Unhealthy"
    +                ):
    +                    report.status = "FAIL"
    +                    report.status_extended = f"System updates are not applied for all the VMs in the subscription {subscription_name}."
    +
    +                findings.append(report)
    +
    +        return findings
    diff --git a/prowler/providers/azure/services/defender/defender_ensure_wdatp_is_enabled/__init__.py b/prowler/providers/azure/services/defender/defender_ensure_wdatp_is_enabled/__init__.py
    new file mode 100644
    index 00000000000..e69de29bb2d
    diff --git a/prowler/providers/azure/services/defender/defender_ensure_wdatp_is_enabled/defender_ensure_wdatp_is_enabled.metadata.json b/prowler/providers/azure/services/defender/defender_ensure_wdatp_is_enabled/defender_ensure_wdatp_is_enabled.metadata.json
    new file mode 100644
    index 00000000000..e1241c0933b
    --- /dev/null
    +++ b/prowler/providers/azure/services/defender/defender_ensure_wdatp_is_enabled/defender_ensure_wdatp_is_enabled.metadata.json
    @@ -0,0 +1,30 @@
    +{
    +  "Provider": "azure",
    +  "CheckID": "defender_ensure_wdatp_is_enabled",
    +  "CheckTitle": "Ensure that Microsoft Defender for Endpoint integration with Microsoft Defender for Cloud is selected",
    +  "CheckType": [],
    +  "ServiceName": "defender",
    +  "SubServiceName": "",
    +  "ResourceIdTemplate": "",
    +  "Severity": "medium",
    +  "ResourceType": "DefenderSettings",
    +  "Description": "This integration setting enables Microsoft Defender for Endpoint (formerly 'Advanced Threat Protection' or 'ATP' or 'WDATP' - see additional info) to communicate with Microsoft Defender for Cloud.",
    +  "Risk": "Microsoft Defender for Endpoint integration brings comprehensive Endpoint Detection and Response (EDR) capabilities within Microsoft Defender for Cloud. This integration helps to spot abnormalities, as well as detect and respond to advanced attacks on endpoints monitored by Microsoft Defender for Cloud. MDE works only with Standard Tier subscriptions.",
    +  "RelatedUrl": "https://learn.microsoft.com/en-in/azure/defender-for-cloud/integration-defender-for-endpoint?tabs=windows",
    +  "Remediation": {
    +    "Code": {
    +      "CLI": "",
    +      "NativeIaC": "",
    +      "Other": "https://www.trendmicro.com/cloudoneconformity/knowledge-base/azure/SecurityCenter/defender-endpoint-integration.html",
    +      "Terraform": ""
    +    },
    +    "Recommendation": {
    +      "Text": "",
    +      "Url": "https://learn.microsoft.com/en-us/microsoft-365/security/defender-endpoint/azure-server-integration?view=o365-worldwide"
    +    }
    +  },
    +  "Categories": [],
    +  "DependsOn": [],
    +  "RelatedTo": [],
    +  "Notes": "Microsoft Defender for Endpoint works with Standard pricing tier Subscription. Choosing the Standard pricing tier of Microsoft Defender for Cloud incurs an additional cost per resource."
    +}
    diff --git a/prowler/providers/azure/services/defender/defender_ensure_wdatp_is_enabled/defender_ensure_wdatp_is_enabled.py b/prowler/providers/azure/services/defender/defender_ensure_wdatp_is_enabled/defender_ensure_wdatp_is_enabled.py
    new file mode 100644
    index 00000000000..2a121211ed7
    --- /dev/null
    +++ b/prowler/providers/azure/services/defender/defender_ensure_wdatp_is_enabled/defender_ensure_wdatp_is_enabled.py
    @@ -0,0 +1,28 @@
    +from prowler.lib.check.models import Check, Check_Report_Azure
    +from prowler.providers.azure.services.defender.defender_client import defender_client
    +
    +
    +class defender_ensure_wdatp_is_enabled(Check):
    +    def execute(self) -> Check_Report_Azure:
    +        findings = []
    +
    +        for (
    +            subscription_name,
    +            settings,
    +        ) in defender_client.settings.items():
    +            report = Check_Report_Azure(self.metadata())
    +            report.status = "FAIL"
    +            report.subscription = subscription_name
    +            report.resource_name = "WDATP"
    +            report.resource_id = "WDATP"
    +            report.status_extended = f"Microsoft Defender for Endpoint integration not exists for subscription {subscription_name}."
    +            if "WDATP" in settings:
    +                report.status_extended = f"Microsoft Defender for Endpoint integration is disabeld for subscription {subscription_name}."
    +                report.resource_id = settings["WDATP"].resource_id
    +                if settings["WDATP"].enabled:
    +                    report.status = "PASS"
    +                    report.status_extended = f"Microsoft Defender for Endpoint integration is enabled for subscription {subscription_name}."
    +
    +            findings.append(report)
    +
    +        return findings
    diff --git a/prowler/providers/azure/services/defender/defender_service.py b/prowler/providers/azure/services/defender/defender_service.py
    index 0609ec599d8..deea4c50f4c 100644
    --- a/prowler/providers/azure/services/defender/defender_service.py
    +++ b/prowler/providers/azure/services/defender/defender_service.py
    @@ -1,5 +1,6 @@
     from datetime import timedelta
     
    +from azure.core.exceptions import HttpResponseError
     from azure.mgmt.security import SecurityCenter
     from pydantic import BaseModel
     
    @@ -13,18 +14,23 @@ def __init__(self, provider):
             super().__init__(SecurityCenter, provider)
     
             self.pricings = self.__get_pricings__()
    +        self.auto_provisioning_settings = self.__get_auto_provisioning_settings__()
    +        self.assessments = self.__get_assessments__()
    +        self.settings = self.__get_settings__()
    +        self.security_contacts = self.__get_security_contacts__()
    +        self.iot_security_solutions = self.__get_iot_security_solutions__()
     
         def __get_pricings__(self):
             logger.info("Defender - Getting pricings...")
             pricings = {}
    -        for subscription, client in self.clients.items():
    +        for subscription_name, client in self.clients.items():
                 try:
                     pricings_list = client.pricings.list()
    -                pricings.update({subscription: {}})
    +                pricings.update({subscription_name: {}})
                     for pricing in pricings_list.value:
    -                    pricings[subscription].update(
    +                    pricings[subscription_name].update(
                             {
    -                            pricing.name: Defender_Pricing(
    +                            pricing.name: Pricing(
                                     resource_id=pricing.id,
                                     pricing_tier=pricing.pricing_tier,
                                     free_trial_remaining_time=pricing.free_trial_remaining_time,
    @@ -32,14 +38,192 @@ def __get_pricings__(self):
                             }
                         )
                 except Exception as error:
    -                logger.error(f"Subscription name: {subscription}")
                     logger.error(
    -                    f"{error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}"
    +                    f"Subscription name: {subscription_name} -- {error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}"
                     )
             return pricings
     
    +    def __get_auto_provisioning_settings__(self):
    +        logger.info("Defender - Getting auto provisioning settings...")
    +        auto_provisioning = {}
    +        for subscription_name, client in self.clients.items():
    +            try:
    +                auto_provisioning_settings = client.auto_provisioning_settings.list()
    +                auto_provisioning.update({subscription_name: {}})
    +                for ap in auto_provisioning_settings:
    +                    auto_provisioning[subscription_name].update(
    +                        {
    +                            ap.name: AutoProvisioningSetting(
    +                                resource_id=ap.id,
    +                                resource_name=ap.name,
    +                                resource_type=ap.type,
    +                                auto_provision=ap.auto_provision,
    +                            )
    +                        }
    +                    )
    +            except Exception as error:
    +                logger.error(f"Subscription name: {subscription_name}")
    +                logger.error(
    +                    f"{error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}"
    +                )
    +        return auto_provisioning
    +
    +    def __get_assessments__(self):
    +        logger.info("Defender - Getting assessments...")
    +        assessments = {}
    +        for subscription_name, client in self.clients.items():
    +            try:
    +                assessments_list = client.assessments.list(
    +                    f"subscriptions/{self.subscriptions[subscription_name]}"
    +                )
    +                assessments.update({subscription_name: {}})
    +                for assessment in assessments_list:
    +                    assessments[subscription_name].update(
    +                        {
    +                            assessment.display_name: Assesment(
    +                                resource_id=assessment.id,
    +                                resource_name=assessment.name,
    +                                status=assessment.status.code,
    +                            )
    +                        }
    +                    )
    +            except Exception as error:
    +                logger.error(
    +                    f"Subscription name: {subscription_name} -- {error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}"
    +                )
    +        return assessments
    +
    +    def __get_settings__(self):
    +        logger.info("Defender - Getting settings...")
    +        settings = {}
    +        for subscription_name, client in self.clients.items():
    +            try:
    +                settings_list = client.settings.list()
    +                settings.update({subscription_name: {}})
    +                for setting in settings_list:
    +                    settings[subscription_name].update(
    +                        {
    +                            setting.name: Setting(
    +                                resource_id=setting.id,
    +                                resource_type=setting.type,
    +                                kind=setting.kind,
    +                                enabled=setting.enabled,
    +                            )
    +                        }
    +                    )
    +            except Exception as error:
    +                logger.error(
    +                    f"Subscription name: {subscription_name} -- {error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}"
    +                )
    +        return settings
    +
    +    def __get_security_contacts__(self):
    +        logger.info("Defender - Getting security contacts...")
    +        security_contacts = {}
    +        for subscription_name, client in self.clients.items():
    +            try:
    +                security_contacts.update({subscription_name: {}})
    +                # TODO: List all security contacts. For now, the list method is not working.
    +                security_contact_default = client.security_contacts.get("default")
    +                security_contacts[subscription_name].update(
    +                    {
    +                        security_contact_default.name: SecurityContacts(
    +                            resource_id=security_contact_default.id,
    +                            emails=security_contact_default.emails,
    +                            phone=security_contact_default.phone,
    +                            alert_notifications_minimal_severity=security_contact_default.alert_notifications.minimal_severity,
    +                            alert_notifications_state=security_contact_default.alert_notifications.state,
    +                            notified_roles=security_contact_default.notifications_by_role.roles,
    +                            notified_roles_state=security_contact_default.notifications_by_role.state,
    +                        )
    +                    }
    +                )
    +            except HttpResponseError as error:
    +                if error.status_code == 404:
    +                    security_contacts[subscription_name].update(
    +                        {
    +                            "default": SecurityContacts(
    +                                resource_id=f"/subscriptions/{self.subscriptions[subscription_name]}/providers/Microsoft.Security/securityContacts/default",
    +                                emails="",
    +                                phone="",
    +                                alert_notifications_minimal_severity="",
    +                                alert_notifications_state="",
    +                                notified_roles=[""],
    +                                notified_roles_state="",
    +                            )
    +                        }
    +                    )
    +                else:
    +                    logger.error(
    +                        f"Subscription name: {subscription_name} -- {error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}"
    +                    )
    +            except Exception as error:
    +                logger.error(
    +                    f"Subscription name: {subscription_name} -- {error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}"
    +                )
    +        return security_contacts
    +
    +    def __get_iot_security_solutions__(self):
    +        logger.info("Defender - Getting IoT Security Solutions...")
    +        iot_security_solutions = {}
    +        for subscription_name, client in self.clients.items():
    +            try:
    +                iot_security_solutions_list = (
    +                    client.iot_security_solution.list_by_subscription()
    +                )
    +                iot_security_solutions.update({subscription_name: {}})
    +                for iot_security_solution in iot_security_solutions_list:
    +                    iot_security_solutions[subscription_name].update(
    +                        {
    +                            iot_security_solution.name: IoTSecuritySolution(
    +                                resource_id=iot_security_solution.id,
    +                                status=iot_security_solution.status,
    +                            )
    +                        }
    +                    )
    +            except Exception as error:
    +                logger.error(
    +                    f"Subscription name: {subscription_name} -- {error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}"
    +                )
    +        return iot_security_solutions
     
    -class Defender_Pricing(BaseModel):
    +
    +class Pricing(BaseModel):
         resource_id: str
         pricing_tier: str
         free_trial_remaining_time: timedelta
    +
    +
    +class AutoProvisioningSetting(BaseModel):
    +    resource_id: str
    +    resource_name: str
    +    resource_type: str
    +    auto_provision: str
    +
    +
    +class Assesment(BaseModel):
    +    resource_id: str
    +    resource_name: str
    +    status: str
    +
    +
    +class Setting(BaseModel):
    +    resource_id: str
    +    resource_type: str
    +    kind: str
    +    enabled: bool
    +
    +
    +class SecurityContacts(BaseModel):
    +    resource_id: str
    +    emails: str
    +    phone: str
    +    alert_notifications_minimal_severity: str
    +    alert_notifications_state: str
    +    notified_roles: list[str]
    +    notified_roles_state: str
    +
    +
    +class IoTSecuritySolution(BaseModel):
    +    resource_id: str
    +    status: str
    diff --git a/prowler/providers/azure/services/iam/iam_custom_role_has_permissions_to_administer_resource_locks/__init__.py b/prowler/providers/azure/services/iam/iam_custom_role_has_permissions_to_administer_resource_locks/__init__.py
    new file mode 100644
    index 00000000000..e69de29bb2d
    diff --git a/prowler/providers/azure/services/iam/iam_custom_role_has_permissions_to_administer_resource_locks/iam_custom_role_has_permissions_to_administer_resource_locks.metadata.json b/prowler/providers/azure/services/iam/iam_custom_role_has_permissions_to_administer_resource_locks/iam_custom_role_has_permissions_to_administer_resource_locks.metadata.json
    new file mode 100644
    index 00000000000..ba0b057d84b
    --- /dev/null
    +++ b/prowler/providers/azure/services/iam/iam_custom_role_has_permissions_to_administer_resource_locks/iam_custom_role_has_permissions_to_administer_resource_locks.metadata.json
    @@ -0,0 +1,30 @@
    +{
    +  "Provider": "azure",
    +  "CheckID": "iam_custom_role_has_permissions_to_administer_resource_locks",
    +  "CheckTitle": "Ensure an IAM custom role has permissions to administer resource locks",
    +  "CheckType": [],
    +  "ServiceName": "iam",
    +  "SubServiceName": "",
    +  "ResourceIdTemplate": "",
    +  "Severity": "high",
    +  "ResourceType": "AzureRole",
    +  "Description": "Ensure a Custom Role is Assigned Permissions for Administering Resource Locks",
    +  "Risk": "In Azure, resource locks are a way to prevent accidental deletion or modification of critical resources. These locks can be set at the resource group level or the individual resource level. Resource locks administration is a critical task that should be preformed from a custom role with the appropriate permissions. This ensures that only authorized users can administer resource locks.",
    +  "RelatedUrl": "https://learn.microsoft.com/en-us/azure/azure-resource-manager/management/lock-resources?tabs=json",
    +  "Remediation": {
    +    "Code": {
    +      "CLI": "https://www.trendmicro.com/cloudoneconformity-staging/knowledge-base/azure/AccessControl/resource-lock-custom-role.html",
    +      "NativeIaC": "",
    +      "Other": "",
    +      "Terraform": ""
    +    },
    +    "Recommendation": {
    +      "Text": "Resouce locks are needed to prevent accidental deletion or modification of critical Azure resources. The administration of resource locks should be performed from a custom role with the appropriate permissions.",
    +      "Url": "https://www.trendmicro.com/cloudoneconformity-staging/knowledge-base/azure/AccessControl/resource-lock-custom-role.html"
    +    }
    +  },
    +  "Categories": [],
    +  "DependsOn": [],
    +  "RelatedTo": [],
    +  "Notes": ""
    +}
    diff --git a/prowler/providers/azure/services/iam/iam_custom_role_has_permissions_to_administer_resource_locks/iam_custom_role_has_permissions_to_administer_resource_locks.py b/prowler/providers/azure/services/iam/iam_custom_role_has_permissions_to_administer_resource_locks/iam_custom_role_has_permissions_to_administer_resource_locks.py
    new file mode 100644
    index 00000000000..a903d7c3967
    --- /dev/null
    +++ b/prowler/providers/azure/services/iam/iam_custom_role_has_permissions_to_administer_resource_locks/iam_custom_role_has_permissions_to_administer_resource_locks.py
    @@ -0,0 +1,33 @@
    +from re import search
    +
    +from prowler.lib.check.models import Check, Check_Report_Azure
    +from prowler.providers.azure.services.iam.iam_client import iam_client
    +
    +
    +class iam_custom_role_has_permissions_to_administer_resource_locks(Check):
    +    def execute(self) -> Check_Report_Azure:
    +        findings = []
    +        for subscription, roles in iam_client.custom_roles.items():
    +            for role in roles:
    +                report = Check_Report_Azure(self.metadata())
    +                report.subscription = subscription
    +                report.resource_id = role.id
    +                report.resource_name = role.name
    +                has_lock_permission = False
    +                for permission_item in role.permissions:
    +                    if has_lock_permission:
    +                        break
    +                    for action in permission_item.actions:
    +                        if has_lock_permission:
    +                            break
    +                        if search("^Microsoft.Authorization/locks/.*", action):
    +                            report.status = "PASS"
    +                            report.status_extended = f"Role {role.name} from subscription {subscription} has permission to administer resource locks."
    +                            has_lock_permission = True
    +                            break
    +                        else:
    +                            report.status = "FAIL"
    +                            report.status_extended = f"Role {role.name} from subscription {subscription} has no permission to administer resource locks."
    +                            break
    +                findings.append(report)
    +        return findings
    diff --git a/prowler/providers/azure/services/iam/iam_service.py b/prowler/providers/azure/services/iam/iam_service.py
    index abae5e99704..1c6cfc54e89 100644
    --- a/prowler/providers/azure/services/iam/iam_service.py
    +++ b/prowler/providers/azure/services/iam/iam_service.py
    @@ -11,33 +11,46 @@
     class IAM(AzureService):
         def __init__(self, provider):
             super().__init__(AuthorizationManagementClient, provider)
    -        self.roles = self.__get_roles__()
    +        self.roles, self.custom_roles = self.__get_roles__()
     
         def __get_roles__(self):
             logger.info("IAM - Getting roles...")
    -        roles = {}
    +        builtin_roles = {}
    +        custom_roles = {}
             for subscription, client in self.clients.items():
                 try:
    -                roles.update({subscription: []})
    -                for role in client.role_definitions.list(
    +                builtin_roles.update({subscription: []})
    +                custom_roles.update({subscription: []})
    +                all_roles = client.role_definitions.list(
                         scope=f"/subscriptions/{self.subscriptions[subscription]}",
    -                    filter="type eq 'CustomRole'",
    -                ):
    -                    roles[subscription].append(
    -                        Role(
    -                            id=role.id,
    -                            name=role.role_name,
    -                            type=role.role_type,
    -                            assignable_scopes=role.assignable_scopes,
    -                            permissions=role.permissions,
    +                )
    +                for role in all_roles:
    +                    if role.role_type == "CustomRole":
    +                        custom_roles[subscription].append(
    +                            Role(
    +                                id=role.id,
    +                                name=role.role_name,
    +                                type=role.role_type,
    +                                assignable_scopes=role.assignable_scopes,
    +                                permissions=role.permissions,
    +                            )
    +                        )
    +                    else:
    +                        builtin_roles[subscription].append(
    +                            Role(
    +                                id=role.id,
    +                                name=role.role_name,
    +                                type=role.role_type,
    +                                assignable_scopes=role.assignable_scopes,
    +                                permissions=role.permissions,
    +                            )
                             )
    -                    )
                 except Exception as error:
                     logger.error(f"Subscription name: {subscription}")
                     logger.error(
                         f"{error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}"
                     )
    -        return roles
    +        return builtin_roles, custom_roles
     
     
     @dataclass
    @@ -47,10 +60,3 @@ class Role:
         type: str
         assignable_scopes: list[str]
         permissions: list[Permission]
    -
    -    def __init__(self, id, name, type, assignable_scopes, permissions):
    -        self.id = id
    -        self.name = name
    -        self.type = type
    -        self.assignable_scopes = assignable_scopes
    -        self.permissions = permissions
    diff --git a/prowler/providers/azure/services/iam/iam_subscription_roles_owner_custom_not_created/iam_subscription_roles_owner_custom_not_created.metadata.json b/prowler/providers/azure/services/iam/iam_subscription_roles_owner_custom_not_created/iam_subscription_roles_owner_custom_not_created.metadata.json
    index 0f2aa1d17ba..d1b25286e9c 100644
    --- a/prowler/providers/azure/services/iam/iam_subscription_roles_owner_custom_not_created/iam_subscription_roles_owner_custom_not_created.metadata.json
    +++ b/prowler/providers/azure/services/iam/iam_subscription_roles_owner_custom_not_created/iam_subscription_roles_owner_custom_not_created.metadata.json
    @@ -10,17 +10,17 @@
       "ResourceType": "AzureRole",
       "Description": "Ensure that no custom subscription owner roles are created",
       "Risk": "Subscription ownership should not include permission to create custom owner roles. The principle of least privilege should be followed and only necessary privileges should be assigned instead of allowing full administrative access.",
    -  "RelatedUrl": "",
    +  "RelatedUrl": "https://learn.microsoft.com/en-us/azure/role-based-access-control/custom-roles",
       "Remediation": {
         "Code": {
    -      "CLI": "",
    +      "CLI": "https://www.trendmicro.com/cloudoneconformity-staging/knowledge-base/azure/AccessControl/remove-custom-owner-roles.html",
           "NativeIaC": "",
           "Other": "",
           "Terraform": ""
         },
         "Recommendation": {
    -      "Text": "Subscriptions will need to be handled by Administrators with permissions.",
    -      "Url": ""
    +      "Text": "Custom subscription owner roles should not be created. This is because the principle of least privilege should be followed and only necessary privileges should be assigned instead of allowing full administrative access",
    +      "Url": "https://www.trendmicro.com/cloudoneconformity-staging/knowledge-base/azure/AccessControl/remove-custom-owner-roles.html"
         }
       },
       "Categories": [],
    diff --git a/prowler/providers/azure/services/iam/iam_subscription_roles_owner_custom_not_created/iam_subscription_roles_owner_custom_not_created.py b/prowler/providers/azure/services/iam/iam_subscription_roles_owner_custom_not_created/iam_subscription_roles_owner_custom_not_created.py
    index 07fae3276f5..85bea3b4922 100644
    --- a/prowler/providers/azure/services/iam/iam_subscription_roles_owner_custom_not_created/iam_subscription_roles_owner_custom_not_created.py
    +++ b/prowler/providers/azure/services/iam/iam_subscription_roles_owner_custom_not_created/iam_subscription_roles_owner_custom_not_created.py
    @@ -7,7 +7,7 @@
     class iam_subscription_roles_owner_custom_not_created(Check):
         def execute(self) -> Check_Report_Azure:
             findings = []
    -        for subscription, roles in iam_client.roles.items():
    +        for subscription, roles in iam_client.custom_roles.items():
                 for role in roles:
                     report = Check_Report_Azure(self.metadata())
                     report.subscription = subscription
    diff --git a/prowler/providers/azure/services/keyvault/__init__.py b/prowler/providers/azure/services/keyvault/__init__.py
    new file mode 100644
    index 00000000000..e69de29bb2d
    diff --git a/prowler/providers/azure/services/keyvault/keyvault_client.py b/prowler/providers/azure/services/keyvault/keyvault_client.py
    new file mode 100644
    index 00000000000..ecb0af426d7
    --- /dev/null
    +++ b/prowler/providers/azure/services/keyvault/keyvault_client.py
    @@ -0,0 +1,4 @@
    +from prowler.providers.azure.lib.audit_info.audit_info import azure_audit_info
    +from prowler.providers.azure.services.keyvault.keyvault_service import KeyVault
    +
    +keyvault_client = KeyVault(azure_audit_info)
    diff --git a/prowler/providers/azure/services/keyvault/keyvault_key_expiration_set_in_non_rbac/__init__.py b/prowler/providers/azure/services/keyvault/keyvault_key_expiration_set_in_non_rbac/__init__.py
    new file mode 100644
    index 00000000000..e69de29bb2d
    diff --git a/prowler/providers/azure/services/keyvault/keyvault_key_expiration_set_in_non_rbac/keyvault_key_expiration_set_in_non_rbac.metadata.json b/prowler/providers/azure/services/keyvault/keyvault_key_expiration_set_in_non_rbac/keyvault_key_expiration_set_in_non_rbac.metadata.json
    new file mode 100644
    index 00000000000..55857ab4be4
    --- /dev/null
    +++ b/prowler/providers/azure/services/keyvault/keyvault_key_expiration_set_in_non_rbac/keyvault_key_expiration_set_in_non_rbac.metadata.json
    @@ -0,0 +1,30 @@
    +{
    +  "Provider": "azure",
    +  "CheckID": "keyvault_key_expiration_set_in_non_rbac",
    +  "CheckTitle": "Ensure that the Expiration Date is set for all Keys in Non-RBAC Key Vaults.",
    +  "CheckType": [],
    +  "ServiceName": "keyvault",
    +  "SubServiceName": "",
    +  "ResourceIdTemplate": "",
    +  "Severity": "high",
    +  "ResourceType": "KeyVault",
    +  "Description": "Ensure that all Keys in Non Role Based Access Control (RBAC) Azure Key Vaults have an expiration date set.",
    +  "Risk": "Azure Key Vault enables users to store and use cryptographic keys within the Microsoft Azure environment. The exp (expiration date) attribute identifies the expiration date on or after which the key MUST NOT be used for a cryptographic operation. By default, keys never expire. It is thus recommended that keys be rotated in the key vault and set an explicit expiration date for all keys. This ensures that the keys cannot be used beyond their assigned lifetimes.",
    +  "RelatedUrl": "https://docs.microsoft.com/en-us/azure/key-vault/key-vault-whatis",
    +  "Remediation": {
    +    "Code": {
    +      "CLI": "az keyvault key set-attributes --name  --vault-name  --expires Y-m-d'T'H:M:S'Z'",
    +      "NativeIaC": "",
    +      "Other": "https://www.trendmicro.com/cloudoneconformity/knowledge-base/azure/KeyVault/key-expiration-check.html#",
    +      "Terraform": "https://docs.bridgecrew.io/docs/set-an-expiration-date-on-all-keys#terraform"
    +    },
    +    "Recommendation": {
    +      "Text": "From Azure Portal: 1. Go to Key vaults. 2. For each Key vault, click on Keys. 3. In the main pane, ensure that an appropriate Expiration date is set for any keys that are Enabled. From Azure CLI: Update the Expiration date for the key using the below command: az keyvault key set-attributes --name  --vault-name  -- expires Y-m-d'T'H:M:S'Z' Note: To view the expiration date on all keys in a Key Vault using Microsoft API, the 'List' Key permission is required. To update the expiration date for the keys: 1. Go to the Key vault, click on Access Control (IAM). 2. Click on Add role assignment and assign the role of Key Vault Crypto Officer to the appropriate user. From PowerShell: Set-AzKeyVaultKeyAttribute -VaultName  -Name  -Expires ",
    +      "Url": "https://docs.microsoft.com/en-us/rest/api/keyvault/about-keys--secrets-and-certificates#key-vault-keys"
    +    }
    +  },
    +  "Categories": [],
    +  "DependsOn": [],
    +  "RelatedTo": [],
    +  "Notes": "Keys cannot be used beyond their assigned expiration dates respectively. Keys need to be rotated periodically wherever they are used."
    +}
    diff --git a/prowler/providers/azure/services/keyvault/keyvault_key_expiration_set_in_non_rbac/keyvault_key_expiration_set_in_non_rbac.py b/prowler/providers/azure/services/keyvault/keyvault_key_expiration_set_in_non_rbac/keyvault_key_expiration_set_in_non_rbac.py
    new file mode 100644
    index 00000000000..b69ee56b15f
    --- /dev/null
    +++ b/prowler/providers/azure/services/keyvault/keyvault_key_expiration_set_in_non_rbac/keyvault_key_expiration_set_in_non_rbac.py
    @@ -0,0 +1,30 @@
    +from prowler.lib.check.models import Check, Check_Report_Azure
    +from prowler.providers.azure.services.keyvault.keyvault_client import keyvault_client
    +
    +
    +class keyvault_key_expiration_set_in_non_rbac(Check):
    +    def execute(self) -> Check_Report_Azure:
    +        findings = []
    +        for subscription, key_vaults in keyvault_client.key_vaults.items():
    +            for keyvault in key_vaults:
    +                if not keyvault.properties.enable_rbac_authorization and keyvault.keys:
    +                    report = Check_Report_Azure(self.metadata())
    +                    report.subscription = subscription
    +                    report.resource_name = keyvault.name
    +                    report.resource_id = keyvault.id
    +                    report.status = "PASS"
    +                    report.status_extended = f"Keyvault {keyvault.name} from subscription {subscription} has all the keys with expiration date set."
    +                    has_key_without_expiration = False
    +                    for key in keyvault.keys:
    +                        if (
    +                            key.attributes
    +                            and not key.attributes.expires
    +                            and key.enabled
    +                        ):
    +                            report.status = "FAIL"
    +                            report.status_extended = f"Keyvault {keyvault.name} from subscription {subscription} has the key {key.name} without expiration date set."
    +                            has_key_without_expiration = True
    +                            findings.append(report)
    +                    if not has_key_without_expiration:
    +                        findings.append(report)
    +        return findings
    diff --git a/prowler/providers/azure/services/keyvault/keyvault_key_rotation_enabled/keyvault_key_rotation_enabled.metadata.json b/prowler/providers/azure/services/keyvault/keyvault_key_rotation_enabled/keyvault_key_rotation_enabled.metadata.json
    new file mode 100644
    index 00000000000..a7aacb5526c
    --- /dev/null
    +++ b/prowler/providers/azure/services/keyvault/keyvault_key_rotation_enabled/keyvault_key_rotation_enabled.metadata.json
    @@ -0,0 +1,30 @@
    +{
    +  "Provider": "azure",
    +  "CheckID": "keyvault_key_rotation_enabled",
    +  "CheckTitle": "Ensure Automatic Key Rotation is Enabled Within Azure Key Vault for the Supported Services",
    +  "CheckType": [],
    +  "ServiceName": "keyvault",
    +  "SubServiceName": "",
    +  "ResourceIdTemplate": "",
    +  "Severity": "high",
    +  "ResourceType": "KeyVault",
    +  "Description": "Automatic Key Rotation is available in Public Preview. The currently supported applications are Key Vault, Managed Disks, and Storage accounts accessing keys within Key Vault. The number of supported applications will incrementally increased.",
    +  "Risk": "Once set up, Automatic Private Key Rotation removes the need for manual administration when keys expire at intervals determined by your organization's policy. The recommended key lifetime is 2 years. Your organization should determine its own key expiration policy.",
    +  "RelatedUrl": "https://docs.microsoft.com/en-us/azure/key-vault/keys/how-to-configure-key-rotation",
    +  "Remediation": {
    +    "Code": {
    +      "CLI": "",
    +      "NativeIaC": "",
    +      "Other": "",
    +      "Terraform": ""
    +    },
    +    "Recommendation": {
    +      "Text": "Note: Azure CLI and Powershell use ISO8601 flags to input timespans. Every timespan input will be in the format P(Y,M,D). The leading P is required with it denoting period. The (Y,M,D) are for the duration of Year, Month,and Day respectively. A time frame of 2 years, 2 months, 2 days would be (P2Y2M2D). From Azure Portal 1. From Azure Portal select the Portal Menu in the top left. 2. Select Key Vaults. 3. Select a Key Vault to audit. 4. Under Objects select Keys. 5. Select a key to audit. 6. In the top row select Rotation policy. 7. Select an Expiry time. 8. Set Enable auto rotation to Enabled. 9. Set an appropriate Rotation option and Rotation time. 10. Optionally set the Notification time. 11. Select Save. 12. Repeat steps 3-11 for each Key Vault and Key. From PowerShell Run the following command for each key to update its policy: Set-AzKeyVaultKeyRotationPolicy -VaultName test-kv -Name test-key -PolicyPath rotation_policy.json",
    +      "Url": "https://docs.microsoft.com/en-us/azure/storage/common/customer-managed-keys-overview#update-the-key-version"
    +    }
    +  },
    +  "Categories": [],
    +  "DependsOn": [],
    +  "RelatedTo": [],
    +  "Notes": "There are an additional costs per operation in running the needed applications."
    +}
    diff --git a/prowler/providers/azure/services/keyvault/keyvault_key_rotation_enabled/keyvault_key_rotation_enabled.py b/prowler/providers/azure/services/keyvault/keyvault_key_rotation_enabled/keyvault_key_rotation_enabled.py
    new file mode 100644
    index 00000000000..e98dc198714
    --- /dev/null
    +++ b/prowler/providers/azure/services/keyvault/keyvault_key_rotation_enabled/keyvault_key_rotation_enabled.py
    @@ -0,0 +1,29 @@
    +from prowler.lib.check.models import Check, Check_Report_Azure
    +from prowler.providers.azure.services.keyvault.keyvault_client import keyvault_client
    +
    +
    +class keyvault_key_rotation_enabled(Check):
    +    def execute(self) -> Check_Report_Azure:
    +        findings = []
    +        for subscription, key_vaults in keyvault_client.key_vaults.items():
    +            for keyvault in key_vaults:
    +                if keyvault.keys:
    +                    report = Check_Report_Azure(self.metadata())
    +                    report.subscription = subscription
    +                    report.resource_name = keyvault.name
    +                    report.resource_id = keyvault.id
    +                    for key in keyvault.keys:
    +                        if (
    +                            key.rotation_policy
    +                            and key.rotation_policy.lifetime_actions
    +                            and key.rotation_policy.lifetime_actions[0].action
    +                            == "Rotate"
    +                        ):
    +                            report.status = "PASS"
    +                            report.status_extended = f"Keyvault {keyvault.name} from subscription {subscription} has the key {key.name} with rotation policy set."
    +                        else:
    +                            report.status = "FAIL"
    +                            report.status_extended = f"Keyvault {keyvault.name} from subscription {subscription} has the key {key.name} without rotation policy set."
    +
    +                        findings.append(report)
    +        return findings
    diff --git a/prowler/providers/azure/services/keyvault/keyvault_non_rbac_secret_expiration_set/__init__.py b/prowler/providers/azure/services/keyvault/keyvault_non_rbac_secret_expiration_set/__init__.py
    new file mode 100644
    index 00000000000..e69de29bb2d
    diff --git a/prowler/providers/azure/services/keyvault/keyvault_non_rbac_secret_expiration_set/keyvault_non_rbac_secret_expiration_set.metadata.json b/prowler/providers/azure/services/keyvault/keyvault_non_rbac_secret_expiration_set/keyvault_non_rbac_secret_expiration_set.metadata.json
    new file mode 100644
    index 00000000000..828d5fd27b1
    --- /dev/null
    +++ b/prowler/providers/azure/services/keyvault/keyvault_non_rbac_secret_expiration_set/keyvault_non_rbac_secret_expiration_set.metadata.json
    @@ -0,0 +1,30 @@
    +{
    +  "Provider": "azure",
    +  "CheckID": "keyvault_non_rbac_secret_expiration_set",
    +  "CheckTitle": "Ensure that the Expiration Date is set for all Secrets in Non-RBAC Key Vaults",
    +  "CheckType": [],
    +  "ServiceName": "keyvault",
    +  "SubServiceName": "",
    +  "ResourceIdTemplate": "",
    +  "Severity": "high",
    +  "ResourceType": "KeyVault",
    +  "Description": "Ensure that all Secrets in Non Role Based Access Control (RBAC) Azure Key Vaults have an expiration date set.",
    +  "Risk": "The Azure Key Vault enables users to store and keep secrets within the Microsoft Azure environment. Secrets in the Azure Key Vault are octet sequences with a maximum size of 25k bytes each. The exp (expiration date) attribute identifies the expiration date on or after which the secret MUST NOT be used. By default, secrets never expire. It is thus recommended to rotate secrets in the key vault and set an explicit expiration date for all secrets. This ensures that the secrets cannot be used beyond their assigned lifetimes.",
    +  "RelatedUrl": "https://docs.microsoft.com/en-us/azure/key-vault/key-vault-whatis",
    +  "Remediation": {
    +    "Code": {
    +      "CLI": "az keyvault secret set-attributes --name  --vault-name  --expires Y-m-d'T'H:M:S'Z'",
    +      "NativeIaC": "",
    +      "Other": "",
    +      "Terraform": "https://docs.bridgecrew.io/docs/set-an-expiration-date-on-all-secrets#terraform"
    +    },
    +    "Recommendation": {
    +      "Text": "From Azure Portal: 1. Go to Key vaults. 2. For each Key vault, click on Secrets. 3. In the main pane, ensure that the status of the secret is Enabled. 4. Set an appropriate Expiration date on all secrets. From Azure CLI: Update the Expiration date for the secret using the below command: az keyvault secret set-attributes --name  --vault-name  --expires Y-m-d'T'H:M:S'Z' Note: To view the expiration date on all secrets in a Key Vault using Microsoft API, the List Key permission is required. To update the expiration date for the secrets: 1. Go to Key vault, click on Access policies. 2. Click on Create and add an access policy with the Update permission (in the Secret Permissions - Secret Management Operations section). From PowerShell: For each Key vault with the EnableRbacAuthorization setting set to False or empty, run the following command. Set-AzKeyVaultSecret -VaultName  -Name  -Expires ",
    +      "Url": "https://docs.microsoft.com/en-us/rest/api/keyvault/about-keys--secrets-and-certificates#key-vault-secrets"
    +    }
    +  },
    +  "Categories": [],
    +  "DependsOn": [],
    +  "RelatedTo": [],
    +  "Notes": "Secrets cannot be used beyond their assigned expiry date respectively. Secrets need to be rotated periodically wherever they are used."
    +}
    diff --git a/prowler/providers/azure/services/keyvault/keyvault_non_rbac_secret_expiration_set/keyvault_non_rbac_secret_expiration_set.py b/prowler/providers/azure/services/keyvault/keyvault_non_rbac_secret_expiration_set/keyvault_non_rbac_secret_expiration_set.py
    new file mode 100644
    index 00000000000..18606afdfe0
    --- /dev/null
    +++ b/prowler/providers/azure/services/keyvault/keyvault_non_rbac_secret_expiration_set/keyvault_non_rbac_secret_expiration_set.py
    @@ -0,0 +1,33 @@
    +from prowler.lib.check.models import Check, Check_Report_Azure
    +from prowler.providers.azure.services.keyvault.keyvault_client import keyvault_client
    +
    +
    +class keyvault_non_rbac_secret_expiration_set(Check):
    +    def execute(self) -> Check_Report_Azure:
    +        findings = []
    +        for subscription, key_vaults in keyvault_client.key_vaults.items():
    +            for keyvault in key_vaults:
    +                if (
    +                    not keyvault.properties.enable_rbac_authorization
    +                    and keyvault.secrets
    +                ):
    +                    report = Check_Report_Azure(self.metadata())
    +                    report.subscription = subscription
    +                    report.resource_name = keyvault.name
    +                    report.resource_id = keyvault.id
    +                    report.status = "PASS"
    +                    report.status_extended = f"Keyvault {keyvault.name} from subscription {subscription} has all the secrets with expiration date set."
    +                    has_secret_without_expiration = False
    +                    for secret in keyvault.secrets:
    +                        if (
    +                            secret.attributes
    +                            and not secret.attributes.expires
    +                            and secret.enabled
    +                        ):
    +                            report.status = "FAIL"
    +                            report.status_extended = f"Keyvault {keyvault.name} from subscription {subscription} has the secret {secret.name} without expiration date set."
    +                            has_secret_without_expiration = True
    +                            findings.append(report)
    +                    if not has_secret_without_expiration:
    +                        findings.append(report)
    +        return findings
    diff --git a/prowler/providers/azure/services/keyvault/keyvault_private_endpoints/__init__.py b/prowler/providers/azure/services/keyvault/keyvault_private_endpoints/__init__.py
    new file mode 100644
    index 00000000000..e69de29bb2d
    diff --git a/prowler/providers/azure/services/keyvault/keyvault_private_endpoints/keyvault_private_endpoints.metadata.json b/prowler/providers/azure/services/keyvault/keyvault_private_endpoints/keyvault_private_endpoints.metadata.json
    new file mode 100644
    index 00000000000..aeda78de280
    --- /dev/null
    +++ b/prowler/providers/azure/services/keyvault/keyvault_private_endpoints/keyvault_private_endpoints.metadata.json
    @@ -0,0 +1,30 @@
    +{
    +  "Provider": "azure",
    +  "CheckID": "keyvault_private_endpoints",
    +  "CheckTitle": "Ensure that Private Endpoints are Used for Azure Key Vault",
    +  "CheckType": [],
    +  "ServiceName": "keyvault",
    +  "SubServiceName": "",
    +  "ResourceIdTemplate": "",
    +  "Severity": "high",
    +  "ResourceType": "KeyVault",
    +  "Description": "Private endpoints will secure network traffic from Azure Key Vault to the resources requesting secrets and keys.",
    +  "Risk": "Private endpoints will keep network requests to Azure Key Vault limited to the endpoints attached to the resources that are whitelisted to communicate with each other. Assigning the Key Vault to a network without an endpoint will allow other resources on that network to view all traffic from the Key Vault to its destination. In spite of the complexity in configuration, this is recommended for high security secrets.",
    +  "RelatedUrl": "https://docs.microsoft.com/en-us/azure/private-link/private-endpoint-overview",
    +  "Remediation": {
    +    "Code": {
    +      "CLI": "",
    +      "NativeIaC": "",
    +      "Other": "",
    +      "Terraform": ""
    +    },
    +    "Recommendation": {
    +      "Text": "Please see the additional information about the requirements needed before starting this remediation procedure. From Azure Portal 1. From Azure Home open the Portal Menu in the top left. 2. Select Key Vaults. 3. Select a Key Vault to audit. 4. Select Networking in the left column. 5. Select Private endpoint connections from the top row. 6. Select + Create. 7. Select the subscription the Key Vault is within, and other desired configuration. 8. Select Next. 9. For resource type select Microsoft.KeyVault/vaults. 10. Select the Key Vault to associate the Private Endpoint with. 11. Select Next. 12. In the Virtual Networking field, select the network to assign the Endpoint. 13. Select other configuration options as desired, including an existing or new application security group. 14. Select Next. 15. Select the private DNS the Private Endpoints will use. 16. Select Next. 17. Optionally add Tags. 18. Select Next : Review + Create. 19. Review the information and select Create. Follow the Audit Procedure to determine if it has successfully applied. 20. Repeat steps 3-19 for each Key Vault. From Azure CLI 1. To create an endpoint, run the following command: az network private-endpoint create --resource-group  --subnet  --name  -- private-connection-resource-id '/subscriptions//resourceGroups//providers/Microsoft.KeyVault/vaults/' --group-ids vault --connection-name  -- location  --manual-request 2. To manually approve the endpoint request, run the following command: az keyvault private-endpoint-connection approve --resource-group  --vault-name  –name  4. Determine the Private Endpoint's IP address to connect the Key Vault to the Private DNS you have previously created: 5. Look for the property networkInterfaces then id; the value must be placed in the variable  within step 7. az network private-endpoint show -g  -n  6. Look for the property networkInterfaces then id; the value must be placed on  in step 7. az network nic show --ids  7. Create a Private DNS record within the DNS Zone you created for the Private Endpoint: az network private-dns record-set a add-record -g  -z 'privatelink.vaultcore.azure.net' -n  -a  8. nslookup the private endpoint to determine if the DNS record is correct: nslookup .vault.azure.net nslookup .privatelink.vaultcore.azure.n",
    +      "Url": "https://docs.microsoft.com/en-us/azure/storage/common/storage-private-endpoints"
    +    }
    +  },
    +  "Categories": [],
    +  "DependsOn": [],
    +  "RelatedTo": [],
    +  "Notes": "Incorrect or poorly-timed changing of network configuration could result in service interruption. There are also additional costs tiers for running a private endpoint perpetabyte or more of networking traffic."
    +}
    diff --git a/prowler/providers/azure/services/keyvault/keyvault_private_endpoints/keyvault_private_endpoints.py b/prowler/providers/azure/services/keyvault/keyvault_private_endpoints/keyvault_private_endpoints.py
    new file mode 100644
    index 00000000000..febf3cf4bf1
    --- /dev/null
    +++ b/prowler/providers/azure/services/keyvault/keyvault_private_endpoints/keyvault_private_endpoints.py
    @@ -0,0 +1,23 @@
    +from prowler.lib.check.models import Check, Check_Report_Azure
    +from prowler.providers.azure.services.keyvault.keyvault_client import keyvault_client
    +
    +
    +class keyvault_private_endpoints(Check):
    +    def execute(self) -> Check_Report_Azure:
    +        findings = []
    +        for subscription, key_vaults in keyvault_client.key_vaults.items():
    +            for keyvault in key_vaults:
    +                report = Check_Report_Azure(self.metadata())
    +                report.subscription = subscription
    +                report.resource_name = keyvault.name
    +                report.resource_id = keyvault.id
    +                report.status = "FAIL"
    +                report.status_extended = f"Keyvault {keyvault.name} from subscription {subscription} is not using private endpoints."
    +                if (
    +                    keyvault.properties
    +                    and keyvault.properties.private_endpoint_connections
    +                ):
    +                    report.status = "PASS"
    +                    report.status_extended = f"Keyvault {keyvault.name} from subscription {subscription} is using private endpoints."
    +                findings.append(report)
    +        return findings
    diff --git a/prowler/providers/azure/services/keyvault/keyvault_rbac_enabled/__init__.py b/prowler/providers/azure/services/keyvault/keyvault_rbac_enabled/__init__.py
    new file mode 100644
    index 00000000000..e69de29bb2d
    diff --git a/prowler/providers/azure/services/keyvault/keyvault_rbac_enabled/keyvault_rbac_enabled.metadata.json b/prowler/providers/azure/services/keyvault/keyvault_rbac_enabled/keyvault_rbac_enabled.metadata.json
    new file mode 100644
    index 00000000000..bc9b171ad07
    --- /dev/null
    +++ b/prowler/providers/azure/services/keyvault/keyvault_rbac_enabled/keyvault_rbac_enabled.metadata.json
    @@ -0,0 +1,30 @@
    +{
    +  "Provider": "azure",
    +  "CheckID": "keyvault_rbac_enabled",
    +  "CheckTitle": "Enable Role Based Access Control for Azure Key Vault",
    +  "CheckType": [],
    +  "ServiceName": "keyvault",
    +  "SubServiceName": "",
    +  "ResourceIdTemplate": "",
    +  "Severity": "high",
    +  "ResourceType": "KeyVault",
    +  "Description": "WARNING: Role assignments disappear when a Key Vault has been deleted (soft-delete) and recovered. Afterwards it will be required to recreate all role assignments. This is a limitation of the soft-delete feature across all Azure services.",
    +  "Risk": "The new RBAC permissions model for Key Vaults enables a much finer grained access control for key vault secrets, keys, certificates, etc., than the vault access policy. This in turn will permit the use of privileged identity management over these roles, thus securing the key vaults with JIT Access management.",
    +  "RelatedUrl": "https://docs.microsoft.com/en-gb/azure/key-vault/general/rbac-migration#vault-access-policy-to-azure-rbac-migration-steps",
    +  "Remediation": {
    +    "Code": {
    +      "CLI": "",
    +      "NativeIaC": "",
    +      "Other": "",
    +      "Terraform": ""
    +    },
    +    "Recommendation": {
    +      "Text": "From Azure Portal Key Vaults can be configured to use Azure role-based access control on creation. For existing Key Vaults: 1. From Azure Home open the Portal Menu in the top left corner 2. Select Key Vaults 3. Select a Key Vault to audit 4. Select Access configuration 5. Set the Permission model radio button to Azure role-based access control, taking note of the warning message 6. Click Save 7. Select Access Control (IAM) 8. Select the Role Assignments tab 9. Reapply permissions as needed to groups or users",
    +      "Url": "https://docs.microsoft.com/en-gb/azure/role-based-access-control/role-assignments-portal?tabs=current"
    +    }
    +  },
    +  "Categories": [],
    +  "DependsOn": [],
    +  "RelatedTo": [],
    +  "Notes": "Implementation needs to be properly designed from the ground up, as this is a fundamental change to the way key vaults are accessed/managed. Changing permissions to key vaults will result in loss of service as permissions are re-applied. For the least amount of downtime, map your current groups and users to their corresponding permission needs."
    +}
    diff --git a/prowler/providers/azure/services/keyvault/keyvault_rbac_enabled/keyvault_rbac_enabled.py b/prowler/providers/azure/services/keyvault/keyvault_rbac_enabled/keyvault_rbac_enabled.py
    new file mode 100644
    index 00000000000..a18b85d4c26
    --- /dev/null
    +++ b/prowler/providers/azure/services/keyvault/keyvault_rbac_enabled/keyvault_rbac_enabled.py
    @@ -0,0 +1,23 @@
    +from prowler.lib.check.models import Check, Check_Report_Azure
    +from prowler.providers.azure.services.keyvault.keyvault_client import keyvault_client
    +
    +
    +class keyvault_rbac_enabled(Check):
    +    def execute(self) -> Check_Report_Azure:
    +        findings = []
    +        for subscription, key_vaults in keyvault_client.key_vaults.items():
    +            for keyvault in key_vaults:
    +                report = Check_Report_Azure(self.metadata())
    +                report.subscription = subscription
    +                report.resource_name = keyvault.name
    +                report.resource_id = keyvault.id
    +                report.status = "FAIL"
    +                report.status_extended = f"Keyvault {keyvault.name} from subscription {subscription} is not using RBAC for access control."
    +                if (
    +                    keyvault.properties
    +                    and keyvault.properties.enable_rbac_authorization
    +                ):
    +                    report.status = "PASS"
    +                    report.status_extended = f"Keyvault {keyvault.name} from subscription {subscription} is using RBAC for access control."
    +                findings.append(report)
    +        return findings
    diff --git a/prowler/providers/azure/services/keyvault/keyvault_rbac_key_expiration_set/__init__.py b/prowler/providers/azure/services/keyvault/keyvault_rbac_key_expiration_set/__init__.py
    new file mode 100644
    index 00000000000..e69de29bb2d
    diff --git a/prowler/providers/azure/services/keyvault/keyvault_rbac_key_expiration_set/keyvault_rbac_key_expiration_set.metadata.json b/prowler/providers/azure/services/keyvault/keyvault_rbac_key_expiration_set/keyvault_rbac_key_expiration_set.metadata.json
    new file mode 100644
    index 00000000000..25747cf091c
    --- /dev/null
    +++ b/prowler/providers/azure/services/keyvault/keyvault_rbac_key_expiration_set/keyvault_rbac_key_expiration_set.metadata.json
    @@ -0,0 +1,30 @@
    +{
    +  "Provider": "azure",
    +  "CheckID": "keyvault_rbac_key_expiration_set",
    +  "CheckTitle": "Ensure that the Expiration Date is set for all Keys in RBAC Key Vaults",
    +  "CheckType": [],
    +  "ServiceName": "keyvault",
    +  "SubServiceName": "",
    +  "ResourceIdTemplate": "",
    +  "Severity": "high",
    +  "ResourceType": "KeyVault",
    +  "Description": "Ensure that all Keys in Role Based Access Control (RBAC) Azure Key Vaults have an expiration date set",
    +  "Risk": "Azure Key Vault enables users to store and use cryptographic keys within the Microsoft Azure environment. The exp (expiration date) attribute identifies the expiration date on or after which the key MUST NOT be used for encryption of new data, wrapping of new keys, and signing. By default, keys never expire. It is thus recommended that keys be rotated in the key vault and set an explicit expiration date for all keys to help enforce the key rotation. This ensures that the keys cannot be used beyond their assigned lifetimes.",
    +  "RelatedUrl": "https://docs.microsoft.com/en-us/azure/key-vault/key-vault-whatis",
    +  "Remediation": {
    +    "Code": {
    +      "CLI": "az keyvault key set-attributes --name  --vault-name  --expires Y-m-d'T'H:M:S'Z'",
    +      "NativeIaC": "",
    +      "Other": "https://www.trendmicro.com/cloudoneconformity/knowledge-base/azure/KeyVault/key-expiration-check.html#",
    +      "Terraform": "https://docs.bridgecrew.io/docs/set-an-expiration-date-on-all-keys#terraform"
    +    },
    +    "Recommendation": {
    +      "Text": "From Azure Portal: 1. Go to Key vaults. 2. For each Key vault, click on Keys. 3. In the main pane, ensure that an appropriate Expiration date is set for any keys that are Enabled. From Azure CLI: Update the Expiration date for the key using the below command: az keyvault key set-attributes --name  --vault-name  -- expires Y-m-d'T'H:M:S'Z' Note: To view the expiration date on all keys in a Key Vault using Microsoft API, the 'List' Key permission is required. To update the expiration date for the keys: 1. Go to the Key vault, click on Access Control (IAM). 2. Click on Add role assignment and assign the role of Key Vault Crypto Officer to the appropriate user. From PowerShell: Set-AzKeyVaultKeyAttribute -VaultName  -Name  -Expires ",
    +      "Url": "https://docs.microsoft.com/en-us/rest/api/keyvault/about-keys--secrets-and-certificates#key-vault-keys"
    +    }
    +  },
    +  "Categories": [],
    +  "DependsOn": [],
    +  "RelatedTo": [],
    +  "Notes": "Keys cannot be used beyond their assigned expiration dates respectively. Keys need to be rotated periodically wherever they are used."
    +}
    diff --git a/prowler/providers/azure/services/keyvault/keyvault_rbac_key_expiration_set/keyvault_rbac_key_expiration_set.py b/prowler/providers/azure/services/keyvault/keyvault_rbac_key_expiration_set/keyvault_rbac_key_expiration_set.py
    new file mode 100644
    index 00000000000..ae68e0dd343
    --- /dev/null
    +++ b/prowler/providers/azure/services/keyvault/keyvault_rbac_key_expiration_set/keyvault_rbac_key_expiration_set.py
    @@ -0,0 +1,30 @@
    +from prowler.lib.check.models import Check, Check_Report_Azure
    +from prowler.providers.azure.services.keyvault.keyvault_client import keyvault_client
    +
    +
    +class keyvault_rbac_key_expiration_set(Check):
    +    def execute(self) -> Check_Report_Azure:
    +        findings = []
    +        for subscription, key_vaults in keyvault_client.key_vaults.items():
    +            for keyvault in key_vaults:
    +                if keyvault.properties.enable_rbac_authorization and keyvault.keys:
    +                    report = Check_Report_Azure(self.metadata())
    +                    report.subscription = subscription
    +                    report.resource_name = keyvault.name
    +                    report.resource_id = keyvault.id
    +                    report.status = "PASS"
    +                    report.status_extended = f"Keyvault {keyvault.name} from subscription {subscription} has all the keys with expiration date set."
    +                    has_key_without_expiration = False
    +                    for key in keyvault.keys:
    +                        if (
    +                            key.attributes
    +                            and not key.attributes.expires
    +                            and key.enabled
    +                        ):
    +                            report.status = "FAIL"
    +                            report.status_extended = f"Keyvault {keyvault.name} from subscription {subscription} has the key {key.name} without expiration date set."
    +                            has_key_without_expiration = True
    +                            findings.append(report)
    +                    if not has_key_without_expiration:
    +                        findings.append(report)
    +        return findings
    diff --git a/prowler/providers/azure/services/keyvault/keyvault_rbac_secret_expiration_set/__init__.py b/prowler/providers/azure/services/keyvault/keyvault_rbac_secret_expiration_set/__init__.py
    new file mode 100644
    index 00000000000..e69de29bb2d
    diff --git a/prowler/providers/azure/services/keyvault/keyvault_rbac_secret_expiration_set/keyvault_rbac_secret_expiration_set.metadata.json b/prowler/providers/azure/services/keyvault/keyvault_rbac_secret_expiration_set/keyvault_rbac_secret_expiration_set.metadata.json
    new file mode 100644
    index 00000000000..65dbb39632a
    --- /dev/null
    +++ b/prowler/providers/azure/services/keyvault/keyvault_rbac_secret_expiration_set/keyvault_rbac_secret_expiration_set.metadata.json
    @@ -0,0 +1,30 @@
    +{
    +  "Provider": "azure",
    +  "CheckID": "keyvault_rbac_secret_expiration_set",
    +  "CheckTitle": "Ensure that the Expiration Date is set for all Secrets in RBAC Key Vaults",
    +  "CheckType": [],
    +  "ServiceName": "keyvault",
    +  "SubServiceName": "",
    +  "ResourceIdTemplate": "",
    +  "Severity": "high",
    +  "ResourceType": "KeyVault",
    +  "Description": "Ensure that all Secrets in Role Based Access Control (RBAC) Azure Key Vaults have an expiration date set.",
    +  "Risk": "The Azure Key Vault enables users to store and keep secrets within the Microsoft Azure environment. Secrets in the Azure Key Vault are octet sequences with a maximum size of 25k bytes each. The exp (expiration date) attribute identifies the expiration date on or after which the secret MUST NOT be used. By default, secrets never expire. It is thus recommended to rotate secrets in the key vault and set an explicit expiration date for all secrets. This ensures that the secrets cannot be used beyond their assigned lifetimes.",
    +  "RelatedUrl": "https://docs.microsoft.com/en-us/azure/key-vault/key-vault-whatis",
    +  "Remediation": {
    +    "Code": {
    +      "CLI": "az keyvault secret set-attributes --name  --vault-name  --expires Y-m-d'T'H:M:S'Z'",
    +      "NativeIaC": "",
    +      "Other": "",
    +      "Terraform": "https://docs.bridgecrew.io/docs/set-an-expiration-date-on-all-secrets#terraform"
    +    },
    +    "Recommendation": {
    +      "Text": "From Azure Portal: 1. Go to Key vaults. 2. For each Key vault, click on Secrets. 3. In the main pane, ensure that the status of the secret is Enabled. 4. For each enabled secret, ensure that an appropriate Expiration date is set. From Azure CLI: Update the Expiration date for the secret using the below command: az keyvault secret set-attributes --name  --vault-name  --expires Y-m-d'T'H:M:S'Z' Note: To view the expiration date on all secrets in a Key Vault using Microsoft API, the List Key permission is required. To update the expiration date for the secrets: 1. Go to the Key vault, click on Access Control (IAM). 2. Click on Add role assignment and assign the role of Key Vault Secrets Officer to the appropriate user. From PowerShell: Set-AzKeyVaultSecretAttribute -VaultName  -Name  - Expires ",
    +      "Url": "https://docs.microsoft.com/en-us/rest/api/keyvault/about-keys--secrets-and-certificates#key-vault-secrets"
    +    }
    +  },
    +  "Categories": [],
    +  "DependsOn": [],
    +  "RelatedTo": [],
    +  "Notes": "Secrets cannot be used beyond their assigned expiry date respectively. Secrets need to be rotated periodically wherever they are used."
    +}
    diff --git a/prowler/providers/azure/services/keyvault/keyvault_rbac_secret_expiration_set/keyvault_rbac_secret_expiration_set.py b/prowler/providers/azure/services/keyvault/keyvault_rbac_secret_expiration_set/keyvault_rbac_secret_expiration_set.py
    new file mode 100644
    index 00000000000..03c0bd3e838
    --- /dev/null
    +++ b/prowler/providers/azure/services/keyvault/keyvault_rbac_secret_expiration_set/keyvault_rbac_secret_expiration_set.py
    @@ -0,0 +1,30 @@
    +from prowler.lib.check.models import Check, Check_Report_Azure
    +from prowler.providers.azure.services.keyvault.keyvault_client import keyvault_client
    +
    +
    +class keyvault_rbac_secret_expiration_set(Check):
    +    def execute(self) -> Check_Report_Azure:
    +        findings = []
    +        for subscription, key_vaults in keyvault_client.key_vaults.items():
    +            for keyvault in key_vaults:
    +                if keyvault.properties.enable_rbac_authorization and keyvault.secrets:
    +                    report = Check_Report_Azure(self.metadata())
    +                    report.subscription = subscription
    +                    report.resource_name = keyvault.name
    +                    report.resource_id = keyvault.id
    +                    report.status = "PASS"
    +                    report.status_extended = f"Keyvault {keyvault.name} from subscription {subscription} has all the secrets with expiration date set."
    +                    has_secret_without_expiration = False
    +                    for secret in keyvault.secrets:
    +                        if (
    +                            secret.attributes
    +                            and not secret.attributes.expires
    +                            and secret.enabled
    +                        ):
    +                            report.status = "FAIL"
    +                            report.status_extended = f"Keyvault {keyvault.name} from subscription {subscription} has the secret {secret.name} without expiration date set."
    +                            has_secret_without_expiration = True
    +                            findings.append(report)
    +                    if not has_secret_without_expiration:
    +                        findings.append(report)
    +        return findings
    diff --git a/prowler/providers/azure/services/keyvault/keyvault_recoverable/__init__.py b/prowler/providers/azure/services/keyvault/keyvault_recoverable/__init__.py
    new file mode 100644
    index 00000000000..e69de29bb2d
    diff --git a/prowler/providers/azure/services/keyvault/keyvault_recoverable/keyvault_recoverable.metadata.json b/prowler/providers/azure/services/keyvault/keyvault_recoverable/keyvault_recoverable.metadata.json
    new file mode 100644
    index 00000000000..e9af6c043bd
    --- /dev/null
    +++ b/prowler/providers/azure/services/keyvault/keyvault_recoverable/keyvault_recoverable.metadata.json
    @@ -0,0 +1,30 @@
    +{
    +  "Provider": "azure",
    +  "CheckID": "keyvault_recoverable",
    +  "CheckTitle": "Ensure the Key Vault is Recoverable",
    +  "CheckType": [],
    +  "ServiceName": "keyvault",
    +  "SubServiceName": "",
    +  "ResourceIdTemplate": "",
    +  "Severity": "high",
    +  "ResourceType": "KeyVault",
    +  "Description": "The Key Vault contains object keys, secrets, and certificates. Accidental unavailability of a Key Vault can cause immediate data loss or loss of security functions (authentication, validation, verification, non-repudiation, etc.) supported by the Key Vault objects. It is recommended the Key Vault be made recoverable by enabling the 'Do Not Purge' and 'Soft Delete' functions. This is in order to prevent loss of encrypted data, including storage accounts, SQL databases, and/or dependent services provided by Key Vault objects (Keys, Secrets, Certificates) etc. This may happen in the case of accidental deletion by a user or from disruptive activity by a malicious user. WARNING: A current limitation of the soft-delete feature across all Azure services is role assignments disappearing when Key Vault is deleted. All role assignments will need to be recreated after recovery.",
    +  "Risk": "There could be scenarios where users accidentally run delete/purge commands on Key Vault or an attacker/malicious user deliberately does so in order to cause disruption. Deleting or purging a Key Vault leads to immediate data loss, as keys encrypting data and secrets/certificates allowing access/services will become non-accessible. There are 2 Key Vault properties that play a role in permanent unavailability of a Key Vault: 1. enableSoftDelete: Setting this parameter to 'true' for a Key Vault ensures that even if Key Vault is deleted, Key Vault itself or its objects remain recoverable for the next 90 days. Key Vault/objects can either be recovered or purged (permanent deletion) during those 90 days. If no action is taken, key vault and its objects will subsequently be purged. 2. enablePurgeProtection: enableSoftDelete only ensures that Key Vault is not deleted permanently and will be recoverable for 90 days from date of deletion. However, there are scenarios in which the Key Vault and/or its objects are accidentally purged and hence will not be recoverable. Setting enablePurgeProtection to 'true' ensures that the Key Vault and its objects cannot be purged. Enabling both the parameters on Key Vaults ensures that Key Vaults and their objects cannot be deleted/purged permanently.",
    +  "RelatedUrl": "https://docs.microsoft.com/en-us/azure/key-vault/key-vault-soft-delete-cli",
    +  "Remediation": {
    +    "Code": {
    +      "CLI": "az resource update --id /subscriptions/xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups//providers/Microsoft.KeyVault/vaults/ --set properties.enablePurgeProtection=trueproperties.enableSoftDelete=true",
    +      "NativeIaC": "",
    +      "Other": "https://www.trendmicro.com/cloudoneconformity/knowledge-base/azure/KeyVault/enable-key-vault-recoverability.html#",
    +      "Terraform": "https://docs.bridgecrew.io/docs/ensure-the-key-vault-is-recoverable#terraform"
    +    },
    +    "Recommendation": {
    +      "Text": "To enable 'Do Not Purge' and 'Soft Delete' for a Key Vault: From Azure Portal 1. Go to Key Vaults 2. For each Key Vault 3. Click Properties 4. Ensure the status of soft-delete reads Soft delete has been enabled on this key vault. 5. At the bottom of the page, click 'Enable Purge Protection' Note, once enabled you cannot disable it. From Azure CLI az resource update --id /subscriptions/xxxxxx-xxxx-xxxx-xxxx- xxxxxxxxxxxx/resourceGroups//providers/Microsoft.KeyVault /vaults/ --set properties.enablePurgeProtection=true properties.enableSoftDelete=true From PowerShell Update-AzKeyVault -VaultName  Check_Report_Azure:
    +        findings = []
    +        for subscription, key_vaults in keyvault_client.key_vaults.items():
    +            for keyvault in key_vaults:
    +                report = Check_Report_Azure(self.metadata())
    +                report.subscription = subscription
    +                report.resource_name = keyvault.name
    +                report.resource_id = keyvault.id
    +                report.status = "FAIL"
    +                report.status_extended = f"Keyvault {keyvault.name} from subscription {subscription} is not recoverable."
    +                if (
    +                    keyvault.properties.enable_soft_delete
    +                    and keyvault.properties.enable_purge_protection
    +                ):
    +                    report.status = "PASS"
    +                    report.status_extended = f"Keyvault {keyvault.name} from subscription {subscription} is recoverable."
    +                findings.append(report)
    +        return findings
    diff --git a/prowler/providers/azure/services/keyvault/keyvault_service.py b/prowler/providers/azure/services/keyvault/keyvault_service.py
    new file mode 100644
    index 00000000000..209a5fb8adb
    --- /dev/null
    +++ b/prowler/providers/azure/services/keyvault/keyvault_service.py
    @@ -0,0 +1,147 @@
    +from dataclasses import dataclass
    +
    +from azure.core.exceptions import HttpResponseError
    +from azure.keyvault.keys import KeyClient
    +from azure.mgmt.keyvault import KeyVaultManagementClient
    +from azure.mgmt.keyvault.v2023_07_01.models import (
    +    KeyAttributes,
    +    SecretAttributes,
    +    VaultProperties,
    +)
    +
    +from prowler.lib.logger import logger
    +from prowler.providers.azure.lib.service.service import AzureService
    +
    +
    +########################## Storage
    +class KeyVault(AzureService):
    +    def __init__(self, audit_info):
    +        super().__init__(KeyVaultManagementClient, audit_info)
    +        self.key_vaults = self.__get_key_vaults__(audit_info)
    +
    +    def __get_key_vaults__(self, audit_info):
    +        logger.info("KeyVault - Getting key_vaults...")
    +        key_vaults = {}
    +        for subscription, client in self.clients.items():
    +            try:
    +                key_vaults.update({subscription: []})
    +                key_vaults_list = client.vaults.list()
    +                for keyvault in key_vaults_list:
    +                    resource_group = keyvault.id.split("/")[4]
    +                    keyvault_name = keyvault.name
    +                    keyvault_properties = client.vaults.get(
    +                        resource_group, keyvault_name
    +                    ).properties
    +                    keys = self.__get_keys__(
    +                        subscription, resource_group, keyvault_name, audit_info
    +                    )
    +                    secrets = self.__get_secrets__(
    +                        subscription, resource_group, keyvault_name
    +                    )
    +                    key_vaults[subscription].append(
    +                        KeyVaultInfo(
    +                            id=getattr(keyvault, "id", ""),
    +                            name=getattr(keyvault, "name", ""),
    +                            location=getattr(keyvault, "location", ""),
    +                            resource_group=resource_group,
    +                            properties=keyvault_properties,
    +                            keys=keys,
    +                            secrets=secrets,
    +                        )
    +                    )
    +            except Exception as error:
    +                logger.error(
    +                    f"Subscription name: {subscription} -- {error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}"
    +                )
    +        return key_vaults
    +
    +    def __get_keys__(self, subscription, resource_group, keyvault_name, audit_info):
    +        logger.info(f"KeyVault - Getting keys for {keyvault_name}...")
    +        keys = []
    +        try:
    +            client = self.clients[subscription]
    +            keys_list = client.keys.list(resource_group, keyvault_name)
    +            for key in keys_list:
    +                keys.append(
    +                    Key(
    +                        id=getattr(key, "id", ""),
    +                        name=getattr(key, "name", ""),
    +                        enabled=getattr(key.attributes, "enabled", False),
    +                        location=getattr(key, "location", ""),
    +                        attributes=getattr(key, "attributes", None),
    +                    )
    +                )
    +        except Exception as error:
    +            logger.error(
    +                f"Subscription name: {subscription} -- {error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}"
    +            )
    +
    +        try:
    +            key_client = KeyClient(
    +                vault_url=f"https://{keyvault_name}.vault.azure.net/",
    +                credential=audit_info.credentials,
    +            )
    +            properties = key_client.list_properties_of_keys()
    +            for prop in properties:
    +                policy = key_client.get_key_rotation_policy(prop.name)
    +                for key in keys:
    +                    if key.name == prop.name:
    +                        key.rotation_policy = policy
    +
    +        except HttpResponseError:
    +            logger.error(
    +                f"Subscription name: {subscription} -- has no access policy configured for keyvault {keyvault_name}"
    +            )
    +        return keys
    +
    +    def __get_secrets__(self, subscription, resource_group, keyvault_name):
    +        logger.info(f"KeyVault - Getting secrets for {keyvault_name}...")
    +        secrets = []
    +        try:
    +            client = self.clients[subscription]
    +            secrets_list = client.secrets.list(resource_group, keyvault_name)
    +            for secret in secrets_list:
    +                secrets.append(
    +                    Secret(
    +                        id=getattr(secret, "id", ""),
    +                        name=getattr(secret, "name", ""),
    +                        enabled=getattr(secret.properties.attributes, "enabled", False),
    +                        location=getattr(secret, "location", ""),
    +                        attributes=getattr(secret.properties, "attributes", None),
    +                    )
    +                )
    +        except Exception as error:
    +            logger.error(
    +                f"Subscription name: {subscription} -- {error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}"
    +            )
    +        return secrets
    +
    +
    +@dataclass
    +class Key:
    +    id: str
    +    name: str
    +    enabled: bool
    +    location: str
    +    attributes: KeyAttributes
    +    rotation_policy: str = None
    +
    +
    +@dataclass
    +class Secret:
    +    id: str
    +    name: str
    +    enabled: bool
    +    location: str
    +    attributes: SecretAttributes
    +
    +
    +@dataclass
    +class KeyVaultInfo:
    +    id: str
    +    name: str
    +    location: str
    +    resource_group: str
    +    properties: VaultProperties
    +    keys: list[Key] = None
    +    secrets: list[Secret] = None
    diff --git a/prowler/providers/azure/services/monitor/__init__.py b/prowler/providers/azure/services/monitor/__init__.py
    new file mode 100644
    index 00000000000..e69de29bb2d
    diff --git a/prowler/providers/azure/services/monitor/monitor_client.py b/prowler/providers/azure/services/monitor/monitor_client.py
    new file mode 100644
    index 00000000000..92759620d01
    --- /dev/null
    +++ b/prowler/providers/azure/services/monitor/monitor_client.py
    @@ -0,0 +1,4 @@
    +from prowler.providers.azure.lib.audit_info.audit_info import azure_audit_info
    +from prowler.providers.azure.services.monitor.monitor_service import Monitor
    +
    +monitor_client = Monitor(azure_audit_info)
    diff --git a/prowler/providers/azure/services/monitor/monitor_diagnostic_setting_with_appropriate_categories/__init__.py b/prowler/providers/azure/services/monitor/monitor_diagnostic_setting_with_appropriate_categories/__init__.py
    new file mode 100644
    index 00000000000..e69de29bb2d
    diff --git a/prowler/providers/azure/services/monitor/monitor_diagnostic_setting_with_appropriate_categories/monitor_diagnostic_setting_with_appropriate_categories.metadata.json b/prowler/providers/azure/services/monitor/monitor_diagnostic_setting_with_appropriate_categories/monitor_diagnostic_setting_with_appropriate_categories.metadata.json
    new file mode 100644
    index 00000000000..3e3e125bd92
    --- /dev/null
    +++ b/prowler/providers/azure/services/monitor/monitor_diagnostic_setting_with_appropriate_categories/monitor_diagnostic_setting_with_appropriate_categories.metadata.json
    @@ -0,0 +1,30 @@
    +{
    +  "Provider": "azure",
    +  "CheckID": "monitor_diagnostic_setting_with_appropriate_categories",
    +  "CheckTitle": "Ensure Diagnostic Setting captures appropriate categories",
    +  "CheckType": [],
    +  "ServiceName": "monitor",
    +  "SubServiceName": "Configuring Diagnostic Settings",
    +  "ResourceIdTemplate": "",
    +  "Severity": "medium",
    +  "ResourceType": "Monitor",
    +  "Description": "Prerequisite: A Diagnostic Setting must exist. If a Diagnostic Setting does not exist, the navigation and options within this recommendation will not be available. Please review the recommendation at the beginning of this subsection titled: 'Ensure that a 'Diagnostic Setting' exists.' The diagnostic setting should be configured to log the appropriate activities from the control/management plane.",
    +  "Risk": "A diagnostic setting controls how the diagnostic log is exported. Capturing the diagnostic setting categories for appropriate control/management plane activities allows proper alerting.",
    +  "RelatedUrl": "https://learn.microsoft.com/en-us/azure/azure-monitor/essentials/diagnostic-settings",
    +  "Remediation": {
    +    "Code": {
    +      "CLI": "az monitor diagnostic-settings subscription create --subscription  --name  --location  <[- -event-hub  --event-hub-auth-rule ] [-- storage-account ] [--workspace ] --logs '[{category:Security,enabled:true},{category:Administrative,enabled:true},{ca tegory:Alert,enabled:true},{category:Policy,enabled:true}]'>",
    +      "NativeIaC": "",
    +      "Other": "https://www.trendmicro.com/cloudoneconformity/knowledge-base/azure/Monitor/diagnostic-setting-categories.html",
    +      "Terraform": ""
    +    },
    +    "Recommendation": {
    +      "Text": "1. Go to Azure Monitor 2. Click Activity log 3. Click on Export Activity Logs 4. Select the Subscription from the drop down menu 5. Click on Add diagnostic setting 6. Enter a name for your new Diagnostic Setting 7. Check the following categories: Administrative, Alert, Policy, and Security 8. Choose the destination details according to your organization's needs.",
    +      "Url": "https://learn.microsoft.com/en-us/azure/storage/common/manage-storage-analytics-logs?toc=%2Fazure%2Fstorage%2Fblobs%2Ftoc.json&bc=%2Fazure%2Fstorage%2Fblobs%2Fbreadcrumb%2Ftoc.json&tabs=azure-portal"
    +    }
    +  },
    +  "Categories": [],
    +  "DependsOn": [],
    +  "RelatedTo": [],
    +  "Notes": "When the diagnostic setting is created using Azure Portal, by default no categories are selected."
    +}
    diff --git a/prowler/providers/azure/services/monitor/monitor_diagnostic_setting_with_appropriate_categories/monitor_diagnostic_setting_with_appropriate_categories.py b/prowler/providers/azure/services/monitor/monitor_diagnostic_setting_with_appropriate_categories/monitor_diagnostic_setting_with_appropriate_categories.py
    new file mode 100644
    index 00000000000..980026b4901
    --- /dev/null
    +++ b/prowler/providers/azure/services/monitor/monitor_diagnostic_setting_with_appropriate_categories/monitor_diagnostic_setting_with_appropriate_categories.py
    @@ -0,0 +1,53 @@
    +from prowler.lib.check.models import Check, Check_Report_Azure
    +from prowler.providers.azure.services.monitor.monitor_client import monitor_client
    +
    +
    +class monitor_diagnostic_setting_with_appropriate_categories(Check):
    +    def execute(self) -> Check_Report_Azure:
    +        findings = []
    +
    +        for (
    +            subscription_name,
    +            diagnostic_settings,
    +        ) in monitor_client.diagnostics_settings.items():
    +            report = Check_Report_Azure(self.metadata())
    +            report.status = "FAIL"
    +            report.subscription = subscription_name
    +            report.resource_name = "Monitor"
    +            report.resource_id = "Monitor"
    +            report.status_extended = f"There are no diagnostic settings capturing appropiate categories in subscription {subscription_name}."
    +            administrative_enabled = False
    +            security_enabled = False
    +            service_health_enabled = False
    +            alert_enabled = False
    +            for diagnostic_setting in diagnostic_settings:
    +                for log in diagnostic_setting.logs:
    +                    if log.category == "Administrative" and log.enabled:
    +                        administrative_enabled = True
    +                    if log.category == "Security" and log.enabled:
    +                        security_enabled = True
    +                    if log.category == "Alert" and log.enabled:
    +                        service_health_enabled = True
    +                    if log.category == "Policy" and log.enabled:
    +                        alert_enabled = True
    +
    +                    if (
    +                        administrative_enabled
    +                        and security_enabled
    +                        and service_health_enabled
    +                        and alert_enabled
    +                    ):
    +                        report.status = "PASS"
    +                        report.status_extended = f"There is at least one diagnostic setting capturing appropiate categories in subscription {subscription_name}."
    +                        break
    +                if (
    +                    administrative_enabled
    +                    and security_enabled
    +                    and service_health_enabled
    +                    and alert_enabled
    +                ):
    +                    break
    +
    +            findings.append(report)
    +
    +        return findings
    diff --git a/prowler/providers/azure/services/monitor/monitor_service.py b/prowler/providers/azure/services/monitor/monitor_service.py
    new file mode 100644
    index 00000000000..4359ed53fad
    --- /dev/null
    +++ b/prowler/providers/azure/services/monitor/monitor_service.py
    @@ -0,0 +1,46 @@
    +from dataclasses import dataclass
    +
    +from azure.mgmt.monitor import MonitorManagementClient
    +from azure.mgmt.monitor.models import LogSettings
    +
    +from prowler.lib.logger import logger
    +from prowler.providers.azure.lib.service.service import AzureService
    +
    +
    +########################## Monitor
    +class Monitor(AzureService):
    +    def __init__(self, audit_info):
    +        super().__init__(MonitorManagementClient, audit_info)
    +
    +        self.diagnostics_settings = self.__get_diagnostics_settings__()
    +
    +    def __get_diagnostics_settings__(self):
    +        logger.info("Monitor - Getting diagnostics settings...")
    +        diagnostics_settings = {}
    +        for subscription, client in self.clients.items():
    +            try:
    +                diagnostics_settings.update({subscription: []})
    +                settings = client.diagnostic_settings.list(
    +                    resource_uri=f"subscriptions/{self.subscriptions[subscription]}/"
    +                )
    +                for setting in settings:
    +                    diagnostics_settings[subscription].append(
    +                        DiagnosticSetting(
    +                            id=setting.id,
    +                            logs=setting.logs,
    +                            storage_account_id=setting.storage_account_id,
    +                        )
    +                    )
    +
    +            except Exception as error:
    +                logger.error(
    +                    f"Subscription name: {subscription} -- {error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}"
    +                )
    +        return diagnostics_settings
    +
    +
    +@dataclass
    +class DiagnosticSetting:
    +    id: str
    +    storage_account_id: str
    +    logs: LogSettings
    diff --git a/prowler/providers/azure/services/mysql/__init__.py b/prowler/providers/azure/services/mysql/__init__.py
    new file mode 100644
    index 00000000000..e69de29bb2d
    diff --git a/prowler/providers/azure/services/mysql/mysql_client.py b/prowler/providers/azure/services/mysql/mysql_client.py
    new file mode 100644
    index 00000000000..df48ca35690
    --- /dev/null
    +++ b/prowler/providers/azure/services/mysql/mysql_client.py
    @@ -0,0 +1,4 @@
    +from prowler.providers.azure.lib.audit_info.audit_info import azure_audit_info
    +from prowler.providers.azure.services.mysql.mysql_service import MySQL
    +
    +mysql_client = MySQL(azure_audit_info)
    diff --git a/prowler/providers/azure/services/mysql/mysql_flexible_server_audit_log_connection_activated/__init__.py b/prowler/providers/azure/services/mysql/mysql_flexible_server_audit_log_connection_activated/__init__.py
    new file mode 100644
    index 00000000000..e69de29bb2d
    diff --git a/prowler/providers/azure/services/mysql/mysql_flexible_server_audit_log_connection_activated/mysql_flexible_server_audit_log_connection_activated.metadata.json b/prowler/providers/azure/services/mysql/mysql_flexible_server_audit_log_connection_activated/mysql_flexible_server_audit_log_connection_activated.metadata.json
    new file mode 100644
    index 00000000000..665bfbfab43
    --- /dev/null
    +++ b/prowler/providers/azure/services/mysql/mysql_flexible_server_audit_log_connection_activated/mysql_flexible_server_audit_log_connection_activated.metadata.json
    @@ -0,0 +1,30 @@
    +{
    +  "Provider": "azure",
    +  "CheckID": "mysql_flexible_server_audit_log_connection_activated",
    +  "CheckTitle": "Ensure server parameter 'audit_log_events' has 'CONNECTION' set for MySQL Database Server",
    +  "CheckType": [],
    +  "ServiceName": "mysql",
    +  "SubServiceName": "",
    +  "ResourceIdTemplate": "",
    +  "Severity": "medium",
    +  "ResourceType": "Microsoft.DBforMySQL/flexibleServers",
    +  "Description": "Set audit_log_enabled to include CONNECTION on MySQL Servers.",
    +  "Risk": "Enabling CONNECTION helps MySQL Database to log items such as successful and failed connection attempts to the server. Log data can be used to identify, troubleshoot, and repair configuration errors and suboptimal performance.",
    +  "RelatedUrl": "https://docs.microsoft.com/en-us/azure/mysql/single-server/how-to-configure-audit-logs-portal",
    +  "Remediation": {
    +    "Code": {
    +      "CLI": "",
    +      "NativeIaC": "",
    +      "Other": "https://www.tenable.com/audits/items/CIS_Microsoft_Azure_Foundations_v2.0.0_L2.audit:06ec721d4c0ea9169db2b0c6876c5f38",
    +      "Terraform": ""
    +    },
    +    "Recommendation": {
    +      "Text": "1. From Azure Home select the Portal Menu. 2. Select Azure Database for MySQL servers. 3. Select a database. 4. Under Settings, select Server parameters. 5. Update audit_log_enabled parameter to ON. 6. Update audit_log_events parameter to have at least CONNECTION checked. 7. Click Save. 8. Under Monitoring, select Diagnostic settings. 9. Select + Add diagnostic setting. 10. Provide a diagnostic setting name. 11. Under Categories, select MySQL Audit Logs. 12. Specify destination details. 13. Click Save.",
    +      "Url": "https://docs.microsoft.com/en-us/security/benchmark/azure/security-controls-v3-logging-threat-detection#lt-3-enable-logging-for-security-investigation"
    +    }
    +  },
    +  "Categories": [],
    +  "DependsOn": [],
    +  "RelatedTo": [],
    +  "Notes": "There are further costs incurred for storage of logs. For high traffic databases these logs will be significant. Determine your organization's needs before enabling."
    +}
    diff --git a/prowler/providers/azure/services/mysql/mysql_flexible_server_audit_log_connection_activated/mysql_flexible_server_audit_log_connection_activated.py b/prowler/providers/azure/services/mysql/mysql_flexible_server_audit_log_connection_activated/mysql_flexible_server_audit_log_connection_activated.py
    new file mode 100644
    index 00000000000..475c816c073
    --- /dev/null
    +++ b/prowler/providers/azure/services/mysql/mysql_flexible_server_audit_log_connection_activated/mysql_flexible_server_audit_log_connection_activated.py
    @@ -0,0 +1,37 @@
    +from prowler.lib.check.models import Check, Check_Report_Azure
    +from prowler.providers.azure.services.mysql.mysql_client import mysql_client
    +
    +
    +class mysql_flexible_server_audit_log_connection_activated(Check):
    +    def execute(self) -> Check_Report_Azure:
    +        findings = []
    +
    +        for (
    +            subscription_name,
    +            servers,
    +        ) in mysql_client.flexible_servers.items():
    +            for (
    +                server_name,
    +                server,
    +            ) in servers.items():
    +                report = Check_Report_Azure(self.metadata())
    +                report.status = "FAIL"
    +                report.subscription = subscription_name
    +                report.resource_name = server_name
    +                report.resource_id = server_name
    +                report.status_extended = f"Audit log is disabled for server {server_name} in subscription {subscription_name}."
    +
    +                if "audit_log_events" in server.configurations:
    +                    report.resource_id = server.configurations[
    +                        "audit_log_events"
    +                    ].resource_id
    +
    +                    if "CONNECTION" in server.configurations[
    +                        "audit_log_events"
    +                    ].value.split(","):
    +                        report.status = "PASS"
    +                        report.status_extended = f"Audit log is enabled for server {server_name} in subscription {subscription_name}."
    +
    +                findings.append(report)
    +
    +        return findings
    diff --git a/prowler/providers/azure/services/mysql/mysql_flexible_server_audit_log_enabled/__init__.py b/prowler/providers/azure/services/mysql/mysql_flexible_server_audit_log_enabled/__init__.py
    new file mode 100644
    index 00000000000..e69de29bb2d
    diff --git a/prowler/providers/azure/services/mysql/mysql_flexible_server_audit_log_enabled/mysql_flexible_server_audit_log_enabled.metadata.json b/prowler/providers/azure/services/mysql/mysql_flexible_server_audit_log_enabled/mysql_flexible_server_audit_log_enabled.metadata.json
    new file mode 100644
    index 00000000000..d018e38092d
    --- /dev/null
    +++ b/prowler/providers/azure/services/mysql/mysql_flexible_server_audit_log_enabled/mysql_flexible_server_audit_log_enabled.metadata.json
    @@ -0,0 +1,30 @@
    +{
    +  "Provider": "azure",
    +  "CheckID": "mysql_flexible_server_audit_log_enabled",
    +  "CheckTitle": "Ensure server parameter 'audit_log_enabled' is set to 'ON' for MySQL Database Server",
    +  "CheckType": [],
    +  "ServiceName": "mysql",
    +  "SubServiceName": "",
    +  "ResourceIdTemplate": "",
    +  "Severity": "medium",
    +  "ResourceType": "Microsoft.DBforMySQL/flexibleServers",
    +  "Description": "Enable audit_log_enabled on MySQL Servers.",
    +  "Risk": "Enabling audit_log_enabled helps MySQL Database to log items such as connection attempts to the server, DDL/DML access, and more. Log data can be used to identify, troubleshoot, and repair configuration errors and suboptimal performance.",
    +  "RelatedUrl": "https://docs.microsoft.com/en-us/azure/mysql/single-server/how-to-configure-audit-logs-portal",
    +  "Remediation": {
    +    "Code": {
    +      "CLI": "",
    +      "NativeIaC": "",
    +      "Other": "https://www.tenable.com/audits/items/CIS_Microsoft_Azure_Foundations_v1.5.0_L2.audit:c073639a1ce546b535ba73afbf6542aa",
    +      "Terraform": ""
    +    },
    +    "Recommendation": {
    +      "Text": "1. Login to Azure Portal using https://portal.azure.com. 2. Select Azure Database for MySQL Servers. 3. Select a database. 4. Under Settings, select Server parameters. 5. Update audit_log_enabled parameter to ON 6. Under Monitoring, select Diagnostic settings. 7. Select + Add diagnostic setting. 8. Provide a diagnostic setting name. 9. Under Categories, select MySQL Audit Logs. 10. Specify destination details. 11. Click Save.",
    +      "Url": "https://docs.microsoft.com/en-us/security/benchmark/azure/security-controls-v3-logging-threat-detection#lt-3-enable-logging-for-security-investigation"
    +    }
    +  },
    +  "Categories": [],
    +  "DependsOn": [],
    +  "RelatedTo": [],
    +  "Notes": ""
    +}
    diff --git a/prowler/providers/azure/services/mysql/mysql_flexible_server_audit_log_enabled/mysql_flexible_server_audit_log_enabled.py b/prowler/providers/azure/services/mysql/mysql_flexible_server_audit_log_enabled/mysql_flexible_server_audit_log_enabled.py
    new file mode 100644
    index 00000000000..0ee742ff41b
    --- /dev/null
    +++ b/prowler/providers/azure/services/mysql/mysql_flexible_server_audit_log_enabled/mysql_flexible_server_audit_log_enabled.py
    @@ -0,0 +1,35 @@
    +from prowler.lib.check.models import Check, Check_Report_Azure
    +from prowler.providers.azure.services.mysql.mysql_client import mysql_client
    +
    +
    +class mysql_flexible_server_audit_log_enabled(Check):
    +    def execute(self) -> Check_Report_Azure:
    +        findings = []
    +
    +        for (
    +            subscription_name,
    +            servers,
    +        ) in mysql_client.flexible_servers.items():
    +            for (
    +                server_name,
    +                server,
    +            ) in servers.items():
    +                report = Check_Report_Azure(self.metadata())
    +                report.status = "FAIL"
    +                report.subscription = subscription_name
    +                report.resource_name = server_name
    +                report.resource_id = server_name
    +                report.status_extended = f"Audit log is disabled for server {server_name} in subscription {subscription_name}."
    +
    +                if "audit_log_enabled" in server.configurations:
    +                    report.resource_id = server.configurations[
    +                        "audit_log_enabled"
    +                    ].resource_id
    +
    +                    if server.configurations["audit_log_enabled"].value == "ON":
    +                        report.status = "PASS"
    +                        report.status_extended = f"Audit log is enabled for server {server_name} in subscription {subscription_name}."
    +
    +                findings.append(report)
    +
    +        return findings
    diff --git a/prowler/providers/azure/services/mysql/mysql_flexible_server_minimum_tls_version_12/__init__.py b/prowler/providers/azure/services/mysql/mysql_flexible_server_minimum_tls_version_12/__init__.py
    new file mode 100644
    index 00000000000..e69de29bb2d
    diff --git a/prowler/providers/azure/services/mysql/mysql_flexible_server_minimum_tls_version_12/mysql_flexible_server_minimum_tls_version_12.metadata.json b/prowler/providers/azure/services/mysql/mysql_flexible_server_minimum_tls_version_12/mysql_flexible_server_minimum_tls_version_12.metadata.json
    new file mode 100644
    index 00000000000..5ce7f839e66
    --- /dev/null
    +++ b/prowler/providers/azure/services/mysql/mysql_flexible_server_minimum_tls_version_12/mysql_flexible_server_minimum_tls_version_12.metadata.json
    @@ -0,0 +1,30 @@
    +{
    +  "Provider": "azure",
    +  "CheckID": "mysql_flexible_server_minimum_tls_version_12",
    +  "CheckTitle": "Ensure 'TLS Version' is set to 'TLSV1.2' for MySQL flexible Database Server",
    +  "CheckType": [],
    +  "ServiceName": "mysql",
    +  "SubServiceName": "",
    +  "ResourceIdTemplate": "",
    +  "Severity": "high",
    +  "ResourceType": "Microsoft.DBforMySQL/flexibleServers",
    +  "Description": "Ensure TLS version on MySQL flexible servers is set to the default value.",
    +  "Risk": "TLS connectivity helps to provide a new layer of security by connecting database server to client applications using Transport Layer Security (TLS). Enforcing TLS connections between database server and client applications helps protect against 'man in the middle' attacks by encrypting the data stream between the server and application.",
    +  "RelatedUrl": "https://docs.microsoft.com/en-us/azure/mysql/concepts-ssl-connection-security",
    +  "Remediation": {
    +    "Code": {
    +      "CLI": "az mysql flexible-server parameter set --name tls_version --resource-group  --server-name  --value TLSV1.2",
    +      "NativeIaC": "",
    +      "Other": "https://www.trendmicro.com/cloudoneconformity/knowledge-base/azure/MySQL/mysql-flexible-server-tls-version.html",
    +      "Terraform": "https://docs.bridgecrew.io/docs/ensure-mysql-is-using-the-latest-version-of-tls-encryption#terraform"
    +    },
    +    "Recommendation": {
    +      "Text": "1. Login to Azure Portal using https://portal.azure.com 2. Go to Azure Database for MySQL flexible servers 3. For each database, click on Server parameters under Settings 4. In the search box, type in tls_version 5. Click on the VALUE dropdown, and ensure only TLSV1.2 is selected for tls_version",
    +      "Url": "https://docs.microsoft.com/en-us/azure/mysql/howto-configure-ssl"
    +    }
    +  },
    +  "Categories": [],
    +  "DependsOn": [],
    +  "RelatedTo": [],
    +  "Notes": ""
    +}
    diff --git a/prowler/providers/azure/services/mysql/mysql_flexible_server_minimum_tls_version_12/mysql_flexible_server_minimum_tls_version_12.py b/prowler/providers/azure/services/mysql/mysql_flexible_server_minimum_tls_version_12/mysql_flexible_server_minimum_tls_version_12.py
    new file mode 100644
    index 00000000000..4af9f76ff28
    --- /dev/null
    +++ b/prowler/providers/azure/services/mysql/mysql_flexible_server_minimum_tls_version_12/mysql_flexible_server_minimum_tls_version_12.py
    @@ -0,0 +1,39 @@
    +from prowler.lib.check.models import Check, Check_Report_Azure
    +from prowler.providers.azure.services.mysql.mysql_client import mysql_client
    +
    +
    +class mysql_flexible_server_minimum_tls_version_12(Check):
    +    def execute(self) -> Check_Report_Azure:
    +        findings = []
    +
    +        for (
    +            subscription_name,
    +            servers,
    +        ) in mysql_client.flexible_servers.items():
    +            for (
    +                server_name,
    +                server,
    +            ) in servers.items():
    +                report = Check_Report_Azure(self.metadata())
    +                report.status = "FAIL"
    +                report.subscription = subscription_name
    +                report.resource_name = server_name
    +                report.resource_id = server_name
    +                report.status_extended = f"TLS version is not configured in server {server_name} in subscription {subscription_name}."
    +
    +                if "tls_version" in server.configurations:
    +                    report.status = "PASS"
    +                    report.resource_id = server.configurations[
    +                        "tls_version"
    +                    ].resource_id
    +                    report.status_extended = f"TLS version is {server.configurations['tls_version'].value} in server {server_name} in subscription {subscription_name}. This version of TLS is considered secure."
    +
    +                    tls_aviable = server.configurations["tls_version"].value.split(",")
    +
    +                    if "TLSv1.0" in tls_aviable or "TLSv1.1" in tls_aviable:
    +                        report.status = "FAIL"
    +                        report.status_extended = f"TLS version is {server.configurations['tls_version'].value} in server {server_name} in subscription {subscription_name}. There is at leat one version of TLS that is considered insecure."
    +
    +                findings.append(report)
    +
    +        return findings
    diff --git a/prowler/providers/azure/services/mysql/mysql_flexible_server_ssl_connection_enabled/__init__.py b/prowler/providers/azure/services/mysql/mysql_flexible_server_ssl_connection_enabled/__init__.py
    new file mode 100644
    index 00000000000..e69de29bb2d
    diff --git a/prowler/providers/azure/services/mysql/mysql_flexible_server_ssl_connection_enabled/mysql_flexible_server_ssl_connection_enabled.metadata.json b/prowler/providers/azure/services/mysql/mysql_flexible_server_ssl_connection_enabled/mysql_flexible_server_ssl_connection_enabled.metadata.json
    new file mode 100644
    index 00000000000..347ee586062
    --- /dev/null
    +++ b/prowler/providers/azure/services/mysql/mysql_flexible_server_ssl_connection_enabled/mysql_flexible_server_ssl_connection_enabled.metadata.json
    @@ -0,0 +1,30 @@
    +{
    +  "Provider": "azure",
    +  "CheckID": "mysql_flexible_server_ssl_connection_enabled",
    +  "CheckTitle": "Ensure 'Enforce SSL connection' is set to 'Enabled' for Standard MySQL Database Server",
    +  "CheckType": [],
    +  "ServiceName": "mysql",
    +  "SubServiceName": "",
    +  "ResourceIdTemplate": "",
    +  "Severity": "high",
    +  "ResourceType": "Microsoft.DBforMySQL/flexibleServers",
    +  "Description": "Enable SSL connection on MYSQL Servers.",
    +  "Risk": "SSL connectivity helps to provide a new layer of security by connecting database server to client applications using Secure Sockets Layer (SSL). Enforcing SSL connections between database server and client applications helps protect against 'man in the middle' attacks by encrypting the data stream between the server and application.",
    +  "RelatedUrl": "https://learn.microsoft.com/en-us/azure/mysql/single-server/concepts-ssl-connection-security",
    +  "Remediation": {
    +    "Code": {
    +      "CLI": "",
    +      "NativeIaC": "",
    +      "Other": "https://www.tenable.com/policies/[type]/AC_AZURE_0131",
    +      "Terraform": ""
    +    },
    +    "Recommendation": {
    +      "Text": "1. Login to Azure Portal using https://portal.azure.com 2. Go to Azure Database for MySQL servers 3. For each database, click on Connection security 4. In SSL settings, click on ENABLED to Enforce SSL connections",
    +      "Url": "https://docs.microsoft.com/en-us/azure/mysql/single-server/how-to-configure-ssl"
    +    }
    +  },
    +  "Categories": [],
    +  "DependsOn": [],
    +  "RelatedTo": [],
    +  "Notes": ""
    +}
    diff --git a/prowler/providers/azure/services/mysql/mysql_flexible_server_ssl_connection_enabled/mysql_flexible_server_ssl_connection_enabled.py b/prowler/providers/azure/services/mysql/mysql_flexible_server_ssl_connection_enabled/mysql_flexible_server_ssl_connection_enabled.py
    new file mode 100644
    index 00000000000..90071d1de45
    --- /dev/null
    +++ b/prowler/providers/azure/services/mysql/mysql_flexible_server_ssl_connection_enabled/mysql_flexible_server_ssl_connection_enabled.py
    @@ -0,0 +1,34 @@
    +from prowler.lib.check.models import Check, Check_Report_Azure
    +from prowler.providers.azure.services.mysql.mysql_client import mysql_client
    +
    +
    +class mysql_flexible_server_ssl_connection_enabled(Check):
    +    def execute(self) -> Check_Report_Azure:
    +        findings = []
    +
    +        for (
    +            subscription_name,
    +            servers,
    +        ) in mysql_client.flexible_servers.items():
    +            for (
    +                server_name,
    +                server,
    +            ) in servers.items():
    +                report = Check_Report_Azure(self.metadata())
    +                report.status = "FAIL"
    +                report.subscription = subscription_name
    +                report.resource_name = server_name
    +                report.resource_id = server_name
    +                report.status_extended = f"SSL connection is disabled for server {server_name} in subscription {subscription_name}."
    +
    +                if "require_secure_transport" in server.configurations:
    +                    report.resource_id = server.configurations[
    +                        "require_secure_transport"
    +                    ].resource_id
    +                    if server.configurations["require_secure_transport"].value == "ON":
    +                        report.status = "PASS"
    +                        report.status_extended = f"SSL connection is enabled for server {server_name} in subscription {subscription_name}."
    +
    +                findings.append(report)
    +
    +        return findings
    diff --git a/prowler/providers/azure/services/mysql/mysql_service.py b/prowler/providers/azure/services/mysql/mysql_service.py
    new file mode 100644
    index 00000000000..465c8511cc1
    --- /dev/null
    +++ b/prowler/providers/azure/services/mysql/mysql_service.py
    @@ -0,0 +1,78 @@
    +from dataclasses import dataclass
    +
    +from azure.mgmt.rdbms.mysql_flexibleservers import MySQLManagementClient
    +
    +from prowler.lib.logger import logger
    +from prowler.providers.azure.lib.service.service import AzureService
    +
    +
    +########################## MySQL
    +class MySQL(AzureService):
    +    def __init__(self, audit_info):
    +        super().__init__(MySQLManagementClient, audit_info)
    +
    +        self.flexible_servers = self.__get_flexible_servers__()
    +
    +    def __get_flexible_servers__(self):
    +        logger.info("MySQL - Getting servers...")
    +        servers = {}
    +        for subscription_name, client in self.clients.items():
    +            try:
    +                servers_list = client.servers.list()
    +                servers.update({subscription_name: {}})
    +                for server in servers_list:
    +                    servers[subscription_name].update(
    +                        {
    +                            server.name: FlexibleServer(
    +                                resource_id=server.id,
    +                                location=server.location,
    +                                version=server.version,
    +                                configurations=self.__get_configurations__(
    +                                    client, server.id.split("/")[4], server.name
    +                                ),
    +                            )
    +                        }
    +                    )
    +            except Exception as error:
    +                logger.error(
    +                    f"Subscription name: {subscription_name} -- {error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}"
    +                )
    +        return servers
    +
    +    def __get_configurations__(self, client, resource_group, server_name):
    +        logger.info(f"MySQL - Getting configurations from server {server_name} ...")
    +        configurations = {}
    +        try:
    +            configurations_list = client.configurations.list_by_server(
    +                resource_group, server_name
    +            )
    +            for configuration in configurations_list:
    +                configurations.update(
    +                    {
    +                        configuration.name: Configuration(
    +                            resource_id=configuration.id,
    +                            description=configuration.description,
    +                            value=configuration.value,
    +                        )
    +                    }
    +                )
    +        except Exception as error:
    +            logger.error(
    +                f"Server name: {server_name} -- {error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}"
    +            )
    +        return configurations
    +
    +
    +@dataclass
    +class Configuration:
    +    resource_id: str
    +    description: str
    +    value: str
    +
    +
    +@dataclass
    +class FlexibleServer:
    +    resource_id: str
    +    location: str
    +    version: str
    +    configurations: dict[Configuration]
    diff --git a/prowler/providers/azure/services/network/__init__.py b/prowler/providers/azure/services/network/__init__.py
    new file mode 100644
    index 00000000000..e69de29bb2d
    diff --git a/prowler/providers/azure/services/network/network_bastion_host_exists/__init__.py b/prowler/providers/azure/services/network/network_bastion_host_exists/__init__.py
    new file mode 100644
    index 00000000000..e69de29bb2d
    diff --git a/prowler/providers/azure/services/network/network_bastion_host_exists/network_bastion_host_exists.metadata.json b/prowler/providers/azure/services/network/network_bastion_host_exists/network_bastion_host_exists.metadata.json
    new file mode 100644
    index 00000000000..b79be02b8ee
    --- /dev/null
    +++ b/prowler/providers/azure/services/network/network_bastion_host_exists/network_bastion_host_exists.metadata.json
    @@ -0,0 +1,30 @@
    +{
    +  "Provider": "azure",
    +  "CheckID": "network_bastion_host_exists",
    +  "CheckTitle": "Ensure an Azure Bastion Host Exists",
    +  "CheckType": [],
    +  "ServiceName": "network",
    +  "SubServiceName": "",
    +  "ResourceIdTemplate": "",
    +  "Severity": "medium",
    +  "ResourceType": "Network",
    +  "Description": "The Azure Bastion service allows secure remote access to Azure Virtual Machines over the Internet without exposing remote access protocol ports and services directly to the Internet. The Azure Bastion service provides this access using TLS over 443/TCP, and subscribes to hardened configurations within an organization's Azure Active Directory service.",
    +  "Risk": "The Azure Bastion service allows organizations a more secure means of accessing Azure Virtual Machines over the Internet without assigning public IP addresses to those Virtual Machines. The Azure Bastion service provides Remote Desktop Protocol (RDP) and Secure Shell (SSH) access to Virtual Machines using TLS within a web browser, thus preventing organizations from opening up 3389/TCP and 22/TCP to the Internet on Azure Virtual Machines. Additional benefits of the Bastion service includes Multi-Factor Authentication, Conditional Access Policies, and any other hardening measures configured within Azure Active Directory using a central point of access.",
    +  "RelatedUrl": "https://learn.microsoft.com/en-us/azure/bastion/bastion-overview#sku",
    +  "Remediation": {
    +    "Code": {
    +      "CLI": "az network bastion create --location  --name  --public-ip-address  --resource-group  --vnet-name  --scale-units  --sku Standard [--disable-copy- paste true|false] [--enable-ip-connect true|false] [--enable-tunneling true|false]",
    +      "NativeIaC": "",
    +      "Other": "https://www.trendmicro.com/cloudoneconformity-staging/knowledge-base/azure/Network/bastion-host-exists.html",
    +      "Terraform": ""
    +    },
    +    "Recommendation": {
    +      "Text": "From Azure Portal* 1. Click on Bastions 2. Select the Subscription 3. Select the Resource group 4. Type a Name for the new Bastion host 5. Select a Region 6. Choose Standard next to Tier 7. Use the slider to set the Instance count 8. Select the Virtual network or Create new 9. Select the Subnet named AzureBastionSubnet. Create a Subnet named AzureBastionSubnet using a /26 CIDR range if it doesn't already exist. 10. Selct the appropriate Public IP address option. 11. If Create new is selected for the Public IP address option, provide a Public IP address name. 12. If Use existing is selected for Public IP address option, select an IP address from Choose public IP address 13. Click Next: Tags > 14. Configure the appropriate Tags 15. Click Next: Advanced > 16. Select the appropriate Advanced options 17. Click Next: Review + create > 18. Click Create From Azure CLI az network bastion create --location  --name  --public-ip-address  --resource-group  --vnet-name  --scale-units  --sku Standard [--disable-copy- paste true|false] [--enable-ip-connect true|false] [--enable-tunneling true|false] From PowerShell Create the appropriate Virtual network settings and Public IP Address settings. $subnetName = 'AzureBastionSubnet' $subnet = New-AzVirtualNetworkSubnetConfig -Name $subnetName -AddressPrefix  $virtualNet = New-AzVirtualNetwork -Name  - ResourceGroupName  -Location  -AddressPrefix  -Subnet $subnet $publicip = New-AzPublicIpAddress -ResourceGroupName  - Name  -Location  -AllocationMethod Dynamic -Sku Standard",
    +      "Url": "https://learn.microsoft.com/en-us/powershell/module/az.network/get-azbastion?view=azps-9.2.0"
    +    }
    +  },
    +  "Categories": [],
    +  "DependsOn": [],
    +  "RelatedTo": [],
    +  "Notes": "The Azure Bastion service incurs additional costs and requires a specific virtual network configuration. The Standard tier offers additional configuration options compared to the Basic tier and may incur additional costs for those added features."
    +}
    diff --git a/prowler/providers/azure/services/network/network_bastion_host_exists/network_bastion_host_exists.py b/prowler/providers/azure/services/network/network_bastion_host_exists/network_bastion_host_exists.py
    new file mode 100644
    index 00000000000..d2c3e9cbed6
    --- /dev/null
    +++ b/prowler/providers/azure/services/network/network_bastion_host_exists/network_bastion_host_exists.py
    @@ -0,0 +1,33 @@
    +from prowler.lib.check.models import Check, Check_Report_Azure
    +from prowler.providers.azure.services.network.network_client import network_client
    +
    +
    +class network_bastion_host_exists(Check):
    +    def execute(self) -> Check_Report_Azure:
    +        findings = []
    +        for subscription, bastion_hosts in network_client.bastion_hosts.items():
    +            if not bastion_hosts:
    +                status = "FAIL"
    +                status_extended = (
    +                    f"Bastion Host from subscription {subscription} does not exist"
    +                )
    +                resource_id = "N/A"
    +            else:
    +                bastion_names = ", ".join(
    +                    [bastion_host.name for bastion_host in bastion_hosts]
    +                )
    +                resource_id = ", ".join(
    +                    [bastion_host.id for bastion_host in bastion_hosts]
    +                )
    +                status = "PASS"
    +                status_extended = f"Bastion Host from subscription {subscription} available are: {bastion_names}"
    +
    +            report = Check_Report_Azure(self.metadata())
    +            report.subscription = subscription
    +            report.resource_name = "Bastion Host"
    +            report.resource_id = resource_id
    +            report.status = status
    +            report.status_extended = status_extended
    +            findings.append(report)
    +
    +        return findings
    diff --git a/prowler/providers/azure/services/network/network_client.py b/prowler/providers/azure/services/network/network_client.py
    new file mode 100644
    index 00000000000..09632b9c641
    --- /dev/null
    +++ b/prowler/providers/azure/services/network/network_client.py
    @@ -0,0 +1,4 @@
    +from prowler.providers.azure.lib.audit_info.audit_info import azure_audit_info
    +from prowler.providers.azure.services.network.network_service import Network
    +
    +network_client = Network(azure_audit_info)
    diff --git a/prowler/providers/azure/services/network/network_flow_log_more_than_90_days/__init__.py b/prowler/providers/azure/services/network/network_flow_log_more_than_90_days/__init__.py
    new file mode 100644
    index 00000000000..e69de29bb2d
    diff --git a/prowler/providers/azure/services/network/network_flow_log_more_than_90_days/network_flow_log_more_than_90_days.metadata.json b/prowler/providers/azure/services/network/network_flow_log_more_than_90_days/network_flow_log_more_than_90_days.metadata.json
    new file mode 100644
    index 00000000000..1e2e4fbc782
    --- /dev/null
    +++ b/prowler/providers/azure/services/network/network_flow_log_more_than_90_days/network_flow_log_more_than_90_days.metadata.json
    @@ -0,0 +1,30 @@
    +{
    +  "Provider": "azure",
    +  "CheckID": "network_flow_log_more_than_90_days",
    +  "CheckTitle": "Ensure that Network Security Group Flow Log retention period is 'greater than 90 days'",
    +  "CheckType": [],
    +  "ServiceName": "network",
    +  "SubServiceName": "",
    +  "ResourceIdTemplate": "",
    +  "Severity": "medium",
    +  "ResourceType": "Network",
    +  "Description": "Network Security Group Flow Logs should be enabled and the retention period set to greater than or equal to 90 days.",
    +  "Risk": "Flow logs enable capturing information about IP traffic flowing in and out of network security groups. Logs can be used to check for anomalies and give insight into suspected breaches.",
    +  "RelatedUrl": " https://docs.microsoft.com/en-us/azure/network-watcher/network-watcher-nsg-flow-logging-overview",
    +  "Remediation": {
    +    "Code": {
    +      "CLI": "az network watcher flow-log configure --nsg  --enabled true --resource-group  --retention 91 -- storage-account ",
    +      "NativeIaC": "",
    +      "Other": "https://www.trendmicro.com/cloudoneconformity-staging/knowledge-base/azure/Network/sufficient-nsg-flow-log-retention-period.html",
    +      "Terraform": "https://docs.bridgecrew.io/docs/bc_azr_logging_1#terraform"
    +    },
    +    "Recommendation": {
    +      "Text": "From Azure Portal 1. Go to Network Watcher 2. Select NSG flow logs blade in the Logs section 3. Select each Network Security Group from the list 4. Ensure Status is set to On 5. Ensure Retention (days) setting greater than 90 days 6. Select your storage account in the Storage account field 7. Select Save From Azure CLI Enable the NSG flow logs and set the Retention (days) to greater than or equal to 90 days. az network watcher flow-log configure --nsg  --enabled true --resource-group  --retention 91 --storage-account ",
    +      "Url": "https://docs.microsoft.com/en-us/cli/azure/network/watcher/flow-log?view=azure-cli-latest"
    +    }
    +  },
    +  "Categories": [],
    +  "DependsOn": [],
    +  "RelatedTo": [],
    +  "Notes": "This will keep IP traffic logs for longer than 90 days. As a level 2, first determine your need to retain data, then apply your selection here. As this is data stored for longer, your monthly storage costs will increase depending on your data use."
    +}
    diff --git a/prowler/providers/azure/services/network/network_flow_log_more_than_90_days/network_flow_log_more_than_90_days.py b/prowler/providers/azure/services/network/network_flow_log_more_than_90_days/network_flow_log_more_than_90_days.py
    new file mode 100644
    index 00000000000..d37115dd4e2
    --- /dev/null
    +++ b/prowler/providers/azure/services/network/network_flow_log_more_than_90_days/network_flow_log_more_than_90_days.py
    @@ -0,0 +1,33 @@
    +from prowler.lib.check.models import Check, Check_Report_Azure
    +from prowler.providers.azure.services.network.network_client import network_client
    +
    +
    +class network_flow_log_more_than_90_days(Check):
    +    def execute(self) -> Check_Report_Azure:
    +        findings = []
    +        for subscription, network_watchers in network_client.network_watchers.items():
    +            for network_watcher in network_watchers:
    +                report = Check_Report_Azure(self.metadata())
    +                report.subscription = subscription
    +                report.resource_name = network_watcher.name
    +                report.resource_id = network_watcher.id
    +                if network_watcher.flow_logs:
    +                    report.status = "PASS"
    +                    report.status_extended = f"Network Watcher {network_watcher.name} from subscription {subscription} has flow logs enabled for more than 90 days"
    +                    has_failed = False
    +                    for flow_log in network_watcher.flow_logs:
    +                        if not has_failed:
    +                            if not flow_log.enabled:
    +                                report.status = "FAIL"
    +                                report.status_extended = f"Network Watcher {network_watcher.name} from subscription {subscription} has flow logs disabled"
    +                                has_failed = True
    +                            elif flow_log.retention_policy.days < 90 and not has_failed:
    +                                report.status = "FAIL"
    +                                report.status_extended = f"Network Watcher {network_watcher.name} from subscription {subscription} flow logs retention policy is less than 90 days"
    +                                has_failed = True
    +                else:
    +                    report.status = "FAIL"
    +                    report.status_extended = f"Network Watcher {network_watcher.name} from subscription {subscription} has no flow logs"
    +                findings.append(report)
    +
    +        return findings
    diff --git a/prowler/providers/azure/services/network/network_http_internet_access_restricted/__init__.py b/prowler/providers/azure/services/network/network_http_internet_access_restricted/__init__.py
    new file mode 100644
    index 00000000000..e69de29bb2d
    diff --git a/prowler/providers/azure/services/network/network_http_internet_access_restricted/network_http_internet_access_restricted.metadata.json b/prowler/providers/azure/services/network/network_http_internet_access_restricted/network_http_internet_access_restricted.metadata.json
    new file mode 100644
    index 00000000000..bd04ea80b7f
    --- /dev/null
    +++ b/prowler/providers/azure/services/network/network_http_internet_access_restricted/network_http_internet_access_restricted.metadata.json
    @@ -0,0 +1,30 @@
    +{
    +  "Provider": "azure",
    +  "CheckID": "network_http_internet_access_restricted",
    +  "CheckTitle": "Ensure that HTTP(S) access from the Internet is evaluated and restricted",
    +  "CheckType": [],
    +  "ServiceName": "network",
    +  "SubServiceName": "",
    +  "ResourceIdTemplate": "",
    +  "Severity": "high",
    +  "ResourceType": "Network",
    +  "Description": "Network security groups should be periodically evaluated for port misconfigurations. Where certain ports and protocols may be exposed to the Internet, they should be evaluated for necessity and restricted wherever they are not explicitly required and narrowly configured.",
    +  "Risk": "The potential security problem with using HTTP(S) over the Internet is that attackers can use various brute force techniques to gain access to Azure resources. Once the attackers gain access, they can use the resource as a launch point for compromising other resources within the Azure tenant.",
    +  "RelatedUrl": "https://learn.microsoft.com/en-us/security/benchmark/azure/security-controls-v3-network-security#ns-1-establish-network-segmentation-boundaries",
    +  "Remediation": {
    +    "Code": {
    +      "CLI": "",
    +      "NativeIaC": "",
    +      "Other": "https://www.trendmicro.com/cloudoneconformity-staging/knowledge-base/azure/Network/unrestricted-http-access.html",
    +      "Terraform": ""
    +    },
    +    "Recommendation": {
    +      "Text": "Where HTTP(S) is not explicitly required and narrowly configured for resources attached to the Network Security Group, Internet-level access to your Azure resources should be restricted or eliminated. For internal access to relevant resources, configure an encrypted network tunnel such as: ExpressRoute Site-to-site VPN Point-to-site VPN",
    +      "Url": ""
    +    }
    +  },
    +  "Categories": [],
    +  "DependsOn": [],
    +  "RelatedTo": [],
    +  "Notes": ""
    +}
    diff --git a/prowler/providers/azure/services/network/network_http_internet_access_restricted/network_http_internet_access_restricted.py b/prowler/providers/azure/services/network/network_http_internet_access_restricted/network_http_internet_access_restricted.py
    new file mode 100644
    index 00000000000..074cc9abdd7
    --- /dev/null
    +++ b/prowler/providers/azure/services/network/network_http_internet_access_restricted/network_http_internet_access_restricted.py
    @@ -0,0 +1,36 @@
    +from prowler.lib.check.models import Check, Check_Report_Azure
    +from prowler.providers.azure.services.network.network_client import network_client
    +
    +
    +class network_http_internet_access_restricted(Check):
    +    def execute(self) -> Check_Report_Azure:
    +        findings = []
    +        for subscription, security_groups in network_client.security_groups.items():
    +            for security_group in security_groups:
    +                report = Check_Report_Azure(self.metadata())
    +                report.subscription = subscription
    +                report.resource_name = security_group.name
    +                report.resource_id = security_group.id
    +                report.status = "PASS"
    +                report.status_extended = f"Security Group {security_group.name} from subscription {subscription} has HTTP internet access restricted."
    +                rule_fail_condition = any(
    +                    (
    +                        rule.destination_port_range == "80"
    +                        or (
    +                            "-" in rule.destination_port_range
    +                            and int(rule.destination_port_range.split("-")[0]) <= 80
    +                            and int(rule.destination_port_range.split("-")[1]) >= 80
    +                        )
    +                    )
    +                    and rule.protocol in ["TCP", "*"]
    +                    and rule.source_address_prefix in ["Internet", "*", "0.0.0.0/0"]
    +                    and rule.access == "Allow"
    +                    and rule.direction == "Inbound"
    +                    for rule in security_group.security_rules
    +                )
    +                if rule_fail_condition:
    +                    report.status = "FAIL"
    +                    report.status_extended = f"Security Group {security_group.name} from subscription {subscription} has HTTP internet access allowed."
    +                findings.append(report)
    +
    +        return findings
    diff --git a/prowler/providers/azure/services/network/network_public_ip_shodan/__init__.py b/prowler/providers/azure/services/network/network_public_ip_shodan/__init__.py
    new file mode 100644
    index 00000000000..e69de29bb2d
    diff --git a/prowler/providers/azure/services/network/network_public_ip_shodan/network_public_ip_shodan.metadata.json b/prowler/providers/azure/services/network/network_public_ip_shodan/network_public_ip_shodan.metadata.json
    new file mode 100644
    index 00000000000..c27bf219c8d
    --- /dev/null
    +++ b/prowler/providers/azure/services/network/network_public_ip_shodan/network_public_ip_shodan.metadata.json
    @@ -0,0 +1,32 @@
    +{
    +  "Provider": "azure",
    +  "CheckID": "network_public_ip_shodan",
    +  "CheckTitle": "Check if an Azure Public IP is exposed in Shodan (requires Shodan API KEY).",
    +  "CheckType": [],
    +  "ServiceName": "network",
    +  "SubServiceName": "",
    +  "ResourceIdTemplate": "",
    +  "Severity": "high",
    +  "ResourceType": "Network",
    +  "Description": "Check if an Azure Public IP is exposed in Shodan (requires Shodan API KEY).",
    +  "Risk": "If an Azure Public IP is exposed in Shodan, it can be accessed by anyone on the internet. This can lead to unauthorized access to your resources.",
    +  "RelatedUrl": "",
    +  "Remediation": {
    +    "Code": {
    +      "CLI": "",
    +      "NativeIaC": "",
    +      "Other": "",
    +      "Terraform": ""
    +    },
    +    "Recommendation": {
    +      "Text": "Check Identified IPs; Consider changing them to private ones and delete them from Shodan.",
    +      "Url": "https://www.shodan.io/"
    +    }
    +  },
    +  "Categories": [
    +    "internet-exposed"
    +  ],
    +  "DependsOn": [],
    +  "RelatedTo": [],
    +  "Notes": ""
    +}
    diff --git a/prowler/providers/azure/services/network/network_public_ip_shodan/network_public_ip_shodan.py b/prowler/providers/azure/services/network/network_public_ip_shodan/network_public_ip_shodan.py
    new file mode 100644
    index 00000000000..f8123a0ba4a
    --- /dev/null
    +++ b/prowler/providers/azure/services/network/network_public_ip_shodan/network_public_ip_shodan.py
    @@ -0,0 +1,40 @@
    +import shodan
    +
    +from prowler.lib.check.models import Check, Check_Report_Azure
    +from prowler.lib.logger import logger
    +from prowler.providers.azure.services.network.network_client import network_client
    +
    +
    +class network_public_ip_shodan(Check):
    +    def execute(self):
    +        findings = []
    +        shodan_api_key = network_client.audit_config.get("shodan_api_key")
    +        if shodan_api_key:
    +            api = shodan.Shodan(shodan_api_key)
    +            for subscription, public_ips in network_client.public_ip_addresses.items():
    +                for ip in public_ips:
    +                    report = Check_Report_Azure(self.metadata())
    +                    report.subscription = subscription
    +                    report.resource_name = ip.name
    +                    report.resource_id = ip.id
    +                    try:
    +                        shodan_info = api.host(ip.ip_address)
    +                        report.status = "FAIL"
    +                        report.status_extended = f"Public IP {ip.ip_address} listed in Shodan with open ports {str(shodan_info['ports'])} and ISP {shodan_info['isp']} in {shodan_info['country_name']}. More info at https://www.shodan.io/host/{ip.ip_address}."
    +                        findings.append(report)
    +                    except shodan.APIError as error:
    +                        if "No information available for that IP" in error.value:
    +                            report.status = "PASS"
    +                            report.status_extended = (
    +                                f"Public IP {ip.ip_address} is not listed in Shodan."
    +                            )
    +                            findings.append(report)
    +                            continue
    +                        else:
    +                            logger.error(f"Unknown Shodan API Error: {error.value}")
    +
    +        else:
    +            logger.error(
    +                "No Shodan API Key -- Please input a Shodan API Key with -N/--shodan or in config.yaml"
    +            )
    +        return findings
    diff --git a/prowler/providers/azure/services/network/network_rdp_internet_access_restricted/__init__.py b/prowler/providers/azure/services/network/network_rdp_internet_access_restricted/__init__.py
    new file mode 100644
    index 00000000000..e69de29bb2d
    diff --git a/prowler/providers/azure/services/network/network_rdp_internet_access_restricted/network_rdp_internet_access_restricted.metadata.json b/prowler/providers/azure/services/network/network_rdp_internet_access_restricted/network_rdp_internet_access_restricted.metadata.json
    new file mode 100644
    index 00000000000..f8f4d954b23
    --- /dev/null
    +++ b/prowler/providers/azure/services/network/network_rdp_internet_access_restricted/network_rdp_internet_access_restricted.metadata.json
    @@ -0,0 +1,31 @@
    +{
    +    "Provider": "azure",
    +    "CheckID": "network_rdp_internet_access_restricted",
    +    "CheckTitle": "Ensure that RDP access from the Internet is evaluated and restricted",
    +    "CheckType": [],
    +    "ServiceName": "network",
    +    "SubServiceName": "",
    +    "ResourceIdTemplate": "",
    +    "Severity": "high",
    +    "ResourceType": "Network",
    +    "Description": "Network security groups should be periodically evaluated for port misconfigurations. Where certain ports and protocols may be exposed to the Internet, they should be evaluated for necessity and restricted wherever they are not explicitly required.",
    +    "Risk": "The potential security problem with using RDP over the Internet is that attackers can use various brute force techniques to gain access to Azure Virtual Machines. Once the attackers gain access, they can use a virtual machine as a launch point for compromising other machines on an Azure Virtual Network or even attack networked devices outside of Azure.",
    +    "RelatedUrl": "https://docs.microsoft.com/en-us/azure/security/azure-security-network-security-best-practices#disable-rdpssh-access-to-azure-virtual-machines",
    +    "Remediation": {
    +      "Code": {
    +        "CLI": "",
    +        "NativeIaC": "",
    +        "Other": "https://www.trendmicro.com/cloudoneconformity-staging/knowledge-base/azure/Network/unrestricted-rdp-access.html#",
    +        "Terraform": "https://docs.bridgecrew.io/docs/bc_azr_networking_2#terraform"
    +      },
    +      "Recommendation": {
    +        "Text": "Where RDP is not explicitly required and narrowly configured for resources attached to the Network Security Group, Internet-level access to your Azure resources should be restricted or eliminated. For internal access to relevant resources, configure an encrypted network tunnel such as: ExpressRoute Site-to-site VPN Point-to-site VPN",
    +        "Url": "https://docs.microsoft.com/en-us/security/benchmark/azure/security-controls-v3-network-security#ns-1-establish-network-segmentation-boundaries"
    +      }
    +    },
    +    "Categories": [],
    +    "DependsOn": [],
    +    "RelatedTo": [],
    +    "Notes": ""
    +  }
    +  
    \ No newline at end of file
    diff --git a/prowler/providers/azure/services/network/network_rdp_internet_access_restricted/network_rdp_internet_access_restricted.py b/prowler/providers/azure/services/network/network_rdp_internet_access_restricted/network_rdp_internet_access_restricted.py
    new file mode 100644
    index 00000000000..2ec314e0322
    --- /dev/null
    +++ b/prowler/providers/azure/services/network/network_rdp_internet_access_restricted/network_rdp_internet_access_restricted.py
    @@ -0,0 +1,36 @@
    +from prowler.lib.check.models import Check, Check_Report_Azure
    +from prowler.providers.azure.services.network.network_client import network_client
    +
    +
    +class network_rdp_internet_access_restricted(Check):
    +    def execute(self) -> Check_Report_Azure:
    +        findings = []
    +        for subscription, security_groups in network_client.security_groups.items():
    +            for security_group in security_groups:
    +                report = Check_Report_Azure(self.metadata())
    +                report.subscription = subscription
    +                report.resource_name = security_group.name
    +                report.resource_id = security_group.id
    +                report.status = "PASS"
    +                report.status_extended = f"Security Group {security_group.name} from subscription {subscription} has RDP internet access restricted."
    +                rule_fail_condition = any(
    +                    (
    +                        rule.destination_port_range == "3389"
    +                        or (
    +                            "-" in rule.destination_port_range
    +                            and int(rule.destination_port_range.split("-")[0]) <= 3389
    +                            and int(rule.destination_port_range.split("-")[1]) >= 3389
    +                        )
    +                    )
    +                    and rule.protocol in ["TCP", "*"]
    +                    and rule.source_address_prefix in ["Internet", "*", "0.0.0.0/0"]
    +                    and rule.access == "Allow"
    +                    and rule.direction == "Inbound"
    +                    for rule in security_group.security_rules
    +                )
    +                if rule_fail_condition:
    +                    report.status = "FAIL"
    +                    report.status_extended = f"Security Group {security_group.name} from subscription {subscription} has RDP internet access allowed."
    +                findings.append(report)
    +
    +        return findings
    diff --git a/prowler/providers/azure/services/network/network_service.py b/prowler/providers/azure/services/network/network_service.py
    new file mode 100644
    index 00000000000..1a7d55c8b33
    --- /dev/null
    +++ b/prowler/providers/azure/services/network/network_service.py
    @@ -0,0 +1,148 @@
    +from dataclasses import dataclass
    +
    +from azure.mgmt.network import NetworkManagementClient
    +
    +from prowler.lib.logger import logger
    +from prowler.providers.azure.lib.service.service import AzureService
    +
    +
    +########################## SQLServer
    +class Network(AzureService):
    +    def __init__(self, audit_info):
    +        super().__init__(NetworkManagementClient, audit_info)
    +        self.security_groups = self.__get_security_groups__()
    +        self.bastion_hosts = self.__get_bastion_hosts__()
    +        self.network_watchers = self.__get_network_watchers__()
    +        self.public_ip_addresses = self.__get_public_ip_addresses__()
    +
    +    def __get_security_groups__(self):
    +        logger.info("Network - Getting Network Security Groups...")
    +        security_groups = {}
    +        for subscription, client in self.clients.items():
    +            try:
    +                security_groups.update({subscription: []})
    +                security_groups_list = client.network_security_groups.list_all()
    +                for security_group in security_groups_list:
    +                    security_groups[subscription].append(
    +                        SecurityGroup(
    +                            id=security_group.id,
    +                            name=security_group.name,
    +                            location=security_group.location,
    +                            security_rules=security_group.security_rules,
    +                        )
    +                    )
    +
    +            except Exception as error:
    +                logger.error(
    +                    f"Subscription name: {subscription} -- {error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}"
    +                )
    +        return security_groups
    +
    +    def __get_network_watchers__(self):
    +        logger.info("Network - Getting Network Watchers...")
    +        network_watchers = {}
    +        for subscription, client in self.clients.items():
    +            try:
    +                network_watchers.update({subscription: []})
    +                network_watchers_list = client.network_watchers.list_all()
    +                for network_watcher in network_watchers_list:
    +                    flow_logs = self.__get_flow_logs__(
    +                        subscription, network_watcher.name
    +                    )
    +                    network_watchers[subscription].append(
    +                        NetworkWatcher(
    +                            id=network_watcher.id,
    +                            name=network_watcher.name,
    +                            location=network_watcher.location,
    +                            flow_logs=flow_logs,
    +                        )
    +                    )
    +
    +            except Exception as error:
    +                logger.error(
    +                    f"Subscription name: {subscription} -- {error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}"
    +                )
    +        return network_watchers
    +
    +    def __get_flow_logs__(self, subscription, network_watcher_name):
    +        logger.info("Network - Getting Flow Logs...")
    +        client = self.clients[subscription]
    +        resource_group = "NetworkWatcherRG"
    +        flow_logs = client.flow_logs.list(resource_group, network_watcher_name)
    +        return flow_logs
    +
    +    def __get_bastion_hosts__(self):
    +        logger.info("Network - Getting Bastion Hosts...")
    +        bastion_hosts = {}
    +        for subscription, client in self.clients.items():
    +            try:
    +                bastion_hosts.update({subscription: []})
    +                bastion_hosts_list = client.bastion_hosts.list()
    +                for bastion_host in bastion_hosts_list:
    +                    bastion_hosts[subscription].append(
    +                        BastionHost(
    +                            id=bastion_host.id,
    +                            name=bastion_host.name,
    +                            location=bastion_host.location,
    +                        )
    +                    )
    +
    +            except Exception as error:
    +                logger.error(
    +                    f"Subscription name: {subscription} -- {error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}"
    +                )
    +        return bastion_hosts
    +
    +    def __get_public_ip_addresses__(self):
    +        logger.info("Network - Getting Public IP Addresses...")
    +        public_ip_addresses = {}
    +        for subscription, client in self.clients.items():
    +            try:
    +                public_ip_addresses.update({subscription: []})
    +                public_ip_addresses_list = client.public_ip_addresses.list_all()
    +                for public_ip_address in public_ip_addresses_list:
    +                    public_ip_addresses[subscription].append(
    +                        PublicIp(
    +                            id=public_ip_address.id,
    +                            name=public_ip_address.name,
    +                            location=public_ip_address.location,
    +                            ip_address=public_ip_address.ip_address,
    +                        )
    +                    )
    +
    +            except Exception as error:
    +                logger.error(
    +                    f"Subscription name: {subscription} -- {error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}"
    +                )
    +        return public_ip_addresses
    +
    +
    +@dataclass
    +class BastionHost:
    +    id: str
    +    name: str
    +    location: str
    +
    +
    +@dataclass
    +class NetworkWatcher:
    +    id: str
    +    name: str
    +    location: str
    +    flow_logs: list
    +
    +
    +@dataclass
    +class SecurityGroup:
    +    id: str
    +    name: str
    +    location: str
    +    security_rules: list
    +
    +
    +@dataclass
    +class PublicIp:
    +    id: str
    +    name: str
    +    location: str
    +    ip_address: str
    diff --git a/prowler/providers/azure/services/network/network_ssh_internet_access_restricted/__init__.py b/prowler/providers/azure/services/network/network_ssh_internet_access_restricted/__init__.py
    new file mode 100644
    index 00000000000..e69de29bb2d
    diff --git a/prowler/providers/azure/services/network/network_ssh_internet_access_restricted/network_ssh_internet_access_restricted.metadata.json b/prowler/providers/azure/services/network/network_ssh_internet_access_restricted/network_ssh_internet_access_restricted.metadata.json
    new file mode 100644
    index 00000000000..609d63b67dc
    --- /dev/null
    +++ b/prowler/providers/azure/services/network/network_ssh_internet_access_restricted/network_ssh_internet_access_restricted.metadata.json
    @@ -0,0 +1,30 @@
    +{
    +  "Provider": "azure",
    +  "CheckID": "network_ssh_internet_access_restricted",
    +  "CheckTitle": "Ensure that SSH access from the Internet is evaluated and restricted",
    +  "CheckType": [],
    +  "ServiceName": "network",
    +  "SubServiceName": "",
    +  "ResourceIdTemplate": "",
    +  "Severity": "high",
    +  "ResourceType": "Network",
    +  "Description": "Network security groups should be periodically evaluated for port misconfigurations. Where certain ports and protocols may be exposed to the Internet, they should be evaluated for necessity and restricted wherever they are not explicitly required.",
    +  "Risk": "The potential security problem with using SSH over the Internet is that attackers can use various brute force techniques to gain access to Azure Virtual Machines. Once the attackers gain access, they can use a virtual machine as a launch point for compromising other machines on the Azure Virtual Network or even attack networked devices outside of Azure.",
    +  "RelatedUrl": "https://docs.microsoft.com/en-us/azure/security/azure-security-network-security-best-practices#disable-rdpssh-access-to-azure-virtual-machines",
    +  "Remediation": {
    +    "Code": {
    +      "CLI": "",
    +      "NativeIaC": "",
    +      "Other": "https://www.trendmicro.com/cloudoneconformity-staging/knowledge-base/azure/Network/unrestricted-ssh-access.html",
    +      "Terraform": "https://docs.bridgecrew.io/docs/bc_azr_networking_3#terraform"
    +    },
    +    "Recommendation": {
    +      "Text": "Where SSH is not explicitly required and narrowly configured for resources attached to the Network Security Group, Internet-level access to your Azure resources should be restricted or eliminated. For internal access to relevant resources, configure an encrypted network tunnel such as: ExpressRoute Site-to-site VPN Point-to-site VPN",
    +      "Url": "https://docs.microsoft.com/en-us/security/benchmark/azure/security-controls-v3-network-security#ns-1-establish-network-segmentation-boundaries"
    +    }
    +  },
    +  "Categories": [],
    +  "DependsOn": [],
    +  "RelatedTo": [],
    +  "Notes": ""
    +}
    diff --git a/prowler/providers/azure/services/network/network_ssh_internet_access_restricted/network_ssh_internet_access_restricted.py b/prowler/providers/azure/services/network/network_ssh_internet_access_restricted/network_ssh_internet_access_restricted.py
    new file mode 100644
    index 00000000000..8efe55b38a2
    --- /dev/null
    +++ b/prowler/providers/azure/services/network/network_ssh_internet_access_restricted/network_ssh_internet_access_restricted.py
    @@ -0,0 +1,36 @@
    +from prowler.lib.check.models import Check, Check_Report_Azure
    +from prowler.providers.azure.services.network.network_client import network_client
    +
    +
    +class network_ssh_internet_access_restricted(Check):
    +    def execute(self) -> Check_Report_Azure:
    +        findings = []
    +        for subscription, security_groups in network_client.security_groups.items():
    +            for security_group in security_groups:
    +                report = Check_Report_Azure(self.metadata())
    +                report.subscription = subscription
    +                report.resource_name = security_group.name
    +                report.resource_id = security_group.id
    +                report.status = "PASS"
    +                report.status_extended = f"Security Group {security_group.name} from subscription {subscription} has SSH internet access restricted."
    +                rule_fail_condition = any(
    +                    (
    +                        rule.destination_port_range == "22"
    +                        or (
    +                            "-" in rule.destination_port_range
    +                            and int(rule.destination_port_range.split("-")[0]) <= 22
    +                            and int(rule.destination_port_range.split("-")[1]) >= 22
    +                        )
    +                    )
    +                    and rule.protocol in ["TCP", "*"]
    +                    and rule.source_address_prefix in ["Internet", "*", "0.0.0.0/0"]
    +                    and rule.access == "Allow"
    +                    and rule.direction == "Inbound"
    +                    for rule in security_group.security_rules
    +                )
    +                if rule_fail_condition:
    +                    report.status = "FAIL"
    +                    report.status_extended = f"Security Group {security_group.name} from subscription {subscription} has SSH internet access allowed."
    +                findings.append(report)
    +
    +        return findings
    diff --git a/prowler/providers/azure/services/network/network_udp_internet_access_restricted/__init__.py b/prowler/providers/azure/services/network/network_udp_internet_access_restricted/__init__.py
    new file mode 100644
    index 00000000000..e69de29bb2d
    diff --git a/prowler/providers/azure/services/network/network_udp_internet_access_restricted/network_udp_internet_access_restricted.metadata.json b/prowler/providers/azure/services/network/network_udp_internet_access_restricted/network_udp_internet_access_restricted.metadata.json
    new file mode 100644
    index 00000000000..95732507e31
    --- /dev/null
    +++ b/prowler/providers/azure/services/network/network_udp_internet_access_restricted/network_udp_internet_access_restricted.metadata.json
    @@ -0,0 +1,30 @@
    +{
    +  "Provider": "azure",
    +  "CheckID": "network_udp_internet_access_restricted",
    +  "CheckTitle": "Ensure that UDP access from the Internet is evaluated and restricted",
    +  "CheckType": [],
    +  "ServiceName": "network",
    +  "SubServiceName": "",
    +  "ResourceIdTemplate": "",
    +  "Severity": "high",
    +  "ResourceType": "Network",
    +  "Description": "Network security groups should be periodically evaluated for port misconfigurations. Where certain ports and protocols may be exposed to the Internet, they should be evaluated for necessity and restricted wherever they are not explicitly required.",
    +  "Risk": "The potential security problem with broadly exposing UDP services over the Internet is that attackers can use DDoS amplification techniques to reflect spoofed UDP traffic from Azure Virtual Machines. The most common types of these attacks use exposed DNS, NTP, SSDP, SNMP, CLDAP and other UDP-based services as amplification sources for disrupting services of other machines on the Azure Virtual Network or even attack networked devices outside of Azure.",
    +  "RelatedUrl": "https://docs.microsoft.com/en-us/azure/security/fundamentals/network-best-practices#secure-your-critical-azure-service-resources-to-only-your-virtual-networks",
    +  "Remediation": {
    +    "Code": {
    +      "CLI": "",
    +      "NativeIaC": "",
    +      "Other": "https://www.trendmicro.com/cloudoneconformity-staging/knowledge-base/azure/Network/unrestricted-udp-access.html#",
    +      "Terraform": "https://docs.bridgecrew.io/docs/ensure-that-udp-services-are-restricted-from-the-internet#terraform"
    +    },
    +    "Recommendation": {
    +      "Text": "Where UDP is not explicitly required and narrowly configured for resources attached tothe Network Security Group, Internet-level access to your Azure resources should be restricted or eliminated. For internal access to relevant resources, configure an encrypted network tunnel such as: ExpressRouteSite-to-site VPN Point-to-site VPN",
    +      "Url": "https://docs.microsoft.com/en-us/azure/security/fundamentals/ddos-best-practices"
    +    }
    +  },
    +  "Categories": [],
    +  "DependsOn": [],
    +  "RelatedTo": [],
    +  "Notes": ""
    +}
    diff --git a/prowler/providers/azure/services/network/network_udp_internet_access_restricted/network_udp_internet_access_restricted.py b/prowler/providers/azure/services/network/network_udp_internet_access_restricted/network_udp_internet_access_restricted.py
    new file mode 100644
    index 00000000000..89443bb9d2e
    --- /dev/null
    +++ b/prowler/providers/azure/services/network/network_udp_internet_access_restricted/network_udp_internet_access_restricted.py
    @@ -0,0 +1,28 @@
    +from prowler.lib.check.models import Check, Check_Report_Azure
    +from prowler.providers.azure.services.network.network_client import network_client
    +
    +
    +class network_udp_internet_access_restricted(Check):
    +    def execute(self) -> Check_Report_Azure:
    +        findings = []
    +        for subscription, security_groups in network_client.security_groups.items():
    +            for security_group in security_groups:
    +                report = Check_Report_Azure(self.metadata())
    +                report.subscription = subscription
    +                report.resource_name = security_group.name
    +                report.resource_id = security_group.id
    +                report.status = "PASS"
    +                report.status_extended = f"Security Group {security_group.name} from subscription {subscription} has UDP internet access restricted."
    +                rule_fail_condition = any(
    +                    rule.protocol in ["UDP"]
    +                    and rule.source_address_prefix in ["Internet", "*", "0.0.0.0/0"]
    +                    and rule.access == "Allow"
    +                    and rule.direction == "Inbound"
    +                    for rule in security_group.security_rules
    +                )
    +                if rule_fail_condition:
    +                    report.status = "FAIL"
    +                    report.status_extended = f"Security Group {security_group.name} from subscription {subscription} has UDP internet access allowed."
    +                findings.append(report)
    +
    +        return findings
    diff --git a/prowler/providers/azure/services/network/network_watcher_enabled/__init__.py b/prowler/providers/azure/services/network/network_watcher_enabled/__init__.py
    new file mode 100644
    index 00000000000..e69de29bb2d
    diff --git a/prowler/providers/azure/services/network/network_watcher_enabled/network_watcher_enabled.metadata.json b/prowler/providers/azure/services/network/network_watcher_enabled/network_watcher_enabled.metadata.json
    new file mode 100644
    index 00000000000..83513a2073f
    --- /dev/null
    +++ b/prowler/providers/azure/services/network/network_watcher_enabled/network_watcher_enabled.metadata.json
    @@ -0,0 +1,30 @@
    +{
    +  "Provider": "azure",
    +  "CheckID": "network_watcher_enabled",
    +  "CheckTitle": "Ensure that Network Watcher is 'Enabled'",
    +  "CheckType": [],
    +  "ServiceName": "network",
    +  "SubServiceName": "",
    +  "ResourceIdTemplate": "",
    +  "Severity": "medium",
    +  "ResourceType": "Network",
    +  "Description": "Enable Network Watcher for Azure subscriptions.",
    +  "Risk": "Network diagnostic and visualization tools available with Network Watcher help users understand, diagnose, and gain insights to the network in Azure.",
    +  "RelatedUrl": "https://docs.microsoft.com/en-us/azure/network-watcher/network-watcher-monitoring-overview",
    +  "Remediation": {
    +    "Code": {
    +      "CLI": "",
    +      "NativeIaC": "",
    +      "Other": "https://www.trendmicro.com/cloudoneconformity-staging/knowledge-base/azure/Network/enable-network-watcher.html#",
    +      "Terraform": ""
    +    },
    +    "Recommendation": {
    +      "Text": "Opting out of Network Watcher automatic enablement is a permanent change. Once you opt-out you cannot opt-in without contacting support.",
    +      "Url": "https://docs.azure.cn/zh-cn/cli/network/watcher?view=azure-cli-latest#az_network_watcher_list"
    +    }
    +  },
    +  "Categories": [],
    +  "DependsOn": [],
    +  "RelatedTo": [],
    +  "Notes": "There are additional costs per transaction to run and store network data. For high-volume networks these charges will add up quickly."
    +}
    diff --git a/prowler/providers/azure/services/network/network_watcher_enabled/network_watcher_enabled.py b/prowler/providers/azure/services/network/network_watcher_enabled/network_watcher_enabled.py
    new file mode 100644
    index 00000000000..e4d6797ed91
    --- /dev/null
    +++ b/prowler/providers/azure/services/network/network_watcher_enabled/network_watcher_enabled.py
    @@ -0,0 +1,27 @@
    +from prowler.lib.check.models import Check, Check_Report_Azure
    +from prowler.providers.azure.services.network.network_client import network_client
    +
    +
    +class network_watcher_enabled(Check):
    +    def execute(self) -> Check_Report_Azure:
    +        findings = []
    +        nw_locations = []
    +        for subscription, network_watchers in network_client.network_watchers.items():
    +            for network_watcher in network_watchers:
    +                nw_locations.append(network_watcher.location)
    +        for subscription, locations in network_client.locations.items():
    +            for location in locations:
    +                report = Check_Report_Azure(self.metadata())
    +                report.subscription = subscription
    +                report.resource_name = "Network Watcher"
    +                report.resource_id = f"/subscriptions/{subscription}/providers/Microsoft.Network/networkWatchers/{location}"
    +                if location not in nw_locations:
    +                    report.status = "FAIL"
    +                    report.status_extended = f"Network Watcher is not enabled for the location {location} in subscription {subscription}."
    +                    findings.append(report)
    +                else:
    +                    report.status = "PASS"
    +                    report.status_extended = f"Network Watcher is enabled for the location {location} in subscription {subscription}."
    +                    findings.append(report)
    +
    +        return findings
    diff --git a/prowler/providers/azure/services/policy/__init__.py b/prowler/providers/azure/services/policy/__init__.py
    new file mode 100644
    index 00000000000..e69de29bb2d
    diff --git a/prowler/providers/azure/services/policy/policy_client.py b/prowler/providers/azure/services/policy/policy_client.py
    new file mode 100644
    index 00000000000..5297921292c
    --- /dev/null
    +++ b/prowler/providers/azure/services/policy/policy_client.py
    @@ -0,0 +1,4 @@
    +from prowler.providers.azure.lib.audit_info.audit_info import azure_audit_info
    +from prowler.providers.azure.services.policy.policy_service import Policy
    +
    +policy_client = Policy(azure_audit_info)
    diff --git a/prowler/providers/azure/services/policy/policy_ensure_asc_enforcement_enabled/__init__.py b/prowler/providers/azure/services/policy/policy_ensure_asc_enforcement_enabled/__init__.py
    new file mode 100644
    index 00000000000..e69de29bb2d
    diff --git a/prowler/providers/azure/services/policy/policy_ensure_asc_enforcement_enabled/policy_ensure_asc_enforcement_enabled.metadata.json b/prowler/providers/azure/services/policy/policy_ensure_asc_enforcement_enabled/policy_ensure_asc_enforcement_enabled.metadata.json
    new file mode 100644
    index 00000000000..21d1a0eb737
    --- /dev/null
    +++ b/prowler/providers/azure/services/policy/policy_ensure_asc_enforcement_enabled/policy_ensure_asc_enforcement_enabled.metadata.json
    @@ -0,0 +1,30 @@
    +{
    +  "Provider": "azure",
    +  "CheckID": "policy_ensure_asc_enforcement_enabled",
    +  "CheckTitle": "Ensure Any of the ASC Default Policy Settings are Not Set to 'Disabled'",
    +  "CheckType": [],
    +  "ServiceName": "policy",
    +  "SubServiceName": "",
    +  "ResourceIdTemplate": "",
    +  "Severity": "medium",
    +  "ResourceType": "Microsoft.Authorization/policyAssignments",
    +  "Description": "None of the settings offered by ASC Default policy should be set to effect Disabled.",
    +  "Risk": "A security policy defines the desired configuration of your workloads and helps ensure compliance with company or regulatory security requirements. ASC Default policy is associated with every subscription by default. ASC default policy assignment is a set of security recommendations based on best practices. Enabling recommendations in ASC default policy ensures that Azure security center provides the ability to monitor all of the supported recommendations and optionally allow automated action for a few of the supported recommendations.",
    +  "RelatedUrl": "https://learn.microsoft.com/en-us/azure/defender-for-cloud/security-policy-concept",
    +  "Remediation": {
    +    "Code": {
    +      "CLI": "",
    +      "NativeIaC": "",
    +      "Other": "",
    +      "Terraform": ""
    +    },
    +    "Recommendation": {
    +      "Text": "1. From Azure Home select the Portal Menu 2. Select Policy 3. Select ASC Default for each subscription 4. Click on 'view Assignment' 5. Click on 'Edit assignment' 6. Ensure Policy Enforcement is Enabled 7. Click 'Review + Save'",
    +      "Url": "https://learn.microsoft.com/en-us/azure/defender-for-cloud/implement-security-recommendations"
    +    }
    +  },
    +  "Categories": [],
    +  "DependsOn": [],
    +  "RelatedTo": [],
    +  "Notes": ""
    +}
    diff --git a/prowler/providers/azure/services/policy/policy_ensure_asc_enforcement_enabled/policy_ensure_asc_enforcement_enabled.py b/prowler/providers/azure/services/policy/policy_ensure_asc_enforcement_enabled/policy_ensure_asc_enforcement_enabled.py
    new file mode 100644
    index 00000000000..92295f0a002
    --- /dev/null
    +++ b/prowler/providers/azure/services/policy/policy_ensure_asc_enforcement_enabled/policy_ensure_asc_enforcement_enabled.py
    @@ -0,0 +1,24 @@
    +from prowler.lib.check.models import Check, Check_Report_Azure
    +from prowler.providers.azure.services.policy.policy_client import policy_client
    +
    +
    +class policy_ensure_asc_enforcement_enabled(Check):
    +    def execute(self) -> Check_Report_Azure:
    +        findings = []
    +
    +        for subscription_name, policies in policy_client.policy_assigments.items():
    +            if "SecurityCenterBuiltIn" in policies:
    +                report = Check_Report_Azure(self.metadata())
    +                report.status = "PASS"
    +                report.subscription = subscription_name
    +                report.resource_name = "SecurityCenterBuiltIn"
    +                report.resource_id = policies["SecurityCenterBuiltIn"].id
    +                report.status_extended = f"Policy assigment '{policies['SecurityCenterBuiltIn'].id}' is configured with enforcement mode '{policies['SecurityCenterBuiltIn'].enforcement_mode}'."
    +
    +                if policies["SecurityCenterBuiltIn"].enforcement_mode != "Default":
    +                    report.status = "FAIL"
    +                    report.status_extended = f"Policy assigment '{policies['SecurityCenterBuiltIn'].id}' is not configured with enforcement mode Default."
    +
    +                findings.append(report)
    +
    +        return findings
    diff --git a/prowler/providers/azure/services/policy/policy_service.py b/prowler/providers/azure/services/policy/policy_service.py
    new file mode 100644
    index 00000000000..af3e4fe673c
    --- /dev/null
    +++ b/prowler/providers/azure/services/policy/policy_service.py
    @@ -0,0 +1,45 @@
    +from dataclasses import dataclass
    +
    +from azure.mgmt.resource.policy import PolicyClient
    +
    +from prowler.lib.logger import logger
    +from prowler.providers.azure.lib.audit_info.models import Azure_Audit_Info
    +from prowler.providers.azure.lib.service.service import AzureService
    +
    +
    +########################## Policy
    +class Policy(AzureService):
    +    def __init__(self, audit_info: Azure_Audit_Info):
    +        super().__init__(PolicyClient, audit_info)
    +        self.policy_assigments = self.__get_policy_assigments__()
    +
    +    def __get_policy_assigments__(self):
    +        logger.info("Policy - Getting policy assigments...")
    +        policy_assigments = {}
    +
    +        for subscription_name, client in self.clients.items():
    +            try:
    +                policy_assigments_list = client.policy_assignments.list()
    +                policy_assigments.update({subscription_name: {}})
    +
    +                for policy_assigment in policy_assigments_list:
    +                    policy_assigments[subscription_name].update(
    +                        {
    +                            policy_assigment.name: PolicyAssigment(
    +                                id=policy_assigment.id,
    +                                enforcement_mode=policy_assigment.enforcement_mode,
    +                            )
    +                        }
    +                    )
    +            except Exception as error:
    +                logger.error(
    +                    f"Subscription name: {subscription_name} -- {error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}"
    +                )
    +
    +        return policy_assigments
    +
    +
    +@dataclass
    +class PolicyAssigment:
    +    id: str
    +    enforcement_mode: str
    diff --git a/prowler/providers/azure/services/postgresql/__init__.py b/prowler/providers/azure/services/postgresql/__init__.py
    new file mode 100644
    index 00000000000..e69de29bb2d
    diff --git a/prowler/providers/azure/services/postgresql/postgresql_client.py b/prowler/providers/azure/services/postgresql/postgresql_client.py
    new file mode 100644
    index 00000000000..2c945821301
    --- /dev/null
    +++ b/prowler/providers/azure/services/postgresql/postgresql_client.py
    @@ -0,0 +1,4 @@
    +from prowler.providers.azure.lib.audit_info.audit_info import azure_audit_info
    +from prowler.providers.azure.services.postgresql.postgresql_service import PostgreSQL
    +
    +postgresql_client = PostgreSQL(azure_audit_info)
    diff --git a/prowler/providers/azure/services/postgresql/postgresql_flexible_server_allow_access_services_disabled/__init__.py b/prowler/providers/azure/services/postgresql/postgresql_flexible_server_allow_access_services_disabled/__init__.py
    new file mode 100644
    index 00000000000..e69de29bb2d
    diff --git a/prowler/providers/azure/services/postgresql/postgresql_flexible_server_allow_access_services_disabled/postgresql_flexible_server_allow_access_services_disabled.metadata.json b/prowler/providers/azure/services/postgresql/postgresql_flexible_server_allow_access_services_disabled/postgresql_flexible_server_allow_access_services_disabled.metadata.json
    new file mode 100644
    index 00000000000..5e0850280c2
    --- /dev/null
    +++ b/prowler/providers/azure/services/postgresql/postgresql_flexible_server_allow_access_services_disabled/postgresql_flexible_server_allow_access_services_disabled.metadata.json
    @@ -0,0 +1,30 @@
    +{
    +  "Provider": "azure",
    +  "CheckID": "postgresql_flexible_server_allow_access_services_disabled",
    +  "CheckTitle": "Ensure 'Allow access to Azure services' for PostgreSQL Database Server is disabled",
    +  "CheckType": [],
    +  "ServiceName": "postgresql",
    +  "SubServiceName": "",
    +  "ResourceIdTemplate": "",
    +  "Severity": "medium",
    +  "ResourceType": "PostgreSQL",
    +  "Description": "Disable access from Azure services to PostgreSQL Database Server.",
    +  "Risk": "If access from Azure services is enabled, the server's firewall will accept connections from all Azure resources, including resources not in your subscription. This is usually not a desired configuration. Instead, set up firewall rules to allow access from specific network ranges or VNET rules to allow access from specific virtual networks.",
    +  "RelatedUrl": "https://docs.microsoft.com/en-us/azure/postgresql/concepts-firewall-rules",
    +  "Remediation": {
    +    "Code": {
    +      "CLI": "az postgres server firewall-rule delete --name AllowAllWindowsAzureIps --resource-group  --server-name ",
    +      "NativeIaC": "",
    +      "Other": "https://www.trendmicro.com/cloudoneconformity/knowledge-base/azure/PostgreSQL/disable-all-services-access.html#",
    +      "Terraform": "https://docs.bridgecrew.io/docs/ensure-allow-access-to-azure-services-for-postgresql-database-server-is-disabled#terraform"
    +    },
    +    "Recommendation": {
    +      "Text": "From Azure Portal 1. Login to Azure Portal using https://portal.azure.com. 2. Go to Azure Database for PostgreSQL servers. 3. For each database, click on Connection security. 4. Under Firewall rules, set Allow access to Azure services to No. 5. Click Save. From Azure CLI Use the below command to delete the AllowAllWindowsAzureIps rule for PostgreSQL Database. az postgres server firewall-rule delete --name AllowAllWindowsAzureIps -- resource-group  --server-name ",
    +      "Url": "https://learn.microsoft.com/en-us/azure/postgresql/single-server/quickstart-create-server-database-azure-cli#configure-a-server-based-firewall-rule"
    +    }
    +  },
    +  "Categories": [],
    +  "DependsOn": [],
    +  "RelatedTo": [],
    +  "Notes": ""
    +}
    diff --git a/prowler/providers/azure/services/postgresql/postgresql_flexible_server_allow_access_services_disabled/postgresql_flexible_server_allow_access_services_disabled.py b/prowler/providers/azure/services/postgresql/postgresql_flexible_server_allow_access_services_disabled/postgresql_flexible_server_allow_access_services_disabled.py
    new file mode 100644
    index 00000000000..8c0aa09a43f
    --- /dev/null
    +++ b/prowler/providers/azure/services/postgresql/postgresql_flexible_server_allow_access_services_disabled/postgresql_flexible_server_allow_access_services_disabled.py
    @@ -0,0 +1,29 @@
    +from prowler.lib.check.models import Check, Check_Report_Azure
    +from prowler.providers.azure.services.postgresql.postgresql_client import (
    +    postgresql_client,
    +)
    +
    +
    +class postgresql_flexible_server_allow_access_services_disabled(Check):
    +    def execute(self) -> Check_Report_Azure:
    +        findings = []
    +        for (
    +            subscription,
    +            flexible_servers,
    +        ) in postgresql_client.flexible_servers.items():
    +            for server in flexible_servers:
    +                report = Check_Report_Azure(self.metadata())
    +                report.subscription = subscription
    +                report.resource_name = server.name
    +                report.resource_id = server.id
    +                report.status = "FAIL"
    +                report.status_extended = f"Flexible Postgresql server {server.name} from subscription {subscription} has allow public access from any Azure service enabled"
    +                if not any(
    +                    rule.start_ip == "0.0.0.0" and rule.end_ip == "0.0.0.0"
    +                    for rule in server.firewall
    +                ):
    +                    report.status = "PASS"
    +                    report.status_extended = f"Flexible Postgresql server {server.name} from subscription {subscription} has allow public access from any Azure service disabled"
    +                findings.append(report)
    +
    +        return findings
    diff --git a/prowler/providers/azure/services/postgresql/postgresql_flexible_server_connection_throttling_on/__init__.py b/prowler/providers/azure/services/postgresql/postgresql_flexible_server_connection_throttling_on/__init__.py
    new file mode 100644
    index 00000000000..e69de29bb2d
    diff --git a/prowler/providers/azure/services/postgresql/postgresql_flexible_server_connection_throttling_on/postgresql_flexible_server_connection_throttling_on.metadata.json b/prowler/providers/azure/services/postgresql/postgresql_flexible_server_connection_throttling_on/postgresql_flexible_server_connection_throttling_on.metadata.json
    new file mode 100644
    index 00000000000..445dbf5981d
    --- /dev/null
    +++ b/prowler/providers/azure/services/postgresql/postgresql_flexible_server_connection_throttling_on/postgresql_flexible_server_connection_throttling_on.metadata.json
    @@ -0,0 +1,30 @@
    +{
    +  "Provider": "azure",
    +  "CheckID": "postgresql_flexible_server_connection_throttling_on",
    +  "CheckTitle": "Ensure server parameter 'connection_throttling' is set to 'ON' for PostgreSQL Database Server",
    +  "CheckType": [],
    +  "ServiceName": "postgresql",
    +  "SubServiceName": "",
    +  "ResourceIdTemplate": "",
    +  "Severity": "medium",
    +  "ResourceType": "PostgreSQL",
    +  "Description": "Enable connection_throttling on PostgreSQL Servers.",
    +  "Risk": "Enabling connection_throttling helps the PostgreSQL Database to Set the verbosity of logged messages. This in turn generates query and error logs with respect to concurrent connections that could lead to a successful Denial of Service (DoS) attack by exhausting connection resources. A system can also fail or be degraded by an overload of legitimate users. Query and error logs can be used to identify, troubleshoot, and repair configuration errors and sub-optimal performance.",
    +  "RelatedUrl": " https://docs.microsoft.com/en-us/rest/api/postgresql/configurations/listbyserver",
    +  "Remediation": {
    +    "Code": {
    +      "CLI": "az postgres server configuration set --resource-group  --server-name  --name connection_throttling --value on",
    +      "NativeIaC": "",
    +      "Other": "https://www.trendmicro.com/cloudoneconformity-staging/knowledge-base/azure/PostgreSQL/connection-throttling.html",
    +      "Terraform": "https://docs.bridgecrew.io/docs/bc_azr_networking_13#terraform"
    +    },
    +    "Recommendation": {
    +      "Text": "From Azure Portal 1. Login to Azure Portal using https://portal.azure.com. 2. Go to Azure Database for PostgreSQL servers. 3. For each database, click on Server parameters. 4. Search for connection_throttling. 5. Click ON and save. From Azure CLI Use the below command to update connection_throttling configuration. az postgres server configuration set --resource-group  -- server-name  --name connection_throttling --value on From PowerShell Use the below command to update connection_throttling configuration. Update-AzPostgreSqlConfiguration -ResourceGroupName  - ServerName  -Name connection_throttling -Value on",
    +      "Url": "https://learn.microsoft.com/en-us/azure/postgresql/single-server/how-to-configure-server-parameters-using-portal"
    +    }
    +  },
    +  "Categories": [],
    +  "DependsOn": [],
    +  "RelatedTo": [],
    +  "Notes": ""
    +}
    diff --git a/prowler/providers/azure/services/postgresql/postgresql_flexible_server_connection_throttling_on/postgresql_flexible_server_connection_throttling_on.py b/prowler/providers/azure/services/postgresql/postgresql_flexible_server_connection_throttling_on/postgresql_flexible_server_connection_throttling_on.py
    new file mode 100644
    index 00000000000..c1855d6ca74
    --- /dev/null
    +++ b/prowler/providers/azure/services/postgresql/postgresql_flexible_server_connection_throttling_on/postgresql_flexible_server_connection_throttling_on.py
    @@ -0,0 +1,26 @@
    +from prowler.lib.check.models import Check, Check_Report_Azure
    +from prowler.providers.azure.services.postgresql.postgresql_client import (
    +    postgresql_client,
    +)
    +
    +
    +class postgresql_flexible_server_connection_throttling_on(Check):
    +    def execute(self) -> Check_Report_Azure:
    +        findings = []
    +        for (
    +            subscription,
    +            flexible_servers,
    +        ) in postgresql_client.flexible_servers.items():
    +            for server in flexible_servers:
    +                report = Check_Report_Azure(self.metadata())
    +                report.subscription = subscription
    +                report.resource_name = server.name
    +                report.resource_id = server.id
    +                report.status = "FAIL"
    +                report.status_extended = f"Flexible Postgresql server {server.name} from subscription {subscription} has connection_throttling disabled"
    +                if server.connection_throttling == "ON":
    +                    report.status = "PASS"
    +                    report.status_extended = f"Flexible Postgresql server {server.name} from subscription {subscription} has connection_throttling enabled"
    +                findings.append(report)
    +
    +        return findings
    diff --git a/prowler/providers/azure/services/postgresql/postgresql_flexible_server_enforce_ssl_enabled/__init__.py b/prowler/providers/azure/services/postgresql/postgresql_flexible_server_enforce_ssl_enabled/__init__.py
    new file mode 100644
    index 00000000000..e69de29bb2d
    diff --git a/prowler/providers/azure/services/postgresql/postgresql_flexible_server_enforce_ssl_enabled/postgresql_flexible_server_enforce_ssl_enabled.metadata.json b/prowler/providers/azure/services/postgresql/postgresql_flexible_server_enforce_ssl_enabled/postgresql_flexible_server_enforce_ssl_enabled.metadata.json
    new file mode 100644
    index 00000000000..14ceef526e6
    --- /dev/null
    +++ b/prowler/providers/azure/services/postgresql/postgresql_flexible_server_enforce_ssl_enabled/postgresql_flexible_server_enforce_ssl_enabled.metadata.json
    @@ -0,0 +1,30 @@
    +{
    +  "Provider": "azure",
    +  "CheckID": "postgresql_flexible_server_enforce_ssl_enabled",
    +  "CheckTitle": "Ensure 'Enforce SSL connection' is set to 'ENABLED' for PostgreSQL Database Server",
    +  "CheckType": [],
    +  "ServiceName": "postgresql",
    +  "SubServiceName": "",
    +  "ResourceIdTemplate": "",
    +  "Severity": "medium",
    +  "ResourceType": "PostgreSQL",
    +  "Description": "Enable SSL connection on PostgreSQL Servers.",
    +  "Risk": "SSL connectivity helps to provide a new layer of security by connecting database server to client applications using Secure Sockets Layer (SSL). Enforcing SSL connections between database server and client applications helps protect against 'man in the middle' attacks by encrypting the data stream between the server and application.",
    +  "RelatedUrl": "https://learn.microsoft.com/en-us/azure/postgresql/single-server/concepts-ssl-connection-security",
    +  "Remediation": {
    +    "Code": {
    +      "CLI": "az postgres server update --resource-group  --name  --ssl-enforcement Enabled",
    +      "NativeIaC": "",
    +      "Other": "https://docs.bridgecrew.io/docs/bc_azr_networking_10",
    +      "Terraform": "https://docs.bridgecrew.io/docs/bc_azr_networking_10#terraform"
    +    },
    +    "Recommendation": {
    +      "Text": "From Azure Portal 1. Login to Azure Portal using https://portal.azure.com 2. Go to Azure Database for PostgreSQL server 3. For each database, click on Connection security 4. In SSL settings, click on ENABLED to enforce SSL connections 5. Click Save From Azure CLI Use the below command to enforce ssl connection for PostgreSQL Database. az postgres server update --resource-group  --name  --ssl-enforcement Enabled From PowerShell Update-AzPostgreSqlServer -ResourceGroupName  -ServerName  -SslEnforcement Enabled",
    +      "Url": "https://learn.microsoft.com/en-us/azure/postgresql/single-server/concepts-ssl-connection-security"
    +    }
    +  },
    +  "Categories": [],
    +  "DependsOn": [],
    +  "RelatedTo": [],
    +  "Notes": "."
    +}
    diff --git a/prowler/providers/azure/services/postgresql/postgresql_flexible_server_enforce_ssl_enabled/postgresql_flexible_server_enforce_ssl_enabled.py b/prowler/providers/azure/services/postgresql/postgresql_flexible_server_enforce_ssl_enabled/postgresql_flexible_server_enforce_ssl_enabled.py
    new file mode 100644
    index 00000000000..9feaa6b93dc
    --- /dev/null
    +++ b/prowler/providers/azure/services/postgresql/postgresql_flexible_server_enforce_ssl_enabled/postgresql_flexible_server_enforce_ssl_enabled.py
    @@ -0,0 +1,26 @@
    +from prowler.lib.check.models import Check, Check_Report_Azure
    +from prowler.providers.azure.services.postgresql.postgresql_client import (
    +    postgresql_client,
    +)
    +
    +
    +class postgresql_flexible_server_enforce_ssl_enabled(Check):
    +    def execute(self) -> Check_Report_Azure:
    +        findings = []
    +        for (
    +            subscription,
    +            flexible_servers,
    +        ) in postgresql_client.flexible_servers.items():
    +            for server in flexible_servers:
    +                report = Check_Report_Azure(self.metadata())
    +                report.subscription = subscription
    +                report.resource_name = server.name
    +                report.resource_id = server.id
    +                report.status = "FAIL"
    +                report.status_extended = f"Flexible Postgresql server {server.name} from subscription {subscription} has enforce ssl disabled"
    +                if server.require_secure_transport == "ON":
    +                    report.status = "PASS"
    +                    report.status_extended = f"Flexible Postgresql server {server.name} from subscription {subscription} has enforce ssl enabled"
    +                findings.append(report)
    +
    +        return findings
    diff --git a/prowler/providers/azure/services/postgresql/postgresql_flexible_server_log_checkpoints_on/__init__.py b/prowler/providers/azure/services/postgresql/postgresql_flexible_server_log_checkpoints_on/__init__.py
    new file mode 100644
    index 00000000000..e69de29bb2d
    diff --git a/prowler/providers/azure/services/postgresql/postgresql_flexible_server_log_checkpoints_on/postgresql_flexible_server_log_checkpoints_on.metadata.json b/prowler/providers/azure/services/postgresql/postgresql_flexible_server_log_checkpoints_on/postgresql_flexible_server_log_checkpoints_on.metadata.json
    new file mode 100644
    index 00000000000..e506a7f1fc6
    --- /dev/null
    +++ b/prowler/providers/azure/services/postgresql/postgresql_flexible_server_log_checkpoints_on/postgresql_flexible_server_log_checkpoints_on.metadata.json
    @@ -0,0 +1,30 @@
    +{
    +  "Provider": "azure",
    +  "CheckID": "postgresql_flexible_server_log_checkpoints_on",
    +  "CheckTitle": "Ensure Server Parameter 'log_checkpoints' is set to 'ON' for PostgreSQL Database Server",
    +  "CheckType": [],
    +  "ServiceName": "postgresql",
    +  "SubServiceName": "",
    +  "ResourceIdTemplate": "",
    +  "Severity": "medium",
    +  "ResourceType": "PostgreSQL",
    +  "Description": "Enable log_checkpoints on PostgreSQL Servers.",
    +  "Risk": "Enabling log_checkpoints helps the PostgreSQL Database to Log each checkpoint in turn generates query and error logs. However, access to transaction logs is not supported. Query and error logs can be used to identify, troubleshoot, and repair configuration errors and sub-optimal performance.",
    +  "RelatedUrl": " https://docs.microsoft.com/en-us/rest/api/postgresql/singleserver/configurations/list-by-server",
    +  "Remediation": {
    +    "Code": {
    +      "CLI": "az postgres server configuration set --resource-group  --server-name  --name log_checkpoints --value on",
    +      "NativeIaC": "",
    +      "Other": "https://www.trendmicro.com/cloudoneconformity-staging/knowledge-base/azure/PostgreSQL/log-checkpoints.html#",
    +      "Terraform": "https://docs.bridgecrew.io/docs/bc_azr_networking_11#terraform"
    +    },
    +    "Recommendation": {
    +      "Text": "From Azure Portal 1. From Azure Home select the Portal Menu. 2. Go to Azure Database for PostgreSQL servers. 3. For each database, click on Server parameters. 4. Search for log_checkpoints. 5. Click ON and save. From Azure CLI Use the below command to update log_checkpoints configuration. az postgres server configuration set --resource-group  -- server-name  --name log_checkpoints --value on From PowerShell Update-AzPostgreSqlConfiguration -ResourceGroupName  - ServerName  -Name log_checkpoints -Value on",
    +      "Url": "https://docs.microsoft.com/en-us/azure/postgresql/howto-configure-server-parameters-using-portal"
    +    }
    +  },
    +  "Categories": [],
    +  "DependsOn": [],
    +  "RelatedTo": [],
    +  "Notes": ""
    +}
    diff --git a/prowler/providers/azure/services/postgresql/postgresql_flexible_server_log_checkpoints_on/postgresql_flexible_server_log_checkpoints_on.py b/prowler/providers/azure/services/postgresql/postgresql_flexible_server_log_checkpoints_on/postgresql_flexible_server_log_checkpoints_on.py
    new file mode 100644
    index 00000000000..3bfcda42ca9
    --- /dev/null
    +++ b/prowler/providers/azure/services/postgresql/postgresql_flexible_server_log_checkpoints_on/postgresql_flexible_server_log_checkpoints_on.py
    @@ -0,0 +1,26 @@
    +from prowler.lib.check.models import Check, Check_Report_Azure
    +from prowler.providers.azure.services.postgresql.postgresql_client import (
    +    postgresql_client,
    +)
    +
    +
    +class postgresql_flexible_server_log_checkpoints_on(Check):
    +    def execute(self) -> Check_Report_Azure:
    +        findings = []
    +        for (
    +            subscription,
    +            flexible_servers,
    +        ) in postgresql_client.flexible_servers.items():
    +            for server in flexible_servers:
    +                report = Check_Report_Azure(self.metadata())
    +                report.subscription = subscription
    +                report.resource_name = server.name
    +                report.resource_id = server.id
    +                report.status = "FAIL"
    +                report.status_extended = f"Flexible Postgresql server {server.name} from subscription {subscription} has log_checkpoints disabled"
    +                if server.log_checkpoints == "ON":
    +                    report.status = "PASS"
    +                    report.status_extended = f"Flexible Postgresql server {server.name} from subscription {subscription} has log_checkpoints enabled"
    +                findings.append(report)
    +
    +        return findings
    diff --git a/prowler/providers/azure/services/postgresql/postgresql_flexible_server_log_connections_on/__init__.py b/prowler/providers/azure/services/postgresql/postgresql_flexible_server_log_connections_on/__init__.py
    new file mode 100644
    index 00000000000..e69de29bb2d
    diff --git a/prowler/providers/azure/services/postgresql/postgresql_flexible_server_log_connections_on/postgresql_flexible_server_log_connections_on.metadata.json b/prowler/providers/azure/services/postgresql/postgresql_flexible_server_log_connections_on/postgresql_flexible_server_log_connections_on.metadata.json
    new file mode 100644
    index 00000000000..1382dd28f69
    --- /dev/null
    +++ b/prowler/providers/azure/services/postgresql/postgresql_flexible_server_log_connections_on/postgresql_flexible_server_log_connections_on.metadata.json
    @@ -0,0 +1,30 @@
    +{
    +  "Provider": "azure",
    +  "CheckID": "postgresql_flexible_server_log_connections_on",
    +  "CheckTitle": "Ensure server parameter 'log_connections' is set to 'ON' for PostgreSQL Database Server",
    +  "CheckType": [],
    +  "ServiceName": "postgresql",
    +  "SubServiceName": "",
    +  "ResourceIdTemplate": "",
    +  "Severity": "medium",
    +  "ResourceType": "PostgreSQL",
    +  "Description": "Enable log_connections on PostgreSQL Servers.",
    +  "Risk": "Enabling log_connections helps PostgreSQL Database to log attempted connection to the server, as well as successful completion of client authentication. Log data can be used to identify, troubleshoot, and repair configuration errors and suboptimal performance.",
    +  "RelatedUrl": "https://docs.microsoft.com/en-us/rest/api/postgresql/configurations/listbyserver",
    +  "Remediation": {
    +    "Code": {
    +      "CLI": "az postgres server configuration set --resource-group  --server-name  --name log_connections --value on",
    +      "NativeIaC": "",
    +      "Other": "https://www.trendmicro.com/cloudoneconformity-staging/knowledge-base/azure/PostgreSQL/log-connections.html",
    +      "Terraform": "https://docs.bridgecrew.io/docs/bc_azr_networking_12#terraform"
    +    },
    +    "Recommendation": {
    +      "Text": "From Azure Portal 1. Login to Azure Portal using https://portal.azure.com. 2. Go to Azure Database for PostgreSQL servers. 3. For each database, click on Server parameters. 4. Search for log_connections. 5. Click ON and save. From Azure CLI Use the below command to update log_connections configuration. az postgres server configuration set --resource-group  -- server-name  --name log_connections --value on From PowerShell Use the below command to update log_connections configuration. Update-AzPostgreSqlConfiguration -ResourceGroupName  - ServerName  -Name log_connections -Value on",
    +      "Url": "https://learn.microsoft.com/en-us/azure/postgresql/single-server/how-to-configure-server-parameters-using-portal"
    +    }
    +  },
    +  "Categories": [],
    +  "DependsOn": [],
    +  "RelatedTo": [],
    +  "Notes": ""
    +}
    diff --git a/prowler/providers/azure/services/postgresql/postgresql_flexible_server_log_connections_on/postgresql_flexible_server_log_connections_on.py b/prowler/providers/azure/services/postgresql/postgresql_flexible_server_log_connections_on/postgresql_flexible_server_log_connections_on.py
    new file mode 100644
    index 00000000000..0ae39b71f47
    --- /dev/null
    +++ b/prowler/providers/azure/services/postgresql/postgresql_flexible_server_log_connections_on/postgresql_flexible_server_log_connections_on.py
    @@ -0,0 +1,26 @@
    +from prowler.lib.check.models import Check, Check_Report_Azure
    +from prowler.providers.azure.services.postgresql.postgresql_client import (
    +    postgresql_client,
    +)
    +
    +
    +class postgresql_flexible_server_log_connections_on(Check):
    +    def execute(self) -> Check_Report_Azure:
    +        findings = []
    +        for (
    +            subscription,
    +            flexible_servers,
    +        ) in postgresql_client.flexible_servers.items():
    +            for server in flexible_servers:
    +                report = Check_Report_Azure(self.metadata())
    +                report.subscription = subscription
    +                report.resource_name = server.name
    +                report.resource_id = server.id
    +                report.status = "FAIL"
    +                report.status_extended = f"Flexible Postgresql server {server.name} from subscription {subscription} has log_connections disabled"
    +                if server.log_connections == "ON":
    +                    report.status = "PASS"
    +                    report.status_extended = f"Flexible Postgresql server {server.name} from subscription {subscription} has log_connections enabled"
    +                findings.append(report)
    +
    +        return findings
    diff --git a/prowler/providers/azure/services/postgresql/postgresql_flexible_server_log_disconnections_on/__init__.py b/prowler/providers/azure/services/postgresql/postgresql_flexible_server_log_disconnections_on/__init__.py
    new file mode 100644
    index 00000000000..e69de29bb2d
    diff --git a/prowler/providers/azure/services/postgresql/postgresql_flexible_server_log_disconnections_on/postgresql_flexible_server_log_disconnections_on.metadata.json b/prowler/providers/azure/services/postgresql/postgresql_flexible_server_log_disconnections_on/postgresql_flexible_server_log_disconnections_on.metadata.json
    new file mode 100644
    index 00000000000..1f75ad5dd6f
    --- /dev/null
    +++ b/prowler/providers/azure/services/postgresql/postgresql_flexible_server_log_disconnections_on/postgresql_flexible_server_log_disconnections_on.metadata.json
    @@ -0,0 +1,30 @@
    +{
    +  "Provider": "azure",
    +  "CheckID": "postgresql_flexible_server_log_disconnections_on",
    +  "CheckTitle": "Ensure server parameter 'log_disconnections' is set to 'ON' for PostgreSQL Database Server",
    +  "CheckType": [],
    +  "ServiceName": "postgresql",
    +  "SubServiceName": "",
    +  "ResourceIdTemplate": "",
    +  "Severity": "medium",
    +  "ResourceType": "PostgreSQL",
    +  "Description": "Enable log_disconnections on PostgreSQL Servers.",
    +  "Risk": "Enabling log_disconnections helps PostgreSQL Database to Logs end of a session, including duration, which in turn generates query and error logs. Query and error logs can be used to identify, troubleshoot, and repair configuration errors and sub-optimal performance.",
    +  "RelatedUrl": "https://docs.microsoft.com/en-us/rest/api/postgresql/singleserver/configurations/list-by-server",
    +  "Remediation": {
    +    "Code": {
    +      "CLI": "az postgres server configuration set --resource-group  --server-name  --name log_disconnections --value on",
    +      "NativeIaC": "",
    +      "Other": "https://www.trendmicro.com/cloudoneconformity/knowledge-base/azure/PostgreSQL/log-disconnections.html",
    +      "Terraform": ""
    +    },
    +    "Recommendation": {
    +      "Text": "From Azure Portal 1. From Azure Home select the Portal Menu 2. Go to Azure Database for PostgreSQL servers 3. For each database, click on Server parameters 4. Search for log_disconnections. 5. Click ON and save. From Azure CLI Use the below command to update log_disconnections configuration. az postgres server configuration set --resource-group  -- server-name  --name log_disconnections --value on From PowerShell Use the below command to update log_disconnections configuration. Update-AzPostgreSqlConfiguration -ResourceGroupName  Check_Report_Azure:
    +        findings = []
    +        for (
    +            subscription,
    +            flexible_servers,
    +        ) in postgresql_client.flexible_servers.items():
    +            for server in flexible_servers:
    +                report = Check_Report_Azure(self.metadata())
    +                report.subscription = subscription
    +                report.resource_name = server.name
    +                report.resource_id = server.id
    +                report.status = "FAIL"
    +                report.status_extended = f"Flexible Postgresql server {server.name} from subscription {subscription} has log_disconnections disabled"
    +                if server.log_disconnections == "ON":
    +                    report.status = "PASS"
    +                    report.status_extended = f"Flexible Postgresql server {server.name} from subscription {subscription} has log_disconnections enabled"
    +                findings.append(report)
    +
    +        return findings
    diff --git a/prowler/providers/azure/services/postgresql/postgresql_flexible_server_log_retention_days_greater_3/__init__.py b/prowler/providers/azure/services/postgresql/postgresql_flexible_server_log_retention_days_greater_3/__init__.py
    new file mode 100644
    index 00000000000..e69de29bb2d
    diff --git a/prowler/providers/azure/services/postgresql/postgresql_flexible_server_log_retention_days_greater_3/postgresql_flexible_server_log_retention_days_greater_3.metadata.json b/prowler/providers/azure/services/postgresql/postgresql_flexible_server_log_retention_days_greater_3/postgresql_flexible_server_log_retention_days_greater_3.metadata.json
    new file mode 100644
    index 00000000000..c346f52b0be
    --- /dev/null
    +++ b/prowler/providers/azure/services/postgresql/postgresql_flexible_server_log_retention_days_greater_3/postgresql_flexible_server_log_retention_days_greater_3.metadata.json
    @@ -0,0 +1,30 @@
    +{
    +  "Provider": "azure",
    +  "CheckID": "postgresql_flexible_server_log_retention_days_greater_3",
    +  "CheckTitle": "Ensure Server Parameter 'log_retention_days' is greater than 3 days for PostgreSQL Database Server",
    +  "CheckType": [],
    +  "ServiceName": "postgresql",
    +  "SubServiceName": "",
    +  "ResourceIdTemplate": "",
    +  "Severity": "medium",
    +  "ResourceType": "PostgreSQL",
    +  "Description": "Ensure log_retention_days on PostgreSQL Servers is set to an appropriate value.",
    +  "Risk": "Configuring log_retention_days determines the duration in days that Azure Database for PostgreSQL retains log files. Query and error logs can be used to identify, troubleshoot, and repair configuration errors and sub-optimal performance.",
    +  "RelatedUrl": "https://docs.microsoft.com/en-us/azure/postgresql/howto-configure-server-parameters-using-portal",
    +  "Remediation": {
    +    "Code": {
    +      "CLI": "az postgres server configuration set --resource-group  --server-name  --name log_retention_days --value <4-7>",
    +      "NativeIaC": "",
    +      "Other": "https://www.trendmicro.com/cloudoneconformity-staging/knowledge-base/azure/PostgreSQL/log-retention-days.html",
    +      "Terraform": ""
    +    },
    +    "Recommendation": {
    +      "Text": "From Azure Portal 1. From Azure Home select the Portal Menu. 2. Go to Azure Database for PostgreSQL servers. 3. For each database, click on Server parameters. 4. Search for log_retention_days. 5. Input a value between 4 and 7 (inclusive) and click Save. From Azure CLI Use the below command to update log_retention_days configuration. az postgres server configuration set --resource-group  -- server-name  --name log_retention_days --value <4-7> From Powershell Use the below command to update log_retention_days configuration. Update-AzPostgreSqlConfiguration -ResourceGroupName  - ServerName  -Name log_retention_days -Value <4-7>",
    +      "Url": "https://learn.microsoft.com/en-us/rest/api/postgresql/singleserver/configurations/list-by-server?view=rest-postgresql-singleserver-2017-12-01&tabs=HTTP"
    +    }
    +  },
    +  "Categories": [],
    +  "DependsOn": [],
    +  "RelatedTo": [],
    +  "Notes": "Configuring this setting will result in logs being retained for the specified number of days. If this is configured on a high traffic server, the log may grow quickly to occupy a large amount of disk space. In this case you may want to set this to a lower number."
    +}
    diff --git a/prowler/providers/azure/services/postgresql/postgresql_flexible_server_log_retention_days_greater_3/postgresql_flexible_server_log_retention_days_greater_3.py b/prowler/providers/azure/services/postgresql/postgresql_flexible_server_log_retention_days_greater_3/postgresql_flexible_server_log_retention_days_greater_3.py
    new file mode 100644
    index 00000000000..6880c45590e
    --- /dev/null
    +++ b/prowler/providers/azure/services/postgresql/postgresql_flexible_server_log_retention_days_greater_3/postgresql_flexible_server_log_retention_days_greater_3.py
    @@ -0,0 +1,30 @@
    +from prowler.lib.check.models import Check, Check_Report_Azure
    +from prowler.providers.azure.services.postgresql.postgresql_client import (
    +    postgresql_client,
    +)
    +
    +
    +class postgresql_flexible_server_log_retention_days_greater_3(Check):
    +    def execute(self) -> Check_Report_Azure:
    +        findings = []
    +        for (
    +            subscription,
    +            flexible_servers,
    +        ) in postgresql_client.flexible_servers.items():
    +            for server in flexible_servers:
    +                report = Check_Report_Azure(self.metadata())
    +                report.subscription = subscription
    +                report.resource_name = server.name
    +                report.resource_id = server.id
    +                report.status = "FAIL"
    +                report.status_extended = f"Flexible Postgresql server {server.name} from subscription {subscription} has log_retention disabled"
    +                if server.log_retention_days:
    +                    report.status_extended = f"Flexible Postgresql server {server.name} from subscription {subscription} has log_retention set to {server.log_retention_days}"
    +                    if (
    +                        int(server.log_retention_days) > 3
    +                        and int(server.log_retention_days) < 8
    +                    ):
    +                        report.status = "PASS"
    +                findings.append(report)
    +
    +        return findings
    diff --git a/prowler/providers/azure/services/postgresql/postgresql_service.py b/prowler/providers/azure/services/postgresql/postgresql_service.py
    new file mode 100644
    index 00000000000..7a93e0e3dbc
    --- /dev/null
    +++ b/prowler/providers/azure/services/postgresql/postgresql_service.py
    @@ -0,0 +1,153 @@
    +from dataclasses import dataclass
    +
    +from azure.mgmt.rdbms.postgresql_flexibleservers import PostgreSQLManagementClient
    +
    +from prowler.lib.logger import logger
    +from prowler.providers.azure.lib.service.service import AzureService
    +
    +
    +class PostgreSQL(AzureService):
    +    def __init__(self, audit_info):
    +        super().__init__(PostgreSQLManagementClient, audit_info)
    +        self.flexible_servers = self.__get_flexible_servers__()
    +
    +    def __get_flexible_servers__(self):
    +        logger.info("PostgreSQL - Getting PostgreSQL servers...")
    +        flexible_servers = {}
    +        for subscription, client in self.clients.items():
    +            try:
    +                flexible_servers.update({subscription: []})
    +                flexible_servers_list = client.servers.list()
    +                for postgresql_server in flexible_servers_list:
    +                    resource_group = self.__get_resource_group__(postgresql_server.id)
    +                    require_secure_transport = self.__get_require_secure_transport__(
    +                        subscription, resource_group, postgresql_server.name
    +                    )
    +                    log_checkpoints = self.__get_log_checkpoints__(
    +                        subscription, resource_group, postgresql_server.name
    +                    )
    +                    log_disconnections = self.__get_log_disconnections__(
    +                        subscription, resource_group, postgresql_server.name
    +                    )
    +                    log_connections = self.__get_log_connections__(
    +                        subscription, resource_group, postgresql_server.name
    +                    )
    +                    connection_throttling = self.__get_connection_throttling__(
    +                        subscription, resource_group, postgresql_server.name
    +                    )
    +                    log_retention_days = self.__get_log_retention_days__(
    +                        subscription, resource_group, postgresql_server.name
    +                    )
    +                    firewall = self.__get_firewall__(
    +                        subscription, resource_group, postgresql_server.name
    +                    )
    +                    flexible_servers[subscription].append(
    +                        Server(
    +                            id=postgresql_server.id,
    +                            name=postgresql_server.name,
    +                            resource_group=resource_group,
    +                            require_secure_transport=require_secure_transport,
    +                            log_checkpoints=log_checkpoints,
    +                            log_connections=log_connections,
    +                            log_disconnections=log_disconnections,
    +                            connection_throttling=connection_throttling,
    +                            log_retention_days=log_retention_days,
    +                            firewall=firewall,
    +                        )
    +                    )
    +            except Exception as error:
    +                logger.error(
    +                    f"Subscription name: {subscription} -- {error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}"
    +                )
    +        return flexible_servers
    +
    +    def __get_resource_group__(self, id):
    +        resource_group = id.split("/")[4]
    +        return resource_group
    +
    +    def __get_require_secure_transport__(
    +        self, subscription, resouce_group_name, server_name
    +    ):
    +        client = self.clients[subscription]
    +        require_secure_transport = client.configurations.get(
    +            resouce_group_name, server_name, "require_secure_transport"
    +        )
    +        return require_secure_transport.value.upper()
    +
    +    def __get_log_checkpoints__(self, subscription, resouce_group_name, server_name):
    +        client = self.clients[subscription]
    +        log_checkpoints = client.configurations.get(
    +            resouce_group_name, server_name, "log_checkpoints"
    +        )
    +        return log_checkpoints.value.upper()
    +
    +    def __get_log_connections__(self, subscription, resouce_group_name, server_name):
    +        client = self.clients[subscription]
    +        log_connections = client.configurations.get(
    +            resouce_group_name, server_name, "log_connections"
    +        )
    +        return log_connections.value.upper()
    +
    +    def __get_log_disconnections__(self, subscription, resouce_group_name, server_name):
    +        client = self.clients[subscription]
    +        log_disconnections = client.configurations.get(
    +            resouce_group_name, server_name, "log_disconnections"
    +        )
    +        return log_disconnections.value.upper()
    +
    +    def __get_connection_throttling__(
    +        self, subscription, resouce_group_name, server_name
    +    ):
    +        client = self.clients[subscription]
    +        connection_throttling = client.configurations.get(
    +            resouce_group_name, server_name, "connection_throttle.enable"
    +        )
    +        return connection_throttling.value.upper()
    +
    +    def __get_log_retention_days__(self, subscription, resouce_group_name, server_name):
    +        client = self.clients[subscription]
    +        try:
    +            log_retention_days = client.configurations.get(
    +                resouce_group_name, server_name, "log_retention_days"
    +            )
    +            log_retention_days = log_retention_days.value
    +        except Exception:
    +            log_retention_days = None
    +        return log_retention_days
    +
    +    def __get_firewall__(self, subscription, resource_group, server_name):
    +        client = self.clients[subscription]
    +        firewall = client.firewall_rules.list_by_server(resource_group, server_name)
    +        firewall_list = []
    +        for rule in firewall:
    +            firewall_list.append(
    +                Firewall(
    +                    id=rule.id,
    +                    name=rule.name,
    +                    start_ip=rule.start_ip_address,
    +                    end_ip=rule.end_ip_address,
    +                )
    +            )
    +        return firewall_list
    +
    +
    +@dataclass
    +class Firewall:
    +    id: str
    +    name: str
    +    start_ip: str
    +    end_ip: str
    +
    +
    +@dataclass
    +class Server:
    +    id: str
    +    name: str
    +    resource_group: str
    +    require_secure_transport: str
    +    log_checkpoints: str
    +    log_connections: str
    +    log_disconnections: str
    +    connection_throttling: str
    +    log_retention_days: str
    +    firewall: list[Firewall]
    diff --git a/prowler/providers/azure/services/sqlserver/sqlserver_auditing_retention_90_days/__init__.py b/prowler/providers/azure/services/sqlserver/sqlserver_auditing_retention_90_days/__init__.py
    new file mode 100644
    index 00000000000..e69de29bb2d
    diff --git a/prowler/providers/azure/services/sqlserver/sqlserver_auditing_retention_90_days/sqlserver_auditing_retention_90_days.metadata.json b/prowler/providers/azure/services/sqlserver/sqlserver_auditing_retention_90_days/sqlserver_auditing_retention_90_days.metadata.json
    new file mode 100644
    index 00000000000..31396a0b616
    --- /dev/null
    +++ b/prowler/providers/azure/services/sqlserver/sqlserver_auditing_retention_90_days/sqlserver_auditing_retention_90_days.metadata.json
    @@ -0,0 +1,30 @@
    +{
    +  "Provider": "azure",
    +  "CheckID": "sqlserver_auditing_retention_90_days",
    +  "CheckTitle": "Ensure that 'Auditing' Retention is 'greater than 90 days'",
    +  "CheckType": [],
    +  "ServiceName": "sqlserver",
    +  "SubServiceName": "",
    +  "ResourceIdTemplate": "",
    +  "Severity": "medium",
    +  "ResourceType": "SQLServer",
    +  "Description": "SQL Server Audit Retention should be configured to be greater than 90 days.",
    +  "Risk": "Audit Logs can be used to check for anomalies and give insight into suspected breaches or misuse of information and access.",
    +  "RelatedUrl": "https://docs.microsoft.com/en-us/azure/sql-database/sql-database-auditing",
    +  "Remediation": {
    +    "Code": {
    +      "CLI": "Set-AzSqlServerAudit -ResourceGroupName resource_group_name -ServerName SQL_Server_name -RetentionInDays 100 -LogAnalyticsTargetState Enabled -WorkspaceResourceId '/subscriptions/subscription_ID/resourceGroups/insights-integration/providers/Microsoft.OperationalInsights/workspaces/workspace_name'",
    +      "NativeIaC": "",
    +      "Other": "https://www.trendmicro.com/cloudoneconformity-staging/knowledge-base/azure/Sql/auditing-retention.html#",
    +      "Terraform": "https://docs.bridgecrew.io/docs/bc_azr_logging_3"
    +    },
    +    "Recommendation": {
    +      "Text": "1. Go to SQL servers 2. For each server instance 3. Click on Auditing 4. If storage is selected, expand Advanced properties 5. Set the Retention (days) setting greater than 90 days or 0 for unlimited retention. 6. Select Save",
    +      "Url": "https://learn.microsoft.com/en-us/purview/audit-log-retention-policies"
    +    }
    +  },
    +  "Categories": [],
    +  "DependsOn": [],
    +  "RelatedTo": [],
    +  "Notes": ""
    +}
    diff --git a/prowler/providers/azure/services/sqlserver/sqlserver_auditing_retention_90_days/sqlserver_auditing_retention_90_days.py b/prowler/providers/azure/services/sqlserver/sqlserver_auditing_retention_90_days/sqlserver_auditing_retention_90_days.py
    new file mode 100644
    index 00000000000..ef2aee27c36
    --- /dev/null
    +++ b/prowler/providers/azure/services/sqlserver/sqlserver_auditing_retention_90_days/sqlserver_auditing_retention_90_days.py
    @@ -0,0 +1,35 @@
    +from prowler.lib.check.models import Check, Check_Report_Azure
    +from prowler.providers.azure.services.sqlserver.sqlserver_client import sqlserver_client
    +
    +
    +class sqlserver_auditing_retention_90_days(Check):
    +    def execute(self) -> Check_Report_Azure:
    +        findings = []
    +        for subscription, sql_servers in sqlserver_client.sql_servers.items():
    +            for sql_server in sql_servers:
    +                report = Check_Report_Azure(self.metadata())
    +                report.subscription = subscription
    +                report.resource_name = sql_server.name
    +                report.resource_id = sql_server.id
    +                has_failed = False
    +                has_policy = False
    +                for policy in sql_server.auditing_policies:
    +                    has_policy = True
    +                    if has_failed:
    +                        break
    +                    if policy.state == "Enabled":
    +                        if policy.retention_days <= 90:
    +                            report.status = "FAIL"
    +                            report.status_extended = f"SQL Server {sql_server.name} from subscription {subscription} has auditing retention less than 91 days."
    +                            has_failed = True
    +                        else:
    +                            report.status = "PASS"
    +                            report.status_extended = f"SQL Server {sql_server.name} from subscription {subscription} has auditing retention greater than 90 days."
    +                    else:
    +                        report.status = "FAIL"
    +                        report.status_extended = f"SQL Server {sql_server.name} from subscription {subscription} has auditing disabled."
    +                        has_failed = True
    +                if has_policy:
    +                    findings.append(report)
    +
    +        return findings
    diff --git a/prowler/providers/azure/services/sqlserver/sqlserver_microsoft_defender_enabled/__init__.py b/prowler/providers/azure/services/sqlserver/sqlserver_microsoft_defender_enabled/__init__.py
    new file mode 100644
    index 00000000000..e69de29bb2d
    diff --git a/prowler/providers/azure/services/sqlserver/sqlserver_microsoft_defender_enabled/sqlserver_microsoft_defender_enabled.metadata.json b/prowler/providers/azure/services/sqlserver/sqlserver_microsoft_defender_enabled/sqlserver_microsoft_defender_enabled.metadata.json
    new file mode 100644
    index 00000000000..45e44a1e535
    --- /dev/null
    +++ b/prowler/providers/azure/services/sqlserver/sqlserver_microsoft_defender_enabled/sqlserver_microsoft_defender_enabled.metadata.json
    @@ -0,0 +1,30 @@
    +{
    +  "Provider": "azure",
    +  "CheckID": "sqlserver_microsoft_defender_enabled",
    +  "CheckTitle": "Ensure that Microsoft Defender for SQL is set to 'On' for critical SQL Servers",
    +  "CheckType": [],
    +  "ServiceName": "sqlserver",
    +  "SubServiceName": "",
    +  "ResourceIdTemplate": "",
    +  "Severity": "medium",
    +  "ResourceType": "SQLServer",
    +  "Description": "Ensure that Microsoft Defender for SQL is set to 'On' for critical SQL Servers",
    +  "Risk": "Microsoft Defender for SQL is a unified package for advanced SQL security capabilities. Microsoft Defender is available for Azure SQL Database, Azure SQL Managed  classifying sensitive data, surfacing and mitigating potential database vulnerabilities, and detecting anomalous activities that could indicate a threat to your database. It provides a single go-to location for enabling and managing these capabilities.",
    +  "RelatedUrl": "https://docs.microsoft.com/en-us/azure/azure-sql/database/azure-defender-for-sql?view=azuresql",
    +  "Remediation": {
    +    "Code": {
    +      "CLI": "",
    +      "NativeIaC": "",
    +      "Other": "https://www.trendmicro.com/cloudoneconformity-staging/knowledge-base/azure/SecurityCenter/defender-azure-sql.html",
    +      "Terraform": ""
    +    },
    +    "Recommendation": {
    +      "Text": "1. Go to SQL servers For each production SQL server instance: 2. Click Microsoft Defender for Cloud 3. Click Enable Microsoft Defender for SQL",
    +      "Url": "https://learn.microsoft.com/en-us/azure/defender-for-cloud/defender-for-sql-usage"
    +    }
    +  },
    +  "Categories": [],
    +  "DependsOn": [],
    +  "RelatedTo": [],
    +  "Notes": "Microsoft Defender for SQL is a paid feature and will incur additional cost for each SQL server."
    +}
    diff --git a/prowler/providers/azure/services/sqlserver/sqlserver_microsoft_defender_enabled/sqlserver_microsoft_defender_enabled.py b/prowler/providers/azure/services/sqlserver/sqlserver_microsoft_defender_enabled/sqlserver_microsoft_defender_enabled.py
    new file mode 100644
    index 00000000000..696829466c5
    --- /dev/null
    +++ b/prowler/providers/azure/services/sqlserver/sqlserver_microsoft_defender_enabled/sqlserver_microsoft_defender_enabled.py
    @@ -0,0 +1,22 @@
    +from prowler.lib.check.models import Check, Check_Report_Azure
    +from prowler.providers.azure.services.sqlserver.sqlserver_client import sqlserver_client
    +
    +
    +class sqlserver_microsoft_defender_enabled(Check):
    +    def execute(self) -> Check_Report_Azure:
    +        findings = []
    +        for subscription, sql_servers in sqlserver_client.sql_servers.items():
    +            for sql_server in sql_servers:
    +                if sql_server.security_alert_policies:
    +                    report = Check_Report_Azure(self.metadata())
    +                    report.subscription = subscription
    +                    report.resource_name = sql_server.name
    +                    report.resource_id = sql_server.id
    +                    report.status = "FAIL"
    +                    report.status_extended = f"SQL Server {sql_server.name} from subscription {subscription} has microsoft defender disabled."
    +                    if sql_server.security_alert_policies.state == "Enabled":
    +                        report.status = "PASS"
    +                        report.status_extended = f"SQL Server {sql_server.name} from subscription {subscription} has microsoft defender enabled."
    +                    findings.append(report)
    +
    +        return findings
    diff --git a/prowler/providers/azure/services/sqlserver/sqlserver_service.py b/prowler/providers/azure/services/sqlserver/sqlserver_service.py
    index 99ef4404626..386cdeeca10 100644
    --- a/prowler/providers/azure/services/sqlserver/sqlserver_service.py
    +++ b/prowler/providers/azure/services/sqlserver/sqlserver_service.py
    @@ -2,9 +2,13 @@
     
     from azure.mgmt.sql import SqlManagementClient
     from azure.mgmt.sql.models import (
    +    EncryptionProtector,
         FirewallRule,
         ServerBlobAuditingPolicy,
         ServerExternalAdministrator,
    +    ServerSecurityAlertPolicy,
    +    ServerVulnerabilityAssessment,
    +    TransparentDataEncryption,
     )
     
     from prowler.lib.logger import logger
    @@ -26,17 +30,25 @@ def __get_sql_servers__(self):
                     sql_servers_list = client.servers.list()
                     for sql_server in sql_servers_list:
                         resource_group = self.__get_resource_group__(sql_server.id)
    -                    auditing_policies = (
    -                        client.server_blob_auditing_policies.list_by_server(
    -                            resource_group_name=resource_group,
    -                            server_name=sql_server.name,
    -                        )
    +                    auditing_policies = self.__get_server_blob_auditing_policies__(
    +                        subscription, resource_group, sql_server.name
    +                    )
    +                    firewall_rules = self.__get_firewall_rules__(
    +                        subscription, resource_group, sql_server.name
                         )
    -                    firewall_rules = client.firewall_rules.list_by_server(
    -                        resource_group_name=resource_group, server_name=sql_server.name
    +                    encryption_protector = self.__get_enctyption_protectors__(
    +                        subscription, resource_group, sql_server.name
    +                    )
    +                    vulnerability_assessment = self.__get_vulnerability_assesments__(
    +                        subscription, resource_group, sql_server.name
    +                    )
    +                    security_alert_policies = (
    +                        self.__get_server_security_alert_policies__(
    +                            subscription, resource_group, sql_server.name
    +                        )
                         )
                         sql_servers[subscription].append(
    -                        SQL_Server(
    +                        Server(
                                 id=sql_server.id,
                                 name=sql_server.name,
                                 public_network_access=sql_server.public_network_access,
    @@ -44,12 +56,17 @@ def __get_sql_servers__(self):
                                 administrators=sql_server.administrators,
                                 auditing_policies=auditing_policies,
                                 firewall_rules=firewall_rules,
    +                            encryption_protector=encryption_protector,
    +                            databases=self.__get_databases__(
    +                                subscription, resource_group, sql_server.name
    +                            ),
    +                            vulnerability_assessment=vulnerability_assessment,
    +                            security_alert_policies=security_alert_policies,
                             )
                         )
                 except Exception as error:
    -                logger.error(f"Subscription name: {subscription}")
                     logger.error(
    -                    f"{error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}"
    +                    f"Subscription name: {subscription} -- {error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}"
                     )
             return sql_servers
     
    @@ -57,9 +74,108 @@ def __get_resource_group__(self, id):
             resource_group = id.split("/")[4]
             return resource_group
     
    +    def __get_transparent_data_encryption__(
    +        self, subscription, resource_group, server_name, database_name
    +    ):
    +        client = self.clients[subscription]
    +        tde_encrypted = client.transparent_data_encryptions.get(
    +            resource_group_name=resource_group,
    +            server_name=server_name,
    +            database_name=database_name,
    +            transparent_data_encryption_name="current",
    +        )
    +        return tde_encrypted
    +
    +    def __get_enctyption_protectors__(self, subscription, resource_group, server_name):
    +        client = self.clients[subscription]
    +        encryption_protectors = client.encryption_protectors.get(
    +            resource_group_name=resource_group,
    +            server_name=server_name,
    +            encryption_protector_name="current",
    +        )
    +        return encryption_protectors
    +
    +    def __get_databases__(self, subscription, resource_group, server_name):
    +        logger.info("SQL Server - Getting server databases...")
    +        databases = []
    +        try:
    +            client = self.clients[subscription]
    +            databases_server = client.databases.list_by_server(
    +                resource_group_name=resource_group,
    +                server_name=server_name,
    +            )
    +            for database in databases_server:
    +                tde_encrypted = self.__get_transparent_data_encryption__(
    +                    subscription, resource_group, server_name, database.name
    +                )
    +                databases.append(
    +                    Database(
    +                        id=database.id,
    +                        name=database.name,
    +                        type=database.type,
    +                        location=database.location,
    +                        managed_by=database.managed_by,
    +                        tde_encryption=tde_encrypted,
    +                    )
    +                )
    +        except Exception as error:
    +            logger.error(
    +                f"Subscription name: {subscription} -- {error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}"
    +            )
    +        return databases
    +
    +    def __get_vulnerability_assesments__(
    +        self, subscription, resource_group, server_name
    +    ):
    +        client = self.clients[subscription]
    +        vulnerability_assessment = client.server_vulnerability_assessments.get(
    +            resource_group_name=resource_group,
    +            server_name=server_name,
    +            vulnerability_assessment_name="default",
    +        )
    +        return vulnerability_assessment
    +
    +    def __get_server_blob_auditing_policies__(
    +        self, subscription, resource_group, server_name
    +    ):
    +        client = self.clients[subscription]
    +        auditing_policies = client.server_blob_auditing_policies.list_by_server(
    +            resource_group_name=resource_group,
    +            server_name=server_name,
    +        )
    +        return auditing_policies
    +
    +    def __get_firewall_rules__(self, subscription, resource_group, server_name):
    +        client = self.clients[subscription]
    +        firewall_rules = client.firewall_rules.list_by_server(
    +            resource_group_name=resource_group, server_name=server_name
    +        )
    +        return firewall_rules
    +
    +    def __get_server_security_alert_policies__(
    +        self, subscription, resource_group, server_name
    +    ):
    +        client = self.clients[subscription]
    +        security_alert_policies = client.server_security_alert_policies.get(
    +            resource_group_name=resource_group,
    +            server_name=server_name,
    +            security_alert_policy_name="default",
    +        )
    +        return security_alert_policies
    +
     
     @dataclass
    -class SQL_Server:
    +class Database:
    +    id: str
    +    name: str
    +    type: str
    +    location: str
    +    managed_by: str
    +    tde_encryption: TransparentDataEncryption
    +
    +
    +@dataclass
    +class Server:
         id: str
         name: str
         public_network_access: str
    @@ -67,21 +183,7 @@ class SQL_Server:
         administrators: ServerExternalAdministrator
         auditing_policies: ServerBlobAuditingPolicy
         firewall_rules: FirewallRule
    -
    -    def __init__(
    -        self,
    -        id,
    -        name,
    -        public_network_access,
    -        minimal_tls_version,
    -        administrators,
    -        auditing_policies,
    -        firewall_rules,
    -    ):
    -        self.id = id
    -        self.name = name
    -        self.public_network_access = public_network_access
    -        self.minimal_tls_version = minimal_tls_version
    -        self.administrators = administrators
    -        self.auditing_policies = auditing_policies
    -        self.firewall_rules = firewall_rules
    +    encryption_protector: EncryptionProtector = None
    +    databases: list[Database] = None
    +    vulnerability_assessment: ServerVulnerabilityAssessment = None
    +    security_alert_policies: ServerSecurityAlertPolicy = None
    diff --git a/prowler/providers/azure/services/sqlserver/sqlserver_tde_encrypted_with_cmk/__init__.py b/prowler/providers/azure/services/sqlserver/sqlserver_tde_encrypted_with_cmk/__init__.py
    new file mode 100644
    index 00000000000..e69de29bb2d
    diff --git a/prowler/providers/azure/services/sqlserver/sqlserver_tde_encrypted_with_cmk/sqlserver_tde_encrypted_with_cmk.metadata.json b/prowler/providers/azure/services/sqlserver/sqlserver_tde_encrypted_with_cmk/sqlserver_tde_encrypted_with_cmk.metadata.json
    new file mode 100644
    index 00000000000..ff01eedbddc
    --- /dev/null
    +++ b/prowler/providers/azure/services/sqlserver/sqlserver_tde_encrypted_with_cmk/sqlserver_tde_encrypted_with_cmk.metadata.json
    @@ -0,0 +1,30 @@
    +{
    +  "Provider": "azure",
    +  "CheckID": "sqlserver_tde_encrypted_with_cmk",
    +  "CheckTitle": "Ensure SQL server's Transparent Data Encryption (TDE) protector is encrypted with Customer-managed key",
    +  "CheckType": [],
    +  "ServiceName": "sqlserver",
    +  "SubServiceName": "",
    +  "ResourceIdTemplate": "",
    +  "Severity": "medium",
    +  "ResourceType": "SQLServer",
    +  "Description": "Transparent Data Encryption (TDE) with Customer-managed key support provides increased transparency and control over the TDE Protector, increased security with an HSM-backed external service, and promotion of separation of duties.",
    +  "Risk": "Customer-managed key support for Transparent Data Encryption (TDE) allows user control of TDE encryption keys and restricts who can access them and when. Azure Key Vault, Azure cloud-based external key management system, is the first key management service where TDE has integrated support for Customer-managed keys. With Customer-managed key support, the database encryption key is protected by an asymmetric key stored in the Key Vault. The asymmetric key is set at the server level and inherited by all databases under that server",
    +  "RelatedUrl": "https://docs.microsoft.com/en-us/sql/relational-databases/security/encryption/transparent-data-encryption-byok-azure-sql",
    +  "Remediation": {
    +    "Code": {
    +      "CLI": "az sql server tde-key set --resource-group resourceName --server dbServerName --server-key-type {AzureKeyVault} --kid keyIdentifier",
    +      "NativeIaC": "",
    +      "Other": "https://www.trendmicro.com/cloudoneconformity-staging/knowledge-base/azure/Sql/use-byok-for-transparent-data-encryption.html#",
    +      "Terraform": ""
    +    },
    +    "Recommendation": {
    +      "Text": "1. Go to SQL servers For the desired server instance 2. Click On Transparent data encryption 3. Set Transparent data encryption to Customer-managed key 4. Browse through your key vaults to Select an existing key or create a new key in the Azure Key Vault. 5. Check Make selected key the default TDE protector",
    +      "Url": "https://learn.microsoft.com/en-us/azure/azure-sql/database/transparent-data-encryption-byok-overview?view=azuresql"
    +    }
    +  },
    +  "Categories": [],
    +  "DependsOn": [],
    +  "RelatedTo": [],
    +  "Notes": "Once TDE protector is encrypted with a Customer-managed key, it transfers entire responsibility of respective key management on to you, and hence you should be more careful about doing any operations on the particular key in order to keep data from corresponding SQL server and Databases hosted accessible. When deploying Customer Managed Keys, it is prudent to ensure that you also deploy an automated toolset for managing these keys (this should include discovery and key rotation), and Keys should be stored in an HSM or hardware backed keystore, such as Azure Key Vault. As far as toolsets go, check with your cryptographic key provider, as they may well provide one as an add-on to their service."
    +}
    diff --git a/prowler/providers/azure/services/sqlserver/sqlserver_tde_encrypted_with_cmk/sqlserver_tde_encrypted_with_cmk.py b/prowler/providers/azure/services/sqlserver/sqlserver_tde_encrypted_with_cmk/sqlserver_tde_encrypted_with_cmk.py
    new file mode 100644
    index 00000000000..c7b7fc765de
    --- /dev/null
    +++ b/prowler/providers/azure/services/sqlserver/sqlserver_tde_encrypted_with_cmk/sqlserver_tde_encrypted_with_cmk.py
    @@ -0,0 +1,38 @@
    +from prowler.lib.check.models import Check, Check_Report_Azure
    +from prowler.providers.azure.services.sqlserver.sqlserver_client import sqlserver_client
    +
    +
    +class sqlserver_tde_encrypted_with_cmk(Check):
    +    def execute(self) -> Check_Report_Azure:
    +        findings = []
    +        for subscription, sql_servers in sqlserver_client.sql_servers.items():
    +            for sql_server in sql_servers:
    +                databases = (
    +                    sql_server.databases if sql_server.databases is not None else []
    +                )
    +                if len(databases) > 0:
    +                    report = Check_Report_Azure(self.metadata())
    +                    report.subscription = subscription
    +                    report.resource_name = sql_server.name
    +                    report.resource_id = sql_server.id
    +                    found_disabled = False
    +                    if (
    +                        sql_server.encryption_protector.server_key_type
    +                        == "AzureKeyVault"
    +                    ):
    +                        for database in databases:
    +                            if found_disabled:
    +                                break
    +                            if database.tde_encryption.status == "Enabled":
    +                                report.status = "PASS"
    +                                report.status_extended = f"SQL Server {sql_server.name} from subscription {subscription} has TDE enabled with CMK."
    +                            else:
    +                                report.status = "FAIL"
    +                                report.status_extended = f"SQL Server {sql_server.name} from subscription {subscription} has TDE disabled with CMK."
    +                                found_disabled = True
    +                    else:
    +                        report.status = "FAIL"
    +                        report.status_extended = f"SQL Server {sql_server.name} from subscription {subscription} has TDE disabled without CMK."
    +                    findings.append(report)
    +
    +        return findings
    diff --git a/prowler/providers/azure/services/sqlserver/sqlserver_tde_encryption_enabled/__init__.py b/prowler/providers/azure/services/sqlserver/sqlserver_tde_encryption_enabled/__init__.py
    new file mode 100644
    index 00000000000..e69de29bb2d
    diff --git a/prowler/providers/azure/services/sqlserver/sqlserver_tde_encryption_enabled/sqlserver_tde_encryption_enabled.metadata.json b/prowler/providers/azure/services/sqlserver/sqlserver_tde_encryption_enabled/sqlserver_tde_encryption_enabled.metadata.json
    new file mode 100644
    index 00000000000..63be7b0cc3b
    --- /dev/null
    +++ b/prowler/providers/azure/services/sqlserver/sqlserver_tde_encryption_enabled/sqlserver_tde_encryption_enabled.metadata.json
    @@ -0,0 +1,30 @@
    +{
    +  "Provider": "azure",
    +  "CheckID": "sqlserver_tde_encryption_enabled",
    +  "CheckTitle": "Ensure SQL server's Transparent Data Encryption (TDE) protector is encrypted",
    +  "CheckType": [],
    +  "ServiceName": "sqlserver",
    +  "SubServiceName": "",
    +  "ResourceIdTemplate": "",
    +  "Severity": "medium",
    +  "ResourceType": "SQLServer",
    +  "Description": "Enable Transparent Data Encryption on every SQL server.",
    +  "Risk": "Azure SQL Database transparent data encryption helps protect against the threat of malicious activity by performing real-time encryption and decryption of the database, associated backups, and transaction log files at rest without requiring changes to the application.",
    +  "RelatedUrl": "https://docs.microsoft.com/en-us/sql/relational-databases/security/encryption/transparent-data-encryption-with-azure-sql-database",
    +  "Remediation": {
    +    "Code": {
    +      "CLI": "az sql db tde set --resource-group resourceGroup --server dbServerName --database dbName --status Enabled",
    +      "NativeIaC": "",
    +      "Other": "https://www.trendmicro.com/cloudoneconformity-staging/knowledge-base/azure/Sql/data-encryption.html#",
    +      "Terraform": ""
    +    },
    +    "Recommendation": {
    +      "Text": "1. Go to SQL databases 2. For each DB instance 3. Click on Transparent data encryption 4. Set Data encryption to On",
    +      "Url": "https://learn.microsoft.com/en-us/azure/azure-sql/database/transparent-data-encryption-byok-overview?view=azuresql"
    +    }
    +  },
    +  "Categories": [],
    +  "DependsOn": [],
    +  "RelatedTo": [],
    +  "Notes": ""
    +}
    diff --git a/prowler/providers/azure/services/sqlserver/sqlserver_tde_encryption_enabled/sqlserver_tde_encryption_enabled.py b/prowler/providers/azure/services/sqlserver/sqlserver_tde_encryption_enabled/sqlserver_tde_encryption_enabled.py
    new file mode 100644
    index 00000000000..f65e3292c48
    --- /dev/null
    +++ b/prowler/providers/azure/services/sqlserver/sqlserver_tde_encryption_enabled/sqlserver_tde_encryption_enabled.py
    @@ -0,0 +1,27 @@
    +from prowler.lib.check.models import Check, Check_Report_Azure
    +from prowler.providers.azure.services.sqlserver.sqlserver_client import sqlserver_client
    +
    +
    +class sqlserver_tde_encryption_enabled(Check):
    +    def execute(self) -> Check_Report_Azure:
    +        findings = []
    +        for subscription, sql_servers in sqlserver_client.sql_servers.items():
    +            for sql_server in sql_servers:
    +                databases = (
    +                    sql_server.databases if sql_server.databases is not None else []
    +                )
    +                if len(databases) > 0:
    +                    for database in databases:
    +                        report = Check_Report_Azure(self.metadata())
    +                        report.subscription = subscription
    +                        report.resource_name = database.name
    +                        report.resource_id = database.id
    +                        if database.tde_encryption.status == "Enabled":
    +                            report.status = "PASS"
    +                            report.status_extended = f"Database {database.name} from SQL Server {sql_server.name} from subscription {subscription} has TDE enabled"
    +                        else:
    +                            report.status = "FAIL"
    +                            report.status_extended = f"Database {database.name} from SQL Server {sql_server.name} from subscription {subscription} has TDE disabled"
    +                        findings.append(report)
    +
    +        return findings
    diff --git a/prowler/providers/azure/services/sqlserver/sqlserver_va_emails_notifications_admins_enabled/__init__.py b/prowler/providers/azure/services/sqlserver/sqlserver_va_emails_notifications_admins_enabled/__init__.py
    new file mode 100644
    index 00000000000..e69de29bb2d
    diff --git a/prowler/providers/azure/services/sqlserver/sqlserver_va_emails_notifications_admins_enabled/sqlserver_va_emails_notifications_admins_enabled.metadata.json b/prowler/providers/azure/services/sqlserver/sqlserver_va_emails_notifications_admins_enabled/sqlserver_va_emails_notifications_admins_enabled.metadata.json
    new file mode 100644
    index 00000000000..23ea66bfcd7
    --- /dev/null
    +++ b/prowler/providers/azure/services/sqlserver/sqlserver_va_emails_notifications_admins_enabled/sqlserver_va_emails_notifications_admins_enabled.metadata.json
    @@ -0,0 +1,30 @@
    +{
    +  "Provider": "azure",
    +  "CheckID": "sqlserver_va_emails_notifications_admins_enabled",
    +  "CheckTitle": "Ensure that Vulnerability Assessment (VA) setting 'Also send email notifications to admins and subscription owners' is set for each SQL Server",
    +  "CheckType": [],
    +  "ServiceName": "sqlserver",
    +  "SubServiceName": "",
    +  "ResourceIdTemplate": "",
    +  "Severity": "medium",
    +  "ResourceType": "SQLServer",
    +  "Description": "Enable Vulnerability Assessment (VA) setting 'Also send email notifications to admins and subscription owners'.",
    +  "Risk": "VA scan reports and alerts will be sent to admins and subscription owners by enabling setting 'Also send email notifications to admins and subscription owners'. This may help in reducing time required for identifying risks and taking corrective measures.",
    +  "RelatedUrl": "https://docs.microsoft.com/en-us/azure/sql-database/sql-vulnerability-assessment",
    +  "Remediation": {
    +    "Code": {
    +      "CLI": "",
    +      "NativeIaC": "",
    +      "Other": "",
    +      "Terraform": "https://docs.bridgecrew.io/docs/ensure-that-va-setting-also-send-email-notifications-to-admins-and-subscription-owners-is-set-for-an-sql-server#terraform"
    +    },
    +    "Recommendation": {
    +      "Text": "1. Go to SQL servers 2. Select a server instance 3. Click on Security Center 4. Select Configure next to Enabled at subscription-level 5. In Section Vulnerability Assessment Settings, configure Storage Accounts if not already 6. Check/enable 'Also send email notifications to admins and subscription owners' 7. Click Save",
    +      "Url": "https://learn.microsoft.com/en-us/azure/defender-for-cloud/sql-azure-vulnerability-assessment-enable"
    +    }
    +  },
    +  "Categories": [],
    +  "DependsOn": [],
    +  "RelatedTo": [],
    +  "Notes": "Enabling the Microsoft Defender for SQL features will incur additional costs for each SQL server."
    +}
    diff --git a/prowler/providers/azure/services/sqlserver/sqlserver_va_emails_notifications_admins_enabled/sqlserver_va_emails_notifications_admins_enabled.py b/prowler/providers/azure/services/sqlserver/sqlserver_va_emails_notifications_admins_enabled/sqlserver_va_emails_notifications_admins_enabled.py
    new file mode 100644
    index 00000000000..304905fd3fd
    --- /dev/null
    +++ b/prowler/providers/azure/services/sqlserver/sqlserver_va_emails_notifications_admins_enabled/sqlserver_va_emails_notifications_admins_enabled.py
    @@ -0,0 +1,29 @@
    +from prowler.lib.check.models import Check, Check_Report_Azure
    +from prowler.providers.azure.services.sqlserver.sqlserver_client import sqlserver_client
    +
    +
    +class sqlserver_va_emails_notifications_admins_enabled(Check):
    +    def execute(self) -> Check_Report_Azure:
    +        findings = []
    +        for subscription, sql_servers in sqlserver_client.sql_servers.items():
    +            for sql_server in sql_servers:
    +                report = Check_Report_Azure(self.metadata())
    +                report.subscription = subscription
    +                report.resource_name = sql_server.name
    +                report.resource_id = sql_server.id
    +                report.status = "FAIL"
    +                report.status_extended = f"SQL Server {sql_server.name} from subscription {subscription} has vulnerability assessment disabled."
    +                if (
    +                    sql_server.vulnerability_assessment
    +                    and sql_server.vulnerability_assessment.storage_container_path
    +                ):
    +                    report.status_extended = f"SQL Server {sql_server.name} from subscription {subscription} has vulnerability assessment enabled but no scan reports configured for subscription admins."
    +                    if (
    +                        sql_server.vulnerability_assessment.recurring_scans
    +                        and sql_server.vulnerability_assessment.recurring_scans.email_subscription_admins
    +                    ):
    +                        report.status = "PASS"
    +                        report.status_extended = f"SQL Server {sql_server.name} from subscription {subscription} has vulnerability assessment enabled and scan reports configured for subscription admins."
    +                findings.append(report)
    +
    +        return findings
    diff --git a/prowler/providers/azure/services/sqlserver/sqlserver_va_periodic_recurring_scans_enabled/__init__.py b/prowler/providers/azure/services/sqlserver/sqlserver_va_periodic_recurring_scans_enabled/__init__.py
    new file mode 100644
    index 00000000000..e69de29bb2d
    diff --git a/prowler/providers/azure/services/sqlserver/sqlserver_va_periodic_recurring_scans_enabled/sqlserver_va_periodic_recurring_scans_enabled.metadata.json b/prowler/providers/azure/services/sqlserver/sqlserver_va_periodic_recurring_scans_enabled/sqlserver_va_periodic_recurring_scans_enabled.metadata.json
    new file mode 100644
    index 00000000000..3768c57540b
    --- /dev/null
    +++ b/prowler/providers/azure/services/sqlserver/sqlserver_va_periodic_recurring_scans_enabled/sqlserver_va_periodic_recurring_scans_enabled.metadata.json
    @@ -0,0 +1,30 @@
    +{
    +  "Provider": "azure",
    +  "CheckID": "sqlserver_va_periodic_recurring_scans_enabled",
    +  "CheckTitle": "Ensure that Vulnerability Assessment (VA) setting 'Periodic recurring scans' is set to 'on' for each SQL server",
    +  "CheckType": [],
    +  "ServiceName": "sqlserver",
    +  "SubServiceName": "",
    +  "ResourceIdTemplate": "",
    +  "Severity": "medium",
    +  "ResourceType": "SQLServer",
    +  "Description": "Enable Vulnerability Assessment (VA) Periodic recurring scans for critical SQL servers and corresponding SQL databases.",
    +  "Risk": "VA setting 'Periodic recurring scans' schedules periodic (weekly) vulnerability scanning for the SQL server and corresponding Databases. Periodic and regular vulnerability scanning provides risk visibility based on updated known vulnerability signatures and best practices.",
    +  "RelatedUrl": "https://docs.microsoft.com/en-us/azure/sql-database/sql-vulnerability-assessment",
    +  "Remediation": {
    +    "Code": {
    +      "CLI": "",
    +      "NativeIaC": "",
    +      "Other": "https://www.trendmicro.com/cloudoneconformity-staging/knowledge-base/azure/Sql/periodic-vulnerability-scans.html#",
    +      "Terraform": "https://docs.bridgecrew.io/docs/ensure-that-va-setting-periodic-recurring-scans-is-enabled-on-a-sql-server#terraform"
    +    },
    +    "Recommendation": {
    +      "Text": "1. Go to SQL servers 2. For each server instance 3. Click on Security Center 4. In Section Vulnerability Assessment Settings, set Storage Account if not already 5. Toggle 'Periodic recurring scans' to ON. 6. Click Save",
    +      "Url": "https://learn.microsoft.com/en-us/azure/defender-for-cloud/sql-azure-vulnerability-assessment-enable"
    +    }
    +  },
    +  "Categories": [],
    +  "DependsOn": [],
    +  "RelatedTo": [],
    +  "Notes": "Enabling the Azure Defender for SQL feature will incur additional costs for each SQL server."
    +}
    diff --git a/prowler/providers/azure/services/sqlserver/sqlserver_va_periodic_recurring_scans_enabled/sqlserver_va_periodic_recurring_scans_enabled.py b/prowler/providers/azure/services/sqlserver/sqlserver_va_periodic_recurring_scans_enabled/sqlserver_va_periodic_recurring_scans_enabled.py
    new file mode 100644
    index 00000000000..12948248eca
    --- /dev/null
    +++ b/prowler/providers/azure/services/sqlserver/sqlserver_va_periodic_recurring_scans_enabled/sqlserver_va_periodic_recurring_scans_enabled.py
    @@ -0,0 +1,29 @@
    +from prowler.lib.check.models import Check, Check_Report_Azure
    +from prowler.providers.azure.services.sqlserver.sqlserver_client import sqlserver_client
    +
    +
    +class sqlserver_va_periodic_recurring_scans_enabled(Check):
    +    def execute(self) -> Check_Report_Azure:
    +        findings = []
    +        for subscription, sql_servers in sqlserver_client.sql_servers.items():
    +            for sql_server in sql_servers:
    +                report = Check_Report_Azure(self.metadata())
    +                report.subscription = subscription
    +                report.resource_name = sql_server.name
    +                report.resource_id = sql_server.id
    +                report.status = "FAIL"
    +                report.status_extended = f"SQL Server {sql_server.name} from subscription {subscription} has vulnerability assessment disabled."
    +                if (
    +                    sql_server.vulnerability_assessment
    +                    and sql_server.vulnerability_assessment.storage_container_path
    +                ):
    +                    report.status_extended = f"SQL Server {sql_server.name} from subscription {subscription} has vulnerability assessment enabled but no recurring scans."
    +                    if (
    +                        sql_server.vulnerability_assessment.recurring_scans
    +                        and sql_server.vulnerability_assessment.recurring_scans.is_enabled
    +                    ):
    +                        report.status = "PASS"
    +                        report.status_extended = f"SQL Server {sql_server.name} from subscription {subscription} has periodic recurring scans enabled."
    +                findings.append(report)
    +
    +        return findings
    diff --git a/prowler/providers/azure/services/sqlserver/sqlserver_va_scan_reports_configured/__init__.py b/prowler/providers/azure/services/sqlserver/sqlserver_va_scan_reports_configured/__init__.py
    new file mode 100644
    index 00000000000..e69de29bb2d
    diff --git a/prowler/providers/azure/services/sqlserver/sqlserver_va_scan_reports_configured/sqlserver_va_scan_reports_configured.metadata.json b/prowler/providers/azure/services/sqlserver/sqlserver_va_scan_reports_configured/sqlserver_va_scan_reports_configured.metadata.json
    new file mode 100644
    index 00000000000..0b258db4ebc
    --- /dev/null
    +++ b/prowler/providers/azure/services/sqlserver/sqlserver_va_scan_reports_configured/sqlserver_va_scan_reports_configured.metadata.json
    @@ -0,0 +1,30 @@
    +{
    +  "Provider": "azure",
    +  "CheckID": "sqlserver_va_scan_reports_configured",
    +  "CheckTitle": "Ensure that Vulnerability Assessment (VA) setting 'Send scan reports to' is configured for a SQL server",
    +  "CheckType": [],
    +  "ServiceName": "sqlserver",
    +  "SubServiceName": "",
    +  "ResourceIdTemplate": "",
    +  "Severity": "medium",
    +  "ResourceType": "SQLServer",
    +  "Description": "Configure 'Send scan reports to' with email addresses of concerned data owners/stakeholders for a critical SQL servers.",
    +  "Risk": "Vulnerability Assessment (VA) scan reports and alerts will be sent to email addresses configured at 'Send scan reports to'. This may help in reducing time required for identifying risks and taking corrective measures",
    +  "RelatedUrl": "https://docs.microsoft.com/en-us/azure/sql-database/sql-vulnerability-assessment",
    +  "Remediation": {
    +    "Code": {
    +      "CLI": "",
    +      "NativeIaC": "",
    +      "Other": "",
    +      "Terraform": "https://docs.bridgecrew.io/docs/ensure-that-va-setting-send-scan-reports-to-is-configured-for-a-sql-server#terraform"
    +    },
    +    "Recommendation": {
    +      "Text": "1. Go to SQL servers 2. Select a server instance 3. Select Microsoft Defender for Cloud 4. Select Configure next to Enablement status 5. Set Microsoft Defender for SQL to On 6. Under Vulnerability Assessment Settings, select a Storage Account 7. Set Periodic recurring scans to On 8. Under Send scan reports to, provide email addresses for data owners and stakeholders 9. Click Save",
    +      "Url": "https://learn.microsoft.com/en-us/azure/defender-for-cloud/sql-azure-vulnerability-assessment-enable"
    +    }
    +  },
    +  "Categories": [],
    +  "DependsOn": [],
    +  "RelatedTo": [],
    +  "Notes": "Enabling the Microsoft Defender for SQL features will incur additional costs for each SQL server."
    +}
    diff --git a/prowler/providers/azure/services/sqlserver/sqlserver_va_scan_reports_configured/sqlserver_va_scan_reports_configured.py b/prowler/providers/azure/services/sqlserver/sqlserver_va_scan_reports_configured/sqlserver_va_scan_reports_configured.py
    new file mode 100644
    index 00000000000..0c0ee5a852d
    --- /dev/null
    +++ b/prowler/providers/azure/services/sqlserver/sqlserver_va_scan_reports_configured/sqlserver_va_scan_reports_configured.py
    @@ -0,0 +1,37 @@
    +from prowler.lib.check.models import Check, Check_Report_Azure
    +from prowler.providers.azure.services.sqlserver.sqlserver_client import sqlserver_client
    +
    +
    +class sqlserver_va_scan_reports_configured(Check):
    +    def execute(self) -> Check_Report_Azure:
    +        findings = []
    +        for subscription, sql_servers in sqlserver_client.sql_servers.items():
    +            for sql_server in sql_servers:
    +                report = Check_Report_Azure(self.metadata())
    +                report.subscription = subscription
    +                report.resource_name = sql_server.name
    +                report.resource_id = sql_server.id
    +                report.status = "FAIL"
    +                report.status_extended = f"SQL Server {sql_server.name} from subscription {subscription} has vulnerability assessment disabled."
    +                if (
    +                    sql_server.vulnerability_assessment
    +                    and sql_server.vulnerability_assessment.storage_container_path
    +                ):
    +                    report.status_extended = f"SQL Server {sql_server.name} from subscription {subscription} has vulnerability assessment enabled but no scan reports configured."
    +                    if sql_server.vulnerability_assessment.recurring_scans and (
    +                        (
    +                            sql_server.vulnerability_assessment.recurring_scans.email_subscription_admins
    +                        )
    +                        or (
    +                            sql_server.vulnerability_assessment.recurring_scans.emails
    +                            and len(
    +                                sql_server.vulnerability_assessment.recurring_scans.emails
    +                            )
    +                            > 0
    +                        )
    +                    ):
    +                        report.status = "PASS"
    +                        report.status_extended = f"SQL Server {sql_server.name} from subscription {subscription} has vulnerability assessment enabled and scan reports configured."
    +                findings.append(report)
    +
    +        return findings
    diff --git a/prowler/providers/azure/services/sqlserver/sqlserver_vulnerability_assessment_enabled/__init__.py b/prowler/providers/azure/services/sqlserver/sqlserver_vulnerability_assessment_enabled/__init__.py
    new file mode 100644
    index 00000000000..e69de29bb2d
    diff --git a/prowler/providers/azure/services/sqlserver/sqlserver_vulnerability_assessment_enabled/sqlserver_vulnerability_assessment_enabled.metadata.json b/prowler/providers/azure/services/sqlserver/sqlserver_vulnerability_assessment_enabled/sqlserver_vulnerability_assessment_enabled.metadata.json
    new file mode 100644
    index 00000000000..26ab2f80556
    --- /dev/null
    +++ b/prowler/providers/azure/services/sqlserver/sqlserver_vulnerability_assessment_enabled/sqlserver_vulnerability_assessment_enabled.metadata.json
    @@ -0,0 +1,30 @@
    +{
    +  "Provider": "azure",
    +  "CheckID": "sqlserver_vulnerability_assessment_enabled",
    +  "CheckTitle": "Ensure that Vulnerability Assessment (VA) is enabled on a SQL server by setting a Storage Account",
    +  "CheckType": [],
    +  "ServiceName": "sqlserver",
    +  "SubServiceName": "",
    +  "ResourceIdTemplate": "",
    +  "Severity": "medium",
    +  "ResourceType": "SQLServer",
    +  "Description": "Enable Vulnerability Assessment (VA) service scans for critical SQL servers and corresponding SQL databases.",
    +  "Risk": "The Vulnerability Assessment service scans databases for known security vulnerabilities and highlights deviations from best practices, such as misconfigurations, excessive permissions, and unprotected sensitive data. Results of the scan include actionable steps to resolve each issue and provide customized remediation scripts where applicable. Additionally, an assessment report can be customized by setting an acceptable baseline for permission configurations, feature configurations, and database settings.",
    +  "RelatedUrl": "https://docs.microsoft.com/en-us/azure/sql-database/sql-vulnerability-assessment",
    +  "Remediation": {
    +    "Code": {
    +      "CLI": "Update-AzSqlServerVulnerabilityAssessmentSetting -ResourceGroupName resource_group_name -ServerName Server_Name -StorageAccountName Storage_Name_from_same_subscription_and_same_Location -ScanResultsContainerName vulnerability-assessment -RecurringScansInterval Weekly -EmailSubscriptionAdmins $true -NotificationEmail @('mail1@mail.com' , 'mail2@mail.com')",
    +      "NativeIaC": "",
    +      "Other": "https://www.trendmicro.com/cloudoneconformity-staging/knowledge-base/azure/Sql/vulnerability-assessment-sql-servers.html#",
    +      "Terraform": "https://docs.bridgecrew.io/docs/ensure-that-vulnerability-assessment-va-is-enabled-on-a-sql-server-by-setting-a-storage-account"
    +    },
    +    "Recommendation": {
    +      "Text": "1. Go to SQL servers 2. Select a server instance 3. Click on Security Center 4. Select Configure next to Enabled at subscription-level 5. In Section Vulnerability Assessment Settings, Click Select Storage account 6. Choose Storage Account (Existing or Create New). Click Ok 7. Click Save",
    +      "Url": "https://learn.microsoft.com/en-us/azure/defender-for-cloud/sql-azure-vulnerability-assessment-enable"
    +    }
    +  },
    +  "Categories": [],
    +  "DependsOn": [],
    +  "RelatedTo": [],
    +  "Notes": "Enabling the Microsoft Defender for SQL features will incur additional costs for each SQL server."
    +}
    diff --git a/prowler/providers/azure/services/sqlserver/sqlserver_vulnerability_assessment_enabled/sqlserver_vulnerability_assessment_enabled.py b/prowler/providers/azure/services/sqlserver/sqlserver_vulnerability_assessment_enabled/sqlserver_vulnerability_assessment_enabled.py
    new file mode 100644
    index 00000000000..a01cce570b3
    --- /dev/null
    +++ b/prowler/providers/azure/services/sqlserver/sqlserver_vulnerability_assessment_enabled/sqlserver_vulnerability_assessment_enabled.py
    @@ -0,0 +1,25 @@
    +from prowler.lib.check.models import Check, Check_Report_Azure
    +from prowler.providers.azure.services.sqlserver.sqlserver_client import sqlserver_client
    +
    +
    +class sqlserver_vulnerability_assessment_enabled(Check):
    +    def execute(self) -> Check_Report_Azure:
    +        findings = []
    +        for subscription, sql_servers in sqlserver_client.sql_servers.items():
    +            for sql_server in sql_servers:
    +                report = Check_Report_Azure(self.metadata())
    +                report.subscription = subscription
    +                report.resource_name = sql_server.name
    +                report.resource_id = sql_server.id
    +                report.status = "FAIL"
    +                report.status_extended = f"SQL Server {sql_server.name} from subscription {subscription} has vulnerability assessment disabled."
    +                if (
    +                    sql_server.vulnerability_assessment
    +                    and sql_server.vulnerability_assessment.storage_container_path
    +                    is not None
    +                ):
    +                    report.status = "PASS"
    +                    report.status_extended = f"SQL Server {sql_server.name} from subscription {subscription} has vulnerability assessment enabled."
    +                findings.append(report)
    +
    +        return findings
    diff --git a/prowler/providers/azure/services/storage/storage_default_network_access_rule_is_denied/storage_default_network_access_rule_is_denied.metadata.json b/prowler/providers/azure/services/storage/storage_default_network_access_rule_is_denied/storage_default_network_access_rule_is_denied.metadata.json
    index 59a9d1f356a..fda1291f1ce 100644
    --- a/prowler/providers/azure/services/storage/storage_default_network_access_rule_is_denied/storage_default_network_access_rule_is_denied.metadata.json
    +++ b/prowler/providers/azure/services/storage/storage_default_network_access_rule_is_denied/storage_default_network_access_rule_is_denied.metadata.json
    @@ -8,8 +8,8 @@
       "ResourceIdTemplate": "",
       "Severity": "medium",
       "ResourceType": "AzureStorageAccount",
    -  "Description": "Ensure Default Network Access Rule for Storage Accounts is Set to Deny",
    -  "Risk": "By restricting access to your storage account default network, you add a new layer of security, since the default action is to accept connections from clients on any network.",
    +  "Description": "Restricting default network access helps to provide a new layer of security, since storage accounts accept connections from clients on any network. To limit access toselected networks, the default action must be changed.",
    +  "Risk": "Storage accounts should be configured to deny access to traffic from all networks (including internet traffic). Access can be granted to traffic from specific Azure Virtualnetworks, allowing a secure network boundary for specific applications to be built.Access can also be granted to public internet IP address ranges to enable connectionsfrom specific internet or on-premises clients. When network rules are configured, onlyapplications from allowed networks can access a storage account. When calling from anallowed network, applications continue to require proper authorization (a valid accesskey or SAS token) to access the storage account.",
       "RelatedUrl": "",
       "Remediation": {
         "Code": {
    @@ -19,12 +19,12 @@
           "Terraform": "https://docs.bridgecrew.io/docs/set-default-network-access-rule-for-storage-accounts-to-deny#terraform"
         },
         "Recommendation": {
    -      "Text": "To limit access to selected networks or IP addresses, you must first change the default action from 'Allow' to 'Deny'",
    +      "Text": "1. Go to Storage Accounts 2. For each storage account, Click on the Networking blade 3. Click the Firewalls and virtual networks heading. 4. Ensure that you have elected to allow access from Selected networks 5. Add rules to allow traffic from specific network. 6. Click Save to apply your changes.",
           "Url": ""
         }
       },
       "Categories": [],
       "DependsOn": [],
       "RelatedTo": [],
    -  "Notes": ""
    +  "Notes": "All allowed networks will need to be whitelisted on each specific network, creating administrative overhead. This may result in loss of network connectivity, so do not turn on for critical resources during business hours."
     }
    diff --git a/prowler/providers/azure/services/storage/storage_ensure_private_endpoints_in_storage_accounts/__init__.py b/prowler/providers/azure/services/storage/storage_ensure_private_endpoints_in_storage_accounts/__init__.py
    new file mode 100644
    index 00000000000..e69de29bb2d
    diff --git a/prowler/providers/azure/services/storage/storage_ensure_private_endpoints_in_storage_accounts/storage_ensure_private_endpoints_in_storage_accounts.metadata.json b/prowler/providers/azure/services/storage/storage_ensure_private_endpoints_in_storage_accounts/storage_ensure_private_endpoints_in_storage_accounts.metadata.json
    new file mode 100644
    index 00000000000..8992f16c74d
    --- /dev/null
    +++ b/prowler/providers/azure/services/storage/storage_ensure_private_endpoints_in_storage_accounts/storage_ensure_private_endpoints_in_storage_accounts.metadata.json
    @@ -0,0 +1,32 @@
    +{
    +  "Provider": "azure",
    +  "CheckID": "storage_ensure_private_endpoints_in_storage_accounts",
    +  "CheckTitle": "Ensure Private Endpoints are used to access Storage Accounts",
    +  "CheckType": [],
    +  "ServiceName": "storage",
    +  "SubServiceName": "",
    +  "ResourceIdTemplate": "",
    +  "Severity": "medium",
    +  "ResourceType": "AzureStorageAccount",
    +  "Description": "Use private endpoints for your Azure Storage accounts to allow clients and services to securely access data located over a network via an encrypted Private Link. To do this, the private endpoint uses an IP address from the VNet for each service. Network traffic between disparate services securely traverses encrypted over the VNet. This VNet can also link addressing space, extending your network and accessing resources on it. Similarly, it can be a tunnel through public networks to connect remote infrastructures together. This creates further security through segmenting network traffic and preventing outside sources from accessing it.",
    +  "Risk": "Storage accounts that are not configured to use Private Endpoints are accessible over the public internet. This can lead to data exfiltration and other security issues.",
    +  "RelatedUrl": "https://learn.microsoft.com/en-us/azure/storage/common/storage-private-endpoints",
    +  "Remediation": {
    +    "Code": {
    +      "CLI": "",
    +      "NativeIaC": "",
    +      "Other": "https://www.trendmicro.com/cloudoneconformity-staging/knowledge-base/azure/StorageAccounts/private-endpoints.html#",
    +      "Terraform": ""
    +    },
    +    "Recommendation": {
    +      "Text": "Use Private Endpoints to access Storage Accounts",
    +      "Url": "https://docs.microsoft.com/en-us/azure/storage/common/storage-private-endpoints"
    +    }
    +  },
    +  "Categories": [
    +    "encryption"
    +  ],
    +  "DependsOn": [],
    +  "RelatedTo": [],
    +  "Notes": ""
    +}
    diff --git a/prowler/providers/azure/services/storage/storage_ensure_private_endpoints_in_storage_accounts/storage_ensure_private_endpoints_in_storage_accounts.py b/prowler/providers/azure/services/storage/storage_ensure_private_endpoints_in_storage_accounts/storage_ensure_private_endpoints_in_storage_accounts.py
    new file mode 100644
    index 00000000000..133671a72f5
    --- /dev/null
    +++ b/prowler/providers/azure/services/storage/storage_ensure_private_endpoints_in_storage_accounts/storage_ensure_private_endpoints_in_storage_accounts.py
    @@ -0,0 +1,22 @@
    +from prowler.lib.check.models import Check, Check_Report_Azure
    +from prowler.providers.azure.services.storage.storage_client import storage_client
    +
    +
    +class storage_ensure_private_endpoints_in_storage_accounts(Check):
    +    def execute(self) -> Check_Report_Azure:
    +        findings = []
    +        for subscription, storage_accounts in storage_client.storage_accounts.items():
    +            for storage_account in storage_accounts:
    +                report = Check_Report_Azure(self.metadata())
    +                report.subscription = subscription
    +                report.resource_name = storage_account.name
    +                report.resource_id = storage_account.id
    +                if storage_account.private_endpoint_connections:
    +                    report.status = "PASS"
    +                    report.status_extended = f"Storage account {storage_account.name} from subscription {subscription} has private endpoint connections."
    +                else:
    +                    report.status = "FAIL"
    +                    report.status_extended = f"Storage account {storage_account.name} from subscription {subscription} does not have private endpoint connections."
    +                findings.append(report)
    +
    +        return findings
    diff --git a/prowler/providers/azure/services/storage/storage_ensure_soft_delete_is_enabled/__init__.py b/prowler/providers/azure/services/storage/storage_ensure_soft_delete_is_enabled/__init__.py
    new file mode 100644
    index 00000000000..e69de29bb2d
    diff --git a/prowler/providers/azure/services/storage/storage_ensure_soft_delete_is_enabled/storage_ensure_soft_delete_is_enabled.metadata.json b/prowler/providers/azure/services/storage/storage_ensure_soft_delete_is_enabled/storage_ensure_soft_delete_is_enabled.metadata.json
    new file mode 100644
    index 00000000000..13958c96b90
    --- /dev/null
    +++ b/prowler/providers/azure/services/storage/storage_ensure_soft_delete_is_enabled/storage_ensure_soft_delete_is_enabled.metadata.json
    @@ -0,0 +1,32 @@
    +{
    +  "Provider": "azure",
    +  "CheckID": "storage_ensure_soft_delete_is_enabled",
    +  "CheckTitle": "Ensure Soft Delete is Enabled for Azure Containers and Blob Storage",
    +  "CheckType": [],
    +  "ServiceName": "storage",
    +  "SubServiceName": "",
    +  "ResourceIdTemplate": "",
    +  "Severity": "medium",
    +  "ResourceType": "AzureStorageAccount",
    +  "Description": "The Azure Storage blobs contain data like ePHI or Financial, which can be secret or personal. Data that is erroneously modified or deleted by an application or other storage account user will cause data loss or unavailability.",
    +  "Risk": "Containers and Blob Storage data can be incorrectly deleted. An attacker/malicious user may do this deliberately in order to cause disruption. Deleting an Azure Storage blob causes immediate data loss. Enabling this configuration for Azure storage ensures that even if blobs/data were deleted from the storage account, Blobs/data objects are recoverable for a particular time which is set in the Retention policies ranging from 7 days to 365 days.",
    +  "RelatedUrl": "https://learn.microsoft.com/en-us/azure/storage/blobs/soft-delete-blob-enable?tabs=azure-portal",
    +  "Remediation": {
    +    "Code": {
    +      "CLI": "",
    +      "NativeIaC": "",
    +      "Other": "https://www.trendmicro.com/cloudoneconformity-staging/knowledge-base/azure/StorageAccounts/enable-soft-delete.html#",
    +      "Terraform": ""
    +    },
    +    "Recommendation": {
    +      "Text": "From the Azure home page, open the hamburger menu in the top left or click on the arrow pointing right with 'More services' underneath. 2. Select Storage. 3. Select Storage Accounts. 4. For each Storage Account, navigate to Data protection in the left scroll column. 5. Check soft delete for both blobs and containers. Set the retention period to a sufficient length for your organization",
    +      "Url": "https://docs.microsoft.com/en-us/azure/storage/blobs/storage-blob-soft-delete"
    +    }
    +  },
    +  "Categories": [
    +    "encryption"
    +  ],
    +  "DependsOn": [],
    +  "RelatedTo": [],
    +  "Notes": "Additional storage costs may be incurred as snapshots are retained."
    +}
    diff --git a/prowler/providers/azure/services/storage/storage_ensure_soft_delete_is_enabled/storage_ensure_soft_delete_is_enabled.py b/prowler/providers/azure/services/storage/storage_ensure_soft_delete_is_enabled/storage_ensure_soft_delete_is_enabled.py
    new file mode 100644
    index 00000000000..63e948b852e
    --- /dev/null
    +++ b/prowler/providers/azure/services/storage/storage_ensure_soft_delete_is_enabled/storage_ensure_soft_delete_is_enabled.py
    @@ -0,0 +1,27 @@
    +from prowler.lib.check.models import Check, Check_Report_Azure
    +from prowler.providers.azure.services.storage.storage_client import storage_client
    +
    +
    +class storage_ensure_soft_delete_is_enabled(Check):
    +    def execute(self) -> Check_Report_Azure:
    +        findings = []
    +        for subscription, storage_accounts in storage_client.storage_accounts.items():
    +            for storage_account in storage_accounts:
    +                if storage_account.blob_properties:
    +                    report = Check_Report_Azure(self.metadata())
    +                    report.subscription = subscription
    +                    report.resource_name = storage_account.name
    +                    report.resource_id = storage_account.id
    +                    if getattr(
    +                        storage_account.blob_properties.container_delete_retention_policy,
    +                        "enabled",
    +                        False,
    +                    ):
    +                        report.status = "PASS"
    +                        report.status_extended = f"Storage account {storage_account.name} from subscription {subscription} has soft delete enabled."
    +                    else:
    +                        report.status = "FAIL"
    +                        report.status_extended = f"Storage account {storage_account.name} from subscription {subscription} has soft delete disabled."
    +
    +                    findings.append(report)
    +        return findings
    diff --git a/prowler/providers/azure/services/storage/storage_key_rotation_90_days/__init__.py b/prowler/providers/azure/services/storage/storage_key_rotation_90_days/__init__.py
    new file mode 100644
    index 00000000000..e69de29bb2d
    diff --git a/prowler/providers/azure/services/storage/storage_key_rotation_90_days/storage_key_rotation_90_days.metadata.json b/prowler/providers/azure/services/storage/storage_key_rotation_90_days/storage_key_rotation_90_days.metadata.json
    new file mode 100644
    index 00000000000..548782f293c
    --- /dev/null
    +++ b/prowler/providers/azure/services/storage/storage_key_rotation_90_days/storage_key_rotation_90_days.metadata.json
    @@ -0,0 +1,32 @@
    +{
    +  "Provider": "azure",
    +  "CheckID": "storage_key_rotation_90_days",
    +  "CheckTitle": "Ensure that Storage Account Access Keys are Periodically Regenerated",
    +  "CheckType": [],
    +  "ServiceName": "storage",
    +  "SubServiceName": "",
    +  "ResourceIdTemplate": "",
    +  "Severity": "medium",
    +  "ResourceType": "AzureStorageAccount",
    +  "Description": "Ensure that Storage Account Access Keys are Periodically Regenerated",
    +  "Risk": "If the access keys are not regenerated periodically, the likelihood of accidental exposures increases, which can lead to unauthorized access to your storage account resources.",
    +  "RelatedUrl": "https://learn.microsoft.com/en-us/azure/storage/common/storage-account-keys-manage?tabs=azure-portal",
    +  "Remediation": {
    +    "Code": {
    +      "CLI": "",
    +      "NativeIaC": "",
    +      "Other": "https://www.trendmicro.com/cloudoneconformity-staging/knowledge-base/azure/StorageAccounts/regenerate-storage-account-access-keys-periodically.html#",
    +      "Terraform": ""
    +    },
    +    "Recommendation": {
    +      "Text": "Ensure that Azure Storage account access keys are regenerated every 90 days in order to decrease the likelihood of accidental exposures and protect your storage account resources against unauthorized access.",
    +      "Url": "https://learn.microsoft.com/en-us/azure/storage/common/storage-account-create?tabs=azure-portal#regenerate-storage-access-keys"
    +    }
    +  },
    +  "Categories": [
    +    "encryption"
    +  ],
    +  "DependsOn": [],
    +  "RelatedTo": [],
    +  "Notes": ""
    +}
    diff --git a/prowler/providers/azure/services/storage/storage_key_rotation_90_days/storage_key_rotation_90_days.py b/prowler/providers/azure/services/storage/storage_key_rotation_90_days/storage_key_rotation_90_days.py
    new file mode 100644
    index 00000000000..c6e7553cb7f
    --- /dev/null
    +++ b/prowler/providers/azure/services/storage/storage_key_rotation_90_days/storage_key_rotation_90_days.py
    @@ -0,0 +1,26 @@
    +from prowler.lib.check.models import Check, Check_Report_Azure
    +from prowler.providers.azure.services.storage.storage_client import storage_client
    +
    +
    +class storage_key_rotation_90_days(Check):
    +    def execute(self) -> Check_Report_Azure:
    +        findings = []
    +        for subscription, storage_accounts in storage_client.storage_accounts.items():
    +            for storage_account in storage_accounts:
    +                report = Check_Report_Azure(self.metadata())
    +                report.subscription = subscription
    +                report.resource_name = storage_account.name
    +                report.resource_id = storage_account.id
    +                if not storage_account.key_expiration_period_in_days:
    +                    report.status = "FAIL"
    +                    report.status_extended = f"Storage account {storage_account.name} from subscription {subscription} has no key expiration period set."
    +                else:
    +                    if storage_account.key_expiration_period_in_days > 90:
    +                        report.status = "FAIL"
    +                        report.status_extended = f"Storage account {storage_account.name} from subscription {subscription} has an invalid key expiration period of {storage_account.key_expiration_period_in_days} days."
    +                    else:
    +                        report.status = "PASS"
    +                        report.status_extended = f"Storage account {storage_account.name} from subscription {subscription} has a key expiration period of {storage_account.key_expiration_period_in_days} days."
    +                findings.append(report)
    +
    +        return findings
    diff --git a/prowler/providers/azure/services/storage/storage_service.py b/prowler/providers/azure/services/storage/storage_service.py
    index ffaf857748c..1e4c9f67f37 100644
    --- a/prowler/providers/azure/services/storage/storage_service.py
    +++ b/prowler/providers/azure/services/storage/storage_service.py
    @@ -1,7 +1,11 @@
     from dataclasses import dataclass
     
     from azure.mgmt.storage import StorageManagementClient
    -from azure.mgmt.storage.v2022_09_01.models import NetworkRuleSet
    +from azure.mgmt.storage.v2022_09_01.models import (
    +    DeleteRetentionPolicy,
    +    NetworkRuleSet,
    +    PrivateEndpointConnection,
    +)
     
     from prowler.lib.logger import logger
     from prowler.providers.azure.lib.service.service import AzureService
    @@ -12,6 +16,7 @@ class Storage(AzureService):
         def __init__(self, provider):
             super().__init__(StorageManagementClient, provider)
             self.storage_accounts = self.__get_storage_accounts__()
    +        self.__get_blob_properties__()
     
         def __get_storage_accounts__(self):
             logger.info("Storage - Getting storage accounts...")
    @@ -21,53 +26,80 @@ def __get_storage_accounts__(self):
                     storage_accounts.update({subscription: []})
                     storage_accounts_list = client.storage_accounts.list()
                     for storage_account in storage_accounts_list:
    +                    parts = storage_account.id.split("/")
    +                    if "resourceGroups" in parts:
    +                        resouce_name_index = parts.index("resourceGroups") + 1
    +                        resouce_group_name = parts[resouce_name_index]
    +                    else:
    +                        resouce_group_name = None
    +                    key_expiration_period_in_days = None
    +                    if storage_account.key_policy:
    +                        key_expiration_period_in_days = (
    +                            storage_account.key_policy.key_expiration_period_in_days
    +                        )
                         storage_accounts[subscription].append(
    -                        Storage_Account(
    +                        Account(
                                 id=storage_account.id,
                                 name=storage_account.name,
    +                            resouce_group_name=resouce_group_name,
                                 enable_https_traffic_only=storage_account.enable_https_traffic_only,
                                 infrastructure_encryption=storage_account.encryption.require_infrastructure_encryption,
                                 allow_blob_public_access=storage_account.allow_blob_public_access,
                                 network_rule_set=storage_account.network_rule_set,
                                 encryption_type=storage_account.encryption.key_source,
                                 minimum_tls_version=storage_account.minimum_tls_version,
    +                            private_endpoint_connections=storage_account.private_endpoint_connections,
    +                            key_expiration_period_in_days=key_expiration_period_in_days,
                             )
                         )
                 except Exception as error:
    -                logger.error(f"Subscription name: {subscription}")
                     logger.error(
    -                    f"{error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}"
    +                    f"Subscription name: {subscription} -- {error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}"
                     )
             return storage_accounts
     
    +    def __get_blob_properties__(self):
    +        logger.info("Storage - Getting blob properties...")
    +        try:
    +            for subscription, accounts in self.storage_accounts.items():
    +                client = self.clients[subscription]
    +                for account in accounts:
    +                    properties = client.blob_services.get_service_properties(
    +                        account.resouce_group_name, account.name
    +                    )
    +                    account.blob_properties = BlobProperties(
    +                        id=properties.id,
    +                        name=properties.name,
    +                        type=properties.type,
    +                        default_service_version=properties.default_service_version,
    +                        container_delete_retention_policy=properties.container_delete_retention_policy,
    +                    )
    +        except Exception as error:
    +            logger.error(
    +                f"Subscription name: {subscription} -- {error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}"
    +            )
    +
    +
    +@dataclass
    +class BlobProperties:
    +    id: str
    +    name: str
    +    type: str
    +    default_service_version: str
    +    container_delete_retention_policy: DeleteRetentionPolicy
    +
     
     @dataclass
    -class Storage_Account:
    +class Account:
         id: str
         name: str
    +    resouce_group_name: str
         enable_https_traffic_only: bool
         infrastructure_encryption: bool
         allow_blob_public_access: bool
         network_rule_set: NetworkRuleSet
         encryption_type: str
         minimum_tls_version: str
    -
    -    def __init__(
    -        self,
    -        id,
    -        name,
    -        enable_https_traffic_only,
    -        infrastructure_encryption,
    -        allow_blob_public_access,
    -        network_rule_set,
    -        encryption_type,
    -        minimum_tls_version,
    -    ):
    -        self.id = id
    -        self.name = name
    -        self.enable_https_traffic_only = enable_https_traffic_only
    -        self.infrastructure_encryption = infrastructure_encryption
    -        self.allow_blob_public_access = allow_blob_public_access
    -        self.network_rule_set = network_rule_set
    -        self.encryption_type = encryption_type
    -        self.minimum_tls_version = minimum_tls_version
    +    private_endpoint_connections: PrivateEndpointConnection
    +    key_expiration_period_in_days: str
    +    blob_properties: BlobProperties = None
    diff --git a/prowler/providers/azure/services/vm/__init__.py b/prowler/providers/azure/services/vm/__init__.py
    new file mode 100644
    index 00000000000..e69de29bb2d
    diff --git a/prowler/providers/azure/services/vm/vm_client.py b/prowler/providers/azure/services/vm/vm_client.py
    new file mode 100644
    index 00000000000..33bde5b1b29
    --- /dev/null
    +++ b/prowler/providers/azure/services/vm/vm_client.py
    @@ -0,0 +1,4 @@
    +from prowler.providers.azure.lib.audit_info.audit_info import azure_audit_info
    +from prowler.providers.azure.services.vm.vm_service import VirtualMachines
    +
    +vm_client = VirtualMachines(azure_audit_info)
    diff --git a/prowler/providers/azure/services/vm/vm_ensure_attached_disks_encrypted_with_cmk/__init__.py b/prowler/providers/azure/services/vm/vm_ensure_attached_disks_encrypted_with_cmk/__init__.py
    new file mode 100644
    index 00000000000..e69de29bb2d
    diff --git a/prowler/providers/azure/services/vm/vm_ensure_attached_disks_encrypted_with_cmk/vm_ensure_attached_disks_encrypted_with_cmk.metadata.json b/prowler/providers/azure/services/vm/vm_ensure_attached_disks_encrypted_with_cmk/vm_ensure_attached_disks_encrypted_with_cmk.metadata.json
    new file mode 100644
    index 00000000000..dc79e51548d
    --- /dev/null
    +++ b/prowler/providers/azure/services/vm/vm_ensure_attached_disks_encrypted_with_cmk/vm_ensure_attached_disks_encrypted_with_cmk.metadata.json
    @@ -0,0 +1,30 @@
    +{
    +  "Provider": "azure",
    +  "CheckID": "vm_ensure_attached_disks_encrypted_with_cmk",
    +  "CheckTitle": "Ensure that 'OS and Data' disks are encrypted with Customer Managed Key (CMK)",
    +  "CheckType": [],
    +  "ServiceName": "vm",
    +  "SubServiceName": "",
    +  "ResourceIdTemplate": "",
    +  "Severity": "high",
    +  "ResourceType": "Microsoft.Compute/virtualMachines",
    +  "Description": "Ensure that OS disks (boot volumes) and data disks (non-boot volumes) are encrypted with CMK (Customer Managed Keys). Customer Managed keys can be either ADE or Server Side Encryption (SSE).",
    +  "Risk": "Encrypting the IaaS VM's OS disk (boot volume) and Data disks (non-boot volume) ensures that the entire content is fully unrecoverable without a key, thus protecting the volume from unwanted reads. PMK (Platform Managed Keys) are enabled by default in Azure-managed disks and allow encryption at rest. CMK is recommended because it gives the customer the option to control which specific keys are used for the encryption and decryption of the disk. The customer can then change keys and increase security by disabling them instead of relying on the PMK key that remains unchanging. There is also the option to increase security further by using automatically rotating keys so that access to disk is ensured to be limited. Organizations should evaluate what their security requirements are, however, for the data stored on the disk. For high-risk data using CMK is a must, as it provides extra steps of security. If the data is low risk, PMK is enabled by default and provides sufficient data security.",
    +  "RelatedUrl": "https://learn.microsoft.com/en-us/azure/virtual-machines/disk-encryption-overview",
    +  "Remediation": {
    +    "Code": {
    +      "CLI": "",
    +      "NativeIaC": "",
    +      "Other": "https://www.trendmicro.com/cloudoneconformity/knowledge-base/azure/VirtualMachines/sse-boot-disk-cmk.html#",
    +      "Terraform": "https://docs.bridgecrew.io/docs/bc_azr_general_1#terraform"
    +    },
    +    "Recommendation": {
    +      "Text": "Note: Disks must be detached from VMs to have encryption changed. 1. Go to Virtual machines 2. For each virtual machine, go to Settings 3. Click on Disks 4. Click the ellipsis (...), then click Detach to detach the disk from the VM 5. Now search for Disks and locate the unattached disk 6. Click the disk then select Encryption 7. Change your encryption type, then select your encryption set 8. Click Save 9. Go back to the VM and re-attach the disk",
    +      "Url": "https://learn.microsoft.com/en-us/azure/security/fundamentals/data-encryption-best-practices#protect-data-at-rest"
    +    }
    +  },
    +  "Categories": [],
    +  "DependsOn": [],
    +  "RelatedTo": [],
    +  "Notes": "Using CMK/BYOK will entail additional management of keys."
    +}
    diff --git a/prowler/providers/azure/services/vm/vm_ensure_attached_disks_encrypted_with_cmk/vm_ensure_attached_disks_encrypted_with_cmk.py b/prowler/providers/azure/services/vm/vm_ensure_attached_disks_encrypted_with_cmk/vm_ensure_attached_disks_encrypted_with_cmk.py
    new file mode 100644
    index 00000000000..de333110706
    --- /dev/null
    +++ b/prowler/providers/azure/services/vm/vm_ensure_attached_disks_encrypted_with_cmk/vm_ensure_attached_disks_encrypted_with_cmk.py
    @@ -0,0 +1,28 @@
    +from prowler.lib.check.models import Check, Check_Report_Azure
    +from prowler.providers.azure.services.vm.vm_client import vm_client
    +
    +
    +class vm_ensure_attached_disks_encrypted_with_cmk(Check):
    +    def execute(self) -> Check_Report_Azure:
    +        findings = []
    +
    +        for subscription_name, disks in vm_client.disks.items():
    +            for disk_id, disk in disks.items():
    +                if disk.vms_attached:
    +                    report = Check_Report_Azure(self.metadata())
    +                    report.status = "PASS"
    +                    report.subscription = subscription_name
    +                    report.resource_name = disk.resource_name
    +                    report.resource_id = disk.resource_id
    +                    report.status_extended = f"Disk '{disk_id}' is encrypted with a customer-managed key in subscription {subscription_name}."
    +
    +                    if (
    +                        not disk.encryption_type
    +                        or disk.encryption_type == "EncryptionAtRestWithPlatformKey"
    +                    ):
    +                        report.status = "FAIL"
    +                        report.status_extended = f"Disk '{disk_id}' is not encrypted with a customer-managed key in subscription {subscription_name}."
    +
    +                    findings.append(report)
    +
    +        return findings
    diff --git a/prowler/providers/azure/services/vm/vm_ensure_unattached_disks_encrypted_with_cmk/__init__.py b/prowler/providers/azure/services/vm/vm_ensure_unattached_disks_encrypted_with_cmk/__init__.py
    new file mode 100644
    index 00000000000..e69de29bb2d
    diff --git a/prowler/providers/azure/services/vm/vm_ensure_unattached_disks_encrypted_with_cmk/vm_ensure_unattached_disks_encrypted_with_cmk.metadata.json b/prowler/providers/azure/services/vm/vm_ensure_unattached_disks_encrypted_with_cmk/vm_ensure_unattached_disks_encrypted_with_cmk.metadata.json
    new file mode 100644
    index 00000000000..9ea330491e5
    --- /dev/null
    +++ b/prowler/providers/azure/services/vm/vm_ensure_unattached_disks_encrypted_with_cmk/vm_ensure_unattached_disks_encrypted_with_cmk.metadata.json
    @@ -0,0 +1,30 @@
    +{
    +  "Provider": "azure",
    +  "CheckID": "vm_ensure_unattached_disks_encrypted_with_cmk",
    +  "CheckTitle": "Ensure that 'Unattached disks' are encrypted with 'Customer Managed Key' (CMK)",
    +  "CheckType": [],
    +  "ServiceName": "vm",
    +  "SubServiceName": "",
    +  "ResourceIdTemplate": "",
    +  "Severity": "high",
    +  "ResourceType": "Microsoft.Compute/virtualMachines",
    +  "Description": "Ensure that unattached disks in a subscription are encrypted with a Customer Managed Key (CMK).",
    +  "Risk": "Managed disks are encrypted by default with Platform-managed keys. Using Customer-managed keys may provide an additional level of security or meet an organization's regulatory requirements. Encrypting managed disks ensures that its entire content is fully unrecoverable without a key and thus protects the volume from unwarranted reads. Even if the disk is not attached to any of the VMs, there is always a risk where a compromised user account with administrative access to VM service can mount/attach these data disks, which may lead to sensitive information disclosure and tampering.",
    +  "RelatedUrl": "https://docs.microsoft.com/en-us/azure/security/fundamentals/azure-disk-encryption-vms-vmss",
    +  "Remediation": {
    +    "Code": {
    +      "CLI": "",
    +      "NativeIaC": "",
    +      "Other": "https://www.trendmicro.com/cloudoneconformity/knowledge-base/azure/VirtualMachines/sse-unattached-disk-cmk.html#",
    +      "Terraform": ""
    +    },
    +    "Recommendation": {
    +      "Text": "If data stored in the disk is no longer useful, refer to Azure documentation to delete unattached data disks at: https://learn.microsoft.com/en-us/rest/api/compute/disks/delete?view=rest-compute-2023-10-02&tabs=HTTP",
    +      "Url": "https://learn.microsoft.com/en-us/azure/security/fundamentals/data-encryption-best-practices#protect-data-at-rest"
    +    }
    +  },
    +  "Categories": [],
    +  "DependsOn": [],
    +  "RelatedTo": [],
    +  "Notes": "You must have your key vault set up to utilize this. Encryption is available only on Standard tier VMs. This might cost you more. Utilizing and maintaining Customer-managed keys will require additional work to create, protect, and rotate keys."
    +}
    diff --git a/prowler/providers/azure/services/vm/vm_ensure_unattached_disks_encrypted_with_cmk/vm_ensure_unattached_disks_encrypted_with_cmk.py b/prowler/providers/azure/services/vm/vm_ensure_unattached_disks_encrypted_with_cmk/vm_ensure_unattached_disks_encrypted_with_cmk.py
    new file mode 100644
    index 00000000000..20ea322b587
    --- /dev/null
    +++ b/prowler/providers/azure/services/vm/vm_ensure_unattached_disks_encrypted_with_cmk/vm_ensure_unattached_disks_encrypted_with_cmk.py
    @@ -0,0 +1,28 @@
    +from prowler.lib.check.models import Check, Check_Report_Azure
    +from prowler.providers.azure.services.vm.vm_client import vm_client
    +
    +
    +class vm_ensure_unattached_disks_encrypted_with_cmk(Check):
    +    def execute(self) -> Check_Report_Azure:
    +        findings = []
    +
    +        for subscription_name, disks in vm_client.disks.items():
    +            for disk_id, disk in disks.items():
    +                if not disk.vms_attached:
    +                    report = Check_Report_Azure(self.metadata())
    +                    report.status = "PASS"
    +                    report.subscription = subscription_name
    +                    report.resource_name = disk.resource_name
    +                    report.resource_id = disk.resource_id
    +                    report.status_extended = f"Disk '{disk_id}' is encrypted with a customer-managed key in subscription {subscription_name}."
    +
    +                    if (
    +                        not disk.encryption_type
    +                        or disk.encryption_type == "EncryptionAtRestWithPlatformKey"
    +                    ):
    +                        report.status = "FAIL"
    +                        report.status_extended = f"Disk '{disk_id}' is not encrypted with a customer-managed key in subscription {subscription_name}."
    +
    +                    findings.append(report)
    +
    +        return findings
    diff --git a/prowler/providers/azure/services/vm/vm_ensure_using_managed_disks/__init__.py b/prowler/providers/azure/services/vm/vm_ensure_using_managed_disks/__init__.py
    new file mode 100644
    index 00000000000..e69de29bb2d
    diff --git a/prowler/providers/azure/services/vm/vm_ensure_using_managed_disks/vm_ensure_using_managed_disks.metadata.json b/prowler/providers/azure/services/vm/vm_ensure_using_managed_disks/vm_ensure_using_managed_disks.metadata.json
    new file mode 100644
    index 00000000000..1297a3d05f2
    --- /dev/null
    +++ b/prowler/providers/azure/services/vm/vm_ensure_using_managed_disks/vm_ensure_using_managed_disks.metadata.json
    @@ -0,0 +1,30 @@
    +{
    +  "Provider": "azure",
    +  "CheckID": "vm_ensure_using_managed_disks",
    +  "CheckTitle": "Ensure Virtual Machines are utilizing Managed Disks",
    +  "CheckType": [],
    +  "ServiceName": "vm",
    +  "SubServiceName": "",
    +  "ResourceIdTemplate": "",
    +  "Severity": "medium",
    +  "ResourceType": "Microsoft.Compute/virtualMachines",
    +  "Description": "Migrate blob-based VHDs to Managed Disks on Virtual Machines to exploit the default features of this configuration. The features include: 1. Default Disk Encryption 2. Resilience, as Microsoft will managed the disk storage and move around if underlying hardware goes faulty 3. Reduction of costs over storage accounts",
    +  "Risk": "Managed disks are by default encrypted on the underlying hardware, so no additional encryption is required for basic protection. It is available if additional encryption is required. Managed disks are by design more resilient that storage accounts. For ARM-deployed Virtual Machines, Azure Adviser will at some point recommend moving VHDs to managed disks both from a security and cost management perspective.",
    +  "RelatedUrl": "https://learn.microsoft.com/en-us/azure/virtual-machines/unmanaged-disks-deprecation",
    +  "Remediation": {
    +    "Code": {
    +      "CLI": "",
    +      "NativeIaC": "",
    +      "Other": "https://www.trendmicro.com/cloudoneconformity/knowledge-base/azure/VirtualMachines/managed-disks-in-use.html",
    +      "Terraform": "https://docs.bridgecrew.io/docs/ensure-virtual-machines-are-utilizing-managed-disks#terraform"
    +    },
    +    "Recommendation": {
    +      "Text": "There are additional costs for managed disks based off of disk space allocated. When converting to managed disks, VMs will be powered off and back on.",
    +      "Url": "https://docs.microsoft.com/en-us/security/benchmark/azure/security-controls-v3-data-protection#dp-4-enable-data-at-rest-encryption-by-default"
    +    }
    +  },
    +  "Categories": [],
    +  "DependsOn": [],
    +  "RelatedTo": [],
    +  "Notes": "There are additional costs for managed disks based off of disk space allocated. When converting to managed disks, VMs will be powered off and back on."
    +}
    diff --git a/prowler/providers/azure/services/vm/vm_ensure_using_managed_disks/vm_ensure_using_managed_disks.py b/prowler/providers/azure/services/vm/vm_ensure_using_managed_disks/vm_ensure_using_managed_disks.py
    new file mode 100644
    index 00000000000..96d241096fe
    --- /dev/null
    +++ b/prowler/providers/azure/services/vm/vm_ensure_using_managed_disks/vm_ensure_using_managed_disks.py
    @@ -0,0 +1,40 @@
    +from prowler.lib.check.models import Check, Check_Report_Azure
    +from prowler.providers.azure.services.vm.vm_client import vm_client
    +
    +
    +class vm_ensure_using_managed_disks(Check):
    +    def execute(self) -> Check_Report_Azure:
    +        findings = []
    +
    +        for subscription_name, vms in vm_client.virtual_machines.items():
    +            for vm_id, vm in vms.items():
    +                report = Check_Report_Azure(self.metadata())
    +                report.status = "PASS"
    +                report.subscription = subscription_name
    +                report.resource_name = vm.resource_name
    +                report.resource_id = vm_id
    +                report.status_extended = f"VM {vm.resource_name} is using managed disks in subscription {subscription_name}"
    +
    +                using_managed_disks = (
    +                    True
    +                    if vm.storage_profile
    +                    and getattr(vm.storage_profile, "os_disk", False)
    +                    and getattr(vm.storage_profile.os_disk, "managed_disk", False)
    +                    else False
    +                )
    +
    +                if using_managed_disks and getattr(
    +                    vm.storage_profile, "data_disks", False
    +                ):
    +                    for data_disk in vm.storage_profile.data_disks:
    +                        if not getattr(data_disk, "managed_disk", False):
    +                            using_managed_disks = False
    +                            break
    +
    +                if not using_managed_disks:
    +                    report.status = "FAIL"
    +                    report.status_extended = f"VM {vm.resource_name} is not using managed disks in subscription {subscription_name}"
    +
    +                findings.append(report)
    +
    +        return findings
    diff --git a/prowler/providers/azure/services/vm/vm_service.py b/prowler/providers/azure/services/vm/vm_service.py
    new file mode 100644
    index 00000000000..4a84f7cb8f4
    --- /dev/null
    +++ b/prowler/providers/azure/services/vm/vm_service.py
    @@ -0,0 +1,91 @@
    +from dataclasses import dataclass
    +
    +from azure.mgmt.compute import ComputeManagementClient
    +from azure.mgmt.compute.models import StorageProfile
    +
    +from prowler.lib.logger import logger
    +from prowler.providers.azure.lib.audit_info.models import Azure_Audit_Info
    +from prowler.providers.azure.lib.service.service import AzureService
    +
    +
    +########################## VirtualMachines
    +class VirtualMachines(AzureService):
    +    def __init__(self, audit_info: Azure_Audit_Info):
    +        super().__init__(ComputeManagementClient, audit_info)
    +        self.virtual_machines = self.__get_virtual_machines__()
    +        self.disks = self.__get_disks__()
    +
    +    def __get_virtual_machines__(self):
    +        logger.info("VirtualMachines - Getting virtual machines...")
    +        virtual_machines = {}
    +
    +        for subscription_name, client in self.clients.items():
    +            try:
    +                virtual_machines_list = client.virtual_machines.list_all()
    +                virtual_machines.update({subscription_name: {}})
    +
    +                for vm in virtual_machines_list:
    +                    virtual_machines[subscription_name].update(
    +                        {
    +                            vm.vm_id: VirtualMachine(
    +                                resource_id=vm.id,
    +                                resource_name=vm.name,
    +                                storage_profile=getattr(vm, "storage_profile", None),
    +                            )
    +                        }
    +                    )
    +            except Exception as error:
    +                logger.error(
    +                    f"Subscription name: {subscription_name} -- {error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}"
    +                )
    +
    +        return virtual_machines
    +
    +    def __get_disks__(self):
    +        logger.info("VirtualMachines - Getting disks...")
    +        disks = {}
    +
    +        for subscription_name, client in self.clients.items():
    +            try:
    +                disks_list = client.disks.list()
    +                disks.update({subscription_name: {}})
    +
    +                for disk in disks_list:
    +                    vms_attached = []
    +                    if disk.managed_by:
    +                        vms_attached.append(disk.managed_by)
    +                    if disk.managed_by_extended:
    +                        vms_attached.extend(disk.managed_by_extended)
    +                    disks[subscription_name].update(
    +                        {
    +                            disk.unique_id: Disk(
    +                                resource_id=disk.id,
    +                                resource_name=disk.name,
    +                                vms_attached=vms_attached,
    +                                encryption_type=getattr(
    +                                    getattr(disk, "encryption", None), "type", None
    +                                ),
    +                            )
    +                        }
    +                    )
    +            except Exception as error:
    +                logger.error(
    +                    f"Subscription name: {subscription_name} -- {error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}"
    +                )
    +
    +        return disks
    +
    +
    +@dataclass
    +class VirtualMachine:
    +    resource_id: str
    +    resource_name: str
    +    storage_profile: StorageProfile
    +
    +
    +@dataclass
    +class Disk:
    +    resource_id: str
    +    resource_name: str
    +    vms_attached: list[str]
    +    encryption_type: str
    diff --git a/prowler/providers/common/audit_info.py b/prowler/providers/common/audit_info.py
    index 8a00b76695d..24f921758fc 100644
    --- a/prowler/providers/common/audit_info.py
    +++ b/prowler/providers/common/audit_info.py
    @@ -8,6 +8,7 @@
     from prowler.providers.aws.aws_provider import (
         AWS_Provider,
         assume_role,
    +    get_aws_enabled_regions,
         get_checks_from_input_arn,
         get_regions_from_audit_resources,
     )
    @@ -17,6 +18,7 @@
     from prowler.providers.aws.lib.credentials.credentials import validate_AWSCredentials
     from prowler.providers.aws.lib.organizations.organizations import (
         get_organizations_metadata,
    +    parse_organizations_metadata,
     )
     from prowler.providers.aws.lib.resource_api_tagging.resource_api_tagging import (
         get_tagged_resources,
    @@ -42,15 +44,7 @@ def __init__(self):
     
         def print_gcp_credentials(self, audit_info: GCP_Audit_Info):
             # Beautify audited profile, set "default" if there is no profile set
    -        try:
    -            getattr(audit_info.credentials, "_service_account_email")
    -            profile = (
    -                audit_info.credentials._service_account_email
    -                if audit_info.credentials._service_account_email is not None
    -                else "default"
    -            )
    -        except AttributeError:
    -            profile = "default"
    +        profile = getattr(audit_info.credentials, "_service_account_email", "default")
     
             report = f"""
     This report is being generated using credentials below:
    @@ -76,12 +70,12 @@ def print_kubernetes_credentials(self, audit_info: Kubernetes_Audit_Info):
         def print_azure_credentials(self, audit_info: Azure_Audit_Info):
             printed_subscriptions = []
             for key, value in audit_info.identity.subscriptions.items():
    -            intermediate = key + " : " + value
    +            intermediate = f"{key} : {value}"
                 printed_subscriptions.append(intermediate)
             report = f"""
     This report is being generated using the identity below:
     
    -Azure Tenant IDs: {Fore.YELLOW}[{" ".join(audit_info.identity.tenant_ids)}]{Style.RESET_ALL} Azure Tenant Domain: {Fore.YELLOW}[{audit_info.identity.domain}]{Style.RESET_ALL} Azure Region: {Fore.YELLOW}[{audit_info.AzureRegionConfig.name}]{Style.RESET_ALL}
    +Azure Tenant IDs: {Fore.YELLOW}[{" ".join(audit_info.identity.tenant_ids)}]{Style.RESET_ALL} Azure Tenant Domain: {Fore.YELLOW}[{audit_info.identity.domain}]{Style.RESET_ALL} Azure Region: {Fore.YELLOW}[{audit_info.azure_region_config.name}]{Style.RESET_ALL}
     Azure Subscriptions: {Fore.YELLOW}{printed_subscriptions}{Style.RESET_ALL}
     Azure Identity Type: {Fore.YELLOW}[{audit_info.identity.identity_type}]{Style.RESET_ALL} Azure Identity ID: {Fore.YELLOW}[{audit_info.identity.identity_id}]{Style.RESET_ALL}
     """
    @@ -98,6 +92,7 @@ def set_aws_audit_info(self, arguments) -> AWS_Audit_Info:
             current_audit_info.assumed_role_info.role_arn = input_role
             input_session_duration = arguments.get("session_duration")
             input_external_id = arguments.get("external_id")
    +        input_role_session_name = arguments.get("role_session_name")
     
             # STS Endpoint Region
             sts_endpoint_region = arguments.get("sts_endpoint_region")
    @@ -166,6 +161,9 @@ def set_aws_audit_info(self, arguments) -> AWS_Audit_Info:
                 )
                 current_audit_info.assumed_role_info.external_id = input_external_id
                 current_audit_info.assumed_role_info.mfa_enabled = input_mfa
    +            current_audit_info.assumed_role_info.role_session_name = (
    +                input_role_session_name
    +            )
     
                 # Check if role arn is valid
                 try:
    @@ -237,17 +235,53 @@ def set_aws_audit_info(self, arguments) -> AWS_Audit_Info:
     
                 else:
                     logger.info(
    -                    f"Getting organizations metadata for account {organizations_role_arn}"
    +                    f"Getting organizations metadata for account with IAM Role ARN {organizations_role_arn}"
                     )
                     assumed_credentials = assume_role(
                         aws_provider.aws_session,
                         aws_provider.role_info,
                         sts_endpoint_region,
                     )
    -                current_audit_info.organizations_metadata = get_organizations_metadata(
    -                    current_audit_info.audited_account, assumed_credentials
    +                organizations_metadata, list_tags_for_resource = (
    +                    get_organizations_metadata(
    +                        current_audit_info.audited_account, assumed_credentials
    +                    )
    +                )
    +                current_audit_info.organizations_metadata = (
    +                    parse_organizations_metadata(
    +                        organizations_metadata, list_tags_for_resource
    +                    )
    +                )
    +                logger.info(
    +                    f"Organizations metadata retrieved with IAM Role ARN {organizations_role_arn}"
    +                )
    +        else:
    +            try:
    +                logger.info(
    +                    "Getting organizations metadata for account if it is a delegated administrator"
    +                )
    +                organizations_metadata, list_tags_for_resource = (
    +                    get_organizations_metadata(
    +                        aws_account_id=current_audit_info.audited_account,
    +                        session=current_audit_info.audit_session,
    +                    )
    +                )
    +                if organizations_metadata:
    +                    current_audit_info.organizations_metadata = (
    +                        parse_organizations_metadata(
    +                            organizations_metadata, list_tags_for_resource
    +                        )
    +                    )
    +
    +                    logger.info(
    +                        "Organizations metadata retrieved as a delegated administrator"
    +                    )
    +            except Exception as error:
    +                # If the account is not a delegated administrator for AWS Organizations a credentials error will be thrown
    +                # Since it is a permission issue for an optional we'll raise a warning
    +                logger.warning(
    +                    f"{error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}"
                     )
    -                logger.info("Organizations metadata retrieved")
     
             # Setting default region of session
             if current_audit_info.audit_session.region_name:
    @@ -268,6 +302,9 @@ def set_aws_audit_info(self, arguments) -> AWS_Audit_Info:
             if arguments.get("resource_arn"):
                 current_audit_info.audit_resources = arguments.get("resource_arn")
     
    +        # Get Enabled Regions
    +        current_audit_info.enabled_regions = get_aws_enabled_regions(current_audit_info)
    +
             return current_audit_info
     
         def set_aws_execution_parameters(self, provider, audit_info) -> list[str]:
    @@ -327,12 +364,18 @@ def set_azure_audit_info(self, arguments) -> Azure_Audit_Info:
             azure_audit_info.credentials = azure_provider.get_credentials()
             azure_audit_info.identity = azure_provider.get_identity()
             region_config = azure_provider.get_region_config()
    -        azure_audit_info.AzureRegionConfig = AzureRegionConfig(
    +        azure_audit_info.azure_region_config = AzureRegionConfig(
                 name=region,
                 authority=region_config["authority"],
                 base_url=region_config["base_url"],
                 credential_scopes=region_config["credential_scopes"],
             )
    +        azure_audit_info.locations = azure_provider.get_locations(
    +            azure_audit_info.credentials, region_config
    +        )
    +
    +        if not arguments.get("only_logs"):
    +            self.print_azure_credentials(azure_audit_info)
     
             return azure_audit_info
     
    @@ -405,7 +448,7 @@ def set_provider_audit_info(provider: str, arguments: dict):
     
     def set_provider_execution_parameters(provider: str, audit_info):
         """
    -    set_provider_audit_info configures automatically the audit execution based on the selected provider and returns the checks that are going to be executed.
    +    set_provider_execution_parameters" configures automatically the audit execution based on the selected provider and returns the checks that are going to be executed.
         """
         try:
             set_provider_execution_parameters_function = (
    diff --git a/prowler/providers/common/outputs.py b/prowler/providers/common/outputs.py
    index 49d9dba0552..c23a3187da1 100644
    --- a/prowler/providers/common/outputs.py
    +++ b/prowler/providers/common/outputs.py
    @@ -69,10 +69,10 @@ def __init__(self, arguments, mutelist_file, bulk_checks_metadata):
             if arguments.output_directory:
                 if not isdir(arguments.output_directory):
                     if arguments.output_modes:
    -                    makedirs(arguments.output_directory)
    +                    makedirs(arguments.output_directory, exist_ok=True)
                 if not isdir(arguments.output_directory + "/compliance"):
                     if arguments.output_modes:
    -                    makedirs(arguments.output_directory + "/compliance")
    +                    makedirs(arguments.output_directory + "/compliance", exist_ok=True)
     
     
     class Azure_Output_Options(Provider_Output_Options):
    @@ -80,6 +80,12 @@ def __init__(self, arguments, audit_info, mutelist_file, bulk_checks_metadata):
             # First call Provider_Output_Options init
             super().__init__(arguments, mutelist_file, bulk_checks_metadata)
     
    +        # Confire Shodan API
    +        if arguments.shodan:
    +            audit_info = change_config_var(
    +                "shodan_api_key", arguments.shodan, audit_info
    +            )
    +
             # Check if custom output filename was input, if not, set the default
             if (
                 not hasattr(arguments, "output_filename")
    @@ -106,7 +112,7 @@ def __init__(self, arguments, audit_info, mutelist_file, bulk_checks_metadata):
                 not hasattr(arguments, "output_filename")
                 or arguments.output_filename is None
             ):
    -            self.output_filename = f"prowler-output-{audit_info.default_project_id}-{output_file_timestamp}"
    +            self.output_filename = f"prowler-output-{getattr(audit_info.credentials, '_service_account_email', 'default')}-{output_file_timestamp}"
             else:
                 self.output_filename = arguments.output_filename
     
    @@ -152,6 +158,7 @@ def __init__(self, arguments, audit_info, mutelist_file, bulk_checks_metadata):
     
             # Security Hub Outputs
             self.security_hub_enabled = arguments.security_hub
    +        self.send_sh_only_fails = arguments.send_sh_only_fails
             if arguments.security_hub:
                 if not self.output_modes:
                     self.output_modes = ["json-asff"]
    diff --git a/prowler/providers/gcp/gcp_provider.py b/prowler/providers/gcp/gcp_provider.py
    index 7f5b700f998..54a8f5f9997 100644
    --- a/prowler/providers/gcp/gcp_provider.py
    +++ b/prowler/providers/gcp/gcp_provider.py
    @@ -1,6 +1,7 @@
     import os
     import sys
     
    +from colorama import Fore, Style
     from google import auth
     from googleapiclient import discovery
     
    @@ -17,9 +18,6 @@ def __init__(
             self.credentials, self.default_project_id = self.__set_credentials__(
                 credentials_file
             )
    -        if not self.default_project_id:
    -            logger.critical("No Project ID associated to Google Credentials.")
    -            sys.exit(1)
     
             self.project_ids = []
             accessible_projects = self.get_project_ids()
    @@ -89,4 +87,7 @@ def get_project_ids(self):
                 logger.error(
                     f"{error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}"
                 )
    +            print(
    +                f"\n{Fore.YELLOW}Cloud Resource Manager API {Style.RESET_ALL}has not been used before or it is disabled.\nEnable it by visiting https://console.developers.google.com/apis/api/cloudresourcemanager.googleapis.com/ then retry."
    +            )
                 return []
    diff --git a/prowler/providers/gcp/lib/service/service.py b/prowler/providers/gcp/lib/service/service.py
    index c76691b6171..581e0538ea6 100644
    --- a/prowler/providers/gcp/lib/service/service.py
    +++ b/prowler/providers/gcp/lib/service/service.py
    @@ -26,7 +26,9 @@ def __init__(
             self.api_version = api_version
             self.default_project_id = provider.default_project_id
             self.region = region
    -        self.client = self.__generate_client__(service, api_version, self.credentials)
    +        self.client = self.__generate_client__(
    +            self.service, api_version, self.credentials
    +        )
             # Only project ids that have their API enabled will be scanned
             self.project_ids = self.__is_api_active__(provider.project_ids)
     
    @@ -60,7 +62,7 @@ def __is_api_active__(self, audited_project_ids):
                         project_ids.append(project_id)
                     else:
                         print(
    -                        f"\n{Fore.YELLOW}{self.service} API {Style.RESET_ALL}has not been used in project {project_id} before or it is disabled.\nEnable it by visiting https://console.developers.google.com/apis/api/dataproc.googleapis.com/overview?project={project_id} then retry."
    +                        f"\n{Fore.YELLOW}{self.service} API {Style.RESET_ALL}has not been used in project {project_id} before or it is disabled.\nEnable it by visiting https://console.developers.google.com/apis/api/{self.service}.googleapis.com/overview?project={project_id} then retry."
                         )
                 except Exception as error:
                     logger.error(
    diff --git a/prowler/providers/gcp/services/artifacts/artifacts_container_analysis_enabled/__init__.py b/prowler/providers/gcp/services/artifacts/artifacts_container_analysis_enabled/__init__.py
    new file mode 100644
    index 00000000000..e69de29bb2d
    diff --git a/prowler/providers/gcp/services/artifacts/artifacts_container_analysis_enabled/artifacts_container_analysis_enabled.metadata.json b/prowler/providers/gcp/services/artifacts/artifacts_container_analysis_enabled/artifacts_container_analysis_enabled.metadata.json
    new file mode 100644
    index 00000000000..7aafa5eba47
    --- /dev/null
    +++ b/prowler/providers/gcp/services/artifacts/artifacts_container_analysis_enabled/artifacts_container_analysis_enabled.metadata.json
    @@ -0,0 +1,33 @@
    +{
    +  "Provider": "gcp",
    +  "CheckID": "artifacts_container_analysis_enabled",
    +  "CheckTitle": "Ensure Image Vulnerability Analysis using AR Container Analysis or a third-party provider",
    +  "CheckType": [
    +    "Security",
    +    "Configuration"
    +  ],
    +  "ServiceName": "Artifact Registry",
    +  "SubServiceName": "Container Analysis",
    +  "ResourceIdTemplate": "",
    +  "Severity": "medium",
    +  "ResourceType": "Service",
    +  "Description": "Scan images stored in Google Container Registry (GCR) for vulnerabilities using AR Container Analysis or a third-party provider. This helps identify and mitigate security risks associated with known vulnerabilities in container images.",
    +  "Risk": "Without image vulnerability scanning, container images stored in Artifact Registry may contain known vulnerabilities, increasing the risk of exploitation by malicious actors.",
    +  "RelatedUrl": "https://cloud.google.com/artifact-analysis/docs",
    +  "Remediation": {
    +    "Code": {
    +      "CLI": "gcloud services enable containeranalysis.googleapis.com",
    +      "NativeIaC": "",
    +      "Other": "",
    +      "Terraform": ""
    +    },
    +    "Recommendation": {
    +      "Text": "Enable vulnerability scanning for images stored in Artifact Registry using AR Container Analysis or a third-party provider.",
    +      "Url": "https://cloud.google.com/artifact-analysis/docs/container-scanning-overview"
    +    }
    +  },
    +  "Categories": [],
    +  "DependsOn": [],
    +  "RelatedTo": [],
    +  "Notes": "By default, AR Container Analysis is disabled."
    +}
    diff --git a/prowler/providers/gcp/services/artifacts/artifacts_container_analysis_enabled/artifacts_container_analysis_enabled.py b/prowler/providers/gcp/services/artifacts/artifacts_container_analysis_enabled/artifacts_container_analysis_enabled.py
    new file mode 100644
    index 00000000000..5c601819c9c
    --- /dev/null
    +++ b/prowler/providers/gcp/services/artifacts/artifacts_container_analysis_enabled/artifacts_container_analysis_enabled.py
    @@ -0,0 +1,31 @@
    +from prowler.lib.check.models import Check, Check_Report_GCP
    +from prowler.providers.gcp.services.serviceusage.serviceusage_client import (
    +    serviceusage_client,
    +)
    +
    +
    +class artifacts_container_analysis_enabled(Check):
    +    def execute(self) -> Check_Report_GCP:
    +        findings = []
    +        for project_id in serviceusage_client.project_ids:
    +            report = Check_Report_GCP(self.metadata())
    +            report.project_id = project_id
    +            report.resource_id = "containeranalysis.googleapis.com"
    +            report.resource_name = "AR Container Analysis"
    +            report.location = serviceusage_client.region
    +            report.status = "FAIL"
    +            report.status_extended = (
    +                f"AR Container Analysis is not enabled in project {project_id}."
    +            )
    +            for active_service in serviceusage_client.active_services.get(
    +                project_id, []
    +            ):
    +                if active_service.name == "containeranalysis.googleapis.com":
    +                    report.status = "PASS"
    +                    report.status_extended = (
    +                        f"AR Container Analysis is enabled in project {project_id}."
    +                    )
    +                    break
    +            findings.append(report)
    +
    +        return findings
    diff --git a/prowler/providers/gcp/services/compute/compute_service.py b/prowler/providers/gcp/services/compute/compute_service.py
    index eeb3a0945b3..fa23743e6c1 100644
    --- a/prowler/providers/gcp/services/compute/compute_service.py
    +++ b/prowler/providers/gcp/services/compute/compute_service.py
    @@ -114,11 +114,13 @@ def __get_instances__(self, zone):
                                     disks_encryption=[
                                         (
                                             disk["deviceName"],
    -                                        True
    -                                        if disk.get("diskEncryptionKey", {}).get(
    -                                            "sha256"
    -                                        )
    -                                        else False,
    +                                        (
    +                                            True
    +                                            if disk.get("diskEncryptionKey", {}).get(
    +                                                "sha256"
    +                                            )
    +                                            else False
    +                                        ),
                                         )
                                         for disk in instance["disks"]
                                     ],
    @@ -144,9 +146,9 @@ def __get_networks__(self):
                             subnet_mode = (
                                 "legacy"
                                 if "autoCreateSubnetworks" not in network
    -                            else "auto"
    -                            if network["autoCreateSubnetworks"]
    -                            else "custom"
    +                            else (
    +                                "auto" if network["autoCreateSubnetworks"] else "custom"
    +                            )
                             )
                             self.networks.append(
                                 Network(
    diff --git a/prowler/providers/gcp/services/gcr/gcr_container_scanning_enabled/__init__.py b/prowler/providers/gcp/services/gcr/gcr_container_scanning_enabled/__init__.py
    new file mode 100644
    index 00000000000..e69de29bb2d
    diff --git a/prowler/providers/gcp/services/gcr/gcr_container_scanning_enabled/gcr_container_scanning_enabled.metadata.json b/prowler/providers/gcp/services/gcr/gcr_container_scanning_enabled/gcr_container_scanning_enabled.metadata.json
    new file mode 100644
    index 00000000000..0820c11190f
    --- /dev/null
    +++ b/prowler/providers/gcp/services/gcr/gcr_container_scanning_enabled/gcr_container_scanning_enabled.metadata.json
    @@ -0,0 +1,33 @@
    +{
    +  "Provider": "gcp",
    +  "CheckID": "gcr_container_scanning_enabled",
    +  "CheckTitle": "Ensure Image Vulnerability Scanning using GCR Container Scanning or a third-party provider",
    +  "CheckType": [
    +    "Security",
    +    "Configuration"
    +  ],
    +  "ServiceName": "Google Container Registry (GCR)",
    +  "SubServiceName": "Container Scanning",
    +  "ResourceIdTemplate": "",
    +  "Severity": "medium",
    +  "ResourceType": "Service",
    +  "Description": "Scan images stored in Google Container Registry (GCR) for vulnerabilities using GCR Container Scanning or a third-party provider. This helps identify and mitigate security risks associated with known vulnerabilities in container images.",
    +  "Risk": "Without image vulnerability scanning, container images stored in GCR may contain known vulnerabilities, increasing the risk of exploitation by malicious actors.",
    +  "RelatedUrl": "https://cloud.google.com/container-registry/docs/container-analysis",
    +  "Remediation": {
    +    "Code": {
    +      "CLI": "gcloud services enable containerscanning.googleapis.com",
    +      "NativeIaC": "",
    +      "Other": "",
    +      "Terraform": "https://docs.bridgecrew.io/docs/ensure-gcp-gcr-container-vulnerability-scanning-is-enabled#terraform"
    +    },
    +    "Recommendation": {
    +      "Text": "Enable vulnerability scanning for images stored in GCR using GCR Container Scanning or a third-party provider.",
    +      "Url": "https://cloud.google.com/container-registry/docs/container-best-practices"
    +    }
    +  },
    +  "Categories": [],
    +  "DependsOn": [],
    +  "RelatedTo": [],
    +  "Notes": "By default, GCR Container Scanning is disabled."
    +}
    diff --git a/prowler/providers/gcp/services/gcr/gcr_container_scanning_enabled/gcr_container_scanning_enabled.py b/prowler/providers/gcp/services/gcr/gcr_container_scanning_enabled/gcr_container_scanning_enabled.py
    new file mode 100644
    index 00000000000..87097e512d9
    --- /dev/null
    +++ b/prowler/providers/gcp/services/gcr/gcr_container_scanning_enabled/gcr_container_scanning_enabled.py
    @@ -0,0 +1,31 @@
    +from prowler.lib.check.models import Check, Check_Report_GCP
    +from prowler.providers.gcp.services.serviceusage.serviceusage_client import (
    +    serviceusage_client,
    +)
    +
    +
    +class gcr_container_scanning_enabled(Check):
    +    def execute(self) -> Check_Report_GCP:
    +        findings = []
    +        for project_id in serviceusage_client.project_ids:
    +            report = Check_Report_GCP(self.metadata())
    +            report.project_id = project_id
    +            report.resource_id = "containerscanning.googleapis.com"
    +            report.resource_name = "GCR Container Scanning"
    +            report.location = serviceusage_client.region
    +            report.status = "FAIL"
    +            report.status_extended = (
    +                f"GCR Container Scanning is not enabled in project {project_id}."
    +            )
    +            for active_service in serviceusage_client.active_services.get(
    +                project_id, []
    +            ):
    +                if active_service.name == "containerscanning.googleapis.com":
    +                    report.status = "PASS"
    +                    report.status_extended = (
    +                        f"GCR Container Scanning is enabled in project {project_id}."
    +                    )
    +                    break
    +            findings.append(report)
    +
    +        return findings
    diff --git a/prowler/providers/gcp/services/gke/__init__.py b/prowler/providers/gcp/services/gke/__init__.py
    new file mode 100644
    index 00000000000..e69de29bb2d
    diff --git a/prowler/providers/gcp/services/gke/gke_client.py b/prowler/providers/gcp/services/gke/gke_client.py
    new file mode 100644
    index 00000000000..7b165a2c76e
    --- /dev/null
    +++ b/prowler/providers/gcp/services/gke/gke_client.py
    @@ -0,0 +1,4 @@
    +from prowler.providers.gcp.lib.audit_info.audit_info import gcp_audit_info
    +from prowler.providers.gcp.services.gke.gke_service import GKE
    +
    +gke_client = GKE(gcp_audit_info)
    diff --git a/prowler/providers/gcp/services/gke/gke_cluster_no_default_service_account/__init__.py b/prowler/providers/gcp/services/gke/gke_cluster_no_default_service_account/__init__.py
    new file mode 100644
    index 00000000000..e69de29bb2d
    diff --git a/prowler/providers/gcp/services/gke/gke_cluster_no_default_service_account/gke_cluster_no_default_service_account.metadata.json b/prowler/providers/gcp/services/gke/gke_cluster_no_default_service_account/gke_cluster_no_default_service_account.metadata.json
    new file mode 100644
    index 00000000000..672f99e5b84
    --- /dev/null
    +++ b/prowler/providers/gcp/services/gke/gke_cluster_no_default_service_account/gke_cluster_no_default_service_account.metadata.json
    @@ -0,0 +1,33 @@
    +{
    +  "Provider": "gcp",
    +  "CheckID": "gke_cluster_no_default_service_account",
    +  "CheckTitle": "Ensure GKE clusters are not running using the Compute Engine default service account",
    +  "CheckType": [
    +    "Security",
    +    "Configuration"
    +  ],
    +  "ServiceName": "Google Kubernetes Engine (GKE)",
    +  "SubServiceName": "",
    +  "ResourceIdTemplate": "",
    +  "Severity": "medium",
    +  "ResourceType": "Service",
    +  "Description": "Ensure GKE clusters are not running using the Compute Engine default service account. Create and use minimally privileged service accounts for GKE cluster nodes instead of using the Compute Engine default service account to minimize unnecessary permissions.",
    +  "Risk": "Using the Compute Engine default service account for GKE cluster nodes may grant excessive permissions, increasing the risk of unauthorized access or compromise if a node is compromised.",
    +  "RelatedUrl": "https://cloud.google.com/compute/docs/access/service-accounts#default_service_account",
    +  "Remediation": {
    +    "Code": {
    +      "CLI": "gcloud container node-pools create [NODE_POOL] --service-account=[SA_NAME]@[PROJECT_ID].iam.gserviceaccount.com --cluster=[CLUSTER_NAME] --zone [COMPUTE_ZONE]",
    +      "NativeIaC": "",
    +      "Other": "",
    +      "Terraform": "https://docs.bridgecrew.io/docs/ensure-gke-clusters-are-not-running-using-the-compute-engine-default-service-account#terraform"
    +    },
    +    "Recommendation": {
    +      "Text": "Create and use minimally privileged service accounts for GKE cluster nodes instead of using the Compute Engine default service account.",
    +      "Url": "https://cloud.google.com/compute/docs/access/service-accounts#default_service_account"
    +    }
    +  },
    +  "Categories": [],
    +  "DependsOn": [],
    +  "RelatedTo": [],
    +  "Notes": "By default, nodes use the Compute Engine default service account when you create a new cluster."
    +}
    diff --git a/prowler/providers/gcp/services/gke/gke_cluster_no_default_service_account/gke_cluster_no_default_service_account.py b/prowler/providers/gcp/services/gke/gke_cluster_no_default_service_account/gke_cluster_no_default_service_account.py
    new file mode 100644
    index 00000000000..e412d18129c
    --- /dev/null
    +++ b/prowler/providers/gcp/services/gke/gke_cluster_no_default_service_account/gke_cluster_no_default_service_account.py
    @@ -0,0 +1,26 @@
    +from prowler.lib.check.models import Check, Check_Report_GCP
    +from prowler.providers.gcp.services.gke.gke_client import gke_client
    +
    +
    +class gke_cluster_no_default_service_account(Check):
    +    def execute(self) -> Check_Report_GCP:
    +        findings = []
    +        for cluster in gke_client.clusters.values():
    +            report = Check_Report_GCP(self.metadata())
    +            report.project_id = cluster.project_id
    +            report.resource_id = cluster.id
    +            report.resource_name = cluster.name
    +            report.location = cluster.location
    +            report.status = "PASS"
    +            report.status_extended = f"GKE cluster {cluster.name} is not using the Compute Engine default service account."
    +            if not cluster.node_pools and cluster.service_account == "default":
    +                report.status = "FAIL"
    +                report.status_extended = f"GKE cluster {cluster.name} is using the Compute Engine default service account."
    +            for node_pool in cluster.node_pools:
    +                if node_pool.service_account == "default":
    +                    report.status = "FAIL"
    +                    report.status_extended = f"GKE cluster {cluster.name} is using the Compute Engine default service account."
    +                break
    +            findings.append(report)
    +
    +        return findings
    diff --git a/prowler/providers/gcp/services/gke/gke_service.py b/prowler/providers/gcp/services/gke/gke_service.py
    new file mode 100644
    index 00000000000..e657e3d6423
    --- /dev/null
    +++ b/prowler/providers/gcp/services/gke/gke_service.py
    @@ -0,0 +1,90 @@
    +from pydantic import BaseModel
    +
    +from prowler.lib.logger import logger
    +from prowler.providers.gcp.lib.service.service import GCPService
    +
    +
    +################## GKE
    +class GKE(GCPService):
    +    def __init__(self, audit_info):
    +        super().__init__("container", audit_info, api_version="v1beta1")
    +        self.locations = []
    +        self.__get_locations__()
    +        self.clusters = {}
    +        self.__threading_call__(self.__get_clusters__, self.locations)
    +
    +    def __get_locations__(self):
    +        for project_id in self.project_ids:
    +            try:
    +                request = (
    +                    self.client.projects()
    +                    .locations()
    +                    .list(parent="projects/" + project_id)
    +                )
    +                response = request.execute()
    +
    +                for location in response["locations"]:
    +                    self.locations.append(
    +                        Location(name=location["name"], project_id=project_id)
    +                    )
    +
    +            except Exception as error:
    +                logger.error(
    +                    f"{self.region} -- {error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}"
    +                )
    +
    +    def __get_clusters__(self, location):
    +        try:
    +            request = (
    +                self.client.projects()
    +                .locations()
    +                .clusters()
    +                .list(
    +                    parent=f"projects/{location.project_id}/locations/{location.name}"
    +                )
    +            )
    +            response = request.execute(http=self.__get_AuthorizedHttp_client__())
    +            for cluster in response.get("clusters", []):
    +                node_pools = []
    +                for node_pool in cluster["nodePools"]:
    +                    node_pools.append(
    +                        NodePool(
    +                            name=node_pool["name"],
    +                            locations=node_pool["locations"],
    +                            service_account=node_pool["config"]["serviceAccount"],
    +                            project_id=location.project_id,
    +                        )
    +                    )
    +                self.clusters[cluster["id"]] = Cluster(
    +                    name=cluster["name"],
    +                    id=cluster["id"],
    +                    location=cluster["location"],
    +                    service_account=cluster["nodeConfig"]["serviceAccount"],
    +                    node_pools=node_pools,
    +                    project_id=location.project_id,
    +                )
    +        except Exception as error:
    +            logger.error(
    +                f"{self.region} -- {error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}"
    +            )
    +
    +
    +class Location(BaseModel):
    +    name: str
    +    project_id: str
    +
    +
    +class NodePool(BaseModel):
    +    name: str
    +    locations: list
    +    service_account: str
    +    project_id: str
    +
    +
    +class Cluster(BaseModel):
    +    name: str
    +    id: str
    +    location: str
    +    service_account: str
    +    node_pools: list[NodePool]
    +    project_id: str
    diff --git a/prowler/providers/gcp/services/iam/iam_cloud_asset_inventory_enabled/__init__.py b/prowler/providers/gcp/services/iam/iam_cloud_asset_inventory_enabled/__init__.py
    new file mode 100644
    index 00000000000..e69de29bb2d
    diff --git a/prowler/providers/gcp/services/serviceusage/serviceusage_cloudasset_inventory_enabled/serviceusage_cloudasset_inventory_enabled.metadata.json b/prowler/providers/gcp/services/iam/iam_cloud_asset_inventory_enabled/iam_cloud_asset_inventory_enabled.metadata.json
    similarity index 93%
    rename from prowler/providers/gcp/services/serviceusage/serviceusage_cloudasset_inventory_enabled/serviceusage_cloudasset_inventory_enabled.metadata.json
    rename to prowler/providers/gcp/services/iam/iam_cloud_asset_inventory_enabled/iam_cloud_asset_inventory_enabled.metadata.json
    index 2eef41044ab..49441be9d7a 100644
    --- a/prowler/providers/gcp/services/serviceusage/serviceusage_cloudasset_inventory_enabled/serviceusage_cloudasset_inventory_enabled.metadata.json
    +++ b/prowler/providers/gcp/services/iam/iam_cloud_asset_inventory_enabled/iam_cloud_asset_inventory_enabled.metadata.json
    @@ -1,10 +1,10 @@
     {
       "Provider": "gcp",
    -  "CheckID": "serviceusage_cloudasset_inventory_enabled",
    +  "CheckID": "iam_cloud_asset_inventory_enabled",
       "CheckTitle": "Ensure Cloud Asset Inventory Is Enabled",
       "CheckType": [],
    -  "ServiceName": "serviceusage",
    -  "SubServiceName": "",
    +  "ServiceName": "iam",
    +  "SubServiceName": "Asset Inventory",
       "ResourceIdTemplate": "",
       "Severity": "high",
       "ResourceType": "Service",
    diff --git a/prowler/providers/gcp/services/serviceusage/serviceusage_cloudasset_inventory_enabled/serviceusage_cloudasset_inventory_enabled.py b/prowler/providers/gcp/services/iam/iam_cloud_asset_inventory_enabled/iam_cloud_asset_inventory_enabled.py
    similarity index 95%
    rename from prowler/providers/gcp/services/serviceusage/serviceusage_cloudasset_inventory_enabled/serviceusage_cloudasset_inventory_enabled.py
    rename to prowler/providers/gcp/services/iam/iam_cloud_asset_inventory_enabled/iam_cloud_asset_inventory_enabled.py
    index 94eaab274c5..8803f7cfa92 100644
    --- a/prowler/providers/gcp/services/serviceusage/serviceusage_cloudasset_inventory_enabled/serviceusage_cloudasset_inventory_enabled.py
    +++ b/prowler/providers/gcp/services/iam/iam_cloud_asset_inventory_enabled/iam_cloud_asset_inventory_enabled.py
    @@ -4,7 +4,7 @@
     )
     
     
    -class serviceusage_cloudasset_inventory_enabled(Check):
    +class iam_cloud_asset_inventory_enabled(Check):
         def execute(self) -> Check_Report_GCP:
             findings = []
             for project_id in serviceusage_client.project_ids:
    diff --git a/prowler/providers/kubernetes/services/core/core_service.py b/prowler/providers/kubernetes/services/core/core_service.py
    index 60a9a6f36de..b968cfdf165 100644
    --- a/prowler/providers/kubernetes/services/core/core_service.py
    +++ b/prowler/providers/kubernetes/services/core/core_service.py
    @@ -39,24 +39,29 @@ def __get_pods__(self):
                             if pod.spec.ephemeral_containers
                             else []
                         )
    -    
    -                    for container in containers + init_containers + ephemeral_containers:
    +                    for container in (
    +                        containers + init_containers + ephemeral_containers
    +                    ):
                             pod_containers[container.name] = Container(
                                 name=container.name,
                                 image=container.image,
                                 command=container.command if container.command else None,
    -                            ports=[
    -                                {"containerPort": port.container_port}
    -                                for port in container.ports
    -                            ]
    -                            if container.ports
    -                            else None,
    -                            env=[
    -                                {"name": env.name, "value": env.value}
    -                                for env in container.env
    -                            ]
    -                            if container.env
    -                            else None,
    +                            ports=(
    +                                [
    +                                    {"containerPort": port.container_port}
    +                                    for port in container.ports
    +                                ]
    +                                if container.ports
    +                                else None
    +                            ),
    +                            env=(
    +                                [
    +                                    {"name": env.name, "value": env.value}
    +                                    for env in container.env
    +                                ]
    +                                if container.env
    +                                else None
    +                            ),
                                 security_context=container.security_context,
                             )
                         self.pods[pod.metadata.uid] = Pod(
    @@ -105,15 +110,19 @@ def __list_nodes__(self):
                     node_model = Node(
                         name=node.metadata.name,
                         uid=node.metadata.uid,
    -                    namespace=node.metadata.namespace
    -                    if node.metadata.namespace
    -                    else "cluster-wide",
    +                    namespace=(
    +                        node.metadata.namespace
    +                        if node.metadata.namespace
    +                        else "cluster-wide"
    +                    ),
                         labels=node.metadata.labels,
                         annotations=node.metadata.annotations,
                         unschedulable=node.spec.unschedulable,
    -                    node_info=node.status.node_info.to_dict()
    -                    if node.status.node_info
    -                    else None,
    +                    node_info=(
    +                        node.status.node_info.to_dict()
    +                        if node.status.node_info
    +                        else None
    +                    ),
                     )
                     self.nodes[node.metadata.uid] = node_model
             except Exception as error:
    diff --git a/prowler/providers/kubernetes/services/rbac/rbac_service.py b/prowler/providers/kubernetes/services/rbac/rbac_service.py
    index b2f0863c00c..fc552b53b74 100644
    --- a/prowler/providers/kubernetes/services/rbac/rbac_service.py
    +++ b/prowler/providers/kubernetes/services/rbac/rbac_service.py
    @@ -25,17 +25,19 @@ def __list_cluster_role_bindings__(self):
                     # For each binding, create a ClusterRoleBinding object and append it to the list
                     formatted_binding = {
                         "metadata": binding.metadata,
    -                    "subjects": []
    -                    if not binding.subjects
    -                    else [
    -                        {
    -                            "kind": subject.kind,
    -                            "name": subject.name,
    -                            "namespace": getattr(subject, "namespace", ""),
    -                            "metadata": getattr(subject, "metadata", None),
    -                        }
    -                        for subject in binding.subjects
    -                    ],
    +                    "subjects": (
    +                        []
    +                        if not binding.subjects
    +                        else [
    +                            {
    +                                "kind": subject.kind,
    +                                "name": subject.name,
    +                                "namespace": getattr(subject, "namespace", ""),
    +                                "metadata": getattr(subject, "metadata", None),
    +                            }
    +                            for subject in binding.subjects
    +                        ]
    +                    ),
                         "roleRef": {
                             "kind": binding.role_ref.kind,
                             "name": binding.role_ref.name,
    diff --git a/pyproject.toml b/pyproject.toml
    index e1509e9c630..ae2339a6e16 100644
    --- a/pyproject.toml
    +++ b/pyproject.toml
    @@ -13,66 +13,82 @@ classifiers = [
     description = "Prowler is an Open Source security tool to perform AWS, GCP and Azure security best practices assessments, audits, incident response, continuous monitoring, hardening and forensics readiness. It contains hundreds of controls covering CIS, NIST 800, NIST CSF, CISA, RBI, FedRAMP, PCI-DSS, GDPR, HIPAA, FFIEC, SOC2, GXP, AWS Well-Architected Framework Security Pillar, AWS Foundational Technical Review (FTR), ENS (Spanish National Security Scheme) and your custom security frameworks."
     license = "Apache-2.0"
     maintainers = [
    -  "Sergio Garcia ",
    -  "Nacho Rivera ",
    -  "Pepe Fagoaga "
    +  "Sergio Garcia ",
    +  "Nacho Rivera ",
    +  "Pepe Fagoaga "
     ]
     name = "prowler"
     packages = [
       {include = "prowler"}
     ]
     readme = "README.md"
    -version = "3.11.3"
    +version = "3.14.0"
     
     [tool.poetry.dependencies]
     alive-progress = "3.1.5"
     awsipranges = "0.3.3"
     azure-identity = "1.15.0"
    +azure-keyvault-keys = "4.9.0"
    +azure-mgmt-applicationinsights = "4.0.0"
     azure-mgmt-authorization = "4.0.0"
    -azure-mgmt-security = "5.0.0"
    +azure-mgmt-compute = "30.5.0"
    +azure-mgmt-cosmosdb = "9.4.0"
    +azure-mgmt-keyvault = "10.3.0"
    +azure-mgmt-monitor = "6.0.2"
    +azure-mgmt-network = "25.3.0"
    +azure-mgmt-rdbms = "10.1.0"
    +azure-mgmt-resource = "23.0.1"
    +azure-mgmt-security = "6.0.0"
     azure-mgmt-sql = "3.0.1"
     azure-mgmt-storage = "21.1.0"
     azure-mgmt-subscription = "3.1.1"
    +azure-mgmt-web = "7.2.0"
     azure-storage-blob = "12.19.0"
     boto3 = "1.26.165"
     botocore = "1.29.165"
     colorama = "0.4.6"
     detect-secrets = "1.4.0"
    -google-api-python-client = "2.108.0"
    -google-auth-httplib2 = "^0.1.0"
    -jsonschema = "4.18.0"
    -kubernetes = "^28.1.0"
    -mkdocs = {version = "1.5.3", optional = true}
    -mkdocs-material = {version = "9.4.10", optional = true}
    -msgraph-core = "0.2.2"
    -msrestazure = "^0.6.4"
    -pydantic = "1.10.13"
    -python = ">=3.9,<3.12"
    +google-api-python-client = "2.118.0"
    +google-auth-httplib2 = ">=0.1,<0.3"
    +jsonschema = "4.21.1"
    +kubernetes = "28.1.0"
    +msgraph-sdk = "1.0.0"
    +msrestazure = "0.6.4"
    +pydantic = "1.10.14"
    +python = ">=3.9,<3.13"
     schema = "0.7.5"
    -shodan = "1.30.1"
    -slack-sdk = "3.24.0"
    +shodan = "1.31.0"
    +slack-sdk = "3.27.0"
     tabulate = "0.9.0"
     
    -[tool.poetry.extras]
    -docs = ["mkdocs", "mkdocs-material"]
    -
     [tool.poetry.group.dev.dependencies]
    -bandit = "1.7.5"
    -black = "22.12.0"
    -coverage = "7.3.2"
    -docker = "6.1.3"
    -flake8 = "6.1.0"
    -freezegun = "1.2.2"
    +bandit = "1.7.7"
    +black = "24.2.0"
    +coverage = "7.4.3"
    +docker = "7.0.0"
    +flake8 = "7.0.0"
    +freezegun = "1.4.0"
     mock = "5.1.0"
    -moto = {extras = ["all"], version = "4.2.9"}
    +moto = {extras = ["all"], version = "5.0.2"}
    +openapi-schema-validator = "0.6.2"
     openapi-spec-validator = "0.7.1"
    -pylint = "3.0.2"
    -pytest = "7.4.3"
    +pylint = "3.1.0"
    +pytest = "8.0.2"
     pytest-cov = "4.1.0"
    +pytest-env = "1.1.3"
     pytest-randomly = "3.15.0"
    -pytest-xdist = "3.4.0"
    -safety = "2.3.5"
    -vulture = "2.10"
    +pytest-xdist = "3.5.0"
    +safety = "3.0.1"
    +vulture = "2.11"
    +
    +[tool.poetry.group.docs]
    +optional = true
    +
    +[tool.poetry.group.docs.dependencies]
    +mkdocs = "1.5.3"
    +mkdocs-git-revision-date-localized-plugin = "1.2.4"
    +mkdocs-material = "9.5.11"
    +mkdocs-material-extensions = "1.3.1"
     
     [tool.poetry.scripts]
     prowler = "prowler.__main__:prowler"
    @@ -94,3 +110,11 @@ search = 'prowler_version = "{current_version}"'
     pythonpath = [
       "."
     ]
    +
    +[tool.pytest_env]
    +# For Moto and Boto3 while testing AWS
    +AWS_ACCESS_KEY_ID = 'testing'
    +AWS_DEFAULT_REGION = 'us-east-1'
    +AWS_SECRET_ACCESS_KEY = 'testing'
    +AWS_SECURITY_TOKEN = 'testing'
    +AWS_SESSION_TOKEN = 'testing'
    diff --git a/tests/config/config_test.py b/tests/config/config_test.py
    index 570b4800a33..e7ca8138f28 100644
    --- a/tests/config/config_test.py
    +++ b/tests/config/config_test.py
    @@ -51,6 +51,8 @@ def mock_prowler_get_latest_release(_, **kwargs):
         "organizations_trusted_delegated_administrators": [],
     }
     
    +config_azure = {"shodan_api_key": None}
    +
     
     class Test_Config:
         def test_get_aws_available_regions(self):
    @@ -191,7 +193,7 @@ def test_load_and_validate_config_file_azure(self):
             config_test_file = f"{path}/fixtures/config.yaml"
             provider = "azure"
     
    -        assert load_and_validate_config_file(provider, config_test_file) is None
    +        assert load_and_validate_config_file(provider, config_test_file) == config_azure
     
         def test_load_and_validate_config_file_old_format(self):
             path = pathlib.Path(os.path.dirname(os.path.realpath(__file__)))
    diff --git a/tests/config/fixtures/config.yaml b/tests/config/fixtures/config.yaml
    index d55503e962f..1e77a280353 100644
    --- a/tests/config/fixtures/config.yaml
    +++ b/tests/config/fixtures/config.yaml
    @@ -56,6 +56,9 @@ aws:
     
     # Azure Configuration
     azure:
    +  # Azure Network Configuration
    +  # azure.network_public_ip_shodan
    +  shodan_api_key: null
     
     # GCP Configuration
     gcp:
    diff --git a/tests/lib/check/check_loader_test.py b/tests/lib/check/check_loader_test.py
    new file mode 100644
    index 00000000000..5b887d3b95a
    --- /dev/null
    +++ b/tests/lib/check/check_loader_test.py
    @@ -0,0 +1,326 @@
    +from mock import patch
    +
    +from prowler.lib.check.checks_loader import (
    +    load_checks_to_execute,
    +    update_checks_to_execute_with_aliases,
    +)
    +from prowler.lib.check.models import (
    +    Check_Metadata_Model,
    +    Code,
    +    Recommendation,
    +    Remediation,
    +)
    +
    +S3_BUCKET_LEVEL_PUBLIC_ACCESS_BLOCK_NAME = "s3_bucket_level_public_access_block"
    +S3_BUCKET_LEVEL_PUBLIC_ACCESS_BLOCK_NAME_CUSTOM_ALIAS = (
    +    "s3_bucket_level_public_access_block"
    +)
    +S3_BUCKET_LEVEL_PUBLIC_ACCESS_BLOCK_SEVERITY = "medium"
    +S3_BUCKET_LEVEL_PUBLIC_ACCESS_BLOCK_NAME_SERVICE = "s3"
    +
    +
    +class TestCheckLoader:
    +    provider = "aws"
    +
    +    def get_custom_check_metadata(self):
    +        return Check_Metadata_Model(
    +            Provider="aws",
    +            CheckID=S3_BUCKET_LEVEL_PUBLIC_ACCESS_BLOCK_NAME,
    +            CheckTitle="Check S3 Bucket Level Public Access Block.",
    +            CheckType=["Data Protection"],
    +            CheckAliases=[S3_BUCKET_LEVEL_PUBLIC_ACCESS_BLOCK_NAME_CUSTOM_ALIAS],
    +            ServiceName=S3_BUCKET_LEVEL_PUBLIC_ACCESS_BLOCK_NAME_SERVICE,
    +            SubServiceName="",
    +            ResourceIdTemplate="arn:partition:s3:::bucket_name",
    +            Severity=S3_BUCKET_LEVEL_PUBLIC_ACCESS_BLOCK_SEVERITY,
    +            ResourceType="AwsS3Bucket",
    +            Description="Check S3 Bucket Level Public Access Block.",
    +            Risk="Public access policies may be applied to sensitive data buckets.",
    +            RelatedUrl="https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-control-block-public-access.html",
    +            Remediation=Remediation(
    +                Code=Code(
    +                    NativeIaC="",
    +                    Terraform="https://docs.bridgecrew.io/docs/bc_aws_s3_20#terraform",
    +                    CLI="aws s3api put-public-access-block --region  --public-access-block-configuration BlockPublicAcls=true,IgnorePublicAcls=true,BlockPublicPolicy=true,RestrictPublicBuckets=true --bucket ",
    +                    Other="https://github.com/cloudmatos/matos/tree/master/remediations/aws/s3/s3/block-public-access",
    +                ),
    +                Recommendation=Recommendation(
    +                    Text="You can enable Public Access Block at the bucket level to prevent the exposure of your data stored in S3.",
    +                    Url="https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-control-block-public-access.html",
    +                ),
    +            ),
    +            Categories=["internet-exposed"],
    +            DependsOn=[],
    +            RelatedTo=[],
    +            Notes="",
    +            Compliance=[],
    +        )
    +
    +    def test_load_checks_to_execute(self):
    +        bulk_checks_metatada = {
    +            S3_BUCKET_LEVEL_PUBLIC_ACCESS_BLOCK_NAME: self.get_custom_check_metadata()
    +        }
    +        bulk_compliance_frameworks = None
    +        checks_file = None
    +        check_list = None
    +        service_list = None
    +        severities = None
    +        compliance_frameworks = None
    +        categories = None
    +
    +        with patch(
    +            "prowler.lib.check.checks_loader.recover_checks_from_provider",
    +            return_value=[
    +                (
    +                    f"{S3_BUCKET_LEVEL_PUBLIC_ACCESS_BLOCK_NAME}",
    +                    "path/to/{S3_BUCKET_LEVEL_PUBLIC_ACCESS_BLOCK_NAME}",
    +                )
    +            ],
    +        ):
    +            assert {S3_BUCKET_LEVEL_PUBLIC_ACCESS_BLOCK_NAME} == load_checks_to_execute(
    +                bulk_checks_metatada,
    +                bulk_compliance_frameworks,
    +                checks_file,
    +                check_list,
    +                service_list,
    +                severities,
    +                compliance_frameworks,
    +                categories,
    +                self.provider,
    +            )
    +
    +    def test_load_checks_to_execute_with_check_list(self):
    +        bulk_checks_metatada = {
    +            S3_BUCKET_LEVEL_PUBLIC_ACCESS_BLOCK_NAME: self.get_custom_check_metadata()
    +        }
    +        bulk_compliance_frameworks = None
    +        checks_file = None
    +        check_list = [S3_BUCKET_LEVEL_PUBLIC_ACCESS_BLOCK_NAME]
    +        service_list = None
    +        severities = None
    +        compliance_frameworks = None
    +        categories = None
    +
    +        assert {S3_BUCKET_LEVEL_PUBLIC_ACCESS_BLOCK_NAME} == load_checks_to_execute(
    +            bulk_checks_metatada,
    +            bulk_compliance_frameworks,
    +            checks_file,
    +            check_list,
    +            service_list,
    +            severities,
    +            compliance_frameworks,
    +            categories,
    +            self.provider,
    +        )
    +
    +    def test_load_checks_to_execute_with_severities(self):
    +        bulk_checks_metatada = {
    +            S3_BUCKET_LEVEL_PUBLIC_ACCESS_BLOCK_NAME: self.get_custom_check_metadata()
    +        }
    +        bulk_compliance_frameworks = None
    +        checks_file = None
    +        check_list = []
    +        service_list = None
    +        severities = [S3_BUCKET_LEVEL_PUBLIC_ACCESS_BLOCK_SEVERITY]
    +        compliance_frameworks = None
    +        categories = None
    +
    +        assert {S3_BUCKET_LEVEL_PUBLIC_ACCESS_BLOCK_NAME} == load_checks_to_execute(
    +            bulk_checks_metatada,
    +            bulk_compliance_frameworks,
    +            checks_file,
    +            check_list,
    +            service_list,
    +            severities,
    +            compliance_frameworks,
    +            categories,
    +            self.provider,
    +        )
    +
    +    def test_load_checks_to_execute_with_severities_and_services(self):
    +        bulk_checks_metatada = {
    +            S3_BUCKET_LEVEL_PUBLIC_ACCESS_BLOCK_NAME: self.get_custom_check_metadata()
    +        }
    +        bulk_compliance_frameworks = None
    +        checks_file = None
    +        check_list = []
    +        service_list = [S3_BUCKET_LEVEL_PUBLIC_ACCESS_BLOCK_NAME_SERVICE]
    +        severities = [S3_BUCKET_LEVEL_PUBLIC_ACCESS_BLOCK_SEVERITY]
    +        compliance_frameworks = None
    +        categories = None
    +
    +        with patch(
    +            "prowler.lib.check.checks_loader.recover_checks_from_service",
    +            return_value={S3_BUCKET_LEVEL_PUBLIC_ACCESS_BLOCK_NAME},
    +        ):
    +            assert {S3_BUCKET_LEVEL_PUBLIC_ACCESS_BLOCK_NAME} == load_checks_to_execute(
    +                bulk_checks_metatada,
    +                bulk_compliance_frameworks,
    +                checks_file,
    +                check_list,
    +                service_list,
    +                severities,
    +                compliance_frameworks,
    +                categories,
    +                self.provider,
    +            )
    +
    +    def test_load_checks_to_execute_with_severities_and_services_not_within_severity(
    +        self,
    +    ):
    +        bulk_checks_metatada = {
    +            S3_BUCKET_LEVEL_PUBLIC_ACCESS_BLOCK_NAME: self.get_custom_check_metadata()
    +        }
    +        bulk_compliance_frameworks = None
    +        checks_file = None
    +        check_list = []
    +        service_list = ["ec2"]
    +        severities = [S3_BUCKET_LEVEL_PUBLIC_ACCESS_BLOCK_SEVERITY]
    +        compliance_frameworks = None
    +        categories = None
    +
    +        with patch(
    +            "prowler.lib.check.checks_loader.recover_checks_from_service",
    +            return_value={"ec2_ami_public"},
    +        ):
    +            assert set() == load_checks_to_execute(
    +                bulk_checks_metatada,
    +                bulk_compliance_frameworks,
    +                checks_file,
    +                check_list,
    +                service_list,
    +                severities,
    +                compliance_frameworks,
    +                categories,
    +                self.provider,
    +            )
    +
    +    def test_load_checks_to_execute_with_checks_file(
    +        self,
    +    ):
    +        bulk_checks_metatada = {
    +            S3_BUCKET_LEVEL_PUBLIC_ACCESS_BLOCK_NAME: self.get_custom_check_metadata()
    +        }
    +        bulk_compliance_frameworks = None
    +        checks_file = "path/to/test_file"
    +        check_list = []
    +        service_list = []
    +        severities = []
    +        compliance_frameworks = None
    +        categories = None
    +
    +        with patch(
    +            "prowler.lib.check.checks_loader.parse_checks_from_file",
    +            return_value={S3_BUCKET_LEVEL_PUBLIC_ACCESS_BLOCK_NAME},
    +        ):
    +            assert {S3_BUCKET_LEVEL_PUBLIC_ACCESS_BLOCK_NAME} == load_checks_to_execute(
    +                bulk_checks_metatada,
    +                bulk_compliance_frameworks,
    +                checks_file,
    +                check_list,
    +                service_list,
    +                severities,
    +                compliance_frameworks,
    +                categories,
    +                self.provider,
    +            )
    +
    +    def test_load_checks_to_execute_with_service_list(
    +        self,
    +    ):
    +        bulk_checks_metatada = {
    +            S3_BUCKET_LEVEL_PUBLIC_ACCESS_BLOCK_NAME: self.get_custom_check_metadata()
    +        }
    +        bulk_compliance_frameworks = None
    +        checks_file = None
    +        check_list = []
    +        service_list = [S3_BUCKET_LEVEL_PUBLIC_ACCESS_BLOCK_NAME_SERVICE]
    +        severities = []
    +        compliance_frameworks = None
    +        categories = None
    +
    +        with patch(
    +            "prowler.lib.check.checks_loader.recover_checks_from_service",
    +            return_value={S3_BUCKET_LEVEL_PUBLIC_ACCESS_BLOCK_NAME},
    +        ):
    +            assert {S3_BUCKET_LEVEL_PUBLIC_ACCESS_BLOCK_NAME} == load_checks_to_execute(
    +                bulk_checks_metatada,
    +                bulk_compliance_frameworks,
    +                checks_file,
    +                check_list,
    +                service_list,
    +                severities,
    +                compliance_frameworks,
    +                categories,
    +                self.provider,
    +            )
    +
    +    def test_load_checks_to_execute_with_compliance_frameworks(
    +        self,
    +    ):
    +        bulk_checks_metatada = {
    +            S3_BUCKET_LEVEL_PUBLIC_ACCESS_BLOCK_NAME: self.get_custom_check_metadata()
    +        }
    +        bulk_compliance_frameworks = None
    +        checks_file = None
    +        check_list = []
    +        service_list = []
    +        severities = []
    +        compliance_frameworks = ["test-compliance-framework"]
    +        categories = None
    +
    +        with patch(
    +            "prowler.lib.check.checks_loader.parse_checks_from_compliance_framework",
    +            return_value={S3_BUCKET_LEVEL_PUBLIC_ACCESS_BLOCK_NAME},
    +        ):
    +            assert {S3_BUCKET_LEVEL_PUBLIC_ACCESS_BLOCK_NAME} == load_checks_to_execute(
    +                bulk_checks_metatada,
    +                bulk_compliance_frameworks,
    +                checks_file,
    +                check_list,
    +                service_list,
    +                severities,
    +                compliance_frameworks,
    +                categories,
    +                self.provider,
    +            )
    +
    +    def test_load_checks_to_execute_with_categories(
    +        self,
    +    ):
    +        bulk_checks_metatada = {
    +            S3_BUCKET_LEVEL_PUBLIC_ACCESS_BLOCK_NAME: self.get_custom_check_metadata()
    +        }
    +        bulk_compliance_frameworks = None
    +        checks_file = None
    +        check_list = []
    +        service_list = []
    +        severities = []
    +        compliance_frameworks = []
    +        categories = {"internet-exposed"}
    +
    +        assert {S3_BUCKET_LEVEL_PUBLIC_ACCESS_BLOCK_NAME} == load_checks_to_execute(
    +            bulk_checks_metatada,
    +            bulk_compliance_frameworks,
    +            checks_file,
    +            check_list,
    +            service_list,
    +            severities,
    +            compliance_frameworks,
    +            categories,
    +            self.provider,
    +        )
    +
    +    def test_update_checks_to_execute_with_aliases(self):
    +        checks_to_execute = {"renamed_check"}
    +        check_aliases = {"renamed_check": ["check_name"]}
    +        assert {"check_name"} == update_checks_to_execute_with_aliases(
    +            checks_to_execute, check_aliases
    +        )
    +
    +    def test_update_checks_to_execute_with_multiple_aliases(self):
    +        checks_to_execute = {"renamed_check"}
    +        check_aliases = {"renamed_check": ["check1_name", "check2_name"]}
    +        assert {"check1_name", "check2_name"} == update_checks_to_execute_with_aliases(
    +            checks_to_execute, check_aliases
    +        )
    diff --git a/tests/lib/check/check_test.py b/tests/lib/check/check_test.py
    index 02d3b1b3a1c..8ccc6d13046 100644
    --- a/tests/lib/check/check_test.py
    +++ b/tests/lib/check/check_test.py
    @@ -3,10 +3,10 @@
     from importlib.machinery import FileFinder
     from pkgutil import ModuleInfo
     
    -from boto3 import client, session
    +from boto3 import client
     from fixtures.bulk_checks_metadata import test_bulk_checks_metadata
     from mock import patch
    -from moto import mock_s3
    +from moto import mock_aws
     
     from prowler.lib.check.check import (
         exclude_checks_to_run,
    @@ -27,8 +27,7 @@
         get_checks_from_input_arn,
         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
    +from tests.providers.aws.audit_info_utils import set_mocked_aws_audit_info
     
     AWS_ACCOUNT_NUMBER = "123456789012"
     AWS_REGION = "us-east-1"
    @@ -41,6 +40,27 @@
             name="prowler.providers.azure.services.storage.storage_ensure_minimum_tls_version_12.storage_ensure_minimum_tls_version_12",
             ispkg=False,
         ),
    +    ModuleInfo(
    +        module_finder=FileFinder(
    +            "/root_dir/prowler/providers/azure/services/storage/storage_key_rotation_90_days"
    +        ),
    +        name="prowler.providers.azure.services.storage.storage_key_rotation_90_days.storage_key_rotation_90_days",
    +        ispkg=False,
    +    ),
    +    ModuleInfo(
    +        module_finder=FileFinder(
    +            "/root_dir/prowler/providers/azure/services/storage/storage_ensure_private_endpoints_in_storage_accounts"
    +        ),
    +        name="prowler.providers.azure.services.storage.storage_ensure_private_endpoints_in_storage_accounts.storage_ensure_private_endpoints_in_storage_accounts",
    +        ispkg=False,
    +    ),
    +    ModuleInfo(
    +        module_finder=FileFinder(
    +            "/root_dir/prowler/providers/azure/services/storage/storage_ensure_soft_delete_is_enabled"
    +        ),
    +        name="prowler.providers.azure.services.storage.storage_ensure_soft_delete_is_enabled.storage_ensure_soft_delete_is_enabled",
    +        ispkg=False,
    +    ),
         ModuleInfo(
             module_finder=FileFinder("/root_dir/prowler/providers/azure/services/storage"),
             name="prowler.providers.azure.services.storage.storage_ensure_encryption_with_customer_managed_keys",
    @@ -53,6 +73,118 @@
             name="prowler.providers.azure.services.storage.storage_ensure_encryption_with_customer_managed_keys.storage_ensure_encryption_with_customer_managed_keys",
             ispkg=False,
         ),
    +    ModuleInfo(
    +        module_finder=FileFinder(
    +            "/root_dir/prowler/providers/azure/services/sqlserver"
    +        ),
    +        name="prowler.providers.azure.services.sqlserver.sqlserver_tde_encrypted_with_cmk",
    +        ispkg=True,
    +    ),
    +    ModuleInfo(
    +        module_finder=FileFinder(
    +            "/root_dir/prowler/providers/azure/services/sqlserver/sqlserver_tde_encrypted_with_cmk"
    +        ),
    +        name="prowler.providers.azure.services.sqlserver.sqlserver_tde_encrypted_with_cmk.sqlserver_tde_encrypted_with_cmk",
    +        ispkg=False,
    +    ),
    +    ModuleInfo(
    +        module_finder=FileFinder(
    +            "/root_dir/prowler/providers/azure/services/sqlserver"
    +        ),
    +        name="prowler.providers.azure.services.sqlserver.sqlserver_tde_encryption_enabled",
    +        ispkg=True,
    +    ),
    +    ModuleInfo(
    +        module_finder=FileFinder(
    +            "/root_dir/prowler/providers/azure/services/sqlserver/sqlserver_tde_encryption_enabled"
    +        ),
    +        name="prowler.providers.azure.services.sqlserver.sqlserver_tde_encryption_enabled.sqlserver_tde_encryption_enabled",
    +        ispkg=False,
    +    ),
    +    ModuleInfo(
    +        module_finder=FileFinder(
    +            "/root_dir/prowler/providers/azure/services/sqlserver"
    +        ),
    +        name="prowler.providers.azure.services.sqlserver.sqlserver_auditing_retention_90_days",
    +        ispkg=True,
    +    ),
    +    ModuleInfo(
    +        module_finder=FileFinder(
    +            "/root_dir/prowler/providers/azure/services/sqlserver/sqlserver_auditing_retention_90_days"
    +        ),
    +        name="prowler.providers.azure.services.sqlserver.sqlserver_auditing_retention_90_days.sqlserver_auditing_retention_90_days",
    +        ispkg=False,
    +    ),
    +    ModuleInfo(
    +        module_finder=FileFinder(
    +            "/root_dir/prowler/providers/azure/services/sqlserver"
    +        ),
    +        name="prowler.providers.azure.services.sqlserver.sqlserver_vulnerability_assessment_enabled",
    +        ispkg=True,
    +    ),
    +    ModuleInfo(
    +        module_finder=FileFinder(
    +            "/root_dir/prowler/providers/azure/services/sqlserver/sqlserver_vulnerability_assessment_enabled"
    +        ),
    +        name="prowler.providers.azure.services.sqlserver.sqlserver_vulnerability_assessment_enabled.sqlserver_vulnerability_assessment_enabled",
    +        ispkg=False,
    +    ),
    +    ModuleInfo(
    +        module_finder=FileFinder(
    +            "/root_dir/prowler/providers/azure/services/sqlserver"
    +        ),
    +        name="prowler.providers.azure.services.sqlserver.sqlserver_va_periodic_recurring_scans_enabled",
    +        ispkg=True,
    +    ),
    +    ModuleInfo(
    +        module_finder=FileFinder(
    +            "/root_dir/prowler/providers/azure/services/sqlserver/sqlserver_va_periodic_recurring_scans_enabled"
    +        ),
    +        name="prowler.providers.azure.services.sqlserver.sqlserver_va_periodic_recurring_scans_enabled.sqlserver_va_periodic_recurring_scans_enabled",
    +        ispkg=False,
    +    ),
    +    ModuleInfo(
    +        module_finder=FileFinder(
    +            "/root_dir/prowler/providers/azure/services/sqlserver"
    +        ),
    +        name="prowler.providers.azure.services.sqlserver.sqlserver_va_scan_reports_configured",
    +        ispkg=True,
    +    ),
    +    ModuleInfo(
    +        module_finder=FileFinder(
    +            "/root_dir/prowler/providers/azure/services/sqlserver/sqlserver_va_scan_reports_configured"
    +        ),
    +        name="prowler.providers.azure.services.sqlserver.sqlserver_va_scan_reports_configured.sqlserver_va_scan_reports_configured",
    +        ispkg=False,
    +    ),
    +    ModuleInfo(
    +        module_finder=FileFinder(
    +            "/root_dir/prowler/providers/azure/services/sqlserver"
    +        ),
    +        name="prowler.providers.azure.services.sqlserver.sqlserver_va_emails_notifications_admins_enabled",
    +        ispkg=True,
    +    ),
    +    ModuleInfo(
    +        module_finder=FileFinder(
    +            "/root_dir/prowler/providers/azure/services/sqlserver/sqlserver_va_emails_notifications_admins_enabled"
    +        ),
    +        name="prowler.providers.azure.services.sqlserver.sqlserver_va_emails_notifications_admins_enabled.sqlserver_va_emails_notifications_admins_enabled",
    +        ispkg=False,
    +    ),
    +    ModuleInfo(
    +        module_finder=FileFinder(
    +            "/root_dir/prowler/providers/azure/services/postgresql"
    +        ),
    +        name="prowler.providers.azure.services.postgresql.postgresql_flexible_server_enforce_ssl_enabled",
    +        ispkg=True,
    +    ),
    +    ModuleInfo(
    +        module_finder=FileFinder(
    +            "/root_dir/prowler/providers/azure/services/postgresql/postgresql_flexible_server_enforce_ssl_enabled"
    +        ),
    +        name="prowler.providers.azure.services.postgresql.postgresql_flexible_server_enforce_ssl_enabled.postgresql_flexible_server_enforce_ssl_enabled",
    +        ispkg=False,
    +    ),
     ]
     
     
    @@ -69,6 +201,27 @@ def mock_list_modules(*_):
                 name="prowler.providers.azure.services.storage.storage_ensure_minimum_tls_version_12.storage_ensure_minimum_tls_version_12",
                 ispkg=False,
             ),
    +        ModuleInfo(
    +            module_finder=FileFinder(
    +                "/root_dir/prowler/providers/azure/services/storage/storage_key_rotation_90_days"
    +            ),
    +            name="prowler.providers.azure.services.storage.storage_key_rotation_90_days.storage_key_rotation_90_days",
    +            ispkg=False,
    +        ),
    +        ModuleInfo(
    +            module_finder=FileFinder(
    +                "/root_dir/prowler/providers/azure/services/storage/storage_ensure_private_endpoints_in_storage_accounts"
    +            ),
    +            name="prowler.providers.azure.services.storage.storage_ensure_private_endpoints_in_storage_accounts.storage_ensure_private_endpoints_in_storage_accounts",
    +            ispkg=False,
    +        ),
    +        ModuleInfo(
    +            module_finder=FileFinder(
    +                "/root_dir/prowler/providers/azure/services/storage/storage_ensure_soft_delete_is_enabled"
    +            ),
    +            name="prowler.providers.azure.services.storage.storage_ensure_soft_delete_is_enabled.storage_ensure_soft_delete_is_enabled",
    +            ispkg=False,
    +        ),
             ModuleInfo(
                 module_finder=FileFinder(
                     "/root_dir/prowler/providers/azure/services/storage"
    @@ -83,6 +236,118 @@ def mock_list_modules(*_):
                 name="prowler.providers.azure.services.storage.storage_ensure_encryption_with_customer_managed_keys.storage_ensure_encryption_with_customer_managed_keys",
                 ispkg=False,
             ),
    +        ModuleInfo(
    +            module_finder=FileFinder(
    +                "/root_dir/prowler/providers/azure/services/sqlserver"
    +            ),
    +            name="prowler.providers.azure.services.sqlserver.sqlserver_tde_encrypted_with_cmk",
    +            ispkg=True,
    +        ),
    +        ModuleInfo(
    +            module_finder=FileFinder(
    +                "/root_dir/prowler/providers/azure/services/sqlserver/sqlserver_tde_encrypted_with_cmk"
    +            ),
    +            name="prowler.providers.azure.services.sqlserver.sqlserver_tde_encrypted_with_cmk.sqlserver_tde_encrypted_with_cmk",
    +            ispkg=False,
    +        ),
    +        ModuleInfo(
    +            module_finder=FileFinder(
    +                "/root_dir/prowler/providers/azure/services/sqlserver"
    +            ),
    +            name="prowler.providers.azure.services.sqlserver.sqlserver_tde_encryption_enabled",
    +            ispkg=True,
    +        ),
    +        ModuleInfo(
    +            module_finder=FileFinder(
    +                "/root_dir/prowler/providers/azure/services/sqlserver/sqlserver_tde_encryption_enabled"
    +            ),
    +            name="prowler.providers.azure.services.sqlserver.sqlserver_tde_encryption_enabled.sqlserver_tde_encryption_enabled",
    +            ispkg=False,
    +        ),
    +        ModuleInfo(
    +            module_finder=FileFinder(
    +                "/root_dir/prowler/providers/azure/services/sqlserver"
    +            ),
    +            name="prowler.providers.azure.services.sqlserver.sqlserver_auditing_retention_90_days",
    +            ispkg=True,
    +        ),
    +        ModuleInfo(
    +            module_finder=FileFinder(
    +                "/root_dir/prowler/providers/azure/services/sqlserver/sqlserver_auditing_retention_90_days"
    +            ),
    +            name="prowler.providers.azure.services.sqlserver.sqlserver_auditing_retention_90_days.sqlserver_auditing_retention_90_days",
    +            ispkg=False,
    +        ),
    +        ModuleInfo(
    +            module_finder=FileFinder(
    +                "/root_dir/prowler/providers/azure/services/sqlserver"
    +            ),
    +            name="prowler.providers.azure.services.sqlserver.sqlserver_vulnerability_assessment_enabled",
    +            ispkg=True,
    +        ),
    +        ModuleInfo(
    +            module_finder=FileFinder(
    +                "/root_dir/prowler/providers/azure/services/sqlserver/sqlserver_vulnerability_assessment_enabled"
    +            ),
    +            name="prowler.providers.azure.services.sqlserver.sqlserver_vulnerability_assessment_enabled.sqlserver_vulnerability_assessment_enabled",
    +            ispkg=False,
    +        ),
    +        ModuleInfo(
    +            module_finder=FileFinder(
    +                "/root_dir/prowler/providers/azure/services/sqlserver"
    +            ),
    +            name="prowler.providers.azure.services.sqlserver.sqlserver_va_periodic_recurring_scans_enabled",
    +            ispkg=True,
    +        ),
    +        ModuleInfo(
    +            module_finder=FileFinder(
    +                "/root_dir/prowler/providers/azure/services/sqlserver/sqlserver_va_periodic_recurring_scans_enabled"
    +            ),
    +            name="prowler.providers.azure.services.sqlserver.sqlserver_va_periodic_recurring_scans_enabled.sqlserver_va_periodic_recurring_scans_enabled",
    +            ispkg=False,
    +        ),
    +        ModuleInfo(
    +            module_finder=FileFinder(
    +                "/root_dir/prowler/providers/azure/services/sqlserver"
    +            ),
    +            name="prowler.providers.azure.services.sqlserver.sqlserver_va_scan_reports_configured",
    +            ispkg=True,
    +        ),
    +        ModuleInfo(
    +            module_finder=FileFinder(
    +                "/root_dir/prowler/providers/azure/services/sqlserver/sqlserver_va_scan_reports_configured"
    +            ),
    +            name="prowler.providers.azure.services.sqlserver.sqlserver_va_scan_reports_configured.sqlserver_va_scan_reports_configured",
    +            ispkg=False,
    +        ),
    +        ModuleInfo(
    +            module_finder=FileFinder(
    +                "/root_dir/prowler/providers/azure/services/sqlserver"
    +            ),
    +            name="prowler.providers.azure.services.sqlserver.sqlserver_va_emails_notifications_admins_enabled",
    +            ispkg=True,
    +        ),
    +        ModuleInfo(
    +            module_finder=FileFinder(
    +                "/root_dir/prowler/providers/azure/services/sqlserver/sqlserver_va_emails_notifications_admins_enabled"
    +            ),
    +            name="prowler.providers.azure.services.sqlserver.sqlserver_va_emails_notifications_admins_enabled.sqlserver_va_emails_notifications_admins_enabled",
    +            ispkg=False,
    +        ),
    +        ModuleInfo(
    +            module_finder=FileFinder(
    +                "/root_dir/prowler/providers/azure/services/postgresql"
    +            ),
    +            name="prowler.providers.azure.services.postgresql.postgresql_flexible_server_enforce_ssl_enabled",
    +            ispkg=True,
    +        ),
    +        ModuleInfo(
    +            module_finder=FileFinder(
    +                "/root_dir/prowler/providers/azure/services/postgresql/postgresql_flexible_server_enforce_ssl_enabled"
    +            ),
    +            name="prowler.providers.azure.services.postgresql.postgresql_flexible_server_enforce_ssl_enabled.postgresql_flexible_server_enforce_ssl_enabled",
    +            ispkg=False,
    +        ),
         ]
         return modules
     
    @@ -97,6 +362,10 @@ def mock_recover_checks_from_azure_provider(*_):
                 "iam_subscription_roles_owner_custom_not_created",
                 "/root_dir/fake_path/iam/iam_subscription_roles_owner_custom_not_created",
             ),
    +        (
    +            "iam_custom_role_has_permissions_to_administer_resource_locks",
    +            "/root_dir/fake_path/iam/iam_custom_role_has_permissions_to_administer_resource_locks",
    +        ),
             (
                 "storage_default_network_access_rule_is_denied",
                 "/root_dir/fake_path/storage/storage_default_network_access_rule_is_denied",
    @@ -257,37 +526,11 @@ def mock_recover_checks_from_aws_provider_rds_service(*_):
         ]
     
     
    -class Test_Check:
    -    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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=None,
    -            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
    +def mock_recover_checks_from_aws_provider_cognito_service(*_):
    +    return []
     
    +
    +class Test_Check:
         def test_load_check_metadata(self):
             test_cases = [
                 {
    @@ -325,7 +568,7 @@ def test_parse_checks_from_file(self):
                 provider = test["input"]["provider"]
                 assert parse_checks_from_file(check_file, provider) == test["expected"]
     
    -    @mock_s3
    +    @mock_aws
         def test_parse_checks_from_folder(self):
             test_checks_folder = (
                 f"{pathlib.Path().absolute()}/tests/lib/check/fixtures/checks_folder"
    @@ -363,7 +606,7 @@ def test_parse_checks_from_folder(self):
                 provider = test["input"]["provider"]
                 assert (
                     parse_checks_from_folder(
    -                    self.set_mocked_audit_info(), check_folder, provider
    +                    set_mocked_aws_audit_info(), check_folder, provider
                     )
                     == test["expected"]
                 )
    @@ -470,10 +713,54 @@ def test_recover_checks_from_provider(self):
                     "storage_ensure_minimum_tls_version_12",
                     "/root_dir/prowler/providers/azure/services/storage/storage_ensure_minimum_tls_version_12",
                 ),
    +            (
    +                "storage_key_rotation_90_days",
    +                "/root_dir/prowler/providers/azure/services/storage/storage_key_rotation_90_days",
    +            ),
    +            (
    +                "storage_ensure_private_endpoints_in_storage_accounts",
    +                "/root_dir/prowler/providers/azure/services/storage/storage_ensure_private_endpoints_in_storage_accounts",
    +            ),
    +            (
    +                "storage_ensure_soft_delete_is_enabled",
    +                "/root_dir/prowler/providers/azure/services/storage/storage_ensure_soft_delete_is_enabled",
    +            ),
                 (
                     "storage_ensure_encryption_with_customer_managed_keys",
                     "/root_dir/prowler/providers/azure/services/storage/storage_ensure_encryption_with_customer_managed_keys",
                 ),
    +            (
    +                "sqlserver_tde_encrypted_with_cmk",
    +                "/root_dir/prowler/providers/azure/services/sqlserver/sqlserver_tde_encrypted_with_cmk",
    +            ),
    +            (
    +                "sqlserver_tde_encryption_enabled",
    +                "/root_dir/prowler/providers/azure/services/sqlserver/sqlserver_tde_encryption_enabled",
    +            ),
    +            (
    +                "sqlserver_auditing_retention_90_days",
    +                "/root_dir/prowler/providers/azure/services/sqlserver/sqlserver_auditing_retention_90_days",
    +            ),
    +            (
    +                "sqlserver_vulnerability_assessment_enabled",
    +                "/root_dir/prowler/providers/azure/services/sqlserver/sqlserver_vulnerability_assessment_enabled",
    +            ),
    +            (
    +                "sqlserver_va_periodic_recurring_scans_enabled",
    +                "/root_dir/prowler/providers/azure/services/sqlserver/sqlserver_va_periodic_recurring_scans_enabled",
    +            ),
    +            (
    +                "sqlserver_va_scan_reports_configured",
    +                "/root_dir/prowler/providers/azure/services/sqlserver/sqlserver_va_scan_reports_configured",
    +            ),
    +            (
    +                "sqlserver_va_emails_notifications_admins_enabled",
    +                "/root_dir/prowler/providers/azure/services/sqlserver/sqlserver_va_emails_notifications_admins_enabled",
    +            ),
    +            (
    +                "postgresql_flexible_server_enforce_ssl_enabled",
    +                "/root_dir/prowler/providers/azure/services/postgresql/postgresql_flexible_server_enforce_ssl_enabled",
    +            ),
             ]
             returned_checks = recover_checks_from_provider(provider, service)
             assert returned_checks == expected_checks
    @@ -596,6 +883,19 @@ def test_get_checks_from_input_arn_cloudwatch(self):
             recovered_checks = get_checks_from_input_arn(audit_resources, provider)
             assert recovered_checks == expected_checks
     
    +    @patch(
    +        "prowler.lib.check.check.recover_checks_from_provider",
    +        new=mock_recover_checks_from_aws_provider_cognito_service,
    +    )
    +    def test_get_checks_from_input_arn_cognito(self):
    +        audit_resources = [
    +            f"arn:aws:cognito-idp:us-east-1:{AWS_ACCOUNT_NUMBER}:userpool/test"
    +        ]
    +        provider = "aws"
    +        expected_checks = []
    +        recovered_checks = get_checks_from_input_arn(audit_resources, provider)
    +        assert recovered_checks == expected_checks
    +
         @patch(
             "prowler.lib.check.check.recover_checks_from_provider",
             new=mock_recover_checks_from_aws_provider_ec2_service,
    diff --git a/tests/lib/cli/parser_test.py b/tests/lib/cli/parser_test.py
    index 27e77962d1c..bbc11c95fa7 100644
    --- a/tests/lib/cli/parser_test.py
    +++ b/tests/lib/cli/parser_test.py
    @@ -5,6 +5,11 @@
     from mock import patch
     
     from prowler.lib.cli.parser import ProwlerArgumentParser
    +from prowler.providers.aws.config import ROLE_SESSION_NAME
    +from prowler.providers.aws.lib.arguments.arguments import (
    +    validate_bucket,
    +    validate_role_session_name,
    +)
     from prowler.providers.azure.lib.arguments.arguments import validate_azure_region
     
     prowler_command = "prowler"
    @@ -117,6 +122,7 @@ def test_default_parser_no_arguments_azure(self):
             assert not parsed.sp_env_auth
             assert not parsed.browser_auth
             assert not parsed.managed_identity_auth
    +        assert not parsed.shodan
     
         def test_default_parser_no_arguments_gcp(self):
             provider = "gcp"
    @@ -772,7 +778,7 @@ def test_aws_parser_session_duration_short(self, capsys):
             assert wrapped_exit.value.code == 2
             assert (
                 capsys.readouterr().err
    -            == f"{prowler_default_usage_error}\nprowler: error: aws: To use -I/-T options -R option is needed\n"
    +            == f"{prowler_default_usage_error}\nprowler: error: aws: To use -I/--external-id, -T/--session-duration or --role-session-name options -R/--role option is needed\n"
             )
     
         def test_aws_parser_session_duration_long(self, capsys):
    @@ -785,7 +791,7 @@ def test_aws_parser_session_duration_long(self, capsys):
             assert wrapped_exit.value.code == 2
             assert (
                 capsys.readouterr().err
    -            == f"{prowler_default_usage_error}\nprowler: error: aws: To use -I/-T options -R option is needed\n"
    +            == f"{prowler_default_usage_error}\nprowler: error: aws: To use -I/--external-id, -T/--session-duration or --role-session-name options -R/--role option is needed\n"
             )
     
         # TODO
    @@ -806,7 +812,7 @@ def test_aws_parser_external_id_short(self, capsys):
             assert wrapped_exit.value.code == 2
             assert (
                 capsys.readouterr().err
    -            == f"{prowler_default_usage_error}\nprowler: error: aws: To use -I/-T options -R option is needed\n"
    +            == f"{prowler_default_usage_error}\nprowler: error: aws: To use -I/--external-id, -T/--session-duration or --role-session-name options -R/--role option is needed\n"
             )
     
         def test_aws_parser_external_id_long(self, capsys):
    @@ -819,7 +825,7 @@ def test_aws_parser_external_id_long(self, capsys):
             assert wrapped_exit.value.code == 2
             assert (
                 capsys.readouterr().err
    -            == f"{prowler_default_usage_error}\nprowler: error: aws: To use -I/-T options -R option is needed\n"
    +            == f"{prowler_default_usage_error}\nprowler: error: aws: To use -I/--external-id, -T/--session-duration or --role-session-name options -R/--role option is needed\n"
             )
     
         def test_aws_parser_region_f(self):
    @@ -915,6 +921,12 @@ def test_aws_parser_skip_sh_update(self):
             parsed = self.parser.parse(command)
             assert parsed.skip_sh_update
     
    +    def test_aws_parser_send_only_fail(self):
    +        argument = "--send-sh-only-fails"
    +        command = [prowler_command, argument]
    +        parsed = self.parser.parse(command)
    +        assert parsed.send_sh_only_fails
    +
         def test_aws_parser_quick_inventory_short(self):
             argument = "-i"
             command = [prowler_command, argument]
    @@ -1031,6 +1043,13 @@ def test_aws_parser_config_file(self):
             parsed = self.parser.parse(command)
             assert parsed.config_file == config_file
     
    +    def test_aws_parser_role_session_name(self):
    +        argument = "--role-session-name"
    +        role_session_name = ROLE_SESSION_NAME
    +        command = [prowler_command, argument, role_session_name]
    +        parsed = self.parser.parse(command)
    +        assert parsed.role_session_name == role_session_name
    +
         def test_parser_azure_auth_sp(self):
             argument = "--sp-env-auth"
             command = [prowler_command, "azure", argument]
    @@ -1060,6 +1079,20 @@ def test_parser_azure_auth_az_cli(self):
             assert parsed.provider == "azure"
             assert parsed.az_cli_auth
     
    +    def test_azure_parser_shodan_short(self):
    +        argument = "-N"
    +        shodan_api_key = str(uuid.uuid4())
    +        command = [prowler_command, "azure", argument, shodan_api_key]
    +        parsed = self.parser.parse(command)
    +        assert parsed.shodan == shodan_api_key
    +
    +    def test_azure_parser_shodan_long(self):
    +        argument = "--shodan"
    +        shodan_api_key = str(uuid.uuid4())
    +        command = [prowler_command, "azure", argument, shodan_api_key]
    +        parsed = self.parser.parse(command)
    +        assert parsed.shodan == shodan_api_key
    +
         def test_parser_azure_auth_managed_identity(self):
             argument = "--managed-identity-auth"
             command = [prowler_command, "azure", argument]
    @@ -1182,3 +1215,50 @@ def test_validate_azure_region_invalid_regions(self):
                 match=f"Region {invalid_region} not allowed, allowed regions are {' '.join(expected_regions)}",
             ):
                 validate_azure_region(invalid_region)
    +
    +    def test_validate_bucket_invalid_bucket_names(self):
    +        bad_bucket_names = [
    +            "xn--bucket-name",
    +            "mrryadfpcwlscicvnrchmtmyhwrvzkgfgdxnlnvaaummnywciixnzvycnzmhhpwb",
    +            "192.168.5.4",
    +            "bucket-name-s3alias",
    +            "bucket-name-s3alias-",
    +            "bucket-n$ame",
    +            "bu",
    +        ]
    +        for bucket_name in bad_bucket_names:
    +            with pytest.raises(ArgumentTypeError) as argument_error:
    +                validate_bucket(bucket_name)
    +
    +            assert argument_error.type == ArgumentTypeError
    +            assert (
    +                argument_error.value.args[0]
    +                == "Bucket name must be valid (https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucketnamingrules.html)"
    +            )
    +
    +    def test_validate_bucket_valid_bucket_names(self):
    +        valid_bucket_names = ["bucket-name" "test" "test-test-test"]
    +        for bucket_name in valid_bucket_names:
    +            assert validate_bucket(bucket_name) == bucket_name
    +
    +    def test_validate_role_session_name_invalid_role_names(self):
    +        bad_role_names = [
    +            "role name",
    +            "adasD*",
    +            "test#",
    +            "role-name?",
    +        ]
    +        for role_name in bad_role_names:
    +            with pytest.raises(ArgumentTypeError) as argument_error:
    +                validate_role_session_name(role_name)
    +
    +            assert argument_error.type == ArgumentTypeError
    +            assert (
    +                argument_error.value.args[0]
    +                == "Role Session Name must be 2-64 characters long and consist only of upper- and lower-case alphanumeric characters with no spaces. You can also include underscores or any of the following characters: =,.@-"
    +            )
    +
    +    def test_validate_role_session_name_valid_role_names(self):
    +        valid_role_names = ["prowler-role" "test@" "test=test+test,."]
    +        for role_name in valid_role_names:
    +            assert validate_role_session_name(role_name) == role_name
    diff --git a/tests/lib/outputs/outputs_test.py b/tests/lib/outputs/outputs_test.py
    index bd00f77e559..80e8279d1cc 100644
    --- a/tests/lib/outputs/outputs_test.py
    +++ b/tests/lib/outputs/outputs_test.py
    @@ -455,9 +455,9 @@ def test_fill_json_asff(self):
             expected.GeneratorId = "prowler-" + finding.check_metadata.CheckID
             expected.AwsAccountId = AWS_ACCOUNT_ID
             expected.Types = finding.check_metadata.CheckType
    -        expected.FirstObservedAt = (
    -            expected.UpdatedAt
    -        ) = expected.CreatedAt = timestamp_utc.strftime("%Y-%m-%dT%H:%M:%SZ")
    +        expected.FirstObservedAt = expected.UpdatedAt = expected.CreatedAt = (
    +            timestamp_utc.strftime("%Y-%m-%dT%H:%M:%SZ")
    +        )
             expected.Severity = Severity(Label=finding.check_metadata.Severity.upper())
             expected.Title = finding.check_metadata.CheckTitle
             expected.Description = finding.status_extended
    @@ -536,9 +536,9 @@ def test_fill_json_asff_without_remediation_recommendation_url(self):
             expected.GeneratorId = "prowler-" + finding.check_metadata.CheckID
             expected.AwsAccountId = AWS_ACCOUNT_ID
             expected.Types = finding.check_metadata.CheckType
    -        expected.FirstObservedAt = (
    -            expected.UpdatedAt
    -        ) = expected.CreatedAt = timestamp_utc.strftime("%Y-%m-%dT%H:%M:%SZ")
    +        expected.FirstObservedAt = expected.UpdatedAt = expected.CreatedAt = (
    +            timestamp_utc.strftime("%Y-%m-%dT%H:%M:%SZ")
    +        )
             expected.Severity = Severity(Label=finding.check_metadata.Severity.upper())
             expected.Title = finding.check_metadata.CheckTitle
             expected.Description = finding.status_extended
    @@ -563,12 +563,12 @@ def test_fill_json_asff_without_remediation_recommendation_url(self):
                 # "Code": finding.check_metadata.Remediation.Code,
             }
     
    -        expected.Remediation[
    -            "Recommendation"
    -        ].Text = finding.check_metadata.Remediation.Recommendation.Text
    -        expected.Remediation[
    -            "Recommendation"
    -        ].Url = "https://docs.aws.amazon.com/securityhub/latest/userguide/what-is-securityhub.html"
    +        expected.Remediation["Recommendation"].Text = (
    +            finding.check_metadata.Remediation.Recommendation.Text
    +        )
    +        expected.Remediation["Recommendation"].Url = (
    +            "https://docs.aws.amazon.com/securityhub/latest/userguide/what-is-securityhub.html"
    +        )
     
             input = Check_Output_JSON_ASFF()
             output_options = mock.MagicMock()
    @@ -627,9 +627,9 @@ def test_fill_json_asff_with_long_description(self):
             expected.GeneratorId = "prowler-" + finding.check_metadata.CheckID
             expected.AwsAccountId = AWS_ACCOUNT_ID
             expected.Types = finding.check_metadata.CheckType
    -        expected.FirstObservedAt = (
    -            expected.UpdatedAt
    -        ) = expected.CreatedAt = timestamp_utc.strftime("%Y-%m-%dT%H:%M:%SZ")
    +        expected.FirstObservedAt = expected.UpdatedAt = expected.CreatedAt = (
    +            timestamp_utc.strftime("%Y-%m-%dT%H:%M:%SZ")
    +        )
             expected.Severity = Severity(Label=finding.check_metadata.Severity.upper())
             expected.Title = finding.check_metadata.CheckTitle
             expected.Description = finding.status_extended[:1000] + "..."
    @@ -654,12 +654,12 @@ def test_fill_json_asff_with_long_description(self):
                 # "Code": finding.check_metadata.Remediation.Code,
             }
     
    -        expected.Remediation[
    -            "Recommendation"
    -        ].Text = finding.check_metadata.Remediation.Recommendation.Text
    -        expected.Remediation[
    -            "Recommendation"
    -        ].Url = "https://docs.aws.amazon.com/securityhub/latest/userguide/what-is-securityhub.html"
    +        expected.Remediation["Recommendation"].Text = (
    +            finding.check_metadata.Remediation.Recommendation.Text
    +        )
    +        expected.Remediation["Recommendation"].Url = (
    +            "https://docs.aws.amazon.com/securityhub/latest/userguide/what-is-securityhub.html"
    +        )
     
             input = Check_Output_JSON_ASFF()
             output_options = mock.MagicMock()
    @@ -866,9 +866,9 @@ def test_fill_json_asff_with_long_associated_standards(self):
                 expected.GeneratorId = "prowler-" + finding.check_metadata.CheckID
                 expected.AwsAccountId = AWS_ACCOUNT_ID
                 expected.Types = finding.check_metadata.CheckType
    -            expected.FirstObservedAt = (
    -                expected.UpdatedAt
    -            ) = expected.CreatedAt = timestamp_utc.strftime("%Y-%m-%dT%H:%M:%SZ")
    +            expected.FirstObservedAt = expected.UpdatedAt = expected.CreatedAt = (
    +                timestamp_utc.strftime("%Y-%m-%dT%H:%M:%SZ")
    +            )
                 expected.Severity = Severity(Label=finding.check_metadata.Severity.upper())
                 expected.Title = finding.check_metadata.CheckTitle
                 expected.Description = finding.status_extended
    @@ -935,12 +935,12 @@ def test_fill_json_asff_with_long_associated_standards(self):
                     # "Code": finding.check_metadata.Remediation.Code,
                 }
     
    -            expected.Remediation[
    -                "Recommendation"
    -            ].Text = finding.check_metadata.Remediation.Recommendation.Text
    -            expected.Remediation[
    -                "Recommendation"
    -            ].Url = "https://docs.aws.amazon.com/securityhub/latest/userguide/what-is-securityhub.html"
    +            expected.Remediation["Recommendation"].Text = (
    +                finding.check_metadata.Remediation.Recommendation.Text
    +            )
    +            expected.Remediation["Recommendation"].Url = (
    +                "https://docs.aws.amazon.com/securityhub/latest/userguide/what-is-securityhub.html"
    +            )
     
                 input = Check_Output_JSON_ASFF()
                 output_options = mock.MagicMock()
    @@ -1332,12 +1332,12 @@ def test_get_check_compliance(self):
     
             output_options = mock.MagicMock()
             output_options.bulk_checks_metadata = {}
    -        output_options.bulk_checks_metadata[
    -            "iam_user_accesskey_unused"
    -        ] = mock.MagicMock()
    -        output_options.bulk_checks_metadata[
    -            "iam_user_accesskey_unused"
    -        ].Compliance = bulk_check_metadata
    +        output_options.bulk_checks_metadata["iam_user_accesskey_unused"] = (
    +            mock.MagicMock()
    +        )
    +        output_options.bulk_checks_metadata["iam_user_accesskey_unused"].Compliance = (
    +            bulk_check_metadata
    +        )
     
             assert get_check_compliance(finding, "aws", output_options) == {
                 "CIS-1.4": ["2.1.3"],
    diff --git a/tests/lib/outputs/slack_test.py b/tests/lib/outputs/slack_test.py
    index 3a93f5caf36..03620da28ec 100644
    --- a/tests/lib/outputs/slack_test.py
    +++ b/tests/lib/outputs/slack_test.py
    @@ -78,6 +78,7 @@ def test_create_message_identity(self):
                 audit_metadata=None,
                 audit_config=None,
                 AzureRegionConfig=AzureRegionConfig(),
    +            locations=None,
             )
             assert create_message_identity("aws", aws_audit_info) == (
                 f"AWS Account *{aws_audit_info.audited_account}*",
    @@ -119,14 +120,14 @@ def test_create_message_blocks(self):
                     "type": "section",
                     "text": {
                         "type": "mrkdwn",
    -                    "text": f"\n:white_check_mark: *{stats['total_pass']} Passed findings* ({round(stats['total_pass']/stats['findings_count']*100,2)}%)\n",
    +                    "text": f"\n:white_check_mark: *{stats['total_pass']} Passed findings* ({round(stats['total_pass'] / stats['findings_count'] * 100 , 2)}%)\n",
                     },
                 },
                 {
                     "type": "section",
                     "text": {
                         "type": "mrkdwn",
    -                    "text": f"\n:x: *{stats['total_fail']} Failed findings* ({round(stats['total_fail']/stats['findings_count']*100,2)}%)\n ",
    +                    "text": f"\n:x: *{stats['total_fail']} Failed findings* ({round(stats['total_fail'] / stats['findings_count'] * 100 , 2)}%)\n ",
                     },
                 },
                 {
    @@ -199,14 +200,14 @@ def test_create_message_blocks(self):
                     "type": "section",
                     "text": {
                         "type": "mrkdwn",
    -                    "text": f"\n:white_check_mark: *{stats['total_pass']} Passed findings* ({round(stats['total_pass']/stats['findings_count']*100,2)}%)\n",
    +                    "text": f"\n:white_check_mark: *{stats['total_pass']} Passed findings* ({round(stats['total_pass'] / stats['findings_count'] * 100 , 2)}%)\n",
                     },
                 },
                 {
                     "type": "section",
                     "text": {
                         "type": "mrkdwn",
    -                    "text": f"\n:x: *{stats['total_fail']} Failed findings* ({round(stats['total_fail']/stats['findings_count']*100,2)}%)\n ",
    +                    "text": f"\n:x: *{stats['total_fail']} Failed findings* ({round(stats['total_fail'] / stats['findings_count'] * 100 , 2)}%)\n ",
                     },
                 },
                 {
    @@ -279,14 +280,14 @@ def test_create_message_blocks(self):
                     "type": "section",
                     "text": {
                         "type": "mrkdwn",
    -                    "text": f"\n:white_check_mark: *{stats['total_pass']} Passed findings* ({round(stats['total_pass']/stats['findings_count']*100,2)}%)\n",
    +                    "text": f"\n:white_check_mark: *{stats['total_pass']} Passed findings* ({round(stats['total_pass'] / stats['findings_count'] * 100 , 2)}%)\n",
                     },
                 },
                 {
                     "type": "section",
                     "text": {
                         "type": "mrkdwn",
    -                    "text": f"\n:x: *{stats['total_fail']} Failed findings* ({round(stats['total_fail']/stats['findings_count']*100,2)}%)\n ",
    +                    "text": f"\n:x: *{stats['total_fail']} Failed findings* ({round(stats['total_fail'] / stats['findings_count'] * 100 , 2)}%)\n ",
                     },
                 },
                 {
    diff --git a/tests/providers/aws/audit_info_utils.py b/tests/providers/aws/audit_info_utils.py
    index 596c3809de4..04f55529d01 100644
    --- a/tests/providers/aws/audit_info_utils.py
    +++ b/tests/providers/aws/audit_info_utils.py
    @@ -1,15 +1,44 @@
     from boto3 import session
     
    -from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info
    +from prowler.providers.aws.lib.audit_info.models import AWS_Assume_Role, AWS_Audit_Info
     from prowler.providers.common.models import Audit_Metadata
     
    +# Root AWS Account
    +AWS_ACCOUNT_NUMBER = "123456789012"
    +AWS_ACCOUNT_ARN = f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root"
    +AWS_COMMERCIAL_PARTITION = "aws"
    +
    +# Commercial Regions
     AWS_REGION_US_EAST_1 = "us-east-1"
    +AWS_REGION_US_EAST_1_AZA = "us-east-1a"
    +AWS_REGION_US_EAST_1_AZB = "us-east-1b"
     AWS_REGION_EU_WEST_1 = "eu-west-1"
    +AWS_REGION_EU_WEST_1_AZA = "eu-west-1a"
    +AWS_REGION_EU_WEST_1_AZB = "eu-west-1b"
     AWS_REGION_EU_WEST_2 = "eu-west-2"
    -AWS_PARTITION = "aws"
    -AWS_ACCOUNT_NUMBER = "123456789012"
    -AWS_ACCOUNT_ARN = f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root"
    +AWS_REGION_CN_NORTHWEST_1 = "cn-northwest-1"
    +AWS_REGION_CN_NORTH_1 = "cn-north-1"
    +AWS_REGION_EU_SOUTH_2 = "eu-south-2"
    +AWS_REGION_EU_SOUTH_3 = "eu-south-3"
    +AWS_REGION_US_WEST_2 = "us-west-2"
    +AWS_REGION_US_EAST_2 = "us-east-2"
    +AWS_REGION_EU_CENTRAL_1 = "eu-central-1"
    +
    +
    +# China Regions
    +AWS_REGION_CHINA_NORHT_1 = "cn-north-1"
    +
    +# Gov Cloud Regions
    +AWS_REGION_GOV_CLOUD_US_EAST_1 = "us-gov-east-1"
    +
    +# Iso Regions
    +AWS_REGION_ISO_GLOBAL = "aws-iso-global"
    +
    +# AWS Partitions
     AWS_COMMERCIAL_PARTITION = "aws"
    +AWS_GOV_CLOUD_PARTITION = "aws-us-gov"
    +AWS_CHINA_PARTITION = "aws-cn"
    +AWS_ISO_PARTITION = "aws-iso"
     
     
     # Mocked AWS Audit Info
    @@ -17,32 +46,44 @@ def set_mocked_aws_audit_info(
         audited_regions: [str] = [],
         audited_account: str = AWS_ACCOUNT_NUMBER,
         audited_account_arn: str = AWS_ACCOUNT_ARN,
    +    audited_partition: str = AWS_COMMERCIAL_PARTITION,
    +    expected_checks: [str] = [],
    +    profile_region: str = None,
    +    audit_config: dict = {},
    +    ignore_unused_services: bool = False,
    +    assumed_role_info: AWS_Assume_Role = None,
    +    audit_session: session.Session = session.Session(
    +        profile_name=None,
    +        botocore_session=None,
    +    ),
    +    original_session: session.Session = None,
    +    enabled_regions: set = None,
     ):
         audit_info = AWS_Audit_Info(
             session_config=None,
    -        original_session=None,
    -        audit_session=session.Session(
    -            profile_name=None,
    -            botocore_session=None,
    -        ),
    +        original_session=original_session,
    +        audit_session=audit_session,
             audited_account=audited_account,
             audited_account_arn=audited_account_arn,
             audited_user_id=None,
    -        audited_partition=AWS_PARTITION,
    +        audited_partition=audited_partition,
             audited_identity_arn=None,
             profile=None,
    -        profile_region=None,
    +        profile_region=profile_region,
             credentials=None,
    -        assumed_role_info=None,
    +        assumed_role_info=assumed_role_info,
             audited_regions=audited_regions,
             organizations_metadata=None,
    -        audit_resources=None,
    +        audit_resources=[],
             mfa_enabled=False,
             audit_metadata=Audit_Metadata(
                 services_scanned=0,
    -            expected_checks=[],
    +            expected_checks=expected_checks,
                 completed_checks=0,
                 audit_progress=0,
             ),
    +        audit_config=audit_config,
    +        ignore_unused_services=ignore_unused_services,
    +        enabled_regions=enabled_regions if enabled_regions else set(audited_regions),
         )
         return audit_info
    diff --git a/tests/providers/aws/aws_provider_test.py b/tests/providers/aws/aws_provider_test.py
    index 0662b1c9c89..db2038de976 100644
    --- a/tests/providers/aws/aws_provider_test.py
    +++ b/tests/providers/aws/aws_provider_test.py
    @@ -2,7 +2,7 @@
     
     import boto3
     from mock import patch
    -from moto import mock_iam, mock_sts
    +from moto import mock_aws
     
     from prowler.providers.aws.aws_provider import (
         AWS_Provider,
    @@ -12,21 +12,28 @@
         get_default_region,
         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"
    +from prowler.providers.aws.lib.audit_info.models import AWS_Assume_Role
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_ACCOUNT_NUMBER,
    +    AWS_CHINA_PARTITION,
    +    AWS_GOV_CLOUD_PARTITION,
    +    AWS_ISO_PARTITION,
    +    AWS_REGION_CHINA_NORHT_1,
    +    AWS_REGION_EU_WEST_1,
    +    AWS_REGION_GOV_CLOUD_US_EAST_1,
    +    AWS_REGION_ISO_GLOBAL,
    +    AWS_REGION_US_EAST_1,
    +    AWS_REGION_US_EAST_2,
    +    set_mocked_aws_audit_info,
    +)
     
     
     class Test_AWS_Provider:
    -    @mock_iam
    -    @mock_sts
    +    @mock_aws
         def test_aws_provider_user_without_mfa(self):
    -        audited_regions = ["eu-west-1"]
    -        # sessionName = "ProwlerAsessmentSession"
    +        # sessionName = "ProwlerAssessmentSession"
             # Boto 3 client to create our user
    -        iam_client = boto3.client("iam", region_name=AWS_REGION)
    +        iam_client = boto3.client("iam", region_name=AWS_REGION_US_EAST_1)
             # IAM user
             iam_user = iam_client.create_user(UserName="test-user")["User"]
             access_key = iam_client.create_access_key(UserName=iam_user["UserName"])[
    @@ -38,60 +45,43 @@ def test_aws_provider_user_without_mfa(self):
             session = boto3.session.Session(
                 aws_access_key_id=access_key_id,
                 aws_secret_access_key=secret_access_key,
    -            region_name=AWS_REGION,
    +            region_name=AWS_REGION_US_EAST_1,
             )
     
    -        # Fulfil the input session object for Prowler
    -        audit_info = AWS_Audit_Info(
    -            session_config=None,
    -            original_session=session,
    -            audit_session=None,
    -            audited_account=None,
    -            audited_account_arn=None,
    -            audited_partition=None,
    -            audited_identity_arn=None,
    -            audited_user_id=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    +        audit_info = set_mocked_aws_audit_info(
    +            audited_regions=[AWS_REGION_EU_WEST_1],
                 assumed_role_info=AWS_Assume_Role(
                     role_arn=None,
                     session_duration=None,
                     external_id=None,
                     mfa_enabled=False,
    +                role_session_name="ProwlerAssessmentSession",
                 ),
    -            audited_regions=audited_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,
    -            ),
    +            original_session=session,
             )
     
             # Call assume_role
             with patch(
                 "prowler.providers.aws.aws_provider.input_role_mfa_token_and_code",
    -            return_value=(f"arn:aws:iam::{ACCOUNT_ID}:mfa/test-role-mfa", "111111"),
    +            return_value=(
    +                f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:mfa/test-role-mfa",
    +                "111111",
    +            ),
             ):
                 aws_provider = AWS_Provider(audit_info)
    -            assert aws_provider.aws_session.region_name is None
    +            assert aws_provider.aws_session.region_name == AWS_REGION_US_EAST_1
                 assert aws_provider.role_info == AWS_Assume_Role(
                     role_arn=None,
                     session_duration=None,
                     external_id=None,
                     mfa_enabled=False,
    +                role_session_name="ProwlerAssessmentSession",
                 )
     
    -    @mock_iam
    -    @mock_sts
    +    @mock_aws
         def test_aws_provider_user_with_mfa(self):
    -        audited_regions = "eu-west-1"
             # Boto 3 client to create our user
    -        iam_client = boto3.client("iam", region_name=AWS_REGION)
    +        iam_client = boto3.client("iam", region_name=AWS_REGION_US_EAST_1)
             # IAM user
             iam_user = iam_client.create_user(UserName="test-user")["User"]
             access_key = iam_client.create_access_key(UserName=iam_user["UserName"])[
    @@ -103,59 +93,50 @@ def test_aws_provider_user_with_mfa(self):
             session = boto3.session.Session(
                 aws_access_key_id=access_key_id,
                 aws_secret_access_key=secret_access_key,
    -            region_name=AWS_REGION,
    +            region_name=AWS_REGION_US_EAST_1,
             )
     
    -        # Fulfil the input session object for Prowler
    -        audit_info = AWS_Audit_Info(
    -            session_config=None,
    -            original_session=session,
    -            audit_session=None,
    -            audited_account=None,
    -            audited_account_arn=None,
    -            audited_partition=None,
    -            audited_identity_arn=None,
    -            audited_user_id=None,
    -            profile=None,
    -            profile_region=AWS_REGION,
    -            credentials=None,
    +        audit_info = set_mocked_aws_audit_info(
    +            audited_regions=[AWS_REGION_EU_WEST_1],
                 assumed_role_info=AWS_Assume_Role(
                     role_arn=None,
                     session_duration=None,
                     external_id=None,
                     mfa_enabled=False,
    +                role_session_name="ProwlerAssessmentSession",
                 ),
    -            audited_regions=audited_regions,
    -            organizations_metadata=None,
    -            audit_resources=None,
    -            mfa_enabled=True,
    +            original_session=session,
    +            profile_region=AWS_REGION_US_EAST_1,
             )
     
    -        # # Call assume_role
    +        # Call assume_role
             with patch(
                 "prowler.providers.aws.aws_provider.input_role_mfa_token_and_code",
    -            return_value=(f"arn:aws:iam::{ACCOUNT_ID}:mfa/test-role-mfa", "111111"),
    +            return_value=(
    +                f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:mfa/test-role-mfa",
    +                "111111",
    +            ),
             ):
                 aws_provider = AWS_Provider(audit_info)
    -            assert aws_provider.aws_session.region_name is None
    +            assert aws_provider.aws_session.region_name == AWS_REGION_US_EAST_1
                 assert aws_provider.role_info == AWS_Assume_Role(
                     role_arn=None,
                     session_duration=None,
                     external_id=None,
                     mfa_enabled=False,
    +                role_session_name="ProwlerAssessmentSession",
                 )
     
    -    @mock_iam
    -    @mock_sts
    +    @mock_aws
         def test_aws_provider_assume_role_with_mfa(self):
             # Variables
             role_name = "test-role"
    -        role_arn = f"arn:aws:iam::{ACCOUNT_ID}:role/{role_name}"
    +        role_arn = f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:role/{role_name}"
             session_duration_seconds = 900
    -        audited_regions = ["eu-west-1"]
    -        sessionName = "ProwlerAsessmentSession"
    +        sessionName = "ProwlerAssessmentSession"
    +
             # Boto 3 client to create our user
    -        iam_client = boto3.client("iam", region_name=AWS_REGION)
    +        iam_client = boto3.client("iam", region_name=AWS_REGION_US_EAST_1)
             # IAM user
             iam_user = iam_client.create_user(UserName="test-user")["User"]
             access_key = iam_client.create_access_key(UserName=iam_user["UserName"])[
    @@ -167,46 +148,30 @@ def test_aws_provider_assume_role_with_mfa(self):
             session = boto3.session.Session(
                 aws_access_key_id=access_key_id,
                 aws_secret_access_key=secret_access_key,
    -            region_name=AWS_REGION,
    +            region_name=AWS_REGION_US_EAST_1,
             )
     
    -        # Fulfil the input session object for Prowler
    -        audit_info = AWS_Audit_Info(
    -            session_config=None,
    -            original_session=session,
    -            audit_session=None,
    -            audited_account=None,
    -            audited_account_arn=None,
    -            audited_partition=None,
    -            audited_identity_arn=None,
    -            audited_user_id=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    +        audit_info = set_mocked_aws_audit_info(
    +            audited_regions=[AWS_REGION_EU_WEST_1],
                 assumed_role_info=AWS_Assume_Role(
                     role_arn=role_arn,
                     session_duration=session_duration_seconds,
                     external_id=None,
                     mfa_enabled=True,
    +                role_session_name="ProwlerAssessmentSession",
                 ),
    -            audited_regions=audited_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,
    -            ),
    +            original_session=session,
    +            profile_region=AWS_REGION_US_EAST_1,
             )
     
    -        # Call assume_role
             aws_provider = AWS_Provider(audit_info)
             # Patch MFA
             with patch(
                 "prowler.providers.aws.aws_provider.input_role_mfa_token_and_code",
    -            return_value=(f"arn:aws:iam::{ACCOUNT_ID}:mfa/test-role-mfa", "111111"),
    +            return_value=(
    +                f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:mfa/test-role-mfa",
    +                "111111",
    +            ),
             ):
                 assume_role_response = assume_role(
                     aws_provider.aws_session, aws_provider.role_info
    @@ -225,7 +190,7 @@ def test_aws_provider_assume_role_with_mfa(self):
                 # Assumed Role
                 assert (
                     assume_role_response["AssumedRoleUser"]["Arn"]
    -                == f"arn:aws:sts::{ACCOUNT_ID}:assumed-role/{role_name}/{sessionName}"
    +                == f"arn:aws:sts::{AWS_ACCOUNT_NUMBER}:assumed-role/{role_name}/{sessionName}"
                 )
     
                 # AssumedRoleUser
    @@ -240,17 +205,16 @@ def test_aws_provider_assume_role_with_mfa(self):
                     assume_role_response["AssumedRoleUser"]["AssumedRoleId"]
                 ) == 21 + 1 + len(sessionName)
     
    -    @mock_iam
    -    @mock_sts
    +    @mock_aws
         def test_aws_provider_assume_role_without_mfa(self):
             # Variables
             role_name = "test-role"
    -        role_arn = f"arn:aws:iam::{ACCOUNT_ID}:role/{role_name}"
    +        role_arn = f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:role/{role_name}"
             session_duration_seconds = 900
    -        audited_regions = "eu-west-1"
    -        sessionName = "ProwlerAsessmentSession"
    +        sessionName = "ProwlerAssessmentSession"
    +
             # Boto 3 client to create our user
    -        iam_client = boto3.client("iam", region_name=AWS_REGION)
    +        iam_client = boto3.client("iam", region_name=AWS_REGION_US_EAST_1)
             # IAM user
             iam_user = iam_client.create_user(UserName="test-user")["User"]
             access_key = iam_client.create_access_key(UserName=iam_user["UserName"])[
    @@ -262,41 +226,22 @@ def test_aws_provider_assume_role_without_mfa(self):
             session = boto3.session.Session(
                 aws_access_key_id=access_key_id,
                 aws_secret_access_key=secret_access_key,
    -            region_name=AWS_REGION,
    +            region_name=AWS_REGION_US_EAST_1,
             )
     
    -        # Fulfil the input session object for Prowler
    -        audit_info = AWS_Audit_Info(
    -            session_config=None,
    -            original_session=session,
    -            audit_session=None,
    -            audited_account=None,
    -            audited_account_arn=None,
    -            audited_partition=None,
    -            audited_identity_arn=None,
    -            audited_user_id=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    +        audit_info = set_mocked_aws_audit_info(
    +            audited_regions=[AWS_REGION_EU_WEST_1],
                 assumed_role_info=AWS_Assume_Role(
                     role_arn=role_arn,
                     session_duration=session_duration_seconds,
                     external_id=None,
                     mfa_enabled=False,
    +                role_session_name="ProwlerAssessmentSession",
                 ),
    -            audited_regions=audited_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,
    -            ),
    +            original_session=session,
    +            profile_region=AWS_REGION_US_EAST_1,
             )
     
    -        # Call assume_role
             aws_provider = AWS_Provider(audit_info)
             assume_role_response = assume_role(
                 aws_provider.aws_session, aws_provider.role_info
    @@ -315,7 +260,7 @@ def test_aws_provider_assume_role_without_mfa(self):
             # Assumed Role
             assert (
                 assume_role_response["AssumedRoleUser"]["Arn"]
    -            == f"arn:aws:sts::{ACCOUNT_ID}:assumed-role/{role_name}/{sessionName}"
    +            == f"arn:aws:sts::{AWS_ACCOUNT_NUMBER}:assumed-role/{role_name}/{sessionName}"
             )
     
             # AssumedRoleUser
    @@ -330,19 +275,18 @@ def test_aws_provider_assume_role_without_mfa(self):
                 assume_role_response["AssumedRoleUser"]["AssumedRoleId"]
             ) == 21 + 1 + len(sessionName)
     
    -    @mock_iam
    -    @mock_sts
    +    @mock_aws
         def test_assume_role_with_sts_endpoint_region(self):
             # Variables
             role_name = "test-role"
    -        role_arn = f"arn:aws:iam::{ACCOUNT_ID}:role/{role_name}"
    +        role_arn = f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:role/{role_name}"
             session_duration_seconds = 900
    -        aws_region = "eu-west-1"
    -        sts_endpoint_region = aws_region
    -        audited_regions = [aws_region]
    -        sessionName = "ProwlerAsessmentSession"
    +        AWS_REGION_US_EAST_1 = AWS_REGION_EU_WEST_1
    +        sts_endpoint_region = AWS_REGION_US_EAST_1
    +        sessionName = "ProwlerAssessmentSession"
    +
             # Boto 3 client to create our user
    -        iam_client = boto3.client("iam", region_name=AWS_REGION)
    +        iam_client = boto3.client("iam", region_name=AWS_REGION_US_EAST_1)
             # IAM user
             iam_user = iam_client.create_user(UserName="test-user")["User"]
             access_key = iam_client.create_access_key(UserName=iam_user["UserName"])[
    @@ -354,41 +298,22 @@ def test_assume_role_with_sts_endpoint_region(self):
             session = boto3.session.Session(
                 aws_access_key_id=access_key_id,
                 aws_secret_access_key=secret_access_key,
    -            region_name=AWS_REGION,
    +            region_name=AWS_REGION_US_EAST_1,
             )
     
    -        # Fulfil the input session object for Prowler
    -        audit_info = AWS_Audit_Info(
    -            session_config=None,
    -            original_session=session,
    -            audit_session=None,
    -            audited_account=None,
    -            audited_account_arn=None,
    -            audited_partition=None,
    -            audited_identity_arn=None,
    -            audited_user_id=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    +        audit_info = set_mocked_aws_audit_info(
    +            audited_regions=[AWS_REGION_EU_WEST_1],
                 assumed_role_info=AWS_Assume_Role(
                     role_arn=role_arn,
                     session_duration=session_duration_seconds,
                     external_id=None,
                     mfa_enabled=False,
    +                role_session_name="ProwlerAssessmentSession",
                 ),
    -            audited_regions=audited_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,
    -            ),
    +            original_session=session,
    +            profile_region=AWS_REGION_US_EAST_1,
             )
     
    -        # Call assume_role
             aws_provider = AWS_Provider(audit_info)
             assume_role_response = assume_role(
                 aws_provider.aws_session, aws_provider.role_info, sts_endpoint_region
    @@ -407,7 +332,7 @@ def test_assume_role_with_sts_endpoint_region(self):
             # Assumed Role
             assert (
                 assume_role_response["AssumedRoleUser"]["Arn"]
    -            == f"arn:aws:sts::{ACCOUNT_ID}:assumed-role/{role_name}/{sessionName}"
    +            == f"arn:aws:sts::{AWS_ACCOUNT_NUMBER}:assumed-role/{role_name}/{sessionName}"
             )
     
             # AssumedRoleUser
    @@ -423,368 +348,78 @@ def test_assume_role_with_sts_endpoint_region(self):
             ) == 21 + 1 + len(sessionName)
     
         def test_generate_regional_clients(self):
    -        # New Boto3 session with the previously create user
    -        session = boto3.session.Session(
    -            region_name=AWS_REGION,
    -        )
    -        audited_regions = ["eu-west-1", AWS_REGION]
    -        # Fulfil the input session object for Prowler
    -        audit_info = AWS_Audit_Info(
    -            session_config=None,
    -            original_session=None,
    -            audit_session=session,
    -            audited_account=None,
    -            audited_account_arn=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            audited_user_id=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    +        audited_regions = [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        audit_info = set_mocked_aws_audit_info(
                 audited_regions=audited_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,
    +            audit_session=boto3.session.Session(
    +                region_name=AWS_REGION_US_EAST_1,
                 ),
    +            enabled_regions=audited_regions,
             )
    +
             generate_regional_clients_response = generate_regional_clients(
                 "ec2", audit_info
             )
     
             assert set(generate_regional_clients_response.keys()) == set(audited_regions)
     
    -    def test_generate_regional_clients_global_service(self):
    -        # New Boto3 session with the previously create user
    -        session = boto3.session.Session(
    -            region_name=AWS_REGION,
    -        )
    -        audited_regions = ["eu-west-1", AWS_REGION]
    -        profile_region = AWS_REGION
    -        # Fulfil the input session object for Prowler
    -        audit_info = AWS_Audit_Info(
    -            session_config=None,
    -            original_session=None,
    -            audit_session=session,
    -            audited_account=None,
    -            audited_account_arn=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            audited_user_id=None,
    -            profile=None,
    -            profile_region=profile_region,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=audited_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,
    -            ),
    -        )
    -        generate_regional_clients_response = generate_regional_clients(
    -            "route53", audit_info, global_service=True
    -        )
    -
    -        assert list(generate_regional_clients_response.keys()) == [profile_region]
    -
         def test_generate_regional_clients_cn_partition(self):
    -        # New Boto3 session with the previously create user
    -        session = boto3.session.Session(
    -            region_name=AWS_REGION,
    -        )
             audited_regions = ["cn-northwest-1", "cn-north-1"]
    -        # Fulfil the input session object for Prowler
    -        audit_info = AWS_Audit_Info(
    -            session_config=None,
    -            original_session=None,
    -            audit_session=session,
    -            audited_account=None,
    -            audited_account_arn=None,
    -            audited_partition="aws-cn",
    -            audited_identity_arn=None,
    -            audited_user_id=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    +        audit_info = set_mocked_aws_audit_info(
                 audited_regions=audited_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,
    +            audit_session=boto3.session.Session(
    +                region_name=AWS_REGION_US_EAST_1,
                 ),
    +            enabled_regions=audited_regions,
             )
             generate_regional_clients_response = generate_regional_clients(
    -            "shield", audit_info, global_service=True
    +            "shield", audit_info
             )
     
             # Shield does not exist in China
             assert generate_regional_clients_response == {}
     
         def test_get_default_region(self):
    -        audited_regions = ["eu-west-1"]
    -        profile_region = "eu-west-1"
    -        audit_info = AWS_Audit_Info(
    -            session_config=None,
    -            original_session=None,
    -            audit_session=None,
    -            audited_account=None,
    -            audited_account_arn=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            audited_user_id=None,
    -            profile=None,
    -            profile_region=profile_region,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=audited_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,
    -            ),
    +        audit_info = set_mocked_aws_audit_info(
    +            profile_region=AWS_REGION_EU_WEST_1,
    +            audited_regions=[AWS_REGION_EU_WEST_1],
             )
    -        assert get_default_region("ec2", audit_info) == "eu-west-1"
    +        assert get_default_region("ec2", audit_info) == AWS_REGION_EU_WEST_1
     
         def test_get_default_region_profile_region_not_audited(self):
    -        audited_regions = ["eu-west-1"]
    -        profile_region = "us-east-2"
    -        audit_info = AWS_Audit_Info(
    -            session_config=None,
    -            original_session=None,
    -            audit_session=None,
    -            audited_account=None,
    -            audited_account_arn=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            audited_user_id=None,
    -            profile=None,
    -            profile_region=profile_region,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=audited_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,
    -            ),
    +        audit_info = set_mocked_aws_audit_info(
    +            profile_region=AWS_REGION_US_EAST_2,
    +            audited_regions=[AWS_REGION_EU_WEST_1],
             )
    -        assert get_default_region("ec2", audit_info) == "eu-west-1"
    +        assert get_default_region("ec2", audit_info) == AWS_REGION_EU_WEST_1
     
         def test_get_default_region_non_profile_region(self):
    -        audited_regions = ["eu-west-1"]
    -        profile_region = None
    -        audit_info = AWS_Audit_Info(
    -            session_config=None,
    -            original_session=None,
    -            audit_session=None,
    -            audited_account=None,
    -            audited_account_arn=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            audited_user_id=None,
    -            profile=None,
    -            profile_region=profile_region,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=audited_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,
    -            ),
    +        audit_info = set_mocked_aws_audit_info(
    +            audited_regions=[AWS_REGION_EU_WEST_1],
             )
    -        assert get_default_region("ec2", audit_info) == "eu-west-1"
    +        assert get_default_region("ec2", audit_info) == AWS_REGION_EU_WEST_1
     
         def test_get_default_region_non_profile_or_audited_region(self):
    -        audited_regions = None
    -        profile_region = None
    -        audit_info = AWS_Audit_Info(
    -            session_config=None,
    -            original_session=None,
    -            audit_session=None,
    -            audited_account=None,
    -            audited_account_arn=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            audited_user_id=None,
    -            profile=None,
    -            profile_region=profile_region,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=audited_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,
    -            ),
    -        )
    -        assert get_default_region("ec2", audit_info) == "us-east-1"
    -
    -    def test_aws_get_global_region(self):
    -        audit_info = AWS_Audit_Info(
    -            session_config=None,
    -            original_session=None,
    -            audit_session=None,
    -            audited_account=None,
    -            audited_account_arn=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            audited_user_id=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=None,
    -            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"
    +        audit_info = set_mocked_aws_audit_info()
    +        assert get_default_region("ec2", audit_info) == AWS_REGION_US_EAST_1
     
         def test_aws_gov_get_global_region(self):
    -        audit_info = AWS_Audit_Info(
    -            session_config=None,
    -            original_session=None,
    -            audit_session=None,
    -            audited_account=None,
    -            audited_account_arn=None,
    -            audited_partition="aws-us-gov",
    -            audited_identity_arn=None,
    -            audited_user_id=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=None,
    -            organizations_metadata=None,
    -            audit_resources=None,
    -            mfa_enabled=False,
    -            audit_metadata=Audit_Metadata(
    -                services_scanned=0,
    -                expected_checks=[],
    -                completed_checks=0,
    -                audit_progress=0,
    -            ),
    +        audit_info = set_mocked_aws_audit_info(
    +            audited_partition=AWS_GOV_CLOUD_PARTITION
             )
    -        assert get_global_region(audit_info) == "us-gov-east-1"
    +        assert get_global_region(audit_info) == AWS_REGION_GOV_CLOUD_US_EAST_1
     
         def test_aws_cn_get_global_region(self):
    -        audit_info = AWS_Audit_Info(
    -            session_config=None,
    -            original_session=None,
    -            audit_session=None,
    -            audited_account=None,
    -            audited_account_arn=None,
    -            audited_partition="aws-cn",
    -            audited_identity_arn=None,
    -            audited_user_id=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=None,
    -            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"
    +        audit_info = set_mocked_aws_audit_info(audited_partition=AWS_CHINA_PARTITION)
    +        assert get_global_region(audit_info) == AWS_REGION_CHINA_NORHT_1
     
         def test_aws_iso_get_global_region(self):
    -        audit_info = AWS_Audit_Info(
    -            session_config=None,
    -            original_session=None,
    -            audit_session=None,
    -            audited_account=None,
    -            audited_account_arn=None,
    -            audited_partition="aws-iso",
    -            audited_identity_arn=None,
    -            audited_user_id=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=None,
    -            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"
    +        audit_info = set_mocked_aws_audit_info(audited_partition=AWS_ISO_PARTITION)
    +        assert get_global_region(audit_info) == AWS_REGION_ISO_GLOBAL
     
         def test_get_available_aws_service_regions_with_us_east_1_audited(self):
    -        audited_regions = ["us-east-1"]
    -        audit_info = AWS_Audit_Info(
    -            session_config=None,
    -            original_session=None,
    -            audit_session=None,
    -            audited_account=None,
    -            audited_account_arn=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            audited_user_id=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=audited_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,
    -            ),
    -        )
    +        audit_info = set_mocked_aws_audit_info(audited_regions=[AWS_REGION_US_EAST_1])
    +
             with patch(
                 "prowler.providers.aws.aws_provider.parse_json_file",
                 return_value={
    @@ -799,13 +434,13 @@ def test_get_available_aws_service_regions_with_us_east_1_audited(self):
                                     "eu-north-1",
                                     "eu-south-1",
                                     "eu-south-2",
    -                                "eu-west-1",
    +                                AWS_REGION_EU_WEST_1,
                                     "eu-west-2",
                                     "eu-west-3",
                                     "me-central-1",
                                     "me-south-1",
                                     "sa-east-1",
    -                                "us-east-1",
    +                                AWS_REGION_US_EAST_1,
                                     "us-east-2",
                                     "us-west-1",
                                     "us-west-2",
    @@ -815,33 +450,13 @@ def test_get_available_aws_service_regions_with_us_east_1_audited(self):
                     }
                 },
             ):
    -            assert get_available_aws_service_regions("ec2", audit_info) == ["us-east-1"]
    +            assert get_available_aws_service_regions("ec2", audit_info) == {
    +                AWS_REGION_US_EAST_1
    +            }
     
         def test_get_available_aws_service_regions_with_all_regions_audited(self):
    -        audit_info = AWS_Audit_Info(
    -            session_config=None,
    -            original_session=None,
    -            audit_session=None,
    -            audited_account=None,
    -            audited_account_arn=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            audited_user_id=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=None,
    -            organizations_metadata=None,
    -            audit_resources=None,
    -            mfa_enabled=False,
    -            audit_metadata=Audit_Metadata(
    -                services_scanned=0,
    -                expected_checks=[],
    -                completed_checks=0,
    -                audit_progress=0,
    -            ),
    -        )
    +        audit_info = set_mocked_aws_audit_info()
    +
             with patch(
                 "prowler.providers.aws.aws_provider.parse_json_file",
                 return_value={
    @@ -856,13 +471,13 @@ def test_get_available_aws_service_regions_with_all_regions_audited(self):
                                     "eu-north-1",
                                     "eu-south-1",
                                     "eu-south-2",
    -                                "eu-west-1",
    +                                AWS_REGION_EU_WEST_1,
                                     "eu-west-2",
                                     "eu-west-3",
                                     "me-central-1",
                                     "me-south-1",
                                     "sa-east-1",
    -                                "us-east-1",
    +                                AWS_REGION_US_EAST_1,
                                     "us-east-2",
                                     "us-west-1",
                                     "us-west-2",
    diff --git a/tests/providers/aws/lib/credentials/credentials_test.py b/tests/providers/aws/lib/credentials/credentials_test.py
    index 84bbd3724bb..6397cc3d646 100644
    --- a/tests/providers/aws/lib/credentials/credentials_test.py
    +++ b/tests/providers/aws/lib/credentials/credentials_test.py
    @@ -3,7 +3,7 @@
     import boto3
     import botocore
     from mock import patch
    -from moto import mock_iam, mock_sts
    +from moto import mock_aws
     
     from prowler.providers.aws.lib.arn.arn import parse_iam_credentials_arn
     from prowler.providers.aws.lib.credentials.credentials import (
    @@ -41,8 +41,7 @@ def mock_get_caller_identity_gov_cloud(self, operation_name, kwarg):
     
     
     class Test_AWS_Credentials:
    -    @mock_sts
    -    @mock_iam
    +    @mock_aws
         def test_validate_credentials_commercial_partition_with_regions(self):
             # AWS Region for AWS COMMERCIAL
             aws_region = "eu-west-1"
    @@ -77,8 +76,7 @@ def test_validate_credentials_commercial_partition_with_regions(self):
             assert re.match("[0-9a-zA-Z]{20}", get_caller_identity["UserId"])
             assert get_caller_identity["Account"] == AWS_ACCOUNT_NUMBER
     
    -    @mock_sts
    -    @mock_iam
    +    @mock_aws
         def test_validate_credentials_commercial_partition_with_regions_none_and_profile_region_so_profile_region(
             self,
         ):
    @@ -115,8 +113,7 @@ def test_validate_credentials_commercial_partition_with_regions_none_and_profile
             assert re.match("[0-9a-zA-Z]{20}", get_caller_identity["UserId"])
             assert get_caller_identity["Account"] == AWS_ACCOUNT_NUMBER
     
    -    @mock_sts
    -    @mock_iam
    +    @mock_aws
         def test_validate_credentials_commercial_partition_with_0_regions_and_profile_region_so_profile_region(
             self,
         ):
    @@ -153,8 +150,7 @@ def test_validate_credentials_commercial_partition_with_0_regions_and_profile_re
             assert re.match("[0-9a-zA-Z]{20}", get_caller_identity["UserId"])
             assert get_caller_identity["Account"] == AWS_ACCOUNT_NUMBER
     
    -    @mock_sts
    -    @mock_iam
    +    @mock_aws
         def test_validate_credentials_commercial_partition_without_regions_and_profile_region_so_us_east_1(
             self,
         ):
    @@ -191,8 +187,7 @@ def test_validate_credentials_commercial_partition_without_regions_and_profile_r
             assert re.match("[0-9a-zA-Z]{20}", get_caller_identity["UserId"])
             assert get_caller_identity["Account"] == AWS_ACCOUNT_NUMBER
     
    -    @mock_sts
    -    @mock_iam
    +    @mock_aws
         def test_validate_credentials_commercial_partition_with_regions_none_and_profile_region_but_sts_endpoint_region(
             self,
         ):
    @@ -232,8 +227,7 @@ def test_validate_credentials_commercial_partition_with_regions_none_and_profile
             assert re.match("[0-9a-zA-Z]{20}", get_caller_identity["UserId"])
             assert get_caller_identity["Account"] == AWS_ACCOUNT_NUMBER
     
    -    @mock_sts
    -    @mock_iam
    +    @mock_aws
         def test_validate_credentials_china_partition_without_regions_and_profile_region_so_us_east_1(
             self,
         ):
    @@ -270,8 +264,7 @@ def test_validate_credentials_china_partition_without_regions_and_profile_region
             assert re.match("[0-9a-zA-Z]{20}", get_caller_identity["UserId"])
             assert get_caller_identity["Account"] == AWS_ACCOUNT_NUMBER
     
    -    @mock_sts
    -    @mock_iam
    +    @mock_aws
         @patch(
             "botocore.client.BaseClient._make_api_call", new=mock_get_caller_identity_china
         )
    @@ -312,8 +305,7 @@ def test_validate_credentials_china_partition(self):
             assert re.match("[0-9a-zA-Z]{20}", get_caller_identity["UserId"])
             assert get_caller_identity["Account"] == AWS_ACCOUNT_NUMBER
     
    -    @mock_sts
    -    @mock_iam
    +    @mock_aws
         @patch(
             "botocore.client.BaseClient._make_api_call", new=mock_get_caller_identity_china
         )
    @@ -359,8 +351,7 @@ def test_validate_credentials_china_partition_without_regions_but_sts_endpoint_r
             assert re.match("[0-9a-zA-Z]{20}", get_caller_identity["UserId"])
             assert get_caller_identity["Account"] == AWS_ACCOUNT_NUMBER
     
    -    @mock_sts
    -    @mock_iam
    +    @mock_aws
         @patch(
             "botocore.client.BaseClient._make_api_call",
             new=mock_get_caller_identity_gov_cloud,
    @@ -402,8 +393,7 @@ def test_validate_credentials_gov_cloud_partition(self):
             assert re.match("[0-9a-zA-Z]{20}", get_caller_identity["UserId"])
             assert get_caller_identity["Account"] == AWS_ACCOUNT_NUMBER
     
    -    @mock_sts
    -    @mock_iam
    +    @mock_aws
         @patch(
             "botocore.client.BaseClient._make_api_call",
             new=mock_get_caller_identity_gov_cloud,
    @@ -450,8 +440,7 @@ def test_validate_credentials_gov_cloud_partition_without_regions_but_sts_endpoi
             assert re.match("[0-9a-zA-Z]{20}", get_caller_identity["UserId"])
             assert get_caller_identity["Account"] == AWS_ACCOUNT_NUMBER
     
    -    @mock_iam
    -    @mock_sts
    +    @mock_aws
         def test_create_sts_session(self):
             aws_region = "eu-west-1"
             # Create a mock IAM user
    @@ -474,8 +463,7 @@ def test_create_sts_session(self):
             assert sts_client._endpoint._endpoint_prefix == "sts"
             assert sts_client._endpoint.host == f"https://sts.{aws_region}.amazonaws.com"
     
    -    @mock_iam
    -    @mock_sts
    +    @mock_aws
         def test_create_sts_session_gov_cloud(self):
             aws_region = "us-gov-east-1"
             # Create a mock IAM user
    @@ -498,8 +486,7 @@ def test_create_sts_session_gov_cloud(self):
             assert sts_client._endpoint._endpoint_prefix == "sts"
             assert sts_client._endpoint.host == f"https://sts.{aws_region}.amazonaws.com"
     
    -    @mock_iam
    -    @mock_sts
    +    @mock_aws
         def test_create_sts_session_china(self):
             aws_region = "cn-north-1"
             # Create a mock IAM user
    diff --git a/tests/providers/aws/lib/mutelist/mutelist_test.py b/tests/providers/aws/lib/mutelist/mutelist_test.py
    index b4697c44de6..8aef3eb92a3 100644
    --- a/tests/providers/aws/lib/mutelist/mutelist_test.py
    +++ b/tests/providers/aws/lib/mutelist/mutelist_test.py
    @@ -1,9 +1,8 @@
     import yaml
    -from boto3 import resource, session
    +from boto3 import resource
     from mock import MagicMock
    -from moto import mock_dynamodb, mock_s3
    +from moto import mock_aws
     
    -from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info
     from prowler.providers.aws.lib.mutelist.mutelist import (
         is_excepted,
         is_muted,
    @@ -14,50 +13,21 @@
         mutelist_findings,
         parse_mutelist_file,
     )
    -from prowler.providers.common.models import Audit_Metadata
     from tests.providers.aws.audit_info_utils import (
         AWS_ACCOUNT_NUMBER,
    +    AWS_REGION_EU_CENTRAL_1,
    +    AWS_REGION_EU_SOUTH_3,
         AWS_REGION_EU_WEST_1,
         AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
     )
     
     
    -class Test_Mutelist:
    -    # 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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=None,
    -            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
    -
    +class Test_Allowlist:
         # Test S3 mutelist
    -    @mock_s3
    +    @mock_aws
         def test_s3_mutelist(self):
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info()
             # Create bucket and upload mutelist yaml
             s3_resource = resource("s3", region_name=AWS_REGION_US_EAST_1)
             s3_resource.create_bucket(Bucket="test-mutelist")
    @@ -74,9 +44,9 @@ def test_s3_mutelist(self):
                 )
     
         # Test DynamoDB mutelist
    -    @mock_dynamodb
    +    @mock_aws
         def test_dynamo_mutelist(self):
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info()
             # Create table and put item
             dynamodb_resource = resource("dynamodb", region_name=AWS_REGION_US_EAST_1)
             table_name = "test-mutelist"
    @@ -118,9 +88,9 @@ def test_dynamo_mutelist(self):
                 )["Accounts"]["*"]["Checks"]["iam_user_hardware_mfa_enabled"]["Resources"]
             )
     
    -    @mock_dynamodb
    +    @mock_aws
         def test_dynamo_mutelist_with_tags(self):
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info()
             # Create table and put item
             dynamodb_resource = resource("dynamodb", region_name=AWS_REGION_US_EAST_1)
             table_name = "test-mutelist"
    @@ -163,10 +133,9 @@ def test_dynamo_mutelist_with_tags(self):
                 )["Accounts"]["*"]["Checks"]["*"]["Tags"]
             )
     
    -    # Mutelist tests
    -
    -    def test_mutelist_findings(self):
    -        # Mutelist example
    +    # Allowlist tests
    +    def test_mutelist_findings_only_wildcard(self):
    +        # Allowlist example
             mutelist = {
                 "Accounts": {
                     "*": {
    @@ -196,6 +165,44 @@ def test_mutelist_findings(self):
             assert len(muted_findings) == 1
             assert muted_findings[0].status == "MUTED"
     
    +    def test_mutelist_all_exceptions_empty(self):
    +        # Allowlist example
    +        mutelist = {
    +            "Accounts": {
    +                "*": {
    +                    "Checks": {
    +                        "*": {
    +                            "Tags": ["*"],
    +                            "Regions": [AWS_REGION_US_EAST_1],
    +                            "Resources": ["*"],
    +                            "Exceptions": {
    +                                "Tags": [],
    +                                "Regions": [],
    +                                "Accounts": [],
    +                                "Resources": [],
    +                            },
    +                        }
    +                    }
    +                }
    +            }
    +        }
    +
    +        # Check Findings
    +        check_findings = []
    +        finding_1 = MagicMock
    +        finding_1.check_metadata = MagicMock
    +        finding_1.check_metadata.CheckID = "check_test"
    +        finding_1.status = "FAIL"
    +        finding_1.region = AWS_REGION_US_EAST_1
    +        finding_1.resource_id = "prowler"
    +        finding_1.resource_tags = []
    +
    +        check_findings.append(finding_1)
    +
    +        muted_findings = mutelist_findings(mutelist, AWS_ACCOUNT_NUMBER, check_findings)
    +        assert len(muted_findings) == 1
    +        assert muted_findings[0].status == "WARNING"
    +
         def test_is_muted_with_everything_excepted(self):
             mutelist = {
                 "Accounts": {
    @@ -235,12 +242,6 @@ def test_is_muted_with_default_mutelist(self):
                                 "Tags": ["*"],
                                 "Regions": ["*"],
                                 "Resources": ["*"],
    -                            "Exceptions": {
    -                                "Tags": [],
    -                                "Regions": [],
    -                                "Accounts": [],
    -                                "Resources": [],
    -                            },
                             }
                         }
                     }
    @@ -256,8 +257,41 @@ def test_is_muted_with_default_mutelist(self):
                 "",
             )
     
    +    def test_is_muted_with_default_mutelist_with_tags(self):
    +        mutelist = {
    +            "Accounts": {
    +                "*": {
    +                    "Checks": {
    +                        "*": {
    +                            "Regions": ["*"],
    +                            "Resources": ["*"],
    +                            "Tags": ["Compliance=allow"],
    +                        }
    +                    }
    +                }
    +            }
    +        }
    +
    +        assert is_muted(
    +            mutelist,
    +            AWS_ACCOUNT_NUMBER,
    +            "athena_1",
    +            AWS_REGION_US_EAST_1,
    +            "prowler",
    +            "Compliance=allow",
    +        )
    +
    +        assert not is_muted(
    +            mutelist,
    +            AWS_ACCOUNT_NUMBER,
    +            "athena_1",
    +            AWS_REGION_US_EAST_1,
    +            "prowler",
    +            "Compliance=deny",
    +        )
    +
         def test_is_muted(self):
    -        # Mutelist example
    +        # Allowlist example
             mutelist = {
                 "Accounts": {
                     "*": {
    @@ -474,6 +508,155 @@ def test_is_muted_all_and_single_account(self):
                 )
             )
     
    +    def test_is_muted_all_and_single_account_with_different_resources(self):
    +        # Allowlist example
    +        mutelist = {
    +            "Accounts": {
    +                "*": {
    +                    "Checks": {
    +                        "check_test_1": {
    +                            "Regions": ["*"],
    +                            "Resources": ["resource_1", "resource_2"],
    +                        },
    +                    }
    +                },
    +                AWS_ACCOUNT_NUMBER: {
    +                    "Checks": {
    +                        "check_test_1": {
    +                            "Regions": ["*"],
    +                            "Resources": ["resource_3"],
    +                        }
    +                    }
    +                },
    +            }
    +        }
    +
    +        assert is_muted(
    +            mutelist,
    +            "111122223333",
    +            "check_test_1",
    +            AWS_REGION_US_EAST_1,
    +            "resource_1",
    +            "",
    +        )
    +
    +        assert is_muted(
    +            mutelist,
    +            "111122223333",
    +            "check_test_1",
    +            AWS_REGION_US_EAST_1,
    +            "resource_2",
    +            "",
    +        )
    +
    +        assert not is_muted(
    +            mutelist,
    +            "111122223333",
    +            "check_test_1",
    +            AWS_REGION_US_EAST_1,
    +            "resource_3",
    +            "",
    +        )
    +
    +        assert is_muted(
    +            mutelist,
    +            AWS_ACCOUNT_NUMBER,
    +            "check_test_1",
    +            AWS_REGION_US_EAST_1,
    +            "resource_3",
    +            "",
    +        )
    +
    +        assert is_muted(
    +            mutelist,
    +            AWS_ACCOUNT_NUMBER,
    +            "check_test_1",
    +            AWS_REGION_US_EAST_1,
    +            "resource_2",
    +            "",
    +        )
    +
    +    def test_is_muted_all_and_single_account_with_different_resources_and_exceptions(
    +        self,
    +    ):
    +        # Allowlist example
    +        mutelist = {
    +            "Accounts": {
    +                "*": {
    +                    "Checks": {
    +                        "check_test_1": {
    +                            "Regions": ["*"],
    +                            "Resources": ["resource_1", "resource_2"],
    +                            "Exceptions": {"Regions": [AWS_REGION_US_EAST_1]},
    +                        },
    +                    }
    +                },
    +                AWS_ACCOUNT_NUMBER: {
    +                    "Checks": {
    +                        "check_test_1": {
    +                            "Regions": ["*"],
    +                            "Resources": ["resource_3"],
    +                            "Exceptions": {"Regions": [AWS_REGION_EU_WEST_1]},
    +                        }
    +                    }
    +                },
    +            }
    +        }
    +
    +        assert not is_muted(
    +            mutelist,
    +            AWS_ACCOUNT_NUMBER,
    +            "check_test_1",
    +            AWS_REGION_US_EAST_1,
    +            "resource_2",
    +            "",
    +        )
    +
    +        assert not is_muted(
    +            mutelist,
    +            "111122223333",
    +            "check_test_1",
    +            AWS_REGION_US_EAST_1,
    +            "resource_1",
    +            "",
    +        )
    +
    +        assert is_muted(
    +            mutelist,
    +            "111122223333",
    +            "check_test_1",
    +            AWS_REGION_EU_WEST_1,
    +            "resource_2",
    +            "",
    +        )
    +
    +        assert not is_muted(
    +            mutelist,
    +            "111122223333",
    +            "check_test_1",
    +            AWS_REGION_US_EAST_1,
    +            "resource_3",
    +            "",
    +        )
    +
    +        assert is_muted(
    +            mutelist,
    +            AWS_ACCOUNT_NUMBER,
    +            "check_test_1",
    +            AWS_REGION_US_EAST_1,
    +            "resource_3",
    +            "",
    +        )
    +
    +        assert not is_muted(
    +            mutelist,
    +            AWS_ACCOUNT_NUMBER,
    +            "check_test_1",
    +            AWS_REGION_EU_WEST_1,
    +            "resource_3",
    +            "",
    +        )
    +
         def test_is_muted_single_account(self):
             mutelist = {
                 "Accounts": {
    @@ -747,6 +930,111 @@ def test_is_muted_tags(self):
                 )
             )
     
    +    def test_is_muted_specific_account_with_other_account_excepted(self):
    +        # Allowlist example
    +        mutelist = {
    +            "Accounts": {
    +                AWS_ACCOUNT_NUMBER: {
    +                    "Checks": {
    +                        "check_test": {
    +                            "Regions": [AWS_REGION_EU_WEST_1],
    +                            "Resources": ["*"],
    +                            "Tags": [],
    +                            "Exceptions": {"Accounts": ["111122223333"]},
    +                        }
    +                    }
    +                }
    +            }
    +        }
    +
    +        assert is_muted(
    +            mutelist,
    +            AWS_ACCOUNT_NUMBER,
    +            "check_test",
    +            AWS_REGION_EU_WEST_1,
    +            "prowler",
    +            "environment=dev",
    +        )
    +
    +        assert not is_muted(
    +            mutelist,
    +            "111122223333",
    +            "check_test",
    +            AWS_REGION_EU_WEST_1,
    +            "prowler",
    +            "environment=dev",
    +        )
    +
    +    def test_is_muted_complex_mutelist(self):
    +        # Allowlist example
    +        mutelist = {
    +            "Accounts": {
    +                "*": {
    +                    "Checks": {
    +                        "s3_bucket_object_versioning": {
    +                            "Regions": [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1],
    +                            "Resources": ["ci-logs", "logs", ".+-logs"],
    +                        },
    +                        "ecs_task_definitions_no_environment_secrets": {
    +                            "Regions": ["*"],
    +                            "Resources": ["*"],
    +                            "Exceptions": {
    +                                "Accounts": [AWS_ACCOUNT_NUMBER],
    +                                "Regions": [
    +                                    AWS_REGION_EU_WEST_1,
    +                                    AWS_REGION_EU_SOUTH_3,
    +                                ],
    +                            },
    +                        },
    +                        "*": {
    +                            "Regions": ["*"],
    +                            "Resources": ["*"],
    +                            "Tags": ["environment=dev"],
    +                        },
    +                    }
    +                },
    +                AWS_ACCOUNT_NUMBER: {
    +                    "Checks": {
    +                        "*": {
    +                            "Regions": ["*"],
    +                            "Resources": ["*"],
    +                            "Exceptions": {
    +                                "Resources": ["test"],
    +                                "Tags": ["environment=prod"],
    +                            },
    +                        }
    +                    }
    +                },
    +            }
    +        }
    +
    +        assert is_muted(
    +            mutelist,
    +            AWS_ACCOUNT_NUMBER,
    +            "test_check",
    +            AWS_REGION_EU_WEST_1,
    +            "prowler-logs",
    +            "environment=dev",
    +        )
    +
    +        assert is_muted(
    +            mutelist,
    +            AWS_ACCOUNT_NUMBER,
    +            "ecs_task_definitions_no_environment_secrets",
    +            AWS_REGION_EU_WEST_1,
    +            "prowler",
    +            "environment=dev",
    +        )
    +
    +        assert is_muted(
    +            mutelist,
    +            AWS_ACCOUNT_NUMBER,
    +            "s3_bucket_object_versioning",
    +            AWS_REGION_EU_WEST_1,
    +            "prowler-logs",
    +            "environment=dev",
    +        )
    +
         def test_is_muted_in_tags(self):
             mutelist_tags = ["environment=dev", "project=prowler"]
     
    @@ -821,6 +1109,107 @@ def test_is_excepted(self):
                 "environment=test",
             )
     
    +    def test_is_excepted_only_in_account(self):
    +        # Allowlist example
    +        exceptions = {
    +            "Accounts": [AWS_ACCOUNT_NUMBER],
    +            "Regions": [],
    +            "Resources": [],
    +            "Tags": [],
    +        }
    +
    +        assert is_excepted(
    +            exceptions,
    +            AWS_ACCOUNT_NUMBER,
    +            "eu-central-1",
    +            "test",
    +            "environment=test",
    +        )
    +
    +    def test_is_excepted_only_in_region(self):
    +        # Allowlist example
    +        exceptions = {
    +            "Accounts": [],
    +            "Regions": [AWS_REGION_EU_CENTRAL_1, AWS_REGION_EU_SOUTH_3],
    +            "Resources": [],
    +            "Tags": [],
    +        }
    +
    +        assert is_excepted(
    +            exceptions,
    +            AWS_ACCOUNT_NUMBER,
    +            AWS_REGION_EU_CENTRAL_1,
    +            "test",
    +            "environment=test",
    +        )
    +
    +    def test_is_excepted_only_in_resources(self):
    +        # Allowlist example
    +        exceptions = {
    +            "Accounts": [],
    +            "Regions": [],
    +            "Resources": ["resource_1"],
    +            "Tags": [],
    +        }
    +
    +        assert is_excepted(
    +            exceptions,
    +            AWS_ACCOUNT_NUMBER,
    +            AWS_REGION_EU_CENTRAL_1,
    +            "resource_1",
    +            "environment=test",
    +        )
    +
    +    def test_is_excepted_only_in_tags(self):
    +        # Allowlist example
    +        exceptions = {
    +            "Accounts": [],
    +            "Regions": [],
    +            "Resources": [],
    +            "Tags": ["environment=test"],
    +        }
    +
    +        assert is_excepted(
    +            exceptions,
    +            AWS_ACCOUNT_NUMBER,
    +            AWS_REGION_EU_CENTRAL_1,
    +            "resource_1",
    +            "environment=test",
    +        )
    +
    +    def test_is_excepted_in_account_and_tags(self):
    +        # Allowlist example
    +        exceptions = {
    +            "Accounts": [AWS_ACCOUNT_NUMBER],
    +            "Regions": [],
    +            "Resources": [],
    +            "Tags": ["environment=test"],
    +        }
    +
    +        assert is_excepted(
    +            exceptions,
    +            AWS_ACCOUNT_NUMBER,
    +            AWS_REGION_EU_CENTRAL_1,
    +            "resource_1",
    +            "environment=test",
    +        )
    +
    +        assert not is_excepted(
    +            exceptions,
    +            "111122223333",
    +            AWS_REGION_EU_CENTRAL_1,
    +            "resource_1",
    +            "environment=test",
    +        )
    +
    +        assert not is_excepted(
    +            exceptions,
    +            "111122223333",
    +            AWS_REGION_EU_CENTRAL_1,
    +            "resource_1",
    +            "environment=dev",
    +        )
    +
         def test_is_excepted_all_wildcard(self):
             exceptions = {
                 "Accounts": ["*"],
    @@ -867,6 +1256,22 @@ def test_is_not_excepted(self):
                 "environment=pro",
             )
     
    +    def test_is_excepted_all_empty(self):
    +        exceptions = {
    +            "Accounts": [],
    +            "Regions": [],
    +            "Resources": [],
    +            "Tags": [],
    +        }
    +
    +        assert not is_excepted(
    +            exceptions,
    +            AWS_ACCOUNT_NUMBER,
    +            "eu-south-2",
    +            "test",
    +            "environment=test",
    +        )
    +
         def test_is_muted_in_resource(self):
             mutelist_resources = ["prowler", "^test", "prowler-pro"]
     
    diff --git a/tests/providers/aws/lib/organizations/organizations_test.py b/tests/providers/aws/lib/organizations/organizations_test.py
    index 53953cfdf26..5a5fefe4f84 100644
    --- a/tests/providers/aws/lib/organizations/organizations_test.py
    +++ b/tests/providers/aws/lib/organizations/organizations_test.py
    @@ -1,23 +1,25 @@
     import json
     
     import boto3
    -from moto import mock_iam, mock_organizations, mock_sts
    +from moto import mock_aws
     
    +from prowler.providers.aws.lib.audit_info.models import AWS_Organizations_Info
     from prowler.providers.aws.lib.organizations.organizations import (
         get_organizations_metadata,
    +    parse_organizations_metadata,
    +)
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_ACCOUNT_NUMBER,
    +    AWS_REGION_US_EAST_1,
     )
    -
    -AWS_ACCOUNT_NUMBER = "123456789012"
     
     
     class Test_AWS_Organizations:
    -    @mock_organizations
    -    @mock_sts
    -    @mock_iam
    +    @mock_aws
         def test_organizations(self):
    -        client = boto3.client("organizations", region_name="us-east-1")
    -        iam_client = boto3.client("iam", region_name="us-east-1")
    -        sts_client = boto3.client("sts", region_name="us-east-1")
    +        client = boto3.client("organizations", region_name=AWS_REGION_US_EAST_1)
    +        iam_client = boto3.client("iam", region_name=AWS_REGION_US_EAST_1)
    +        sts_client = boto3.client("sts", region_name=AWS_REGION_US_EAST_1)
     
             mockname = "mock-account"
             mockdomain = "moto-example.org"
    @@ -49,7 +51,8 @@ def test_organizations(self):
                 RoleArn=iam_role_arn, RoleSessionName=session_name
             )
     
    -        org = get_organizations_metadata(account_id, assumed_role)
    +        metadata, tags = get_organizations_metadata(account_id, assumed_role)
    +        org = parse_organizations_metadata(metadata, tags)
     
             assert org.account_details_email == mockemail
             assert org.account_details_name == mockname
    @@ -58,4 +61,26 @@ def test_organizations(self):
                 == f"arn:aws:organizations::{AWS_ACCOUNT_NUMBER}:account/{org_id}/{account_id}"
             )
             assert org.account_details_org == org_id
    -        assert org.account_details_tags == "key:value,"
    +        assert org.account_details_tags == "key:value"
    +
    +    def test_parse_organizations_metadata(self):
    +        tags = {"Tags": [{"Key": "test-key", "Value": "test-value"}]}
    +        name = "test-name"
    +        email = "test-email"
    +        organization_name = "test-org"
    +        arn = f"arn:aws:organizations::{AWS_ACCOUNT_NUMBER}:organization/{organization_name}"
    +        metadata = {
    +            "Account": {
    +                "Name": name,
    +                "Email": email,
    +                "Arn": arn,
    +            }
    +        }
    +        org = parse_organizations_metadata(metadata, tags)
    +
    +        assert isinstance(org, AWS_Organizations_Info)
    +        assert org.account_details_email == email
    +        assert org.account_details_name == name
    +        assert org.account_details_arn == arn
    +        assert org.account_details_org == organization_name
    +        assert org.account_details_tags == "test-key:test-value"
    diff --git a/tests/providers/aws/lib/policy_condition_parser/policy_condition_parser_test.py b/tests/providers/aws/lib/policy_condition_parser/policy_condition_parser_test.py
    index 4e8e71ccecb..c7b000b5d69 100644
    --- a/tests/providers/aws/lib/policy_condition_parser/policy_condition_parser_test.py
    +++ b/tests/providers/aws/lib/policy_condition_parser/policy_condition_parser_test.py
    @@ -1,5 +1,5 @@
     from prowler.providers.aws.lib.policy_condition_parser.policy_condition_parser import (
    -    is_account_only_allowed_in_condition,
    +    is_condition_block_restrictive,
     )
     
     TRUSTED_AWS_ACCOUNT_NUMBER = "123456789012"
    @@ -12,7 +12,7 @@ def test_condition_parser_string_equals_aws_SourceAccount_list(self):
             condition_statement = {
                 "StringEquals": {"aws:SourceAccount": [TRUSTED_AWS_ACCOUNT_NUMBER]}
             }
    -        assert is_account_only_allowed_in_condition(
    +        assert is_condition_block_restrictive(
                 condition_statement, TRUSTED_AWS_ACCOUNT_NUMBER
             )
     
    @@ -25,7 +25,7 @@ def test_condition_parser_string_equals_aws_SourceAccount_list_not_valid(self):
                     ]
                 }
             }
    -        assert not is_account_only_allowed_in_condition(
    +        assert not is_condition_block_restrictive(
                 condition_statement, TRUSTED_AWS_ACCOUNT_NUMBER
             )
     
    @@ -33,7 +33,7 @@ def test_condition_parser_string_equals_aws_SourceAccount_str(self):
             condition_statement = {
                 "StringEquals": {"aws:SourceAccount": TRUSTED_AWS_ACCOUNT_NUMBER}
             }
    -        assert is_account_only_allowed_in_condition(
    +        assert is_condition_block_restrictive(
                 condition_statement, TRUSTED_AWS_ACCOUNT_NUMBER
             )
     
    @@ -41,7 +41,7 @@ def test_condition_parser_string_equals_aws_SourceAccount_str_not_valid(self):
             condition_statement = {
                 "StringEquals": {"aws:SourceAccount": NON_TRUSTED_AWS_ACCOUNT_NUMBER}
             }
    -        assert not is_account_only_allowed_in_condition(
    +        assert not is_condition_block_restrictive(
                 condition_statement, TRUSTED_AWS_ACCOUNT_NUMBER
             )
     
    @@ -49,7 +49,7 @@ def test_condition_parser_string_like_aws_SourceAccount_list(self):
             condition_statement = {
                 "StringLike": {"aws:SourceAccount": [TRUSTED_AWS_ACCOUNT_NUMBER]}
             }
    -        assert is_account_only_allowed_in_condition(
    +        assert is_condition_block_restrictive(
                 condition_statement, TRUSTED_AWS_ACCOUNT_NUMBER
             )
     
    @@ -62,7 +62,7 @@ def test_condition_parser_string_like_aws_SourceAccount_list_not_valid(self):
                     ]
                 }
             }
    -        assert not is_account_only_allowed_in_condition(
    +        assert not is_condition_block_restrictive(
                 condition_statement, TRUSTED_AWS_ACCOUNT_NUMBER
             )
     
    @@ -70,7 +70,7 @@ def test_condition_parser_string_like_aws_SourceAccount_str(self):
             condition_statement = {
                 "StringLike": {"aws:SourceAccount": TRUSTED_AWS_ACCOUNT_NUMBER}
             }
    -        assert is_account_only_allowed_in_condition(
    +        assert is_condition_block_restrictive(
                 condition_statement, TRUSTED_AWS_ACCOUNT_NUMBER
             )
     
    @@ -78,7 +78,7 @@ def test_condition_parser_string_like_aws_SourceAccount_str_not_valid(self):
             condition_statement = {
                 "StringLike": {"aws:SourceAccount": NON_TRUSTED_AWS_ACCOUNT_NUMBER}
             }
    -        assert not is_account_only_allowed_in_condition(
    +        assert not is_condition_block_restrictive(
                 condition_statement, TRUSTED_AWS_ACCOUNT_NUMBER
             )
     
    @@ -86,7 +86,7 @@ def test_condition_parser_string_equals_aws_SourceOwner_str(self):
             condition_statement = {
                 "StringEquals": {"aws:SourceOwner": TRUSTED_AWS_ACCOUNT_NUMBER}
             }
    -        assert is_account_only_allowed_in_condition(
    +        assert is_condition_block_restrictive(
                 condition_statement, TRUSTED_AWS_ACCOUNT_NUMBER
             )
     
    @@ -94,7 +94,7 @@ def test_condition_parser_string_equals_aws_SourceOwner_str_not_valid(self):
             condition_statement = {
                 "StringEquals": {"aws:SourceOwner": NON_TRUSTED_AWS_ACCOUNT_NUMBER}
             }
    -        assert not is_account_only_allowed_in_condition(
    +        assert not is_condition_block_restrictive(
                 condition_statement, TRUSTED_AWS_ACCOUNT_NUMBER
             )
     
    @@ -102,7 +102,7 @@ def test_condition_parser_string_equals_aws_SourceOwner_list(self):
             condition_statement = {
                 "StringEquals": {"aws:SourceOwner": [TRUSTED_AWS_ACCOUNT_NUMBER]}
             }
    -        assert is_account_only_allowed_in_condition(
    +        assert is_condition_block_restrictive(
                 condition_statement, TRUSTED_AWS_ACCOUNT_NUMBER
             )
     
    @@ -115,7 +115,7 @@ def test_condition_parser_string_equals_aws_SourceOwner_list_not_valid(self):
                     ]
                 }
             }
    -        assert not is_account_only_allowed_in_condition(
    +        assert not is_condition_block_restrictive(
                 condition_statement, TRUSTED_AWS_ACCOUNT_NUMBER
             )
     
    @@ -123,7 +123,7 @@ def test_condition_parser_string_like_aws_SourceOwner_list(self):
             condition_statement = {
                 "StringLike": {"aws:SourceOwner": [TRUSTED_AWS_ACCOUNT_NUMBER]}
             }
    -        assert is_account_only_allowed_in_condition(
    +        assert is_condition_block_restrictive(
                 condition_statement, TRUSTED_AWS_ACCOUNT_NUMBER
             )
     
    @@ -136,7 +136,7 @@ def test_condition_parser_string_like_aws_SourceOwner_list_not_valid(self):
                     ]
                 }
             }
    -        assert not is_account_only_allowed_in_condition(
    +        assert not is_condition_block_restrictive(
                 condition_statement, TRUSTED_AWS_ACCOUNT_NUMBER
             )
     
    @@ -144,7 +144,7 @@ def test_condition_parser_string_like_aws_SourceOwner_str(self):
             condition_statement = {
                 "StringLike": {"aws:SourceOwner": TRUSTED_AWS_ACCOUNT_NUMBER}
             }
    -        assert is_account_only_allowed_in_condition(
    +        assert is_condition_block_restrictive(
                 condition_statement, TRUSTED_AWS_ACCOUNT_NUMBER
             )
     
    @@ -152,7 +152,7 @@ def test_condition_parser_string_like_aws_SourceOwner_str_not_valid(self):
             condition_statement = {
                 "StringLike": {"aws:SourceOwner": NON_TRUSTED_AWS_ACCOUNT_NUMBER}
             }
    -        assert not is_account_only_allowed_in_condition(
    +        assert not is_condition_block_restrictive(
                 condition_statement, TRUSTED_AWS_ACCOUNT_NUMBER
             )
     
    @@ -160,7 +160,7 @@ def test_condition_parser_string_equals_s3_ResourceAccount_list(self):
             condition_statement = {
                 "StringEquals": {"s3:ResourceAccount": [TRUSTED_AWS_ACCOUNT_NUMBER]}
             }
    -        assert is_account_only_allowed_in_condition(
    +        assert is_condition_block_restrictive(
                 condition_statement, TRUSTED_AWS_ACCOUNT_NUMBER
             )
     
    @@ -173,7 +173,7 @@ def test_condition_parser_string_equals_s3_ResourceAccount_list_not_valid(self):
                     ]
                 }
             }
    -        assert not is_account_only_allowed_in_condition(
    +        assert not is_condition_block_restrictive(
                 condition_statement, TRUSTED_AWS_ACCOUNT_NUMBER
             )
     
    @@ -181,7 +181,7 @@ def test_condition_parser_string_equals_s3_ResourceAccount_str(self):
             condition_statement = {
                 "StringEquals": {"s3:ResourceAccount": TRUSTED_AWS_ACCOUNT_NUMBER}
             }
    -        assert is_account_only_allowed_in_condition(
    +        assert is_condition_block_restrictive(
                 condition_statement, TRUSTED_AWS_ACCOUNT_NUMBER
             )
     
    @@ -189,7 +189,7 @@ def test_condition_parser_string_equals_s3_ResourceAccount_str_not_valid(self):
             condition_statement = {
                 "StringEquals": {"s3:ResourceAccount": NON_TRUSTED_AWS_ACCOUNT_NUMBER}
             }
    -        assert not is_account_only_allowed_in_condition(
    +        assert not is_condition_block_restrictive(
                 condition_statement, TRUSTED_AWS_ACCOUNT_NUMBER
             )
     
    @@ -197,7 +197,7 @@ def test_condition_parser_string_equals_aws_PrincipalAccount_list(self):
             condition_statement = {
                 "StringEquals": {"aws:PrincipalAccount": [TRUSTED_AWS_ACCOUNT_NUMBER]}
             }
    -        assert is_account_only_allowed_in_condition(
    +        assert is_condition_block_restrictive(
                 condition_statement, TRUSTED_AWS_ACCOUNT_NUMBER
             )
     
    @@ -210,7 +210,7 @@ def test_condition_parser_string_equals_aws_PrincipalAccount_list_not_valid(self
                     ]
                 }
             }
    -        assert not is_account_only_allowed_in_condition(
    +        assert not is_condition_block_restrictive(
                 condition_statement, TRUSTED_AWS_ACCOUNT_NUMBER
             )
     
    @@ -218,7 +218,7 @@ def test_condition_parser_string_equals_aws_PrincipalAccount_str(self):
             condition_statement = {
                 "StringEquals": {"aws:PrincipalAccount": TRUSTED_AWS_ACCOUNT_NUMBER}
             }
    -        assert is_account_only_allowed_in_condition(
    +        assert is_condition_block_restrictive(
                 condition_statement, TRUSTED_AWS_ACCOUNT_NUMBER
             )
     
    @@ -226,7 +226,7 @@ def test_condition_parser_string_equals_aws_PrincipalAccount_str_not_valid(self)
             condition_statement = {
                 "StringEquals": {"aws:PrincipalAccount": NON_TRUSTED_AWS_ACCOUNT_NUMBER}
             }
    -        assert not is_account_only_allowed_in_condition(
    +        assert not is_condition_block_restrictive(
                 condition_statement, TRUSTED_AWS_ACCOUNT_NUMBER
             )
     
    @@ -236,7 +236,7 @@ def test_condition_parser_string_equals_aws_SourceArn_str(self):
                     "aws:SourceArn": f"arn:aws:cloudtrail:*:{TRUSTED_AWS_ACCOUNT_NUMBER}:trail/*"
                 }
             }
    -        assert is_account_only_allowed_in_condition(
    +        assert is_condition_block_restrictive(
                 condition_statement, TRUSTED_AWS_ACCOUNT_NUMBER
             )
     
    @@ -246,7 +246,7 @@ def test_condition_parser_string_equals_aws_SourceArn_str_not_valid(self):
                     "aws:SourceArn": f"arn:aws:cloudtrail:*:{NON_TRUSTED_AWS_ACCOUNT_NUMBER}:trail/*"
                 }
             }
    -        assert not is_account_only_allowed_in_condition(
    +        assert not is_condition_block_restrictive(
                 condition_statement, TRUSTED_AWS_ACCOUNT_NUMBER
             )
     
    @@ -254,7 +254,7 @@ def test_condition_parser_string_like_aws_PrincipalAccount_list(self):
             condition_statement = {
                 "StringLike": {"aws:PrincipalAccount": [TRUSTED_AWS_ACCOUNT_NUMBER]}
             }
    -        assert is_account_only_allowed_in_condition(
    +        assert is_condition_block_restrictive(
                 condition_statement, TRUSTED_AWS_ACCOUNT_NUMBER
             )
     
    @@ -267,7 +267,7 @@ def test_condition_parser_string_like_aws_PrincipalAccount_list_not_valid(self):
                     ]
                 }
             }
    -        assert not is_account_only_allowed_in_condition(
    +        assert not is_condition_block_restrictive(
                 condition_statement, TRUSTED_AWS_ACCOUNT_NUMBER
             )
     
    @@ -275,7 +275,7 @@ def test_condition_parser_string_like_aws_PrincipalAccount_str(self):
             condition_statement = {
                 "StringLike": {"aws:PrincipalAccount": TRUSTED_AWS_ACCOUNT_NUMBER}
             }
    -        assert is_account_only_allowed_in_condition(
    +        assert is_condition_block_restrictive(
                 condition_statement, TRUSTED_AWS_ACCOUNT_NUMBER
             )
     
    @@ -283,7 +283,7 @@ def test_condition_parser_string_like_aws_PrincipalAccount_str_not_valid(self):
             condition_statement = {
                 "StringLike": {"aws:PrincipalAccount": NON_TRUSTED_AWS_ACCOUNT_NUMBER}
             }
    -        assert not is_account_only_allowed_in_condition(
    +        assert not is_condition_block_restrictive(
                 condition_statement, TRUSTED_AWS_ACCOUNT_NUMBER
             )
     
    @@ -296,7 +296,7 @@ def test_condition_parser_arn_like_aws_SourceArn_list(self):
                 }
             }
     
    -        assert is_account_only_allowed_in_condition(
    +        assert is_condition_block_restrictive(
                 condition_statement, TRUSTED_AWS_ACCOUNT_NUMBER
             )
     
    @@ -310,7 +310,7 @@ def test_condition_parser_arn_like_aws_SourceArn_list_not_valid(self):
                 }
             }
     
    -        assert not is_account_only_allowed_in_condition(
    +        assert not is_condition_block_restrictive(
                 condition_statement, TRUSTED_AWS_ACCOUNT_NUMBER
             )
     
    @@ -321,7 +321,7 @@ def test_condition_parser_arn_like_aws_SourceArn_str(self):
                 }
             }
     
    -        assert is_account_only_allowed_in_condition(
    +        assert is_condition_block_restrictive(
                 condition_statement, TRUSTED_AWS_ACCOUNT_NUMBER
             )
     
    @@ -332,7 +332,7 @@ def test_condition_parser_arn_like_aws_SourceArn_str_not_valid(self):
                 }
             }
     
    -        assert not is_account_only_allowed_in_condition(
    +        assert not is_condition_block_restrictive(
                 condition_statement, TRUSTED_AWS_ACCOUNT_NUMBER
             )
     
    @@ -345,7 +345,7 @@ def test_condition_parser_arn_like_aws_PrincipalArn_list(self):
                 }
             }
     
    -        assert is_account_only_allowed_in_condition(
    +        assert is_condition_block_restrictive(
                 condition_statement, TRUSTED_AWS_ACCOUNT_NUMBER
             )
     
    @@ -359,7 +359,7 @@ def test_condition_parser_arn_like_aws_PrincipalArn_list_not_valid(self):
                 }
             }
     
    -        assert not is_account_only_allowed_in_condition(
    +        assert not is_condition_block_restrictive(
                 condition_statement, TRUSTED_AWS_ACCOUNT_NUMBER
             )
     
    @@ -370,7 +370,7 @@ def test_condition_parser_arn_like_aws_PrincipalArn_str(self):
                 }
             }
     
    -        assert is_account_only_allowed_in_condition(
    +        assert is_condition_block_restrictive(
                 condition_statement, TRUSTED_AWS_ACCOUNT_NUMBER
             )
     
    @@ -381,7 +381,7 @@ def test_condition_parser_arn_like_aws_PrincipalArn_str_not_valid(self):
                 }
             }
     
    -        assert not is_account_only_allowed_in_condition(
    +        assert not is_condition_block_restrictive(
                 condition_statement, TRUSTED_AWS_ACCOUNT_NUMBER
             )
     
    @@ -394,7 +394,7 @@ def test_condition_parser_arn_equals_aws_SourceArn_list(self):
                 }
             }
     
    -        assert is_account_only_allowed_in_condition(
    +        assert is_condition_block_restrictive(
                 condition_statement, TRUSTED_AWS_ACCOUNT_NUMBER
             )
     
    @@ -408,7 +408,7 @@ def test_condition_parser_arn_equals_aws_SourceArn_list_not_valid(self):
                 }
             }
     
    -        assert not is_account_only_allowed_in_condition(
    +        assert not is_condition_block_restrictive(
                 condition_statement, TRUSTED_AWS_ACCOUNT_NUMBER
             )
     
    @@ -419,7 +419,7 @@ def test_condition_parser_arn_equals_aws_SourceArn_str(self):
                 }
             }
     
    -        assert is_account_only_allowed_in_condition(
    +        assert is_condition_block_restrictive(
                 condition_statement, TRUSTED_AWS_ACCOUNT_NUMBER
             )
     
    @@ -430,7 +430,7 @@ def test_condition_parser_arn_equals_aws_SourceArn_str_not_valid(self):
                 }
             }
     
    -        assert not is_account_only_allowed_in_condition(
    +        assert not is_condition_block_restrictive(
                 condition_statement, TRUSTED_AWS_ACCOUNT_NUMBER
             )
     
    @@ -443,7 +443,7 @@ def test_condition_parser_arn_equals_aws_PrincipalArn_list(self):
                 }
             }
     
    -        assert is_account_only_allowed_in_condition(
    +        assert is_condition_block_restrictive(
                 condition_statement, TRUSTED_AWS_ACCOUNT_NUMBER
             )
     
    @@ -457,7 +457,7 @@ def test_condition_parser_arn_equals_aws_PrincipalArn_list_not_valid(self):
                 }
             }
     
    -        assert not is_account_only_allowed_in_condition(
    +        assert not is_condition_block_restrictive(
                 condition_statement, TRUSTED_AWS_ACCOUNT_NUMBER
             )
     
    @@ -468,7 +468,7 @@ def test_condition_parser_arn_equals_aws_PrincipalArn_str(self):
                 }
             }
     
    -        assert is_account_only_allowed_in_condition(
    +        assert is_condition_block_restrictive(
                 condition_statement, TRUSTED_AWS_ACCOUNT_NUMBER
             )
     
    @@ -479,7 +479,7 @@ def test_condition_parser_arn_equals_aws_PrincipalArn_str_not_valid(self):
                 }
             }
     
    -        assert not is_account_only_allowed_in_condition(
    +        assert not is_condition_block_restrictive(
                 condition_statement, TRUSTED_AWS_ACCOUNT_NUMBER
             )
     
    @@ -492,7 +492,7 @@ def test_condition_parser_string_like_aws_SourceArn_list(self):
                 }
             }
     
    -        assert is_account_only_allowed_in_condition(
    +        assert is_condition_block_restrictive(
                 condition_statement, TRUSTED_AWS_ACCOUNT_NUMBER
             )
     
    @@ -506,7 +506,7 @@ def test_condition_parser_string_like_aws_SourceArn_list_not_valid(self):
                 }
             }
     
    -        assert not is_account_only_allowed_in_condition(
    +        assert not is_condition_block_restrictive(
                 condition_statement, TRUSTED_AWS_ACCOUNT_NUMBER
             )
     
    @@ -517,7 +517,7 @@ def test_condition_parser_string_like_aws_SourceArn_str(self):
                 }
             }
     
    -        assert is_account_only_allowed_in_condition(
    +        assert is_condition_block_restrictive(
                 condition_statement, TRUSTED_AWS_ACCOUNT_NUMBER
             )
     
    @@ -528,7 +528,7 @@ def test_condition_parser_string_like_aws_SourceArn_str_not_valid(self):
                 }
             }
     
    -        assert not is_account_only_allowed_in_condition(
    +        assert not is_condition_block_restrictive(
                 condition_statement, TRUSTED_AWS_ACCOUNT_NUMBER
             )
     
    @@ -541,7 +541,7 @@ def test_condition_parser_string_like_aws_PrincipalArn_list(self):
                 }
             }
     
    -        assert is_account_only_allowed_in_condition(
    +        assert is_condition_block_restrictive(
                 condition_statement, TRUSTED_AWS_ACCOUNT_NUMBER
             )
     
    @@ -555,7 +555,7 @@ def test_condition_parser_string_like_aws_PrincipalArn_list_not_valid(self):
                 }
             }
     
    -        assert not is_account_only_allowed_in_condition(
    +        assert not is_condition_block_restrictive(
                 condition_statement, TRUSTED_AWS_ACCOUNT_NUMBER
             )
     
    @@ -566,7 +566,7 @@ def test_condition_parser_string_like_aws_PrincipalArn_str(self):
                 }
             }
     
    -        assert is_account_only_allowed_in_condition(
    +        assert is_condition_block_restrictive(
                 condition_statement, TRUSTED_AWS_ACCOUNT_NUMBER
             )
     
    @@ -577,7 +577,7 @@ def test_condition_parser_string_like_aws_PrincipalArn_str_not_valid(self):
                 }
             }
     
    -        assert not is_account_only_allowed_in_condition(
    +        assert not is_condition_block_restrictive(
                 condition_statement, TRUSTED_AWS_ACCOUNT_NUMBER
             )
     
    @@ -585,7 +585,7 @@ def test_condition_parser_string_equals_aws_ResourceAccount_list(self):
             condition_statement = {
                 "StringEquals": {"aws:ResourceAccount": [TRUSTED_AWS_ACCOUNT_NUMBER]}
             }
    -        assert is_account_only_allowed_in_condition(
    +        assert is_condition_block_restrictive(
                 condition_statement, TRUSTED_AWS_ACCOUNT_NUMBER
             )
     
    @@ -598,7 +598,7 @@ def test_condition_parser_string_equals_aws_ResourceAccount_list_not_valid(self)
                     ]
                 }
             }
    -        assert not is_account_only_allowed_in_condition(
    +        assert not is_condition_block_restrictive(
                 condition_statement, TRUSTED_AWS_ACCOUNT_NUMBER
             )
     
    @@ -606,7 +606,7 @@ def test_condition_parser_string_equals_aws_ResourceAccount_str(self):
             condition_statement = {
                 "StringEquals": {"aws:ResourceAccount": TRUSTED_AWS_ACCOUNT_NUMBER}
             }
    -        assert is_account_only_allowed_in_condition(
    +        assert is_condition_block_restrictive(
                 condition_statement, TRUSTED_AWS_ACCOUNT_NUMBER
             )
     
    @@ -614,7 +614,7 @@ def test_condition_parser_string_equals_aws_ResourceAccount_str_not_valid(self):
             condition_statement = {
                 "StringEquals": {"aws:ResourceAccount": NON_TRUSTED_AWS_ACCOUNT_NUMBER}
             }
    -        assert not is_account_only_allowed_in_condition(
    +        assert not is_condition_block_restrictive(
                 condition_statement, TRUSTED_AWS_ACCOUNT_NUMBER
             )
     
    @@ -622,7 +622,7 @@ def test_condition_parser_string_like_aws_ResourceAccount_list(self):
             condition_statement = {
                 "StringLike": {"aws:ResourceAccount": [TRUSTED_AWS_ACCOUNT_NUMBER]}
             }
    -        assert is_account_only_allowed_in_condition(
    +        assert is_condition_block_restrictive(
                 condition_statement, TRUSTED_AWS_ACCOUNT_NUMBER
             )
     
    @@ -635,7 +635,7 @@ def test_condition_parser_string_like_aws_ResourceAccount_list_not_valid(self):
                     ]
                 }
             }
    -        assert not is_account_only_allowed_in_condition(
    +        assert not is_condition_block_restrictive(
                 condition_statement, TRUSTED_AWS_ACCOUNT_NUMBER
             )
     
    @@ -643,7 +643,7 @@ def test_condition_parser_string_like_aws_ResourceAccount_str(self):
             condition_statement = {
                 "StringLike": {"aws:ResourceAccount": TRUSTED_AWS_ACCOUNT_NUMBER}
             }
    -        assert is_account_only_allowed_in_condition(
    +        assert is_condition_block_restrictive(
                 condition_statement, TRUSTED_AWS_ACCOUNT_NUMBER
             )
     
    @@ -651,7 +651,7 @@ def test_condition_parser_string_like_aws_ResourceAccount_str_not_valid(self):
             condition_statement = {
                 "StringLike": {"aws:ResourceAccount": NON_TRUSTED_AWS_ACCOUNT_NUMBER}
             }
    -        assert not is_account_only_allowed_in_condition(
    +        assert not is_condition_block_restrictive(
                 condition_statement, TRUSTED_AWS_ACCOUNT_NUMBER
             )
     
    @@ -660,7 +660,7 @@ def test_condition_parser_string_equals_AWS_SourceAccount_list(self):
             condition_statement = {
                 "StringEquals": {"AWS:SourceAccount": [TRUSTED_AWS_ACCOUNT_NUMBER]}
             }
    -        assert is_account_only_allowed_in_condition(
    +        assert is_condition_block_restrictive(
                 condition_statement, TRUSTED_AWS_ACCOUNT_NUMBER
             )
     
    @@ -673,7 +673,7 @@ def test_condition_parser_string_equals_AWS_SourceAccount_list_not_valid(self):
                     ]
                 }
             }
    -        assert not is_account_only_allowed_in_condition(
    +        assert not is_condition_block_restrictive(
                 condition_statement, TRUSTED_AWS_ACCOUNT_NUMBER
             )
     
    @@ -681,7 +681,7 @@ def test_condition_parser_string_equals_AWS_SourceAccount_str(self):
             condition_statement = {
                 "StringEquals": {"AWS:SourceAccount": TRUSTED_AWS_ACCOUNT_NUMBER}
             }
    -        assert is_account_only_allowed_in_condition(
    +        assert is_condition_block_restrictive(
                 condition_statement, TRUSTED_AWS_ACCOUNT_NUMBER
             )
     
    @@ -689,7 +689,7 @@ def test_condition_parser_string_equals_AWS_SourceAccount_str_not_valid(self):
             condition_statement = {
                 "StringEquals": {"AWS:SourceAccount": NON_TRUSTED_AWS_ACCOUNT_NUMBER}
             }
    -        assert not is_account_only_allowed_in_condition(
    +        assert not is_condition_block_restrictive(
                 condition_statement, TRUSTED_AWS_ACCOUNT_NUMBER
             )
     
    @@ -697,7 +697,7 @@ def test_condition_parser_string_like_AWS_SourceAccount_list(self):
             condition_statement = {
                 "StringLike": {"AWS:SourceAccount": [TRUSTED_AWS_ACCOUNT_NUMBER]}
             }
    -        assert is_account_only_allowed_in_condition(
    +        assert is_condition_block_restrictive(
                 condition_statement, TRUSTED_AWS_ACCOUNT_NUMBER
             )
     
    @@ -710,7 +710,7 @@ def test_condition_parser_string_like_AWS_SourceAccount_list_not_valid(self):
                     ]
                 }
             }
    -        assert not is_account_only_allowed_in_condition(
    +        assert not is_condition_block_restrictive(
                 condition_statement, TRUSTED_AWS_ACCOUNT_NUMBER
             )
     
    @@ -718,7 +718,7 @@ def test_condition_parser_string_like_AWS_SourceAccount_str(self):
             condition_statement = {
                 "StringLike": {"AWS:SourceAccount": TRUSTED_AWS_ACCOUNT_NUMBER}
             }
    -        assert is_account_only_allowed_in_condition(
    +        assert is_condition_block_restrictive(
                 condition_statement, TRUSTED_AWS_ACCOUNT_NUMBER
             )
     
    @@ -726,7 +726,7 @@ def test_condition_parser_string_like_AWS_SourceAccount_str_not_valid(self):
             condition_statement = {
                 "StringLike": {"AWS:SourceAccount": NON_TRUSTED_AWS_ACCOUNT_NUMBER}
             }
    -        assert not is_account_only_allowed_in_condition(
    +        assert not is_condition_block_restrictive(
                 condition_statement, TRUSTED_AWS_ACCOUNT_NUMBER
             )
     
    @@ -734,7 +734,7 @@ def test_condition_parser_string_equals_AWS_SourceOwner_str(self):
             condition_statement = {
                 "StringEquals": {"AWS:SourceOwner": TRUSTED_AWS_ACCOUNT_NUMBER}
             }
    -        assert is_account_only_allowed_in_condition(
    +        assert is_condition_block_restrictive(
                 condition_statement, TRUSTED_AWS_ACCOUNT_NUMBER
             )
     
    @@ -742,7 +742,7 @@ def test_condition_parser_string_equals_AWS_SourceOwner_str_not_valid(self):
             condition_statement = {
                 "StringEquals": {"AWS:SourceOwner": NON_TRUSTED_AWS_ACCOUNT_NUMBER}
             }
    -        assert not is_account_only_allowed_in_condition(
    +        assert not is_condition_block_restrictive(
                 condition_statement, TRUSTED_AWS_ACCOUNT_NUMBER
             )
     
    @@ -750,7 +750,7 @@ def test_condition_parser_string_equals_AWS_SourceOwner_list(self):
             condition_statement = {
                 "StringEquals": {"AWS:SourceOwner": [TRUSTED_AWS_ACCOUNT_NUMBER]}
             }
    -        assert is_account_only_allowed_in_condition(
    +        assert is_condition_block_restrictive(
                 condition_statement, TRUSTED_AWS_ACCOUNT_NUMBER
             )
     
    @@ -763,7 +763,7 @@ def test_condition_parser_string_equals_AWS_SourceOwner_list_not_valid(self):
                     ]
                 }
             }
    -        assert not is_account_only_allowed_in_condition(
    +        assert not is_condition_block_restrictive(
                 condition_statement, TRUSTED_AWS_ACCOUNT_NUMBER
             )
     
    @@ -771,7 +771,7 @@ def test_condition_parser_string_like_AWS_SourceOwner_list(self):
             condition_statement = {
                 "StringLike": {"AWS:SourceOwner": [TRUSTED_AWS_ACCOUNT_NUMBER]}
             }
    -        assert is_account_only_allowed_in_condition(
    +        assert is_condition_block_restrictive(
                 condition_statement, TRUSTED_AWS_ACCOUNT_NUMBER
             )
     
    @@ -784,7 +784,7 @@ def test_condition_parser_string_like_AWS_SourceOwner_list_not_valid(self):
                     ]
                 }
             }
    -        assert not is_account_only_allowed_in_condition(
    +        assert not is_condition_block_restrictive(
                 condition_statement, TRUSTED_AWS_ACCOUNT_NUMBER
             )
     
    @@ -792,7 +792,7 @@ def test_condition_parser_string_like_AWS_SourceOwner_str(self):
             condition_statement = {
                 "StringLike": {"AWS:SourceOwner": TRUSTED_AWS_ACCOUNT_NUMBER}
             }
    -        assert is_account_only_allowed_in_condition(
    +        assert is_condition_block_restrictive(
                 condition_statement, TRUSTED_AWS_ACCOUNT_NUMBER
             )
     
    @@ -800,7 +800,7 @@ def test_condition_parser_string_like_AWS_SourceOwner_str_not_valid(self):
             condition_statement = {
                 "StringLike": {"AWS:SourceOwner": NON_TRUSTED_AWS_ACCOUNT_NUMBER}
             }
    -        assert not is_account_only_allowed_in_condition(
    +        assert not is_condition_block_restrictive(
                 condition_statement, TRUSTED_AWS_ACCOUNT_NUMBER
             )
     
    @@ -808,7 +808,7 @@ def test_condition_parser_string_equals_S3_ResourceAccount_list(self):
             condition_statement = {
                 "StringEquals": {"S3:ResourceAccount": [TRUSTED_AWS_ACCOUNT_NUMBER]}
             }
    -        assert is_account_only_allowed_in_condition(
    +        assert is_condition_block_restrictive(
                 condition_statement, TRUSTED_AWS_ACCOUNT_NUMBER
             )
     
    @@ -821,7 +821,7 @@ def test_condition_parser_string_equals_S3_ResourceAccount_list_not_valid(self):
                     ]
                 }
             }
    -        assert not is_account_only_allowed_in_condition(
    +        assert not is_condition_block_restrictive(
                 condition_statement, TRUSTED_AWS_ACCOUNT_NUMBER
             )
     
    @@ -829,7 +829,7 @@ def test_condition_parser_string_equals_S3_ResourceAccount_str(self):
             condition_statement = {
                 "StringEquals": {"S3:ResourceAccount": TRUSTED_AWS_ACCOUNT_NUMBER}
             }
    -        assert is_account_only_allowed_in_condition(
    +        assert is_condition_block_restrictive(
                 condition_statement, TRUSTED_AWS_ACCOUNT_NUMBER
             )
     
    @@ -837,7 +837,7 @@ def test_condition_parser_string_equals_S3_ResourceAccount_str_not_valid(self):
             condition_statement = {
                 "StringEquals": {"S3:ResourceAccount": NON_TRUSTED_AWS_ACCOUNT_NUMBER}
             }
    -        assert not is_account_only_allowed_in_condition(
    +        assert not is_condition_block_restrictive(
                 condition_statement, TRUSTED_AWS_ACCOUNT_NUMBER
             )
     
    @@ -845,7 +845,7 @@ def test_condition_parser_string_equals_AWS_PrincipalAccount_list(self):
             condition_statement = {
                 "StringEquals": {"AWS:PrincipalAccount": [TRUSTED_AWS_ACCOUNT_NUMBER]}
             }
    -        assert is_account_only_allowed_in_condition(
    +        assert is_condition_block_restrictive(
                 condition_statement, TRUSTED_AWS_ACCOUNT_NUMBER
             )
     
    @@ -858,7 +858,7 @@ def test_condition_parser_string_equals_AWS_PrincipalAccount_list_not_valid(self
                     ]
                 }
             }
    -        assert not is_account_only_allowed_in_condition(
    +        assert not is_condition_block_restrictive(
                 condition_statement, TRUSTED_AWS_ACCOUNT_NUMBER
             )
     
    @@ -866,7 +866,7 @@ def test_condition_parser_string_equals_AWS_PrincipalAccount_str(self):
             condition_statement = {
                 "StringEquals": {"AWS:PrincipalAccount": TRUSTED_AWS_ACCOUNT_NUMBER}
             }
    -        assert is_account_only_allowed_in_condition(
    +        assert is_condition_block_restrictive(
                 condition_statement, TRUSTED_AWS_ACCOUNT_NUMBER
             )
     
    @@ -874,7 +874,7 @@ def test_condition_parser_string_equals_AWS_PrincipalAccount_str_not_valid(self)
             condition_statement = {
                 "StringEquals": {"AWS:PrincipalAccount": NON_TRUSTED_AWS_ACCOUNT_NUMBER}
             }
    -        assert not is_account_only_allowed_in_condition(
    +        assert not is_condition_block_restrictive(
                 condition_statement, TRUSTED_AWS_ACCOUNT_NUMBER
             )
     
    @@ -882,7 +882,7 @@ def test_condition_parser_string_like_AWS_PrincipalAccount_list(self):
             condition_statement = {
                 "StringLike": {"AWS:PrincipalAccount": [TRUSTED_AWS_ACCOUNT_NUMBER]}
             }
    -        assert is_account_only_allowed_in_condition(
    +        assert is_condition_block_restrictive(
                 condition_statement, TRUSTED_AWS_ACCOUNT_NUMBER
             )
     
    @@ -895,7 +895,7 @@ def test_condition_parser_string_like_AWS_PrincipalAccount_list_not_valid(self):
                     ]
                 }
             }
    -        assert not is_account_only_allowed_in_condition(
    +        assert not is_condition_block_restrictive(
                 condition_statement, TRUSTED_AWS_ACCOUNT_NUMBER
             )
     
    @@ -903,7 +903,7 @@ def test_condition_parser_string_like_AWS_PrincipalAccount_str(self):
             condition_statement = {
                 "StringLike": {"AWS:PrincipalAccount": TRUSTED_AWS_ACCOUNT_NUMBER}
             }
    -        assert is_account_only_allowed_in_condition(
    +        assert is_condition_block_restrictive(
                 condition_statement, TRUSTED_AWS_ACCOUNT_NUMBER
             )
     
    @@ -911,7 +911,7 @@ def test_condition_parser_string_like_AWS_PrincipalAccount_str_not_valid(self):
             condition_statement = {
                 "StringLike": {"AWS:PrincipalAccount": NON_TRUSTED_AWS_ACCOUNT_NUMBER}
             }
    -        assert not is_account_only_allowed_in_condition(
    +        assert not is_condition_block_restrictive(
                 condition_statement, TRUSTED_AWS_ACCOUNT_NUMBER
             )
     
    @@ -924,7 +924,7 @@ def test_condition_parser_arn_like_AWS_SourceArn_list(self):
                 }
             }
     
    -        assert is_account_only_allowed_in_condition(
    +        assert is_condition_block_restrictive(
                 condition_statement, TRUSTED_AWS_ACCOUNT_NUMBER
             )
     
    @@ -938,7 +938,7 @@ def test_condition_parser_arn_like_AWS_SourceArn_list_not_valid(self):
                 }
             }
     
    -        assert not is_account_only_allowed_in_condition(
    +        assert not is_condition_block_restrictive(
                 condition_statement, TRUSTED_AWS_ACCOUNT_NUMBER
             )
     
    @@ -949,7 +949,7 @@ def test_condition_parser_arn_like_AWS_SourceArn_str(self):
                 }
             }
     
    -        assert is_account_only_allowed_in_condition(
    +        assert is_condition_block_restrictive(
                 condition_statement, TRUSTED_AWS_ACCOUNT_NUMBER
             )
     
    @@ -960,7 +960,7 @@ def test_condition_parser_arn_like_AWS_SourceArn_str_not_valid(self):
                 }
             }
     
    -        assert not is_account_only_allowed_in_condition(
    +        assert not is_condition_block_restrictive(
                 condition_statement, TRUSTED_AWS_ACCOUNT_NUMBER
             )
     
    @@ -973,7 +973,7 @@ def test_condition_parser_arn_like_AWS_PrincipalArn_list(self):
                 }
             }
     
    -        assert is_account_only_allowed_in_condition(
    +        assert is_condition_block_restrictive(
                 condition_statement, TRUSTED_AWS_ACCOUNT_NUMBER
             )
     
    @@ -987,7 +987,7 @@ def test_condition_parser_arn_like_AWS_PrincipalArn_list_not_valid(self):
                 }
             }
     
    -        assert not is_account_only_allowed_in_condition(
    +        assert not is_condition_block_restrictive(
                 condition_statement, TRUSTED_AWS_ACCOUNT_NUMBER
             )
     
    @@ -998,7 +998,7 @@ def test_condition_parser_arn_like_AWS_PrincipalArn_str(self):
                 }
             }
     
    -        assert is_account_only_allowed_in_condition(
    +        assert is_condition_block_restrictive(
                 condition_statement, TRUSTED_AWS_ACCOUNT_NUMBER
             )
     
    @@ -1009,7 +1009,7 @@ def test_condition_parser_arn_like_AWS_PrincipalArn_str_not_valid(self):
                 }
             }
     
    -        assert not is_account_only_allowed_in_condition(
    +        assert not is_condition_block_restrictive(
                 condition_statement, TRUSTED_AWS_ACCOUNT_NUMBER
             )
     
    @@ -1022,7 +1022,7 @@ def test_condition_parser_arn_equals_AWS_SourceArn_list(self):
                 }
             }
     
    -        assert is_account_only_allowed_in_condition(
    +        assert is_condition_block_restrictive(
                 condition_statement, TRUSTED_AWS_ACCOUNT_NUMBER
             )
     
    @@ -1036,7 +1036,7 @@ def test_condition_parser_arn_equals_AWS_SourceArn_list_not_valid(self):
                 }
             }
     
    -        assert not is_account_only_allowed_in_condition(
    +        assert not is_condition_block_restrictive(
                 condition_statement, TRUSTED_AWS_ACCOUNT_NUMBER
             )
     
    @@ -1047,7 +1047,7 @@ def test_condition_parser_arn_equals_AWS_SourceArn_str(self):
                 }
             }
     
    -        assert is_account_only_allowed_in_condition(
    +        assert is_condition_block_restrictive(
                 condition_statement, TRUSTED_AWS_ACCOUNT_NUMBER
             )
     
    @@ -1058,7 +1058,7 @@ def test_condition_parser_arn_equals_AWS_SourceArn_str_not_valid(self):
                 }
             }
     
    -        assert not is_account_only_allowed_in_condition(
    +        assert not is_condition_block_restrictive(
                 condition_statement, TRUSTED_AWS_ACCOUNT_NUMBER
             )
     
    @@ -1071,7 +1071,7 @@ def test_condition_parser_arn_equals_AWS_PrincipalArn_list(self):
                 }
             }
     
    -        assert is_account_only_allowed_in_condition(
    +        assert is_condition_block_restrictive(
                 condition_statement, TRUSTED_AWS_ACCOUNT_NUMBER
             )
     
    @@ -1085,7 +1085,7 @@ def test_condition_parser_arn_equals_AWS_PrincipalArn_list_not_valid(self):
                 }
             }
     
    -        assert not is_account_only_allowed_in_condition(
    +        assert not is_condition_block_restrictive(
                 condition_statement, TRUSTED_AWS_ACCOUNT_NUMBER
             )
     
    @@ -1096,7 +1096,7 @@ def test_condition_parser_arn_equals_AWS_PrincipalArn_str(self):
                 }
             }
     
    -        assert is_account_only_allowed_in_condition(
    +        assert is_condition_block_restrictive(
                 condition_statement, TRUSTED_AWS_ACCOUNT_NUMBER
             )
     
    @@ -1107,7 +1107,7 @@ def test_condition_parser_arn_equals_AWS_PrincipalArn_str_not_valid(self):
                 }
             }
     
    -        assert not is_account_only_allowed_in_condition(
    +        assert not is_condition_block_restrictive(
                 condition_statement, TRUSTED_AWS_ACCOUNT_NUMBER
             )
     
    @@ -1120,7 +1120,7 @@ def test_condition_parser_string_like_AWS_SourceArn_list(self):
                 }
             }
     
    -        assert is_account_only_allowed_in_condition(
    +        assert is_condition_block_restrictive(
                 condition_statement, TRUSTED_AWS_ACCOUNT_NUMBER
             )
     
    @@ -1134,7 +1134,7 @@ def test_condition_parser_string_like_AWS_SourceArn_list_not_valid(self):
                 }
             }
     
    -        assert not is_account_only_allowed_in_condition(
    +        assert not is_condition_block_restrictive(
                 condition_statement, TRUSTED_AWS_ACCOUNT_NUMBER
             )
     
    @@ -1145,7 +1145,7 @@ def test_condition_parser_string_like_AWS_SourceArn_str(self):
                 }
             }
     
    -        assert is_account_only_allowed_in_condition(
    +        assert is_condition_block_restrictive(
                 condition_statement, TRUSTED_AWS_ACCOUNT_NUMBER
             )
     
    @@ -1156,7 +1156,7 @@ def test_condition_parser_string_like_AWS_SourceArn_str_not_valid(self):
                 }
             }
     
    -        assert not is_account_only_allowed_in_condition(
    +        assert not is_condition_block_restrictive(
                 condition_statement, TRUSTED_AWS_ACCOUNT_NUMBER
             )
     
    @@ -1169,7 +1169,7 @@ def test_condition_parser_string_like_AWS_PrincipalArn_list(self):
                 }
             }
     
    -        assert is_account_only_allowed_in_condition(
    +        assert is_condition_block_restrictive(
                 condition_statement, TRUSTED_AWS_ACCOUNT_NUMBER
             )
     
    @@ -1183,7 +1183,7 @@ def test_condition_parser_string_like_AWS_PrincipalArn_list_not_valid(self):
                 }
             }
     
    -        assert not is_account_only_allowed_in_condition(
    +        assert not is_condition_block_restrictive(
                 condition_statement, TRUSTED_AWS_ACCOUNT_NUMBER
             )
     
    @@ -1194,7 +1194,7 @@ def test_condition_parser_string_like_AWS_PrincipalArn_str(self):
                 }
             }
     
    -        assert is_account_only_allowed_in_condition(
    +        assert is_condition_block_restrictive(
                 condition_statement, TRUSTED_AWS_ACCOUNT_NUMBER
             )
     
    @@ -1205,7 +1205,7 @@ def test_condition_parser_string_like_AWS_PrincipalArn_str_not_valid(self):
                 }
             }
     
    -        assert not is_account_only_allowed_in_condition(
    +        assert not is_condition_block_restrictive(
                 condition_statement, TRUSTED_AWS_ACCOUNT_NUMBER
             )
     
    @@ -1213,7 +1213,7 @@ def test_condition_parser_string_equals_AWS_ResourceAccount_list(self):
             condition_statement = {
                 "StringEquals": {"AWS:ResourceAccount": [TRUSTED_AWS_ACCOUNT_NUMBER]}
             }
    -        assert is_account_only_allowed_in_condition(
    +        assert is_condition_block_restrictive(
                 condition_statement, TRUSTED_AWS_ACCOUNT_NUMBER
             )
     
    @@ -1226,7 +1226,7 @@ def test_condition_parser_string_equals_AWS_ResourceAccount_list_not_valid(self)
                     ]
                 }
             }
    -        assert not is_account_only_allowed_in_condition(
    +        assert not is_condition_block_restrictive(
                 condition_statement, TRUSTED_AWS_ACCOUNT_NUMBER
             )
     
    @@ -1234,7 +1234,7 @@ def test_condition_parser_string_equals_AWS_ResourceAccount_str(self):
             condition_statement = {
                 "StringEquals": {"AWS:ResourceAccount": TRUSTED_AWS_ACCOUNT_NUMBER}
             }
    -        assert is_account_only_allowed_in_condition(
    +        assert is_condition_block_restrictive(
                 condition_statement, TRUSTED_AWS_ACCOUNT_NUMBER
             )
     
    @@ -1242,7 +1242,7 @@ def test_condition_parser_string_equals_AWS_ResourceAccount_str_not_valid(self):
             condition_statement = {
                 "StringEquals": {"AWS:ResourceAccount": NON_TRUSTED_AWS_ACCOUNT_NUMBER}
             }
    -        assert not is_account_only_allowed_in_condition(
    +        assert not is_condition_block_restrictive(
                 condition_statement, TRUSTED_AWS_ACCOUNT_NUMBER
             )
     
    @@ -1250,7 +1250,7 @@ def test_condition_parser_string_like_AWS_ResourceAccount_list(self):
             condition_statement = {
                 "StringLike": {"AWS:ResourceAccount": [TRUSTED_AWS_ACCOUNT_NUMBER]}
             }
    -        assert is_account_only_allowed_in_condition(
    +        assert is_condition_block_restrictive(
                 condition_statement, TRUSTED_AWS_ACCOUNT_NUMBER
             )
     
    @@ -1263,7 +1263,7 @@ def test_condition_parser_string_like_AWS_ResourceAccount_list_not_valid(self):
                     ]
                 }
             }
    -        assert not is_account_only_allowed_in_condition(
    +        assert not is_condition_block_restrictive(
                 condition_statement, TRUSTED_AWS_ACCOUNT_NUMBER
             )
     
    @@ -1271,7 +1271,7 @@ def test_condition_parser_string_like_AWS_ResourceAccount_str(self):
             condition_statement = {
                 "StringLike": {"AWS:ResourceAccount": TRUSTED_AWS_ACCOUNT_NUMBER}
             }
    -        assert is_account_only_allowed_in_condition(
    +        assert is_condition_block_restrictive(
                 condition_statement, TRUSTED_AWS_ACCOUNT_NUMBER
             )
     
    @@ -1279,7 +1279,7 @@ def test_condition_parser_string_like_AWS_ResourceAccount_str_not_valid(self):
             condition_statement = {
                 "StringLike": {"AWS:ResourceAccount": NON_TRUSTED_AWS_ACCOUNT_NUMBER}
             }
    -        assert not is_account_only_allowed_in_condition(
    +        assert not is_condition_block_restrictive(
                 condition_statement, TRUSTED_AWS_ACCOUNT_NUMBER
             )
     
    @@ -1298,7 +1298,7 @@ def test_condition_parser_two_lists_unrestrictive(self):
                     ]
                 },
             }
    -        assert not is_account_only_allowed_in_condition(
    +        assert not is_condition_block_restrictive(
                 condition_statement, TRUSTED_AWS_ACCOUNT_NUMBER
             )
     
    @@ -1315,7 +1315,7 @@ def test_condition_parser_two_lists_both_restrictive(self):
                     ]
                 },
             }
    -        assert is_account_only_allowed_in_condition(
    +        assert is_condition_block_restrictive(
                 condition_statement, TRUSTED_AWS_ACCOUNT_NUMBER
             )
     
    @@ -1333,7 +1333,7 @@ def test_condition_parser_two_lists_first_restrictive(self):
                     ]
                 },
             }
    -        assert is_account_only_allowed_in_condition(
    +        assert is_condition_block_restrictive(
                 condition_statement, TRUSTED_AWS_ACCOUNT_NUMBER
             )
     
    @@ -1351,6 +1351,18 @@ def test_condition_parser_two_lists_second_restrictive(self):
                     ]
                 },
             }
    -        assert is_account_only_allowed_in_condition(
    +        assert is_condition_block_restrictive(
                 condition_statement, TRUSTED_AWS_ACCOUNT_NUMBER
             )
    +
    +    def test_condition_parser_allowing_cross_account_with_invalid_block(self):
    +        condition_statement = {
    +            "StringLike": {
    +                "s3:prefix": [
    +                    "home/",
    +                ]
    +            },
    +        }
    +        assert not is_condition_block_restrictive(
    +            condition_statement, TRUSTED_AWS_ACCOUNT_NUMBER, True
    +        )
    diff --git a/tests/providers/aws/lib/s3/s3_test.py b/tests/providers/aws/lib/s3/s3_test.py
    index 7f82c3954cb..454d83a256d 100644
    --- a/tests/providers/aws/lib/s3/s3_test.py
    +++ b/tests/providers/aws/lib/s3/s3_test.py
    @@ -3,7 +3,7 @@
     
     import boto3
     from mock import MagicMock
    -from moto import mock_s3
    +from moto import mock_aws
     
     from prowler.config.config import csv_file_suffix
     from prowler.providers.aws.lib.s3.s3 import get_s3_object_path, send_to_s3_bucket
    @@ -21,7 +21,7 @@
     
     
     class TestS3:
    -    @mock_s3
    +    @mock_aws
         def test_send_to_s3_bucket(self):
             # Mock Audit Info
             audit_info = MagicMock()
    @@ -60,7 +60,7 @@ def test_send_to_s3_bucket(self):
                 == "binary/octet-stream"
             )
     
    -    @mock_s3
    +    @mock_aws
         def test_send_to_s3_bucket_compliance(self):
             # Mock Audit Info
             audit_info = MagicMock()
    diff --git a/tests/providers/aws/lib/security_hub/security_hub_test.py b/tests/providers/aws/lib/security_hub/security_hub_test.py
    index 762a418241b..c4e47b21a43 100644
    --- a/tests/providers/aws/lib/security_hub/security_hub_test.py
    +++ b/tests/providers/aws/lib/security_hub/security_hub_test.py
    @@ -1,7 +1,9 @@
    +from logging import ERROR, WARNING
     from os import path
     
     import botocore
     from boto3 import session
    +from botocore.client import ClientError
     from mock import MagicMock, patch
     
     from prowler.config.config import prowler_version, timestamp_utc
    @@ -21,6 +23,49 @@
         set_mocked_aws_audit_info,
     )
     
    +
    +def get_security_hub_finding(status: str):
    +    return {
    +        "SchemaVersion": "2018-10-08",
    +        "Id": f"prowler-iam_user_accesskey_unused-{AWS_ACCOUNT_NUMBER}-{AWS_REGION_EU_WEST_1}-ee26b0dd4",
    +        "ProductArn": f"arn:aws:securityhub:{AWS_REGION_EU_WEST_1}::product/prowler/prowler",
    +        "RecordState": "ACTIVE",
    +        "ProductFields": {
    +            "ProviderName": "Prowler",
    +            "ProviderVersion": prowler_version,
    +            "ProwlerResourceName": "test",
    +        },
    +        "GeneratorId": "prowler-iam_user_accesskey_unused",
    +        "AwsAccountId": f"{AWS_ACCOUNT_NUMBER}",
    +        "Types": ["Software and Configuration Checks"],
    +        "FirstObservedAt": timestamp_utc.strftime("%Y-%m-%dT%H:%M:%SZ"),
    +        "UpdatedAt": timestamp_utc.strftime("%Y-%m-%dT%H:%M:%SZ"),
    +        "CreatedAt": timestamp_utc.strftime("%Y-%m-%dT%H:%M:%SZ"),
    +        "Severity": {"Label": "LOW"},
    +        "Title": "Ensure Access Keys unused are disabled",
    +        "Description": "test",
    +        "Resources": [
    +            {
    +                "Type": "AwsIamAccessAnalyzer",
    +                "Id": "test",
    +                "Partition": "aws",
    +                "Region": f"{AWS_REGION_EU_WEST_1}",
    +            }
    +        ],
    +        "Compliance": {
    +            "Status": status,
    +            "RelatedRequirements": [],
    +            "AssociatedStandards": [],
    +        },
    +        "Remediation": {
    +            "Recommendation": {
    +                "Text": "Run sudo yum update and cross your fingers and toes.",
    +                "Url": "https://myfp.com/recommendations/dangerous_things_and_how_to_fix_them.html",
    +            }
    +        },
    +    }
    +
    +
     # Mocking Security Hub Get Findings
     make_api_call = botocore.client.BaseClient._make_api_call
     
    @@ -64,10 +109,13 @@ def generate_finding(self, status, region):
     
             return finding
     
    -    def set_mocked_output_options(self, is_quiet):
    +    def set_mocked_output_options(
    +        self, is_quiet: bool = False, send_sh_only_fails: bool = False
    +    ):
             output_options = MagicMock
             output_options.bulk_checks_metadata = {}
             output_options.is_quiet = is_quiet
    +        output_options.send_sh_only_fails = send_sh_only_fails
     
             return output_options
     
    @@ -84,6 +132,126 @@ def test_verify_security_hub_integration_enabled_per_region(self):
                 AWS_COMMERCIAL_PARTITION, AWS_REGION_EU_WEST_1, session, AWS_ACCOUNT_NUMBER
             )
     
    +    def test_verify_security_hub_integration_enabled_per_region_security_hub_disabled(
    +        self, caplog
    +    ):
    +        caplog.set_level(WARNING)
    +        session = self.set_mocked_session(AWS_REGION_EU_WEST_1)
    +
    +        with patch(
    +            "prowler.providers.aws.lib.security_hub.security_hub.session.Session.client",
    +        ) as mock_security_hub:
    +            error_message = f"Account {AWS_ACCOUNT_NUMBER} is not subscribed to AWS Security Hub in region {AWS_REGION_EU_WEST_1}"
    +            error_code = "InvalidAccessException"
    +            error_response = {
    +                "Error": {
    +                    "Code": error_code,
    +                    "Message": error_message,
    +                }
    +            }
    +            operation_name = "DescribeHub"
    +            mock_security_hub.side_effect = ClientError(error_response, operation_name)
    +
    +            assert not verify_security_hub_integration_enabled_per_region(
    +                AWS_COMMERCIAL_PARTITION,
    +                AWS_REGION_EU_WEST_1,
    +                session,
    +                AWS_ACCOUNT_NUMBER,
    +            )
    +            assert caplog.record_tuples == [
    +                (
    +                    "root",
    +                    WARNING,
    +                    f"ClientError -- [68]: An error occurred ({error_code}) when calling the {operation_name} operation: {error_message}",
    +                )
    +            ]
    +
    +    def test_verify_security_hub_integration_enabled_per_region_prowler_not_subscribed(
    +        self, caplog
    +    ):
    +        caplog.set_level(WARNING)
    +        session = self.set_mocked_session(AWS_REGION_EU_WEST_1)
    +
    +        with patch(
    +            "prowler.providers.aws.lib.security_hub.security_hub.session.Session.client",
    +        ) as mock_security_hub:
    +            mock_security_hub.describe_hub.return_value = None
    +            mock_security_hub.list_enabled_products_for_import.return_value = []
    +
    +            assert not verify_security_hub_integration_enabled_per_region(
    +                AWS_COMMERCIAL_PARTITION,
    +                AWS_REGION_EU_WEST_1,
    +                session,
    +                AWS_ACCOUNT_NUMBER,
    +            )
    +            assert caplog.record_tuples == [
    +                (
    +                    "root",
    +                    WARNING,
    +                    f"Security Hub is enabled in {AWS_REGION_EU_WEST_1} but Prowler integration does not accept findings. More info: https://docs.prowler.cloud/en/latest/tutorials/aws/securityhub/",
    +                )
    +            ]
    +
    +    def test_verify_security_hub_integration_enabled_per_region_another_ClientError(
    +        self, caplog
    +    ):
    +        caplog.set_level(WARNING)
    +        session = self.set_mocked_session(AWS_REGION_EU_WEST_1)
    +
    +        with patch(
    +            "prowler.providers.aws.lib.security_hub.security_hub.session.Session.client",
    +        ) as mock_security_hub:
    +            error_message = f"Another exception in region {AWS_REGION_EU_WEST_1}"
    +            error_code = "AnotherException"
    +            error_response = {
    +                "Error": {
    +                    "Code": error_code,
    +                    "Message": error_message,
    +                }
    +            }
    +            operation_name = "DescribeHub"
    +            mock_security_hub.side_effect = ClientError(error_response, operation_name)
    +
    +            assert not verify_security_hub_integration_enabled_per_region(
    +                AWS_COMMERCIAL_PARTITION,
    +                AWS_REGION_EU_WEST_1,
    +                session,
    +                AWS_ACCOUNT_NUMBER,
    +            )
    +            assert caplog.record_tuples == [
    +                (
    +                    "root",
    +                    ERROR,
    +                    f"ClientError -- [68]: An error occurred ({error_code}) when calling the {operation_name} operation: {error_message}",
    +                )
    +            ]
    +
    +    def test_verify_security_hub_integration_enabled_per_region_another_Exception(
    +        self, caplog
    +    ):
    +        caplog.set_level(WARNING)
    +        session = self.set_mocked_session(AWS_REGION_EU_WEST_1)
    +
    +        with patch(
    +            "prowler.providers.aws.lib.security_hub.security_hub.session.Session.client",
    +        ) as mock_security_hub:
    +            error_message = f"Another exception in region {AWS_REGION_EU_WEST_1}"
    +            mock_security_hub.side_effect = Exception(error_message)
    +
    +            assert not verify_security_hub_integration_enabled_per_region(
    +                AWS_COMMERCIAL_PARTITION,
    +                AWS_REGION_EU_WEST_1,
    +                session,
    +                AWS_ACCOUNT_NUMBER,
    +            )
    +            assert caplog.record_tuples == [
    +                (
    +                    "root",
    +                    ERROR,
    +                    f"Exception -- [68]: {error_message}",
    +                )
    +            ]
    +
         def test_prepare_security_hub_findings_enabled_region_not_quiet(self):
             enabled_regions = [AWS_REGION_EU_WEST_1]
             output_options = self.set_mocked_output_options(is_quiet=False)
    @@ -98,53 +266,13 @@ def test_prepare_security_hub_findings_enabled_region_not_quiet(self):
                 output_options,
                 enabled_regions,
             ) == {
    -            AWS_REGION_EU_WEST_1: [
    -                {
    -                    "SchemaVersion": "2018-10-08",
    -                    "Id": f"prowler-iam_user_accesskey_unused-{AWS_ACCOUNT_NUMBER}-{AWS_REGION_EU_WEST_1}-ee26b0dd4",
    -                    "ProductArn": f"arn:aws:securityhub:{AWS_REGION_EU_WEST_1}::product/prowler/prowler",
    -                    "RecordState": "ACTIVE",
    -                    "ProductFields": {
    -                        "ProviderName": "Prowler",
    -                        "ProviderVersion": prowler_version,
    -                        "ProwlerResourceName": "test",
    -                    },
    -                    "GeneratorId": "prowler-iam_user_accesskey_unused",
    -                    "AwsAccountId": f"{AWS_ACCOUNT_NUMBER}",
    -                    "Types": ["Software and Configuration Checks"],
    -                    "FirstObservedAt": timestamp_utc.strftime("%Y-%m-%dT%H:%M:%SZ"),
    -                    "UpdatedAt": timestamp_utc.strftime("%Y-%m-%dT%H:%M:%SZ"),
    -                    "CreatedAt": timestamp_utc.strftime("%Y-%m-%dT%H:%M:%SZ"),
    -                    "Severity": {"Label": "LOW"},
    -                    "Title": "Ensure Access Keys unused are disabled",
    -                    "Description": "test",
    -                    "Resources": [
    -                        {
    -                            "Type": "AwsIamAccessAnalyzer",
    -                            "Id": "test",
    -                            "Partition": "aws",
    -                            "Region": f"{AWS_REGION_EU_WEST_1}",
    -                        }
    -                    ],
    -                    "Compliance": {
    -                        "Status": "PASSED",
    -                        "RelatedRequirements": [],
    -                        "AssociatedStandards": [],
    -                    },
    -                    "Remediation": {
    -                        "Recommendation": {
    -                            "Text": "Run sudo yum update and cross your fingers and toes.",
    -                            "Url": "https://myfp.com/recommendations/dangerous_things_and_how_to_fix_them.html",
    -                        }
    -                    },
    -                }
    -            ],
    +            AWS_REGION_EU_WEST_1: [get_security_hub_finding("PASSED")],
             }
     
    -    def test_prepare_security_hub_findings_quiet_MANUAL_finding(self):
    +    def test_prepare_security_hub_findings_quiet_INFO_finding(self):
             enabled_regions = [AWS_REGION_EU_WEST_1]
             output_options = self.set_mocked_output_options(is_quiet=False)
    -        findings = [self.generate_finding("MANUAL", AWS_REGION_EU_WEST_1)]
    +        findings = [self.generate_finding("INFO", AWS_REGION_EU_WEST_1)]
             audit_info = set_mocked_aws_audit_info(
                 audited_regions=[AWS_REGION_EU_WEST_1, AWS_REGION_EU_WEST_2]
             )
    @@ -171,7 +299,7 @@ def test_prepare_security_hub_findings_disabled_region(self):
                 enabled_regions,
             ) == {AWS_REGION_EU_WEST_1: []}
     
    -    def test_prepare_security_hub_findings_quiet(self):
    +    def test_prepare_security_hub_findings_quiet_PASS(self):
             enabled_regions = [AWS_REGION_EU_WEST_1]
             output_options = self.set_mocked_output_options(is_quiet=True)
             findings = [self.generate_finding("PASS", AWS_REGION_EU_WEST_1)]
    @@ -186,6 +314,51 @@ def test_prepare_security_hub_findings_quiet(self):
                 enabled_regions,
             ) == {AWS_REGION_EU_WEST_1: []}
     
    +    def test_prepare_security_hub_findings_quiet_FAIL(self):
    +        enabled_regions = [AWS_REGION_EU_WEST_1]
    +        output_options = self.set_mocked_output_options(is_quiet=True)
    +        findings = [self.generate_finding("FAIL", AWS_REGION_EU_WEST_1)]
    +        audit_info = set_mocked_aws_audit_info(
    +            audited_regions=[AWS_REGION_EU_WEST_1, AWS_REGION_EU_WEST_2]
    +        )
    +
    +        assert prepare_security_hub_findings(
    +            findings,
    +            audit_info,
    +            output_options,
    +            enabled_regions,
    +        ) == {AWS_REGION_EU_WEST_1: [get_security_hub_finding("FAILED")]}
    +
    +    def test_prepare_security_hub_findings_send_sh_only_fails_PASS(self):
    +        enabled_regions = [AWS_REGION_EU_WEST_1]
    +        output_options = self.set_mocked_output_options(send_sh_only_fails=True)
    +        findings = [self.generate_finding("PASS", AWS_REGION_EU_WEST_1)]
    +        audit_info = set_mocked_aws_audit_info(
    +            audited_regions=[AWS_REGION_EU_WEST_1, AWS_REGION_EU_WEST_2]
    +        )
    +
    +        assert prepare_security_hub_findings(
    +            findings,
    +            audit_info,
    +            output_options,
    +            enabled_regions,
    +        ) == {AWS_REGION_EU_WEST_1: []}
    +
    +    def test_prepare_security_hub_findings_send_sh_only_fails_FAIL(self):
    +        enabled_regions = [AWS_REGION_EU_WEST_1]
    +        output_options = self.set_mocked_output_options(send_sh_only_fails=True)
    +        findings = [self.generate_finding("FAIL", AWS_REGION_EU_WEST_1)]
    +        audit_info = set_mocked_aws_audit_info(
    +            audited_regions=[AWS_REGION_EU_WEST_1, AWS_REGION_EU_WEST_2]
    +        )
    +
    +        assert prepare_security_hub_findings(
    +            findings,
    +            audit_info,
    +            output_options,
    +            enabled_regions,
    +        ) == {AWS_REGION_EU_WEST_1: [get_security_hub_finding("FAILED")]}
    +
         def test_prepare_security_hub_findings_no_audited_regions(self):
             enabled_regions = [AWS_REGION_EU_WEST_1]
             output_options = self.set_mocked_output_options(is_quiet=False)
    @@ -198,47 +371,7 @@ def test_prepare_security_hub_findings_no_audited_regions(self):
                 output_options,
                 enabled_regions,
             ) == {
    -            AWS_REGION_EU_WEST_1: [
    -                {
    -                    "SchemaVersion": "2018-10-08",
    -                    "Id": f"prowler-iam_user_accesskey_unused-{AWS_ACCOUNT_NUMBER}-{AWS_REGION_EU_WEST_1}-ee26b0dd4",
    -                    "ProductArn": f"arn:aws:securityhub:{AWS_REGION_EU_WEST_1}::product/prowler/prowler",
    -                    "RecordState": "ACTIVE",
    -                    "ProductFields": {
    -                        "ProviderName": "Prowler",
    -                        "ProviderVersion": prowler_version,
    -                        "ProwlerResourceName": "test",
    -                    },
    -                    "GeneratorId": "prowler-iam_user_accesskey_unused",
    -                    "AwsAccountId": f"{AWS_ACCOUNT_NUMBER}",
    -                    "Types": ["Software and Configuration Checks"],
    -                    "FirstObservedAt": timestamp_utc.strftime("%Y-%m-%dT%H:%M:%SZ"),
    -                    "UpdatedAt": timestamp_utc.strftime("%Y-%m-%dT%H:%M:%SZ"),
    -                    "CreatedAt": timestamp_utc.strftime("%Y-%m-%dT%H:%M:%SZ"),
    -                    "Severity": {"Label": "LOW"},
    -                    "Title": "Ensure Access Keys unused are disabled",
    -                    "Description": "test",
    -                    "Resources": [
    -                        {
    -                            "Type": "AwsIamAccessAnalyzer",
    -                            "Id": "test",
    -                            "Partition": "aws",
    -                            "Region": f"{AWS_REGION_EU_WEST_1}",
    -                        }
    -                    ],
    -                    "Compliance": {
    -                        "Status": "PASSED",
    -                        "RelatedRequirements": [],
    -                        "AssociatedStandards": [],
    -                    },
    -                    "Remediation": {
    -                        "Recommendation": {
    -                            "Text": "Run sudo yum update and cross your fingers and toes.",
    -                            "Url": "https://myfp.com/recommendations/dangerous_things_and_how_to_fix_them.html",
    -                        }
    -                    },
    -                }
    -            ],
    +            AWS_REGION_EU_WEST_1: [get_security_hub_finding("PASSED")],
             }
     
         @patch("botocore.client.BaseClient._make_api_call", new=mock_make_api_call)
    diff --git a/tests/providers/aws/lib/service/service_test.py b/tests/providers/aws/lib/service/service_test.py
    index f9f304ea40a..3ef56e745d6 100644
    --- a/tests/providers/aws/lib/service/service_test.py
    +++ b/tests/providers/aws/lib/service/service_test.py
    @@ -1,20 +1,21 @@
    -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"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_ACCOUNT_ARN,
    +    AWS_ACCOUNT_NUMBER,
    +    AWS_COMMERCIAL_PARTITION,
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_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}
    +def mock_generate_regional_clients(service, audit_info):
    +    regional_client = audit_info.audit_session.client(
    +        service, region_name=AWS_REGION_US_EAST_1
    +    )
    +    regional_client.region = AWS_REGION_US_EAST_1
    +    return {AWS_REGION_US_EAST_1: regional_client}
     
     
     @patch(
    @@ -22,50 +23,40 @@ def mock_generate_regional_clients(service, audit_info, _):
         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)
    +        service_name = "s3"
    +        audit_info = set_mocked_aws_audit_info()
    +        service = AWSService(service_name, 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.audited_partition == AWS_COMMERCIAL_PARTITION
             assert service.audit_resources == []
             assert service.audited_checks == []
             assert service.session == audit_info.audit_session
    -        assert service.service == "s3"
    +        assert service.service == service_name
             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"
    +        assert (
    +            service.regional_clients[AWS_REGION_US_EAST_1].__class__.__name__
    +            == service_name.upper()
    +        )
    +        assert service.region == AWS_REGION_US_EAST_1
    +        assert service.client.__class__.__name__ == service_name.upper()
    +
    +    def test_AWSService_init_global_service(self):
    +        service_name = "cloudfront"
    +        audit_info = set_mocked_aws_audit_info()
    +        service = AWSService(service_name, audit_info, global_service=True)
    +
    +        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_COMMERCIAL_PARTITION
    +        assert service.audit_resources == []
    +        assert service.audited_checks == []
    +        assert service.session == audit_info.audit_session
    +        assert service.service == service_name
    +        assert not hasattr(service, "regional_clients")
    +        assert service.region == AWS_REGION_US_EAST_1
    +        assert service.client.__class__.__name__ == "CloudFront"
    diff --git a/tests/providers/aws/services/accessanalyzer/accessanalyzer_service_test.py b/tests/providers/aws/services/accessanalyzer/accessanalyzer_service_test.py
    index fe5f5926742..ac7ae7fa13b 100644
    --- a/tests/providers/aws/services/accessanalyzer/accessanalyzer_service_test.py
    +++ b/tests/providers/aws/services/accessanalyzer/accessanalyzer_service_test.py
    @@ -1,19 +1,15 @@
     from unittest.mock import patch
     
     import botocore
    -from boto3 import session
     
    -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"
    -
    -AWS_ACCOUNT_NUMBER = "123456789012"
    -
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_REGION_EU_WEST_1,
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     # Mocking Access Analyzer Calls
     make_api_call = botocore.client.BaseClient._make_api_call
    @@ -58,10 +54,12 @@ 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, _):
    -    regional_client = audit_info.audit_session.client(service, region_name=AWS_REGION)
    -    regional_client.region = AWS_REGION
    -    return {AWS_REGION: regional_client}
    +def mock_generate_regional_clients(service, audit_info):
    +    regional_client = audit_info.audit_session.client(
    +        service, region_name=AWS_REGION_EU_WEST_1
    +    )
    +    regional_client.region = AWS_REGION_EU_WEST_1
    +    return {AWS_REGION_EU_WEST_1: regional_client}
     
     
     # Patch every AWS call using Boto3 and generate_regional_clients to have 1 client
    @@ -71,66 +69,46 @@ def mock_generate_regional_clients(service, audit_info, _):
         new=mock_generate_regional_clients,
     )
     class Test_AccessAnalyzer_Service:
    -    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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=["us-east-1", "eu-west-1"],
    -            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
    -
         # Test AccessAnalyzer Client
         def test__get_client__(self):
    -        access_analyzer = AccessAnalyzer(self.set_mocked_audit_info())
    +        access_analyzer = AccessAnalyzer(
    +            set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1])
    +        )
             assert (
    -            access_analyzer.regional_clients[AWS_REGION].__class__.__name__
    +            access_analyzer.regional_clients[AWS_REGION_EU_WEST_1].__class__.__name__
                 == "AccessAnalyzer"
             )
     
         # Test AccessAnalyzer Session
         def test__get_session__(self):
    -        access_analyzer = AccessAnalyzer(self.set_mocked_audit_info())
    +        access_analyzer = AccessAnalyzer(
    +            set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1])
    +        )
             assert access_analyzer.session.__class__.__name__ == "Session"
     
         # Test AccessAnalyzer Service
         def test__get_service__(self):
    -        access_analyzer = AccessAnalyzer(self.set_mocked_audit_info())
    +        access_analyzer = AccessAnalyzer(
    +            set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1])
    +        )
             assert access_analyzer.service == "accessanalyzer"
     
         def test__list_analyzers__(self):
    -        access_analyzer = AccessAnalyzer(self.set_mocked_audit_info())
    +        access_analyzer = AccessAnalyzer(
    +            set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1])
    +        )
             assert len(access_analyzer.analyzers) == 1
             assert access_analyzer.analyzers[0].arn == "ARN"
             assert access_analyzer.analyzers[0].name == "Test Analyzer"
             assert access_analyzer.analyzers[0].status == "ACTIVE"
             assert access_analyzer.analyzers[0].tags == [{"test": "test"}]
             assert access_analyzer.analyzers[0].type == "ACCOUNT"
    -        assert access_analyzer.analyzers[0].region == AWS_REGION
    +        assert access_analyzer.analyzers[0].region == AWS_REGION_EU_WEST_1
     
         def test__list_findings__(self):
    -        access_analyzer = AccessAnalyzer(self.set_mocked_audit_info())
    +        access_analyzer = AccessAnalyzer(
    +            set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1])
    +        )
             assert len(access_analyzer.analyzers) == 1
             assert len(access_analyzer.analyzers[0].findings) == 1
             assert access_analyzer.analyzers[0].findings[0].status == "ARCHIVED"
    diff --git a/tests/providers/aws/services/account/account_service_test.py b/tests/providers/aws/services/account/account_service_test.py
    index 61226912653..a7a7018c672 100644
    --- a/tests/providers/aws/services/account/account_service_test.py
    +++ b/tests/providers/aws/services/account/account_service_test.py
    @@ -1,14 +1,11 @@
     import botocore
    -from boto3 import session
     from mock import patch
     
    -from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info
     from prowler.providers.aws.services.account.account_service import Account, Contact
    -from prowler.providers.common.models import Audit_Metadata
    -
    -AWS_ACCOUNT_NUMBER = "123456789012"
    -AWS_ACCOUNT_ARN = f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root"
    -AWS_REGION = "us-east-1"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_ACCOUNT_NUMBER,
    +    set_mocked_aws_audit_info,
    +)
     
     # Mocking Access Analyzer Calls
     make_api_call = botocore.client.BaseClient._make_api_call
    @@ -56,65 +53,34 @@ def mock_make_api_call(self, operation_name, kwargs):
     # Patch every AWS call using Boto3
     @patch("botocore.client.BaseClient._make_api_call", new=mock_make_api_call)
     class Test_Account_Service:
    -    # 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",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=None,
    -            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
    -
         # Test Account Service
         def test_service(self):
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info()
             account = Account(audit_info)
             assert account.service == "account"
     
         # Test Account Client
         def test_client(self):
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info()
             account = Account(audit_info)
             assert account.client.__class__.__name__ == "Account"
     
         # Test Account Session
         def test__get_session__(self):
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info()
             account = Account(audit_info)
             assert account.session.__class__.__name__ == "Session"
     
         # Test Account Session
         def test_audited_account(self):
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info()
             account = Account(audit_info)
             assert account.audited_account == AWS_ACCOUNT_NUMBER
     
         # Test Account Get Account Contacts
         def test_get_account_contacts(self):
             # Account client for this test class
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info()
             account = Account(audit_info)
             assert account.number_of_contacts == 4
             assert account.contact_base == Contact(
    diff --git a/tests/providers/aws/services/acm/acm_certificates_expiration_check/acm_certificates_expiration_check_test.py b/tests/providers/aws/services/acm/acm_certificates_expiration_check/acm_certificates_expiration_check_test.py
    index dee88196c58..010e84f1121 100644
    --- a/tests/providers/aws/services/acm/acm_certificates_expiration_check/acm_certificates_expiration_check_test.py
    +++ b/tests/providers/aws/services/acm/acm_certificates_expiration_check/acm_certificates_expiration_check_test.py
    @@ -32,6 +32,7 @@ def test_acm_certificate_expirated(self):
             certificate_arn = f"arn:aws:acm:{AWS_REGION}:{AWS_ACCOUNT_NUMBER}:certificate/{certificate_id}"
             certificate_name = "test-certificate.com"
             certificate_type = "AMAZON_ISSUED"
    +        expiration_days = 5
     
             acm_client = mock.MagicMock
             acm_client.certificates = [
    @@ -40,7 +41,50 @@ def test_acm_certificate_expirated(self):
                     id=certificate_id,
                     name=certificate_name,
                     type=certificate_type,
    -                expiration_days=5,
    +                expiration_days=expiration_days,
    +                transparency_logging=True,
    +                region=AWS_REGION,
    +            )
    +        ]
    +
    +        with mock.patch(
    +            "prowler.providers.aws.services.acm.acm_service.ACM",
    +            new=acm_client,
    +        ):
    +            # Test Check
    +            from prowler.providers.aws.services.acm.acm_certificates_expiration_check.acm_certificates_expiration_check import (
    +                acm_certificates_expiration_check,
    +            )
    +
    +            check = acm_certificates_expiration_check()
    +            result = check.execute()
    +
    +            assert len(result) == 1
    +            assert result[0].status == "FAIL"
    +            assert (
    +                result[0].status_extended
    +                == f"ACM Certificate {certificate_id} for {certificate_name} is about to expire in {expiration_days} days."
    +            )
    +            assert result[0].resource_id == certificate_id
    +            assert result[0].resource_arn == certificate_arn
    +            assert result[0].region == AWS_REGION
    +            assert result[0].resource_tags == []
    +
    +    def test_acm_certificate_expirated_long_time(self):
    +        certificate_id = str(uuid.uuid4())
    +        certificate_arn = f"arn:aws:acm:{AWS_REGION}:{AWS_ACCOUNT_NUMBER}:certificate/{certificate_id}"
    +        certificate_name = "test-certificate.com"
    +        certificate_type = "AMAZON_ISSUED"
    +        expiration_days = -400
    +
    +        acm_client = mock.MagicMock
    +        acm_client.certificates = [
    +            Certificate(
    +                arn=certificate_arn,
    +                id=certificate_id,
    +                name=certificate_name,
    +                type=certificate_type,
    +                expiration_days=expiration_days,
                     transparency_logging=True,
                     region=AWS_REGION,
                 )
    @@ -62,7 +106,7 @@ def test_acm_certificate_expirated(self):
                 assert result[0].status == "FAIL"
                 assert (
                     result[0].status_extended
    -                == f"ACM Certificate {certificate_id} for {certificate_name} is about to expire in {DAYS_TO_EXPIRE_THRESHOLD} days."
    +                == f"ACM Certificate {certificate_id} for {certificate_name} has expired ({abs(expiration_days)} days ago)."
                 )
                 assert result[0].resource_id == certificate_id
                 assert result[0].resource_arn == certificate_arn
    diff --git a/tests/providers/aws/services/acm/acm_service_test.py b/tests/providers/aws/services/acm/acm_service_test.py
    index d41197939bb..5806b1aa847 100644
    --- a/tests/providers/aws/services/acm/acm_service_test.py
    +++ b/tests/providers/aws/services/acm/acm_service_test.py
    @@ -2,26 +2,20 @@
     from datetime import datetime
     
     import botocore
    -from boto3 import session
     from freezegun import freeze_time
     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
    -
    -
    -AWS_ACCOUNT_NUMBER = "123456789012"
    -AWS_REGION = "us-east-1"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_ACCOUNT_NUMBER,
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     # Mocking Access Analyzer Calls
     make_api_call = botocore.client.BaseClient._make_api_call
     
    -certificate_arn = (
    -    f"arn:aws:acm:{AWS_REGION}:{AWS_ACCOUNT_NUMBER}:certificate/{str(uuid.uuid4())}"
    -)
    +certificate_arn = f"arn:aws:acm:{AWS_REGION_US_EAST_1}:{AWS_ACCOUNT_NUMBER}:certificate/{str(uuid.uuid4())}"
     certificate_name = "test-certificate.com"
     certificate_type = "AMAZON_ISSUED"
     
    @@ -80,10 +74,12 @@ def mock_make_api_call(self, operation_name, kwargs):
     
     
     # Mock generate_regional_clients()
    -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}
    +def mock_generate_regional_clients(service, audit_info):
    +    regional_client = audit_info.audit_session.client(
    +        service, region_name=AWS_REGION_US_EAST_1
    +    )
    +    regional_client.region = AWS_REGION_US_EAST_1
    +    return {AWS_REGION_US_EAST_1: regional_client}
     
     
     # Patch every AWS call using Boto3 and generate_regional_clients to have 1 client
    @@ -96,42 +92,11 @@ def mock_generate_regional_clients(service, audit_info, _):
     @freeze_time("2023-01-01")
     # FIXME: Pending Moto PR to update ACM responses
     class Test_ACM_Service:
    -    # 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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=None,
    -            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
    -
         # Test ACM Service
         # @mock_acm
         def test_service(self):
             # ACM client for this test class
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info()
             acm = ACM(audit_info)
             assert acm.service == "acm"
     
    @@ -139,7 +104,7 @@ def test_service(self):
         # @mock_acm
         def test_client(self):
             # ACM client for this test class
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info()
             acm = ACM(audit_info)
             for regional_client in acm.regional_clients.values():
                 assert regional_client.__class__.__name__ == "ACM"
    @@ -148,7 +113,7 @@ def test_client(self):
         # @mock_acm
         def test__get_session__(self):
             # ACM client for this test class
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info()
             acm = ACM(audit_info)
             assert acm.session.__class__.__name__ == "Session"
     
    @@ -156,7 +121,7 @@ def test__get_session__(self):
         # @mock_acm
         def test_audited_account(self):
             # ACM client for this test class
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info()
             acm = ACM(audit_info)
             assert acm.audited_account == AWS_ACCOUNT_NUMBER
     
    @@ -171,7 +136,7 @@ def test__list_and_describe_certificates__(self):
             # )
     
             # ACM client for this test class
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info()
             acm = ACM(audit_info)
             assert len(acm.certificates) == 1
             assert acm.certificates[0].arn == certificate_arn
    @@ -179,7 +144,7 @@ def test__list_and_describe_certificates__(self):
             assert acm.certificates[0].type == certificate_type
             assert acm.certificates[0].expiration_days == 365
             assert acm.certificates[0].transparency_logging is False
    -        assert acm.certificates[0].region == AWS_REGION
    +        assert acm.certificates[0].region == AWS_REGION_US_EAST_1
     
         # Test ACM List Tags
         # @mock_acm
    @@ -192,7 +157,7 @@ def test__list_tags_for_certificate__(self):
             # )
     
             # ACM client for this test class
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info()
             acm = ACM(audit_info)
             assert len(acm.certificates) == 1
             assert acm.certificates[0].tags == [
    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 e1117b8847f..402c75f84ef 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
    @@ -1,55 +1,26 @@
     from unittest import mock
     
    -from boto3 import client, session
    -from moto import mock_apigateway, mock_iam, mock_lambda
    -from moto.core import DEFAULT_ACCOUNT_ID as ACCOUNT_ID
    +from boto3 import client
    +from moto import mock_aws
     
    -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"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_ACCOUNT_NUMBER,
    +    AWS_REGION_EU_WEST_1,
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     
     class Test_apigateway_restapi_authorizers_enabled:
    -    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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=["us-east-1", "eu-west-1"],
    -            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
    -
    -    @mock_apigateway
    +    @mock_aws
         def test_apigateway_no_rest_apis(self):
             from prowler.providers.aws.services.apigateway.apigateway_service import (
                 APIGateway,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -68,13 +39,11 @@ def test_apigateway_no_rest_apis(self):
     
                 assert len(result) == 0
     
    -    @mock_apigateway
    -    @mock_iam
    -    @mock_lambda
    +    @mock_aws
         def test_apigateway_one_rest_api_with_lambda_authorizer(self):
             # Create APIGateway Mocked Resources
    -        apigateway_client = client("apigateway", region_name=AWS_REGION)
    -        lambda_client = client("lambda", region_name=AWS_REGION)
    +        apigateway_client = client("apigateway", region_name=AWS_REGION_US_EAST_1)
    +        lambda_client = client("lambda", region_name=AWS_REGION_US_EAST_1)
             iam_client = client("iam")
             # Create APIGateway Rest API
             role_arn = iam_client.create_role(
    @@ -97,13 +66,15 @@ def test_apigateway_one_rest_api_with_lambda_authorizer(self):
                 name="test",
                 restApiId=rest_api["id"],
                 type="TOKEN",
    -            authorizerUri=f"arn:aws:apigateway:{apigateway_client.meta.region_name}:lambda:path/2015-03-31/functions/arn:aws:lambda:{apigateway_client.meta.region_name}:{ACCOUNT_ID}:function:{authorizer['FunctionName']}/invocations",
    +            authorizerUri=f"arn:aws:apigateway:{apigateway_client.meta.region_name}:lambda:path/2015-03-31/functions/arn:aws:lambda:{apigateway_client.meta.region_name}:{AWS_ACCOUNT_NUMBER}:function:{authorizer['FunctionName']}/invocations",
             )
             from prowler.providers.aws.services.apigateway.apigateway_service import (
                 APIGateway,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -124,20 +95,20 @@ def test_apigateway_one_rest_api_with_lambda_authorizer(self):
                 assert len(result) == 1
                 assert (
                     result[0].status_extended
    -                == f"API Gateway test-rest-api ID {rest_api['id']} has an authorizer configured."
    +                == f"API Gateway test-rest-api ID {rest_api['id']} has an authorizer configured at api level"
                 )
                 assert result[0].resource_id == "test-rest-api"
                 assert (
                     result[0].resource_arn
    -                == f"arn:{current_audit_info.audited_partition}:apigateway:{AWS_REGION}::/restapis/{rest_api['id']}"
    +                == f"arn:{current_audit_info.audited_partition}:apigateway:{AWS_REGION_US_EAST_1}::/restapis/{rest_api['id']}"
                 )
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_US_EAST_1
                 assert result[0].resource_tags == [{}]
     
    -    @mock_apigateway
    +    @mock_aws
         def test_apigateway_one_rest_api_without_lambda_authorizer(self):
             # Create APIGateway Mocked Resources
    -        apigateway_client = client("apigateway", region_name=AWS_REGION)
    +        apigateway_client = client("apigateway", region_name=AWS_REGION_US_EAST_1)
             # Create APIGateway Rest API
             rest_api = apigateway_client.create_rest_api(
                 name="test-rest-api",
    @@ -146,7 +117,329 @@ def test_apigateway_one_rest_api_without_lambda_authorizer(self):
                 APIGateway,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
    +
    +        with mock.patch(
    +            "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    +            new=current_audit_info,
    +        ), mock.patch(
    +            "prowler.providers.aws.services.apigateway.apigateway_restapi_authorizers_enabled.apigateway_restapi_authorizers_enabled.apigateway_client",
    +            new=APIGateway(current_audit_info),
    +        ):
    +            # Test Check
    +            from prowler.providers.aws.services.apigateway.apigateway_restapi_authorizers_enabled.apigateway_restapi_authorizers_enabled import (
    +                apigateway_restapi_authorizers_enabled,
    +            )
    +
    +            check = apigateway_restapi_authorizers_enabled()
    +            result = check.execute()
    +
    +            assert result[0].status == "FAIL"
    +            assert len(result) == 1
    +            assert (
    +                result[0].status_extended
    +                == f"API Gateway test-rest-api ID {rest_api['id']} does not have an authorizer configured at api level."
    +            )
    +            assert result[0].resource_id == "test-rest-api"
    +            assert (
    +                result[0].resource_arn
    +                == f"arn:{current_audit_info.audited_partition}:apigateway:{AWS_REGION_US_EAST_1}::/restapis/{rest_api['id']}"
    +            )
    +            assert result[0].region == AWS_REGION_US_EAST_1
    +            assert result[0].resource_tags == [{}]
    +
    +    @mock_aws
    +    def test_apigateway_one_rest_api_without_api_or_methods_authorizer(self):
    +        # Create APIGateway Mocked Resources
    +        apigateway_client = client("apigateway", region_name=AWS_REGION_US_EAST_1)
    +
    +        rest_api = apigateway_client.create_rest_api(
    +            name="test-rest-api",
    +        )
    +
    +        default_resource_id = apigateway_client.get_resources(restApiId=rest_api["id"])[
    +            "items"
    +        ][0]["id"]
    +
    +        api_resource = apigateway_client.create_resource(
    +            restApiId=rest_api["id"], parentId=default_resource_id, pathPart="test"
    +        )
    +
    +        apigateway_client.put_method(
    +            restApiId=rest_api["id"],
    +            resourceId=api_resource["id"],
    +            httpMethod="GET",
    +            authorizationType="NONE",
    +        )
    +
    +        from prowler.providers.aws.services.apigateway.apigateway_service import (
    +            APIGateway,
    +        )
    +
    +        current_audit_info = current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
    +
    +        with mock.patch(
    +            "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    +            new=current_audit_info,
    +        ), mock.patch(
    +            "prowler.providers.aws.services.apigateway.apigateway_restapi_authorizers_enabled.apigateway_restapi_authorizers_enabled.apigateway_client",
    +            new=APIGateway(current_audit_info),
    +        ):
    +            # Test Check
    +            from prowler.providers.aws.services.apigateway.apigateway_restapi_authorizers_enabled.apigateway_restapi_authorizers_enabled import (
    +                apigateway_restapi_authorizers_enabled,
    +            )
    +
    +            check = apigateway_restapi_authorizers_enabled()
    +            result = check.execute()
    +
    +            assert result[0].status == "FAIL"
    +            assert len(result) == 1
    +            assert (
    +                result[0].status_extended
    +                == f"API Gateway test-rest-api ID {rest_api['id']} does not have authorizers at api level and the following paths and methods are unauthorized: /test -> GET."
    +            )
    +            assert result[0].resource_id == "test-rest-api"
    +            assert (
    +                result[0].resource_arn
    +                == f"arn:{current_audit_info.audited_partition}:apigateway:{AWS_REGION_US_EAST_1}::/restapis/{rest_api['id']}"
    +            )
    +            assert result[0].region == AWS_REGION_US_EAST_1
    +            assert result[0].resource_tags == [{}]
    +
    +    @mock_aws
    +    def test_apigateway_one_rest_api_without_api_auth_but_one_method_auth(self):
    +        # Create APIGateway Mocked Resources
    +        apigateway_client = client("apigateway", region_name=AWS_REGION_US_EAST_1)
    +
    +        rest_api = apigateway_client.create_rest_api(
    +            name="test-rest-api",
    +        )
    +
    +        default_resource_id = apigateway_client.get_resources(restApiId=rest_api["id"])[
    +            "items"
    +        ][0]["id"]
    +
    +        api_resource = apigateway_client.create_resource(
    +            restApiId=rest_api["id"], parentId=default_resource_id, pathPart="test"
    +        )
    +
    +        apigateway_client.put_method(
    +            restApiId=rest_api["id"],
    +            resourceId=api_resource["id"],
    +            httpMethod="GET",
    +            authorizationType="AWS_IAM",
    +        )
    +
    +        from prowler.providers.aws.services.apigateway.apigateway_service import (
    +            APIGateway,
    +        )
    +
    +        current_audit_info = current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
    +
    +        with mock.patch(
    +            "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    +            new=current_audit_info,
    +        ), mock.patch(
    +            "prowler.providers.aws.services.apigateway.apigateway_restapi_authorizers_enabled.apigateway_restapi_authorizers_enabled.apigateway_client",
    +            new=APIGateway(current_audit_info),
    +        ):
    +            # Test Check
    +            from prowler.providers.aws.services.apigateway.apigateway_restapi_authorizers_enabled.apigateway_restapi_authorizers_enabled import (
    +                apigateway_restapi_authorizers_enabled,
    +            )
    +
    +            check = apigateway_restapi_authorizers_enabled()
    +            result = check.execute()
    +
    +            assert result[0].status == "PASS"
    +            assert len(result) == 1
    +            assert (
    +                result[0].status_extended
    +                == f"API Gateway test-rest-api ID {rest_api['id']} has all methods authorized"
    +            )
    +            assert result[0].resource_id == "test-rest-api"
    +            assert (
    +                result[0].resource_arn
    +                == f"arn:{current_audit_info.audited_partition}:apigateway:{AWS_REGION_US_EAST_1}::/restapis/{rest_api['id']}"
    +            )
    +            assert result[0].region == AWS_REGION_US_EAST_1
    +            assert result[0].resource_tags == [{}]
    +
    +    @mock_aws
    +    def test_apigateway_one_rest_api_without_api_auth_but_methods_auth_and_not(self):
    +        # Create APIGateway Mocked Resources
    +        apigateway_client = client("apigateway", region_name=AWS_REGION_US_EAST_1)
    +
    +        rest_api = apigateway_client.create_rest_api(
    +            name="test-rest-api",
    +        )
    +
    +        default_resource_id = apigateway_client.get_resources(restApiId=rest_api["id"])[
    +            "items"
    +        ][0]["id"]
    +
    +        api_resource = apigateway_client.create_resource(
    +            restApiId=rest_api["id"], parentId=default_resource_id, pathPart="test"
    +        )
    +
    +        apigateway_client.put_method(
    +            restApiId=rest_api["id"],
    +            resourceId=api_resource["id"],
    +            httpMethod="POST",
    +            authorizationType="AWS_IAM",
    +        )
    +
    +        apigateway_client.put_method(
    +            restApiId=rest_api["id"],
    +            resourceId=api_resource["id"],
    +            httpMethod="GET",
    +            authorizationType="NONE",
    +        )
    +
    +        from prowler.providers.aws.services.apigateway.apigateway_service import (
    +            APIGateway,
    +        )
    +
    +        current_audit_info = current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
    +
    +        with mock.patch(
    +            "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    +            new=current_audit_info,
    +        ), mock.patch(
    +            "prowler.providers.aws.services.apigateway.apigateway_restapi_authorizers_enabled.apigateway_restapi_authorizers_enabled.apigateway_client",
    +            new=APIGateway(current_audit_info),
    +        ):
    +            # Test Check
    +            from prowler.providers.aws.services.apigateway.apigateway_restapi_authorizers_enabled.apigateway_restapi_authorizers_enabled import (
    +                apigateway_restapi_authorizers_enabled,
    +            )
    +
    +            check = apigateway_restapi_authorizers_enabled()
    +            result = check.execute()
    +
    +            assert result[0].status == "FAIL"
    +            assert len(result) == 1
    +            assert (
    +                result[0].status_extended
    +                == f"API Gateway test-rest-api ID {rest_api['id']} does not have authorizers at api level and the following paths and methods are unauthorized: /test -> GET."
    +            )
    +            assert result[0].resource_id == "test-rest-api"
    +            assert (
    +                result[0].resource_arn
    +                == f"arn:{current_audit_info.audited_partition}:apigateway:{AWS_REGION_US_EAST_1}::/restapis/{rest_api['id']}"
    +            )
    +            assert result[0].region == AWS_REGION_US_EAST_1
    +            assert result[0].resource_tags == [{}]
    +
    +    @mock_aws
    +    def test_apigateway_one_rest_api_without_api_auth_but_methods_not_auth_and_auth(
    +        self,
    +    ):
    +        # Create APIGateway Mocked Resources
    +        apigateway_client = client("apigateway", region_name=AWS_REGION_US_EAST_1)
    +
    +        rest_api = apigateway_client.create_rest_api(
    +            name="test-rest-api",
    +        )
    +
    +        default_resource_id = apigateway_client.get_resources(restApiId=rest_api["id"])[
    +            "items"
    +        ][0]["id"]
    +
    +        api_resource = apigateway_client.create_resource(
    +            restApiId=rest_api["id"], parentId=default_resource_id, pathPart="test"
    +        )
    +
    +        apigateway_client.put_method(
    +            restApiId=rest_api["id"],
    +            resourceId=api_resource["id"],
    +            httpMethod="GET",
    +            authorizationType="NONE",
    +        )
    +
    +        apigateway_client.put_method(
    +            restApiId=rest_api["id"],
    +            resourceId=api_resource["id"],
    +            httpMethod="POST",
    +            authorizationType="AWS_IAM",
    +        )
    +
    +        from prowler.providers.aws.services.apigateway.apigateway_service import (
    +            APIGateway,
    +        )
    +
    +        current_audit_info = current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
    +
    +        with mock.patch(
    +            "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    +            new=current_audit_info,
    +        ), mock.patch(
    +            "prowler.providers.aws.services.apigateway.apigateway_restapi_authorizers_enabled.apigateway_restapi_authorizers_enabled.apigateway_client",
    +            new=APIGateway(current_audit_info),
    +        ):
    +            # Test Check
    +            from prowler.providers.aws.services.apigateway.apigateway_restapi_authorizers_enabled.apigateway_restapi_authorizers_enabled import (
    +                apigateway_restapi_authorizers_enabled,
    +            )
    +
    +            check = apigateway_restapi_authorizers_enabled()
    +            result = check.execute()
    +
    +            assert result[0].status == "FAIL"
    +            assert len(result) == 1
    +            assert (
    +                result[0].status_extended
    +                == f"API Gateway test-rest-api ID {rest_api['id']} does not have authorizers at api level and the following paths and methods are unauthorized: /test -> GET."
    +            )
    +            assert result[0].resource_id == "test-rest-api"
    +            assert (
    +                result[0].resource_arn
    +                == f"arn:{current_audit_info.audited_partition}:apigateway:{AWS_REGION_US_EAST_1}::/restapis/{rest_api['id']}"
    +            )
    +            assert result[0].region == AWS_REGION_US_EAST_1
    +            assert result[0].resource_tags == [{}]
    +
    +    @mock_aws
    +    def test_apigateway_one_rest_api_without_authorizers_with_various_resources_without_endpoints(
    +        self,
    +    ):
    +        # Create APIGateway Mocked Resources
    +        apigateway_client = client("apigateway", region_name=AWS_REGION_US_EAST_1)
    +
    +        rest_api = apigateway_client.create_rest_api(
    +            name="test-rest-api",
    +        )
    +
    +        default_resource_id = apigateway_client.get_resources(restApiId=rest_api["id"])[
    +            "items"
    +        ][0]["id"]
    +
    +        apigateway_client.create_resource(
    +            restApiId=rest_api["id"], parentId=default_resource_id, pathPart="test"
    +        )
    +
    +        apigateway_client.create_resource(
    +            restApiId=rest_api["id"], parentId=default_resource_id, pathPart="test2"
    +        )
    +
    +        from prowler.providers.aws.services.apigateway.apigateway_service import (
    +            APIGateway,
    +        )
    +
    +        current_audit_info = current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -167,12 +460,12 @@ def test_apigateway_one_rest_api_without_lambda_authorizer(self):
                 assert len(result) == 1
                 assert (
                     result[0].status_extended
    -                == f"API Gateway test-rest-api ID {rest_api['id']} does not have an authorizer configured."
    +                == f"API Gateway test-rest-api ID {rest_api['id']} does not have an authorizer configured at api level."
                 )
                 assert result[0].resource_id == "test-rest-api"
                 assert (
                     result[0].resource_arn
    -                == f"arn:{current_audit_info.audited_partition}:apigateway:{AWS_REGION}::/restapis/{rest_api['id']}"
    +                == f"arn:{current_audit_info.audited_partition}:apigateway:{AWS_REGION_US_EAST_1}::/restapis/{rest_api['id']}"
                 )
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_US_EAST_1
                 assert result[0].resource_tags == [{}]
    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 cc52c3a27b1..8b16ed62815 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
    @@ -1,52 +1,21 @@
     from unittest import mock
     
    -from boto3 import client, session
    -from moto import mock_apigateway
    +from boto3 import client
    +from moto import mock_aws
     
    -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"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_REGION_EU_WEST_1,
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     
     class Test_apigateway_restapi_client_certificate_enabled:
    -    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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=["us-east-1", "eu-west-1"],
    -            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
    -
    -    @mock_apigateway
    +    @mock_aws
         def test_apigateway_no_stages(self):
             # Create APIGateway Mocked Resources
    -        apigateway_client = client("apigateway", region_name=AWS_REGION)
    +        apigateway_client = client("apigateway", region_name=AWS_REGION_US_EAST_1)
             # Create APIGateway Rest API
             apigateway_client.create_rest_api(
                 name="test-rest-api",
    @@ -55,7 +24,9 @@ def test_apigateway_no_stages(self):
                 APIGateway,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -74,10 +45,10 @@ def test_apigateway_no_stages(self):
     
                 assert len(result) == 0
     
    -    @mock_apigateway
    +    @mock_aws
         def test_apigateway_one_stage_without_certificate(self):
             # Create APIGateway Mocked Resources
    -        apigateway_client = client("apigateway", region_name=AWS_REGION)
    +        apigateway_client = client("apigateway", region_name=AWS_REGION_US_EAST_1)
             # Create APIGateway Deployment Stage
             rest_api = apigateway_client.create_rest_api(
                 name="test-rest-api",
    @@ -113,7 +84,9 @@ def test_apigateway_one_stage_without_certificate(self):
                 APIGateway,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -139,15 +112,15 @@ def test_apigateway_one_stage_without_certificate(self):
                 assert result[0].resource_id == "test-rest-api"
                 assert (
                     result[0].resource_arn
    -                == f"arn:{current_audit_info.audited_partition}:apigateway:{AWS_REGION}::/restapis/{rest_api['id']}/stages/test"
    +                == f"arn:{current_audit_info.audited_partition}:apigateway:{AWS_REGION_US_EAST_1}::/restapis/{rest_api['id']}/stages/test"
                 )
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_US_EAST_1
                 assert result[0].resource_tags == [None]
     
    -    @mock_apigateway
    +    @mock_aws
         def test_apigateway_one_stage_with_certificate(self):
             # Create APIGateway Mocked Resources
    -        apigateway_client = client("apigateway", region_name=AWS_REGION)
    +        apigateway_client = client("apigateway", region_name=AWS_REGION_US_EAST_1)
             # Create APIGateway Deployment Stage
             rest_api = apigateway_client.create_rest_api(
                 name="test-rest-api",
    @@ -156,7 +129,9 @@ def test_apigateway_one_stage_with_certificate(self):
                 APIGateway,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -173,7 +148,7 @@ def test_apigateway_one_stage_with_certificate(self):
                 service_client.rest_apis[0].stages.append(
                     Stage(
                         name="test",
    -                    arn=f"arn:{current_audit_info.audited_partition}:apigateway:{AWS_REGION}::/restapis/test-rest-api/stages/test",
    +                    arn=f"arn:{current_audit_info.audited_partition}:apigateway:{AWS_REGION_US_EAST_1}::/restapis/test-rest-api/stages/test",
                         logging=True,
                         client_certificate=True,
                         waf=True,
    @@ -192,7 +167,7 @@ def test_apigateway_one_stage_with_certificate(self):
                 assert result[0].resource_id == "test-rest-api"
                 assert (
                     result[0].resource_arn
    -                == f"arn:{current_audit_info.audited_partition}:apigateway:{AWS_REGION}::/restapis/test-rest-api/stages/test"
    +                == f"arn:{current_audit_info.audited_partition}:apigateway:{AWS_REGION_US_EAST_1}::/restapis/test-rest-api/stages/test"
                 )
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_US_EAST_1
                 assert result[0].resource_tags == []
    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 4a913a80b5a..2d8197ff6cf 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
    @@ -1,54 +1,25 @@
     from unittest import mock
     
    -from boto3 import client, session
    -from moto import mock_apigateway
    +from boto3 import client
    +from moto import mock_aws
     
    -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"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_REGION_EU_WEST_1,
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     
     class Test_apigateway_restapi_public:
    -    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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=["us-east-1", "eu-west-1"],
    -            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
    -
    -    @mock_apigateway
    +    @mock_aws
         def test_apigateway_no_rest_apis(self):
             from prowler.providers.aws.services.apigateway.apigateway_service import (
                 APIGateway,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -67,10 +38,10 @@ def test_apigateway_no_rest_apis(self):
     
                 assert len(result) == 0
     
    -    @mock_apigateway
    +    @mock_aws
         def test_apigateway_one_private_rest_api(self):
             # Create APIGateway Mocked Resources
    -        apigateway_client = client("apigateway", region_name=AWS_REGION)
    +        apigateway_client = client("apigateway", region_name=AWS_REGION_US_EAST_1)
             # Create APIGateway Deployment Stage
             rest_api = apigateway_client.create_rest_api(
                 name="test-rest-api",
    @@ -84,7 +55,9 @@ def test_apigateway_one_private_rest_api(self):
                 APIGateway,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -110,15 +83,15 @@ def test_apigateway_one_private_rest_api(self):
                 assert result[0].resource_id == "test-rest-api"
                 assert (
                     result[0].resource_arn
    -                == f"arn:{current_audit_info.audited_partition}:apigateway:{AWS_REGION}::/restapis/{rest_api['id']}"
    +                == f"arn:{current_audit_info.audited_partition}:apigateway:{AWS_REGION_US_EAST_1}::/restapis/{rest_api['id']}"
                 )
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_US_EAST_1
                 assert result[0].resource_tags == [{}]
     
    -    @mock_apigateway
    +    @mock_aws
         def test_apigateway_one_public_rest_api(self):
             # Create APIGateway Mocked Resources
    -        apigateway_client = client("apigateway", region_name=AWS_REGION)
    +        apigateway_client = client("apigateway", region_name=AWS_REGION_US_EAST_1)
             # Create APIGateway Deployment Stage
             rest_api = apigateway_client.create_rest_api(
                 name="test-rest-api",
    @@ -132,7 +105,9 @@ def test_apigateway_one_public_rest_api(self):
                 APIGateway,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -158,7 +133,7 @@ def test_apigateway_one_public_rest_api(self):
                 assert result[0].resource_id == "test-rest-api"
                 assert (
                     result[0].resource_arn
    -                == f"arn:{current_audit_info.audited_partition}:apigateway:{AWS_REGION}::/restapis/{rest_api['id']}"
    +                == f"arn:{current_audit_info.audited_partition}:apigateway:{AWS_REGION_US_EAST_1}::/restapis/{rest_api['id']}"
                 )
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_US_EAST_1
                 assert result[0].resource_tags == [{}]
    diff --git a/tests/providers/aws/services/apigateway/apigateway_endpoint_public_without_authorizer/apigateway_endpoint_public_without_authorizer_test.py b/tests/providers/aws/services/apigateway/apigateway_endpoint_public_without_authorizer/apigateway_endpoint_public_without_authorizer_test.py
    index 1b4c9790337..f68469c96b9 100644
    --- a/tests/providers/aws/services/apigateway/apigateway_endpoint_public_without_authorizer/apigateway_endpoint_public_without_authorizer_test.py
    +++ b/tests/providers/aws/services/apigateway/apigateway_endpoint_public_without_authorizer/apigateway_endpoint_public_without_authorizer_test.py
    @@ -1,56 +1,27 @@
     from unittest import mock
     
    -from boto3 import client, session
    -from moto import mock_apigateway
    +from boto3 import client
    +from moto import mock_aws
     
    -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"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_REGION_EU_WEST_1,
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     API_GW_NAME = "test-rest-api"
     
     
     class Test_apigateway_restapi_public_with_authorizer:
    -    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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=["us-east-1", "eu-west-1"],
    -            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
    -
    -    @mock_apigateway
    +    @mock_aws
         def test_apigateway_no_rest_apis(self):
             from prowler.providers.aws.services.apigateway.apigateway_service import (
                 APIGateway,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -69,10 +40,10 @@ def test_apigateway_no_rest_apis(self):
     
                 assert len(result) == 0
     
    -    @mock_apigateway
    +    @mock_aws
         def test_apigateway_one_public_rest_api_without_authorizer(self):
             # Create APIGateway Mocked Resources
    -        apigateway_client = client("apigateway", region_name=AWS_REGION)
    +        apigateway_client = client("apigateway", region_name=AWS_REGION_US_EAST_1)
             # Create APIGateway Deployment Stage
             rest_api = apigateway_client.create_rest_api(
                 name=API_GW_NAME,
    @@ -86,7 +57,9 @@ def test_apigateway_one_public_rest_api_without_authorizer(self):
                 APIGateway,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -112,15 +85,15 @@ def test_apigateway_one_public_rest_api_without_authorizer(self):
                 assert result[0].resource_id == API_GW_NAME
                 assert (
                     result[0].resource_arn
    -                == f"arn:{current_audit_info.audited_partition}:apigateway:{AWS_REGION}::/restapis/{rest_api['id']}"
    +                == f"arn:{current_audit_info.audited_partition}:apigateway:{AWS_REGION_US_EAST_1}::/restapis/{rest_api['id']}"
                 )
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_US_EAST_1
                 assert result[0].resource_tags == [{}]
     
    -    @mock_apigateway
    +    @mock_aws
         def test_apigateway_one_public_rest_api_with_authorizer(self):
             # Create APIGateway Mocked Resources
    -        apigateway_client = client("apigateway", region_name=AWS_REGION)
    +        apigateway_client = client("apigateway", region_name=AWS_REGION_US_EAST_1)
             # Create APIGateway Deployment Stage
             rest_api = apigateway_client.create_rest_api(
                 name="test-rest-api",
    @@ -137,7 +110,9 @@ def test_apigateway_one_public_rest_api_with_authorizer(self):
                 APIGateway,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -163,7 +138,7 @@ def test_apigateway_one_public_rest_api_with_authorizer(self):
                 assert result[0].resource_id == API_GW_NAME
                 assert (
                     result[0].resource_arn
    -                == f"arn:{current_audit_info.audited_partition}:apigateway:{AWS_REGION}::/restapis/{rest_api['id']}"
    +                == f"arn:{current_audit_info.audited_partition}:apigateway:{AWS_REGION_US_EAST_1}::/restapis/{rest_api['id']}"
                 )
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_US_EAST_1
                 assert result[0].resource_tags == [{}]
    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 e86a547df15..8c84a5b623d 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
    @@ -1,54 +1,25 @@
     from unittest import mock
     
    -from boto3 import client, session
    -from moto import mock_apigateway
    +from boto3 import client
    +from moto import mock_aws
     
    -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"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_REGION_EU_WEST_1,
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     
     class Test_apigateway_restapi_logging_enabled:
    -    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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=["us-east-1", "eu-west-1"],
    -            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
    -
    -    @mock_apigateway
    +    @mock_aws
         def test_apigateway_no_rest_apis(self):
             from prowler.providers.aws.services.apigateway.apigateway_service import (
                 APIGateway,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -67,10 +38,10 @@ def test_apigateway_no_rest_apis(self):
     
                 assert len(result) == 0
     
    -    @mock_apigateway
    +    @mock_aws
         def test_apigateway_one_rest_api_with_logging(self):
             # Create APIGateway Mocked Resources
    -        apigateway_client = client("apigateway", region_name=AWS_REGION)
    +        apigateway_client = client("apigateway", region_name=AWS_REGION_US_EAST_1)
             rest_api = apigateway_client.create_rest_api(
                 name="test-rest-api",
             )
    @@ -116,7 +87,9 @@ def test_apigateway_one_rest_api_with_logging(self):
                 APIGateway,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -142,15 +115,15 @@ def test_apigateway_one_rest_api_with_logging(self):
                 assert result[0].resource_id == "test-rest-api"
                 assert (
                     result[0].resource_arn
    -                == f"arn:{current_audit_info.audited_partition}:apigateway:{AWS_REGION}::/restapis/{rest_api['id']}/stages/test"
    +                == f"arn:{current_audit_info.audited_partition}:apigateway:{AWS_REGION_US_EAST_1}::/restapis/{rest_api['id']}/stages/test"
                 )
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_US_EAST_1
                 assert result[0].resource_tags == [None]
     
    -    @mock_apigateway
    +    @mock_aws
         def test_apigateway_one_rest_api_without_logging(self):
             # Create APIGateway Mocked Resources
    -        apigateway_client = client("apigateway", region_name=AWS_REGION)
    +        apigateway_client = client("apigateway", region_name=AWS_REGION_US_EAST_1)
             # Create APIGateway Rest API
             rest_api = apigateway_client.create_rest_api(
                 name="test-rest-api",
    @@ -187,7 +160,9 @@ def test_apigateway_one_rest_api_without_logging(self):
                 APIGateway,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -213,7 +188,7 @@ def test_apigateway_one_rest_api_without_logging(self):
                 assert result[0].resource_id == "test-rest-api"
                 assert (
                     result[0].resource_arn
    -                == f"arn:{current_audit_info.audited_partition}:apigateway:{AWS_REGION}::/restapis/{rest_api['id']}/stages/test"
    +                == f"arn:{current_audit_info.audited_partition}:apigateway:{AWS_REGION_US_EAST_1}::/restapis/{rest_api['id']}/stages/test"
                 )
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_US_EAST_1
                 assert result[0].resource_tags == [None]
    diff --git a/tests/providers/aws/services/apigateway/apigateway_service_test.py b/tests/providers/aws/services/apigateway/apigateway_service_test.py
    index fc60d02d25d..e4156f95f82 100644
    --- a/tests/providers/aws/services/apigateway/apigateway_service_test.py
    +++ b/tests/providers/aws/services/apigateway/apigateway_service_test.py
    @@ -1,100 +1,69 @@
    -from boto3 import client, session
    -from moto import mock_apigateway
    +from boto3 import client
    +from moto import mock_aws
     
    -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"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_ACCOUNT_NUMBER,
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     
     class Test_APIGateway_Service:
    -    # 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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=None,
    -            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
    -
         # Test APIGateway Service
    -    @mock_apigateway
    +    @mock_aws
         def test_service(self):
             # APIGateway client for this test class
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
             apigateway = APIGateway(audit_info)
             assert apigateway.service == "apigateway"
     
         # Test APIGateway Client
    -    @mock_apigateway
    +    @mock_aws
         def test_client(self):
             # APIGateway client for this test class
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
             apigateway = APIGateway(audit_info)
             for regional_client in apigateway.regional_clients.values():
                 assert regional_client.__class__.__name__ == "APIGateway"
     
         # Test APIGateway Session
    -    @mock_apigateway
    +    @mock_aws
         def test__get_session__(self):
             # APIGateway client for this test class
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
             apigateway = APIGateway(audit_info)
             assert apigateway.session.__class__.__name__ == "Session"
     
         # Test APIGateway Session
    -    @mock_apigateway
    +    @mock_aws
         def test_audited_account(self):
             # APIGateway client for this test class
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
             apigateway = APIGateway(audit_info)
             assert apigateway.audited_account == AWS_ACCOUNT_NUMBER
     
         # Test APIGateway Get Rest APIs
    -    @mock_apigateway
    +    @mock_aws
         def test__get_rest_apis__(self):
             # Generate APIGateway Client
    -        apigateway_client = client("apigateway", region_name=AWS_REGION)
    +        apigateway_client = client("apigateway", region_name=AWS_REGION_US_EAST_1)
             # Create APIGateway Rest API
             apigateway_client.create_rest_api(
                 name="test-rest-api",
             )
             # APIGateway client for this test class
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
             apigateway = APIGateway(audit_info)
             assert len(apigateway.rest_apis) == len(
                 apigateway_client.get_rest_apis()["items"]
             )
     
         # Test APIGateway Get Authorizers
    -    @mock_apigateway
    +    @mock_aws
         def test__get_authorizers__(self):
             # Generate APIGateway Client
    -        apigateway_client = client("apigateway", region_name=AWS_REGION)
    +        apigateway_client = client("apigateway", region_name=AWS_REGION_US_EAST_1)
             # Create APIGateway Rest API
             rest_api = apigateway_client.create_rest_api(
                 name="test-rest-api",
    @@ -106,15 +75,15 @@ def test__get_authorizers__(self):
                 type="TOKEN",
             )
             # APIGateway client for this test class
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
             apigateway = APIGateway(audit_info)
             assert apigateway.rest_apis[0].authorizer is True
     
         # Test APIGateway Get Rest API
    -    @mock_apigateway
    +    @mock_aws
         def test__get_rest_api__(self):
             # Generate APIGateway Client
    -        apigateway_client = client("apigateway", region_name=AWS_REGION)
    +        apigateway_client = client("apigateway", region_name=AWS_REGION_US_EAST_1)
             # Create private APIGateway Rest API
             apigateway_client.create_rest_api(
                 name="test-rest-api",
    @@ -122,16 +91,16 @@ def test__get_rest_api__(self):
                 tags={"test": "test"},
             )
             # APIGateway client for this test class
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
             apigateway = APIGateway(audit_info)
             assert apigateway.rest_apis[0].public_endpoint is False
             assert apigateway.rest_apis[0].tags == [{"test": "test"}]
     
         # Test APIGateway Get Stages
    -    @mock_apigateway
    +    @mock_aws
         def test__get_stages__(self):
             # Generate APIGateway Client
    -        apigateway_client = client("apigateway", region_name=AWS_REGION)
    +        apigateway_client = client("apigateway", region_name=AWS_REGION_US_EAST_1)
             # Create APIGateway Rest API and a deployment stage
             rest_api = apigateway_client.create_rest_api(
                 name="test-rest-api",
    @@ -174,6 +143,48 @@ def test__get_stages__(self):
                     },
                 ],
             )
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
             apigateway = APIGateway(audit_info)
             assert apigateway.rest_apis[0].stages[0].logging is True
    +
    +    # Test APIGateway __get_resources__
    +    @mock_aws
    +    def test__get_resources__(self):
    +        apigateway_client = client("apigateway", region_name=AWS_REGION_US_EAST_1)
    +
    +        rest_api = apigateway_client.create_rest_api(
    +            name="test-rest-api",
    +        )
    +
    +        default_resource_id = apigateway_client.get_resources(restApiId=rest_api["id"])[
    +            "items"
    +        ][0]["id"]
    +
    +        api_resource = apigateway_client.create_resource(
    +            restApiId=rest_api["id"], parentId=default_resource_id, pathPart="test"
    +        )
    +
    +        apigateway_client.put_method(
    +            restApiId=rest_api["id"],
    +            resourceId=api_resource["id"],
    +            httpMethod="GET",
    +            authorizationType="AWS_IAM",
    +        )
    +
    +        apigateway_client.put_method(
    +            restApiId=rest_api["id"],
    +            resourceId=api_resource["id"],
    +            httpMethod="OPTIONS",
    +            authorizationType="AWS_IAM",
    +        )
    +
    +        audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
    +        apigateway = APIGateway(audit_info)
    +
    +        # we skip OPTIONS methods
    +        assert list(apigateway.rest_apis[0].resources[1].resource_methods.keys()) == [
    +            "GET"
    +        ]
    +        assert list(apigateway.rest_apis[0].resources[1].resource_methods.values()) == [
    +            "AWS_IAM"
    +        ]
    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 5919ec829b3..8e037ec5cd9 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
    @@ -1,54 +1,25 @@
     from unittest import mock
     
    -from boto3 import client, session
    -from moto import mock_apigateway, mock_wafv2
    +from boto3 import client
    +from moto import mock_aws
     
    -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"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_REGION_EU_WEST_1,
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     
     class Test_apigateway_restapi_waf_acl_attached:
    -    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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=["us-east-1", "eu-west-1"],
    -            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
    -
    -    @mock_apigateway
    +    @mock_aws
         def test_apigateway_no_rest_apis(self):
             from prowler.providers.aws.services.apigateway.apigateway_service import (
                 APIGateway,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -67,12 +38,11 @@ def test_apigateway_no_rest_apis(self):
     
                 assert len(result) == 0
     
    -    @mock_apigateway
    -    @mock_wafv2
    +    @mock_aws
         def test_apigateway_one_rest_api_with_waf(self):
             # Create APIGateway Mocked Resources
    -        apigateway_client = client("apigateway", region_name=AWS_REGION)
    -        waf_client = client("wafv2", region_name=AWS_REGION)
    +        apigateway_client = client("apigateway", region_name=AWS_REGION_US_EAST_1)
    +        waf_client = client("wafv2", region_name=AWS_REGION_US_EAST_1)
             rest_api = apigateway_client.create_rest_api(
                 name="test-rest-api",
             )
    @@ -122,7 +92,9 @@ def test_apigateway_one_rest_api_with_waf(self):
                 APIGateway,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -148,15 +120,15 @@ def test_apigateway_one_rest_api_with_waf(self):
                 assert result[0].resource_id == "test-rest-api"
                 assert (
                     result[0].resource_arn
    -                == f"arn:{current_audit_info.audited_partition}:apigateway:{AWS_REGION}::/restapis/{rest_api['id']}/stages/test"
    +                == f"arn:{current_audit_info.audited_partition}:apigateway:{AWS_REGION_US_EAST_1}::/restapis/{rest_api['id']}/stages/test"
                 )
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_US_EAST_1
                 assert result[0].resource_tags == [None]
     
    -    @mock_apigateway
    +    @mock_aws
         def test_apigateway_one_rest_api_without_waf(self):
             # Create APIGateway Mocked Resources
    -        apigateway_client = client("apigateway", region_name=AWS_REGION)
    +        apigateway_client = client("apigateway", region_name=AWS_REGION_US_EAST_1)
             # Create APIGateway Rest API
             rest_api = apigateway_client.create_rest_api(
                 name="test-rest-api",
    @@ -193,7 +165,9 @@ def test_apigateway_one_rest_api_without_waf(self):
                 APIGateway,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -219,7 +193,7 @@ def test_apigateway_one_rest_api_without_waf(self):
                 assert result[0].resource_id == "test-rest-api"
                 assert (
                     result[0].resource_arn
    -                == f"arn:{current_audit_info.audited_partition}:apigateway:{AWS_REGION}::/restapis/{rest_api['id']}/stages/test"
    +                == f"arn:{current_audit_info.audited_partition}:apigateway:{AWS_REGION_US_EAST_1}::/restapis/{rest_api['id']}/stages/test"
                 )
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_US_EAST_1
                 assert result[0].resource_tags == [None]
    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 c06cb972f71..8b0f74aaceb 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
    @@ -1,15 +1,14 @@
     from unittest import mock
     
     import botocore
    -from boto3 import client, session
    +from boto3 import client
     from mock import patch
    -from moto import mock_apigatewayv2
    +from moto import mock_aws
     
    -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"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     # Mocking ApiGatewayV2 Calls
     make_api_call = botocore.client.BaseClient._make_api_call
    @@ -40,44 +39,15 @@ def mock_make_api_call(self, operation_name, kwarg):
     
     @patch("botocore.client.BaseClient._make_api_call", new=mock_make_api_call)
     class Test_apigatewayv2_api_access_logging_enabled:
    -    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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=["us-east-1", "eu-west-1"],
    -            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
    -
    -    @mock_apigatewayv2
    +    @mock_aws
         def test_apigateway_no_apis(self):
             from prowler.providers.aws.services.apigatewayv2.apigatewayv2_service import (
                 ApiGatewayV2,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_US_EAST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -96,18 +66,21 @@ def test_apigateway_no_apis(self):
     
                 assert len(result) == 0
     
    -    @mock_apigatewayv2
    +    @mock_aws
         def test_apigateway_one_api_with_logging_in_stage(self):
             # Create ApiGatewayV2 Mocked Resources
    -        apigatewayv2_client = client("apigatewayv2", region_name=AWS_REGION)
    +        apigatewayv2_client = client("apigatewayv2", region_name=AWS_REGION_US_EAST_1)
             # Create ApiGatewayV2 API
             api = apigatewayv2_client.create_api(Name="test-api", ProtocolType="HTTP")
    +        api_id = api["ApiId"]
             # Get stages mock with stage with logging
             from prowler.providers.aws.services.apigatewayv2.apigatewayv2_service import (
                 ApiGatewayV2,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_US_EAST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -124,17 +97,17 @@ def test_apigateway_one_api_with_logging_in_stage(self):
                 check = apigatewayv2_api_access_logging_enabled()
                 result = check.execute()
     
    -            assert result[0].status == "PASS"
                 assert len(result) == 1
    +            assert result[0].status == "PASS"
                 assert (
                     result[0].status_extended
    -                == f"API Gateway V2 test-api ID {api['ApiId']} in stage test-stage has access logging enabled."
    +                == f"API Gateway V2 test-api ID {api_id} in stage test-stage has access logging enabled."
                 )
     
    -            assert result[0].resource_id == "test-api"
    +            assert result[0].resource_id == "test-api-test-stage"
                 assert (
                     result[0].resource_arn
    -                == f"arn:aws:apigateway:{AWS_REGION}::apis/{api['ApiId']}"
    +                == f"arn:aws:apigateway:{AWS_REGION_US_EAST_1}::apis/{api_id}"
                 )
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_US_EAST_1
                 assert result[0].resource_tags == [{}]
    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 c2ae977accf..8196c21838d 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
    @@ -1,15 +1,14 @@
     from unittest import mock
     
     import botocore
    -from boto3 import client, session
    +from boto3 import client
     from mock import patch
    -from moto import mock_apigatewayv2
    +from moto import mock_aws
     
    -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"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     # Mocking ApiGatewayV2 Calls
     make_api_call = botocore.client.BaseClient._make_api_call
    @@ -40,44 +39,15 @@ def mock_make_api_call(self, operation_name, kwarg):
     
     @patch("botocore.client.BaseClient._make_api_call", new=mock_make_api_call)
     class Test_apigatewayv2_api_authorizers_enabled:
    -    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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=["us-east-1", "eu-west-1"],
    -            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
    -
    -    @mock_apigatewayv2
    +    @mock_aws
         def test_apigateway_no_apis(self):
             from prowler.providers.aws.services.apigatewayv2.apigatewayv2_service import (
                 ApiGatewayV2,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_US_EAST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -96,10 +66,10 @@ def test_apigateway_no_apis(self):
     
                 assert len(result) == 0
     
    -    @mock_apigatewayv2
    +    @mock_aws
         def test_apigateway_one_api_with_authorizer(self):
             # Create ApiGatewayV2 Mocked Resources
    -        apigatewayv2_client = client("apigatewayv2", region_name=AWS_REGION)
    +        apigatewayv2_client = client("apigatewayv2", region_name=AWS_REGION_US_EAST_1)
             # Create ApiGatewayV2 API
             api = apigatewayv2_client.create_api(Name="test-api", ProtocolType="HTTP")
             apigatewayv2_client.create_authorizer(
    @@ -113,7 +83,9 @@ def test_apigateway_one_api_with_authorizer(self):
                 ApiGatewayV2,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_US_EAST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -130,8 +102,8 @@ def test_apigateway_one_api_with_authorizer(self):
                 check = apigatewayv2_api_authorizers_enabled()
                 result = check.execute()
     
    -            assert result[0].status == "PASS"
                 assert len(result) == 1
    +            assert result[0].status == "PASS"
                 assert (
                     result[0].status_extended
                     == f"API Gateway V2 test-api ID {api['ApiId']} has an authorizer configured."
    @@ -139,7 +111,7 @@ def test_apigateway_one_api_with_authorizer(self):
                 assert result[0].resource_id == "test-api"
                 assert (
                     result[0].resource_arn
    -                == f"arn:aws:apigateway:{AWS_REGION}::apis/{api['ApiId']}"
    +                == f"arn:aws:apigateway:{AWS_REGION_US_EAST_1}::apis/{api['ApiId']}"
                 )
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_US_EAST_1
                 assert result[0].resource_tags == [{}]
    diff --git a/tests/providers/aws/services/apigatewayv2/apigatewayv2_service_test.py b/tests/providers/aws/services/apigatewayv2/apigatewayv2_service_test.py
    index 25dd31ace43..67234e28f6d 100644
    --- a/tests/providers/aws/services/apigatewayv2/apigatewayv2_service_test.py
    +++ b/tests/providers/aws/services/apigatewayv2/apigatewayv2_service_test.py
    @@ -1,16 +1,16 @@
     import botocore
    -from boto3 import client, session
    +from boto3 import client
     from mock import patch
    -from moto import mock_apigatewayv2
    +from moto import mock_aws
     
    -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"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_ACCOUNT_NUMBER,
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     # Mocking ApiGatewayV2 Calls
     make_api_call = botocore.client.BaseClient._make_api_call
    @@ -41,90 +41,59 @@ def mock_make_api_call(self, operation_name, kwarg):
     
     @patch("botocore.client.BaseClient._make_api_call", new=mock_make_api_call)
     class Test_ApiGatewayV2_Service:
    -    # 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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=None,
    -            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
    -
         # Test ApiGatewayV2 Service
    -    @mock_apigatewayv2
    +    @mock_aws
         def test_service(self):
             # ApiGatewayV2 client for this test class
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
             apigatewayv2 = ApiGatewayV2(audit_info)
             assert apigatewayv2.service == "apigatewayv2"
     
         # Test ApiGatewayV2 Client
    -    @mock_apigatewayv2
    +    @mock_aws
         def test_client(self):
             # ApiGatewayV2 client for this test class
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
             apigatewayv2 = ApiGatewayV2(audit_info)
             for regional_client in apigatewayv2.regional_clients.values():
                 assert regional_client.__class__.__name__ == "ApiGatewayV2"
     
         # Test ApiGatewayV2 Session
    -    @mock_apigatewayv2
    +    @mock_aws
         def test__get_session__(self):
             # ApiGatewayV2 client for this test class
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
             apigatewayv2 = ApiGatewayV2(audit_info)
             assert apigatewayv2.session.__class__.__name__ == "Session"
     
         # Test ApiGatewayV2 Session
    -    @mock_apigatewayv2
    +    @mock_aws
         def test_audited_account(self):
             # ApiGatewayV2 client for this test class
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
             apigatewayv2 = ApiGatewayV2(audit_info)
             assert apigatewayv2.audited_account == AWS_ACCOUNT_NUMBER
     
         # Test ApiGatewayV2 Get APIs
    -    @mock_apigatewayv2
    +    @mock_aws
         def test__get_apis__(self):
             # Generate ApiGatewayV2 Client
    -        apigatewayv2_client = client("apigatewayv2", region_name=AWS_REGION)
    +        apigatewayv2_client = client("apigatewayv2", region_name=AWS_REGION_US_EAST_1)
             # Create ApiGatewayV2 API
             apigatewayv2_client.create_api(
                 Name="test-api", ProtocolType="HTTP", Tags={"test": "test"}
             )
             # ApiGatewayV2 client for this test class
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
             apigatewayv2 = ApiGatewayV2(audit_info)
             assert len(apigatewayv2.apis) == len(apigatewayv2_client.get_apis()["Items"])
             assert apigatewayv2.apis[0].tags == [{"test": "test"}]
     
         # Test ApiGatewayV2 Get Authorizers
    -    @mock_apigatewayv2
    +    @mock_aws
         def test__get_authorizers__(self):
             # Generate ApiGatewayV2 Client
    -        apigatewayv2_client = client("apigatewayv2", region_name=AWS_REGION)
    +        apigatewayv2_client = client("apigatewayv2", region_name=AWS_REGION_US_EAST_1)
             # Create ApiGatewayV2 Rest API
             api = apigatewayv2_client.create_api(Name="test-api", ProtocolType="HTTP")
             # Create authorizer
    @@ -136,18 +105,18 @@ def test__get_authorizers__(self):
                 AuthorizerPayloadFormatVersion="2.0",
             )
             # ApiGatewayV2 client for this test class
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
             apigatewayv2 = ApiGatewayV2(audit_info)
             assert apigatewayv2.apis[0].authorizer is True
     
         # Test ApiGatewayV2 Get Stages
    -    @mock_apigatewayv2
    +    @mock_aws
         def test__get_stages__(self):
             # Generate ApiGatewayV2 Client
    -        apigatewayv2_client = client("apigatewayv2", region_name=AWS_REGION)
    +        apigatewayv2_client = client("apigatewayv2", region_name=AWS_REGION_US_EAST_1)
             # Create ApiGatewayV2 Rest API and a deployment stage
             apigatewayv2_client.create_api(Name="test-api", ProtocolType="HTTP")
     
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
             apigatewayv2 = ApiGatewayV2(audit_info)
             assert apigatewayv2.apis[0].stages[0].logging is True
    diff --git a/tests/providers/aws/services/appstream/appstream_service_test.py b/tests/providers/aws/services/appstream/appstream_service_test.py
    index f00943e109f..456d87cab34 100644
    --- a/tests/providers/aws/services/appstream/appstream_service_test.py
    +++ b/tests/providers/aws/services/appstream/appstream_service_test.py
    @@ -1,16 +1,16 @@
     from unittest.mock import patch
     
     import botocore
    -from boto3 import session
    -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
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_ACCOUNT_NUMBER,
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     # Mock Test Region
     AWS_REGION = "eu-west-1"
    -AWS_ACCOUNT_NUMBER = "123456789012"
     
     # Mocking Access Analyzer Calls
     make_api_call = botocore.client.BaseClient._make_api_call
    @@ -28,7 +28,7 @@ def mock_make_api_call(self, operation_name, kwarg):
             return {
                 "Fleets": [
                     {
    -                    "Arn": f"arn:aws:appstream:{AWS_REGION}:{DEFAULT_ACCOUNT_ID}:fleet/test-prowler3-0",
    +                    "Arn": f"arn:aws:appstream:{AWS_REGION}:{AWS_ACCOUNT_NUMBER}:fleet/test-prowler3-0",
                         "Name": "test-prowler3-0",
                         "MaxUserDurationInSeconds": 100,
                         "DisconnectTimeoutInSeconds": 900,
    @@ -36,7 +36,7 @@ def mock_make_api_call(self, operation_name, kwarg):
                         "EnableDefaultInternetAccess": False,
                     },
                     {
    -                    "Arn": f"arn:aws:appstream:{AWS_REGION}:{DEFAULT_ACCOUNT_ID}:fleet/test-prowler3-1",
    +                    "Arn": f"arn:aws:appstream:{AWS_REGION}:{AWS_ACCOUNT_NUMBER}:fleet/test-prowler3-1",
                         "Name": "test-prowler3-1",
                         "MaxUserDurationInSeconds": 57600,
                         "DisconnectTimeoutInSeconds": 900,
    @@ -51,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}
    @@ -64,60 +64,29 @@ def mock_generate_regional_clients(service, audit_info, _):
         new=mock_generate_regional_clients,
     )
     class Test_AppStream_Service:
    -    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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=["us-east-1", "eu-west-1"],
    -            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
    -
         # Test AppStream Client
         def test__get_client__(self):
    -        appstream = AppStream(self.set_mocked_audit_info())
    +        appstream = AppStream(set_mocked_aws_audit_info([AWS_REGION_US_EAST_1]))
             assert appstream.regional_clients[AWS_REGION].__class__.__name__ == "AppStream"
     
         # Test AppStream Session
         def test__get_session__(self):
    -        appstream = AppStream(self.set_mocked_audit_info())
    +        appstream = AppStream(set_mocked_aws_audit_info([AWS_REGION_US_EAST_1]))
             assert appstream.session.__class__.__name__ == "Session"
     
         # Test AppStream Session
         def test__get_service__(self):
    -        appstream = AppStream(self.set_mocked_audit_info())
    +        appstream = AppStream(set_mocked_aws_audit_info([AWS_REGION_US_EAST_1]))
             assert appstream.service == "appstream"
     
         def test__describe_fleets__(self):
             # Set partition for the service
    -        appstream = AppStream(self.set_mocked_audit_info())
    +        appstream = AppStream(set_mocked_aws_audit_info([AWS_REGION_US_EAST_1]))
             assert len(appstream.fleets) == 2
     
             assert (
                 appstream.fleets[0].arn
    -            == f"arn:aws:appstream:{AWS_REGION}:{DEFAULT_ACCOUNT_ID}:fleet/test-prowler3-0"
    +            == f"arn:aws:appstream:{AWS_REGION}:{AWS_ACCOUNT_NUMBER}:fleet/test-prowler3-0"
             )
             assert appstream.fleets[0].name == "test-prowler3-0"
             assert appstream.fleets[0].max_user_duration_in_seconds == 100
    @@ -128,7 +97,7 @@ def test__describe_fleets__(self):
     
             assert (
                 appstream.fleets[1].arn
    -            == f"arn:aws:appstream:{AWS_REGION}:{DEFAULT_ACCOUNT_ID}:fleet/test-prowler3-1"
    +            == f"arn:aws:appstream:{AWS_REGION}:{AWS_ACCOUNT_NUMBER}:fleet/test-prowler3-1"
             )
             assert appstream.fleets[1].name == "test-prowler3-1"
             assert appstream.fleets[1].max_user_duration_in_seconds == 57600
    @@ -139,7 +108,7 @@ def test__describe_fleets__(self):
     
         def test__list_tags_for_resource__(self):
             # Set partition for the service
    -        appstream = AppStream(self.set_mocked_audit_info())
    +        appstream = AppStream(set_mocked_aws_audit_info([AWS_REGION_US_EAST_1]))
             assert len(appstream.fleets) == 2
     
             assert appstream.fleets[0].tags == [{"test": "test"}]
    diff --git a/tests/providers/aws/services/athena/athena_service_test.py b/tests/providers/aws/services/athena/athena_service_test.py
    index d241d7e0f47..5daed07a273 100644
    --- a/tests/providers/aws/services/athena/athena_service_test.py
    +++ b/tests/providers/aws/services/athena/athena_service_test.py
    @@ -1,15 +1,12 @@
    -from boto3 import session
     from botocore.client import BaseClient
     from mock import patch
    -from moto import mock_athena
    +from moto import mock_aws
     
    -from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info
     from prowler.providers.aws.services.athena.athena_service import Athena
    -from prowler.providers.common.models import Audit_Metadata
    -
    -AWS_ACCOUNT_NUMBER = "123456789012"
    -AWS_REGION = "eu-west-1"
    -
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_REGION_EU_WEST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     # Mocking Access Analyzer Calls
     make_api_call = BaseClient._make_api_call
    @@ -42,10 +39,12 @@ def mock_make_api_call(self, operation_name, kwarg):
     
     
     # Mock generate_regional_clients()
    -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}
    +def mock_generate_regional_clients(service, audit_info):
    +    regional_client = audit_info.audit_session.client(
    +        service, region_name=AWS_REGION_EU_WEST_1
    +    )
    +    regional_client.region = AWS_REGION_EU_WEST_1
    +    return {AWS_REGION_EU_WEST_1: regional_client}
     
     
     # Patch every AWS call using Boto3 and generate_regional_clients to have 1 client
    @@ -54,49 +53,18 @@ def mock_generate_regional_clients(service, audit_info, _):
         new=mock_generate_regional_clients,
     )
     class Test_Athena_Service:
    -    # 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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=None,
    -            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
    -
         # Test Athena Get Workgrups
    -    @mock_athena
    +    @mock_aws
         def test__get_workgroups__not_encrypted(self):
             default_workgroup_name = "primary"
    -        audit_info = self.set_mocked_audit_info()
    -        workgroup_arn = f"arn:{audit_info.audited_partition}:athena:{AWS_REGION}:{audit_info.audited_account}:workgroup/{default_workgroup_name}"
    +        audit_info = set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1])
    +        workgroup_arn = f"arn:{audit_info.audited_partition}:athena:{AWS_REGION_EU_WEST_1}:{audit_info.audited_account}:workgroup/{default_workgroup_name}"
             athena = Athena(audit_info)
             assert len(athena.workgroups) == 1
             assert athena.workgroups[workgroup_arn]
             assert athena.workgroups[workgroup_arn].arn == workgroup_arn
             assert athena.workgroups[workgroup_arn].name == default_workgroup_name
    -        assert athena.workgroups[workgroup_arn].region == AWS_REGION
    +        assert athena.workgroups[workgroup_arn].region == AWS_REGION_EU_WEST_1
             assert athena.workgroups[workgroup_arn].tags == []
             assert (
                 athena.workgroups[workgroup_arn].encryption_configuration.encrypted is False
    @@ -110,10 +78,10 @@ def test__get_workgroups__not_encrypted(self):
         # Test Athena Get Workgrups
         # We mock the get_work_group to return an encrypted workgroup
         @patch("botocore.client.BaseClient._make_api_call", new=mock_make_api_call)
    -    @mock_athena
    +    @mock_aws
         def test__get_workgroups__encrypted(self):
             default_workgroup_name = "primary"
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1])
     
             # Athena client
             # This API call is not implemented by Moto
    @@ -129,13 +97,13 @@ def test__get_workgroups__encrypted(self):
             #     },
             # )
     
    -        workgroup_arn = f"arn:{audit_info.audited_partition}:athena:{AWS_REGION}:{audit_info.audited_account}:workgroup/{default_workgroup_name}"
    +        workgroup_arn = f"arn:{audit_info.audited_partition}:athena:{AWS_REGION_EU_WEST_1}:{audit_info.audited_account}:workgroup/{default_workgroup_name}"
             athena = Athena(audit_info)
             assert len(athena.workgroups) == 1
             assert athena.workgroups[workgroup_arn]
             assert athena.workgroups[workgroup_arn].arn == workgroup_arn
             assert athena.workgroups[workgroup_arn].name == default_workgroup_name
    -        assert athena.workgroups[workgroup_arn].region == AWS_REGION
    +        assert athena.workgroups[workgroup_arn].region == AWS_REGION_EU_WEST_1
             assert athena.workgroups[workgroup_arn].tags == []
             assert (
                 athena.workgroups[workgroup_arn].encryption_configuration.encrypted is True
    diff --git a/tests/providers/aws/services/athena/athena_workgroup_encryption/athena_workgroup_encryption_test.py b/tests/providers/aws/services/athena/athena_workgroup_encryption/athena_workgroup_encryption_test.py
    index 267f1ecb91a..4753afa41ec 100644
    --- a/tests/providers/aws/services/athena/athena_workgroup_encryption/athena_workgroup_encryption_test.py
    +++ b/tests/providers/aws/services/athena/athena_workgroup_encryption/athena_workgroup_encryption_test.py
    @@ -1,56 +1,25 @@
     from unittest import mock
     
    -from boto3 import session
     from mock import patch
    -from moto import mock_athena
    +from moto import mock_aws
     
    -from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info
    -from prowler.providers.common.models import Audit_Metadata
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_ACCOUNT_NUMBER,
    +    AWS_REGION_EU_WEST_1,
    +    set_mocked_aws_audit_info,
    +)
     from tests.providers.aws.services.athena.athena_service_test import mock_make_api_call
     
    -AWS_REGION = "eu-west-1"
    -AWS_ACCOUNT_NUMBER = "123456789012"
     ATHENA_PRIMARY_WORKGROUP = "primary"
    -ATHENA_PRIMARY_WORKGROUP_ARN = f"arn:aws:athena:{AWS_REGION}:{AWS_ACCOUNT_NUMBER}:workgroup/{ATHENA_PRIMARY_WORKGROUP}"
    +ATHENA_PRIMARY_WORKGROUP_ARN = f"arn:aws:athena:{AWS_REGION_EU_WEST_1}:{AWS_ACCOUNT_NUMBER}:workgroup/{ATHENA_PRIMARY_WORKGROUP}"
     
     
     class Test_athena_workgroup_encryption:
    -    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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=[AWS_REGION],
    -            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
    -
    -    @mock_athena
    +    @mock_aws
         def test_primary_workgroup_not_encrypted(self):
             from prowler.providers.aws.services.athena.athena_service import Athena
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1])
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -74,14 +43,14 @@ def test_primary_workgroup_not_encrypted(self):
                 )
                 assert result[0].resource_id == ATHENA_PRIMARY_WORKGROUP
                 assert result[0].resource_arn == ATHENA_PRIMARY_WORKGROUP_ARN
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_EU_WEST_1
                 assert result[0].resource_tags == []
     
    -    @mock_athena
    +    @mock_aws
         def test_primary_workgroup_not_encrypted_ignoring(self):
             from prowler.providers.aws.services.athena.athena_service import Athena
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1])
             current_audit_info.ignore_unused_services = True
     
             with mock.patch(
    @@ -100,13 +69,13 @@ def test_primary_workgroup_not_encrypted_ignoring(self):
     
                 assert len(result) == 0
     
    -    @mock_athena
    +    @mock_aws
         # We mock the get_work_group to return an encrypted workgroup
         @patch("botocore.client.BaseClient._make_api_call", new=mock_make_api_call)
         def test_primary_workgroup_encrypted(self):
             from prowler.providers.aws.services.athena.athena_service import Athena
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1])
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -130,5 +99,5 @@ def test_primary_workgroup_encrypted(self):
                 )
                 assert result[0].resource_id == ATHENA_PRIMARY_WORKGROUP
                 assert result[0].resource_arn == ATHENA_PRIMARY_WORKGROUP_ARN
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_EU_WEST_1
                 assert result[0].resource_tags == []
    diff --git a/tests/providers/aws/services/athena/athena_workgroup_enforce_configuration/athena_workgroup_enforce_configuration_test.py b/tests/providers/aws/services/athena/athena_workgroup_enforce_configuration/athena_workgroup_enforce_configuration_test.py
    index b7c81913f5f..f7bc1c0da38 100644
    --- a/tests/providers/aws/services/athena/athena_workgroup_enforce_configuration/athena_workgroup_enforce_configuration_test.py
    +++ b/tests/providers/aws/services/athena/athena_workgroup_enforce_configuration/athena_workgroup_enforce_configuration_test.py
    @@ -1,56 +1,25 @@
     from unittest import mock
     
    -from boto3 import session
     from mock import patch
    -from moto import mock_athena
    +from moto import mock_aws
     
    -from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info
    -from prowler.providers.common.models import Audit_Metadata
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_ACCOUNT_NUMBER,
    +    AWS_REGION_EU_WEST_1,
    +    set_mocked_aws_audit_info,
    +)
     from tests.providers.aws.services.athena.athena_service_test import mock_make_api_call
     
    -AWS_REGION = "eu-west-1"
    -AWS_ACCOUNT_NUMBER = "123456789012"
     ATHENA_PRIMARY_WORKGROUP = "primary"
    -ATHENA_PRIMARY_WORKGROUP_ARN = f"arn:aws:athena:{AWS_REGION}:{AWS_ACCOUNT_NUMBER}:workgroup/{ATHENA_PRIMARY_WORKGROUP}"
    +ATHENA_PRIMARY_WORKGROUP_ARN = f"arn:aws:athena:{AWS_REGION_EU_WEST_1}:{AWS_ACCOUNT_NUMBER}:workgroup/{ATHENA_PRIMARY_WORKGROUP}"
     
     
     class Test_athena_workgroup_enforce_configuration:
    -    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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=[AWS_REGION],
    -            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
    -
    -    @mock_athena
    +    @mock_aws
         def test_primary_workgroup_configuration_not_enforced(self):
             from prowler.providers.aws.services.athena.athena_service import Athena
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1])
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -74,14 +43,14 @@ def test_primary_workgroup_configuration_not_enforced(self):
                 )
                 assert result[0].resource_id == ATHENA_PRIMARY_WORKGROUP
                 assert result[0].resource_arn == ATHENA_PRIMARY_WORKGROUP_ARN
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_EU_WEST_1
                 assert result[0].resource_tags == []
     
    -    @mock_athena
    +    @mock_aws
         def test_primary_workgroup_configuration_not_enforced_ignoring(self):
             from prowler.providers.aws.services.athena.athena_service import Athena
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1])
             current_audit_info.ignore_unused_services = True
     
             with mock.patch(
    @@ -100,13 +69,13 @@ def test_primary_workgroup_configuration_not_enforced_ignoring(self):
     
                 assert len(result) == 0
     
    -    @mock_athena
    +    @mock_aws
         # We mock the get_work_group to return a workgroup not enforcing configuration
         @patch("botocore.client.BaseClient._make_api_call", new=mock_make_api_call)
         def test_primary_workgroup_configuration_enforced(self):
             from prowler.providers.aws.services.athena.athena_service import Athena
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1])
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -130,5 +99,5 @@ def test_primary_workgroup_configuration_enforced(self):
                 )
                 assert result[0].resource_id == ATHENA_PRIMARY_WORKGROUP
                 assert result[0].resource_arn == ATHENA_PRIMARY_WORKGROUP_ARN
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_EU_WEST_1
                 assert result[0].resource_tags == []
    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 bb24d25048a..6a40b3416ef 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
    @@ -2,61 +2,29 @@
     from pathlib import Path
     from unittest import mock
     
    -from boto3 import client, session
    -from moto import mock_autoscaling
    +from boto3 import client
    +from moto import mock_aws
     
    -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"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     ACTUAL_DIRECTORY = Path(path.dirname(path.realpath(__file__)))
     FIXTURES_DIR_NAME = "fixtures"
     
     
     class Test_autoscaling_find_secrets_ec2_launch_configuration:
    -    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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=["us-east-1", "eu-west-1"],
    -            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
    -
    -    @mock_autoscaling
    +    @mock_aws
         def test_no_autoscaling(self):
    -        autoscaling_client = client("autoscaling", region_name=AWS_REGION)
    +        autoscaling_client = client("autoscaling", region_name=AWS_REGION_US_EAST_1)
             autoscaling_client.launch_configurations = []
     
             from prowler.providers.aws.services.autoscaling.autoscaling_service import (
                 AutoScaling,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -75,11 +43,11 @@ def test_no_autoscaling(self):
     
                 assert len(result) == 0
     
    -    @mock_autoscaling
    +    @mock_aws
         def test_one_autoscaling_with_no_secrets(self):
             # Include launch_configurations to check
             launch_configuration_name = "tester"
    -        autoscaling_client = client("autoscaling", region_name=AWS_REGION)
    +        autoscaling_client = client("autoscaling", region_name=AWS_REGION_US_EAST_1)
             autoscaling_client.create_launch_configuration(
                 LaunchConfigurationName=launch_configuration_name,
                 ImageId="ami-12c6146b",
    @@ -96,7 +64,7 @@ def test_one_autoscaling_with_no_secrets(self):
                 AutoScaling,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -120,13 +88,13 @@ def test_one_autoscaling_with_no_secrets(self):
                 )
                 assert result[0].resource_id == launch_configuration_name
                 assert result[0].resource_arn == launch_configuration_arn
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_US_EAST_1
     
    -    @mock_autoscaling
    +    @mock_aws
         def test_one_autoscaling_with_secrets(self):
             # Include launch_configurations to check
             launch_configuration_name = "tester"
    -        autoscaling_client = client("autoscaling", region_name=AWS_REGION)
    +        autoscaling_client = client("autoscaling", region_name=AWS_REGION_US_EAST_1)
             autoscaling_client.create_launch_configuration(
                 LaunchConfigurationName=launch_configuration_name,
                 ImageId="ami-12c6146b",
    @@ -143,7 +111,7 @@ def test_one_autoscaling_with_secrets(self):
                 AutoScaling,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -167,9 +135,9 @@ def test_one_autoscaling_with_secrets(self):
                 )
                 assert result[0].resource_id == launch_configuration_name
                 assert result[0].resource_arn == launch_configuration_arn
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_US_EAST_1
     
    -    @mock_autoscaling
    +    @mock_aws
         def test_one_autoscaling_file_with_secrets(self):
             # Include launch_configurations to check
             f = open(
    @@ -178,7 +146,7 @@ def test_one_autoscaling_file_with_secrets(self):
             )
             secrets = f.read()
             launch_configuration_name = "tester"
    -        autoscaling_client = client("autoscaling", region_name=AWS_REGION)
    +        autoscaling_client = client("autoscaling", region_name=AWS_REGION_US_EAST_1)
             autoscaling_client.create_launch_configuration(
                 LaunchConfigurationName="tester",
                 ImageId="ami-12c6146b",
    @@ -195,7 +163,7 @@ def test_one_autoscaling_file_with_secrets(self):
                 AutoScaling,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -219,13 +187,13 @@ def test_one_autoscaling_file_with_secrets(self):
                 )
                 assert result[0].resource_id == launch_configuration_name
                 assert result[0].resource_arn == launch_configuration_arn
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_US_EAST_1
     
    -    @mock_autoscaling
    +    @mock_aws
         def test_one_launch_configurations_without_user_data(self):
             # Include launch_configurations to check
             launch_configuration_name = "tester"
    -        autoscaling_client = client("autoscaling", region_name=AWS_REGION)
    +        autoscaling_client = client("autoscaling", region_name=AWS_REGION_US_EAST_1)
             autoscaling_client.create_launch_configuration(
                 LaunchConfigurationName=launch_configuration_name,
                 ImageId="ami-12c6146b",
    @@ -241,7 +209,7 @@ def test_one_launch_configurations_without_user_data(self):
                 AutoScaling,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -265,9 +233,9 @@ def test_one_launch_configurations_without_user_data(self):
                 )
                 assert result[0].resource_id == launch_configuration_name
                 assert result[0].resource_arn == launch_configuration_arn
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_US_EAST_1
     
    -    @mock_autoscaling
    +    @mock_aws
         def test_one_autoscaling_file_with_secrets_gzip(self):
             # Include launch_configurations to check
             f = open(
    @@ -277,7 +245,7 @@ def test_one_autoscaling_file_with_secrets_gzip(self):
     
             secrets = f.read()
             launch_configuration_name = "tester"
    -        autoscaling_client = client("autoscaling", region_name=AWS_REGION)
    +        autoscaling_client = client("autoscaling", region_name=AWS_REGION_US_EAST_1)
             autoscaling_client.create_launch_configuration(
                 LaunchConfigurationName="tester",
                 ImageId="ami-12c6146b",
    @@ -294,7 +262,7 @@ def test_one_autoscaling_file_with_secrets_gzip(self):
                 AutoScaling,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -318,4 +286,4 @@ def test_one_autoscaling_file_with_secrets_gzip(self):
                 )
                 assert result[0].resource_id == launch_configuration_name
                 assert result[0].resource_arn == launch_configuration_arn
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_US_EAST_1
    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 79d0f992893..604ed90eafe 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
    @@ -1,57 +1,25 @@
     from unittest import mock
     
    -from boto3 import client, session
    -from moto import mock_autoscaling
    +from boto3 import client
    +from moto import mock_aws
     
    -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"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     
     class Test_autoscaling_group_multiple_az:
    -    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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=["us-east-1", "eu-west-1"],
    -            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
    -
    -    @mock_autoscaling
    +    @mock_aws
         def test_no_autoscaling(self):
    -        autoscaling_client = client("autoscaling", region_name=AWS_REGION)
    +        autoscaling_client = client("autoscaling", region_name=AWS_REGION_US_EAST_1)
             autoscaling_client.groups = []
     
             from prowler.providers.aws.services.autoscaling.autoscaling_service import (
                 AutoScaling,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -70,9 +38,9 @@ def test_no_autoscaling(self):
     
                 assert len(result) == 0
     
    -    @mock_autoscaling
    +    @mock_aws
         def test_groups_with_multi_az(self):
    -        autoscaling_client = client("autoscaling", region_name=AWS_REGION)
    +        autoscaling_client = client("autoscaling", region_name=AWS_REGION_US_EAST_1)
             autoscaling_client.create_launch_configuration(
                 LaunchConfigurationName="test",
                 ImageId="ami-12c6146b",
    @@ -98,7 +66,7 @@ def test_groups_with_multi_az(self):
                 AutoScaling,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -123,12 +91,12 @@ def test_groups_with_multi_az(self):
                 )
                 assert result[0].resource_id == autoscaling_group_name
                 assert result[0].resource_arn == autoscaling_group_arn
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_US_EAST_1
                 assert result[0].resource_tags == []
     
    -    @mock_autoscaling
    +    @mock_aws
         def test_groups_with_single_az(self):
    -        autoscaling_client = client("autoscaling", region_name=AWS_REGION)
    +        autoscaling_client = client("autoscaling", region_name=AWS_REGION_US_EAST_1)
             autoscaling_client.create_launch_configuration(
                 LaunchConfigurationName="test",
                 ImageId="ami-12c6146b",
    @@ -154,7 +122,7 @@ def test_groups_with_single_az(self):
                 AutoScaling,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -181,9 +149,9 @@ def test_groups_with_single_az(self):
                 assert result[0].resource_tags == []
                 assert result[0].resource_arn == autoscaling_group_arn
     
    -    @mock_autoscaling
    +    @mock_aws
         def test_groups_witd_and_without(self):
    -        autoscaling_client = client("autoscaling", region_name=AWS_REGION)
    +        autoscaling_client = client("autoscaling", region_name=AWS_REGION_US_EAST_1)
             autoscaling_client.create_launch_configuration(
                 LaunchConfigurationName="test",
                 ImageId="ami-12c6146b",
    @@ -221,7 +189,7 @@ def test_groups_witd_and_without(self):
                 AutoScaling,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -248,7 +216,7 @@ def test_groups_witd_and_without(self):
                         )
                         assert check.resource_arn == autoscaling_group_arn_1
                         assert check.resource_tags == []
    -                    assert check.region == AWS_REGION
    +                    assert check.region == AWS_REGION_US_EAST_1
                     if check.resource_id == autoscaling_group_name_2:
                         assert check.status == "FAIL"
                         assert (
    @@ -257,4 +225,4 @@ def test_groups_witd_and_without(self):
                         )
                         assert check.resource_tags == []
                         assert check.resource_arn == autoscaling_group_arn_2
    -                    assert check.region == AWS_REGION
    +                    assert check.region == AWS_REGION_US_EAST_1
    diff --git a/tests/providers/aws/services/autoscaling/autoscaling_service_test.py b/tests/providers/aws/services/autoscaling/autoscaling_service_test.py
    index 0c6b6080fe8..230181436ed 100644
    --- a/tests/providers/aws/services/autoscaling/autoscaling_service_test.py
    +++ b/tests/providers/aws/services/autoscaling/autoscaling_service_test.py
    @@ -1,86 +1,55 @@
     from base64 import b64decode
     
    -from boto3 import client, session
    -from moto import mock_autoscaling
    +from boto3 import client
    +from moto import mock_aws
     
    -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"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_ACCOUNT_NUMBER,
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     
     class Test_AutoScaling_Service:
    -    # 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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=None,
    -            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
    -
         # Test AutoScaling Service
    -    @mock_autoscaling
    +    @mock_aws
         def test_service(self):
             # AutoScaling client for this test class
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
             autoscaling = AutoScaling(audit_info)
             assert autoscaling.service == "autoscaling"
     
         # Test AutoScaling Client
    -    @mock_autoscaling
    +    @mock_aws
         def test_client(self):
             # AutoScaling client for this test class
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
             autoscaling = AutoScaling(audit_info)
             for regional_client in autoscaling.regional_clients.values():
                 assert regional_client.__class__.__name__ == "AutoScaling"
     
         # Test AutoScaling Session
    -    @mock_autoscaling
    +    @mock_aws
         def test__get_session__(self):
             # AutoScaling client for this test class
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
             autoscaling = AutoScaling(audit_info)
             assert autoscaling.session.__class__.__name__ == "Session"
     
         # Test AutoScaling Session
    -    @mock_autoscaling
    +    @mock_aws
         def test_audited_account(self):
             # AutoScaling client for this test class
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
             autoscaling = AutoScaling(audit_info)
             assert autoscaling.audited_account == AWS_ACCOUNT_NUMBER
     
         # Test AutoScaling Get APIs
    -    @mock_autoscaling
    +    @mock_aws
         def test__describe_launch_configurations__(self):
             # Generate AutoScaling Client
    -        autoscaling_client = client("autoscaling", region_name=AWS_REGION)
    +        autoscaling_client = client("autoscaling", region_name=AWS_REGION_US_EAST_1)
             # Create AutoScaling API
             autoscaling_client.create_launch_configuration(
                 LaunchConfigurationName="tester1",
    @@ -98,7 +67,7 @@ def test__describe_launch_configurations__(self):
                 SecurityGroups=["default", "default2"],
             )
             # AutoScaling client for this test class
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
             autoscaling = AutoScaling(audit_info)
             assert len(autoscaling.launch_configurations) == 2
             assert autoscaling.launch_configurations[0].name == "tester1"
    @@ -111,10 +80,10 @@ def test__describe_launch_configurations__(self):
             assert autoscaling.launch_configurations[1].name == "tester2"
     
         # Test Describe Auto Scaling Groups
    -    @mock_autoscaling
    +    @mock_aws
         def test__describe_auto_scaling_groups__(self):
             # Generate AutoScaling Client
    -        autoscaling_client = client("autoscaling", region_name=AWS_REGION)
    +        autoscaling_client = client("autoscaling", region_name=AWS_REGION_US_EAST_1)
             autoscaling_client.create_launch_configuration(
                 LaunchConfigurationName="test",
                 ImageId="ami-12c6146b",
    @@ -138,14 +107,14 @@ def test__describe_auto_scaling_groups__(self):
             )
     
             # AutoScaling client for this test class
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
             autoscaling = AutoScaling(audit_info)
             print("asg", asg)
             assert len(autoscaling.groups) == 1
             # create_auto_scaling_group doesn't return the ARN, can't check it
             # assert autoscaling.groups[0].arn ==
             assert autoscaling.groups[0].name == "my-autoscaling-group"
    -        assert autoscaling.groups[0].region == AWS_REGION
    +        assert autoscaling.groups[0].region == AWS_REGION_US_EAST_1
             assert autoscaling.groups[0].availability_zones == ["us-east-1a", "us-east-1b"]
             assert autoscaling.groups[0].tags == [
                 {
    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 32c678309bd..90a06de20df 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
    @@ -2,18 +2,18 @@
     
     from boto3 import client
     from mock import patch
    -from moto import mock_cloudtrail, mock_s3
    -from moto.core import DEFAULT_ACCOUNT_ID
    +from moto import mock_aws
     
     from prowler.providers.aws.services.awslambda.awslambda_service import Function
     from tests.providers.aws.audit_info_utils import (
    +    AWS_ACCOUNT_NUMBER,
         AWS_REGION_US_EAST_1,
         set_mocked_aws_audit_info,
     )
     
     
     # 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_US_EAST_1
         )
    @@ -27,7 +27,7 @@ def mock_generate_regional_clients(service, audit_info, _):
         new=mock_generate_regional_clients,
     )
     class Test_awslambda_function_invoke_api_operations_cloudtrail_logging_enabled:
    -    @mock_cloudtrail
    +    @mock_aws
         def test_no_functions(self):
             lambda_client = mock.MagicMock
             lambda_client.functions = {}
    @@ -58,14 +58,13 @@ def test_no_functions(self):
     
                 assert len(result) == 0
     
    -    @mock_cloudtrail
    -    @mock_s3
    +    @mock_aws
         def test_lambda_not_recorded_by_cloudtrail(self):
             # Lambda Client
             lambda_client = mock.MagicMock
             function_name = "test-lambda"
             function_runtime = "python3.9"
    -        function_arn = f"arn:aws:lambda:{AWS_REGION_US_EAST_1}:{DEFAULT_ACCOUNT_ID}:function/{function_name}"
    +        function_arn = f"arn:aws:lambda:{AWS_REGION_US_EAST_1}:{AWS_ACCOUNT_NUMBER}:function/{function_name}"
             lambda_client.functions = {
                 function_name: Function(
                     name=function_name,
    @@ -121,14 +120,13 @@ def test_lambda_not_recorded_by_cloudtrail(self):
                 )
                 assert result[0].resource_tags == []
     
    -    @mock_cloudtrail
    -    @mock_s3
    +    @mock_aws
         def test_lambda_recorded_by_cloudtrail_classic_event_selector(self):
             # Lambda Client
             lambda_client = mock.MagicMock
             function_name = "test-lambda"
             function_runtime = "python3.9"
    -        function_arn = f"arn:aws:lambda:{AWS_REGION_US_EAST_1}:{DEFAULT_ACCOUNT_ID}:function/{function_name}"
    +        function_arn = f"arn:aws:lambda:{AWS_REGION_US_EAST_1}:{AWS_ACCOUNT_NUMBER}:function/{function_name}"
             lambda_client.functions = {
                 function_name: Function(
                     name=function_name,
    @@ -196,14 +194,13 @@ def test_lambda_recorded_by_cloudtrail_classic_event_selector(self):
                 )
                 assert result[0].resource_tags == []
     
    -    @mock_cloudtrail
    -    @mock_s3
    +    @mock_aws
         def test_lambda_recorded_by_cloudtrail_advanced_event_selector(self):
             # Lambda Client
             lambda_client = mock.MagicMock
             function_name = "test-lambda"
             function_runtime = "python3.9"
    -        function_arn = f"arn:aws:lambda:{AWS_REGION_US_EAST_1}:{DEFAULT_ACCOUNT_ID}:function/{function_name}"
    +        function_arn = f"arn:aws:lambda:{AWS_REGION_US_EAST_1}:{AWS_ACCOUNT_NUMBER}:function/{function_name}"
             lambda_client.functions = {
                 function_name: Function(
                     name=function_name,
    @@ -274,8 +271,7 @@ def test_lambda_recorded_by_cloudtrail_advanced_event_selector(self):
                 )
                 assert result[0].resource_tags == []
     
    -    @mock_cloudtrail
    -    @mock_s3
    +    @mock_aws
         def test_all_lambdas_recorded_by_cloudtrail(self):
             # Lambda Client
             lambda_client = mock.MagicMock
    diff --git a/tests/providers/aws/services/awslambda/awslambda_function_no_secrets_in_code/awslambda_function_no_secrets_in_code_test.py b/tests/providers/aws/services/awslambda/awslambda_function_no_secrets_in_code/awslambda_function_no_secrets_in_code_test.py
    index 89277d1b6f0..fa0ec88c633 100644
    --- a/tests/providers/aws/services/awslambda/awslambda_function_no_secrets_in_code/awslambda_function_no_secrets_in_code_test.py
    +++ b/tests/providers/aws/services/awslambda/awslambda_function_no_secrets_in_code/awslambda_function_no_secrets_in_code_test.py
    @@ -1,17 +1,62 @@
     import zipfile
     from unittest import mock
     
    -from awslambda_service_test import create_zip_file
    -from moto.core import DEFAULT_ACCOUNT_ID
    -
     from prowler.providers.aws.services.awslambda.awslambda_service import (
         Function,
         LambdaCode,
     )
     from tests.providers.aws.audit_info_utils import (
    +    AWS_ACCOUNT_NUMBER,
         AWS_REGION_US_EAST_1,
         set_mocked_aws_audit_info,
     )
    +from tests.providers.aws.services.awslambda.awslambda_service_test import (
    +    create_zip_file,
    +)
    +
    +LAMBDA_FUNCTION_NAME = "test-lambda"
    +LAMBDA_FUNCTION_RUNTIME = "nodejs4.3"
    +LAMBDA_FUNCTION_ARN = f"arn:aws:lambda:{AWS_REGION_US_EAST_1}:{AWS_ACCOUNT_NUMBER}:function/{LAMBDA_FUNCTION_NAME}"
    +LAMBDA_FUNCTION_CODE_WITH_SECRETS = """
    +def lambda_handler(event, context):
    +        db_password = "test-password"
    +        print("custom log event")
    +        return event
    +"""
    +LAMBDA_FUNCTION_CODE_WITHOUT_SECRETS = """
    +def lambda_handler(event, context):
    +        print("custom log event")
    +        return event
    +"""
    +
    +
    +def create_lambda_function() -> Function:
    +    return Function(
    +        name=LAMBDA_FUNCTION_NAME,
    +        security_groups=[],
    +        arn=LAMBDA_FUNCTION_ARN,
    +        region=AWS_REGION_US_EAST_1,
    +        runtime=LAMBDA_FUNCTION_RUNTIME,
    +    )
    +
    +
    +def get_lambda_code_with_secrets(code):
    +    return LambdaCode(
    +        location="",
    +        code_zip=zipfile.ZipFile(create_zip_file(code)),
    +    )
    +
    +
    +def mock__get_function_code__with_secrets():
    +    yield create_lambda_function(), get_lambda_code_with_secrets(
    +        LAMBDA_FUNCTION_CODE_WITH_SECRETS
    +    )
    +
    +
    +def mock__get_function_code__without_secrets():
    +    yield create_lambda_function(), get_lambda_code_with_secrets(
    +        LAMBDA_FUNCTION_CODE_WITHOUT_SECRETS
    +    )
     
     
     class Test_awslambda_function_no_secrets_in_code:
    @@ -38,29 +83,8 @@ def test_no_functions(self):
     
         def test_function_code_with_secrets(self):
             lambda_client = mock.MagicMock
    -        function_name = "test-lambda"
    -        function_runtime = "nodejs4.3"
    -        function_arn = f"arn:aws:lambda:{AWS_REGION_US_EAST_1}:{DEFAULT_ACCOUNT_ID}:function/{function_name}"
    -        code_with_secrets = """
    -        def lambda_handler(event, context):
    -                db_password = "test-password"
    -                print("custom log event")
    -                return event
    -        """
    -        lambda_client.functions = {
    -            "function_name": Function(
    -                name=function_name,
    -                security_groups=[],
    -                arn=function_arn,
    -                region=AWS_REGION_US_EAST_1,
    -                runtime=function_runtime,
    -                code=LambdaCode(
    -                    location="",
    -                    code_zip=zipfile.ZipFile(create_zip_file(code_with_secrets)),
    -                ),
    -            )
    -        }
    -
    +        lambda_client.functions = {LAMBDA_FUNCTION_ARN: create_lambda_function()}
    +        lambda_client.__get_function_code__ = mock__get_function_code__with_secrets
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
                 set_mocked_aws_audit_info(),
    @@ -78,38 +102,20 @@ def lambda_handler(event, context):
     
                 assert len(result) == 1
                 assert result[0].region == AWS_REGION_US_EAST_1
    -            assert result[0].resource_id == function_name
    -            assert result[0].resource_arn == function_arn
    +            assert result[0].resource_id == LAMBDA_FUNCTION_NAME
    +            assert result[0].resource_arn == LAMBDA_FUNCTION_ARN
                 assert result[0].status == "FAIL"
                 assert (
                     result[0].status_extended
    -                == f"Potential secret found in Lambda function {function_name} code -> lambda_function.py: Secret Keyword on line 3."
    +                == f"Potential secret found in Lambda function {LAMBDA_FUNCTION_NAME} code -> lambda_function.py: Secret Keyword on line 3."
                 )
                 assert result[0].resource_tags == []
     
         def test_function_code_without_secrets(self):
             lambda_client = mock.MagicMock
    -        function_name = "test-lambda"
    -        function_runtime = "nodejs4.3"
    -        function_arn = f"arn:aws:lambda:{AWS_REGION_US_EAST_1}:{DEFAULT_ACCOUNT_ID}:function/{function_name}"
    -        code_with_secrets = """
    -        def lambda_handler(event, context):
    -                print("custom log event")
    -                return event
    -        """
    -        lambda_client.functions = {
    -            "function_name": Function(
    -                name=function_name,
    -                security_groups=[],
    -                arn=function_arn,
    -                region=AWS_REGION_US_EAST_1,
    -                runtime=function_runtime,
    -                code=LambdaCode(
    -                    location="",
    -                    code_zip=zipfile.ZipFile(create_zip_file(code_with_secrets)),
    -                ),
    -            )
    -        }
    +        lambda_client.functions = {LAMBDA_FUNCTION_ARN: create_lambda_function()}
    +
    +        lambda_client.__get_function_code__ = mock__get_function_code__without_secrets
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -128,11 +134,11 @@ def lambda_handler(event, context):
     
                 assert len(result) == 1
                 assert result[0].region == AWS_REGION_US_EAST_1
    -            assert result[0].resource_id == function_name
    -            assert result[0].resource_arn == function_arn
    +            assert result[0].resource_id == LAMBDA_FUNCTION_NAME
    +            assert result[0].resource_arn == LAMBDA_FUNCTION_ARN
                 assert result[0].status == "PASS"
                 assert (
                     result[0].status_extended
    -                == f"No secrets found in Lambda function {function_name} code."
    +                == f"No secrets found in Lambda function {LAMBDA_FUNCTION_NAME} code."
                 )
                 assert result[0].resource_tags == []
    diff --git a/tests/providers/aws/services/awslambda/awslambda_function_no_secrets_in_variables/awslambda_function_no_secrets_in_variables_test.py b/tests/providers/aws/services/awslambda/awslambda_function_no_secrets_in_variables/awslambda_function_no_secrets_in_variables_test.py
    index ef9100c4a9d..97ba6e7ed6e 100644
    --- a/tests/providers/aws/services/awslambda/awslambda_function_no_secrets_in_variables/awslambda_function_no_secrets_in_variables_test.py
    +++ b/tests/providers/aws/services/awslambda/awslambda_function_no_secrets_in_variables/awslambda_function_no_secrets_in_variables_test.py
    @@ -1,9 +1,8 @@
     from unittest import mock
     
    -from moto.core import DEFAULT_ACCOUNT_ID
    -
     from prowler.providers.aws.services.awslambda.awslambda_service import Function
     from tests.providers.aws.audit_info_utils import (
    +    AWS_ACCOUNT_NUMBER,
         AWS_REGION_US_EAST_1,
         set_mocked_aws_audit_info,
     )
    @@ -35,7 +34,7 @@ def test_function_no_variables(self):
             lambda_client = mock.MagicMock
             function_name = "test-lambda"
             function_runtime = "nodejs4.3"
    -        function_arn = f"arn:aws:lambda:{AWS_REGION_US_EAST_1}:{DEFAULT_ACCOUNT_ID}:function/{function_name}"
    +        function_arn = f"arn:aws:lambda:{AWS_REGION_US_EAST_1}:{AWS_ACCOUNT_NUMBER}:function/{function_name}"
     
             lambda_client.functions = {
                 "function_name": Function(
    @@ -77,7 +76,7 @@ def test_function_secrets_in_variables(self):
             lambda_client = mock.MagicMock
             function_name = "test-lambda"
             function_runtime = "nodejs4.3"
    -        function_arn = f"arn:aws:lambda:{AWS_REGION_US_EAST_1}:{DEFAULT_ACCOUNT_ID}:function/{function_name}"
    +        function_arn = f"arn:aws:lambda:{AWS_REGION_US_EAST_1}:{AWS_ACCOUNT_NUMBER}:function/{function_name}"
     
             lambda_client.functions = {
                 "function_name": Function(
    @@ -120,7 +119,7 @@ def test_function_no_secrets_in_variables(self):
             lambda_client = mock.MagicMock
             function_name = "test-lambda"
             function_runtime = "nodejs4.3"
    -        function_arn = f"arn:aws:lambda:{AWS_REGION_US_EAST_1}:{DEFAULT_ACCOUNT_ID}:function/{function_name}"
    +        function_arn = f"arn:aws:lambda:{AWS_REGION_US_EAST_1}:{AWS_ACCOUNT_NUMBER}:function/{function_name}"
     
             lambda_client.functions = {
                 "function_name": Function(
    diff --git a/tests/providers/aws/services/awslambda/awslambda_function_not_publicly_accessible/awslambda_function_not_publicly_accessible_test.py b/tests/providers/aws/services/awslambda/awslambda_function_not_publicly_accessible/awslambda_function_not_publicly_accessible_test.py
    index f4e8cbe5ab2..0d08cad4a7f 100644
    --- a/tests/providers/aws/services/awslambda/awslambda_function_not_publicly_accessible/awslambda_function_not_publicly_accessible_test.py
    +++ b/tests/providers/aws/services/awslambda/awslambda_function_not_publicly_accessible/awslambda_function_not_publicly_accessible_test.py
    @@ -1,9 +1,8 @@
     from unittest import mock
     
    -from moto.core import DEFAULT_ACCOUNT_ID
    -
     from prowler.providers.aws.services.awslambda.awslambda_service import Function
     from tests.providers.aws.audit_info_utils import (
    +    AWS_ACCOUNT_NUMBER,
         AWS_REGION_US_EAST_1,
         set_mocked_aws_audit_info,
     )
    @@ -35,13 +34,13 @@ def test_function_public(self):
             lambda_client = mock.MagicMock
             function_name = "test-lambda"
             function_runtime = "nodejs4.3"
    -        function_arn = f"arn:aws:lambda:{AWS_REGION_US_EAST_1}:{DEFAULT_ACCOUNT_ID}:function/{function_name}"
    +        function_arn = f"arn:aws:lambda:{AWS_REGION_US_EAST_1}:{AWS_ACCOUNT_NUMBER}:function/{function_name}"
             lambda_policy = {
                 "Version": "2012-10-17",
                 "Statement": [
                     {
                         "Sid": "public-access",
    -                    "Principal": {"AWS": ["*", DEFAULT_ACCOUNT_ID]},
    +                    "Principal": {"AWS": ["*", AWS_ACCOUNT_NUMBER]},
                         "Effect": "Allow",
                         "Action": [
                             "lambda:InvokeFunction",
    @@ -92,13 +91,13 @@ def test_function_not_public(self):
             lambda_client = mock.MagicMock
             function_name = "test-lambda"
             function_runtime = "nodejs4.3"
    -        function_arn = f"arn:aws:lambda:{AWS_REGION_US_EAST_1}:{DEFAULT_ACCOUNT_ID}:function/{function_name}"
    +        function_arn = f"arn:aws:lambda:{AWS_REGION_US_EAST_1}:{AWS_ACCOUNT_NUMBER}:function/{function_name}"
             lambda_policy = {
                 "Version": "2012-10-17",
                 "Statement": [
                     {
                         "Sid": "public-access",
    -                    "Principal": {"AWS": [DEFAULT_ACCOUNT_ID]},
    +                    "Principal": {"AWS": [AWS_ACCOUNT_NUMBER]},
                         "Effect": "Allow",
                         "Action": [
                             "lambda:InvokeFunction",
    @@ -149,7 +148,7 @@ def test_function_public_with_canonical(self):
             lambda_client = mock.MagicMock
             function_name = "test-lambda"
             function_runtime = "nodejs4.3"
    -        function_arn = f"arn:aws:lambda:{AWS_REGION_US_EAST_1}:{DEFAULT_ACCOUNT_ID}:function/{function_name}"
    +        function_arn = f"arn:aws:lambda:{AWS_REGION_US_EAST_1}:{AWS_ACCOUNT_NUMBER}:function/{function_name}"
             lambda_policy = {
                 "Version": "2012-10-17",
                 "Statement": [
    diff --git a/tests/providers/aws/services/awslambda/awslambda_function_url_cors_policy/awslambda_function_url_cors_policy_test.py b/tests/providers/aws/services/awslambda/awslambda_function_url_cors_policy/awslambda_function_url_cors_policy_test.py
    index edc80e46c27..e7d63f671c6 100644
    --- a/tests/providers/aws/services/awslambda/awslambda_function_url_cors_policy/awslambda_function_url_cors_policy_test.py
    +++ b/tests/providers/aws/services/awslambda/awslambda_function_url_cors_policy/awslambda_function_url_cors_policy_test.py
    @@ -1,7 +1,5 @@
     from unittest import mock
     
    -from moto.core import DEFAULT_ACCOUNT_ID
    -
     from prowler.providers.aws.services.awslambda.awslambda_service import (
         AuthType,
         Function,
    @@ -9,6 +7,7 @@
         URLConfigCORS,
     )
     from tests.providers.aws.audit_info_utils import (
    +    AWS_ACCOUNT_NUMBER,
         AWS_REGION_US_EAST_1,
         set_mocked_aws_audit_info,
     )
    @@ -40,7 +39,7 @@ def test_function_cors_asterisk(self):
             lambda_client = mock.MagicMock
             function_name = "test-lambda"
             function_runtime = "nodejs4.3"
    -        function_arn = f"arn:aws:lambda:{AWS_REGION_US_EAST_1}:{DEFAULT_ACCOUNT_ID}:function/{function_name}"
    +        function_arn = f"arn:aws:lambda:{AWS_REGION_US_EAST_1}:{AWS_ACCOUNT_NUMBER}:function/{function_name}"
             lambda_client.functions = {
                 "function_name": Function(
                     name=function_name,
    @@ -86,7 +85,7 @@ def test_function_cors_not_wide(self):
             lambda_client = mock.MagicMock
             function_name = "test-lambda"
             function_runtime = "python3.9"
    -        function_arn = f"arn:aws:lambda:{AWS_REGION_US_EAST_1}:{DEFAULT_ACCOUNT_ID}:function/{function_name}"
    +        function_arn = f"arn:aws:lambda:{AWS_REGION_US_EAST_1}:{AWS_ACCOUNT_NUMBER}:function/{function_name}"
             lambda_client.functions = {
                 "function_name": Function(
                     name=function_name,
    @@ -132,7 +131,7 @@ def test_function_cors_wide_with_two_origins(self):
             lambda_client = mock.MagicMock
             function_name = "test-lambda"
             function_runtime = "python3.9"
    -        function_arn = f"arn:aws:lambda:{AWS_REGION_US_EAST_1}:{DEFAULT_ACCOUNT_ID}:function/{function_name}"
    +        function_arn = f"arn:aws:lambda:{AWS_REGION_US_EAST_1}:{AWS_ACCOUNT_NUMBER}:function/{function_name}"
             lambda_client.functions = {
                 "function_name": Function(
                     name=function_name,
    diff --git a/tests/providers/aws/services/awslambda/awslambda_function_url_public/awslambda_function_url_public_test.py b/tests/providers/aws/services/awslambda/awslambda_function_url_public/awslambda_function_url_public_test.py
    index 9adbef2ea47..56a6d7414b9 100644
    --- a/tests/providers/aws/services/awslambda/awslambda_function_url_public/awslambda_function_url_public_test.py
    +++ b/tests/providers/aws/services/awslambda/awslambda_function_url_public/awslambda_function_url_public_test.py
    @@ -1,7 +1,5 @@
     from unittest import mock
     
    -from moto.core import DEFAULT_ACCOUNT_ID
    -
     from prowler.providers.aws.services.awslambda.awslambda_service import (
         AuthType,
         Function,
    @@ -9,6 +7,7 @@
         URLConfigCORS,
     )
     from tests.providers.aws.audit_info_utils import (
    +    AWS_ACCOUNT_NUMBER,
         AWS_REGION_US_EAST_1,
         set_mocked_aws_audit_info,
     )
    @@ -40,7 +39,7 @@ def test_function_public_url(self):
             lambda_client = mock.MagicMock
             function_name = "test-lambda"
             function_runtime = "nodejs4.3"
    -        function_arn = f"arn:aws:lambda:{AWS_REGION_US_EAST_1}:{DEFAULT_ACCOUNT_ID}:function/{function_name}"
    +        function_arn = f"arn:aws:lambda:{AWS_REGION_US_EAST_1}:{AWS_ACCOUNT_NUMBER}:function/{function_name}"
             lambda_client.functions = {
                 "function_name": Function(
                     name=function_name,
    @@ -86,7 +85,7 @@ def test_function_private_url(self):
             lambda_client = mock.MagicMock
             function_name = "test-lambda"
             function_runtime = "python3.9"
    -        function_arn = f"arn:aws:lambda:{AWS_REGION_US_EAST_1}:{DEFAULT_ACCOUNT_ID}:function/{function_name}"
    +        function_arn = f"arn:aws:lambda:{AWS_REGION_US_EAST_1}:{AWS_ACCOUNT_NUMBER}:function/{function_name}"
             lambda_client.functions = {
                 "function_name": Function(
                     name=function_name,
    diff --git a/tests/providers/aws/services/awslambda/awslambda_function_using_supported_runtimes/awslambda_function_using_supported_runtimes_test.py b/tests/providers/aws/services/awslambda/awslambda_function_using_supported_runtimes/awslambda_function_using_supported_runtimes_test.py
    index 9e518ca96a8..773d02898a5 100644
    --- a/tests/providers/aws/services/awslambda/awslambda_function_using_supported_runtimes/awslambda_function_using_supported_runtimes_test.py
    +++ b/tests/providers/aws/services/awslambda/awslambda_function_using_supported_runtimes/awslambda_function_using_supported_runtimes_test.py
    @@ -1,9 +1,8 @@
     from unittest import mock
     
    -from moto.core import DEFAULT_ACCOUNT_ID
    -
     from prowler.providers.aws.services.awslambda.awslambda_service import Function
     from tests.providers.aws.audit_info_utils import (
    +    AWS_ACCOUNT_NUMBER,
         AWS_REGION_US_EAST_1,
         set_mocked_aws_audit_info,
     )
    @@ -35,7 +34,7 @@ def test_function_obsolete_runtime(self):
             lambda_client = mock.MagicMock
             function_name = "test-lambda"
             function_runtime = "nodejs4.3"
    -        function_arn = f"arn:aws:lambda:{AWS_REGION_US_EAST_1}:{DEFAULT_ACCOUNT_ID}:function/{function_name}"
    +        function_arn = f"arn:aws:lambda:{AWS_REGION_US_EAST_1}:{AWS_ACCOUNT_NUMBER}:function/{function_name}"
             lambda_client.functions = {
                 "function_name": Function(
                     name=function_name,
    @@ -94,7 +93,7 @@ def test_function_supported_runtime(self):
             lambda_client = mock.MagicMock
             function_name = "test-lambda"
             function_runtime = "python3.9"
    -        function_arn = f"arn:aws:lambda:{AWS_REGION_US_EAST_1}:{DEFAULT_ACCOUNT_ID}:function/{function_name}"
    +        function_arn = f"arn:aws:lambda:{AWS_REGION_US_EAST_1}:{AWS_ACCOUNT_NUMBER}:function/{function_name}"
             lambda_client.functions = {
                 "function_name": Function(
                     name=function_name,
    @@ -152,7 +151,7 @@ def test_function_supported_runtime(self):
         def test_function_no_runtime(self):
             lambda_client = mock.MagicMock
             function_name = "test-lambda"
    -        function_arn = f"arn:aws:lambda:{AWS_REGION_US_EAST_1}:{DEFAULT_ACCOUNT_ID}:function/{function_name}"
    +        function_arn = f"arn:aws:lambda:{AWS_REGION_US_EAST_1}:{AWS_ACCOUNT_NUMBER}:function/{function_name}"
             lambda_client.functions = {
                 "function_name": Function(
                     name=function_name,
    diff --git a/tests/providers/aws/services/awslambda/awslambda_service_test.py b/tests/providers/aws/services/awslambda/awslambda_service_test.py
    index aa8e45a6127..07e6ef175d4 100644
    --- a/tests/providers/aws/services/awslambda/awslambda_service_test.py
    +++ b/tests/providers/aws/services/awslambda/awslambda_service_test.py
    @@ -6,17 +6,21 @@
     from unittest.mock import patch
     
     import mock
    -from boto3 import client, resource, session
    -from moto import mock_iam, mock_lambda, mock_s3
    -from moto.core import DEFAULT_ACCOUNT_ID
    +from boto3 import client, resource
    +from moto import mock_aws
     
    -from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info
     from prowler.providers.aws.services.awslambda.awslambda_service import AuthType, Lambda
    -from prowler.providers.common.models import Audit_Metadata
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_ACCOUNT_NUMBER,
    +    AWS_REGION_EU_WEST_1,
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
    -# Mock Test Region
    -AWS_REGION = "eu-west-1"
    -AWS_REGION_NORTH_VIRGINIA = "us-east-1"
    +LAMBDA_FUNCTION_CODE = """def lambda_handler(event, context):
    +print("custom log event")
    +return event
    +            """
     
     
     def create_zip_file(code: str = "") -> io.BytesIO:
    @@ -25,11 +29,7 @@ def create_zip_file(code: str = "") -> io.BytesIO:
         if not code:
             zip_file.writestr(
                 "lambda_function.py",
    -            """
    -            def lambda_handler(event, context):
    -                print("custom log event")
    -                return event
    -            """,
    +            LAMBDA_FUNCTION_CODE,
             )
         else:
             zip_file.writestr("lambda_function.py", code)
    @@ -47,18 +47,18 @@ 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
    +        service, region_name=AWS_REGION_EU_WEST_1
         )
         regional_client_us_east_1 = audit_info.audit_session.client(
    -        service, region_name=AWS_REGION_NORTH_VIRGINIA
    +        service, region_name=AWS_REGION_US_EAST_1
         )
    -    regional_client_eu_west_1.region = AWS_REGION
    -    regional_client_us_east_1.region = AWS_REGION_NORTH_VIRGINIA
    +    regional_client_eu_west_1.region = AWS_REGION_EU_WEST_1
    +    regional_client_us_east_1.region = AWS_REGION_US_EAST_1
         return {
    -        AWS_REGION: regional_client_eu_west_1,
    -        AWS_REGION_NORTH_VIRGINIA: regional_client_us_east_1,
    +        AWS_REGION_EU_WEST_1: regional_client_eu_west_1,
    +        AWS_REGION_US_EAST_1: regional_client_us_east_1,
         }
     
     
    @@ -67,73 +67,44 @@ def mock_generate_regional_clients(service, audit_info, _):
         new=mock_generate_regional_clients,
     )
     class Test_Lambda_Service:
    -    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=DEFAULT_ACCOUNT_ID,
    -            audited_account_arn=f"arn:aws:iam::{DEFAULT_ACCOUNT_ID}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=None,
    -            organizations_metadata=None,
    -            audit_resources=None,
    -            mfa_enabled=False,
    -            audit_metadata=Audit_Metadata(
    -                services_scanned=0,
    -                expected_checks=["awslambda_function_no_secrets_in_code"],
    -                completed_checks=0,
    -                audit_progress=0,
    -            ),
    -        )
    -        return audit_info
    -
         # Test Lambda Client
         def test__get_client__(self):
    -        awslambda = Lambda(self.set_mocked_audit_info())
    -        assert awslambda.regional_clients[AWS_REGION].__class__.__name__ == "Lambda"
    +        awslambda = Lambda(set_mocked_aws_audit_info([AWS_REGION_US_EAST_1]))
    +        assert (
    +            awslambda.regional_clients[AWS_REGION_EU_WEST_1].__class__.__name__
    +            == "Lambda"
    +        )
     
         # Test Lambda Session
         def test__get_session__(self):
    -        awslambda = Lambda(self.set_mocked_audit_info())
    +        awslambda = Lambda(set_mocked_aws_audit_info([AWS_REGION_US_EAST_1]))
             assert awslambda.session.__class__.__name__ == "Session"
     
         # Test Lambda Service
         def test__get_service__(self):
    -        awslambda = Lambda(self.set_mocked_audit_info())
    +        awslambda = Lambda(set_mocked_aws_audit_info([AWS_REGION_US_EAST_1]))
             assert awslambda.service == "lambda"
     
    -    @mock_lambda
    -    @mock_iam
    -    @mock_s3
    +    @mock_aws
         def test__list_functions__(self):
             # Create IAM Lambda Role
    -        iam_client = client("iam", region_name=AWS_REGION)
    +        iam_client = client("iam", region_name=AWS_REGION_EU_WEST_1)
             iam_role = iam_client.create_role(
                 RoleName="test-lambda-role",
                 AssumeRolePolicyDocument="test-policy",
                 Path="/",
             )["Role"]["Arn"]
             # Create S3 Bucket
    -        s3_client = resource("s3", region_name=AWS_REGION)
    +        s3_client = resource("s3", region_name=AWS_REGION_EU_WEST_1)
             s3_client.create_bucket(
                 Bucket="test-bucket",
    -            CreateBucketConfiguration={"LocationConstraint": AWS_REGION},
    +            CreateBucketConfiguration={"LocationConstraint": AWS_REGION_EU_WEST_1},
             )
             # Create Test Lambda 1
    -        lambda_client = client("lambda", region_name=AWS_REGION)
    -        lambda_name = "test-lambda"
    +        lambda_client = client("lambda", region_name=AWS_REGION_EU_WEST_1)
    +        lambda_name_1 = "test-lambda-1"
             resp = lambda_client.create_function(
    -            FunctionName=lambda_name,
    +            FunctionName=lambda_name_1,
                 Runtime="python3.7",
                 Role=iam_role,
                 Handler="lambda_function.lambda_handler",
    @@ -160,20 +131,20 @@ def test__list_functions__(self):
                         "Action": "lambda:GetFunction",
                         "Principal": "*",
                         "Effect": "Allow",
    -                    "Resource": f"arn:aws:lambda:{AWS_REGION}:{DEFAULT_ACCOUNT_ID}:function:{lambda_name}",
    +                    "Resource": f"arn:aws:lambda:{AWS_REGION_EU_WEST_1}:{AWS_ACCOUNT_NUMBER}:function:{lambda_name_1}",
                         "Sid": "test",
                     }
                 ],
             }
             _ = lambda_client.add_permission(
    -            FunctionName=lambda_name,
    +            FunctionName=lambda_name_1,
                 StatementId="test",
                 Action="lambda:GetFunction",
                 Principal="*",
             )
             # Create Function URL Config
             _ = lambda_client.create_function_url_config(
    -            FunctionName=lambda_name,
    +            FunctionName=lambda_name_1,
                 AuthType=AuthType.AWS_IAM.value,
                 Cors={
                     "AllowCredentials": True,
    @@ -194,10 +165,10 @@ def test__list_functions__(self):
             )
     
             # Create Test Lambda 2 (with the same attributes but different region)
    -        lambda_client_2 = client("lambda", region_name=AWS_REGION_NORTH_VIRGINIA)
    -        lambda_name = "test-lambda"
    +        lambda_client_2 = client("lambda", region_name=AWS_REGION_US_EAST_1)
    +        lambda_name_2 = "test-lambda-2"
             resp_2 = lambda_client_2.create_function(
    -            FunctionName=lambda_name,
    +            FunctionName=lambda_name_2,
                 Runtime="python3.7",
                 Role=iam_role,
                 Handler="lambda_function.lambda_handler",
    @@ -220,25 +191,21 @@ def test__list_functions__(self):
                 "prowler.providers.aws.services.awslambda.awslambda_service.requests.get",
                 new=mock_request_get,
             ):
    -            awslambda = Lambda(self.set_mocked_audit_info())
    +            awslambda = Lambda(
    +                set_mocked_aws_audit_info(audited_regions=[AWS_REGION_US_EAST_1])
    +            )
                 assert awslambda.functions
                 assert len(awslambda.functions) == 2
                 # Lambda 1
    -            assert awslambda.functions[lambda_arn_1].name == lambda_name
    +            assert awslambda.functions[lambda_arn_1].name == lambda_name_1
                 assert awslambda.functions[lambda_arn_1].arn == lambda_arn_1
                 assert awslambda.functions[lambda_arn_1].runtime == "python3.7"
                 assert awslambda.functions[lambda_arn_1].environment == {
                     "db-password": "test-password"
                 }
    -            assert awslambda.functions[lambda_arn_1].region == AWS_REGION
    +            assert awslambda.functions[lambda_arn_1].region == AWS_REGION_EU_WEST_1
                 assert awslambda.functions[lambda_arn_1].policy == lambda_policy
     
    -            assert awslambda.functions[lambda_arn_1].code
    -            assert search(
    -                f"s3://awslambda-{AWS_REGION}-tasks.s3-{AWS_REGION}.amazonaws.com",
    -                awslambda.functions[lambda_arn_1].code.location,
    -            )
    -
                 assert awslambda.functions[lambda_arn_1].url_config
                 assert (
                     awslambda.functions[lambda_arn_1].url_config.auth_type
    @@ -256,31 +223,14 @@ def test__list_functions__(self):
     
                 assert awslambda.functions[lambda_arn_1].tags == [{"test": "test"}]
     
    -            # Pending ZipFile tests
    -            with tempfile.TemporaryDirectory() as tmp_dir_name:
    -                awslambda.functions[lambda_arn_1].code.code_zip.extractall(tmp_dir_name)
    -                files_in_zip = next(os.walk(tmp_dir_name))[2]
    -                assert len(files_in_zip) == 1
    -                assert files_in_zip[0] == "lambda_function.py"
    -                with open(f"{tmp_dir_name}/{files_in_zip[0]}", "r") as lambda_code_file:
    -                    _ = lambda_code_file
    -                    # assert (
    -                    #     lambda_code_file.read()
    -                    #     == """
    -                    # def lambda_handler(event, context):
    -                    # print("custom log event")
    -                    # return event
    -                    # """
    -                    # )
    -
                 # Lambda 2
    -            assert awslambda.functions[lambda_arn_2].name == lambda_name
    +            assert awslambda.functions[lambda_arn_2].name == lambda_name_2
                 assert awslambda.functions[lambda_arn_2].arn == lambda_arn_2
                 assert awslambda.functions[lambda_arn_2].runtime == "python3.7"
                 assert awslambda.functions[lambda_arn_2].environment == {
                     "db-password": "test-password"
                 }
    -            assert awslambda.functions[lambda_arn_2].region == AWS_REGION_NORTH_VIRGINIA
    +            assert awslambda.functions[lambda_arn_2].region == AWS_REGION_US_EAST_1
                 # Emtpy policy
                 assert awslambda.functions[lambda_arn_2].policy == {
                     "Id": "default",
    @@ -288,8 +238,20 @@ def test__list_functions__(self):
                     "Version": "2012-10-17",
                 }
     
    -            assert awslambda.functions[lambda_arn_2].code
    -            assert search(
    -                f"s3://awslambda-{AWS_REGION_NORTH_VIRGINIA}-tasks.s3-{AWS_REGION_NORTH_VIRGINIA}.amazonaws.com",
    -                awslambda.functions[lambda_arn_2].code.location,
    -            )
    +            # Lambda Code
    +            with tempfile.TemporaryDirectory() as tmp_dir_name:
    +                for function, function_code in awslambda.__get_function_code__():
    +                    if function.arn == lambda_arn_1 or function.arn == lambda_arn_2:
    +                        assert search(
    +                            f"s3://awslambda-{function.region}-tasks.s3-{function.region}.amazonaws.com",
    +                            function_code.location,
    +                        )
    +                        assert function_code
    +                        function_code.code_zip.extractall(tmp_dir_name)
    +                        files_in_zip = next(os.walk(tmp_dir_name))[2]
    +                        assert len(files_in_zip) == 1
    +                        assert files_in_zip[0] == "lambda_function.py"
    +                        with open(
    +                            f"{tmp_dir_name}/{files_in_zip[0]}", "r"
    +                        ) as lambda_code_file:
    +                            assert lambda_code_file.read() == LAMBDA_FUNCTION_CODE
    diff --git a/tests/providers/aws/services/backup/backup_service_test.py b/tests/providers/aws/services/backup/backup_service_test.py
    index e24f2940ec5..760d995b2e0 100644
    --- a/tests/providers/aws/services/backup/backup_service_test.py
    +++ b/tests/providers/aws/services/backup/backup_service_test.py
    @@ -2,14 +2,12 @@
     from unittest.mock import patch
     
     import botocore
    -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"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_REGION_EU_WEST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     # Mocking Backup Calls
     make_api_call = botocore.client.BaseClient._make_api_call
    @@ -60,10 +58,12 @@ 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, _):
    -    regional_client = audit_info.audit_session.client(service, region_name=AWS_REGION)
    -    regional_client.region = AWS_REGION
    -    return {AWS_REGION: regional_client}
    +def mock_generate_regional_clients(service, audit_info):
    +    regional_client = audit_info.audit_session.client(
    +        service, region_name=AWS_REGION_EU_WEST_1
    +    )
    +    regional_client.region = AWS_REGION_EU_WEST_1
    +    return {AWS_REGION_EU_WEST_1: regional_client}
     
     
     # Patch every AWS call using Boto3 and generate_regional_clients to have 1 client
    @@ -73,63 +73,34 @@ def mock_generate_regional_clients(service, audit_info, _):
         new=mock_generate_regional_clients,
     )
     class Test_Backup_Service:
    -    # 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=None,
    -            audited_account_arn=None,
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=None,
    -            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
    -
         # Test Backup Client
         def test__get_client__(self):
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1])
             backup = Backup(audit_info)
    -        assert backup.regional_clients[AWS_REGION].__class__.__name__ == "Backup"
    +        assert (
    +            backup.regional_clients[AWS_REGION_EU_WEST_1].__class__.__name__ == "Backup"
    +        )
     
         # Test Backup Session
         def test__get_session__(self):
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1])
             access_analyzer = Backup(audit_info)
             assert access_analyzer.session.__class__.__name__ == "Session"
     
         # Test Backup Service
         def test__get_service__(self):
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1])
             access_analyzer = Backup(audit_info)
             assert access_analyzer.service == "backup"
     
         # Test Backup List Backup Vaults
         def test__list_backup_vaults__(self):
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1])
             backup = Backup(audit_info)
             assert len(backup.backup_vaults) == 1
             assert backup.backup_vaults[0].arn == "ARN"
             assert backup.backup_vaults[0].name == "Test Vault"
    -        assert backup.backup_vaults[0].region == AWS_REGION
    +        assert backup.backup_vaults[0].region == AWS_REGION_EU_WEST_1
             assert backup.backup_vaults[0].encryption == ""
             assert backup.backup_vaults[0].recovery_points == 0
             assert backup.backup_vaults[0].locked is True
    @@ -138,12 +109,12 @@ def test__list_backup_vaults__(self):
     
         # Test Backup List Backup Plans
         def test__list_backup_plans__(self):
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1])
             backup = Backup(audit_info)
             assert len(backup.backup_plans) == 1
             assert backup.backup_plans[0].arn == "ARN"
             assert backup.backup_plans[0].id == "ID"
    -        assert backup.backup_plans[0].region == AWS_REGION
    +        assert backup.backup_plans[0].region == AWS_REGION_EU_WEST_1
             assert backup.backup_plans[0].name == "Test Plan"
             assert backup.backup_plans[0].version_id == "test_version_id"
             assert backup.backup_plans[0].last_execution_date == datetime(2015, 1, 1)
    @@ -151,11 +122,11 @@ def test__list_backup_plans__(self):
     
         # Test Backup List Report Plans
         def test__list_backup_report_plans__(self):
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1])
             backup = Backup(audit_info)
             assert len(backup.backup_report_plans) == 1
             assert backup.backup_report_plans[0].arn == "ARN"
    -        assert backup.backup_report_plans[0].region == AWS_REGION
    +        assert backup.backup_report_plans[0].region == AWS_REGION_EU_WEST_1
             assert backup.backup_report_plans[0].name == "Test Report Plan"
             assert backup.backup_report_plans[0].last_attempted_execution_date == datetime(
                 2015, 1, 1
    diff --git a/tests/providers/aws/services/cloudformation/cloudformation_service_test.py b/tests/providers/aws/services/cloudformation/cloudformation_service_test.py
    index 7bf7fbd4695..6519f0b2a8e 100644
    --- a/tests/providers/aws/services/cloudformation/cloudformation_service_test.py
    +++ b/tests/providers/aws/services/cloudformation/cloudformation_service_test.py
    @@ -4,19 +4,17 @@
     
     import boto3
     import botocore
    -from boto3 import session
     from dateutil.tz import tzutc
    -from moto import mock_cloudformation
    -from moto.core import DEFAULT_ACCOUNT_ID
    +from moto import mock_aws
     
    -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"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_ACCOUNT_NUMBER,
    +    AWS_REGION_EU_WEST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     # Dummy CloudFormation Template
     dummy_template = {
    @@ -121,10 +119,12 @@ def mock_make_api_call(self, operation_name, kwarg):
     
     
     # Mock generate_regional_clients()
    -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}
    +def mock_generate_regional_clients(service, audit_info):
    +    regional_client = audit_info.audit_session.client(
    +        service, region_name=AWS_REGION_EU_WEST_1
    +    )
    +    regional_client.region = AWS_REGION_EU_WEST_1
    +    return {AWS_REGION_EU_WEST_1: regional_client}
     
     
     # Patch every AWS call using Boto3 and generate_regional_clients to have 1 client
    @@ -134,68 +134,45 @@ def mock_generate_regional_clients(service, audit_info, _):
         new=mock_generate_regional_clients,
     )
     class Test_CloudFormation_Service:
    -    # 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=None,
    -            audited_account_arn=None,
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=None,
    -            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
    -
         # Test CloudFormation Client
    -    @mock_cloudformation
    +    @mock_aws
         def test__get_client__(self):
    -        cloudformation = CloudFormation(self.set_mocked_audit_info())
    +        cloudformation = CloudFormation(
    +            set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1])
    +        )
             assert (
    -            cloudformation.regional_clients[AWS_REGION].__class__.__name__
    +            cloudformation.regional_clients[AWS_REGION_EU_WEST_1].__class__.__name__
                 == "CloudFormation"
             )
     
         # Test CloudFormation Service
    -    @mock_cloudformation
    +    @mock_aws
         def test__get_service__(self):
    -        cloudformation = CloudFormation(self.set_mocked_audit_info())
    +        cloudformation = CloudFormation(
    +            set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1])
    +        )
             assert (
    -            cloudformation.regional_clients[AWS_REGION].__class__.__name__
    +            cloudformation.regional_clients[AWS_REGION_EU_WEST_1].__class__.__name__
                 == "CloudFormation"
             )
     
         # Test CloudFormation Session
    -    @mock_cloudformation
    +    @mock_aws
         def test__get_session__(self):
    -        cloudformation = CloudFormation(self.set_mocked_audit_info())
    +        cloudformation = CloudFormation(
    +            set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1])
    +        )
             assert cloudformation.session.__class__.__name__ == "Session"
     
    -    @mock_cloudformation
    +    @mock_aws
         def test__describe_stacks__(self):
    -        cloudformation_client = boto3.client("cloudformation", region_name=AWS_REGION)
    +        cloudformation_client = boto3.client(
    +            "cloudformation", region_name=AWS_REGION_EU_WEST_1
    +        )
             stack_arn = cloudformation_client.create_stack(
                 StackName="Test-Stack",
                 TemplateBody=json.dumps(dummy_template),
    -            RoleARN=f"arn:aws:iam::{DEFAULT_ACCOUNT_ID}:role/moto",
    +            RoleARN=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:role/moto",
                 Tags=[
                     {"Key": "Tag1", "Value": "Value1"},
                     {"Key": "Tag2", "Value": "Value2"},
    @@ -210,7 +187,9 @@ def test__describe_stacks__(self):
                 ],
             )
     
    -        cloudformation = CloudFormation(self.set_mocked_audit_info())
    +        cloudformation = CloudFormation(
    +            set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1])
    +        )
             assert len(cloudformation.stacks) == 1
             assert cloudformation.stacks[0].arn == stack_arn["StackId"]
             assert cloudformation.stacks[0].name == "Test-Stack"
    @@ -218,7 +197,7 @@ def test__describe_stacks__(self):
             assert cloudformation.stacks[0].enable_termination_protection is True
             assert cloudformation.stacks[0].is_nested_stack is False
             assert cloudformation.stacks[0].root_nested_stack == ""
    -        assert cloudformation.stacks[0].region == AWS_REGION
    +        assert cloudformation.stacks[0].region == AWS_REGION_EU_WEST_1
             assert cloudformation.stacks[0].tags == [
                 {"Key": "Tag1", "Value": "Value1"},
                 {"Key": "Tag2", "Value": "Value2"},
    diff --git a/tests/providers/aws/services/cloudfront/cloudfront_distributions_field_level_encryption_enabled/cloudfront_distributions_field_level_encryption_enabled_test.py b/tests/providers/aws/services/cloudfront/cloudfront_distributions_field_level_encryption_enabled/cloudfront_distributions_field_level_encryption_enabled_test.py
    index 7a508677a9c..c474a6ae46b 100644
    --- a/tests/providers/aws/services/cloudfront/cloudfront_distributions_field_level_encryption_enabled/cloudfront_distributions_field_level_encryption_enabled_test.py
    +++ b/tests/providers/aws/services/cloudfront/cloudfront_distributions_field_level_encryption_enabled/cloudfront_distributions_field_level_encryption_enabled_test.py
    @@ -1,16 +1,15 @@
     from unittest import mock
     
    -from moto.core import DEFAULT_ACCOUNT_ID
    -
     from prowler.providers.aws.services.cloudfront.cloudfront_service import (
         DefaultCacheConfigBehaviour,
         Distribution,
         ViewerProtocolPolicy,
     )
    +from tests.providers.aws.audit_info_utils import AWS_ACCOUNT_NUMBER
     
     DISTRIBUTION_ID = "E27LVI50CSW06W"
     DISTRIBUTION_ARN = (
    -    f"arn:aws:cloudfront::{DEFAULT_ACCOUNT_ID}:distribution/{DISTRIBUTION_ID}"
    +    f"arn:aws:cloudfront::{AWS_ACCOUNT_NUMBER}:distribution/{DISTRIBUTION_ID}"
     )
     REGION = "eu-west-1"
     
    diff --git a/tests/providers/aws/services/cloudfront/cloudfront_distributions_geo_restrictions_enabled/cloudfront_distributions_geo_restrictions_enabled_test.py b/tests/providers/aws/services/cloudfront/cloudfront_distributions_geo_restrictions_enabled/cloudfront_distributions_geo_restrictions_enabled_test.py
    index 29f6b722ade..eeec7087093 100644
    --- a/tests/providers/aws/services/cloudfront/cloudfront_distributions_geo_restrictions_enabled/cloudfront_distributions_geo_restrictions_enabled_test.py
    +++ b/tests/providers/aws/services/cloudfront/cloudfront_distributions_geo_restrictions_enabled/cloudfront_distributions_geo_restrictions_enabled_test.py
    @@ -1,15 +1,14 @@
     from unittest import mock
     
    -from moto.core import DEFAULT_ACCOUNT_ID
    -
     from prowler.providers.aws.services.cloudfront.cloudfront_service import (
         Distribution,
         GeoRestrictionType,
     )
    +from tests.providers.aws.audit_info_utils import AWS_ACCOUNT_NUMBER
     
     DISTRIBUTION_ID = "E27LVI50CSW06W"
     DISTRIBUTION_ARN = (
    -    f"arn:aws:cloudfront::{DEFAULT_ACCOUNT_ID}:distribution/{DISTRIBUTION_ID}"
    +    f"arn:aws:cloudfront::{AWS_ACCOUNT_NUMBER}:distribution/{DISTRIBUTION_ID}"
     )
     REGION = "eu-west-1"
     
    diff --git a/tests/providers/aws/services/cloudfront/cloudfront_distributions_https_enabled/cloudfront_distributions_https_enabled_test.py b/tests/providers/aws/services/cloudfront/cloudfront_distributions_https_enabled/cloudfront_distributions_https_enabled_test.py
    index 051295ae8bc..70b5966820c 100644
    --- a/tests/providers/aws/services/cloudfront/cloudfront_distributions_https_enabled/cloudfront_distributions_https_enabled_test.py
    +++ b/tests/providers/aws/services/cloudfront/cloudfront_distributions_https_enabled/cloudfront_distributions_https_enabled_test.py
    @@ -1,16 +1,15 @@
     from unittest import mock
     
    -from moto.core import DEFAULT_ACCOUNT_ID
    -
     from prowler.providers.aws.services.cloudfront.cloudfront_service import (
         DefaultCacheConfigBehaviour,
         Distribution,
         ViewerProtocolPolicy,
     )
    +from tests.providers.aws.audit_info_utils import AWS_ACCOUNT_NUMBER
     
     DISTRIBUTION_ID = "E27LVI50CSW06W"
     DISTRIBUTION_ARN = (
    -    f"arn:aws:cloudfront::{DEFAULT_ACCOUNT_ID}:distribution/{DISTRIBUTION_ID}"
    +    f"arn:aws:cloudfront::{AWS_ACCOUNT_NUMBER}:distribution/{DISTRIBUTION_ID}"
     )
     REGION = "eu-west-1"
     
    diff --git a/tests/providers/aws/services/cloudfront/cloudfront_distributions_logging_enabled/cloudfront_distributions_logging_enabled_test.py b/tests/providers/aws/services/cloudfront/cloudfront_distributions_logging_enabled/cloudfront_distributions_logging_enabled_test.py
    index cbb770f08f8..23db912d9ed 100644
    --- a/tests/providers/aws/services/cloudfront/cloudfront_distributions_logging_enabled/cloudfront_distributions_logging_enabled_test.py
    +++ b/tests/providers/aws/services/cloudfront/cloudfront_distributions_logging_enabled/cloudfront_distributions_logging_enabled_test.py
    @@ -1,16 +1,15 @@
     from unittest import mock
     
    -from moto.core import DEFAULT_ACCOUNT_ID
    -
     from prowler.providers.aws.services.cloudfront.cloudfront_service import (
         DefaultCacheConfigBehaviour,
         Distribution,
         ViewerProtocolPolicy,
     )
    +from tests.providers.aws.audit_info_utils import AWS_ACCOUNT_NUMBER
     
     DISTRIBUTION_ID = "E27LVI50CSW06W"
     DISTRIBUTION_ARN = (
    -    f"arn:aws:cloudfront::{DEFAULT_ACCOUNT_ID}:distribution/{DISTRIBUTION_ID}"
    +    f"arn:aws:cloudfront::{AWS_ACCOUNT_NUMBER}:distribution/{DISTRIBUTION_ID}"
     )
     REGION = "eu-west-1"
     
    diff --git a/tests/providers/aws/services/cloudfront/cloudfront_distributions_using_deprecated_ssl_protocols/cloudfront_distributions_using_deprecated_ssl_protocols_test.py b/tests/providers/aws/services/cloudfront/cloudfront_distributions_using_deprecated_ssl_protocols/cloudfront_distributions_using_deprecated_ssl_protocols_test.py
    index fc00ab858ab..6f70e746cff 100644
    --- a/tests/providers/aws/services/cloudfront/cloudfront_distributions_using_deprecated_ssl_protocols/cloudfront_distributions_using_deprecated_ssl_protocols_test.py
    +++ b/tests/providers/aws/services/cloudfront/cloudfront_distributions_using_deprecated_ssl_protocols/cloudfront_distributions_using_deprecated_ssl_protocols_test.py
    @@ -1,12 +1,11 @@
     from unittest import mock
     
    -from moto.core import DEFAULT_ACCOUNT_ID
    -
     from prowler.providers.aws.services.cloudfront.cloudfront_service import Distribution
    +from tests.providers.aws.audit_info_utils import AWS_ACCOUNT_NUMBER
     
     DISTRIBUTION_ID = "E27LVI50CSW06W"
     DISTRIBUTION_ARN = (
    -    f"arn:aws:cloudfront::{DEFAULT_ACCOUNT_ID}:distribution/{DISTRIBUTION_ID}"
    +    f"arn:aws:cloudfront::{AWS_ACCOUNT_NUMBER}:distribution/{DISTRIBUTION_ID}"
     )
     REGION = "eu-west-1"
     
    diff --git a/tests/providers/aws/services/cloudfront/cloudfront_distributions_using_waf/cloudfront_distributions_using_waf_test.py b/tests/providers/aws/services/cloudfront/cloudfront_distributions_using_waf/cloudfront_distributions_using_waf_test.py
    index 79eff595e9a..f408ebdc530 100644
    --- a/tests/providers/aws/services/cloudfront/cloudfront_distributions_using_waf/cloudfront_distributions_using_waf_test.py
    +++ b/tests/providers/aws/services/cloudfront/cloudfront_distributions_using_waf/cloudfront_distributions_using_waf_test.py
    @@ -1,12 +1,11 @@
     from unittest import mock
     
    -from moto.core import DEFAULT_ACCOUNT_ID
    -
     from prowler.providers.aws.services.cloudfront.cloudfront_service import Distribution
    +from tests.providers.aws.audit_info_utils import AWS_ACCOUNT_NUMBER
     
     DISTRIBUTION_ID = "E27LVI50CSW06W"
     DISTRIBUTION_ARN = (
    -    f"arn:aws:cloudfront::{DEFAULT_ACCOUNT_ID}:distribution/{DISTRIBUTION_ID}"
    +    f"arn:aws:cloudfront::{AWS_ACCOUNT_NUMBER}:distribution/{DISTRIBUTION_ID}"
     )
     REGION = "eu-west-1"
     
    diff --git a/tests/providers/aws/services/cloudfront/cloudfront_service_test.py b/tests/providers/aws/services/cloudfront/cloudfront_service_test.py
    index 725137c17ae..0718c02d7a5 100644
    --- a/tests/providers/aws/services/cloudfront/cloudfront_service_test.py
    +++ b/tests/providers/aws/services/cloudfront/cloudfront_service_test.py
    @@ -1,20 +1,18 @@
     from unittest.mock import patch
     
     import botocore
    -from boto3 import client, session
    -from moto import mock_cloudfront
    -from moto.core import DEFAULT_ACCOUNT_ID
    +from boto3 import client
    +from moto import mock_aws
     
    -from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info
     from prowler.providers.aws.services.cloudfront.cloudfront_service import (
         CloudFront,
         GeoRestrictionType,
         ViewerProtocolPolicy,
     )
    -from prowler.providers.common.models import Audit_Metadata
    -
    -# Mock Test Region
    -AWS_REGION = "eu-west-1"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     
     def example_distribution_config(ref):
    @@ -149,76 +147,41 @@ def mock_make_api_call(self, operation_name, kwarg):
         return make_api_call(self, operation_name, kwarg)
     
     
    -# PENDING PR TO GET THE PARAMETERS USING MOTO
    -
    -
     # Patch every AWS call using Boto3
     @patch("botocore.client.BaseClient._make_api_call", new=mock_make_api_call)
     class Test_CloudFront_Service:
    -    # 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,
    -                region_name=AWS_REGION,
    -            ),
    -            audited_account=DEFAULT_ACCOUNT_ID,
    -            audited_account_arn=f"arn:aws:iam::{DEFAULT_ACCOUNT_ID}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=AWS_REGION,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=None,
    -            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
    -
         # Test CloudFront Client
    -    @mock_cloudfront
    +    @mock_aws
         def test__get_client__(self):
    -        cloudfront = CloudFront(self.set_mocked_audit_info())
    +        cloudfront = CloudFront(set_mocked_aws_audit_info())
             assert cloudfront.client.__class__.__name__ == "CloudFront"
     
         # Test CloudFront Session
    -    @mock_cloudfront
    +    @mock_aws
         def test__get_session__(self):
    -        cloudfront = CloudFront(self.set_mocked_audit_info())
    +        cloudfront = CloudFront(set_mocked_aws_audit_info())
             assert cloudfront.session.__class__.__name__ == "Session"
     
         # Test CloudFront Service
    -    @mock_cloudfront
    +    @mock_aws
         def test__get_service__(self):
    -        cloudfront = CloudFront(self.set_mocked_audit_info())
    +        cloudfront = CloudFront(set_mocked_aws_audit_info())
             assert cloudfront.service == "cloudfront"
     
    -    @mock_cloudfront
    +    @mock_aws
         def test__list_distributions__zero(self):
    -        cloudfront = CloudFront(self.set_mocked_audit_info())
    +        cloudfront = CloudFront(set_mocked_aws_audit_info())
     
             assert len(cloudfront.distributions) == 0
     
    -    @mock_cloudfront
    +    @mock_aws
         def test__list_distributions__complete(self):
             cloudfront_client = client("cloudfront")
             config = example_distribution_config("ref")
             response = cloudfront_client.create_distribution(DistributionConfig=config)
             cloudfront_distribution_id = response["Distribution"]["Id"]
             cloudfront_distribution_arn = response["Distribution"]["ARN"]
    -        cloudfront = CloudFront(self.set_mocked_audit_info())
    +        cloudfront = CloudFront(set_mocked_aws_audit_info())
     
             assert len(cloudfront.distributions) == 1
             assert (
    @@ -231,7 +194,7 @@ def test__list_distributions__complete(self):
             )
             assert (
                 cloudfront.distributions[cloudfront_distribution_id].region
    -            == self.set_mocked_audit_info().audit_session.region_name
    +            == AWS_REGION_US_EAST_1
             )
             assert (
                 cloudfront.distributions[cloudfront_distribution_id].logging_enabled is True
    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 87410db0898..0be7e0988f9 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
    @@ -2,54 +2,27 @@
     from unittest.mock import patch
     
     import botocore
    -from boto3 import client, session
    -from moto import mock_cloudtrail, mock_iam, mock_s3
    +from boto3 import client
    +from moto import mock_aws
     
    -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"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_REGION_EU_WEST_1,
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     # Mocking Backup Calls
     make_api_call = botocore.client.BaseClient._make_api_call
     
     
     class Test_cloudtrail_bucket_requires_mfa_delete:
    -    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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=["us-east-1", "eu-west-1"],
    -            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
    -
    -    @mock_cloudtrail
    +    @mock_aws
         def test_no_trails(self):
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_US_EAST_1, AWS_REGION_EU_WEST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -67,13 +40,16 @@ def test_no_trails(self):
                 result = check.execute()
                 assert len(result) == 0
     
    -    @mock_cloudtrail
    -    @mock_s3
    +    @mock_aws
         def test_trails_with_no_mfa_bucket(self):
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_US_EAST_1, AWS_REGION_EU_WEST_1]
    +        )
     
    -        cloudtrail_client_us_east_1 = client("cloudtrail", region_name="us-east-1")
    -        s3_client_us_east_1 = client("s3", region_name="us-east-1")
    +        cloudtrail_client_us_east_1 = client(
    +            "cloudtrail", region_name=AWS_REGION_US_EAST_1
    +        )
    +        s3_client_us_east_1 = client("s3", region_name=AWS_REGION_US_EAST_1)
             trail_name_us = "trail_test_us_with_no_mfa_bucket"
             bucket_name_us = "bucket_test_us_with_no_mfa"
             s3_client_us_east_1.create_bucket(Bucket=bucket_name_us)
    @@ -107,7 +83,7 @@ def test_trails_with_no_mfa_bucket(self):
                     == f"Trail {trail_name_us} bucket ({bucket_name_us}) does not have MFA delete enabled."
                 )
                 assert result[0].resource_id == trail_name_us
    -            assert result[0].region == "us-east-1"
    +            assert result[0].region == AWS_REGION_US_EAST_1
                 assert result[0].resource_arn == trail_us["TrailARN"]
                 assert result[0].resource_tags == []
     
    @@ -122,19 +98,21 @@ def mock_make_api_call_getbucketversioning_mfadelete_enabled(
                 return {"MFADelete": "Enabled", "Status": "Enabled"}
             return make_api_call(self, operation_name, kwarg)
     
    -    @mock_cloudtrail
    -    @mock_s3
    -    @mock_iam
    +    @mock_aws
         # Patch with mock_make_api_call_getbucketversioning_mfadelete_enabled:
         @patch(
             "botocore.client.BaseClient._make_api_call",
             new=mock_make_api_call_getbucketversioning_mfadelete_enabled,
         )
         def test_trails_with_mfa_bucket(self):
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_US_EAST_1, AWS_REGION_EU_WEST_1]
    +        )
     
    -        cloudtrail_client_us_east_1 = client("cloudtrail", region_name="us-east-1")
    -        s3_client_us_east_1 = client("s3", region_name="us-east-1")
    +        cloudtrail_client_us_east_1 = client(
    +            "cloudtrail", region_name=AWS_REGION_US_EAST_1
    +        )
    +        s3_client_us_east_1 = client("s3", region_name=AWS_REGION_US_EAST_1)
             trail_name_us = "trail_test_us_with_mfa_bucket"
             bucket_name_us = "bucket_test_us_with_mfa"
             s3_client_us_east_1.create_bucket(Bucket=bucket_name_us)
    @@ -168,17 +146,20 @@ def test_trails_with_mfa_bucket(self):
                     == f"Trail {trail_name_us} bucket ({bucket_name_us}) has MFA delete enabled."
                 )
                 assert result[0].resource_id == trail_name_us
    -            assert result[0].region == "us-east-1"
    +            assert result[0].region == AWS_REGION_US_EAST_1
                 assert result[0].resource_arn == trail_us["TrailARN"]
                 assert result[0].resource_tags == []
     
    -    @mock_cloudtrail
    -    @mock_s3
    +    @mock_aws
         def test_trails_with_no_mfa_bucket_cross(self):
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_US_EAST_1, AWS_REGION_EU_WEST_1]
    +        )
     
    -        cloudtrail_client_us_east_1 = client("cloudtrail", region_name="us-east-1")
    -        s3_client_us_east_1 = client("s3", region_name="us-east-1")
    +        cloudtrail_client_us_east_1 = client(
    +            "cloudtrail", region_name=AWS_REGION_US_EAST_1
    +        )
    +        s3_client_us_east_1 = client("s3", region_name=AWS_REGION_US_EAST_1)
             trail_name_us = "trail_test_us_with_no_mfa_bucket"
             bucket_name_us = "bucket_test_us_with_no_mfa"
             s3_client_us_east_1.create_bucket(Bucket=bucket_name_us)
    @@ -215,23 +196,25 @@ def test_trails_with_no_mfa_bucket_cross(self):
                     == f"Trail {trail_name_us} bucket ({bucket_name_us}) is a cross-account bucket in another account out of Prowler's permissions scope, please check it manually."
                 )
                 assert result[0].resource_id == trail_name_us
    -            assert result[0].region == "us-east-1"
    +            assert result[0].region == AWS_REGION_US_EAST_1
                 assert result[0].resource_arn == trail_us["TrailARN"]
                 assert result[0].resource_tags == []
     
    -    @mock_cloudtrail
    -    @mock_s3
    -    @mock_iam
    +    @mock_aws
         # Patch with mock_make_api_call_getbucketversioning_mfadelete_enabled:
         @patch(
             "botocore.client.BaseClient._make_api_call",
             new=mock_make_api_call_getbucketversioning_mfadelete_enabled,
         )
         def test_trails_with_mfa_bucket_cross(self):
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_US_EAST_1, AWS_REGION_EU_WEST_1]
    +        )
     
    -        cloudtrail_client_us_east_1 = client("cloudtrail", region_name="us-east-1")
    -        s3_client_us_east_1 = client("s3", region_name="us-east-1")
    +        cloudtrail_client_us_east_1 = client(
    +            "cloudtrail", region_name=AWS_REGION_US_EAST_1
    +        )
    +        s3_client_us_east_1 = client("s3", region_name=AWS_REGION_US_EAST_1)
             trail_name_us = "trail_test_us_with_mfa_bucket"
             bucket_name_us = "bucket_test_us_with_mfa"
             s3_client_us_east_1.create_bucket(Bucket=bucket_name_us)
    @@ -268,6 +251,6 @@ def test_trails_with_mfa_bucket_cross(self):
                     == f"Trail {trail_name_us} bucket ({bucket_name_us}) is a cross-account bucket in another account out of Prowler's permissions scope, please check it manually."
                 )
                 assert result[0].resource_id == trail_name_us
    -            assert result[0].region == "us-east-1"
    +            assert result[0].region == AWS_REGION_US_EAST_1
                 assert result[0].resource_arn == trail_us["TrailARN"]
                 assert result[0].resource_tags == []
    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 80eddc6ac27..b79997dd9f4 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
    @@ -2,50 +2,22 @@
     from re import search
     from unittest import mock
     
    -from boto3 import client, session
    -from moto import mock_cloudtrail, mock_s3
    +from boto3 import client
    +from moto import mock_aws
     
    -from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info
    -from prowler.providers.common.models import Audit_Metadata
    -
    -AWS_ACCOUNT_NUMBER = "123456789012"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_REGION_EU_WEST_1,
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     
     class Test_cloudtrail_cloudwatch_logging_enabled:
    -    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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=["us-east-1", "eu-west-1"],
    -            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
    -
    -    @mock_cloudtrail
    -    @mock_s3
    +    @mock_aws
         def test_no_trails(self):
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_US_EAST_1, AWS_REGION_EU_WEST_1]
    +        )
     
             from prowler.providers.aws.services.cloudtrail.cloudtrail_service import (
                 Cloudtrail,
    @@ -68,13 +40,16 @@ def test_no_trails(self):
                     result = check.execute()
                     assert len(result) == 0
     
    -    @mock_cloudtrail
    -    @mock_s3
    +    @mock_aws
         def test_trails_sending_logs_during_and_not_last_day(self):
    -        cloudtrail_client_us_east_1 = client("cloudtrail", region_name="us-east-1")
    -        s3_client_us_east_1 = client("s3", region_name="us-east-1")
    -        cloudtrail_client_eu_west_1 = client("cloudtrail", region_name="eu-west-1")
    -        s3_client_eu_west_1 = client("s3", region_name="eu-west-1")
    +        cloudtrail_client_us_east_1 = client(
    +            "cloudtrail", region_name=AWS_REGION_US_EAST_1
    +        )
    +        s3_client_us_east_1 = client("s3", region_name=AWS_REGION_US_EAST_1)
    +        cloudtrail_client_eu_west_1 = client(
    +            "cloudtrail", region_name=AWS_REGION_EU_WEST_1
    +        )
    +        s3_client_eu_west_1 = client("s3", region_name=AWS_REGION_EU_WEST_1)
             trail_name_us = "trail_test_us"
             bucket_name_us = "bucket_test_us"
             trail_name_eu = "trail_test_eu"
    @@ -82,7 +57,7 @@ def test_trails_sending_logs_during_and_not_last_day(self):
             s3_client_us_east_1.create_bucket(Bucket=bucket_name_us)
             s3_client_eu_west_1.create_bucket(
                 Bucket=bucket_name_eu,
    -            CreateBucketConfiguration={"LocationConstraint": "eu-west-1"},
    +            CreateBucketConfiguration={"LocationConstraint": AWS_REGION_EU_WEST_1},
             )
             trail_us = cloudtrail_client_us_east_1.create_trail(
                 Name=trail_name_us, S3BucketName=bucket_name_us, IsMultiRegionTrail=False
    @@ -97,11 +72,15 @@ def test_trails_sending_logs_during_and_not_last_day(self):
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    -            new=self.set_mocked_audit_info(),
    +            new=set_mocked_aws_audit_info([AWS_REGION_US_EAST_1, AWS_REGION_EU_WEST_1]),
             ):
                 with mock.patch(
                     "prowler.providers.aws.services.cloudtrail.cloudtrail_cloudwatch_logging_enabled.cloudtrail_cloudwatch_logging_enabled.cloudtrail_client",
    -                new=Cloudtrail(self.set_mocked_audit_info()),
    +                new=Cloudtrail(
    +                    set_mocked_aws_audit_info(
    +                        [AWS_REGION_US_EAST_1, AWS_REGION_EU_WEST_1]
    +                    )
    +                ),
                 ) as service_client:
                     # Test Check
                     from prowler.providers.aws.services.cloudtrail.cloudtrail_cloudwatch_logging_enabled.cloudtrail_cloudwatch_logging_enabled import (
    @@ -136,7 +115,7 @@ def test_trails_sending_logs_during_and_not_last_day(self):
                                 f"Single region trail {trail_name_us} has been logging the last 24h.",
                             )
                             assert report.resource_tags == []
    -                        assert report.region == "us-east-1"
    +                        assert report.region == AWS_REGION_US_EAST_1
                         if report.resource_id == trail_name_eu:
                             assert report.resource_id == trail_name_eu
                             assert report.resource_arn == trail_eu["TrailARN"]
    @@ -146,15 +125,18 @@ def test_trails_sending_logs_during_and_not_last_day(self):
                                 f"Single region trail {trail_name_eu} is not logging in the last 24h.",
                             )
                             assert report.resource_tags == []
    -                        assert report.region == "eu-west-1"
    +                        assert report.region == AWS_REGION_EU_WEST_1
     
    -    @mock_cloudtrail
    -    @mock_s3
    +    @mock_aws
         def test_multi_region_and_single_region_logging_and_not(self):
    -        cloudtrail_client_us_east_1 = client("cloudtrail", region_name="us-east-1")
    -        s3_client_us_east_1 = client("s3", region_name="us-east-1")
    -        cloudtrail_client_eu_west_1 = client("cloudtrail", region_name="eu-west-1")
    -        s3_client_eu_west_1 = client("s3", region_name="eu-west-1")
    +        cloudtrail_client_us_east_1 = client(
    +            "cloudtrail", region_name=AWS_REGION_US_EAST_1
    +        )
    +        s3_client_us_east_1 = client("s3", region_name=AWS_REGION_US_EAST_1)
    +        cloudtrail_client_eu_west_1 = client(
    +            "cloudtrail", region_name=AWS_REGION_EU_WEST_1
    +        )
    +        s3_client_eu_west_1 = client("s3", region_name=AWS_REGION_EU_WEST_1)
             trail_name_us = "trail_test_us"
             bucket_name_us = "bucket_test_us"
             trail_name_eu = "trail_test_eu"
    @@ -162,7 +144,7 @@ def test_multi_region_and_single_region_logging_and_not(self):
             s3_client_us_east_1.create_bucket(Bucket=bucket_name_us)
             s3_client_eu_west_1.create_bucket(
                 Bucket=bucket_name_eu,
    -            CreateBucketConfiguration={"LocationConstraint": "eu-west-1"},
    +            CreateBucketConfiguration={"LocationConstraint": AWS_REGION_EU_WEST_1},
             )
             trail_us = cloudtrail_client_us_east_1.create_trail(
                 Name=trail_name_us, S3BucketName=bucket_name_us, IsMultiRegionTrail=True
    @@ -177,11 +159,15 @@ def test_multi_region_and_single_region_logging_and_not(self):
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    -            new=self.set_mocked_audit_info(),
    +            new=set_mocked_aws_audit_info([AWS_REGION_US_EAST_1, AWS_REGION_EU_WEST_1]),
             ):
                 with mock.patch(
                     "prowler.providers.aws.services.cloudtrail.cloudtrail_cloudwatch_logging_enabled.cloudtrail_cloudwatch_logging_enabled.cloudtrail_client",
    -                new=Cloudtrail(self.set_mocked_audit_info()),
    +                new=Cloudtrail(
    +                    set_mocked_aws_audit_info(
    +                        [AWS_REGION_US_EAST_1, AWS_REGION_EU_WEST_1]
    +                    )
    +                ),
                 ) as service_client:
                     # Test Check
                     from prowler.providers.aws.services.cloudtrail.cloudtrail_cloudwatch_logging_enabled.cloudtrail_cloudwatch_logging_enabled import (
    @@ -218,7 +204,7 @@ def test_multi_region_and_single_region_logging_and_not(self):
                             assert report.resource_tags == []
                         if (
                             report.resource_id == trail_name_eu
    -                        and report.region == "eu-west-1"
    +                        and report.region == AWS_REGION_EU_WEST_1
                         ):
                             assert report.resource_id == trail_name_eu
                             assert report.resource_arn == trail_eu["TrailARN"]
    @@ -229,13 +215,16 @@ def test_multi_region_and_single_region_logging_and_not(self):
                             )
                             assert report.resource_tags == []
     
    -    @mock_cloudtrail
    -    @mock_s3
    +    @mock_aws
         def test_trails_sending_and_not_sending_logs(self):
    -        cloudtrail_client_us_east_1 = client("cloudtrail", region_name="us-east-1")
    -        s3_client_us_east_1 = client("s3", region_name="us-east-1")
    -        cloudtrail_client_eu_west_1 = client("cloudtrail", region_name="eu-west-1")
    -        s3_client_eu_west_1 = client("s3", region_name="eu-west-1")
    +        cloudtrail_client_us_east_1 = client(
    +            "cloudtrail", region_name=AWS_REGION_US_EAST_1
    +        )
    +        s3_client_us_east_1 = client("s3", region_name=AWS_REGION_US_EAST_1)
    +        cloudtrail_client_eu_west_1 = client(
    +            "cloudtrail", region_name=AWS_REGION_EU_WEST_1
    +        )
    +        s3_client_eu_west_1 = client("s3", region_name=AWS_REGION_EU_WEST_1)
             trail_name_us = "trail_test_us"
             bucket_name_us = "bucket_test_us"
             trail_name_eu = "trail_test_eu"
    @@ -243,7 +232,7 @@ def test_trails_sending_and_not_sending_logs(self):
             s3_client_us_east_1.create_bucket(Bucket=bucket_name_us)
             s3_client_eu_west_1.create_bucket(
                 Bucket=bucket_name_eu,
    -            CreateBucketConfiguration={"LocationConstraint": "eu-west-1"},
    +            CreateBucketConfiguration={"LocationConstraint": AWS_REGION_EU_WEST_1},
             )
             trail_us = cloudtrail_client_us_east_1.create_trail(
                 Name=trail_name_us, S3BucketName=bucket_name_us, IsMultiRegionTrail=False
    @@ -258,11 +247,15 @@ def test_trails_sending_and_not_sending_logs(self):
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    -            new=self.set_mocked_audit_info(),
    +            new=set_mocked_aws_audit_info([AWS_REGION_US_EAST_1, AWS_REGION_EU_WEST_1]),
             ):
                 with mock.patch(
                     "prowler.providers.aws.services.cloudtrail.cloudtrail_cloudwatch_logging_enabled.cloudtrail_cloudwatch_logging_enabled.cloudtrail_client",
    -                new=Cloudtrail(self.set_mocked_audit_info()),
    +                new=Cloudtrail(
    +                    set_mocked_aws_audit_info(
    +                        [AWS_REGION_US_EAST_1, AWS_REGION_EU_WEST_1]
    +                    )
    +                ),
                 ) as service_client:
                     # Test Check
                     from prowler.providers.aws.services.cloudtrail.cloudtrail_cloudwatch_logging_enabled.cloudtrail_cloudwatch_logging_enabled import (
    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 e40274dc4fd..828bd6ed8a8 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
    @@ -1,49 +1,22 @@
     from unittest import mock
     
    -from boto3 import client, session
    -from moto import mock_cloudtrail, mock_s3
    +from boto3 import client
    +from moto import mock_aws
     
    -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"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_REGION_EU_WEST_1,
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     
     class Test_cloudtrail_insights_exist:
    -    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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=["us-east-1", "eu-west-1"],
    -            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
    -
    -    @mock_cloudtrail
    +    @mock_aws
         def test_no_trails(self):
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_US_EAST_1, AWS_REGION_EU_WEST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -62,13 +35,16 @@ def test_no_trails(self):
                     result = check.execute()
                     assert len(result) == 0
     
    -    @mock_cloudtrail
    -    @mock_s3
    +    @mock_aws
         def test_trails_with_no_insight_selector(self):
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_US_EAST_1, AWS_REGION_EU_WEST_1]
    +        )
     
    -        cloudtrail_client_us_east_1 = client("cloudtrail", region_name="us-east-1")
    -        s3_client_us_east_1 = client("s3", region_name="us-east-1")
    +        cloudtrail_client_us_east_1 = client(
    +            "cloudtrail", region_name=AWS_REGION_US_EAST_1
    +        )
    +        s3_client_us_east_1 = client("s3", region_name=AWS_REGION_US_EAST_1)
             trail_name_us = "trail_test_us_with_no_insight_selector"
             bucket_name_us = "bucket_test_us"
             s3_client_us_east_1.create_bucket(Bucket=bucket_name_us)
    @@ -100,17 +76,20 @@ def test_trails_with_no_insight_selector(self):
                         == f"Trail {trail_name_us} does not have insight selectors and it is logging."
                     )
                     assert result[0].resource_id == trail_name_us
    -                assert result[0].region == "us-east-1"
    +                assert result[0].region == AWS_REGION_US_EAST_1
                     assert result[0].resource_arn == trail_us["TrailARN"]
                     assert result[0].resource_tags == []
     
    -    @mock_cloudtrail
    -    @mock_s3
    +    @mock_aws
         def test_trails_with_insight_selector(self):
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_US_EAST_1, AWS_REGION_EU_WEST_1]
    +        )
     
    -        cloudtrail_client_us_east_1 = client("cloudtrail", region_name="us-east-1")
    -        s3_client_us_east_1 = client("s3", region_name="us-east-1")
    +        cloudtrail_client_us_east_1 = client(
    +            "cloudtrail", region_name=AWS_REGION_US_EAST_1
    +        )
    +        s3_client_us_east_1 = client("s3", region_name=AWS_REGION_US_EAST_1)
             trail_name_us = "trail_test_us_with_insight_selector"
             bucket_name_us = "bucket_test_us"
             s3_client_us_east_1.create_bucket(Bucket=bucket_name_us)
    @@ -146,6 +125,6 @@ def test_trails_with_insight_selector(self):
                         == f"Trail {trail_name_us} has insight selectors and it is logging."
                     )
                     assert result[0].resource_id == trail_name_us
    -                assert result[0].region == "us-east-1"
    +                assert result[0].region == AWS_REGION_US_EAST_1
                     assert result[0].resource_arn == trail_us["TrailARN"]
                     assert result[0].resource_tags == []
    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 4328f3ff600..d8e971e8798 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
    @@ -1,48 +1,18 @@
     from re import search
     from unittest import mock
     
    -from boto3 import client, session
    -from moto import mock_cloudtrail, mock_kms, mock_s3
    +from boto3 import client
    +from moto import mock_aws
     
    -from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info
    -from prowler.providers.common.models import Audit_Metadata
    -
    -AWS_ACCOUNT_NUMBER = "123456789012"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_REGION_EU_WEST_1,
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     
     class Test_cloudtrail_kms_encryption_enabled:
    -    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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=["us-east-1", "eu-west-1"],
    -            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
    -
    -    @mock_cloudtrail
    -    @mock_s3
    +    @mock_aws
         def test_no_trails(self):
             from prowler.providers.aws.services.cloudtrail.cloudtrail_service import (
                 Cloudtrail,
    @@ -50,10 +20,12 @@ def test_no_trails(self):
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    -            new=self.set_mocked_audit_info(),
    +            new=set_mocked_aws_audit_info([AWS_REGION_US_EAST_1, AWS_REGION_EU_WEST_1]),
             ), mock.patch(
                 "prowler.providers.aws.services.cloudtrail.cloudtrail_kms_encryption_enabled.cloudtrail_kms_encryption_enabled.cloudtrail_client",
    -            new=Cloudtrail(self.set_mocked_audit_info()),
    +            new=Cloudtrail(
    +                set_mocked_aws_audit_info([AWS_REGION_US_EAST_1, AWS_REGION_EU_WEST_1])
    +            ),
             ):
                 # Test Check
                 from prowler.providers.aws.services.cloudtrail.cloudtrail_kms_encryption_enabled.cloudtrail_kms_encryption_enabled import (
    @@ -65,11 +37,12 @@ def test_no_trails(self):
     
                 assert len(result) == 0
     
    -    @mock_cloudtrail
    -    @mock_s3
    +    @mock_aws
         def test_trail_no_kms(self):
    -        cloudtrail_client_us_east_1 = client("cloudtrail", region_name="us-east-1")
    -        s3_client_us_east_1 = client("s3", region_name="us-east-1")
    +        cloudtrail_client_us_east_1 = client(
    +            "cloudtrail", region_name=AWS_REGION_US_EAST_1
    +        )
    +        s3_client_us_east_1 = client("s3", region_name=AWS_REGION_US_EAST_1)
             trail_name_us = "trail_test_us"
             bucket_name_us = "bucket_test_us"
             s3_client_us_east_1.create_bucket(Bucket=bucket_name_us)
    @@ -83,10 +56,12 @@ def test_trail_no_kms(self):
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    -            new=self.set_mocked_audit_info(),
    +            new=set_mocked_aws_audit_info([AWS_REGION_US_EAST_1, AWS_REGION_EU_WEST_1]),
             ), mock.patch(
                 "prowler.providers.aws.services.cloudtrail.cloudtrail_kms_encryption_enabled.cloudtrail_kms_encryption_enabled.cloudtrail_client",
    -            new=Cloudtrail(self.set_mocked_audit_info()),
    +            new=Cloudtrail(
    +                set_mocked_aws_audit_info([AWS_REGION_US_EAST_1, AWS_REGION_EU_WEST_1])
    +            ),
             ):
                 # Test Check
                 from prowler.providers.aws.services.cloudtrail.cloudtrail_kms_encryption_enabled.cloudtrail_kms_encryption_enabled import (
    @@ -105,15 +80,15 @@ def test_trail_no_kms(self):
                 assert result[0].resource_id == trail_name_us
                 assert result[0].resource_arn == trail_us["TrailARN"]
                 assert result[0].resource_tags == []
    -            assert result[0].region == "us-east-1"
    +            assert result[0].region == AWS_REGION_US_EAST_1
     
    -    @mock_cloudtrail
    -    @mock_s3
    -    @mock_kms
    +    @mock_aws
         def test_trail_kms(self):
    -        cloudtrail_client_us_east_1 = client("cloudtrail", region_name="us-east-1")
    -        s3_client_us_east_1 = client("s3", region_name="us-east-1")
    -        kms_client = client("kms", region_name="us-east-1")
    +        cloudtrail_client_us_east_1 = client(
    +            "cloudtrail", region_name=AWS_REGION_US_EAST_1
    +        )
    +        s3_client_us_east_1 = client("s3", region_name=AWS_REGION_US_EAST_1)
    +        kms_client = client("kms", region_name=AWS_REGION_US_EAST_1)
             trail_name_us = "trail_test_us"
             bucket_name_us = "bucket_test_us"
             s3_client_us_east_1.create_bucket(Bucket=bucket_name_us)
    @@ -131,10 +106,12 @@ def test_trail_kms(self):
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    -            new=self.set_mocked_audit_info(),
    +            new=set_mocked_aws_audit_info([AWS_REGION_US_EAST_1, AWS_REGION_EU_WEST_1]),
             ), mock.patch(
                 "prowler.providers.aws.services.cloudtrail.cloudtrail_kms_encryption_enabled.cloudtrail_kms_encryption_enabled.cloudtrail_client",
    -            new=Cloudtrail(self.set_mocked_audit_info()),
    +            new=Cloudtrail(
    +                set_mocked_aws_audit_info([AWS_REGION_US_EAST_1, AWS_REGION_EU_WEST_1])
    +            ),
             ):
                 # Test Check
                 from prowler.providers.aws.services.cloudtrail.cloudtrail_kms_encryption_enabled.cloudtrail_kms_encryption_enabled import (
    @@ -153,4 +130,4 @@ def test_trail_kms(self):
                 assert result[0].resource_id == trail_name_us
                 assert result[0].resource_arn == trail_us["TrailARN"]
                 assert result[0].resource_tags == []
    -            assert result[0].region == "us-east-1"
    +            assert result[0].region == AWS_REGION_US_EAST_1
    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 2e1042b2ae9..360009793be 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
    @@ -1,48 +1,18 @@
     from re import search
     from unittest import mock
     
    -from boto3 import client, session
    -from moto import mock_cloudtrail, mock_s3
    +from boto3 import client
    +from moto import mock_aws
     
    -from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info
    -from prowler.providers.common.models import Audit_Metadata
    -
    -AWS_ACCOUNT_NUMBER = "123456789012"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_REGION_EU_WEST_1,
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     
     class Test_cloudtrail_log_file_validation_enabled:
    -    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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=["us-east-1", "eu-west-1"],
    -            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
    -
    -    @mock_cloudtrail
    -    @mock_s3
    +    @mock_aws
         def test_no_trails(self):
             from prowler.providers.aws.services.cloudtrail.cloudtrail_service import (
                 Cloudtrail,
    @@ -50,10 +20,12 @@ def test_no_trails(self):
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    -            new=self.set_mocked_audit_info(),
    +            new=set_mocked_aws_audit_info([AWS_REGION_US_EAST_1, AWS_REGION_EU_WEST_1]),
             ), mock.patch(
                 "prowler.providers.aws.services.cloudtrail.cloudtrail_log_file_validation_enabled.cloudtrail_log_file_validation_enabled.cloudtrail_client",
    -            new=Cloudtrail(self.set_mocked_audit_info()),
    +            new=Cloudtrail(
    +                set_mocked_aws_audit_info([AWS_REGION_US_EAST_1, AWS_REGION_EU_WEST_1])
    +            ),
             ):
                 # Test Check
                 from prowler.providers.aws.services.cloudtrail.cloudtrail_log_file_validation_enabled.cloudtrail_log_file_validation_enabled import (
    @@ -65,11 +37,12 @@ def test_no_trails(self):
     
                 assert len(result) == 0
     
    -    @mock_cloudtrail
    -    @mock_s3
    +    @mock_aws
         def test_no_logging_validation(self):
    -        cloudtrail_client_us_east_1 = client("cloudtrail", region_name="us-east-1")
    -        s3_client_us_east_1 = client("s3", region_name="us-east-1")
    +        cloudtrail_client_us_east_1 = client(
    +            "cloudtrail", region_name=AWS_REGION_US_EAST_1
    +        )
    +        s3_client_us_east_1 = client("s3", region_name=AWS_REGION_US_EAST_1)
             trail_name_us = "trail_test_us"
             bucket_name_us = "bucket_test_us"
             s3_client_us_east_1.create_bucket(Bucket=bucket_name_us)
    @@ -82,10 +55,12 @@ def test_no_logging_validation(self):
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    -            new=self.set_mocked_audit_info(),
    +            new=set_mocked_aws_audit_info([AWS_REGION_US_EAST_1, AWS_REGION_EU_WEST_1]),
             ), mock.patch(
                 "prowler.providers.aws.services.cloudtrail.cloudtrail_log_file_validation_enabled.cloudtrail_log_file_validation_enabled.cloudtrail_client",
    -            new=Cloudtrail(self.set_mocked_audit_info()),
    +            new=Cloudtrail(
    +                set_mocked_aws_audit_info([AWS_REGION_US_EAST_1, AWS_REGION_EU_WEST_1])
    +            ),
             ):
                 # Test Check
                 from prowler.providers.aws.services.cloudtrail.cloudtrail_log_file_validation_enabled.cloudtrail_log_file_validation_enabled import (
    @@ -101,15 +76,18 @@ def test_no_logging_validation(self):
                 assert result[0].resource_id == trail_name_us
                 assert result[0].resource_arn == trail_us["TrailARN"]
                 assert result[0].resource_tags == []
    -            assert result[0].region == "us-east-1"
    +            assert result[0].region == AWS_REGION_US_EAST_1
     
    -    @mock_cloudtrail
    -    @mock_s3
    +    @mock_aws
         def test_various_trails_with_and_without_logging_validation(self):
    -        cloudtrail_client_us_east_1 = client("cloudtrail", region_name="us-east-1")
    -        s3_client_us_east_1 = client("s3", region_name="us-east-1")
    -        cloudtrail_client_eu_west_1 = client("cloudtrail", region_name="eu-west-1")
    -        s3_client_eu_west_1 = client("s3", region_name="eu-west-1")
    +        cloudtrail_client_us_east_1 = client(
    +            "cloudtrail", region_name=AWS_REGION_US_EAST_1
    +        )
    +        s3_client_us_east_1 = client("s3", region_name=AWS_REGION_US_EAST_1)
    +        cloudtrail_client_eu_west_1 = client(
    +            "cloudtrail", region_name=AWS_REGION_EU_WEST_1
    +        )
    +        s3_client_eu_west_1 = client("s3", region_name=AWS_REGION_EU_WEST_1)
             trail_name_us = "trail_test_us"
             bucket_name_us = "bucket_test_us"
             trail_name_eu = "trail_test_eu"
    @@ -117,7 +95,7 @@ def test_various_trails_with_and_without_logging_validation(self):
             s3_client_us_east_1.create_bucket(Bucket=bucket_name_us)
             s3_client_eu_west_1.create_bucket(
                 Bucket=bucket_name_eu,
    -            CreateBucketConfiguration={"LocationConstraint": "eu-west-1"},
    +            CreateBucketConfiguration={"LocationConstraint": AWS_REGION_EU_WEST_1},
             )
             trail_us = cloudtrail_client_us_east_1.create_trail(
                 Name=trail_name_us,
    @@ -135,10 +113,12 @@ def test_various_trails_with_and_without_logging_validation(self):
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    -            new=self.set_mocked_audit_info(),
    +            new=set_mocked_aws_audit_info([AWS_REGION_US_EAST_1, AWS_REGION_EU_WEST_1]),
             ), mock.patch(
                 "prowler.providers.aws.services.cloudtrail.cloudtrail_log_file_validation_enabled.cloudtrail_log_file_validation_enabled.cloudtrail_client",
    -            new=Cloudtrail(self.set_mocked_audit_info()),
    +            new=Cloudtrail(
    +                set_mocked_aws_audit_info([AWS_REGION_US_EAST_1, AWS_REGION_EU_WEST_1])
    +            ),
             ) as service_client:
                 # Test Check
                 from prowler.providers.aws.services.cloudtrail.cloudtrail_log_file_validation_enabled.cloudtrail_log_file_validation_enabled import (
    @@ -159,7 +139,7 @@ def test_various_trails_with_and_without_logging_validation(self):
                         assert report.resource_id == trail_name_us
                         assert report.resource_arn == trail_us["TrailARN"]
                         assert report.resource_tags == []
    -                    assert report.region == "us-east-1"
    +                    assert report.region == AWS_REGION_US_EAST_1
                     elif report.resource_id == trail_name_eu:
                         assert report.status == "FAIL"
                         assert search(
    @@ -168,4 +148,4 @@ def test_various_trails_with_and_without_logging_validation(self):
                         assert report.resource_id == trail_name_eu
                         assert report.resource_arn == trail_eu["TrailARN"]
                         assert report.resource_tags == []
    -                    assert report.region == "eu-west-1"
    +                    assert report.region == AWS_REGION_EU_WEST_1
    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 bbbe4b4c72a..bf6b149dbac 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
    @@ -1,48 +1,18 @@
     from re import search
     from unittest import mock
     
    -from boto3 import client, session
    -from moto import mock_cloudtrail, mock_s3
    +from boto3 import client
    +from moto import mock_aws
     
    -from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info
    -from prowler.providers.common.models import Audit_Metadata
    -
    -AWS_ACCOUNT_NUMBER = "123456789012"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_REGION_EU_WEST_1,
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     
     class Test_cloudtrail_logs_s3_bucket_access_logging_enabled:
    -    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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=["us-east-1", "eu-west-1"],
    -            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
    -
    -    @mock_cloudtrail
    -    @mock_s3
    +    @mock_aws
         def test_no_trails(self):
             from prowler.providers.aws.services.cloudtrail.cloudtrail_service import (
                 Cloudtrail,
    @@ -51,13 +21,17 @@ def test_no_trails(self):
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    -            new=self.set_mocked_audit_info(),
    +            new=set_mocked_aws_audit_info([AWS_REGION_US_EAST_1, AWS_REGION_EU_WEST_1]),
             ), mock.patch(
                 "prowler.providers.aws.services.cloudtrail.cloudtrail_logs_s3_bucket_access_logging_enabled.cloudtrail_logs_s3_bucket_access_logging_enabled.cloudtrail_client",
    -            new=Cloudtrail(self.set_mocked_audit_info()),
    +            new=Cloudtrail(
    +                set_mocked_aws_audit_info([AWS_REGION_US_EAST_1, AWS_REGION_EU_WEST_1])
    +            ),
             ), mock.patch(
                 "prowler.providers.aws.services.cloudtrail.cloudtrail_logs_s3_bucket_access_logging_enabled.cloudtrail_logs_s3_bucket_access_logging_enabled.s3_client",
    -            new=S3(self.set_mocked_audit_info()),
    +            new=S3(
    +                set_mocked_aws_audit_info([AWS_REGION_US_EAST_1, AWS_REGION_EU_WEST_1])
    +            ),
             ):
                 # Test Check
                 from prowler.providers.aws.services.cloudtrail.cloudtrail_logs_s3_bucket_access_logging_enabled.cloudtrail_logs_s3_bucket_access_logging_enabled import (
    @@ -69,11 +43,12 @@ def test_no_trails(self):
     
                 assert len(result) == 0
     
    -    @mock_cloudtrail
    -    @mock_s3
    +    @mock_aws
         def test_bucket_not_logging(self):
    -        cloudtrail_client_us_east_1 = client("cloudtrail", region_name="us-east-1")
    -        s3_client_us_east_1 = client("s3", region_name="us-east-1")
    +        cloudtrail_client_us_east_1 = client(
    +            "cloudtrail", region_name=AWS_REGION_US_EAST_1
    +        )
    +        s3_client_us_east_1 = client("s3", region_name=AWS_REGION_US_EAST_1)
             trail_name_us = "trail_test_us"
             bucket_name_us = "bucket_test_us"
             s3_client_us_east_1.create_bucket(Bucket=bucket_name_us)
    @@ -88,13 +63,17 @@ def test_bucket_not_logging(self):
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    -            new=self.set_mocked_audit_info(),
    +            new=set_mocked_aws_audit_info([AWS_REGION_US_EAST_1, AWS_REGION_EU_WEST_1]),
             ), mock.patch(
                 "prowler.providers.aws.services.cloudtrail.cloudtrail_logs_s3_bucket_access_logging_enabled.cloudtrail_logs_s3_bucket_access_logging_enabled.cloudtrail_client",
    -            new=Cloudtrail(self.set_mocked_audit_info()),
    +            new=Cloudtrail(
    +                set_mocked_aws_audit_info([AWS_REGION_US_EAST_1, AWS_REGION_EU_WEST_1])
    +            ),
             ), mock.patch(
                 "prowler.providers.aws.services.cloudtrail.cloudtrail_logs_s3_bucket_access_logging_enabled.cloudtrail_logs_s3_bucket_access_logging_enabled.s3_client",
    -            new=S3(self.set_mocked_audit_info()),
    +            new=S3(
    +                set_mocked_aws_audit_info([AWS_REGION_US_EAST_1, AWS_REGION_EU_WEST_1])
    +            ),
             ):
                 # Test Check
                 from prowler.providers.aws.services.cloudtrail.cloudtrail_logs_s3_bucket_access_logging_enabled.cloudtrail_logs_s3_bucket_access_logging_enabled import (
    @@ -113,13 +92,14 @@ def test_bucket_not_logging(self):
                 assert result[0].resource_id == trail_name_us
                 assert result[0].resource_arn == trail_us["TrailARN"]
                 assert result[0].resource_tags == []
    -            assert result[0].region == "us-east-1"
    +            assert result[0].region == AWS_REGION_US_EAST_1
     
    -    @mock_cloudtrail
    -    @mock_s3
    +    @mock_aws
         def test_bucket_logging(self):
    -        cloudtrail_client_us_east_1 = client("cloudtrail", region_name="us-east-1")
    -        s3_client_us_east_1 = client("s3", region_name="us-east-1")
    +        cloudtrail_client_us_east_1 = client(
    +            "cloudtrail", region_name=AWS_REGION_US_EAST_1
    +        )
    +        s3_client_us_east_1 = client("s3", region_name=AWS_REGION_US_EAST_1)
             trail_name_us = "trail_test_us"
             bucket_name_us = "bucket_test_us"
             logging_bucket = "logging"
    @@ -154,13 +134,17 @@ def test_bucket_logging(self):
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    -            new=self.set_mocked_audit_info(),
    +            new=set_mocked_aws_audit_info([AWS_REGION_US_EAST_1, AWS_REGION_EU_WEST_1]),
             ), mock.patch(
                 "prowler.providers.aws.services.cloudtrail.cloudtrail_logs_s3_bucket_access_logging_enabled.cloudtrail_logs_s3_bucket_access_logging_enabled.cloudtrail_client",
    -            new=Cloudtrail(self.set_mocked_audit_info()),
    +            new=Cloudtrail(
    +                set_mocked_aws_audit_info([AWS_REGION_US_EAST_1, AWS_REGION_EU_WEST_1])
    +            ),
             ), mock.patch(
                 "prowler.providers.aws.services.cloudtrail.cloudtrail_logs_s3_bucket_access_logging_enabled.cloudtrail_logs_s3_bucket_access_logging_enabled.s3_client",
    -            new=S3(self.set_mocked_audit_info()),
    +            new=S3(
    +                set_mocked_aws_audit_info([AWS_REGION_US_EAST_1, AWS_REGION_EU_WEST_1])
    +            ),
             ):
                 # Test Check
                 from prowler.providers.aws.services.cloudtrail.cloudtrail_logs_s3_bucket_access_logging_enabled.cloudtrail_logs_s3_bucket_access_logging_enabled import (
    @@ -179,13 +163,14 @@ def test_bucket_logging(self):
                 assert result[0].resource_id == trail_name_us
                 assert result[0].resource_arn == trail_us["TrailARN"]
                 assert result[0].resource_tags == []
    -            assert result[0].region == "us-east-1"
    +            assert result[0].region == AWS_REGION_US_EAST_1
     
    -    @mock_cloudtrail
    -    @mock_s3
    +    @mock_aws
         def test_bucket_cross_account(self):
    -        cloudtrail_client_us_east_1 = client("cloudtrail", region_name="us-east-1")
    -        s3_client_us_east_1 = client("s3", region_name="us-east-1")
    +        cloudtrail_client_us_east_1 = client(
    +            "cloudtrail", region_name=AWS_REGION_US_EAST_1
    +        )
    +        s3_client_us_east_1 = client("s3", region_name=AWS_REGION_US_EAST_1)
             trail_name_us = "trail_test_us"
             bucket_name_us = "bucket_test_us"
             s3_client_us_east_1.create_bucket(Bucket=bucket_name_us)
    @@ -200,13 +185,17 @@ def test_bucket_cross_account(self):
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    -            new=self.set_mocked_audit_info(),
    +            new=set_mocked_aws_audit_info([AWS_REGION_US_EAST_1, AWS_REGION_EU_WEST_1]),
             ), mock.patch(
                 "prowler.providers.aws.services.cloudtrail.cloudtrail_logs_s3_bucket_access_logging_enabled.cloudtrail_logs_s3_bucket_access_logging_enabled.cloudtrail_client",
    -            new=Cloudtrail(self.set_mocked_audit_info()),
    +            new=Cloudtrail(
    +                set_mocked_aws_audit_info([AWS_REGION_US_EAST_1, AWS_REGION_EU_WEST_1])
    +            ),
             ), mock.patch(
                 "prowler.providers.aws.services.cloudtrail.cloudtrail_logs_s3_bucket_access_logging_enabled.cloudtrail_logs_s3_bucket_access_logging_enabled.s3_client",
    -            new=S3(self.set_mocked_audit_info()),
    +            new=S3(
    +                set_mocked_aws_audit_info([AWS_REGION_US_EAST_1, AWS_REGION_EU_WEST_1])
    +            ),
             ) as s3_client:
                 # Test Check
                 from prowler.providers.aws.services.cloudtrail.cloudtrail_logs_s3_bucket_access_logging_enabled.cloudtrail_logs_s3_bucket_access_logging_enabled import (
    @@ -228,4 +217,4 @@ def test_bucket_cross_account(self):
                 assert result[0].resource_id == trail_name_us
                 assert result[0].resource_arn == trail_us["TrailARN"]
                 assert result[0].resource_tags == []
    -            assert result[0].region == "us-east-1"
    +            assert result[0].region == AWS_REGION_US_EAST_1
    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 e1a682fd80d..19655f959e7 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
    @@ -1,48 +1,18 @@
     from re import search
     from unittest import mock
     
    -from boto3 import client, session
    -from moto import mock_cloudtrail, mock_s3
    +from boto3 import client
    +from moto import mock_aws
     
    -from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info
    -from prowler.providers.common.models import Audit_Metadata
    -
    -AWS_ACCOUNT_NUMBER = "123456789012"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_REGION_EU_WEST_1,
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     
     class Test_cloudtrail_logs_s3_bucket_is_not_publicly_accessible:
    -    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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=["us-east-1", "eu-west-1"],
    -            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
    -
    -    @mock_cloudtrail
    -    @mock_s3
    +    @mock_aws
         def test_not_trails(self):
             from prowler.providers.aws.services.cloudtrail.cloudtrail_service import (
                 Cloudtrail,
    @@ -51,13 +21,17 @@ def test_not_trails(self):
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    -            new=self.set_mocked_audit_info(),
    +            new=set_mocked_aws_audit_info([AWS_REGION_US_EAST_1, AWS_REGION_EU_WEST_1]),
             ), mock.patch(
                 "prowler.providers.aws.services.cloudtrail.cloudtrail_logs_s3_bucket_is_not_publicly_accessible.cloudtrail_logs_s3_bucket_is_not_publicly_accessible.cloudtrail_client",
    -            new=Cloudtrail(self.set_mocked_audit_info()),
    +            new=Cloudtrail(
    +                set_mocked_aws_audit_info([AWS_REGION_US_EAST_1, AWS_REGION_EU_WEST_1])
    +            ),
             ), mock.patch(
                 "prowler.providers.aws.services.cloudtrail.cloudtrail_logs_s3_bucket_is_not_publicly_accessible.cloudtrail_logs_s3_bucket_is_not_publicly_accessible.s3_client",
    -            new=S3(self.set_mocked_audit_info()),
    +            new=S3(
    +                set_mocked_aws_audit_info([AWS_REGION_US_EAST_1, AWS_REGION_EU_WEST_1])
    +            ),
             ):
                 # Test Check
                 from prowler.providers.aws.services.cloudtrail.cloudtrail_logs_s3_bucket_is_not_publicly_accessible.cloudtrail_logs_s3_bucket_is_not_publicly_accessible import (
    @@ -69,11 +43,10 @@ def test_not_trails(self):
     
                 assert len(result) == 0
     
    -    @mock_cloudtrail
    -    @mock_s3
    +    @mock_aws
         def test_trail_bucket_no_acl(self):
    -        cloudtrail_client = client("cloudtrail", region_name="us-east-1")
    -        s3_client = client("s3", region_name="us-east-1")
    +        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION_US_EAST_1)
    +        s3_client = client("s3", region_name=AWS_REGION_US_EAST_1)
             trail_name_us = "trail_test_us"
             bucket_name_us = "bucket_test_us"
             s3_client.create_bucket(Bucket=bucket_name_us)
    @@ -88,13 +61,17 @@ def test_trail_bucket_no_acl(self):
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    -            new=self.set_mocked_audit_info(),
    +            new=set_mocked_aws_audit_info([AWS_REGION_US_EAST_1, AWS_REGION_EU_WEST_1]),
             ), mock.patch(
                 "prowler.providers.aws.services.cloudtrail.cloudtrail_logs_s3_bucket_is_not_publicly_accessible.cloudtrail_logs_s3_bucket_is_not_publicly_accessible.cloudtrail_client",
    -            new=Cloudtrail(self.set_mocked_audit_info()),
    +            new=Cloudtrail(
    +                set_mocked_aws_audit_info([AWS_REGION_US_EAST_1, AWS_REGION_EU_WEST_1])
    +            ),
             ), mock.patch(
                 "prowler.providers.aws.services.cloudtrail.cloudtrail_logs_s3_bucket_is_not_publicly_accessible.cloudtrail_logs_s3_bucket_is_not_publicly_accessible.s3_client",
    -            new=S3(self.set_mocked_audit_info()),
    +            new=S3(
    +                set_mocked_aws_audit_info([AWS_REGION_US_EAST_1, AWS_REGION_EU_WEST_1])
    +            ),
             ):
                 # Test Check
                 from prowler.providers.aws.services.cloudtrail.cloudtrail_logs_s3_bucket_is_not_publicly_accessible.cloudtrail_logs_s3_bucket_is_not_publicly_accessible import (
    @@ -114,12 +91,11 @@ def test_trail_bucket_no_acl(self):
                     f"S3 Bucket {bucket_name_us} from single region trail {trail_name_us} is not publicly accessible.",
                 )
                 assert result[0].resource_tags == []
    -            assert result[0].region == "us-east-1"
    +            assert result[0].region == AWS_REGION_US_EAST_1
     
    -    @mock_cloudtrail
    -    @mock_s3
    +    @mock_aws
         def test_trail_bucket_public_acl(self):
    -        s3_client = client("s3", region_name="us-east-1")
    +        s3_client = client("s3", region_name=AWS_REGION_US_EAST_1)
             bucket_name_us = "bucket_test_us"
             s3_client.create_bucket(Bucket=bucket_name_us)
             s3_client.put_bucket_acl(
    @@ -142,7 +118,7 @@ def test_trail_bucket_public_acl(self):
             )
     
             trail_name_us = "trail_test_us"
    -        cloudtrail_client = client("cloudtrail", region_name="us-east-1")
    +        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION_US_EAST_1)
             trail_us = cloudtrail_client.create_trail(
                 Name=trail_name_us, S3BucketName=bucket_name_us, IsMultiRegionTrail=False
             )
    @@ -154,13 +130,17 @@ def test_trail_bucket_public_acl(self):
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    -            new=self.set_mocked_audit_info(),
    +            new=set_mocked_aws_audit_info([AWS_REGION_US_EAST_1, AWS_REGION_EU_WEST_1]),
             ), mock.patch(
                 "prowler.providers.aws.services.cloudtrail.cloudtrail_logs_s3_bucket_is_not_publicly_accessible.cloudtrail_logs_s3_bucket_is_not_publicly_accessible.cloudtrail_client",
    -            new=Cloudtrail(self.set_mocked_audit_info()),
    +            new=Cloudtrail(
    +                set_mocked_aws_audit_info([AWS_REGION_US_EAST_1, AWS_REGION_EU_WEST_1])
    +            ),
             ), mock.patch(
                 "prowler.providers.aws.services.cloudtrail.cloudtrail_logs_s3_bucket_is_not_publicly_accessible.cloudtrail_logs_s3_bucket_is_not_publicly_accessible.s3_client",
    -            new=S3(self.set_mocked_audit_info()),
    +            new=S3(
    +                set_mocked_aws_audit_info([AWS_REGION_US_EAST_1, AWS_REGION_EU_WEST_1])
    +            ),
             ):
                 # Test Check
                 from prowler.providers.aws.services.cloudtrail.cloudtrail_logs_s3_bucket_is_not_publicly_accessible.cloudtrail_logs_s3_bucket_is_not_publicly_accessible import (
    @@ -179,13 +159,12 @@ def test_trail_bucket_public_acl(self):
                     f"S3 Bucket {bucket_name_us} from single region trail {trail_name_us} is publicly accessible.",
                 )
                 assert result[0].resource_tags == []
    -            assert result[0].region == "us-east-1"
    +            assert result[0].region == AWS_REGION_US_EAST_1
     
    -    @mock_cloudtrail
    -    @mock_s3
    +    @mock_aws
         def test_trail_bucket_not_public_acl(self):
    -        cloudtrail_client = client("cloudtrail", region_name="us-east-1")
    -        s3_client = client("s3", region_name="us-east-1")
    +        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION_US_EAST_1)
    +        s3_client = client("s3", region_name=AWS_REGION_US_EAST_1)
             trail_name_us = "trail_test_us"
             bucket_name_us = "bucket_test_us"
             s3_client.create_bucket(Bucket=bucket_name_us)
    @@ -218,13 +197,17 @@ def test_trail_bucket_not_public_acl(self):
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    -            new=self.set_mocked_audit_info(),
    +            new=set_mocked_aws_audit_info([AWS_REGION_US_EAST_1, AWS_REGION_EU_WEST_1]),
             ), mock.patch(
                 "prowler.providers.aws.services.cloudtrail.cloudtrail_logs_s3_bucket_is_not_publicly_accessible.cloudtrail_logs_s3_bucket_is_not_publicly_accessible.cloudtrail_client",
    -            new=Cloudtrail(self.set_mocked_audit_info()),
    +            new=Cloudtrail(
    +                set_mocked_aws_audit_info([AWS_REGION_US_EAST_1, AWS_REGION_EU_WEST_1])
    +            ),
             ), mock.patch(
                 "prowler.providers.aws.services.cloudtrail.cloudtrail_logs_s3_bucket_is_not_publicly_accessible.cloudtrail_logs_s3_bucket_is_not_publicly_accessible.s3_client",
    -            new=S3(self.set_mocked_audit_info()),
    +            new=S3(
    +                set_mocked_aws_audit_info([AWS_REGION_US_EAST_1, AWS_REGION_EU_WEST_1])
    +            ),
             ):
                 # Test Check
                 from prowler.providers.aws.services.cloudtrail.cloudtrail_logs_s3_bucket_is_not_publicly_accessible.cloudtrail_logs_s3_bucket_is_not_publicly_accessible import (
    @@ -243,13 +226,12 @@ def test_trail_bucket_not_public_acl(self):
                     f"S3 Bucket {bucket_name_us} from single region trail {trail_name_us} is not publicly accessible.",
                 )
                 assert result[0].resource_tags == []
    -            assert result[0].region == "us-east-1"
    +            assert result[0].region == AWS_REGION_US_EAST_1
     
    -    @mock_cloudtrail
    -    @mock_s3
    +    @mock_aws
         def test_trail_bucket_cross_account(self):
    -        cloudtrail_client = client("cloudtrail", region_name="us-east-1")
    -        s3_client = client("s3", region_name="us-east-1")
    +        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION_US_EAST_1)
    +        s3_client = client("s3", region_name=AWS_REGION_US_EAST_1)
             trail_name_us = "trail_test_us"
             bucket_name_us = "bucket_test_us"
             s3_client.create_bucket(Bucket=bucket_name_us)
    @@ -264,13 +246,17 @@ def test_trail_bucket_cross_account(self):
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    -            new=self.set_mocked_audit_info(),
    +            new=set_mocked_aws_audit_info([AWS_REGION_US_EAST_1, AWS_REGION_EU_WEST_1]),
             ), mock.patch(
                 "prowler.providers.aws.services.cloudtrail.cloudtrail_logs_s3_bucket_is_not_publicly_accessible.cloudtrail_logs_s3_bucket_is_not_publicly_accessible.cloudtrail_client",
    -            new=Cloudtrail(self.set_mocked_audit_info()),
    +            new=Cloudtrail(
    +                set_mocked_aws_audit_info([AWS_REGION_US_EAST_1, AWS_REGION_EU_WEST_1])
    +            ),
             ), mock.patch(
                 "prowler.providers.aws.services.cloudtrail.cloudtrail_logs_s3_bucket_is_not_publicly_accessible.cloudtrail_logs_s3_bucket_is_not_publicly_accessible.s3_client",
    -            new=S3(self.set_mocked_audit_info()),
    +            new=S3(
    +                set_mocked_aws_audit_info([AWS_REGION_US_EAST_1, AWS_REGION_EU_WEST_1])
    +            ),
             ) as s3_client:
                 # Test Check
                 from prowler.providers.aws.services.cloudtrail.cloudtrail_logs_s3_bucket_is_not_publicly_accessible.cloudtrail_logs_s3_bucket_is_not_publicly_accessible import (
    @@ -292,4 +278,4 @@ def test_trail_bucket_cross_account(self):
                     result[0].status_extended,
                 )
                 assert result[0].resource_tags == []
    -            assert result[0].region == "us-east-1"
    +            assert result[0].region == AWS_REGION_US_EAST_1
    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 13b39513fe3..cebbe0c808a 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
    @@ -1,55 +1,27 @@
     from re import search
     from unittest import mock
     
    -from boto3 import client, session
    -from moto import mock_cloudtrail, mock_s3
    +from boto3 import client
    +from moto import mock_aws
     
    -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 = "us-east-1"
    -AWS_REGION_EU_WEST_1 = "eu-west-1"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_ACCOUNT_NUMBER,
    +    AWS_REGION_EU_WEST_1,
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     
     class Test_cloudtrail_multi_region_enabled:
    -    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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=[AWS_REGION_US_EAST_1, AWS_REGION_EU_WEST_1],
    -            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
    -
    -    @mock_cloudtrail
    +    @mock_aws
         def test_no_trails(self):
             from prowler.providers.aws.services.cloudtrail.cloudtrail_service import (
                 Cloudtrail,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_US_EAST_1, AWS_REGION_EU_WEST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -93,8 +65,7 @@ def test_no_trails(self):
                             )
                             assert report.resource_tags == []
     
    -    @mock_cloudtrail
    -    @mock_s3
    +    @mock_aws
         def test_various_trails_no_logging(self):
             cloudtrail_client_us_east_1 = client(
                 "cloudtrail", region_name=AWS_REGION_US_EAST_1
    @@ -124,7 +95,9 @@ def test_various_trails_no_logging(self):
                 Cloudtrail,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_US_EAST_1, AWS_REGION_EU_WEST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -168,8 +141,7 @@ def test_various_trails_no_logging(self):
                             )
                             assert report.resource_tags == []
     
    -    @mock_cloudtrail
    -    @mock_s3
    +    @mock_aws
         def test_various_trails_with_and_without_logging(self):
             cloudtrail_client_us_east_1 = client(
                 "cloudtrail", region_name=AWS_REGION_US_EAST_1
    @@ -201,7 +173,9 @@ def test_various_trails_with_and_without_logging(self):
                 Cloudtrail,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_US_EAST_1, AWS_REGION_EU_WEST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -244,8 +218,7 @@ def test_various_trails_with_and_without_logging(self):
                             assert report.resource_tags == []
                             assert report.region == AWS_REGION_EU_WEST_1
     
    -    @mock_cloudtrail
    -    @mock_s3
    +    @mock_aws
         def test_trail_multiregion_logging_and_single_region_not_logging(self):
             cloudtrail_client_us_east_1 = client(
                 "cloudtrail", region_name=AWS_REGION_US_EAST_1
    @@ -277,7 +250,9 @@ def test_trail_multiregion_logging_and_single_region_not_logging(self):
                 Cloudtrail,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_US_EAST_1, AWS_REGION_EU_WEST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    diff --git a/tests/providers/aws/services/cloudtrail/cloudtrail_multi_region_enabled_logging_management_events/cloudtrail_multi_region_enabled_logging_management_events_test.py b/tests/providers/aws/services/cloudtrail/cloudtrail_multi_region_enabled_logging_management_events/cloudtrail_multi_region_enabled_logging_management_events_test.py
    index 46de6580c83..66506867301 100644
    --- a/tests/providers/aws/services/cloudtrail/cloudtrail_multi_region_enabled_logging_management_events/cloudtrail_multi_region_enabled_logging_management_events_test.py
    +++ b/tests/providers/aws/services/cloudtrail/cloudtrail_multi_region_enabled_logging_management_events/cloudtrail_multi_region_enabled_logging_management_events_test.py
    @@ -1,54 +1,24 @@
     from unittest import mock
     
    -from boto3 import client, session
    -from moto import mock_cloudtrail, mock_s3
    +from boto3 import client
    +from moto import mock_aws
     
    -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"
    -AWS_REGION = "us-east-1"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_ACCOUNT_ARN,
    +    AWS_ACCOUNT_NUMBER,
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     
     class Test_cloudtrail_multi_region_enabled_logging_management_events:
    -    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",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=[AWS_REGION],
    -            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
    -
    -    @mock_cloudtrail
    +    @mock_aws
         def test_no_trails(self):
             from prowler.providers.aws.services.cloudtrail.cloudtrail_service import (
                 Cloudtrail,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -68,18 +38,19 @@ def test_no_trails(self):
                     assert len(result) == 1
                     assert result[0].resource_id == AWS_ACCOUNT_NUMBER
                     assert result[0].resource_arn == AWS_ACCOUNT_ARN
    -                assert result[0].region == AWS_REGION
    +                assert result[0].region == AWS_REGION_US_EAST_1
                     assert result[0].status == "FAIL"
                     assert (
                         result[0].status_extended
                         == "No trail found with multi-region enabled and logging management events."
                     )
     
    -    @mock_cloudtrail
    -    @mock_s3
    +    @mock_aws
         def test_compliant_trail_advanced_event_selector(self):
    -        cloudtrail_client_us_east_1 = client("cloudtrail", region_name=AWS_REGION)
    -        s3_client_us_east_1 = client("s3", region_name=AWS_REGION)
    +        cloudtrail_client_us_east_1 = client(
    +            "cloudtrail", region_name=AWS_REGION_US_EAST_1
    +        )
    +        s3_client_us_east_1 = client("s3", region_name=AWS_REGION_US_EAST_1)
             trail_name_us = "trail_test_us"
             bucket_name_us = "bucket_test_us"
             s3_client_us_east_1.create_bucket(Bucket=bucket_name_us)
    @@ -103,7 +74,7 @@ def test_compliant_trail_advanced_event_selector(self):
                 Cloudtrail,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -123,18 +94,19 @@ def test_compliant_trail_advanced_event_selector(self):
                     assert len(result) == 1
                     assert result[0].resource_id == trail_name_us
                     assert result[0].resource_arn == trail_us["TrailARN"]
    -                assert result[0].region == AWS_REGION
    +                assert result[0].region == AWS_REGION_US_EAST_1
                     assert result[0].status == "PASS"
                     assert (
                         result[0].status_extended
    -                    == f"Trail {trail_name_us} from home region {AWS_REGION} is multi-region, is logging and have management events enabled."
    +                    == f"Trail {trail_name_us} from home region {AWS_REGION_US_EAST_1} is multi-region, is logging and have management events enabled."
                     )
     
    -    @mock_cloudtrail
    -    @mock_s3
    +    @mock_aws
         def test_non_compliant_trail_advanced_event_selector(self):
    -        cloudtrail_client_us_east_1 = client("cloudtrail", region_name=AWS_REGION)
    -        s3_client_us_east_1 = client("s3", region_name=AWS_REGION)
    +        cloudtrail_client_us_east_1 = client(
    +            "cloudtrail", region_name=AWS_REGION_US_EAST_1
    +        )
    +        s3_client_us_east_1 = client("s3", region_name=AWS_REGION_US_EAST_1)
             trail_name_us = "trail_test_us"
             bucket_name_us = "bucket_test_us"
             s3_client_us_east_1.create_bucket(Bucket=bucket_name_us)
    @@ -159,7 +131,7 @@ def test_non_compliant_trail_advanced_event_selector(self):
                 Cloudtrail,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -178,18 +150,19 @@ def test_non_compliant_trail_advanced_event_selector(self):
                     result = check.execute()
                     assert result[0].resource_id == AWS_ACCOUNT_NUMBER
                     assert result[0].resource_arn == AWS_ACCOUNT_ARN
    -                assert result[0].region == AWS_REGION
    +                assert result[0].region == AWS_REGION_US_EAST_1
                     assert result[0].status == "FAIL"
                     assert (
                         result[0].status_extended
                         == "No trail found with multi-region enabled and logging management events."
                     )
     
    -    @mock_cloudtrail
    -    @mock_s3
    +    @mock_aws
         def test_compliant_trail_classic_event_selector(self):
    -        cloudtrail_client_us_east_1 = client("cloudtrail", region_name=AWS_REGION)
    -        s3_client_us_east_1 = client("s3", region_name=AWS_REGION)
    +        cloudtrail_client_us_east_1 = client(
    +            "cloudtrail", region_name=AWS_REGION_US_EAST_1
    +        )
    +        s3_client_us_east_1 = client("s3", region_name=AWS_REGION_US_EAST_1)
             trail_name_us = "trail_test_us"
             bucket_name_us = "bucket_test_us"
             s3_client_us_east_1.create_bucket(Bucket=bucket_name_us)
    @@ -212,7 +185,7 @@ def test_compliant_trail_classic_event_selector(self):
                 Cloudtrail,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -232,18 +205,19 @@ def test_compliant_trail_classic_event_selector(self):
                     assert len(result) == 1
                     assert result[0].resource_id == trail_name_us
                     assert result[0].resource_arn == trail_us["TrailARN"]
    -                assert result[0].region == AWS_REGION
    +                assert result[0].region == AWS_REGION_US_EAST_1
                     assert result[0].status == "PASS"
                     assert (
                         result[0].status_extended
    -                    == f"Trail {trail_name_us} from home region {AWS_REGION} is multi-region, is logging and have management events enabled."
    +                    == f"Trail {trail_name_us} from home region {AWS_REGION_US_EAST_1} is multi-region, is logging and have management events enabled."
                     )
     
    -    @mock_cloudtrail
    -    @mock_s3
    +    @mock_aws
         def test_non_compliant_trail_classic_event_selector(self):
    -        cloudtrail_client_us_east_1 = client("cloudtrail", region_name=AWS_REGION)
    -        s3_client_us_east_1 = client("s3", region_name=AWS_REGION)
    +        cloudtrail_client_us_east_1 = client(
    +            "cloudtrail", region_name=AWS_REGION_US_EAST_1
    +        )
    +        s3_client_us_east_1 = client("s3", region_name=AWS_REGION_US_EAST_1)
             trail_name_us = "trail_test_us"
             bucket_name_us = "bucket_test_us"
             s3_client_us_east_1.create_bucket(Bucket=bucket_name_us)
    @@ -266,7 +240,7 @@ def test_non_compliant_trail_classic_event_selector(self):
                 Cloudtrail,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -285,7 +259,7 @@ def test_non_compliant_trail_classic_event_selector(self):
                     result = check.execute()
                     assert result[0].resource_id == AWS_ACCOUNT_NUMBER
                     assert result[0].resource_arn == AWS_ACCOUNT_ARN
    -                assert result[0].region == AWS_REGION
    +                assert result[0].region == AWS_REGION_US_EAST_1
                     assert result[0].status == "FAIL"
                     assert (
                         result[0].status_extended
    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 cc5e6609454..ba711f1e31d 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
    @@ -1,7 +1,7 @@
     from unittest import mock
     
     from boto3 import client
    -from moto import mock_cloudtrail, mock_s3
    +from moto import mock_aws
     
     from tests.providers.aws.audit_info_utils import (
         AWS_ACCOUNT_NUMBER,
    @@ -11,8 +11,7 @@
     
     
     class Test_cloudtrail_s3_dataevents_read_enabled:
    -    @mock_cloudtrail
    -    @mock_s3
    +    @mock_aws
         def test_trail_without_data_events(self):
             cloudtrail_client_us_east_1 = client(
                 "cloudtrail", region_name=AWS_REGION_US_EAST_1
    @@ -61,8 +60,7 @@ def test_trail_without_data_events(self):
                 assert result[0].resource_tags == []
                 assert result[0].region == AWS_REGION_US_EAST_1
     
    -    @mock_cloudtrail
    -    @mock_s3
    +    @mock_aws
         def test_trail_without_data_events_ignoring(self):
             from prowler.providers.aws.services.cloudtrail.cloudtrail_service import (
                 Cloudtrail,
    @@ -92,8 +90,7 @@ def test_trail_without_data_events_ignoring(self):
     
                 assert len(result) == 0
     
    -    @mock_cloudtrail
    -    @mock_s3
    +    @mock_aws
         def test_trail_without_data_events_ignoring_with_buckets(self):
             s3_client_us_east_1 = client("s3", region_name=AWS_REGION_US_EAST_1)
             bucket_name_us = "bucket_test_us"
    @@ -136,8 +133,7 @@ def test_trail_without_data_events_ignoring_with_buckets(self):
                 assert result[0].resource_tags == []
                 assert result[0].region == AWS_REGION_US_EAST_1
     
    -    @mock_cloudtrail
    -    @mock_s3
    +    @mock_aws
         def test_trail_without_s3_data_events(self):
             cloudtrail_client_us_east_1 = client(
                 "cloudtrail", region_name=AWS_REGION_US_EAST_1
    @@ -198,8 +194,7 @@ def test_trail_without_s3_data_events(self):
                 assert result[0].resource_tags == []
                 assert result[0].region == AWS_REGION_US_EAST_1
     
    -    @mock_cloudtrail
    -    @mock_s3
    +    @mock_aws
         def test_trail_with_s3_classic_data_events(self):
             cloudtrail_client_us_east_1 = client(
                 "cloudtrail", region_name=AWS_REGION_US_EAST_1
    @@ -260,8 +255,7 @@ def test_trail_with_s3_classic_data_events(self):
                 assert result[0].resource_tags == []
                 assert result[0].region == AWS_REGION_US_EAST_1
     
    -    @mock_cloudtrail
    -    @mock_s3
    +    @mock_aws
         def test_trail_with_s3_advanced_data_events(self):
             cloudtrail_client_us_east_1 = client(
                 "cloudtrail", region_name=AWS_REGION_US_EAST_1
    @@ -322,8 +316,7 @@ def test_trail_with_s3_advanced_data_events(self):
                 assert result[0].resource_tags == []
                 assert result[0].region == AWS_REGION_US_EAST_1
     
    -    @mock_cloudtrail
    -    @mock_s3
    +    @mock_aws
         def test_trail_with_s3_three_colons(self):
             cloudtrail_client_us_east_1 = client(
                 "cloudtrail", region_name=AWS_REGION_US_EAST_1
    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 a7def7b8cd6..f686d773bd8 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
    @@ -1,7 +1,7 @@
     from unittest import mock
     
     from boto3 import client
    -from moto import mock_cloudtrail, mock_s3
    +from moto import mock_aws
     
     from tests.providers.aws.audit_info_utils import (
         AWS_ACCOUNT_NUMBER,
    @@ -11,8 +11,7 @@
     
     
     class Test_cloudtrail_s3_dataevents_write_enabled:
    -    @mock_cloudtrail
    -    @mock_s3
    +    @mock_aws
         def test_trail_without_data_events(self):
             cloudtrail_client_us_east_1 = client(
                 "cloudtrail", region_name=AWS_REGION_US_EAST_1
    @@ -61,8 +60,7 @@ def test_trail_without_data_events(self):
                 assert result[0].resource_tags == []
                 assert result[0].region == AWS_REGION_US_EAST_1
     
    -    @mock_cloudtrail
    -    @mock_s3
    +    @mock_aws
         def test_trail_without_s3_data_events(self):
             cloudtrail_client_us_east_1 = client(
                 "cloudtrail", region_name=AWS_REGION_US_EAST_1
    @@ -123,8 +121,7 @@ def test_trail_without_s3_data_events(self):
                 assert result[0].resource_tags == []
                 assert result[0].region == AWS_REGION_US_EAST_1
     
    -    @mock_cloudtrail
    -    @mock_s3
    +    @mock_aws
         def test_trail_without_s3_data_events_ignoring(self):
             from prowler.providers.aws.services.cloudtrail.cloudtrail_service import (
                 Cloudtrail,
    @@ -154,8 +151,7 @@ def test_trail_without_s3_data_events_ignoring(self):
     
                 assert len(result) == 0
     
    -    @mock_cloudtrail
    -    @mock_s3
    +    @mock_aws
         def test_trail_without_s3_data_events_ignoring_with_buckets(self):
             s3_client_us_east_1 = client("s3", region_name=AWS_REGION_US_EAST_1)
             bucket_name_us = "bucket_test_us"
    @@ -197,8 +193,7 @@ def test_trail_without_s3_data_events_ignoring_with_buckets(self):
                 assert result[0].resource_tags == []
                 assert result[0].region == AWS_REGION_US_EAST_1
     
    -    @mock_cloudtrail
    -    @mock_s3
    +    @mock_aws
         def test_trail_with_s3_data_events(self):
             cloudtrail_client_us_east_1 = client(
                 "cloudtrail", region_name=AWS_REGION_US_EAST_1
    @@ -259,8 +254,7 @@ def test_trail_with_s3_data_events(self):
                 assert result[0].resource_tags == []
                 assert result[0].region == AWS_REGION_US_EAST_1
     
    -    @mock_cloudtrail
    -    @mock_s3
    +    @mock_aws
         def test_trail_with_s3_advanced_data_events(self):
             cloudtrail_client_us_east_1 = client(
                 "cloudtrail", region_name=AWS_REGION_US_EAST_1
    @@ -320,8 +314,7 @@ def test_trail_with_s3_advanced_data_events(self):
                 assert result[0].resource_tags == []
                 assert result[0].region == AWS_REGION_US_EAST_1
     
    -    @mock_cloudtrail
    -    @mock_s3
    +    @mock_aws
         def test_trail_with_s3_three_colons(self):
             cloudtrail_client_us_east_1 = client(
                 "cloudtrail", region_name=AWS_REGION_US_EAST_1
    diff --git a/tests/providers/aws/services/cloudtrail/cloudtrail_service_test.py b/tests/providers/aws/services/cloudtrail/cloudtrail_service_test.py
    index 2eb5c61ff7c..37470b47674 100644
    --- a/tests/providers/aws/services/cloudtrail/cloudtrail_service_test.py
    +++ b/tests/providers/aws/services/cloudtrail/cloudtrail_service_test.py
    @@ -1,81 +1,63 @@
    -from boto3 import client, session
    -from moto import mock_cloudtrail, mock_s3
    +from boto3 import client
    +from moto import mock_aws
     
    -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"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_ACCOUNT_NUMBER,
    +    AWS_REGION_EU_WEST_1,
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     
     class Test_Cloudtrail_Service:
    -    # 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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=["eu-west-1", "us-east-1"],
    -            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
    -
         # Test Cloudtrail Service
    -    @mock_cloudtrail
    +    @mock_aws
         def test_service(self):
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_US_EAST_1, AWS_REGION_EU_WEST_1]
    +        )
             cloudtrail = Cloudtrail(audit_info)
             assert cloudtrail.service == "cloudtrail"
     
         # Test Cloudtrail client
    -    @mock_cloudtrail
    +    @mock_aws
         def test_client(self):
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_US_EAST_1, AWS_REGION_EU_WEST_1]
    +        )
             cloudtrail = Cloudtrail(audit_info)
             for regional_client in cloudtrail.regional_clients.values():
                 assert regional_client.__class__.__name__ == "CloudTrail"
     
         # Test Cloudtrail session
    -    @mock_cloudtrail
    +    @mock_aws
         def test__get_session__(self):
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_US_EAST_1, AWS_REGION_EU_WEST_1]
    +        )
             cloudtrail = Cloudtrail(audit_info)
             assert cloudtrail.session.__class__.__name__ == "Session"
     
         # Test Cloudtrail Session
    -    @mock_cloudtrail
    +    @mock_aws
         def test_audited_account(self):
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_US_EAST_1, AWS_REGION_EU_WEST_1]
    +        )
             cloudtrail = Cloudtrail(audit_info)
             assert cloudtrail.audited_account == AWS_ACCOUNT_NUMBER
     
    -    @mock_cloudtrail
    -    @mock_s3
    +    @mock_aws
         def test_describe_trails(self):
    -        cloudtrail_client_us_east_1 = client("cloudtrail", region_name="us-east-1")
    -        s3_client_us_east_1 = client("s3", region_name="us-east-1")
    -        cloudtrail_client_eu_west_1 = client("cloudtrail", region_name="eu-west-1")
    -        s3_client_eu_west_1 = client("s3", region_name="eu-west-1")
    +        cloudtrail_client_us_east_1 = client(
    +            "cloudtrail", region_name=AWS_REGION_US_EAST_1
    +        )
    +        s3_client_us_east_1 = client("s3", region_name=AWS_REGION_US_EAST_1)
    +        cloudtrail_client_eu_west_1 = client(
    +            "cloudtrail", region_name=AWS_REGION_EU_WEST_1
    +        )
    +        s3_client_eu_west_1 = client("s3", region_name=AWS_REGION_EU_WEST_1)
             trail_name_us = "trail_test_us"
             bucket_name_us = "bucket_test_us"
             trail_name_eu = "trail_test_eu"
    @@ -83,7 +65,7 @@ def test_describe_trails(self):
             s3_client_us_east_1.create_bucket(Bucket=bucket_name_us)
             s3_client_eu_west_1.create_bucket(
                 Bucket=bucket_name_eu,
    -            CreateBucketConfiguration={"LocationConstraint": "eu-west-1"},
    +            CreateBucketConfiguration={"LocationConstraint": AWS_REGION_EU_WEST_1},
             )
             cloudtrail_client_us_east_1.create_trail(
                 Name=trail_name_us,
    @@ -101,7 +83,9 @@ def test_describe_trails(self):
                     {"Key": "test", "Value": "test"},
                 ],
             )
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_US_EAST_1, AWS_REGION_EU_WEST_1]
    +        )
             cloudtrail = Cloudtrail(audit_info)
             assert len(cloudtrail.trails) == 2
             for trail in cloudtrail.trails:
    @@ -109,9 +93,13 @@ def test_describe_trails(self):
                     assert trail.name == trail_name_us or trail.name == trail_name_eu
                     assert not trail.is_multiregion
                     assert (
    -                    trail.home_region == "us-east-1" or trail.home_region == "eu-west-1"
    +                    trail.home_region == AWS_REGION_US_EAST_1
    +                    or trail.home_region == AWS_REGION_EU_WEST_1
    +                )
    +                assert (
    +                    trail.region == AWS_REGION_US_EAST_1
    +                    or trail.region == AWS_REGION_EU_WEST_1
                     )
    -                assert trail.region == "us-east-1" or trail.region == "eu-west-1"
                     assert not trail.is_logging
                     assert not trail.log_file_validation_enabled
                     assert not trail.latest_cloudwatch_delivery_time
    @@ -123,13 +111,16 @@ def test_describe_trails(self):
                         {"Key": "test", "Value": "test"},
                     ]
     
    -    @mock_cloudtrail
    -    @mock_s3
    +    @mock_aws
         def test_status_trails(self):
    -        cloudtrail_client_us_east_1 = client("cloudtrail", region_name="us-east-1")
    -        s3_client_us_east_1 = client("s3", region_name="us-east-1")
    -        cloudtrail_client_eu_west_1 = client("cloudtrail", region_name="eu-west-1")
    -        s3_client_eu_west_1 = client("s3", region_name="eu-west-1")
    +        cloudtrail_client_us_east_1 = client(
    +            "cloudtrail", region_name=AWS_REGION_US_EAST_1
    +        )
    +        s3_client_us_east_1 = client("s3", region_name=AWS_REGION_US_EAST_1)
    +        cloudtrail_client_eu_west_1 = client(
    +            "cloudtrail", region_name=AWS_REGION_EU_WEST_1
    +        )
    +        s3_client_eu_west_1 = client("s3", region_name=AWS_REGION_EU_WEST_1)
             trail_name_us = "trail_test_us"
             bucket_name_us = "bucket_test_us"
             trail_name_eu = "trail_test_eu"
    @@ -137,7 +128,7 @@ def test_status_trails(self):
             s3_client_us_east_1.create_bucket(Bucket=bucket_name_us)
             s3_client_eu_west_1.create_bucket(
                 Bucket=bucket_name_eu,
    -            CreateBucketConfiguration={"LocationConstraint": "eu-west-1"},
    +            CreateBucketConfiguration={"LocationConstraint": AWS_REGION_EU_WEST_1},
             )
             cloudtrail_client_us_east_1.create_trail(
                 Name=trail_name_us,
    @@ -149,25 +140,28 @@ def test_status_trails(self):
             cloudtrail_client_eu_west_1.create_trail(
                 Name=trail_name_eu, S3BucketName=bucket_name_eu, IsMultiRegionTrail=False
             )
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_US_EAST_1, AWS_REGION_EU_WEST_1]
    +        )
             cloudtrail = Cloudtrail(audit_info)
             assert len(cloudtrail.trails) == len(audit_info.audited_regions)
             for trail in cloudtrail.trails:
                 if trail.name:
                     if trail.name == trail_name_us:
                         assert not trail.is_multiregion
    -                    assert trail.home_region == "us-east-1"
    -                    assert trail.region == "us-east-1"
    +                    assert trail.home_region == AWS_REGION_US_EAST_1
    +                    assert trail.region == AWS_REGION_US_EAST_1
                         assert trail.is_logging
                         assert trail.log_file_validation_enabled
                         assert not trail.latest_cloudwatch_delivery_time
                         assert trail.s3_bucket == bucket_name_us
     
    -    @mock_cloudtrail
    -    @mock_s3
    +    @mock_aws
         def test_get_classic_event_selectors(self):
    -        cloudtrail_client_us_east_1 = client("cloudtrail", region_name="us-east-1")
    -        s3_client_us_east_1 = client("s3", region_name="us-east-1")
    +        cloudtrail_client_us_east_1 = client(
    +            "cloudtrail", region_name=AWS_REGION_US_EAST_1
    +        )
    +        s3_client_us_east_1 = client("s3", region_name=AWS_REGION_US_EAST_1)
             trail_name_us = "trail_test_us"
             bucket_name_us = "bucket_test_us"
             s3_client_us_east_1.create_bucket(Bucket=bucket_name_us)
    @@ -190,15 +184,17 @@ def test_get_classic_event_selectors(self):
                     }
                 ],
             )["EventSelectors"]
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_US_EAST_1, AWS_REGION_EU_WEST_1]
    +        )
             cloudtrail = Cloudtrail(audit_info)
             assert len(cloudtrail.trails) == len(audit_info.audited_regions)
             for trail in cloudtrail.trails:
                 if trail.name:
                     if trail.name == trail_name_us:
                         assert not trail.is_multiregion
    -                    assert trail.home_region == "us-east-1"
    -                    assert trail.region == "us-east-1"
    +                    assert trail.home_region == AWS_REGION_US_EAST_1
    +                    assert trail.region == AWS_REGION_US_EAST_1
                         assert trail.is_logging
                         assert trail.log_file_validation_enabled
                         assert not trail.latest_cloudwatch_delivery_time
    @@ -208,11 +204,12 @@ def test_get_classic_event_selectors(self):
                         )
                         assert not trail.data_events[0].is_advanced
     
    -    @mock_cloudtrail
    -    @mock_s3
    +    @mock_aws
         def test_get_advanced_event_selectors(self):
    -        cloudtrail_client_us_east_1 = client("cloudtrail", region_name="us-east-1")
    -        s3_client_us_east_1 = client("s3", region_name="us-east-1")
    +        cloudtrail_client_us_east_1 = client(
    +            "cloudtrail", region_name=AWS_REGION_US_EAST_1
    +        )
    +        s3_client_us_east_1 = client("s3", region_name=AWS_REGION_US_EAST_1)
             trail_name_us = "trail_test_us"
             bucket_name_us = "bucket_test_us"
             s3_client_us_east_1.create_bucket(Bucket=bucket_name_us)
    @@ -235,15 +232,17 @@ def test_get_advanced_event_selectors(self):
                     },
                 ],
             )["AdvancedEventSelectors"]
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_US_EAST_1, AWS_REGION_EU_WEST_1]
    +        )
             cloudtrail = Cloudtrail(audit_info)
             assert len(cloudtrail.trails) == len(audit_info.audited_regions)
             for trail in cloudtrail.trails:
                 if trail.name:
                     if trail.name == trail_name_us:
                         assert not trail.is_multiregion
    -                    assert trail.home_region == "us-east-1"
    -                    assert trail.region == "us-east-1"
    +                    assert trail.home_region == AWS_REGION_US_EAST_1
    +                    assert trail.region == AWS_REGION_US_EAST_1
                         assert trail.is_logging
                         assert trail.log_file_validation_enabled
                         assert not trail.latest_cloudwatch_delivery_time
    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 c1a96b06a9e..1ddb0d1adcb 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
    @@ -1,51 +1,19 @@
     from unittest import mock
     
    -from boto3 import client, session
    -from moto import mock_cloudtrail, mock_cloudwatch, mock_logs, mock_s3
    -from moto.core import DEFAULT_ACCOUNT_ID
    +from boto3 import client
    +from moto import mock_aws
     
    -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"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_ACCOUNT_ARN,
    +    AWS_ACCOUNT_NUMBER,
    +    AWS_REGION_EU_WEST_1,
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     
     class Test_cloudwatch_changes_to_network_acls_alarm_configured:
    -    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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=["us-east-1", "eu-west-1"],
    -            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
    -
    -    @mock_logs
    -    @mock_cloudtrail
    -    @mock_cloudwatch
    +    @mock_aws
         def test_cloudwatch_no_log_groups(self):
             from prowler.providers.aws.services.cloudtrail.cloudtrail_service import (
                 Cloudtrail,
    @@ -55,7 +23,9 @@ def test_cloudwatch_no_log_groups(self):
                 Logs,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             from prowler.providers.common.models import Audit_Metadata
     
    @@ -94,15 +64,14 @@ def test_cloudwatch_no_log_groups(self):
                     result[0].status_extended
                     == "No CloudWatch log groups found with metric filters or alarms associated."
                 )
    -            assert result[0].resource_id == current_audit_info.audited_account
    +            assert result[0].resource_id == AWS_ACCOUNT_NUMBER
    +            assert result[0].resource_arn == AWS_ACCOUNT_ARN
    +            assert result[0].region == AWS_REGION_EU_WEST_1
     
    -    @mock_logs
    -    @mock_cloudtrail
    -    @mock_cloudwatch
    -    @mock_s3
    +    @mock_aws
         def test_cloudwatch_trail_no_log_group(self):
    -        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION)
    -        s3_client = client("s3", region_name=AWS_REGION)
    +        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION_US_EAST_1)
    +        s3_client = client("s3", region_name=AWS_REGION_US_EAST_1)
             s3_client.create_bucket(Bucket="test")
             cloudtrail_client.create_trail(Name="test_trail", S3BucketName="test")
     
    @@ -114,7 +83,9 @@ def test_cloudwatch_trail_no_log_group(self):
                 Logs,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_US_EAST_1, AWS_REGION_EU_WEST_1]
    +        )
     
             from prowler.providers.common.models import Audit_Metadata
     
    @@ -153,22 +124,21 @@ def test_cloudwatch_trail_no_log_group(self):
                     result[0].status_extended
                     == "No CloudWatch log groups found with metric filters or alarms associated."
                 )
    -            assert result[0].resource_id == current_audit_info.audited_account
    +            assert result[0].resource_id == AWS_ACCOUNT_NUMBER
    +            assert result[0].resource_arn == AWS_ACCOUNT_ARN
    +            assert result[0].region == AWS_REGION_US_EAST_1
     
    -    @mock_logs
    -    @mock_cloudtrail
    -    @mock_cloudwatch
    -    @mock_s3
    +    @mock_aws
         def test_cloudwatch_trail_with_log_group(self):
    -        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION)
    -        logs_client = client("logs", region_name=AWS_REGION)
    -        s3_client = client("s3", region_name=AWS_REGION)
    +        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION_US_EAST_1)
    +        logs_client = client("logs", region_name=AWS_REGION_US_EAST_1)
    +        s3_client = client("s3", region_name=AWS_REGION_US_EAST_1)
             s3_client.create_bucket(Bucket="test")
             logs_client.create_log_group(logGroupName="/log-group/test")
             cloudtrail_client.create_trail(
                 Name="test_trail",
                 S3BucketName="test",
    -            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION}:{DEFAULT_ACCOUNT_ID}:log-group:/log-group/test:*",
    +            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION_US_EAST_1}:{AWS_ACCOUNT_NUMBER}:log-group:/log-group/test:*",
             )
     
             from prowler.providers.aws.services.cloudtrail.cloudtrail_service import (
    @@ -179,7 +149,9 @@ def test_cloudwatch_trail_with_log_group(self):
                 Logs,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_US_EAST_1, AWS_REGION_EU_WEST_1]
    +        )
     
             from prowler.providers.common.models import Audit_Metadata
     
    @@ -218,22 +190,21 @@ def test_cloudwatch_trail_with_log_group(self):
                     result[0].status_extended
                     == "No CloudWatch log groups found with metric filters or alarms associated."
                 )
    -            assert result[0].resource_id == current_audit_info.audited_account
    +            assert result[0].resource_id == AWS_ACCOUNT_NUMBER
    +            assert result[0].resource_arn == AWS_ACCOUNT_ARN
    +            assert result[0].region == AWS_REGION_US_EAST_1
     
    -    @mock_logs
    -    @mock_cloudtrail
    -    @mock_cloudwatch
    -    @mock_s3
    +    @mock_aws
         def test_cloudwatch_trail_with_log_group_with_metric(self):
    -        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION)
    -        logs_client = client("logs", region_name=AWS_REGION)
    -        s3_client = client("s3", region_name=AWS_REGION)
    +        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION_US_EAST_1)
    +        logs_client = client("logs", region_name=AWS_REGION_US_EAST_1)
    +        s3_client = client("s3", region_name=AWS_REGION_US_EAST_1)
             s3_client.create_bucket(Bucket="test")
             logs_client.create_log_group(logGroupName="/log-group/test")
             cloudtrail_client.create_trail(
                 Name="test_trail",
                 S3BucketName="test",
    -            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION}:{DEFAULT_ACCOUNT_ID}:log-group:/log-group/test:*",
    +            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION_US_EAST_1}:{AWS_ACCOUNT_NUMBER}:log-group:/log-group/test:*",
             )
             logs_client.put_metric_filter(
                 logGroupName="/log-group/test",
    @@ -256,7 +227,9 @@ def test_cloudwatch_trail_with_log_group_with_metric(self):
                 Logs,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_US_EAST_1, AWS_REGION_EU_WEST_1]
    +        )
     
             from prowler.providers.common.models import Audit_Metadata
     
    @@ -296,22 +269,24 @@ def test_cloudwatch_trail_with_log_group_with_metric(self):
                     == "CloudWatch log group /log-group/test found with metric filter test-filter but no alarms associated."
                 )
                 assert result[0].resource_id == "/log-group/test"
    +            assert (
    +                result[0].resource_arn
    +                == f"arn:aws:logs:{AWS_REGION_US_EAST_1}:{AWS_ACCOUNT_NUMBER}:metric-filter/test-filter"
    +            )
    +            assert result[0].region == AWS_REGION_US_EAST_1
     
    -    @mock_logs
    -    @mock_cloudtrail
    -    @mock_cloudwatch
    -    @mock_s3
    +    @mock_aws
         def test_cloudwatch_trail_with_log_group_with_metric_and_alarm(self):
    -        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION)
    -        cloudwatch_client = client("cloudwatch", region_name=AWS_REGION)
    -        logs_client = client("logs", region_name=AWS_REGION)
    -        s3_client = client("s3", region_name=AWS_REGION)
    +        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION_US_EAST_1)
    +        cloudwatch_client = client("cloudwatch", region_name=AWS_REGION_US_EAST_1)
    +        logs_client = client("logs", region_name=AWS_REGION_US_EAST_1)
    +        s3_client = client("s3", region_name=AWS_REGION_US_EAST_1)
             s3_client.create_bucket(Bucket="test")
             logs_client.create_log_group(logGroupName="/log-group/test")
             cloudtrail_client.create_trail(
                 Name="test_trail",
                 S3BucketName="test",
    -            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION}:{DEFAULT_ACCOUNT_ID}:log-group:/log-group/test:*",
    +            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION_US_EAST_1}:{AWS_ACCOUNT_NUMBER}:log-group:/log-group/test:*",
             )
             logs_client.put_metric_filter(
                 logGroupName="/log-group/test",
    @@ -345,7 +320,9 @@ def test_cloudwatch_trail_with_log_group_with_metric_and_alarm(self):
                 Logs,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_US_EAST_1, AWS_REGION_EU_WEST_1]
    +        )
     
             from prowler.providers.common.models import Audit_Metadata
     
    @@ -385,22 +362,24 @@ def test_cloudwatch_trail_with_log_group_with_metric_and_alarm(self):
                     == "CloudWatch log group /log-group/test found with metric filter test-filter and alarms set."
                 )
                 assert result[0].resource_id == "/log-group/test"
    +            assert (
    +                result[0].resource_arn
    +                == f"arn:aws:logs:{AWS_REGION_US_EAST_1}:{AWS_ACCOUNT_NUMBER}:metric-filter/test-filter"
    +            )
    +            assert result[0].region == AWS_REGION_US_EAST_1
     
    -    @mock_logs
    -    @mock_cloudtrail
    -    @mock_cloudwatch
    -    @mock_s3
    +    @mock_aws
         def test_cloudwatch_trail_with_log_group_with_metric_and_alarm_with_quotes(self):
    -        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION)
    -        cloudwatch_client = client("cloudwatch", region_name=AWS_REGION)
    -        logs_client = client("logs", region_name=AWS_REGION)
    -        s3_client = client("s3", region_name=AWS_REGION)
    +        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION_US_EAST_1)
    +        cloudwatch_client = client("cloudwatch", region_name=AWS_REGION_US_EAST_1)
    +        logs_client = client("logs", region_name=AWS_REGION_US_EAST_1)
    +        s3_client = client("s3", region_name=AWS_REGION_US_EAST_1)
             s3_client.create_bucket(Bucket="test")
             logs_client.create_log_group(logGroupName="/log-group/test")
             cloudtrail_client.create_trail(
                 Name="test_trail",
                 S3BucketName="test",
    -            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION}:{DEFAULT_ACCOUNT_ID}:log-group:/log-group/test:*",
    +            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION_US_EAST_1}:{AWS_ACCOUNT_NUMBER}:log-group:/log-group/test:*",
             )
             logs_client.put_metric_filter(
                 logGroupName="/log-group/test",
    @@ -434,7 +413,9 @@ def test_cloudwatch_trail_with_log_group_with_metric_and_alarm_with_quotes(self)
                 Logs,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_US_EAST_1, AWS_REGION_EU_WEST_1]
    +        )
     
             from prowler.providers.common.models import Audit_Metadata
     
    @@ -474,22 +455,24 @@ def test_cloudwatch_trail_with_log_group_with_metric_and_alarm_with_quotes(self)
                     == "CloudWatch log group /log-group/test found with metric filter test-filter and alarms set."
                 )
                 assert result[0].resource_id == "/log-group/test"
    +            assert (
    +                result[0].resource_arn
    +                == f"arn:aws:logs:{AWS_REGION_US_EAST_1}:{AWS_ACCOUNT_NUMBER}:metric-filter/test-filter"
    +            )
    +            assert result[0].region == AWS_REGION_US_EAST_1
     
    -    @mock_logs
    -    @mock_cloudtrail
    -    @mock_cloudwatch
    -    @mock_s3
    +    @mock_aws
         def test_cloudwatch_trail_with_log_group_with_metric_and_alarm_with_newlines(self):
    -        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION)
    -        cloudwatch_client = client("cloudwatch", region_name=AWS_REGION)
    -        logs_client = client("logs", region_name=AWS_REGION)
    -        s3_client = client("s3", region_name=AWS_REGION)
    +        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION_US_EAST_1)
    +        cloudwatch_client = client("cloudwatch", region_name=AWS_REGION_US_EAST_1)
    +        logs_client = client("logs", region_name=AWS_REGION_US_EAST_1)
    +        s3_client = client("s3", region_name=AWS_REGION_US_EAST_1)
             s3_client.create_bucket(Bucket="test")
             logs_client.create_log_group(logGroupName="/log-group/test")
             cloudtrail_client.create_trail(
                 Name="test_trail",
                 S3BucketName="test",
    -            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION}:{DEFAULT_ACCOUNT_ID}:log-group:/log-group/test:*",
    +            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION_US_EAST_1}:{AWS_ACCOUNT_NUMBER}:log-group:/log-group/test:*",
             )
             logs_client.put_metric_filter(
                 logGroupName="/log-group/test",
    @@ -523,7 +506,9 @@ def test_cloudwatch_trail_with_log_group_with_metric_and_alarm_with_newlines(sel
                 Logs,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_US_EAST_1, AWS_REGION_EU_WEST_1]
    +        )
     
             from prowler.providers.common.models import Audit_Metadata
     
    @@ -563,3 +548,8 @@ def test_cloudwatch_trail_with_log_group_with_metric_and_alarm_with_newlines(sel
                     == "CloudWatch log group /log-group/test found with metric filter test-filter and alarms set."
                 )
                 assert result[0].resource_id == "/log-group/test"
    +            assert (
    +                result[0].resource_arn
    +                == f"arn:aws:logs:{AWS_REGION_US_EAST_1}:{AWS_ACCOUNT_NUMBER}:metric-filter/test-filter"
    +            )
    +            assert result[0].region == AWS_REGION_US_EAST_1
    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 e72e2952407..f807e7519db 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
    @@ -1,51 +1,19 @@
     from unittest import mock
     
    -from boto3 import client, session
    -from moto import mock_cloudtrail, mock_cloudwatch, mock_logs, mock_s3
    -from moto.core import DEFAULT_ACCOUNT_ID
    +from boto3 import client
    +from moto import mock_aws
     
    -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"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_ACCOUNT_ARN,
    +    AWS_ACCOUNT_NUMBER,
    +    AWS_REGION_EU_WEST_1,
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     
     class Test_cloudwatch_changes_to_network_gateways_alarm_configured:
    -    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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=["us-east-1", "eu-west-1"],
    -            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
    -
    -    @mock_logs
    -    @mock_cloudtrail
    -    @mock_cloudwatch
    +    @mock_aws
         def test_cloudwatch_no_log_groups(self):
             from prowler.providers.aws.services.cloudtrail.cloudtrail_service import (
                 Cloudtrail,
    @@ -55,7 +23,9 @@ def test_cloudwatch_no_log_groups(self):
                 Logs,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             from prowler.providers.common.models import Audit_Metadata
     
    @@ -94,15 +64,14 @@ def test_cloudwatch_no_log_groups(self):
                     result[0].status_extended
                     == "No CloudWatch log groups found with metric filters or alarms associated."
                 )
    -            assert result[0].resource_id == current_audit_info.audited_account
    +            assert result[0].resource_id == AWS_ACCOUNT_NUMBER
    +            assert result[0].resource_arn == AWS_ACCOUNT_ARN
    +            assert result[0].region == AWS_REGION_EU_WEST_1
     
    -    @mock_logs
    -    @mock_cloudtrail
    -    @mock_cloudwatch
    -    @mock_s3
    +    @mock_aws
         def test_cloudwatch_trail_no_log_group(self):
    -        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION)
    -        s3_client = client("s3", region_name=AWS_REGION)
    +        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION_US_EAST_1)
    +        s3_client = client("s3", region_name=AWS_REGION_US_EAST_1)
             s3_client.create_bucket(Bucket="test")
             cloudtrail_client.create_trail(Name="test_trail", S3BucketName="test")
     
    @@ -114,7 +83,9 @@ def test_cloudwatch_trail_no_log_group(self):
                 Logs,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             from prowler.providers.common.models import Audit_Metadata
     
    @@ -153,22 +124,21 @@ def test_cloudwatch_trail_no_log_group(self):
                     result[0].status_extended
                     == "No CloudWatch log groups found with metric filters or alarms associated."
                 )
    -            assert result[0].resource_id == current_audit_info.audited_account
    +            assert result[0].resource_id == AWS_ACCOUNT_NUMBER
    +            assert result[0].resource_arn == AWS_ACCOUNT_ARN
    +            assert result[0].region == AWS_REGION_EU_WEST_1
     
    -    @mock_logs
    -    @mock_cloudtrail
    -    @mock_cloudwatch
    -    @mock_s3
    +    @mock_aws
         def test_cloudwatch_trail_with_log_group(self):
    -        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION)
    -        logs_client = client("logs", region_name=AWS_REGION)
    -        s3_client = client("s3", region_name=AWS_REGION)
    +        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION_US_EAST_1)
    +        logs_client = client("logs", region_name=AWS_REGION_US_EAST_1)
    +        s3_client = client("s3", region_name=AWS_REGION_US_EAST_1)
             s3_client.create_bucket(Bucket="test")
             logs_client.create_log_group(logGroupName="/log-group/test")
             cloudtrail_client.create_trail(
                 Name="test_trail",
                 S3BucketName="test",
    -            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION}:{DEFAULT_ACCOUNT_ID}:log-group:/log-group/test:*",
    +            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION_US_EAST_1}:{AWS_ACCOUNT_NUMBER}:log-group:/log-group/test:*",
             )
     
             from prowler.providers.aws.services.cloudtrail.cloudtrail_service import (
    @@ -179,7 +149,9 @@ def test_cloudwatch_trail_with_log_group(self):
                 Logs,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             from prowler.providers.common.models import Audit_Metadata
     
    @@ -218,22 +190,21 @@ def test_cloudwatch_trail_with_log_group(self):
                     result[0].status_extended
                     == "No CloudWatch log groups found with metric filters or alarms associated."
                 )
    -            assert result[0].resource_id == current_audit_info.audited_account
    +            assert result[0].resource_id == AWS_ACCOUNT_NUMBER
    +            assert result[0].resource_arn == AWS_ACCOUNT_ARN
    +            assert result[0].region == AWS_REGION_EU_WEST_1
     
    -    @mock_logs
    -    @mock_cloudtrail
    -    @mock_cloudwatch
    -    @mock_s3
    +    @mock_aws
         def test_cloudwatch_trail_with_log_group_with_metric(self):
    -        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION)
    -        logs_client = client("logs", region_name=AWS_REGION)
    -        s3_client = client("s3", region_name=AWS_REGION)
    +        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION_US_EAST_1)
    +        logs_client = client("logs", region_name=AWS_REGION_US_EAST_1)
    +        s3_client = client("s3", region_name=AWS_REGION_US_EAST_1)
             s3_client.create_bucket(Bucket="test")
             logs_client.create_log_group(logGroupName="/log-group/test")
             cloudtrail_client.create_trail(
                 Name="test_trail",
                 S3BucketName="test",
    -            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION}:{DEFAULT_ACCOUNT_ID}:log-group:/log-group/test:*",
    +            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION_US_EAST_1}:{AWS_ACCOUNT_NUMBER}:log-group:/log-group/test:*",
             )
             logs_client.put_metric_filter(
                 logGroupName="/log-group/test",
    @@ -256,7 +227,9 @@ def test_cloudwatch_trail_with_log_group_with_metric(self):
                 Logs,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             from prowler.providers.common.models import Audit_Metadata
     
    @@ -296,22 +269,24 @@ def test_cloudwatch_trail_with_log_group_with_metric(self):
                     == "CloudWatch log group /log-group/test found with metric filter test-filter but no alarms associated."
                 )
                 assert result[0].resource_id == "/log-group/test"
    +            assert (
    +                result[0].resource_arn
    +                == f"arn:aws:logs:{AWS_REGION_US_EAST_1}:{AWS_ACCOUNT_NUMBER}:metric-filter/test-filter"
    +            )
    +            assert result[0].region == AWS_REGION_US_EAST_1
     
    -    @mock_logs
    -    @mock_cloudtrail
    -    @mock_cloudwatch
    -    @mock_s3
    +    @mock_aws
         def test_cloudwatch_trail_with_log_group_with_metric_and_alarm(self):
    -        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION)
    -        cloudwatch_client = client("cloudwatch", region_name=AWS_REGION)
    -        logs_client = client("logs", region_name=AWS_REGION)
    -        s3_client = client("s3", region_name=AWS_REGION)
    +        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION_US_EAST_1)
    +        cloudwatch_client = client("cloudwatch", region_name=AWS_REGION_US_EAST_1)
    +        logs_client = client("logs", region_name=AWS_REGION_US_EAST_1)
    +        s3_client = client("s3", region_name=AWS_REGION_US_EAST_1)
             s3_client.create_bucket(Bucket="test")
             logs_client.create_log_group(logGroupName="/log-group/test")
             cloudtrail_client.create_trail(
                 Name="test_trail",
                 S3BucketName="test",
    -            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION}:{DEFAULT_ACCOUNT_ID}:log-group:/log-group/test:*",
    +            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION_US_EAST_1}:{AWS_ACCOUNT_NUMBER}:log-group:/log-group/test:*",
             )
             logs_client.put_metric_filter(
                 logGroupName="/log-group/test",
    @@ -345,7 +320,9 @@ def test_cloudwatch_trail_with_log_group_with_metric_and_alarm(self):
                 Logs,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             from prowler.providers.common.models import Audit_Metadata
     
    @@ -385,22 +362,24 @@ def test_cloudwatch_trail_with_log_group_with_metric_and_alarm(self):
                     == "CloudWatch log group /log-group/test found with metric filter test-filter and alarms set."
                 )
                 assert result[0].resource_id == "/log-group/test"
    +            assert (
    +                result[0].resource_arn
    +                == f"arn:aws:logs:{AWS_REGION_US_EAST_1}:{AWS_ACCOUNT_NUMBER}:metric-filter/test-filter"
    +            )
    +            assert result[0].region == AWS_REGION_US_EAST_1
     
    -    @mock_logs
    -    @mock_cloudtrail
    -    @mock_cloudwatch
    -    @mock_s3
    +    @mock_aws
         def test_cloudwatch_trail_with_log_group_with_metric_and_alarm_with_quotes(self):
    -        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION)
    -        cloudwatch_client = client("cloudwatch", region_name=AWS_REGION)
    -        logs_client = client("logs", region_name=AWS_REGION)
    -        s3_client = client("s3", region_name=AWS_REGION)
    +        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION_US_EAST_1)
    +        cloudwatch_client = client("cloudwatch", region_name=AWS_REGION_US_EAST_1)
    +        logs_client = client("logs", region_name=AWS_REGION_US_EAST_1)
    +        s3_client = client("s3", region_name=AWS_REGION_US_EAST_1)
             s3_client.create_bucket(Bucket="test")
             logs_client.create_log_group(logGroupName="/log-group/test")
             cloudtrail_client.create_trail(
                 Name="test_trail",
                 S3BucketName="test",
    -            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION}:{DEFAULT_ACCOUNT_ID}:log-group:/log-group/test:*",
    +            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION_US_EAST_1}:{AWS_ACCOUNT_NUMBER}:log-group:/log-group/test:*",
             )
             logs_client.put_metric_filter(
                 logGroupName="/log-group/test",
    @@ -434,7 +413,9 @@ def test_cloudwatch_trail_with_log_group_with_metric_and_alarm_with_quotes(self)
                 Logs,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             from prowler.providers.common.models import Audit_Metadata
     
    @@ -474,22 +455,24 @@ def test_cloudwatch_trail_with_log_group_with_metric_and_alarm_with_quotes(self)
                     == "CloudWatch log group /log-group/test found with metric filter test-filter and alarms set."
                 )
                 assert result[0].resource_id == "/log-group/test"
    +            assert (
    +                result[0].resource_arn
    +                == f"arn:aws:logs:{AWS_REGION_US_EAST_1}:{AWS_ACCOUNT_NUMBER}:metric-filter/test-filter"
    +            )
    +            assert result[0].region == AWS_REGION_US_EAST_1
     
    -    @mock_logs
    -    @mock_cloudtrail
    -    @mock_cloudwatch
    -    @mock_s3
    +    @mock_aws
         def test_cloudwatch_trail_with_log_group_with_metric_and_alarm_with_newlines(self):
    -        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION)
    -        cloudwatch_client = client("cloudwatch", region_name=AWS_REGION)
    -        logs_client = client("logs", region_name=AWS_REGION)
    -        s3_client = client("s3", region_name=AWS_REGION)
    +        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION_US_EAST_1)
    +        cloudwatch_client = client("cloudwatch", region_name=AWS_REGION_US_EAST_1)
    +        logs_client = client("logs", region_name=AWS_REGION_US_EAST_1)
    +        s3_client = client("s3", region_name=AWS_REGION_US_EAST_1)
             s3_client.create_bucket(Bucket="test")
             logs_client.create_log_group(logGroupName="/log-group/test")
             cloudtrail_client.create_trail(
                 Name="test_trail",
                 S3BucketName="test",
    -            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION}:{DEFAULT_ACCOUNT_ID}:log-group:/log-group/test:*",
    +            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION_US_EAST_1}:{AWS_ACCOUNT_NUMBER}:log-group:/log-group/test:*",
             )
             logs_client.put_metric_filter(
                 logGroupName="/log-group/test",
    @@ -523,7 +506,9 @@ def test_cloudwatch_trail_with_log_group_with_metric_and_alarm_with_newlines(sel
                 Logs,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             from prowler.providers.common.models import Audit_Metadata
     
    @@ -563,3 +548,8 @@ def test_cloudwatch_trail_with_log_group_with_metric_and_alarm_with_newlines(sel
                     == "CloudWatch log group /log-group/test found with metric filter test-filter and alarms set."
                 )
                 assert result[0].resource_id == "/log-group/test"
    +            assert (
    +                result[0].resource_arn
    +                == f"arn:aws:logs:{AWS_REGION_US_EAST_1}:{AWS_ACCOUNT_NUMBER}:metric-filter/test-filter"
    +            )
    +            assert result[0].region == AWS_REGION_US_EAST_1
    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 7361219cef8..2e8a4264cef 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
    @@ -1,51 +1,19 @@
     from unittest import mock
     
    -from boto3 import client, session
    -from moto import mock_cloudtrail, mock_cloudwatch, mock_logs, mock_s3
    -from moto.core import DEFAULT_ACCOUNT_ID
    +from boto3 import client
    +from moto import mock_aws
     
    -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"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_ACCOUNT_ARN,
    +    AWS_ACCOUNT_NUMBER,
    +    AWS_REGION_EU_WEST_1,
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     
     class Test_cloudwatch_changes_to_network_route_tables_alarm_configured:
    -    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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=["us-east-1", "eu-west-1"],
    -            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
    -
    -    @mock_logs
    -    @mock_cloudtrail
    -    @mock_cloudwatch
    +    @mock_aws
         def test_cloudwatch_no_log_groups(self):
             from prowler.providers.aws.services.cloudtrail.cloudtrail_service import (
                 Cloudtrail,
    @@ -55,7 +23,9 @@ def test_cloudwatch_no_log_groups(self):
                 Logs,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             from prowler.providers.common.models import Audit_Metadata
     
    @@ -94,15 +64,14 @@ def test_cloudwatch_no_log_groups(self):
                     result[0].status_extended
                     == "No CloudWatch log groups found with metric filters or alarms associated."
                 )
    -            assert result[0].resource_id == current_audit_info.audited_account
    +            assert result[0].resource_id == AWS_ACCOUNT_NUMBER
    +            assert result[0].resource_arn == AWS_ACCOUNT_ARN
    +            assert result[0].region == AWS_REGION_EU_WEST_1
     
    -    @mock_logs
    -    @mock_cloudtrail
    -    @mock_cloudwatch
    -    @mock_s3
    +    @mock_aws
         def test_cloudwatch_trail_no_log_group(self):
    -        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION)
    -        s3_client = client("s3", region_name=AWS_REGION)
    +        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION_US_EAST_1)
    +        s3_client = client("s3", region_name=AWS_REGION_US_EAST_1)
             s3_client.create_bucket(Bucket="test")
             cloudtrail_client.create_trail(Name="test_trail", S3BucketName="test")
     
    @@ -114,7 +83,9 @@ def test_cloudwatch_trail_no_log_group(self):
                 Logs,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             from prowler.providers.common.models import Audit_Metadata
     
    @@ -153,22 +124,21 @@ def test_cloudwatch_trail_no_log_group(self):
                     result[0].status_extended
                     == "No CloudWatch log groups found with metric filters or alarms associated."
                 )
    -            assert result[0].resource_id == current_audit_info.audited_account
    +            assert result[0].resource_id == AWS_ACCOUNT_NUMBER
    +            assert result[0].resource_arn == AWS_ACCOUNT_ARN
    +            assert result[0].region == AWS_REGION_EU_WEST_1
     
    -    @mock_logs
    -    @mock_cloudtrail
    -    @mock_cloudwatch
    -    @mock_s3
    +    @mock_aws
         def test_cloudwatch_trail_with_log_group(self):
    -        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION)
    -        logs_client = client("logs", region_name=AWS_REGION)
    -        s3_client = client("s3", region_name=AWS_REGION)
    +        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION_US_EAST_1)
    +        logs_client = client("logs", region_name=AWS_REGION_US_EAST_1)
    +        s3_client = client("s3", region_name=AWS_REGION_US_EAST_1)
             s3_client.create_bucket(Bucket="test")
             logs_client.create_log_group(logGroupName="/log-group/test")
             cloudtrail_client.create_trail(
                 Name="test_trail",
                 S3BucketName="test",
    -            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION}:{DEFAULT_ACCOUNT_ID}:log-group:/log-group/test:*",
    +            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION_US_EAST_1}:{AWS_ACCOUNT_NUMBER}:log-group:/log-group/test:*",
             )
     
             from prowler.providers.aws.services.cloudtrail.cloudtrail_service import (
    @@ -179,7 +149,9 @@ def test_cloudwatch_trail_with_log_group(self):
                 Logs,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             from prowler.providers.common.models import Audit_Metadata
     
    @@ -218,27 +190,26 @@ def test_cloudwatch_trail_with_log_group(self):
                     result[0].status_extended
                     == "No CloudWatch log groups found with metric filters or alarms associated."
                 )
    -            assert result[0].resource_id == current_audit_info.audited_account
    +            assert result[0].resource_id == AWS_ACCOUNT_NUMBER
    +            assert result[0].resource_arn == AWS_ACCOUNT_ARN
    +            assert result[0].region == AWS_REGION_EU_WEST_1
     
    -    @mock_logs
    -    @mock_cloudtrail
    -    @mock_cloudwatch
    -    @mock_s3
    +    @mock_aws
         def test_cloudwatch_trail_with_log_group_with_metric(self):
    -        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION)
    -        logs_client = client("logs", region_name=AWS_REGION)
    -        s3_client = client("s3", region_name=AWS_REGION)
    +        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION_US_EAST_1)
    +        logs_client = client("logs", region_name=AWS_REGION_US_EAST_1)
    +        s3_client = client("s3", region_name=AWS_REGION_US_EAST_1)
             s3_client.create_bucket(Bucket="test")
             logs_client.create_log_group(logGroupName="/log-group/test")
             cloudtrail_client.create_trail(
                 Name="test_trail",
                 S3BucketName="test",
    -            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION}:{DEFAULT_ACCOUNT_ID}:log-group:/log-group/test:*",
    +            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION_US_EAST_1}:{AWS_ACCOUNT_NUMBER}:log-group:/log-group/test:*",
             )
             logs_client.put_metric_filter(
                 logGroupName="/log-group/test",
                 filterName="test-filter",
    -            filterPattern="{($.eventName = CreateRoute) || ($.eventName = CreateRouteTable) || ($.eventName = ReplaceRoute) || ($.eventName = ReplaceRouteTableAssociation)|| ($.eventName = DeleteRouteTable) || ($.eventName = DeleteRoute) || ($.eventName = DisassociateRouteTable) }",
    +            filterPattern="{($.eventSource = ec2.amazonaws.com) && ($.eventName = CreateRoute) || ($.eventName = CreateRouteTable) || ($.eventName = ReplaceRoute) || ($.eventName = ReplaceRouteTableAssociation)|| ($.eventName = DeleteRouteTable) || ($.eventName = DeleteRoute) || ($.eventName = DisassociateRouteTable) }",
                 metricTransformations=[
                     {
                         "metricName": "my-metric",
    @@ -256,7 +227,9 @@ def test_cloudwatch_trail_with_log_group_with_metric(self):
                 Logs,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             from prowler.providers.common.models import Audit_Metadata
     
    @@ -296,27 +269,29 @@ def test_cloudwatch_trail_with_log_group_with_metric(self):
                     == "CloudWatch log group /log-group/test found with metric filter test-filter but no alarms associated."
                 )
                 assert result[0].resource_id == "/log-group/test"
    +            assert (
    +                result[0].resource_arn
    +                == f"arn:aws:logs:{AWS_REGION_US_EAST_1}:{AWS_ACCOUNT_NUMBER}:metric-filter/test-filter"
    +            )
    +            assert result[0].region == AWS_REGION_US_EAST_1
     
    -    @mock_logs
    -    @mock_cloudtrail
    -    @mock_cloudwatch
    -    @mock_s3
    +    @mock_aws
         def test_cloudwatch_trail_with_log_group_with_metric_and_alarm(self):
    -        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION)
    -        cloudwatch_client = client("cloudwatch", region_name=AWS_REGION)
    -        logs_client = client("logs", region_name=AWS_REGION)
    -        s3_client = client("s3", region_name=AWS_REGION)
    +        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION_US_EAST_1)
    +        cloudwatch_client = client("cloudwatch", region_name=AWS_REGION_US_EAST_1)
    +        logs_client = client("logs", region_name=AWS_REGION_US_EAST_1)
    +        s3_client = client("s3", region_name=AWS_REGION_US_EAST_1)
             s3_client.create_bucket(Bucket="test")
             logs_client.create_log_group(logGroupName="/log-group/test")
             cloudtrail_client.create_trail(
                 Name="test_trail",
                 S3BucketName="test",
    -            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION}:{DEFAULT_ACCOUNT_ID}:log-group:/log-group/test:*",
    +            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION_US_EAST_1}:{AWS_ACCOUNT_NUMBER}:log-group:/log-group/test:*",
             )
             logs_client.put_metric_filter(
                 logGroupName="/log-group/test",
                 filterName="test-filter",
    -            filterPattern="{($.eventName = CreateRoute) || ($.eventName = CreateRouteTable) || ($.eventName = ReplaceRoute) || ($.eventName = ReplaceRouteTableAssociation)|| ($.eventName = DeleteRouteTable) || ($.eventName = DeleteRoute) || ($.eventName = DisassociateRouteTable) }",
    +            filterPattern="{($.eventSource = ec2.amazonaws.com) && ($.eventName = CreateRoute) || ($.eventName = CreateRouteTable) || ($.eventName = ReplaceRoute) || ($.eventName = ReplaceRouteTableAssociation)|| ($.eventName = DeleteRouteTable) || ($.eventName = DeleteRoute) || ($.eventName = DisassociateRouteTable) }",
                 metricTransformations=[
                     {
                         "metricName": "my-metric",
    @@ -345,7 +320,9 @@ def test_cloudwatch_trail_with_log_group_with_metric_and_alarm(self):
                 Logs,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             from prowler.providers.common.models import Audit_Metadata
     
    @@ -385,27 +362,29 @@ def test_cloudwatch_trail_with_log_group_with_metric_and_alarm(self):
                     == "CloudWatch log group /log-group/test found with metric filter test-filter and alarms set."
                 )
                 assert result[0].resource_id == "/log-group/test"
    +            assert (
    +                result[0].resource_arn
    +                == f"arn:aws:logs:{AWS_REGION_US_EAST_1}:{AWS_ACCOUNT_NUMBER}:metric-filter/test-filter"
    +            )
    +            assert result[0].region == AWS_REGION_US_EAST_1
     
    -    @mock_logs
    -    @mock_cloudtrail
    -    @mock_cloudwatch
    -    @mock_s3
    +    @mock_aws
         def test_cloudwatch_trail_with_log_group_with_metric_and_alarm_with_quotes(self):
    -        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION)
    -        cloudwatch_client = client("cloudwatch", region_name=AWS_REGION)
    -        logs_client = client("logs", region_name=AWS_REGION)
    -        s3_client = client("s3", region_name=AWS_REGION)
    +        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION_US_EAST_1)
    +        cloudwatch_client = client("cloudwatch", region_name=AWS_REGION_US_EAST_1)
    +        logs_client = client("logs", region_name=AWS_REGION_US_EAST_1)
    +        s3_client = client("s3", region_name=AWS_REGION_US_EAST_1)
             s3_client.create_bucket(Bucket="test")
             logs_client.create_log_group(logGroupName="/log-group/test")
             cloudtrail_client.create_trail(
                 Name="test_trail",
                 S3BucketName="test",
    -            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION}:{DEFAULT_ACCOUNT_ID}:log-group:/log-group/test:*",
    +            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION_US_EAST_1}:{AWS_ACCOUNT_NUMBER}:log-group:/log-group/test:*",
             )
             logs_client.put_metric_filter(
                 logGroupName="/log-group/test",
                 filterName="test-filter",
    -            filterPattern='{($.eventName = "CreateRoute") || ($.eventName = "CreateRouteTable") || ($.eventName = "ReplaceRoute") || ($.eventName = "ReplaceRouteTableAssociation")|| ($.eventName = "DeleteRouteTable") || ($.eventName = "DeleteRoute") || ($.eventName = "DisassociateRouteTable") }',
    +            filterPattern='{($.eventSource = ec2.amazonaws.com) && ($.eventName = CreateRoute) || ($.eventName = "CreateRouteTable") || ($.eventName = "ReplaceRoute") || ($.eventName = "ReplaceRouteTableAssociation")|| ($.eventName = "DeleteRouteTable") || ($.eventName = "DeleteRoute") || ($.eventName = "DisassociateRouteTable") }',
                 metricTransformations=[
                     {
                         "metricName": "my-metric",
    @@ -434,7 +413,9 @@ def test_cloudwatch_trail_with_log_group_with_metric_and_alarm_with_quotes(self)
                 Logs,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             from prowler.providers.common.models import Audit_Metadata
     
    @@ -474,27 +455,29 @@ def test_cloudwatch_trail_with_log_group_with_metric_and_alarm_with_quotes(self)
                     == "CloudWatch log group /log-group/test found with metric filter test-filter and alarms set."
                 )
                 assert result[0].resource_id == "/log-group/test"
    +            assert (
    +                result[0].resource_arn
    +                == f"arn:aws:logs:{AWS_REGION_US_EAST_1}:{AWS_ACCOUNT_NUMBER}:metric-filter/test-filter"
    +            )
    +            assert result[0].region == AWS_REGION_US_EAST_1
     
    -    @mock_logs
    -    @mock_cloudtrail
    -    @mock_cloudwatch
    -    @mock_s3
    +    @mock_aws
         def test_cloudwatch_trail_with_log_group_with_metric_and_alarm_with_newlines(self):
    -        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION)
    -        cloudwatch_client = client("cloudwatch", region_name=AWS_REGION)
    -        logs_client = client("logs", region_name=AWS_REGION)
    -        s3_client = client("s3", region_name=AWS_REGION)
    +        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION_US_EAST_1)
    +        cloudwatch_client = client("cloudwatch", region_name=AWS_REGION_US_EAST_1)
    +        logs_client = client("logs", region_name=AWS_REGION_US_EAST_1)
    +        s3_client = client("s3", region_name=AWS_REGION_US_EAST_1)
             s3_client.create_bucket(Bucket="test")
             logs_client.create_log_group(logGroupName="/log-group/test")
             cloudtrail_client.create_trail(
                 Name="test_trail",
                 S3BucketName="test",
    -            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION}:{DEFAULT_ACCOUNT_ID}:log-group:/log-group/test:*",
    +            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION_US_EAST_1}:{AWS_ACCOUNT_NUMBER}:log-group:/log-group/test:*",
             )
             logs_client.put_metric_filter(
                 logGroupName="/log-group/test",
                 filterName="test-filter",
    -            filterPattern='{($.eventName = "CreateRoute") ||\n ($.eventName = "CreateRouteTable") ||\n ($.eventName = "ReplaceRoute") ||\n ($.eventName = "ReplaceRouteTableAssociation")||\n ($.eventName = "DeleteRouteTable") ||\n ($.eventName = "DeleteRoute") ||\n ($.eventName = "DisassociateRouteTable") }',
    +            filterPattern='{($.eventSource = ec2.amazonaws.com) && ($.eventName = CreateRoute) ||\n ($.eventName = "CreateRouteTable") ||\n ($.eventName = "ReplaceRoute") ||\n ($.eventName = "ReplaceRouteTableAssociation")||\n ($.eventName = "DeleteRouteTable") ||\n ($.eventName = "DeleteRoute") ||\n ($.eventName = "DisassociateRouteTable") }',
                 metricTransformations=[
                     {
                         "metricName": "my-metric",
    @@ -523,7 +506,9 @@ def test_cloudwatch_trail_with_log_group_with_metric_and_alarm_with_newlines(sel
                 Logs,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             from prowler.providers.common.models import Audit_Metadata
     
    @@ -563,3 +548,8 @@ def test_cloudwatch_trail_with_log_group_with_metric_and_alarm_with_newlines(sel
                     == "CloudWatch log group /log-group/test found with metric filter test-filter and alarms set."
                 )
                 assert result[0].resource_id == "/log-group/test"
    +            assert (
    +                result[0].resource_arn
    +                == f"arn:aws:logs:{AWS_REGION_US_EAST_1}:{AWS_ACCOUNT_NUMBER}:metric-filter/test-filter"
    +            )
    +            assert result[0].region == AWS_REGION_US_EAST_1
    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 ee3d906061a..89cabfa2e5d 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
    @@ -1,51 +1,19 @@
     from unittest import mock
     
    -from boto3 import client, session
    -from moto import mock_cloudtrail, mock_cloudwatch, mock_logs, mock_s3
    -from moto.core import DEFAULT_ACCOUNT_ID
    +from boto3 import client
    +from moto import mock_aws
     
    -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"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_ACCOUNT_ARN,
    +    AWS_ACCOUNT_NUMBER,
    +    AWS_REGION_EU_WEST_1,
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     
     class Test_cloudwatch_changes_to_vpcs_alarm_configured:
    -    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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=["us-east-1", "eu-west-1"],
    -            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
    -
    -    @mock_logs
    -    @mock_cloudtrail
    -    @mock_cloudwatch
    +    @mock_aws
         def test_cloudwatch_no_log_groups(self):
             from prowler.providers.aws.services.cloudtrail.cloudtrail_service import (
                 Cloudtrail,
    @@ -55,7 +23,9 @@ def test_cloudwatch_no_log_groups(self):
                 Logs,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             from prowler.providers.common.models import Audit_Metadata
     
    @@ -94,15 +64,14 @@ def test_cloudwatch_no_log_groups(self):
                     result[0].status_extended
                     == "No CloudWatch log groups found with metric filters or alarms associated."
                 )
    -            assert result[0].resource_id == current_audit_info.audited_account
    +            assert result[0].resource_id == AWS_ACCOUNT_NUMBER
    +            assert result[0].resource_arn == AWS_ACCOUNT_ARN
    +            assert result[0].region == AWS_REGION_EU_WEST_1
     
    -    @mock_logs
    -    @mock_cloudtrail
    -    @mock_cloudwatch
    -    @mock_s3
    +    @mock_aws
         def test_cloudwatch_trail_no_log_group(self):
    -        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION)
    -        s3_client = client("s3", region_name=AWS_REGION)
    +        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION_US_EAST_1)
    +        s3_client = client("s3", region_name=AWS_REGION_US_EAST_1)
             s3_client.create_bucket(Bucket="test")
             cloudtrail_client.create_trail(Name="test_trail", S3BucketName="test")
     
    @@ -114,7 +83,9 @@ def test_cloudwatch_trail_no_log_group(self):
                 Logs,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             from prowler.providers.common.models import Audit_Metadata
     
    @@ -153,22 +124,21 @@ def test_cloudwatch_trail_no_log_group(self):
                     result[0].status_extended
                     == "No CloudWatch log groups found with metric filters or alarms associated."
                 )
    -            assert result[0].resource_id == current_audit_info.audited_account
    +            assert result[0].resource_id == AWS_ACCOUNT_NUMBER
    +            assert result[0].resource_arn == AWS_ACCOUNT_ARN
    +            assert result[0].region == AWS_REGION_EU_WEST_1
     
    -    @mock_logs
    -    @mock_cloudtrail
    -    @mock_cloudwatch
    -    @mock_s3
    +    @mock_aws
         def test_cloudwatch_trail_with_log_group(self):
    -        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION)
    -        logs_client = client("logs", region_name=AWS_REGION)
    -        s3_client = client("s3", region_name=AWS_REGION)
    +        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION_US_EAST_1)
    +        logs_client = client("logs", region_name=AWS_REGION_US_EAST_1)
    +        s3_client = client("s3", region_name=AWS_REGION_US_EAST_1)
             s3_client.create_bucket(Bucket="test")
             logs_client.create_log_group(logGroupName="/log-group/test")
             cloudtrail_client.create_trail(
                 Name="test_trail",
                 S3BucketName="test",
    -            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION}:{DEFAULT_ACCOUNT_ID}:log-group:/log-group/test:*",
    +            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION_US_EAST_1}:{AWS_ACCOUNT_NUMBER}:log-group:/log-group/test:*",
             )
     
             from prowler.providers.aws.services.cloudtrail.cloudtrail_service import (
    @@ -179,7 +149,9 @@ def test_cloudwatch_trail_with_log_group(self):
                 Logs,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             from prowler.providers.common.models import Audit_Metadata
     
    @@ -218,22 +190,21 @@ def test_cloudwatch_trail_with_log_group(self):
                     result[0].status_extended
                     == "No CloudWatch log groups found with metric filters or alarms associated."
                 )
    -            assert result[0].resource_id == current_audit_info.audited_account
    +            assert result[0].resource_id == AWS_ACCOUNT_NUMBER
    +            assert result[0].resource_arn == AWS_ACCOUNT_ARN
    +            assert result[0].region == AWS_REGION_EU_WEST_1
     
    -    @mock_logs
    -    @mock_cloudtrail
    -    @mock_cloudwatch
    -    @mock_s3
    +    @mock_aws
         def test_cloudwatch_trail_with_log_group_with_metric(self):
    -        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION)
    -        logs_client = client("logs", region_name=AWS_REGION)
    -        s3_client = client("s3", region_name=AWS_REGION)
    +        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION_US_EAST_1)
    +        logs_client = client("logs", region_name=AWS_REGION_US_EAST_1)
    +        s3_client = client("s3", region_name=AWS_REGION_US_EAST_1)
             s3_client.create_bucket(Bucket="test")
             logs_client.create_log_group(logGroupName="/log-group/test")
             cloudtrail_client.create_trail(
                 Name="test_trail",
                 S3BucketName="test",
    -            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION}:{DEFAULT_ACCOUNT_ID}:log-group:/log-group/test:*",
    +            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION_US_EAST_1}:{AWS_ACCOUNT_NUMBER}:log-group:/log-group/test:*",
             )
             logs_client.put_metric_filter(
                 logGroupName="/log-group/test",
    @@ -256,7 +227,9 @@ def test_cloudwatch_trail_with_log_group_with_metric(self):
                 Logs,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             from prowler.providers.common.models import Audit_Metadata
     
    @@ -296,22 +269,24 @@ def test_cloudwatch_trail_with_log_group_with_metric(self):
                     == "CloudWatch log group /log-group/test found with metric filter test-filter but no alarms associated."
                 )
                 assert result[0].resource_id == "/log-group/test"
    +            assert (
    +                result[0].resource_arn
    +                == f"arn:aws:logs:{AWS_REGION_US_EAST_1}:{AWS_ACCOUNT_NUMBER}:metric-filter/test-filter"
    +            )
    +            assert result[0].region == AWS_REGION_US_EAST_1
     
    -    @mock_logs
    -    @mock_cloudtrail
    -    @mock_cloudwatch
    -    @mock_s3
    +    @mock_aws
         def test_cloudwatch_trail_with_log_group_with_metric_and_alarm(self):
    -        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION)
    -        cloudwatch_client = client("cloudwatch", region_name=AWS_REGION)
    -        logs_client = client("logs", region_name=AWS_REGION)
    -        s3_client = client("s3", region_name=AWS_REGION)
    +        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION_US_EAST_1)
    +        cloudwatch_client = client("cloudwatch", region_name=AWS_REGION_US_EAST_1)
    +        logs_client = client("logs", region_name=AWS_REGION_US_EAST_1)
    +        s3_client = client("s3", region_name=AWS_REGION_US_EAST_1)
             s3_client.create_bucket(Bucket="test")
             logs_client.create_log_group(logGroupName="/log-group/test")
             cloudtrail_client.create_trail(
                 Name="test_trail",
                 S3BucketName="test",
    -            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION}:{DEFAULT_ACCOUNT_ID}:log-group:/log-group/test:*",
    +            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION_US_EAST_1}:{AWS_ACCOUNT_NUMBER}:log-group:/log-group/test:*",
             )
             logs_client.put_metric_filter(
                 logGroupName="/log-group/test",
    @@ -345,7 +320,9 @@ def test_cloudwatch_trail_with_log_group_with_metric_and_alarm(self):
                 Logs,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             from prowler.providers.common.models import Audit_Metadata
     
    @@ -385,22 +362,24 @@ def test_cloudwatch_trail_with_log_group_with_metric_and_alarm(self):
                     == "CloudWatch log group /log-group/test found with metric filter test-filter and alarms set."
                 )
                 assert result[0].resource_id == "/log-group/test"
    +            assert (
    +                result[0].resource_arn
    +                == f"arn:aws:logs:{AWS_REGION_US_EAST_1}:{AWS_ACCOUNT_NUMBER}:metric-filter/test-filter"
    +            )
    +            assert result[0].region == AWS_REGION_US_EAST_1
     
    -    @mock_logs
    -    @mock_cloudtrail
    -    @mock_cloudwatch
    -    @mock_s3
    +    @mock_aws
         def test_cloudwatch_trail_with_log_group_with_metric_and_alarm_with_quotes(self):
    -        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION)
    -        cloudwatch_client = client("cloudwatch", region_name=AWS_REGION)
    -        logs_client = client("logs", region_name=AWS_REGION)
    -        s3_client = client("s3", region_name=AWS_REGION)
    +        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION_US_EAST_1)
    +        cloudwatch_client = client("cloudwatch", region_name=AWS_REGION_US_EAST_1)
    +        logs_client = client("logs", region_name=AWS_REGION_US_EAST_1)
    +        s3_client = client("s3", region_name=AWS_REGION_US_EAST_1)
             s3_client.create_bucket(Bucket="test")
             logs_client.create_log_group(logGroupName="/log-group/test")
             cloudtrail_client.create_trail(
                 Name="test_trail",
                 S3BucketName="test",
    -            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION}:{DEFAULT_ACCOUNT_ID}:log-group:/log-group/test:*",
    +            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION_US_EAST_1}:{AWS_ACCOUNT_NUMBER}:log-group:/log-group/test:*",
             )
             logs_client.put_metric_filter(
                 logGroupName="/log-group/test",
    @@ -434,7 +413,9 @@ def test_cloudwatch_trail_with_log_group_with_metric_and_alarm_with_quotes(self)
                 Logs,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             from prowler.providers.common.models import Audit_Metadata
     
    @@ -474,22 +455,24 @@ def test_cloudwatch_trail_with_log_group_with_metric_and_alarm_with_quotes(self)
                     == "CloudWatch log group /log-group/test found with metric filter test-filter and alarms set."
                 )
                 assert result[0].resource_id == "/log-group/test"
    +            assert (
    +                result[0].resource_arn
    +                == f"arn:aws:logs:{AWS_REGION_US_EAST_1}:{AWS_ACCOUNT_NUMBER}:metric-filter/test-filter"
    +            )
    +            assert result[0].region == AWS_REGION_US_EAST_1
     
    -    @mock_logs
    -    @mock_cloudtrail
    -    @mock_cloudwatch
    -    @mock_s3
    +    @mock_aws
         def test_cloudwatch_trail_with_log_group_with_metric_and_alarm_with_newlines(self):
    -        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION)
    -        cloudwatch_client = client("cloudwatch", region_name=AWS_REGION)
    -        logs_client = client("logs", region_name=AWS_REGION)
    -        s3_client = client("s3", region_name=AWS_REGION)
    +        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION_US_EAST_1)
    +        cloudwatch_client = client("cloudwatch", region_name=AWS_REGION_US_EAST_1)
    +        logs_client = client("logs", region_name=AWS_REGION_US_EAST_1)
    +        s3_client = client("s3", region_name=AWS_REGION_US_EAST_1)
             s3_client.create_bucket(Bucket="test")
             logs_client.create_log_group(logGroupName="/log-group/test")
             cloudtrail_client.create_trail(
                 Name="test_trail",
                 S3BucketName="test",
    -            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION}:{DEFAULT_ACCOUNT_ID}:log-group:/log-group/test:*",
    +            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION_US_EAST_1}:{AWS_ACCOUNT_NUMBER}:log-group:/log-group/test:*",
             )
             logs_client.put_metric_filter(
                 logGroupName="/log-group/test",
    @@ -523,7 +506,9 @@ def test_cloudwatch_trail_with_log_group_with_metric_and_alarm_with_newlines(sel
                 Logs,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             from prowler.providers.common.models import Audit_Metadata
     
    @@ -563,3 +548,8 @@ def test_cloudwatch_trail_with_log_group_with_metric_and_alarm_with_newlines(sel
                     == "CloudWatch log group /log-group/test found with metric filter test-filter and alarms set."
                 )
                 assert result[0].resource_id == "/log-group/test"
    +            assert (
    +                result[0].resource_arn
    +                == f"arn:aws:logs:{AWS_REGION_US_EAST_1}:{AWS_ACCOUNT_NUMBER}:metric-filter/test-filter"
    +            )
    +            assert result[0].region == AWS_REGION_US_EAST_1
    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 60c665730fb..96557868632 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
    @@ -1,52 +1,24 @@
     from unittest import mock
     
    -from boto3 import client, session
    -from moto import mock_iam
    +from boto3 import client
    +from moto import mock_aws
     
    -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"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_ACCOUNT_NUMBER,
    +    AWS_REGION_EU_WEST_1,
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     
     class Test_cloudwatch_cross_account_sharing_disabled:
    -    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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=["us-east-1", "eu-west-1"],
    -            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
    -
    -    @mock_iam
    +    @mock_aws
         def test_cloudwatch_without_cross_account_role(self):
             from prowler.providers.aws.services.iam.iam_service import IAM
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             from prowler.providers.common.models import Audit_Metadata
     
    @@ -81,17 +53,19 @@ def test_cloudwatch_without_cross_account_role(self):
                 )
                 assert result[0].resource_id == AWS_ACCOUNT_NUMBER
     
    -    @mock_iam
    +    @mock_aws
         def test_cloudwatch_log_group_with_cross_account_role(self):
             # Generate Logs Client
    -        iam_client = client("iam", region_name=AWS_REGION)
    +        iam_client = client("iam", region_name=AWS_REGION_US_EAST_1)
             # Request Logs group
             iam_client.create_role(
                 RoleName="CloudWatch-CrossAccountSharingRole", AssumeRolePolicyDocument="{}"
             )
             from prowler.providers.aws.services.iam.iam_service import IAM
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             from prowler.providers.common.models import Audit_Metadata
     
    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 df1d423a4e3..106c3094487 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
    @@ -1,51 +1,22 @@
     from unittest import mock
     
    -from boto3 import client, session
    -from moto import mock_logs
    +from boto3 import client
    +from moto import mock_aws
     
    -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"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_REGION_EU_WEST_1,
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     
     class Test_cloudwatch_log_group_kms_encryption_enabled:
    -    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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=["us-east-1", "eu-west-1"],
    -            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
    -
         def test_cloudwatch_no_log_groups(self):
             from prowler.providers.aws.services.cloudwatch.cloudwatch_service import Logs
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             from prowler.providers.common.models import Audit_Metadata
     
    @@ -74,10 +45,10 @@ def test_cloudwatch_no_log_groups(self):
     
                 assert len(result) == 0
     
    -    @mock_logs
    +    @mock_aws
         def test_cloudwatch_log_group_without_kms_key(self):
             # Generate Logs Client
    -        logs_client = client("logs", region_name=AWS_REGION)
    +        logs_client = client("logs", region_name=AWS_REGION_US_EAST_1)
             # Request Logs group
             logs_client.create_log_group(
                 logGroupName="test",
    @@ -85,7 +56,9 @@ def test_cloudwatch_log_group_without_kms_key(self):
     
             from prowler.providers.aws.services.cloudwatch.cloudwatch_service import Logs
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             from prowler.providers.common.models import Audit_Metadata
     
    @@ -120,16 +93,18 @@ def test_cloudwatch_log_group_without_kms_key(self):
                 )
                 assert result[0].resource_id == "test"
     
    -    @mock_logs
    +    @mock_aws
         def test_cloudwatch_log_group_with_kms_key(self):
             # Generate Logs Client
    -        logs_client = client("logs", region_name=AWS_REGION)
    +        logs_client = client("logs", region_name=AWS_REGION_US_EAST_1)
             # Request Logs group
             logs_client.create_log_group(logGroupName="test", kmsKeyId="test_kms_id")
     
             from prowler.providers.aws.services.cloudwatch.cloudwatch_service import Logs
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             from prowler.providers.common.models import Audit_Metadata
     
    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 a409e5535fc..eeb6720c01b 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
    @@ -1,53 +1,24 @@
     from re import search
     from unittest import mock
     
    -from boto3 import client, session
    -from moto import mock_logs
    +from boto3 import client
    +from moto import mock_aws
     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"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_REGION_EU_WEST_1,
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     
     class Test_cloudwatch_log_group_no_secrets_in_logs:
    -    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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=["us-east-1", "eu-west-1"],
    -            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
    -
         def test_cloudwatch_no_log_groups(self):
             from prowler.providers.aws.services.cloudwatch.cloudwatch_service import Logs
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             from prowler.providers.common.models import Audit_Metadata
     
    @@ -76,10 +47,10 @@ def test_cloudwatch_no_log_groups(self):
     
                 assert len(result) == 0
     
    -    @mock_logs
    +    @mock_aws
         def test_cloudwatch_log_group_without_secrets(self):
             # Generate Logs Client
    -        logs_client = client("logs", region_name=AWS_REGION)
    +        logs_client = client("logs", region_name=AWS_REGION_US_EAST_1)
             # Request Logs group
             logs_client.create_log_group(logGroupName="test")
             logs_client.create_log_stream(logGroupName="test", logStreamName="test stream")
    @@ -95,7 +66,9 @@ def test_cloudwatch_log_group_without_secrets(self):
             )
             from prowler.providers.aws.services.cloudwatch.cloudwatch_service import Logs
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             from prowler.providers.common.models import Audit_Metadata
     
    @@ -127,10 +100,10 @@ def test_cloudwatch_log_group_without_secrets(self):
                 assert result[0].status_extended == "No secrets found in test log group."
                 assert result[0].resource_id == "test"
     
    -    @mock_logs
    +    @mock_aws
         def test_cloudwatch_log_group_with_secrets(self):
             # Generate Logs Client
    -        logs_client = client("logs", region_name=AWS_REGION)
    +        logs_client = client("logs", region_name=AWS_REGION_US_EAST_1)
             # Request Logs group
             logs_client.create_log_group(logGroupName="test")
             logs_client.create_log_stream(logGroupName="test", logStreamName="test stream")
    @@ -146,7 +119,9 @@ def test_cloudwatch_log_group_with_secrets(self):
             )
             from prowler.providers.aws.services.cloudwatch.cloudwatch_service import Logs
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             from prowler.providers.common.models import Audit_Metadata
     
    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 17aaac34ed6..ba77b98489c 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
    @@ -1,51 +1,23 @@
     from unittest import mock
     
    -from boto3 import client, session
    -from moto import mock_logs
    +from boto3 import client
    +from moto import mock_aws
     
    -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"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_ACCOUNT_NUMBER,
    +    AWS_REGION_EU_WEST_1,
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     
     class Test_cloudwatch_log_group_retention_policy_specific_days_enabled:
    -    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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=["us-east-1", "eu-west-1"],
    -            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
    -
         def test_cloudwatch_no_log_groups(self):
             from prowler.providers.aws.services.cloudwatch.cloudwatch_service import Logs
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
             current_audit_info.audit_config = {"log_group_retention_days": 365}
     
             from prowler.providers.common.models import Audit_Metadata
    @@ -75,17 +47,19 @@ def test_cloudwatch_no_log_groups(self):
     
                 assert len(result) == 0
     
    -    @mock_logs
    +    @mock_aws
         def test_cloudwatch_log_group_without_retention_days_never_expires(self):
             # Generate Logs Client
    -        logs_client = client("logs", region_name=AWS_REGION)
    +        logs_client = client("logs", region_name=AWS_REGION_US_EAST_1)
             # Request Logs group
             logs_client.create_log_group(
                 logGroupName="test",
             )
             from prowler.providers.aws.services.cloudwatch.cloudwatch_service import Logs
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
             current_audit_info.audit_config = {"log_group_retention_days": 365}
     
             from prowler.providers.common.models import Audit_Metadata
    @@ -122,14 +96,14 @@ def test_cloudwatch_log_group_without_retention_days_never_expires(self):
                 assert result[0].resource_id == "test"
                 assert (
                     result[0].resource_arn
    -                == f"arn:aws:logs:{AWS_REGION}:{AWS_ACCOUNT_NUMBER}:log-group:test"
    +                == f"arn:aws:logs:{AWS_REGION_US_EAST_1}:{AWS_ACCOUNT_NUMBER}:log-group:test"
                 )
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_US_EAST_1
     
    -    @mock_logs
    +    @mock_aws
         def test_cloudwatch_log_group_with_compliant_retention_days(self):
             # Generate Logs Client
    -        logs_client = client("logs", region_name=AWS_REGION)
    +        logs_client = client("logs", region_name=AWS_REGION_US_EAST_1)
             # Request Logs group
             logs_client.create_log_group(
                 logGroupName="test",
    @@ -137,7 +111,9 @@ def test_cloudwatch_log_group_with_compliant_retention_days(self):
             logs_client.put_retention_policy(logGroupName="test", retentionInDays=400)
             from prowler.providers.aws.services.cloudwatch.cloudwatch_service import Logs
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
             current_audit_info.audit_config = {"log_group_retention_days": 365}
     
             from prowler.providers.common.models import Audit_Metadata
    @@ -174,14 +150,14 @@ def test_cloudwatch_log_group_with_compliant_retention_days(self):
                 assert result[0].resource_id == "test"
                 assert (
                     result[0].resource_arn
    -                == f"arn:aws:logs:{AWS_REGION}:{AWS_ACCOUNT_NUMBER}:log-group:test"
    +                == f"arn:aws:logs:{AWS_REGION_US_EAST_1}:{AWS_ACCOUNT_NUMBER}:log-group:test"
                 )
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_US_EAST_1
     
    -    @mock_logs
    +    @mock_aws
         def test_cloudwatch_log_group_with_no_compliant_retention_days(self):
             # Generate Logs Client
    -        logs_client = client("logs", region_name=AWS_REGION)
    +        logs_client = client("logs", region_name=AWS_REGION_US_EAST_1)
             # Request Logs group
             logs_client.create_log_group(
                 logGroupName="test",
    @@ -189,7 +165,9 @@ def test_cloudwatch_log_group_with_no_compliant_retention_days(self):
             logs_client.put_retention_policy(logGroupName="test", retentionInDays=7)
             from prowler.providers.aws.services.cloudwatch.cloudwatch_service import Logs
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
             current_audit_info.audit_config = {"log_group_retention_days": 365}
     
             from prowler.providers.common.models import Audit_Metadata
    @@ -226,6 +204,6 @@ def test_cloudwatch_log_group_with_no_compliant_retention_days(self):
                 assert result[0].resource_id == "test"
                 assert (
                     result[0].resource_arn
    -                == f"arn:aws:logs:{AWS_REGION}:{AWS_ACCOUNT_NUMBER}:log-group:test"
    +                == f"arn:aws:logs:{AWS_REGION_US_EAST_1}:{AWS_ACCOUNT_NUMBER}:log-group:test"
                 )
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_US_EAST_1
    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 7710fbd71c1..d51e206b9e4 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
    @@ -1,51 +1,19 @@
     from unittest import mock
     
    -from boto3 import client, session
    -from moto import mock_cloudtrail, mock_cloudwatch, mock_logs, mock_s3
    -from moto.core import DEFAULT_ACCOUNT_ID
    +from boto3 import client
    +from moto import mock_aws
     
    -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"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_ACCOUNT_ARN,
    +    AWS_ACCOUNT_NUMBER,
    +    AWS_REGION_EU_WEST_1,
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     
     class Test_cloudwatch_log_metric_filter_and_alarm_for_aws_config_configuration_changes_enabled:
    -    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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=["us-east-1", "eu-west-1"],
    -            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
    -
    -    @mock_logs
    -    @mock_cloudtrail
    -    @mock_cloudwatch
    +    @mock_aws
         def test_cloudwatch_no_log_groups(self):
             from prowler.providers.aws.services.cloudtrail.cloudtrail_service import (
                 Cloudtrail,
    @@ -55,7 +23,9 @@ def test_cloudwatch_no_log_groups(self):
                 Logs,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             from prowler.providers.common.models import Audit_Metadata
     
    @@ -96,15 +66,14 @@ def test_cloudwatch_no_log_groups(self):
                     result[0].status_extended
                     == "No CloudWatch log groups found with metric filters or alarms associated."
                 )
    -            assert result[0].resource_id == current_audit_info.audited_account
    +            assert result[0].resource_id == AWS_ACCOUNT_NUMBER
    +            assert result[0].resource_arn == AWS_ACCOUNT_ARN
    +            assert result[0].region == AWS_REGION_EU_WEST_1
     
    -    @mock_logs
    -    @mock_cloudtrail
    -    @mock_cloudwatch
    -    @mock_s3
    +    @mock_aws
         def test_cloudwatch_trail_no_log_group(self):
    -        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION)
    -        s3_client = client("s3", region_name=AWS_REGION)
    +        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION_US_EAST_1)
    +        s3_client = client("s3", region_name=AWS_REGION_US_EAST_1)
             s3_client.create_bucket(Bucket="test")
             cloudtrail_client.create_trail(Name="test_trail", S3BucketName="test")
     
    @@ -116,7 +85,9 @@ def test_cloudwatch_trail_no_log_group(self):
                 Logs,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             from prowler.providers.common.models import Audit_Metadata
     
    @@ -157,22 +128,21 @@ def test_cloudwatch_trail_no_log_group(self):
                     result[0].status_extended
                     == "No CloudWatch log groups found with metric filters or alarms associated."
                 )
    -            assert result[0].resource_id == current_audit_info.audited_account
    +            assert result[0].resource_id == AWS_ACCOUNT_NUMBER
    +            assert result[0].resource_arn == AWS_ACCOUNT_ARN
    +            assert result[0].region == AWS_REGION_EU_WEST_1
     
    -    @mock_logs
    -    @mock_cloudtrail
    -    @mock_cloudwatch
    -    @mock_s3
    +    @mock_aws
         def test_cloudwatch_trail_with_log_group(self):
    -        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION)
    -        logs_client = client("logs", region_name=AWS_REGION)
    -        s3_client = client("s3", region_name=AWS_REGION)
    +        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION_US_EAST_1)
    +        logs_client = client("logs", region_name=AWS_REGION_US_EAST_1)
    +        s3_client = client("s3", region_name=AWS_REGION_US_EAST_1)
             s3_client.create_bucket(Bucket="test")
             logs_client.create_log_group(logGroupName="/log-group/test")
             cloudtrail_client.create_trail(
                 Name="test_trail",
                 S3BucketName="test",
    -            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION}:{DEFAULT_ACCOUNT_ID}:log-group:/log-group/test:*",
    +            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION_EU_WEST_1}:{AWS_ACCOUNT_NUMBER}:log-group:/log-group/test:*",
             )
     
             from prowler.providers.aws.services.cloudtrail.cloudtrail_service import (
    @@ -183,7 +153,9 @@ def test_cloudwatch_trail_with_log_group(self):
                 Logs,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             from prowler.providers.common.models import Audit_Metadata
     
    @@ -224,22 +196,21 @@ def test_cloudwatch_trail_with_log_group(self):
                     result[0].status_extended
                     == "No CloudWatch log groups found with metric filters or alarms associated."
                 )
    -            assert result[0].resource_id == current_audit_info.audited_account
    +            assert result[0].resource_id == AWS_ACCOUNT_NUMBER
    +            assert result[0].resource_arn == AWS_ACCOUNT_ARN
    +            assert result[0].region == AWS_REGION_EU_WEST_1
     
    -    @mock_logs
    -    @mock_cloudtrail
    -    @mock_cloudwatch
    -    @mock_s3
    +    @mock_aws
         def test_cloudwatch_trail_with_log_group_with_metric(self):
    -        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION)
    -        logs_client = client("logs", region_name=AWS_REGION)
    -        s3_client = client("s3", region_name=AWS_REGION)
    +        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION_US_EAST_1)
    +        logs_client = client("logs", region_name=AWS_REGION_US_EAST_1)
    +        s3_client = client("s3", region_name=AWS_REGION_US_EAST_1)
             s3_client.create_bucket(Bucket="test")
             logs_client.create_log_group(logGroupName="/log-group/test")
             cloudtrail_client.create_trail(
                 Name="test_trail",
                 S3BucketName="test",
    -            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION}:{DEFAULT_ACCOUNT_ID}:log-group:/log-group/test:*",
    +            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION_EU_WEST_1}:{AWS_ACCOUNT_NUMBER}:log-group:/log-group/test:*",
             )
             logs_client.put_metric_filter(
                 logGroupName="/log-group/test",
    @@ -262,7 +233,9 @@ def test_cloudwatch_trail_with_log_group_with_metric(self):
                 Logs,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             from prowler.providers.common.models import Audit_Metadata
     
    @@ -304,22 +277,24 @@ def test_cloudwatch_trail_with_log_group_with_metric(self):
                     == "CloudWatch log group /log-group/test found with metric filter test-filter but no alarms associated."
                 )
                 assert result[0].resource_id == "/log-group/test"
    +            assert (
    +                result[0].resource_arn
    +                == f"arn:aws:logs:{AWS_REGION_US_EAST_1}:{AWS_ACCOUNT_NUMBER}:metric-filter/test-filter"
    +            )
    +            assert result[0].region == AWS_REGION_US_EAST_1
     
    -    @mock_logs
    -    @mock_cloudtrail
    -    @mock_cloudwatch
    -    @mock_s3
    +    @mock_aws
         def test_cloudwatch_trail_with_log_group_with_metric_and_alarm(self):
    -        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION)
    -        cloudwatch_client = client("cloudwatch", region_name=AWS_REGION)
    -        logs_client = client("logs", region_name=AWS_REGION)
    -        s3_client = client("s3", region_name=AWS_REGION)
    +        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION_US_EAST_1)
    +        cloudwatch_client = client("cloudwatch", region_name=AWS_REGION_US_EAST_1)
    +        logs_client = client("logs", region_name=AWS_REGION_US_EAST_1)
    +        s3_client = client("s3", region_name=AWS_REGION_US_EAST_1)
             s3_client.create_bucket(Bucket="test")
             logs_client.create_log_group(logGroupName="/log-group/test")
             cloudtrail_client.create_trail(
                 Name="test_trail",
                 S3BucketName="test",
    -            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION}:{DEFAULT_ACCOUNT_ID}:log-group:/log-group/test:*",
    +            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION_EU_WEST_1}:{AWS_ACCOUNT_NUMBER}:log-group:/log-group/test:*",
             )
             logs_client.put_metric_filter(
                 logGroupName="/log-group/test",
    @@ -353,7 +328,9 @@ def test_cloudwatch_trail_with_log_group_with_metric_and_alarm(self):
                 Logs,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             from prowler.providers.common.models import Audit_Metadata
     
    @@ -395,22 +372,24 @@ def test_cloudwatch_trail_with_log_group_with_metric_and_alarm(self):
                     == "CloudWatch log group /log-group/test found with metric filter test-filter and alarms set."
                 )
                 assert result[0].resource_id == "/log-group/test"
    +            assert (
    +                result[0].resource_arn
    +                == f"arn:aws:logs:{AWS_REGION_US_EAST_1}:{AWS_ACCOUNT_NUMBER}:metric-filter/test-filter"
    +            )
    +            assert result[0].region == AWS_REGION_US_EAST_1
     
    -    @mock_logs
    -    @mock_cloudtrail
    -    @mock_cloudwatch
    -    @mock_s3
    +    @mock_aws
         def test_cloudwatch_trail_with_log_group_with_metric_and_alarm_with_quotes(self):
    -        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION)
    -        cloudwatch_client = client("cloudwatch", region_name=AWS_REGION)
    -        logs_client = client("logs", region_name=AWS_REGION)
    -        s3_client = client("s3", region_name=AWS_REGION)
    +        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION_US_EAST_1)
    +        cloudwatch_client = client("cloudwatch", region_name=AWS_REGION_US_EAST_1)
    +        logs_client = client("logs", region_name=AWS_REGION_US_EAST_1)
    +        s3_client = client("s3", region_name=AWS_REGION_US_EAST_1)
             s3_client.create_bucket(Bucket="test")
             logs_client.create_log_group(logGroupName="/log-group/test")
             cloudtrail_client.create_trail(
                 Name="test_trail",
                 S3BucketName="test",
    -            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION}:{DEFAULT_ACCOUNT_ID}:log-group:/log-group/test:*",
    +            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION_EU_WEST_1}:{AWS_ACCOUNT_NUMBER}:log-group:/log-group/test:*",
             )
             logs_client.put_metric_filter(
                 logGroupName="/log-group/test",
    @@ -444,7 +423,9 @@ def test_cloudwatch_trail_with_log_group_with_metric_and_alarm_with_quotes(self)
                 Logs,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             from prowler.providers.common.models import Audit_Metadata
     
    @@ -486,22 +467,24 @@ def test_cloudwatch_trail_with_log_group_with_metric_and_alarm_with_quotes(self)
                     == "CloudWatch log group /log-group/test found with metric filter test-filter and alarms set."
                 )
                 assert result[0].resource_id == "/log-group/test"
    +            assert (
    +                result[0].resource_arn
    +                == f"arn:aws:logs:{AWS_REGION_US_EAST_1}:{AWS_ACCOUNT_NUMBER}:metric-filter/test-filter"
    +            )
    +            assert result[0].region == AWS_REGION_US_EAST_1
     
    -    @mock_logs
    -    @mock_cloudtrail
    -    @mock_cloudwatch
    -    @mock_s3
    +    @mock_aws
         def test_cloudwatch_trail_with_log_group_with_metric_and_alarm_with_newlines(self):
    -        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION)
    -        cloudwatch_client = client("cloudwatch", region_name=AWS_REGION)
    -        logs_client = client("logs", region_name=AWS_REGION)
    -        s3_client = client("s3", region_name=AWS_REGION)
    +        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION_US_EAST_1)
    +        cloudwatch_client = client("cloudwatch", region_name=AWS_REGION_US_EAST_1)
    +        logs_client = client("logs", region_name=AWS_REGION_US_EAST_1)
    +        s3_client = client("s3", region_name=AWS_REGION_US_EAST_1)
             s3_client.create_bucket(Bucket="test")
             logs_client.create_log_group(logGroupName="/log-group/test")
             cloudtrail_client.create_trail(
                 Name="test_trail",
                 S3BucketName="test",
    -            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION}:{DEFAULT_ACCOUNT_ID}:log-group:/log-group/test:*",
    +            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION_EU_WEST_1}:{AWS_ACCOUNT_NUMBER}:log-group:/log-group/test:*",
             )
             logs_client.put_metric_filter(
                 logGroupName="/log-group/test",
    @@ -535,7 +518,9 @@ def test_cloudwatch_trail_with_log_group_with_metric_and_alarm_with_newlines(sel
                 Logs,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             from prowler.providers.common.models import Audit_Metadata
     
    @@ -577,3 +562,8 @@ def test_cloudwatch_trail_with_log_group_with_metric_and_alarm_with_newlines(sel
                     == "CloudWatch log group /log-group/test found with metric filter test-filter and alarms set."
                 )
                 assert result[0].resource_id == "/log-group/test"
    +            assert (
    +                result[0].resource_arn
    +                == f"arn:aws:logs:{AWS_REGION_US_EAST_1}:{AWS_ACCOUNT_NUMBER}:metric-filter/test-filter"
    +            )
    +            assert result[0].region == AWS_REGION_US_EAST_1
    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 4bcb257ca3e..fc1c4b9e621 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
    @@ -1,51 +1,19 @@
     from unittest import mock
     
    -from boto3 import client, session
    -from moto import mock_cloudtrail, mock_cloudwatch, mock_logs, mock_s3
    -from moto.core import DEFAULT_ACCOUNT_ID
    +from boto3 import client
    +from moto import mock_aws
     
    -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"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_ACCOUNT_ARN,
    +    AWS_ACCOUNT_NUMBER,
    +    AWS_REGION_EU_WEST_1,
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     
     class Test_cloudwatch_log_metric_filter_and_alarm_for_cloudtrail_configuration_changes_enabled:
    -    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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=["us-east-1", "eu-west-1"],
    -            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
    -
    -    @mock_logs
    -    @mock_cloudtrail
    -    @mock_cloudwatch
    +    @mock_aws
         def test_cloudwatch_no_log_groups(self):
             from prowler.providers.aws.services.cloudtrail.cloudtrail_service import (
                 Cloudtrail,
    @@ -55,7 +23,9 @@ def test_cloudwatch_no_log_groups(self):
                 Logs,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             from prowler.providers.common.models import Audit_Metadata
     
    @@ -96,15 +66,14 @@ def test_cloudwatch_no_log_groups(self):
                     result[0].status_extended
                     == "No CloudWatch log groups found with metric filters or alarms associated."
                 )
    -            assert result[0].resource_id == current_audit_info.audited_account
    +            assert result[0].resource_id == AWS_ACCOUNT_NUMBER
    +            assert result[0].resource_arn == AWS_ACCOUNT_ARN
    +            assert result[0].region == AWS_REGION_EU_WEST_1
     
    -    @mock_logs
    -    @mock_cloudtrail
    -    @mock_cloudwatch
    -    @mock_s3
    +    @mock_aws
         def test_cloudwatch_trail_no_log_group(self):
    -        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION)
    -        s3_client = client("s3", region_name=AWS_REGION)
    +        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION_US_EAST_1)
    +        s3_client = client("s3", region_name=AWS_REGION_US_EAST_1)
             s3_client.create_bucket(Bucket="test")
             cloudtrail_client.create_trail(Name="test_trail", S3BucketName="test")
     
    @@ -116,7 +85,9 @@ def test_cloudwatch_trail_no_log_group(self):
                 Logs,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             from prowler.providers.common.models import Audit_Metadata
     
    @@ -157,22 +128,21 @@ def test_cloudwatch_trail_no_log_group(self):
                     result[0].status_extended
                     == "No CloudWatch log groups found with metric filters or alarms associated."
                 )
    -            assert result[0].resource_id == current_audit_info.audited_account
    +            assert result[0].resource_id == AWS_ACCOUNT_NUMBER
    +            assert result[0].resource_arn == AWS_ACCOUNT_ARN
    +            assert result[0].region == AWS_REGION_EU_WEST_1
     
    -    @mock_logs
    -    @mock_cloudtrail
    -    @mock_cloudwatch
    -    @mock_s3
    +    @mock_aws
         def test_cloudwatch_trail_with_log_group(self):
    -        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION)
    -        logs_client = client("logs", region_name=AWS_REGION)
    -        s3_client = client("s3", region_name=AWS_REGION)
    +        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION_US_EAST_1)
    +        logs_client = client("logs", region_name=AWS_REGION_US_EAST_1)
    +        s3_client = client("s3", region_name=AWS_REGION_US_EAST_1)
             s3_client.create_bucket(Bucket="test")
             logs_client.create_log_group(logGroupName="/log-group/test")
             cloudtrail_client.create_trail(
                 Name="test_trail",
                 S3BucketName="test",
    -            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION}:{DEFAULT_ACCOUNT_ID}:log-group:/log-group/test:*",
    +            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION_EU_WEST_1}:{AWS_ACCOUNT_NUMBER}:log-group:/log-group/test:*",
             )
     
             from prowler.providers.aws.services.cloudtrail.cloudtrail_service import (
    @@ -183,7 +153,9 @@ def test_cloudwatch_trail_with_log_group(self):
                 Logs,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             from prowler.providers.common.models import Audit_Metadata
     
    @@ -224,22 +196,21 @@ def test_cloudwatch_trail_with_log_group(self):
                     result[0].status_extended
                     == "No CloudWatch log groups found with metric filters or alarms associated."
                 )
    -            assert result[0].resource_id == current_audit_info.audited_account
    +            assert result[0].resource_id == AWS_ACCOUNT_NUMBER
    +            assert result[0].resource_arn == AWS_ACCOUNT_ARN
    +            assert result[0].region == AWS_REGION_EU_WEST_1
     
    -    @mock_logs
    -    @mock_cloudtrail
    -    @mock_cloudwatch
    -    @mock_s3
    +    @mock_aws
         def test_cloudwatch_trail_with_log_group_with_metric(self):
    -        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION)
    -        logs_client = client("logs", region_name=AWS_REGION)
    -        s3_client = client("s3", region_name=AWS_REGION)
    +        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION_US_EAST_1)
    +        logs_client = client("logs", region_name=AWS_REGION_US_EAST_1)
    +        s3_client = client("s3", region_name=AWS_REGION_US_EAST_1)
             s3_client.create_bucket(Bucket="test")
             logs_client.create_log_group(logGroupName="/log-group/test")
             cloudtrail_client.create_trail(
                 Name="test_trail",
                 S3BucketName="test",
    -            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION}:{DEFAULT_ACCOUNT_ID}:log-group:/log-group/test:*",
    +            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION_EU_WEST_1}:{AWS_ACCOUNT_NUMBER}:log-group:/log-group/test:*",
             )
             logs_client.put_metric_filter(
                 logGroupName="/log-group/test",
    @@ -262,7 +233,9 @@ def test_cloudwatch_trail_with_log_group_with_metric(self):
                 Logs,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             from prowler.providers.common.models import Audit_Metadata
     
    @@ -304,22 +277,24 @@ def test_cloudwatch_trail_with_log_group_with_metric(self):
                     == "CloudWatch log group /log-group/test found with metric filter test-filter but no alarms associated."
                 )
                 assert result[0].resource_id == "/log-group/test"
    +            assert (
    +                result[0].resource_arn
    +                == f"arn:aws:logs:{AWS_REGION_US_EAST_1}:{AWS_ACCOUNT_NUMBER}:metric-filter/test-filter"
    +            )
    +            assert result[0].region == AWS_REGION_US_EAST_1
     
    -    @mock_logs
    -    @mock_cloudtrail
    -    @mock_cloudwatch
    -    @mock_s3
    +    @mock_aws
         def test_cloudwatch_trail_with_log_group_with_metric_and_alarm(self):
    -        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION)
    -        cloudwatch_client = client("cloudwatch", region_name=AWS_REGION)
    -        logs_client = client("logs", region_name=AWS_REGION)
    -        s3_client = client("s3", region_name=AWS_REGION)
    +        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION_US_EAST_1)
    +        cloudwatch_client = client("cloudwatch", region_name=AWS_REGION_US_EAST_1)
    +        logs_client = client("logs", region_name=AWS_REGION_US_EAST_1)
    +        s3_client = client("s3", region_name=AWS_REGION_US_EAST_1)
             s3_client.create_bucket(Bucket="test")
             logs_client.create_log_group(logGroupName="/log-group/test")
             cloudtrail_client.create_trail(
                 Name="test_trail",
                 S3BucketName="test",
    -            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION}:{DEFAULT_ACCOUNT_ID}:log-group:/log-group/test:*",
    +            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION_EU_WEST_1}:{AWS_ACCOUNT_NUMBER}:log-group:/log-group/test:*",
             )
             logs_client.put_metric_filter(
                 logGroupName="/log-group/test",
    @@ -353,7 +328,9 @@ def test_cloudwatch_trail_with_log_group_with_metric_and_alarm(self):
                 Logs,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             from prowler.providers.common.models import Audit_Metadata
     
    @@ -395,22 +372,24 @@ def test_cloudwatch_trail_with_log_group_with_metric_and_alarm(self):
                     == "CloudWatch log group /log-group/test found with metric filter test-filter and alarms set."
                 )
                 assert result[0].resource_id == "/log-group/test"
    +            assert (
    +                result[0].resource_arn
    +                == f"arn:aws:logs:{AWS_REGION_US_EAST_1}:{AWS_ACCOUNT_NUMBER}:metric-filter/test-filter"
    +            )
    +            assert result[0].region == AWS_REGION_US_EAST_1
     
    -    @mock_logs
    -    @mock_cloudtrail
    -    @mock_cloudwatch
    -    @mock_s3
    +    @mock_aws
         def test_cloudwatch_trail_with_log_group_with_metric_and_alarm_with_quotes(self):
    -        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION)
    -        cloudwatch_client = client("cloudwatch", region_name=AWS_REGION)
    -        logs_client = client("logs", region_name=AWS_REGION)
    -        s3_client = client("s3", region_name=AWS_REGION)
    +        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION_US_EAST_1)
    +        cloudwatch_client = client("cloudwatch", region_name=AWS_REGION_US_EAST_1)
    +        logs_client = client("logs", region_name=AWS_REGION_US_EAST_1)
    +        s3_client = client("s3", region_name=AWS_REGION_US_EAST_1)
             s3_client.create_bucket(Bucket="test")
             logs_client.create_log_group(logGroupName="/log-group/test")
             cloudtrail_client.create_trail(
                 Name="test_trail",
                 S3BucketName="test",
    -            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION}:{DEFAULT_ACCOUNT_ID}:log-group:/log-group/test:*",
    +            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION_EU_WEST_1}:{AWS_ACCOUNT_NUMBER}:log-group:/log-group/test:*",
             )
             logs_client.put_metric_filter(
                 logGroupName="/log-group/test",
    @@ -444,7 +423,9 @@ def test_cloudwatch_trail_with_log_group_with_metric_and_alarm_with_quotes(self)
                 Logs,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             from prowler.providers.common.models import Audit_Metadata
     
    @@ -486,22 +467,24 @@ def test_cloudwatch_trail_with_log_group_with_metric_and_alarm_with_quotes(self)
                     == "CloudWatch log group /log-group/test found with metric filter test-filter and alarms set."
                 )
                 assert result[0].resource_id == "/log-group/test"
    +            assert (
    +                result[0].resource_arn
    +                == f"arn:aws:logs:{AWS_REGION_US_EAST_1}:{AWS_ACCOUNT_NUMBER}:metric-filter/test-filter"
    +            )
    +            assert result[0].region == AWS_REGION_US_EAST_1
     
    -    @mock_logs
    -    @mock_cloudtrail
    -    @mock_cloudwatch
    -    @mock_s3
    +    @mock_aws
         def test_cloudwatch_trail_with_log_group_with_metric_and_alarm_with_newlines(self):
    -        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION)
    -        cloudwatch_client = client("cloudwatch", region_name=AWS_REGION)
    -        logs_client = client("logs", region_name=AWS_REGION)
    -        s3_client = client("s3", region_name=AWS_REGION)
    +        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION_US_EAST_1)
    +        cloudwatch_client = client("cloudwatch", region_name=AWS_REGION_US_EAST_1)
    +        logs_client = client("logs", region_name=AWS_REGION_US_EAST_1)
    +        s3_client = client("s3", region_name=AWS_REGION_US_EAST_1)
             s3_client.create_bucket(Bucket="test")
             logs_client.create_log_group(logGroupName="/log-group/test")
             cloudtrail_client.create_trail(
                 Name="test_trail",
                 S3BucketName="test",
    -            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION}:{DEFAULT_ACCOUNT_ID}:log-group:/log-group/test:*",
    +            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION_EU_WEST_1}:{AWS_ACCOUNT_NUMBER}:log-group:/log-group/test:*",
             )
             logs_client.put_metric_filter(
                 logGroupName="/log-group/test",
    @@ -535,7 +518,9 @@ def test_cloudwatch_trail_with_log_group_with_metric_and_alarm_with_newlines(sel
                 Logs,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             from prowler.providers.common.models import Audit_Metadata
     
    @@ -577,3 +562,8 @@ def test_cloudwatch_trail_with_log_group_with_metric_and_alarm_with_newlines(sel
                     == "CloudWatch log group /log-group/test found with metric filter test-filter and alarms set."
                 )
                 assert result[0].resource_id == "/log-group/test"
    +            assert (
    +                result[0].resource_arn
    +                == f"arn:aws:logs:{AWS_REGION_US_EAST_1}:{AWS_ACCOUNT_NUMBER}:metric-filter/test-filter"
    +            )
    +            assert result[0].region == AWS_REGION_US_EAST_1
    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 478b5c6d6be..d825830fbf9 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
    @@ -1,51 +1,19 @@
     from unittest import mock
     
    -from boto3 import client, session
    -from moto import mock_cloudtrail, mock_cloudwatch, mock_logs, mock_s3
    -from moto.core import DEFAULT_ACCOUNT_ID
    +from boto3 import client
    +from moto import mock_aws
     
    -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"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_ACCOUNT_ARN,
    +    AWS_ACCOUNT_NUMBER,
    +    AWS_REGION_EU_WEST_1,
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     
     class Test_cloudwatch_log_metric_filter_authentication_failures:
    -    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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=["us-east-1", "eu-west-1"],
    -            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
    -
    -    @mock_logs
    -    @mock_cloudtrail
    -    @mock_cloudwatch
    +    @mock_aws
         def test_cloudwatch_no_log_groups(self):
             from prowler.providers.aws.services.cloudtrail.cloudtrail_service import (
                 Cloudtrail,
    @@ -55,7 +23,9 @@ def test_cloudwatch_no_log_groups(self):
                 Logs,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             from prowler.providers.common.models import Audit_Metadata
     
    @@ -94,15 +64,14 @@ def test_cloudwatch_no_log_groups(self):
                     result[0].status_extended
                     == "No CloudWatch log groups found with metric filters or alarms associated."
                 )
    -            assert result[0].resource_id == current_audit_info.audited_account
    +            assert result[0].resource_id == AWS_ACCOUNT_NUMBER
    +            assert result[0].resource_arn == AWS_ACCOUNT_ARN
    +            assert result[0].region == AWS_REGION_EU_WEST_1
     
    -    @mock_logs
    -    @mock_cloudtrail
    -    @mock_cloudwatch
    -    @mock_s3
    +    @mock_aws
         def test_cloudwatch_trail_no_log_group(self):
    -        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION)
    -        s3_client = client("s3", region_name=AWS_REGION)
    +        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION_US_EAST_1)
    +        s3_client = client("s3", region_name=AWS_REGION_US_EAST_1)
             s3_client.create_bucket(Bucket="test")
             cloudtrail_client.create_trail(Name="test_trail", S3BucketName="test")
     
    @@ -114,7 +83,9 @@ def test_cloudwatch_trail_no_log_group(self):
                 Logs,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             from prowler.providers.common.models import Audit_Metadata
     
    @@ -153,22 +124,21 @@ def test_cloudwatch_trail_no_log_group(self):
                     result[0].status_extended
                     == "No CloudWatch log groups found with metric filters or alarms associated."
                 )
    -            assert result[0].resource_id == current_audit_info.audited_account
    +            assert result[0].resource_id == AWS_ACCOUNT_NUMBER
    +            assert result[0].resource_arn == AWS_ACCOUNT_ARN
    +            assert result[0].region == AWS_REGION_EU_WEST_1
     
    -    @mock_logs
    -    @mock_cloudtrail
    -    @mock_cloudwatch
    -    @mock_s3
    +    @mock_aws
         def test_cloudwatch_trail_with_log_group(self):
    -        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION)
    -        logs_client = client("logs", region_name=AWS_REGION)
    -        s3_client = client("s3", region_name=AWS_REGION)
    +        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION_US_EAST_1)
    +        logs_client = client("logs", region_name=AWS_REGION_US_EAST_1)
    +        s3_client = client("s3", region_name=AWS_REGION_US_EAST_1)
             s3_client.create_bucket(Bucket="test")
             logs_client.create_log_group(logGroupName="/log-group/test")
             cloudtrail_client.create_trail(
                 Name="test_trail",
                 S3BucketName="test",
    -            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION}:{DEFAULT_ACCOUNT_ID}:log-group:/log-group/test:*",
    +            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION_EU_WEST_1}:{AWS_ACCOUNT_NUMBER}:log-group:/log-group/test:*",
             )
     
             from prowler.providers.aws.services.cloudtrail.cloudtrail_service import (
    @@ -179,7 +149,9 @@ def test_cloudwatch_trail_with_log_group(self):
                 Logs,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             from prowler.providers.common.models import Audit_Metadata
     
    @@ -218,22 +190,21 @@ def test_cloudwatch_trail_with_log_group(self):
                     result[0].status_extended
                     == "No CloudWatch log groups found with metric filters or alarms associated."
                 )
    -            assert result[0].resource_id == current_audit_info.audited_account
    +            assert result[0].resource_id == AWS_ACCOUNT_NUMBER
    +            assert result[0].resource_arn == AWS_ACCOUNT_ARN
    +            assert result[0].region == AWS_REGION_EU_WEST_1
     
    -    @mock_logs
    -    @mock_cloudtrail
    -    @mock_cloudwatch
    -    @mock_s3
    +    @mock_aws
         def test_cloudwatch_trail_with_log_group_with_metric(self):
    -        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION)
    -        logs_client = client("logs", region_name=AWS_REGION)
    -        s3_client = client("s3", region_name=AWS_REGION)
    +        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION_US_EAST_1)
    +        logs_client = client("logs", region_name=AWS_REGION_US_EAST_1)
    +        s3_client = client("s3", region_name=AWS_REGION_US_EAST_1)
             s3_client.create_bucket(Bucket="test")
             logs_client.create_log_group(logGroupName="/log-group/test")
             cloudtrail_client.create_trail(
                 Name="test_trail",
                 S3BucketName="test",
    -            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION}:{DEFAULT_ACCOUNT_ID}:log-group:/log-group/test:*",
    +            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION_EU_WEST_1}:{AWS_ACCOUNT_NUMBER}:log-group:/log-group/test:*",
             )
             logs_client.put_metric_filter(
                 logGroupName="/log-group/test",
    @@ -256,7 +227,9 @@ def test_cloudwatch_trail_with_log_group_with_metric(self):
                 Logs,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             from prowler.providers.common.models import Audit_Metadata
     
    @@ -296,22 +269,24 @@ def test_cloudwatch_trail_with_log_group_with_metric(self):
                     == "CloudWatch log group /log-group/test found with metric filter test-filter but no alarms associated."
                 )
                 assert result[0].resource_id == "/log-group/test"
    +            assert (
    +                result[0].resource_arn
    +                == f"arn:aws:logs:{AWS_REGION_US_EAST_1}:{AWS_ACCOUNT_NUMBER}:metric-filter/test-filter"
    +            )
    +            assert result[0].region == AWS_REGION_US_EAST_1
     
    -    @mock_logs
    -    @mock_cloudtrail
    -    @mock_cloudwatch
    -    @mock_s3
    +    @mock_aws
         def test_cloudwatch_trail_with_log_group_with_metric_and_alarm(self):
    -        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION)
    -        cloudwatch_client = client("cloudwatch", region_name=AWS_REGION)
    -        logs_client = client("logs", region_name=AWS_REGION)
    -        s3_client = client("s3", region_name=AWS_REGION)
    +        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION_US_EAST_1)
    +        cloudwatch_client = client("cloudwatch", region_name=AWS_REGION_US_EAST_1)
    +        logs_client = client("logs", region_name=AWS_REGION_US_EAST_1)
    +        s3_client = client("s3", region_name=AWS_REGION_US_EAST_1)
             s3_client.create_bucket(Bucket="test")
             logs_client.create_log_group(logGroupName="/log-group/test")
             cloudtrail_client.create_trail(
                 Name="test_trail",
                 S3BucketName="test",
    -            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION}:{DEFAULT_ACCOUNT_ID}:log-group:/log-group/test:*",
    +            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION_EU_WEST_1}:{AWS_ACCOUNT_NUMBER}:log-group:/log-group/test:*",
             )
             logs_client.put_metric_filter(
                 logGroupName="/log-group/test",
    @@ -345,7 +320,9 @@ def test_cloudwatch_trail_with_log_group_with_metric_and_alarm(self):
                 Logs,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             from prowler.providers.common.models import Audit_Metadata
     
    @@ -385,22 +362,24 @@ def test_cloudwatch_trail_with_log_group_with_metric_and_alarm(self):
                     == "CloudWatch log group /log-group/test found with metric filter test-filter and alarms set."
                 )
                 assert result[0].resource_id == "/log-group/test"
    +            assert (
    +                result[0].resource_arn
    +                == f"arn:aws:logs:{AWS_REGION_US_EAST_1}:{AWS_ACCOUNT_NUMBER}:metric-filter/test-filter"
    +            )
    +            assert result[0].region == AWS_REGION_US_EAST_1
     
    -    @mock_logs
    -    @mock_cloudtrail
    -    @mock_cloudwatch
    -    @mock_s3
    +    @mock_aws
         def test_cloudwatch_trail_with_log_group_with_metric_and_alarm_with_quotes(self):
    -        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION)
    -        cloudwatch_client = client("cloudwatch", region_name=AWS_REGION)
    -        logs_client = client("logs", region_name=AWS_REGION)
    -        s3_client = client("s3", region_name=AWS_REGION)
    +        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION_US_EAST_1)
    +        cloudwatch_client = client("cloudwatch", region_name=AWS_REGION_US_EAST_1)
    +        logs_client = client("logs", region_name=AWS_REGION_US_EAST_1)
    +        s3_client = client("s3", region_name=AWS_REGION_US_EAST_1)
             s3_client.create_bucket(Bucket="test")
             logs_client.create_log_group(logGroupName="/log-group/test")
             cloudtrail_client.create_trail(
                 Name="test_trail",
                 S3BucketName="test",
    -            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION}:{DEFAULT_ACCOUNT_ID}:log-group:/log-group/test:*",
    +            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION_EU_WEST_1}:{AWS_ACCOUNT_NUMBER}:log-group:/log-group/test:*",
             )
             logs_client.put_metric_filter(
                 logGroupName="/log-group/test",
    @@ -434,7 +413,9 @@ def test_cloudwatch_trail_with_log_group_with_metric_and_alarm_with_quotes(self)
                 Logs,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             from prowler.providers.common.models import Audit_Metadata
     
    @@ -474,22 +455,24 @@ def test_cloudwatch_trail_with_log_group_with_metric_and_alarm_with_quotes(self)
                     == "CloudWatch log group /log-group/test found with metric filter test-filter and alarms set."
                 )
                 assert result[0].resource_id == "/log-group/test"
    +            assert (
    +                result[0].resource_arn
    +                == f"arn:aws:logs:{AWS_REGION_US_EAST_1}:{AWS_ACCOUNT_NUMBER}:metric-filter/test-filter"
    +            )
    +            assert result[0].region == AWS_REGION_US_EAST_1
     
    -    @mock_logs
    -    @mock_cloudtrail
    -    @mock_cloudwatch
    -    @mock_s3
    +    @mock_aws
         def test_cloudwatch_trail_with_log_group_with_metric_and_alarm_with_newlines(self):
    -        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION)
    -        cloudwatch_client = client("cloudwatch", region_name=AWS_REGION)
    -        logs_client = client("logs", region_name=AWS_REGION)
    -        s3_client = client("s3", region_name=AWS_REGION)
    +        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION_US_EAST_1)
    +        cloudwatch_client = client("cloudwatch", region_name=AWS_REGION_US_EAST_1)
    +        logs_client = client("logs", region_name=AWS_REGION_US_EAST_1)
    +        s3_client = client("s3", region_name=AWS_REGION_US_EAST_1)
             s3_client.create_bucket(Bucket="test")
             logs_client.create_log_group(logGroupName="/log-group/test")
             cloudtrail_client.create_trail(
                 Name="test_trail",
                 S3BucketName="test",
    -            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION}:{DEFAULT_ACCOUNT_ID}:log-group:/log-group/test:*",
    +            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION_EU_WEST_1}:{AWS_ACCOUNT_NUMBER}:log-group:/log-group/test:*",
             )
             logs_client.put_metric_filter(
                 logGroupName="/log-group/test",
    @@ -523,7 +506,9 @@ def test_cloudwatch_trail_with_log_group_with_metric_and_alarm_with_newlines(sel
                 Logs,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             from prowler.providers.common.models import Audit_Metadata
     
    @@ -563,3 +548,8 @@ def test_cloudwatch_trail_with_log_group_with_metric_and_alarm_with_newlines(sel
                     == "CloudWatch log group /log-group/test found with metric filter test-filter and alarms set."
                 )
                 assert result[0].resource_id == "/log-group/test"
    +            assert (
    +                result[0].resource_arn
    +                == f"arn:aws:logs:{AWS_REGION_US_EAST_1}:{AWS_ACCOUNT_NUMBER}:metric-filter/test-filter"
    +            )
    +            assert result[0].region == AWS_REGION_US_EAST_1
    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 d8fab8f2ba3..3bc9b82f26f 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
    @@ -1,51 +1,19 @@
     from unittest import mock
     
    -from boto3 import client, session
    -from moto import mock_cloudtrail, mock_cloudwatch, mock_logs, mock_s3
    -from moto.core import DEFAULT_ACCOUNT_ID
    +from boto3 import client
    +from moto import mock_aws
     
    -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"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_ACCOUNT_ARN,
    +    AWS_ACCOUNT_NUMBER,
    +    AWS_REGION_EU_WEST_1,
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     
     class Test_cloudwatch_log_metric_filter_aws_organizations_changes:
    -    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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=["us-east-1", "eu-west-1"],
    -            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
    -
    -    @mock_logs
    -    @mock_cloudtrail
    -    @mock_cloudwatch
    +    @mock_aws
         def test_cloudwatch_no_log_groups(self):
             from prowler.providers.aws.services.cloudtrail.cloudtrail_service import (
                 Cloudtrail,
    @@ -55,7 +23,9 @@ def test_cloudwatch_no_log_groups(self):
                 Logs,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             from prowler.providers.common.models import Audit_Metadata
     
    @@ -94,15 +64,14 @@ def test_cloudwatch_no_log_groups(self):
                     result[0].status_extended
                     == "No CloudWatch log groups found with metric filters or alarms associated."
                 )
    -            assert result[0].resource_id == current_audit_info.audited_account
    +            assert result[0].resource_id == AWS_ACCOUNT_NUMBER
    +            assert result[0].resource_arn == AWS_ACCOUNT_ARN
    +            assert result[0].region == AWS_REGION_EU_WEST_1
     
    -    @mock_logs
    -    @mock_cloudtrail
    -    @mock_cloudwatch
    -    @mock_s3
    +    @mock_aws
         def test_cloudwatch_trail_no_log_group(self):
    -        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION)
    -        s3_client = client("s3", region_name=AWS_REGION)
    +        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION_US_EAST_1)
    +        s3_client = client("s3", region_name=AWS_REGION_US_EAST_1)
             s3_client.create_bucket(Bucket="test")
             cloudtrail_client.create_trail(Name="test_trail", S3BucketName="test")
     
    @@ -114,7 +83,9 @@ def test_cloudwatch_trail_no_log_group(self):
                 Logs,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             from prowler.providers.common.models import Audit_Metadata
     
    @@ -153,22 +124,21 @@ def test_cloudwatch_trail_no_log_group(self):
                     result[0].status_extended
                     == "No CloudWatch log groups found with metric filters or alarms associated."
                 )
    -            assert result[0].resource_id == current_audit_info.audited_account
    +            assert result[0].resource_id == AWS_ACCOUNT_NUMBER
    +            assert result[0].resource_arn == AWS_ACCOUNT_ARN
    +            assert result[0].region == AWS_REGION_EU_WEST_1
     
    -    @mock_logs
    -    @mock_cloudtrail
    -    @mock_cloudwatch
    -    @mock_s3
    +    @mock_aws
         def test_cloudwatch_trail_with_log_group(self):
    -        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION)
    -        logs_client = client("logs", region_name=AWS_REGION)
    -        s3_client = client("s3", region_name=AWS_REGION)
    +        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION_US_EAST_1)
    +        logs_client = client("logs", region_name=AWS_REGION_US_EAST_1)
    +        s3_client = client("s3", region_name=AWS_REGION_US_EAST_1)
             s3_client.create_bucket(Bucket="test")
             logs_client.create_log_group(logGroupName="/log-group/test")
             cloudtrail_client.create_trail(
                 Name="test_trail",
                 S3BucketName="test",
    -            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION}:{DEFAULT_ACCOUNT_ID}:log-group:/log-group/test:*",
    +            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION_EU_WEST_1}:{AWS_ACCOUNT_NUMBER}:log-group:/log-group/test:*",
             )
     
             from prowler.providers.aws.services.cloudtrail.cloudtrail_service import (
    @@ -179,7 +149,9 @@ def test_cloudwatch_trail_with_log_group(self):
                 Logs,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             from prowler.providers.common.models import Audit_Metadata
     
    @@ -218,22 +190,21 @@ def test_cloudwatch_trail_with_log_group(self):
                     result[0].status_extended
                     == "No CloudWatch log groups found with metric filters or alarms associated."
                 )
    -            assert result[0].resource_id == current_audit_info.audited_account
    +            assert result[0].resource_id == AWS_ACCOUNT_NUMBER
    +            assert result[0].resource_arn == AWS_ACCOUNT_ARN
    +            assert result[0].region == AWS_REGION_EU_WEST_1
     
    -    @mock_logs
    -    @mock_cloudtrail
    -    @mock_cloudwatch
    -    @mock_s3
    +    @mock_aws
         def test_cloudwatch_trail_with_log_group_with_metric(self):
    -        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION)
    -        logs_client = client("logs", region_name=AWS_REGION)
    -        s3_client = client("s3", region_name=AWS_REGION)
    +        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION_US_EAST_1)
    +        logs_client = client("logs", region_name=AWS_REGION_US_EAST_1)
    +        s3_client = client("s3", region_name=AWS_REGION_US_EAST_1)
             s3_client.create_bucket(Bucket="test")
             logs_client.create_log_group(logGroupName="/log-group/test")
             cloudtrail_client.create_trail(
                 Name="test_trail",
                 S3BucketName="test",
    -            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION}:{DEFAULT_ACCOUNT_ID}:log-group:/log-group/test:*",
    +            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION_EU_WEST_1}:{AWS_ACCOUNT_NUMBER}:log-group:/log-group/test:*",
             )
             logs_client.put_metric_filter(
                 logGroupName="/log-group/test",
    @@ -256,7 +227,9 @@ def test_cloudwatch_trail_with_log_group_with_metric(self):
                 Logs,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             from prowler.providers.common.models import Audit_Metadata
     
    @@ -296,22 +269,24 @@ def test_cloudwatch_trail_with_log_group_with_metric(self):
                     == "CloudWatch log group /log-group/test found with metric filter test-filter but no alarms associated."
                 )
                 assert result[0].resource_id == "/log-group/test"
    +            assert (
    +                result[0].resource_arn
    +                == f"arn:aws:logs:{AWS_REGION_US_EAST_1}:{AWS_ACCOUNT_NUMBER}:metric-filter/test-filter"
    +            )
    +            assert result[0].region == AWS_REGION_US_EAST_1
     
    -    @mock_logs
    -    @mock_cloudtrail
    -    @mock_cloudwatch
    -    @mock_s3
    +    @mock_aws
         def test_cloudwatch_trail_with_log_group_with_metric_and_alarm(self):
    -        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION)
    -        cloudwatch_client = client("cloudwatch", region_name=AWS_REGION)
    -        logs_client = client("logs", region_name=AWS_REGION)
    -        s3_client = client("s3", region_name=AWS_REGION)
    +        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION_US_EAST_1)
    +        cloudwatch_client = client("cloudwatch", region_name=AWS_REGION_US_EAST_1)
    +        logs_client = client("logs", region_name=AWS_REGION_US_EAST_1)
    +        s3_client = client("s3", region_name=AWS_REGION_US_EAST_1)
             s3_client.create_bucket(Bucket="test")
             logs_client.create_log_group(logGroupName="/log-group/test")
             cloudtrail_client.create_trail(
                 Name="test_trail",
                 S3BucketName="test",
    -            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION}:{DEFAULT_ACCOUNT_ID}:log-group:/log-group/test:*",
    +            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION_EU_WEST_1}:{AWS_ACCOUNT_NUMBER}:log-group:/log-group/test:*",
             )
             logs_client.put_metric_filter(
                 logGroupName="/log-group/test",
    @@ -345,7 +320,9 @@ def test_cloudwatch_trail_with_log_group_with_metric_and_alarm(self):
                 Logs,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             from prowler.providers.common.models import Audit_Metadata
     
    @@ -385,22 +362,24 @@ def test_cloudwatch_trail_with_log_group_with_metric_and_alarm(self):
                     == "CloudWatch log group /log-group/test found with metric filter test-filter and alarms set."
                 )
                 assert result[0].resource_id == "/log-group/test"
    +            assert (
    +                result[0].resource_arn
    +                == f"arn:aws:logs:{AWS_REGION_US_EAST_1}:{AWS_ACCOUNT_NUMBER}:metric-filter/test-filter"
    +            )
    +            assert result[0].region == AWS_REGION_US_EAST_1
     
    -    @mock_logs
    -    @mock_cloudtrail
    -    @mock_cloudwatch
    -    @mock_s3
    +    @mock_aws
         def test_cloudwatch_trail_with_log_group_with_metric_and_alarm_with_quotes(self):
    -        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION)
    -        cloudwatch_client = client("cloudwatch", region_name=AWS_REGION)
    -        logs_client = client("logs", region_name=AWS_REGION)
    -        s3_client = client("s3", region_name=AWS_REGION)
    +        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION_US_EAST_1)
    +        cloudwatch_client = client("cloudwatch", region_name=AWS_REGION_US_EAST_1)
    +        logs_client = client("logs", region_name=AWS_REGION_US_EAST_1)
    +        s3_client = client("s3", region_name=AWS_REGION_US_EAST_1)
             s3_client.create_bucket(Bucket="test")
             logs_client.create_log_group(logGroupName="/log-group/test")
             cloudtrail_client.create_trail(
                 Name="test_trail",
                 S3BucketName="test",
    -            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION}:{DEFAULT_ACCOUNT_ID}:log-group:/log-group/test:*",
    +            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION_EU_WEST_1}:{AWS_ACCOUNT_NUMBER}:log-group:/log-group/test:*",
             )
             logs_client.put_metric_filter(
                 logGroupName="/log-group/test",
    @@ -434,7 +413,9 @@ def test_cloudwatch_trail_with_log_group_with_metric_and_alarm_with_quotes(self)
                 Logs,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             from prowler.providers.common.models import Audit_Metadata
     
    @@ -474,22 +455,24 @@ def test_cloudwatch_trail_with_log_group_with_metric_and_alarm_with_quotes(self)
                     == "CloudWatch log group /log-group/test found with metric filter test-filter and alarms set."
                 )
                 assert result[0].resource_id == "/log-group/test"
    +            assert (
    +                result[0].resource_arn
    +                == f"arn:aws:logs:{AWS_REGION_US_EAST_1}:{AWS_ACCOUNT_NUMBER}:metric-filter/test-filter"
    +            )
    +            assert result[0].region == AWS_REGION_US_EAST_1
     
    -    @mock_logs
    -    @mock_cloudtrail
    -    @mock_cloudwatch
    -    @mock_s3
    +    @mock_aws
         def test_cloudwatch_trail_with_log_group_with_metric_and_alarm_with_newlines(self):
    -        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION)
    -        cloudwatch_client = client("cloudwatch", region_name=AWS_REGION)
    -        logs_client = client("logs", region_name=AWS_REGION)
    -        s3_client = client("s3", region_name=AWS_REGION)
    +        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION_US_EAST_1)
    +        cloudwatch_client = client("cloudwatch", region_name=AWS_REGION_US_EAST_1)
    +        logs_client = client("logs", region_name=AWS_REGION_US_EAST_1)
    +        s3_client = client("s3", region_name=AWS_REGION_US_EAST_1)
             s3_client.create_bucket(Bucket="test")
             logs_client.create_log_group(logGroupName="/log-group/test")
             cloudtrail_client.create_trail(
                 Name="test_trail",
                 S3BucketName="test",
    -            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION}:{DEFAULT_ACCOUNT_ID}:log-group:/log-group/test:*",
    +            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION_EU_WEST_1}:{AWS_ACCOUNT_NUMBER}:log-group:/log-group/test:*",
             )
             logs_client.put_metric_filter(
                 logGroupName="/log-group/test",
    @@ -523,7 +506,9 @@ def test_cloudwatch_trail_with_log_group_with_metric_and_alarm_with_newlines(sel
                 Logs,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             from prowler.providers.common.models import Audit_Metadata
     
    @@ -563,3 +548,8 @@ def test_cloudwatch_trail_with_log_group_with_metric_and_alarm_with_newlines(sel
                     == "CloudWatch log group /log-group/test found with metric filter test-filter and alarms set."
                 )
                 assert result[0].resource_id == "/log-group/test"
    +            assert (
    +                result[0].resource_arn
    +                == f"arn:aws:logs:{AWS_REGION_US_EAST_1}:{AWS_ACCOUNT_NUMBER}:metric-filter/test-filter"
    +            )
    +            assert result[0].region == AWS_REGION_US_EAST_1
    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 ef3929e5489..583af0d1955 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
    @@ -1,51 +1,19 @@
     from unittest import mock
     
    -from boto3 import client, session
    -from moto import mock_cloudtrail, mock_cloudwatch, mock_logs, mock_s3
    -from moto.core import DEFAULT_ACCOUNT_ID
    +from boto3 import client
    +from moto import mock_aws
     
    -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"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_ACCOUNT_ARN,
    +    AWS_ACCOUNT_NUMBER,
    +    AWS_REGION_EU_WEST_1,
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     
     class Test_cloudwatch_log_metric_filter_disable_or_scheduled_deletion_of_kms_cmk:
    -    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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=["us-east-1", "eu-west-1"],
    -            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
    -
    -    @mock_logs
    -    @mock_cloudtrail
    -    @mock_cloudwatch
    +    @mock_aws
         def test_cloudwatch_no_log_groups(self):
             from prowler.providers.aws.services.cloudtrail.cloudtrail_service import (
                 Cloudtrail,
    @@ -55,7 +23,9 @@ def test_cloudwatch_no_log_groups(self):
                 Logs,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             from prowler.providers.common.models import Audit_Metadata
     
    @@ -96,15 +66,14 @@ def test_cloudwatch_no_log_groups(self):
                     result[0].status_extended
                     == "No CloudWatch log groups found with metric filters or alarms associated."
                 )
    -            assert result[0].resource_id == current_audit_info.audited_account
    +            assert result[0].resource_id == AWS_ACCOUNT_NUMBER
    +            assert result[0].resource_arn == AWS_ACCOUNT_ARN
    +            assert result[0].region == AWS_REGION_EU_WEST_1
     
    -    @mock_logs
    -    @mock_cloudtrail
    -    @mock_cloudwatch
    -    @mock_s3
    +    @mock_aws
         def test_cloudwatch_trail_no_log_group(self):
    -        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION)
    -        s3_client = client("s3", region_name=AWS_REGION)
    +        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION_US_EAST_1)
    +        s3_client = client("s3", region_name=AWS_REGION_US_EAST_1)
             s3_client.create_bucket(Bucket="test")
             cloudtrail_client.create_trail(Name="test_trail", S3BucketName="test")
     
    @@ -116,7 +85,9 @@ def test_cloudwatch_trail_no_log_group(self):
                 Logs,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             from prowler.providers.common.models import Audit_Metadata
     
    @@ -157,22 +128,21 @@ def test_cloudwatch_trail_no_log_group(self):
                     result[0].status_extended
                     == "No CloudWatch log groups found with metric filters or alarms associated."
                 )
    -            assert result[0].resource_id == current_audit_info.audited_account
    +            assert result[0].resource_id == AWS_ACCOUNT_NUMBER
    +            assert result[0].resource_arn == AWS_ACCOUNT_ARN
    +            assert result[0].region == AWS_REGION_EU_WEST_1
     
    -    @mock_logs
    -    @mock_cloudtrail
    -    @mock_cloudwatch
    -    @mock_s3
    +    @mock_aws
         def test_cloudwatch_trail_with_log_group(self):
    -        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION)
    -        logs_client = client("logs", region_name=AWS_REGION)
    -        s3_client = client("s3", region_name=AWS_REGION)
    +        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION_US_EAST_1)
    +        logs_client = client("logs", region_name=AWS_REGION_US_EAST_1)
    +        s3_client = client("s3", region_name=AWS_REGION_US_EAST_1)
             s3_client.create_bucket(Bucket="test")
             logs_client.create_log_group(logGroupName="/log-group/test")
             cloudtrail_client.create_trail(
                 Name="test_trail",
                 S3BucketName="test",
    -            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION}:{DEFAULT_ACCOUNT_ID}:log-group:/log-group/test:*",
    +            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION_EU_WEST_1}:{AWS_ACCOUNT_NUMBER}:log-group:/log-group/test:*",
             )
     
             from prowler.providers.aws.services.cloudtrail.cloudtrail_service import (
    @@ -183,7 +153,9 @@ def test_cloudwatch_trail_with_log_group(self):
                 Logs,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             from prowler.providers.common.models import Audit_Metadata
     
    @@ -224,22 +196,21 @@ def test_cloudwatch_trail_with_log_group(self):
                     result[0].status_extended
                     == "No CloudWatch log groups found with metric filters or alarms associated."
                 )
    -            assert result[0].resource_id == current_audit_info.audited_account
    +            assert result[0].resource_id == AWS_ACCOUNT_NUMBER
    +            assert result[0].resource_arn == AWS_ACCOUNT_ARN
    +            assert result[0].region == AWS_REGION_EU_WEST_1
     
    -    @mock_logs
    -    @mock_cloudtrail
    -    @mock_cloudwatch
    -    @mock_s3
    +    @mock_aws
         def test_cloudwatch_trail_with_log_group_with_metric(self):
    -        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION)
    -        logs_client = client("logs", region_name=AWS_REGION)
    -        s3_client = client("s3", region_name=AWS_REGION)
    +        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION_US_EAST_1)
    +        logs_client = client("logs", region_name=AWS_REGION_US_EAST_1)
    +        s3_client = client("s3", region_name=AWS_REGION_US_EAST_1)
             s3_client.create_bucket(Bucket="test")
             logs_client.create_log_group(logGroupName="/log-group/test")
             cloudtrail_client.create_trail(
                 Name="test_trail",
                 S3BucketName="test",
    -            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION}:{DEFAULT_ACCOUNT_ID}:log-group:/log-group/test:*",
    +            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION_EU_WEST_1}:{AWS_ACCOUNT_NUMBER}:log-group:/log-group/test:*",
             )
             logs_client.put_metric_filter(
                 logGroupName="/log-group/test",
    @@ -262,7 +233,9 @@ def test_cloudwatch_trail_with_log_group_with_metric(self):
                 Logs,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             from prowler.providers.common.models import Audit_Metadata
     
    @@ -304,22 +277,24 @@ def test_cloudwatch_trail_with_log_group_with_metric(self):
                     == "CloudWatch log group /log-group/test found with metric filter test-filter but no alarms associated."
                 )
                 assert result[0].resource_id == "/log-group/test"
    +            assert (
    +                result[0].resource_arn
    +                == f"arn:aws:logs:{AWS_REGION_US_EAST_1}:{AWS_ACCOUNT_NUMBER}:metric-filter/test-filter"
    +            )
    +            assert result[0].region == AWS_REGION_US_EAST_1
     
    -    @mock_logs
    -    @mock_cloudtrail
    -    @mock_cloudwatch
    -    @mock_s3
    +    @mock_aws
         def test_cloudwatch_trail_with_log_group_with_metric_and_alarm(self):
    -        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION)
    -        cloudwatch_client = client("cloudwatch", region_name=AWS_REGION)
    -        logs_client = client("logs", region_name=AWS_REGION)
    -        s3_client = client("s3", region_name=AWS_REGION)
    +        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION_US_EAST_1)
    +        cloudwatch_client = client("cloudwatch", region_name=AWS_REGION_US_EAST_1)
    +        logs_client = client("logs", region_name=AWS_REGION_US_EAST_1)
    +        s3_client = client("s3", region_name=AWS_REGION_US_EAST_1)
             s3_client.create_bucket(Bucket="test")
             logs_client.create_log_group(logGroupName="/log-group/test")
             cloudtrail_client.create_trail(
                 Name="test_trail",
                 S3BucketName="test",
    -            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION}:{DEFAULT_ACCOUNT_ID}:log-group:/log-group/test:*",
    +            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION_EU_WEST_1}:{AWS_ACCOUNT_NUMBER}:log-group:/log-group/test:*",
             )
             logs_client.put_metric_filter(
                 logGroupName="/log-group/test",
    @@ -353,7 +328,9 @@ def test_cloudwatch_trail_with_log_group_with_metric_and_alarm(self):
                 Logs,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             from prowler.providers.common.models import Audit_Metadata
     
    @@ -395,22 +372,24 @@ def test_cloudwatch_trail_with_log_group_with_metric_and_alarm(self):
                     == "CloudWatch log group /log-group/test found with metric filter test-filter and alarms set."
                 )
                 assert result[0].resource_id == "/log-group/test"
    +            assert (
    +                result[0].resource_arn
    +                == f"arn:aws:logs:{AWS_REGION_US_EAST_1}:{AWS_ACCOUNT_NUMBER}:metric-filter/test-filter"
    +            )
    +            assert result[0].region == AWS_REGION_US_EAST_1
     
    -    @mock_logs
    -    @mock_cloudtrail
    -    @mock_cloudwatch
    -    @mock_s3
    +    @mock_aws
         def test_cloudwatch_trail_with_log_group_with_metric_and_alarm_with_quotes(self):
    -        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION)
    -        cloudwatch_client = client("cloudwatch", region_name=AWS_REGION)
    -        logs_client = client("logs", region_name=AWS_REGION)
    -        s3_client = client("s3", region_name=AWS_REGION)
    +        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION_US_EAST_1)
    +        cloudwatch_client = client("cloudwatch", region_name=AWS_REGION_US_EAST_1)
    +        logs_client = client("logs", region_name=AWS_REGION_US_EAST_1)
    +        s3_client = client("s3", region_name=AWS_REGION_US_EAST_1)
             s3_client.create_bucket(Bucket="test")
             logs_client.create_log_group(logGroupName="/log-group/test")
             cloudtrail_client.create_trail(
                 Name="test_trail",
                 S3BucketName="test",
    -            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION}:{DEFAULT_ACCOUNT_ID}:log-group:/log-group/test:*",
    +            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION_EU_WEST_1}:{AWS_ACCOUNT_NUMBER}:log-group:/log-group/test:*",
             )
             logs_client.put_metric_filter(
                 logGroupName="/log-group/test",
    @@ -444,7 +423,9 @@ def test_cloudwatch_trail_with_log_group_with_metric_and_alarm_with_quotes(self)
                 Logs,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             from prowler.providers.common.models import Audit_Metadata
     
    @@ -486,22 +467,24 @@ def test_cloudwatch_trail_with_log_group_with_metric_and_alarm_with_quotes(self)
                     == "CloudWatch log group /log-group/test found with metric filter test-filter and alarms set."
                 )
                 assert result[0].resource_id == "/log-group/test"
    +            assert (
    +                result[0].resource_arn
    +                == f"arn:aws:logs:{AWS_REGION_US_EAST_1}:{AWS_ACCOUNT_NUMBER}:metric-filter/test-filter"
    +            )
    +            assert result[0].region == AWS_REGION_US_EAST_1
     
    -    @mock_logs
    -    @mock_cloudtrail
    -    @mock_cloudwatch
    -    @mock_s3
    +    @mock_aws
         def test_cloudwatch_trail_with_log_group_with_metric_and_alarm_with_newlines(self):
    -        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION)
    -        cloudwatch_client = client("cloudwatch", region_name=AWS_REGION)
    -        logs_client = client("logs", region_name=AWS_REGION)
    -        s3_client = client("s3", region_name=AWS_REGION)
    +        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION_US_EAST_1)
    +        cloudwatch_client = client("cloudwatch", region_name=AWS_REGION_US_EAST_1)
    +        logs_client = client("logs", region_name=AWS_REGION_US_EAST_1)
    +        s3_client = client("s3", region_name=AWS_REGION_US_EAST_1)
             s3_client.create_bucket(Bucket="test")
             logs_client.create_log_group(logGroupName="/log-group/test")
             cloudtrail_client.create_trail(
                 Name="test_trail",
                 S3BucketName="test",
    -            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION}:{DEFAULT_ACCOUNT_ID}:log-group:/log-group/test:*",
    +            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION_EU_WEST_1}:{AWS_ACCOUNT_NUMBER}:log-group:/log-group/test:*",
             )
             logs_client.put_metric_filter(
                 logGroupName="/log-group/test",
    @@ -535,7 +518,9 @@ def test_cloudwatch_trail_with_log_group_with_metric_and_alarm_with_newlines(sel
                 Logs,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             from prowler.providers.common.models import Audit_Metadata
     
    @@ -577,3 +562,8 @@ def test_cloudwatch_trail_with_log_group_with_metric_and_alarm_with_newlines(sel
                     == "CloudWatch log group /log-group/test found with metric filter test-filter and alarms set."
                 )
                 assert result[0].resource_id == "/log-group/test"
    +            assert (
    +                result[0].resource_arn
    +                == f"arn:aws:logs:{AWS_REGION_US_EAST_1}:{AWS_ACCOUNT_NUMBER}:metric-filter/test-filter"
    +            )
    +            assert result[0].region == AWS_REGION_US_EAST_1
    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 1938528bf9c..86ebed4a33b 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
    @@ -1,51 +1,19 @@
     from unittest import mock
     
    -from boto3 import client, session
    -from moto import mock_cloudtrail, mock_cloudwatch, mock_logs, mock_s3
    -from moto.core import DEFAULT_ACCOUNT_ID
    +from boto3 import client
    +from moto import mock_aws
     
    -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"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_ACCOUNT_ARN,
    +    AWS_ACCOUNT_NUMBER,
    +    AWS_REGION_EU_WEST_1,
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     
     class Test_cloudwatch_log_metric_filter_for_s3_bucket_policy_changes:
    -    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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=["us-east-1", "eu-west-1"],
    -            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
    -
    -    @mock_logs
    -    @mock_cloudtrail
    -    @mock_cloudwatch
    +    @mock_aws
         def test_cloudwatch_no_log_groups(self):
             from prowler.providers.aws.services.cloudtrail.cloudtrail_service import (
                 Cloudtrail,
    @@ -55,7 +23,9 @@ def test_cloudwatch_no_log_groups(self):
                 Logs,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             from prowler.providers.common.models import Audit_Metadata
     
    @@ -94,15 +64,14 @@ def test_cloudwatch_no_log_groups(self):
                     result[0].status_extended
                     == "No CloudWatch log groups found with metric filters or alarms associated."
                 )
    -            assert result[0].resource_id == current_audit_info.audited_account
    +            assert result[0].resource_id == AWS_ACCOUNT_NUMBER
    +            assert result[0].resource_arn == AWS_ACCOUNT_ARN
    +            assert result[0].region == AWS_REGION_EU_WEST_1
     
    -    @mock_logs
    -    @mock_cloudtrail
    -    @mock_cloudwatch
    -    @mock_s3
    +    @mock_aws
         def test_cloudwatch_trail_no_log_group(self):
    -        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION)
    -        s3_client = client("s3", region_name=AWS_REGION)
    +        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION_US_EAST_1)
    +        s3_client = client("s3", region_name=AWS_REGION_US_EAST_1)
             s3_client.create_bucket(Bucket="test")
             cloudtrail_client.create_trail(Name="test_trail", S3BucketName="test")
     
    @@ -114,7 +83,9 @@ def test_cloudwatch_trail_no_log_group(self):
                 Logs,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             from prowler.providers.common.models import Audit_Metadata
     
    @@ -153,22 +124,21 @@ def test_cloudwatch_trail_no_log_group(self):
                     result[0].status_extended
                     == "No CloudWatch log groups found with metric filters or alarms associated."
                 )
    -            assert result[0].resource_id == current_audit_info.audited_account
    +            assert result[0].resource_id == AWS_ACCOUNT_NUMBER
    +            assert result[0].resource_arn == AWS_ACCOUNT_ARN
    +            assert result[0].region == AWS_REGION_EU_WEST_1
     
    -    @mock_logs
    -    @mock_cloudtrail
    -    @mock_cloudwatch
    -    @mock_s3
    +    @mock_aws
         def test_cloudwatch_trail_with_log_group(self):
    -        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION)
    -        logs_client = client("logs", region_name=AWS_REGION)
    -        s3_client = client("s3", region_name=AWS_REGION)
    +        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION_US_EAST_1)
    +        logs_client = client("logs", region_name=AWS_REGION_US_EAST_1)
    +        s3_client = client("s3", region_name=AWS_REGION_US_EAST_1)
             s3_client.create_bucket(Bucket="test")
             logs_client.create_log_group(logGroupName="/log-group/test")
             cloudtrail_client.create_trail(
                 Name="test_trail",
                 S3BucketName="test",
    -            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION}:{DEFAULT_ACCOUNT_ID}:log-group:/log-group/test:*",
    +            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION_EU_WEST_1}:{AWS_ACCOUNT_NUMBER}:log-group:/log-group/test:*",
             )
     
             from prowler.providers.aws.services.cloudtrail.cloudtrail_service import (
    @@ -179,7 +149,9 @@ def test_cloudwatch_trail_with_log_group(self):
                 Logs,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             from prowler.providers.common.models import Audit_Metadata
     
    @@ -218,22 +190,21 @@ def test_cloudwatch_trail_with_log_group(self):
                     result[0].status_extended
                     == "No CloudWatch log groups found with metric filters or alarms associated."
                 )
    -            assert result[0].resource_id == current_audit_info.audited_account
    +            assert result[0].resource_id == AWS_ACCOUNT_NUMBER
    +            assert result[0].resource_arn == AWS_ACCOUNT_ARN
    +            assert result[0].region == AWS_REGION_EU_WEST_1
     
    -    @mock_logs
    -    @mock_cloudtrail
    -    @mock_cloudwatch
    -    @mock_s3
    +    @mock_aws
         def test_cloudwatch_trail_with_log_group_with_metric(self):
    -        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION)
    -        logs_client = client("logs", region_name=AWS_REGION)
    -        s3_client = client("s3", region_name=AWS_REGION)
    +        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION_US_EAST_1)
    +        logs_client = client("logs", region_name=AWS_REGION_US_EAST_1)
    +        s3_client = client("s3", region_name=AWS_REGION_US_EAST_1)
             s3_client.create_bucket(Bucket="test")
             logs_client.create_log_group(logGroupName="/log-group/test")
             cloudtrail_client.create_trail(
                 Name="test_trail",
                 S3BucketName="test",
    -            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION}:{DEFAULT_ACCOUNT_ID}:log-group:/log-group/test:*",
    +            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION_EU_WEST_1}:{AWS_ACCOUNT_NUMBER}:log-group:/log-group/test:*",
             )
             logs_client.put_metric_filter(
                 logGroupName="/log-group/test",
    @@ -256,7 +227,9 @@ def test_cloudwatch_trail_with_log_group_with_metric(self):
                 Logs,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             from prowler.providers.common.models import Audit_Metadata
     
    @@ -296,22 +269,24 @@ def test_cloudwatch_trail_with_log_group_with_metric(self):
                     == "CloudWatch log group /log-group/test found with metric filter test-filter but no alarms associated."
                 )
                 assert result[0].resource_id == "/log-group/test"
    +            assert (
    +                result[0].resource_arn
    +                == f"arn:aws:logs:{AWS_REGION_US_EAST_1}:{AWS_ACCOUNT_NUMBER}:metric-filter/test-filter"
    +            )
    +            assert result[0].region == AWS_REGION_US_EAST_1
     
    -    @mock_logs
    -    @mock_cloudtrail
    -    @mock_cloudwatch
    -    @mock_s3
    +    @mock_aws
         def test_cloudwatch_trail_with_log_group_with_metric_and_alarm(self):
    -        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION)
    -        cloudwatch_client = client("cloudwatch", region_name=AWS_REGION)
    -        logs_client = client("logs", region_name=AWS_REGION)
    -        s3_client = client("s3", region_name=AWS_REGION)
    +        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION_US_EAST_1)
    +        cloudwatch_client = client("cloudwatch", region_name=AWS_REGION_US_EAST_1)
    +        logs_client = client("logs", region_name=AWS_REGION_US_EAST_1)
    +        s3_client = client("s3", region_name=AWS_REGION_US_EAST_1)
             s3_client.create_bucket(Bucket="test")
             logs_client.create_log_group(logGroupName="/log-group/test")
             cloudtrail_client.create_trail(
                 Name="test_trail",
                 S3BucketName="test",
    -            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION}:{DEFAULT_ACCOUNT_ID}:log-group:/log-group/test:*",
    +            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION_EU_WEST_1}:{AWS_ACCOUNT_NUMBER}:log-group:/log-group/test:*",
             )
             logs_client.put_metric_filter(
                 logGroupName="/log-group/test",
    @@ -345,7 +320,9 @@ def test_cloudwatch_trail_with_log_group_with_metric_and_alarm(self):
                 Logs,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             from prowler.providers.common.models import Audit_Metadata
     
    @@ -385,22 +362,24 @@ def test_cloudwatch_trail_with_log_group_with_metric_and_alarm(self):
                     == "CloudWatch log group /log-group/test found with metric filter test-filter and alarms set."
                 )
                 assert result[0].resource_id == "/log-group/test"
    +            assert (
    +                result[0].resource_arn
    +                == f"arn:aws:logs:{AWS_REGION_US_EAST_1}:{AWS_ACCOUNT_NUMBER}:metric-filter/test-filter"
    +            )
    +            assert result[0].region == AWS_REGION_US_EAST_1
     
    -    @mock_logs
    -    @mock_cloudtrail
    -    @mock_cloudwatch
    -    @mock_s3
    +    @mock_aws
         def test_cloudwatch_trail_with_log_group_with_metric_and_alarm_with_quotes(self):
    -        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION)
    -        cloudwatch_client = client("cloudwatch", region_name=AWS_REGION)
    -        logs_client = client("logs", region_name=AWS_REGION)
    -        s3_client = client("s3", region_name=AWS_REGION)
    +        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION_US_EAST_1)
    +        cloudwatch_client = client("cloudwatch", region_name=AWS_REGION_US_EAST_1)
    +        logs_client = client("logs", region_name=AWS_REGION_US_EAST_1)
    +        s3_client = client("s3", region_name=AWS_REGION_US_EAST_1)
             s3_client.create_bucket(Bucket="test")
             logs_client.create_log_group(logGroupName="/log-group/test")
             cloudtrail_client.create_trail(
                 Name="test_trail",
                 S3BucketName="test",
    -            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION}:{DEFAULT_ACCOUNT_ID}:log-group:/log-group/test:*",
    +            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION_EU_WEST_1}:{AWS_ACCOUNT_NUMBER}:log-group:/log-group/test:*",
             )
             logs_client.put_metric_filter(
                 logGroupName="/log-group/test",
    @@ -434,7 +413,9 @@ def test_cloudwatch_trail_with_log_group_with_metric_and_alarm_with_quotes(self)
                 Logs,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             from prowler.providers.common.models import Audit_Metadata
     
    @@ -474,22 +455,24 @@ def test_cloudwatch_trail_with_log_group_with_metric_and_alarm_with_quotes(self)
                     == "CloudWatch log group /log-group/test found with metric filter test-filter and alarms set."
                 )
                 assert result[0].resource_id == "/log-group/test"
    +            assert (
    +                result[0].resource_arn
    +                == f"arn:aws:logs:{AWS_REGION_US_EAST_1}:{AWS_ACCOUNT_NUMBER}:metric-filter/test-filter"
    +            )
    +            assert result[0].region == AWS_REGION_US_EAST_1
     
    -    @mock_logs
    -    @mock_cloudtrail
    -    @mock_cloudwatch
    -    @mock_s3
    +    @mock_aws
         def test_cloudwatch_trail_with_log_group_with_metric_and_alarm_with_newlines(self):
    -        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION)
    -        cloudwatch_client = client("cloudwatch", region_name=AWS_REGION)
    -        logs_client = client("logs", region_name=AWS_REGION)
    -        s3_client = client("s3", region_name=AWS_REGION)
    +        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION_US_EAST_1)
    +        cloudwatch_client = client("cloudwatch", region_name=AWS_REGION_US_EAST_1)
    +        logs_client = client("logs", region_name=AWS_REGION_US_EAST_1)
    +        s3_client = client("s3", region_name=AWS_REGION_US_EAST_1)
             s3_client.create_bucket(Bucket="test")
             logs_client.create_log_group(logGroupName="/log-group/test")
             cloudtrail_client.create_trail(
                 Name="test_trail",
                 S3BucketName="test",
    -            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION}:{DEFAULT_ACCOUNT_ID}:log-group:/log-group/test:*",
    +            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION_EU_WEST_1}:{AWS_ACCOUNT_NUMBER}:log-group:/log-group/test:*",
             )
             logs_client.put_metric_filter(
                 logGroupName="/log-group/test",
    @@ -523,7 +506,9 @@ def test_cloudwatch_trail_with_log_group_with_metric_and_alarm_with_newlines(sel
                 Logs,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             from prowler.providers.common.models import Audit_Metadata
     
    @@ -563,3 +548,8 @@ def test_cloudwatch_trail_with_log_group_with_metric_and_alarm_with_newlines(sel
                     == "CloudWatch log group /log-group/test found with metric filter test-filter and alarms set."
                 )
                 assert result[0].resource_id == "/log-group/test"
    +            assert (
    +                result[0].resource_arn
    +                == f"arn:aws:logs:{AWS_REGION_US_EAST_1}:{AWS_ACCOUNT_NUMBER}:metric-filter/test-filter"
    +            )
    +            assert result[0].region == AWS_REGION_US_EAST_1
    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 c4eab9e94b9..d3a7bd9f940 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
    @@ -1,51 +1,19 @@
     from unittest import mock
     
    -from boto3 import client, session
    -from moto import mock_cloudtrail, mock_cloudwatch, mock_logs, mock_s3
    -from moto.core import DEFAULT_ACCOUNT_ID
    +from boto3 import client
    +from moto import mock_aws
     
    -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"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_ACCOUNT_ARN,
    +    AWS_ACCOUNT_NUMBER,
    +    AWS_REGION_EU_WEST_1,
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     
     class Test_cloudwatch_log_metric_filter_unauthorized_api_calls:
    -    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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=["us-east-1", "eu-west-1"],
    -            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
    -
    -    @mock_logs
    -    @mock_cloudtrail
    -    @mock_cloudwatch
    +    @mock_aws
         def test_cloudwatch_no_log_groups(self):
             from prowler.providers.aws.services.cloudtrail.cloudtrail_service import (
                 Cloudtrail,
    @@ -55,7 +23,9 @@ def test_cloudwatch_no_log_groups(self):
                 Logs,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             from prowler.providers.common.models import Audit_Metadata
     
    @@ -94,15 +64,14 @@ def test_cloudwatch_no_log_groups(self):
                     result[0].status_extended
                     == "No CloudWatch log groups found with metric filters or alarms associated."
                 )
    -            assert result[0].resource_id == current_audit_info.audited_account
    +            assert result[0].resource_id == AWS_ACCOUNT_NUMBER
    +            assert result[0].resource_arn == AWS_ACCOUNT_ARN
    +            assert result[0].region == AWS_REGION_EU_WEST_1
     
    -    @mock_logs
    -    @mock_cloudtrail
    -    @mock_cloudwatch
    -    @mock_s3
    +    @mock_aws
         def test_cloudwatch_trail_no_log_group(self):
    -        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION)
    -        s3_client = client("s3", region_name=AWS_REGION)
    +        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION_US_EAST_1)
    +        s3_client = client("s3", region_name=AWS_REGION_US_EAST_1)
             s3_client.create_bucket(Bucket="test")
             cloudtrail_client.create_trail(Name="test_trail", S3BucketName="test")
     
    @@ -114,7 +83,9 @@ def test_cloudwatch_trail_no_log_group(self):
                 Logs,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             from prowler.providers.common.models import Audit_Metadata
     
    @@ -153,22 +124,21 @@ def test_cloudwatch_trail_no_log_group(self):
                     result[0].status_extended
                     == "No CloudWatch log groups found with metric filters or alarms associated."
                 )
    -            assert result[0].resource_id == current_audit_info.audited_account
    +            assert result[0].resource_id == AWS_ACCOUNT_NUMBER
    +            assert result[0].resource_arn == AWS_ACCOUNT_ARN
    +            assert result[0].region == AWS_REGION_EU_WEST_1
     
    -    @mock_logs
    -    @mock_cloudtrail
    -    @mock_cloudwatch
    -    @mock_s3
    +    @mock_aws
         def test_cloudwatch_trail_with_log_group(self):
    -        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION)
    -        logs_client = client("logs", region_name=AWS_REGION)
    -        s3_client = client("s3", region_name=AWS_REGION)
    +        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION_US_EAST_1)
    +        logs_client = client("logs", region_name=AWS_REGION_US_EAST_1)
    +        s3_client = client("s3", region_name=AWS_REGION_US_EAST_1)
             s3_client.create_bucket(Bucket="test")
             logs_client.create_log_group(logGroupName="/log-group/test")
             cloudtrail_client.create_trail(
                 Name="test_trail",
                 S3BucketName="test",
    -            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION}:{DEFAULT_ACCOUNT_ID}:log-group:/log-group/test:*",
    +            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION_EU_WEST_1}:{AWS_ACCOUNT_NUMBER}:log-group:/log-group/test:*",
             )
     
             from prowler.providers.aws.services.cloudtrail.cloudtrail_service import (
    @@ -179,7 +149,9 @@ def test_cloudwatch_trail_with_log_group(self):
                 Logs,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             from prowler.providers.common.models import Audit_Metadata
     
    @@ -218,22 +190,21 @@ def test_cloudwatch_trail_with_log_group(self):
                     result[0].status_extended
                     == "No CloudWatch log groups found with metric filters or alarms associated."
                 )
    -            assert result[0].resource_id == current_audit_info.audited_account
    +            assert result[0].resource_id == AWS_ACCOUNT_NUMBER
    +            assert result[0].resource_arn == AWS_ACCOUNT_ARN
    +            assert result[0].region == AWS_REGION_EU_WEST_1
     
    -    @mock_logs
    -    @mock_cloudtrail
    -    @mock_cloudwatch
    -    @mock_s3
    +    @mock_aws
         def test_cloudwatch_trail_with_log_group_with_metric(self):
    -        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION)
    -        logs_client = client("logs", region_name=AWS_REGION)
    -        s3_client = client("s3", region_name=AWS_REGION)
    +        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION_US_EAST_1)
    +        logs_client = client("logs", region_name=AWS_REGION_US_EAST_1)
    +        s3_client = client("s3", region_name=AWS_REGION_US_EAST_1)
             s3_client.create_bucket(Bucket="test")
             logs_client.create_log_group(logGroupName="/log-group/test")
             cloudtrail_client.create_trail(
                 Name="test_trail",
                 S3BucketName="test",
    -            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION}:{DEFAULT_ACCOUNT_ID}:log-group:/log-group/test:*",
    +            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION_EU_WEST_1}:{AWS_ACCOUNT_NUMBER}:log-group:/log-group/test:*",
             )
             logs_client.put_metric_filter(
                 logGroupName="/log-group/test",
    @@ -256,7 +227,9 @@ def test_cloudwatch_trail_with_log_group_with_metric(self):
                 Logs,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             from prowler.providers.common.models import Audit_Metadata
     
    @@ -296,22 +269,24 @@ def test_cloudwatch_trail_with_log_group_with_metric(self):
                     == "CloudWatch log group /log-group/test found with metric filter test-filter but no alarms associated."
                 )
                 assert result[0].resource_id == "/log-group/test"
    +            assert (
    +                result[0].resource_arn
    +                == f"arn:aws:logs:{AWS_REGION_US_EAST_1}:{AWS_ACCOUNT_NUMBER}:metric-filter/test-filter"
    +            )
    +            assert result[0].region == AWS_REGION_US_EAST_1
     
    -    @mock_logs
    -    @mock_cloudtrail
    -    @mock_cloudwatch
    -    @mock_s3
    +    @mock_aws
         def test_cloudwatch_trail_with_log_group_with_metric_and_alarm(self):
    -        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION)
    -        cloudwatch_client = client("cloudwatch", region_name=AWS_REGION)
    -        logs_client = client("logs", region_name=AWS_REGION)
    -        s3_client = client("s3", region_name=AWS_REGION)
    +        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION_US_EAST_1)
    +        cloudwatch_client = client("cloudwatch", region_name=AWS_REGION_US_EAST_1)
    +        logs_client = client("logs", region_name=AWS_REGION_US_EAST_1)
    +        s3_client = client("s3", region_name=AWS_REGION_US_EAST_1)
             s3_client.create_bucket(Bucket="test")
             logs_client.create_log_group(logGroupName="/log-group/test")
             cloudtrail_client.create_trail(
                 Name="test_trail",
                 S3BucketName="test",
    -            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION}:{DEFAULT_ACCOUNT_ID}:log-group:/log-group/test:*",
    +            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION_EU_WEST_1}:{AWS_ACCOUNT_NUMBER}:log-group:/log-group/test:*",
             )
             logs_client.put_metric_filter(
                 logGroupName="/log-group/test",
    @@ -345,7 +320,9 @@ def test_cloudwatch_trail_with_log_group_with_metric_and_alarm(self):
                 Logs,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             from prowler.providers.common.models import Audit_Metadata
     
    @@ -385,22 +362,24 @@ def test_cloudwatch_trail_with_log_group_with_metric_and_alarm(self):
                     == "CloudWatch log group /log-group/test found with metric filter test-filter and alarms set."
                 )
                 assert result[0].resource_id == "/log-group/test"
    +            assert (
    +                result[0].resource_arn
    +                == f"arn:aws:logs:{AWS_REGION_US_EAST_1}:{AWS_ACCOUNT_NUMBER}:metric-filter/test-filter"
    +            )
    +            assert result[0].region == AWS_REGION_US_EAST_1
     
    -    @mock_logs
    -    @mock_cloudtrail
    -    @mock_cloudwatch
    -    @mock_s3
    +    @mock_aws
         def test_cloudwatch_trail_with_log_group_with_metric_and_alarm_with_quotes(self):
    -        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION)
    -        cloudwatch_client = client("cloudwatch", region_name=AWS_REGION)
    -        logs_client = client("logs", region_name=AWS_REGION)
    -        s3_client = client("s3", region_name=AWS_REGION)
    +        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION_US_EAST_1)
    +        cloudwatch_client = client("cloudwatch", region_name=AWS_REGION_US_EAST_1)
    +        logs_client = client("logs", region_name=AWS_REGION_US_EAST_1)
    +        s3_client = client("s3", region_name=AWS_REGION_US_EAST_1)
             s3_client.create_bucket(Bucket="test")
             logs_client.create_log_group(logGroupName="/log-group/test")
             cloudtrail_client.create_trail(
                 Name="test_trail",
                 S3BucketName="test",
    -            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION}:{DEFAULT_ACCOUNT_ID}:log-group:/log-group/test:*",
    +            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION_EU_WEST_1}:{AWS_ACCOUNT_NUMBER}:log-group:/log-group/test:*",
             )
             logs_client.put_metric_filter(
                 logGroupName="/log-group/test",
    @@ -434,7 +413,9 @@ def test_cloudwatch_trail_with_log_group_with_metric_and_alarm_with_quotes(self)
                 Logs,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             from prowler.providers.common.models import Audit_Metadata
     
    @@ -474,22 +455,24 @@ def test_cloudwatch_trail_with_log_group_with_metric_and_alarm_with_quotes(self)
                     == "CloudWatch log group /log-group/test found with metric filter test-filter and alarms set."
                 )
                 assert result[0].resource_id == "/log-group/test"
    +            assert (
    +                result[0].resource_arn
    +                == f"arn:aws:logs:{AWS_REGION_US_EAST_1}:{AWS_ACCOUNT_NUMBER}:metric-filter/test-filter"
    +            )
    +            assert result[0].region == AWS_REGION_US_EAST_1
     
    -    @mock_logs
    -    @mock_cloudtrail
    -    @mock_cloudwatch
    -    @mock_s3
    +    @mock_aws
         def test_cloudwatch_trail_with_log_group_with_metric_and_alarm_with_newlines(self):
    -        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION)
    -        cloudwatch_client = client("cloudwatch", region_name=AWS_REGION)
    -        logs_client = client("logs", region_name=AWS_REGION)
    -        s3_client = client("s3", region_name=AWS_REGION)
    +        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION_US_EAST_1)
    +        cloudwatch_client = client("cloudwatch", region_name=AWS_REGION_US_EAST_1)
    +        logs_client = client("logs", region_name=AWS_REGION_US_EAST_1)
    +        s3_client = client("s3", region_name=AWS_REGION_US_EAST_1)
             s3_client.create_bucket(Bucket="test")
             logs_client.create_log_group(logGroupName="/log-group/test")
             cloudtrail_client.create_trail(
                 Name="test_trail",
                 S3BucketName="test",
    -            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION}:{DEFAULT_ACCOUNT_ID}:log-group:/log-group/test:*",
    +            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION_EU_WEST_1}:{AWS_ACCOUNT_NUMBER}:log-group:/log-group/test:*",
             )
             logs_client.put_metric_filter(
                 logGroupName="/log-group/test",
    @@ -523,7 +506,9 @@ def test_cloudwatch_trail_with_log_group_with_metric_and_alarm_with_newlines(sel
                 Logs,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             from prowler.providers.common.models import Audit_Metadata
     
    @@ -563,3 +548,8 @@ def test_cloudwatch_trail_with_log_group_with_metric_and_alarm_with_newlines(sel
                     == "CloudWatch log group /log-group/test found with metric filter test-filter and alarms set."
                 )
                 assert result[0].resource_id == "/log-group/test"
    +            assert (
    +                result[0].resource_arn
    +                == f"arn:aws:logs:{AWS_REGION_US_EAST_1}:{AWS_ACCOUNT_NUMBER}:metric-filter/test-filter"
    +            )
    +            assert result[0].region == AWS_REGION_US_EAST_1
    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 9047d3baf27..ec1abf59a27 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
    @@ -1,51 +1,19 @@
     from unittest import mock
     
    -from boto3 import client, session
    -from moto import mock_cloudtrail, mock_cloudwatch, mock_logs, mock_s3
    -from moto.core import DEFAULT_ACCOUNT_ID
    +from boto3 import client
    +from moto import mock_aws
     
    -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"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_ACCOUNT_ARN,
    +    AWS_ACCOUNT_NUMBER,
    +    AWS_REGION_EU_WEST_1,
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     
     class Test_cloudwatch_log_metric_filter_root_usage:
    -    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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=["us-east-1", "eu-west-1"],
    -            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
    -
    -    @mock_logs
    -    @mock_cloudtrail
    -    @mock_cloudwatch
    +    @mock_aws
         def test_cloudwatch_no_log_groups(self):
             from prowler.providers.aws.services.cloudtrail.cloudtrail_service import (
                 Cloudtrail,
    @@ -55,7 +23,9 @@ def test_cloudwatch_no_log_groups(self):
                 Logs,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             from prowler.providers.common.models import Audit_Metadata
     
    @@ -94,15 +64,14 @@ def test_cloudwatch_no_log_groups(self):
                     result[0].status_extended
                     == "No CloudWatch log groups found with metric filters or alarms associated."
                 )
    -            assert result[0].resource_id == current_audit_info.audited_account
    +            assert result[0].resource_id == AWS_ACCOUNT_NUMBER
    +            assert result[0].resource_arn == AWS_ACCOUNT_ARN
    +            assert result[0].region == AWS_REGION_EU_WEST_1
     
    -    @mock_logs
    -    @mock_cloudtrail
    -    @mock_cloudwatch
    -    @mock_s3
    +    @mock_aws
         def test_cloudwatch_trail_no_log_group(self):
    -        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION)
    -        s3_client = client("s3", region_name=AWS_REGION)
    +        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION_US_EAST_1)
    +        s3_client = client("s3", region_name=AWS_REGION_US_EAST_1)
             s3_client.create_bucket(Bucket="test")
             cloudtrail_client.create_trail(Name="test_trail", S3BucketName="test")
     
    @@ -114,7 +83,9 @@ def test_cloudwatch_trail_no_log_group(self):
                 Logs,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             from prowler.providers.common.models import Audit_Metadata
     
    @@ -153,22 +124,21 @@ def test_cloudwatch_trail_no_log_group(self):
                     result[0].status_extended
                     == "No CloudWatch log groups found with metric filters or alarms associated."
                 )
    -            assert result[0].resource_id == current_audit_info.audited_account
    +            assert result[0].resource_id == AWS_ACCOUNT_NUMBER
    +            assert result[0].resource_arn == AWS_ACCOUNT_ARN
    +            assert result[0].region == AWS_REGION_EU_WEST_1
     
    -    @mock_logs
    -    @mock_cloudtrail
    -    @mock_cloudwatch
    -    @mock_s3
    +    @mock_aws
         def test_cloudwatch_trail_with_log_group(self):
    -        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION)
    -        logs_client = client("logs", region_name=AWS_REGION)
    -        s3_client = client("s3", region_name=AWS_REGION)
    +        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION_US_EAST_1)
    +        logs_client = client("logs", region_name=AWS_REGION_US_EAST_1)
    +        s3_client = client("s3", region_name=AWS_REGION_US_EAST_1)
             s3_client.create_bucket(Bucket="test")
             logs_client.create_log_group(logGroupName="/log-group/test")
             cloudtrail_client.create_trail(
                 Name="test_trail",
                 S3BucketName="test",
    -            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION}:{DEFAULT_ACCOUNT_ID}:log-group:/log-group/test:*",
    +            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION_EU_WEST_1}:{AWS_ACCOUNT_NUMBER}:log-group:/log-group/test:*",
             )
     
             from prowler.providers.aws.services.cloudtrail.cloudtrail_service import (
    @@ -179,7 +149,9 @@ def test_cloudwatch_trail_with_log_group(self):
                 Logs,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             from prowler.providers.common.models import Audit_Metadata
     
    @@ -218,22 +190,21 @@ def test_cloudwatch_trail_with_log_group(self):
                     result[0].status_extended
                     == "No CloudWatch log groups found with metric filters or alarms associated."
                 )
    -            assert result[0].resource_id == current_audit_info.audited_account
    +            assert result[0].resource_id == AWS_ACCOUNT_NUMBER
    +            assert result[0].resource_arn == AWS_ACCOUNT_ARN
    +            assert result[0].region == AWS_REGION_EU_WEST_1
     
    -    @mock_logs
    -    @mock_cloudtrail
    -    @mock_cloudwatch
    -    @mock_s3
    +    @mock_aws
         def test_cloudwatch_trail_with_log_group_with_metric(self):
    -        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION)
    -        logs_client = client("logs", region_name=AWS_REGION)
    -        s3_client = client("s3", region_name=AWS_REGION)
    +        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION_US_EAST_1)
    +        logs_client = client("logs", region_name=AWS_REGION_US_EAST_1)
    +        s3_client = client("s3", region_name=AWS_REGION_US_EAST_1)
             s3_client.create_bucket(Bucket="test")
             logs_client.create_log_group(logGroupName="/log-group/test")
             cloudtrail_client.create_trail(
                 Name="test_trail",
                 S3BucketName="test",
    -            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION}:{DEFAULT_ACCOUNT_ID}:log-group:/log-group/test:*",
    +            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION_EU_WEST_1}:{AWS_ACCOUNT_NUMBER}:log-group:/log-group/test:*",
             )
             logs_client.put_metric_filter(
                 logGroupName="/log-group/test",
    @@ -256,7 +227,9 @@ def test_cloudwatch_trail_with_log_group_with_metric(self):
                 Logs,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             from prowler.providers.common.models import Audit_Metadata
     
    @@ -296,22 +269,24 @@ def test_cloudwatch_trail_with_log_group_with_metric(self):
                     == "CloudWatch log group /log-group/test found with metric filter test-filter but no alarms associated."
                 )
                 assert result[0].resource_id == "/log-group/test"
    +            assert (
    +                result[0].resource_arn
    +                == f"arn:aws:logs:{AWS_REGION_US_EAST_1}:{AWS_ACCOUNT_NUMBER}:metric-filter/test-filter"
    +            )
    +            assert result[0].region == AWS_REGION_US_EAST_1
     
    -    @mock_logs
    -    @mock_cloudtrail
    -    @mock_cloudwatch
    -    @mock_s3
    +    @mock_aws
         def test_cloudwatch_trail_with_log_group_with_metric_and_alarm(self):
    -        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION)
    -        cloudwatch_client = client("cloudwatch", region_name=AWS_REGION)
    -        logs_client = client("logs", region_name=AWS_REGION)
    -        s3_client = client("s3", region_name=AWS_REGION)
    +        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION_US_EAST_1)
    +        cloudwatch_client = client("cloudwatch", region_name=AWS_REGION_US_EAST_1)
    +        logs_client = client("logs", region_name=AWS_REGION_US_EAST_1)
    +        s3_client = client("s3", region_name=AWS_REGION_US_EAST_1)
             s3_client.create_bucket(Bucket="test")
             logs_client.create_log_group(logGroupName="/log-group/test")
             cloudtrail_client.create_trail(
                 Name="test_trail",
                 S3BucketName="test",
    -            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION}:{DEFAULT_ACCOUNT_ID}:log-group:/log-group/test:*",
    +            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION_EU_WEST_1}:{AWS_ACCOUNT_NUMBER}:log-group:/log-group/test:*",
             )
             logs_client.put_metric_filter(
                 logGroupName="/log-group/test",
    @@ -345,7 +320,9 @@ def test_cloudwatch_trail_with_log_group_with_metric_and_alarm(self):
                 Logs,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             from prowler.providers.common.models import Audit_Metadata
     
    @@ -385,22 +362,24 @@ def test_cloudwatch_trail_with_log_group_with_metric_and_alarm(self):
                     == "CloudWatch log group /log-group/test found with metric filter test-filter and alarms set."
                 )
                 assert result[0].resource_id == "/log-group/test"
    +            assert (
    +                result[0].resource_arn
    +                == f"arn:aws:logs:{AWS_REGION_US_EAST_1}:{AWS_ACCOUNT_NUMBER}:metric-filter/test-filter"
    +            )
    +            assert result[0].region == AWS_REGION_US_EAST_1
     
    -    @mock_logs
    -    @mock_cloudtrail
    -    @mock_cloudwatch
    -    @mock_s3
    +    @mock_aws
         def test_cloudwatch_trail_with_log_group_with_metric_and_alarm_with_quotes(self):
    -        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION)
    -        cloudwatch_client = client("cloudwatch", region_name=AWS_REGION)
    -        logs_client = client("logs", region_name=AWS_REGION)
    -        s3_client = client("s3", region_name=AWS_REGION)
    +        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION_US_EAST_1)
    +        cloudwatch_client = client("cloudwatch", region_name=AWS_REGION_US_EAST_1)
    +        logs_client = client("logs", region_name=AWS_REGION_US_EAST_1)
    +        s3_client = client("s3", region_name=AWS_REGION_US_EAST_1)
             s3_client.create_bucket(Bucket="test")
             logs_client.create_log_group(logGroupName="/log-group/test")
             cloudtrail_client.create_trail(
                 Name="test_trail",
                 S3BucketName="test",
    -            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION}:{DEFAULT_ACCOUNT_ID}:log-group:/log-group/test:*",
    +            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION_EU_WEST_1}:{AWS_ACCOUNT_NUMBER}:log-group:/log-group/test:*",
             )
             logs_client.put_metric_filter(
                 logGroupName="/log-group/test",
    @@ -434,7 +413,9 @@ def test_cloudwatch_trail_with_log_group_with_metric_and_alarm_with_quotes(self)
                 Logs,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             from prowler.providers.common.models import Audit_Metadata
     
    @@ -474,22 +455,24 @@ def test_cloudwatch_trail_with_log_group_with_metric_and_alarm_with_quotes(self)
                     == "CloudWatch log group /log-group/test found with metric filter test-filter and alarms set."
                 )
                 assert result[0].resource_id == "/log-group/test"
    +            assert (
    +                result[0].resource_arn
    +                == f"arn:aws:logs:{AWS_REGION_US_EAST_1}:{AWS_ACCOUNT_NUMBER}:metric-filter/test-filter"
    +            )
    +            assert result[0].region == AWS_REGION_US_EAST_1
     
    -    @mock_logs
    -    @mock_cloudtrail
    -    @mock_cloudwatch
    -    @mock_s3
    +    @mock_aws
         def test_cloudwatch_trail_with_log_group_with_metric_and_alarm_with_newlines(self):
    -        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION)
    -        cloudwatch_client = client("cloudwatch", region_name=AWS_REGION)
    -        logs_client = client("logs", region_name=AWS_REGION)
    -        s3_client = client("s3", region_name=AWS_REGION)
    +        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION_US_EAST_1)
    +        cloudwatch_client = client("cloudwatch", region_name=AWS_REGION_US_EAST_1)
    +        logs_client = client("logs", region_name=AWS_REGION_US_EAST_1)
    +        s3_client = client("s3", region_name=AWS_REGION_US_EAST_1)
             s3_client.create_bucket(Bucket="test")
             logs_client.create_log_group(logGroupName="/log-group/test")
             cloudtrail_client.create_trail(
                 Name="test_trail",
                 S3BucketName="test",
    -            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION}:{DEFAULT_ACCOUNT_ID}:log-group:/log-group/test:*",
    +            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION_EU_WEST_1}:{AWS_ACCOUNT_NUMBER}:log-group:/log-group/test:*",
             )
             logs_client.put_metric_filter(
                 logGroupName="/log-group/test",
    @@ -523,7 +506,9 @@ def test_cloudwatch_trail_with_log_group_with_metric_and_alarm_with_newlines(sel
                 Logs,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             from prowler.providers.common.models import Audit_Metadata
     
    @@ -563,3 +548,8 @@ def test_cloudwatch_trail_with_log_group_with_metric_and_alarm_with_newlines(sel
                     == "CloudWatch log group /log-group/test found with metric filter test-filter and alarms set."
                 )
                 assert result[0].resource_id == "/log-group/test"
    +            assert (
    +                result[0].resource_arn
    +                == f"arn:aws:logs:{AWS_REGION_US_EAST_1}:{AWS_ACCOUNT_NUMBER}:metric-filter/test-filter"
    +            )
    +            assert result[0].region == AWS_REGION_US_EAST_1
    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 2c5e0010983..455b10f5429 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
    @@ -1,51 +1,19 @@
     from unittest import mock
     
    -from boto3 import client, session
    -from moto import mock_cloudtrail, mock_cloudwatch, mock_logs, mock_s3
    -from moto.core import DEFAULT_ACCOUNT_ID
    +from boto3 import client
    +from moto import mock_aws
     
    -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"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_ACCOUNT_ARN,
    +    AWS_ACCOUNT_NUMBER,
    +    AWS_REGION_EU_WEST_1,
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     
     class Test_cloudwatch_log_metric_filter_unauthorized_api_calls:
    -    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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=["us-east-1", "eu-west-1"],
    -            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
    -
    -    @mock_logs
    -    @mock_cloudtrail
    -    @mock_cloudwatch
    +    @mock_aws
         def test_cloudwatch_no_log_groups(self):
             from prowler.providers.aws.services.cloudtrail.cloudtrail_service import (
                 Cloudtrail,
    @@ -55,7 +23,9 @@ def test_cloudwatch_no_log_groups(self):
                 Logs,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             from prowler.providers.common.models import Audit_Metadata
     
    @@ -94,15 +64,14 @@ def test_cloudwatch_no_log_groups(self):
                     result[0].status_extended
                     == "No CloudWatch log groups found with metric filters or alarms associated."
                 )
    -            assert result[0].resource_id == current_audit_info.audited_account
    +            assert result[0].resource_id == AWS_ACCOUNT_NUMBER
    +            assert result[0].resource_arn == AWS_ACCOUNT_ARN
    +            assert result[0].region == AWS_REGION_EU_WEST_1
     
    -    @mock_logs
    -    @mock_cloudtrail
    -    @mock_cloudwatch
    -    @mock_s3
    +    @mock_aws
         def test_cloudwatch_trail_no_log_group(self):
    -        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION)
    -        s3_client = client("s3", region_name=AWS_REGION)
    +        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION_US_EAST_1)
    +        s3_client = client("s3", region_name=AWS_REGION_US_EAST_1)
             s3_client.create_bucket(Bucket="test")
             cloudtrail_client.create_trail(Name="test_trail", S3BucketName="test")
     
    @@ -114,7 +83,9 @@ def test_cloudwatch_trail_no_log_group(self):
                 Logs,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             from prowler.providers.common.models import Audit_Metadata
     
    @@ -153,22 +124,21 @@ def test_cloudwatch_trail_no_log_group(self):
                     result[0].status_extended
                     == "No CloudWatch log groups found with metric filters or alarms associated."
                 )
    -            assert result[0].resource_id == current_audit_info.audited_account
    +            assert result[0].resource_id == AWS_ACCOUNT_NUMBER
    +            assert result[0].resource_arn == AWS_ACCOUNT_ARN
    +            assert result[0].region == AWS_REGION_EU_WEST_1
     
    -    @mock_logs
    -    @mock_cloudtrail
    -    @mock_cloudwatch
    -    @mock_s3
    +    @mock_aws
         def test_cloudwatch_trail_with_log_group(self):
    -        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION)
    -        logs_client = client("logs", region_name=AWS_REGION)
    -        s3_client = client("s3", region_name=AWS_REGION)
    +        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION_US_EAST_1)
    +        logs_client = client("logs", region_name=AWS_REGION_US_EAST_1)
    +        s3_client = client("s3", region_name=AWS_REGION_US_EAST_1)
             s3_client.create_bucket(Bucket="test")
             logs_client.create_log_group(logGroupName="/log-group/test")
             cloudtrail_client.create_trail(
                 Name="test_trail",
                 S3BucketName="test",
    -            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION}:{DEFAULT_ACCOUNT_ID}:log-group:/log-group/test:*",
    +            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION_EU_WEST_1}:{AWS_ACCOUNT_NUMBER}:log-group:/log-group/test:*",
             )
     
             from prowler.providers.aws.services.cloudtrail.cloudtrail_service import (
    @@ -179,7 +149,9 @@ def test_cloudwatch_trail_with_log_group(self):
                 Logs,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             from prowler.providers.common.models import Audit_Metadata
     
    @@ -218,22 +190,21 @@ def test_cloudwatch_trail_with_log_group(self):
                     result[0].status_extended
                     == "No CloudWatch log groups found with metric filters or alarms associated."
                 )
    -            assert result[0].resource_id == current_audit_info.audited_account
    +            assert result[0].resource_id == AWS_ACCOUNT_NUMBER
    +            assert result[0].resource_arn == AWS_ACCOUNT_ARN
    +            assert result[0].region == AWS_REGION_EU_WEST_1
     
    -    @mock_logs
    -    @mock_cloudtrail
    -    @mock_cloudwatch
    -    @mock_s3
    +    @mock_aws
         def test_cloudwatch_trail_with_log_group_with_metric(self):
    -        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION)
    -        logs_client = client("logs", region_name=AWS_REGION)
    -        s3_client = client("s3", region_name=AWS_REGION)
    +        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION_US_EAST_1)
    +        logs_client = client("logs", region_name=AWS_REGION_US_EAST_1)
    +        s3_client = client("s3", region_name=AWS_REGION_US_EAST_1)
             s3_client.create_bucket(Bucket="test")
             logs_client.create_log_group(logGroupName="/log-group/test")
             cloudtrail_client.create_trail(
                 Name="test_trail",
                 S3BucketName="test",
    -            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION}:{DEFAULT_ACCOUNT_ID}:log-group:/log-group/test:*",
    +            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION_EU_WEST_1}:{AWS_ACCOUNT_NUMBER}:log-group:/log-group/test:*",
             )
             logs_client.put_metric_filter(
                 logGroupName="/log-group/test",
    @@ -256,7 +227,9 @@ def test_cloudwatch_trail_with_log_group_with_metric(self):
                 Logs,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             from prowler.providers.common.models import Audit_Metadata
     
    @@ -296,22 +269,24 @@ def test_cloudwatch_trail_with_log_group_with_metric(self):
                     == "CloudWatch log group /log-group/test found with metric filter test-filter but no alarms associated."
                 )
                 assert result[0].resource_id == "/log-group/test"
    +            assert (
    +                result[0].resource_arn
    +                == f"arn:aws:logs:{AWS_REGION_US_EAST_1}:{AWS_ACCOUNT_NUMBER}:metric-filter/test-filter"
    +            )
    +            assert result[0].region == AWS_REGION_US_EAST_1
     
    -    @mock_logs
    -    @mock_cloudtrail
    -    @mock_cloudwatch
    -    @mock_s3
    +    @mock_aws
         def test_cloudwatch_trail_with_log_group_with_metric_and_alarm(self):
    -        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION)
    -        cloudwatch_client = client("cloudwatch", region_name=AWS_REGION)
    -        logs_client = client("logs", region_name=AWS_REGION)
    -        s3_client = client("s3", region_name=AWS_REGION)
    +        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION_US_EAST_1)
    +        cloudwatch_client = client("cloudwatch", region_name=AWS_REGION_US_EAST_1)
    +        logs_client = client("logs", region_name=AWS_REGION_US_EAST_1)
    +        s3_client = client("s3", region_name=AWS_REGION_US_EAST_1)
             s3_client.create_bucket(Bucket="test")
             logs_client.create_log_group(logGroupName="/log-group/test")
             cloudtrail_client.create_trail(
                 Name="test_trail",
                 S3BucketName="test",
    -            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION}:{DEFAULT_ACCOUNT_ID}:log-group:/log-group/test:*",
    +            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION_EU_WEST_1}:{AWS_ACCOUNT_NUMBER}:log-group:/log-group/test:*",
             )
             logs_client.put_metric_filter(
                 logGroupName="/log-group/test",
    @@ -345,7 +320,9 @@ def test_cloudwatch_trail_with_log_group_with_metric_and_alarm(self):
                 Logs,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             from prowler.providers.common.models import Audit_Metadata
     
    @@ -385,22 +362,24 @@ def test_cloudwatch_trail_with_log_group_with_metric_and_alarm(self):
                     == "CloudWatch log group /log-group/test found with metric filter test-filter and alarms set."
                 )
                 assert result[0].resource_id == "/log-group/test"
    +            assert (
    +                result[0].resource_arn
    +                == f"arn:aws:logs:{AWS_REGION_US_EAST_1}:{AWS_ACCOUNT_NUMBER}:metric-filter/test-filter"
    +            )
    +            assert result[0].region == AWS_REGION_US_EAST_1
     
    -    @mock_logs
    -    @mock_cloudtrail
    -    @mock_cloudwatch
    -    @mock_s3
    +    @mock_aws
         def test_cloudwatch_trail_with_log_group_with_metric_and_alarm_with_quotes(self):
    -        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION)
    -        cloudwatch_client = client("cloudwatch", region_name=AWS_REGION)
    -        logs_client = client("logs", region_name=AWS_REGION)
    -        s3_client = client("s3", region_name=AWS_REGION)
    +        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION_US_EAST_1)
    +        cloudwatch_client = client("cloudwatch", region_name=AWS_REGION_US_EAST_1)
    +        logs_client = client("logs", region_name=AWS_REGION_US_EAST_1)
    +        s3_client = client("s3", region_name=AWS_REGION_US_EAST_1)
             s3_client.create_bucket(Bucket="test")
             logs_client.create_log_group(logGroupName="/log-group/test")
             cloudtrail_client.create_trail(
                 Name="test_trail",
                 S3BucketName="test",
    -            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION}:{DEFAULT_ACCOUNT_ID}:log-group:/log-group/test:*",
    +            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION_EU_WEST_1}:{AWS_ACCOUNT_NUMBER}:log-group:/log-group/test:*",
             )
             logs_client.put_metric_filter(
                 logGroupName="/log-group/test",
    @@ -434,7 +413,9 @@ def test_cloudwatch_trail_with_log_group_with_metric_and_alarm_with_quotes(self)
                 Logs,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             from prowler.providers.common.models import Audit_Metadata
     
    @@ -474,22 +455,24 @@ def test_cloudwatch_trail_with_log_group_with_metric_and_alarm_with_quotes(self)
                     == "CloudWatch log group /log-group/test found with metric filter test-filter and alarms set."
                 )
                 assert result[0].resource_id == "/log-group/test"
    +            assert (
    +                result[0].resource_arn
    +                == f"arn:aws:logs:{AWS_REGION_US_EAST_1}:{AWS_ACCOUNT_NUMBER}:metric-filter/test-filter"
    +            )
    +            assert result[0].region == AWS_REGION_US_EAST_1
     
    -    @mock_logs
    -    @mock_cloudtrail
    -    @mock_cloudwatch
    -    @mock_s3
    +    @mock_aws
         def test_cloudwatch_trail_with_log_group_with_metric_and_alarm_with_newlines(self):
    -        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION)
    -        cloudwatch_client = client("cloudwatch", region_name=AWS_REGION)
    -        logs_client = client("logs", region_name=AWS_REGION)
    -        s3_client = client("s3", region_name=AWS_REGION)
    +        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION_US_EAST_1)
    +        cloudwatch_client = client("cloudwatch", region_name=AWS_REGION_US_EAST_1)
    +        logs_client = client("logs", region_name=AWS_REGION_US_EAST_1)
    +        s3_client = client("s3", region_name=AWS_REGION_US_EAST_1)
             s3_client.create_bucket(Bucket="test")
             logs_client.create_log_group(logGroupName="/log-group/test")
             cloudtrail_client.create_trail(
                 Name="test_trail",
                 S3BucketName="test",
    -            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION}:{DEFAULT_ACCOUNT_ID}:log-group:/log-group/test:*",
    +            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION_EU_WEST_1}:{AWS_ACCOUNT_NUMBER}:log-group:/log-group/test:*",
             )
             logs_client.put_metric_filter(
                 logGroupName="/log-group/test",
    @@ -523,7 +506,9 @@ def test_cloudwatch_trail_with_log_group_with_metric_and_alarm_with_newlines(sel
                 Logs,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             from prowler.providers.common.models import Audit_Metadata
     
    @@ -563,3 +548,8 @@ def test_cloudwatch_trail_with_log_group_with_metric_and_alarm_with_newlines(sel
                     == "CloudWatch log group /log-group/test found with metric filter test-filter and alarms set."
                 )
                 assert result[0].resource_id == "/log-group/test"
    +            assert (
    +                result[0].resource_arn
    +                == f"arn:aws:logs:{AWS_REGION_US_EAST_1}:{AWS_ACCOUNT_NUMBER}:metric-filter/test-filter"
    +            )
    +            assert result[0].region == AWS_REGION_US_EAST_1
    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 df12dd5869d..309033539fd 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
    @@ -1,51 +1,19 @@
     from unittest import mock
     
    -from boto3 import client, session
    -from moto import mock_cloudtrail, mock_cloudwatch, mock_logs, mock_s3
    -from moto.core import DEFAULT_ACCOUNT_ID
    +from boto3 import client
    +from moto import mock_aws
     
    -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"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_ACCOUNT_ARN,
    +    AWS_ACCOUNT_NUMBER,
    +    AWS_REGION_EU_WEST_1,
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     
     class Test_cloudwatch_log_metric_filter_sign_in_without_mfa:
    -    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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=["us-east-1", "eu-west-1"],
    -            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
    -
    -    @mock_logs
    -    @mock_cloudtrail
    -    @mock_cloudwatch
    +    @mock_aws
         def test_cloudwatch_no_log_groups(self):
             from prowler.providers.aws.services.cloudtrail.cloudtrail_service import (
                 Cloudtrail,
    @@ -55,7 +23,9 @@ def test_cloudwatch_no_log_groups(self):
                 Logs,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             from prowler.providers.common.models import Audit_Metadata
     
    @@ -94,15 +64,14 @@ def test_cloudwatch_no_log_groups(self):
                     result[0].status_extended
                     == "No CloudWatch log groups found with metric filters or alarms associated."
                 )
    -            assert result[0].resource_id == current_audit_info.audited_account
    +            assert result[0].resource_id == AWS_ACCOUNT_NUMBER
    +            assert result[0].resource_arn == AWS_ACCOUNT_ARN
    +            assert result[0].region == AWS_REGION_EU_WEST_1
     
    -    @mock_logs
    -    @mock_cloudtrail
    -    @mock_cloudwatch
    -    @mock_s3
    +    @mock_aws
         def test_cloudwatch_trail_no_log_group(self):
    -        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION)
    -        s3_client = client("s3", region_name=AWS_REGION)
    +        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION_US_EAST_1)
    +        s3_client = client("s3", region_name=AWS_REGION_US_EAST_1)
             s3_client.create_bucket(Bucket="test")
             cloudtrail_client.create_trail(Name="test_trail", S3BucketName="test")
     
    @@ -114,7 +83,9 @@ def test_cloudwatch_trail_no_log_group(self):
                 Logs,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             from prowler.providers.common.models import Audit_Metadata
     
    @@ -153,22 +124,21 @@ def test_cloudwatch_trail_no_log_group(self):
                     result[0].status_extended
                     == "No CloudWatch log groups found with metric filters or alarms associated."
                 )
    -            assert result[0].resource_id == current_audit_info.audited_account
    +            assert result[0].resource_id == AWS_ACCOUNT_NUMBER
    +            assert result[0].resource_arn == AWS_ACCOUNT_ARN
    +            assert result[0].region == AWS_REGION_EU_WEST_1
     
    -    @mock_logs
    -    @mock_cloudtrail
    -    @mock_cloudwatch
    -    @mock_s3
    +    @mock_aws
         def test_cloudwatch_trail_with_log_group(self):
    -        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION)
    -        logs_client = client("logs", region_name=AWS_REGION)
    -        s3_client = client("s3", region_name=AWS_REGION)
    +        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION_US_EAST_1)
    +        logs_client = client("logs", region_name=AWS_REGION_US_EAST_1)
    +        s3_client = client("s3", region_name=AWS_REGION_US_EAST_1)
             s3_client.create_bucket(Bucket="test")
             logs_client.create_log_group(logGroupName="/log-group/test")
             cloudtrail_client.create_trail(
                 Name="test_trail",
                 S3BucketName="test",
    -            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION}:{DEFAULT_ACCOUNT_ID}:log-group:/log-group/test:*",
    +            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION_EU_WEST_1}:{AWS_ACCOUNT_NUMBER}:log-group:/log-group/test:*",
             )
     
             from prowler.providers.aws.services.cloudtrail.cloudtrail_service import (
    @@ -179,7 +149,9 @@ def test_cloudwatch_trail_with_log_group(self):
                 Logs,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             from prowler.providers.common.models import Audit_Metadata
     
    @@ -218,22 +190,21 @@ def test_cloudwatch_trail_with_log_group(self):
                     result[0].status_extended
                     == "No CloudWatch log groups found with metric filters or alarms associated."
                 )
    -            assert result[0].resource_id == current_audit_info.audited_account
    +            assert result[0].resource_id == AWS_ACCOUNT_NUMBER
    +            assert result[0].resource_arn == AWS_ACCOUNT_ARN
    +            assert result[0].region == AWS_REGION_EU_WEST_1
     
    -    @mock_logs
    -    @mock_cloudtrail
    -    @mock_cloudwatch
    -    @mock_s3
    +    @mock_aws
         def test_cloudwatch_trail_with_log_group_with_metric(self):
    -        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION)
    -        logs_client = client("logs", region_name=AWS_REGION)
    -        s3_client = client("s3", region_name=AWS_REGION)
    +        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION_US_EAST_1)
    +        logs_client = client("logs", region_name=AWS_REGION_US_EAST_1)
    +        s3_client = client("s3", region_name=AWS_REGION_US_EAST_1)
             s3_client.create_bucket(Bucket="test")
             logs_client.create_log_group(logGroupName="/log-group/test")
             cloudtrail_client.create_trail(
                 Name="test_trail",
                 S3BucketName="test",
    -            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION}:{DEFAULT_ACCOUNT_ID}:log-group:/log-group/test:*",
    +            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION_EU_WEST_1}:{AWS_ACCOUNT_NUMBER}:log-group:/log-group/test:*",
             )
             logs_client.put_metric_filter(
                 logGroupName="/log-group/test",
    @@ -256,7 +227,9 @@ def test_cloudwatch_trail_with_log_group_with_metric(self):
                 Logs,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             from prowler.providers.common.models import Audit_Metadata
     
    @@ -296,22 +269,24 @@ def test_cloudwatch_trail_with_log_group_with_metric(self):
                     == "CloudWatch log group /log-group/test found with metric filter test-filter but no alarms associated."
                 )
                 assert result[0].resource_id == "/log-group/test"
    +            assert (
    +                result[0].resource_arn
    +                == f"arn:aws:logs:{AWS_REGION_US_EAST_1}:{AWS_ACCOUNT_NUMBER}:metric-filter/test-filter"
    +            )
    +            assert result[0].region == AWS_REGION_US_EAST_1
     
    -    @mock_logs
    -    @mock_cloudtrail
    -    @mock_cloudwatch
    -    @mock_s3
    +    @mock_aws
         def test_cloudwatch_trail_with_log_group_with_metric_and_alarm(self):
    -        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION)
    -        cloudwatch_client = client("cloudwatch", region_name=AWS_REGION)
    -        logs_client = client("logs", region_name=AWS_REGION)
    -        s3_client = client("s3", region_name=AWS_REGION)
    +        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION_US_EAST_1)
    +        cloudwatch_client = client("cloudwatch", region_name=AWS_REGION_US_EAST_1)
    +        logs_client = client("logs", region_name=AWS_REGION_US_EAST_1)
    +        s3_client = client("s3", region_name=AWS_REGION_US_EAST_1)
             s3_client.create_bucket(Bucket="test")
             logs_client.create_log_group(logGroupName="/log-group/test")
             cloudtrail_client.create_trail(
                 Name="test_trail",
                 S3BucketName="test",
    -            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION}:{DEFAULT_ACCOUNT_ID}:log-group:/log-group/test:*",
    +            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION_EU_WEST_1}:{AWS_ACCOUNT_NUMBER}:log-group:/log-group/test:*",
             )
             logs_client.put_metric_filter(
                 logGroupName="/log-group/test",
    @@ -345,7 +320,9 @@ def test_cloudwatch_trail_with_log_group_with_metric_and_alarm(self):
                 Logs,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             from prowler.providers.common.models import Audit_Metadata
     
    @@ -385,22 +362,24 @@ def test_cloudwatch_trail_with_log_group_with_metric_and_alarm(self):
                     == "CloudWatch log group /log-group/test found with metric filter test-filter and alarms set."
                 )
                 assert result[0].resource_id == "/log-group/test"
    +            assert (
    +                result[0].resource_arn
    +                == f"arn:aws:logs:{AWS_REGION_US_EAST_1}:{AWS_ACCOUNT_NUMBER}:metric-filter/test-filter"
    +            )
    +            assert result[0].region == AWS_REGION_US_EAST_1
     
    -    @mock_logs
    -    @mock_cloudtrail
    -    @mock_cloudwatch
    -    @mock_s3
    +    @mock_aws
         def test_cloudwatch_trail_with_log_group_with_metric_and_alarm_with_quotes(self):
    -        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION)
    -        cloudwatch_client = client("cloudwatch", region_name=AWS_REGION)
    -        logs_client = client("logs", region_name=AWS_REGION)
    -        s3_client = client("s3", region_name=AWS_REGION)
    +        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION_US_EAST_1)
    +        cloudwatch_client = client("cloudwatch", region_name=AWS_REGION_US_EAST_1)
    +        logs_client = client("logs", region_name=AWS_REGION_US_EAST_1)
    +        s3_client = client("s3", region_name=AWS_REGION_US_EAST_1)
             s3_client.create_bucket(Bucket="test")
             logs_client.create_log_group(logGroupName="/log-group/test")
             cloudtrail_client.create_trail(
                 Name="test_trail",
                 S3BucketName="test",
    -            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION}:{DEFAULT_ACCOUNT_ID}:log-group:/log-group/test:*",
    +            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION_EU_WEST_1}:{AWS_ACCOUNT_NUMBER}:log-group:/log-group/test:*",
             )
             logs_client.put_metric_filter(
                 logGroupName="/log-group/test",
    @@ -434,7 +413,9 @@ def test_cloudwatch_trail_with_log_group_with_metric_and_alarm_with_quotes(self)
                 Logs,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             from prowler.providers.common.models import Audit_Metadata
     
    @@ -474,22 +455,24 @@ def test_cloudwatch_trail_with_log_group_with_metric_and_alarm_with_quotes(self)
                     == "CloudWatch log group /log-group/test found with metric filter test-filter and alarms set."
                 )
                 assert result[0].resource_id == "/log-group/test"
    +            assert (
    +                result[0].resource_arn
    +                == f"arn:aws:logs:{AWS_REGION_US_EAST_1}:{AWS_ACCOUNT_NUMBER}:metric-filter/test-filter"
    +            )
    +            assert result[0].region == AWS_REGION_US_EAST_1
     
    -    @mock_logs
    -    @mock_cloudtrail
    -    @mock_cloudwatch
    -    @mock_s3
    +    @mock_aws
         def test_cloudwatch_trail_with_log_group_with_metric_and_alarm_with_newlines(self):
    -        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION)
    -        cloudwatch_client = client("cloudwatch", region_name=AWS_REGION)
    -        logs_client = client("logs", region_name=AWS_REGION)
    -        s3_client = client("s3", region_name=AWS_REGION)
    +        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION_US_EAST_1)
    +        cloudwatch_client = client("cloudwatch", region_name=AWS_REGION_US_EAST_1)
    +        logs_client = client("logs", region_name=AWS_REGION_US_EAST_1)
    +        s3_client = client("s3", region_name=AWS_REGION_US_EAST_1)
             s3_client.create_bucket(Bucket="test")
             logs_client.create_log_group(logGroupName="/log-group/test")
             cloudtrail_client.create_trail(
                 Name="test_trail",
                 S3BucketName="test",
    -            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION}:{DEFAULT_ACCOUNT_ID}:log-group:/log-group/test:*",
    +            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION_EU_WEST_1}:{AWS_ACCOUNT_NUMBER}:log-group:/log-group/test:*",
             )
             logs_client.put_metric_filter(
                 logGroupName="/log-group/test",
    @@ -523,7 +506,9 @@ def test_cloudwatch_trail_with_log_group_with_metric_and_alarm_with_newlines(sel
                 Logs,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             from prowler.providers.common.models import Audit_Metadata
     
    @@ -563,3 +548,8 @@ def test_cloudwatch_trail_with_log_group_with_metric_and_alarm_with_newlines(sel
                     == "CloudWatch log group /log-group/test found with metric filter test-filter and alarms set."
                 )
                 assert result[0].resource_id == "/log-group/test"
    +            assert (
    +                result[0].resource_arn
    +                == f"arn:aws:logs:{AWS_REGION_US_EAST_1}:{AWS_ACCOUNT_NUMBER}:metric-filter/test-filter"
    +            )
    +            assert result[0].region == AWS_REGION_US_EAST_1
    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 e860c145038..bb4de7181cd 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
    @@ -1,51 +1,19 @@
     from unittest import mock
     
    -from boto3 import client, session
    -from moto import mock_cloudtrail, mock_cloudwatch, mock_logs, mock_s3
    -from moto.core import DEFAULT_ACCOUNT_ID
    +from boto3 import client
    +from moto import mock_aws
     
    -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"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_ACCOUNT_ARN,
    +    AWS_ACCOUNT_NUMBER,
    +    AWS_REGION_EU_WEST_1,
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     
     class Test_cloudwatch_log_metric_filter_unauthorized_api_calls:
    -    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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=["us-east-1", "eu-west-1"],
    -            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
    -
    -    @mock_logs
    -    @mock_cloudtrail
    -    @mock_cloudwatch
    +    @mock_aws
         def test_cloudwatch_no_log_groups(self):
             from prowler.providers.aws.services.cloudtrail.cloudtrail_service import (
                 Cloudtrail,
    @@ -55,7 +23,9 @@ def test_cloudwatch_no_log_groups(self):
                 Logs,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             from prowler.providers.common.models import Audit_Metadata
     
    @@ -94,15 +64,14 @@ def test_cloudwatch_no_log_groups(self):
                     result[0].status_extended
                     == "No CloudWatch log groups found with metric filters or alarms associated."
                 )
    -            assert result[0].resource_id == current_audit_info.audited_account
    +            assert result[0].resource_id == AWS_ACCOUNT_NUMBER
    +            assert result[0].resource_arn == AWS_ACCOUNT_ARN
    +            assert result[0].region == AWS_REGION_EU_WEST_1
     
    -    @mock_logs
    -    @mock_cloudtrail
    -    @mock_cloudwatch
    -    @mock_s3
    +    @mock_aws
         def test_cloudwatch_trail_no_log_group(self):
    -        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION)
    -        s3_client = client("s3", region_name=AWS_REGION)
    +        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION_US_EAST_1)
    +        s3_client = client("s3", region_name=AWS_REGION_US_EAST_1)
             s3_client.create_bucket(Bucket="test")
             cloudtrail_client.create_trail(Name="test_trail", S3BucketName="test")
     
    @@ -114,7 +83,9 @@ def test_cloudwatch_trail_no_log_group(self):
                 Logs,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             from prowler.providers.common.models import Audit_Metadata
     
    @@ -153,22 +124,21 @@ def test_cloudwatch_trail_no_log_group(self):
                     result[0].status_extended
                     == "No CloudWatch log groups found with metric filters or alarms associated."
                 )
    -            assert result[0].resource_id == current_audit_info.audited_account
    +            assert result[0].resource_id == AWS_ACCOUNT_NUMBER
    +            assert result[0].resource_arn == AWS_ACCOUNT_ARN
    +            assert result[0].region == AWS_REGION_EU_WEST_1
     
    -    @mock_logs
    -    @mock_cloudtrail
    -    @mock_cloudwatch
    -    @mock_s3
    +    @mock_aws
         def test_cloudwatch_trail_with_log_group(self):
    -        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION)
    -        logs_client = client("logs", region_name=AWS_REGION)
    -        s3_client = client("s3", region_name=AWS_REGION)
    +        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION_US_EAST_1)
    +        logs_client = client("logs", region_name=AWS_REGION_US_EAST_1)
    +        s3_client = client("s3", region_name=AWS_REGION_US_EAST_1)
             s3_client.create_bucket(Bucket="test")
             logs_client.create_log_group(logGroupName="/log-group/test")
             cloudtrail_client.create_trail(
                 Name="test_trail",
                 S3BucketName="test",
    -            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION}:{DEFAULT_ACCOUNT_ID}:log-group:/log-group/test:*",
    +            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION_EU_WEST_1}:{AWS_ACCOUNT_NUMBER}:log-group:/log-group/test:*",
             )
     
             from prowler.providers.aws.services.cloudtrail.cloudtrail_service import (
    @@ -179,7 +149,9 @@ def test_cloudwatch_trail_with_log_group(self):
                 Logs,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             from prowler.providers.common.models import Audit_Metadata
     
    @@ -218,22 +190,21 @@ def test_cloudwatch_trail_with_log_group(self):
                     result[0].status_extended
                     == "No CloudWatch log groups found with metric filters or alarms associated."
                 )
    -            assert result[0].resource_id == current_audit_info.audited_account
    +            assert result[0].resource_id == AWS_ACCOUNT_NUMBER
    +            assert result[0].resource_arn == AWS_ACCOUNT_ARN
    +            assert result[0].region == AWS_REGION_EU_WEST_1
     
    -    @mock_logs
    -    @mock_cloudtrail
    -    @mock_cloudwatch
    -    @mock_s3
    +    @mock_aws
         def test_cloudwatch_trail_with_log_group_with_metric(self):
    -        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION)
    -        logs_client = client("logs", region_name=AWS_REGION)
    -        s3_client = client("s3", region_name=AWS_REGION)
    +        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION_US_EAST_1)
    +        logs_client = client("logs", region_name=AWS_REGION_US_EAST_1)
    +        s3_client = client("s3", region_name=AWS_REGION_US_EAST_1)
             s3_client.create_bucket(Bucket="test")
             logs_client.create_log_group(logGroupName="/log-group/test")
             cloudtrail_client.create_trail(
                 Name="test_trail",
                 S3BucketName="test",
    -            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION}:{DEFAULT_ACCOUNT_ID}:log-group:/log-group/test:*",
    +            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION_EU_WEST_1}:{AWS_ACCOUNT_NUMBER}:log-group:/log-group/test:*",
             )
             logs_client.put_metric_filter(
                 logGroupName="/log-group/test",
    @@ -256,7 +227,9 @@ def test_cloudwatch_trail_with_log_group_with_metric(self):
                 Logs,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             from prowler.providers.common.models import Audit_Metadata
     
    @@ -296,22 +269,24 @@ def test_cloudwatch_trail_with_log_group_with_metric(self):
                     == "CloudWatch log group /log-group/test found with metric filter test-filter but no alarms associated."
                 )
                 assert result[0].resource_id == "/log-group/test"
    +            assert (
    +                result[0].resource_arn
    +                == f"arn:aws:logs:{AWS_REGION_US_EAST_1}:{AWS_ACCOUNT_NUMBER}:metric-filter/test-filter"
    +            )
    +            assert result[0].region == AWS_REGION_US_EAST_1
     
    -    @mock_logs
    -    @mock_cloudtrail
    -    @mock_cloudwatch
    -    @mock_s3
    +    @mock_aws
         def test_cloudwatch_trail_with_log_group_with_metric_and_alarm(self):
    -        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION)
    -        cloudwatch_client = client("cloudwatch", region_name=AWS_REGION)
    -        logs_client = client("logs", region_name=AWS_REGION)
    -        s3_client = client("s3", region_name=AWS_REGION)
    +        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION_US_EAST_1)
    +        cloudwatch_client = client("cloudwatch", region_name=AWS_REGION_US_EAST_1)
    +        logs_client = client("logs", region_name=AWS_REGION_US_EAST_1)
    +        s3_client = client("s3", region_name=AWS_REGION_US_EAST_1)
             s3_client.create_bucket(Bucket="test")
             logs_client.create_log_group(logGroupName="/log-group/test")
             cloudtrail_client.create_trail(
                 Name="test_trail",
                 S3BucketName="test",
    -            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION}:{DEFAULT_ACCOUNT_ID}:log-group:/log-group/test:*",
    +            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION_EU_WEST_1}:{AWS_ACCOUNT_NUMBER}:log-group:/log-group/test:*",
             )
             logs_client.put_metric_filter(
                 logGroupName="/log-group/test",
    @@ -345,7 +320,9 @@ def test_cloudwatch_trail_with_log_group_with_metric_and_alarm(self):
                 Logs,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             from prowler.providers.common.models import Audit_Metadata
     
    @@ -385,22 +362,24 @@ def test_cloudwatch_trail_with_log_group_with_metric_and_alarm(self):
                     == "CloudWatch log group /log-group/test found with metric filter test-filter and alarms set."
                 )
                 assert result[0].resource_id == "/log-group/test"
    +            assert (
    +                result[0].resource_arn
    +                == f"arn:aws:logs:{AWS_REGION_US_EAST_1}:{AWS_ACCOUNT_NUMBER}:metric-filter/test-filter"
    +            )
    +            assert result[0].region == AWS_REGION_US_EAST_1
     
    -    @mock_logs
    -    @mock_cloudtrail
    -    @mock_cloudwatch
    -    @mock_s3
    +    @mock_aws
         def test_cloudwatch_trail_with_log_group_with_metric_and_alarm_with_quotes(self):
    -        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION)
    -        cloudwatch_client = client("cloudwatch", region_name=AWS_REGION)
    -        logs_client = client("logs", region_name=AWS_REGION)
    -        s3_client = client("s3", region_name=AWS_REGION)
    +        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION_US_EAST_1)
    +        cloudwatch_client = client("cloudwatch", region_name=AWS_REGION_US_EAST_1)
    +        logs_client = client("logs", region_name=AWS_REGION_US_EAST_1)
    +        s3_client = client("s3", region_name=AWS_REGION_US_EAST_1)
             s3_client.create_bucket(Bucket="test")
             logs_client.create_log_group(logGroupName="/log-group/test")
             cloudtrail_client.create_trail(
                 Name="test_trail",
                 S3BucketName="test",
    -            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION}:{DEFAULT_ACCOUNT_ID}:log-group:/log-group/test:*",
    +            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION_EU_WEST_1}:{AWS_ACCOUNT_NUMBER}:log-group:/log-group/test:*",
             )
             logs_client.put_metric_filter(
                 logGroupName="/log-group/test",
    @@ -434,7 +413,9 @@ def test_cloudwatch_trail_with_log_group_with_metric_and_alarm_with_quotes(self)
                 Logs,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             from prowler.providers.common.models import Audit_Metadata
     
    @@ -474,22 +455,24 @@ def test_cloudwatch_trail_with_log_group_with_metric_and_alarm_with_quotes(self)
                     == "CloudWatch log group /log-group/test found with metric filter test-filter and alarms set."
                 )
                 assert result[0].resource_id == "/log-group/test"
    +            assert (
    +                result[0].resource_arn
    +                == f"arn:aws:logs:{AWS_REGION_US_EAST_1}:{AWS_ACCOUNT_NUMBER}:metric-filter/test-filter"
    +            )
    +            assert result[0].region == AWS_REGION_US_EAST_1
     
    -    @mock_logs
    -    @mock_cloudtrail
    -    @mock_cloudwatch
    -    @mock_s3
    +    @mock_aws
         def test_cloudwatch_trail_with_log_group_with_metric_and_alarm_with_newlines(self):
    -        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION)
    -        cloudwatch_client = client("cloudwatch", region_name=AWS_REGION)
    -        logs_client = client("logs", region_name=AWS_REGION)
    -        s3_client = client("s3", region_name=AWS_REGION)
    +        cloudtrail_client = client("cloudtrail", region_name=AWS_REGION_US_EAST_1)
    +        cloudwatch_client = client("cloudwatch", region_name=AWS_REGION_US_EAST_1)
    +        logs_client = client("logs", region_name=AWS_REGION_US_EAST_1)
    +        s3_client = client("s3", region_name=AWS_REGION_US_EAST_1)
             s3_client.create_bucket(Bucket="test")
             logs_client.create_log_group(logGroupName="/log-group/test")
             cloudtrail_client.create_trail(
                 Name="test_trail",
                 S3BucketName="test",
    -            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION}:{DEFAULT_ACCOUNT_ID}:log-group:/log-group/test:*",
    +            CloudWatchLogsLogGroupArn=f"arn:aws:logs:{AWS_REGION_EU_WEST_1}:{AWS_ACCOUNT_NUMBER}:log-group:/log-group/test:*",
             )
             logs_client.put_metric_filter(
                 logGroupName="/log-group/test",
    @@ -523,7 +506,9 @@ def test_cloudwatch_trail_with_log_group_with_metric_and_alarm_with_newlines(sel
                 Logs,
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             from prowler.providers.common.models import Audit_Metadata
     
    @@ -563,3 +548,8 @@ def test_cloudwatch_trail_with_log_group_with_metric_and_alarm_with_newlines(sel
                     == "CloudWatch log group /log-group/test found with metric filter test-filter and alarms set."
                 )
                 assert result[0].resource_id == "/log-group/test"
    +            assert (
    +                result[0].resource_arn
    +                == f"arn:aws:logs:{AWS_REGION_US_EAST_1}:{AWS_ACCOUNT_NUMBER}:metric-filter/test-filter"
    +            )
    +            assert result[0].region == AWS_REGION_US_EAST_1
    diff --git a/tests/providers/aws/services/cloudwatch/cloudwatch_service_test.py b/tests/providers/aws/services/cloudwatch/cloudwatch_service_test.py
    index 43e8999cc18..b339c6c06e7 100644
    --- a/tests/providers/aws/services/cloudwatch/cloudwatch_service_test.py
    +++ b/tests/providers/aws/services/cloudwatch/cloudwatch_service_test.py
    @@ -1,121 +1,105 @@
    -from boto3 import client, session
    -from moto import mock_cloudwatch, mock_logs
    +from boto3 import client
    +from moto import mock_aws
     
    -from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info
     from prowler.providers.aws.services.cloudwatch.cloudwatch_service import (
         CloudWatch,
         Logs,
     )
    -from prowler.providers.common.models import Audit_Metadata
    -
    -AWS_ACCOUNT_NUMBER = "123456789012"
    -AWS_REGION = "us-east-1"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_ACCOUNT_NUMBER,
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     
     class Test_CloudWatch_Service:
    -    # 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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=None,
    -            organizations_metadata=None,
    -            audit_resources=None,
    -            mfa_enabled=False,
    -            audit_metadata=Audit_Metadata(
    -                services_scanned=0,
    -                # We need to set this check to call __describe_log_groups__
    -                expected_checks=["cloudwatch_log_group_no_secrets_in_logs"],
    -                completed_checks=0,
    -                audit_progress=0,
    -            ),
    -        )
    -        return audit_info
    -
         # Test CloudWatch Service
    -    @mock_cloudwatch
    +    @mock_aws
         def test_service(self):
             # CloudWatch client for this test class
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info(
    +            expected_checks=["cloudwatch_log_group_no_secrets_in_logs"]
    +        )
             cloudwatch = CloudWatch(audit_info)
             assert cloudwatch.service == "cloudwatch"
     
         # Test CloudWatch Client
    -    @mock_cloudwatch
    +    @mock_aws
         def test_client(self):
             # CloudWatch client for this test class
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info(
    +            expected_checks=["cloudwatch_log_group_no_secrets_in_logs"]
    +        )
             cloudwatch = CloudWatch(audit_info)
             for client_ in cloudwatch.regional_clients.values():
                 assert client_.__class__.__name__ == "CloudWatch"
     
         # Test CloudWatch Session
    -    @mock_cloudwatch
    +    @mock_aws
         def test__get_session__(self):
             # CloudWatch client for this test class
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info(
    +            expected_checks=["cloudwatch_log_group_no_secrets_in_logs"]
    +        )
             cloudwatch = CloudWatch(audit_info)
             assert cloudwatch.session.__class__.__name__ == "Session"
     
         # Test CloudWatch Session
    -    @mock_cloudwatch
    +    @mock_aws
         def test_audited_account(self):
             # CloudWatch client for this test class
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info(
    +            expected_checks=["cloudwatch_log_group_no_secrets_in_logs"]
    +        )
             cloudwatch = CloudWatch(audit_info)
             assert cloudwatch.audited_account == AWS_ACCOUNT_NUMBER
     
         # Test Logs Service
    -    @mock_logs
    +    @mock_aws
         def test_logs_service(self):
             # Logs client for this test class
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info(
    +            expected_checks=["cloudwatch_log_group_no_secrets_in_logs"]
    +        )
             logs = Logs(audit_info)
             assert logs.service == "logs"
     
         # Test Logs Client
    -    @mock_logs
    +    @mock_aws
         def test_logs_client(self):
             # Logs client for this test class
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info(
    +            expected_checks=["cloudwatch_log_group_no_secrets_in_logs"]
    +        )
             logs = Logs(audit_info)
             for client_ in logs.regional_clients.values():
                 assert client_.__class__.__name__ == "CloudWatchLogs"
     
         # Test Logs Session
    -    @mock_logs
    +    @mock_aws
         def test__logs_get_session__(self):
             # Logs client for this test class
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info(
    +            expected_checks=["cloudwatch_log_group_no_secrets_in_logs"]
    +        )
             logs = Logs(audit_info)
             assert logs.session.__class__.__name__ == "Session"
     
         # Test Logs Session
    -    @mock_logs
    +    @mock_aws
         def test_logs_audited_account(self):
             # Logs client for this test class
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info(
    +            expected_checks=["cloudwatch_log_group_no_secrets_in_logs"]
    +        )
             logs = Logs(audit_info)
             assert logs.audited_account == AWS_ACCOUNT_NUMBER
     
         # Test CloudWatch Alarms
    -    @mock_cloudwatch
    +    @mock_aws
         def test__describe_alarms__(self):
             # CloudWatch client for this test class
    -        cw_client = client("cloudwatch", region_name=AWS_REGION)
    +        cw_client = client("cloudwatch", region_name=AWS_REGION_US_EAST_1)
             cw_client.put_metric_alarm(
                 AlarmActions=["arn:alarm"],
                 AlarmDescription="A test",
    @@ -133,26 +117,28 @@ def test__describe_alarms__(self):
                 Unit="Seconds",
                 Tags=[{"Key": "key-1", "Value": "value-1"}],
             )
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info(
    +            expected_checks=["cloudwatch_log_group_no_secrets_in_logs"]
    +        )
             cloudwatch = CloudWatch(audit_info)
             assert len(cloudwatch.metric_alarms) == 1
             assert (
                 cloudwatch.metric_alarms[0].arn
    -            == f"arn:aws:cloudwatch:{AWS_REGION}:{AWS_ACCOUNT_NUMBER}:alarm:test"
    +            == f"arn:aws:cloudwatch:{AWS_REGION_US_EAST_1}:{AWS_ACCOUNT_NUMBER}:alarm:test"
             )
             assert cloudwatch.metric_alarms[0].name == "test"
             assert cloudwatch.metric_alarms[0].metric == "test_metric"
             assert cloudwatch.metric_alarms[0].name_space == "test_namespace"
    -        assert cloudwatch.metric_alarms[0].region == AWS_REGION
    +        assert cloudwatch.metric_alarms[0].region == AWS_REGION_US_EAST_1
             assert cloudwatch.metric_alarms[0].tags == [
                 {"Key": "key-1", "Value": "value-1"}
             ]
     
         # Test Logs Filters
    -    @mock_logs
    +    @mock_aws
         def test__describe_metric_filters__(self):
             # Logs client for this test class
    -        logs_client = client("logs", region_name=AWS_REGION)
    +        logs_client = client("logs", region_name=AWS_REGION_US_EAST_1)
             logs_client.put_metric_filter(
                 logGroupName="/log-group/test",
                 filterName="test-filter",
    @@ -165,20 +151,22 @@ def test__describe_metric_filters__(self):
                     }
                 ],
             )
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info(
    +            expected_checks=["cloudwatch_log_group_no_secrets_in_logs"]
    +        )
             logs = Logs(audit_info)
             assert len(logs.metric_filters) == 1
             assert logs.metric_filters[0].log_group == "/log-group/test"
             assert logs.metric_filters[0].name == "test-filter"
             assert logs.metric_filters[0].metric == "my-metric"
             assert logs.metric_filters[0].pattern == "test-pattern"
    -        assert logs.metric_filters[0].region == AWS_REGION
    +        assert logs.metric_filters[0].region == AWS_REGION_US_EAST_1
     
         # Test Logs Filters
    -    @mock_logs
    +    @mock_aws
         def test__describe_log_groups__(self):
             # Logs client for this test class
    -        logs_client = client("logs", region_name=AWS_REGION)
    +        logs_client = client("logs", region_name=AWS_REGION_US_EAST_1)
             logs_client.create_log_group(
                 logGroupName="/log-group/test",
                 kmsKeyId="test_kms_id",
    @@ -187,45 +175,49 @@ def test__describe_log_groups__(self):
             logs_client.put_retention_policy(
                 logGroupName="/log-group/test", retentionInDays=400
             )
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info(
    +            expected_checks=["cloudwatch_log_group_no_secrets_in_logs"]
    +        )
             logs = Logs(audit_info)
             assert len(logs.log_groups) == 1
             assert (
                 logs.log_groups[0].arn
    -            == f"arn:aws:logs:{AWS_REGION}:{AWS_ACCOUNT_NUMBER}:log-group:/log-group/test"
    +            == f"arn:aws:logs:{AWS_REGION_US_EAST_1}:{AWS_ACCOUNT_NUMBER}:log-group:/log-group/test"
             )
             assert logs.log_groups[0].name == "/log-group/test"
             assert logs.log_groups[0].retention_days == 400
             assert logs.log_groups[0].kms_id == "test_kms_id"
             assert not logs.log_groups[0].never_expire
    -        assert logs.log_groups[0].region == AWS_REGION
    +        assert logs.log_groups[0].region == AWS_REGION_US_EAST_1
             assert logs.log_groups[0].tags == [
                 {"tag_key_1": "tag_value_1", "tag_key_2": "tag_value_2"}
             ]
     
    -    @mock_logs
    +    @mock_aws
         def test__describe_log_groups__never_expire(self):
             # Logs client for this test class
    -        logs_client = client("logs", region_name=AWS_REGION)
    +        logs_client = client("logs", region_name=AWS_REGION_US_EAST_1)
             logs_client.create_log_group(
                 logGroupName="/log-group/test",
                 kmsKeyId="test_kms_id",
                 tags={"tag_key_1": "tag_value_1", "tag_key_2": "tag_value_2"},
             )
     
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info(
    +            expected_checks=["cloudwatch_log_group_no_secrets_in_logs"]
    +        )
             logs = Logs(audit_info)
             assert len(logs.log_groups) == 1
             assert (
                 logs.log_groups[0].arn
    -            == f"arn:aws:logs:{AWS_REGION}:{AWS_ACCOUNT_NUMBER}:log-group:/log-group/test"
    +            == f"arn:aws:logs:{AWS_REGION_US_EAST_1}:{AWS_ACCOUNT_NUMBER}:log-group:/log-group/test"
             )
             assert logs.log_groups[0].name == "/log-group/test"
             assert logs.log_groups[0].never_expire
             # Since it never expires we don't use the retention_days
             assert logs.log_groups[0].retention_days == 9999
             assert logs.log_groups[0].kms_id == "test_kms_id"
    -        assert logs.log_groups[0].region == AWS_REGION
    +        assert logs.log_groups[0].region == AWS_REGION_US_EAST_1
             assert logs.log_groups[0].tags == [
                 {"tag_key_1": "tag_value_1", "tag_key_2": "tag_value_2"}
             ]
    diff --git a/tests/providers/aws/services/codeartifact/codeartifact_packages_external_public_publishing_disabled/codeartifact_packages_external_public_publishing_disabled_test.py b/tests/providers/aws/services/codeartifact/codeartifact_packages_external_public_publishing_disabled/codeartifact_packages_external_public_publishing_disabled_test.py
    index 668f00e0a3f..4e652ceefdb 100644
    --- a/tests/providers/aws/services/codeartifact/codeartifact_packages_external_public_publishing_disabled/codeartifact_packages_external_public_publishing_disabled_test.py
    +++ b/tests/providers/aws/services/codeartifact/codeartifact_packages_external_public_publishing_disabled/codeartifact_packages_external_public_publishing_disabled_test.py
    @@ -1,7 +1,5 @@
     from unittest import mock
     
    -from moto.core import DEFAULT_ACCOUNT_ID
    -
     from prowler.providers.aws.services.codeartifact.codeartifact_service import (
         LatestPackageVersion,
         LatestPackageVersionStatus,
    @@ -13,6 +11,7 @@
         Restrictions,
         RestrictionValues,
     )
    +from tests.providers.aws.audit_info_utils import AWS_ACCOUNT_NUMBER
     
     AWS_REGION = "eu-west-1"
     
    @@ -65,7 +64,7 @@ def test_repository_package_public_publishing_origin_internal(self):
             codeartifact_client = mock.MagicMock
             package_name = "test-package"
             package_namespace = "test-namespace"
    -        repository_arn = f"arn:aws:codebuild:{AWS_REGION}:{DEFAULT_ACCOUNT_ID}:repository/test-repository"
    +        repository_arn = f"arn:aws:codebuild:{AWS_REGION}:{AWS_ACCOUNT_NUMBER}:repository/test-repository"
             codeartifact_client.repositories = {
                 "test-repository": Repository(
                     name="test-repository",
    @@ -125,7 +124,7 @@ def test_repository_package_private_publishing_origin_internal(self):
             codeartifact_client = mock.MagicMock
             package_name = "test-package"
             package_namespace = "test-namespace"
    -        repository_arn = f"arn:aws:codebuild:{AWS_REGION}:{DEFAULT_ACCOUNT_ID}:repository/test-repository"
    +        repository_arn = f"arn:aws:codebuild:{AWS_REGION}:{AWS_ACCOUNT_NUMBER}:repository/test-repository"
             codeartifact_client.repositories = {
                 "test-repository": Repository(
                     name="test-repository",
    diff --git a/tests/providers/aws/services/codeartifact/codeartifact_service_test.py b/tests/providers/aws/services/codeartifact/codeartifact_service_test.py
    index 7104545c204..94326d59efb 100644
    --- a/tests/providers/aws/services/codeartifact/codeartifact_service_test.py
    +++ b/tests/providers/aws/services/codeartifact/codeartifact_service_test.py
    @@ -1,29 +1,24 @@
     from unittest.mock import patch
     
     import botocore
    -from boto3 import session
    -from moto.core import DEFAULT_ACCOUNT_ID
     
    -from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info
     from prowler.providers.aws.services.codeartifact.codeartifact_service import (
         CodeArtifact,
         LatestPackageVersionStatus,
         OriginInformationValues,
         RestrictionValues,
     )
    -from prowler.providers.common.models import Audit_Metadata
    -
    -# Mock Test Region
    -AWS_REGION = "eu-west-1"
    -AWS_ACCOUNT_NUMBER = "123456789012"
    -
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_ACCOUNT_NUMBER,
    +    AWS_REGION_EU_WEST_1,
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     # Mocking Access Analyzer Calls
     make_api_call = botocore.client.BaseClient._make_api_call
     
    -TEST_REPOSITORY_ARN = (
    -    f"arn:aws:codebuild:{AWS_REGION}:{DEFAULT_ACCOUNT_ID}:repository/test-repository"
    -)
    +TEST_REPOSITORY_ARN = f"arn:aws:codebuild:{AWS_REGION_EU_WEST_1}:{AWS_ACCOUNT_NUMBER}:repository/test-repository"
     
     
     def mock_make_api_call(self, operation_name, kwarg):
    @@ -33,9 +28,9 @@ def mock_make_api_call(self, operation_name, kwarg):
                 "repositories": [
                     {
                         "name": "test-repository",
    -                    "administratorAccount": DEFAULT_ACCOUNT_ID,
    +                    "administratorAccount": AWS_ACCOUNT_NUMBER,
                         "domainName": "test-domain",
    -                    "domainOwner": DEFAULT_ACCOUNT_ID,
    +                    "domainOwner": AWS_ACCOUNT_NUMBER,
                         "arn": TEST_REPOSITORY_ARN,
                         "description": "test description",
                     },
    @@ -91,10 +86,12 @@ def mock_make_api_call(self, operation_name, kwarg):
     
     
     # Mock generate_regional_clients()
    -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}
    +def mock_generate_regional_clients(service, audit_info):
    +    regional_client = audit_info.audit_session.client(
    +        service, region_name=AWS_REGION_EU_WEST_1
    +    )
    +    regional_client.region = AWS_REGION_EU_WEST_1
    +    return {AWS_REGION_EU_WEST_1: regional_client}
     
     
     # Patch every AWS call using Boto3 and generate_regional_clients to have 1 client
    @@ -104,67 +101,44 @@ def mock_generate_regional_clients(service, audit_info, _):
         new=mock_generate_regional_clients,
     )
     class Test_CodeArtifact_Service:
    -    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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=["us-east-1", "eu-west-1"],
    -            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
    -
         # Test CodeArtifact Client
         def test__get_client__(self):
    -        codeartifact = CodeArtifact(self.set_mocked_audit_info())
    +        codeartifact = CodeArtifact(
    +            set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1])
    +        )
             assert (
    -            codeartifact.regional_clients[AWS_REGION].__class__.__name__
    +            codeartifact.regional_clients[AWS_REGION_EU_WEST_1].__class__.__name__
                 == "CodeArtifact"
             )
     
         # Test CodeArtifact Session
         def test__get_session__(self):
    -        codeartifact = CodeArtifact(self.set_mocked_audit_info())
    +        codeartifact = CodeArtifact(
    +            set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1])
    +        )
             assert codeartifact.session.__class__.__name__ == "Session"
     
         # Test CodeArtifact Service
         def test__get_service__(self):
    -        codeartifact = CodeArtifact(self.set_mocked_audit_info())
    +        codeartifact = CodeArtifact(
    +            set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1])
    +        )
             assert codeartifact.service == "codeartifact"
     
         def test__list_repositories__(self):
             # Set partition for the service
    -        codeartifact = CodeArtifact(self.set_mocked_audit_info())
    +        codeartifact = CodeArtifact(
    +            set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1])
    +        )
     
             assert len(codeartifact.repositories) == 1
             assert codeartifact.repositories
             assert codeartifact.repositories[
    -            f"arn:aws:codebuild:{AWS_REGION}:{DEFAULT_ACCOUNT_ID}:repository/test-repository"
    +            f"arn:aws:codebuild:{AWS_REGION_EU_WEST_1}:{AWS_ACCOUNT_NUMBER}:repository/test-repository"
             ]
             assert codeartifact.repositories[TEST_REPOSITORY_ARN].name == "test-repository"
             assert codeartifact.repositories[
    -            f"arn:aws:codebuild:{AWS_REGION}:{DEFAULT_ACCOUNT_ID}:repository/test-repository"
    +            f"arn:aws:codebuild:{AWS_REGION_EU_WEST_1}:{AWS_ACCOUNT_NUMBER}:repository/test-repository"
             ].tags == [
                 {"key": "test", "value": "test"},
             ]
    @@ -174,12 +148,15 @@ def test__list_repositories__(self):
             )
             assert (
                 codeartifact.repositories[TEST_REPOSITORY_ARN].domain_owner
    -            == DEFAULT_ACCOUNT_ID
    +            == AWS_ACCOUNT_NUMBER
    +        )
    +        assert (
    +            codeartifact.repositories[TEST_REPOSITORY_ARN].region
    +            == AWS_REGION_EU_WEST_1
             )
    -        assert codeartifact.repositories[TEST_REPOSITORY_ARN].region == AWS_REGION
     
             assert codeartifact.repositories[
    -            f"arn:aws:codebuild:{AWS_REGION}:{DEFAULT_ACCOUNT_ID}:repository/test-repository"
    +            f"arn:aws:codebuild:{AWS_REGION_EU_WEST_1}:{AWS_ACCOUNT_NUMBER}:repository/test-repository"
             ].packages
             assert len(codeartifact.repositories[TEST_REPOSITORY_ARN].packages) == 1
             assert (
    diff --git a/tests/providers/aws/services/codebuild/codebuild_service_test.py b/tests/providers/aws/services/codebuild/codebuild_service_test.py
    index fe156dfeb91..a3c600ff422 100644
    --- a/tests/providers/aws/services/codebuild/codebuild_service_test.py
    +++ b/tests/providers/aws/services/codebuild/codebuild_service_test.py
    @@ -2,15 +2,12 @@
     from unittest.mock import patch
     
     import botocore
    -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"
    -AWS_ACCOUNT_NUMBER = "123456789012"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_REGION_EU_WEST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     # last time invoked time
     last_invoked_time = datetime.now() - timedelta(days=2)
    @@ -41,10 +38,12 @@ def mock_make_api_call(self, operation_name, kwarg):
     
     
     # Mock generate_regional_clients()
    -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}
    +def mock_generate_regional_clients(service, audit_info):
    +    regional_client = audit_info.audit_session.client(
    +        service, region_name=AWS_REGION_EU_WEST_1
    +    )
    +    regional_client.region = AWS_REGION_EU_WEST_1
    +    return {AWS_REGION_EU_WEST_1: regional_client}
     
     
     @patch("botocore.client.BaseClient._make_api_call", new=mock_make_api_call)
    @@ -53,57 +52,27 @@ def mock_generate_regional_clients(service, audit_info, _):
         new=mock_generate_regional_clients,
     )
     class Test_Codebuild_Service:
    -    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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=None,
    -            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
    -
         # Test Codebuild Session
         def test__get_session__(self):
    -        codebuild = Codebuild(self.set_mocked_audit_info())
    +        codebuild = Codebuild(set_mocked_aws_audit_info())
             assert codebuild.session.__class__.__name__ == "Session"
     
         # Test Codebuild Service
         def test__get_service__(self):
    -        codebuild = Codebuild(self.set_mocked_audit_info())
    +        codebuild = Codebuild(set_mocked_aws_audit_info())
             assert codebuild.service == "codebuild"
     
         def test__list_projects__(self):
    -        codebuild = Codebuild(self.set_mocked_audit_info())
    +        codebuild = Codebuild(set_mocked_aws_audit_info())
             assert len(codebuild.projects) == 1
             assert codebuild.projects[0].name == "test"
    -        assert codebuild.projects[0].region == AWS_REGION
    +        assert codebuild.projects[0].region == AWS_REGION_EU_WEST_1
     
         def test__list_builds_for_project__(self):
    -        codebuild = Codebuild(self.set_mocked_audit_info())
    +        codebuild = Codebuild(set_mocked_aws_audit_info())
             assert len(codebuild.projects) == 1
             assert codebuild.projects[0].name == "test"
    -        assert codebuild.projects[0].region == AWS_REGION
    +        assert codebuild.projects[0].region == AWS_REGION_EU_WEST_1
             assert codebuild.projects[0].last_invoked_time == last_invoked_time
             assert (
                 codebuild.projects[0].buildspec
    diff --git a/tests/providers/aws/services/cognito/cognito_service_test.py b/tests/providers/aws/services/cognito/cognito_service_test.py
    new file mode 100644
    index 00000000000..6128c0700da
    --- /dev/null
    +++ b/tests/providers/aws/services/cognito/cognito_service_test.py
    @@ -0,0 +1,117 @@
    +from boto3 import client
    +from moto import mock_aws
    +
    +from prowler.providers.aws.services.cognito.cognito_service import CognitoIDP
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_ACCOUNT_NUMBER,
    +    AWS_REGION_EU_WEST_1,
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
    +
    +
    +class Test_Cognito_Service:
    +    # Test Cognito Service
    +    @mock_aws
    +    def test_service(self):
    +        audit_info = set_mocked_aws_audit_info(
    +            audited_regions=[AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
    +        cognito = CognitoIDP(audit_info)
    +        assert cognito.service == "cognito-idp"
    +
    +    # Test Cognito client
    +    @mock_aws
    +    def test_client(self):
    +        audit_info = set_mocked_aws_audit_info(
    +            audited_regions=[AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
    +        cognito = CognitoIDP(audit_info)
    +        for regional_client in cognito.regional_clients.values():
    +            assert regional_client.__class__.__name__ == "CognitoIdentityProvider"
    +
    +    # Test Cognito session
    +    @mock_aws
    +    def test__get_session__(self):
    +        audit_info = set_mocked_aws_audit_info(
    +            audited_regions=[AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
    +        cognito = CognitoIDP(audit_info)
    +        assert cognito.session.__class__.__name__ == "Session"
    +
    +    # Test Cognito Session
    +    @mock_aws
    +    def test_audited_account(self):
    +        audit_info = set_mocked_aws_audit_info(
    +            audited_regions=[AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
    +        cognito = CognitoIDP(audit_info)
    +        assert cognito.audited_account == AWS_ACCOUNT_NUMBER
    +
    +    @mock_aws
    +    def test_list_user_pools(self):
    +        user_pool_name_1 = "user_pool_test_1"
    +        user_pool_name_2 = "user_pool_test_2"
    +        audit_info = set_mocked_aws_audit_info(
    +            audited_regions=[AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
    +        cognito_client_eu_west_1 = client("cognito-idp", region_name="eu-west-1")
    +        cognito_client_us_east_1 = client("cognito-idp", region_name="us-east-1")
    +        cognito_client_eu_west_1.create_user_pool(PoolName=user_pool_name_1)
    +        cognito_client_us_east_1.create_user_pool(PoolName=user_pool_name_2)
    +        cognito = CognitoIDP(audit_info)
    +        assert len(cognito.user_pools) == 2
    +        for user_pool in cognito.user_pools.values():
    +            assert (
    +                user_pool.name == user_pool_name_1 or user_pool.name == user_pool_name_2
    +            )
    +            assert user_pool.region == "eu-west-1" or user_pool.region == "us-east-1"
    +
    +    @mock_aws
    +    def test_describe_user_pools(self):
    +        user_pool_name_1 = "user_pool_test_1"
    +        audit_info = set_mocked_aws_audit_info(
    +            audited_regions=[AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
    +        cognito_client_eu_west_1 = client("cognito-idp", region_name="eu-west-1")
    +        user_pool_id = cognito_client_eu_west_1.create_user_pool(
    +            PoolName=user_pool_name_1
    +        )["UserPool"]["Id"]
    +        cognito = CognitoIDP(audit_info)
    +        assert len(cognito.user_pools) == 1
    +        for user_pool in cognito.user_pools.values():
    +            assert user_pool.name == user_pool_name_1
    +            assert user_pool.region == "eu-west-1"
    +            assert user_pool.id == user_pool_id
    +            assert user_pool.password_policy is not None
    +            assert user_pool.deletion_protection is not None
    +            assert user_pool.advanced_security_mode is not None
    +            assert user_pool.tags is not None
    +
    +    @mock_aws
    +    def test_get_user_pool_mfa_config(self):
    +        user_pool_name_1 = "user_pool_test_1"
    +        audit_info = set_mocked_aws_audit_info(
    +            audited_regions=[AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
    +        cognito_client_eu_west_1 = client("cognito-idp", region_name="eu-west-1")
    +        user_pool_id = cognito_client_eu_west_1.create_user_pool(
    +            PoolName=user_pool_name_1
    +        )["UserPool"]["Id"]
    +        cognito_client_eu_west_1.set_user_pool_mfa_config(
    +            UserPoolId=user_pool_id,
    +            SoftwareTokenMfaConfiguration={"Enabled": True},
    +            MfaConfiguration="ON",
    +        )
    +        cognito = CognitoIDP(audit_info)
    +        assert len(cognito.user_pools) == 1
    +        for user_pool in cognito.user_pools.values():
    +            assert user_pool.name == user_pool_name_1
    +            assert user_pool.region == "eu-west-1"
    +            assert user_pool.id == user_pool_id
    +            assert user_pool.mfa_config is not None
    +            assert user_pool.mfa_config.sms_authentication == {}
    +            assert user_pool.mfa_config.software_token_mfa_authentication == {
    +                "Enabled": True
    +            }
    +            assert user_pool.mfa_config.status == "ON"
    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 fdd41bf0f90..852d852ac2a 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
    @@ -1,54 +1,26 @@
     from unittest import mock
     
    -from boto3 import client, session
    -from moto import mock_config
    +from boto3 import client
    +from moto import mock_aws
     
    -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"
    -AWS_ACCOUNT_ARN = f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_ACCOUNT_ARN,
    +    AWS_ACCOUNT_NUMBER,
    +    AWS_REGION_EU_SOUTH_2,
    +    AWS_REGION_EU_WEST_1,
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     
     class Test_config_recorder_all_regions_enabled:
    -    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",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=["us-east-1", "eu-west-1"],
    -            organizations_metadata=None,
    -            audit_resources=None,
    -            mfa_enabled=False,
    -            audit_metadata=Audit_Metadata(
    -                services_scanned=0,
    -                expected_checks=[],
    -                completed_checks=0,
    -                audit_progress=0,
    -            ),
    -            audit_config={},
    -        )
    -
    -        return audit_info
    -
    -    @mock_config
    +    @mock_aws
         def test_config_no_recorders(self):
             from prowler.providers.aws.services.config.config_service import Config
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -76,18 +48,17 @@ def test_config_no_recorders(self):
                 assert result[0].resource_arn == AWS_ACCOUNT_ARN
                 assert result[0].resource_id == AWS_ACCOUNT_NUMBER
     
    -    @mock_config
    +    @mock_aws
         def test_config_one_recoder_disabled(self):
             # Create Config Mocked Resources
    -        config_client = client("config", region_name=AWS_REGION)
    +        config_client = client("config", region_name=AWS_REGION_US_EAST_1)
             # Create Config Recorder
             config_client.put_configuration_recorder(
                 ConfigurationRecorder={"name": "default", "roleARN": "somearn"}
             )
             from prowler.providers.aws.services.config.config_service import Config
     
    -        current_audit_info = self.set_mocked_audit_info()
    -        current_audit_info.audited_regions = [AWS_REGION]
    +        current_audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -114,12 +85,12 @@ def test_config_one_recoder_disabled(self):
                         )
                         assert recorder.resource_id == "default"
                         assert recorder.resource_arn == AWS_ACCOUNT_ARN
    -                    assert recorder.region == AWS_REGION
    +                    assert recorder.region == AWS_REGION_US_EAST_1
     
    -    @mock_config
    +    @mock_aws
         def test_config_one_recoder_enabled(self):
             # Create Config Mocked Resources
    -        config_client = client("config", region_name=AWS_REGION)
    +        config_client = client("config", region_name=AWS_REGION_US_EAST_1)
             # Create Config Recorder and start it
             config_client.put_configuration_recorder(
                 ConfigurationRecorder={"name": "default", "roleARN": "somearn"}
    @@ -131,8 +102,7 @@ def test_config_one_recoder_enabled(self):
             config_client.start_configuration_recorder(ConfigurationRecorderName="default")
             from prowler.providers.aws.services.config.config_service import Config
     
    -        current_audit_info = self.set_mocked_audit_info()
    -        current_audit_info.audited_regions = [AWS_REGION]
    +        current_audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -159,22 +129,23 @@ def test_config_one_recoder_enabled(self):
                         )
                         assert recorder.resource_id == "default"
                         assert recorder.resource_arn == AWS_ACCOUNT_ARN
    -                    assert recorder.region == AWS_REGION
    +                    assert recorder.region == AWS_REGION_US_EAST_1
     
    -    @mock_config
    -    def test_config_one_recorder_disabled_muted(self):
    +    @mock_aws
    +    def test_config_one_recorder_disabled_allowlisted(self):
             # Create Config Mocked Resources
    -        config_client = client("config", region_name=AWS_REGION)
    +        config_client = client("config", region_name=AWS_REGION_US_EAST_1)
             # Create Config Recorder
             config_client.put_configuration_recorder(
                 ConfigurationRecorder={"name": AWS_ACCOUNT_NUMBER, "roleARN": "somearn"}
             )
             from prowler.providers.aws.services.config.config_service import Config
     
    -        current_audit_info = self.set_mocked_audit_info()
    -        current_audit_info.profile_region = "eu-south-2"
    -        current_audit_info.audited_regions = ["eu-south-2", AWS_REGION]
    -        current_audit_info.audit_config = {"mute_non_default_regions": True}
    +        current_audit_info = set_mocked_aws_audit_info(
    +            audited_regions=[AWS_REGION_EU_SOUTH_2, AWS_REGION_US_EAST_1],
    +            profile_region=AWS_REGION_EU_SOUTH_2,
    +            audit_config={"allowlist_non_default_regions": True},
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -193,15 +164,15 @@ def test_config_one_recorder_disabled_muted(self):
                 assert len(result) == 2
                 # Search for the recorder just created
                 for recorder in result:
    -                if recorder.region == AWS_REGION:
    -                    assert recorder.status == "MUTED"
    +                if recorder.region == AWS_REGION_US_EAST_1:
    +                    assert recorder.status == "WARNING"
                         assert (
                             recorder.status_extended
                             == f"AWS Config recorder {AWS_ACCOUNT_NUMBER} is disabled."
                         )
                         assert recorder.resource_id == AWS_ACCOUNT_NUMBER
                         assert recorder.resource_arn == AWS_ACCOUNT_ARN
    -                    assert recorder.region == AWS_REGION
    +                    assert recorder.region == AWS_REGION_US_EAST_1
                     else:
                         assert recorder.status == "FAIL"
                         assert (
    diff --git a/tests/providers/aws/services/config/config_service_test.py b/tests/providers/aws/services/config/config_service_test.py
    index b9aae1e4a8a..45606d9db99 100644
    --- a/tests/providers/aws/services/config/config_service_test.py
    +++ b/tests/providers/aws/services/config/config_service_test.py
    @@ -1,84 +1,62 @@
    -from boto3 import client, session
    -from moto import mock_config
    +from boto3 import client
    +from moto import mock_aws
     
    -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"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_ACCOUNT_NUMBER,
    +    AWS_REGION_EU_WEST_1,
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     
     class Test_Config_Service:
    -    # 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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=["eu-west-1", "us-east-1"],
    -            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
    -
         # Test Config Service
    -    @mock_config
    +    @mock_aws
         def test_service(self):
             # Config client for this test class
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
             config = Config(audit_info)
             assert config.service == "config"
     
         # Test Config Client
    -    @mock_config
    +    @mock_aws
         def test_client(self):
             # Config client for this test class
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
             config = Config(audit_info)
             for regional_client in config.regional_clients.values():
                 assert regional_client.__class__.__name__ == "ConfigService"
     
         # Test Config Session
    -    @mock_config
    +    @mock_aws
         def test__get_session__(self):
             # Config client for this test class
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
             config = Config(audit_info)
             assert config.session.__class__.__name__ == "Session"
     
         # Test Config Session
    -    @mock_config
    +    @mock_aws
         def test_audited_account(self):
             # Config client for this test class
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
             config = Config(audit_info)
             assert config.audited_account == AWS_ACCOUNT_NUMBER
     
         # Test Config Get Rest APIs
    -    @mock_config
    +    @mock_aws
         def test__describe_configuration_recorder_status__(self):
             # Generate Config Client
    -        config_client = client("config", region_name=AWS_REGION)
    +        config_client = client("config", region_name=AWS_REGION_US_EAST_1)
             # Create Config Recorder and start it
             config_client.put_configuration_recorder(
                 ConfigurationRecorder={"name": "default", "roleARN": "somearn"}
    @@ -89,7 +67,9 @@ def test__describe_configuration_recorder_status__(self):
             )
             config_client.start_configuration_recorder(ConfigurationRecorderName="default")
             # Config client for this test class
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
             config = Config(audit_info)
             # One recorder per region
             assert len(config.recorders) == 2
    diff --git a/tests/providers/aws/services/directoryservice/directoryservice_directory_monitor_notifications/directoryservice_directory_monitor_notifications_test.py b/tests/providers/aws/services/directoryservice/directoryservice_directory_monitor_notifications/directoryservice_directory_monitor_notifications_test.py
    index d4d132e99f2..ca7e02c19a3 100644
    --- a/tests/providers/aws/services/directoryservice/directoryservice_directory_monitor_notifications/directoryservice_directory_monitor_notifications_test.py
    +++ b/tests/providers/aws/services/directoryservice/directoryservice_directory_monitor_notifications/directoryservice_directory_monitor_notifications_test.py
    @@ -1,17 +1,15 @@
     from datetime import datetime
     from unittest import mock
     
    -from moto.core import DEFAULT_ACCOUNT_ID
    -
     from prowler.providers.aws.services.directoryservice.directoryservice_service import (
         Directory,
         DirectoryType,
         EventTopics,
         EventTopicStatus,
     )
    +from tests.providers.aws.audit_info_utils import AWS_ACCOUNT_NUMBER
     
     AWS_REGION = "eu-west-1"
    -AWS_ACCOUNT_NUMBER = "123456789012"
     
     
     class Test_directoryservice_directory_monitor_notifications:
    @@ -88,7 +86,7 @@ def test_one_directory_logging_enabled(self):
                     region=AWS_REGION,
                     event_topics=[
                         EventTopics(
    -                        topic_arn=f"arn:aws:sns:{AWS_REGION}:{DEFAULT_ACCOUNT_ID}:test-topic",
    +                        topic_arn=f"arn:aws:sns:{AWS_REGION}:{AWS_ACCOUNT_NUMBER}:test-topic",
                             topic_name="test-topic",
                             status=EventTopicStatus.Registered,
                             created_date_time=datetime(2022, 1, 1),
    diff --git a/tests/providers/aws/services/directoryservice/directoryservice_service_test.py b/tests/providers/aws/services/directoryservice/directoryservice_service_test.py
    index 8bae198a17d..bde1964f390 100644
    --- a/tests/providers/aws/services/directoryservice/directoryservice_service_test.py
    +++ b/tests/providers/aws/services/directoryservice/directoryservice_service_test.py
    @@ -2,11 +2,8 @@
     from unittest.mock import patch
     
     import botocore
    -from boto3 import session
    -from moto import mock_ds
    -from moto.core import DEFAULT_ACCOUNT_ID
    +from moto import mock_aws
     
    -from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info
     from prowler.providers.aws.services.directoryservice.directoryservice_service import (
         AuthenticationProtocol,
         CertificateState,
    @@ -16,12 +13,12 @@
         EventTopicStatus,
         RadiusStatus,
     )
    -from prowler.providers.common.models import Audit_Metadata
    -
    -# Mock Test Region
    -AWS_REGION = "eu-west-1"
    -AWS_ACCOUNT_NUMBER = "123456789012"
    -
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_ACCOUNT_NUMBER,
    +    AWS_REGION_EU_WEST_1,
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     # Mocking Access Analyzer Calls
     make_api_call = botocore.client.BaseClient._make_api_call
    @@ -69,7 +66,7 @@ def mock_make_api_call(self, operation_name, kwarg):
                     {
                         "DirectoryId": "d-12345a1b2",
                         "TopicName": "test-topic",
    -                    "TopicArn": f"arn:aws:sns:{AWS_REGION}:{DEFAULT_ACCOUNT_ID}:test-topic",
    +                    "TopicArn": f"arn:aws:sns:{AWS_REGION_EU_WEST_1}:{AWS_ACCOUNT_NUMBER}:test-topic",
                         "CreatedDateTime": datetime(2022, 1, 1),
                         "Status": "Registered",
                     },
    @@ -106,10 +103,12 @@ def mock_make_api_call(self, operation_name, kwarg):
     
     
     # Mock generate_regional_clients()
    -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}
    +def mock_generate_regional_clients(service, audit_info):
    +    regional_client = audit_info.audit_session.client(
    +        service, region_name=AWS_REGION_EU_WEST_1
    +    )
    +    regional_client.region = AWS_REGION_EU_WEST_1
    +    return {AWS_REGION_EU_WEST_1: regional_client}
     
     
     # Patch every AWS call using Boto3 and generate_regional_clients to have 1 client
    @@ -119,75 +118,54 @@ def mock_generate_regional_clients(service, audit_info, _):
         new=mock_generate_regional_clients,
     )
     class Test_DirectoryService_Service:
    -    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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=["us-east-1", "eu-west-1"],
    -            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
    -
         # Test DirectoryService Client
    -    @mock_ds
    +    @mock_aws
         def test__get_client__(self):
    -        directoryservice = DirectoryService(self.set_mocked_audit_info())
    +        directoryservice = DirectoryService(
    +            set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1])
    +        )
             assert (
    -            directoryservice.regional_clients[AWS_REGION].__class__.__name__
    +            directoryservice.regional_clients[AWS_REGION_EU_WEST_1].__class__.__name__
                 == "DirectoryService"
             )
     
         # Test DirectoryService Session
    -    @mock_ds
    +    @mock_aws
         def test__get_session__(self):
    -        directoryservice = DirectoryService(self.set_mocked_audit_info())
    +        directoryservice = DirectoryService(
    +            set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1])
    +        )
             assert directoryservice.session.__class__.__name__ == "Session"
     
         # Test DirectoryService Service
    -    @mock_ds
    +    @mock_aws
         def test__get_service__(self):
    -        directoryservice = DirectoryService(self.set_mocked_audit_info())
    +        directoryservice = DirectoryService(
    +            set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1])
    +        )
             assert directoryservice.service == "ds"
     
    -    @mock_ds
    +    @mock_aws
         def test__describe_directories__(self):
             # Set partition for the service
    -        directoryservice = DirectoryService(self.set_mocked_audit_info())
    +        directoryservice = DirectoryService(
    +            set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1])
    +        )
     
             # __describe_directories__
             assert directoryservice.directories["d-12345a1b2"].id == "d-12345a1b2"
             assert (
                 directoryservice.directories["d-12345a1b2"].arn
    -            == f"arn:aws:ds:{AWS_REGION}:{AWS_ACCOUNT_NUMBER}:directory/d-12345a1b2"
    +            == f"arn:aws:ds:{AWS_REGION_EU_WEST_1}:{AWS_ACCOUNT_NUMBER}:directory/d-12345a1b2"
             )
             assert (
                 directoryservice.directories["d-12345a1b2"].type
                 == DirectoryType.MicrosoftAD
             )
             assert directoryservice.directories["d-12345a1b2"].name == "test-directory"
    -        assert directoryservice.directories["d-12345a1b2"].region == AWS_REGION
    +        assert (
    +            directoryservice.directories["d-12345a1b2"].region == AWS_REGION_EU_WEST_1
    +        )
             assert directoryservice.directories["d-12345a1b2"].tags == [
                 {"Key": "string", "Value": "string"},
             ]
    @@ -222,7 +200,7 @@ def test__describe_directories__(self):
             )
             assert (
                 directoryservice.directories["d-12345a1b2"].event_topics[0].topic_arn
    -            == f"arn:aws:sns:{AWS_REGION}:{DEFAULT_ACCOUNT_ID}:test-topic"
    +            == f"arn:aws:sns:{AWS_REGION_EU_WEST_1}:{AWS_ACCOUNT_NUMBER}:test-topic"
             )
             assert (
                 directoryservice.directories["d-12345a1b2"].event_topics[0].status
    diff --git a/tests/providers/aws/services/dlm/dlm_ebs_snapshot_lifecycle_policy_exists/dlm_ebs_snapshot_lifecycle_policy_exists_test.py b/tests/providers/aws/services/dlm/dlm_ebs_snapshot_lifecycle_policy_exists/dlm_ebs_snapshot_lifecycle_policy_exists_test.py
    index eeb11e952b6..062378a3157 100644
    --- a/tests/providers/aws/services/dlm/dlm_ebs_snapshot_lifecycle_policy_exists/dlm_ebs_snapshot_lifecycle_policy_exists_test.py
    +++ b/tests/providers/aws/services/dlm/dlm_ebs_snapshot_lifecycle_policy_exists/dlm_ebs_snapshot_lifecycle_policy_exists_test.py
    @@ -1,51 +1,21 @@
     from unittest import mock
     
    -from boto3 import client, resource, session
    -from moto import mock_ec2
    +from boto3 import client, resource
    +from moto import mock_aws
     
    -from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info
     from prowler.providers.aws.services.dlm.dlm_service import LifecyclePolicy
    -from prowler.providers.common.models import Audit_Metadata
    -
    -AWS_ACCOUNT_NUMBER = "123456789012"
    -AWS_ACCOUNT_ARN = f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root"
    -AWS_REGION = "us-east-1"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_ACCOUNT_ARN,
    +    AWS_ACCOUNT_NUMBER,
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     LIFECYCLE_POLICY_ID = "policy-XXXXXXXXXXXX"
     
     
     class Test_dlm_ebs_snapshot_lifecycle_policy_exists:
    -    def set_mocked_audit_info(self):
    -        return AWS_Audit_Info(
    -            session_config=None,
    -            original_session=None,
    -            audit_session=session.Session(
    -                profile_name=None,
    -                botocore_session=None,
    -            ),
    -            audit_config=None,
    -            audited_account=AWS_ACCOUNT_NUMBER,
    -            audited_account_arn=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=[AWS_REGION],
    -            organizations_metadata=None,
    -            audit_resources=None,
    -            mfa_enabled=False,
    -            audit_metadata=Audit_Metadata(
    -                services_scanned=0,
    -                expected_checks=[],
    -                completed_checks=0,
    -                audit_progress=0,
    -            ),
    -        )
    -
    -    @mock_ec2
    +    @mock_aws
         def test_no_ebs_snapshot_no_lifecycle_policies(self):
             # DLM Mock Client
             dlm_client = mock.MagicMock
    @@ -53,7 +23,7 @@ def test_no_ebs_snapshot_no_lifecycle_policies(self):
             dlm_client.audited_account_arn = AWS_ACCOUNT_ARN
             dlm_client.lifecycle_policies = {}
     
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
     
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    @@ -78,11 +48,11 @@ def test_no_ebs_snapshot_no_lifecycle_policies(self):
                 result = check.execute()
                 assert len(result) == 0
     
    -    @mock_ec2
    +    @mock_aws
         def test_one_ebs_snapshot_and_dlm_lifecycle_policy(self):
             # Generate EC2 Client
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    -        ec2_resource = resource("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
    +        ec2_resource = resource("ec2", region_name=AWS_REGION_US_EAST_1)
             # Create EC2 Volume and Snapshot
             volume_id = ec2_resource.create_volume(
                 AvailabilityZone="us-east-1a",
    @@ -106,7 +76,7 @@ def test_one_ebs_snapshot_and_dlm_lifecycle_policy(self):
             dlm_client.audited_account = AWS_ACCOUNT_NUMBER
             dlm_client.audited_account_arn = AWS_ACCOUNT_ARN
             dlm_client.lifecycle_policies = {
    -            AWS_REGION: {
    +            AWS_REGION_US_EAST_1: {
                     LIFECYCLE_POLICY_ID: LifecyclePolicy(
                         id=LIFECYCLE_POLICY_ID,
                         state="ENABLED",
    @@ -116,7 +86,7 @@ def test_one_ebs_snapshot_and_dlm_lifecycle_policy(self):
                 }
             }
     
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
     
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    @@ -139,15 +109,15 @@ def test_one_ebs_snapshot_and_dlm_lifecycle_policy(self):
                 assert len(result) == 1
                 assert result[0].status == "PASS"
                 assert result[0].status_extended == "EBS snapshot lifecycle policies found."
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_US_EAST_1
                 assert result[0].resource_id == AWS_ACCOUNT_NUMBER
                 assert result[0].resource_arn == AWS_ACCOUNT_ARN
     
    -    @mock_ec2
    +    @mock_aws
         def test_one_ebs_snapshot_and_no_dlm_lifecycle_policy(self):
             # Generate EC2 Client
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    -        ec2_resource = resource("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
    +        ec2_resource = resource("ec2", region_name=AWS_REGION_US_EAST_1)
             # Create EC2 Volume and Snapshot
             volume_id = ec2_resource.create_volume(
                 AvailabilityZone="us-east-1a",
    @@ -174,7 +144,7 @@ def test_one_ebs_snapshot_and_no_dlm_lifecycle_policy(self):
     
             # from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
     
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    @@ -196,14 +166,14 @@ def test_one_ebs_snapshot_and_no_dlm_lifecycle_policy(self):
                 result = check.execute()
                 assert len(result) == 0
     
    -    @mock_ec2
    +    @mock_aws
         def test_no_ebs_snapshot_and_dlm_lifecycle_policy(self):
             # DLM Mock Client
             dlm_client = mock.MagicMock
             dlm_client.audited_account = AWS_ACCOUNT_NUMBER
             dlm_client.audited_account_arn = AWS_ACCOUNT_ARN
             dlm_client.lifecycle_policies = {
    -            AWS_REGION: {
    +            AWS_REGION_US_EAST_1: {
                     LIFECYCLE_POLICY_ID: LifecyclePolicy(
                         id=LIFECYCLE_POLICY_ID,
                         state="ENABLED",
    @@ -215,7 +185,7 @@ def test_no_ebs_snapshot_and_dlm_lifecycle_policy(self):
     
             # from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
     
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    diff --git a/tests/providers/aws/services/dlm/dlm_service_test.py b/tests/providers/aws/services/dlm/dlm_service_test.py
    index 6bfb74a3c72..42a354800f8 100644
    --- a/tests/providers/aws/services/dlm/dlm_service_test.py
    +++ b/tests/providers/aws/services/dlm/dlm_service_test.py
    @@ -1,14 +1,12 @@
     import botocore
    -from boto3 import session
     from mock import patch
     
    -from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info
     from prowler.providers.aws.services.dlm.dlm_service import DLM, LifecyclePolicy
    -from prowler.providers.common.models import Audit_Metadata
    -
    -AWS_ACCOUNT_NUMBER = "123456789012"
    -AWS_ACCOUNT_ARN = f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root"
    -AWS_REGION = "us-east-1"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_ACCOUNT_NUMBER,
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     LIFECYCLE_POLICY_ID = "policy-XXXXXXXXXXXX"
     
    @@ -40,10 +38,12 @@ 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, _):
    -    regional_client = audit_info.audit_session.client(service, region_name=AWS_REGION)
    -    regional_client.region = AWS_REGION
    -    return {AWS_REGION: regional_client}
    +def mock_generate_regional_clients(service, audit_info):
    +    regional_client = audit_info.audit_session.client(
    +        service, region_name=AWS_REGION_US_EAST_1
    +    )
    +    regional_client.region = AWS_REGION_US_EAST_1
    +    return {AWS_REGION_US_EAST_1: regional_client}
     
     
     @patch(
    @@ -53,68 +53,37 @@ def mock_generate_regional_clients(service, audit_info, _):
     # Patch every AWS call using Boto3
     @patch("botocore.client.BaseClient._make_api_call", new=mock_make_api_call)
     class Test_DLM_Service:
    -    # 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",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=None,
    -            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
    -
         # Test DLM Service
         def test_service(self):
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info()
             dlm = DLM(audit_info)
             assert dlm.service == "dlm"
     
         # Test DLM Client
         def test_client(self):
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info()
             dlm = DLM(audit_info)
             assert dlm.client.__class__.__name__ == "DLM"
     
         # Test DLM Session
         def test__get_session__(self):
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info()
             dlm = DLM(audit_info)
             assert dlm.session.__class__.__name__ == "Session"
     
         # Test DLM Session
         def test_audited_account(self):
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info()
             dlm = DLM(audit_info)
             assert dlm.audited_account == AWS_ACCOUNT_NUMBER
     
         # Test DLM Get DLM Contacts
         def test_get_lifecycle_policies(self):
             # DLM client for this test class
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info()
             dlm = DLM(audit_info)
             assert dlm.lifecycle_policies == {
    -            AWS_REGION: {
    +            AWS_REGION_US_EAST_1: {
                     LIFECYCLE_POLICY_ID: LifecyclePolicy(
                         id=LIFECYCLE_POLICY_ID,
                         state="ENABLED",
    diff --git a/tests/providers/aws/services/documentdb/documentdb_service_test.py b/tests/providers/aws/services/documentdb/documentdb_service_test.py
    index 5af692519d7..bc7e9c28d61 100644
    --- a/tests/providers/aws/services/documentdb/documentdb_service_test.py
    +++ b/tests/providers/aws/services/documentdb/documentdb_service_test.py
    @@ -1,22 +1,20 @@
     import botocore
    -from boto3 import session
     from mock import patch
     
    -from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info
     from prowler.providers.aws.services.documentdb.documentdb_service import (
         DocumentDB,
         Instance,
     )
    -from prowler.providers.common.models import Audit_Metadata
    -
    -AWS_ACCOUNT_NUMBER = "123456789012"
    -AWS_ACCOUNT_ARN = f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root"
    -AWS_REGION = "us-east-1"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_ACCOUNT_NUMBER,
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     DOC_DB_CLUSTER_ID = "test-cluster"
     DOC_DB_INSTANCE_NAME = "test-db"
     DOC_DB_INSTANCE_ARN = (
    -    f"arn:aws:rds:{AWS_REGION}:{AWS_ACCOUNT_NUMBER}:db:{DOC_DB_INSTANCE_NAME}"
    +    f"arn:aws:rds:{AWS_REGION_US_EAST_1}:{AWS_ACCOUNT_NUMBER}:db:{DOC_DB_INSTANCE_NAME}"
     )
     DOC_DB_ENGINE_VERSION = "5.0.0"
     
    @@ -60,10 +58,12 @@ 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, _):
    -    regional_client = audit_info.audit_session.client(service, region_name=AWS_REGION)
    -    regional_client.region = AWS_REGION
    -    return {AWS_REGION: regional_client}
    +def mock_generate_regional_clients(service, audit_info):
    +    regional_client = audit_info.audit_session.client(
    +        service, region_name=AWS_REGION_US_EAST_1
    +    )
    +    regional_client.region = AWS_REGION_US_EAST_1
    +    return {AWS_REGION_US_EAST_1: regional_client}
     
     
     @patch(
    @@ -73,64 +73,33 @@ def mock_generate_regional_clients(service, audit_info, _):
     # Patch every AWS call using Boto3
     @patch("botocore.client.BaseClient._make_api_call", new=mock_make_api_call)
     class Test_DocumentDB_Service:
    -    # 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",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=None,
    -            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
    -
         # Test DocumentDB Service
         def test_service(self):
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info()
             docdb = DocumentDB(audit_info)
             assert docdb.service == "docdb"
     
         # Test DocumentDB Client
         def test_client(self):
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info()
             docdb = DocumentDB(audit_info)
             assert docdb.client.__class__.__name__ == "DocDB"
     
         # Test DocumentDB Session
         def test__get_session__(self):
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info()
             docdb = DocumentDB(audit_info)
             assert docdb.session.__class__.__name__ == "Session"
     
         # Test DocumentDB Session
         def test_audited_account(self):
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info()
             docdb = DocumentDB(audit_info)
             assert docdb.audited_account == AWS_ACCOUNT_NUMBER
     
         # Test DocumentDB Get DocumentDB Contacts
         def test_describe_db_instances(self):
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info()
             docdb = DocumentDB(audit_info)
             assert docdb.db_instances == {
                 DOC_DB_INSTANCE_ARN: Instance(
    @@ -142,7 +111,7 @@ def test_describe_db_instances(self):
                     public=False,
                     encrypted=False,
                     cluster_id=DOC_DB_CLUSTER_ID,
    -                region=AWS_REGION,
    +                region=AWS_REGION_US_EAST_1,
                     tags=[{"Key": "environment", "Value": "test"}],
                 )
             }
    diff --git a/tests/providers/aws/services/drs/drs_service_test.py b/tests/providers/aws/services/drs/drs_service_test.py
    index 1c85ce714cc..6fbc69d689d 100644
    --- a/tests/providers/aws/services/drs/drs_service_test.py
    +++ b/tests/providers/aws/services/drs/drs_service_test.py
    @@ -2,14 +2,12 @@
     from unittest.mock import patch
     
     import botocore
    -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"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     # Mocking Calls
     make_api_call = botocore.client.BaseClient._make_api_call
    @@ -43,10 +41,12 @@ 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, _):
    -    regional_client = audit_info.audit_session.client(service, region_name=AWS_REGION)
    -    regional_client.region = AWS_REGION
    -    return {AWS_REGION: regional_client}
    +def mock_generate_regional_clients(service, audit_info):
    +    regional_client = audit_info.audit_session.client(
    +        service, region_name=AWS_REGION_US_EAST_1
    +    )
    +    regional_client.region = AWS_REGION_US_EAST_1
    +    return {AWS_REGION_US_EAST_1: regional_client}
     
     
     # Patch every AWS call using Boto3 and generate_regional_clients to have 1 client
    @@ -56,51 +56,20 @@ def mock_generate_regional_clients(service, audit_info, _):
         new=mock_generate_regional_clients,
     )
     class Test_DRS_Service:
    -    # 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=None,
    -            audited_account_arn=None,
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=None,
    -            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
    -
         def test__get_client__(self):
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info()
             drs = DRS(audit_info)
    -        assert drs.regional_clients[AWS_REGION].__class__.__name__ == "drs"
    +        assert drs.regional_clients[AWS_REGION_US_EAST_1].__class__.__name__ == "drs"
     
         def test__get_service__(self):
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info()
             drs = DRS(audit_info)
             assert drs.service == "drs"
     
         def test__describe_jobs__(self):
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info()
             drs = DRS(audit_info)
             assert len(drs.drs_services) == 1
             assert drs.drs_services[0].id == "DRS"
    -        assert drs.drs_services[0].region == AWS_REGION
    +        assert drs.drs_services[0].region == AWS_REGION_US_EAST_1
             assert drs.drs_services[0].status == "ENABLED"
    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 b0e2e4cd057..0175b52c3e4 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
    @@ -1,53 +1,25 @@
     from re import search
     from unittest import mock
     
    -from boto3 import client, session
    -from moto import mock_dax
    -from moto.core import DEFAULT_ACCOUNT_ID
    +from boto3 import client
    +from moto import mock_aws
     
    -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"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_ACCOUNT_NUMBER,
    +    AWS_REGION_EU_WEST_1,
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     
     class Test_dynamodb_accelerator_cluster_encryption_enabled:
    -    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=DEFAULT_ACCOUNT_ID,
    -            audited_account_arn=f"arn:aws:iam::{DEFAULT_ACCOUNT_ID}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=["us-east-1", "eu-west-1"],
    -            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
    -
    -    @mock_dax
    +    @mock_aws
         def test_dax_no_clusters(self):
             from prowler.providers.aws.services.dynamodb.dynamodb_service import DAX
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -66,10 +38,10 @@ def test_dax_no_clusters(self):
     
                 assert len(result) == 0
     
    -    @mock_dax
    +    @mock_aws
         def test_dax_cluster_no_encryption(self):
    -        dax_client = client("dax", region_name=AWS_REGION)
    -        iam_role_arn = f"arn:aws:iam::{DEFAULT_ACCOUNT_ID}:role/aws-service-role/dax.amazonaws.com/AWSServiceRoleForDAX"
    +        dax_client = client("dax", region_name=AWS_REGION_US_EAST_1)
    +        iam_role_arn = f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:role/aws-service-role/dax.amazonaws.com/AWSServiceRoleForDAX"
             cluster = dax_client.create_cluster(
                 ClusterName="daxcluster",
                 NodeType="dax.t3.small",
    @@ -78,7 +50,9 @@ def test_dax_cluster_no_encryption(self):
             )["Cluster"]
             from prowler.providers.aws.services.dynamodb.dynamodb_service import DAX
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -103,13 +77,13 @@ def test_dax_cluster_no_encryption(self):
                 )
                 assert result[0].resource_id == cluster["ClusterName"]
                 assert result[0].resource_arn == cluster["ClusterArn"]
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_US_EAST_1
                 assert result[0].resource_tags == []
     
    -    @mock_dax
    +    @mock_aws
         def test_dax_cluster_with_encryption(self):
    -        dax_client = client("dax", region_name=AWS_REGION)
    -        iam_role_arn = f"arn:aws:iam::{DEFAULT_ACCOUNT_ID}:role/aws-service-role/dax.amazonaws.com/AWSServiceRoleForDAX"
    +        dax_client = client("dax", region_name=AWS_REGION_US_EAST_1)
    +        iam_role_arn = f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:role/aws-service-role/dax.amazonaws.com/AWSServiceRoleForDAX"
             cluster = dax_client.create_cluster(
                 ClusterName="daxcluster",
                 NodeType="dax.t3.small",
    @@ -119,7 +93,9 @@ def test_dax_cluster_with_encryption(self):
             )["Cluster"]
             from prowler.providers.aws.services.dynamodb.dynamodb_service import DAX
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -141,5 +117,5 @@ def test_dax_cluster_with_encryption(self):
                 assert search("has encryption at rest enabled", result[0].status_extended)
                 assert result[0].resource_id == cluster["ClusterName"]
                 assert result[0].resource_arn == cluster["ClusterArn"]
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_US_EAST_1
                 assert result[0].resource_tags == []
    diff --git a/tests/providers/aws/services/dynamodb/dynamodb_service_test.py b/tests/providers/aws/services/dynamodb/dynamodb_service_test.py
    index f6726b297d0..eb4558a6186 100644
    --- a/tests/providers/aws/services/dynamodb/dynamodb_service_test.py
    +++ b/tests/providers/aws/services/dynamodb/dynamodb_service_test.py
    @@ -1,84 +1,53 @@
    -from boto3 import client, session
    -from moto import mock_dax, mock_dynamodb
    +from boto3 import client
    +from moto import mock_aws
     
    -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"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_ACCOUNT_NUMBER,
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     
     class Test_DynamoDB_Service:
    -    # 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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=None,
    -            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
    -
         # Test Dynamo Service
    -    @mock_dynamodb
    +    @mock_aws
         def test_service(self):
             # Dynamo client for this test class
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info()
             dynamodb = DynamoDB(audit_info)
             assert dynamodb.service == "dynamodb"
     
         # Test Dynamo Client
    -    @mock_dynamodb
    +    @mock_aws
         def test_client(self):
             # Dynamo client for this test class
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info()
             dynamodb = DynamoDB(audit_info)
             for regional_client in dynamodb.regional_clients.values():
                 assert regional_client.__class__.__name__ == "DynamoDB"
     
         # Test Dynamo Session
    -    @mock_dynamodb
    +    @mock_aws
         def test__get_session__(self):
             # Dynamo client for this test class
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info()
             dynamodb = DynamoDB(audit_info)
             assert dynamodb.session.__class__.__name__ == "Session"
     
         # Test Dynamo Session
    -    @mock_dynamodb
    +    @mock_aws
         def test_audited_account(self):
             # Dynamo client for this test class
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info()
             dynamodb = DynamoDB(audit_info)
             assert dynamodb.audited_account == AWS_ACCOUNT_NUMBER
     
         # Test DynamoDB List Tables
    -    @mock_dynamodb
    +    @mock_aws
         def test__list_tables__(self):
             # Generate DynamoDB Client
    -        dynamodb_client = client("dynamodb", region_name=AWS_REGION)
    +        dynamodb_client = client("dynamodb", region_name=AWS_REGION_US_EAST_1)
             # Create DynamoDB Tables
             dynamodb_client.create_table(
                 TableName="test1",
    @@ -105,19 +74,19 @@ def test__list_tables__(self):
                 BillingMode="PAY_PER_REQUEST",
             )
             # DynamoDB client for this test class
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info()
             dynamo = DynamoDB(audit_info)
             assert len(dynamo.tables) == 2
             assert dynamo.tables[0].name == "test1"
             assert dynamo.tables[1].name == "test2"
    -        assert dynamo.tables[0].region == AWS_REGION
    -        assert dynamo.tables[1].region == AWS_REGION
    +        assert dynamo.tables[0].region == AWS_REGION_US_EAST_1
    +        assert dynamo.tables[1].region == AWS_REGION_US_EAST_1
     
         # Test DynamoDB Describe Table
    -    @mock_dynamodb
    +    @mock_aws
         def test__describe_table__(self):
             # Generate DynamoDB Client
    -        dynamodb_client = client("dynamodb", region_name=AWS_REGION)
    +        dynamodb_client = client("dynamodb", region_name=AWS_REGION_US_EAST_1)
             # Create DynamoDB Table
             table = dynamodb_client.create_table(
                 TableName="test1",
    @@ -135,21 +104,21 @@ def test__describe_table__(self):
                 ],
             )["TableDescription"]
             # DynamoDB client for this test class
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info()
             dynamo = DynamoDB(audit_info)
             assert len(dynamo.tables) == 1
             assert dynamo.tables[0].arn == table["TableArn"]
             assert dynamo.tables[0].name == "test1"
    -        assert dynamo.tables[0].region == AWS_REGION
    +        assert dynamo.tables[0].region == AWS_REGION_US_EAST_1
             assert dynamo.tables[0].tags == [
                 {"Key": "test", "Value": "test"},
             ]
     
         # Test DynamoDB Describe Continuous Backups
    -    @mock_dynamodb
    +    @mock_aws
         def test__describe_continuous_backups__(self):
             # Generate DynamoDB Client
    -        dynamodb_client = client("dynamodb", region_name=AWS_REGION)
    +        dynamodb_client = client("dynamodb", region_name=AWS_REGION_US_EAST_1)
             # Create DynamoDB Table
             table = dynamodb_client.create_table(
                 TableName="test1",
    @@ -168,19 +137,19 @@ def test__describe_continuous_backups__(self):
                 PointInTimeRecoverySpecification={"PointInTimeRecoveryEnabled": True},
             )
             # DynamoDB client for this test class
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info()
             dynamo = DynamoDB(audit_info)
             assert len(dynamo.tables) == 1
             assert dynamo.tables[0].arn == table["TableArn"]
             assert dynamo.tables[0].name == "test1"
             assert dynamo.tables[0].pitr
    -        assert dynamo.tables[0].region == AWS_REGION
    +        assert dynamo.tables[0].region == AWS_REGION_US_EAST_1
     
         # Test DAX Describe Clusters
    -    @mock_dax
    +    @mock_aws
         def test__describe_clusters__(self):
             # Generate DAX Client
    -        dax_client = client("dax", region_name=AWS_REGION)
    +        dax_client = client("dax", region_name=AWS_REGION_US_EAST_1)
             # Create DAX Clusters
             iam_role_arn = f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:role/aws-service-role/dax.amazonaws.com/AWSServiceRoleForDAX"
             dax_client.create_cluster(
    @@ -204,19 +173,19 @@ def test__describe_clusters__(self):
                 ],
             )
             # DAX client for this test class
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info()
             dax = DAX(audit_info)
             assert len(dax.clusters) == 2
     
             assert dax.clusters[0].name == "daxcluster1"
    -        assert dax.clusters[0].region == AWS_REGION
    +        assert dax.clusters[0].region == AWS_REGION_US_EAST_1
             assert dax.clusters[0].encryption
             assert dax.clusters[0].tags == [
                 {"Key": "test", "Value": "test"},
             ]
     
             assert dax.clusters[1].name == "daxcluster2"
    -        assert dax.clusters[1].region == AWS_REGION
    +        assert dax.clusters[1].region == AWS_REGION_US_EAST_1
             assert dax.clusters[1].encryption
             assert dax.clusters[1].tags == [
                 {"Key": "test", "Value": "test"},
    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 b8561dff27b..25f6cf4a1c4 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
    @@ -1,53 +1,24 @@
     from re import search
     from unittest import mock
     
    -from boto3 import client, session
    -from moto import mock_dynamodb
    +from boto3 import client
    +from moto import mock_aws
     
    -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"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_REGION_EU_WEST_1,
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     
     class Test_dynamodb_tables_kms_cmk_encryption_enabled:
    -    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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=["us-east-1", "eu-west-1"],
    -            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
    -
    -    @mock_dynamodb
    +    @mock_aws
         def test_dynamodb_no_tables(self):
             from prowler.providers.aws.services.dynamodb.dynamodb_service import DynamoDB
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -66,9 +37,9 @@ def test_dynamodb_no_tables(self):
     
                 assert len(result) == 0
     
    -    @mock_dynamodb
    +    @mock_aws
         def test_dynamodb_table_kms_encryption(self):
    -        dynamodb_client = client("dynamodb", region_name=AWS_REGION)
    +        dynamodb_client = client("dynamodb", region_name=AWS_REGION_US_EAST_1)
             table = dynamodb_client.create_table(
                 TableName="test1",
                 AttributeDefinitions=[
    @@ -84,7 +55,9 @@ def test_dynamodb_table_kms_encryption(self):
             )["TableDescription"]
             from prowler.providers.aws.services.dynamodb.dynamodb_service import DynamoDB
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -106,12 +79,12 @@ def test_dynamodb_table_kms_encryption(self):
                 assert search("KMS encryption enabled", result[0].status_extended)
                 assert result[0].resource_id == table["TableName"]
                 assert result[0].resource_arn == table["TableArn"]
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_US_EAST_1
                 assert result[0].resource_tags == []
     
    -    @mock_dynamodb
    +    @mock_aws
         def test_dynamodb_table_default_encryption(self):
    -        dynamodb_client = client("dynamodb", region_name=AWS_REGION)
    +        dynamodb_client = client("dynamodb", region_name=AWS_REGION_US_EAST_1)
             table = dynamodb_client.create_table(
                 TableName="test1",
                 AttributeDefinitions=[
    @@ -126,7 +99,9 @@ def test_dynamodb_table_default_encryption(self):
             )["TableDescription"]
             from prowler.providers.aws.services.dynamodb.dynamodb_service import DynamoDB
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -148,5 +123,5 @@ def test_dynamodb_table_default_encryption(self):
                 assert search("DEFAULT encryption enabled", result[0].status_extended)
                 assert result[0].resource_id == table["TableName"]
                 assert result[0].resource_arn == table["TableArn"]
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_US_EAST_1
                 assert result[0].resource_tags == []
    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 1c89eab1dc5..5da92896f6e 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
    @@ -1,53 +1,24 @@
     from re import search
     from unittest import mock
     
    -from boto3 import client, session
    -from moto import mock_dynamodb
    +from boto3 import client
    +from moto import mock_aws
     
    -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"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_REGION_EU_WEST_1,
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     
     class Test_dynamodb_tables_pitr_enabled:
    -    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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=["us-east-1", "eu-west-1"],
    -            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
    -
    -    @mock_dynamodb
    +    @mock_aws
         def test_dynamodb_no_tables(self):
             from prowler.providers.aws.services.dynamodb.dynamodb_service import DynamoDB
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -66,9 +37,9 @@ def test_dynamodb_no_tables(self):
     
                 assert len(result) == 0
     
    -    @mock_dynamodb
    +    @mock_aws
         def test_dynamodb_table_no_pitr(self):
    -        dynamodb_client = client("dynamodb", region_name=AWS_REGION)
    +        dynamodb_client = client("dynamodb", region_name=AWS_REGION_US_EAST_1)
             table = dynamodb_client.create_table(
                 TableName="test1",
                 AttributeDefinitions=[
    @@ -83,7 +54,9 @@ def test_dynamodb_table_no_pitr(self):
             )["TableDescription"]
             from prowler.providers.aws.services.dynamodb.dynamodb_service import DynamoDB
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -108,12 +81,12 @@ def test_dynamodb_table_no_pitr(self):
                 )
                 assert result[0].resource_id == table["TableName"]
                 assert result[0].resource_arn == table["TableArn"]
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_US_EAST_1
                 assert result[0].resource_tags == []
     
    -    @mock_dynamodb
    +    @mock_aws
         def test_dynamodb_table_with_pitr(self):
    -        dynamodb_client = client("dynamodb", region_name=AWS_REGION)
    +        dynamodb_client = client("dynamodb", region_name=AWS_REGION_US_EAST_1)
             table = dynamodb_client.create_table(
                 TableName="test1",
                 AttributeDefinitions=[
    @@ -132,7 +105,9 @@ def test_dynamodb_table_with_pitr(self):
             )
             from prowler.providers.aws.services.dynamodb.dynamodb_service import DynamoDB
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -156,5 +131,5 @@ def test_dynamodb_table_with_pitr(self):
                 )
                 assert result[0].resource_id == table["TableName"]
                 assert result[0].resource_arn == table["TableArn"]
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_US_EAST_1
                 assert result[0].resource_tags == []
    diff --git a/tests/providers/aws/services/ec2/ec2_ami_public/ec2_ami_public_test.py b/tests/providers/aws/services/ec2/ec2_ami_public/ec2_ami_public_test.py
    index 77f0e582c8e..69419791f65 100644
    --- a/tests/providers/aws/services/ec2/ec2_ami_public/ec2_ami_public_test.py
    +++ b/tests/providers/aws/services/ec2/ec2_ami_public/ec2_ami_public_test.py
    @@ -1,53 +1,25 @@
     from unittest import mock
     
    -from boto3 import client, resource, session
    -from moto import mock_ec2
    +from boto3 import client, resource
    +from moto import mock_aws
     
    -from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info
    -from prowler.providers.common.models import Audit_Metadata
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_REGION_EU_WEST_1,
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
    -AWS_REGION = "us-east-1"
     EXAMPLE_AMI_ID = "ami-12c6146b"
    -AWS_ACCOUNT_NUMBER = "123456789012"
     
     
     class Test_ec2_ami_public:
    -    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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=["us-east-1", "eu-west-1"],
    -            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
    -
    -    @mock_ec2
    +    @mock_aws
         def test_no_amis(self):
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -66,9 +38,9 @@ def test_no_amis(self):
     
                 assert len(result) == 0
     
    -    @mock_ec2
    +    @mock_aws
         def test_one_private_ami(self):
    -        ec2 = client("ec2", region_name=AWS_REGION)
    +        ec2 = client("ec2", region_name=AWS_REGION_US_EAST_1)
     
             reservation = ec2.run_instances(ImageId=EXAMPLE_AMI_ID, MinCount=1, MaxCount=1)
             instance = reservation["Instances"][0]
    @@ -80,7 +52,9 @@ def test_one_private_ami(self):
     
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -102,14 +76,14 @@ def test_one_private_ami(self):
                 assert result[0].resource_id == image_id
                 assert (
                     result[0].resource_arn
    -                == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION}:{current_audit_info.audited_account}:image/{image_id}"
    +                == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION_US_EAST_1}:{current_audit_info.audited_account}:image/{image_id}"
                 )
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_US_EAST_1
                 assert result[0].resource_tags == []
     
    -    @mock_ec2
    +    @mock_aws
         def test_one_public_ami(self):
    -        ec2 = client("ec2", region_name=AWS_REGION)
    +        ec2 = client("ec2", region_name=AWS_REGION_US_EAST_1)
     
             reservation = ec2.run_instances(ImageId=EXAMPLE_AMI_ID, MinCount=1, MaxCount=1)
             instance = reservation["Instances"][0]
    @@ -130,7 +104,9 @@ def test_one_public_ami(self):
     
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -154,7 +130,7 @@ def test_one_public_ami(self):
                 assert result[0].resource_id == image_id
                 assert (
                     result[0].resource_arn
    -                == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION}:{current_audit_info.audited_account}:image/{image_id}"
    +                == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION_US_EAST_1}:{current_audit_info.audited_account}:image/{image_id}"
                 )
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_US_EAST_1
                 assert result[0].resource_tags == []
    diff --git a/tests/providers/aws/services/ec2/ec2_ebs_default_encryption/ec2_ebs_default_encryption_test.py b/tests/providers/aws/services/ec2/ec2_ebs_default_encryption/ec2_ebs_default_encryption_test.py
    index 3e2ef101bd8..1cbf16fcf91 100644
    --- a/tests/providers/aws/services/ec2/ec2_ebs_default_encryption/ec2_ebs_default_encryption_test.py
    +++ b/tests/providers/aws/services/ec2/ec2_ebs_default_encryption/ec2_ebs_default_encryption_test.py
    @@ -1,57 +1,30 @@
     from unittest import mock
     
    -from boto3 import client, resource, session
    -from moto import mock_ec2
    +from boto3 import client, resource
    +from moto import mock_aws
     
    -from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info
    -from prowler.providers.common.models import Audit_Metadata
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_ACCOUNT_NUMBER,
    +    AWS_REGION_EU_WEST_1,
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
    -AWS_REGION = "us-east-1"
     EXAMPLE_AMI_ID = "ami-12c6146b"
    -AWS_ACCOUNT_NUMBER = "123456789012"
     
     
     class Test_ec2_ebs_default_encryption:
    -    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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=["us-east-1", "eu-west-1"],
    -            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
    -
    -    @mock_ec2
    +    @mock_aws
         def test_ec2_ebs_encryption_enabled(self):
             # Create EC2 Mocked Resources
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
             ec2_client.enable_ebs_encryption_by_default()
     
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -71,7 +44,7 @@ def test_ec2_ebs_encryption_enabled(self):
                 # One result per region
                 assert len(results) == 2
                 for result in results:
    -                if result.region == AWS_REGION:
    +                if result.region == AWS_REGION_US_EAST_1:
                         assert result.status == "PASS"
                         assert (
                             result.status_extended == "EBS Default Encryption is activated."
    @@ -81,11 +54,13 @@ def test_ec2_ebs_encryption_enabled(self):
                             result.resource_arn == f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root"
                         )
     
    -    @mock_ec2
    +    @mock_aws
         def test_ec2_ebs_encryption_disabled(self):
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -111,12 +86,14 @@ def test_ec2_ebs_encryption_disabled(self):
                 assert result[0].resource_id == AWS_ACCOUNT_NUMBER
                 assert result[0].resource_arn == f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root"
     
    -    @mock_ec2
    +    @mock_aws
         def test_ec2_ebs_encryption_disabled_ignored(self):
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    -        current_audit_info.ignore_unused_services = True
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1],
    +            ignore_unused_services=True,
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -136,15 +113,17 @@ def test_ec2_ebs_encryption_disabled_ignored(self):
                 # One result per region
                 assert len(result) == 0
     
    -    @mock_ec2
    +    @mock_aws
         def test_ec2_ebs_encryption_disabled_ignoring_with_volumes(self):
             # Create EC2 Mocked Resources
    -        ec2 = resource("ec2", region_name=AWS_REGION)
    -        ec2.create_volume(Size=36, AvailabilityZone=f"{AWS_REGION}a")
    +        ec2 = resource("ec2", region_name=AWS_REGION_US_EAST_1)
    +        ec2.create_volume(Size=36, AvailabilityZone=f"{AWS_REGION_US_EAST_1}a")
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    -        current_audit_info.ignore_unused_services = True
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1],
    +            ignore_unused_services=True,
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -163,7 +142,7 @@ def test_ec2_ebs_encryption_disabled_ignoring_with_volumes(self):
     
                 # One result per region
                 assert len(result) == 1
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_US_EAST_1
                 assert result[0].status == "FAIL"
                 assert (
                     result[0].status_extended == "EBS Default Encryption is not activated."
    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 d507431e574..4a29f7e0c41 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
    @@ -1,20 +1,22 @@
     from unittest import mock
     
    -from boto3 import client, resource, session
    +from boto3 import client, resource
     from mock import patch
    -from moto import mock_ec2
    +from moto import mock_aws
     
    -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"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_REGION_EU_WEST_1,
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_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}
    +def mock_generate_regional_clients(service, audit_info):
    +    regional_client = audit_info.audit_session.client(
    +        service, region_name=AWS_REGION_US_EAST_1
    +    )
    +    regional_client.region = AWS_REGION_US_EAST_1
    +    return {AWS_REGION_US_EAST_1: regional_client}
     
     
     @patch(
    @@ -22,42 +24,13 @@ def mock_generate_regional_clients(service, audit_info, _):
         new=mock_generate_regional_clients,
     )
     class Test_ec2_ebs_public_snapshot:
    -    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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=["us-east-1", "eu-west-1"],
    -            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
    -
    -    @mock_ec2
    +    @mock_aws
         def test_ec2_default_snapshots(self):
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -77,12 +50,12 @@ def test_ec2_default_snapshots(self):
                 # Default snapshots
                 assert len(result) == 561
     
    -    @mock_ec2
    +    @mock_aws
         def test_ec2_public_snapshot(self):
             # Create EC2 Mocked Resources
    -        ec2 = resource("ec2", region_name=AWS_REGION)
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    -        volume = ec2.create_volume(Size=80, AvailabilityZone=f"{AWS_REGION}a")
    +        ec2 = resource("ec2", region_name=AWS_REGION_US_EAST_1)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
    +        volume = ec2.create_volume(Size=80, AvailabilityZone=f"{AWS_REGION_US_EAST_1}a")
             snapshot = volume.create_snapshot(Description="testsnap")
             ec2_client.modify_snapshot_attribute(
                 SnapshotId=snapshot.id,
    @@ -93,7 +66,9 @@ def test_ec2_public_snapshot(self):
     
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -115,7 +90,7 @@ def test_ec2_public_snapshot(self):
     
                 for snap in results:
                     if snap.resource_id == snapshot.id:
    -                    assert snap.region == AWS_REGION
    +                    assert snap.region == AWS_REGION_US_EAST_1
                         assert snap.resource_tags == []
                         assert snap.status == "FAIL"
                         assert (
    @@ -124,21 +99,23 @@ def test_ec2_public_snapshot(self):
                         )
                         assert (
                             snap.resource_arn
    -                        == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION}:{current_audit_info.audited_account}:snapshot/{snapshot.id}"
    +                        == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION_US_EAST_1}:{current_audit_info.audited_account}:snapshot/{snapshot.id}"
                         )
     
    -    @mock_ec2
    +    @mock_aws
         def test_ec2_private_snapshot(self):
             # Create EC2 Mocked Resources
    -        ec2 = resource("ec2", region_name=AWS_REGION)
    +        ec2 = resource("ec2", region_name=AWS_REGION_US_EAST_1)
             snapshot = volume = ec2.create_volume(
    -            Size=80, AvailabilityZone=f"{AWS_REGION}a", Encrypted=True
    +            Size=80, AvailabilityZone=f"{AWS_REGION_US_EAST_1}a", Encrypted=True
             )
             snapshot = volume.create_snapshot(Description="testsnap")
     
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -160,7 +137,7 @@ def test_ec2_private_snapshot(self):
     
                 for snap in results:
                     if snap.resource_id == snapshot.id:
    -                    assert snap.region == AWS_REGION
    +                    assert snap.region == AWS_REGION_US_EAST_1
                         assert snap.resource_tags == []
                         assert snap.status == "PASS"
                         assert (
    @@ -169,5 +146,5 @@ def test_ec2_private_snapshot(self):
                         )
                         assert (
                             snap.resource_arn
    -                        == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION}:{current_audit_info.audited_account}:snapshot/{snapshot.id}"
    +                        == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION_US_EAST_1}:{current_audit_info.audited_account}:snapshot/{snapshot.id}"
                         )
    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 bc1f7f3853c..e55f93e8e0a 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
    @@ -1,20 +1,22 @@
     from unittest import mock
     
    -from boto3 import resource, session
    +from boto3 import resource
     from mock import patch
    -from moto import mock_ec2
    +from moto import mock_aws
     
    -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"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_REGION_EU_WEST_1,
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_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}
    +def mock_generate_regional_clients(service, audit_info):
    +    regional_client = audit_info.audit_session.client(
    +        service, region_name=AWS_REGION_US_EAST_1
    +    )
    +    regional_client.region = AWS_REGION_US_EAST_1
    +    return {AWS_REGION_US_EAST_1: regional_client}
     
     
     @patch(
    @@ -22,42 +24,13 @@ def mock_generate_regional_clients(service, audit_info, _):
         new=mock_generate_regional_clients,
     )
     class Test_ec2_ebs_snapshots_encrypted:
    -    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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=["us-east-1", "eu-west-1"],
    -            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
    -
    -    @mock_ec2
    +    @mock_aws
         def test_ec2_default_snapshots(self):
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -77,16 +50,18 @@ def test_ec2_default_snapshots(self):
                 # Default snapshots
                 assert len(result) == 561
     
    -    @mock_ec2
    +    @mock_aws
         def test_ec2_unencrypted_snapshot(self):
             # Create EC2 Mocked Resources
    -        ec2 = resource("ec2", region_name=AWS_REGION)
    -        volume = ec2.create_volume(Size=80, AvailabilityZone=f"{AWS_REGION}a")
    +        ec2 = resource("ec2", region_name=AWS_REGION_US_EAST_1)
    +        volume = ec2.create_volume(Size=80, AvailabilityZone=f"{AWS_REGION_US_EAST_1}a")
             snapshot = volume.create_snapshot(Description="testsnap")
     
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -108,7 +83,7 @@ def test_ec2_unencrypted_snapshot(self):
     
                 for snap in results:
                     if snap.resource_id == snapshot.id:
    -                    assert snap.region == AWS_REGION
    +                    assert snap.region == AWS_REGION_US_EAST_1
                         assert snap.resource_tags == []
                         assert snap.status == "FAIL"
                         assert (
    @@ -117,21 +92,23 @@ def test_ec2_unencrypted_snapshot(self):
                         )
                         assert (
                             snap.resource_arn
    -                        == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION}:{current_audit_info.audited_account}:snapshot/{snapshot.id}"
    +                        == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION_US_EAST_1}:{current_audit_info.audited_account}:snapshot/{snapshot.id}"
                         )
     
    -    @mock_ec2
    +    @mock_aws
         def test_ec2_encrypted_snapshot(self):
             # Create EC2 Mocked Resources
    -        ec2 = resource("ec2", region_name=AWS_REGION)
    +        ec2 = resource("ec2", region_name=AWS_REGION_US_EAST_1)
             snapshot = volume = ec2.create_volume(
    -            Size=80, AvailabilityZone=f"{AWS_REGION}a", Encrypted=True
    +            Size=80, AvailabilityZone=f"{AWS_REGION_US_EAST_1}a", Encrypted=True
             )
             snapshot = volume.create_snapshot(Description="testsnap")
     
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -153,7 +130,7 @@ def test_ec2_encrypted_snapshot(self):
     
                 for snap in results:
                     if snap.resource_id == snapshot.id:
    -                    assert snap.region == AWS_REGION
    +                    assert snap.region == AWS_REGION_US_EAST_1
                         assert snap.resource_tags == []
                         assert snap.status == "PASS"
                         assert (
    @@ -162,5 +139,5 @@ def test_ec2_encrypted_snapshot(self):
                         )
                         assert (
                             snap.resource_arn
    -                        == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION}:{current_audit_info.audited_account}:snapshot/{snapshot.id}"
    +                        == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION_US_EAST_1}:{current_audit_info.audited_account}:snapshot/{snapshot.id}"
                         )
    diff --git a/tests/providers/aws/services/ec2/ec2_ebs_volume_encryption/ec2_ebs_volume_encryption_test.py b/tests/providers/aws/services/ec2/ec2_ebs_volume_encryption/ec2_ebs_volume_encryption_test.py
    index 165388a2dc3..1124be9088b 100644
    --- a/tests/providers/aws/services/ec2/ec2_ebs_volume_encryption/ec2_ebs_volume_encryption_test.py
    +++ b/tests/providers/aws/services/ec2/ec2_ebs_volume_encryption/ec2_ebs_volume_encryption_test.py
    @@ -1,52 +1,23 @@
     from unittest import mock
     
    -from boto3 import resource, session
    -from moto import mock_ec2
    +from boto3 import resource
    +from moto import mock_aws
     
    -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"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_REGION_EU_WEST_1,
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     
     class Test_ec2_ebs_volume_encryption:
    -    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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=["us-east-1", "eu-west-1"],
    -            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
    -
    -    @mock_ec2
    +    @mock_aws
         def test_ec2_no_volumes(self):
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -65,15 +36,17 @@ def test_ec2_no_volumes(self):
     
                 assert len(result) == 0
     
    -    @mock_ec2
    +    @mock_aws
         def test_ec2_unencrypted_volume(self):
             # Create EC2 Mocked Resources
    -        ec2 = resource("ec2", region_name=AWS_REGION)
    -        volume = ec2.create_volume(Size=80, AvailabilityZone=f"{AWS_REGION}a")
    +        ec2 = resource("ec2", region_name=AWS_REGION_US_EAST_1)
    +        volume = ec2.create_volume(Size=80, AvailabilityZone=f"{AWS_REGION_US_EAST_1}a")
     
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -93,7 +66,7 @@ def test_ec2_unencrypted_volume(self):
                 assert len(result) == 1
     
                 assert result[0].status == "FAIL"
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_US_EAST_1
                 # Moto creates the volume with None in the tags attribute
                 assert result[0].resource_tags is None
                 assert (
    @@ -101,20 +74,22 @@ def test_ec2_unencrypted_volume(self):
                 )
                 assert (
                     result[0].resource_arn
    -                == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION}:{current_audit_info.audited_account}:volume/{volume.id}"
    +                == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION_US_EAST_1}:{current_audit_info.audited_account}:volume/{volume.id}"
                 )
     
    -    @mock_ec2
    +    @mock_aws
         def test_ec2_encrypted_volume(self):
             # Create EC2 Mocked Resources
    -        ec2 = resource("ec2", region_name=AWS_REGION)
    +        ec2 = resource("ec2", region_name=AWS_REGION_US_EAST_1)
             volume = ec2.create_volume(
    -            Size=80, AvailabilityZone=f"{AWS_REGION}a", Encrypted=True
    +            Size=80, AvailabilityZone=f"{AWS_REGION_US_EAST_1}a", Encrypted=True
             )
     
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -134,7 +109,7 @@ def test_ec2_encrypted_volume(self):
                 assert len(result) == 1
     
                 assert result[0].status == "PASS"
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_US_EAST_1
                 # Moto creates the volume with None in the tags attribute
                 assert result[0].resource_tags is None
                 assert (
    @@ -142,5 +117,5 @@ def test_ec2_encrypted_volume(self):
                 )
                 assert (
                     result[0].resource_arn
    -                == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION}:{current_audit_info.audited_account}:volume/{volume.id}"
    +                == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION_US_EAST_1}:{current_audit_info.audited_account}:volume/{volume.id}"
                 )
    diff --git a/tests/providers/aws/services/ec2/ec2_ebs_volume_snapshots_exists/ec2_ebs_volume_snapshots_exists_test.py b/tests/providers/aws/services/ec2/ec2_ebs_volume_snapshots_exists/ec2_ebs_volume_snapshots_exists_test.py
    index 97435a88c92..d4e8b2843bc 100644
    --- a/tests/providers/aws/services/ec2/ec2_ebs_volume_snapshots_exists/ec2_ebs_volume_snapshots_exists_test.py
    +++ b/tests/providers/aws/services/ec2/ec2_ebs_volume_snapshots_exists/ec2_ebs_volume_snapshots_exists_test.py
    @@ -1,22 +1,24 @@
     from unittest import mock
     
    -from boto3 import resource, session
    +from boto3 import resource
     from mock import patch
    -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_REGION_AZ = "us-east-1a"
    -AWS_ACCOUNT_NUMBER = "123456789012"
    -AWS_ACCOUNT_ARN = f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root"
    +from moto import mock_aws
    +
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_ACCOUNT_NUMBER,
    +    AWS_REGION_EU_WEST_1,
    +    AWS_REGION_US_EAST_1,
    +    AWS_REGION_US_EAST_1_AZA,
    +    set_mocked_aws_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}
    +def mock_generate_regional_clients(service, audit_info):
    +    regional_client = audit_info.audit_session.client(
    +        service, region_name=AWS_REGION_US_EAST_1
    +    )
    +    regional_client.region = AWS_REGION_US_EAST_1
    +    return {AWS_REGION_US_EAST_1: regional_client}
     
     
     @patch(
    @@ -24,42 +26,13 @@ def mock_generate_regional_clients(service, audit_info, _):
         new=mock_generate_regional_clients,
     )
     class Test_ec2_ebs_volume_snapshots_exists:
    -    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",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=[AWS_REGION],
    -            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
    -
    -    @mock_ec2
    +    @mock_aws
         def test_no_volumes(self):
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -78,14 +51,16 @@ def test_no_volumes(self):
     
                 assert len(result) == 0
     
    -    @mock_ec2
    +    @mock_aws
         def test_ec2_volume_without_snapshots(self):
    -        ec2 = resource("ec2", region_name=AWS_REGION)
    -        volume = ec2.create_volume(Size=80, AvailabilityZone=AWS_REGION_AZ)
    -        volume_arn = f"arn:aws:ec2:{AWS_REGION}:{AWS_ACCOUNT_NUMBER}:volume/{volume.id}"
    +        ec2 = resource("ec2", region_name=AWS_REGION_US_EAST_1)
    +        volume = ec2.create_volume(Size=80, AvailabilityZone=AWS_REGION_US_EAST_1_AZA)
    +        volume_arn = f"arn:aws:ec2:{AWS_REGION_US_EAST_1}:{AWS_ACCOUNT_NUMBER}:volume/{volume.id}"
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -111,19 +86,21 @@ def test_ec2_volume_without_snapshots(self):
                 assert result[0].resource_id == volume.id
                 assert result[0].resource_arn == volume_arn
                 assert result[0].resource_tags is None
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_US_EAST_1
     
    -    @mock_ec2
    +    @mock_aws
         def test_ec2_volume_with_snapshot(self):
             # Create EC2 Mocked Resources
    -        ec2 = resource("ec2", region_name=AWS_REGION)
    -        volume = ec2.create_volume(Size=80, AvailabilityZone=AWS_REGION_AZ)
    -        volume_arn = f"arn:aws:ec2:{AWS_REGION}:{AWS_ACCOUNT_NUMBER}:volume/{volume.id}"
    +        ec2 = resource("ec2", region_name=AWS_REGION_US_EAST_1)
    +        volume = ec2.create_volume(Size=80, AvailabilityZone=AWS_REGION_US_EAST_1_AZA)
    +        volume_arn = f"arn:aws:ec2:{AWS_REGION_US_EAST_1}:{AWS_ACCOUNT_NUMBER}:volume/{volume.id}"
             _ = volume.create_snapshot(Description="testsnap")
     
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -149,27 +126,25 @@ def test_ec2_volume_with_snapshot(self):
                 assert result[0].resource_id == volume.id
                 assert result[0].resource_arn == volume_arn
                 assert result[0].resource_tags is None
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_US_EAST_1
     
    -    @mock_ec2
    +    @mock_aws
         def test_ec2_volume_with_and_without_snapshot(self):
             # Create EC2 Mocked Resources
    -        ec2 = resource("ec2", region_name=AWS_REGION)
    +        ec2 = resource("ec2", region_name=AWS_REGION_US_EAST_1)
     
    -        volume1 = ec2.create_volume(Size=80, AvailabilityZone=AWS_REGION_AZ)
    -        volume1_arn = (
    -            f"arn:aws:ec2:{AWS_REGION}:{AWS_ACCOUNT_NUMBER}:volume/{volume1.id}"
    -        )
    +        volume1 = ec2.create_volume(Size=80, AvailabilityZone=AWS_REGION_US_EAST_1_AZA)
    +        volume1_arn = f"arn:aws:ec2:{AWS_REGION_US_EAST_1}:{AWS_ACCOUNT_NUMBER}:volume/{volume1.id}"
             _ = volume1.create_snapshot(Description="test-snap")
     
    -        volume2 = ec2.create_volume(Size=80, AvailabilityZone=AWS_REGION_AZ)
    -        volume2_arn = (
    -            f"arn:aws:ec2:{AWS_REGION}:{AWS_ACCOUNT_NUMBER}:volume/{volume2.id}"
    -        )
    +        volume2 = ec2.create_volume(Size=80, AvailabilityZone=AWS_REGION_US_EAST_1_AZA)
    +        volume2_arn = f"arn:aws:ec2:{AWS_REGION_US_EAST_1}:{AWS_ACCOUNT_NUMBER}:volume/{volume2.id}"
     
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -197,7 +172,7 @@ def test_ec2_volume_with_and_without_snapshot(self):
                         assert res.resource_id == volume1.id
                         assert res.resource_arn == volume1_arn
                         assert res.resource_tags is None
    -                    assert res.region == AWS_REGION
    +                    assert res.region == AWS_REGION_US_EAST_1
                     if res.resource_id == volume2.id:
                         assert res.status == "FAIL"
                         assert (
    @@ -207,4 +182,4 @@ def test_ec2_volume_with_and_without_snapshot(self):
                         assert res.resource_id == volume2.id
                         assert res.resource_arn == volume2_arn
                         assert res.resource_tags is None
    -                    assert res.region == AWS_REGION
    +                    assert res.region == AWS_REGION_US_EAST_1
    diff --git a/tests/providers/aws/services/ec2/ec2_elastic_ip_shodan/ec2_elastic_ip_shodan_test.py b/tests/providers/aws/services/ec2/ec2_elastic_ip_shodan/ec2_elastic_ip_shodan_test.py
    index 5ef1d4aec61..794cc204e9b 100644
    --- a/tests/providers/aws/services/ec2/ec2_elastic_ip_shodan/ec2_elastic_ip_shodan_test.py
    +++ b/tests/providers/aws/services/ec2/ec2_elastic_ip_shodan/ec2_elastic_ip_shodan_test.py
    @@ -1,59 +1,32 @@
     from unittest import mock
     
    -from boto3 import client, session
    -from moto import mock_ec2
    +from boto3 import client
    +from moto import mock_aws
     
    -from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info
    -from prowler.providers.common.models import Audit_Metadata
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_ACCOUNT_NUMBER,
    +    AWS_REGION_EU_WEST_1,
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     EXAMPLE_AMI_ID = "ami-12c6146b"
    -AWS_ACCOUNT_NUMBER = "123456789012"
    -AWS_REGION = "eu-west-1"
     
     
     class Test_ec2_elastic_ip_shodan:
    -    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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=["us-east-1", "eu-west-1"],
    -            organizations_metadata=None,
    -            audit_resources=None,
    -            mfa_enabled=False,
    -            audit_metadata=Audit_Metadata(
    -                services_scanned=0,
    -                expected_checks=[],
    -                completed_checks=0,
    -                audit_progress=0,
    -            ),
    -            audit_config={"shodan_api_key": ""},
    -        )
    -
    -        return audit_info
    -
    -    @mock_ec2
    +    @mock_aws
         def test_ec2_one_instances_no_public_ip(self):
             # Create EC2 Mocked Resources
    -        ec2_client = client("ec2", AWS_REGION)
    +        ec2_client = client("ec2", AWS_REGION_US_EAST_1)
             # Create EC2 Instance
             ec2_client.run_instances(ImageId=EXAMPLE_AMI_ID, MinCount=1, MaxCount=1)
     
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1],
    +            audit_config={"shodan_api_key": ""},
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -72,16 +45,19 @@ def test_ec2_one_instances_no_public_ip(self):
     
                 assert len(result) == 0
     
    -    @mock_ec2
    +    @mock_aws
         def test_ec2_one_unattached_eip(self):
             # Create EC2 Mocked Resources
    -        ec2_client = client("ec2", AWS_REGION)
    +        ec2_client = client("ec2", AWS_REGION_US_EAST_1)
             # Create EC2 Instance
             ec2_client.allocate_address(Domain="vpc")
     
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1],
    +            audit_config={"shodan_api_key": ""},
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -100,10 +76,10 @@ def test_ec2_one_unattached_eip(self):
     
                 assert len(result) == 0
     
    -    @mock_ec2
    +    @mock_aws
         def test_ec2_one_attached_eip_no_shodan_api_key(self):
             # Create EC2 Mocked Resources
    -        ec2_client = client("ec2", AWS_REGION)
    +        ec2_client = client("ec2", AWS_REGION_US_EAST_1)
             # Create EC2 Instance
             instance = ec2_client.run_instances(
                 ImageId=EXAMPLE_AMI_ID, MinCount=1, MaxCount=1
    @@ -116,7 +92,10 @@ def test_ec2_one_attached_eip_no_shodan_api_key(self):
     
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1],
    +            audit_config={"shodan_api_key": ""},
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -135,10 +114,10 @@ def test_ec2_one_attached_eip_no_shodan_api_key(self):
     
                 assert len(result) == 0
     
    -    @mock_ec2
    +    @mock_aws
         def test_ec2_one_attached_eip_shodan_api_key(self):
             # Create EC2 Mocked Resources
    -        ec2_client = client("ec2", AWS_REGION)
    +        ec2_client = client("ec2", AWS_REGION_US_EAST_1)
             # Create EC2 Instance
             instance = ec2_client.run_instances(
                 ImageId=EXAMPLE_AMI_ID, MinCount=1, MaxCount=1
    @@ -154,8 +133,10 @@ def test_ec2_one_attached_eip_shodan_api_key(self):
     
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    -        current_audit_info.audit_config = {"shodan_api_key": "XXXXXXX"}
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1],
    +            audit_config={"shodan_api_key": "XXXXXXX"},
    +        )
     
             ports = ["22", "443"]
             isp = "test-isp"
    @@ -183,9 +164,9 @@ def test_ec2_one_attached_eip_shodan_api_key(self):
                 assert result[0].resource_id == public_ip
                 assert (
                     result[0].resource_arn
    -                == f"arn:aws:ec2:{AWS_REGION}:{AWS_ACCOUNT_NUMBER}:eip-allocation/{allocation_id}"
    +                == f"arn:aws:ec2:{AWS_REGION_US_EAST_1}:{AWS_ACCOUNT_NUMBER}:eip-allocation/{allocation_id}"
                 )
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_US_EAST_1
                 assert result[0].resource_tags == []
                 assert result[0].status == "FAIL"
                 assert (
    diff --git a/tests/providers/aws/services/ec2/ec2_elastic_ip_unassigned/ec2_elastic_ip_unassigned_test.py b/tests/providers/aws/services/ec2/ec2_elastic_ip_unassigned/ec2_elastic_ip_unassigned_test.py
    index dc2f14977d5..19d21f34221 100644
    --- a/tests/providers/aws/services/ec2/ec2_elastic_ip_unassigned/ec2_elastic_ip_unassigned_test.py
    +++ b/tests/providers/aws/services/ec2/ec2_elastic_ip_unassigned/ec2_elastic_ip_unassigned_test.py
    @@ -1,54 +1,26 @@
     from re import search
     from unittest import mock
     
    -from boto3 import client, resource, session
    -from moto import mock_ec2
    +from boto3 import client, resource
    +from moto import mock_aws
     
    -from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info
    -from prowler.providers.common.models import Audit_Metadata
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_REGION_EU_WEST_1,
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
    -AWS_REGION = "us-east-1"
     EXAMPLE_AMI_ID = "ami-12c6146b"
    -AWS_ACCOUNT_NUMBER = "123456789012"
     
     
     class Test_ec2_elastic_ip_unassigned:
    -    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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=["us-east-1", "eu-west-1"],
    -            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
    -
    -    @mock_ec2
    +    @mock_aws
         def test_no_eips(self):
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -67,17 +39,19 @@ def test_no_eips(self):
     
                 assert len(result) == 0
     
    -    @mock_ec2
    +    @mock_aws
         def test_eip_unassociated(self):
             # Create EC2 Mocked Resources
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
             allocation_id = ec2_client.allocate_address(
                 Domain="vpc", Address="127.38.43.222"
             )["AllocationId"]
     
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -96,7 +70,7 @@ def test_eip_unassociated(self):
     
                 assert len(results) == 1
                 assert results[0].status == "FAIL"
    -            assert results[0].region == AWS_REGION
    +            assert results[0].region == AWS_REGION_US_EAST_1
                 assert results[0].resource_tags == []
                 assert search(
                     "is not associated",
    @@ -104,14 +78,14 @@ def test_eip_unassociated(self):
                 )
                 assert (
                     results[0].resource_arn
    -                == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION}:{current_audit_info.audited_account}:eip-allocation/{allocation_id}"
    +                == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION_US_EAST_1}:{current_audit_info.audited_account}:eip-allocation/{allocation_id}"
                 )
     
    -    @mock_ec2
    +    @mock_aws
         def test_eip_associated(self):
             # Create EC2 Mocked Resources
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    -        ec2_resource = resource("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
    +        ec2_resource = resource("ec2", region_name=AWS_REGION_US_EAST_1)
     
             reservation = ec2_client.run_instances(
                 ImageId=EXAMPLE_AMI_ID, MinCount=1, MaxCount=1
    @@ -128,7 +102,9 @@ def test_eip_associated(self):
     
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -147,7 +123,7 @@ def test_eip_associated(self):
     
                 assert len(results) == 1
                 assert results[0].status == "PASS"
    -            assert results[0].region == AWS_REGION
    +            assert results[0].region == AWS_REGION_US_EAST_1
                 assert results[0].resource_tags == []
                 assert search(
                     "is associated",
    @@ -155,5 +131,5 @@ def test_eip_associated(self):
                 )
                 assert (
                     results[0].resource_arn
    -                == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION}:{current_audit_info.audited_account}:eip-allocation/{eip.allocation_id}"
    +                == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION_US_EAST_1}:{current_audit_info.audited_account}:eip-allocation/{eip.allocation_id}"
                 )
    diff --git a/tests/providers/aws/services/ec2/ec2_instance_detailed_monitoring_enabled/ec2_instance_detailed_monitoring_enabled_test.py b/tests/providers/aws/services/ec2/ec2_instance_detailed_monitoring_enabled/ec2_instance_detailed_monitoring_enabled_test.py
    index 79bbc3de207..c47e133d8ee 100644
    --- a/tests/providers/aws/services/ec2/ec2_instance_detailed_monitoring_enabled/ec2_instance_detailed_monitoring_enabled_test.py
    +++ b/tests/providers/aws/services/ec2/ec2_instance_detailed_monitoring_enabled/ec2_instance_detailed_monitoring_enabled_test.py
    @@ -1,53 +1,25 @@
     from unittest import mock
     
    -from boto3 import resource, session
    -from moto import mock_ec2
    +from boto3 import resource
    +from moto import mock_aws
     
    -from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info
    -from prowler.providers.common.models import Audit_Metadata
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_REGION_EU_WEST_1,
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
    -AWS_REGION = "us-east-1"
     EXAMPLE_AMI_ID = "ami-12c6146b"
    -AWS_ACCOUNT_NUMBER = "123456789012"
     
     
     class Test_ec2_instance_detailed_monitoring_enabled:
    -    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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=["us-east-1", "eu-west-1"],
    -            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
    -
    -    @mock_ec2
    +    @mock_aws
         def test_ec2_no_instances(self):
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -66,9 +38,9 @@ def test_ec2_no_instances(self):
     
                 assert len(result) == 0
     
    -    @mock_ec2
    +    @mock_aws
         def test_instance_with_enhanced_monitoring_disabled(self):
    -        ec2 = resource("ec2", region_name=AWS_REGION)
    +        ec2 = resource("ec2", region_name=AWS_REGION_US_EAST_1)
             instance = ec2.create_instances(
                 ImageId=EXAMPLE_AMI_ID,
                 MinCount=1,
    @@ -78,7 +50,9 @@ def test_instance_with_enhanced_monitoring_disabled(self):
     
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -96,7 +70,7 @@ def test_instance_with_enhanced_monitoring_disabled(self):
     
                 assert len(result) == 1
                 assert result[0].status == "FAIL"
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_US_EAST_1
                 # Moto fills instance tags with None
                 assert result[0].resource_tags is None
                 assert (
    @@ -106,12 +80,12 @@ def test_instance_with_enhanced_monitoring_disabled(self):
                 assert result[0].resource_id == instance.id
                 assert (
                     result[0].resource_arn
    -                == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION}:{current_audit_info.audited_account}:instance/{instance.id}"
    +                == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION_US_EAST_1}:{current_audit_info.audited_account}:instance/{instance.id}"
                 )
     
    -    @mock_ec2
    +    @mock_aws
         def test_instance_with_enhanced_monitoring_enabled(self):
    -        ec2 = resource("ec2", region_name=AWS_REGION)
    +        ec2 = resource("ec2", region_name=AWS_REGION_US_EAST_1)
             instance = ec2.create_instances(
                 ImageId=EXAMPLE_AMI_ID,
                 MinCount=1,
    @@ -121,7 +95,9 @@ def test_instance_with_enhanced_monitoring_enabled(self):
     
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -142,7 +118,7 @@ def test_instance_with_enhanced_monitoring_enabled(self):
     
                 assert len(result) == 1
                 assert result[0].status == "PASS"
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_US_EAST_1
                 # Moto fills instance tags with None
                 assert result[0].resource_tags is None
                 assert (
    @@ -152,5 +128,5 @@ def test_instance_with_enhanced_monitoring_enabled(self):
                 assert result[0].resource_id == instance.id
                 assert (
                     result[0].resource_arn
    -                == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION}:{current_audit_info.audited_account}:instance/{instance.id}"
    +                == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION_US_EAST_1}:{current_audit_info.audited_account}:instance/{instance.id}"
                 )
    diff --git a/tests/providers/aws/services/ec2/ec2_instance_imdsv2_enabled/ec2_instance_imdsv2_enabled_test.py b/tests/providers/aws/services/ec2/ec2_instance_imdsv2_enabled/ec2_instance_imdsv2_enabled_test.py
    index 957aeb6cd83..c4050dd70a0 100644
    --- a/tests/providers/aws/services/ec2/ec2_instance_imdsv2_enabled/ec2_instance_imdsv2_enabled_test.py
    +++ b/tests/providers/aws/services/ec2/ec2_instance_imdsv2_enabled/ec2_instance_imdsv2_enabled_test.py
    @@ -1,54 +1,26 @@
     from re import search
     from unittest import mock
     
    -from boto3 import resource, session
    -from moto import mock_ec2
    +from boto3 import resource
    +from moto import mock_aws
     
    -from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info
    -from prowler.providers.common.models import Audit_Metadata
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_REGION_EU_WEST_1,
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
    -AWS_REGION = "us-east-1"
     EXAMPLE_AMI_ID = "ami-12c6146b"
    -AWS_ACCOUNT_NUMBER = "123456789012"
     
     
     class Test_ec2_instance_imdsv2_enabled:
    -    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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=["us-east-1", "eu-west-1"],
    -            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
    -
    -    @mock_ec2
    +    @mock_aws
         def test_ec2_no_instances(self):
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -67,9 +39,9 @@ def test_ec2_no_instances(self):
     
                 assert len(result) == 0
     
    -    @mock_ec2
    +    @mock_aws
         def test_one_compliant_ec2(self):
    -        ec2 = resource("ec2", region_name=AWS_REGION)
    +        ec2 = resource("ec2", region_name=AWS_REGION_US_EAST_1)
             instance = ec2.create_instances(
                 ImageId=EXAMPLE_AMI_ID,
                 MinCount=1,
    @@ -82,7 +54,9 @@ def test_one_compliant_ec2(self):
     
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -103,7 +77,7 @@ def test_one_compliant_ec2(self):
     
                 assert len(result) == 1
                 assert result[0].status == "PASS"
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_US_EAST_1
                 # Moto fills instance tags with None
                 assert result[0].resource_tags is None
                 assert search(
    @@ -113,12 +87,12 @@ def test_one_compliant_ec2(self):
                 assert result[0].resource_id == instance.id
                 assert (
                     result[0].resource_arn
    -                == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION}:{current_audit_info.audited_account}:instance/{instance.id}"
    +                == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION_US_EAST_1}:{current_audit_info.audited_account}:instance/{instance.id}"
                 )
     
    -    @mock_ec2
    +    @mock_aws
         def test_one_uncompliant_ec2_metadata_server_disabled(self):
    -        ec2 = resource("ec2", region_name=AWS_REGION)
    +        ec2 = resource("ec2", region_name=AWS_REGION_US_EAST_1)
             instance = ec2.create_instances(
                 ImageId=EXAMPLE_AMI_ID,
                 MinCount=1,
    @@ -131,7 +105,9 @@ def test_one_uncompliant_ec2_metadata_server_disabled(self):
     
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -152,7 +128,7 @@ def test_one_uncompliant_ec2_metadata_server_disabled(self):
     
                 assert len(result) == 1
                 assert result[0].status == "PASS"
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_US_EAST_1
                 # Moto fills instance tags with None
                 assert result[0].resource_tags is None
                 assert (
    @@ -162,12 +138,12 @@ def test_one_uncompliant_ec2_metadata_server_disabled(self):
                 assert result[0].resource_id == instance.id
                 assert (
                     result[0].resource_arn
    -                == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION}:{current_audit_info.audited_account}:instance/{instance.id}"
    +                == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION_US_EAST_1}:{current_audit_info.audited_account}:instance/{instance.id}"
                 )
     
    -    @mock_ec2
    +    @mock_aws
         def test_one_uncompliant_ec2_metadata_server_enabled(self):
    -        ec2 = resource("ec2", region_name=AWS_REGION)
    +        ec2 = resource("ec2", region_name=AWS_REGION_US_EAST_1)
             instance = ec2.create_instances(
                 ImageId=EXAMPLE_AMI_ID,
                 MinCount=1,
    @@ -180,7 +156,9 @@ def test_one_uncompliant_ec2_metadata_server_enabled(self):
     
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -201,7 +179,7 @@ def test_one_uncompliant_ec2_metadata_server_enabled(self):
     
                 assert len(result) == 1
                 assert result[0].status == "FAIL"
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_US_EAST_1
                 # Moto fills instance tags with None
                 assert result[0].resource_tags is None
                 assert (
    @@ -211,5 +189,5 @@ def test_one_uncompliant_ec2_metadata_server_enabled(self):
                 assert result[0].resource_id == instance.id
                 assert (
                     result[0].resource_arn
    -                == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION}:{current_audit_info.audited_account}:instance/{instance.id}"
    +                == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION_US_EAST_1}:{current_audit_info.audited_account}:instance/{instance.id}"
                 )
    diff --git a/tests/providers/aws/services/ec2/ec2_instance_internet_facing_with_instance_profile/ec2_instance_internet_facing_with_instance_profile_test.py b/tests/providers/aws/services/ec2/ec2_instance_internet_facing_with_instance_profile/ec2_instance_internet_facing_with_instance_profile_test.py
    index 7cae4c59a67..c94bdaebde6 100644
    --- a/tests/providers/aws/services/ec2/ec2_instance_internet_facing_with_instance_profile/ec2_instance_internet_facing_with_instance_profile_test.py
    +++ b/tests/providers/aws/services/ec2/ec2_instance_internet_facing_with_instance_profile/ec2_instance_internet_facing_with_instance_profile_test.py
    @@ -1,54 +1,26 @@
     from re import search
     from unittest import mock
     
    -from boto3 import client, resource, session
    -from moto import mock_ec2, mock_iam
    +from boto3 import client, resource
    +from moto import mock_aws
     
    -from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info
    -from prowler.providers.common.models import Audit_Metadata
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_REGION_EU_WEST_1,
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
    -AWS_REGION = "us-east-1"
     EXAMPLE_AMI_ID = "ami-12c6146b"
    -AWS_ACCOUNT_NUMBER = "123456789012"
     
     
     class Test_ec2_instance_internet_facing_with_instance_profile:
    -    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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=["us-east-1", "eu-west-1"],
    -            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
    -
    -    @mock_ec2
    +    @mock_aws
         def test_ec2_no_instances(self):
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -67,15 +39,14 @@ def test_ec2_no_instances(self):
     
                 assert len(result) == 0
     
    -    @mock_iam
    -    @mock_ec2
    +    @mock_aws
         def test_one_compliant_ec2(self):
             iam = client("iam", "us-west-1")
             profile_name = "fake_profile"
             _ = iam.create_instance_profile(
                 InstanceProfileName=profile_name,
             )
    -        ec2 = resource("ec2", region_name=AWS_REGION)
    +        ec2 = resource("ec2", region_name=AWS_REGION_US_EAST_1)
             vpc = ec2.create_vpc(CidrBlock="10.0.0.0/16")
             subnet = ec2.create_subnet(VpcId=vpc.id, CidrBlock="10.0.0.0/18")
             instance = ec2.create_instances(
    @@ -94,7 +65,9 @@ def test_one_compliant_ec2(self):
     
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -112,7 +85,7 @@ def test_one_compliant_ec2(self):
     
                 assert len(result) == 1
                 assert result[0].status == "PASS"
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_US_EAST_1
                 assert result[0].resource_tags is None
                 assert result[0].status_extended == (
                     f"EC2 Instance {instance.id} is not internet facing with an instance profile."
    @@ -120,18 +93,17 @@ def test_one_compliant_ec2(self):
                 assert result[0].resource_id == instance.id
                 assert (
                     result[0].resource_arn
    -                == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION}:{current_audit_info.audited_account}:instance/{instance.id}"
    +                == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION_US_EAST_1}:{current_audit_info.audited_account}:instance/{instance.id}"
                 )
     
    -    @mock_iam
    -    @mock_ec2
    +    @mock_aws
         def test_one_non_compliant_ec2(self):
             iam = client("iam", "us-west-1")
             profile_name = "fake_profile"
             _ = iam.create_instance_profile(
                 InstanceProfileName=profile_name,
             )
    -        ec2 = resource("ec2", region_name=AWS_REGION)
    +        ec2 = resource("ec2", region_name=AWS_REGION_US_EAST_1)
             vpc = ec2.create_vpc(CidrBlock="10.0.0.0/16")
             subnet = ec2.create_subnet(VpcId=vpc.id, CidrBlock="10.0.0.0/18")
             instance = ec2.create_instances(
    @@ -150,7 +122,9 @@ def test_one_non_compliant_ec2(self):
     
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -168,7 +142,7 @@ def test_one_non_compliant_ec2(self):
     
                 assert len(result) == 1
                 assert result[0].status == "FAIL"
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_US_EAST_1
                 assert result[0].resource_tags is None
                 assert search(
                     "is internet-facing with Instance Profile", result[0].status_extended
    @@ -176,5 +150,5 @@ def test_one_non_compliant_ec2(self):
                 assert result[0].resource_id == instance.id
                 assert (
                     result[0].resource_arn
    -                == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION}:{current_audit_info.audited_account}:instance/{instance.id}"
    +                == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION_US_EAST_1}:{current_audit_info.audited_account}:instance/{instance.id}"
                 )
    diff --git a/tests/providers/aws/services/ec2/ec2_instance_managed_by_ssm/ec2_instance_managed_by_ssm_test.py b/tests/providers/aws/services/ec2/ec2_instance_managed_by_ssm/ec2_instance_managed_by_ssm_test.py
    index 8b0f1baf892..9d17ec4de7a 100644
    --- a/tests/providers/aws/services/ec2/ec2_instance_managed_by_ssm/ec2_instance_managed_by_ssm_test.py
    +++ b/tests/providers/aws/services/ec2/ec2_instance_managed_by_ssm/ec2_instance_managed_by_ssm_test.py
    @@ -1,54 +1,27 @@
     from unittest import mock
     
    -from boto3 import resource, session
    -from moto import mock_ec2
    +from boto3 import resource
    +from moto import mock_aws
     
    -from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info
     from prowler.providers.aws.services.ssm.ssm_service import ManagedInstance
    -from prowler.providers.common.models import Audit_Metadata
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_ACCOUNT_NUMBER,
    +    AWS_REGION_EU_WEST_1,
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
    -AWS_REGION = "us-east-1"
     EXAMPLE_AMI_ID = "ami-12c6146b"
    -AWS_ACCOUNT_NUMBER = "123456789012"
     
     
     class Test_ec2_instance_managed_by_ssm_test:
    -    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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=["us-east-1", "eu-west-1"],
    -            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
    -
    -    @mock_ec2
    +    @mock_aws
         def test_ec2_no_instances(self):
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             ssm_client = mock.MagicMock
             ssm_client.managed_instances = {}
    @@ -76,12 +49,12 @@ def test_ec2_no_instances(self):
     
                 assert len(result) == 0
     
    -    @mock_ec2
    +    @mock_aws
         def test_ec2_instance_managed_by_ssm_non_compliance_instance(self):
             ssm_client = mock.MagicMock
             ssm_client.managed_instances = {}
     
    -        ec2 = resource("ec2", region_name=AWS_REGION)
    +        ec2 = resource("ec2", region_name=AWS_REGION_US_EAST_1)
             instance = ec2.create_instances(
                 ImageId=EXAMPLE_AMI_ID,
                 MinCount=1,
    @@ -94,7 +67,9 @@ def test_ec2_instance_managed_by_ssm_non_compliance_instance(self):
     
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -119,7 +94,7 @@ def test_ec2_instance_managed_by_ssm_non_compliance_instance(self):
     
                 assert len(result) == 1
                 assert result[0].status == "FAIL"
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_US_EAST_1
                 assert result[0].resource_tags is None
                 assert (
                     result[0].status_extended
    @@ -127,9 +102,9 @@ def test_ec2_instance_managed_by_ssm_non_compliance_instance(self):
                 )
                 assert result[0].resource_id == instance.id
     
    -    @mock_ec2
    +    @mock_aws
         def test_ec2_instance_managed_by_ssm_compliance_instance(self):
    -        ec2 = resource("ec2", region_name=AWS_REGION)
    +        ec2 = resource("ec2", region_name=AWS_REGION_US_EAST_1)
             instance = ec2.create_instances(
                 ImageId=EXAMPLE_AMI_ID,
                 MinCount=1,
    @@ -140,15 +115,17 @@ def test_ec2_instance_managed_by_ssm_compliance_instance(self):
             ssm_client = mock.MagicMock
             ssm_client.managed_instances = {
                 instance.id: ManagedInstance(
    -                arn=f"arn:aws:ec2:{AWS_REGION}:{AWS_ACCOUNT_NUMBER}:instance/{instance.id}",
    +                arn=f"arn:aws:ec2:{AWS_REGION_US_EAST_1}:{AWS_ACCOUNT_NUMBER}:instance/{instance.id}",
                     id=instance.id,
    -                region=AWS_REGION,
    +                region=AWS_REGION_US_EAST_1,
                 )
             }
     
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -173,7 +150,7 @@ def test_ec2_instance_managed_by_ssm_compliance_instance(self):
     
                 assert len(result) == 1
                 assert result[0].status == "PASS"
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_US_EAST_1
                 assert result[0].resource_tags is None
                 assert (
                     result[0].status_extended
    diff --git a/tests/providers/aws/services/ec2/ec2_instance_older_than_specific_days/ec2_instance_older_than_specific_days_test.py b/tests/providers/aws/services/ec2/ec2_instance_older_than_specific_days/ec2_instance_older_than_specific_days_test.py
    index c23ffa38507..c5afd5fe4f1 100644
    --- a/tests/providers/aws/services/ec2/ec2_instance_older_than_specific_days/ec2_instance_older_than_specific_days_test.py
    +++ b/tests/providers/aws/services/ec2/ec2_instance_older_than_specific_days/ec2_instance_older_than_specific_days_test.py
    @@ -2,55 +2,27 @@
     from re import search
     from unittest import mock
     
    -from boto3 import resource, session
    +from boto3 import resource
     from dateutil.tz import tzutc
    -from moto import mock_ec2
    +from moto import mock_aws
     
    -from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info
    -from prowler.providers.common.models import Audit_Metadata
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_REGION_EU_WEST_1,
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
    -AWS_REGION = "us-east-1"
     EXAMPLE_AMI_ID = "ami-12c6146b"
    -AWS_ACCOUNT_NUMBER = "123456789012"
     
     
     class Test_ec2_instance_older_than_specific_days:
    -    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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=["us-east-1", "eu-west-1"],
    -            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
    -
    -    @mock_ec2
    +    @mock_aws
         def test_ec2_no_instances(self):
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
             current_audit_info.audit_config = {"max_ec2_instance_age_in_days": 180}
     
             with mock.patch(
    @@ -70,9 +42,9 @@ def test_ec2_no_instances(self):
     
                 assert len(result) == 0
     
    -    @mock_ec2
    +    @mock_aws
         def test_one_compliant_ec2(self):
    -        ec2 = resource("ec2", region_name=AWS_REGION)
    +        ec2 = resource("ec2", region_name=AWS_REGION_US_EAST_1)
             instance = ec2.create_instances(
                 ImageId=EXAMPLE_AMI_ID,
                 MinCount=1,
    @@ -82,7 +54,9 @@ def test_one_compliant_ec2(self):
     
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
             current_audit_info.audit_config = {"max_ec2_instance_age_in_days": 180}
     
             with mock.patch(
    @@ -101,7 +75,7 @@ def test_one_compliant_ec2(self):
     
                 assert len(result) == 1
                 assert result[0].status == "PASS"
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_US_EAST_1
                 assert result[0].resource_tags is None
                 assert search(
                     f"EC2 Instance {instance.id} is not older", result[0].status_extended
    @@ -109,12 +83,12 @@ def test_one_compliant_ec2(self):
                 assert result[0].resource_id == instance.id
                 assert (
                     result[0].resource_arn
    -                == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION}:{current_audit_info.audited_account}:instance/{instance.id}"
    +                == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION_US_EAST_1}:{current_audit_info.audited_account}:instance/{instance.id}"
                 )
     
    -    @mock_ec2
    +    @mock_aws
         def test_one_old_ec2(self):
    -        ec2 = resource("ec2", region_name=AWS_REGION)
    +        ec2 = resource("ec2", region_name=AWS_REGION_US_EAST_1)
             instance = ec2.create_instances(
                 ImageId=EXAMPLE_AMI_ID,
                 MinCount=1,
    @@ -124,7 +98,9 @@ def test_one_old_ec2(self):
     
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
             current_audit_info.audit_config = {"max_ec2_instance_age_in_days": 180}
     
             with mock.patch(
    @@ -147,7 +123,7 @@ def test_one_old_ec2(self):
     
                 assert len(result) == 1
                 assert result[0].status == "FAIL"
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_US_EAST_1
                 assert result[0].resource_tags is None
                 assert search(
                     f"EC2 Instance {instance.id} is older", result[0].status_extended
    @@ -155,5 +131,5 @@ def test_one_old_ec2(self):
                 assert result[0].resource_id == instance.id
                 assert (
                     result[0].resource_arn
    -                == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION}:{current_audit_info.audited_account}:instance/{instance.id}"
    +                == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION_US_EAST_1}:{current_audit_info.audited_account}:instance/{instance.id}"
                 )
    diff --git a/tests/providers/aws/services/ec2/ec2_instance_profile_attached/ec2_instance_profile_attached_test.py b/tests/providers/aws/services/ec2/ec2_instance_profile_attached/ec2_instance_profile_attached_test.py
    index d9979fb8375..107f430b116 100644
    --- a/tests/providers/aws/services/ec2/ec2_instance_profile_attached/ec2_instance_profile_attached_test.py
    +++ b/tests/providers/aws/services/ec2/ec2_instance_profile_attached/ec2_instance_profile_attached_test.py
    @@ -1,54 +1,26 @@
     from re import search
     from unittest import mock
     
    -from boto3 import client, resource, session
    -from moto import mock_ec2, mock_iam
    +from boto3 import client, resource
    +from moto import mock_aws
     
    -from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info
    -from prowler.providers.common.models import Audit_Metadata
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_REGION_EU_WEST_1,
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
    -AWS_REGION = "us-east-1"
     EXAMPLE_AMI_ID = "ami-12c6146b"
    -AWS_ACCOUNT_NUMBER = "123456789012"
     
     
     class Test_ec2_instance_profile_attached:
    -    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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=["us-east-1", "eu-west-1"],
    -            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
    -
    -    @mock_ec2
    +    @mock_aws
         def test_ec2_no_instances(self):
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -67,15 +39,14 @@ def test_ec2_no_instances(self):
     
                 assert len(result) == 0
     
    -    @mock_iam
    -    @mock_ec2
    +    @mock_aws
         def test_one_compliant_ec2(self):
             iam = client("iam", "us-west-1")
             profile_name = "fake_profile"
             _ = iam.create_instance_profile(
                 InstanceProfileName=profile_name,
             )
    -        ec2 = resource("ec2", region_name=AWS_REGION)
    +        ec2 = resource("ec2", region_name=AWS_REGION_US_EAST_1)
             vpc = ec2.create_vpc(CidrBlock="10.0.0.0/16")
             subnet = ec2.create_subnet(VpcId=vpc.id, CidrBlock="10.0.0.0/18")
             instance = ec2.create_instances(
    @@ -94,7 +65,9 @@ def test_one_compliant_ec2(self):
     
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -112,7 +85,7 @@ def test_one_compliant_ec2(self):
     
                 assert len(result) == 1
                 assert result[0].status == "PASS"
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_US_EAST_1
                 assert result[0].resource_tags is None
                 assert search(
                     "associated with Instance Profile Role",
    @@ -121,12 +94,12 @@ def test_one_compliant_ec2(self):
                 assert result[0].resource_id == instance.id
                 assert (
                     result[0].resource_arn
    -                == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION}:{current_audit_info.audited_account}:instance/{instance.id}"
    +                == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION_US_EAST_1}:{current_audit_info.audited_account}:instance/{instance.id}"
                 )
     
    -    @mock_ec2
    +    @mock_aws
         def test_one_non_compliant_ec2(self):
    -        ec2 = resource("ec2", region_name=AWS_REGION)
    +        ec2 = resource("ec2", region_name=AWS_REGION_US_EAST_1)
             vpc = ec2.create_vpc(CidrBlock="10.0.0.0/16")
             subnet = ec2.create_subnet(VpcId=vpc.id, CidrBlock="10.0.0.0/18")
             instance = ec2.create_instances(
    @@ -144,7 +117,9 @@ def test_one_non_compliant_ec2(self):
     
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -162,7 +137,7 @@ def test_one_non_compliant_ec2(self):
     
                 assert len(result) == 1
                 assert result[0].status == "FAIL"
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_US_EAST_1
                 assert result[0].resource_tags is None
                 assert search(
                     "not associated with an Instance Profile", result[0].status_extended
    @@ -170,5 +145,5 @@ def test_one_non_compliant_ec2(self):
                 assert result[0].resource_id == instance.id
                 assert (
                     result[0].resource_arn
    -                == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION}:{current_audit_info.audited_account}:instance/{instance.id}"
    +                == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION_US_EAST_1}:{current_audit_info.audited_account}:instance/{instance.id}"
                 )
    diff --git a/tests/providers/aws/services/ec2/ec2_instance_public_ip/ec2_instance_public_ip_test.py b/tests/providers/aws/services/ec2/ec2_instance_public_ip/ec2_instance_public_ip_test.py
    index 99c043acf3e..08771f65312 100644
    --- a/tests/providers/aws/services/ec2/ec2_instance_public_ip/ec2_instance_public_ip_test.py
    +++ b/tests/providers/aws/services/ec2/ec2_instance_public_ip/ec2_instance_public_ip_test.py
    @@ -1,54 +1,26 @@
     from re import search
     from unittest import mock
     
    -from boto3 import resource, session
    -from moto import mock_ec2
    +from boto3 import resource
    +from moto import mock_aws
     
    -from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info
    -from prowler.providers.common.models import Audit_Metadata
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_REGION_EU_WEST_1,
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
    -AWS_REGION = "us-east-1"
     EXAMPLE_AMI_ID = "ami-12c6146b"
    -AWS_ACCOUNT_NUMBER = "123456789012"
     
     
     class Test_ec2_instance_public_ip:
    -    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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=["us-east-1", "eu-west-1"],
    -            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
    -
    -    @mock_ec2
    +    @mock_aws
         def test_ec2_no_instances(self):
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -67,9 +39,9 @@ def test_ec2_no_instances(self):
     
                 assert len(result) == 0
     
    -    @mock_ec2
    +    @mock_aws
         def test_one_compliant_ec2(self):
    -        ec2 = resource("ec2", region_name=AWS_REGION)
    +        ec2 = resource("ec2", region_name=AWS_REGION_US_EAST_1)
             vpc = ec2.create_vpc(CidrBlock="10.0.0.0/16")
             subnet = ec2.create_subnet(VpcId=vpc.id, CidrBlock="10.0.0.0/18")
             instance = ec2.create_instances(
    @@ -87,7 +59,9 @@ def test_one_compliant_ec2(self):
     
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -105,7 +79,7 @@ def test_one_compliant_ec2(self):
     
                 assert len(result) == 1
                 assert result[0].status == "PASS"
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_US_EAST_1
                 assert result[0].resource_tags is None
                 assert search(
                     f"EC2 Instance {instance.id} does not have a Public IP.",
    @@ -114,12 +88,12 @@ def test_one_compliant_ec2(self):
                 assert result[0].resource_id == instance.id
                 assert (
                     result[0].resource_arn
    -                == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION}:{current_audit_info.audited_account}:instance/{instance.id}"
    +                == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION_US_EAST_1}:{current_audit_info.audited_account}:instance/{instance.id}"
                 )
     
    -    @mock_ec2
    +    @mock_aws
         def test_one_ec2_with_public_ip(self):
    -        ec2 = resource("ec2", region_name=AWS_REGION)
    +        ec2 = resource("ec2", region_name=AWS_REGION_US_EAST_1)
             vpc = ec2.create_vpc(CidrBlock="10.0.0.0/16")
             subnet = ec2.create_subnet(VpcId=vpc.id, CidrBlock="10.0.0.0/18")
             instance = ec2.create_instances(
    @@ -137,7 +111,9 @@ def test_one_ec2_with_public_ip(self):
     
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -155,7 +131,7 @@ def test_one_ec2_with_public_ip(self):
     
                 assert len(result) == 1
                 assert result[0].status == "FAIL"
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_US_EAST_1
                 assert result[0].resource_tags is None
                 assert search(
                     f"EC2 Instance {instance.id} has a Public IP.",
    @@ -164,5 +140,5 @@ def test_one_ec2_with_public_ip(self):
                 assert result[0].resource_id == instance.id
                 assert (
                     result[0].resource_arn
    -                == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION}:{current_audit_info.audited_account}:instance/{instance.id}"
    +                == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION_US_EAST_1}:{current_audit_info.audited_account}:instance/{instance.id}"
                 )
    diff --git a/tests/providers/aws/services/ec2/ec2_instance_secrets_user_data/ec2_instance_secrets_user_data_test.py b/tests/providers/aws/services/ec2/ec2_instance_secrets_user_data/ec2_instance_secrets_user_data_test.py
    index cd9c883318c..5361698c364 100644
    --- a/tests/providers/aws/services/ec2/ec2_instance_secrets_user_data/ec2_instance_secrets_user_data_test.py
    +++ b/tests/providers/aws/services/ec2/ec2_instance_secrets_user_data/ec2_instance_secrets_user_data_test.py
    @@ -2,57 +2,29 @@
     from pathlib import Path
     from unittest import mock
     
    -from boto3 import resource, session
    -from moto import mock_ec2
    +from boto3 import resource
    +from moto import mock_aws
     
    -from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info
    -from prowler.providers.common.models import Audit_Metadata
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_REGION_EU_WEST_1,
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
    -AWS_REGION = "us-east-1"
     EXAMPLE_AMI_ID = "ami-12c6146b"
    -AWS_ACCOUNT_NUMBER = "123456789012"
     
     ACTUAL_DIRECTORY = Path(path.dirname(path.realpath(__file__)))
     FIXTURES_DIR_NAME = "fixtures"
     
     
     class Test_ec2_instance_secrets_user_data:
    -    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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=["us-east-1", "eu-west-1"],
    -            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
    -
    -    @mock_ec2
    +    @mock_aws
         def test_no_ec2(self):
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -71,9 +43,9 @@ def test_no_ec2(self):
     
                 assert len(result) == 0
     
    -    @mock_ec2
    +    @mock_aws
         def test_one_ec2_with_no_secrets(self):
    -        ec2 = resource("ec2", region_name=AWS_REGION)
    +        ec2 = resource("ec2", region_name=AWS_REGION_US_EAST_1)
             instance = ec2.create_instances(
                 ImageId=EXAMPLE_AMI_ID,
                 MinCount=1,
    @@ -83,7 +55,9 @@ def test_one_ec2_with_no_secrets(self):
     
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -108,14 +82,14 @@ def test_one_ec2_with_no_secrets(self):
                 assert result[0].resource_id == instance.id
                 assert (
                     result[0].resource_arn
    -                == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION}:{current_audit_info.audited_account}:instance/{instance.id}"
    +                == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION_US_EAST_1}:{current_audit_info.audited_account}:instance/{instance.id}"
                 )
                 assert result[0].resource_tags is None
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_US_EAST_1
     
    -    @mock_ec2
    +    @mock_aws
         def test_one_ec2_with_secrets(self):
    -        ec2 = resource("ec2", region_name=AWS_REGION)
    +        ec2 = resource("ec2", region_name=AWS_REGION_US_EAST_1)
             instance = ec2.create_instances(
                 ImageId=EXAMPLE_AMI_ID,
                 MinCount=1,
    @@ -125,7 +99,9 @@ def test_one_ec2_with_secrets(self):
     
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -150,12 +126,12 @@ def test_one_ec2_with_secrets(self):
                 assert result[0].resource_id == instance.id
                 assert (
                     result[0].resource_arn
    -                == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION}:{current_audit_info.audited_account}:instance/{instance.id}"
    +                == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION_US_EAST_1}:{current_audit_info.audited_account}:instance/{instance.id}"
                 )
                 assert result[0].resource_tags is None
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_US_EAST_1
     
    -    @mock_ec2
    +    @mock_aws
         def test_one_ec2_file_with_secrets(self):
             # Include launch_configurations to check
             f = open(
    @@ -163,14 +139,16 @@ def test_one_ec2_file_with_secrets(self):
                 "r",
             )
             secrets = f.read()
    -        ec2 = resource("ec2", region_name=AWS_REGION)
    +        ec2 = resource("ec2", region_name=AWS_REGION_US_EAST_1)
             instance = ec2.create_instances(
                 ImageId=EXAMPLE_AMI_ID, MinCount=1, MaxCount=1, UserData=secrets
             )[0]
     
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -195,21 +173,23 @@ def test_one_ec2_file_with_secrets(self):
                 assert result[0].resource_id == instance.id
                 assert (
                     result[0].resource_arn
    -                == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION}:{current_audit_info.audited_account}:instance/{instance.id}"
    +                == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION_US_EAST_1}:{current_audit_info.audited_account}:instance/{instance.id}"
                 )
                 assert result[0].resource_tags is None
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_US_EAST_1
     
    -    @mock_ec2
    +    @mock_aws
         def test_one_launch_configurations_without_user_data(self):
    -        ec2 = resource("ec2", region_name=AWS_REGION)
    +        ec2 = resource("ec2", region_name=AWS_REGION_US_EAST_1)
             instance = ec2.create_instances(
                 ImageId=EXAMPLE_AMI_ID, MinCount=1, MaxCount=1, UserData=""
             )[0]
     
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -234,12 +214,12 @@ def test_one_launch_configurations_without_user_data(self):
                 assert result[0].resource_id == instance.id
                 assert (
                     result[0].resource_arn
    -                == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION}:{current_audit_info.audited_account}:instance/{instance.id}"
    +                == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION_US_EAST_1}:{current_audit_info.audited_account}:instance/{instance.id}"
                 )
                 assert result[0].resource_tags is None
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_US_EAST_1
     
    -    @mock_ec2
    +    @mock_aws
         def test_one_ec2_file_with_secrets_gzip(self):
             # Include launch_configurations to check
             f = open(
    @@ -247,14 +227,16 @@ def test_one_ec2_file_with_secrets_gzip(self):
                 "rb",
             )
             secrets = f.read()
    -        ec2 = resource("ec2", region_name=AWS_REGION)
    +        ec2 = resource("ec2", region_name=AWS_REGION_US_EAST_1)
             instance = ec2.create_instances(
                 ImageId=EXAMPLE_AMI_ID, MinCount=1, MaxCount=1, UserData=secrets
             )[0]
     
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -279,7 +261,7 @@ def test_one_ec2_file_with_secrets_gzip(self):
                 assert result[0].resource_id == instance.id
                 assert (
                     result[0].resource_arn
    -                == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION}:{current_audit_info.audited_account}:instance/{instance.id}"
    +                == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION_US_EAST_1}:{current_audit_info.audited_account}:instance/{instance.id}"
                 )
                 assert result[0].resource_tags is None
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_US_EAST_1
    diff --git a/tests/providers/aws/services/ec2/ec2_networkacl_allow_ingress_any_port/ec2_networkacl_allow_ingress_any_port_test.py b/tests/providers/aws/services/ec2/ec2_networkacl_allow_ingress_any_port/ec2_networkacl_allow_ingress_any_port_test.py
    index 829495b99e7..e1621af923f 100644
    --- a/tests/providers/aws/services/ec2/ec2_networkacl_allow_ingress_any_port/ec2_networkacl_allow_ingress_any_port_test.py
    +++ b/tests/providers/aws/services/ec2/ec2_networkacl_allow_ingress_any_port/ec2_networkacl_allow_ingress_any_port_test.py
    @@ -1,52 +1,23 @@
     from unittest import mock
     
    -from boto3 import client, session
    -from moto import mock_ec2
    +from boto3 import client
    +from moto import mock_aws
     
    -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"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_REGION_EU_WEST_1,
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     
     class Test_ec2_networkacl_allow_ingress_any_port:
    -    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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=["us-east-1", "eu-west-1"],
    -            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
    -
    -    @mock_ec2
    +    @mock_aws
         def test_ec2_default_nacls(self):
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -66,11 +37,13 @@ def test_ec2_default_nacls(self):
                 # One default nacl per region
                 assert len(result) == 2
     
    -    @mock_ec2
    +    @mock_aws
         def test_ec2_non_default_compliant_nacl(self):
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -92,17 +65,17 @@ def test_ec2_non_default_compliant_nacl(self):
     
                 # by default nacls are public
                 assert result[0].status == "FAIL"
    -            assert result[0].region in (AWS_REGION, "eu-west-1")
    +            assert result[0].region in (AWS_REGION_US_EAST_1, "eu-west-1")
                 assert result[0].resource_tags == []
                 assert (
                     result[0].status_extended
                     == f"Network ACL {result[0].resource_id} has every port open to the Internet."
                 )
     
    -    @mock_ec2
    +    @mock_aws
         def test_ec2_non_compliant_nacl(self):
             # Create EC2 Mocked Resources
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
             vpc_id = ec2_client.create_vpc(CidrBlock="10.0.0.0/16")["Vpc"]["VpcId"]
             nacl_id = ec2_client.create_network_acl(VpcId=vpc_id)["NetworkAcl"][
                 "NetworkAclId"
    @@ -118,7 +91,9 @@ def test_ec2_non_compliant_nacl(self):
     
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -141,7 +116,7 @@ def test_ec2_non_compliant_nacl(self):
                 for nacl in result:
                     if nacl.resource_id == nacl_id:
                         assert nacl.status == "FAIL"
    -                    assert result[0].region in (AWS_REGION, "eu-west-1")
    +                    assert result[0].region in (AWS_REGION_US_EAST_1, "eu-west-1")
                         assert result[0].resource_tags == []
                         assert (
                             nacl.status_extended
    @@ -149,13 +124,13 @@ def test_ec2_non_compliant_nacl(self):
                         )
                         assert (
                             nacl.resource_arn
    -                        == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION}:{current_audit_info.audited_account}:network-acl/{nacl_id}"
    +                        == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION_US_EAST_1}:{current_audit_info.audited_account}:network-acl/{nacl_id}"
                         )
     
    -    @mock_ec2
    +    @mock_aws
         def test_ec2_compliant_nacl(self):
             # Create EC2 Mocked Resources
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
             vpc_id = ec2_client.create_vpc(CidrBlock="10.0.0.0/16")["Vpc"]["VpcId"]
             nacl_id = ec2_client.create_network_acl(VpcId=vpc_id)["NetworkAcl"][
                 "NetworkAclId"
    @@ -171,7 +146,9 @@ def test_ec2_compliant_nacl(self):
     
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -194,7 +171,7 @@ def test_ec2_compliant_nacl(self):
                 for nacl in result:
                     if nacl.resource_id == nacl_id:
                         assert nacl.status == "PASS"
    -                    assert result[0].region in (AWS_REGION, "eu-west-1")
    +                    assert result[0].region in (AWS_REGION_US_EAST_1, "eu-west-1")
                         assert result[0].resource_tags == []
                         assert (
                             nacl.status_extended
    @@ -202,13 +179,13 @@ def test_ec2_compliant_nacl(self):
                         )
                         assert (
                             nacl.resource_arn
    -                        == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION}:{current_audit_info.audited_account}:network-acl/{nacl_id}"
    +                        == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION_US_EAST_1}:{current_audit_info.audited_account}:network-acl/{nacl_id}"
                         )
     
    -    @mock_ec2
    +    @mock_aws
         def test_ec2_non_compliant_nacl_ignoring(self):
             # Create EC2 Mocked Resources
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
             vpc_id = ec2_client.create_vpc(CidrBlock="10.0.0.0/16")["Vpc"]["VpcId"]
             nacl_id = ec2_client.create_network_acl(VpcId=vpc_id)["NetworkAcl"][
                 "NetworkAclId"
    @@ -224,8 +201,10 @@ def test_ec2_non_compliant_nacl_ignoring(self):
     
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    -        current_audit_info.ignore_unused_services = True
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1],
    +            ignore_unused_services=True,
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -244,10 +223,10 @@ def test_ec2_non_compliant_nacl_ignoring(self):
     
                 assert len(result) == 0
     
    -    @mock_ec2
    +    @mock_aws
         def test_ec2_non_compliant_nacl_ignoring_with_sgs(self):
             # Create EC2 Mocked Resources
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
             vpc_id = ec2_client.create_vpc(CidrBlock="10.0.0.0/16")["Vpc"]["VpcId"]
             nacl_id = ec2_client.create_network_acl(VpcId=vpc_id)["NetworkAcl"][
                 "NetworkAclId"
    @@ -264,8 +243,10 @@ def test_ec2_non_compliant_nacl_ignoring_with_sgs(self):
     
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    -        current_audit_info.ignore_unused_services = True
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1],
    +            ignore_unused_services=True,
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -288,7 +269,7 @@ def test_ec2_non_compliant_nacl_ignoring_with_sgs(self):
                 for nacl in result:
                     if nacl.resource_id == nacl_id:
                         assert nacl.status == "FAIL"
    -                    assert result[0].region in (AWS_REGION, "eu-west-1")
    +                    assert result[0].region in (AWS_REGION_US_EAST_1, "eu-west-1")
                         assert result[0].resource_tags == []
                         assert (
                             nacl.status_extended
    @@ -296,5 +277,5 @@ def test_ec2_non_compliant_nacl_ignoring_with_sgs(self):
                         )
                         assert (
                             nacl.resource_arn
    -                        == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION}:{current_audit_info.audited_account}:network-acl/{nacl_id}"
    +                        == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION_US_EAST_1}:{current_audit_info.audited_account}:network-acl/{nacl_id}"
                         )
    diff --git a/tests/providers/aws/services/ec2/ec2_networkacl_allow_ingress_tcp_port_22/ec2_networkacl_allow_ingress_tcp_port_22_test.py b/tests/providers/aws/services/ec2/ec2_networkacl_allow_ingress_tcp_port_22/ec2_networkacl_allow_ingress_tcp_port_22_test.py
    index 3428a526e4a..5281f5e9d2b 100644
    --- a/tests/providers/aws/services/ec2/ec2_networkacl_allow_ingress_tcp_port_22/ec2_networkacl_allow_ingress_tcp_port_22_test.py
    +++ b/tests/providers/aws/services/ec2/ec2_networkacl_allow_ingress_tcp_port_22/ec2_networkacl_allow_ingress_tcp_port_22_test.py
    @@ -1,52 +1,23 @@
     from unittest import mock
     
    -from boto3 import client, session
    -from moto import mock_ec2
    +from boto3 import client
    +from moto import mock_aws
     
    -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"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_REGION_EU_WEST_1,
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     
     class Test_ec2_networkacl_allow_ingress_tcp_port_22:
    -    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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=["us-east-1", "eu-west-1"],
    -            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
    -
    -    @mock_ec2
    +    @mock_aws
         def test_ec2_default_nacls(self):
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -66,11 +37,13 @@ def test_ec2_default_nacls(self):
                 # One default nacl per region
                 assert len(result) == 2
     
    -    @mock_ec2
    +    @mock_aws
         def test_ec2_non_default_compliant_nacl(self):
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -92,17 +65,17 @@ def test_ec2_non_default_compliant_nacl(self):
     
                 # by default nacls are public
                 assert result[0].status == "FAIL"
    -            assert result[0].region in (AWS_REGION, "eu-west-1")
    +            assert result[0].region in (AWS_REGION_US_EAST_1, "eu-west-1")
                 assert result[0].resource_tags == []
                 assert (
                     result[0].status_extended
                     == f"Network ACL {result[0].resource_id} has SSH port 22 open to the Internet."
                 )
     
    -    @mock_ec2
    +    @mock_aws
         def test_ec2_non_compliant_nacl(self):
             # Create EC2 Mocked Resources
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
             vpc_id = ec2_client.create_vpc(CidrBlock="10.0.0.0/16")["Vpc"]["VpcId"]
             nacl_id = ec2_client.create_network_acl(VpcId=vpc_id)["NetworkAcl"][
                 "NetworkAclId"
    @@ -119,7 +92,9 @@ def test_ec2_non_compliant_nacl(self):
     
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -142,7 +117,7 @@ def test_ec2_non_compliant_nacl(self):
                 for nacl in result:
                     if nacl.resource_id == nacl_id:
                         assert nacl.status == "FAIL"
    -                    assert result[0].region in (AWS_REGION, "eu-west-1")
    +                    assert result[0].region in (AWS_REGION_US_EAST_1, "eu-west-1")
                         assert result[0].resource_tags == []
                         assert (
                             nacl.status_extended
    @@ -150,13 +125,13 @@ def test_ec2_non_compliant_nacl(self):
                         )
                         assert (
                             nacl.resource_arn
    -                        == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION}:{current_audit_info.audited_account}:network-acl/{nacl_id}"
    +                        == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION_US_EAST_1}:{current_audit_info.audited_account}:network-acl/{nacl_id}"
                         )
     
    -    @mock_ec2
    +    @mock_aws
         def test_ec2_compliant_nacl(self):
             # Create EC2 Mocked Resources
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
             vpc_id = ec2_client.create_vpc(CidrBlock="10.0.0.0/16")["Vpc"]["VpcId"]
             nacl_id = ec2_client.create_network_acl(VpcId=vpc_id)["NetworkAcl"][
                 "NetworkAclId"
    @@ -173,7 +148,9 @@ def test_ec2_compliant_nacl(self):
     
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -196,7 +173,7 @@ def test_ec2_compliant_nacl(self):
                 for nacl in result:
                     if nacl.resource_id == nacl_id:
                         assert nacl.status == "PASS"
    -                    assert result[0].region in (AWS_REGION, "eu-west-1")
    +                    assert result[0].region in (AWS_REGION_US_EAST_1, "eu-west-1")
                         assert result[0].resource_tags == []
                         assert (
                             nacl.status_extended
    @@ -204,13 +181,13 @@ def test_ec2_compliant_nacl(self):
                         )
                         assert (
                             nacl.resource_arn
    -                        == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION}:{current_audit_info.audited_account}:network-acl/{nacl_id}"
    +                        == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION_US_EAST_1}:{current_audit_info.audited_account}:network-acl/{nacl_id}"
                         )
     
    -    @mock_ec2
    +    @mock_aws
         def test_ec2_non_compliant_nacl_ignoring(self):
             # Create EC2 Mocked Resources
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
             vpc_id = ec2_client.create_vpc(CidrBlock="10.0.0.0/16")["Vpc"]["VpcId"]
             nacl_id = ec2_client.create_network_acl(VpcId=vpc_id)["NetworkAcl"][
                 "NetworkAclId"
    @@ -226,8 +203,10 @@ def test_ec2_non_compliant_nacl_ignoring(self):
     
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    -        current_audit_info.ignore_unused_services = True
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1],
    +            ignore_unused_services=True,
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -246,10 +225,10 @@ def test_ec2_non_compliant_nacl_ignoring(self):
     
                 assert len(result) == 0
     
    -    @mock_ec2
    +    @mock_aws
         def test_ec2_non_compliant_nacl_ignoring_with_sgs(self):
             # Create EC2 Mocked Resources
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
             vpc_id = ec2_client.create_vpc(CidrBlock="10.0.0.0/16")["Vpc"]["VpcId"]
             nacl_id = ec2_client.create_network_acl(VpcId=vpc_id)["NetworkAcl"][
                 "NetworkAclId"
    @@ -266,8 +245,10 @@ def test_ec2_non_compliant_nacl_ignoring_with_sgs(self):
     
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    -        current_audit_info.ignore_unused_services = True
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1],
    +            ignore_unused_services=True,
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -290,7 +271,7 @@ def test_ec2_non_compliant_nacl_ignoring_with_sgs(self):
                 for nacl in result:
                     if nacl.resource_id == nacl_id:
                         assert nacl.status == "FAIL"
    -                    assert result[0].region in (AWS_REGION, "eu-west-1")
    +                    assert result[0].region in (AWS_REGION_US_EAST_1, "eu-west-1")
                         assert result[0].resource_tags == []
                         assert (
                             nacl.status_extended
    @@ -298,5 +279,5 @@ def test_ec2_non_compliant_nacl_ignoring_with_sgs(self):
                         )
                         assert (
                             nacl.resource_arn
    -                        == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION}:{current_audit_info.audited_account}:network-acl/{nacl_id}"
    +                        == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION_US_EAST_1}:{current_audit_info.audited_account}:network-acl/{nacl_id}"
                         )
    diff --git a/tests/providers/aws/services/ec2/ec2_networkacl_allow_ingress_tcp_port_3389/ec2_networkacl_allow_ingress_tcp_port_3389_test.py b/tests/providers/aws/services/ec2/ec2_networkacl_allow_ingress_tcp_port_3389/ec2_networkacl_allow_ingress_tcp_port_3389_test.py
    index d7f76c7ccfd..610410868f5 100644
    --- a/tests/providers/aws/services/ec2/ec2_networkacl_allow_ingress_tcp_port_3389/ec2_networkacl_allow_ingress_tcp_port_3389_test.py
    +++ b/tests/providers/aws/services/ec2/ec2_networkacl_allow_ingress_tcp_port_3389/ec2_networkacl_allow_ingress_tcp_port_3389_test.py
    @@ -1,52 +1,23 @@
     from unittest import mock
     
    -from boto3 import client, session
    -from moto import mock_ec2
    +from boto3 import client
    +from moto import mock_aws
     
    -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"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_REGION_EU_WEST_1,
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     
     class Test_ec2_networkacl_allow_ingress_tcp_port_3389:
    -    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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=["us-east-1", "eu-west-1"],
    -            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
    -
    -    @mock_ec2
    +    @mock_aws
         def test_ec2_default_nacls(self):
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -66,11 +37,13 @@ def test_ec2_default_nacls(self):
                 # One default nacl per region
                 assert len(result) == 2
     
    -    @mock_ec2
    +    @mock_aws
         def test_ec2_non_default_compliant_nacl(self):
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -92,17 +65,17 @@ def test_ec2_non_default_compliant_nacl(self):
     
                 # by default nacls are public
                 assert result[0].status == "FAIL"
    -            assert result[0].region in (AWS_REGION, "eu-west-1")
    +            assert result[0].region in (AWS_REGION_US_EAST_1, "eu-west-1")
                 assert result[0].resource_tags == []
                 assert (
                     result[0].status_extended
                     == f"Network ACL {result[0].resource_id} has Microsoft RDP port 3389 open to the Internet."
                 )
     
    -    @mock_ec2
    +    @mock_aws
         def test_ec2_non_compliant_nacl(self):
             # Create EC2 Mocked Resources
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
             vpc_id = ec2_client.create_vpc(CidrBlock="10.0.0.0/16")["Vpc"]["VpcId"]
             nacl_id = ec2_client.create_network_acl(VpcId=vpc_id)["NetworkAcl"][
                 "NetworkAclId"
    @@ -119,7 +92,9 @@ def test_ec2_non_compliant_nacl(self):
     
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -142,7 +117,7 @@ def test_ec2_non_compliant_nacl(self):
                 for nacl in result:
                     if nacl.resource_id == nacl_id:
                         assert nacl.status == "FAIL"
    -                    assert result[0].region in (AWS_REGION, "eu-west-1")
    +                    assert result[0].region in (AWS_REGION_US_EAST_1, "eu-west-1")
                         assert result[0].resource_tags == []
                         assert (
                             nacl.status_extended
    @@ -150,13 +125,13 @@ def test_ec2_non_compliant_nacl(self):
                         )
                         assert (
                             nacl.resource_arn
    -                        == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION}:{current_audit_info.audited_account}:network-acl/{nacl_id}"
    +                        == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION_US_EAST_1}:{current_audit_info.audited_account}:network-acl/{nacl_id}"
                         )
     
    -    @mock_ec2
    +    @mock_aws
         def test_ec2_compliant_nacl(self):
             # Create EC2 Mocked Resources
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
             vpc_id = ec2_client.create_vpc(CidrBlock="10.0.0.0/16")["Vpc"]["VpcId"]
             nacl_id = ec2_client.create_network_acl(VpcId=vpc_id)["NetworkAcl"][
                 "NetworkAclId"
    @@ -173,7 +148,9 @@ def test_ec2_compliant_nacl(self):
     
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -196,7 +173,7 @@ def test_ec2_compliant_nacl(self):
                 for nacl in result:
                     if nacl.resource_id == nacl_id:
                         assert nacl.status == "PASS"
    -                    assert result[0].region in (AWS_REGION, "eu-west-1")
    +                    assert result[0].region in (AWS_REGION_US_EAST_1, "eu-west-1")
                         assert result[0].resource_tags == []
                         assert (
                             nacl.status_extended
    @@ -204,13 +181,13 @@ def test_ec2_compliant_nacl(self):
                         )
                         assert (
                             nacl.resource_arn
    -                        == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION}:{current_audit_info.audited_account}:network-acl/{nacl_id}"
    +                        == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION_US_EAST_1}:{current_audit_info.audited_account}:network-acl/{nacl_id}"
                         )
     
    -    @mock_ec2
    +    @mock_aws
         def test_ec2_non_compliant_nacl_ignoring(self):
             # Create EC2 Mocked Resources
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
             vpc_id = ec2_client.create_vpc(CidrBlock="10.0.0.0/16")["Vpc"]["VpcId"]
             nacl_id = ec2_client.create_network_acl(VpcId=vpc_id)["NetworkAcl"][
                 "NetworkAclId"
    @@ -226,8 +203,10 @@ def test_ec2_non_compliant_nacl_ignoring(self):
     
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    -        current_audit_info.ignore_unused_services = True
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1],
    +            ignore_unused_services=True,
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -246,10 +225,10 @@ def test_ec2_non_compliant_nacl_ignoring(self):
     
                 assert len(result) == 0
     
    -    @mock_ec2
    +    @mock_aws
         def test_ec2_non_compliant_nacl_ignoring_with_sgs(self):
             # Create EC2 Mocked Resources
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
             vpc_id = ec2_client.create_vpc(CidrBlock="10.0.0.0/16")["Vpc"]["VpcId"]
             nacl_id = ec2_client.create_network_acl(VpcId=vpc_id)["NetworkAcl"][
                 "NetworkAclId"
    @@ -266,8 +245,10 @@ def test_ec2_non_compliant_nacl_ignoring_with_sgs(self):
     
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    -        current_audit_info.ignore_unused_services = True
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1],
    +            ignore_unused_services=True,
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -290,7 +271,7 @@ def test_ec2_non_compliant_nacl_ignoring_with_sgs(self):
                 for nacl in result:
                     if nacl.resource_id == nacl_id:
                         assert nacl.status == "FAIL"
    -                    assert result[0].region in (AWS_REGION, "eu-west-1")
    +                    assert result[0].region in (AWS_REGION_US_EAST_1, "eu-west-1")
                         assert result[0].resource_tags == []
                         assert (
                             nacl.status_extended
    @@ -298,5 +279,5 @@ def test_ec2_non_compliant_nacl_ignoring_with_sgs(self):
                         )
                         assert (
                             nacl.resource_arn
    -                        == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION}:{current_audit_info.audited_account}:network-acl/{nacl_id}"
    +                        == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION_US_EAST_1}:{current_audit_info.audited_account}:network-acl/{nacl_id}"
                         )
    diff --git a/tests/providers/aws/services/ec2/ec2_securitygroup_allow_ingress_from_internet_to_any_port/ec2_securitygroup_allow_ingress_from_internet_to_any_port_test.py b/tests/providers/aws/services/ec2/ec2_securitygroup_allow_ingress_from_internet_to_any_port/ec2_securitygroup_allow_ingress_from_internet_to_any_port_test.py
    index 9a53db143fb..c815051e794 100644
    --- a/tests/providers/aws/services/ec2/ec2_securitygroup_allow_ingress_from_internet_to_any_port/ec2_securitygroup_allow_ingress_from_internet_to_any_port_test.py
    +++ b/tests/providers/aws/services/ec2/ec2_securitygroup_allow_ingress_from_internet_to_any_port/ec2_securitygroup_allow_ingress_from_internet_to_any_port_test.py
    @@ -1,59 +1,31 @@
     from unittest import mock
     
    -from boto3 import client, resource, session
    -from moto import mock_ec2
    +from boto3 import client, resource
    +from moto import mock_aws
     
    -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.common.models import Audit_Metadata
    -
    -AWS_REGION = "us-east-1"
    -AWS_ACCOUNT_NUMBER = "123456789012"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_REGION_EU_WEST_1,
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     
     class Test_ec2_securitygroup_allow_ingress_from_internet_to_any_port:
    -    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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=["us-east-1", "eu-west-1"],
    -            organizations_metadata=None,
    -            audit_resources=None,
    -            mfa_enabled=False,
    -            audit_metadata=Audit_Metadata(
    -                services_scanned=0,
    -                expected_checks=[
    -                    "ec2_securitygroup_allow_ingress_from_internet_to_any_port"
    -                ],
    -                completed_checks=0,
    -                audit_progress=0,
    -            ),
    -        )
    -
    -        return audit_info
    -
    -    @mock_ec2
    +    @mock_aws
         def test_ec2_default_sgs(self):
             # Create EC2 Mocked Resources
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
             ec2_client.create_vpc(CidrBlock="10.0.0.0/16")
     
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1],
    +            expected_checks=[
    +                "ec2_securitygroup_allow_ingress_from_internet_to_any_port"
    +            ],
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -80,10 +52,10 @@ def test_ec2_default_sgs(self):
                 assert result[1].status == "PASS"
                 assert result[2].status == "PASS"
     
    -    @mock_ec2
    +    @mock_aws
         def test_ec2_non_compliant_default_sg(self):
             # Create EC2 Mocked Resources
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
             ec2_client.create_vpc(CidrBlock="10.0.0.0/16")
             default_sg = ec2_client.describe_security_groups(GroupNames=["default"])[
                 "SecurityGroups"
    @@ -102,7 +74,12 @@ def test_ec2_non_compliant_default_sg(self):
     
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1],
    +            expected_checks=[
    +                "ec2_securitygroup_allow_ingress_from_internet_to_any_port"
    +            ],
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -128,22 +105,22 @@ def test_ec2_non_compliant_default_sg(self):
                 for sg in result:
                     if sg.resource_id == default_sg_id:
                         assert sg.status == "FAIL"
    -                    assert sg.region == AWS_REGION
    +                    assert sg.region == AWS_REGION_US_EAST_1
                         assert (
                             sg.status_extended
                             == f"Security group {default_sg_name} ({default_sg_id}) has all ports open to the Internet."
                         )
                         assert (
                             sg.resource_arn
    -                        == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION}:{current_audit_info.audited_account}:security-group/{default_sg_id}"
    +                        == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION_US_EAST_1}:{current_audit_info.audited_account}:security-group/{default_sg_id}"
                         )
                         assert sg.resource_details == default_sg_name
                         assert sg.resource_tags == []
     
    -    @mock_ec2
    +    @mock_aws
         def test_ec2_compliant_default_sg(self):
             # Create EC2 Mocked Resources
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
             ec2_client.create_vpc(CidrBlock="10.0.0.0/16")
             default_sg = ec2_client.describe_security_groups(GroupNames=["default"])[
                 "SecurityGroups"
    @@ -162,7 +139,12 @@ def test_ec2_compliant_default_sg(self):
     
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1],
    +            expected_checks=[
    +                "ec2_securitygroup_allow_ingress_from_internet_to_any_port"
    +            ],
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -188,22 +170,22 @@ def test_ec2_compliant_default_sg(self):
                 for sg in result:
                     if sg.resource_id == default_sg_id:
                         assert sg.status == "PASS"
    -                    assert sg.region == AWS_REGION
    +                    assert sg.region == AWS_REGION_US_EAST_1
                         assert (
                             sg.status_extended
                             == f"Security group {default_sg_name} ({default_sg_id}) does not have all ports open to the Internet."
                         )
                         assert (
                             sg.resource_arn
    -                        == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION}:{current_audit_info.audited_account}:security-group/{default_sg_id}"
    +                        == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION_US_EAST_1}:{current_audit_info.audited_account}:security-group/{default_sg_id}"
                         )
                         assert sg.resource_details == default_sg_name
                         assert sg.resource_tags == []
     
    -    @mock_ec2
    +    @mock_aws
         def test_ec2_compliant_default_sg_only_open_to_one_port(self):
             # Create EC2 Mocked Resources
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
             ec2_client.create_vpc(CidrBlock="10.0.0.0/16")
             default_sg = ec2_client.describe_security_groups(GroupNames=["default"])[
                 "SecurityGroups"
    @@ -227,7 +209,12 @@ def test_ec2_compliant_default_sg_only_open_to_one_port(self):
     
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1],
    +            expected_checks=[
    +                "ec2_securitygroup_allow_ingress_from_internet_to_any_port"
    +            ],
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -253,28 +240,33 @@ def test_ec2_compliant_default_sg_only_open_to_one_port(self):
                 for sg in result:
                     if sg.resource_id == default_sg_id:
                         assert sg.status == "PASS"
    -                    assert sg.region == AWS_REGION
    +                    assert sg.region == AWS_REGION_US_EAST_1
                         assert (
                             sg.status_extended
                             == f"Security group {default_sg_name} ({default_sg_id}) does not have all ports open to the Internet."
                         )
                         assert (
                             sg.resource_arn
    -                        == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION}:{current_audit_info.audited_account}:security-group/{default_sg_id}"
    +                        == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION_US_EAST_1}:{current_audit_info.audited_account}:security-group/{default_sg_id}"
                         )
                         assert sg.resource_details == default_sg_name
                         assert sg.resource_tags == []
     
    -    @mock_ec2
    +    @mock_aws
         def test_ec2_default_sgs_ignoring(self):
             # Create EC2 Mocked Resources
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
             ec2_client.create_vpc(CidrBlock="10.0.0.0/16")
     
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    -        current_audit_info.ignore_unused_services = True
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1],
    +            expected_checks=[
    +                "ec2_securitygroup_allow_ingress_from_internet_to_any_port"
    +            ],
    +            ignore_unused_services=True,
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -296,14 +288,14 @@ def test_ec2_default_sgs_ignoring(self):
     
                 assert len(result) == 0
     
    -    @mock_ec2
    +    @mock_aws
         def test_ec2_default_sgs_ignoring_vpc_in_use(self):
             # Create EC2 Mocked Resources
    -        ec2 = resource("ec2", region_name=AWS_REGION)
    +        ec2 = resource("ec2", region_name=AWS_REGION_US_EAST_1)
             vpc = ec2.create_vpc(CidrBlock="10.0.0.0/16")
             subnet = ec2.create_subnet(VpcId=vpc.id, CidrBlock="10.0.0.0/18")
             ec2.create_network_interface(SubnetId=subnet.id)
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
             default_sg = ec2_client.describe_security_groups(GroupNames=["default"])[
                 "SecurityGroups"
             ][0]
    @@ -311,8 +303,13 @@ def test_ec2_default_sgs_ignoring_vpc_in_use(self):
             default_sg["GroupName"]
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    -        current_audit_info.ignore_unused_services = True
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1],
    +            expected_checks=[
    +                "ec2_securitygroup_allow_ingress_from_internet_to_any_port"
    +            ],
    +            ignore_unused_services=True,
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -334,4 +331,4 @@ def test_ec2_default_sgs_ignoring_vpc_in_use(self):
     
                 assert len(result) == 1
                 assert result[0].status == "PASS"
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_US_EAST_1
    diff --git a/tests/providers/aws/services/ec2/ec2_securitygroup_allow_ingress_from_internet_to_port_mongodb_27017_27018/ec2_securitygroup_allow_ingress_from_internet_to_port_mongodb_27017_27018_test.py b/tests/providers/aws/services/ec2/ec2_securitygroup_allow_ingress_from_internet_to_port_mongodb_27017_27018/ec2_securitygroup_allow_ingress_from_internet_to_port_mongodb_27017_27018_test.py
    index a61c8f75d04..4295c3bd237 100644
    --- a/tests/providers/aws/services/ec2/ec2_securitygroup_allow_ingress_from_internet_to_port_mongodb_27017_27018/ec2_securitygroup_allow_ingress_from_internet_to_port_mongodb_27017_27018_test.py
    +++ b/tests/providers/aws/services/ec2/ec2_securitygroup_allow_ingress_from_internet_to_port_mongodb_27017_27018/ec2_securitygroup_allow_ingress_from_internet_to_port_mongodb_27017_27018_test.py
    @@ -1,57 +1,28 @@
     from unittest import mock
     
    -from boto3 import client, resource, session
    -from moto import mock_ec2
    +from boto3 import client, resource
    +from moto import mock_aws
     
    -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.common.models import Audit_Metadata
    -
    -AWS_REGION = "us-east-1"
    -AWS_ACCOUNT_NUMBER = "123456789012"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_REGION_EU_WEST_1,
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     
     class Test_ec2_securitygroup_allow_ingress_from_internet_to_port_mongodb_27017_27018:
    -    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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=["us-east-1", "eu-west-1"],
    -            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
    -
    -    @mock_ec2
    +    @mock_aws
         def test_ec2_default_sgs(self):
             # Create EC2 Mocked Resources
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
             ec2_client.create_vpc(CidrBlock="10.0.0.0/16")
     
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -80,10 +51,10 @@ def test_ec2_default_sgs(self):
                 assert result[1].status == "PASS"
                 assert result[2].status == "PASS"
     
    -    @mock_ec2
    +    @mock_aws
         def test_ec2_non_compliant_default_sg(self):
             # Create EC2 Mocked Resources
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
             ec2_client.create_vpc(CidrBlock="10.0.0.0/16")
             default_sg = ec2_client.describe_security_groups(GroupNames=["default"])[
                 "SecurityGroups"
    @@ -104,7 +75,9 @@ def test_ec2_non_compliant_default_sg(self):
     
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -132,22 +105,22 @@ def test_ec2_non_compliant_default_sg(self):
                 for sg in result:
                     if sg.resource_id == default_sg_id:
                         assert sg.status == "FAIL"
    -                    assert sg.region == AWS_REGION
    +                    assert sg.region == AWS_REGION_US_EAST_1
                         assert (
                             sg.status_extended
                             == f"Security group {default_sg_name} ({default_sg_id}) has MongoDB ports 27017 and 27018 open to the Internet."
                         )
                         assert (
                             sg.resource_arn
    -                        == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION}:{current_audit_info.audited_account}:security-group/{default_sg_id}"
    +                        == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION_US_EAST_1}:{current_audit_info.audited_account}:security-group/{default_sg_id}"
                         )
                         assert sg.resource_details == default_sg_name
                         assert sg.resource_tags == []
     
    -    @mock_ec2
    +    @mock_aws
         def test_ec2_compliant_default_sg(self):
             # Create EC2 Mocked Resources
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
             ec2_client.create_vpc(CidrBlock="10.0.0.0/16")
             default_sg = ec2_client.describe_security_groups(GroupNames=["default"])[
                 "SecurityGroups"
    @@ -168,7 +141,9 @@ def test_ec2_compliant_default_sg(self):
     
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -196,28 +171,30 @@ def test_ec2_compliant_default_sg(self):
                 for sg in result:
                     if sg.resource_id == default_sg_id:
                         assert sg.status == "PASS"
    -                    assert sg.region == AWS_REGION
    +                    assert sg.region == AWS_REGION_US_EAST_1
                         assert (
                             sg.status_extended
                             == f"Security group {default_sg_name} ({default_sg_id}) does not have MongoDB ports 27017 and 27018 open to the Internet."
                         )
                         assert (
                             sg.resource_arn
    -                        == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION}:{current_audit_info.audited_account}:security-group/{default_sg_id}"
    +                        == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION_US_EAST_1}:{current_audit_info.audited_account}:security-group/{default_sg_id}"
                         )
                         assert sg.resource_details == default_sg_name
                         assert sg.resource_tags == []
     
    -    @mock_ec2
    +    @mock_aws
         def test_ec2_default_sgs_ignoring(self):
             # Create EC2 Mocked Resources
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
             ec2_client.create_vpc(CidrBlock="10.0.0.0/16")
     
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    -        current_audit_info.ignore_unused_services = True
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1],
    +            ignore_unused_services=True,
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -241,14 +218,14 @@ def test_ec2_default_sgs_ignoring(self):
     
                 assert len(result) == 0
     
    -    @mock_ec2
    +    @mock_aws
         def test_ec2_default_sgs_ignoring_vpc_in_use(self):
             # Create EC2 Mocked Resources
    -        ec2 = resource("ec2", region_name=AWS_REGION)
    +        ec2 = resource("ec2", region_name=AWS_REGION_US_EAST_1)
             vpc = ec2.create_vpc(CidrBlock="10.0.0.0/16")
             subnet = ec2.create_subnet(VpcId=vpc.id, CidrBlock="10.0.0.0/18")
             ec2.create_network_interface(SubnetId=subnet.id)
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
             default_sg = ec2_client.describe_security_groups(GroupNames=["default"])[
                 "SecurityGroups"
             ][0]
    @@ -256,8 +233,10 @@ def test_ec2_default_sgs_ignoring_vpc_in_use(self):
             default_sg["GroupName"]
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    -        current_audit_info.ignore_unused_services = True
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1],
    +            ignore_unused_services=True,
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -281,4 +260,4 @@ def test_ec2_default_sgs_ignoring_vpc_in_use(self):
     
                 assert len(result) == 1
                 assert result[0].status == "PASS"
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_US_EAST_1
    diff --git a/tests/providers/aws/services/ec2/ec2_securitygroup_allow_ingress_from_internet_to_tcp_ftp_port_20_21/ec2_securitygroup_allow_ingress_from_internet_to_tcp_ftp_port_20_21_test.py b/tests/providers/aws/services/ec2/ec2_securitygroup_allow_ingress_from_internet_to_tcp_ftp_port_20_21/ec2_securitygroup_allow_ingress_from_internet_to_tcp_ftp_port_20_21_test.py
    index 2a199b8e843..4f683cb4e71 100644
    --- a/tests/providers/aws/services/ec2/ec2_securitygroup_allow_ingress_from_internet_to_tcp_ftp_port_20_21/ec2_securitygroup_allow_ingress_from_internet_to_tcp_ftp_port_20_21_test.py
    +++ b/tests/providers/aws/services/ec2/ec2_securitygroup_allow_ingress_from_internet_to_tcp_ftp_port_20_21/ec2_securitygroup_allow_ingress_from_internet_to_tcp_ftp_port_20_21_test.py
    @@ -1,57 +1,28 @@
     from unittest import mock
     
    -from boto3 import client, resource, session
    -from moto import mock_ec2
    +from boto3 import client, resource
    +from moto import mock_aws
     
    -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.common.models import Audit_Metadata
    -
    -AWS_REGION = "us-east-1"
    -AWS_ACCOUNT_NUMBER = "123456789012"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_REGION_EU_WEST_1,
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     
     class Test_ec2_securitygroup_allow_ingress_from_internet_to_tcp_ftp_port_20_21:
    -    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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=["us-east-1", "eu-west-1"],
    -            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
    -
    -    @mock_ec2
    +    @mock_aws
         def test_ec2_default_sgs(self):
             # Create EC2 Mocked Resources
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
             ec2_client.create_vpc(CidrBlock="10.0.0.0/16")
     
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -80,10 +51,10 @@ def test_ec2_default_sgs(self):
                 assert result[1].status == "PASS"
                 assert result[2].status == "PASS"
     
    -    @mock_ec2
    +    @mock_aws
         def test_ec2_non_compliant_default_sg(self):
             # Create EC2 Mocked Resources
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
             ec2_client.create_vpc(CidrBlock="10.0.0.0/16")
             default_sg = ec2_client.describe_security_groups(GroupNames=["default"])[
                 "SecurityGroups"
    @@ -104,7 +75,9 @@ def test_ec2_non_compliant_default_sg(self):
     
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -132,22 +105,22 @@ def test_ec2_non_compliant_default_sg(self):
                 for sg in result:
                     if sg.resource_id == default_sg_id:
                         assert sg.status == "FAIL"
    -                    assert sg.region == AWS_REGION
    +                    assert sg.region == AWS_REGION_US_EAST_1
                         assert (
                             sg.status_extended
                             == f"Security group {default_sg_name} ({default_sg_id}) has FTP ports 20 and 21 open to the Internet."
                         )
                         assert (
                             sg.resource_arn
    -                        == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION}:{current_audit_info.audited_account}:security-group/{default_sg_id}"
    +                        == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION_US_EAST_1}:{current_audit_info.audited_account}:security-group/{default_sg_id}"
                         )
                         assert sg.resource_details == default_sg_name
                         assert sg.resource_tags == []
     
    -    @mock_ec2
    +    @mock_aws
         def test_ec2_compliant_default_sg(self):
             # Create EC2 Mocked Resources
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
             ec2_client.create_vpc(CidrBlock="10.0.0.0/16")
             default_sg = ec2_client.describe_security_groups(GroupNames=["default"])[
                 "SecurityGroups"
    @@ -168,7 +141,9 @@ def test_ec2_compliant_default_sg(self):
     
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -196,28 +171,30 @@ def test_ec2_compliant_default_sg(self):
                 for sg in result:
                     if sg.resource_id == default_sg_id:
                         assert sg.status == "PASS"
    -                    assert sg.region == AWS_REGION
    +                    assert sg.region == AWS_REGION_US_EAST_1
                         assert (
                             sg.status_extended
                             == f"Security group {default_sg_name} ({default_sg_id}) does not have FTP ports 20 and 21 open to the Internet."
                         )
                         assert (
                             sg.resource_arn
    -                        == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION}:{current_audit_info.audited_account}:security-group/{default_sg_id}"
    +                        == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION_US_EAST_1}:{current_audit_info.audited_account}:security-group/{default_sg_id}"
                         )
                         assert sg.resource_details == default_sg_name
                         assert sg.resource_tags == []
     
    -    @mock_ec2
    +    @mock_aws
         def test_ec2_default_sgs_ignoring(self):
             # Create EC2 Mocked Resources
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
             ec2_client.create_vpc(CidrBlock="10.0.0.0/16")
     
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    -        current_audit_info.ignore_unused_services = True
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1],
    +            ignore_unused_services=True,
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -241,14 +218,14 @@ def test_ec2_default_sgs_ignoring(self):
     
                 assert len(result) == 0
     
    -    @mock_ec2
    +    @mock_aws
         def test_ec2_default_sgs_ignoring_vpc_in_use(self):
             # Create EC2 Mocked Resources
    -        ec2 = resource("ec2", region_name=AWS_REGION)
    +        ec2 = resource("ec2", region_name=AWS_REGION_US_EAST_1)
             vpc = ec2.create_vpc(CidrBlock="10.0.0.0/16")
             subnet = ec2.create_subnet(VpcId=vpc.id, CidrBlock="10.0.0.0/18")
             ec2.create_network_interface(SubnetId=subnet.id)
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
             default_sg = ec2_client.describe_security_groups(GroupNames=["default"])[
                 "SecurityGroups"
             ][0]
    @@ -256,8 +233,10 @@ def test_ec2_default_sgs_ignoring_vpc_in_use(self):
             default_sg["GroupName"]
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    -        current_audit_info.ignore_unused_services = True
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1],
    +            ignore_unused_services=True,
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -281,4 +260,4 @@ def test_ec2_default_sgs_ignoring_vpc_in_use(self):
     
                 assert len(result) == 1
                 assert result[0].status == "PASS"
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_US_EAST_1
    diff --git a/tests/providers/aws/services/ec2/ec2_securitygroup_allow_ingress_from_internet_to_tcp_port_22/ec2_securitygroup_allow_ingress_from_internet_to_tcp_port_22_test.py b/tests/providers/aws/services/ec2/ec2_securitygroup_allow_ingress_from_internet_to_tcp_port_22/ec2_securitygroup_allow_ingress_from_internet_to_tcp_port_22_test.py
    index 74ea0d6ff87..cbf0449282f 100644
    --- a/tests/providers/aws/services/ec2/ec2_securitygroup_allow_ingress_from_internet_to_tcp_port_22/ec2_securitygroup_allow_ingress_from_internet_to_tcp_port_22_test.py
    +++ b/tests/providers/aws/services/ec2/ec2_securitygroup_allow_ingress_from_internet_to_tcp_port_22/ec2_securitygroup_allow_ingress_from_internet_to_tcp_port_22_test.py
    @@ -1,58 +1,29 @@
     from re import search
     from unittest import mock
     
    -from boto3 import client, resource, session
    -from moto import mock_ec2
    +from boto3 import client, resource
    +from moto import mock_aws
     
    -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.common.models import Audit_Metadata
    -
    -AWS_REGION = "us-east-1"
    -AWS_ACCOUNT_NUMBER = "123456789012"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_REGION_EU_WEST_1,
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     
     class Test_ec2_securitygroup_allow_ingress_from_internet_to_tcp_port_22:
    -    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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=["us-east-1", "eu-west-1"],
    -            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
    -
    -    @mock_ec2
    +    @mock_aws
         def test_ec2_default_sgs(self):
             # Create EC2 Mocked Resources
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
             ec2_client.create_vpc(CidrBlock="10.0.0.0/16")
     
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -79,10 +50,10 @@ def test_ec2_default_sgs(self):
                 assert result[1].status == "PASS"
                 assert result[2].status == "PASS"
     
    -    @mock_ec2
    +    @mock_aws
         def test_ec2_non_compliant_default_sg(self):
             # Create EC2 Mocked Resources
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
             ec2_client.create_vpc(CidrBlock="10.0.0.0/16")
             default_sg = ec2_client.describe_security_groups(GroupNames=["default"])[
                 "SecurityGroups"
    @@ -103,7 +74,9 @@ def test_ec2_non_compliant_default_sg(self):
     
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -129,7 +102,7 @@ def test_ec2_non_compliant_default_sg(self):
                 for sg in result:
                     if sg.resource_id == default_sg_id:
                         assert sg.status == "FAIL"
    -                    assert sg.region == AWS_REGION
    +                    assert sg.region == AWS_REGION_US_EAST_1
                         assert (
                             sg.status_extended
                             == f"Security group {default_sg_name} ({default_sg_id}) has SSH port 22 open to the Internet."
    @@ -140,15 +113,15 @@ def test_ec2_non_compliant_default_sg(self):
                         )
                         assert (
                             sg.resource_arn
    -                        == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION}:{current_audit_info.audited_account}:security-group/{default_sg_id}"
    +                        == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION_US_EAST_1}:{current_audit_info.audited_account}:security-group/{default_sg_id}"
                         )
                         assert sg.resource_details == default_sg_name
                         assert sg.resource_tags == []
     
    -    @mock_ec2
    +    @mock_aws
         def test_ec2_compliant_default_sg(self):
             # Create EC2 Mocked Resources
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
             ec2_client.create_vpc(CidrBlock="10.0.0.0/16")
             default_sg = ec2_client.describe_security_groups(GroupNames=["default"])[
                 "SecurityGroups"
    @@ -169,7 +142,9 @@ def test_ec2_compliant_default_sg(self):
     
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -195,28 +170,30 @@ def test_ec2_compliant_default_sg(self):
                 for sg in result:
                     if sg.resource_id == default_sg_id:
                         assert sg.status == "PASS"
    -                    assert sg.region == AWS_REGION
    +                    assert sg.region == AWS_REGION_US_EAST_1
                         assert (
                             sg.status_extended
                             == f"Security group {default_sg_name} ({default_sg_id}) does not have SSH port 22 open to the Internet."
                         )
                         assert (
                             sg.resource_arn
    -                        == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION}:{current_audit_info.audited_account}:security-group/{default_sg_id}"
    +                        == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION_US_EAST_1}:{current_audit_info.audited_account}:security-group/{default_sg_id}"
                         )
                         assert sg.resource_details == default_sg_name
                         assert sg.resource_tags == []
     
    -    @mock_ec2
    +    @mock_aws
         def test_ec2_default_sgs_ignoring(self):
             # Create EC2 Mocked Resources
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
             ec2_client.create_vpc(CidrBlock="10.0.0.0/16")
     
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    -        current_audit_info.ignore_unused_services = True
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1],
    +            ignore_unused_services=True,
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -238,14 +215,14 @@ def test_ec2_default_sgs_ignoring(self):
     
                 assert len(result) == 0
     
    -    @mock_ec2
    +    @mock_aws
         def test_ec2_default_sgs_ignoring_vpc_in_use(self):
             # Create EC2 Mocked Resources
    -        ec2 = resource("ec2", region_name=AWS_REGION)
    +        ec2 = resource("ec2", region_name=AWS_REGION_US_EAST_1)
             vpc = ec2.create_vpc(CidrBlock="10.0.0.0/16")
             subnet = ec2.create_subnet(VpcId=vpc.id, CidrBlock="10.0.0.0/18")
             ec2.create_network_interface(SubnetId=subnet.id)
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
             default_sg = ec2_client.describe_security_groups(GroupNames=["default"])[
                 "SecurityGroups"
             ][0]
    @@ -253,8 +230,10 @@ def test_ec2_default_sgs_ignoring_vpc_in_use(self):
             default_sg["GroupName"]
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    -        current_audit_info.ignore_unused_services = True
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1],
    +            ignore_unused_services=True,
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -276,4 +255,4 @@ def test_ec2_default_sgs_ignoring_vpc_in_use(self):
     
                 assert len(result) == 1
                 assert result[0].status == "PASS"
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_US_EAST_1
    diff --git a/tests/providers/aws/services/ec2/ec2_securitygroup_allow_ingress_from_internet_to_tcp_port_3389/ec2_securitygroup_allow_ingress_from_internet_to_tcp_port_3389_test.py b/tests/providers/aws/services/ec2/ec2_securitygroup_allow_ingress_from_internet_to_tcp_port_3389/ec2_securitygroup_allow_ingress_from_internet_to_tcp_port_3389_test.py
    index 6240e45ab99..e60e76fbe22 100644
    --- a/tests/providers/aws/services/ec2/ec2_securitygroup_allow_ingress_from_internet_to_tcp_port_3389/ec2_securitygroup_allow_ingress_from_internet_to_tcp_port_3389_test.py
    +++ b/tests/providers/aws/services/ec2/ec2_securitygroup_allow_ingress_from_internet_to_tcp_port_3389/ec2_securitygroup_allow_ingress_from_internet_to_tcp_port_3389_test.py
    @@ -1,57 +1,28 @@
     from unittest import mock
     
    -from boto3 import client, resource, session
    -from moto import mock_ec2
    +from boto3 import client, resource
    +from moto import mock_aws
     
    -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.common.models import Audit_Metadata
    -
    -AWS_REGION = "us-east-1"
    -AWS_ACCOUNT_NUMBER = "123456789012"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_REGION_EU_WEST_1,
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     
     class Test_ec2_securitygroup_allow_ingress_from_internet_to_tcp_port_3389:
    -    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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=["us-east-1", "eu-west-1"],
    -            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
    -
    -    @mock_ec2
    +    @mock_aws
         def test_ec2_default_sgs(self):
             # Create EC2 Mocked Resources
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
             ec2_client.create_vpc(CidrBlock="10.0.0.0/16")
     
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -78,16 +49,18 @@ def test_ec2_default_sgs(self):
                 assert result[1].status == "PASS"
                 assert result[2].status == "PASS"
     
    -    @mock_ec2
    +    @mock_aws
         def test_ec2_default_sgs_ignoring(self):
             # Create EC2 Mocked Resources
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
             ec2_client.create_vpc(CidrBlock="10.0.0.0/16")
     
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    -        current_audit_info.ignore_unused_services = True
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1],
    +            ignore_unused_services=True,
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -109,14 +82,14 @@ def test_ec2_default_sgs_ignoring(self):
     
                 assert len(result) == 0
     
    -    @mock_ec2
    +    @mock_aws
         def test_ec2_default_sgs_ignoring_vpc_in_use(self):
             # Create EC2 Mocked Resources
    -        ec2 = resource("ec2", region_name=AWS_REGION)
    +        ec2 = resource("ec2", region_name=AWS_REGION_US_EAST_1)
             vpc = ec2.create_vpc(CidrBlock="10.0.0.0/16")
             subnet = ec2.create_subnet(VpcId=vpc.id, CidrBlock="10.0.0.0/18")
             ec2.create_network_interface(SubnetId=subnet.id)
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
             default_sg = ec2_client.describe_security_groups(GroupNames=["default"])[
                 "SecurityGroups"
             ][0]
    @@ -124,8 +97,10 @@ def test_ec2_default_sgs_ignoring_vpc_in_use(self):
             default_sg["GroupName"]
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    -        current_audit_info.ignore_unused_services = True
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1],
    +            ignore_unused_services=True,
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -147,12 +122,12 @@ def test_ec2_default_sgs_ignoring_vpc_in_use(self):
     
                 assert len(result) == 1
                 assert result[0].status == "PASS"
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_US_EAST_1
     
    -    @mock_ec2
    +    @mock_aws
         def test_ec2_non_compliant_default_sg(self):
             # Create EC2 Mocked Resources
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
             ec2_client.create_vpc(CidrBlock="10.0.0.0/16")
             default_sg = ec2_client.describe_security_groups(GroupNames=["default"])[
                 "SecurityGroups"
    @@ -173,7 +148,9 @@ def test_ec2_non_compliant_default_sg(self):
     
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -199,22 +176,22 @@ def test_ec2_non_compliant_default_sg(self):
                 for sg in result:
                     if sg.resource_id == default_sg_id:
                         assert sg.status == "FAIL"
    -                    assert sg.region == AWS_REGION
    +                    assert sg.region == AWS_REGION_US_EAST_1
                         assert (
                             sg.status_extended
                             == f"Security group {default_sg_name} ({default_sg_id}) has Microsoft RDP port 3389 open to the Internet."
                         )
                         assert (
                             sg.resource_arn
    -                        == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION}:{current_audit_info.audited_account}:security-group/{default_sg_id}"
    +                        == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION_US_EAST_1}:{current_audit_info.audited_account}:security-group/{default_sg_id}"
                         )
                         assert sg.resource_details == default_sg_name
                         assert sg.resource_tags == []
     
    -    @mock_ec2
    +    @mock_aws
         def test_ec2_compliant_default_sg(self):
             # Create EC2 Mocked Resources
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
             ec2_client.create_vpc(CidrBlock="10.0.0.0/16")
             default_sg = ec2_client.describe_security_groups(GroupNames=["default"])[
                 "SecurityGroups"
    @@ -235,7 +212,9 @@ def test_ec2_compliant_default_sg(self):
     
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -261,14 +240,14 @@ def test_ec2_compliant_default_sg(self):
                 for sg in result:
                     if sg.resource_id == default_sg_id:
                         assert sg.status == "PASS"
    -                    assert sg.region == AWS_REGION
    +                    assert sg.region == AWS_REGION_US_EAST_1
                         assert (
                             sg.status_extended
                             == f"Security group {default_sg_name} ({default_sg_id}) does not have Microsoft RDP port 3389 open to the Internet."
                         )
                         assert (
                             sg.resource_arn
    -                        == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION}:{current_audit_info.audited_account}:security-group/{default_sg_id}"
    +                        == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION_US_EAST_1}:{current_audit_info.audited_account}:security-group/{default_sg_id}"
                         )
                         assert sg.resource_details == default_sg_name
                         assert sg.resource_tags == []
    diff --git a/tests/providers/aws/services/ec2/ec2_securitygroup_allow_ingress_from_internet_to_tcp_port_cassandra_7199_9160_8888/ec2_securitygroup_allow_ingress_from_internet_to_tcp_port_cassandra_7199_9160_8888_test.py b/tests/providers/aws/services/ec2/ec2_securitygroup_allow_ingress_from_internet_to_tcp_port_cassandra_7199_9160_8888/ec2_securitygroup_allow_ingress_from_internet_to_tcp_port_cassandra_7199_9160_8888_test.py
    index a2a5c0f293f..a9edee7c18f 100644
    --- a/tests/providers/aws/services/ec2/ec2_securitygroup_allow_ingress_from_internet_to_tcp_port_cassandra_7199_9160_8888/ec2_securitygroup_allow_ingress_from_internet_to_tcp_port_cassandra_7199_9160_8888_test.py
    +++ b/tests/providers/aws/services/ec2/ec2_securitygroup_allow_ingress_from_internet_to_tcp_port_cassandra_7199_9160_8888/ec2_securitygroup_allow_ingress_from_internet_to_tcp_port_cassandra_7199_9160_8888_test.py
    @@ -1,57 +1,28 @@
     from unittest import mock
     
    -from boto3 import client, resource, session
    -from moto import mock_ec2
    +from boto3 import client, resource
    +from moto import mock_aws
     
    -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.common.models import Audit_Metadata
    -
    -AWS_REGION = "us-east-1"
    -AWS_ACCOUNT_NUMBER = "123456789012"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_REGION_EU_WEST_1,
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     
     class Test_ec2_securitygroup_allow_ingress_from_internet_to_tcp_port_cassandra_7199_9160_8888:
    -    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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=["us-east-1", "eu-west-1"],
    -            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
    -
    -    @mock_ec2
    +    @mock_aws
         def test_ec2_default_sgs(self):
             # Create EC2 Mocked Resources
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
             ec2_client.create_vpc(CidrBlock="10.0.0.0/16")
     
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -80,10 +51,10 @@ def test_ec2_default_sgs(self):
                 assert result[1].status == "PASS"
                 assert result[2].status == "PASS"
     
    -    @mock_ec2
    +    @mock_aws
         def test_ec2_non_compliant_default_sg(self):
             # Create EC2 Mocked Resources
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
             ec2_client.create_vpc(CidrBlock="10.0.0.0/16")
             default_sg = ec2_client.describe_security_groups(GroupNames=["default"])[
                 "SecurityGroups"
    @@ -104,7 +75,9 @@ def test_ec2_non_compliant_default_sg(self):
     
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -132,22 +105,22 @@ def test_ec2_non_compliant_default_sg(self):
                 for sg in result:
                     if sg.resource_id == default_sg_id:
                         assert sg.status == "FAIL"
    -                    assert sg.region == AWS_REGION
    +                    assert sg.region == AWS_REGION_US_EAST_1
                         assert (
                             sg.status_extended
                             == f"Security group {default_sg_name} ({default_sg_id}) has Casandra ports 7199, 8888 and 9160 open to the Internet."
                         )
                         assert (
                             sg.resource_arn
    -                        == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION}:{current_audit_info.audited_account}:security-group/{default_sg_id}"
    +                        == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION_US_EAST_1}:{current_audit_info.audited_account}:security-group/{default_sg_id}"
                         )
                         assert sg.resource_details == default_sg_name
                         assert sg.resource_tags == []
     
    -    @mock_ec2
    +    @mock_aws
         def test_ec2_compliant_default_sg(self):
             # Create EC2 Mocked Resources
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
             ec2_client.create_vpc(CidrBlock="10.0.0.0/16")
             default_sg = ec2_client.describe_security_groups(GroupNames=["default"])[
                 "SecurityGroups"
    @@ -168,7 +141,9 @@ def test_ec2_compliant_default_sg(self):
     
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -196,28 +171,30 @@ def test_ec2_compliant_default_sg(self):
                 for sg in result:
                     if sg.resource_id == default_sg_id:
                         assert sg.status == "PASS"
    -                    assert sg.region == AWS_REGION
    +                    assert sg.region == AWS_REGION_US_EAST_1
                         assert (
                             sg.status_extended
                             == f"Security group {default_sg_name} ({default_sg_id}) does not have Casandra ports 7199, 8888 and 9160 open to the Internet."
                         )
                         assert (
                             sg.resource_arn
    -                        == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION}:{current_audit_info.audited_account}:security-group/{default_sg_id}"
    +                        == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION_US_EAST_1}:{current_audit_info.audited_account}:security-group/{default_sg_id}"
                         )
                         assert sg.resource_details == default_sg_name
                         assert sg.resource_tags == []
     
    -    @mock_ec2
    +    @mock_aws
         def test_ec2_default_sgs_ignoring(self):
             # Create EC2 Mocked Resources
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
             ec2_client.create_vpc(CidrBlock="10.0.0.0/16")
     
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    -        current_audit_info.ignore_unused_services = True
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1],
    +            ignore_unused_services=True,
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -241,14 +218,14 @@ def test_ec2_default_sgs_ignoring(self):
     
                 assert len(result) == 0
     
    -    @mock_ec2
    +    @mock_aws
         def test_ec2_default_sgs_ignoring_vpc_in_use(self):
             # Create EC2 Mocked Resources
    -        ec2 = resource("ec2", region_name=AWS_REGION)
    +        ec2 = resource("ec2", region_name=AWS_REGION_US_EAST_1)
             vpc = ec2.create_vpc(CidrBlock="10.0.0.0/16")
             subnet = ec2.create_subnet(VpcId=vpc.id, CidrBlock="10.0.0.0/18")
             ec2.create_network_interface(SubnetId=subnet.id)
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
             default_sg = ec2_client.describe_security_groups(GroupNames=["default"])[
                 "SecurityGroups"
             ][0]
    @@ -256,8 +233,10 @@ def test_ec2_default_sgs_ignoring_vpc_in_use(self):
             default_sg["GroupName"]
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    -        current_audit_info.ignore_unused_services = True
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1],
    +            ignore_unused_services=True,
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -281,4 +260,4 @@ def test_ec2_default_sgs_ignoring_vpc_in_use(self):
     
                 assert len(result) == 1
                 assert result[0].status == "PASS"
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_US_EAST_1
    diff --git a/tests/providers/aws/services/ec2/ec2_securitygroup_allow_ingress_from_internet_to_tcp_port_elasticsearch_kibana_9200_9300_5601/ec2_securitygroup_allow_ingress_from_internet_to_tcp_port_elasticsearch_kibana_9200_9300_5601_test.py b/tests/providers/aws/services/ec2/ec2_securitygroup_allow_ingress_from_internet_to_tcp_port_elasticsearch_kibana_9200_9300_5601/ec2_securitygroup_allow_ingress_from_internet_to_tcp_port_elasticsearch_kibana_9200_9300_5601_test.py
    index e30e7e76d17..d085d919316 100644
    --- a/tests/providers/aws/services/ec2/ec2_securitygroup_allow_ingress_from_internet_to_tcp_port_elasticsearch_kibana_9200_9300_5601/ec2_securitygroup_allow_ingress_from_internet_to_tcp_port_elasticsearch_kibana_9200_9300_5601_test.py
    +++ b/tests/providers/aws/services/ec2/ec2_securitygroup_allow_ingress_from_internet_to_tcp_port_elasticsearch_kibana_9200_9300_5601/ec2_securitygroup_allow_ingress_from_internet_to_tcp_port_elasticsearch_kibana_9200_9300_5601_test.py
    @@ -1,57 +1,28 @@
     from unittest import mock
     
    -from boto3 import client, resource, session
    -from moto import mock_ec2
    +from boto3 import client, resource
    +from moto import mock_aws
     
    -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.common.models import Audit_Metadata
    -
    -AWS_REGION = "us-east-1"
    -AWS_ACCOUNT_NUMBER = "123456789012"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_REGION_EU_WEST_1,
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     
     class Test_ec2_securitygroup_allow_ingress_from_internet_to_tcp_port_elasticsearch_kibana_9200_9300_5601:
    -    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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=["us-east-1", "eu-west-1"],
    -            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
    -
    -    @mock_ec2
    +    @mock_aws
         def test_ec2_default_sgs(self):
             # Create EC2 Mocked Resources
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
             ec2_client.create_vpc(CidrBlock="10.0.0.0/16")
     
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -80,10 +51,10 @@ def test_ec2_default_sgs(self):
                 assert result[1].status == "PASS"
                 assert result[2].status == "PASS"
     
    -    @mock_ec2
    +    @mock_aws
         def test_ec2_non_compliant_default_sg(self):
             # Create EC2 Mocked Resources
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
             ec2_client.create_vpc(CidrBlock="10.0.0.0/16")
             default_sg = ec2_client.describe_security_groups(GroupNames=["default"])[
                 "SecurityGroups"
    @@ -104,7 +75,9 @@ def test_ec2_non_compliant_default_sg(self):
     
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -132,22 +105,22 @@ def test_ec2_non_compliant_default_sg(self):
                 for sg in result:
                     if sg.resource_id == default_sg_id:
                         assert sg.status == "FAIL"
    -                    assert sg.region == AWS_REGION
    +                    assert sg.region == AWS_REGION_US_EAST_1
                         assert (
                             sg.status_extended
                             == f"Security group {default_sg_name} ({default_sg_id}) has Elasticsearch/Kibana ports 9200, 9300 and 5601 open to the Internet."
                         )
                         assert (
                             sg.resource_arn
    -                        == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION}:{current_audit_info.audited_account}:security-group/{default_sg_id}"
    +                        == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION_US_EAST_1}:{current_audit_info.audited_account}:security-group/{default_sg_id}"
                         )
                         assert sg.resource_details == default_sg_name
                         assert sg.resource_tags == []
     
    -    @mock_ec2
    +    @mock_aws
         def test_ec2_compliant_default_sg(self):
             # Create EC2 Mocked Resources
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
             ec2_client.create_vpc(CidrBlock="10.0.0.0/16")
             default_sg = ec2_client.describe_security_groups(GroupNames=["default"])[
                 "SecurityGroups"
    @@ -168,7 +141,9 @@ def test_ec2_compliant_default_sg(self):
     
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -196,28 +171,30 @@ def test_ec2_compliant_default_sg(self):
                 for sg in result:
                     if sg.resource_id == default_sg_id:
                         assert sg.status == "PASS"
    -                    assert sg.region == AWS_REGION
    +                    assert sg.region == AWS_REGION_US_EAST_1
                         assert (
                             sg.status_extended
                             == f"Security group {default_sg_name} ({default_sg_id}) does not have Elasticsearch/Kibana ports 9200, 9300 and 5601 open to the Internet."
                         )
                         assert (
                             sg.resource_arn
    -                        == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION}:{current_audit_info.audited_account}:security-group/{default_sg_id}"
    +                        == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION_US_EAST_1}:{current_audit_info.audited_account}:security-group/{default_sg_id}"
                         )
                         assert sg.resource_details == default_sg_name
                         assert sg.resource_tags == []
     
    -    @mock_ec2
    +    @mock_aws
         def test_ec2_default_sgs_ignoring(self):
             # Create EC2 Mocked Resources
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
             ec2_client.create_vpc(CidrBlock="10.0.0.0/16")
     
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    -        current_audit_info.ignore_unused_services = True
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1],
    +            ignore_unused_services=True,
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -241,14 +218,14 @@ def test_ec2_default_sgs_ignoring(self):
     
                 assert len(result) == 0
     
    -    @mock_ec2
    +    @mock_aws
         def test_ec2_default_sgs_ignoring_vpc_in_use(self):
             # Create EC2 Mocked Resources
    -        ec2 = resource("ec2", region_name=AWS_REGION)
    +        ec2 = resource("ec2", region_name=AWS_REGION_US_EAST_1)
             vpc = ec2.create_vpc(CidrBlock="10.0.0.0/16")
             subnet = ec2.create_subnet(VpcId=vpc.id, CidrBlock="10.0.0.0/18")
             ec2.create_network_interface(SubnetId=subnet.id)
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
             default_sg = ec2_client.describe_security_groups(GroupNames=["default"])[
                 "SecurityGroups"
             ][0]
    @@ -256,8 +233,10 @@ def test_ec2_default_sgs_ignoring_vpc_in_use(self):
             default_sg["GroupName"]
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    -        current_audit_info.ignore_unused_services = True
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1],
    +            ignore_unused_services=True,
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -281,4 +260,4 @@ def test_ec2_default_sgs_ignoring_vpc_in_use(self):
     
                 assert len(result) == 1
                 assert result[0].status == "PASS"
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_US_EAST_1
    diff --git a/tests/providers/aws/services/ec2/ec2_securitygroup_allow_ingress_from_internet_to_tcp_port_kafka_9092/ec2_securitygroup_allow_ingress_from_internet_to_tcp_port_kafka_9092_test.py b/tests/providers/aws/services/ec2/ec2_securitygroup_allow_ingress_from_internet_to_tcp_port_kafka_9092/ec2_securitygroup_allow_ingress_from_internet_to_tcp_port_kafka_9092_test.py
    index 355f8e723c6..c0071218928 100644
    --- a/tests/providers/aws/services/ec2/ec2_securitygroup_allow_ingress_from_internet_to_tcp_port_kafka_9092/ec2_securitygroup_allow_ingress_from_internet_to_tcp_port_kafka_9092_test.py
    +++ b/tests/providers/aws/services/ec2/ec2_securitygroup_allow_ingress_from_internet_to_tcp_port_kafka_9092/ec2_securitygroup_allow_ingress_from_internet_to_tcp_port_kafka_9092_test.py
    @@ -1,57 +1,28 @@
     from unittest import mock
     
    -from boto3 import client, resource, session
    -from moto import mock_ec2
    +from boto3 import client, resource
    +from moto import mock_aws
     
    -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.common.models import Audit_Metadata
    -
    -AWS_REGION = "us-east-1"
    -AWS_ACCOUNT_NUMBER = "123456789012"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_REGION_EU_WEST_1,
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     
     class Test_ec2_securitygroup_allow_ingress_from_internet_to_tcp_port_kafka_9092:
    -    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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=["us-east-1", "eu-west-1"],
    -            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
    -
    -    @mock_ec2
    +    @mock_aws
         def test_ec2_default_sgs(self):
             # Create EC2 Mocked Resources
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
             ec2_client.create_vpc(CidrBlock="10.0.0.0/16")
     
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -80,10 +51,10 @@ def test_ec2_default_sgs(self):
                 assert result[1].status == "PASS"
                 assert result[2].status == "PASS"
     
    -    @mock_ec2
    +    @mock_aws
         def test_ec2_non_compliant_default_sg(self):
             # Create EC2 Mocked Resources
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
             ec2_client.create_vpc(CidrBlock="10.0.0.0/16")
             default_sg = ec2_client.describe_security_groups(GroupNames=["default"])[
                 "SecurityGroups"
    @@ -104,7 +75,9 @@ def test_ec2_non_compliant_default_sg(self):
     
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -132,22 +105,22 @@ def test_ec2_non_compliant_default_sg(self):
                 for sg in result:
                     if sg.resource_id == default_sg_id:
                         assert sg.status == "FAIL"
    -                    assert sg.region == AWS_REGION
    +                    assert sg.region == AWS_REGION_US_EAST_1
                         assert (
                             sg.status_extended
                             == f"Security group {default_sg_name} ({default_sg_id}) has Kafka port 9092 open to the Internet."
                         )
                         assert (
                             sg.resource_arn
    -                        == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION}:{current_audit_info.audited_account}:security-group/{default_sg_id}"
    +                        == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION_US_EAST_1}:{current_audit_info.audited_account}:security-group/{default_sg_id}"
                         )
                         assert sg.resource_details == default_sg_name
                         assert sg.resource_tags == []
     
    -    @mock_ec2
    +    @mock_aws
         def test_ec2_compliant_default_sg(self):
             # Create EC2 Mocked Resources
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
             ec2_client.create_vpc(CidrBlock="10.0.0.0/16")
             default_sg = ec2_client.describe_security_groups(GroupNames=["default"])[
                 "SecurityGroups"
    @@ -168,7 +141,9 @@ def test_ec2_compliant_default_sg(self):
     
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -196,28 +171,30 @@ def test_ec2_compliant_default_sg(self):
                 for sg in result:
                     if sg.resource_id == default_sg_id:
                         assert sg.status == "PASS"
    -                    assert sg.region == AWS_REGION
    +                    assert sg.region == AWS_REGION_US_EAST_1
                         assert (
                             sg.status_extended
                             == f"Security group {default_sg_name} ({default_sg_id}) does not have Kafka port 9092 open to the Internet."
                         )
                         assert (
                             sg.resource_arn
    -                        == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION}:{current_audit_info.audited_account}:security-group/{default_sg_id}"
    +                        == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION_US_EAST_1}:{current_audit_info.audited_account}:security-group/{default_sg_id}"
                         )
                         assert sg.resource_details == default_sg_name
                         assert sg.resource_tags == []
     
    -    @mock_ec2
    +    @mock_aws
         def test_ec2_default_sgs_ignoring(self):
             # Create EC2 Mocked Resources
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
             ec2_client.create_vpc(CidrBlock="10.0.0.0/16")
     
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    -        current_audit_info.ignore_unused_services = True
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1],
    +            ignore_unused_services=True,
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -241,14 +218,14 @@ def test_ec2_default_sgs_ignoring(self):
     
                 assert len(result) == 0
     
    -    @mock_ec2
    +    @mock_aws
         def test_ec2_default_sgs_ignoring_vpc_in_use(self):
             # Create EC2 Mocked Resources
    -        ec2 = resource("ec2", region_name=AWS_REGION)
    +        ec2 = resource("ec2", region_name=AWS_REGION_US_EAST_1)
             vpc = ec2.create_vpc(CidrBlock="10.0.0.0/16")
             subnet = ec2.create_subnet(VpcId=vpc.id, CidrBlock="10.0.0.0/18")
             ec2.create_network_interface(SubnetId=subnet.id)
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
             default_sg = ec2_client.describe_security_groups(GroupNames=["default"])[
                 "SecurityGroups"
             ][0]
    @@ -256,8 +233,10 @@ def test_ec2_default_sgs_ignoring_vpc_in_use(self):
             default_sg["GroupName"]
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    -        current_audit_info.ignore_unused_services = True
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1],
    +            ignore_unused_services=True,
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -281,4 +260,4 @@ def test_ec2_default_sgs_ignoring_vpc_in_use(self):
     
                 assert len(result) == 1
                 assert result[0].status == "PASS"
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_US_EAST_1
    diff --git a/tests/providers/aws/services/ec2/ec2_securitygroup_allow_ingress_from_internet_to_tcp_port_memcached_11211/ec2_securitygroup_allow_ingress_from_internet_to_tcp_port_memcached_11211_test.py b/tests/providers/aws/services/ec2/ec2_securitygroup_allow_ingress_from_internet_to_tcp_port_memcached_11211/ec2_securitygroup_allow_ingress_from_internet_to_tcp_port_memcached_11211_test.py
    index dbd12a22aac..d32fe6dcb1a 100644
    --- a/tests/providers/aws/services/ec2/ec2_securitygroup_allow_ingress_from_internet_to_tcp_port_memcached_11211/ec2_securitygroup_allow_ingress_from_internet_to_tcp_port_memcached_11211_test.py
    +++ b/tests/providers/aws/services/ec2/ec2_securitygroup_allow_ingress_from_internet_to_tcp_port_memcached_11211/ec2_securitygroup_allow_ingress_from_internet_to_tcp_port_memcached_11211_test.py
    @@ -1,57 +1,28 @@
     from unittest import mock
     
    -from boto3 import client, resource, session
    -from moto import mock_ec2
    +from boto3 import client, resource
    +from moto import mock_aws
     
    -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.common.models import Audit_Metadata
    -
    -AWS_REGION = "us-east-1"
    -AWS_ACCOUNT_NUMBER = "123456789012"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_REGION_EU_WEST_1,
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     
     class Test_ec2_securitygroup_allow_ingress_from_internet_to_tcp_port_memcached_11211:
    -    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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=["us-east-1", "eu-west-1"],
    -            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
    -
    -    @mock_ec2
    +    @mock_aws
         def test_ec2_default_sgs(self):
             # Create EC2 Mocked Resources
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
             ec2_client.create_vpc(CidrBlock="10.0.0.0/16")
     
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -80,10 +51,10 @@ def test_ec2_default_sgs(self):
                 assert result[1].status == "PASS"
                 assert result[2].status == "PASS"
     
    -    @mock_ec2
    +    @mock_aws
         def test_ec2_non_compliant_default_sg(self):
             # Create EC2 Mocked Resources
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
             ec2_client.create_vpc(CidrBlock="10.0.0.0/16")
             default_sg = ec2_client.describe_security_groups(GroupNames=["default"])[
                 "SecurityGroups"
    @@ -104,7 +75,9 @@ def test_ec2_non_compliant_default_sg(self):
     
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -132,22 +105,22 @@ def test_ec2_non_compliant_default_sg(self):
                 for sg in result:
                     if sg.resource_id == default_sg_id:
                         assert sg.status == "FAIL"
    -                    assert sg.region == AWS_REGION
    +                    assert sg.region == AWS_REGION_US_EAST_1
                         assert (
                             sg.status_extended
                             == f"Security group {default_sg_name} ({default_sg_id}) has Memcached port 11211 open to the Internet."
                         )
                         assert (
                             sg.resource_arn
    -                        == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION}:{current_audit_info.audited_account}:security-group/{default_sg_id}"
    +                        == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION_US_EAST_1}:{current_audit_info.audited_account}:security-group/{default_sg_id}"
                         )
                         assert sg.resource_details == default_sg_name
                         assert sg.resource_tags == []
     
    -    @mock_ec2
    +    @mock_aws
         def test_ec2_compliant_default_sg(self):
             # Create EC2 Mocked Resources
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
             ec2_client.create_vpc(CidrBlock="10.0.0.0/16")
             default_sg = ec2_client.describe_security_groups(GroupNames=["default"])[
                 "SecurityGroups"
    @@ -168,7 +141,9 @@ def test_ec2_compliant_default_sg(self):
     
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -196,28 +171,30 @@ def test_ec2_compliant_default_sg(self):
                 for sg in result:
                     if sg.resource_id == default_sg_id:
                         assert sg.status == "PASS"
    -                    assert sg.region == AWS_REGION
    +                    assert sg.region == AWS_REGION_US_EAST_1
                         assert (
                             sg.status_extended
                             == f"Security group {default_sg_name} ({default_sg_id}) does not have Memcached port 11211 open to the Internet."
                         )
                         assert (
                             sg.resource_arn
    -                        == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION}:{current_audit_info.audited_account}:security-group/{default_sg_id}"
    +                        == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION_US_EAST_1}:{current_audit_info.audited_account}:security-group/{default_sg_id}"
                         )
                         assert sg.resource_details == default_sg_name
                         assert sg.resource_tags == []
     
    -    @mock_ec2
    +    @mock_aws
         def test_ec2_default_sgs_ignoring(self):
             # Create EC2 Mocked Resources
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
             ec2_client.create_vpc(CidrBlock="10.0.0.0/16")
     
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    -        current_audit_info.ignore_unused_services = True
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1],
    +            ignore_unused_services=True,
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -241,14 +218,14 @@ def test_ec2_default_sgs_ignoring(self):
     
                 assert len(result) == 0
     
    -    @mock_ec2
    +    @mock_aws
         def test_ec2_default_sgs_ignoring_vpc_in_use(self):
             # Create EC2 Mocked Resources
    -        ec2 = resource("ec2", region_name=AWS_REGION)
    +        ec2 = resource("ec2", region_name=AWS_REGION_US_EAST_1)
             vpc = ec2.create_vpc(CidrBlock="10.0.0.0/16")
             subnet = ec2.create_subnet(VpcId=vpc.id, CidrBlock="10.0.0.0/18")
             ec2.create_network_interface(SubnetId=subnet.id)
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
             default_sg = ec2_client.describe_security_groups(GroupNames=["default"])[
                 "SecurityGroups"
             ][0]
    @@ -256,8 +233,10 @@ def test_ec2_default_sgs_ignoring_vpc_in_use(self):
             default_sg["GroupName"]
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    -        current_audit_info.ignore_unused_services = True
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1],
    +            ignore_unused_services=True,
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -281,4 +260,4 @@ def test_ec2_default_sgs_ignoring_vpc_in_use(self):
     
                 assert len(result) == 1
                 assert result[0].status == "PASS"
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_US_EAST_1
    diff --git a/tests/providers/aws/services/ec2/ec2_securitygroup_allow_ingress_from_internet_to_tcp_port_mysql_3306/ec2_securitygroup_allow_ingress_from_internet_to_tcp_port_mysql_3306_test.py b/tests/providers/aws/services/ec2/ec2_securitygroup_allow_ingress_from_internet_to_tcp_port_mysql_3306/ec2_securitygroup_allow_ingress_from_internet_to_tcp_port_mysql_3306_test.py
    index b2b0ea6529a..773b5da88b2 100644
    --- a/tests/providers/aws/services/ec2/ec2_securitygroup_allow_ingress_from_internet_to_tcp_port_mysql_3306/ec2_securitygroup_allow_ingress_from_internet_to_tcp_port_mysql_3306_test.py
    +++ b/tests/providers/aws/services/ec2/ec2_securitygroup_allow_ingress_from_internet_to_tcp_port_mysql_3306/ec2_securitygroup_allow_ingress_from_internet_to_tcp_port_mysql_3306_test.py
    @@ -1,57 +1,28 @@
     from unittest import mock
     
    -from boto3 import client, resource, session
    -from moto import mock_ec2
    +from boto3 import client, resource
    +from moto import mock_aws
     
    -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.common.models import Audit_Metadata
    -
    -AWS_REGION = "us-east-1"
    -AWS_ACCOUNT_NUMBER = "123456789012"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_REGION_EU_WEST_1,
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     
     class Test_ec2_securitygroup_allow_ingress_from_internet_to_tcp_port_mysql_3306:
    -    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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=["us-east-1", "eu-west-1"],
    -            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
    -
    -    @mock_ec2
    +    @mock_aws
         def test_ec2_default_sgs(self):
             # Create EC2 Mocked Resources
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
             ec2_client.create_vpc(CidrBlock="10.0.0.0/16")
     
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -80,10 +51,10 @@ def test_ec2_default_sgs(self):
                 assert result[1].status == "PASS"
                 assert result[2].status == "PASS"
     
    -    @mock_ec2
    +    @mock_aws
         def test_ec2_non_compliant_default_sg(self):
             # Create EC2 Mocked Resources
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
             ec2_client.create_vpc(CidrBlock="10.0.0.0/16")
             default_sg = ec2_client.describe_security_groups(GroupNames=["default"])[
                 "SecurityGroups"
    @@ -104,7 +75,9 @@ def test_ec2_non_compliant_default_sg(self):
     
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -132,22 +105,22 @@ def test_ec2_non_compliant_default_sg(self):
                 for sg in result:
                     if sg.resource_id == default_sg_id:
                         assert sg.status == "FAIL"
    -                    assert sg.region == AWS_REGION
    +                    assert sg.region == AWS_REGION_US_EAST_1
                         assert (
                             sg.status_extended
                             == f"Security group {default_sg_name} ({default_sg_id}) has MySQL port 3306 open to the Internet."
                         )
                         assert (
                             sg.resource_arn
    -                        == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION}:{current_audit_info.audited_account}:security-group/{default_sg_id}"
    +                        == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION_US_EAST_1}:{current_audit_info.audited_account}:security-group/{default_sg_id}"
                         )
                         assert sg.resource_details == default_sg_name
                         assert sg.resource_tags == []
     
    -    @mock_ec2
    +    @mock_aws
         def test_ec2_compliant_default_sg(self):
             # Create EC2 Mocked Resources
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
             ec2_client.create_vpc(CidrBlock="10.0.0.0/16")
             default_sg = ec2_client.describe_security_groups(GroupNames=["default"])[
                 "SecurityGroups"
    @@ -168,7 +141,9 @@ def test_ec2_compliant_default_sg(self):
     
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -196,28 +171,30 @@ def test_ec2_compliant_default_sg(self):
                 for sg in result:
                     if sg.resource_id == default_sg_id:
                         assert sg.status == "PASS"
    -                    assert sg.region == AWS_REGION
    +                    assert sg.region == AWS_REGION_US_EAST_1
                         assert (
                             sg.status_extended
                             == f"Security group {default_sg_name} ({default_sg_id}) does not have MySQL port 3306 open to the Internet."
                         )
                         assert (
                             sg.resource_arn
    -                        == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION}:{current_audit_info.audited_account}:security-group/{default_sg_id}"
    +                        == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION_US_EAST_1}:{current_audit_info.audited_account}:security-group/{default_sg_id}"
                         )
                         assert sg.resource_details == default_sg_name
                         assert sg.resource_tags == []
     
    -    @mock_ec2
    +    @mock_aws
         def test_ec2_default_sgs_ignoring(self):
             # Create EC2 Mocked Resources
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
             ec2_client.create_vpc(CidrBlock="10.0.0.0/16")
     
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    -        current_audit_info.ignore_unused_services = True
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1],
    +            ignore_unused_services=True,
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -241,14 +218,14 @@ def test_ec2_default_sgs_ignoring(self):
     
                 assert len(result) == 0
     
    -    @mock_ec2
    +    @mock_aws
         def test_ec2_default_sgs_ignoring_vpc_in_use(self):
             # Create EC2 Mocked Resources
    -        ec2 = resource("ec2", region_name=AWS_REGION)
    +        ec2 = resource("ec2", region_name=AWS_REGION_US_EAST_1)
             vpc = ec2.create_vpc(CidrBlock="10.0.0.0/16")
             subnet = ec2.create_subnet(VpcId=vpc.id, CidrBlock="10.0.0.0/18")
             ec2.create_network_interface(SubnetId=subnet.id)
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
             default_sg = ec2_client.describe_security_groups(GroupNames=["default"])[
                 "SecurityGroups"
             ][0]
    @@ -256,8 +233,10 @@ def test_ec2_default_sgs_ignoring_vpc_in_use(self):
             default_sg["GroupName"]
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    -        current_audit_info.ignore_unused_services = True
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1],
    +            ignore_unused_services=True,
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -281,4 +260,4 @@ def test_ec2_default_sgs_ignoring_vpc_in_use(self):
     
                 assert len(result) == 1
                 assert result[0].status == "PASS"
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_US_EAST_1
    diff --git a/tests/providers/aws/services/ec2/ec2_securitygroup_allow_ingress_from_internet_to_tcp_port_oracle_1521_2483/ec2_securitygroup_allow_ingress_from_internet_to_tcp_port_oracle_1521_2483_test.py b/tests/providers/aws/services/ec2/ec2_securitygroup_allow_ingress_from_internet_to_tcp_port_oracle_1521_2483/ec2_securitygroup_allow_ingress_from_internet_to_tcp_port_oracle_1521_2483_test.py
    index 5872d3dda0f..50310554832 100644
    --- a/tests/providers/aws/services/ec2/ec2_securitygroup_allow_ingress_from_internet_to_tcp_port_oracle_1521_2483/ec2_securitygroup_allow_ingress_from_internet_to_tcp_port_oracle_1521_2483_test.py
    +++ b/tests/providers/aws/services/ec2/ec2_securitygroup_allow_ingress_from_internet_to_tcp_port_oracle_1521_2483/ec2_securitygroup_allow_ingress_from_internet_to_tcp_port_oracle_1521_2483_test.py
    @@ -1,57 +1,28 @@
     from unittest import mock
     
    -from boto3 import client, resource, session
    -from moto import mock_ec2
    +from boto3 import client, resource
    +from moto import mock_aws
     
    -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.common.models import Audit_Metadata
    -
    -AWS_REGION = "us-east-1"
    -AWS_ACCOUNT_NUMBER = "123456789012"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_REGION_EU_WEST_1,
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     
     class Test_ec2_securitygroup_allow_ingress_from_internet_to_tcp_port_oracle_1521_2483:
    -    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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=["us-east-1", "eu-west-1"],
    -            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
    -
    -    @mock_ec2
    +    @mock_aws
         def test_ec2_default_sgs(self):
             # Create EC2 Mocked Resources
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
             ec2_client.create_vpc(CidrBlock="10.0.0.0/16")
     
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -80,10 +51,10 @@ def test_ec2_default_sgs(self):
                 assert result[1].status == "PASS"
                 assert result[2].status == "PASS"
     
    -    @mock_ec2
    +    @mock_aws
         def test_ec2_non_compliant_default_sg(self):
             # Create EC2 Mocked Resources
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
             ec2_client.create_vpc(CidrBlock="10.0.0.0/16")
             default_sg = ec2_client.describe_security_groups(GroupNames=["default"])[
                 "SecurityGroups"
    @@ -104,7 +75,9 @@ def test_ec2_non_compliant_default_sg(self):
     
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -132,22 +105,22 @@ def test_ec2_non_compliant_default_sg(self):
                 for sg in result:
                     if sg.resource_id == default_sg_id:
                         assert sg.status == "FAIL"
    -                    assert sg.region == AWS_REGION
    +                    assert sg.region == AWS_REGION_US_EAST_1
                         assert (
                             sg.status_extended
                             == f"Security group {default_sg_name} ({default_sg_id}) has Oracle ports 1521 and 2483 open to the Internet."
                         )
                         assert (
                             sg.resource_arn
    -                        == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION}:{current_audit_info.audited_account}:security-group/{default_sg_id}"
    +                        == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION_US_EAST_1}:{current_audit_info.audited_account}:security-group/{default_sg_id}"
                         )
                         assert sg.resource_details == default_sg_name
                         assert sg.resource_tags == []
     
    -    @mock_ec2
    +    @mock_aws
         def test_ec2_compliant_default_sg(self):
             # Create EC2 Mocked Resources
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
             ec2_client.create_vpc(CidrBlock="10.0.0.0/16")
             default_sg = ec2_client.describe_security_groups(GroupNames=["default"])[
                 "SecurityGroups"
    @@ -168,7 +141,9 @@ def test_ec2_compliant_default_sg(self):
     
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -196,28 +171,30 @@ def test_ec2_compliant_default_sg(self):
                 for sg in result:
                     if sg.resource_id == default_sg_id:
                         assert sg.status == "PASS"
    -                    assert sg.region == AWS_REGION
    +                    assert sg.region == AWS_REGION_US_EAST_1
                         assert (
                             sg.status_extended
                             == f"Security group {default_sg_name} ({default_sg_id}) does not have Oracle ports 1521 and 2483 open to the Internet."
                         )
                         assert (
                             sg.resource_arn
    -                        == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION}:{current_audit_info.audited_account}:security-group/{default_sg_id}"
    +                        == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION_US_EAST_1}:{current_audit_info.audited_account}:security-group/{default_sg_id}"
                         )
                         assert sg.resource_details == default_sg_name
                         assert sg.resource_tags == []
     
    -    @mock_ec2
    +    @mock_aws
         def test_ec2_default_sgs_ignoring(self):
             # Create EC2 Mocked Resources
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
             ec2_client.create_vpc(CidrBlock="10.0.0.0/16")
     
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    -        current_audit_info.ignore_unused_services = True
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1],
    +            ignore_unused_services=True,
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -241,14 +218,14 @@ def test_ec2_default_sgs_ignoring(self):
     
                 assert len(result) == 0
     
    -    @mock_ec2
    +    @mock_aws
         def test_ec2_default_sgs_ignoring_vpc_in_use(self):
             # Create EC2 Mocked Resources
    -        ec2 = resource("ec2", region_name=AWS_REGION)
    +        ec2 = resource("ec2", region_name=AWS_REGION_US_EAST_1)
             vpc = ec2.create_vpc(CidrBlock="10.0.0.0/16")
             subnet = ec2.create_subnet(VpcId=vpc.id, CidrBlock="10.0.0.0/18")
             ec2.create_network_interface(SubnetId=subnet.id)
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
             default_sg = ec2_client.describe_security_groups(GroupNames=["default"])[
                 "SecurityGroups"
             ][0]
    @@ -256,8 +233,10 @@ def test_ec2_default_sgs_ignoring_vpc_in_use(self):
             default_sg["GroupName"]
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    -        current_audit_info.ignore_unused_services = True
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1],
    +            ignore_unused_services=True,
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -281,4 +260,4 @@ def test_ec2_default_sgs_ignoring_vpc_in_use(self):
     
                 assert len(result) == 1
                 assert result[0].status == "PASS"
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_US_EAST_1
    diff --git a/tests/providers/aws/services/ec2/ec2_securitygroup_allow_ingress_from_internet_to_tcp_port_postgres_5432/ec2_securitygroup_allow_ingress_from_internet_to_tcp_port_postgres_5432_test.py b/tests/providers/aws/services/ec2/ec2_securitygroup_allow_ingress_from_internet_to_tcp_port_postgres_5432/ec2_securitygroup_allow_ingress_from_internet_to_tcp_port_postgres_5432_test.py
    index 0cf892954ee..53f185115ed 100644
    --- a/tests/providers/aws/services/ec2/ec2_securitygroup_allow_ingress_from_internet_to_tcp_port_postgres_5432/ec2_securitygroup_allow_ingress_from_internet_to_tcp_port_postgres_5432_test.py
    +++ b/tests/providers/aws/services/ec2/ec2_securitygroup_allow_ingress_from_internet_to_tcp_port_postgres_5432/ec2_securitygroup_allow_ingress_from_internet_to_tcp_port_postgres_5432_test.py
    @@ -1,57 +1,28 @@
     from unittest import mock
     
    -from boto3 import client, resource, session
    -from moto import mock_ec2
    +from boto3 import client, resource
    +from moto import mock_aws
     
    -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.common.models import Audit_Metadata
    -
    -AWS_REGION = "us-east-1"
    -AWS_ACCOUNT_NUMBER = "123456789012"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_REGION_EU_WEST_1,
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     
     class Test_ec2_securitygroup_allow_ingress_from_internet_to_tcp_port_postgres_5432:
    -    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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=["us-east-1", "eu-west-1"],
    -            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
    -
    -    @mock_ec2
    +    @mock_aws
         def test_ec2_default_sgs(self):
             # Create EC2 Mocked Resources
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
             ec2_client.create_vpc(CidrBlock="10.0.0.0/16")
     
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -80,10 +51,10 @@ def test_ec2_default_sgs(self):
                 assert result[1].status == "PASS"
                 assert result[2].status == "PASS"
     
    -    @mock_ec2
    +    @mock_aws
         def test_ec2_non_compliant_default_sg(self):
             # Create EC2 Mocked Resources
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
             ec2_client.create_vpc(CidrBlock="10.0.0.0/16")
             default_sg = ec2_client.describe_security_groups(GroupNames=["default"])[
                 "SecurityGroups"
    @@ -104,7 +75,9 @@ def test_ec2_non_compliant_default_sg(self):
     
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -132,22 +105,22 @@ def test_ec2_non_compliant_default_sg(self):
                 for sg in result:
                     if sg.resource_id == default_sg_id:
                         assert sg.status == "FAIL"
    -                    assert sg.region == AWS_REGION
    +                    assert sg.region == AWS_REGION_US_EAST_1
                         assert (
                             sg.status_extended
                             == f"Security group {default_sg_name} ({default_sg_id}) has Postgres port 5432 open to the Internet."
                         )
                         assert (
                             sg.resource_arn
    -                        == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION}:{current_audit_info.audited_account}:security-group/{default_sg_id}"
    +                        == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION_US_EAST_1}:{current_audit_info.audited_account}:security-group/{default_sg_id}"
                         )
                         assert sg.resource_details == default_sg_name
                         assert sg.resource_tags == []
     
    -    @mock_ec2
    +    @mock_aws
         def test_ec2_compliant_default_sg(self):
             # Create EC2 Mocked Resources
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
             ec2_client.create_vpc(CidrBlock="10.0.0.0/16")
             default_sg = ec2_client.describe_security_groups(GroupNames=["default"])[
                 "SecurityGroups"
    @@ -168,7 +141,9 @@ def test_ec2_compliant_default_sg(self):
     
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -196,22 +171,22 @@ def test_ec2_compliant_default_sg(self):
                 for sg in result:
                     if sg.resource_id == default_sg_id:
                         assert sg.status == "PASS"
    -                    assert sg.region == AWS_REGION
    +                    assert sg.region == AWS_REGION_US_EAST_1
                         assert (
                             sg.status_extended
                             == f"Security group {default_sg_name} ({default_sg_id}) does not have Postgres port 5432 open to the Internet."
                         )
                         assert (
                             sg.resource_arn
    -                        == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION}:{current_audit_info.audited_account}:security-group/{default_sg_id}"
    +                        == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION_US_EAST_1}:{current_audit_info.audited_account}:security-group/{default_sg_id}"
                         )
                         assert sg.resource_details == default_sg_name
                         assert sg.resource_tags == []
     
    -    @mock_ec2
    +    @mock_aws
         def test_ec2_compliant_default_sg_ipv4_and_ipv6(self):
             # Create EC2 Mocked Resources
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
             ec2_client.create_vpc(CidrBlock="10.0.0.0/16")
             default_sg = ec2_client.describe_security_groups(GroupNames=["default"])[
                 "SecurityGroups"
    @@ -237,7 +212,9 @@ def test_ec2_compliant_default_sg_ipv4_and_ipv6(self):
     
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -265,28 +242,30 @@ def test_ec2_compliant_default_sg_ipv4_and_ipv6(self):
                 for sg in result:
                     if sg.resource_id == default_sg_id:
                         assert sg.status == "PASS"
    -                    assert sg.region == AWS_REGION
    +                    assert sg.region == AWS_REGION_US_EAST_1
                         assert (
                             sg.status_extended
                             == f"Security group {default_sg_name} ({default_sg_id}) does not have Postgres port 5432 open to the Internet."
                         )
                         assert (
                             sg.resource_arn
    -                        == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION}:{current_audit_info.audited_account}:security-group/{default_sg_id}"
    +                        == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION_US_EAST_1}:{current_audit_info.audited_account}:security-group/{default_sg_id}"
                         )
                         assert sg.resource_details == default_sg_name
                         assert sg.resource_tags == []
     
    -    @mock_ec2
    +    @mock_aws
         def test_ec2_default_sgs_ignoring(self):
             # Create EC2 Mocked Resources
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
             ec2_client.create_vpc(CidrBlock="10.0.0.0/16")
     
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    -        current_audit_info.ignore_unused_services = True
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1],
    +            ignore_unused_services=True,
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -310,14 +289,14 @@ def test_ec2_default_sgs_ignoring(self):
     
                 assert len(result) == 0
     
    -    @mock_ec2
    +    @mock_aws
         def test_ec2_default_sgs_ignoring_vpc_in_use(self):
             # Create EC2 Mocked Resources
    -        ec2 = resource("ec2", region_name=AWS_REGION)
    +        ec2 = resource("ec2", region_name=AWS_REGION_US_EAST_1)
             vpc = ec2.create_vpc(CidrBlock="10.0.0.0/16")
             subnet = ec2.create_subnet(VpcId=vpc.id, CidrBlock="10.0.0.0/18")
             ec2.create_network_interface(SubnetId=subnet.id)
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
             default_sg = ec2_client.describe_security_groups(GroupNames=["default"])[
                 "SecurityGroups"
             ][0]
    @@ -325,8 +304,10 @@ def test_ec2_default_sgs_ignoring_vpc_in_use(self):
             default_sg["GroupName"]
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    -        current_audit_info.ignore_unused_services = True
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1],
    +            ignore_unused_services=True,
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -350,4 +331,4 @@ def test_ec2_default_sgs_ignoring_vpc_in_use(self):
     
                 assert len(result) == 1
                 assert result[0].status == "PASS"
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_US_EAST_1
    diff --git a/tests/providers/aws/services/ec2/ec2_securitygroup_allow_ingress_from_internet_to_tcp_port_redis_6379/ec2_securitygroup_allow_ingress_from_internet_to_tcp_port_redis_6379_test.py b/tests/providers/aws/services/ec2/ec2_securitygroup_allow_ingress_from_internet_to_tcp_port_redis_6379/ec2_securitygroup_allow_ingress_from_internet_to_tcp_port_redis_6379_test.py
    index aa6c63e31b2..32e8ae91e66 100644
    --- a/tests/providers/aws/services/ec2/ec2_securitygroup_allow_ingress_from_internet_to_tcp_port_redis_6379/ec2_securitygroup_allow_ingress_from_internet_to_tcp_port_redis_6379_test.py
    +++ b/tests/providers/aws/services/ec2/ec2_securitygroup_allow_ingress_from_internet_to_tcp_port_redis_6379/ec2_securitygroup_allow_ingress_from_internet_to_tcp_port_redis_6379_test.py
    @@ -1,7 +1,7 @@
     from unittest import mock
     
     from boto3 import client, resource
    -from moto import mock_ec2
    +from moto import mock_aws
     
     from prowler.providers.aws.services.vpc.vpc_service import VPC
     from tests.providers.aws.audit_info_utils import (
    @@ -12,7 +12,7 @@
     
     
     class Test_ec2_securitygroup_allow_ingress_from_internet_to_tcp_port_redis_6379:
    -    @mock_ec2
    +    @mock_aws
         def test_ec2_default_sgs(self):
             # Create EC2 Mocked Resources
             ec2_client_us_east_1 = client("ec2", region_name=AWS_REGION_US_EAST_1)
    @@ -28,7 +28,10 @@ def test_ec2_default_sgs(self):
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
             current_audit_info = set_mocked_aws_audit_info(
    -            audited_regions=[AWS_REGION_US_EAST_1, AWS_REGION_EU_WEST_1]
    +            audited_regions=[
    +                AWS_REGION_US_EAST_1,
    +                AWS_REGION_EU_WEST_1,
    +            ]
             )
     
             with mock.patch(
    @@ -89,7 +92,7 @@ def test_ec2_default_sgs(self):
                             assert res.resource_details == sg["GroupName"]
                             assert res.resource_tags == []
     
    -    @mock_ec2
    +    @mock_aws
         def test_ec2_non_compliant_default_sg(self):
             # Create EC2 Mocked Resources
             ec2_client_us_east_1 = client("ec2", region_name=AWS_REGION_US_EAST_1)
    @@ -114,7 +117,10 @@ def test_ec2_non_compliant_default_sg(self):
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
             current_audit_info = set_mocked_aws_audit_info(
    -            audited_regions=[AWS_REGION_US_EAST_1, AWS_REGION_EU_WEST_1]
    +            audited_regions=[
    +                AWS_REGION_US_EAST_1,
    +                AWS_REGION_EU_WEST_1,
    +            ]
             )
     
             with mock.patch(
    @@ -155,7 +161,7 @@ def test_ec2_non_compliant_default_sg(self):
                         assert sg.resource_details == default_sg_name
                         assert sg.resource_tags == []
     
    -    @mock_ec2
    +    @mock_aws
         def test_ec2_compliant_default_sg(self):
             # Create EC2 Mocked Resources
             ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
    @@ -180,7 +186,10 @@ def test_ec2_compliant_default_sg(self):
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
             current_audit_info = set_mocked_aws_audit_info(
    -            audited_regions=[AWS_REGION_US_EAST_1, AWS_REGION_EU_WEST_1]
    +            audited_regions=[
    +                AWS_REGION_US_EAST_1,
    +                AWS_REGION_EU_WEST_1,
    +            ]
             )
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -220,7 +229,7 @@ def test_ec2_compliant_default_sg(self):
                         assert sg.resource_details == default_sg_name
                         assert sg.resource_tags == []
     
    -    @mock_ec2
    +    @mock_aws
         def test_ec2_default_sgs_ignoring(self):
             # Create EC2 Mocked Resources
             ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
    @@ -229,7 +238,10 @@ def test_ec2_default_sgs_ignoring(self):
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
             current_audit_info = set_mocked_aws_audit_info(
    -            audited_regions=[AWS_REGION_US_EAST_1, AWS_REGION_EU_WEST_1]
    +            audited_regions=[
    +                AWS_REGION_US_EAST_1,
    +                AWS_REGION_EU_WEST_1,
    +            ]
             )
             current_audit_info.ignore_unused_services = True
     
    @@ -255,7 +267,7 @@ def test_ec2_default_sgs_ignoring(self):
     
                 assert len(result) == 0
     
    -    @mock_ec2
    +    @mock_aws
         def test_ec2_default_sgs_ignoring_vpc_in_use(self):
             # Create EC2 Mocked Resources
             ec2 = resource("ec2", region_name=AWS_REGION_US_EAST_1)
    diff --git a/tests/providers/aws/services/ec2/ec2_securitygroup_allow_ingress_from_internet_to_tcp_port_sql_server_1433_1434/ec2_securitygroup_allow_ingress_from_internet_to_tcp_port_sql_server_1433_1434_test.py b/tests/providers/aws/services/ec2/ec2_securitygroup_allow_ingress_from_internet_to_tcp_port_sql_server_1433_1434/ec2_securitygroup_allow_ingress_from_internet_to_tcp_port_sql_server_1433_1434_test.py
    index 9cfc14959f9..0f348420d95 100644
    --- a/tests/providers/aws/services/ec2/ec2_securitygroup_allow_ingress_from_internet_to_tcp_port_sql_server_1433_1434/ec2_securitygroup_allow_ingress_from_internet_to_tcp_port_sql_server_1433_1434_test.py
    +++ b/tests/providers/aws/services/ec2/ec2_securitygroup_allow_ingress_from_internet_to_tcp_port_sql_server_1433_1434/ec2_securitygroup_allow_ingress_from_internet_to_tcp_port_sql_server_1433_1434_test.py
    @@ -1,57 +1,28 @@
     from unittest import mock
     
    -from boto3 import client, resource, session
    -from moto import mock_ec2
    +from boto3 import client, resource
    +from moto import mock_aws
     
    -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.common.models import Audit_Metadata
    -
    -AWS_REGION = "us-east-1"
    -AWS_ACCOUNT_NUMBER = "123456789012"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_REGION_EU_WEST_1,
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     
     class Test_ec2_securitygroup_allow_ingress_from_internet_to_tcp_port_sql_server_1433_1434:
    -    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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=["us-east-1", "eu-west-1"],
    -            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
    -
    -    @mock_ec2
    +    @mock_aws
         def test_ec2_default_sgs(self):
             # Create EC2 Mocked Resources
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
             ec2_client.create_vpc(CidrBlock="10.0.0.0/16")
     
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -80,10 +51,10 @@ def test_ec2_default_sgs(self):
                 assert result[1].status == "PASS"
                 assert result[2].status == "PASS"
     
    -    @mock_ec2
    +    @mock_aws
         def test_ec2_non_compliant_default_sg(self):
             # Create EC2 Mocked Resources
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
             ec2_client.create_vpc(CidrBlock="10.0.0.0/16")
             default_sg = ec2_client.describe_security_groups(GroupNames=["default"])[
                 "SecurityGroups"
    @@ -104,7 +75,9 @@ def test_ec2_non_compliant_default_sg(self):
     
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -132,22 +105,22 @@ def test_ec2_non_compliant_default_sg(self):
                 for sg in result:
                     if sg.resource_id == default_sg_id:
                         assert sg.status == "FAIL"
    -                    assert sg.region == AWS_REGION
    +                    assert sg.region == AWS_REGION_US_EAST_1
                         assert (
                             sg.status_extended
                             == f"Security group {default_sg_name} ({default_sg_id}) has Microsoft SQL Server ports 1433 and 1434 open to the Internet."
                         )
                         assert (
                             sg.resource_arn
    -                        == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION}:{current_audit_info.audited_account}:security-group/{default_sg_id}"
    +                        == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION_US_EAST_1}:{current_audit_info.audited_account}:security-group/{default_sg_id}"
                         )
                         assert sg.resource_details == default_sg_name
                         assert sg.resource_tags == []
     
    -    @mock_ec2
    +    @mock_aws
         def test_ec2_compliant_default_sg(self):
             # Create EC2 Mocked Resources
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
             ec2_client.create_vpc(CidrBlock="10.0.0.0/16")
             default_sg = ec2_client.describe_security_groups(GroupNames=["default"])[
                 "SecurityGroups"
    @@ -168,7 +141,9 @@ def test_ec2_compliant_default_sg(self):
     
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -196,28 +171,30 @@ def test_ec2_compliant_default_sg(self):
                 for sg in result:
                     if sg.resource_id == default_sg_id:
                         assert sg.status == "PASS"
    -                    assert sg.region == AWS_REGION
    +                    assert sg.region == AWS_REGION_US_EAST_1
                         assert (
                             sg.status_extended
                             == f"Security group {default_sg_name} ({default_sg_id}) does not have Microsoft SQL Server ports 1433 and 1434 open to the Internet."
                         )
                         assert (
                             sg.resource_arn
    -                        == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION}:{current_audit_info.audited_account}:security-group/{default_sg_id}"
    +                        == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION_US_EAST_1}:{current_audit_info.audited_account}:security-group/{default_sg_id}"
                         )
                         assert sg.resource_details == default_sg_name
                         assert sg.resource_tags == []
     
    -    @mock_ec2
    +    @mock_aws
         def test_ec2_default_sgs_ignoring(self):
             # Create EC2 Mocked Resources
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
             ec2_client.create_vpc(CidrBlock="10.0.0.0/16")
     
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    -        current_audit_info.ignore_unused_services = True
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1],
    +            ignore_unused_services=True,
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -241,14 +218,14 @@ def test_ec2_default_sgs_ignoring(self):
     
                 assert len(result) == 0
     
    -    @mock_ec2
    +    @mock_aws
         def test_ec2_default_sgs_ignoring_vpc_in_use(self):
             # Create EC2 Mocked Resources
    -        ec2 = resource("ec2", region_name=AWS_REGION)
    +        ec2 = resource("ec2", region_name=AWS_REGION_US_EAST_1)
             vpc = ec2.create_vpc(CidrBlock="10.0.0.0/16")
             subnet = ec2.create_subnet(VpcId=vpc.id, CidrBlock="10.0.0.0/18")
             ec2.create_network_interface(SubnetId=subnet.id)
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
             default_sg = ec2_client.describe_security_groups(GroupNames=["default"])[
                 "SecurityGroups"
             ][0]
    @@ -256,8 +233,10 @@ def test_ec2_default_sgs_ignoring_vpc_in_use(self):
             default_sg["GroupName"]
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    -        current_audit_info.ignore_unused_services = True
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1],
    +            ignore_unused_services=True,
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -281,4 +260,4 @@ def test_ec2_default_sgs_ignoring_vpc_in_use(self):
     
                 assert len(result) == 1
                 assert result[0].status == "PASS"
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_US_EAST_1
    diff --git a/tests/providers/aws/services/ec2/ec2_securitygroup_allow_ingress_from_internet_to_tcp_port_telnet_23/ec2_securitygroup_allow_ingress_from_internet_to_tcp_port_telnet_23_test.py b/tests/providers/aws/services/ec2/ec2_securitygroup_allow_ingress_from_internet_to_tcp_port_telnet_23/ec2_securitygroup_allow_ingress_from_internet_to_tcp_port_telnet_23_test.py
    index d7094ce0653..fc4e6c06343 100644
    --- a/tests/providers/aws/services/ec2/ec2_securitygroup_allow_ingress_from_internet_to_tcp_port_telnet_23/ec2_securitygroup_allow_ingress_from_internet_to_tcp_port_telnet_23_test.py
    +++ b/tests/providers/aws/services/ec2/ec2_securitygroup_allow_ingress_from_internet_to_tcp_port_telnet_23/ec2_securitygroup_allow_ingress_from_internet_to_tcp_port_telnet_23_test.py
    @@ -1,57 +1,28 @@
     from unittest import mock
     
    -from boto3 import client, resource, session
    -from moto import mock_ec2
    +from boto3 import client, resource
    +from moto import mock_aws
     
    -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.common.models import Audit_Metadata
    -
    -AWS_REGION = "us-east-1"
    -AWS_ACCOUNT_NUMBER = "123456789012"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_REGION_EU_WEST_1,
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     
     class Test_ec2_securitygroup_allow_ingress_from_internet_to_tcp_port_telnet_23:
    -    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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=["us-east-1", "eu-west-1"],
    -            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
    -
    -    @mock_ec2
    +    @mock_aws
         def test_ec2_default_sgs(self):
             # Create EC2 Mocked Resources
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
             ec2_client.create_vpc(CidrBlock="10.0.0.0/16")
     
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -80,10 +51,10 @@ def test_ec2_default_sgs(self):
                 assert result[1].status == "PASS"
                 assert result[2].status == "PASS"
     
    -    @mock_ec2
    +    @mock_aws
         def test_ec2_non_compliant_default_sg(self):
             # Create EC2 Mocked Resources
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
             ec2_client.create_vpc(CidrBlock="10.0.0.0/16")
             default_sg = ec2_client.describe_security_groups(GroupNames=["default"])[
                 "SecurityGroups"
    @@ -104,7 +75,9 @@ def test_ec2_non_compliant_default_sg(self):
     
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -132,22 +105,22 @@ def test_ec2_non_compliant_default_sg(self):
                 for sg in result:
                     if sg.resource_id == default_sg_id:
                         assert sg.status == "FAIL"
    -                    assert sg.region == AWS_REGION
    +                    assert sg.region == AWS_REGION_US_EAST_1
                         assert (
                             sg.status_extended
                             == f"Security group {default_sg_name} ({default_sg_id}) has Telnet port 23 open to the Internet."
                         )
                         assert (
                             sg.resource_arn
    -                        == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION}:{current_audit_info.audited_account}:security-group/{default_sg_id}"
    +                        == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION_US_EAST_1}:{current_audit_info.audited_account}:security-group/{default_sg_id}"
                         )
                         assert sg.resource_details == default_sg_name
                         assert sg.resource_tags == []
     
    -    @mock_ec2
    +    @mock_aws
         def test_ec2_compliant_default_sg(self):
             # Create EC2 Mocked Resources
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
             ec2_client.create_vpc(CidrBlock="10.0.0.0/16")
             default_sg = ec2_client.describe_security_groups(GroupNames=["default"])[
                 "SecurityGroups"
    @@ -168,7 +141,9 @@ def test_ec2_compliant_default_sg(self):
     
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -196,28 +171,30 @@ def test_ec2_compliant_default_sg(self):
                 for sg in result:
                     if sg.resource_id == default_sg_id:
                         assert sg.status == "PASS"
    -                    assert sg.region == AWS_REGION
    +                    assert sg.region == AWS_REGION_US_EAST_1
                         assert (
                             sg.status_extended
                             == f"Security group {default_sg_name} ({default_sg_id}) does not have Telnet port 23 open to the Internet."
                         )
                         assert (
                             sg.resource_arn
    -                        == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION}:{current_audit_info.audited_account}:security-group/{default_sg_id}"
    +                        == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION_US_EAST_1}:{current_audit_info.audited_account}:security-group/{default_sg_id}"
                         )
                         assert sg.resource_details == default_sg_name
                         assert sg.resource_tags == []
     
    -    @mock_ec2
    +    @mock_aws
         def test_ec2_default_sgs_ignoring(self):
             # Create EC2 Mocked Resources
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
             ec2_client.create_vpc(CidrBlock="10.0.0.0/16")
     
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    -        current_audit_info.ignore_unused_services = True
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1],
    +            ignore_unused_services=True,
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -241,14 +218,14 @@ def test_ec2_default_sgs_ignoring(self):
     
                 assert len(result) == 0
     
    -    @mock_ec2
    +    @mock_aws
         def test_ec2_default_sgs_ignoring_vpc_in_use(self):
             # Create EC2 Mocked Resources
    -        ec2 = resource("ec2", region_name=AWS_REGION)
    +        ec2 = resource("ec2", region_name=AWS_REGION_US_EAST_1)
             vpc = ec2.create_vpc(CidrBlock="10.0.0.0/16")
             subnet = ec2.create_subnet(VpcId=vpc.id, CidrBlock="10.0.0.0/18")
             ec2.create_network_interface(SubnetId=subnet.id)
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
             default_sg = ec2_client.describe_security_groups(GroupNames=["default"])[
                 "SecurityGroups"
             ][0]
    @@ -256,8 +233,10 @@ def test_ec2_default_sgs_ignoring_vpc_in_use(self):
             default_sg["GroupName"]
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    -        current_audit_info.ignore_unused_services = True
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1],
    +            ignore_unused_services=True,
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -281,4 +260,4 @@ def test_ec2_default_sgs_ignoring_vpc_in_use(self):
     
                 assert len(result) == 1
                 assert result[0].status == "PASS"
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_US_EAST_1
    diff --git a/tests/providers/aws/services/ec2/ec2_securitygroup_allow_wide_open_public_ipv4/ec2_securitygroup_allow_wide_open_public_ipv4_test.py b/tests/providers/aws/services/ec2/ec2_securitygroup_allow_wide_open_public_ipv4/ec2_securitygroup_allow_wide_open_public_ipv4_test.py
    index 64fd87cb57a..16dd628198d 100644
    --- a/tests/providers/aws/services/ec2/ec2_securitygroup_allow_wide_open_public_ipv4/ec2_securitygroup_allow_wide_open_public_ipv4_test.py
    +++ b/tests/providers/aws/services/ec2/ec2_securitygroup_allow_wide_open_public_ipv4/ec2_securitygroup_allow_wide_open_public_ipv4_test.py
    @@ -1,56 +1,27 @@
     from unittest import mock
     
    -from boto3 import client, session
    -from moto import mock_ec2
    +from boto3 import client
    +from moto import mock_aws
     
    -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"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_REGION_EU_WEST_1,
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     
     class Test_ec2_securitygroup_allow_wide_open_public_ipv4:
    -    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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=["us-east-1", "eu-west-1"],
    -            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
    -
    -    @mock_ec2
    +    @mock_aws
         def test_ec2_default_sgs(self):
             # Create EC2 Mocked Resources
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
             ec2_client.create_vpc(CidrBlock="10.0.0.0/16")
     
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -74,10 +45,10 @@ def test_ec2_default_sgs(self):
                 assert result[1].status == "PASS"
                 assert result[2].status == "PASS"
     
    -    @mock_ec2
    +    @mock_aws
         def test_ec2_default_sg_with_RFC1918_address(self):
             # Create EC2 Mocked Resources
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
             ec2_client.create_vpc(CidrBlock="10.0.0.0/16")
             default_sg = ec2_client.describe_security_groups(GroupNames=["default"])[
                 "SecurityGroups"
    @@ -96,7 +67,9 @@ def test_ec2_default_sg_with_RFC1918_address(self):
     
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -119,22 +92,22 @@ def test_ec2_default_sg_with_RFC1918_address(self):
                 for sg in result:
                     if sg.resource_id == default_sg_id:
                         assert sg.status == "PASS"
    -                    assert sg.region == AWS_REGION
    +                    assert sg.region == AWS_REGION_US_EAST_1
                         assert (
                             sg.status_extended
                             == f"Security group {default_sg_name} ({default_sg_id}) has no potential wide-open non-RFC1918 address."
                         )
                         assert (
                             sg.resource_arn
    -                        == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION}:{current_audit_info.audited_account}:security-group/{default_sg_id}"
    +                        == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION_US_EAST_1}:{current_audit_info.audited_account}:security-group/{default_sg_id}"
                         )
                         assert sg.resource_details == default_sg_name
                         assert sg.resource_tags == []
     
    -    @mock_ec2
    +    @mock_aws
         def test_ec2_default_sg_with_non_RFC1918_address(self):
             # Create EC2 Mocked Resources
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
             ec2_client.create_vpc(CidrBlock="10.0.0.0/16")
             default_sg = ec2_client.describe_security_groups(GroupNames=["default"])[
                 "SecurityGroups"
    @@ -153,7 +126,9 @@ def test_ec2_default_sg_with_non_RFC1918_address(self):
     
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -176,14 +151,14 @@ def test_ec2_default_sg_with_non_RFC1918_address(self):
                 for sg in result:
                     if sg.resource_id == default_sg_id:
                         assert sg.status == "FAIL"
    -                    assert sg.region == AWS_REGION
    +                    assert sg.region == AWS_REGION_US_EAST_1
                         assert (
                             sg.status_extended
                             == f"Security group {default_sg_name} ({default_sg_id}) has potential wide-open non-RFC1918 address 82.122.0.0/16 in ingress rule."
                         )
                         assert (
                             sg.resource_arn
    -                        == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION}:{current_audit_info.audited_account}:security-group/{default_sg_id}"
    +                        == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION_US_EAST_1}:{current_audit_info.audited_account}:security-group/{default_sg_id}"
                         )
                         assert sg.resource_details == default_sg_name
                         assert sg.resource_tags == []
    diff --git a/tests/providers/aws/services/ec2/ec2_securitygroup_default_restrict_traffic/ec2_securitygroup_default_restrict_traffic_test.py b/tests/providers/aws/services/ec2/ec2_securitygroup_default_restrict_traffic/ec2_securitygroup_default_restrict_traffic_test.py
    index 59530d38c2a..00514eca121 100644
    --- a/tests/providers/aws/services/ec2/ec2_securitygroup_default_restrict_traffic/ec2_securitygroup_default_restrict_traffic_test.py
    +++ b/tests/providers/aws/services/ec2/ec2_securitygroup_default_restrict_traffic/ec2_securitygroup_default_restrict_traffic_test.py
    @@ -1,51 +1,19 @@
     from unittest import mock
     
    -from boto3 import client, session
    -from moto import mock_ec2
    +from boto3 import client
    +from moto import mock_aws
     
    -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"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     
     class Test_ec2_securitygroup_default_restrict_traffic:
    -    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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=["us-east-1"],
    -            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
    -
    -    @mock_ec2
    +    @mock_aws
         def test_ec2_compliant_sg(self):
             # Create EC2 Mocked Resources
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
             default_sg = ec2_client.describe_security_groups(GroupNames=["default"])[
                 "SecurityGroups"
             ][0]
    @@ -66,7 +34,7 @@ def test_ec2_compliant_sg(self):
     
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -92,17 +60,17 @@ def test_ec2_compliant_sg(self):
                 )
                 assert (
                     result[0].resource_arn
    -                == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION}:{current_audit_info.audited_account}:security-group/{default_sg_id}"
    +                == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION_US_EAST_1}:{current_audit_info.audited_account}:security-group/{default_sg_id}"
                 )
                 assert result[0].resource_details == default_sg_name
                 assert result[0].resource_tags == []
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_US_EAST_1
                 assert result[0].resource_id == default_sg_id
     
    -    @mock_ec2
    +    @mock_aws
         def test_ec2_non_compliant_sg_ingress_rule(self):
             # Create EC2 Mocked Resources
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
             default_sg = ec2_client.describe_security_groups(GroupNames=["default"])[
                 "SecurityGroups"
             ][0]
    @@ -129,7 +97,7 @@ def test_ec2_non_compliant_sg_ingress_rule(self):
     
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -155,17 +123,17 @@ def test_ec2_non_compliant_sg_ingress_rule(self):
                 )
                 assert (
                     result[0].resource_arn
    -                == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION}:{current_audit_info.audited_account}:security-group/{default_sg_id}"
    +                == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION_US_EAST_1}:{current_audit_info.audited_account}:security-group/{default_sg_id}"
                 )
                 assert result[0].resource_details == default_sg_name
                 assert result[0].resource_tags == []
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_US_EAST_1
                 assert result[0].resource_id == default_sg_id
     
    -    @mock_ec2
    +    @mock_aws
         def test_ec2_non_compliant_sg_egress_rule(self):
             # Create EC2 Mocked Resources
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
             default_sg = ec2_client.describe_security_groups(GroupNames=["default"])[
                 "SecurityGroups"
             ][0]
    @@ -174,7 +142,7 @@ def test_ec2_non_compliant_sg_egress_rule(self):
     
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -200,9 +168,9 @@ def test_ec2_non_compliant_sg_egress_rule(self):
                 )
                 assert (
                     result[0].resource_arn
    -                == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION}:{current_audit_info.audited_account}:security-group/{default_sg_id}"
    +                == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION_US_EAST_1}:{current_audit_info.audited_account}:security-group/{default_sg_id}"
                 )
                 assert result[0].resource_details == default_sg_name
                 assert result[0].resource_tags == []
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_US_EAST_1
                 assert result[0].resource_id == default_sg_id
    diff --git a/tests/providers/aws/services/ec2/ec2_securitygroup_from_launch_wizard/ec2_securitygroup_from_launch_wizard_test.py b/tests/providers/aws/services/ec2/ec2_securitygroup_from_launch_wizard/ec2_securitygroup_from_launch_wizard_test.py
    index 62df15f75fa..48dc4e13018 100644
    --- a/tests/providers/aws/services/ec2/ec2_securitygroup_from_launch_wizard/ec2_securitygroup_from_launch_wizard_test.py
    +++ b/tests/providers/aws/services/ec2/ec2_securitygroup_from_launch_wizard/ec2_securitygroup_from_launch_wizard_test.py
    @@ -1,57 +1,29 @@
     from unittest import mock
     
    -from boto3 import client, resource, session
    -from moto import mock_ec2
    +from boto3 import client, resource
    +from moto import mock_aws
     
    -from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info
    -from prowler.providers.common.models import Audit_Metadata
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_REGION_EU_WEST_1,
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
    -AWS_REGION = "us-east-1"
     EXAMPLE_AMI_ID = "ami-12c6146b"
    -AWS_ACCOUNT_NUMBER = "123456789012"
     
     
     class Test_ec2_securitygroup_from_launch_wizard:
    -    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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=["us-east-1", "eu-west-1"],
    -            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
    -
    -    @mock_ec2
    +    @mock_aws
         def test_ec2_default_sgs(self):
             # Create EC2 Mocked Resources
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
             ec2_client.create_vpc(CidrBlock="10.0.0.0/16")
     
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -75,10 +47,10 @@ def test_ec2_default_sgs(self):
                 assert result[1].status == "PASS"
                 assert result[2].status == "PASS"
     
    -    @mock_ec2
    +    @mock_aws
         def test_ec2_launch_wizard_sg(self):
             # Create EC2 Mocked Resources
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
             ec2_client.create_vpc(CidrBlock="10.0.0.0/16")
             sg_name = "launch-wizard-1"
             sg = ec2_client.create_security_group(
    @@ -88,7 +60,9 @@ def test_ec2_launch_wizard_sg(self):
     
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -111,21 +85,21 @@ def test_ec2_launch_wizard_sg(self):
                 for sg in result:
                     if sg.resource_id == sg_id:
                         assert sg.status == "FAIL"
    -                    assert sg.region == AWS_REGION
    +                    assert sg.region == AWS_REGION_US_EAST_1
                         assert (
                             sg.status_extended
                             == f"Security group {sg_name} ({sg_id}) was created using the EC2 Launch Wizard."
                         )
                         assert (
                             sg.resource_arn
    -                        == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION}:{current_audit_info.audited_account}:security-group/{sg_id}"
    +                        == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION_US_EAST_1}:{current_audit_info.audited_account}:security-group/{sg_id}"
                         )
                         assert sg.resource_details == sg_name
     
    -    @mock_ec2
    +    @mock_aws
         def test_ec2_compliant_default_sg(self):
             # Create EC2 Mocked Resources
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
             ec2_client.create_vpc(CidrBlock="10.0.0.0/16")
             default_sg = ec2_client.describe_security_groups(GroupNames=["default"])[
                 "SecurityGroups"
    @@ -133,7 +107,7 @@ def test_ec2_compliant_default_sg(self):
             default_sg_id = default_sg["GroupId"]
             default_sg_name = default_sg["GroupName"]
     
    -        ec2 = resource("ec2", region_name=AWS_REGION)
    +        ec2 = resource("ec2", region_name=AWS_REGION_US_EAST_1)
             ec2.create_instances(
                 ImageId=EXAMPLE_AMI_ID,
                 MinCount=1,
    @@ -145,7 +119,9 @@ def test_ec2_compliant_default_sg(self):
     
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -168,14 +144,14 @@ def test_ec2_compliant_default_sg(self):
                 for sg in result:
                     if sg.resource_id == default_sg_id:
                         assert sg.status == "PASS"
    -                    assert sg.region == AWS_REGION
    +                    assert sg.region == AWS_REGION_US_EAST_1
                         assert (
                             sg.status_extended
                             == f"Security group {default_sg_name} ({default_sg_id}) was not created using the EC2 Launch Wizard."
                         )
                         assert (
                             sg.resource_arn
    -                        == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION}:{current_audit_info.audited_account}:security-group/{default_sg_id}"
    +                        == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION_US_EAST_1}:{current_audit_info.audited_account}:security-group/{default_sg_id}"
                         )
                         assert sg.resource_details == default_sg_name
                         assert sg.resource_tags == []
    diff --git a/tests/providers/aws/services/ec2/ec2_securitygroup_not_used/ec2_securitygroup_not_used_test.py b/tests/providers/aws/services/ec2/ec2_securitygroup_not_used/ec2_securitygroup_not_used_test.py
    index 81b0ea5062e..24b74299c82 100644
    --- a/tests/providers/aws/services/ec2/ec2_securitygroup_not_used/ec2_securitygroup_not_used_test.py
    +++ b/tests/providers/aws/services/ec2/ec2_securitygroup_not_used/ec2_securitygroup_not_used_test.py
    @@ -2,7 +2,7 @@
     from unittest import mock
     
     from boto3 import client, resource
    -from moto import mock_ec2, mock_iam, mock_lambda
    +from moto import mock_aws
     
     from tests.providers.aws.audit_info_utils import (
         AWS_ACCOUNT_NUMBER,
    @@ -14,8 +14,7 @@
     
     
     class Test_ec2_securitygroup_not_used:
    -    @mock_ec2
    -    @mock_lambda
    +    @mock_aws
         def test_ec2_default_sgs(self):
             # Create EC2 Mocked Resources
             ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
    @@ -49,8 +48,7 @@ def test_ec2_default_sgs(self):
                 # Default sg per region are excluded
                 assert len(result) == 0
     
    -    @mock_ec2
    -    @mock_lambda
    +    @mock_aws
         def test_ec2_unused_sg(self):
             # Create EC2 Mocked Resources
             ec2 = resource("ec2", AWS_REGION_US_EAST_1)
    @@ -102,8 +100,7 @@ def test_ec2_unused_sg(self):
                 assert result[0].resource_details == sg_name
                 assert result[0].resource_tags == []
     
    -    @mock_ec2
    -    @mock_lambda
    +    @mock_aws
         def test_ec2_used_default_sg(self):
             # Create EC2 Mocked Resources
             ec2 = resource("ec2", AWS_REGION_US_EAST_1)
    @@ -161,9 +158,7 @@ def test_ec2_used_default_sg(self):
                 assert result[0].resource_details == sg_name
                 assert result[0].resource_tags == []
     
    -    @mock_ec2
    -    @mock_lambda
    -    @mock_iam
    +    @mock_aws
         def test_ec2_used_default_sg_by_lambda(self):
             # Create EC2 Mocked Resources
             ec2 = resource("ec2", AWS_REGION_US_EAST_1)
    @@ -245,8 +240,7 @@ def test_ec2_used_default_sg_by_lambda(self):
                 assert result[0].resource_details == sg_name
                 assert result[0].resource_tags == []
     
    -    @mock_ec2
    -    @mock_lambda
    +    @mock_aws
         def test_ec2_associated_sg(self):
             # Create EC2 Mocked Resources
             ec2 = resource("ec2", AWS_REGION_US_EAST_1)
    diff --git a/tests/providers/aws/services/ec2/ec2_securitygroup_with_many_ingress_egress_rules/ec2_securitygroup_with_many_ingress_egress_rules_test.py b/tests/providers/aws/services/ec2/ec2_securitygroup_with_many_ingress_egress_rules/ec2_securitygroup_with_many_ingress_egress_rules_test.py
    index cc1fa195697..513a9c27834 100644
    --- a/tests/providers/aws/services/ec2/ec2_securitygroup_with_many_ingress_egress_rules/ec2_securitygroup_with_many_ingress_egress_rules_test.py
    +++ b/tests/providers/aws/services/ec2/ec2_securitygroup_with_many_ingress_egress_rules/ec2_securitygroup_with_many_ingress_egress_rules_test.py
    @@ -1,56 +1,27 @@
     from unittest import mock
     
    -from boto3 import client, session
    -from moto import mock_ec2
    +from boto3 import client
    +from moto import mock_aws
     
    -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"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_REGION_EU_WEST_1,
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     
     class Test_ec2_securitygroup_with_many_ingress_egress_rules:
    -    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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=["us-east-1", "eu-west-1"],
    -            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
    -
    -    @mock_ec2
    +    @mock_aws
         def test_ec2_default_sgs(self):
             # Create EC2 Mocked Resources
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
             ec2_client.create_vpc(CidrBlock="10.0.0.0/16")
     
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
             current_audit_info.audit_config = {"max_security_group_rules": 50}
     
             with mock.patch(
    @@ -75,10 +46,10 @@ def test_ec2_default_sgs(self):
                 assert result[1].status == "PASS"
                 assert result[2].status == "PASS"
     
    -    @mock_ec2
    +    @mock_aws
         def test_ec2_non_compliant_default_sg(self):
             # Create EC2 Mocked Resources
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
             ec2_client.create_vpc(CidrBlock="10.0.0.0/16")
             default_sg = ec2_client.describe_security_groups(GroupNames=["default"])[
                 "SecurityGroups"
    @@ -100,7 +71,9 @@ def test_ec2_non_compliant_default_sg(self):
     
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
             current_audit_info.audit_config = {"max_security_group_rules": 50}
     
             with mock.patch(
    @@ -124,22 +97,22 @@ def test_ec2_non_compliant_default_sg(self):
                 for sg in result:
                     if sg.resource_id == default_sg_id:
                         assert sg.status == "FAIL"
    -                    assert sg.region == AWS_REGION
    +                    assert sg.region == AWS_REGION_US_EAST_1
                         assert (
                             sg.status_extended
                             == f"Security group {default_sg_name} ({default_sg_id}) has 60 inbound rules and 1 outbound rules."
                         )
                         assert (
                             sg.resource_arn
    -                        == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION}:{current_audit_info.audited_account}:security-group/{default_sg_id}"
    +                        == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION_US_EAST_1}:{current_audit_info.audited_account}:security-group/{default_sg_id}"
                         )
                         assert sg.resource_details == default_sg_name
                         assert sg.resource_tags == []
     
    -    @mock_ec2
    +    @mock_aws
         def test_ec2_compliant_default_sg(self):
             # Create EC2 Mocked Resources
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
             ec2_client.create_vpc(CidrBlock="10.0.0.0/16")
             default_sg = ec2_client.describe_security_groups(GroupNames=["default"])[
                 "SecurityGroups"
    @@ -160,7 +133,9 @@ def test_ec2_compliant_default_sg(self):
     
             from prowler.providers.aws.services.ec2.ec2_service import EC2
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
             current_audit_info.audit_config = {"max_security_group_rules": 50}
     
             with mock.patch(
    @@ -184,14 +159,14 @@ def test_ec2_compliant_default_sg(self):
                 for sg in result:
                     if sg.resource_id == default_sg_id:
                         assert sg.status == "PASS"
    -                    assert sg.region == AWS_REGION
    +                    assert sg.region == AWS_REGION_US_EAST_1
                         assert (
                             sg.status_extended
                             == f"Security group {default_sg_name} ({default_sg_id}) has 1 inbound rules and 1 outbound rules."
                         )
                         assert (
                             sg.resource_arn
    -                        == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION}:{current_audit_info.audited_account}:security-group/{default_sg_id}"
    +                        == f"arn:{current_audit_info.audited_partition}:ec2:{AWS_REGION_US_EAST_1}:{current_audit_info.audited_account}:security-group/{default_sg_id}"
                         )
                         assert sg.resource_details == default_sg_name
                         assert sg.resource_tags == []
    diff --git a/tests/providers/aws/services/ec2/ec2_service_test.py b/tests/providers/aws/services/ec2/ec2_service_test.py
    index 53d4a986592..95f3a2d3357 100644
    --- a/tests/providers/aws/services/ec2/ec2_service_test.py
    +++ b/tests/providers/aws/services/ec2/ec2_service_test.py
    @@ -3,95 +3,72 @@
     from base64 import b64decode
     from datetime import datetime
     
    -from boto3 import client, resource, session
    +from boto3 import client, resource
     from dateutil.tz import tzutc
     from freezegun import freeze_time
    -from moto import mock_ec2
    +from moto import mock_aws
     
    -from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info
     from prowler.providers.aws.services.ec2.ec2_service import EC2
    -from prowler.providers.common.models import Audit_Metadata
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_ACCOUNT_NUMBER,
    +    AWS_REGION_EU_WEST_1,
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
    -AWS_ACCOUNT_NUMBER = "123456789012"
    -AWS_REGION = "us-east-1"
     EXAMPLE_AMI_ID = "ami-12c6146b"
     MOCK_DATETIME = datetime(2023, 1, 4, 7, 27, 30, tzinfo=tzutc())
     
     
     class Test_EC2_Service:
    -    # 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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=["eu-west-1", "us-east-1"],
    -            organizations_metadata=None,
    -            audit_resources=None,
    -            mfa_enabled=False,
    -            audit_metadata=Audit_Metadata(
    -                services_scanned=0,
    -                expected_checks=[
    -                    "ec2_securitygroup_allow_ingress_from_internet_to_any_port"
    -                ],
    -                completed_checks=0,
    -                audit_progress=0,
    -            ),
    -        )
    -        return audit_info
    -
         # Test EC2 Service
    -    @mock_ec2
    +    @mock_aws
         def test_service(self):
             # EC2 client for this test class
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
             ec2 = EC2(audit_info)
             assert ec2.service == "ec2"
     
         # Test EC2 Client
    -    @mock_ec2
    +    @mock_aws
         def test_client(self):
             # EC2 client for this test class
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
             ec2 = EC2(audit_info)
             for regional_client in ec2.regional_clients.values():
                 assert regional_client.__class__.__name__ == "EC2"
     
         # Test EC2 Session
    -    @mock_ec2
    +    @mock_aws
         def test__get_session__(self):
             # EC2 client for this test class
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
             ec2 = EC2(audit_info)
             assert ec2.session.__class__.__name__ == "Session"
     
         # Test EC2 Session
    -    @mock_ec2
    +    @mock_aws
         def test_audited_account(self):
             # EC2 client for this test class
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
             ec2 = EC2(audit_info)
             assert ec2.audited_account == AWS_ACCOUNT_NUMBER
     
         # Test EC2 Describe Instances
    -    @mock_ec2
    +    @mock_aws
         @freeze_time(MOCK_DATETIME)
         def test__describe_instances__(self):
             # Generate EC2 Client
    -        ec2_resource = resource("ec2", region_name=AWS_REGION)
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    +        ec2_resource = resource("ec2", region_name=AWS_REGION_US_EAST_1)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
             # Get AMI image
             image_response = ec2_client.describe_images()
             image_id = image_response["Images"][0]["ImageId"]
    @@ -102,13 +79,15 @@ def test__describe_instances__(self):
                 ImageId=image_id,
             )
             # EC2 client for this test class
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
             ec2 = EC2(audit_info)
             assert len(ec2.instances) == 1
             assert re.match(r"i-[0-9a-z]{17}", ec2.instances[0].id)
             assert (
                 ec2.instances[0].arn
    -            == f"arn:{audit_info.audited_partition}:ec2:{AWS_REGION}:{AWS_ACCOUNT_NUMBER}:instance/{ec2.instances[0].id}"
    +            == f"arn:{audit_info.audited_partition}:ec2:{AWS_REGION_US_EAST_1}:{AWS_ACCOUNT_NUMBER}:instance/{ec2.instances[0].id}"
             )
             assert ec2.instances[0].type == "m1.small"
             assert ec2.instances[0].state == "running"
    @@ -130,10 +109,10 @@ def test__describe_instances__(self):
             )
     
         # Test EC2 Describe Security Groups
    -    @mock_ec2
    +    @mock_aws
         def test__describe_security_groups__(self):
             # Generate EC2 Client
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
             # Create EC2 Security Group
             sg_id = ec2_client.create_security_group(
                 Description="test-description",
    @@ -157,7 +136,12 @@ def test__describe_security_groups__(self):
                 ],
             )
             # EC2 client for this test class
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1],
    +            expected_checks=[
    +                "ec2_securitygroup_allow_ingress_from_internet_to_any_port"
    +            ],
    +        )
             ec2 = EC2(audit_info)
     
             assert sg_id in str(ec2.security_groups)
    @@ -166,10 +150,10 @@ def test__describe_security_groups__(self):
                     assert security_group.name == "test-security-group"
                     assert (
                         security_group.arn
    -                    == f"arn:{audit_info.audited_partition}:ec2:{AWS_REGION}:{AWS_ACCOUNT_NUMBER}:security-group/{security_group.id}"
    +                    == f"arn:{audit_info.audited_partition}:ec2:{AWS_REGION_US_EAST_1}:{AWS_ACCOUNT_NUMBER}:security-group/{security_group.id}"
                     )
                     assert re.match(r"sg-[0-9a-z]{17}", security_group.id)
    -                assert security_group.region == AWS_REGION
    +                assert security_group.region == AWS_REGION_US_EAST_1
                     assert security_group.network_interfaces == []
                     assert security_group.ingress_rules == [
                         {
    @@ -195,11 +179,11 @@ def test__describe_security_groups__(self):
                     ]
     
         # Test EC2 Describe Nacls
    -    @mock_ec2
    +    @mock_aws
         def test__describe_network_acls__(self):
             # Generate EC2 Client
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    -        ec2_resource = resource("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
    +        ec2_resource = resource("ec2", region_name=AWS_REGION_US_EAST_1)
             # Create EC2 VPC and SG
             vpc_id = ec2_client.create_vpc(CidrBlock="10.0.0.0/16")["Vpc"]["VpcId"]
             nacl_id = ec2_resource.create_network_acl(
    @@ -214,7 +198,9 @@ def test__describe_network_acls__(self):
                 ],
             ).id
             # EC2 client for this test class
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
             ec2 = EC2(audit_info)
     
             assert nacl_id in str(ec2.network_acls)
    @@ -223,7 +209,7 @@ def test__describe_network_acls__(self):
                     assert re.match(r"acl-[0-9a-z]{8}", acl.id)
                     assert (
                         acl.arn
    -                    == f"arn:{audit_info.audited_partition}:ec2:{AWS_REGION}:{AWS_ACCOUNT_NUMBER}:network-acl/{acl.id}"
    +                    == f"arn:{audit_info.audited_partition}:ec2:{AWS_REGION_US_EAST_1}:{AWS_ACCOUNT_NUMBER}:network-acl/{acl.id}"
                     )
                     assert acl.entries == []
                     assert acl.tags == [
    @@ -231,11 +217,11 @@ def test__describe_network_acls__(self):
                     ]
     
         # Test EC2 Describe Snapshots
    -    @mock_ec2
    +    @mock_aws
         def test__describe_snapshots__(self):
             # Generate EC2 Client
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    -        ec2_resource = resource("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
    +        ec2_resource = resource("ec2", region_name=AWS_REGION_US_EAST_1)
             # Create EC2 Volume and Snapshot
             volume_id = ec2_resource.create_volume(
                 AvailabilityZone="us-east-1a",
    @@ -253,11 +239,11 @@ def test__describe_snapshots__(self):
                     },
                 ],
             )["SnapshotId"]
    -        snapshot_arn = (
    -            f"arn:aws:ec2:{AWS_REGION}:{AWS_ACCOUNT_NUMBER}:snapshot/{snapshot_id}"
    -        )
    +        snapshot_arn = f"arn:aws:ec2:{AWS_REGION_US_EAST_1}:{AWS_ACCOUNT_NUMBER}:snapshot/{snapshot_id}"
             # EC2 client for this test class
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
             ec2 = EC2(audit_info)
     
             assert snapshot_id in str(ec2.snapshots)
    @@ -267,7 +253,7 @@ def test__describe_snapshots__(self):
                 if snapshot.id == snapshot_id:
                     assert re.match(r"snap-[0-9a-z]{8}", snapshot.id)
                     assert snapshot.arn == snapshot_arn
    -                assert snapshot.region == AWS_REGION
    +                assert snapshot.region == AWS_REGION_US_EAST_1
                     assert snapshot.tags == [
                         {"Key": "test", "Value": "test"},
                     ]
    @@ -275,11 +261,11 @@ def test__describe_snapshots__(self):
                     assert not snapshot.public
     
         # Test EC2 Get Snapshot Public
    -    @mock_ec2
    +    @mock_aws
         def test__get_snapshot_public__(self):
             # Generate EC2 Client
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    -        ec2_resource = resource("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
    +        ec2_resource = resource("ec2", region_name=AWS_REGION_US_EAST_1)
             # Create EC2 Volume and Snapshot
             volume_id = ec2_resource.create_volume(
                 AvailabilityZone="us-east-1a",
    @@ -298,7 +284,9 @@ def test__get_snapshot_public__(self):
                 SnapshotId=snapshot_id,
             )
             # EC2 client for this test class
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
             ec2 = EC2(audit_info)
     
             assert snapshot_id in str(ec2.snapshots)
    @@ -307,17 +295,17 @@ def test__get_snapshot_public__(self):
                     assert re.match(r"snap-[0-9a-z]{8}", snapshot.id)
                     assert (
                         snapshot.arn
    -                    == f"arn:{audit_info.audited_partition}:ec2:{AWS_REGION}:{AWS_ACCOUNT_NUMBER}:snapshot/{snapshot.id}"
    +                    == f"arn:{audit_info.audited_partition}:ec2:{AWS_REGION_US_EAST_1}:{AWS_ACCOUNT_NUMBER}:snapshot/{snapshot.id}"
                     )
    -                assert snapshot.region == AWS_REGION
    +                assert snapshot.region == AWS_REGION_US_EAST_1
                     assert not snapshot.encrypted
                     assert snapshot.public
     
         # Test EC2 Instance User Data
    -    @mock_ec2
    +    @mock_aws
         def test__get_instance_user_data__(self):
             user_data = "This is some user_data"
    -        ec2 = resource("ec2", region_name=AWS_REGION)
    +        ec2 = resource("ec2", region_name=AWS_REGION_US_EAST_1)
             ec2.create_instances(
                 ImageId=EXAMPLE_AMI_ID,
                 MinCount=1,
    @@ -325,30 +313,34 @@ def test__get_instance_user_data__(self):
                 UserData="This is some user_data",
             )
             # EC2 client for this test class
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
             ec2 = EC2(audit_info)
             assert user_data == b64decode(ec2.instances[0].user_data).decode("utf-8")
     
         # Test EC2 Get EBS Encryption by default
    -    @mock_ec2
    +    @mock_aws
         def test__get_ebs_encryption_by_default__(self):
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
             ec2_client.enable_ebs_encryption_by_default()
             # EC2 client for this test class
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
             ec2 = EC2(audit_info)
     
             # One result per region
             assert len(ec2.ebs_encryption_by_default) == 2
             for result in ec2.ebs_encryption_by_default:
    -            if result.region == AWS_REGION:
    +            if result.region == AWS_REGION_US_EAST_1:
                     assert result.status
     
         # Test EC2 Describe Addresses
    -    @mock_ec2
    +    @mock_aws
         def test__describe_addresses__(self):
             # Generate EC2 Client
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
             allocation_id = ec2_client.allocate_address(
                 Domain="vpc",
                 Address="127.38.43.222",
    @@ -362,23 +354,25 @@ def test__describe_addresses__(self):
                 ],
             )["AllocationId"]
             # EC2 client for this test class
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
             ec2 = EC2(audit_info)
             assert "127.38.43.222" in str(ec2.elastic_ips)
             assert (
                 ec2.elastic_ips[0].arn
    -            == f"arn:aws:ec2:{AWS_REGION}:{AWS_ACCOUNT_NUMBER}:eip-allocation/{allocation_id}"
    +            == f"arn:aws:ec2:{AWS_REGION_US_EAST_1}:{AWS_ACCOUNT_NUMBER}:eip-allocation/{allocation_id}"
             )
             assert ec2.elastic_ips[0].tags == [
                 {"Key": "test", "Value": "test"},
             ]
     
         # Test EC2 Describe Network Interfaces
    -    @mock_ec2
    +    @mock_aws
         def test__describe_sg_network_interfaces__(self):
             # Generate EC2 Client
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    -        ec2_resource = resource("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
    +        ec2_resource = resource("ec2", region_name=AWS_REGION_US_EAST_1)
             # Create VPC, Subnet, SecurityGroup and Network Interface
             vpc = ec2_resource.create_vpc(CidrBlock="10.0.0.0/16")
             subnet = ec2_resource.create_subnet(VpcId=vpc.id, CidrBlock="10.0.0.0/18")
    @@ -391,7 +385,9 @@ def test__describe_sg_network_interfaces__(self):
             )
     
             # EC2 client for this test class
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
             ec2 = EC2(audit_info)
     
             assert sg.id in str(ec2.security_groups)
    @@ -400,10 +396,10 @@ def test__describe_sg_network_interfaces__(self):
                     assert security_group.name == "test-securitygroup"
                     assert (
                         security_group.arn
    -                    == f"arn:{audit_info.audited_partition}:ec2:{AWS_REGION}:{AWS_ACCOUNT_NUMBER}:security-group/{security_group.id}"
    +                    == f"arn:{audit_info.audited_partition}:ec2:{AWS_REGION_US_EAST_1}:{AWS_ACCOUNT_NUMBER}:security-group/{security_group.id}"
                     )
                     assert re.match(r"sg-[0-9a-z]{17}", security_group.id)
    -                assert security_group.region == AWS_REGION
    +                assert security_group.region == AWS_REGION_US_EAST_1
                     assert eni_id in security_group.network_interfaces
                     assert security_group.ingress_rules == []
                     assert security_group.egress_rules == [
    @@ -416,11 +412,11 @@ def test__describe_sg_network_interfaces__(self):
                         }
                     ]
     
    -    @mock_ec2
    +    @mock_aws
         def test__describe_public_network_interfaces__(self):
             # Generate EC2 Client
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    -        ec2_resource = resource("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
    +        ec2_resource = resource("ec2", region_name=AWS_REGION_US_EAST_1)
             # Create VPC, Subnet, SecurityGroup and Network Interface
             vpc = ec2_resource.create_vpc(CidrBlock="10.0.0.0/16")
             subnet = ec2_resource.create_subnet(VpcId=vpc.id, CidrBlock="10.0.0.0/18")
    @@ -442,7 +438,9 @@ def test__describe_public_network_interfaces__(self):
             )
     
             # EC2 client for this test class
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
             ec2 = EC2(audit_info)
     
             assert len(ec2.network_interfaces) == 1
    @@ -451,17 +449,17 @@ def test__describe_public_network_interfaces__(self):
             assert ec2.network_interfaces[0].type == eni.interface_type
             assert ec2.network_interfaces[0].subnet_id == subnet.id
             assert ec2.network_interfaces[0].vpc_id == vpc.id
    -        assert ec2.network_interfaces[0].region == AWS_REGION
    +        assert ec2.network_interfaces[0].region == AWS_REGION_US_EAST_1
             assert ec2.network_interfaces[0].tags == [
                 {"Key": "string", "Value": "string"},
             ]
     
         # Test EC2 Describe Images
    -    @mock_ec2
    +    @mock_aws
         def test__describe_images__(self):
             # Generate EC2 Client
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    -        ec2_resource = resource("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
    +        ec2_resource = resource("ec2", region_name=AWS_REGION_US_EAST_1)
             # Create AMI
             tag_specifications = [
                 {
    @@ -486,7 +484,9 @@ def test__describe_images__(self):
             )["ImageId"]
     
             # EC2 client for this test class
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
             ec2 = EC2(audit_info)
     
             assert len(ec2.images) == 1
    @@ -494,10 +494,10 @@ def test__describe_images__(self):
             assert re.match(r"ami-[0-9a-z]{8}", ec2.images[0].id)
             assert (
                 ec2.images[0].arn
    -            == f"arn:{audit_info.audited_partition}:ec2:{AWS_REGION}:{AWS_ACCOUNT_NUMBER}:image/{ec2.images[0].id}"
    +            == f"arn:{audit_info.audited_partition}:ec2:{AWS_REGION_US_EAST_1}:{AWS_ACCOUNT_NUMBER}:image/{ec2.images[0].id}"
             )
             assert not ec2.images[0].public
    -        assert ec2.images[0].region == AWS_REGION
    +        assert ec2.images[0].region == AWS_REGION_US_EAST_1
             assert ec2.images[0].tags == [
                 {
                     "Key": "Base_AMI_Name",
    @@ -507,13 +507,13 @@ def test__describe_images__(self):
             ]
     
         # Test EC2 Describe Volumes
    -    @mock_ec2
    +    @mock_aws
         def test__describe_volumes__(self):
             # Generate EC2 Client
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
             # Create Volume
             volume_id = ec2_client.create_volume(
    -            AvailabilityZone=AWS_REGION,
    +            AvailabilityZone=AWS_REGION_US_EAST_1,
                 Encrypted=False,
                 Size=40,
                 TagSpecifications=[
    @@ -527,7 +527,9 @@ def test__describe_volumes__(self):
             )["VolumeId"]
     
             # EC2 client for this test class
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
             ec2 = EC2(audit_info)
     
             assert len(ec2.volumes) == 1
    @@ -535,9 +537,9 @@ def test__describe_volumes__(self):
             assert re.match(r"vol-[0-9a-z]{8}", ec2.volumes[0].id)
             assert (
                 ec2.volumes[0].arn
    -            == f"arn:{audit_info.audited_partition}:ec2:{AWS_REGION}:{AWS_ACCOUNT_NUMBER}:volume/{ec2.volumes[0].id}"
    +            == f"arn:{audit_info.audited_partition}:ec2:{AWS_REGION_US_EAST_1}:{AWS_ACCOUNT_NUMBER}:volume/{ec2.volumes[0].id}"
             )
    -        assert ec2.volumes[0].region == AWS_REGION
    +        assert ec2.volumes[0].region == AWS_REGION_US_EAST_1
             assert not ec2.volumes[0].encrypted
             assert ec2.volumes[0].tags == [
                 {"Key": "test", "Value": "test"},
    diff --git a/tests/providers/aws/services/ecr/ecr_registry_scan_images_on_push_enabled/ecr_registry_scan_images_on_push_enabled_test.py b/tests/providers/aws/services/ecr/ecr_registry_scan_images_on_push_enabled/ecr_registry_scan_images_on_push_enabled_test.py
    index a04412b7ccc..8220f3d41ca 100644
    --- a/tests/providers/aws/services/ecr/ecr_registry_scan_images_on_push_enabled/ecr_registry_scan_images_on_push_enabled_test.py
    +++ b/tests/providers/aws/services/ecr/ecr_registry_scan_images_on_push_enabled/ecr_registry_scan_images_on_push_enabled_test.py
    @@ -1,19 +1,17 @@
     from re import search
     from unittest import mock
     
    -from boto3 import session
    -
    -from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info
     from prowler.providers.aws.services.ecr.ecr_service import (
         Registry,
         Repository,
         ScanningRule,
     )
    -from prowler.providers.common.models import Audit_Metadata
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_ACCOUNT_NUMBER,
    +    AWS_REGION_EU_WEST_1,
    +    set_mocked_aws_audit_info,
    +)
     
    -# Mock Test Region
    -AWS_REGION = "eu-west-1"
    -AWS_ACCOUNT_NUMBER = "123456789012"
     repository_name = "test_repo"
     repository_arn = (
         f"arn:aws:ecr:eu-west-1:{AWS_ACCOUNT_NUMBER}:repository/{repository_name}"
    @@ -21,43 +19,13 @@
     
     
     class Test_ecr_registry_scan_images_on_push_enabled:
    -    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=None,
    -            audited_account_arn=None,
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=None,
    -            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
    -
         def test_no_registries(self):
             ecr_client = mock.MagicMock
             ecr_client.registries = {}
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    -            self.set_mocked_audit_info(),
    +            set_mocked_aws_audit_info(),
             ), mock.patch(
                 "prowler.providers.aws.services.ecr.ecr_registry_scan_images_on_push_enabled.ecr_registry_scan_images_on_push_enabled.ecr_client",
                 ecr_client,
    @@ -73,9 +41,9 @@ def test_no_registries(self):
         def test_registry_no_repositories(self):
             ecr_client = mock.MagicMock
             ecr_client.registries = {}
    -        ecr_client.registries[AWS_REGION] = Registry(
    +        ecr_client.registries[AWS_REGION_EU_WEST_1] = Registry(
                 id=AWS_ACCOUNT_NUMBER,
    -            region=AWS_REGION,
    +            region=AWS_REGION_EU_WEST_1,
                 scan_type="BASIC",
                 repositories=[],
                 rules=[],
    @@ -83,7 +51,7 @@ def test_registry_no_repositories(self):
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    -            self.set_mocked_audit_info(),
    +            set_mocked_aws_audit_info(),
             ), mock.patch(
                 "prowler.providers.aws.services.ecr.ecr_registry_scan_images_on_push_enabled.ecr_registry_scan_images_on_push_enabled.ecr_client",
                 ecr_client,
    @@ -99,15 +67,15 @@ def test_registry_no_repositories(self):
         def test_registry_scan_on_push_enabled(self):
             ecr_client = mock.MagicMock
             ecr_client.registries = {}
    -        ecr_client.registries[AWS_REGION] = Registry(
    +        ecr_client.registries[AWS_REGION_EU_WEST_1] = Registry(
                 id=AWS_ACCOUNT_NUMBER,
    -            region=AWS_REGION,
    +            region=AWS_REGION_EU_WEST_1,
                 scan_type="BASIC",
                 repositories=[
                     Repository(
                         name=repository_name,
                         arn=repository_arn,
    -                    region=AWS_REGION,
    +                    region=AWS_REGION_EU_WEST_1,
                         scan_on_push=True,
                         policy="",
                         images_details=None,
    @@ -124,7 +92,7 @@ def test_registry_scan_on_push_enabled(self):
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    -            self.set_mocked_audit_info(),
    +            set_mocked_aws_audit_info(),
             ), mock.patch(
                 "prowler.providers.aws.services.ecr.ecr_registry_scan_images_on_push_enabled.ecr_registry_scan_images_on_push_enabled.ecr_client",
                 ecr_client,
    @@ -139,20 +107,20 @@ def test_registry_scan_on_push_enabled(self):
                 assert result[0].status == "PASS"
                 assert search("with scan on push", result[0].status_extended)
                 assert result[0].resource_id == AWS_ACCOUNT_NUMBER
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_EU_WEST_1
     
         def test_scan_on_push_enabled_with_filters(self):
             ecr_client = mock.MagicMock
             ecr_client.registries = {}
    -        ecr_client.registries[AWS_REGION] = Registry(
    +        ecr_client.registries[AWS_REGION_EU_WEST_1] = Registry(
                 id=AWS_ACCOUNT_NUMBER,
    -            region=AWS_REGION,
    +            region=AWS_REGION_EU_WEST_1,
                 scan_type="BASIC",
                 repositories=[
                     Repository(
                         name=repository_name,
                         arn=repository_arn,
    -                    region=AWS_REGION,
    +                    region=AWS_REGION_EU_WEST_1,
                         scan_on_push=True,
                         policy="",
                         images_details=None,
    @@ -169,7 +137,7 @@ def test_scan_on_push_enabled_with_filters(self):
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    -            self.set_mocked_audit_info(),
    +            set_mocked_aws_audit_info(),
             ), mock.patch(
                 "prowler.providers.aws.services.ecr.ecr_registry_scan_images_on_push_enabled.ecr_registry_scan_images_on_push_enabled.ecr_client",
                 ecr_client,
    @@ -187,20 +155,20 @@ def test_scan_on_push_enabled_with_filters(self):
                     result[0].status_extended,
                 )
                 assert result[0].resource_id == AWS_ACCOUNT_NUMBER
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_EU_WEST_1
     
         def test_scan_on_push_disabled(self):
             ecr_client = mock.MagicMock
             ecr_client.registries = {}
    -        ecr_client.registries[AWS_REGION] = Registry(
    +        ecr_client.registries[AWS_REGION_EU_WEST_1] = Registry(
                 id=AWS_ACCOUNT_NUMBER,
    -            region=AWS_REGION,
    +            region=AWS_REGION_EU_WEST_1,
                 scan_type="BASIC",
                 repositories=[
                     Repository(
                         name=repository_name,
                         arn=repository_arn,
    -                    region=AWS_REGION,
    +                    region=AWS_REGION_EU_WEST_1,
                         scan_on_push=True,
                         policy="",
                         images_details=None,
    @@ -212,7 +180,7 @@ def test_scan_on_push_disabled(self):
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    -            self.set_mocked_audit_info(),
    +            set_mocked_aws_audit_info(),
             ), mock.patch(
                 "prowler.providers.aws.services.ecr.ecr_registry_scan_images_on_push_enabled.ecr_registry_scan_images_on_push_enabled.ecr_client",
                 ecr_client,
    @@ -227,4 +195,4 @@ def test_scan_on_push_disabled(self):
                 assert result[0].status == "FAIL"
                 assert search("scanning without scan on push", result[0].status_extended)
                 assert result[0].resource_id == AWS_ACCOUNT_NUMBER
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_EU_WEST_1
    diff --git a/tests/providers/aws/services/ecr/ecr_repositories_lifecycle_policy_enabled/ecr_repositories_lifecycle_policy_enabled_test.py b/tests/providers/aws/services/ecr/ecr_repositories_lifecycle_policy_enabled/ecr_repositories_lifecycle_policy_enabled_test.py
    index 15270784865..779f1778448 100644
    --- a/tests/providers/aws/services/ecr/ecr_repositories_lifecycle_policy_enabled/ecr_repositories_lifecycle_policy_enabled_test.py
    +++ b/tests/providers/aws/services/ecr/ecr_repositories_lifecycle_policy_enabled/ecr_repositories_lifecycle_policy_enabled_test.py
    @@ -1,14 +1,12 @@
     from unittest import mock
     
    -from boto3 import session
    -
    -from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info
     from prowler.providers.aws.services.ecr.ecr_service import Registry, Repository
    -from prowler.providers.common.models import Audit_Metadata
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_ACCOUNT_NUMBER,
    +    AWS_REGION_EU_WEST_1,
    +    set_mocked_aws_audit_info,
    +)
     
    -# Mock Test Region
    -AWS_REGION = "eu-west-1"
    -AWS_ACCOUNT_NUMBER = "123456789012"
     repository_name = "test_repo"
     repository_arn = (
         f"arn:aws:ecr:eu-west-1:{AWS_ACCOUNT_NUMBER}:repository/{repository_name}"
    @@ -28,35 +26,6 @@
     
     class Test_ecr_repositories_lifecycle_policy_enabled:
         # 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=None,
    -            audited_account_arn=None,
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=None,
    -            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
     
         def test_no_registries(self):
             ecr_client = mock.MagicMock
    @@ -64,7 +33,7 @@ def test_no_registries(self):
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    -            self.set_mocked_audit_info(),
    +            set_mocked_aws_audit_info(),
             ), mock.patch(
                 "prowler.providers.aws.services.ecr.ecr_repositories_lifecycle_policy_enabled.ecr_repositories_lifecycle_policy_enabled.ecr_client",
                 ecr_client,
    @@ -80,9 +49,9 @@ def test_no_registries(self):
         def test_registry_no_repositories(self):
             ecr_client = mock.MagicMock
             ecr_client.registries = {}
    -        ecr_client.registries[AWS_REGION] = Registry(
    +        ecr_client.registries[AWS_REGION_EU_WEST_1] = Registry(
                 id=AWS_ACCOUNT_NUMBER,
    -            region=AWS_REGION,
    +            region=AWS_REGION_EU_WEST_1,
                 scan_type="BASIC",
                 repositories=[],
                 rules=[],
    @@ -90,7 +59,7 @@ def test_registry_no_repositories(self):
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    -            self.set_mocked_audit_info(),
    +            set_mocked_aws_audit_info(),
             ), mock.patch(
                 "prowler.providers.aws.services.ecr.ecr_repositories_lifecycle_policy_enabled.ecr_repositories_lifecycle_policy_enabled.ecr_client",
                 ecr_client,
    @@ -106,16 +75,16 @@ def test_registry_no_repositories(self):
         def test_lifecycle_policy(self):
             ecr_client = mock.MagicMock
             ecr_client.registries = {}
    -        ecr_client.registries[AWS_REGION] = Registry(
    +        ecr_client.registries[AWS_REGION_EU_WEST_1] = Registry(
                 id=AWS_ACCOUNT_NUMBER,
    -            region=AWS_REGION,
    +            region=AWS_REGION_EU_WEST_1,
                 scan_type="BASIC",
                 rules=[],
                 repositories=[
                     Repository(
                         name=repository_name,
                         arn=repository_arn,
    -                    region=AWS_REGION,
    +                    region=AWS_REGION_EU_WEST_1,
                         scan_on_push=True,
                         policy=repo_policy_public,
                         images_details=None,
    @@ -126,7 +95,7 @@ def test_lifecycle_policy(self):
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    -            self.set_mocked_audit_info(),
    +            set_mocked_aws_audit_info(),
             ), mock.patch(
                 "prowler.providers.aws.services.ecr.ecr_repositories_lifecycle_policy_enabled.ecr_repositories_lifecycle_policy_enabled.ecr_client",
                 ecr_client,
    @@ -150,16 +119,16 @@ def test_lifecycle_policy(self):
         def test_no_lifecycle_policy(self):
             ecr_client = mock.MagicMock
             ecr_client.registries = {}
    -        ecr_client.registries[AWS_REGION] = Registry(
    +        ecr_client.registries[AWS_REGION_EU_WEST_1] = Registry(
                 id=AWS_ACCOUNT_NUMBER,
    -            region=AWS_REGION,
    +            region=AWS_REGION_EU_WEST_1,
                 scan_type="BASIC",
                 rules=[],
                 repositories=[
                     Repository(
                         name=repository_name,
                         arn=repository_arn,
    -                    region=AWS_REGION,
    +                    region=AWS_REGION_EU_WEST_1,
                         scan_on_push=False,
                         policy=repo_policy_public,
                         images_details=None,
    @@ -170,7 +139,7 @@ def test_no_lifecycle_policy(self):
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    -            self.set_mocked_audit_info(),
    +            set_mocked_aws_audit_info(),
             ), mock.patch(
                 "prowler.providers.aws.services.ecr.ecr_repositories_lifecycle_policy_enabled.ecr_repositories_lifecycle_policy_enabled.ecr_client",
                 ecr_client,
    diff --git a/tests/providers/aws/services/ecr/ecr_repositories_not_publicly_accessible/ecr_repositories_not_publicly_accessible_test.py b/tests/providers/aws/services/ecr/ecr_repositories_not_publicly_accessible/ecr_repositories_not_publicly_accessible_test.py
    index d6e0310e8cd..e581408fb86 100644
    --- a/tests/providers/aws/services/ecr/ecr_repositories_not_publicly_accessible/ecr_repositories_not_publicly_accessible_test.py
    +++ b/tests/providers/aws/services/ecr/ecr_repositories_not_publicly_accessible/ecr_repositories_not_publicly_accessible_test.py
    @@ -1,14 +1,12 @@
     from unittest import mock
     
    -from boto3 import session
    -
    -from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info
     from prowler.providers.aws.services.ecr.ecr_service import Registry, Repository
    -from prowler.providers.common.models import Audit_Metadata
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_ACCOUNT_NUMBER,
    +    AWS_REGION_EU_WEST_1,
    +    set_mocked_aws_audit_info,
    +)
     
    -# Mock Test Region
    -AWS_REGION = "eu-west-1"
    -AWS_ACCOUNT_NUMBER = "123456789012"
     repository_name = "test_repo"
     repository_arn = (
         f"arn:aws:ecr:eu-west-1:{AWS_ACCOUNT_NUMBER}:repository/{repository_name}"
    @@ -40,35 +38,6 @@
     
     class Test_ecr_repositories_not_publicly_accessible:
         # 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=None,
    -            audited_account_arn=None,
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=None,
    -            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
     
         def test_no_registries(self):
             ecr_client = mock.MagicMock
    @@ -76,7 +45,7 @@ def test_no_registries(self):
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    -            self.set_mocked_audit_info(),
    +            set_mocked_aws_audit_info(),
             ), mock.patch(
                 "prowler.providers.aws.services.ecr.ecr_repositories_not_publicly_accessible.ecr_repositories_not_publicly_accessible.ecr_client",
                 ecr_client,
    @@ -92,9 +61,9 @@ def test_no_registries(self):
         def test_registry_no_repositories(self):
             ecr_client = mock.MagicMock
             ecr_client.registries = {}
    -        ecr_client.registries[AWS_REGION] = Registry(
    +        ecr_client.registries[AWS_REGION_EU_WEST_1] = Registry(
                 id=AWS_ACCOUNT_NUMBER,
    -            region=AWS_REGION,
    +            region=AWS_REGION_EU_WEST_1,
                 scan_type="BASIC",
                 repositories=[],
                 rules=[],
    @@ -102,7 +71,7 @@ def test_registry_no_repositories(self):
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    -            self.set_mocked_audit_info(),
    +            set_mocked_aws_audit_info(),
             ), mock.patch(
                 "prowler.providers.aws.services.ecr.ecr_repositories_not_publicly_accessible.ecr_repositories_not_publicly_accessible.ecr_client",
                 ecr_client,
    @@ -118,15 +87,15 @@ def test_registry_no_repositories(self):
         def test_repository_not_public(self):
             ecr_client = mock.MagicMock
             ecr_client.registries = {}
    -        ecr_client.registries[AWS_REGION] = Registry(
    +        ecr_client.registries[AWS_REGION_EU_WEST_1] = Registry(
                 id=AWS_ACCOUNT_NUMBER,
    -            region=AWS_REGION,
    +            region=AWS_REGION_EU_WEST_1,
                 scan_type="BASIC",
                 repositories=[
                     Repository(
                         name=repository_name,
                         arn=repository_arn,
    -                    region=AWS_REGION,
    +                    region=AWS_REGION_EU_WEST_1,
                         scan_on_push=True,
                         policy=repo_policy_not_public,
                         images_details=None,
    @@ -138,7 +107,7 @@ def test_repository_not_public(self):
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    -            self.set_mocked_audit_info(),
    +            set_mocked_aws_audit_info(),
             ), mock.patch(
                 "prowler.providers.aws.services.ecr.ecr_repositories_not_publicly_accessible.ecr_repositories_not_publicly_accessible.ecr_client",
                 ecr_client,
    @@ -161,15 +130,15 @@ def test_repository_not_public(self):
         def test_repository_public(self):
             ecr_client = mock.MagicMock
             ecr_client.registries = {}
    -        ecr_client.registries[AWS_REGION] = Registry(
    +        ecr_client.registries[AWS_REGION_EU_WEST_1] = Registry(
                 id=AWS_ACCOUNT_NUMBER,
    -            region=AWS_REGION,
    +            region=AWS_REGION_EU_WEST_1,
                 scan_type="BASIC",
                 repositories=[
                     Repository(
                         name=repository_name,
                         arn=repository_arn,
    -                    region=AWS_REGION,
    +                    region=AWS_REGION_EU_WEST_1,
                         scan_on_push=True,
                         policy=repo_policy_public,
                         images_details=None,
    @@ -181,7 +150,7 @@ def test_repository_public(self):
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    -            self.set_mocked_audit_info(),
    +            set_mocked_aws_audit_info(),
             ), mock.patch(
                 "prowler.providers.aws.services.ecr.ecr_repositories_not_publicly_accessible.ecr_repositories_not_publicly_accessible.ecr_client",
                 ecr_client,
    diff --git a/tests/providers/aws/services/ecr/ecr_repositories_scan_images_on_push_enabled/ecr_repositories_scan_images_on_push_enabled_test.py b/tests/providers/aws/services/ecr/ecr_repositories_scan_images_on_push_enabled/ecr_repositories_scan_images_on_push_enabled_test.py
    index 16a7cb2ac0e..3b26963eb8b 100644
    --- a/tests/providers/aws/services/ecr/ecr_repositories_scan_images_on_push_enabled/ecr_repositories_scan_images_on_push_enabled_test.py
    +++ b/tests/providers/aws/services/ecr/ecr_repositories_scan_images_on_push_enabled/ecr_repositories_scan_images_on_push_enabled_test.py
    @@ -1,14 +1,12 @@
     from unittest import mock
     
    -from boto3 import session
    -
    -from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info
     from prowler.providers.aws.services.ecr.ecr_service import Registry, Repository
    -from prowler.providers.common.models import Audit_Metadata
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_ACCOUNT_NUMBER,
    +    AWS_REGION_EU_WEST_1,
    +    set_mocked_aws_audit_info,
    +)
     
    -# Mock Test Region
    -AWS_REGION = "eu-west-1"
    -AWS_ACCOUNT_NUMBER = "123456789012"
     repository_name = "test_repo"
     repository_arn = (
         f"arn:aws:ecr:eu-west-1:{AWS_ACCOUNT_NUMBER}:repository/{repository_name}"
    @@ -28,35 +26,6 @@
     
     class Test_ecr_repositories_scan_images_on_push_enabled:
         # 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=None,
    -            audited_account_arn=None,
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=None,
    -            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
     
         def test_no_registries(self):
             ecr_client = mock.MagicMock
    @@ -64,7 +33,7 @@ def test_no_registries(self):
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    -            self.set_mocked_audit_info(),
    +            set_mocked_aws_audit_info(),
             ), mock.patch(
                 "prowler.providers.aws.services.ecr.ecr_repositories_scan_images_on_push_enabled.ecr_repositories_scan_images_on_push_enabled.ecr_client",
                 ecr_client,
    @@ -80,9 +49,9 @@ def test_no_registries(self):
         def test_registry_no_repositories(self):
             ecr_client = mock.MagicMock
             ecr_client.registries = {}
    -        ecr_client.registries[AWS_REGION] = Registry(
    +        ecr_client.registries[AWS_REGION_EU_WEST_1] = Registry(
                 id=AWS_ACCOUNT_NUMBER,
    -            region=AWS_REGION,
    +            region=AWS_REGION_EU_WEST_1,
                 scan_type="BASIC",
                 repositories=[],
                 rules=[],
    @@ -90,7 +59,7 @@ def test_registry_no_repositories(self):
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    -            self.set_mocked_audit_info(),
    +            set_mocked_aws_audit_info(),
             ), mock.patch(
                 "prowler.providers.aws.services.ecr.ecr_repositories_scan_images_on_push_enabled.ecr_repositories_scan_images_on_push_enabled.ecr_client",
                 ecr_client,
    @@ -106,15 +75,15 @@ def test_registry_no_repositories(self):
         def test_scan_on_push_disabled(self):
             ecr_client = mock.MagicMock
             ecr_client.registries = {}
    -        ecr_client.registries[AWS_REGION] = Registry(
    +        ecr_client.registries[AWS_REGION_EU_WEST_1] = Registry(
                 id=AWS_ACCOUNT_NUMBER,
    -            region=AWS_REGION,
    +            region=AWS_REGION_EU_WEST_1,
                 scan_type="BASIC",
                 repositories=[
                     Repository(
                         name=repository_name,
                         arn=repository_arn,
    -                    region=AWS_REGION,
    +                    region=AWS_REGION_EU_WEST_1,
                         scan_on_push=True,
                         policy=repo_policy_public,
                         images_details=None,
    @@ -126,7 +95,7 @@ def test_scan_on_push_disabled(self):
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    -            self.set_mocked_audit_info(),
    +            set_mocked_aws_audit_info(),
             ), mock.patch(
                 "prowler.providers.aws.services.ecr.ecr_repositories_scan_images_on_push_enabled.ecr_repositories_scan_images_on_push_enabled.ecr_client",
                 ecr_client,
    @@ -149,15 +118,15 @@ def test_scan_on_push_disabled(self):
         def test_scan_on_push_enabled(self):
             ecr_client = mock.MagicMock
             ecr_client.registries = {}
    -        ecr_client.registries[AWS_REGION] = Registry(
    +        ecr_client.registries[AWS_REGION_EU_WEST_1] = Registry(
                 id=AWS_ACCOUNT_NUMBER,
    -            region=AWS_REGION,
    +            region=AWS_REGION_EU_WEST_1,
                 scan_type="BASIC",
                 repositories=[
                     Repository(
                         name=repository_name,
                         arn=repository_arn,
    -                    region=AWS_REGION,
    +                    region=AWS_REGION_EU_WEST_1,
                         scan_on_push=False,
                         policy=repo_policy_public,
                         images_details=None,
    @@ -169,7 +138,7 @@ def test_scan_on_push_enabled(self):
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    -            self.set_mocked_audit_info(),
    +            set_mocked_aws_audit_info(),
             ), mock.patch(
                 "prowler.providers.aws.services.ecr.ecr_repositories_scan_images_on_push_enabled.ecr_repositories_scan_images_on_push_enabled.ecr_client",
                 ecr_client,
    diff --git a/tests/providers/aws/services/ecr/ecr_repositories_scan_vulnerabilities_in_latest_image/ecr_repositories_scan_vulnerabilities_in_latest_image_test.py b/tests/providers/aws/services/ecr/ecr_repositories_scan_vulnerabilities_in_latest_image/ecr_repositories_scan_vulnerabilities_in_latest_image_test.py
    index 5fc626831f8..a6bd756c96f 100644
    --- a/tests/providers/aws/services/ecr/ecr_repositories_scan_vulnerabilities_in_latest_image/ecr_repositories_scan_vulnerabilities_in_latest_image_test.py
    +++ b/tests/providers/aws/services/ecr/ecr_repositories_scan_vulnerabilities_in_latest_image/ecr_repositories_scan_vulnerabilities_in_latest_image_test.py
    @@ -1,20 +1,18 @@
     from datetime import datetime
     from unittest import mock
     
    -from boto3 import session
    -
    -from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info
     from prowler.providers.aws.services.ecr.ecr_service import (
         FindingSeverityCounts,
         ImageDetails,
         Registry,
         Repository,
     )
    -from prowler.providers.common.models import Audit_Metadata
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_ACCOUNT_NUMBER,
    +    AWS_REGION_EU_WEST_1,
    +    set_mocked_aws_audit_info,
    +)
     
    -# Mock Test Region
    -AWS_REGION = "eu-west-1"
    -AWS_ACCOUNT_NUMBER = "123456789012"
     repository_name = "test_repo"
     repository_arn = (
         f"arn:aws:ecr:eu-west-1:{AWS_ACCOUNT_NUMBER}:repository/{repository_name}"
    @@ -35,35 +33,6 @@
     
     class Test_ecr_repositories_scan_vulnerabilities_in_latest_image:
         # 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=None,
    -            audited_account_arn=None,
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=None,
    -            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
     
         def test_no_registries(self):
             ecr_client = mock.MagicMock
    @@ -72,7 +41,7 @@ def test_no_registries(self):
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    -            self.set_mocked_audit_info(),
    +            set_mocked_aws_audit_info(),
             ), mock.patch(
                 "prowler.providers.aws.services.ecr.ecr_repositories_scan_vulnerabilities_in_latest_image.ecr_repositories_scan_vulnerabilities_in_latest_image.ecr_client",
                 ecr_client,
    @@ -88,9 +57,9 @@ def test_no_registries(self):
         def test_registry_no_repositories(self):
             ecr_client = mock.MagicMock
             ecr_client.registries = {}
    -        ecr_client.registries[AWS_REGION] = Registry(
    +        ecr_client.registries[AWS_REGION_EU_WEST_1] = Registry(
                 id=AWS_ACCOUNT_NUMBER,
    -            region=AWS_REGION,
    +            region=AWS_REGION_EU_WEST_1,
                 scan_type="BASIC",
                 repositories=[],
                 rules=[],
    @@ -99,7 +68,7 @@ def test_registry_no_repositories(self):
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    -            self.set_mocked_audit_info(),
    +            set_mocked_aws_audit_info(),
             ), mock.patch(
                 "prowler.providers.aws.services.ecr.ecr_repositories_scan_vulnerabilities_in_latest_image.ecr_repositories_scan_vulnerabilities_in_latest_image.ecr_client",
                 ecr_client,
    @@ -115,15 +84,15 @@ def test_registry_no_repositories(self):
         def test_empty_repository(self):
             ecr_client = mock.MagicMock
             ecr_client.registries = {}
    -        ecr_client.registries[AWS_REGION] = Registry(
    +        ecr_client.registries[AWS_REGION_EU_WEST_1] = Registry(
                 id=AWS_ACCOUNT_NUMBER,
    -            region=AWS_REGION,
    +            region=AWS_REGION_EU_WEST_1,
                 scan_type="BASIC",
                 repositories=[
                     Repository(
                         name=repository_name,
                         arn=repository_arn,
    -                    region=AWS_REGION,
    +                    region=AWS_REGION_EU_WEST_1,
                         scan_on_push=True,
                         policy=repo_policy_public,
                         images_details=[],
    @@ -136,7 +105,7 @@ def test_empty_repository(self):
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    -            self.set_mocked_audit_info(),
    +            set_mocked_aws_audit_info(),
             ), mock.patch(
                 "prowler.providers.aws.services.ecr.ecr_repositories_scan_vulnerabilities_in_latest_image.ecr_repositories_scan_vulnerabilities_in_latest_image.ecr_client",
                 ecr_client,
    @@ -152,15 +121,15 @@ def test_empty_repository(self):
         def test_image_scaned_without_findings(self):
             ecr_client = mock.MagicMock
             ecr_client.registries = {}
    -        ecr_client.registries[AWS_REGION] = Registry(
    +        ecr_client.registries[AWS_REGION_EU_WEST_1] = Registry(
                 id=AWS_ACCOUNT_NUMBER,
    -            region=AWS_REGION,
    +            region=AWS_REGION_EU_WEST_1,
                 scan_type="BASIC",
                 repositories=[
                     Repository(
                         name=repository_name,
                         arn=repository_arn,
    -                    region=AWS_REGION,
    +                    region=AWS_REGION_EU_WEST_1,
                         scan_on_push=True,
                         policy=repo_policy_public,
                         images_details=[
    @@ -183,7 +152,7 @@ def test_image_scaned_without_findings(self):
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    -            self.set_mocked_audit_info(),
    +            set_mocked_aws_audit_info(),
             ), mock.patch(
                 "prowler.providers.aws.services.ecr.ecr_repositories_scan_vulnerabilities_in_latest_image.ecr_repositories_scan_vulnerabilities_in_latest_image.ecr_client",
                 ecr_client,
    @@ -206,15 +175,15 @@ def test_image_scaned_without_findings(self):
         def test_image_scanned_with_findings_default_severity_MEDIUM(self):
             ecr_client = mock.MagicMock
             ecr_client.registries = {}
    -        ecr_client.registries[AWS_REGION] = Registry(
    +        ecr_client.registries[AWS_REGION_EU_WEST_1] = Registry(
                 id=AWS_ACCOUNT_NUMBER,
    -            region=AWS_REGION,
    +            region=AWS_REGION_EU_WEST_1,
                 scan_type="BASIC",
                 repositories=[
                     Repository(
                         name=repository_name,
                         arn=repository_arn,
    -                    region=AWS_REGION,
    +                    region=AWS_REGION_EU_WEST_1,
                         scan_on_push=True,
                         policy=repo_policy_public,
                         images_details=[
    @@ -241,7 +210,7 @@ def test_image_scanned_with_findings_default_severity_MEDIUM(self):
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    -            self.set_mocked_audit_info(),
    +            set_mocked_aws_audit_info(),
             ), mock.patch(
                 "prowler.providers.aws.services.ecr.ecr_repositories_scan_vulnerabilities_in_latest_image.ecr_repositories_scan_vulnerabilities_in_latest_image.ecr_client",
                 ecr_client,
    @@ -264,15 +233,15 @@ def test_image_scanned_with_findings_default_severity_MEDIUM(self):
         def test_image_scanned_with_findings_default_severity_HIGH(self):
             ecr_client = mock.MagicMock
             ecr_client.registries = {}
    -        ecr_client.registries[AWS_REGION] = Registry(
    +        ecr_client.registries[AWS_REGION_EU_WEST_1] = Registry(
                 id=AWS_ACCOUNT_NUMBER,
    -            region=AWS_REGION,
    +            region=AWS_REGION_EU_WEST_1,
                 scan_type="BASIC",
                 repositories=[
                     Repository(
                         name=repository_name,
                         arn=repository_arn,
    -                    region=AWS_REGION,
    +                    region=AWS_REGION_EU_WEST_1,
                         scan_on_push=True,
                         policy=repo_policy_public,
                         images_details=[
    @@ -299,7 +268,7 @@ def test_image_scanned_with_findings_default_severity_HIGH(self):
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    -            self.set_mocked_audit_info(),
    +            set_mocked_aws_audit_info(),
             ), mock.patch(
                 "prowler.providers.aws.services.ecr.ecr_repositories_scan_vulnerabilities_in_latest_image.ecr_repositories_scan_vulnerabilities_in_latest_image.ecr_client",
                 ecr_client,
    @@ -322,15 +291,15 @@ def test_image_scanned_with_findings_default_severity_HIGH(self):
         def test_image_scanned_with_findings_default_severity_CRITICAL(self):
             ecr_client = mock.MagicMock
             ecr_client.registries = {}
    -        ecr_client.registries[AWS_REGION] = Registry(
    +        ecr_client.registries[AWS_REGION_EU_WEST_1] = Registry(
                 id=AWS_ACCOUNT_NUMBER,
    -            region=AWS_REGION,
    +            region=AWS_REGION_EU_WEST_1,
                 scan_type="BASIC",
                 repositories=[
                     Repository(
                         name=repository_name,
                         arn=repository_arn,
    -                    region=AWS_REGION,
    +                    region=AWS_REGION_EU_WEST_1,
                         scan_on_push=True,
                         policy=repo_policy_public,
                         images_details=[
    @@ -357,7 +326,7 @@ def test_image_scanned_with_findings_default_severity_CRITICAL(self):
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    -            self.set_mocked_audit_info(),
    +            set_mocked_aws_audit_info(),
             ), mock.patch(
                 "prowler.providers.aws.services.ecr.ecr_repositories_scan_vulnerabilities_in_latest_image.ecr_repositories_scan_vulnerabilities_in_latest_image.ecr_client",
                 ecr_client,
    @@ -380,15 +349,15 @@ def test_image_scanned_with_findings_default_severity_CRITICAL(self):
         def test_image_scanned_without_CRITICAL_findings_default_severity_CRITICAL(self):
             ecr_client = mock.MagicMock
             ecr_client.registries = {}
    -        ecr_client.registries[AWS_REGION] = Registry(
    +        ecr_client.registries[AWS_REGION_EU_WEST_1] = Registry(
                 id=AWS_ACCOUNT_NUMBER,
    -            region=AWS_REGION,
    +            region=AWS_REGION_EU_WEST_1,
                 scan_type="BASIC",
                 repositories=[
                     Repository(
                         name=repository_name,
                         arn=repository_arn,
    -                    region=AWS_REGION,
    +                    region=AWS_REGION_EU_WEST_1,
                         scan_on_push=True,
                         policy=repo_policy_public,
                         images_details=[
    @@ -415,7 +384,7 @@ def test_image_scanned_without_CRITICAL_findings_default_severity_CRITICAL(self)
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    -            self.set_mocked_audit_info(),
    +            set_mocked_aws_audit_info(),
             ), mock.patch(
                 "prowler.providers.aws.services.ecr.ecr_repositories_scan_vulnerabilities_in_latest_image.ecr_repositories_scan_vulnerabilities_in_latest_image.ecr_client",
                 ecr_client,
    @@ -440,15 +409,15 @@ def test_image_scanned_without_CRITICAL_and_HIGH_findings_default_severity_HIGH(
         ):
             ecr_client = mock.MagicMock
             ecr_client.registries = {}
    -        ecr_client.registries[AWS_REGION] = Registry(
    +        ecr_client.registries[AWS_REGION_EU_WEST_1] = Registry(
                 id=AWS_ACCOUNT_NUMBER,
    -            region=AWS_REGION,
    +            region=AWS_REGION_EU_WEST_1,
                 scan_type="BASIC",
                 repositories=[
                     Repository(
                         name=repository_name,
                         arn=repository_arn,
    -                    region=AWS_REGION,
    +                    region=AWS_REGION_EU_WEST_1,
                         scan_on_push=True,
                         policy=repo_policy_public,
                         images_details=[
    @@ -475,7 +444,7 @@ def test_image_scanned_without_CRITICAL_and_HIGH_findings_default_severity_HIGH(
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    -            self.set_mocked_audit_info(),
    +            set_mocked_aws_audit_info(),
             ), mock.patch(
                 "prowler.providers.aws.services.ecr.ecr_repositories_scan_vulnerabilities_in_latest_image.ecr_repositories_scan_vulnerabilities_in_latest_image.ecr_client",
                 ecr_client,
    @@ -498,15 +467,15 @@ def test_image_scanned_without_CRITICAL_and_HIGH_findings_default_severity_HIGH(
         def test_image_scanned_fail_scan(self):
             ecr_client = mock.MagicMock
             ecr_client.registries = {}
    -        ecr_client.registries[AWS_REGION] = Registry(
    +        ecr_client.registries[AWS_REGION_EU_WEST_1] = Registry(
                 id=AWS_ACCOUNT_NUMBER,
    -            region=AWS_REGION,
    +            region=AWS_REGION_EU_WEST_1,
                 scan_type="BASIC",
                 repositories=[
                     Repository(
                         name=repository_name,
                         arn=repository_arn,
    -                    region=AWS_REGION,
    +                    region=AWS_REGION_EU_WEST_1,
                         scan_on_push=True,
                         policy=repo_policy_public,
                         images_details=[
    @@ -529,7 +498,7 @@ def test_image_scanned_fail_scan(self):
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    -            self.set_mocked_audit_info(),
    +            set_mocked_aws_audit_info(),
             ), mock.patch(
                 "prowler.providers.aws.services.ecr.ecr_repositories_scan_vulnerabilities_in_latest_image.ecr_repositories_scan_vulnerabilities_in_latest_image.ecr_client",
                 ecr_client,
    @@ -552,15 +521,15 @@ def test_image_scanned_fail_scan(self):
         def test_image_not_scanned(self):
             ecr_client = mock.MagicMock
             ecr_client.registries = {}
    -        ecr_client.registries[AWS_REGION] = Registry(
    +        ecr_client.registries[AWS_REGION_EU_WEST_1] = Registry(
                 id=AWS_ACCOUNT_NUMBER,
    -            region=AWS_REGION,
    +            region=AWS_REGION_EU_WEST_1,
                 scan_type="BASIC",
                 repositories=[
                     Repository(
                         name=repository_name,
                         arn=repository_arn,
    -                    region=AWS_REGION,
    +                    region=AWS_REGION_EU_WEST_1,
                         scan_on_push=True,
                         policy=repo_policy_public,
                         images_details=[
    @@ -583,7 +552,7 @@ def test_image_not_scanned(self):
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    -            self.set_mocked_audit_info(),
    +            set_mocked_aws_audit_info(),
             ), mock.patch(
                 "prowler.providers.aws.services.ecr.ecr_repositories_scan_vulnerabilities_in_latest_image.ecr_repositories_scan_vulnerabilities_in_latest_image.ecr_client",
                 ecr_client,
    diff --git a/tests/providers/aws/services/ecr/ecr_service_test.py b/tests/providers/aws/services/ecr/ecr_service_test.py
    index f05961a9bad..7e3605fd418 100644
    --- a/tests/providers/aws/services/ecr/ecr_service_test.py
    +++ b/tests/providers/aws/services/ecr/ecr_service_test.py
    @@ -2,15 +2,15 @@
     from unittest.mock import patch
     
     import botocore
    -from boto3 import client, session
    -from moto import mock_ecr
    +from boto3 import client
    +from moto import mock_aws
     
    -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"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_ACCOUNT_NUMBER,
    +    AWS_REGION_EU_WEST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     repo_arn = f"arn:aws:ecr:eu-west-1:{AWS_ACCOUNT_NUMBER}:repository/test-repo"
     repo_name = "test-repo"
    @@ -82,10 +82,12 @@ 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, _):
    -    regional_client = audit_info.audit_session.client(service, region_name=AWS_REGION)
    -    regional_client.region = AWS_REGION
    -    return {AWS_REGION: regional_client}
    +def mock_generate_regional_clients(service, audit_info):
    +    regional_client = audit_info.audit_session.client(
    +        service, region_name=AWS_REGION_EU_WEST_1
    +    )
    +    regional_client.region = AWS_REGION_EU_WEST_1
    +    return {AWS_REGION_EU_WEST_1: regional_client}
     
     
     # Patch every AWS call using Boto3 and generate_regional_clients to have 1 client
    @@ -95,60 +97,29 @@ def mock_generate_regional_clients(service, audit_info, _):
         new=mock_generate_regional_clients,
     )
     class Test_ECR_Service:
    -    # 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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=None,
    -            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
    -
         # Test ECR Service
         def test_service(self):
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info()
             ecr = ECR(audit_info)
             assert ecr.service == "ecr"
     
         # Test ECR client
         def test_client(self):
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info()
             ecr = ECR(audit_info)
             for regional_client in ecr.regional_clients.values():
                 assert regional_client.__class__.__name__ == "ECR"
     
         # Test ECR session
         def test__get_session__(self):
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info()
             ecr = ECR(audit_info)
             assert ecr.session.__class__.__name__ == "Session"
     
         # Test describe ECR repositories
    -    @mock_ecr
    +    @mock_aws
         def test__describe_registries_and_repositories__(self):
    -        ecr_client = client("ecr", region_name=AWS_REGION)
    +        ecr_client = client("ecr", region_name=AWS_REGION_EU_WEST_1)
             ecr_client.create_repository(
                 repositoryName=repo_name,
                 imageScanningConfiguration={"scanOnPush": True},
    @@ -156,131 +127,144 @@ def test__describe_registries_and_repositories__(self):
                     {"Key": "test", "Value": "test"},
                 ],
             )
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info()
             ecr = ECR(audit_info)
     
             assert len(ecr.registries) == 1
    -        assert ecr.registries[AWS_REGION].id == AWS_ACCOUNT_NUMBER
    -        assert ecr.registries[AWS_REGION].region == AWS_REGION
    -        assert len(ecr.registries[AWS_REGION].repositories) == 1
    +        assert ecr.registries[AWS_REGION_EU_WEST_1].id == AWS_ACCOUNT_NUMBER
    +        assert ecr.registries[AWS_REGION_EU_WEST_1].region == AWS_REGION_EU_WEST_1
    +        assert len(ecr.registries[AWS_REGION_EU_WEST_1].repositories) == 1
     
    -        assert ecr.registries[AWS_REGION].repositories[0].name == repo_name
    -        assert ecr.registries[AWS_REGION].repositories[0].arn == repo_arn
    -        assert ecr.registries[AWS_REGION].repositories[0].scan_on_push
    -        assert ecr.registries[AWS_REGION].repositories[0].tags == [
    +        assert ecr.registries[AWS_REGION_EU_WEST_1].repositories[0].name == repo_name
    +        assert ecr.registries[AWS_REGION_EU_WEST_1].repositories[0].arn == repo_arn
    +        assert ecr.registries[AWS_REGION_EU_WEST_1].repositories[0].scan_on_push
    +        assert ecr.registries[AWS_REGION_EU_WEST_1].repositories[0].tags == [
                 {"Key": "test", "Value": "test"},
             ]
     
         # Test describe ECR repository policies
    -    @mock_ecr
    +    @mock_aws
         def test__describe_repository_policies__(self):
    -        ecr_client = client("ecr", region_name=AWS_REGION)
    +        ecr_client = client("ecr", region_name=AWS_REGION_EU_WEST_1)
             ecr_client.create_repository(
                 repositoryName=repo_name,
                 imageScanningConfiguration={"scanOnPush": True},
             )
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info()
             ecr = ECR(audit_info)
             assert len(ecr.registries) == 1
    -        assert len(ecr.registries[AWS_REGION].repositories) == 1
    -        assert ecr.registries[AWS_REGION].repositories[0].name == repo_name
    -        assert ecr.registries[AWS_REGION].repositories[0].arn == repo_arn
    -        assert ecr.registries[AWS_REGION].repositories[0].scan_on_push
    +        assert len(ecr.registries[AWS_REGION_EU_WEST_1].repositories) == 1
    +        assert ecr.registries[AWS_REGION_EU_WEST_1].repositories[0].name == repo_name
    +        assert ecr.registries[AWS_REGION_EU_WEST_1].repositories[0].arn == repo_arn
    +        assert ecr.registries[AWS_REGION_EU_WEST_1].repositories[0].scan_on_push
             assert (
    -            ecr.registries[AWS_REGION].repositories[0].policy["Statement"][0]["Sid"]
    +            ecr.registries[AWS_REGION_EU_WEST_1]
    +            .repositories[0]
    +            .policy["Statement"][0]["Sid"]
                 == "Allow Describe Images"
             )
             assert (
    -            ecr.registries[AWS_REGION].repositories[0].policy["Statement"][0]["Effect"]
    +            ecr.registries[AWS_REGION_EU_WEST_1]
    +            .repositories[0]
    +            .policy["Statement"][0]["Effect"]
                 == "Allow"
             )
             assert (
    -            ecr.registries[AWS_REGION]
    +            ecr.registries[AWS_REGION_EU_WEST_1]
                 .repositories[0]
                 .policy["Statement"][0]["Principal"]["AWS"][0]
                 == f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root"
             )
             assert (
    -            ecr.registries[AWS_REGION]
    +            ecr.registries[AWS_REGION_EU_WEST_1]
                 .repositories[0]
                 .policy["Statement"][0]["Action"][0]
                 == "ecr:DescribeImages"
             )
             assert (
    -            ecr.registries[AWS_REGION]
    +            ecr.registries[AWS_REGION_EU_WEST_1]
                 .repositories[0]
                 .policy["Statement"][0]["Action"][1]
                 == "ecr:DescribeRepositories"
             )
     
         # Test describe ECR repository lifecycle policies
    -    @mock_ecr
    +    @mock_aws
         def test__get_lifecycle_policies__(self):
    -        ecr_client = client("ecr", region_name=AWS_REGION)
    +        ecr_client = client("ecr", region_name=AWS_REGION_EU_WEST_1)
             ecr_client.create_repository(
                 repositoryName=repo_name,
                 imageScanningConfiguration={"scanOnPush": True},
             )
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info()
             ecr = ECR(audit_info)
             assert len(ecr.registries) == 1
    -        assert len(ecr.registries[AWS_REGION].repositories) == 1
    -        assert ecr.registries[AWS_REGION].repositories[0].name == repo_name
    -        assert ecr.registries[AWS_REGION].repositories[0].arn == repo_arn
    -        assert ecr.registries[AWS_REGION].repositories[0].scan_on_push
    -        assert ecr.registries[AWS_REGION].repositories[0].lifecycle_policy
    +        assert len(ecr.registries[AWS_REGION_EU_WEST_1].repositories) == 1
    +        assert ecr.registries[AWS_REGION_EU_WEST_1].repositories[0].name == repo_name
    +        assert ecr.registries[AWS_REGION_EU_WEST_1].repositories[0].arn == repo_arn
    +        assert ecr.registries[AWS_REGION_EU_WEST_1].repositories[0].scan_on_push
    +        assert ecr.registries[AWS_REGION_EU_WEST_1].repositories[0].lifecycle_policy
     
         # Test get image details
    -    @mock_ecr
    +    @mock_aws
         def test__get_image_details__(self):
    -        ecr_client = client("ecr", region_name=AWS_REGION)
    +        ecr_client = client("ecr", region_name=AWS_REGION_EU_WEST_1)
             ecr_client.create_repository(
                 repositoryName=repo_name,
                 imageScanningConfiguration={"scanOnPush": True},
             )
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info()
             ecr = ECR(audit_info)
             assert len(ecr.registries) == 1
    -        assert len(ecr.registries[AWS_REGION].repositories) == 1
    -        assert ecr.registries[AWS_REGION].repositories[0].name == repo_name
    -        assert ecr.registries[AWS_REGION].repositories[0].arn == repo_arn
    -        assert ecr.registries[AWS_REGION].repositories[0].scan_on_push
    -        assert len(ecr.registries[AWS_REGION].repositories[0].images_details) == 2
    +        assert len(ecr.registries[AWS_REGION_EU_WEST_1].repositories) == 1
    +        assert ecr.registries[AWS_REGION_EU_WEST_1].repositories[0].name == repo_name
    +        assert ecr.registries[AWS_REGION_EU_WEST_1].repositories[0].arn == repo_arn
    +        assert ecr.registries[AWS_REGION_EU_WEST_1].repositories[0].scan_on_push
    +        assert (
    +            len(ecr.registries[AWS_REGION_EU_WEST_1].repositories[0].images_details)
    +            == 2
    +        )
             # First image pushed
    -        assert ecr.registries[AWS_REGION].repositories[0].images_details[
    +        assert ecr.registries[AWS_REGION_EU_WEST_1].repositories[0].images_details[
                 0
             ].image_pushed_at == datetime(2023, 1, 1)
             assert (
    -            ecr.registries[AWS_REGION].repositories[0].images_details[0].latest_tag
    +            ecr.registries[AWS_REGION_EU_WEST_1]
    +            .repositories[0]
    +            .images_details[0]
    +            .latest_tag
                 == "test-tag1"
             )
             assert (
    -            ecr.registries[AWS_REGION].repositories[0].images_details[0].latest_digest
    +            ecr.registries[AWS_REGION_EU_WEST_1]
    +            .repositories[0]
    +            .images_details[0]
    +            .latest_digest
                 == "sha256:d8868e50ac4c7104d2200d42f432b661b2da8c1e417ccfae217e6a1e04bb9295"
             )
             assert (
    -            ecr.registries[AWS_REGION]
    +            ecr.registries[AWS_REGION_EU_WEST_1]
                 .repositories[0]
                 .images_details[0]
                 .scan_findings_status
                 == "COMPLETE"
             )
             assert (
    -            ecr.registries[AWS_REGION]
    +            ecr.registries[AWS_REGION_EU_WEST_1]
                 .repositories[0]
                 .images_details[0]
                 .scan_findings_severity_count.critical
                 == 1
             )
             assert (
    -            ecr.registries[AWS_REGION]
    +            ecr.registries[AWS_REGION_EU_WEST_1]
                 .repositories[0]
                 .images_details[0]
                 .scan_findings_severity_count.high
                 == 2
             )
             assert (
    -            ecr.registries[AWS_REGION]
    +            ecr.registries[AWS_REGION_EU_WEST_1]
                 .repositories[0]
                 .images_details[0]
                 .scan_findings_severity_count.medium
    @@ -288,40 +272,46 @@ def test__get_image_details__(self):
             )
     
             # Second image pushed
    -        assert ecr.registries[AWS_REGION].repositories[0].images_details[
    +        assert ecr.registries[AWS_REGION_EU_WEST_1].repositories[0].images_details[
                 1
             ].image_pushed_at == datetime(2023, 1, 2)
             assert (
    -            ecr.registries[AWS_REGION].repositories[0].images_details[1].latest_tag
    +            ecr.registries[AWS_REGION_EU_WEST_1]
    +            .repositories[0]
    +            .images_details[1]
    +            .latest_tag
                 == "test-tag2"
             )
             assert (
    -            ecr.registries[AWS_REGION].repositories[0].images_details[1].latest_digest
    +            ecr.registries[AWS_REGION_EU_WEST_1]
    +            .repositories[0]
    +            .images_details[1]
    +            .latest_digest
                 == "sha256:83251ac64627fc331584f6c498b3aba5badc01574e2c70b2499af3af16630eed"
             )
             assert (
    -            ecr.registries[AWS_REGION]
    +            ecr.registries[AWS_REGION_EU_WEST_1]
                 .repositories[0]
                 .images_details[1]
                 .scan_findings_status
                 == "COMPLETE"
             )
             assert (
    -            ecr.registries[AWS_REGION]
    +            ecr.registries[AWS_REGION_EU_WEST_1]
                 .repositories[0]
                 .images_details[1]
                 .scan_findings_severity_count.critical
                 == 1
             )
             assert (
    -            ecr.registries[AWS_REGION]
    +            ecr.registries[AWS_REGION_EU_WEST_1]
                 .repositories[0]
                 .images_details[1]
                 .scan_findings_severity_count.high
                 == 2
             )
             assert (
    -            ecr.registries[AWS_REGION]
    +            ecr.registries[AWS_REGION_EU_WEST_1]
                 .repositories[0]
                 .images_details[1]
                 .scan_findings_severity_count.medium
    @@ -329,14 +319,14 @@ def test__get_image_details__(self):
             )
     
         # Test get ECR Registries Scanning Configuration
    -    @mock_ecr
    +    @mock_aws
         def test__get_registry_scanning_configuration__(self):
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info()
             ecr = ECR(audit_info)
             assert len(ecr.registries) == 1
    -        assert ecr.registries[AWS_REGION].id == AWS_ACCOUNT_NUMBER
    -        assert ecr.registries[AWS_REGION].scan_type == "BASIC"
    -        assert ecr.registries[AWS_REGION].rules == [
    +        assert ecr.registries[AWS_REGION_EU_WEST_1].id == AWS_ACCOUNT_NUMBER
    +        assert ecr.registries[AWS_REGION_EU_WEST_1].scan_type == "BASIC"
    +        assert ecr.registries[AWS_REGION_EU_WEST_1].rules == [
                 ScanningRule(
                     scan_frequency="SCAN_ON_PUSH",
                     scan_filters=[{"filter": "*", "filterType": "WILDCARD"}],
    diff --git a/tests/providers/aws/services/ecs/ecs_service_test.py b/tests/providers/aws/services/ecs/ecs_service_test.py
    index 98d10b71b96..807ed4bb0c7 100644
    --- a/tests/providers/aws/services/ecs/ecs_service_test.py
    +++ b/tests/providers/aws/services/ecs/ecs_service_test.py
    @@ -1,20 +1,21 @@
     from unittest.mock import patch
     
    -from boto3 import client, session
    -from moto import mock_ecs
    +from boto3 import client
    +from moto import mock_aws
     
    -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"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_REGION_EU_WEST_1,
    +    set_mocked_aws_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}
    +def mock_generate_regional_clients(service, audit_info):
    +    regional_client = audit_info.audit_session.client(
    +        service, region_name=AWS_REGION_EU_WEST_1
    +    )
    +    regional_client.region = AWS_REGION_EU_WEST_1
    +    return {AWS_REGION_EU_WEST_1: regional_client}
     
     
     @patch(
    @@ -22,60 +23,29 @@ def mock_generate_regional_clients(service, audit_info, _):
         new=mock_generate_regional_clients,
     )
     class Test_ECS_Service:
    -    # 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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=None,
    -            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
    -
         # Test ECS Service
         def test_service(self):
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info()
             ecs = ECS(audit_info)
             assert ecs.service == "ecs"
     
         # Test ECS client
         def test_client(self):
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info()
             ecs = ECS(audit_info)
             for reg_client in ecs.regional_clients.values():
                 assert reg_client.__class__.__name__ == "ECS"
     
         # Test ECS session
         def test__get_session__(self):
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info()
             ecs = ECS(audit_info)
             assert ecs.session.__class__.__name__ == "Session"
     
         # Test list ECS task definitions
    -    @mock_ecs
    +    @mock_aws
         def test__list_task_definitions__(self):
    -        ecs_client = client("ecs", region_name=AWS_REGION)
    +        ecs_client = client("ecs", region_name=AWS_REGION_EU_WEST_1)
     
             definition = dict(
                 family="test_ecs_task",
    @@ -89,7 +59,7 @@ def test__list_task_definitions__(self):
             )
     
             task_definition = ecs_client.register_task_definition(**definition)
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info()
             ecs = ECS(audit_info)
     
             assert len(ecs.task_definitions) == 1
    @@ -102,10 +72,10 @@ def test__list_task_definitions__(self):
             )
             assert ecs.task_definitions[0].environment_variables == []
     
    -    @mock_ecs
    +    @mock_aws
         # Test describe ECS task definitions
         def test__describe_task_definitions__(self):
    -        ecs_client = client("ecs", region_name=AWS_REGION)
    +        ecs_client = client("ecs", region_name=AWS_REGION_EU_WEST_1)
     
             definition = dict(
                 family="test_ecs_task",
    @@ -126,7 +96,7 @@ def test__describe_task_definitions__(self):
             )
     
             task_definition = ecs_client.register_task_definition(**definition)
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info()
             ecs = ECS(audit_info)
     
             assert len(ecs.task_definitions) == 1
    diff --git a/tests/providers/aws/services/efs/efs_service_test.py b/tests/providers/aws/services/efs/efs_service_test.py
    index f484fa1f138..4f9a4026e55 100644
    --- a/tests/providers/aws/services/efs/efs_service_test.py
    +++ b/tests/providers/aws/services/efs/efs_service_test.py
    @@ -2,16 +2,15 @@
     from unittest.mock import patch
     
     import botocore
    -from boto3 import client, session
    -from moto import mock_efs
    +from boto3 import client
    +from moto import mock_aws
     
    -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"
    -AWS_ACCOUNT_NUMBER = "123456789012"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_ACCOUNT_NUMBER,
    +    AWS_REGION_EU_WEST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     # Mocking Access Analyzer Calls
     make_api_call = botocore.client.BaseClient._make_api_call
    @@ -42,10 +41,12 @@ 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, _):
    -    regional_client = audit_info.audit_session.client(service, region_name=AWS_REGION)
    -    regional_client.region = AWS_REGION
    -    return {AWS_REGION: regional_client}
    +def mock_generate_regional_clients(service, audit_info):
    +    regional_client = audit_info.audit_session.client(
    +        service, region_name=AWS_REGION_EU_WEST_1
    +    )
    +    regional_client.region = AWS_REGION_EU_WEST_1
    +    return {AWS_REGION_EU_WEST_1: regional_client}
     
     
     # Patch every AWS call using Boto3 and generate_regional_clients to have 1 client
    @@ -55,50 +56,20 @@ def mock_generate_regional_clients(service, audit_info, _):
         new=mock_generate_regional_clients,
     )
     class Test_EFS:
    -    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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=None,
    -            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
    -
         # Test EFS Session
         def test__get_session__(self):
    -        access_analyzer = EFS(self.set_mocked_audit_info())
    +        access_analyzer = EFS(set_mocked_aws_audit_info())
             assert access_analyzer.session.__class__.__name__ == "Session"
     
         # Test EFS Service
         def test__get_service__(self):
    -        access_analyzer = EFS(self.set_mocked_audit_info())
    +        access_analyzer = EFS(set_mocked_aws_audit_info())
             assert access_analyzer.service == "efs"
     
    -    @mock_efs
    +    @mock_aws
         # Test EFS describe file systems
         def test__describe_file_systems__(self):
    -        efs_client = client("efs", AWS_REGION)
    +        efs_client = client("efs", AWS_REGION_EU_WEST_1)
             efs = efs_client.create_file_system(
                 CreationToken=creation_token,
                 Encrypted=True,
    @@ -106,7 +77,7 @@ def test__describe_file_systems__(self):
                     {"Key": "test", "Value": "test"},
                 ],
             )
    -        filesystem = EFS(self.set_mocked_audit_info())
    +        filesystem = EFS(set_mocked_aws_audit_info())
             assert len(filesystem.filesystems) == 1
             assert filesystem.filesystems[0].id == efs["FileSystemId"]
             assert filesystem.filesystems[0].encrypted == efs["Encrypted"]
    @@ -114,14 +85,14 @@ def test__describe_file_systems__(self):
                 {"Key": "test", "Value": "test"},
             ]
     
    -    @mock_efs
    +    @mock_aws
         # Test EFS describe file systems
         def test__describe_file_system_policies__(self):
    -        efs_client = client("efs", AWS_REGION)
    +        efs_client = client("efs", AWS_REGION_EU_WEST_1)
             efs = efs_client.create_file_system(
                 CreationToken=creation_token, Encrypted=True
             )
    -        filesystem = EFS(self.set_mocked_audit_info())
    +        filesystem = EFS(set_mocked_aws_audit_info())
             assert len(filesystem.filesystems) == 1
             assert filesystem.filesystems[0].id == efs["FileSystemId"]
             assert filesystem.filesystems[0].encrypted == efs["Encrypted"]
    diff --git a/tests/providers/aws/services/eks/eks_cluster_kms_cmk_encryption_in_secrets_enabled/eks_cluster_kms_cmk_encryption_in_secrets_enabled_test.py b/tests/providers/aws/services/eks/eks_cluster_kms_cmk_encryption_in_secrets_enabled/eks_cluster_kms_cmk_encryption_in_secrets_enabled_test.py
    index 300a112e02d..f1edb2b70d3 100644
    --- a/tests/providers/aws/services/eks/eks_cluster_kms_cmk_encryption_in_secrets_enabled/eks_cluster_kms_cmk_encryption_in_secrets_enabled_test.py
    +++ b/tests/providers/aws/services/eks/eks_cluster_kms_cmk_encryption_in_secrets_enabled/eks_cluster_kms_cmk_encryption_in_secrets_enabled_test.py
    @@ -2,12 +2,15 @@
     from unittest import mock
     
     from prowler.providers.aws.services.eks.eks_service import EKSCluster
    -
    -AWS_REGION = "eu-west-1"
    -AWS_ACCOUNT_NUMBER = "123456789012"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_ACCOUNT_NUMBER,
    +    AWS_REGION_EU_WEST_1,
    +)
     
     cluster_name = "cluster_test"
    -cluster_arn = f"arn:aws:eks:{AWS_REGION}:{AWS_ACCOUNT_NUMBER}:cluster/{cluster_name}"
    +cluster_arn = (
    +    f"arn:aws:eks:{AWS_REGION_EU_WEST_1}:{AWS_ACCOUNT_NUMBER}:cluster/{cluster_name}"
    +)
     
     
     class Test_eks_cluster_kms_cmk_encryption_in_secrets_enabled:
    @@ -33,7 +36,7 @@ def test_not_secrets_encryption(self):
                 EKSCluster(
                     name=cluster_name,
                     arn=cluster_arn,
    -                region=AWS_REGION,
    +                region=AWS_REGION_EU_WEST_1,
                     encryptionConfig=False,
                 )
             )
    @@ -64,7 +67,7 @@ def test_secrets_encryption(self):
                 EKSCluster(
                     name=cluster_name,
                     arn=cluster_arn,
    -                region=AWS_REGION,
    +                region=AWS_REGION_EU_WEST_1,
                     encryptionConfig=True,
                 )
             )
    diff --git a/tests/providers/aws/services/eks/eks_cluster_network_policy_enabled/eks_cluster_network_policy_enabled_test.py b/tests/providers/aws/services/eks/eks_cluster_network_policy_enabled/eks_cluster_network_policy_enabled_test.py
    new file mode 100644
    index 00000000000..d1264f637d7
    --- /dev/null
    +++ b/tests/providers/aws/services/eks/eks_cluster_network_policy_enabled/eks_cluster_network_policy_enabled_test.py
    @@ -0,0 +1,96 @@
    +from unittest import mock
    +
    +from prowler.providers.aws.services.eks.eks_service import EKSCluster
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_ACCOUNT_NUMBER,
    +    AWS_REGION_EU_WEST_1,
    +)
    +
    +cluster_name = "cluster_test"
    +cluster_arn = (
    +    f"arn:aws:eks:{AWS_REGION_EU_WEST_1}:{AWS_ACCOUNT_NUMBER}:cluster/{cluster_name}"
    +)
    +
    +
    +class Test_eks_cluster_network_policy_enabled:
    +    def test_no_clusters(self):
    +        eks_client = mock.MagicMock
    +        eks_client.clusters = []
    +        with mock.patch(
    +            "prowler.providers.aws.services.eks.eks_service.EKS",
    +            eks_client,
    +        ):
    +            from prowler.providers.aws.services.eks.eks_cluster_network_policy_enabled.eks_cluster_network_policy_enabled import (
    +                eks_cluster_network_policy_enabled,
    +            )
    +
    +            check = eks_cluster_network_policy_enabled()
    +            result = check.execute()
    +            assert len(result) == 0
    +
    +    def test_cluster_without_sg(self):
    +        eks_client = mock.MagicMock
    +        eks_client.clusters = []
    +        eks_client.clusters.append(
    +            EKSCluster(
    +                name=cluster_name,
    +                arn=cluster_arn,
    +                region=AWS_REGION_EU_WEST_1,
    +                logging=None,
    +            )
    +        )
    +
    +        with mock.patch(
    +            "prowler.providers.aws.services.eks.eks_service.EKS",
    +            eks_client,
    +        ):
    +            from prowler.providers.aws.services.eks.eks_cluster_network_policy_enabled.eks_cluster_network_policy_enabled import (
    +                eks_cluster_network_policy_enabled,
    +            )
    +
    +            check = eks_cluster_network_policy_enabled()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "FAIL"
    +            assert (
    +                result[0].status_extended
    +                == f"EKS cluster {cluster_name} does not have a Network Policy. Cluster security group ID is not set."
    +            )
    +            assert result[0].resource_id == cluster_name
    +            assert result[0].resource_arn == cluster_arn
    +            assert result[0].resource_tags == []
    +            assert result[0].region == AWS_REGION_EU_WEST_1
    +
    +    def test_cluster_with_sg(self):
    +        eks_client = mock.MagicMock
    +        eks_client.clusters = []
    +        eks_client.clusters.append(
    +            EKSCluster(
    +                name=cluster_name,
    +                arn=cluster_arn,
    +                region=AWS_REGION_EU_WEST_1,
    +                logging=None,
    +                security_group_id="sg-123456789",
    +            )
    +        )
    +
    +        with mock.patch(
    +            "prowler.providers.aws.services.eks.eks_service.EKS",
    +            eks_client,
    +        ):
    +            from prowler.providers.aws.services.eks.eks_cluster_network_policy_enabled.eks_cluster_network_policy_enabled import (
    +                eks_cluster_network_policy_enabled,
    +            )
    +
    +            check = eks_cluster_network_policy_enabled()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "PASS"
    +            assert (
    +                result[0].status_extended
    +                == f"EKS cluster {cluster_name} has a Network Policy with the security group sg-123456789."
    +            )
    +            assert result[0].resource_id == cluster_name
    +            assert result[0].resource_arn == cluster_arn
    +            assert result[0].resource_tags == []
    +            assert result[0].region == AWS_REGION_EU_WEST_1
    diff --git a/tests/providers/aws/services/eks/eks_cluster_private_nodes_enabled/eks_cluster_private_nodes_enabled_test.py b/tests/providers/aws/services/eks/eks_cluster_private_nodes_enabled/eks_cluster_private_nodes_enabled_test.py
    new file mode 100644
    index 00000000000..4598c051972
    --- /dev/null
    +++ b/tests/providers/aws/services/eks/eks_cluster_private_nodes_enabled/eks_cluster_private_nodes_enabled_test.py
    @@ -0,0 +1,98 @@
    +from unittest import mock
    +
    +from prowler.providers.aws.services.eks.eks_service import EKSCluster
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_ACCOUNT_NUMBER,
    +    AWS_REGION_EU_WEST_1,
    +)
    +
    +cluster_name = "cluster_test"
    +cluster_arn = (
    +    f"arn:aws:eks:{AWS_REGION_EU_WEST_1}:{AWS_ACCOUNT_NUMBER}:cluster/{cluster_name}"
    +)
    +
    +
    +class Test_eks_cluster_private_nodes_enabled:
    +    def test_no_clusters(self):
    +        eks_client = mock.MagicMock
    +        eks_client.clusters = []
    +        with mock.patch(
    +            "prowler.providers.aws.services.eks.eks_service.EKS",
    +            eks_client,
    +        ):
    +            from prowler.providers.aws.services.eks.eks_cluster_private_nodes_enabled.eks_cluster_private_nodes_enabled import (
    +                eks_cluster_private_nodes_enabled,
    +            )
    +
    +            check = eks_cluster_private_nodes_enabled()
    +            result = check.execute()
    +            assert len(result) == 0
    +
    +    def test_cluster_with_private_nodes(self):
    +        eks_client = mock.MagicMock
    +        eks_client.clusters = []
    +        eks_client.clusters.append(
    +            EKSCluster(
    +                name=cluster_name,
    +                arn=cluster_arn,
    +                region=AWS_REGION_EU_WEST_1,
    +                logging=None,
    +                public_access_cidrs=["203.0.113.5/32"],
    +                endpoint_private_access=True,
    +            )
    +        )
    +
    +        with mock.patch(
    +            "prowler.providers.aws.services.eks.eks_service.EKS",
    +            eks_client,
    +        ):
    +            from prowler.providers.aws.services.eks.eks_cluster_private_nodes_enabled.eks_cluster_private_nodes_enabled import (
    +                eks_cluster_private_nodes_enabled,
    +            )
    +
    +            check = eks_cluster_private_nodes_enabled()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "PASS"
    +            assert (
    +                result[0].status_extended
    +                == f"EKS cluster {cluster_name} is created with private nodes."
    +            )
    +            assert result[0].resource_id == cluster_name
    +            assert result[0].resource_arn == cluster_arn
    +            assert result[0].resource_tags == []
    +            assert result[0].region == AWS_REGION_EU_WEST_1
    +
    +    def test_endpoint_without_private_nodes(self):
    +        eks_client = mock.MagicMock
    +        eks_client.clusters = []
    +        eks_client.clusters.append(
    +            EKSCluster(
    +                name=cluster_name,
    +                arn=cluster_arn,
    +                region=AWS_REGION_EU_WEST_1,
    +                logging=None,
    +                endpoint_private_access=False,
    +            )
    +        )
    +
    +        with mock.patch(
    +            "prowler.providers.aws.services.eks.eks_service.EKS",
    +            eks_client,
    +        ):
    +            from prowler.providers.aws.services.eks.eks_cluster_private_nodes_enabled.eks_cluster_private_nodes_enabled import (
    +                eks_cluster_private_nodes_enabled,
    +            )
    +
    +            check = eks_cluster_private_nodes_enabled()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "FAIL"
    +            assert (
    +                result[0].status_extended
    +                == f"Cluster endpoint private access is not enabled for EKS cluster {cluster_name}."
    +            )
    +            assert result[0].resource_id == cluster_name
    +            assert result[0].resource_arn == cluster_arn
    +            assert result[0].resource_tags == []
    +            assert result[0].region == AWS_REGION_EU_WEST_1
    diff --git a/tests/providers/aws/services/eks/eks_control_plane_endpoint_access_restricted/eks_control_plane_endpoint_access_restricted_test.py b/tests/providers/aws/services/eks/eks_control_plane_endpoint_access_restricted/eks_control_plane_endpoint_access_restricted_test.py
    index c6f4aa8d9d4..a150aa64066 100644
    --- a/tests/providers/aws/services/eks/eks_control_plane_endpoint_access_restricted/eks_control_plane_endpoint_access_restricted_test.py
    +++ b/tests/providers/aws/services/eks/eks_control_plane_endpoint_access_restricted/eks_control_plane_endpoint_access_restricted_test.py
    @@ -2,12 +2,15 @@
     from unittest import mock
     
     from prowler.providers.aws.services.eks.eks_service import EKSCluster
    -
    -AWS_REGION = "eu-west-1"
    -AWS_ACCOUNT_NUMBER = "123456789012"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_ACCOUNT_NUMBER,
    +    AWS_REGION_EU_WEST_1,
    +)
     
     cluster_name = "cluster_test"
    -cluster_arn = f"arn:aws:eks:{AWS_REGION}:{AWS_ACCOUNT_NUMBER}:cluster/{cluster_name}"
    +cluster_arn = (
    +    f"arn:aws:eks:{AWS_REGION_EU_WEST_1}:{AWS_ACCOUNT_NUMBER}:cluster/{cluster_name}"
    +)
     
     
     class Test_eks_control_plane_endpoint_access_restricted:
    @@ -33,7 +36,7 @@ def test_control_plane_access_private(self):
                 EKSCluster(
                     name=cluster_name,
                     arn=cluster_arn,
    -                region=AWS_REGION,
    +                region=AWS_REGION_EU_WEST_1,
                     logging=None,
                     endpoint_public_access=False,
                     endpoint_private_access=True,
    @@ -60,7 +63,7 @@ def test_control_plane_access_private(self):
                 assert result[0].resource_id == cluster_name
                 assert result[0].resource_arn == cluster_arn
                 assert result[0].resource_tags == []
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_EU_WEST_1
     
         def test_control_plane_access_restricted(self):
             eks_client = mock.MagicMock
    @@ -69,7 +72,7 @@ def test_control_plane_access_restricted(self):
                 EKSCluster(
                     name=cluster_name,
                     arn=cluster_arn,
    -                region=AWS_REGION,
    +                region=AWS_REGION_EU_WEST_1,
                     logging=None,
                     endpoint_public_access=True,
                     endpoint_private_access=False,
    @@ -96,7 +99,7 @@ def test_control_plane_access_restricted(self):
                 assert result[0].resource_id == cluster_name
                 assert result[0].resource_arn == cluster_arn
                 assert result[0].resource_tags == []
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_EU_WEST_1
     
         def test_control_plane_public(self):
             eks_client = mock.MagicMock
    @@ -105,7 +108,7 @@ def test_control_plane_public(self):
                 EKSCluster(
                     name=cluster_name,
                     arn=cluster_arn,
    -                region=AWS_REGION,
    +                region=AWS_REGION_EU_WEST_1,
                     logging=None,
                     endpoint_public_access=True,
                     endpoint_private_access=False,
    @@ -132,7 +135,7 @@ def test_control_plane_public(self):
                 assert result[0].resource_id == cluster_name
                 assert result[0].resource_arn == cluster_arn
                 assert result[0].resource_tags == []
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_EU_WEST_1
     
         def test_control_plane_public_and_private(self):
             eks_client = mock.MagicMock
    @@ -141,7 +144,7 @@ def test_control_plane_public_and_private(self):
                 EKSCluster(
                     name=cluster_name,
                     arn=cluster_arn,
    -                region=AWS_REGION,
    +                region=AWS_REGION_EU_WEST_1,
                     logging=None,
                     endpoint_public_access=True,
                     endpoint_private_access=True,
    @@ -168,4 +171,4 @@ def test_control_plane_public_and_private(self):
                 assert result[0].resource_id == cluster_name
                 assert result[0].resource_arn == cluster_arn
                 assert result[0].resource_tags == []
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_EU_WEST_1
    diff --git a/tests/providers/aws/services/eks/eks_control_plane_logging_all_types_enabled/eks_control_plane_logging_all_types_enabled_test.py b/tests/providers/aws/services/eks/eks_control_plane_logging_all_types_enabled/eks_control_plane_logging_all_types_enabled_test.py
    index 601213aaa83..5931360bdf3 100644
    --- a/tests/providers/aws/services/eks/eks_control_plane_logging_all_types_enabled/eks_control_plane_logging_all_types_enabled_test.py
    +++ b/tests/providers/aws/services/eks/eks_control_plane_logging_all_types_enabled/eks_control_plane_logging_all_types_enabled_test.py
    @@ -5,12 +5,15 @@
         EKSCluster,
         EKSClusterLoggingEntity,
     )
    -
    -AWS_REGION = "eu-west-1"
    -AWS_ACCOUNT_NUMBER = "123456789012"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_ACCOUNT_NUMBER,
    +    AWS_REGION_EU_WEST_1,
    +)
     
     cluster_name = "cluster_test"
    -cluster_arn = f"arn:aws:eks:{AWS_REGION}:{AWS_ACCOUNT_NUMBER}:cluster/{cluster_name}"
    +cluster_arn = (
    +    f"arn:aws:eks:{AWS_REGION_EU_WEST_1}:{AWS_ACCOUNT_NUMBER}:cluster/{cluster_name}"
    +)
     
     
     class Test_eks_control_plane_logging_all_types_enabled:
    @@ -36,7 +39,7 @@ def test_control_plane_not_loggging(self):
                 EKSCluster(
                     name=cluster_name,
                     arn=cluster_arn,
    -                region=AWS_REGION,
    +                region=AWS_REGION_EU_WEST_1,
                     logging=None,
                 )
             )
    @@ -67,7 +70,7 @@ def test_control_plane_incomplete_loggging(self):
                 EKSCluster(
                     name=cluster_name,
                     arn=cluster_arn,
    -                region=AWS_REGION,
    +                region=AWS_REGION_EU_WEST_1,
                     logging=EKSClusterLoggingEntity(
                         types=["api", "audit", "authenticator", "controllerManager"],
                         enabled=True,
    @@ -101,7 +104,7 @@ def test_control_plane_complete_loggging(self):
                 EKSCluster(
                     name=cluster_name,
                     arn=cluster_arn,
    -                region=AWS_REGION,
    +                region=AWS_REGION_EU_WEST_1,
                     logging=EKSClusterLoggingEntity(
                         types=[
                             "api",
    diff --git a/tests/providers/aws/services/eks/eks_endpoints_not_publicly_accessible/eks_endpoints_not_publicly_accessible_test.py b/tests/providers/aws/services/eks/eks_endpoints_not_publicly_accessible/eks_endpoints_not_publicly_accessible_test.py
    index 58e0bbaa565..7901b679c4d 100644
    --- a/tests/providers/aws/services/eks/eks_endpoints_not_publicly_accessible/eks_endpoints_not_publicly_accessible_test.py
    +++ b/tests/providers/aws/services/eks/eks_endpoints_not_publicly_accessible/eks_endpoints_not_publicly_accessible_test.py
    @@ -2,12 +2,15 @@
     from unittest import mock
     
     from prowler.providers.aws.services.eks.eks_service import EKSCluster
    -
    -AWS_REGION = "eu-west-1"
    -AWS_ACCOUNT_NUMBER = "123456789012"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_ACCOUNT_NUMBER,
    +    AWS_REGION_EU_WEST_1,
    +)
     
     cluster_name = "cluster_test"
    -cluster_arn = f"arn:aws:eks:{AWS_REGION}:{AWS_ACCOUNT_NUMBER}:cluster/{cluster_name}"
    +cluster_arn = (
    +    f"arn:aws:eks:{AWS_REGION_EU_WEST_1}:{AWS_ACCOUNT_NUMBER}:cluster/{cluster_name}"
    +)
     
     
     class Test_eks_endpoints_not_publicly_accessible:
    @@ -33,7 +36,7 @@ def test_endpoint_public_access(self):
                 EKSCluster(
                     name=cluster_name,
                     arn=cluster_arn,
    -                region=AWS_REGION,
    +                region=AWS_REGION_EU_WEST_1,
                     logging=None,
                     endpoint_public_access=True,
                     endpoint_private_access=False,
    @@ -59,7 +62,7 @@ def test_endpoint_public_access(self):
                 assert result[0].resource_id == cluster_name
                 assert result[0].resource_arn == cluster_arn
                 assert result[0].resource_tags == []
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_EU_WEST_1
     
         def test_endpoint_not_public_access(self):
             eks_client = mock.MagicMock
    @@ -68,7 +71,7 @@ def test_endpoint_not_public_access(self):
                 EKSCluster(
                     name=cluster_name,
                     arn=cluster_arn,
    -                region=AWS_REGION,
    +                region=AWS_REGION_EU_WEST_1,
                     logging=None,
                     endpoint_public_access=False,
                     endpoint_private_access=True,
    @@ -94,4 +97,4 @@ def test_endpoint_not_public_access(self):
                 assert result[0].resource_id == cluster_name
                 assert result[0].resource_arn == cluster_arn
                 assert result[0].resource_tags == []
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_EU_WEST_1
    diff --git a/tests/providers/aws/services/eks/eks_service_test.py b/tests/providers/aws/services/eks/eks_service_test.py
    index ec52e85a824..ba0675d6f19 100644
    --- a/tests/providers/aws/services/eks/eks_service_test.py
    +++ b/tests/providers/aws/services/eks/eks_service_test.py
    @@ -1,14 +1,14 @@
     from unittest.mock import patch
     
    -from boto3 import client, session
    -from moto import mock_ec2, mock_eks
    +from boto3 import client
    +from moto import mock_aws
     
    -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"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_ACCOUNT_NUMBER,
    +    AWS_REGION_EU_WEST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     cluster_name = "test"
     cidr_block_vpc = "10.0.0.0/16"
    @@ -16,10 +16,12 @@
     cidr_block_subnet_2 = "10.0.4.0/22"
     
     
    -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}
    +def mock_generate_regional_clients(service, audit_info):
    +    regional_client = audit_info.audit_session.client(
    +        service, region_name=AWS_REGION_EU_WEST_1
    +    )
    +    regional_client.region = AWS_REGION_EU_WEST_1
    +    return {AWS_REGION_EU_WEST_1: regional_client}
     
     
     @patch(
    @@ -27,62 +29,30 @@ def mock_generate_regional_clients(service, audit_info, _):
         new=mock_generate_regional_clients,
     )
     class Test_EKS_Service:
    -    # 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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=None,
    -            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
    -
         # Test EKS Service
         def test_service(self):
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info()
             eks = EKS(audit_info)
             assert eks.service == "eks"
     
         # Test EKS client
         def test_client(self):
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info()
             eks = EKS(audit_info)
             for reg_client in eks.regional_clients.values():
                 assert reg_client.__class__.__name__ == "EKS"
     
         # Test EKS session
         def test__get_session__(self):
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info()
             eks = EKS(audit_info)
             assert eks.session.__class__.__name__ == "Session"
     
         # Test EKS list clusters
    -    @mock_ec2
    -    @mock_eks
    +    @mock_aws
         def test__list_clusters(self):
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    -        eks_client = client("eks", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_EU_WEST_1)
    +        eks_client = client("eks", region_name=AWS_REGION_EU_WEST_1)
             vpc = ec2_client.create_vpc(CidrBlock=cidr_block_vpc)
             subnet1 = ec2_client.create_subnet(
                 VpcId=vpc["Vpc"]["VpcId"], CidrBlock=cidr_block_subnet_1
    @@ -103,19 +73,18 @@ def test__list_clusters(self):
                 roleArn=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:role/eks-service-role-AWSServiceRoleForAmazonEKS-J7ONKE3BQ4PI",
                 tags={"test": "test"},
             )
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info()
             eks = EKS(audit_info)
             assert len(eks.clusters) == 1
             assert eks.clusters[0].name == cluster_name
    -        assert eks.clusters[0].region == AWS_REGION
    +        assert eks.clusters[0].region == AWS_REGION_EU_WEST_1
             assert eks.clusters[0].tags == [{"test": "test"}]
     
         # Test EKS describe clusters
    -    @mock_ec2
    -    @mock_eks
    +    @mock_aws
         def test__describe_clusters(self):
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    -        eks_client = client("eks", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_EU_WEST_1)
    +        eks_client = client("eks", region_name=AWS_REGION_EU_WEST_1)
             vpc = ec2_client.create_vpc(CidrBlock=cidr_block_vpc)
             subnet1 = ec2_client.create_subnet(
                 VpcId=vpc["Vpc"]["VpcId"], CidrBlock=cidr_block_subnet_1
    @@ -157,11 +126,11 @@ def test__describe_clusters(self):
                     },
                 ],
             )
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info()
             eks = EKS(audit_info)
             assert len(eks.clusters) == 1
             assert eks.clusters[0].name == cluster_name
    -        assert eks.clusters[0].region == AWS_REGION
    +        assert eks.clusters[0].region == AWS_REGION_EU_WEST_1
             assert eks.clusters[0].arn == cluster["cluster"]["arn"]
             assert eks.clusters[0].logging.types == ["api"]
             assert eks.clusters[0].logging.enabled
    diff --git a/tests/providers/aws/services/elasticache/elasticache_cluster_uses_public_subnet/elasticache_cluster_uses_public_subnet_test.py b/tests/providers/aws/services/elasticache/elasticache_cluster_uses_public_subnet/elasticache_cluster_uses_public_subnet_test.py
    index ae917ba8aac..5f3ae884ac9 100644
    --- a/tests/providers/aws/services/elasticache/elasticache_cluster_uses_public_subnet/elasticache_cluster_uses_public_subnet_test.py
    +++ b/tests/providers/aws/services/elasticache/elasticache_cluster_uses_public_subnet/elasticache_cluster_uses_public_subnet_test.py
    @@ -1,16 +1,17 @@
     from unittest import mock
     
    -from boto3 import session
     from mock import MagicMock, patch
    -from moto import mock_ec2
    +from moto import mock_aws
     
    -from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info
     from prowler.providers.aws.services.elasticache.elasticache_service import Cluster
     from prowler.providers.aws.services.vpc.vpc_service import VpcSubnet
    -from prowler.providers.common.models import Audit_Metadata
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_REGION_US_EAST_1,
    +    AWS_REGION_US_EAST_1_AZA,
    +    AWS_REGION_US_EAST_1_AZB,
    +    set_mocked_aws_audit_info,
    +)
     from tests.providers.aws.services.elasticache.elasticache_service_test import (
    -    AWS_REGION_AZ1,
    -    AWS_REGION_AZ2,
         ELASTICACHE_CLUSTER_ARN,
         ELASTICACHE_CLUSTER_NAME,
         ELASTICACHE_CLUSTER_TAGS,
    @@ -20,47 +21,13 @@
         mock_make_api_call,
     )
     
    -AWS_ACCOUNT_NUMBER = "123456789012"
    -AWS_ACCOUNT_ARN = f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root"
    -AWS_REGION = "us-east-1"
    -
     VPC_ID = "vpc-12345678901234567"
     
     
     # Patch every AWS call using Boto3
     @patch("botocore.client.BaseClient._make_api_call", new=mock_make_api_call)
     class Test_elasticache_cluster_uses_public_subnet:
    -    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",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=[AWS_REGION],
    -            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
    -
    -    @mock_ec2
    +    @mock_aws
         def test_elasticache_no_clusters(self):
             # Mock VPC Service
             vpc_client = MagicMock
    @@ -72,7 +39,7 @@ def test_elasticache_no_clusters(self):
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    -            new=self.set_mocked_audit_info(),
    +            new=set_mocked_aws_audit_info([AWS_REGION_US_EAST_1]),
             ), mock.patch(
                 "prowler.providers.aws.services.elasticache.elasticache_service.ElastiCache",
                 new=elasticache_service,
    @@ -100,7 +67,7 @@ def test_elasticache_clusters_using_private_subnets(self):
                 arn=ELASTICACHE_CLUSTER_ARN,
                 name=ELASTICACHE_CLUSTER_NAME,
                 id=ELASTICACHE_CLUSTER_NAME,
    -            region=AWS_REGION,
    +            region=AWS_REGION_US_EAST_1,
                 cache_subnet_group_id=SUBNET_GROUP_NAME,
                 subnets=[SUBNET_1, SUBNET_2],
                 tags=ELASTICACHE_CLUSTER_TAGS,
    @@ -116,10 +83,10 @@ def test_elasticache_clusters_using_private_subnets(self):
                 default=False,
                 vpc_id=VPC_ID,
                 cidr_block="192.168.0.0/24",
    -            availability_zone=AWS_REGION_AZ1,
    +            availability_zone=AWS_REGION_US_EAST_1_AZA,
                 public=False,
                 nat_gateway=False,
    -            region=AWS_REGION,
    +            region=AWS_REGION_US_EAST_1,
                 tags=[],
                 mapPublicIpOnLaunch=False,
             )
    @@ -130,17 +97,17 @@ def test_elasticache_clusters_using_private_subnets(self):
                 default=False,
                 vpc_id=VPC_ID,
                 cidr_block="192.168.0.1/24",
    -            availability_zone=AWS_REGION_AZ2,
    +            availability_zone=AWS_REGION_US_EAST_1_AZB,
                 public=False,
                 nat_gateway=False,
    -            region=AWS_REGION,
    +            region=AWS_REGION_US_EAST_1,
                 tags=[],
                 mapPublicIpOnLaunch=False,
             )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    -            new=self.set_mocked_audit_info(),
    +            new=set_mocked_aws_audit_info([AWS_REGION_US_EAST_1]),
             ), mock.patch(
                 "prowler.providers.aws.services.elasticache.elasticache_service.ElastiCache",
                 new=elasticache_service,
    @@ -163,7 +130,7 @@ def test_elasticache_clusters_using_private_subnets(self):
                     result[0].status_extended
                     == f"Cluster {ELASTICACHE_CLUSTER_NAME} is not using public subnets."
                 )
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_US_EAST_1
                 assert result[0].resource_id == ELASTICACHE_CLUSTER_NAME
                 assert result[0].resource_arn == ELASTICACHE_CLUSTER_ARN
                 assert result[0].resource_tags == ELASTICACHE_CLUSTER_TAGS
    @@ -177,7 +144,7 @@ def test_elasticache_clusters_using_public_subnets(self):
                 arn=ELASTICACHE_CLUSTER_ARN,
                 name=ELASTICACHE_CLUSTER_NAME,
                 id=ELASTICACHE_CLUSTER_NAME,
    -            region=AWS_REGION,
    +            region=AWS_REGION_US_EAST_1,
                 cache_subnet_group_id=SUBNET_GROUP_NAME,
                 subnets=[SUBNET_1, SUBNET_2],
                 tags=ELASTICACHE_CLUSTER_TAGS,
    @@ -193,10 +160,10 @@ def test_elasticache_clusters_using_public_subnets(self):
                 default=False,
                 vpc_id=VPC_ID,
                 cidr_block="192.168.0.0/24",
    -            availability_zone=AWS_REGION_AZ1,
    +            availability_zone=AWS_REGION_US_EAST_1_AZA,
                 public=True,
                 nat_gateway=False,
    -            region=AWS_REGION,
    +            region=AWS_REGION_US_EAST_1,
                 tags=[],
                 mapPublicIpOnLaunch=False,
             )
    @@ -207,17 +174,17 @@ def test_elasticache_clusters_using_public_subnets(self):
                 default=False,
                 vpc_id=VPC_ID,
                 cidr_block="192.168.0.1/24",
    -            availability_zone=AWS_REGION_AZ2,
    +            availability_zone=AWS_REGION_US_EAST_1_AZB,
                 public=True,
                 nat_gateway=False,
    -            region=AWS_REGION,
    +            region=AWS_REGION_US_EAST_1,
                 tags=[],
                 mapPublicIpOnLaunch=False,
             )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    -            new=self.set_mocked_audit_info(),
    +            new=set_mocked_aws_audit_info([AWS_REGION_US_EAST_1]),
             ), mock.patch(
                 "prowler.providers.aws.services.elasticache.elasticache_service.ElastiCache",
                 new=elasticache_service,
    @@ -240,7 +207,7 @@ def test_elasticache_clusters_using_public_subnets(self):
                     result[0].status_extended
                     == f"Cluster {ELASTICACHE_CLUSTER_NAME} is using subnet-1, subnet-2 public subnets."
                 )
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_US_EAST_1
                 assert result[0].resource_id == ELASTICACHE_CLUSTER_NAME
                 assert result[0].resource_arn == ELASTICACHE_CLUSTER_ARN
                 assert result[0].resource_tags == ELASTICACHE_CLUSTER_TAGS
    diff --git a/tests/providers/aws/services/elasticache/elasticache_service_test.py b/tests/providers/aws/services/elasticache/elasticache_service_test.py
    index e41853da917..4030c804760 100644
    --- a/tests/providers/aws/services/elasticache/elasticache_service_test.py
    +++ b/tests/providers/aws/services/elasticache/elasticache_service_test.py
    @@ -1,29 +1,24 @@
     import botocore
    -from boto3 import session
     from mock import patch
     
    -from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info
     from prowler.providers.aws.services.elasticache.elasticache_service import (
         Cluster,
         ElastiCache,
     )
    -from prowler.providers.common.models import Audit_Metadata
    -
    -AWS_ACCOUNT_NUMBER = "123456789012"
    -AWS_ACCOUNT_ARN = f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root"
    -
    -AWS_REGION = "us-east-1"
    -AWS_REGION_AZ1 = "us-east-1a"
    -AWS_REGION_AZ2 = "us-east-b"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_ACCOUNT_NUMBER,
    +    AWS_REGION_US_EAST_1,
    +    AWS_REGION_US_EAST_1_AZA,
    +    AWS_REGION_US_EAST_1_AZB,
    +    set_mocked_aws_audit_info,
    +)
     
     SUBNET_GROUP_NAME = "default"
     SUBNET_1 = "subnet-1"
     SUBNET_2 = "subnet-2"
     
     ELASTICACHE_CLUSTER_NAME = "test-cluster"
    -ELASTICACHE_CLUSTER_ARN = (
    -    f"arn:aws:elasticache:{AWS_REGION}:{AWS_ACCOUNT_NUMBER}:{ELASTICACHE_CLUSTER_NAME}"
    -)
    +ELASTICACHE_CLUSTER_ARN = f"arn:aws:elasticache:{AWS_REGION_US_EAST_1}:{AWS_ACCOUNT_NUMBER}:{ELASTICACHE_CLUSTER_NAME}"
     ELASTICACHE_ENGINE = "redis"
     
     ELASTICACHE_CLUSTER_TAGS = [
    @@ -63,16 +58,20 @@ def mock_make_api_call(self, operation_name, kwargs):
                         "Subnets": [
                             {
                                 "SubnetIdentifier": "subnet-1",
    -                            "SubnetAvailabilityZone": {"Name": AWS_REGION_AZ1},
    +                            "SubnetAvailabilityZone": {
    +                                "Name": AWS_REGION_US_EAST_1_AZA
    +                            },
                                 "SubnetStatus": "Active",
                             },
                             {
                                 "SubnetIdentifier": "subnet-2",
    -                            "SubnetAvailabilityZone": {"Name": AWS_REGION_AZ2},
    +                            "SubnetAvailabilityZone": {
    +                                "Name": AWS_REGION_US_EAST_1_AZB
    +                            },
                                 "SubnetStatus": "Active",
                             },
                         ],
    -                    "DBSubnetGroupArn": f"arn:aws:rds:{AWS_REGION}:{AWS_ACCOUNT_NUMBER}:subgrp:{SUBNET_GROUP_NAME}",
    +                    "DBSubnetGroupArn": f"arn:aws:rds:{AWS_REGION_US_EAST_1}:{AWS_ACCOUNT_NUMBER}:subgrp:{SUBNET_GROUP_NAME}",
                     }
                 ]
             }
    @@ -82,10 +81,12 @@ 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, _):
    -    regional_client = audit_info.audit_session.client(service, region_name=AWS_REGION)
    -    regional_client.region = AWS_REGION
    -    return {AWS_REGION: regional_client}
    +def mock_generate_regional_clients(service, audit_info):
    +    regional_client = audit_info.audit_session.client(
    +        service, region_name=AWS_REGION_US_EAST_1
    +    )
    +    regional_client.region = AWS_REGION_US_EAST_1
    +    return {AWS_REGION_US_EAST_1: regional_client}
     
     
     @patch(
    @@ -95,64 +96,33 @@ def mock_generate_regional_clients(service, audit_info, _):
     # Patch every AWS call using Boto3
     @patch("botocore.client.BaseClient._make_api_call", new=mock_make_api_call)
     class Test_ElastiCache_Service:
    -    # 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",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=None,
    -            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
    -
         # Test ElastiCache Service
         def test_service(self):
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info()
             elasticache = ElastiCache(audit_info)
             assert elasticache.service == "elasticache"
     
         # Test ElastiCache Client]
         def test_client(self):
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info()
             elasticache = ElastiCache(audit_info)
             assert elasticache.client.__class__.__name__ == "ElastiCache"
     
         # Test ElastiCache Session
         def test__get_session__(self):
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info()
             elasticache = ElastiCache(audit_info)
             assert elasticache.session.__class__.__name__ == "Session"
     
         # Test ElastiCache Session
         def test_audited_account(self):
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info()
             elasticache = ElastiCache(audit_info)
             assert elasticache.audited_account == AWS_ACCOUNT_NUMBER
     
         # Test ElastiCache Clusters
         def test_describe_cache_clusters(self):
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info()
             elasticache = ElastiCache(audit_info)
     
             assert len(elasticache.clusters) == 1
    @@ -161,7 +131,7 @@ def test_describe_cache_clusters(self):
                 arn=ELASTICACHE_CLUSTER_ARN,
                 name=ELASTICACHE_CLUSTER_NAME,
                 id=ELASTICACHE_CLUSTER_NAME,
    -            region=AWS_REGION,
    +            region=AWS_REGION_US_EAST_1,
                 cache_subnet_group_id=SUBNET_GROUP_NAME,
                 subnets=[SUBNET_1, SUBNET_2],
                 tags=ELASTICACHE_CLUSTER_TAGS,
    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 7a4c31bec8a..af4f5bd95d7 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
    @@ -1,61 +1,32 @@
    -from re import search
     from unittest import mock
     
    -from boto3 import client, resource, session
    -from moto import mock_ec2, mock_elb
    +from boto3 import client, resource
    +from moto import mock_aws
     
    -from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info
    -from prowler.providers.common.models import Audit_Metadata
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_REGION_EU_WEST_1,
    +    AWS_REGION_EU_WEST_1_AZA,
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
    -AWS_REGION = "eu-west-1"
     AWS_ACCOUNT_NUMBER = "123456789012"
    -elb_arn = (
    -    f"arn:aws:elasticloadbalancing:{AWS_REGION}:{AWS_ACCOUNT_NUMBER}:loadbalancer/my-lb"
    -)
    +elb_arn = f"arn:aws:elasticloadbalancing:{AWS_REGION_EU_WEST_1}:{AWS_ACCOUNT_NUMBER}:loadbalancer/my-lb"
     
     
     class Test_elb_insecure_ssl_ciphers:
    -    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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=["us-east-1", "eu-west-1"],
    -            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
    -
    -    @mock_elb
    +    @mock_aws
         def test_elb_no_balancers(self):
             from prowler.providers.aws.services.elb.elb_service import ELB
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    -            new=self.set_mocked_audit_info(),
    +            new=set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]),
             ), mock.patch(
                 "prowler.providers.aws.services.elb.elb_insecure_ssl_ciphers.elb_insecure_ssl_ciphers.elb_client",
    -            new=ELB(self.set_mocked_audit_info()),
    +            new=ELB(
    +                set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1])
    +            ),
             ):
                 # Test Check
                 from prowler.providers.aws.services.elb.elb_insecure_ssl_ciphers.elb_insecure_ssl_ciphers import (
    @@ -67,11 +38,10 @@ def test_elb_no_balancers(self):
     
                 assert len(result) == 0
     
    -    @mock_ec2
    -    @mock_elb
    +    @mock_aws
         def test_elb_listener_with_secure_policy(self):
    -        elb = client("elb", region_name=AWS_REGION)
    -        ec2 = resource("ec2", region_name=AWS_REGION)
    +        elb = client("elb", region_name=AWS_REGION_EU_WEST_1)
    +        ec2 = resource("ec2", region_name=AWS_REGION_EU_WEST_1)
     
             security_group = ec2.create_security_group(
                 GroupName="sg01", Description="Test security group sg01"
    @@ -83,7 +53,7 @@ def test_elb_listener_with_secure_policy(self):
                     {"Protocol": "tcp", "LoadBalancerPort": 80, "InstancePort": 8080},
                     {"Protocol": "https", "LoadBalancerPort": 443, "InstancePort": 9000},
                 ],
    -            AvailabilityZones=[f"{AWS_REGION}a"],
    +            AvailabilityZones=[AWS_REGION_EU_WEST_1_AZA],
                 Scheme="internal",
                 SecurityGroups=[security_group.id],
             )
    @@ -99,10 +69,12 @@ def test_elb_listener_with_secure_policy(self):
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    -            new=self.set_mocked_audit_info(),
    +            new=set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]),
             ), mock.patch(
                 "prowler.providers.aws.services.elb.elb_insecure_ssl_ciphers.elb_insecure_ssl_ciphers.elb_client",
    -            new=ELB(self.set_mocked_audit_info()),
    +            new=ELB(
    +                set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1])
    +            ),
             ):
                 from prowler.providers.aws.services.elb.elb_insecure_ssl_ciphers.elb_insecure_ssl_ciphers import (
                     elb_insecure_ssl_ciphers,
    @@ -113,18 +85,18 @@ def test_elb_listener_with_secure_policy(self):
     
                 assert len(result) == 1
                 assert result[0].status == "PASS"
    -            assert search(
    -                "does not have insecure SSL protocols or ciphers",
    -                result[0].status_extended,
    +            assert (
    +                result[0].status_extended
    +                == "ELB my-lb does not have insecure SSL protocols or ciphers."
                 )
                 assert result[0].resource_id == "my-lb"
                 assert result[0].resource_arn == elb_arn
    +            assert result[0].region == AWS_REGION_EU_WEST_1
     
    -    @mock_ec2
    -    @mock_elb
    +    @mock_aws
         def test_elb_with_HTTPS_listener(self):
    -        elb = client("elb", region_name=AWS_REGION)
    -        ec2 = resource("ec2", region_name=AWS_REGION)
    +        elb = client("elb", region_name=AWS_REGION_EU_WEST_1)
    +        ec2 = resource("ec2", region_name=AWS_REGION_EU_WEST_1)
     
             security_group = ec2.create_security_group(
                 GroupName="sg01", Description="Test security group sg01"
    @@ -136,7 +108,7 @@ def test_elb_with_HTTPS_listener(self):
                     {"Protocol": "tcp", "LoadBalancerPort": 80, "InstancePort": 8080},
                     {"Protocol": "https", "LoadBalancerPort": 443, "InstancePort": 9000},
                 ],
    -            AvailabilityZones=[f"{AWS_REGION}a"],
    +            AvailabilityZones=[AWS_REGION_EU_WEST_1_AZA],
                 Scheme="internal",
                 SecurityGroups=[security_group.id],
             )
    @@ -145,10 +117,12 @@ def test_elb_with_HTTPS_listener(self):
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    -            new=self.set_mocked_audit_info(),
    +            new=set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]),
             ), mock.patch(
                 "prowler.providers.aws.services.elb.elb_insecure_ssl_ciphers.elb_insecure_ssl_ciphers.elb_client",
    -            new=ELB(self.set_mocked_audit_info()),
    +            new=ELB(
    +                set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1])
    +            ),
             ):
                 from prowler.providers.aws.services.elb.elb_insecure_ssl_ciphers.elb_insecure_ssl_ciphers import (
                     elb_insecure_ssl_ciphers,
    @@ -159,9 +133,10 @@ def test_elb_with_HTTPS_listener(self):
     
                 assert len(result) == 1
                 assert result[0].status == "FAIL"
    -            assert search(
    -                "has listeners with insecure SSL protocols or ciphers",
    -                result[0].status_extended,
    +            assert (
    +                result[0].status_extended
    +                == "ELB my-lb has listeners with insecure SSL protocols or ciphers."
                 )
                 assert result[0].resource_id == "my-lb"
                 assert result[0].resource_arn == elb_arn
    +            assert result[0].region == AWS_REGION_EU_WEST_1
    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 0a6d38d3db0..d40cdf82741 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
    @@ -1,11 +1,14 @@
    -from re import search
     from unittest import mock
     
    -from boto3 import client, resource, session
    -from moto import mock_ec2, mock_elb
    +from boto3 import client, resource
    +from moto import mock_aws
     
    -from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info
    -from prowler.providers.common.models import Audit_Metadata
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_REGION_EU_WEST_1,
    +    AWS_REGION_EU_WEST_1_AZA,
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     AWS_REGION = "eu-west-1"
     AWS_ACCOUNT_NUMBER = "123456789012"
    @@ -15,47 +18,18 @@
     
     
     class Test_elb_request_smugling:
    -    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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=["us-east-1", "eu-west-1"],
    -            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
    -
    -    @mock_elb
    +    @mock_aws
         def test_elb_no_balancers(self):
             from prowler.providers.aws.services.elb.elb_service import ELB
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    -            new=self.set_mocked_audit_info(),
    +            new=set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]),
             ), mock.patch(
                 "prowler.providers.aws.services.elb.elb_internet_facing.elb_internet_facing.elb_client",
    -            new=ELB(self.set_mocked_audit_info()),
    +            new=ELB(
    +                set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1])
    +            ),
             ):
                 # Test Check
                 from prowler.providers.aws.services.elb.elb_internet_facing.elb_internet_facing import (
    @@ -67,8 +41,7 @@ def test_elb_no_balancers(self):
     
                 assert len(result) == 0
     
    -    @mock_ec2
    -    @mock_elb
    +    @mock_aws
         def test_elb_private(self):
             elb = client("elb", region_name=AWS_REGION)
             ec2 = resource("ec2", region_name=AWS_REGION)
    @@ -83,7 +56,7 @@ def test_elb_private(self):
                     {"Protocol": "tcp", "LoadBalancerPort": 80, "InstancePort": 8080},
                     {"Protocol": "http", "LoadBalancerPort": 81, "InstancePort": 9000},
                 ],
    -            AvailabilityZones=[f"{AWS_REGION}a"],
    +            AvailabilityZones=[AWS_REGION_EU_WEST_1_AZA],
                 Scheme="internal",
                 SecurityGroups=[security_group.id],
             )
    @@ -92,10 +65,12 @@ def test_elb_private(self):
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    -            new=self.set_mocked_audit_info(),
    +            new=set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]),
             ), mock.patch(
                 "prowler.providers.aws.services.elb.elb_internet_facing.elb_internet_facing.elb_client",
    -            new=ELB(self.set_mocked_audit_info()),
    +            new=ELB(
    +                set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1])
    +            ),
             ):
                 from prowler.providers.aws.services.elb.elb_internet_facing.elb_internet_facing import (
                     elb_internet_facing,
    @@ -106,15 +81,12 @@ def test_elb_private(self):
     
                 assert len(result) == 1
                 assert result[0].status == "PASS"
    -            assert search(
    -                "is not internet facing",
    -                result[0].status_extended,
    -            )
    +            assert result[0].status_extended == "ELB my-lb is not internet facing."
                 assert result[0].resource_id == "my-lb"
                 assert result[0].resource_arn == elb_arn
    +            assert result[0].region == AWS_REGION_EU_WEST_1
     
    -    @mock_ec2
    -    @mock_elb
    +    @mock_aws
         def test_elb_with_deletion_protection(self):
             elb = client("elb", region_name=AWS_REGION)
             ec2 = resource("ec2", region_name=AWS_REGION)
    @@ -129,7 +101,7 @@ def test_elb_with_deletion_protection(self):
                     {"Protocol": "tcp", "LoadBalancerPort": 80, "InstancePort": 8080},
                     {"Protocol": "http", "LoadBalancerPort": 81, "InstancePort": 9000},
                 ],
    -            AvailabilityZones=[f"{AWS_REGION}a"],
    +            AvailabilityZones=[AWS_REGION_EU_WEST_1_AZA],
                 Scheme="internet-facing",
                 SecurityGroups=[security_group.id],
             )
    @@ -138,10 +110,12 @@ def test_elb_with_deletion_protection(self):
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    -            new=self.set_mocked_audit_info(),
    +            new=set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]),
             ), mock.patch(
                 "prowler.providers.aws.services.elb.elb_internet_facing.elb_internet_facing.elb_client",
    -            new=ELB(self.set_mocked_audit_info()),
    +            new=ELB(
    +                set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1])
    +            ),
             ):
                 from prowler.providers.aws.services.elb.elb_internet_facing.elb_internet_facing import (
                     elb_internet_facing,
    @@ -152,9 +126,10 @@ def test_elb_with_deletion_protection(self):
     
                 assert len(result) == 1
                 assert result[0].status == "FAIL"
    -            assert search(
    -                "is internet facing",
    -                result[0].status_extended,
    +            assert (
    +                result[0].status_extended
    +                == "ELB my-lb is internet facing in my-lb.us-east-1.elb.amazonaws.com."
                 )
                 assert result[0].resource_id == "my-lb"
                 assert result[0].resource_arn == elb_arn
    +            assert result[0].region == AWS_REGION_EU_WEST_1
    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 784a1b6a216..5e8b7fc1cbf 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
    @@ -1,11 +1,14 @@
    -from re import search
     from unittest import mock
     
    -from boto3 import client, resource, session
    -from moto import mock_ec2, mock_elb
    +from boto3 import client, resource
    +from moto import mock_aws
     
    -from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info
    -from prowler.providers.common.models import Audit_Metadata
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_REGION_EU_WEST_1,
    +    AWS_REGION_EU_WEST_1_AZA,
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     AWS_REGION = "eu-west-1"
     AWS_ACCOUNT_NUMBER = "123456789012"
    @@ -15,47 +18,18 @@
     
     
     class Test_elb_logging_enabled:
    -    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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=["us-east-1", "eu-west-1"],
    -            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
    -
    -    @mock_elb
    +    @mock_aws
         def test_elb_no_balancers(self):
             from prowler.providers.aws.services.elb.elb_service import ELB
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    -            new=self.set_mocked_audit_info(),
    +            new=set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]),
             ), mock.patch(
                 "prowler.providers.aws.services.elb.elb_logging_enabled.elb_logging_enabled.elb_client",
    -            new=ELB(self.set_mocked_audit_info()),
    +            new=ELB(
    +                set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1])
    +            ),
             ):
                 # Test Check
                 from prowler.providers.aws.services.elb.elb_logging_enabled.elb_logging_enabled import (
    @@ -67,8 +41,7 @@ def test_elb_no_balancers(self):
     
                 assert len(result) == 0
     
    -    @mock_ec2
    -    @mock_elb
    +    @mock_aws
         def test_elb_without_access_log(self):
             elb = client("elb", region_name=AWS_REGION)
             ec2 = resource("ec2", region_name=AWS_REGION)
    @@ -83,7 +56,7 @@ def test_elb_without_access_log(self):
                     {"Protocol": "tcp", "LoadBalancerPort": 80, "InstancePort": 8080},
                     {"Protocol": "http", "LoadBalancerPort": 81, "InstancePort": 9000},
                 ],
    -            AvailabilityZones=[f"{AWS_REGION}a"],
    +            AvailabilityZones=[AWS_REGION_EU_WEST_1_AZA],
                 Scheme="internal",
                 SecurityGroups=[security_group.id],
             )
    @@ -92,10 +65,12 @@ def test_elb_without_access_log(self):
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    -            new=self.set_mocked_audit_info(),
    +            new=set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]),
             ), mock.patch(
                 "prowler.providers.aws.services.elb.elb_logging_enabled.elb_logging_enabled.elb_client",
    -            new=ELB(self.set_mocked_audit_info()),
    +            new=ELB(
    +                set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1])
    +            ),
             ):
                 from prowler.providers.aws.services.elb.elb_logging_enabled.elb_logging_enabled import (
                     elb_logging_enabled,
    @@ -106,15 +81,14 @@ def test_elb_without_access_log(self):
     
                 assert len(result) == 1
                 assert result[0].status == "FAIL"
    -            assert search(
    -                "does not have access logs configured",
    -                result[0].status_extended,
    +            assert (
    +                result[0].status_extended
    +                == "ELB my-lb does not have access logs configured."
                 )
                 assert result[0].resource_id == "my-lb"
                 assert result[0].resource_arn == elb_arn
     
    -    @mock_ec2
    -    @mock_elb
    +    @mock_aws
         def test_elb_with_deletion_protection(self):
             elb = client("elb", region_name=AWS_REGION)
             ec2 = resource("ec2", region_name=AWS_REGION)
    @@ -129,7 +103,7 @@ def test_elb_with_deletion_protection(self):
                     {"Protocol": "tcp", "LoadBalancerPort": 80, "InstancePort": 8080},
                     {"Protocol": "http", "LoadBalancerPort": 81, "InstancePort": 9000},
                 ],
    -            AvailabilityZones=[f"{AWS_REGION}a"],
    +            AvailabilityZones=[AWS_REGION_EU_WEST_1_AZA],
                 Scheme="internal",
                 SecurityGroups=[security_group.id],
             )
    @@ -150,10 +124,12 @@ def test_elb_with_deletion_protection(self):
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    -            new=self.set_mocked_audit_info(),
    +            new=set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]),
             ), mock.patch(
                 "prowler.providers.aws.services.elb.elb_logging_enabled.elb_logging_enabled.elb_client",
    -            new=ELB(self.set_mocked_audit_info()),
    +            new=ELB(
    +                set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1])
    +            ),
             ):
                 from prowler.providers.aws.services.elb.elb_logging_enabled.elb_logging_enabled import (
                     elb_logging_enabled,
    @@ -164,9 +140,9 @@ def test_elb_with_deletion_protection(self):
     
                 assert len(result) == 1
                 assert result[0].status == "PASS"
    -            assert search(
    -                "has access logs to S3 configured",
    -                result[0].status_extended,
    +            assert (
    +                result[0].status_extended
    +                == "ELB my-lb has access logs to S3 configured."
                 )
                 assert result[0].resource_id == "my-lb"
                 assert result[0].resource_arn == elb_arn
    diff --git a/tests/providers/aws/services/elb/elb_service_test.py b/tests/providers/aws/services/elb/elb_service_test.py
    index 51c21c06cfb..ef51a701dc4 100644
    --- a/tests/providers/aws/services/elb/elb_service_test.py
    +++ b/tests/providers/aws/services/elb/elb_service_test.py
    @@ -1,77 +1,45 @@
    -from boto3 import client, resource, session
    -from moto import mock_ec2, mock_elb
    +from boto3 import client, resource
    +from moto import mock_aws
     
    -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"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_ACCOUNT_NUMBER,
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     
     class Test_ELB_Service:
    -    # 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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=None,
    -            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
    -
         # Test ELB Service
    -    @mock_elb
    +    @mock_aws
         def test_service(self):
             # ELB client for this test class
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info()
             elb = ELB(audit_info)
             assert elb.service == "elb"
     
         # Test ELB Client
    -    @mock_elb
    +    @mock_aws
         def test_client(self):
             # ELB client for this test class
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info()
             elb = ELB(audit_info)
             for regional_client in elb.regional_clients.values():
                 assert regional_client.__class__.__name__ == "ElasticLoadBalancing"
     
         # Test ELB Session
    -    @mock_elb
    +    @mock_aws
         def test__get_session__(self):
             # ELB client for this test class
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info()
             elb = ELB(audit_info)
             assert elb.session.__class__.__name__ == "Session"
     
         # Test ELB Describe Load Balancers
    -    @mock_ec2
    -    @mock_elb
    +    @mock_aws
         def test__describe_load_balancers__(self):
    -        elb = client("elb", region_name=AWS_REGION)
    -        ec2 = resource("ec2", region_name=AWS_REGION)
    +        elb = client("elb", region_name=AWS_REGION_US_EAST_1)
    +        ec2 = resource("ec2", region_name=AWS_REGION_US_EAST_1)
     
             security_group = ec2.create_security_group(
                 GroupName="sg01", Description="Test security group sg01"
    @@ -83,28 +51,27 @@ def test__describe_load_balancers__(self):
                     {"Protocol": "tcp", "LoadBalancerPort": 80, "InstancePort": 8080},
                     {"Protocol": "http", "LoadBalancerPort": 81, "InstancePort": 9000},
                 ],
    -            AvailabilityZones=[f"{AWS_REGION}a"],
    +            AvailabilityZones=[f"{AWS_REGION_US_EAST_1}a"],
                 Scheme="internal",
                 SecurityGroups=[security_group.id],
             )
             # ELB client for this test class
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info()
             elb = ELB(audit_info)
             assert len(elb.loadbalancers) == 1
             assert elb.loadbalancers[0].name == "my-lb"
    -        assert elb.loadbalancers[0].region == AWS_REGION
    +        assert elb.loadbalancers[0].region == AWS_REGION_US_EAST_1
             assert elb.loadbalancers[0].scheme == "internal"
             assert (
                 elb.loadbalancers[0].arn
    -            == f"arn:aws:elasticloadbalancing:{AWS_REGION}:{AWS_ACCOUNT_NUMBER}:loadbalancer/my-lb"
    +            == f"arn:aws:elasticloadbalancing:{AWS_REGION_US_EAST_1}:{AWS_ACCOUNT_NUMBER}:loadbalancer/my-lb"
             )
     
         # Test ELB Describe Load Balancers Attributes
    -    @mock_ec2
    -    @mock_elb
    +    @mock_aws
         def test__describe_load_balancer_attributes__(self):
    -        elb = client("elb", region_name=AWS_REGION)
    -        ec2 = resource("ec2", region_name=AWS_REGION)
    +        elb = client("elb", region_name=AWS_REGION_US_EAST_1)
    +        ec2 = resource("ec2", region_name=AWS_REGION_US_EAST_1)
     
             security_group = ec2.create_security_group(
                 GroupName="sg01", Description="Test security group sg01"
    @@ -116,7 +83,7 @@ def test__describe_load_balancer_attributes__(self):
                     {"Protocol": "tcp", "LoadBalancerPort": 80, "InstancePort": 8080},
                     {"Protocol": "http", "LoadBalancerPort": 81, "InstancePort": 9000},
                 ],
    -            AvailabilityZones=[f"{AWS_REGION}a"],
    +            AvailabilityZones=[f"{AWS_REGION_US_EAST_1}a"],
                 Scheme="internal",
                 SecurityGroups=[security_group.id],
             )
    @@ -133,13 +100,13 @@ def test__describe_load_balancer_attributes__(self):
                 },
             )
             # ELB client for this test class
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info()
             elb = ELB(audit_info)
             assert elb.loadbalancers[0].name == "my-lb"
    -        assert elb.loadbalancers[0].region == AWS_REGION
    +        assert elb.loadbalancers[0].region == AWS_REGION_US_EAST_1
             assert elb.loadbalancers[0].scheme == "internal"
             assert elb.loadbalancers[0].access_logs
             assert (
                 elb.loadbalancers[0].arn
    -            == f"arn:aws:elasticloadbalancing:{AWS_REGION}:{AWS_ACCOUNT_NUMBER}:loadbalancer/my-lb"
    +            == f"arn:aws:elasticloadbalancing:{AWS_REGION_US_EAST_1}:{AWS_ACCOUNT_NUMBER}:loadbalancer/my-lb"
             )
    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 885ba09aa27..267a70c30c3 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
    @@ -1,11 +1,14 @@
    -from re import search
     from unittest import mock
     
    -from boto3 import client, resource, session
    -from moto import mock_ec2, mock_elb
    +from boto3 import client, resource
    +from moto import mock_aws
     
    -from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info
    -from prowler.providers.common.models import Audit_Metadata
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_REGION_EU_WEST_1,
    +    AWS_REGION_EU_WEST_1_AZA,
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     AWS_REGION = "eu-west-1"
     AWS_ACCOUNT_NUMBER = "123456789012"
    @@ -15,47 +18,18 @@
     
     
     class Test_elb_ssl_listeners:
    -    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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=["us-east-1", "eu-west-1"],
    -            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
    -
    -    @mock_elb
    +    @mock_aws
         def test_elb_no_balancers(self):
             from prowler.providers.aws.services.elb.elb_service import ELB
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    -            new=self.set_mocked_audit_info(),
    +            new=set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]),
             ), mock.patch(
                 "prowler.providers.aws.services.elb.elb_ssl_listeners.elb_ssl_listeners.elb_client",
    -            new=ELB(self.set_mocked_audit_info()),
    +            new=ELB(
    +                set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1])
    +            ),
             ):
                 # Test Check
                 from prowler.providers.aws.services.elb.elb_ssl_listeners.elb_ssl_listeners import (
    @@ -67,8 +41,7 @@ def test_elb_no_balancers(self):
     
                 assert len(result) == 0
     
    -    @mock_ec2
    -    @mock_elb
    +    @mock_aws
         def test_elb_with_HTTP_listener(self):
             elb = client("elb", region_name=AWS_REGION)
             ec2 = resource("ec2", region_name=AWS_REGION)
    @@ -83,7 +56,7 @@ def test_elb_with_HTTP_listener(self):
                     {"Protocol": "tcp", "LoadBalancerPort": 80, "InstancePort": 8080},
                     {"Protocol": "http", "LoadBalancerPort": 81, "InstancePort": 9000},
                 ],
    -            AvailabilityZones=[f"{AWS_REGION}a"],
    +            AvailabilityZones=[AWS_REGION_EU_WEST_1_AZA],
                 Scheme="internal",
                 SecurityGroups=[security_group.id],
             )
    @@ -92,10 +65,12 @@ def test_elb_with_HTTP_listener(self):
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    -            new=self.set_mocked_audit_info(),
    +            new=set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]),
             ), mock.patch(
                 "prowler.providers.aws.services.elb.elb_ssl_listeners.elb_ssl_listeners.elb_client",
    -            new=ELB(self.set_mocked_audit_info()),
    +            new=ELB(
    +                set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1])
    +            ),
             ):
                 from prowler.providers.aws.services.elb.elb_ssl_listeners.elb_ssl_listeners import (
                     elb_ssl_listeners,
    @@ -106,15 +81,11 @@ def test_elb_with_HTTP_listener(self):
     
                 assert len(result) == 1
                 assert result[0].status == "FAIL"
    -            assert search(
    -                "has non-encrypted listeners",
    -                result[0].status_extended,
    -            )
    +            assert result[0].status_extended == "ELB my-lb has non-encrypted listeners."
                 assert result[0].resource_id == "my-lb"
                 assert result[0].resource_arn == elb_arn
     
    -    @mock_ec2
    -    @mock_elb
    +    @mock_aws
         def test_elb_with_HTTPS_listener(self):
             elb = client("elb", region_name=AWS_REGION)
             ec2 = resource("ec2", region_name=AWS_REGION)
    @@ -128,7 +99,7 @@ def test_elb_with_HTTPS_listener(self):
                 Listeners=[
                     {"Protocol": "https", "LoadBalancerPort": 443, "InstancePort": 9000},
                 ],
    -            AvailabilityZones=[f"{AWS_REGION}a"],
    +            AvailabilityZones=[AWS_REGION_EU_WEST_1_AZA],
                 Scheme="internal",
                 SecurityGroups=[security_group.id],
             )
    @@ -136,10 +107,12 @@ def test_elb_with_HTTPS_listener(self):
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    -            new=self.set_mocked_audit_info(),
    +            new=set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]),
             ), mock.patch(
                 "prowler.providers.aws.services.elb.elb_ssl_listeners.elb_ssl_listeners.elb_client",
    -            new=ELB(self.set_mocked_audit_info()),
    +            new=ELB(
    +                set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1])
    +            ),
             ):
                 from prowler.providers.aws.services.elb.elb_ssl_listeners.elb_ssl_listeners import (
                     elb_ssl_listeners,
    @@ -150,9 +123,6 @@ def test_elb_with_HTTPS_listener(self):
     
                 assert len(result) == 1
                 assert result[0].status == "PASS"
    -            assert search(
    -                "has HTTPS listeners only",
    -                result[0].status_extended,
    -            )
    +            assert result[0].status_extended == "ELB my-lb has HTTPS listeners only."
                 assert result[0].resource_id == "my-lb"
                 assert result[0].resource_arn == elb_arn
    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 500647b3f13..955edac08f5 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
    @@ -1,58 +1,31 @@
     from re import search
     from unittest import mock
     
    -from boto3 import client, resource, session
    -from moto import mock_ec2, mock_elbv2
    +from boto3 import client, resource
    +from moto import mock_aws
     
    -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"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_REGION_EU_WEST_1,
    +    AWS_REGION_EU_WEST_1_AZA,
    +    AWS_REGION_EU_WEST_1_AZB,
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     
     class Test_elbv2_deletion_protection:
    -    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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=["us-east-1", "eu-west-1"],
    -            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
    -
    -    @mock_elbv2
    +    @mock_aws
         def test_elb_no_balancers(self):
             from prowler.providers.aws.services.elbv2.elbv2_service import ELBv2
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    -            new=self.set_mocked_audit_info(),
    +            new=set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]),
             ), mock.patch(
                 "prowler.providers.aws.services.elbv2.elbv2_deletion_protection.elbv2_deletion_protection.elbv2_client",
    -            new=ELBv2(self.set_mocked_audit_info()),
    +            new=ELBv2(
    +                set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1])
    +            ),
             ):
                 # Test Check
                 from prowler.providers.aws.services.elbv2.elbv2_deletion_protection.elbv2_deletion_protection import (
    @@ -64,21 +37,24 @@ def test_elb_no_balancers(self):
     
                 assert len(result) == 0
     
    -    @mock_ec2
    -    @mock_elbv2
    +    @mock_aws
         def test_elbv2_without_deletion_protection(self):
    -        conn = client("elbv2", region_name=AWS_REGION)
    -        ec2 = resource("ec2", region_name=AWS_REGION)
    +        conn = client("elbv2", region_name=AWS_REGION_EU_WEST_1)
    +        ec2 = resource("ec2", region_name=AWS_REGION_EU_WEST_1)
     
             security_group = ec2.create_security_group(
                 GroupName="a-security-group", Description="First One"
             )
             vpc = ec2.create_vpc(CidrBlock="172.28.7.0/24", InstanceTenancy="default")
             subnet1 = ec2.create_subnet(
    -            VpcId=vpc.id, CidrBlock="172.28.7.192/26", AvailabilityZone=f"{AWS_REGION}a"
    +            VpcId=vpc.id,
    +            CidrBlock="172.28.7.192/26",
    +            AvailabilityZone=AWS_REGION_EU_WEST_1_AZA,
             )
             subnet2 = ec2.create_subnet(
    -            VpcId=vpc.id, CidrBlock="172.28.7.0/26", AvailabilityZone=f"{AWS_REGION}b"
    +            VpcId=vpc.id,
    +            CidrBlock="172.28.7.0/26",
    +            AvailabilityZone=AWS_REGION_EU_WEST_1_AZB,
             )
     
             lb = conn.create_load_balancer(
    @@ -100,10 +76,12 @@ def test_elbv2_without_deletion_protection(self):
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    -            new=self.set_mocked_audit_info(),
    +            new=set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]),
             ), mock.patch(
                 "prowler.providers.aws.services.elbv2.elbv2_deletion_protection.elbv2_deletion_protection.elbv2_client",
    -            new=ELBv2(self.set_mocked_audit_info()),
    +            new=ELBv2(
    +                set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1])
    +            ),
             ):
                 from prowler.providers.aws.services.elbv2.elbv2_deletion_protection.elbv2_deletion_protection import (
                     elbv2_deletion_protection,
    @@ -121,21 +99,24 @@ def test_elbv2_without_deletion_protection(self):
                 assert result[0].resource_id == "my-lb"
                 assert result[0].resource_arn == lb["LoadBalancerArn"]
     
    -    @mock_ec2
    -    @mock_elbv2
    +    @mock_aws
         def test_elbv2_with_deletion_protection(self):
    -        conn = client("elbv2", region_name=AWS_REGION)
    -        ec2 = resource("ec2", region_name=AWS_REGION)
    +        conn = client("elbv2", region_name=AWS_REGION_EU_WEST_1)
    +        ec2 = resource("ec2", region_name=AWS_REGION_EU_WEST_1)
     
             security_group = ec2.create_security_group(
                 GroupName="a-security-group", Description="First One"
             )
             vpc = ec2.create_vpc(CidrBlock="172.28.7.0/24", InstanceTenancy="default")
             subnet1 = ec2.create_subnet(
    -            VpcId=vpc.id, CidrBlock="172.28.7.192/26", AvailabilityZone=f"{AWS_REGION}a"
    +            VpcId=vpc.id,
    +            CidrBlock="172.28.7.192/26",
    +            AvailabilityZone=AWS_REGION_EU_WEST_1_AZA,
             )
             subnet2 = ec2.create_subnet(
    -            VpcId=vpc.id, CidrBlock="172.28.7.0/26", AvailabilityZone=f"{AWS_REGION}b"
    +            VpcId=vpc.id,
    +            CidrBlock="172.28.7.0/26",
    +            AvailabilityZone=AWS_REGION_EU_WEST_1_AZB,
             )
     
             lb = conn.create_load_balancer(
    @@ -156,10 +137,12 @@ def test_elbv2_with_deletion_protection(self):
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    -            new=self.set_mocked_audit_info(),
    +            new=set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]),
             ), mock.patch(
                 "prowler.providers.aws.services.elbv2.elbv2_deletion_protection.elbv2_deletion_protection.elbv2_client",
    -            new=ELBv2(self.set_mocked_audit_info()),
    +            new=ELBv2(
    +                set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1])
    +            ),
             ):
                 from prowler.providers.aws.services.elbv2.elbv2_deletion_protection.elbv2_deletion_protection import (
                     elbv2_deletion_protection,
    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 23cf23f5b7b..b8b1a9c40b7 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
    @@ -1,58 +1,31 @@
     from re import search
     from unittest import mock
     
    -from boto3 import client, resource, session
    -from moto import mock_ec2, mock_elbv2
    +from boto3 import client, resource
    +from moto import mock_aws
     
    -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"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_REGION_EU_WEST_1,
    +    AWS_REGION_EU_WEST_1_AZA,
    +    AWS_REGION_EU_WEST_1_AZB,
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     
     class Test_elbv2_desync_mitigation_mode:
    -    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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=AWS_REGION,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=["us-east-1", "eu-west-1"],
    -            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
    -
    -    @mock_elbv2
    +    @mock_aws
         def test_elb_no_balancers(self):
             from prowler.providers.aws.services.elbv2.elbv2_service import ELBv2
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    -            new=self.set_mocked_audit_info(),
    +            new=set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]),
             ), mock.patch(
                 "prowler.providers.aws.services.elbv2.elbv2_desync_mitigation_mode.elbv2_desync_mitigation_mode.elbv2_client",
    -            new=ELBv2(self.set_mocked_audit_info()),
    +            new=ELBv2(
    +                set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1])
    +            ),
             ):
                 # Test Check
                 from prowler.providers.aws.services.elbv2.elbv2_desync_mitigation_mode.elbv2_desync_mitigation_mode import (
    @@ -64,21 +37,24 @@ def test_elb_no_balancers(self):
     
                 assert len(result) == 0
     
    -    @mock_ec2
    -    @mock_elbv2
    +    @mock_aws
         def test_elbv2_without_desync_mitigation_mode_and_not_dropping_headers(self):
    -        conn = client("elbv2", region_name=AWS_REGION)
    -        ec2 = resource("ec2", region_name=AWS_REGION)
    +        conn = client("elbv2", region_name=AWS_REGION_EU_WEST_1)
    +        ec2 = resource("ec2", region_name=AWS_REGION_EU_WEST_1)
     
             security_group = ec2.create_security_group(
                 GroupName="a-security-group", Description="First One"
             )
             vpc = ec2.create_vpc(CidrBlock="172.28.7.0/24", InstanceTenancy="default")
             subnet1 = ec2.create_subnet(
    -            VpcId=vpc.id, CidrBlock="172.28.7.192/26", AvailabilityZone=f"{AWS_REGION}a"
    +            VpcId=vpc.id,
    +            CidrBlock="172.28.7.192/26",
    +            AvailabilityZone=AWS_REGION_EU_WEST_1_AZA,
             )
             subnet2 = ec2.create_subnet(
    -            VpcId=vpc.id, CidrBlock="172.28.7.0/26", AvailabilityZone=f"{AWS_REGION}b"
    +            VpcId=vpc.id,
    +            CidrBlock="172.28.7.0/26",
    +            AvailabilityZone=AWS_REGION_EU_WEST_1_AZB,
             )
     
             lb = conn.create_load_balancer(
    @@ -104,10 +80,12 @@ def test_elbv2_without_desync_mitigation_mode_and_not_dropping_headers(self):
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    -            new=self.set_mocked_audit_info(),
    +            new=set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]),
             ), mock.patch(
                 "prowler.providers.aws.services.elbv2.elbv2_desync_mitigation_mode.elbv2_desync_mitigation_mode.elbv2_client",
    -            new=ELBv2(self.set_mocked_audit_info()),
    +            new=ELBv2(
    +                set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1])
    +            ),
             ):
                 from prowler.providers.aws.services.elbv2.elbv2_desync_mitigation_mode.elbv2_desync_mitigation_mode import (
                     elbv2_desync_mitigation_mode,
    @@ -125,21 +103,24 @@ def test_elbv2_without_desync_mitigation_mode_and_not_dropping_headers(self):
                 assert result[0].resource_id == "my-lb"
                 assert result[0].resource_arn == lb["LoadBalancerArn"]
     
    -    @mock_ec2
    -    @mock_elbv2
    +    @mock_aws
         def test_elbv2_without_desync_mitigation_mode_but_dropping_headers(self):
    -        conn = client("elbv2", region_name=AWS_REGION)
    -        ec2 = resource("ec2", region_name=AWS_REGION)
    +        conn = client("elbv2", region_name=AWS_REGION_EU_WEST_1)
    +        ec2 = resource("ec2", region_name=AWS_REGION_EU_WEST_1)
     
             security_group = ec2.create_security_group(
                 GroupName="a-security-group", Description="First One"
             )
             vpc = ec2.create_vpc(CidrBlock="172.28.7.0/24", InstanceTenancy="default")
             subnet1 = ec2.create_subnet(
    -            VpcId=vpc.id, CidrBlock="172.28.7.192/26", AvailabilityZone=f"{AWS_REGION}a"
    +            VpcId=vpc.id,
    +            CidrBlock="172.28.7.192/26",
    +            AvailabilityZone=AWS_REGION_EU_WEST_1_AZA,
             )
             subnet2 = ec2.create_subnet(
    -            VpcId=vpc.id, CidrBlock="172.28.7.0/26", AvailabilityZone=f"{AWS_REGION}b"
    +            VpcId=vpc.id,
    +            CidrBlock="172.28.7.0/26",
    +            AvailabilityZone=AWS_REGION_EU_WEST_1_AZB,
             )
     
             lb = conn.create_load_balancer(
    @@ -165,10 +146,12 @@ def test_elbv2_without_desync_mitigation_mode_but_dropping_headers(self):
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    -            new=self.set_mocked_audit_info(),
    +            new=set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]),
             ), mock.patch(
                 "prowler.providers.aws.services.elbv2.elbv2_desync_mitigation_mode.elbv2_desync_mitigation_mode.elbv2_client",
    -            new=ELBv2(self.set_mocked_audit_info()),
    +            new=ELBv2(
    +                set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1])
    +            ),
             ):
                 from prowler.providers.aws.services.elbv2.elbv2_desync_mitigation_mode.elbv2_desync_mitigation_mode import (
                     elbv2_desync_mitigation_mode,
    @@ -186,21 +169,24 @@ def test_elbv2_without_desync_mitigation_mode_but_dropping_headers(self):
                 assert result[0].resource_id == "my-lb"
                 assert result[0].resource_arn == lb["LoadBalancerArn"]
     
    -    @mock_ec2
    -    @mock_elbv2
    +    @mock_aws
         def test_elbv2_with_desync_mitigation_mode(self):
    -        conn = client("elbv2", region_name=AWS_REGION)
    -        ec2 = resource("ec2", region_name=AWS_REGION)
    +        conn = client("elbv2", region_name=AWS_REGION_EU_WEST_1)
    +        ec2 = resource("ec2", region_name=AWS_REGION_EU_WEST_1)
     
             security_group = ec2.create_security_group(
                 GroupName="a-security-group", Description="First One"
             )
             vpc = ec2.create_vpc(CidrBlock="172.28.7.0/24", InstanceTenancy="default")
             subnet1 = ec2.create_subnet(
    -            VpcId=vpc.id, CidrBlock="172.28.7.192/26", AvailabilityZone=f"{AWS_REGION}a"
    +            VpcId=vpc.id,
    +            CidrBlock="172.28.7.192/26",
    +            AvailabilityZone=AWS_REGION_EU_WEST_1_AZA,
             )
             subnet2 = ec2.create_subnet(
    -            VpcId=vpc.id, CidrBlock="172.28.7.0/26", AvailabilityZone=f"{AWS_REGION}b"
    +            VpcId=vpc.id,
    +            CidrBlock="172.28.7.0/26",
    +            AvailabilityZone=AWS_REGION_EU_WEST_1_AZB,
             )
     
             lb = conn.create_load_balancer(
    @@ -221,10 +207,12 @@ def test_elbv2_with_desync_mitigation_mode(self):
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    -            new=self.set_mocked_audit_info(),
    +            new=set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]),
             ), mock.patch(
                 "prowler.providers.aws.services.elbv2.elbv2_desync_mitigation_mode.elbv2_desync_mitigation_mode.elbv2_client",
    -            new=ELBv2(self.set_mocked_audit_info()),
    +            new=ELBv2(
    +                set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1])
    +            ),
             ):
                 from prowler.providers.aws.services.elbv2.elbv2_desync_mitigation_mode.elbv2_desync_mitigation_mode import (
                     elbv2_desync_mitigation_mode,
    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 d5aadac0089..3403242b445 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
    @@ -1,58 +1,31 @@
     from re import search
     from unittest import mock
     
    -from boto3 import client, resource, session
    -from moto import mock_ec2, mock_elbv2
    +from boto3 import client, resource
    +from moto import mock_aws
     
    -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"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_REGION_EU_WEST_1,
    +    AWS_REGION_EU_WEST_1_AZA,
    +    AWS_REGION_EU_WEST_1_AZB,
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     
     class Test_elbv2_insecure_ssl_ciphers:
    -    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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=["us-east-1", "eu-west-1"],
    -            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
    -
    -    @mock_elbv2
    +    @mock_aws
         def test_elb_no_balancers(self):
             from prowler.providers.aws.services.elbv2.elbv2_service import ELBv2
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    -            new=self.set_mocked_audit_info(),
    +            new=set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]),
             ), mock.patch(
                 "prowler.providers.aws.services.elbv2.elbv2_insecure_ssl_ciphers.elbv2_insecure_ssl_ciphers.elbv2_client",
    -            new=ELBv2(self.set_mocked_audit_info()),
    +            new=ELBv2(
    +                set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1])
    +            ),
             ):
                 # Test Check
                 from prowler.providers.aws.services.elbv2.elbv2_insecure_ssl_ciphers.elbv2_insecure_ssl_ciphers import (
    @@ -64,21 +37,24 @@ def test_elb_no_balancers(self):
     
                 assert len(result) == 0
     
    -    @mock_ec2
    -    @mock_elbv2
    +    @mock_aws
         def test_elbv2_listener_with_secure_policy(self):
    -        conn = client("elbv2", region_name=AWS_REGION)
    -        ec2 = resource("ec2", region_name=AWS_REGION)
    +        conn = client("elbv2", region_name=AWS_REGION_EU_WEST_1)
    +        ec2 = resource("ec2", region_name=AWS_REGION_EU_WEST_1)
     
             security_group = ec2.create_security_group(
                 GroupName="a-security-group", Description="First One"
             )
             vpc = ec2.create_vpc(CidrBlock="172.28.7.0/24", InstanceTenancy="default")
             subnet1 = ec2.create_subnet(
    -            VpcId=vpc.id, CidrBlock="172.28.7.192/26", AvailabilityZone=f"{AWS_REGION}a"
    +            VpcId=vpc.id,
    +            CidrBlock="172.28.7.192/26",
    +            AvailabilityZone=AWS_REGION_EU_WEST_1_AZA,
             )
             subnet2 = ec2.create_subnet(
    -            VpcId=vpc.id, CidrBlock="172.28.7.0/26", AvailabilityZone=f"{AWS_REGION}b"
    +            VpcId=vpc.id,
    +            CidrBlock="172.28.7.0/26",
    +            AvailabilityZone=AWS_REGION_EU_WEST_1_AZB,
             )
     
             lb = conn.create_load_balancer(
    @@ -117,10 +93,12 @@ def test_elbv2_listener_with_secure_policy(self):
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    -            new=self.set_mocked_audit_info(),
    +            new=set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]),
             ), mock.patch(
                 "prowler.providers.aws.services.elbv2.elbv2_insecure_ssl_ciphers.elbv2_insecure_ssl_ciphers.elbv2_client",
    -            new=ELBv2(self.set_mocked_audit_info()),
    +            new=ELBv2(
    +                set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1])
    +            ),
             ):
                 from prowler.providers.aws.services.elbv2.elbv2_insecure_ssl_ciphers.elbv2_insecure_ssl_ciphers import (
                     elbv2_insecure_ssl_ciphers,
    @@ -138,21 +116,24 @@ def test_elbv2_listener_with_secure_policy(self):
                 assert result[0].resource_id == "my-lb"
                 assert result[0].resource_arn == lb["LoadBalancerArn"]
     
    -    @mock_ec2
    -    @mock_elbv2
    +    @mock_aws
         def test_elbv2_with_HTTPS_listener(self):
    -        conn = client("elbv2", region_name=AWS_REGION)
    -        ec2 = resource("ec2", region_name=AWS_REGION)
    +        conn = client("elbv2", region_name=AWS_REGION_EU_WEST_1)
    +        ec2 = resource("ec2", region_name=AWS_REGION_EU_WEST_1)
     
             security_group = ec2.create_security_group(
                 GroupName="a-security-group", Description="First One"
             )
             vpc = ec2.create_vpc(CidrBlock="172.28.7.0/24", InstanceTenancy="default")
             subnet1 = ec2.create_subnet(
    -            VpcId=vpc.id, CidrBlock="172.28.7.192/26", AvailabilityZone=f"{AWS_REGION}a"
    +            VpcId=vpc.id,
    +            CidrBlock="172.28.7.192/26",
    +            AvailabilityZone=AWS_REGION_EU_WEST_1_AZA,
             )
             subnet2 = ec2.create_subnet(
    -            VpcId=vpc.id, CidrBlock="172.28.7.0/26", AvailabilityZone=f"{AWS_REGION}b"
    +            VpcId=vpc.id,
    +            CidrBlock="172.28.7.0/26",
    +            AvailabilityZone=AWS_REGION_EU_WEST_1_AZB,
             )
     
             lb = conn.create_load_balancer(
    @@ -189,10 +170,12 @@ def test_elbv2_with_HTTPS_listener(self):
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    -            new=self.set_mocked_audit_info(),
    +            new=set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]),
             ), mock.patch(
                 "prowler.providers.aws.services.elbv2.elbv2_insecure_ssl_ciphers.elbv2_insecure_ssl_ciphers.elbv2_client",
    -            new=ELBv2(self.set_mocked_audit_info()),
    +            new=ELBv2(
    +                set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1])
    +            ),
             ):
                 from prowler.providers.aws.services.elbv2.elbv2_insecure_ssl_ciphers.elbv2_insecure_ssl_ciphers import (
                     elbv2_insecure_ssl_ciphers,
    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 f0e513e6565..0bee01c5b4d 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
    @@ -1,58 +1,31 @@
     from re import search
     from unittest import mock
     
    -from boto3 import client, resource, session
    -from moto import mock_ec2, mock_elbv2
    +from boto3 import client, resource
    +from moto import mock_aws
     
    -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"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_REGION_EU_WEST_1,
    +    AWS_REGION_EU_WEST_1_AZA,
    +    AWS_REGION_EU_WEST_1_AZB,
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     
     class Test_elbv2_internet_facing:
    -    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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=["us-east-1", "eu-west-1"],
    -            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
    -
    -    @mock_elbv2
    +    @mock_aws
         def test_elb_no_balancers(self):
             from prowler.providers.aws.services.elbv2.elbv2_service import ELBv2
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    -            new=self.set_mocked_audit_info(),
    +            new=set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]),
             ), mock.patch(
                 "prowler.providers.aws.services.elbv2.elbv2_internet_facing.elbv2_internet_facing.elbv2_client",
    -            new=ELBv2(self.set_mocked_audit_info()),
    +            new=ELBv2(
    +                set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1])
    +            ),
             ):
                 # Test Check
                 from prowler.providers.aws.services.elbv2.elbv2_internet_facing.elbv2_internet_facing import (
    @@ -64,21 +37,24 @@ def test_elb_no_balancers(self):
     
                 assert len(result) == 0
     
    -    @mock_ec2
    -    @mock_elbv2
    +    @mock_aws
         def test_elbv2_private(self):
    -        conn = client("elbv2", region_name=AWS_REGION)
    -        ec2 = resource("ec2", region_name=AWS_REGION)
    +        conn = client("elbv2", region_name=AWS_REGION_EU_WEST_1)
    +        ec2 = resource("ec2", region_name=AWS_REGION_EU_WEST_1)
     
             security_group = ec2.create_security_group(
                 GroupName="a-security-group", Description="First One"
             )
             vpc = ec2.create_vpc(CidrBlock="172.28.7.0/24", InstanceTenancy="default")
             subnet1 = ec2.create_subnet(
    -            VpcId=vpc.id, CidrBlock="172.28.7.192/26", AvailabilityZone=f"{AWS_REGION}a"
    +            VpcId=vpc.id,
    +            CidrBlock="172.28.7.192/26",
    +            AvailabilityZone=AWS_REGION_EU_WEST_1_AZA,
             )
             subnet2 = ec2.create_subnet(
    -            VpcId=vpc.id, CidrBlock="172.28.7.0/26", AvailabilityZone=f"{AWS_REGION}b"
    +            VpcId=vpc.id,
    +            CidrBlock="172.28.7.0/26",
    +            AvailabilityZone=AWS_REGION_EU_WEST_1_AZB,
             )
     
             lb = conn.create_load_balancer(
    @@ -93,10 +69,12 @@ def test_elbv2_private(self):
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    -            new=self.set_mocked_audit_info(),
    +            new=set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]),
             ), mock.patch(
                 "prowler.providers.aws.services.elbv2.elbv2_internet_facing.elbv2_internet_facing.elbv2_client",
    -            new=ELBv2(self.set_mocked_audit_info()),
    +            new=ELBv2(
    +                set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1])
    +            ),
             ):
                 from prowler.providers.aws.services.elbv2.elbv2_internet_facing.elbv2_internet_facing import (
                     elbv2_internet_facing,
    @@ -114,21 +92,24 @@ def test_elbv2_private(self):
                 assert result[0].resource_id == "my-lb"
                 assert result[0].resource_arn == lb["LoadBalancerArn"]
     
    -    @mock_ec2
    -    @mock_elbv2
    +    @mock_aws
         def test_elbv2_internet_facing(self):
    -        conn = client("elbv2", region_name=AWS_REGION)
    -        ec2 = resource("ec2", region_name=AWS_REGION)
    +        conn = client("elbv2", region_name=AWS_REGION_EU_WEST_1)
    +        ec2 = resource("ec2", region_name=AWS_REGION_EU_WEST_1)
     
             security_group = ec2.create_security_group(
                 GroupName="a-security-group", Description="First One"
             )
             vpc = ec2.create_vpc(CidrBlock="172.28.7.0/24", InstanceTenancy="default")
             subnet1 = ec2.create_subnet(
    -            VpcId=vpc.id, CidrBlock="172.28.7.192/26", AvailabilityZone=f"{AWS_REGION}a"
    +            VpcId=vpc.id,
    +            CidrBlock="172.28.7.192/26",
    +            AvailabilityZone=AWS_REGION_EU_WEST_1_AZA,
             )
             subnet2 = ec2.create_subnet(
    -            VpcId=vpc.id, CidrBlock="172.28.7.0/26", AvailabilityZone=f"{AWS_REGION}b"
    +            VpcId=vpc.id,
    +            CidrBlock="172.28.7.0/26",
    +            AvailabilityZone=AWS_REGION_EU_WEST_1_AZB,
             )
     
             lb = conn.create_load_balancer(
    @@ -142,10 +123,12 @@ def test_elbv2_internet_facing(self):
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    -            new=self.set_mocked_audit_info(),
    +            new=set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]),
             ), mock.patch(
                 "prowler.providers.aws.services.elbv2.elbv2_internet_facing.elbv2_internet_facing.elbv2_client",
    -            new=ELBv2(self.set_mocked_audit_info()),
    +            new=ELBv2(
    +                set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1])
    +            ),
             ):
                 from prowler.providers.aws.services.elbv2.elbv2_internet_facing.elbv2_internet_facing import (
                     elbv2_internet_facing,
    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 02b724fab7b..76ebf4960a5 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
    @@ -1,58 +1,31 @@
     from re import search
     from unittest import mock
     
    -from boto3 import client, resource, session
    -from moto import mock_ec2, mock_elbv2
    +from boto3 import client, resource
    +from moto import mock_aws
     
    -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"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_REGION_EU_WEST_1,
    +    AWS_REGION_EU_WEST_1_AZA,
    +    AWS_REGION_EU_WEST_1_AZB,
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     
     class Test_elbv2_listeners_underneath:
    -    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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=["us-east-1", "eu-west-1"],
    -            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
    -
    -    @mock_elbv2
    +    @mock_aws
         def test_elb_no_balancers(self):
             from prowler.providers.aws.services.elbv2.elbv2_service import ELBv2
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    -            new=self.set_mocked_audit_info(),
    +            new=set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]),
             ), mock.patch(
                 "prowler.providers.aws.services.elbv2.elbv2_listeners_underneath.elbv2_listeners_underneath.elbv2_client",
    -            new=ELBv2(self.set_mocked_audit_info()),
    +            new=ELBv2(
    +                set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1])
    +            ),
             ):
                 # Test Check
                 from prowler.providers.aws.services.elbv2.elbv2_listeners_underneath.elbv2_listeners_underneath import (
    @@ -64,21 +37,24 @@ def test_elb_no_balancers(self):
     
                 assert len(result) == 0
     
    -    @mock_ec2
    -    @mock_elbv2
    +    @mock_aws
         def test_elbv2_without_listeners(self):
    -        conn = client("elbv2", region_name=AWS_REGION)
    -        ec2 = resource("ec2", region_name=AWS_REGION)
    +        conn = client("elbv2", region_name=AWS_REGION_EU_WEST_1)
    +        ec2 = resource("ec2", region_name=AWS_REGION_EU_WEST_1)
     
             security_group = ec2.create_security_group(
                 GroupName="a-security-group", Description="First One"
             )
             vpc = ec2.create_vpc(CidrBlock="172.28.7.0/24", InstanceTenancy="default")
             subnet1 = ec2.create_subnet(
    -            VpcId=vpc.id, CidrBlock="172.28.7.192/26", AvailabilityZone=f"{AWS_REGION}a"
    +            VpcId=vpc.id,
    +            CidrBlock="172.28.7.192/26",
    +            AvailabilityZone=AWS_REGION_EU_WEST_1_AZA,
             )
             subnet2 = ec2.create_subnet(
    -            VpcId=vpc.id, CidrBlock="172.28.7.0/26", AvailabilityZone=f"{AWS_REGION}b"
    +            VpcId=vpc.id,
    +            CidrBlock="172.28.7.0/26",
    +            AvailabilityZone=AWS_REGION_EU_WEST_1_AZB,
             )
     
             lb = conn.create_load_balancer(
    @@ -93,10 +69,12 @@ def test_elbv2_without_listeners(self):
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    -            new=self.set_mocked_audit_info(),
    +            new=set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]),
             ), mock.patch(
                 "prowler.providers.aws.services.elbv2.elbv2_listeners_underneath.elbv2_listeners_underneath.elbv2_client",
    -            new=ELBv2(self.set_mocked_audit_info()),
    +            new=ELBv2(
    +                set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1])
    +            ),
             ):
                 from prowler.providers.aws.services.elbv2.elbv2_listeners_underneath.elbv2_listeners_underneath import (
                     elbv2_listeners_underneath,
    @@ -114,21 +92,24 @@ def test_elbv2_without_listeners(self):
                 assert result[0].resource_id == "my-lb"
                 assert result[0].resource_arn == lb["LoadBalancerArn"]
     
    -    @mock_ec2
    -    @mock_elbv2
    +    @mock_aws
         def test_elbv2_with_listeners(self):
    -        conn = client("elbv2", region_name=AWS_REGION)
    -        ec2 = resource("ec2", region_name=AWS_REGION)
    +        conn = client("elbv2", region_name=AWS_REGION_EU_WEST_1)
    +        ec2 = resource("ec2", region_name=AWS_REGION_EU_WEST_1)
     
             security_group = ec2.create_security_group(
                 GroupName="a-security-group", Description="First One"
             )
             vpc = ec2.create_vpc(CidrBlock="172.28.7.0/24", InstanceTenancy="default")
             subnet1 = ec2.create_subnet(
    -            VpcId=vpc.id, CidrBlock="172.28.7.192/26", AvailabilityZone=f"{AWS_REGION}a"
    +            VpcId=vpc.id,
    +            CidrBlock="172.28.7.192/26",
    +            AvailabilityZone=AWS_REGION_EU_WEST_1_AZA,
             )
             subnet2 = ec2.create_subnet(
    -            VpcId=vpc.id, CidrBlock="172.28.7.0/26", AvailabilityZone=f"{AWS_REGION}b"
    +            VpcId=vpc.id,
    +            CidrBlock="172.28.7.0/26",
    +            AvailabilityZone=AWS_REGION_EU_WEST_1_AZB,
             )
     
             lb = conn.create_load_balancer(
    @@ -164,10 +145,12 @@ def test_elbv2_with_listeners(self):
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    -            new=self.set_mocked_audit_info(),
    +            new=set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]),
             ), mock.patch(
                 "prowler.providers.aws.services.elbv2.elbv2_listeners_underneath.elbv2_listeners_underneath.elbv2_client",
    -            new=ELBv2(self.set_mocked_audit_info()),
    +            new=ELBv2(
    +                set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1])
    +            ),
             ):
                 from prowler.providers.aws.services.elbv2.elbv2_listeners_underneath.elbv2_listeners_underneath import (
                     elbv2_listeners_underneath,
    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 144c5174504..f86dc328290 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
    @@ -1,58 +1,31 @@
     from re import search
     from unittest import mock
     
    -from boto3 import client, resource, session
    -from moto import mock_ec2, mock_elbv2
    +from boto3 import client, resource
    +from moto import mock_aws
     
    -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"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_REGION_EU_WEST_1,
    +    AWS_REGION_EU_WEST_1_AZA,
    +    AWS_REGION_EU_WEST_1_AZB,
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     
     class Test_elbv2_logging_enabled:
    -    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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=["us-east-1", "eu-west-1"],
    -            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
    -
    -    @mock_elbv2
    +    @mock_aws
         def test_elb_no_balancers(self):
             from prowler.providers.aws.services.elbv2.elbv2_service import ELBv2
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    -            new=self.set_mocked_audit_info(),
    +            new=set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]),
             ), mock.patch(
                 "prowler.providers.aws.services.elbv2.elbv2_logging_enabled.elbv2_logging_enabled.elbv2_client",
    -            new=ELBv2(self.set_mocked_audit_info()),
    +            new=ELBv2(
    +                set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1])
    +            ),
             ):
                 # Test Check
                 from prowler.providers.aws.services.elbv2.elbv2_logging_enabled.elbv2_logging_enabled import (
    @@ -64,21 +37,24 @@ def test_elb_no_balancers(self):
     
                 assert len(result) == 0
     
    -    @mock_ec2
    -    @mock_elbv2
    +    @mock_aws
         def test_elbv2_without_logging_enabled(self):
    -        conn = client("elbv2", region_name=AWS_REGION)
    -        ec2 = resource("ec2", region_name=AWS_REGION)
    +        conn = client("elbv2", region_name=AWS_REGION_EU_WEST_1)
    +        ec2 = resource("ec2", region_name=AWS_REGION_EU_WEST_1)
     
             security_group = ec2.create_security_group(
                 GroupName="a-security-group", Description="First One"
             )
             vpc = ec2.create_vpc(CidrBlock="172.28.7.0/24", InstanceTenancy="default")
             subnet1 = ec2.create_subnet(
    -            VpcId=vpc.id, CidrBlock="172.28.7.192/26", AvailabilityZone=f"{AWS_REGION}a"
    +            VpcId=vpc.id,
    +            CidrBlock="172.28.7.192/26",
    +            AvailabilityZone=AWS_REGION_EU_WEST_1_AZA,
             )
             subnet2 = ec2.create_subnet(
    -            VpcId=vpc.id, CidrBlock="172.28.7.0/26", AvailabilityZone=f"{AWS_REGION}b"
    +            VpcId=vpc.id,
    +            CidrBlock="172.28.7.0/26",
    +            AvailabilityZone=AWS_REGION_EU_WEST_1_AZB,
             )
     
             lb = conn.create_load_balancer(
    @@ -103,10 +79,12 @@ def test_elbv2_without_logging_enabled(self):
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    -            new=self.set_mocked_audit_info(),
    +            new=set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]),
             ), mock.patch(
                 "prowler.providers.aws.services.elbv2.elbv2_logging_enabled.elbv2_logging_enabled.elbv2_client",
    -            new=ELBv2(self.set_mocked_audit_info()),
    +            new=ELBv2(
    +                set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1])
    +            ),
             ):
                 from prowler.providers.aws.services.elbv2.elbv2_logging_enabled.elbv2_logging_enabled import (
                     elbv2_logging_enabled,
    @@ -124,21 +102,24 @@ def test_elbv2_without_logging_enabled(self):
                 assert result[0].resource_id == "my-lb"
                 assert result[0].resource_arn == lb["LoadBalancerArn"]
     
    -    @mock_ec2
    -    @mock_elbv2
    +    @mock_aws
         def test_elbv2_with_logging_enabled(self):
    -        conn = client("elbv2", region_name=AWS_REGION)
    -        ec2 = resource("ec2", region_name=AWS_REGION)
    +        conn = client("elbv2", region_name=AWS_REGION_EU_WEST_1)
    +        ec2 = resource("ec2", region_name=AWS_REGION_EU_WEST_1)
     
             security_group = ec2.create_security_group(
                 GroupName="a-security-group", Description="First One"
             )
             vpc = ec2.create_vpc(CidrBlock="172.28.7.0/24", InstanceTenancy="default")
             subnet1 = ec2.create_subnet(
    -            VpcId=vpc.id, CidrBlock="172.28.7.192/26", AvailabilityZone=f"{AWS_REGION}a"
    +            VpcId=vpc.id,
    +            CidrBlock="172.28.7.192/26",
    +            AvailabilityZone=AWS_REGION_EU_WEST_1_AZA,
             )
             subnet2 = ec2.create_subnet(
    -            VpcId=vpc.id, CidrBlock="172.28.7.0/26", AvailabilityZone=f"{AWS_REGION}b"
    +            VpcId=vpc.id,
    +            CidrBlock="172.28.7.0/26",
    +            AvailabilityZone=AWS_REGION_EU_WEST_1_AZB,
             )
     
             lb = conn.create_load_balancer(
    @@ -162,10 +143,12 @@ def test_elbv2_with_logging_enabled(self):
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    -            new=self.set_mocked_audit_info(),
    +            new=set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]),
             ), mock.patch(
                 "prowler.providers.aws.services.elbv2.elbv2_logging_enabled.elbv2_logging_enabled.elbv2_client",
    -            new=ELBv2(self.set_mocked_audit_info()),
    +            new=ELBv2(
    +                set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1])
    +            ),
             ):
                 from prowler.providers.aws.services.elbv2.elbv2_logging_enabled.elbv2_logging_enabled import (
                     elbv2_logging_enabled,
    diff --git a/tests/providers/aws/services/elbv2/elbv2_service_test.py b/tests/providers/aws/services/elbv2/elbv2_service_test.py
    index 5760ba2e0d1..573d084a6e3 100644
    --- a/tests/providers/aws/services/elbv2/elbv2_service_test.py
    +++ b/tests/providers/aws/services/elbv2/elbv2_service_test.py
    @@ -1,87 +1,67 @@
    -from boto3 import client, resource, session
    -from moto import mock_ec2, mock_elbv2
    +from boto3 import client, resource
    +from moto import mock_aws
     
    -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"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_REGION_EU_WEST_1,
    +    AWS_REGION_EU_WEST_1_AZA,
    +    AWS_REGION_EU_WEST_1_AZB,
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     
     class Test_ELBv2_Service:
    -    # 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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=None,
    -            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
    -
         # Test ELBv2 Service
    -    @mock_elbv2
    +    @mock_aws
         def test_service(self):
             # ELBv2 client for this test class
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
             elbv2 = ELBv2(audit_info)
             assert elbv2.service == "elbv2"
     
         # Test ELBv2 Client
    -    @mock_elbv2
    +    @mock_aws
         def test_client(self):
             # ELBv2 client for this test class
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
             elbv2 = ELBv2(audit_info)
             for regional_client in elbv2.regional_clients.values():
                 assert regional_client.__class__.__name__ == "ElasticLoadBalancingv2"
     
         # Test ELBv2 Session
    -    @mock_elbv2
    +    @mock_aws
         def test__get_session__(self):
             # ELBv2 client for this test class
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
             elbv2 = ELBv2(audit_info)
             assert elbv2.session.__class__.__name__ == "Session"
     
         # Test ELBv2 Describe Load Balancers
    -    @mock_ec2
    -    @mock_elbv2
    +    @mock_aws
         def test__describe_load_balancers__(self):
    -        conn = client("elbv2", region_name=AWS_REGION)
    -        ec2 = resource("ec2", region_name=AWS_REGION)
    +        conn = client("elbv2", region_name=AWS_REGION_EU_WEST_1)
    +        ec2 = resource("ec2", region_name=AWS_REGION_EU_WEST_1)
     
             security_group = ec2.create_security_group(
                 GroupName="a-security-group", Description="First One"
             )
             vpc = ec2.create_vpc(CidrBlock="172.28.7.0/24", InstanceTenancy="default")
             subnet1 = ec2.create_subnet(
    -            VpcId=vpc.id, CidrBlock="172.28.7.192/26", AvailabilityZone=f"{AWS_REGION}a"
    +            VpcId=vpc.id,
    +            CidrBlock="172.28.7.192/26",
    +            AvailabilityZone=AWS_REGION_EU_WEST_1_AZA,
             )
             subnet2 = ec2.create_subnet(
    -            VpcId=vpc.id, CidrBlock="172.28.7.0/26", AvailabilityZone=f"{AWS_REGION}b"
    +            VpcId=vpc.id,
    +            CidrBlock="172.28.7.0/26",
    +            AvailabilityZone=AWS_REGION_EU_WEST_1_AZB,
             )
     
             lb = conn.create_load_balancer(
    @@ -91,30 +71,35 @@ def test__describe_load_balancers__(self):
                 Scheme="internal",
             )["LoadBalancers"][0]
             # ELBv2 client for this test class
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
             elbv2 = ELBv2(audit_info)
             assert len(elbv2.loadbalancersv2) == 1
             assert elbv2.loadbalancersv2[0].name == "my-lb"
    -        assert elbv2.loadbalancersv2[0].region == AWS_REGION
    +        assert elbv2.loadbalancersv2[0].region == AWS_REGION_EU_WEST_1
             assert elbv2.loadbalancersv2[0].scheme == "internal"
             assert elbv2.loadbalancersv2[0].arn == lb["LoadBalancerArn"]
     
         # Test ELBv2 Describe Listeners
    -    @mock_ec2
    -    @mock_elbv2
    +    @mock_aws
         def test__describe_listeners__(self):
    -        conn = client("elbv2", region_name=AWS_REGION)
    -        ec2 = resource("ec2", region_name=AWS_REGION)
    +        conn = client("elbv2", region_name=AWS_REGION_EU_WEST_1)
    +        ec2 = resource("ec2", region_name=AWS_REGION_EU_WEST_1)
     
             security_group = ec2.create_security_group(
                 GroupName="a-security-group", Description="First One"
             )
             vpc = ec2.create_vpc(CidrBlock="172.28.7.0/24", InstanceTenancy="default")
             subnet1 = ec2.create_subnet(
    -            VpcId=vpc.id, CidrBlock="172.28.7.192/26", AvailabilityZone=f"{AWS_REGION}a"
    +            VpcId=vpc.id,
    +            CidrBlock="172.28.7.192/26",
    +            AvailabilityZone=AWS_REGION_EU_WEST_1_AZA,
             )
             subnet2 = ec2.create_subnet(
    -            VpcId=vpc.id, CidrBlock="172.28.7.0/26", AvailabilityZone=f"{AWS_REGION}b"
    +            VpcId=vpc.id,
    +            CidrBlock="172.28.7.0/26",
    +            AvailabilityZone=AWS_REGION_EU_WEST_1_AZB,
             )
     
             lb = conn.create_load_balancer(
    @@ -140,28 +125,33 @@ def test__describe_listeners__(self):
                 ],
             )
             # ELBv2 client for this test class
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
             elbv2 = ELBv2(audit_info)
             assert len(elbv2.loadbalancersv2[0].listeners) == 1
             assert elbv2.loadbalancersv2[0].listeners[0].protocol == "HTTP"
             assert elbv2.loadbalancersv2[0].listeners[0].port == 443
     
         # Test ELBv2 Describe Load Balancers Attributes
    -    @mock_ec2
    -    @mock_elbv2
    +    @mock_aws
         def test__describe_load_balancer_attributes__(self):
    -        conn = client("elbv2", region_name=AWS_REGION)
    -        ec2 = resource("ec2", region_name=AWS_REGION)
    +        conn = client("elbv2", region_name=AWS_REGION_EU_WEST_1)
    +        ec2 = resource("ec2", region_name=AWS_REGION_EU_WEST_1)
     
             security_group = ec2.create_security_group(
                 GroupName="a-security-group", Description="First One"
             )
             vpc = ec2.create_vpc(CidrBlock="172.28.7.0/24", InstanceTenancy="default")
             subnet1 = ec2.create_subnet(
    -            VpcId=vpc.id, CidrBlock="172.28.7.192/26", AvailabilityZone=f"{AWS_REGION}a"
    +            VpcId=vpc.id,
    +            CidrBlock="172.28.7.192/26",
    +            AvailabilityZone=AWS_REGION_EU_WEST_1_AZA,
             )
             subnet2 = ec2.create_subnet(
    -            VpcId=vpc.id, CidrBlock="172.28.7.0/26", AvailabilityZone=f"{AWS_REGION}b"
    +            VpcId=vpc.id,
    +            CidrBlock="172.28.7.0/26",
    +            AvailabilityZone=AWS_REGION_EU_WEST_1_AZB,
             )
     
             lb = conn.create_load_balancer(
    @@ -184,7 +174,9 @@ def test__describe_load_balancer_attributes__(self):
                 ],
             )
             # ELBv2 client for this test class
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
             elbv2 = ELBv2(audit_info)
             assert len(elbv2.loadbalancersv2) == 1
             assert elbv2.loadbalancersv2[0].desync_mitigation_mode == "defensive"
    @@ -193,21 +185,24 @@ def test__describe_load_balancer_attributes__(self):
             assert elbv2.loadbalancersv2[0].drop_invalid_header_fields == "false"
     
         # Test ELBv2 Describe Load Balancers Attributes
    -    @mock_ec2
    -    @mock_elbv2
    +    @mock_aws
         def test__describe_rules__(self):
    -        conn = client("elbv2", region_name=AWS_REGION)
    -        ec2 = resource("ec2", region_name=AWS_REGION)
    +        conn = client("elbv2", region_name=AWS_REGION_EU_WEST_1)
    +        ec2 = resource("ec2", region_name=AWS_REGION_EU_WEST_1)
     
             security_group = ec2.create_security_group(
                 GroupName="a-security-group", Description="First One"
             )
             vpc = ec2.create_vpc(CidrBlock="172.28.7.0/24", InstanceTenancy="default")
             subnet1 = ec2.create_subnet(
    -            VpcId=vpc.id, CidrBlock="172.28.7.192/26", AvailabilityZone=f"{AWS_REGION}a"
    +            VpcId=vpc.id,
    +            CidrBlock="172.28.7.192/26",
    +            AvailabilityZone=AWS_REGION_EU_WEST_1_AZA,
             )
             subnet2 = ec2.create_subnet(
    -            VpcId=vpc.id, CidrBlock="172.28.7.0/26", AvailabilityZone=f"{AWS_REGION}b"
    +            VpcId=vpc.id,
    +            CidrBlock="172.28.7.0/26",
    +            AvailabilityZone=AWS_REGION_EU_WEST_1_AZB,
             )
     
             lb = conn.create_load_balancer(
    @@ -233,7 +228,9 @@ def test__describe_rules__(self):
                 DefaultActions=actions,
             )
             # ELBv2 client for this test class
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +        )
             elbv2 = ELBv2(audit_info)
             assert len(elbv2.loadbalancersv2) == 1
             assert elbv2.loadbalancersv2[0].listeners[0].rules[0].actions == actions
    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 e20ab90add5..29f262ad075 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
    @@ -1,58 +1,31 @@
     from re import search
     from unittest import mock
     
    -from boto3 import client, resource, session
    -from moto import mock_ec2, mock_elbv2
    +from boto3 import client, resource
    +from moto import mock_aws
     
    -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"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_REGION_EU_WEST_1,
    +    AWS_REGION_EU_WEST_1_AZA,
    +    AWS_REGION_EU_WEST_1_AZB,
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     
     class Test_elbv2_ssl_listeners:
    -    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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=["us-east-1", "eu-west-1"],
    -            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
    -
    -    @mock_elbv2
    +    @mock_aws
         def test_elb_no_balancers(self):
             from prowler.providers.aws.services.elbv2.elbv2_service import ELBv2
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    -            new=self.set_mocked_audit_info(),
    +            new=set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]),
             ), mock.patch(
                 "prowler.providers.aws.services.elbv2.elbv2_ssl_listeners.elbv2_ssl_listeners.elbv2_client",
    -            new=ELBv2(self.set_mocked_audit_info()),
    +            new=ELBv2(
    +                set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1])
    +            ),
             ):
                 # Test Check
                 from prowler.providers.aws.services.elbv2.elbv2_ssl_listeners.elbv2_ssl_listeners import (
    @@ -64,21 +37,24 @@ def test_elb_no_balancers(self):
     
                 assert len(result) == 0
     
    -    @mock_ec2
    -    @mock_elbv2
    +    @mock_aws
         def test_elbv2_with_HTTP_listener(self):
    -        conn = client("elbv2", region_name=AWS_REGION)
    -        ec2 = resource("ec2", region_name=AWS_REGION)
    +        conn = client("elbv2", region_name=AWS_REGION_EU_WEST_1)
    +        ec2 = resource("ec2", region_name=AWS_REGION_EU_WEST_1)
     
             security_group = ec2.create_security_group(
                 GroupName="a-security-group", Description="First One"
             )
             vpc = ec2.create_vpc(CidrBlock="172.28.7.0/24", InstanceTenancy="default")
             subnet1 = ec2.create_subnet(
    -            VpcId=vpc.id, CidrBlock="172.28.7.192/26", AvailabilityZone=f"{AWS_REGION}a"
    +            VpcId=vpc.id,
    +            CidrBlock="172.28.7.192/26",
    +            AvailabilityZone=AWS_REGION_EU_WEST_1_AZA,
             )
             subnet2 = ec2.create_subnet(
    -            VpcId=vpc.id, CidrBlock="172.28.7.0/26", AvailabilityZone=f"{AWS_REGION}b"
    +            VpcId=vpc.id,
    +            CidrBlock="172.28.7.0/26",
    +            AvailabilityZone=AWS_REGION_EU_WEST_1_AZB,
             )
     
             lb = conn.create_load_balancer(
    @@ -115,10 +91,12 @@ def test_elbv2_with_HTTP_listener(self):
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    -            new=self.set_mocked_audit_info(),
    +            new=set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]),
             ), mock.patch(
                 "prowler.providers.aws.services.elbv2.elbv2_ssl_listeners.elbv2_ssl_listeners.elbv2_client",
    -            new=ELBv2(self.set_mocked_audit_info()),
    +            new=ELBv2(
    +                set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1])
    +            ),
             ):
                 from prowler.providers.aws.services.elbv2.elbv2_ssl_listeners.elbv2_ssl_listeners import (
                     elbv2_ssl_listeners,
    @@ -136,21 +114,24 @@ def test_elbv2_with_HTTP_listener(self):
                 assert result[0].resource_id == "my-lb"
                 assert result[0].resource_arn == lb["LoadBalancerArn"]
     
    -    @mock_ec2
    -    @mock_elbv2
    +    @mock_aws
         def test_elbv2_with_HTTPS_listener(self):
    -        conn = client("elbv2", region_name=AWS_REGION)
    -        ec2 = resource("ec2", region_name=AWS_REGION)
    +        conn = client("elbv2", region_name=AWS_REGION_EU_WEST_1)
    +        ec2 = resource("ec2", region_name=AWS_REGION_EU_WEST_1)
     
             security_group = ec2.create_security_group(
                 GroupName="a-security-group", Description="First One"
             )
             vpc = ec2.create_vpc(CidrBlock="172.28.7.0/24", InstanceTenancy="default")
             subnet1 = ec2.create_subnet(
    -            VpcId=vpc.id, CidrBlock="172.28.7.192/26", AvailabilityZone=f"{AWS_REGION}a"
    +            VpcId=vpc.id,
    +            CidrBlock="172.28.7.192/26",
    +            AvailabilityZone=AWS_REGION_EU_WEST_1_AZA,
             )
             subnet2 = ec2.create_subnet(
    -            VpcId=vpc.id, CidrBlock="172.28.7.0/26", AvailabilityZone=f"{AWS_REGION}b"
    +            VpcId=vpc.id,
    +            CidrBlock="172.28.7.0/26",
    +            AvailabilityZone=AWS_REGION_EU_WEST_1_AZB,
             )
     
             lb = conn.create_load_balancer(
    @@ -186,10 +167,12 @@ def test_elbv2_with_HTTPS_listener(self):
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    -            new=self.set_mocked_audit_info(),
    +            new=set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]),
             ), mock.patch(
                 "prowler.providers.aws.services.elbv2.elbv2_ssl_listeners.elbv2_ssl_listeners.elbv2_client",
    -            new=ELBv2(self.set_mocked_audit_info()),
    +            new=ELBv2(
    +                set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1])
    +            ),
             ):
                 from prowler.providers.aws.services.elbv2.elbv2_ssl_listeners.elbv2_ssl_listeners import (
                     elbv2_ssl_listeners,
    @@ -207,21 +190,24 @@ def test_elbv2_with_HTTPS_listener(self):
                 assert result[0].resource_id == "my-lb"
                 assert result[0].resource_arn == lb["LoadBalancerArn"]
     
    -    @mock_ec2
    -    @mock_elbv2
    +    @mock_aws
         def test_elbv2_with_HTTPS_redirection(self):
    -        conn = client("elbv2", region_name=AWS_REGION)
    -        ec2 = resource("ec2", region_name=AWS_REGION)
    +        conn = client("elbv2", region_name=AWS_REGION_EU_WEST_1)
    +        ec2 = resource("ec2", region_name=AWS_REGION_EU_WEST_1)
     
             security_group = ec2.create_security_group(
                 GroupName="a-security-group", Description="First One"
             )
             vpc = ec2.create_vpc(CidrBlock="172.28.7.0/24", InstanceTenancy="default")
             subnet1 = ec2.create_subnet(
    -            VpcId=vpc.id, CidrBlock="172.28.7.192/26", AvailabilityZone=f"{AWS_REGION}a"
    +            VpcId=vpc.id,
    +            CidrBlock="172.28.7.192/26",
    +            AvailabilityZone=AWS_REGION_EU_WEST_1_AZA,
             )
             subnet2 = ec2.create_subnet(
    -            VpcId=vpc.id, CidrBlock="172.28.7.0/26", AvailabilityZone=f"{AWS_REGION}b"
    +            VpcId=vpc.id,
    +            CidrBlock="172.28.7.0/26",
    +            AvailabilityZone=AWS_REGION_EU_WEST_1_AZB,
             )
     
             lb = conn.create_load_balancer(
    @@ -250,10 +236,12 @@ def test_elbv2_with_HTTPS_redirection(self):
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    -            new=self.set_mocked_audit_info(),
    +            new=set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]),
             ), mock.patch(
                 "prowler.providers.aws.services.elbv2.elbv2_ssl_listeners.elbv2_ssl_listeners.elbv2_client",
    -            new=ELBv2(self.set_mocked_audit_info()),
    +            new=ELBv2(
    +                set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1])
    +            ),
             ):
                 from prowler.providers.aws.services.elbv2.elbv2_ssl_listeners.elbv2_ssl_listeners import (
                     elbv2_ssl_listeners,
    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 cb5379b111d..467ca3b157b 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
    @@ -2,14 +2,16 @@
     from unittest import mock
     
     import botocore
    -from boto3 import client, resource, session
    -from moto import mock_ec2, mock_elbv2, mock_wafv2
    +from boto3 import client, resource
    +from moto import mock_aws
     
    -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"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_REGION_EU_WEST_1,
    +    AWS_REGION_EU_WEST_1_AZA,
    +    AWS_REGION_EU_WEST_1_AZB,
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     # Mocking WAF-Regional Calls
     make_api_call = botocore.client.BaseClient._make_api_call
    @@ -34,39 +36,7 @@ def mock_make_api_call(self, operation_name, kwarg):
     
     
     class Test_elbv2_waf_acl_attached:
    -    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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=["us-east-1", "eu-west-1"],
    -            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
    -
    -    @mock_wafv2
    -    @mock_elbv2
    +    @mock_aws
         def test_elb_no_balancers(self):
             from prowler.providers.aws.services.elbv2.elbv2_service import ELBv2
             from prowler.providers.aws.services.waf.waf_service import WAF
    @@ -74,16 +44,22 @@ def test_elb_no_balancers(self):
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    -            new=self.set_mocked_audit_info(),
    +            new=set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]),
             ), mock.patch(
                 "prowler.providers.aws.services.elbv2.elbv2_waf_acl_attached.elbv2_waf_acl_attached.elbv2_client",
    -            new=ELBv2(self.set_mocked_audit_info()),
    +            new=ELBv2(
    +                set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1])
    +            ),
             ), mock.patch(
                 "prowler.providers.aws.services.elbv2.elbv2_waf_acl_attached.elbv2_waf_acl_attached.wafv2_client",
    -            new=WAFv2(self.set_mocked_audit_info()),
    +            new=WAFv2(
    +                set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1])
    +            ),
             ), mock.patch(
                 "prowler.providers.aws.services.elbv2.elbv2_waf_acl_attached.elbv2_waf_acl_attached.waf_client",
    -            new=WAF(self.set_mocked_audit_info()),
    +            new=WAF(
    +                set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1])
    +            ),
             ):
                 # Test Check
                 from prowler.providers.aws.services.elbv2.elbv2_waf_acl_attached.elbv2_waf_acl_attached import (
    @@ -95,12 +71,10 @@ def test_elb_no_balancers(self):
     
                 assert len(result) == 0
     
    -    @mock_wafv2
    -    @mock_ec2
    -    @mock_elbv2
    +    @mock_aws
         def test_elbv2_without_WAF(self):
    -        conn = client("elbv2", region_name=AWS_REGION)
    -        ec2 = resource("ec2", region_name=AWS_REGION)
    +        conn = client("elbv2", region_name=AWS_REGION_EU_WEST_1)
    +        ec2 = resource("ec2", region_name=AWS_REGION_EU_WEST_1)
             wafv2 = client("wafv2", region_name="us-east-1")
             _ = wafv2.create_web_acl(
                 Scope="REGIONAL",
    @@ -117,10 +91,14 @@ def test_elbv2_without_WAF(self):
             )
             vpc = ec2.create_vpc(CidrBlock="172.28.7.0/24", InstanceTenancy="default")
             subnet1 = ec2.create_subnet(
    -            VpcId=vpc.id, CidrBlock="172.28.7.192/26", AvailabilityZone=f"{AWS_REGION}a"
    +            VpcId=vpc.id,
    +            CidrBlock="172.28.7.192/26",
    +            AvailabilityZone=AWS_REGION_EU_WEST_1_AZA,
             )
             subnet2 = ec2.create_subnet(
    -            VpcId=vpc.id, CidrBlock="172.28.7.0/26", AvailabilityZone=f"{AWS_REGION}b"
    +            VpcId=vpc.id,
    +            CidrBlock="172.28.7.0/26",
    +            AvailabilityZone=AWS_REGION_EU_WEST_1_AZB,
             )
     
             lb = conn.create_load_balancer(
    @@ -137,16 +115,22 @@ def test_elbv2_without_WAF(self):
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    -            new=self.set_mocked_audit_info(),
    +            new=set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]),
             ), mock.patch(
                 "prowler.providers.aws.services.elbv2.elbv2_waf_acl_attached.elbv2_waf_acl_attached.elbv2_client",
    -            new=ELBv2(self.set_mocked_audit_info()),
    +            new=ELBv2(
    +                set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1])
    +            ),
             ), mock.patch(
                 "prowler.providers.aws.services.elbv2.elbv2_waf_acl_attached.elbv2_waf_acl_attached.wafv2_client",
    -            new=WAFv2(self.set_mocked_audit_info()),
    +            new=WAFv2(
    +                set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1])
    +            ),
             ), mock.patch(
                 "prowler.providers.aws.services.elbv2.elbv2_waf_acl_attached.elbv2_waf_acl_attached.waf_client",
    -            new=WAF(self.set_mocked_audit_info()),
    +            new=WAF(
    +                set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1])
    +            ),
             ):
                 # Test Check
                 from prowler.providers.aws.services.elbv2.elbv2_waf_acl_attached.elbv2_waf_acl_attached import (
    @@ -165,12 +149,10 @@ def test_elbv2_without_WAF(self):
                 assert result[0].resource_id == "my-lb"
                 assert result[0].resource_arn == lb["LoadBalancerArn"]
     
    -    @mock_wafv2
    -    @mock_ec2
    -    @mock_elbv2
    +    @mock_aws
         def test_elbv2_with_WAF(self):
    -        conn = client("elbv2", region_name=AWS_REGION)
    -        ec2 = resource("ec2", region_name=AWS_REGION)
    +        conn = client("elbv2", region_name=AWS_REGION_EU_WEST_1)
    +        ec2 = resource("ec2", region_name=AWS_REGION_EU_WEST_1)
             wafv2 = client("wafv2", region_name="us-east-1")
             waf = wafv2.create_web_acl(
                 Scope="REGIONAL",
    @@ -187,10 +169,14 @@ def test_elbv2_with_WAF(self):
             )
             vpc = ec2.create_vpc(CidrBlock="172.28.7.0/24", InstanceTenancy="default")
             subnet1 = ec2.create_subnet(
    -            VpcId=vpc.id, CidrBlock="172.28.7.192/26", AvailabilityZone=f"{AWS_REGION}a"
    +            VpcId=vpc.id,
    +            CidrBlock="172.28.7.192/26",
    +            AvailabilityZone=AWS_REGION_EU_WEST_1_AZA,
             )
             subnet2 = ec2.create_subnet(
    -            VpcId=vpc.id, CidrBlock="172.28.7.0/26", AvailabilityZone=f"{AWS_REGION}b"
    +            VpcId=vpc.id,
    +            CidrBlock="172.28.7.0/26",
    +            AvailabilityZone=AWS_REGION_EU_WEST_1_AZB,
             )
     
             lb = conn.create_load_balancer(
    @@ -209,17 +195,25 @@ def test_elbv2_with_WAF(self):
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    -            new=self.set_mocked_audit_info(),
    +            new=set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]),
             ), mock.patch(
                 "prowler.providers.aws.services.elbv2.elbv2_waf_acl_attached.elbv2_waf_acl_attached.elbv2_client",
    -            new=ELBv2(self.set_mocked_audit_info()),
    +            new=ELBv2(
    +                set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1])
    +            ),
             ), mock.patch(
                 "prowler.providers.aws.services.elbv2.elbv2_waf_acl_attached.elbv2_waf_acl_attached.wafv2_client",
    -            new=WAFv2(self.set_mocked_audit_info()),
    +            new=WAFv2(
    +                set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1])
    +            ),
             ) as service_client:
                 with mock.patch(
                     "prowler.providers.aws.services.elbv2.elbv2_waf_acl_attached.elbv2_waf_acl_attached.waf_client",
    -                new=WAF(self.set_mocked_audit_info()),
    +                new=WAF(
    +                    set_mocked_aws_audit_info(
    +                        [AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1]
    +                    )
    +                ),
                 ):
                     # Test Check
                     from prowler.providers.aws.services.elbv2.elbv2_waf_acl_attached.elbv2_waf_acl_attached import (
    diff --git a/tests/providers/aws/services/emr/emr_cluster_account_public_block_enabled/emr_cluster_account_public_block_enabled_test.py b/tests/providers/aws/services/emr/emr_cluster_account_public_block_enabled/emr_cluster_account_public_block_enabled_test.py
    index 3ec7a40412e..f2af2bc2d19 100644
    --- a/tests/providers/aws/services/emr/emr_cluster_account_public_block_enabled/emr_cluster_account_public_block_enabled_test.py
    +++ b/tests/providers/aws/services/emr/emr_cluster_account_public_block_enabled/emr_cluster_account_public_block_enabled_test.py
    @@ -1,20 +1,20 @@
     from unittest import mock
     
    -from moto.core import DEFAULT_ACCOUNT_ID
    -
     from prowler.providers.aws.services.emr.emr_service import (
         BlockPublicAccessConfiguration,
     )
    -
    -AWS_REGION = "eu-west-1"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_ACCOUNT_NUMBER,
    +    AWS_REGION_EU_WEST_1,
    +)
     
     
     class Test_emr_cluster_account_public_block_enabled:
         def test_account_public_block_enabled(self):
             emr_client = mock.MagicMock
    -        emr_client.audited_account = DEFAULT_ACCOUNT_ID
    +        emr_client.audited_account = AWS_ACCOUNT_NUMBER
             emr_client.block_public_access_configuration = {
    -            AWS_REGION: BlockPublicAccessConfiguration(
    +            AWS_REGION_EU_WEST_1: BlockPublicAccessConfiguration(
                     block_public_security_group_rules=True
                 )
             }
    @@ -31,8 +31,8 @@ def test_account_public_block_enabled(self):
                 result = check.execute()
     
                 assert len(result) == 1
    -            assert result[0].region == AWS_REGION
    -            assert result[0].resource_id == DEFAULT_ACCOUNT_ID
    +            assert result[0].region == AWS_REGION_EU_WEST_1
    +            assert result[0].resource_id == AWS_ACCOUNT_NUMBER
                 assert result[0].status == "PASS"
                 assert (
                     result[0].status_extended
    @@ -41,9 +41,9 @@ def test_account_public_block_enabled(self):
     
         def test_account_public_block_disabled(self):
             emr_client = mock.MagicMock
    -        emr_client.audited_account = DEFAULT_ACCOUNT_ID
    +        emr_client.audited_account = AWS_ACCOUNT_NUMBER
             emr_client.block_public_access_configuration = {
    -            AWS_REGION: BlockPublicAccessConfiguration(
    +            AWS_REGION_EU_WEST_1: BlockPublicAccessConfiguration(
                     block_public_security_group_rules=False
                 )
             }
    @@ -60,8 +60,8 @@ def test_account_public_block_disabled(self):
                 result = check.execute()
     
                 assert len(result) == 1
    -            assert result[0].region == AWS_REGION
    -            assert result[0].resource_id == DEFAULT_ACCOUNT_ID
    +            assert result[0].region == AWS_REGION_EU_WEST_1
    +            assert result[0].resource_id == AWS_ACCOUNT_NUMBER
                 assert result[0].status == "FAIL"
                 assert (
                     result[0].status_extended
    diff --git a/tests/providers/aws/services/emr/emr_cluster_master_nodes_no_public_ip/emr_cluster_master_nodes_no_public_ip_test.py b/tests/providers/aws/services/emr/emr_cluster_master_nodes_no_public_ip/emr_cluster_master_nodes_no_public_ip_test.py
    index 3e4dc742df1..d33628ec826 100644
    --- a/tests/providers/aws/services/emr/emr_cluster_master_nodes_no_public_ip/emr_cluster_master_nodes_no_public_ip_test.py
    +++ b/tests/providers/aws/services/emr/emr_cluster_master_nodes_no_public_ip/emr_cluster_master_nodes_no_public_ip_test.py
    @@ -1,10 +1,10 @@
     from unittest import mock
     
    -from moto.core import DEFAULT_ACCOUNT_ID
    -
     from prowler.providers.aws.services.emr.emr_service import Cluster, ClusterStatus
    -
    -AWS_REGION = "eu-west-1"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_ACCOUNT_NUMBER,
    +    AWS_REGION_EU_WEST_1,
    +)
     
     
     class Test_emr_cluster_master_nodes_no_public_ip:
    @@ -29,14 +29,14 @@ def test_cluster_public_running(self):
             emr_client = mock.MagicMock
             cluster_name = "test-cluster"
             cluster_id = "j-XWO1UKVCC6FCV"
    -        cluster_arn = f"arn:aws:elasticmapreduce:{AWS_REGION}:{DEFAULT_ACCOUNT_ID}:cluster/{cluster_name}"
    +        cluster_arn = f"arn:aws:elasticmapreduce:{AWS_REGION_EU_WEST_1}:{AWS_ACCOUNT_NUMBER}:cluster/{cluster_name}"
             emr_client.clusters = {
                 "test-cluster": Cluster(
                     id=cluster_id,
                     arn=cluster_arn,
                     name=cluster_name,
                     status=ClusterStatus.RUNNING,
    -                region=AWS_REGION,
    +                region=AWS_REGION_EU_WEST_1,
                     master_public_dns_name="test.amazonaws.com",
                     public=True,
                 )
    @@ -54,7 +54,7 @@ def test_cluster_public_running(self):
                 result = check.execute()
     
                 assert len(result) == 1
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_EU_WEST_1
                 assert result[0].resource_id == cluster_id
                 assert result[0].resource_arn == cluster_arn
                 assert result[0].status == "FAIL"
    @@ -67,14 +67,14 @@ def test_cluster_private_running(self):
             emr_client = mock.MagicMock
             cluster_name = "test-cluster"
             cluster_id = "j-XWO1UKVCC6FCV"
    -        cluster_arn = f"arn:aws:elasticmapreduce:{AWS_REGION}:{DEFAULT_ACCOUNT_ID}:cluster/{cluster_name}"
    +        cluster_arn = f"arn:aws:elasticmapreduce:{AWS_REGION_EU_WEST_1}:{AWS_ACCOUNT_NUMBER}:cluster/{cluster_name}"
             emr_client.clusters = {
                 "test-cluster": Cluster(
                     id=cluster_id,
                     arn=cluster_arn,
                     name=cluster_name,
                     status=ClusterStatus.RUNNING,
    -                region=AWS_REGION,
    +                region=AWS_REGION_EU_WEST_1,
                     master_public_dns_name="compute.internal",
                     public=False,
                 )
    @@ -92,7 +92,7 @@ def test_cluster_private_running(self):
                 result = check.execute()
     
                 assert len(result) == 1
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_EU_WEST_1
                 assert result[0].resource_id == cluster_id
                 assert result[0].resource_arn == cluster_arn
                 assert result[0].status == "PASS"
    @@ -105,14 +105,14 @@ def test_cluster_public_terminated(self):
             emr_client = mock.MagicMock
             cluster_name = "test-cluster"
             cluster_id = "j-XWO1UKVCC6FCV"
    -        cluster_arn = f"arn:aws:elasticmapreduce:{AWS_REGION}:{DEFAULT_ACCOUNT_ID}:cluster/{cluster_name}"
    +        cluster_arn = f"arn:aws:elasticmapreduce:{AWS_REGION_EU_WEST_1}:{AWS_ACCOUNT_NUMBER}:cluster/{cluster_name}"
             emr_client.clusters = {
                 "test-cluster": Cluster(
                     id=cluster_id,
                     arn=cluster_arn,
                     name=cluster_name,
                     status=ClusterStatus.TERMINATED,
    -                region=AWS_REGION,
    +                region=AWS_REGION_EU_WEST_1,
                     master_public_dns_name="test.amazonaws.com",
                     public=True,
                 )
    @@ -135,14 +135,14 @@ def test_cluster_private_bootstrapping(self):
             emr_client = mock.MagicMock
             cluster_name = "test-cluster"
             cluster_id = "j-XWO1UKVCC6FCV"
    -        cluster_arn = f"arn:aws:elasticmapreduce:{AWS_REGION}:{DEFAULT_ACCOUNT_ID}:cluster/{cluster_name}"
    +        cluster_arn = f"arn:aws:elasticmapreduce:{AWS_REGION_EU_WEST_1}:{AWS_ACCOUNT_NUMBER}:cluster/{cluster_name}"
             emr_client.clusters = {
                 "test-cluster": Cluster(
                     id=cluster_id,
                     arn=cluster_arn,
                     name=cluster_name,
                     status=ClusterStatus.BOOTSTRAPPING,
    -                region=AWS_REGION,
    +                region=AWS_REGION_EU_WEST_1,
                     master_public_dns_name="compute.internal",
                     public=False,
                 )
    @@ -160,7 +160,7 @@ def test_cluster_private_bootstrapping(self):
                 result = check.execute()
     
                 assert len(result) == 1
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_EU_WEST_1
                 assert result[0].resource_id == cluster_id
                 assert result[0].resource_arn == cluster_arn
                 assert result[0].status == "PASS"
    diff --git a/tests/providers/aws/services/emr/emr_cluster_publicly_accesible/emr_cluster_publicly_accesible_test.py b/tests/providers/aws/services/emr/emr_cluster_publicly_accesible/emr_cluster_publicly_accesible_test.py
    index 01498aa4f8f..481f3827e81 100644
    --- a/tests/providers/aws/services/emr/emr_cluster_publicly_accesible/emr_cluster_publicly_accesible_test.py
    +++ b/tests/providers/aws/services/emr/emr_cluster_publicly_accesible/emr_cluster_publicly_accesible_test.py
    @@ -1,49 +1,18 @@
     from unittest import mock
     from uuid import uuid4
     
    -from boto3 import resource, session
    -from moto import mock_ec2
    -from moto.core import DEFAULT_ACCOUNT_ID
    +from boto3 import resource
    +from moto import mock_aws
     
    -from prowler.providers.aws.lib.audit_info.audit_info import AWS_Audit_Info
     from prowler.providers.aws.services.emr.emr_service import Cluster, ClusterStatus, Node
    -from prowler.providers.common.models import Audit_Metadata
    -
    -AWS_REGION = "eu-west-1"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_ACCOUNT_NUMBER,
    +    AWS_REGION_EU_WEST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     
     class Test_emr_cluster_publicly_accesible:
    -    # 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=None,
    -            audited_account_arn=None,
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=None,
    -            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
    -
         def test_no_clusters(self):
             # EMR Client
             emr_client = mock.MagicMock
    @@ -68,10 +37,10 @@ def test_no_clusters(self):
     
                 assert len(result) == 0
     
    -    @mock_ec2
    +    @mock_aws
         def test_clusters_master_public_sg(self):
             # EC2 Client
    -        ec2 = resource("ec2", AWS_REGION)
    +        ec2 = resource("ec2", AWS_REGION_EU_WEST_1)
             # Create Security Group
             master_security_group = ec2.create_security_group(
                 GroupName=str(uuid4()), Description="test-decurity-group"
    @@ -87,14 +56,14 @@ def test_clusters_master_public_sg(self):
             emr_client = mock.MagicMock
             cluster_name = "test-cluster"
             cluster_id = "j-XWO1UKVCC6FCV"
    -        cluster_arn = f"arn:aws:elasticmapreduce:{AWS_REGION}:{DEFAULT_ACCOUNT_ID}:cluster/{cluster_name}"
    +        cluster_arn = f"arn:aws:elasticmapreduce:{AWS_REGION_EU_WEST_1}:{AWS_ACCOUNT_NUMBER}:cluster/{cluster_name}"
             emr_client.clusters = {
                 "test-cluster": Cluster(
                     id=cluster_id,
                     arn=cluster_arn,
                     name=cluster_name,
                     status=ClusterStatus.RUNNING,
    -                region=AWS_REGION,
    +                region=AWS_REGION_EU_WEST_1,
                     master_public_dns_name="test.amazonaws.com",
                     public=True,
                     master=Node(
    @@ -113,10 +82,10 @@ def test_clusters_master_public_sg(self):
                 new=emr_client,
             ), mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    -            self.set_mocked_audit_info(),
    +            set_mocked_aws_audit_info(),
             ), mock.patch(
                 "prowler.providers.aws.services.emr.emr_cluster_publicly_accesible.emr_cluster_publicly_accesible.ec2_client",
    -            new=EC2(self.set_mocked_audit_info()),
    +            new=EC2(set_mocked_aws_audit_info()),
             ):
                 # Test Check
                 from prowler.providers.aws.services.emr.emr_cluster_publicly_accesible.emr_cluster_publicly_accesible import (
    @@ -127,7 +96,7 @@ def test_clusters_master_public_sg(self):
                 result = check.execute()
     
                 assert len(result) == 1
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_EU_WEST_1
                 assert result[0].resource_id == cluster_id
                 assert result[0].resource_arn == cluster_arn
                 assert result[0].status == "FAIL"
    @@ -136,10 +105,10 @@ def test_clusters_master_public_sg(self):
                     == f"EMR Cluster {cluster_id} is publicly accessible through the following Security Groups: Master Node {master_expected_public_sgs}"
                 )
     
    -    @mock_ec2
    +    @mock_aws
         def test_clusters_master_private_sg(self):
             # EC2 Client
    -        ec2 = resource("ec2", AWS_REGION)
    +        ec2 = resource("ec2", AWS_REGION_EU_WEST_1)
             # Create Security Group
             master_security_group = ec2.create_security_group(
                 GroupName=str(uuid4()), Description="test-decurity-group"
    @@ -155,14 +124,14 @@ def test_clusters_master_private_sg(self):
             emr_client = mock.MagicMock
             cluster_name = "test-cluster"
             cluster_id = "j-XWO1UKVCC6FCV"
    -        cluster_arn = f"arn:aws:elasticmapreduce:{AWS_REGION}:{DEFAULT_ACCOUNT_ID}:cluster/{cluster_name}"
    +        cluster_arn = f"arn:aws:elasticmapreduce:{AWS_REGION_EU_WEST_1}:{AWS_ACCOUNT_NUMBER}:cluster/{cluster_name}"
             emr_client.clusters = {
                 "test-cluster": Cluster(
                     id=cluster_id,
                     arn=cluster_arn,
                     name=cluster_name,
                     status=ClusterStatus.RUNNING,
    -                region=AWS_REGION,
    +                region=AWS_REGION_EU_WEST_1,
                     master_public_dns_name="test.amazonaws.com",
                     public=True,
                     master=Node(
    @@ -179,10 +148,10 @@ def test_clusters_master_private_sg(self):
                 new=emr_client,
             ), mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    -            self.set_mocked_audit_info(),
    +            set_mocked_aws_audit_info(),
             ), mock.patch(
                 "prowler.providers.aws.services.emr.emr_cluster_publicly_accesible.emr_cluster_publicly_accesible.ec2_client",
    -            new=EC2(self.set_mocked_audit_info()),
    +            new=EC2(set_mocked_aws_audit_info()),
             ):
                 # Test Check
                 from prowler.providers.aws.services.emr.emr_cluster_publicly_accesible.emr_cluster_publicly_accesible import (
    @@ -193,7 +162,7 @@ def test_clusters_master_private_sg(self):
                 result = check.execute()
     
                 assert len(result) == 1
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_EU_WEST_1
                 assert result[0].resource_id == cluster_id
                 assert result[0].resource_arn == cluster_arn
                 assert result[0].status == "PASS"
    @@ -202,10 +171,10 @@ def test_clusters_master_private_sg(self):
                     == f"EMR Cluster {cluster_id} is not publicly accessible."
                 )
     
    -    @mock_ec2
    +    @mock_aws
         def test_clusters_master_private_slave_public_sg(self):
             # EC2 Client
    -        ec2 = resource("ec2", AWS_REGION)
    +        ec2 = resource("ec2", AWS_REGION_EU_WEST_1)
             # Create Master Security Group
             master_security_group = ec2.create_security_group(
                 GroupName=str(uuid4()), Description="test-decurity-group"
    @@ -232,14 +201,14 @@ def test_clusters_master_private_slave_public_sg(self):
             emr_client = mock.MagicMock
             cluster_name = "test-cluster"
             cluster_id = "j-XWO1UKVCC6FCV"
    -        cluster_arn = f"arn:aws:elasticmapreduce:{AWS_REGION}:{DEFAULT_ACCOUNT_ID}:cluster/{cluster_name}"
    +        cluster_arn = f"arn:aws:elasticmapreduce:{AWS_REGION_EU_WEST_1}:{AWS_ACCOUNT_NUMBER}:cluster/{cluster_name}"
             emr_client.clusters = {
                 "test-cluster": Cluster(
                     id=cluster_id,
                     arn=cluster_arn,
                     name=cluster_name,
                     status=ClusterStatus.RUNNING,
    -                region=AWS_REGION,
    +                region=AWS_REGION_EU_WEST_1,
                     master_public_dns_name="test.amazonaws.com",
                     public=True,
                     master=Node(
    @@ -262,10 +231,10 @@ def test_clusters_master_private_slave_public_sg(self):
                 new=emr_client,
             ), mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    -            self.set_mocked_audit_info(),
    +            set_mocked_aws_audit_info(),
             ), mock.patch(
                 "prowler.providers.aws.services.emr.emr_cluster_publicly_accesible.emr_cluster_publicly_accesible.ec2_client",
    -            new=EC2(self.set_mocked_audit_info()),
    +            new=EC2(set_mocked_aws_audit_info()),
             ):
                 # Test Check
                 from prowler.providers.aws.services.emr.emr_cluster_publicly_accesible.emr_cluster_publicly_accesible import (
    @@ -276,7 +245,7 @@ def test_clusters_master_private_slave_public_sg(self):
                 result = check.execute()
     
                 assert len(result) == 1
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_EU_WEST_1
                 assert result[0].resource_id == cluster_id
                 assert result[0].resource_arn == cluster_arn
                 assert result[0].status == "FAIL"
    @@ -285,10 +254,10 @@ def test_clusters_master_private_slave_public_sg(self):
                     == f"EMR Cluster {cluster_id} is publicly accessible through the following Security Groups: Slaves Nodes {slave_expected_public_sgs}"
                 )
     
    -    @mock_ec2
    +    @mock_aws
         def test_clusters_master_public_slave_private_two_sg(self):
             # EC2 Client
    -        ec2 = resource("ec2", AWS_REGION)
    +        ec2 = resource("ec2", AWS_REGION_EU_WEST_1)
             # Create Master Security Group
             master_security_group = ec2.create_security_group(
                 GroupName=str(uuid4()), Description="test-decurity-group"
    @@ -315,14 +284,14 @@ def test_clusters_master_public_slave_private_two_sg(self):
             emr_client = mock.MagicMock
             cluster_name = "test-cluster"
             cluster_id = "j-XWO1UKVCC6FCV"
    -        cluster_arn = f"arn:aws:elasticmapreduce:{AWS_REGION}:{DEFAULT_ACCOUNT_ID}:cluster/{cluster_name}"
    +        cluster_arn = f"arn:aws:elasticmapreduce:{AWS_REGION_EU_WEST_1}:{AWS_ACCOUNT_NUMBER}:cluster/{cluster_name}"
             emr_client.clusters = {
                 "test-cluster": Cluster(
                     id=cluster_id,
                     arn=cluster_arn,
                     name=cluster_name,
                     status=ClusterStatus.RUNNING,
    -                region=AWS_REGION,
    +                region=AWS_REGION_EU_WEST_1,
                     master_public_dns_name="test.amazonaws.com",
                     public=True,
                     master=Node(
    @@ -348,10 +317,10 @@ def test_clusters_master_public_slave_private_two_sg(self):
                 new=emr_client,
             ), mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    -            self.set_mocked_audit_info(),
    +            set_mocked_aws_audit_info(),
             ), mock.patch(
                 "prowler.providers.aws.services.emr.emr_cluster_publicly_accesible.emr_cluster_publicly_accesible.ec2_client",
    -            new=EC2(self.set_mocked_audit_info()),
    +            new=EC2(set_mocked_aws_audit_info()),
             ):
                 # Test Check
                 from prowler.providers.aws.services.emr.emr_cluster_publicly_accesible.emr_cluster_publicly_accesible import (
    @@ -362,7 +331,7 @@ def test_clusters_master_public_slave_private_two_sg(self):
                 result = check.execute()
     
                 assert len(result) == 1
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_EU_WEST_1
                 assert result[0].resource_id == cluster_id
                 assert result[0].resource_arn == cluster_arn
                 assert result[0].status == "FAIL"
    @@ -371,10 +340,10 @@ def test_clusters_master_public_slave_private_two_sg(self):
                     == f"EMR Cluster {cluster_id} is publicly accessible through the following Security Groups: Master Node {master_expected_public_sgs}"
                 )
     
    -    @mock_ec2
    +    @mock_aws
         def test_clusters_master_private_slave_public_sg_none_additional_sgs(self):
             # EC2 Client
    -        ec2 = resource("ec2", AWS_REGION)
    +        ec2 = resource("ec2", AWS_REGION_EU_WEST_1)
             # Create Master Security Group
             master_security_group = ec2.create_security_group(
                 GroupName=str(uuid4()), Description="test-decurity-group"
    @@ -401,14 +370,14 @@ def test_clusters_master_private_slave_public_sg_none_additional_sgs(self):
             emr_client = mock.MagicMock
             cluster_name = "test-cluster"
             cluster_id = "j-XWO1UKVCC6FCV"
    -        cluster_arn = f"arn:aws:elasticmapreduce:{AWS_REGION}:{DEFAULT_ACCOUNT_ID}:cluster/{cluster_name}"
    +        cluster_arn = f"arn:aws:elasticmapreduce:{AWS_REGION_EU_WEST_1}:{AWS_ACCOUNT_NUMBER}:cluster/{cluster_name}"
             emr_client.clusters = {
                 "test-cluster": Cluster(
                     id=cluster_id,
                     arn=cluster_arn,
                     name=cluster_name,
                     status=ClusterStatus.RUNNING,
    -                region=AWS_REGION,
    +                region=AWS_REGION_EU_WEST_1,
                     master_public_dns_name="test.amazonaws.com",
                     public=True,
                     master=Node(
    @@ -431,10 +400,10 @@ def test_clusters_master_private_slave_public_sg_none_additional_sgs(self):
                 new=emr_client,
             ), mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    -            self.set_mocked_audit_info(),
    +            set_mocked_aws_audit_info(),
             ), mock.patch(
                 "prowler.providers.aws.services.emr.emr_cluster_publicly_accesible.emr_cluster_publicly_accesible.ec2_client",
    -            new=EC2(self.set_mocked_audit_info()),
    +            new=EC2(set_mocked_aws_audit_info()),
             ):
                 # Test Check
                 from prowler.providers.aws.services.emr.emr_cluster_publicly_accesible.emr_cluster_publicly_accesible import (
    @@ -445,7 +414,7 @@ def test_clusters_master_private_slave_public_sg_none_additional_sgs(self):
                 result = check.execute()
     
                 assert len(result) == 1
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_EU_WEST_1
                 assert result[0].resource_id == cluster_id
                 assert result[0].resource_arn == cluster_arn
                 assert result[0].status == "FAIL"
    diff --git a/tests/providers/aws/services/emr/emr_service_test.py b/tests/providers/aws/services/emr/emr_service_test.py
    index 6a4cc8accf9..be1dd131bfd 100644
    --- a/tests/providers/aws/services/emr/emr_service_test.py
    +++ b/tests/providers/aws/services/emr/emr_service_test.py
    @@ -2,17 +2,15 @@
     from unittest.mock import patch
     
     import botocore
    -from boto3 import client, session
    -from moto import mock_emr
    -from moto.core import DEFAULT_ACCOUNT_ID
    +from boto3 import client
    +from moto import mock_aws
     
    -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"
    -
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_ACCOUNT_NUMBER,
    +    AWS_REGION_EU_WEST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     # Mocking Access Analyzer Calls
     make_api_call = botocore.client.BaseClient._make_api_call
    @@ -38,10 +36,12 @@ def mock_make_api_call(self, operation_name, kwarg):
     
     
     # Mock generate_regional_clients()
    -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}
    +def mock_generate_regional_clients(service, audit_info):
    +    regional_client = audit_info.audit_session.client(
    +        service, region_name=AWS_REGION_EU_WEST_1
    +    )
    +    regional_client.region = AWS_REGION_EU_WEST_1
    +    return {AWS_REGION_EU_WEST_1: regional_client}
     
     
     @patch(
    @@ -50,59 +50,29 @@ def mock_generate_regional_clients(service, audit_info, _):
     )
     @patch("botocore.client.BaseClient._make_api_call", new=mock_make_api_call)
     class Test_EMR_Service:
    -    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=DEFAULT_ACCOUNT_ID,
    -            audited_account_arn=f"arn:aws:iam::{DEFAULT_ACCOUNT_ID}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=None,
    -            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
    -
         # Test EMR Client
    -    @mock_emr
    +    @mock_aws
         def test__get_client__(self):
    -        emr = EMR(self.set_mocked_audit_info())
    -        assert emr.regional_clients[AWS_REGION].__class__.__name__ == "EMR"
    +        emr = EMR(set_mocked_aws_audit_info())
    +        assert emr.regional_clients[AWS_REGION_EU_WEST_1].__class__.__name__ == "EMR"
     
         # Test EMR Session
    -    @mock_emr
    +    @mock_aws
         def test__get_session__(self):
    -        emr = EMR(self.set_mocked_audit_info())
    +        emr = EMR(set_mocked_aws_audit_info())
             assert emr.session.__class__.__name__ == "Session"
     
         # Test EMR Service
    -    @mock_emr
    +    @mock_aws
         def test__get_service__(self):
    -        emr = EMR(self.set_mocked_audit_info())
    +        emr = EMR(set_mocked_aws_audit_info())
             assert emr.service == "emr"
     
         # Test __list_clusters__ and __describe_cluster__
    -    @mock_emr
    +    @mock_aws
         def test__list_clusters__(self):
             # Create EMR Cluster
    -        emr_client = client("emr", region_name=AWS_REGION)
    +        emr_client = client("emr", region_name=AWS_REGION_EU_WEST_1)
             cluster_name = "test-cluster"
             run_job_flow_args = dict(
                 Instances={
    @@ -123,7 +93,7 @@ def test__list_clusters__(self):
             )
             cluster_id = emr_client.run_job_flow(**run_job_flow_args)["JobFlowId"]
             # EMR Class
    -        emr = EMR(self.set_mocked_audit_info())
    +        emr = EMR(set_mocked_aws_audit_info())
     
             assert len(emr.clusters) == 1
             assert emr.clusters[cluster_id].id == cluster_id
    @@ -131,9 +101,9 @@ def test__list_clusters__(self):
             assert emr.clusters[cluster_id].status == ClusterStatus.WAITING
             assert (
                 emr.clusters[cluster_id].arn
    -            == f"arn:aws:elasticmapreduce:{AWS_REGION}:{DEFAULT_ACCOUNT_ID}:cluster/{cluster_id}"
    +            == f"arn:aws:elasticmapreduce:{AWS_REGION_EU_WEST_1}:{AWS_ACCOUNT_NUMBER}:cluster/{cluster_id}"
             )
    -        assert emr.clusters[cluster_id].region == AWS_REGION
    +        assert emr.clusters[cluster_id].region == AWS_REGION_EU_WEST_1
             assert (
                 emr.clusters[cluster_id].master_public_dns_name
                 == "ec2-184-0-0-1.us-west-1.compute.amazonaws.com"
    @@ -143,11 +113,11 @@ def test__list_clusters__(self):
                 {"Key": "test", "Value": "test"},
             ]
     
    -    @mock_emr
    +    @mock_aws
         def test__get_block_public_access_configuration__(self):
    -        emr = EMR(self.set_mocked_audit_info())
    +        emr = EMR(set_mocked_aws_audit_info())
     
             assert len(emr.block_public_access_configuration) == 1
             assert emr.block_public_access_configuration[
    -            AWS_REGION
    +            AWS_REGION_EU_WEST_1
             ].block_public_security_group_rules
    diff --git a/tests/providers/aws/services/fms/fms_policy_compliant/fms_policy_compliant_test.py b/tests/providers/aws/services/fms/fms_policy_compliant/fms_policy_compliant_test.py
    index b3a77bd3243..18325fb7447 100644
    --- a/tests/providers/aws/services/fms/fms_policy_compliant/fms_policy_compliant_test.py
    +++ b/tests/providers/aws/services/fms/fms_policy_compliant/fms_policy_compliant_test.py
    @@ -4,15 +4,16 @@
         Policy,
         PolicyAccountComplianceStatus,
     )
    -
    -AWS_REGION = "us-east-1"
    -AWS_ACCOUNT_NUMBER = "123456789012"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_ACCOUNT_NUMBER,
    +    AWS_REGION_US_EAST_1,
    +)
     
     
     class Test_fms_policy_compliant:
         def test_fms_not_admin(self):
             fms_client = mock.MagicMock
    -        fms_client.region = AWS_REGION
    +        fms_client.region = AWS_REGION_US_EAST_1
             fms_client.fms_admin_account = False
             with mock.patch(
                 "prowler.providers.aws.services.fms.fms_service.FMS",
    @@ -32,7 +33,7 @@ def test_fms_admin_with_non_compliant_policies(self):
             fms_client = mock.MagicMock
             fms_client.audited_account = AWS_ACCOUNT_NUMBER
             fms_client.audited_account_arn = f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root"
    -        fms_client.region = AWS_REGION
    +        fms_client.region = AWS_REGION_US_EAST_1
             fms_client.fms_admin_account = True
             fms_client.fms_policies = [
                 Policy(
    @@ -72,13 +73,13 @@ def test_fms_admin_with_non_compliant_policies(self):
                 )
                 assert result[0].resource_id == "12345678901"
                 assert result[0].resource_arn == "arn:aws:fms:us-east-1:12345678901"
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_US_EAST_1
     
         def test_fms_admin_with_compliant_policies(self):
             fms_client = mock.MagicMock
             fms_client.audited_account = AWS_ACCOUNT_NUMBER
             fms_client.audited_account_arn = f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root"
    -        fms_client.region = AWS_REGION
    +        fms_client.region = AWS_REGION_US_EAST_1
             fms_client.fms_admin_account = True
             fms_client.fms_policies = [
                 Policy(
    @@ -117,13 +118,13 @@ def test_fms_admin_with_compliant_policies(self):
                 )
                 assert result[0].resource_id == AWS_ACCOUNT_NUMBER
                 assert result[0].resource_arn == f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root"
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_US_EAST_1
     
         def test_fms_admin_with_non_and_compliant_policies(self):
             fms_client = mock.MagicMock
             fms_client.audited_account = AWS_ACCOUNT_NUMBER
             fms_client.audited_account_arn = f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root"
    -        fms_client.region = AWS_REGION
    +        fms_client.region = AWS_REGION_US_EAST_1
             fms_client.fms_admin_account = True
             fms_client.fms_policies = [
                 Policy(
    @@ -168,4 +169,79 @@ def test_fms_admin_with_non_and_compliant_policies(self):
                 )
                 assert result[0].resource_id == "12345678901"
                 assert result[0].resource_arn == "arn:aws:fms:us-east-1:12345678901"
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_US_EAST_1
    +
    +    def test_fms_admin_without_policies(self):
    +        fms_client = mock.MagicMock
    +        fms_client.audited_account = AWS_ACCOUNT_NUMBER
    +        fms_client.audited_account_arn = f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root"
    +        fms_client.region = AWS_REGION_US_EAST_1
    +        fms_client.fms_admin_account = True
    +        fms_client.fms_policies = []
    +        with mock.patch(
    +            "prowler.providers.aws.services.fms.fms_service.FMS",
    +            new=fms_client,
    +        ):
    +            # Test Check
    +            from prowler.providers.aws.services.fms.fms_policy_compliant.fms_policy_compliant import (
    +                fms_policy_compliant,
    +            )
    +
    +            check = fms_policy_compliant()
    +            result = check.execute()
    +
    +            assert len(result) == 1
    +            assert result[0].status == "FAIL"
    +            assert (
    +                result[0].status_extended
    +                == f"FMS without any compliant policy for account {AWS_ACCOUNT_NUMBER}."
    +            )
    +            assert result[0].resource_id == AWS_ACCOUNT_NUMBER
    +            assert result[0].resource_arn == fms_client.audited_account_arn
    +            assert result[0].region == AWS_REGION_US_EAST_1
    +
    +    def test_fms_admin_with_policy_with_null_status(self):
    +        fms_client = mock.MagicMock
    +        fms_client.audited_account = AWS_ACCOUNT_NUMBER
    +        fms_client.audited_account_arn = f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root"
    +        fms_client.region = AWS_REGION_US_EAST_1
    +        fms_client.fms_admin_account = True
    +        fms_client.fms_policies = [
    +            Policy(
    +                arn="arn:aws:fms:us-east-1:12345678901",
    +                id="12345678901",
    +                name="test",
    +                resource_type="AWS::EC2::Instance",
    +                service_type="WAF",
    +                remediation_enabled=True,
    +                delete_unused_managed_resources=True,
    +                compliance_status=[
    +                    PolicyAccountComplianceStatus(
    +                        account_id="12345678901",
    +                        policy_id="12345678901",
    +                        status="",
    +                    ),
    +                ],
    +            )
    +        ]
    +        with mock.patch(
    +            "prowler.providers.aws.services.fms.fms_service.FMS",
    +            new=fms_client,
    +        ):
    +            # Test Check
    +            from prowler.providers.aws.services.fms.fms_policy_compliant.fms_policy_compliant import (
    +                fms_policy_compliant,
    +            )
    +
    +            check = fms_policy_compliant()
    +            result = check.execute()
    +
    +            assert len(result) == 1
    +            assert result[0].status == "FAIL"
    +            assert (
    +                result[0].status_extended
    +                == f"FMS with non-compliant policy {fms_client.fms_policies[0].name} for account {fms_client.fms_policies[0].compliance_status[0].account_id}."
    +            )
    +            assert result[0].resource_id == "12345678901"
    +            assert result[0].resource_arn == "arn:aws:fms:us-east-1:12345678901"
    +            assert result[0].region == AWS_REGION_US_EAST_1
    diff --git a/tests/providers/aws/services/fms/fms_service_test.py b/tests/providers/aws/services/fms/fms_service_test.py
    index 6d432db454c..dd0ce16c98f 100644
    --- a/tests/providers/aws/services/fms/fms_service_test.py
    +++ b/tests/providers/aws/services/fms/fms_service_test.py
    @@ -2,14 +2,10 @@
     from unittest.mock import patch
     
     import botocore
    -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
    +from tests.providers.aws.audit_info_utils import set_mocked_aws_audit_info
     
    -# Mock Test Region
    -AWS_REGION = "us-east-1"
     POLICY_ARN = "arn:aws:fms:us-east-1:123456789012:policy/MyFMSManagedPolicy"
     POLICY_ID = "12345678-1234-1234-1234-123456789012"
     POLICY_NAME = "MyFMSManagedPolicy"
    @@ -65,49 +61,18 @@ def mock_make_api_call(self, operation_name, kwargs):
     # Patch every AWS call using Boto3
     @patch("botocore.client.BaseClient._make_api_call", new=mock_make_api_call)
     class Test_FMS_Service:
    -    # 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=None,
    -            audited_account_arn=None,
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=None,
    -            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
    -
         def test__get_client__(self):
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info()
             fms = FMS(audit_info)
             assert fms.client.__class__.__name__ == "FMS"
     
         def test__get_service__(self):
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info()
             fms = FMS(audit_info)
             assert fms.service == "fms"
     
         def test__list_policies__(self):
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info()
             fms = FMS(audit_info)
             assert len(fms.fms_policies) == 1
             assert fms.fms_admin_account is True
    @@ -123,7 +88,7 @@ def test__list_policies__(self):
             )
     
         def test__list_compliance_status__(self):
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info()
             fms = FMS(audit_info)
             assert len(fms.fms_policies) == 1
             assert fms.fms_policies[0].compliance_status[0].status == "COMPLIANT"
    diff --git a/tests/providers/aws/services/glacier/glacier_service_test.py b/tests/providers/aws/services/glacier/glacier_service_test.py
    index 8c8a3f63a6d..acaf3c0fdd5 100644
    --- a/tests/providers/aws/services/glacier/glacier_service_test.py
    +++ b/tests/providers/aws/services/glacier/glacier_service_test.py
    @@ -2,29 +2,27 @@
     from unittest.mock import patch
     
     import botocore
    -from boto3 import session
    -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"
    -AWS_ACCOUNT_NUMBER = "123456789012"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_ACCOUNT_NUMBER,
    +    AWS_REGION_EU_WEST_1,
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     # Mocking Access Analyzer Calls
     make_api_call = botocore.client.BaseClient._make_api_call
     
     TEST_VAULT_ARN = (
    -    f"arn:aws:glacier:{AWS_REGION}:{DEFAULT_ACCOUNT_ID}:vaults/examplevault"
    +    f"arn:aws:glacier:{AWS_REGION_EU_WEST_1}:{AWS_ACCOUNT_NUMBER}:vaults/examplevault"
     )
     vault_json_policy = {
         "Version": "2012-10-17",
         "Statement": [
             {
                 "Sid": "cross-account-upload",
    -            "Principal": {"AWS": [f"arn:aws:iam::{DEFAULT_ACCOUNT_ID}:root"]},
    +            "Principal": {"AWS": [f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root"]},
                 "Effect": "Allow",
                 "Action": [
                     "glacier:UploadArchive",
    @@ -64,10 +62,12 @@ def mock_make_api_call(self, operation_name, kwarg):
     
     
     # Mock generate_regional_clients()
    -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}
    +def mock_generate_regional_clients(service, audit_info):
    +    regional_client = audit_info.audit_session.client(
    +        service, region_name=AWS_REGION_EU_WEST_1
    +    )
    +    regional_client.region = AWS_REGION_EU_WEST_1
    +    return {AWS_REGION_EU_WEST_1: regional_client}
     
     
     # Patch every AWS call using Boto3 and generate_regional_clients to have 1 client
    @@ -77,76 +77,58 @@ def mock_generate_regional_clients(service, audit_info, _):
         new=mock_generate_regional_clients,
     )
     class Test_Glacier_Service:
    -    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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=["us-east-1", "eu-west-1"],
    -            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
    -
         # Test Glacier Client
         def test__get_client__(self):
    -        glacier = Glacier(self.set_mocked_audit_info())
    -        assert glacier.regional_clients[AWS_REGION].__class__.__name__ == "Glacier"
    +        glacier = Glacier(
    +            set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1])
    +        )
    +        assert (
    +            glacier.regional_clients[AWS_REGION_EU_WEST_1].__class__.__name__
    +            == "Glacier"
    +        )
     
         # Test Glacier Session
         def test__get_session__(self):
    -        glacier = Glacier(self.set_mocked_audit_info())
    +        glacier = Glacier(
    +            set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1])
    +        )
             assert glacier.session.__class__.__name__ == "Session"
     
         # Test Glacier Service
         def test__get_service__(self):
    -        glacier = Glacier(self.set_mocked_audit_info())
    +        glacier = Glacier(
    +            set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1])
    +        )
             assert glacier.service == "glacier"
     
         def test__list_vaults__(self):
             # Set partition for the service
    -        glacier = Glacier(self.set_mocked_audit_info())
    +        glacier = Glacier(
    +            set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1])
    +        )
             vault_name = "examplevault"
             assert len(glacier.vaults) == 1
             assert glacier.vaults[TEST_VAULT_ARN]
             assert glacier.vaults[TEST_VAULT_ARN].name == vault_name
             assert (
                 glacier.vaults[TEST_VAULT_ARN].arn
    -            == f"arn:aws:glacier:{AWS_REGION}:{DEFAULT_ACCOUNT_ID}:vaults/examplevault"
    +            == f"arn:aws:glacier:{AWS_REGION_EU_WEST_1}:{AWS_ACCOUNT_NUMBER}:vaults/examplevault"
             )
    -        assert glacier.vaults[TEST_VAULT_ARN].region == AWS_REGION
    +        assert glacier.vaults[TEST_VAULT_ARN].region == AWS_REGION_EU_WEST_1
             assert glacier.vaults[TEST_VAULT_ARN].tags == [{"test": "test"}]
     
         def test__get_vault_access_policy__(self):
             # Set partition for the service
    -        glacier = Glacier(self.set_mocked_audit_info())
    +        glacier = Glacier(
    +            set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1, AWS_REGION_US_EAST_1])
    +        )
             vault_name = "examplevault"
             assert len(glacier.vaults) == 1
             assert glacier.vaults[TEST_VAULT_ARN]
             assert glacier.vaults[TEST_VAULT_ARN].name == vault_name
             assert (
                 glacier.vaults[TEST_VAULT_ARN].arn
    -            == f"arn:aws:glacier:{AWS_REGION}:{DEFAULT_ACCOUNT_ID}:vaults/examplevault"
    +            == f"arn:aws:glacier:{AWS_REGION_EU_WEST_1}:{AWS_ACCOUNT_NUMBER}:vaults/examplevault"
             )
    -        assert glacier.vaults[TEST_VAULT_ARN].region == AWS_REGION
    +        assert glacier.vaults[TEST_VAULT_ARN].region == AWS_REGION_EU_WEST_1
             assert glacier.vaults[TEST_VAULT_ARN].access_policy == vault_json_policy
    diff --git a/tests/providers/aws/services/glacier/glacier_vaults_policy_public_access/glacier_vaults_policy_public_access_test.py b/tests/providers/aws/services/glacier/glacier_vaults_policy_public_access/glacier_vaults_policy_public_access_test.py
    index e5145fae711..fe18b12a42b 100644
    --- a/tests/providers/aws/services/glacier/glacier_vaults_policy_public_access/glacier_vaults_policy_public_access_test.py
    +++ b/tests/providers/aws/services/glacier/glacier_vaults_policy_public_access/glacier_vaults_policy_public_access_test.py
    @@ -1,10 +1,10 @@
     from unittest import mock
     
    -from moto.core import DEFAULT_ACCOUNT_ID
    -
     from prowler.providers.aws.services.glacier.glacier_service import Vault
    -
    -AWS_REGION = "eu-west-1"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_ACCOUNT_NUMBER,
    +    AWS_REGION_EU_WEST_1,
    +)
     
     
     class Test_glacier_vaults_policy_public_access:
    @@ -28,15 +28,13 @@ def test_no_vaults(self):
         def test_vault_no_policy(self):
             glacier_client = mock.MagicMock
             vault_name = "test-vault"
    -        vault_arn = (
    -            f"arn:aws:glacier:{AWS_REGION}:{DEFAULT_ACCOUNT_ID}:vaults/examplevault"
    -        )
    +        vault_arn = f"arn:aws:glacier:{AWS_REGION_EU_WEST_1}:{AWS_ACCOUNT_NUMBER}:vaults/examplevault"
             glacier_client.vaults = {
                 vault_name: Vault(
                     name=vault_name,
                     arn=vault_arn,
                     access_policy={},
    -                region=AWS_REGION,
    +                region=AWS_REGION_EU_WEST_1,
                 )
             }
             with mock.patch(
    @@ -52,7 +50,7 @@ def test_vault_no_policy(self):
                 result = check.execute()
     
                 assert len(result) == 1
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_EU_WEST_1
                 assert result[0].resource_id == vault_name
                 assert result[0].resource_arn == vault_arn
                 assert result[0].status == "PASS"
    @@ -64,9 +62,7 @@ def test_vault_no_policy(self):
         def test_vault_policy_pricipal_aws_list_asterisk(self):
             glacier_client = mock.MagicMock
             vault_name = "test-vault"
    -        vault_arn = (
    -            f"arn:aws:glacier:{AWS_REGION}:{DEFAULT_ACCOUNT_ID}:vaults/examplevault"
    -        )
    +        vault_arn = f"arn:aws:glacier:{AWS_REGION_EU_WEST_1}:{AWS_ACCOUNT_NUMBER}:vaults/examplevault"
             glacier_client.vaults = {
                 vault_name: Vault(
                     name=vault_name,
    @@ -76,7 +72,7 @@ def test_vault_policy_pricipal_aws_list_asterisk(self):
                         "Statement": [
                             {
                                 "Sid": "cross-account-upload",
    -                            "Principal": {"AWS": ["*", DEFAULT_ACCOUNT_ID]},
    +                            "Principal": {"AWS": ["*", AWS_ACCOUNT_NUMBER]},
                                 "Effect": "Allow",
                                 "Action": [
                                     "glacier:UploadArchive",
    @@ -85,12 +81,12 @@ def test_vault_policy_pricipal_aws_list_asterisk(self):
                                     "glacier:CompleteMultipartUpload",
                                 ],
                                 "Resource": [
    -                                f"arn:aws:glacier:{AWS_REGION}:{DEFAULT_ACCOUNT_ID}:vaults/examplevault"
    +                                f"arn:aws:glacier:{AWS_REGION_EU_WEST_1}:{AWS_ACCOUNT_NUMBER}:vaults/examplevault"
                                 ],
                             }
                         ],
                     },
    -                region=AWS_REGION,
    +                region=AWS_REGION_EU_WEST_1,
                 )
             }
             with mock.patch(
    @@ -106,7 +102,7 @@ def test_vault_policy_pricipal_aws_list_asterisk(self):
                 result = check.execute()
     
                 assert len(result) == 1
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_EU_WEST_1
                 assert result[0].resource_id == vault_name
                 assert result[0].resource_arn == vault_arn
                 assert result[0].status == "FAIL"
    @@ -118,9 +114,7 @@ def test_vault_policy_pricipal_aws_list_asterisk(self):
         def test_vault_policy_pricipal_asterisk(self):
             glacier_client = mock.MagicMock
             vault_name = "test-vault"
    -        vault_arn = (
    -            f"arn:aws:glacier:{AWS_REGION}:{DEFAULT_ACCOUNT_ID}:vaults/examplevault"
    -        )
    +        vault_arn = f"arn:aws:glacier:{AWS_REGION_EU_WEST_1}:{AWS_ACCOUNT_NUMBER}:vaults/examplevault"
             glacier_client.vaults = {
                 vault_name: Vault(
                     name=vault_name,
    @@ -139,12 +133,12 @@ def test_vault_policy_pricipal_asterisk(self):
                                     "glacier:CompleteMultipartUpload",
                                 ],
                                 "Resource": [
    -                                f"arn:aws:glacier:{AWS_REGION}:{DEFAULT_ACCOUNT_ID}:vaults/examplevault"
    +                                f"arn:aws:glacier:{AWS_REGION_EU_WEST_1}:{AWS_ACCOUNT_NUMBER}:vaults/examplevault"
                                 ],
                             }
                         ],
                     },
    -                region=AWS_REGION,
    +                region=AWS_REGION_EU_WEST_1,
                 )
             }
             with mock.patch(
    @@ -160,7 +154,7 @@ def test_vault_policy_pricipal_asterisk(self):
                 result = check.execute()
     
                 assert len(result) == 1
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_EU_WEST_1
                 assert result[0].resource_id == vault_name
                 assert result[0].resource_arn == vault_arn
                 assert result[0].status == "FAIL"
    @@ -172,9 +166,7 @@ def test_vault_policy_pricipal_asterisk(self):
         def test_vault_policy_pricipal_canonical_user_asterisk(self):
             glacier_client = mock.MagicMock
             vault_name = "test-vault"
    -        vault_arn = (
    -            f"arn:aws:glacier:{AWS_REGION}:{DEFAULT_ACCOUNT_ID}:vaults/examplevault"
    -        )
    +        vault_arn = f"arn:aws:glacier:{AWS_REGION_EU_WEST_1}:{AWS_ACCOUNT_NUMBER}:vaults/examplevault"
             glacier_client.vaults = {
                 vault_name: Vault(
                     name=vault_name,
    @@ -193,12 +185,12 @@ def test_vault_policy_pricipal_canonical_user_asterisk(self):
                                     "glacier:CompleteMultipartUpload",
                                 ],
                                 "Resource": [
    -                                f"arn:aws:glacier:{AWS_REGION}:{DEFAULT_ACCOUNT_ID}:vaults/examplevault"
    +                                f"arn:aws:glacier:{AWS_REGION_EU_WEST_1}:{AWS_ACCOUNT_NUMBER}:vaults/examplevault"
                                 ],
                             }
                         ],
                     },
    -                region=AWS_REGION,
    +                region=AWS_REGION_EU_WEST_1,
                 )
             }
             with mock.patch(
    @@ -214,7 +206,7 @@ def test_vault_policy_pricipal_canonical_user_asterisk(self):
                 result = check.execute()
     
                 assert len(result) == 1
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_EU_WEST_1
                 assert result[0].resource_id == vault_name
                 assert result[0].resource_arn == vault_arn
                 assert result[0].status == "FAIL"
    @@ -226,9 +218,7 @@ def test_vault_policy_pricipal_canonical_user_asterisk(self):
         def test_vault_policy_private(self):
             glacier_client = mock.MagicMock
             vault_name = "test-vault"
    -        vault_arn = (
    -            f"arn:aws:glacier:{AWS_REGION}:{DEFAULT_ACCOUNT_ID}:vaults/examplevault"
    -        )
    +        vault_arn = f"arn:aws:glacier:{AWS_REGION_EU_WEST_1}:{AWS_ACCOUNT_NUMBER}:vaults/examplevault"
             glacier_client.vaults = {
                 vault_name: Vault(
                     name=vault_name,
    @@ -240,7 +230,7 @@ def test_vault_policy_private(self):
                                 "Sid": "cross-account-upload",
                                 "Principal": {
                                     "CanonicalUser": [
    -                                    f"arn:aws:iam::{DEFAULT_ACCOUNT_ID}:root",
    +                                    f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
                                     ]
                                 },
                                 "Effect": "Allow",
    @@ -251,12 +241,12 @@ def test_vault_policy_private(self):
                                     "glacier:CompleteMultipartUpload",
                                 ],
                                 "Resource": [
    -                                f"arn:aws:glacier:{AWS_REGION}:{DEFAULT_ACCOUNT_ID}:vaults/examplevault"
    +                                f"arn:aws:glacier:{AWS_REGION_EU_WEST_1}:{AWS_ACCOUNT_NUMBER}:vaults/examplevault"
                                 ],
                             }
                         ],
                     },
    -                region=AWS_REGION,
    +                region=AWS_REGION_EU_WEST_1,
                 )
             }
             with mock.patch(
    @@ -272,7 +262,7 @@ def test_vault_policy_private(self):
                 result = check.execute()
     
                 assert len(result) == 1
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_EU_WEST_1
                 assert result[0].resource_id == vault_name
                 assert result[0].resource_arn == vault_arn
                 assert result[0].status == "PASS"
    diff --git a/tests/providers/aws/services/globalaccelerator/globalaccelerator_service_test.py b/tests/providers/aws/services/globalaccelerator/globalaccelerator_service_test.py
    index 9e0f076d0d2..a4e299b4585 100644
    --- a/tests/providers/aws/services/globalaccelerator/globalaccelerator_service_test.py
    +++ b/tests/providers/aws/services/globalaccelerator/globalaccelerator_service_test.py
    @@ -1,21 +1,19 @@
     import botocore
    -from boto3 import session
     from mock import patch
    -from moto.core import DEFAULT_ACCOUNT_ID
     
    -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"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_ACCOUNT_NUMBER,
    +    AWS_REGION_US_WEST_2,
    +    set_mocked_aws_audit_info,
    +)
     
     # Mocking Access Analyzer Calls
     make_api_call = botocore.client.BaseClient._make_api_call
     
    -TEST_ACCELERATOR_ARN = f"arn:aws:globalaccelerator::{DEFAULT_ACCOUNT_ID}:accelerator/5555abcd-abcd-5555-abcd-5555EXAMPLE1"
    +TEST_ACCELERATOR_ARN = f"arn:aws:globalaccelerator::{AWS_ACCOUNT_NUMBER}:accelerator/5555abcd-abcd-5555-abcd-5555EXAMPLE1"
     
     
     def mock_make_api_call(self, operation_name, kwarg):
    @@ -50,61 +48,30 @@ def mock_make_api_call(self, operation_name, kwarg):
     # 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)
     class Test_GlobalAccelerator_Service:
    -    # 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=DEFAULT_ACCOUNT_ID,
    -            audited_account_arn=f"arn:aws:iam::{DEFAULT_ACCOUNT_ID}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=AWS_REGION,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=None,
    -            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
    -
         # Test GlobalAccelerator Service
         def test_service(self):
             # GlobalAccelerator client for this test class
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info()
             globalaccelerator = GlobalAccelerator(audit_info)
             assert globalaccelerator.service == "globalaccelerator"
     
         # Test GlobalAccelerator Client
         def test_client(self):
             # GlobalAccelerator client for this test class
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info()
             globalaccelerator = GlobalAccelerator(audit_info)
             assert globalaccelerator.client.__class__.__name__ == "GlobalAccelerator"
     
         # Test GlobalAccelerator Session
         def test__get_session__(self):
             # GlobalAccelerator client for this test class
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info()
             globalaccelerator = GlobalAccelerator(audit_info)
             assert globalaccelerator.session.__class__.__name__ == "Session"
     
         def test__list_accelerators__(self):
             # GlobalAccelerator client for this test class
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info()
             globalaccelerator = GlobalAccelerator(audit_info)
     
             accelerator_name = "TestAccelerator"
    @@ -120,5 +87,8 @@ def test__list_accelerators__(self):
                 globalaccelerator.accelerators[TEST_ACCELERATOR_ARN].arn
                 == TEST_ACCELERATOR_ARN
             )
    -        assert globalaccelerator.accelerators[TEST_ACCELERATOR_ARN].region == AWS_REGION
    +        assert (
    +            globalaccelerator.accelerators[TEST_ACCELERATOR_ARN].region
    +            == AWS_REGION_US_WEST_2
    +        )
             assert globalaccelerator.accelerators[TEST_ACCELERATOR_ARN].enabled
    diff --git a/tests/providers/aws/services/glue/glue_data_catalogs_connection_passwords_encryption_enabled/glue_data_catalogs_connection_passwords_encryption_enabled_test.py b/tests/providers/aws/services/glue/glue_data_catalogs_connection_passwords_encryption_enabled/glue_data_catalogs_connection_passwords_encryption_enabled_test.py
    index f1750d05cba..73d3dbf91bc 100644
    --- a/tests/providers/aws/services/glue/glue_data_catalogs_connection_passwords_encryption_enabled/glue_data_catalogs_connection_passwords_encryption_enabled_test.py
    +++ b/tests/providers/aws/services/glue/glue_data_catalogs_connection_passwords_encryption_enabled/glue_data_catalogs_connection_passwords_encryption_enabled_test.py
    @@ -1,52 +1,16 @@
     from unittest import mock
     
    -from boto3 import session
    -
    -from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info
     from prowler.providers.aws.services.glue.glue_service import CatalogEncryptionSetting
    -from prowler.providers.common.models import Audit_Metadata
    -
    -AWS_ACCOUNT_NUMBER = "123456789012"
    -AWS_REGION = "us-east-1"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     
     class Test_glue_data_catalogs_connection_passwords_encryption_enabled:
    -    # 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,
    -                region_name=AWS_REGION,
    -            ),
    -            audited_account=AWS_ACCOUNT_NUMBER,
    -            audited_account_arn=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=AWS_REGION,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=None,
    -            organizations_metadata=None,
    -            audit_resources=None,
    -            mfa_enabled=False,
    -            audit_metadata=Audit_Metadata(
    -                services_scanned=0,
    -                expected_checks=[],
    -                completed_checks=0,
    -                audit_progress=0,
    -            ),
    -            ignore_unused_services=False,
    -        )
    -        return audit_info
    -
         def test_glue_no_settings(self):
             glue_client = mock.MagicMock
    -        glue_client.audit_info = self.set_mocked_audit_info()
    +        glue_client.audit_info = set_mocked_aws_audit_info()
             glue_client.catalog_encryption_settings = []
     
             with mock.patch(
    @@ -65,13 +29,13 @@ def test_glue_no_settings(self):
     
         def test_glue_catalog_password_unencrypted(self):
             glue_client = mock.MagicMock
    -        glue_client.audit_info = self.set_mocked_audit_info()
    +        glue_client.audit_info = set_mocked_aws_audit_info()
             glue_client.catalog_encryption_settings = [
                 CatalogEncryptionSetting(
                     mode="DISABLED",
                     tables=False,
                     kms_id=None,
    -                region=AWS_REGION,
    +                region=AWS_REGION_US_EAST_1,
                     password_encryption=False,
                     password_kms_id=None,
                 )
    @@ -97,17 +61,17 @@ def test_glue_catalog_password_unencrypted(self):
                     == "Glue data catalog connection password is not encrypted."
                 )
                 assert result[0].resource_id == "12345678912"
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_US_EAST_1
     
         def test_glue_catalog_password_unencrypted_ignoring(self):
             glue_client = mock.MagicMock
    -        glue_client.audit_info = self.set_mocked_audit_info()
    +        glue_client.audit_info = set_mocked_aws_audit_info()
             glue_client.catalog_encryption_settings = [
                 CatalogEncryptionSetting(
                     mode="DISABLED",
                     tables=False,
                     kms_id=None,
    -                region=AWS_REGION,
    +                region=AWS_REGION_US_EAST_1,
                     password_encryption=False,
                     password_kms_id=None,
                 )
    @@ -130,13 +94,13 @@ def test_glue_catalog_password_unencrypted_ignoring(self):
     
         def test_glue_catalog_password_unencrypted_ignoring_with_tables(self):
             glue_client = mock.MagicMock
    -        glue_client.audit_info = self.set_mocked_audit_info()
    +        glue_client.audit_info = set_mocked_aws_audit_info()
             glue_client.catalog_encryption_settings = [
                 CatalogEncryptionSetting(
                     mode="DISABLED",
                     tables=True,
                     kms_id=None,
    -                region=AWS_REGION,
    +                region=AWS_REGION_US_EAST_1,
                     password_encryption=False,
                     password_kms_id=None,
                 )
    @@ -162,16 +126,16 @@ def test_glue_catalog_password_unencrypted_ignoring_with_tables(self):
                     == "Glue data catalog connection password is not encrypted."
                 )
                 assert result[0].resource_id == "12345678912"
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_US_EAST_1
     
         def test_glue_catalog_encrypted(self):
             glue_client = mock.MagicMock
    -        glue_client.audit_info = self.set_mocked_audit_info()
    +        glue_client.audit_info = set_mocked_aws_audit_info()
             glue_client.catalog_encryption_settings = [
                 CatalogEncryptionSetting(
                     mode="DISABLED",
                     tables=False,
    -                region=AWS_REGION,
    +                region=AWS_REGION_US_EAST_1,
                     password_encryption=True,
                     password_kms_id="kms-key",
                 )
    @@ -197,4 +161,4 @@ def test_glue_catalog_encrypted(self):
                     == "Glue data catalog connection password is encrypted with KMS key kms-key."
                 )
                 assert result[0].resource_id == "12345678912"
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_US_EAST_1
    diff --git a/tests/providers/aws/services/glue/glue_data_catalogs_metadata_encryption_enabled/glue_data_catalogs_metadata_encryption_enabled_test.py b/tests/providers/aws/services/glue/glue_data_catalogs_metadata_encryption_enabled/glue_data_catalogs_metadata_encryption_enabled_test.py
    index 6adddca894e..9d1e7faa524 100644
    --- a/tests/providers/aws/services/glue/glue_data_catalogs_metadata_encryption_enabled/glue_data_catalogs_metadata_encryption_enabled_test.py
    +++ b/tests/providers/aws/services/glue/glue_data_catalogs_metadata_encryption_enabled/glue_data_catalogs_metadata_encryption_enabled_test.py
    @@ -1,53 +1,17 @@
     from re import search
     from unittest import mock
     
    -from boto3 import session
    -
    -from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info
     from prowler.providers.aws.services.glue.glue_service import CatalogEncryptionSetting
    -from prowler.providers.common.models import Audit_Metadata
    -
    -AWS_ACCOUNT_NUMBER = "123456789012"
    -AWS_REGION = "us-east-1"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     
     class Test_glue_data_catalogs_metadata_encryption_enabled:
    -    # 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,
    -                region_name=AWS_REGION,
    -            ),
    -            audited_account=AWS_ACCOUNT_NUMBER,
    -            audited_account_arn=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=AWS_REGION,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=None,
    -            organizations_metadata=None,
    -            audit_resources=None,
    -            mfa_enabled=False,
    -            audit_metadata=Audit_Metadata(
    -                services_scanned=0,
    -                expected_checks=[],
    -                completed_checks=0,
    -                audit_progress=0,
    -            ),
    -            ignore_unused_services=False,
    -        )
    -        return audit_info
    -
         def test_glue_no_settings(self):
             glue_client = mock.MagicMock
    -        glue_client.audit_info = self.set_mocked_audit_info()
    +        glue_client.audit_info = set_mocked_aws_audit_info
             glue_client.catalog_encryption_settings = []
     
             with mock.patch(
    @@ -66,13 +30,13 @@ def test_glue_no_settings(self):
     
         def test_glue_catalog_unencrypted(self):
             glue_client = mock.MagicMock
    -        glue_client.audit_info = self.set_mocked_audit_info()
    +        glue_client.audit_info = set_mocked_aws_audit_info()
             glue_client.catalog_encryption_settings = [
                 CatalogEncryptionSetting(
                     mode="disabled.",
                     tables=False,
                     kms_id=None,
    -                region=AWS_REGION,
    +                region=AWS_REGION_US_EAST_1,
                     password_encryption=False,
                     password_kms_id=None,
                 )
    @@ -98,17 +62,17 @@ def test_glue_catalog_unencrypted(self):
                     == "Glue data catalog settings have metadata encryption disabled."
                 )
                 assert result[0].resource_id == "12345678912"
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_US_EAST_1
     
         def test_glue_catalog_unencrypted_ignoring(self):
             glue_client = mock.MagicMock
    -        glue_client.audit_info = self.set_mocked_audit_info()
    +        glue_client.audit_info = set_mocked_aws_audit_info()
             glue_client.catalog_encryption_settings = [
                 CatalogEncryptionSetting(
                     mode="disabled.",
                     tables=False,
                     kms_id=None,
    -                region=AWS_REGION,
    +                region=AWS_REGION_US_EAST_1,
                     password_encryption=False,
                     password_kms_id=None,
                 )
    @@ -132,13 +96,13 @@ def test_glue_catalog_unencrypted_ignoring(self):
     
         def test_glue_catalog_unencrypted_ignoring_with_tables(self):
             glue_client = mock.MagicMock
    -        glue_client.audit_info = self.set_mocked_audit_info()
    +        glue_client.audit_info = set_mocked_aws_audit_info()
             glue_client.catalog_encryption_settings = [
                 CatalogEncryptionSetting(
                     mode="disabled.",
                     tables=True,
                     kms_id=None,
    -                region=AWS_REGION,
    +                region=AWS_REGION_US_EAST_1,
                     password_encryption=False,
                     password_kms_id=None,
                 )
    @@ -165,17 +129,17 @@ def test_glue_catalog_unencrypted_ignoring_with_tables(self):
                     result[0].status_extended,
                 )
                 assert result[0].resource_id == "12345678912"
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_US_EAST_1
     
         def test_glue_catalog_encrypted(self):
             glue_client = mock.MagicMock
    -        glue_client.audit_info = self.set_mocked_audit_info()
    +        glue_client.audit_info = set_mocked_aws_audit_info()
             glue_client.catalog_encryption_settings = [
                 CatalogEncryptionSetting(
                     mode="SSE-KMS",
                     kms_id="kms-key",
                     tables=False,
    -                region=AWS_REGION,
    +                region=AWS_REGION_US_EAST_1,
                     password_encryption=False,
                     password_kms_id=None,
                 )
    @@ -201,4 +165,4 @@ def test_glue_catalog_encrypted(self):
                     == "Glue data catalog settings have metadata encryption enabled with KMS key kms-key."
                 )
                 assert result[0].resource_id == "12345678912"
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_US_EAST_1
    diff --git a/tests/providers/aws/services/glue/glue_database_connections_ssl_enabled/glue_database_connections_ssl_enabled_test.py b/tests/providers/aws/services/glue/glue_database_connections_ssl_enabled/glue_database_connections_ssl_enabled_test.py
    index c38426a8cca..df7e4d9616e 100644
    --- a/tests/providers/aws/services/glue/glue_database_connections_ssl_enabled/glue_database_connections_ssl_enabled_test.py
    +++ b/tests/providers/aws/services/glue/glue_database_connections_ssl_enabled/glue_database_connections_ssl_enabled_test.py
    @@ -2,8 +2,7 @@
     from unittest import mock
     
     from prowler.providers.aws.services.glue.glue_service import Connection
    -
    -AWS_REGION = "us-east-1"
    +from tests.providers.aws.audit_info_utils import AWS_REGION_US_EAST_1
     
     
     class Test_glue_database_connections_ssl_enabled:
    @@ -37,7 +36,7 @@ def test_glue_table_no_SSL(self):
                         "CONNECTOR_URL": "s3://bck-dev",
                         "CONNECTOR_CLASS_NAME": "test",
                     },
    -                region=AWS_REGION,
    +                region=AWS_REGION_US_EAST_1,
                     arn="arn_test",
                 )
             ]
    @@ -76,7 +75,7 @@ def test_glue_table_with_SSL(self):
                         "CONNECTOR_CLASS_NAME": "test",
                         "JDBC_ENFORCE_SSL": "true",
                     },
    -                region=AWS_REGION,
    +                region=AWS_REGION_US_EAST_1,
                     arn="arn_test",
                 )
             ]
    diff --git a/tests/providers/aws/services/glue/glue_development_endpoints_cloudwatch_logs_encryption_enabled/glue_development_endpoints_cloudwatch_logs_encryption_enabled_test.py b/tests/providers/aws/services/glue/glue_development_endpoints_cloudwatch_logs_encryption_enabled/glue_development_endpoints_cloudwatch_logs_encryption_enabled_test.py
    index 72f0a25caeb..b28e80a193a 100644
    --- a/tests/providers/aws/services/glue/glue_development_endpoints_cloudwatch_logs_encryption_enabled/glue_development_endpoints_cloudwatch_logs_encryption_enabled_test.py
    +++ b/tests/providers/aws/services/glue/glue_development_endpoints_cloudwatch_logs_encryption_enabled/glue_development_endpoints_cloudwatch_logs_encryption_enabled_test.py
    @@ -2,8 +2,7 @@
     from unittest import mock
     
     from prowler.providers.aws.services.glue.glue_service import DevEndpoint, SecurityConfig
    -
    -AWS_REGION = "us-east-1"
    +from tests.providers.aws.audit_info_utils import AWS_REGION_US_EAST_1
     
     
     class Test_glue_development_endpoints_cloudwatch_logs_encryption_enabled:
    @@ -31,7 +30,7 @@ def test_glue_encrypted_endpoint(self):
                 DevEndpoint(
                     name="test",
                     security="sec_config",
    -                region=AWS_REGION,
    +                region=AWS_REGION_US_EAST_1,
                     arn="arn_test",
                 )
             ]
    @@ -42,7 +41,7 @@ def test_glue_encrypted_endpoint(self):
                     cw_key_arn="key_arn",
                     s3_encryption="DISABLED",
                     jb_encryption="DISABLED",
    -                region=AWS_REGION,
    +                region=AWS_REGION_US_EAST_1,
                 )
             ]
     
    @@ -73,7 +72,7 @@ def test_glue_unencrypted_endpoint(self):
                 DevEndpoint(
                     name="test",
                     security="sec_config",
    -                region=AWS_REGION,
    +                region=AWS_REGION_US_EAST_1,
                     arn="arn_test",
                 )
             ]
    @@ -83,7 +82,7 @@ def test_glue_unencrypted_endpoint(self):
                     s3_encryption="DISABLED",
                     cw_encryption="DISABLED",
                     jb_encryption="DISABLED",
    -                region=AWS_REGION,
    +                region=AWS_REGION_US_EAST_1,
                 )
             ]
     
    @@ -114,7 +113,7 @@ def test_glue_no_sec_configs(self):
                 DevEndpoint(
                     name="test",
                     security="sec_config",
    -                region=AWS_REGION,
    +                region=AWS_REGION_US_EAST_1,
                     arn="arn_test",
                 )
             ]
    diff --git a/tests/providers/aws/services/glue/glue_development_endpoints_job_bookmark_encryption_enabled/glue_development_endpoints_job_bookmark_encryption_enabled_test.py b/tests/providers/aws/services/glue/glue_development_endpoints_job_bookmark_encryption_enabled/glue_development_endpoints_job_bookmark_encryption_enabled_test.py
    index 1adbe40acf5..2a1615aa171 100644
    --- a/tests/providers/aws/services/glue/glue_development_endpoints_job_bookmark_encryption_enabled/glue_development_endpoints_job_bookmark_encryption_enabled_test.py
    +++ b/tests/providers/aws/services/glue/glue_development_endpoints_job_bookmark_encryption_enabled/glue_development_endpoints_job_bookmark_encryption_enabled_test.py
    @@ -2,8 +2,7 @@
     from unittest import mock
     
     from prowler.providers.aws.services.glue.glue_service import DevEndpoint, SecurityConfig
    -
    -AWS_REGION = "us-east-1"
    +from tests.providers.aws.audit_info_utils import AWS_REGION_US_EAST_1
     
     
     class Test_glue_development_endpoints_job_bookmark_encryption_enabled:
    @@ -31,7 +30,7 @@ def test_glue_encrypted_endpoint(self):
                 DevEndpoint(
                     name="test",
                     security="sec_config",
    -                region=AWS_REGION,
    +                region=AWS_REGION_US_EAST_1,
                     arn="arn_test",
                 )
             ]
    @@ -42,7 +41,7 @@ def test_glue_encrypted_endpoint(self):
                     jb_key_arn="key_arn",
                     cw_encryption="DISABLED",
                     s3_encryption="DISABLED",
    -                region=AWS_REGION,
    +                region=AWS_REGION_US_EAST_1,
                 )
             ]
     
    @@ -73,7 +72,7 @@ def test_glue_unencrypted_endpoint(self):
                 DevEndpoint(
                     name="test",
                     security="sec_config",
    -                region=AWS_REGION,
    +                region=AWS_REGION_US_EAST_1,
                     arn="arn_test",
                 )
             ]
    @@ -83,7 +82,7 @@ def test_glue_unencrypted_endpoint(self):
                     s3_encryption="DISABLED",
                     cw_encryption="DISABLED",
                     jb_encryption="DISABLED",
    -                region=AWS_REGION,
    +                region=AWS_REGION_US_EAST_1,
                 )
             ]
     
    @@ -114,7 +113,7 @@ def test_glue_no_sec_configs(self):
                 DevEndpoint(
                     name="test",
                     security="sec_config",
    -                region=AWS_REGION,
    +                region=AWS_REGION_US_EAST_1,
                     arn="arn_test",
                 )
             ]
    diff --git a/tests/providers/aws/services/glue/glue_development_endpoints_s3_encryption_enabled/glue_development_endpoints_s3_encryption_enabled_test.py b/tests/providers/aws/services/glue/glue_development_endpoints_s3_encryption_enabled/glue_development_endpoints_s3_encryption_enabled_test.py
    index cc645f8cd4b..96de6949bc2 100644
    --- a/tests/providers/aws/services/glue/glue_development_endpoints_s3_encryption_enabled/glue_development_endpoints_s3_encryption_enabled_test.py
    +++ b/tests/providers/aws/services/glue/glue_development_endpoints_s3_encryption_enabled/glue_development_endpoints_s3_encryption_enabled_test.py
    @@ -2,8 +2,7 @@
     from unittest import mock
     
     from prowler.providers.aws.services.glue.glue_service import DevEndpoint, SecurityConfig
    -
    -AWS_REGION = "us-east-1"
    +from tests.providers.aws.audit_info_utils import AWS_REGION_US_EAST_1
     
     
     class Test_glue_development_endpoints_s3_encryption_enabled:
    @@ -31,7 +30,7 @@ def test_glue_encrypted_endpoint(self):
                 DevEndpoint(
                     name="test",
                     security="sec_config",
    -                region=AWS_REGION,
    +                region=AWS_REGION_US_EAST_1,
                     arn="arn_test",
                 )
             ]
    @@ -42,7 +41,7 @@ def test_glue_encrypted_endpoint(self):
                     s3_key_arn="key_arn",
                     cw_encryption="DISABLED",
                     jb_encryption="DISABLED",
    -                region=AWS_REGION,
    +                region=AWS_REGION_US_EAST_1,
                 )
             ]
     
    @@ -73,7 +72,7 @@ def test_glue_unencrypted_endpoint(self):
                 DevEndpoint(
                     name="test",
                     security="sec_config",
    -                region=AWS_REGION,
    +                region=AWS_REGION_US_EAST_1,
                     arn="arn_test",
                 )
             ]
    @@ -83,7 +82,7 @@ def test_glue_unencrypted_endpoint(self):
                     s3_encryption="DISABLED",
                     cw_encryption="DISABLED",
                     jb_encryption="DISABLED",
    -                region=AWS_REGION,
    +                region=AWS_REGION_US_EAST_1,
                 )
             ]
     
    @@ -114,7 +113,7 @@ def test_glue_no_sec_configs(self):
                 DevEndpoint(
                     name="test",
                     security="sec_config",
    -                region=AWS_REGION,
    +                region=AWS_REGION_US_EAST_1,
                     arn="arn_test",
                 )
             ]
    diff --git a/tests/providers/aws/services/glue/glue_etl_jobs_amazon_s3_encryption_enabled/glue_etl_jobs_amazon_s3_encryption_enabled_test.py b/tests/providers/aws/services/glue/glue_etl_jobs_amazon_s3_encryption_enabled/glue_etl_jobs_amazon_s3_encryption_enabled_test.py
    index 922b66d9295..545d5fe8f29 100644
    --- a/tests/providers/aws/services/glue/glue_etl_jobs_amazon_s3_encryption_enabled/glue_etl_jobs_amazon_s3_encryption_enabled_test.py
    +++ b/tests/providers/aws/services/glue/glue_etl_jobs_amazon_s3_encryption_enabled/glue_etl_jobs_amazon_s3_encryption_enabled_test.py
    @@ -2,8 +2,7 @@
     from unittest import mock
     
     from prowler.providers.aws.services.glue.glue_service import Job, SecurityConfig
    -
    -AWS_REGION = "us-east-1"
    +from tests.providers.aws.audit_info_utils import AWS_REGION_US_EAST_1
     
     
     class Test_glue_etl_jobs_amazon_s3_encryption_enabled:
    @@ -32,7 +31,7 @@ def test_glue_encrypted_job(self):
                     name="test",
                     security="sec_config",
                     arguments=None,
    -                region=AWS_REGION,
    +                region=AWS_REGION_US_EAST_1,
                     arn="arn_test",
                 )
             ]
    @@ -43,7 +42,7 @@ def test_glue_encrypted_job(self):
                     s3_key_arn="key_arn",
                     cw_encryption="DISABLED",
                     jb_encryption="DISABLED",
    -                region=AWS_REGION,
    +                region=AWS_REGION_US_EAST_1,
                 )
             ]
     
    @@ -75,7 +74,7 @@ def test_glue_unencrypted_job(self):
                     name="test",
                     security="sec_config",
                     arguments=None,
    -                region=AWS_REGION,
    +                region=AWS_REGION_US_EAST_1,
                     arn="arn_test",
                 )
             ]
    @@ -85,7 +84,7 @@ def test_glue_unencrypted_job(self):
                     s3_encryption="DISABLED",
                     cw_encryption="DISABLED",
                     jb_encryption="DISABLED",
    -                region=AWS_REGION,
    +                region=AWS_REGION_US_EAST_1,
                 )
             ]
     
    @@ -116,7 +115,7 @@ def test_glue_no_sec_configs(self):
                 Job(
                     name="test",
                     security="sec_config",
    -                region=AWS_REGION,
    +                region=AWS_REGION_US_EAST_1,
                     arn="arn_test",
                 )
             ]
    @@ -153,7 +152,7 @@ def test_glue_encrypted_job_with_argument(self):
                         "--encryption-type": "sse-s3",
                         "--enable-job-insights": "false",
                     },
    -                region=AWS_REGION,
    +                region=AWS_REGION_US_EAST_1,
                     arn="arn_test",
                 )
             ]
    diff --git a/tests/providers/aws/services/glue/glue_etl_jobs_cloudwatch_logs_encryption_enabled/glue_etl_jobs_cloudwatch_logs_encryption_enabled_test.py b/tests/providers/aws/services/glue/glue_etl_jobs_cloudwatch_logs_encryption_enabled/glue_etl_jobs_cloudwatch_logs_encryption_enabled_test.py
    index d6d7be3256c..607c9196543 100644
    --- a/tests/providers/aws/services/glue/glue_etl_jobs_cloudwatch_logs_encryption_enabled/glue_etl_jobs_cloudwatch_logs_encryption_enabled_test.py
    +++ b/tests/providers/aws/services/glue/glue_etl_jobs_cloudwatch_logs_encryption_enabled/glue_etl_jobs_cloudwatch_logs_encryption_enabled_test.py
    @@ -2,8 +2,7 @@
     from unittest import mock
     
     from prowler.providers.aws.services.glue.glue_service import Job, SecurityConfig
    -
    -AWS_REGION = "us-east-1"
    +from tests.providers.aws.audit_info_utils import AWS_REGION_US_EAST_1
     
     
     class Test_glue_etl_jobs_cloudwatch_logs_encryption_enabled:
    @@ -32,7 +31,7 @@ def test_glue_encrypted_job(self):
                     name="test",
                     security="sec_config",
                     arguments=None,
    -                region=AWS_REGION,
    +                region=AWS_REGION_US_EAST_1,
                     arn="arn_test",
                 )
             ]
    @@ -43,7 +42,7 @@ def test_glue_encrypted_job(self):
                     cw_key_arn="key_arn",
                     s3_encryption="DISABLED",
                     jb_encryption="DISABLED",
    -                region=AWS_REGION,
    +                region=AWS_REGION_US_EAST_1,
                 )
             ]
     
    @@ -75,7 +74,7 @@ def test_glue_unencrypted_job(self):
                     name="test",
                     security="sec_config",
                     arguments=None,
    -                region=AWS_REGION,
    +                region=AWS_REGION_US_EAST_1,
                     arn="arn_test",
                 )
             ]
    @@ -85,7 +84,7 @@ def test_glue_unencrypted_job(self):
                     s3_encryption="DISABLED",
                     cw_encryption="DISABLED",
                     jb_encryption="DISABLED",
    -                region=AWS_REGION,
    +                region=AWS_REGION_US_EAST_1,
                 )
             ]
     
    @@ -116,7 +115,7 @@ def test_glue_no_sec_configs(self):
                 Job(
                     name="test",
                     security="sec_config",
    -                region=AWS_REGION,
    +                region=AWS_REGION_US_EAST_1,
                     arn="arn_test",
                 )
             ]
    diff --git a/tests/providers/aws/services/glue/glue_etl_jobs_job_bookmark_encryption_enabled/glue_etl_jobs_job_bookmark_encryption_enabled_test.py b/tests/providers/aws/services/glue/glue_etl_jobs_job_bookmark_encryption_enabled/glue_etl_jobs_job_bookmark_encryption_enabled_test.py
    index af74c7d0500..3e040302ebf 100644
    --- a/tests/providers/aws/services/glue/glue_etl_jobs_job_bookmark_encryption_enabled/glue_etl_jobs_job_bookmark_encryption_enabled_test.py
    +++ b/tests/providers/aws/services/glue/glue_etl_jobs_job_bookmark_encryption_enabled/glue_etl_jobs_job_bookmark_encryption_enabled_test.py
    @@ -2,8 +2,7 @@
     from unittest import mock
     
     from prowler.providers.aws.services.glue.glue_service import Job, SecurityConfig
    -
    -AWS_REGION = "us-east-1"
    +from tests.providers.aws.audit_info_utils import AWS_REGION_US_EAST_1
     
     
     class Test_glue_etl_jobs_job_bookmark_encryption_enabled:
    @@ -32,7 +31,7 @@ def test_glue_encrypted_job(self):
                     name="test",
                     security="sec_config",
                     arguments=None,
    -                region=AWS_REGION,
    +                region=AWS_REGION_US_EAST_1,
                     arn="arn_test",
                 )
             ]
    @@ -43,7 +42,7 @@ def test_glue_encrypted_job(self):
                     jb_key_arn="key_arn",
                     s3_encryption="DISABLED",
                     cw_encryption="DISABLED",
    -                region=AWS_REGION,
    +                region=AWS_REGION_US_EAST_1,
                 )
             ]
     
    @@ -75,7 +74,7 @@ def test_glue_unencrypted_job(self):
                     name="test",
                     security="sec_config",
                     arguments=None,
    -                region=AWS_REGION,
    +                region=AWS_REGION_US_EAST_1,
                     arn="arn_test",
                 )
             ]
    @@ -85,7 +84,7 @@ def test_glue_unencrypted_job(self):
                     s3_encryption="DISABLED",
                     cw_encryption="DISABLED",
                     jb_encryption="DISABLED",
    -                region=AWS_REGION,
    +                region=AWS_REGION_US_EAST_1,
                 )
             ]
     
    @@ -116,7 +115,7 @@ def test_glue_no_sec_configs(self):
                 Job(
                     name="test",
                     security="sec_config",
    -                region=AWS_REGION,
    +                region=AWS_REGION_US_EAST_1,
                     arn="arn_test",
                 )
             ]
    diff --git a/tests/providers/aws/services/glue/glue_service_test.py b/tests/providers/aws/services/glue/glue_service_test.py
    index bd92ae9c65b..0c119a0b185 100644
    --- a/tests/providers/aws/services/glue/glue_service_test.py
    +++ b/tests/providers/aws/services/glue/glue_service_test.py
    @@ -1,15 +1,14 @@
     from unittest.mock import patch
     
     import botocore
    -from boto3 import session
    -from moto import mock_glue
    +from moto import mock_aws
     
    -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"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_ACCOUNT_NUMBER,
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     # Mocking Access Analyzer Calls
     make_api_call = botocore.client.BaseClient._make_api_call
    @@ -105,10 +104,12 @@ def mock_make_api_call(self, operation_name, kwarg):
     
     
     # Mock generate_regional_clients()
    -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}
    +def mock_generate_regional_clients(service, audit_info):
    +    regional_client = audit_info.audit_session.client(
    +        service, region_name=AWS_REGION_US_EAST_1
    +    )
    +    regional_client.region = AWS_REGION_US_EAST_1
    +    return {AWS_REGION_US_EAST_1: regional_client}
     
     
     # Patch every AWS call using Boto3 and generate_regional_clients to have 1 client
    @@ -118,85 +119,54 @@ def mock_generate_regional_clients(service, audit_info, _):
         new=mock_generate_regional_clients,
     )
     class Test_Glue_Service:
    -    # 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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=None,
    -            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
    -
         # Test Glue Service
    -    @mock_glue
    +    @mock_aws
         def test_service(self):
             # Glue client for this test class
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info()
             glue = Glue(audit_info)
             assert glue.service == "glue"
     
         # Test Glue Client
    -    @mock_glue
    +    @mock_aws
         def test_client(self):
             # Glue client for this test class
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info()
             glue = Glue(audit_info)
             for regional_client in glue.regional_clients.values():
                 assert regional_client.__class__.__name__ == "Glue"
     
         # Test Glue Session
    -    @mock_glue
    +    @mock_aws
         def test__get_session__(self):
             # Glue client for this test class
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info()
             glue = Glue(audit_info)
             assert glue.session.__class__.__name__ == "Session"
     
         # Test Glue Session
    -    @mock_glue
    +    @mock_aws
         def test_audited_account(self):
             # Glue client for this test class
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info()
             glue = Glue(audit_info)
             assert glue.audited_account == AWS_ACCOUNT_NUMBER
     
         # Test Glue Search Tables
    -    @mock_glue
    +    @mock_aws
         def test__search_tables__(self):
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info()
             glue = Glue(audit_info)
             assert len(glue.tables) == 1
             assert glue.tables[0].name == "table"
             assert glue.tables[0].database == "database"
             assert glue.tables[0].catalog == "catalog"
    -        assert glue.tables[0].region == AWS_REGION
    +        assert glue.tables[0].region == AWS_REGION_US_EAST_1
     
         # Test Glue Get Connections
    -    @mock_glue
    +    @mock_aws
         def test__get_connections__(self):
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info()
             glue = Glue(audit_info)
             assert len(glue.connections) == 1
             assert glue.connections[0].name == "connection"
    @@ -208,46 +178,46 @@ def test__get_connections__(self):
                 "CONNECTOR_CLASS_NAME": "test",
                 "JDBC_ENFORCE_SSL": "true",
             }
    -        assert glue.connections[0].region == AWS_REGION
    +        assert glue.connections[0].region == AWS_REGION_US_EAST_1
     
         # Test Glue Get Catalog Encryption
    -    @mock_glue
    +    @mock_aws
         def test__get_data_catalog_encryption_settings__(self):
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info()
             glue = Glue(audit_info)
             assert len(glue.catalog_encryption_settings) == 1
             assert glue.catalog_encryption_settings[0].mode == "SSE-KMS"
             assert glue.catalog_encryption_settings[0].kms_id == "kms_key"
             assert glue.catalog_encryption_settings[0].password_encryption
             assert glue.catalog_encryption_settings[0].password_kms_id == "password_key"
    -        assert glue.catalog_encryption_settings[0].region == AWS_REGION
    +        assert glue.catalog_encryption_settings[0].region == AWS_REGION_US_EAST_1
     
         # Test Glue Get Dev Endpoints
    -    @mock_glue
    +    @mock_aws
         def test__get_dev_endpoints__(self):
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info()
             glue = Glue(audit_info)
             assert len(glue.dev_endpoints) == 1
             assert glue.dev_endpoints[0].name == "endpoint"
             assert glue.dev_endpoints[0].security == "security_config"
    -        assert glue.dev_endpoints[0].region == AWS_REGION
    +        assert glue.dev_endpoints[0].region == AWS_REGION_US_EAST_1
     
         # Test Glue Get Security Configs
    -    @mock_glue
    +    @mock_aws
         def test__get_security_configurations__(self):
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info()
             glue = Glue(audit_info)
             assert len(glue.security_configs) == 1
             assert glue.security_configs[0].name == "test"
             assert glue.security_configs[0].s3_encryption == "DISABLED"
             assert glue.security_configs[0].cw_encryption == "DISABLED"
             assert glue.security_configs[0].jb_encryption == "DISABLED"
    -        assert glue.security_configs[0].region == AWS_REGION
    +        assert glue.security_configs[0].region == AWS_REGION_US_EAST_1
     
         # Test Glue Get Security Configs
    -    @mock_glue
    +    @mock_aws
         def test__get_jobs__(self):
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info()
             glue = Glue(audit_info)
             assert len(glue.jobs) == 1
             assert glue.jobs[0].name == "job"
    @@ -256,4 +226,4 @@ def test__get_jobs__(self):
                 "--encryption-type": "sse-s3",
                 "--enable-job-insights": "false",
             }
    -        assert glue.jobs[0].region == AWS_REGION
    +        assert glue.jobs[0].region == AWS_REGION_US_EAST_1
    diff --git a/tests/providers/aws/services/guardduty/guardduty_centrally_managed/guardduty_centrally_managed_test.py b/tests/providers/aws/services/guardduty/guardduty_centrally_managed/guardduty_centrally_managed_test.py
    index 19cc667c00c..34085d2c61f 100644
    --- a/tests/providers/aws/services/guardduty/guardduty_centrally_managed/guardduty_centrally_managed_test.py
    +++ b/tests/providers/aws/services/guardduty/guardduty_centrally_managed/guardduty_centrally_managed_test.py
    @@ -2,14 +2,14 @@
     from uuid import uuid4
     
     from prowler.providers.aws.services.guardduty.guardduty_service import Detector
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_ACCOUNT_NUMBER,
    +    AWS_REGION_EU_WEST_1,
    +)
     
    -AWS_REGION = "eu-west-1"
    -AWS_ACCOUNT_NUMBER = "123456789012"
     AWS_ACCOUNT_NUMBER_ADMIN = "123456789013"
     DETECTOR_ID = str(uuid4())
    -DETECTOR_ARN = (
    -    f"arn:aws:guardduty:{AWS_REGION}:{AWS_ACCOUNT_NUMBER}:detector/{DETECTOR_ID}"
    -)
    +DETECTOR_ARN = f"arn:aws:guardduty:{AWS_REGION_EU_WEST_1}:{AWS_ACCOUNT_NUMBER}:detector/{DETECTOR_ID}"
     
     
     class Test_guardduty_centrally_managed:
    @@ -34,7 +34,7 @@ def test_detector_no_centralized_managed(self):
             guardduty_client.detectors.append(
                 Detector(
                     id=DETECTOR_ID,
    -                region=AWS_REGION,
    +                region=AWS_REGION_EU_WEST_1,
                     arn=DETECTOR_ARN,
                     status=False,
                     findings=[str(uuid4())],
    @@ -59,7 +59,7 @@ def test_detector_no_centralized_managed(self):
                     == f"GuardDuty detector {DETECTOR_ID} is not centrally managed."
                 )
                 assert result[0].resource_id == DETECTOR_ID
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_EU_WEST_1
                 assert result[0].resource_arn == DETECTOR_ARN
     
         def test_not_enabled_account_detector(self):
    @@ -68,7 +68,7 @@ def test_not_enabled_account_detector(self):
             guardduty_client.detectors.append(
                 Detector(
                     id=AWS_ACCOUNT_NUMBER,
    -                region=AWS_REGION,
    +                region=AWS_REGION_EU_WEST_1,
                     arn=DETECTOR_ARN,
                     enabled_in_account=False,
                 )
    @@ -93,7 +93,7 @@ def test_detector_centralized_managed(self):
             guardduty_client.detectors.append(
                 Detector(
                     id=DETECTOR_ID,
    -                region=AWS_REGION,
    +                region=AWS_REGION_EU_WEST_1,
                     arn=DETECTOR_ARN,
                     status=False,
                     findings=[str(uuid4())],
    @@ -119,7 +119,7 @@ def test_detector_centralized_managed(self):
                     == f"GuardDuty detector {DETECTOR_ID} is centrally managed by account {AWS_ACCOUNT_NUMBER_ADMIN}."
                 )
                 assert result[0].resource_id == DETECTOR_ID
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_EU_WEST_1
                 assert result[0].resource_arn == DETECTOR_ARN
     
         def test_detector_administrator(self):
    @@ -128,7 +128,7 @@ def test_detector_administrator(self):
             guardduty_client.detectors.append(
                 Detector(
                     id=DETECTOR_ID,
    -                region=AWS_REGION,
    +                region=AWS_REGION_EU_WEST_1,
                     arn=DETECTOR_ARN,
                     status=False,
                     findings=[str(uuid4())],
    @@ -154,5 +154,5 @@ def test_detector_administrator(self):
                     == f"GuardDuty detector {DETECTOR_ID} is administrator account with 1 member accounts."
                 )
                 assert result[0].resource_id == DETECTOR_ID
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_EU_WEST_1
                 assert result[0].resource_arn == DETECTOR_ARN
    diff --git a/tests/providers/aws/services/guardduty/guardduty_is_enabled/guardduty_is_enabled_test.py b/tests/providers/aws/services/guardduty/guardduty_is_enabled/guardduty_is_enabled_test.py
    index 76968046694..e2af78490b3 100644
    --- a/tests/providers/aws/services/guardduty/guardduty_is_enabled/guardduty_is_enabled_test.py
    +++ b/tests/providers/aws/services/guardduty/guardduty_is_enabled/guardduty_is_enabled_test.py
    @@ -2,24 +2,25 @@
     from uuid import uuid4
     
     from prowler.providers.aws.services.guardduty.guardduty_service import Detector
    -
    -AWS_REGION = "us-east-1"
    -AWS_ACCOUNT_ID = "123456789012"
    -AWS_ACCOUNT_ARN = f"arn:aws:iam::{AWS_ACCOUNT_ID}:root"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_ACCOUNT_ARN,
    +    AWS_ACCOUNT_NUMBER,
    +    AWS_REGION_EU_WEST_1,
    +)
     
     DETECTOR_ID = str(uuid4())
    -DETECTOR_ARN = f"arn:aws:guardduty:{AWS_REGION}:{AWS_ACCOUNT_ID}:detector/{DETECTOR_ID}"
    +DETECTOR_ARN = f"arn:aws:guardduty:{AWS_REGION_EU_WEST_1}:{AWS_ACCOUNT_NUMBER}:detector/{DETECTOR_ID}"
     
     
    -class Test_:
    +class Test_guardduty_is_enabled:
         def test_no_detectors(self):
             guardduty_client = mock.MagicMock
    -        guardduty_client.region = AWS_REGION
    +        guardduty_client.region = AWS_REGION_EU_WEST_1
             guardduty_client.detectors = []
             guardduty_client.detectors.append(
                 Detector(
    -                id=AWS_ACCOUNT_ID,
    -                region=AWS_REGION,
    +                id=AWS_ACCOUNT_NUMBER,
    +                region=AWS_REGION_EU_WEST_1,
                     arn=AWS_ACCOUNT_ARN,
                     enabled_in_account=False,
                 )
    @@ -38,9 +39,9 @@ def test_no_detectors(self):
                 assert len(result) == 1
                 assert result[0].status == "FAIL"
                 assert result[0].status_extended == "GuardDuty is not enabled."
    -            assert result[0].resource_id == AWS_ACCOUNT_ID
    +            assert result[0].resource_id == AWS_ACCOUNT_NUMBER
                 assert result[0].resource_arn == AWS_ACCOUNT_ARN
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_EU_WEST_1
     
         def test_guardduty_enabled(self):
             guardduty_client = mock.MagicMock
    @@ -48,7 +49,7 @@ def test_guardduty_enabled(self):
             guardduty_client.detectors.append(
                 Detector(
                     id=DETECTOR_ID,
    -                region=AWS_REGION,
    +                region=AWS_REGION_EU_WEST_1,
                     arn=DETECTOR_ARN,
                     status=True,
                 )
    @@ -71,17 +72,17 @@ def test_guardduty_enabled(self):
                 )
                 assert result[0].resource_id == DETECTOR_ID
                 assert result[0].resource_arn == DETECTOR_ARN
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_EU_WEST_1
     
         def test_guardduty_configured_but_suspended(self):
             guardduty_client = mock.MagicMock
    -        guardduty_client.region = AWS_REGION
    +        guardduty_client.region = AWS_REGION_EU_WEST_1
             guardduty_client.detectors = []
             guardduty_client.detectors.append(
                 Detector(
                     id=DETECTOR_ID,
                     arn=DETECTOR_ARN,
    -                region=AWS_REGION,
    +                region=AWS_REGION_EU_WEST_1,
                     status=False,
                 )
             )
    @@ -103,17 +104,17 @@ def test_guardduty_configured_but_suspended(self):
                 )
                 assert result[0].resource_id == DETECTOR_ID
                 assert result[0].resource_arn == DETECTOR_ARN
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_EU_WEST_1
     
         def test_guardduty_not_configured(self):
             guardduty_client = mock.MagicMock
             guardduty_client.detectors = []
    -        guardduty_client.region = AWS_REGION
    +        guardduty_client.region = AWS_REGION_EU_WEST_1
             guardduty_client.detectors.append(
                 Detector(
                     id=DETECTOR_ID,
                     arn=DETECTOR_ARN,
    -                region=AWS_REGION,
    +                region=AWS_REGION_EU_WEST_1,
                 )
             )
             with mock.patch(
    @@ -134,7 +135,7 @@ def test_guardduty_not_configured(self):
                 )
                 assert result[0].resource_id == DETECTOR_ID
                 assert result[0].resource_arn == DETECTOR_ARN
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_EU_WEST_1
     
         def test_guardduty_not_configured_muted(self):
             guardduty_client = mock.MagicMock
    @@ -145,7 +146,7 @@ def test_guardduty_not_configured_muted(self):
                 Detector(
                     id=DETECTOR_ID,
                     arn=DETECTOR_ARN,
    -                region=AWS_REGION,
    +                region=AWS_REGION_EU_WEST_1,
                 )
             )
             with mock.patch(
    @@ -166,4 +167,4 @@ def test_guardduty_not_configured_muted(self):
                 )
                 assert result[0].resource_id == DETECTOR_ID
                 assert result[0].resource_arn == DETECTOR_ARN
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_EU_WEST_1
    diff --git a/tests/providers/aws/services/guardduty/guardduty_no_high_severity_findings/guardduty_no_high_severity_findings_test.py b/tests/providers/aws/services/guardduty/guardduty_no_high_severity_findings/guardduty_no_high_severity_findings_test.py
    index 456169324a5..fe1ea54bc18 100644
    --- a/tests/providers/aws/services/guardduty/guardduty_no_high_severity_findings/guardduty_no_high_severity_findings_test.py
    +++ b/tests/providers/aws/services/guardduty/guardduty_no_high_severity_findings/guardduty_no_high_severity_findings_test.py
    @@ -3,14 +3,13 @@
     from uuid import uuid4
     
     from prowler.providers.aws.services.guardduty.guardduty_service import Detector
    -
    -AWS_REGION = "eu-west-1"
    -AWS_ACCOUNT_NUMBER = "123456789012"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_ACCOUNT_NUMBER,
    +    AWS_REGION_EU_WEST_1,
    +)
     
     DETECTOR_ID = str(uuid4())
    -DETECTOR_ARN = (
    -    f"arn:aws:guardduty:{AWS_REGION}:{AWS_ACCOUNT_NUMBER}:detector/{DETECTOR_ID}"
    -)
    +DETECTOR_ARN = f"arn:aws:guardduty:{AWS_REGION_EU_WEST_1}:{AWS_ACCOUNT_NUMBER}:detector/{DETECTOR_ID}"
     
     
     class Test_guardduty_no_high_severity_findings:
    @@ -36,7 +35,7 @@ def test_no_high_findings(self):
                 Detector(
                     id=DETECTOR_ID,
                     arn=DETECTOR_ARN,
    -                region=AWS_REGION,
    +                region=AWS_REGION_EU_WEST_1,
                 )
             )
             with mock.patch(
    @@ -56,7 +55,7 @@ def test_no_high_findings(self):
                 )
                 assert result[0].resource_id == DETECTOR_ID
                 assert result[0].resource_arn == DETECTOR_ARN
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_EU_WEST_1
     
         def test_not_enabled_account_detector(self):
             guardduty_client = mock.MagicMock
    @@ -65,7 +64,7 @@ def test_not_enabled_account_detector(self):
                 Detector(
                     id=AWS_ACCOUNT_NUMBER,
                     arn=DETECTOR_ARN,
    -                region=AWS_REGION,
    +                region=AWS_REGION_EU_WEST_1,
                     enabled_in_account=False,
                 )
             )
    @@ -87,7 +86,7 @@ def test_high_findings(self):
             guardduty_client.detectors.append(
                 Detector(
                     id=DETECTOR_ID,
    -                region=AWS_REGION,
    +                region=AWS_REGION_EU_WEST_1,
                     arn=DETECTOR_ARN,
                     status=False,
                     findings=[str(uuid4())],
    @@ -108,4 +107,4 @@ def test_high_findings(self):
                 assert search("has 1 high severity findings", result[0].status_extended)
                 assert result[0].resource_id == DETECTOR_ID
                 assert result[0].resource_arn == DETECTOR_ARN
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_EU_WEST_1
    diff --git a/tests/providers/aws/services/guardduty/guardduty_service_test.py b/tests/providers/aws/services/guardduty/guardduty_service_test.py
    index 28be7744b49..d5e13b15a3d 100644
    --- a/tests/providers/aws/services/guardduty/guardduty_service_test.py
    +++ b/tests/providers/aws/services/guardduty/guardduty_service_test.py
    @@ -2,16 +2,18 @@
     from unittest.mock import patch
     
     import botocore
    -from boto3 import client, session
    -from moto import mock_guardduty
    +from boto3 import client
    +from moto import mock_aws
     
    -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
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_ACCOUNT_NUMBER,
    +    AWS_REGION_EU_WEST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     AWS_ACCOUNT_NUMBER_ADMIN = "123456789013"
    -AWS_ACCOUNT_NUMBER = "123456789012"
    -AWS_REGION = "eu-west-1"
    +
     
     make_api_call = botocore.client.BaseClient._make_api_call
     
    @@ -48,10 +50,12 @@ 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, _):
    -    regional_client = audit_info.audit_session.client(service, region_name=AWS_REGION)
    -    regional_client.region = AWS_REGION
    -    return {AWS_REGION: regional_client}
    +def mock_generate_regional_clients(service, audit_info):
    +    regional_client = audit_info.audit_session.client(
    +        service, region_name=AWS_REGION_EU_WEST_1
    +    )
    +    regional_client.region = AWS_REGION_EU_WEST_1
    +    return {AWS_REGION_EU_WEST_1: regional_client}
     
     
     @patch("botocore.client.BaseClient._make_api_call", new=mock_make_api_call)
    @@ -60,161 +64,130 @@ def mock_generate_regional_clients(service, audit_info, _):
         new=mock_generate_regional_clients,
     )
     class Test_GuardDuty_Service:
    -    # 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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=None,
    -            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
    -
         # Test GuardDuty Service
         def test_service(self):
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info()
             guardduty = GuardDuty(audit_info)
             assert guardduty.service == "guardduty"
     
         # Test GuardDuty client
         def test_client(self):
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info()
             guardduty = GuardDuty(audit_info)
             for reg_client in guardduty.regional_clients.values():
                 assert reg_client.__class__.__name__ == "GuardDuty"
     
         # Test GuardDuty session
         def test__get_session__(self):
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info()
             guardduty = GuardDuty(audit_info)
             assert guardduty.session.__class__.__name__ == "Session"
     
    -    @mock_guardduty
    +    @mock_aws
         # Test GuardDuty session
         def test__list_detectors__(self):
    -        guardduty_client = client("guardduty", region_name=AWS_REGION)
    +        guardduty_client = client("guardduty", region_name=AWS_REGION_EU_WEST_1)
             response = guardduty_client.create_detector(Enable=True, Tags={"test": "test"})
     
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info()
             guardduty = GuardDuty(audit_info)
     
             assert len(guardduty.detectors) == 1
             assert guardduty.detectors[0].id == response["DetectorId"]
             assert (
                 guardduty.detectors[0].arn
    -            == f"arn:aws:guardduty:{AWS_REGION}:{AWS_ACCOUNT_NUMBER}:detector/{response['DetectorId']}"
    +            == f"arn:aws:guardduty:{AWS_REGION_EU_WEST_1}:{AWS_ACCOUNT_NUMBER}:detector/{response['DetectorId']}"
             )
             assert guardduty.detectors[0].enabled_in_account
             assert len(guardduty.detectors[0].findings) == 1
             assert guardduty.detectors[0].member_accounts == ["123456789012"]
             assert guardduty.detectors[0].administrator_account == "123456789013"
    -        assert guardduty.detectors[0].region == AWS_REGION
    +        assert guardduty.detectors[0].region == AWS_REGION_EU_WEST_1
             assert guardduty.detectors[0].tags == [{"test": "test"}]
     
    -    @mock_guardduty
    +    @mock_aws
         # Test GuardDuty session
         def test__get_detector__(self):
    -        guardduty_client = client("guardduty", region_name=AWS_REGION)
    +        guardduty_client = client("guardduty", region_name=AWS_REGION_EU_WEST_1)
             response = guardduty_client.create_detector(Enable=True)
     
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info()
             guardduty = GuardDuty(audit_info)
     
             assert len(guardduty.detectors) == 1
             assert guardduty.detectors[0].id == response["DetectorId"]
             assert (
                 guardduty.detectors[0].arn
    -            == f"arn:aws:guardduty:{AWS_REGION}:{AWS_ACCOUNT_NUMBER}:detector/{response['DetectorId']}"
    +            == f"arn:aws:guardduty:{AWS_REGION_EU_WEST_1}:{AWS_ACCOUNT_NUMBER}:detector/{response['DetectorId']}"
             )
             assert guardduty.detectors[0].enabled_in_account
             assert len(guardduty.detectors[0].findings) == 1
             assert guardduty.detectors[0].member_accounts == ["123456789012"]
             assert guardduty.detectors[0].administrator_account == "123456789013"
    -        assert guardduty.detectors[0].region == AWS_REGION
    +        assert guardduty.detectors[0].region == AWS_REGION_EU_WEST_1
             assert guardduty.detectors[0].tags == [{"test": "test"}]
     
    -    @mock_guardduty
    +    @mock_aws
         # Test GuardDuty session
         def test__list_findings__(self):
    -        guardduty_client = client("guardduty", region_name=AWS_REGION)
    +        guardduty_client = client("guardduty", region_name=AWS_REGION_EU_WEST_1)
             response = guardduty_client.create_detector(Enable=True)
     
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info()
             guardduty = GuardDuty(audit_info)
     
             assert len(guardduty.detectors) == 1
             assert guardduty.detectors[0].id == response["DetectorId"]
             assert (
                 guardduty.detectors[0].arn
    -            == f"arn:aws:guardduty:{AWS_REGION}:{AWS_ACCOUNT_NUMBER}:detector/{response['DetectorId']}"
    +            == f"arn:aws:guardduty:{AWS_REGION_EU_WEST_1}:{AWS_ACCOUNT_NUMBER}:detector/{response['DetectorId']}"
             )
             assert guardduty.detectors[0].enabled_in_account
             assert len(guardduty.detectors[0].findings) == 1
             assert guardduty.detectors[0].member_accounts == ["123456789012"]
             assert guardduty.detectors[0].administrator_account == "123456789013"
    -        assert guardduty.detectors[0].region == AWS_REGION
    +        assert guardduty.detectors[0].region == AWS_REGION_EU_WEST_1
             assert guardduty.detectors[0].tags == [{"test": "test"}]
     
    -    @mock_guardduty
    +    @mock_aws
         def test__list_members__(self):
    -        guardduty_client = client("guardduty", region_name=AWS_REGION)
    +        guardduty_client = client("guardduty", region_name=AWS_REGION_EU_WEST_1)
             response = guardduty_client.create_detector(Enable=True)
     
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info()
             guardduty = GuardDuty(audit_info)
     
             assert len(guardduty.detectors) == 1
             assert guardduty.detectors[0].id == response["DetectorId"]
             assert (
                 guardduty.detectors[0].arn
    -            == f"arn:aws:guardduty:{AWS_REGION}:{AWS_ACCOUNT_NUMBER}:detector/{response['DetectorId']}"
    +            == f"arn:aws:guardduty:{AWS_REGION_EU_WEST_1}:{AWS_ACCOUNT_NUMBER}:detector/{response['DetectorId']}"
             )
             assert guardduty.detectors[0].enabled_in_account
             assert len(guardduty.detectors[0].findings) == 1
             assert guardduty.detectors[0].member_accounts == ["123456789012"]
             assert guardduty.detectors[0].administrator_account == "123456789013"
    -        assert guardduty.detectors[0].region == AWS_REGION
    +        assert guardduty.detectors[0].region == AWS_REGION_EU_WEST_1
             assert guardduty.detectors[0].tags == [{"test": "test"}]
     
    -    @mock_guardduty
    +    @mock_aws
         # Test GuardDuty session
         def test__get_administrator_account__(self):
    -        guardduty_client = client("guardduty", region_name=AWS_REGION)
    +        guardduty_client = client("guardduty", region_name=AWS_REGION_EU_WEST_1)
             response = guardduty_client.create_detector(Enable=True)
     
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info()
             guardduty = GuardDuty(audit_info)
     
             assert len(guardduty.detectors) == 1
             assert guardduty.detectors[0].id == response["DetectorId"]
             assert (
                 guardduty.detectors[0].arn
    -            == f"arn:aws:guardduty:{AWS_REGION}:{AWS_ACCOUNT_NUMBER}:detector/{response['DetectorId']}"
    +            == f"arn:aws:guardduty:{AWS_REGION_EU_WEST_1}:{AWS_ACCOUNT_NUMBER}:detector/{response['DetectorId']}"
             )
             assert guardduty.detectors[0].enabled_in_account
             assert len(guardduty.detectors[0].findings) == 1
             assert guardduty.detectors[0].member_accounts == ["123456789012"]
             assert guardduty.detectors[0].administrator_account == "123456789013"
    -        assert guardduty.detectors[0].region == AWS_REGION
    +        assert guardduty.detectors[0].region == AWS_REGION_EU_WEST_1
             assert guardduty.detectors[0].tags == [{"test": "test"}]
    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 90a01b10487..076d0856660 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
    @@ -2,50 +2,17 @@
     from re import search
     from unittest import mock
     
    -from boto3 import client, session
    -from moto import mock_iam
    +from boto3 import client
    +from moto import mock_aws
     
    -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"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     
     class Test_iam_administrator_access_with_mfa_test:
    -    # 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,
    -                region_name=AWS_REGION,
    -            ),
    -            audited_account=AWS_ACCOUNT_NUMBER,
    -            audited_account_arn=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=AWS_REGION,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=None,
    -            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
    -
    -    @mock_iam
    +    @mock_aws(config={"iam": {"load_aws_managed_policies": True}})
         def test_group_with_no_policies(self):
             iam = client("iam")
             group_name = "test-group"
    @@ -54,7 +21,7 @@ def test_group_with_no_policies(self):
     
             from prowler.providers.aws.services.iam.iam_service import IAM
     
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -78,7 +45,7 @@ def test_group_with_no_policies(self):
                         f"Group {group_name} has no policies.", result[0].status_extended
                     )
     
    -    @mock_iam
    +    @mock_aws(config={"iam": {"load_aws_managed_policies": True}})
         def test_group_non_administrative_policy(self):
             iam = client("iam")
             group_name = "test-group"
    @@ -97,7 +64,7 @@ def test_group_non_administrative_policy(self):
     
             from prowler.providers.aws.services.iam.iam_service import IAM
     
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -122,7 +89,7 @@ def test_group_non_administrative_policy(self):
                         result[0].status_extended,
                     )
     
    -    @mock_iam
    +    @mock_aws(config={"iam": {"load_aws_managed_policies": True}})
         def test_admin_policy_no_users(self):
             iam = client("iam")
             group_name = "test-group"
    @@ -135,7 +102,7 @@ def test_admin_policy_no_users(self):
     
             from prowler.providers.aws.services.iam.iam_service import IAM
     
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -160,7 +127,7 @@ def test_admin_policy_no_users(self):
                         result[0].status_extended,
                     )
     
    -    @mock_iam
    +    @mock_aws(config={"iam": {"load_aws_managed_policies": True}})
         def test_admin_policy_with_user_without_mfa(self):
             iam = client("iam")
             group_name = "test-group"
    @@ -175,7 +142,7 @@ def test_admin_policy_with_user_without_mfa(self):
     
             from prowler.providers.aws.services.iam.iam_service import IAM
     
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -200,7 +167,7 @@ def test_admin_policy_with_user_without_mfa(self):
                         result[0].status_extended,
                     )
     
    -    @mock_iam
    +    @mock_aws(config={"iam": {"load_aws_managed_policies": True}})
         def test_various_policies_with_users_with_and_without_mfa(self):
             iam = client("iam")
             group_name = "test-group"
    @@ -239,7 +206,7 @@ def test_various_policies_with_users_with_and_without_mfa(self):
     
             from prowler.providers.aws.services.iam.iam_service import IAM
     
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_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 6af569726b8..b27f615bb61 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
    @@ -3,50 +3,16 @@
     from re import search
     from unittest import mock
     
    -from boto3 import session
    -from moto import mock_iam
    +from moto import mock_aws
     
    -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"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     
     class Test_iam_avoid_root_usage:
    -    # 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,
    -                region_name=AWS_REGION,
    -            ),
    -            audited_account=AWS_ACCOUNT_NUMBER,
    -            audited_account_arn=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=AWS_REGION,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=None,
    -            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
    -
    -    @mock_iam
    +    @mock_aws
         def test_root_not_used(self):
             raw_credential_report = r"""user,arn,user_creation_time,password_enabled,password_last_used,password_last_changed,password_next_rotation,mfa_active,access_key_1_active,access_key_1_last_rotated,access_key_1_last_used_date,access_key_1_last_used_region,access_key_1_last_used_service,access_key_2_active,access_key_2_last_rotated,access_key_2_last_used_date,access_key_2_last_used_region,access_key_2_last_used_service,cert_1_active,cert_1_last_rotated,cert_2_active,cert_2_last_rotated
     ,arn:aws:iam::123456789012:,2022-04-17T14:59:38+00:00,true,no_information,not_supported,not_supported,false,true,N/A,N/A,N/A,N/A,false,N/A,N/A,N/A,N/A,false,N/A,false,N/A"""
    @@ -56,7 +22,7 @@ def test_root_not_used(self):
     
             from prowler.providers.aws.services.iam.iam_service import IAM
     
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -83,7 +49,7 @@ def test_root_not_used(self):
                         result[0].resource_arn == "arn:aws:iam::123456789012:"
                     )
     
    -    @mock_iam
    +    @mock_aws
         def test_root_password_recently_used(self):
             password_last_used = (datetime.datetime.now()).strftime(
                 "%Y-%m-%dT%H:%M:%S+00:00"
    @@ -96,7 +62,7 @@ def test_root_password_recently_used(self):
     
             from prowler.providers.aws.services.iam.iam_service import IAM
     
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -123,7 +89,7 @@ def test_root_password_recently_used(self):
                         result[0].resource_arn == "arn:aws:iam::123456789012:"
                     )
     
    -    @mock_iam
    +    @mock_aws
         def test_root_access_key_1_recently_used(self):
             access_key_1_last_used = (datetime.datetime.now()).strftime(
                 "%Y-%m-%dT%H:%M:%S+00:00"
    @@ -136,7 +102,7 @@ def test_root_access_key_1_recently_used(self):
     
             from prowler.providers.aws.services.iam.iam_service import IAM
     
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -163,7 +129,7 @@ def test_root_access_key_1_recently_used(self):
                         result[0].resource_arn == "arn:aws:iam::123456789012:"
                     )
     
    -    @mock_iam
    +    @mock_aws
         def test_root_access_key_2_recently_used(self):
             access_key_2_last_used = (datetime.datetime.now()).strftime(
                 "%Y-%m-%dT%H:%M:%S+00:00"
    @@ -176,7 +142,7 @@ def test_root_access_key_2_recently_used(self):
     
             from prowler.providers.aws.services.iam.iam_service import IAM
     
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -203,7 +169,7 @@ def test_root_access_key_2_recently_used(self):
                         result[0].resource_arn == "arn:aws:iam::123456789012:"
                     )
     
    -    @mock_iam
    +    @mock_aws
         def test_root_password_used(self):
             password_last_used = (
                 datetime.datetime.now() - datetime.timedelta(days=100)
    @@ -216,7 +182,7 @@ def test_root_password_used(self):
     
             from prowler.providers.aws.services.iam.iam_service import IAM
     
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -243,7 +209,7 @@ def test_root_password_used(self):
                         result[0].resource_arn == "arn:aws:iam::123456789012:"
                     )
     
    -    @mock_iam
    +    @mock_aws
         def test_root_access_key_1_used(self):
             access_key_1_last_used = (
                 datetime.datetime.now() - datetime.timedelta(days=100)
    @@ -256,7 +222,7 @@ def test_root_access_key_1_used(self):
     
             from prowler.providers.aws.services.iam.iam_service import IAM
     
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -283,7 +249,7 @@ def test_root_access_key_1_used(self):
                         result[0].resource_arn == "arn:aws:iam::123456789012:"
                     )
     
    -    @mock_iam
    +    @mock_aws
         def test_root_access_key_2_used(self):
             access_key_2_last_used = (
                 datetime.datetime.now() - datetime.timedelta(days=100)
    @@ -296,7 +262,7 @@ def test_root_access_key_2_used(self):
     
             from prowler.providers.aws.services.iam.iam_service import IAM
     
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_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 54c0a704858..e1d6a7c688e 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
    @@ -1,48 +1,17 @@
     from re import search
     from unittest import mock
     
    -from boto3 import client, session
    -from moto import mock_iam
    +from boto3 import client
    +from moto import mock_aws
     
    -from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info
    -from prowler.providers.common.models import Audit_Metadata
    -
    -AWS_ACCOUNT_NUMBER = "123456789012"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     
     class Test_iam_aws_attached_policy_no_administrative_privileges_test:
    -    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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=["us-east-1", "eu-west-1"],
    -            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
    -
    -    @mock_iam
    +    @mock_aws(config={"iam": {"load_aws_managed_policies": True}})
         def test_policy_with_administrative_privileges(self):
             iam_client = client("iam")
     
    @@ -52,7 +21,7 @@ def test_policy_with_administrative_privileges(self):
             iam_client.attach_role_policy(
                 PolicyArn="arn:aws:iam::aws:policy/AdministratorAccess", RoleName="my-role"
             )
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
             from prowler.providers.aws.services.iam.iam_service import IAM
     
             with mock.patch(
    @@ -80,7 +49,7 @@ def test_policy_with_administrative_privileges(self):
                             result.status_extended,
                         )
     
    -    @mock_iam
    +    @mock_aws(config={"iam": {"load_aws_managed_policies": True}})
         def test_policy_non_administrative(self):
             iam_client = client("iam")
     
    @@ -91,7 +60,7 @@ def test_policy_non_administrative(self):
                 PolicyArn="arn:aws:iam::aws:policy/IAMUserChangePassword",
                 RoleName="my-role",
             )
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
             from prowler.providers.aws.services.iam.iam_service import IAM
     
             with mock.patch(
    @@ -119,7 +88,7 @@ def test_policy_non_administrative(self):
                             result.status_extended,
                         )
     
    -    @mock_iam
    +    @mock_aws(config={"iam": {"load_aws_managed_policies": True}})
         def test_policy_administrative_and_non_administrative(self):
             iam_client = client("iam")
     
    @@ -133,7 +102,7 @@ def test_policy_administrative_and_non_administrative(self):
                 PolicyArn="arn:aws:iam::aws:policy/IAMUserChangePassword",
                 RoleName="my-role",
             )
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
             from prowler.providers.aws.services.iam.iam_service import IAM
     
             with mock.patch(
    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 3f6d22cb182..aec804f72b4 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
    @@ -1,49 +1,16 @@
     from unittest import mock
     
    -from boto3 import client, session
    -from moto import mock_iam
    +from boto3 import client
    +from moto import mock_aws
     
    -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"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     
     class Test_iam_check_saml_providers_sts:
    -    # 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,
    -                region_name=AWS_REGION,
    -            ),
    -            audited_account=AWS_ACCOUNT_NUMBER,
    -            audited_account_arn=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=AWS_REGION,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=None,
    -            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
    -
    -    @mock_iam
    +    @mock_aws
         def test_iam_check_saml_providers_sts(self):
             iam_client = client("iam")
             xml_template = r""""
                     )
     
    -    @mock_iam
    +    @mock_aws
         def test_iam_root_access_key_1(self):
             iam_client = client("iam")
             user = "test"
    @@ -95,7 +62,7 @@ def test_iam_root_access_key_1(self):
     
             from prowler.providers.aws.services.iam.iam_service import IAM
     
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -130,7 +97,7 @@ def test_iam_root_access_key_1(self):
                         == "arn:aws:iam::123456789012:user/"
                     )
     
    -    @mock_iam
    +    @mock_aws
         def test_iam_root_access_key_2(self):
             iam_client = client("iam")
             user = "test"
    @@ -138,7 +105,7 @@ def test_iam_root_access_key_2(self):
     
             from prowler.providers.aws.services.iam.iam_service import IAM
     
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -173,7 +140,7 @@ def test_iam_root_access_key_2(self):
                         == "arn:aws:iam::123456789012:user/"
                     )
     
    -    @mock_iam
    +    @mock_aws
         def test_iam_root_both_access_keys(self):
             iam_client = client("iam")
             user = "test"
    @@ -181,7 +148,7 @@ def test_iam_root_both_access_keys(self):
     
             from prowler.providers.aws.services.iam.iam_service import IAM
     
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_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 cd0cc93016c..31d72c97502 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
    @@ -1,55 +1,22 @@
     from re import search
     from unittest import mock
     
    -from boto3 import session
    -from moto import mock_iam
    +from moto import mock_aws
     
    -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"
    -AWS_ACCOUNT_ARN = f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_ACCOUNT_ARN,
    +    AWS_ACCOUNT_NUMBER,
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     
     class Test_iam_password_policy_expires_passwords_within_90_days_or_less:
    -    # 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,
    -                region_name=AWS_REGION,
    -            ),
    -            audited_account=AWS_ACCOUNT_NUMBER,
    -            audited_account_arn=AWS_ACCOUNT_ARN,
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=AWS_REGION,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=None,
    -            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
    -
    -    @mock_iam
    +    @mock_aws
         def test_password_expiration_lower_90(self):
             from prowler.providers.aws.services.iam.iam_service import IAM, PasswordPolicy
     
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -81,17 +48,17 @@ def test_password_expiration_lower_90(self):
                     assert result[0].status == "PASS"
                     assert result[0].resource_id == AWS_ACCOUNT_NUMBER
                     assert result[0].resource_arn == AWS_ACCOUNT_ARN
    -                assert result[0].region == AWS_REGION
    +                assert result[0].region == AWS_REGION_US_EAST_1
                     assert search(
                         "Password expiration is set lower than 90 days",
                         result[0].status_extended,
                     )
     
    -    @mock_iam
    +    @mock_aws
         def test_password_expiration_greater_90(self):
             from prowler.providers.aws.services.iam.iam_service import IAM, PasswordPolicy
     
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -123,17 +90,17 @@ def test_password_expiration_greater_90(self):
                     assert result[0].status == "FAIL"
                     assert result[0].resource_id == AWS_ACCOUNT_NUMBER
                     assert result[0].resource_arn == AWS_ACCOUNT_ARN
    -                assert result[0].region == AWS_REGION
    +                assert result[0].region == AWS_REGION_US_EAST_1
                     assert search(
                         "Password expiration is set greater than 90 days",
                         result[0].status_extended,
                     )
     
    -    @mock_iam
    +    @mock_aws
         def test_password_expiration_just_90(self):
             from prowler.providers.aws.services.iam.iam_service import IAM, PasswordPolicy
     
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -165,7 +132,7 @@ def test_password_expiration_just_90(self):
                     assert result[0].status == "PASS"
                     assert result[0].resource_id == AWS_ACCOUNT_NUMBER
                     assert result[0].resource_arn == AWS_ACCOUNT_ARN
    -                assert result[0].region == AWS_REGION
    +                assert result[0].region == AWS_REGION_US_EAST_1
                     assert search(
                         "Password expiration is set lower than 90 days",
                         result[0].status_extended,
    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 547f82da679..13339371fe4 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
    @@ -1,50 +1,19 @@
     from re import search
     from unittest import mock
     
    -from boto3 import client, session
    -from moto import mock_iam
    +from boto3 import client
    +from moto import mock_aws
     
    -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"
    -AWS_ACCOUNT_ARN = f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_ACCOUNT_ARN,
    +    AWS_ACCOUNT_NUMBER,
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     
     class Test_iam_password_policy_lowercase:
    -    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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=["us-east-1", "eu-west-1"],
    -            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
    -
    -    @mock_iam
    +    @mock_aws
         def test_iam_password_policy_no_lowercase_flag(self):
             iam_client = client("iam")
             # update password policy
    @@ -52,7 +21,7 @@ def test_iam_password_policy_no_lowercase_flag(self):
     
             from prowler.providers.aws.services.iam.iam_service import IAM
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -76,9 +45,9 @@ def test_iam_password_policy_no_lowercase_flag(self):
                 )
                 assert result[0].resource_id == AWS_ACCOUNT_NUMBER
                 assert result[0].resource_arn == AWS_ACCOUNT_ARN
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_US_EAST_1
     
    -    @mock_iam
    +    @mock_aws
         def test_iam_password_policy_lowercase_flag(self):
             iam_client = client("iam")
             # update password policy
    @@ -86,7 +55,7 @@ def test_iam_password_policy_lowercase_flag(self):
     
             from prowler.providers.aws.services.iam.iam_service import IAM
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -110,4 +79,4 @@ def test_iam_password_policy_lowercase_flag(self):
                 )
                 assert result[0].resource_id == AWS_ACCOUNT_NUMBER
                 assert result[0].resource_arn == AWS_ACCOUNT_ARN
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_US_EAST_1
    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 6f6a4727b70..78981529cc1 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
    @@ -1,50 +1,26 @@
     from re import search
     from unittest import mock
     
    -from boto3 import client, session
    -from moto import mock_iam
    +from boto3 import client
    +from moto import mock_aws
     
    -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"
    -AWS_ACCOUNT_ARN = f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_ACCOUNT_ARN,
    +    AWS_ACCOUNT_NUMBER,
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     
     class Test_iam_password_policy_minimum_length_14:
    -    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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=["us-east-1", "eu-west-1"],
    -            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
    -
    -    @mock_iam
    +    from tests.providers.aws.audit_info_utils import (
    +        AWS_ACCOUNT_ARN,
    +        AWS_ACCOUNT_NUMBER,
    +        AWS_REGION_US_EAST_1,
    +        set_mocked_aws_audit_info,
    +    )
    +
    +    @mock_aws
         def test_iam_password_policy_minimum_length_equal_14(self):
             iam_client = client("iam")
             # update password policy
    @@ -52,7 +28,7 @@ def test_iam_password_policy_minimum_length_equal_14(self):
     
             from prowler.providers.aws.services.iam.iam_service import IAM
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -76,9 +52,9 @@ def test_iam_password_policy_minimum_length_equal_14(self):
                 )
                 assert result[0].resource_id == AWS_ACCOUNT_NUMBER
                 assert result[0].resource_arn == AWS_ACCOUNT_ARN
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_US_EAST_1
     
    -    @mock_iam
    +    @mock_aws
         def test_iam_password_policy_minimum_length_greater_14(self):
             iam_client = client("iam")
             # update password policy
    @@ -86,7 +62,7 @@ def test_iam_password_policy_minimum_length_greater_14(self):
     
             from prowler.providers.aws.services.iam.iam_service import IAM
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -110,9 +86,9 @@ def test_iam_password_policy_minimum_length_greater_14(self):
                 )
                 assert result[0].resource_id == AWS_ACCOUNT_NUMBER
                 assert result[0].resource_arn == AWS_ACCOUNT_ARN
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_US_EAST_1
     
    -    @mock_iam
    +    @mock_aws
         def test_iam_password_policy_minimum_length_less_14(self):
             iam_client = client("iam")
             # update password policy
    @@ -120,7 +96,7 @@ def test_iam_password_policy_minimum_length_less_14(self):
     
             from prowler.providers.aws.services.iam.iam_service import IAM
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -144,4 +120,4 @@ def test_iam_password_policy_minimum_length_less_14(self):
                 )
                 assert result[0].resource_id == AWS_ACCOUNT_NUMBER
                 assert result[0].resource_arn == AWS_ACCOUNT_ARN
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_US_EAST_1
    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 2b3b1770a50..dc164ce983a 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
    @@ -1,50 +1,26 @@
     from re import search
     from unittest import mock
     
    -from boto3 import client, session
    -from moto import mock_iam
    +from boto3 import client
    +from moto import mock_aws
     
    -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"
    -AWS_ACCOUNT_ARN = f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_ACCOUNT_ARN,
    +    AWS_ACCOUNT_NUMBER,
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     
     class Test_iam_password_policy_number:
    -    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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=["us-east-1", "eu-west-1"],
    -            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
    -
    -    @mock_iam
    +    from tests.providers.aws.audit_info_utils import (
    +        AWS_ACCOUNT_ARN,
    +        AWS_ACCOUNT_NUMBER,
    +        AWS_REGION_US_EAST_1,
    +        set_mocked_aws_audit_info,
    +    )
    +
    +    @mock_aws
         def test_iam_password_policy_no_number_flag(self):
             iam_client = client("iam")
             # update password policy
    @@ -52,7 +28,7 @@ def test_iam_password_policy_no_number_flag(self):
     
             from prowler.providers.aws.services.iam.iam_service import IAM
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -76,9 +52,9 @@ def test_iam_password_policy_no_number_flag(self):
                 )
                 assert result[0].resource_id == AWS_ACCOUNT_NUMBER
                 assert result[0].resource_arn == AWS_ACCOUNT_ARN
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_US_EAST_1
     
    -    @mock_iam
    +    @mock_aws
         def test_iam_password_policy_number_flag(self):
             iam_client = client("iam")
             # update password policy
    @@ -86,7 +62,7 @@ def test_iam_password_policy_number_flag(self):
     
             from prowler.providers.aws.services.iam.iam_service import IAM
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -110,4 +86,4 @@ def test_iam_password_policy_number_flag(self):
                 )
                 assert result[0].resource_id == AWS_ACCOUNT_NUMBER
                 assert result[0].resource_arn == AWS_ACCOUNT_ARN
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_US_EAST_1
    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 33bc631a2ef..980141c3437 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
    @@ -1,55 +1,31 @@
     from unittest import mock
     
    -from boto3 import client, session
    -from moto import mock_iam
    +from boto3 import client
    +from moto import mock_aws
     
    -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"
    -AWS_ACCOUNT_ARN = f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_ACCOUNT_ARN,
    +    AWS_ACCOUNT_NUMBER,
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     
     class Test_iam_password_policy_reuse_24:
    -    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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=["us-east-1", "eu-west-1"],
    -            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
    +    from tests.providers.aws.audit_info_utils import (
    +        AWS_ACCOUNT_ARN,
    +        AWS_ACCOUNT_NUMBER,
    +        AWS_REGION_US_EAST_1,
    +        set_mocked_aws_audit_info,
    +    )
     
    -    @mock_iam
    +    @mock_aws
         def test_iam_password_policy_reuse_prevention_equal_24(self):
             iam_client = client("iam")
             # update password policy
             iam_client.update_account_password_policy(PasswordReusePrevention=24)
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
             from prowler.providers.aws.services.iam.iam_service import IAM
     
             with mock.patch(
    @@ -74,15 +50,15 @@ def test_iam_password_policy_reuse_prevention_equal_24(self):
                 )
                 assert result[0].resource_id == AWS_ACCOUNT_NUMBER
                 assert result[0].resource_arn == AWS_ACCOUNT_ARN
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_US_EAST_1
     
    -    @mock_iam
    +    @mock_aws
         def test_iam_password_policy_reuse_prevention_less_24(self):
             iam_client = client("iam")
             # update password policy
             iam_client.update_account_password_policy(PasswordReusePrevention=20)
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
             from prowler.providers.aws.services.iam.iam_service import IAM
     
             with mock.patch(
    @@ -107,4 +83,4 @@ def test_iam_password_policy_reuse_prevention_less_24(self):
                 )
                 assert result[0].resource_id == AWS_ACCOUNT_NUMBER
                 assert result[0].resource_arn == AWS_ACCOUNT_ARN
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_US_EAST_1
    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 b652ab6ff72..9328dac94df 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
    @@ -1,50 +1,26 @@
     from re import search
     from unittest import mock
     
    -from boto3 import client, session
    -from moto import mock_iam
    +from boto3 import client
    +from moto import mock_aws
     
    -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"
    -AWS_ACCOUNT_ARN = f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_ACCOUNT_ARN,
    +    AWS_ACCOUNT_NUMBER,
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     
     class Test_iam_password_policy_symbol:
    -    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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=["us-east-1", "eu-west-1"],
    -            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
    -
    -    @mock_iam
    +    from tests.providers.aws.audit_info_utils import (
    +        AWS_ACCOUNT_ARN,
    +        AWS_ACCOUNT_NUMBER,
    +        AWS_REGION_US_EAST_1,
    +        set_mocked_aws_audit_info,
    +    )
    +
    +    @mock_aws
         def test_iam_password_policy_no_symbol_flag(self):
             iam_client = client("iam")
             # update password policy
    @@ -52,7 +28,7 @@ def test_iam_password_policy_no_symbol_flag(self):
     
             from prowler.providers.aws.services.iam.iam_service import IAM
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -76,9 +52,9 @@ def test_iam_password_policy_no_symbol_flag(self):
                 )
                 assert result[0].resource_id == AWS_ACCOUNT_NUMBER
                 assert result[0].resource_arn == AWS_ACCOUNT_ARN
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_US_EAST_1
     
    -    @mock_iam
    +    @mock_aws
         def test_iam_password_policy_symbol_flag(self):
             iam_client = client("iam")
             # update password policy
    @@ -86,7 +62,7 @@ def test_iam_password_policy_symbol_flag(self):
     
             from prowler.providers.aws.services.iam.iam_service import IAM
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -110,4 +86,4 @@ def test_iam_password_policy_symbol_flag(self):
                 )
                 assert result[0].resource_id == AWS_ACCOUNT_NUMBER
                 assert result[0].resource_arn == AWS_ACCOUNT_ARN
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_US_EAST_1
    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 767c46e428c..19de44cf6a7 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
    @@ -1,55 +1,31 @@
     from unittest import mock
     
    -from boto3 import client, session
    -from moto import mock_iam
    +from boto3 import client
    +from moto import mock_aws
     
    -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"
    -AWS_ACCOUNT_ARN = f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_ACCOUNT_ARN,
    +    AWS_ACCOUNT_NUMBER,
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     
     class Test_iam_password_policy_uppercase:
    -    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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=["us-east-1", "eu-west-1"],
    -            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
    +    from tests.providers.aws.audit_info_utils import (
    +        AWS_ACCOUNT_ARN,
    +        AWS_ACCOUNT_NUMBER,
    +        AWS_REGION_US_EAST_1,
    +        set_mocked_aws_audit_info,
    +    )
     
    -    @mock_iam
    +    @mock_aws
         def test_iam_password_policy_no_uppercase_flag(self):
             iam_client = client("iam")
             # update password policy
             iam_client.update_account_password_policy(RequireUppercaseCharacters=False)
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
             from prowler.providers.aws.services.iam.iam_service import IAM
     
             with mock.patch(
    @@ -74,15 +50,15 @@ def test_iam_password_policy_no_uppercase_flag(self):
                 )
                 assert result[0].resource_id == AWS_ACCOUNT_NUMBER
                 assert result[0].resource_arn == AWS_ACCOUNT_ARN
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_US_EAST_1
     
    -    @mock_iam
    +    @mock_aws
         def test_iam_password_policy_uppercase_flag(self):
             iam_client = client("iam")
             # update password policy
             iam_client.update_account_password_policy(RequireUppercaseCharacters=True)
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
             from prowler.providers.aws.services.iam.iam_service import IAM
     
             with mock.patch(
    @@ -107,4 +83,4 @@ def test_iam_password_policy_uppercase_flag(self):
                 )
                 assert result[0].resource_id == AWS_ACCOUNT_NUMBER
                 assert result[0].resource_arn == AWS_ACCOUNT_ARN
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_US_EAST_1
    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 1b32aabd07d..5d5c9d20569 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
    @@ -2,14 +2,14 @@
     from re import search
     from unittest import mock
     
    -from boto3 import client, session
    -from moto import mock_iam
    +from boto3 import client
    +from moto import mock_aws
     
    -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"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_ACCOUNT_NUMBER,
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     # Keep this up-to-date with the check's actions that allows for privilege escalation
     privilege_escalation_policies_combination = {
    @@ -84,40 +84,16 @@
     
     
     class Test_iam_policy_allows_privilege_escalation:
    -    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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=["us-east-1", "eu-west-1"],
    -            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
    -
    -    # @mock_iam
    +    from tests.providers.aws.audit_info_utils import (
    +        AWS_ACCOUNT_ARN,
    +        AWS_ACCOUNT_NUMBER,
    +        AWS_REGION_US_EAST_1,
    +        set_mocked_aws_audit_info,
    +    )
    +
    +    # @mock_aws
         # def test_iam_policy_allows_privilege_escalation_sts(self):
    -    #     iam_client = client("iam", region_name=AWS_REGION)
    +    #     iam_client = client("iam", region_name=AWS_REGION_US_EAST_1)
         #     policy_name = "policy1"
         #     policy_document = {
         #         "Version": "2012-10-17",
    @@ -128,10 +104,8 @@ def set_mocked_audit_info(self):
         #     policy_arn = iam_client.create_policy(
         #         PolicyName=policy_name, PolicyDocument=dumps(policy_document)
         #     )["Policy"]["Arn"]
    -
    -    #     current_audit_info = self.set_mocked_audit_info()
    +    #     set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
         #     from prowler.providers.aws.services.iam.iam_service import IAM
    -
         #     with mock.patch(
         #         "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
         #         new=current_audit_info,
    @@ -143,7 +117,6 @@ def set_mocked_audit_info(self):
         #         from prowler.providers.aws.services.iam.iam_policy_allows_privilege_escalation.iam_policy_allows_privilege_escalation import (
         #             iam_policy_allows_privilege_escalation,
         #         )
    -
         #         check = iam_policy_allows_privilege_escalation()
         #         result = check.execute()
         #         assert len(result) == 1
    @@ -155,9 +128,9 @@ def set_mocked_audit_info(self):
         #         assert result[0].resource_id == policy_name
         #         assert result[0].resource_arn == policy_arn
     
    -    @mock_iam
    +    @mock_aws
         def test_iam_policy_not_allows_privilege_escalation(self):
    -        iam_client = client("iam", region_name=AWS_REGION)
    +        iam_client = client("iam", region_name=AWS_REGION_US_EAST_1)
             policy_name = "policy1"
             policy_document = {
                 "Version": "2012-10-17",
    @@ -171,7 +144,7 @@ def test_iam_policy_not_allows_privilege_escalation(self):
                 PolicyName=policy_name, PolicyDocument=dumps(policy_document)
             )["Policy"]["Arn"]
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
             from prowler.providers.aws.services.iam.iam_service import IAM
     
             with mock.patch(
    @@ -196,12 +169,12 @@ def test_iam_policy_not_allows_privilege_escalation(self):
                 )
                 assert result[0].resource_id == policy_name
                 assert result[0].resource_arn == policy_arn
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_US_EAST_1
                 assert result[0].resource_tags == []
     
    -    @mock_iam
    +    @mock_aws
         def test_iam_policy_not_allows_privilege_escalation_glue_GetDevEndpoints(self):
    -        iam_client = client("iam", region_name=AWS_REGION)
    +        iam_client = client("iam", region_name=AWS_REGION_US_EAST_1)
             policy_name = "policy1"
             policy_document = {
                 "Version": "2012-10-17",
    @@ -219,7 +192,7 @@ def test_iam_policy_not_allows_privilege_escalation_glue_GetDevEndpoints(self):
                 PolicyName=policy_name, PolicyDocument=dumps(policy_document)
             )["Policy"]["Arn"]
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
             from prowler.providers.aws.services.iam.iam_service import IAM
     
             with mock.patch(
    @@ -244,12 +217,12 @@ def test_iam_policy_not_allows_privilege_escalation_glue_GetDevEndpoints(self):
                 )
                 assert result[0].resource_id == policy_name
                 assert result[0].resource_arn == policy_arn
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_US_EAST_1
                 assert result[0].resource_tags == []
     
    -    @mock_iam
    +    @mock_aws
         def test_iam_policy_not_allows_privilege_escalation_dynamodb_PutItem(self):
    -        iam_client = client("iam", region_name=AWS_REGION)
    +        iam_client = client("iam", region_name=AWS_REGION_US_EAST_1)
             policy_name = "policy1"
             policy_document = {
                 "Version": "2012-10-17",
    @@ -278,7 +251,7 @@ def test_iam_policy_not_allows_privilege_escalation_dynamodb_PutItem(self):
                 PolicyName=policy_name, PolicyDocument=dumps(policy_document)
             )["Policy"]["Arn"]
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
             from prowler.providers.aws.services.iam.iam_service import IAM
     
             with mock.patch(
    @@ -303,14 +276,14 @@ def test_iam_policy_not_allows_privilege_escalation_dynamodb_PutItem(self):
                 )
                 assert result[0].resource_id == policy_name
                 assert result[0].resource_arn == policy_arn
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_US_EAST_1
                 assert result[0].resource_tags == []
     
    -    @mock_iam
    +    @mock_aws
         def test_iam_policy_allows_privilege_escalation_iam_all_and_ec2_RunInstances(
             self,
         ):
    -        iam_client = client("iam", region_name=AWS_REGION)
    +        iam_client = client("iam", region_name=AWS_REGION_US_EAST_1)
             policy_name = "policy1"
             policy_document = {
                 "Version": "2012-10-17",
    @@ -333,7 +306,7 @@ def test_iam_policy_allows_privilege_escalation_iam_all_and_ec2_RunInstances(
                 PolicyName=policy_name, PolicyDocument=dumps(policy_document)
             )["Policy"]["Arn"]
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
             from prowler.providers.aws.services.iam.iam_service import IAM
     
             with mock.patch(
    @@ -354,7 +327,7 @@ def test_iam_policy_allows_privilege_escalation_iam_all_and_ec2_RunInstances(
                 assert result[0].status == "FAIL"
                 assert result[0].resource_id == policy_name
                 assert result[0].resource_arn == policy_arn
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_US_EAST_1
                 assert result[0].resource_tags == []
     
                 assert search(
    @@ -364,11 +337,11 @@ def test_iam_policy_allows_privilege_escalation_iam_all_and_ec2_RunInstances(
                 assert search("iam:PassRole", result[0].status_extended)
                 assert search("ec2:RunInstances", result[0].status_extended)
     
    -    @mock_iam
    +    @mock_aws
         def test_iam_policy_allows_privilege_escalation_iam_PassRole(
             self,
         ):
    -        iam_client = client("iam", region_name=AWS_REGION)
    +        iam_client = client("iam", region_name=AWS_REGION_US_EAST_1)
             policy_name = "policy1"
             policy_document = {
                 "Version": "2012-10-17",
    @@ -384,7 +357,7 @@ def test_iam_policy_allows_privilege_escalation_iam_PassRole(
                 PolicyName=policy_name, PolicyDocument=dumps(policy_document)
             )["Policy"]["Arn"]
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
             from prowler.providers.aws.services.iam.iam_service import IAM
     
             with mock.patch(
    @@ -405,7 +378,7 @@ def test_iam_policy_allows_privilege_escalation_iam_PassRole(
                 assert result[0].status == "FAIL"
                 assert result[0].resource_id == policy_name
                 assert result[0].resource_arn == policy_arn
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_US_EAST_1
                 assert result[0].resource_tags == []
     
                 assert search(
    @@ -414,11 +387,11 @@ def test_iam_policy_allows_privilege_escalation_iam_PassRole(
                 )
                 assert search("iam:PassRole", result[0].status_extended)
     
    -    @mock_iam
    +    @mock_aws
         def test_iam_policy_allows_privilege_escalation_two_combinations(
             self,
         ):
    -        iam_client = client("iam", region_name=AWS_REGION)
    +        iam_client = client("iam", region_name=AWS_REGION_US_EAST_1)
             policy_name = "policy1"
             policy_document = {
                 "Version": "2012-10-17",
    @@ -453,7 +426,7 @@ def test_iam_policy_allows_privilege_escalation_two_combinations(
                 PolicyName=policy_name, PolicyDocument=dumps(policy_document)
             )["Policy"]["Arn"]
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
             from prowler.providers.aws.services.iam.iam_service import IAM
     
             with mock.patch(
    @@ -474,7 +447,7 @@ def test_iam_policy_allows_privilege_escalation_two_combinations(
                 assert result[0].status == "FAIL"
                 assert result[0].resource_id == policy_name
                 assert result[0].resource_arn == policy_arn
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_US_EAST_1
                 assert result[0].resource_tags == []
     
                 assert search(
    @@ -486,11 +459,11 @@ def test_iam_policy_allows_privilege_escalation_two_combinations(
                 assert search("lambda:CreateFunction", result[0].status_extended)
                 assert search("ec2:RunInstances", result[0].status_extended)
     
    -    @mock_iam
    +    @mock_aws
         def test_iam_policy_allows_privilege_escalation_iam_PassRole_and_other_actions(
             self,
         ):
    -        iam_client = client("iam", region_name=AWS_REGION)
    +        iam_client = client("iam", region_name=AWS_REGION_US_EAST_1)
             policy_name = "policy1"
             policy_document = {
                 "Version": "2012-10-17",
    @@ -511,7 +484,7 @@ def test_iam_policy_allows_privilege_escalation_iam_PassRole_and_other_actions(
                 PolicyName=policy_name, PolicyDocument=dumps(policy_document)
             )["Policy"]["Arn"]
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
             from prowler.providers.aws.services.iam.iam_service import IAM
     
             with mock.patch(
    @@ -532,7 +505,7 @@ def test_iam_policy_allows_privilege_escalation_iam_PassRole_and_other_actions(
                 assert result[0].status == "FAIL"
                 assert result[0].resource_id == policy_name
                 assert result[0].resource_arn == policy_arn
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_US_EAST_1
                 assert result[0].resource_tags == []
     
                 assert search(
    @@ -541,12 +514,12 @@ def test_iam_policy_allows_privilege_escalation_iam_PassRole_and_other_actions(
                 )
                 assert search("iam:PassRole", result[0].status_extended)
     
    -    @mock_iam
    +    @mock_aws
         def test_iam_policy_allows_privilege_escalation_policies_combination(
             self,
         ):
    -        current_audit_info = self.set_mocked_audit_info()
    -        iam_client = client("iam", region_name=AWS_REGION)
    +        current_audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
    +        iam_client = client("iam", region_name=AWS_REGION_US_EAST_1)
             policy_name = "privileged_policy"
             for values in privilege_escalation_policies_combination.values():
                 print(list(values))
    @@ -585,7 +558,7 @@ def test_iam_policy_allows_privilege_escalation_policies_combination(
                     assert result[0].status == "FAIL"
                     assert result[0].resource_id == policy_name
                     assert result[0].resource_arn == policy_arn
    -                assert result[0].region == AWS_REGION
    +                assert result[0].region == AWS_REGION_US_EAST_1
                     assert result[0].resource_tags == []
     
                     assert search(
    @@ -600,12 +573,12 @@ def test_iam_policy_allows_privilege_escalation_policies_combination(
                     # Delete each IAM policy after the test
                     iam_client.delete_policy(PolicyArn=policy_arn)
     
    -    @mock_iam
    +    @mock_aws
         def test_iam_policy_allows_privilege_escalation_two_policies_one_good_one_bad(
             self,
         ):
    -        current_audit_info = self.set_mocked_audit_info()
    -        iam_client = client("iam", region_name=AWS_REGION)
    +        current_audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
    +        iam_client = client("iam", region_name=AWS_REGION_US_EAST_1)
             policy_name_1 = "privileged_policy_1"
             policy_document_1 = {
                 "Version": "2012-10-17",
    @@ -672,7 +645,7 @@ def test_iam_policy_allows_privilege_escalation_two_policies_one_good_one_bad(
                         assert finding.status == "PASS"
                         assert finding.resource_id == policy_name_1
                         assert finding.resource_arn == policy_arn_1
    -                    assert finding.region == AWS_REGION
    +                    assert finding.region == AWS_REGION_US_EAST_1
                         assert finding.resource_tags == []
                         assert (
                             finding.status_extended
    @@ -683,7 +656,7 @@ def test_iam_policy_allows_privilege_escalation_two_policies_one_good_one_bad(
                         assert finding.status == "FAIL"
                         assert finding.resource_id == policy_name_2
                         assert finding.resource_arn == policy_arn_2
    -                    assert finding.region == AWS_REGION
    +                    assert finding.region == AWS_REGION_US_EAST_1
                         assert finding.resource_tags == []
                         assert search(
                             f"Custom Policy {policy_arn_2} allows privilege escalation using the following actions: ",
    @@ -693,12 +666,12 @@ def test_iam_policy_allows_privilege_escalation_two_policies_one_good_one_bad(
                         assert search("lambda:InvokeFunction", finding.status_extended)
                         assert search("lambda:CreateFunction", finding.status_extended)
     
    -    @mock_iam
    +    @mock_aws
         def test_iam_policy_allows_privilege_escalation_two_bad_policies(
             self,
         ):
    -        current_audit_info = self.set_mocked_audit_info()
    -        iam_client = client("iam", region_name=AWS_REGION)
    +        current_audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
    +        iam_client = client("iam", region_name=AWS_REGION_US_EAST_1)
             policy_name_1 = "privileged_policy_1"
             policy_document_1 = {
                 "Version": "2012-10-17",
    @@ -772,7 +745,7 @@ def test_iam_policy_allows_privilege_escalation_two_bad_policies(
                         assert finding.status == "FAIL"
                         assert finding.resource_id == policy_name_1
                         assert finding.resource_arn == policy_arn_1
    -                    assert finding.region == AWS_REGION
    +                    assert finding.region == AWS_REGION_US_EAST_1
                         assert finding.resource_tags == []
     
                         assert search(
    @@ -787,7 +760,7 @@ def test_iam_policy_allows_privilege_escalation_two_bad_policies(
                         assert finding.status == "FAIL"
                         assert finding.resource_id == policy_name_2
                         assert finding.resource_arn == policy_arn_2
    -                    assert finding.region == AWS_REGION
    +                    assert finding.region == AWS_REGION_US_EAST_1
                         assert finding.resource_tags == []
     
                         assert search(
    @@ -798,12 +771,12 @@ def test_iam_policy_allows_privilege_escalation_two_bad_policies(
                         assert search("lambda:InvokeFunction", finding.status_extended)
                         assert search("lambda:CreateFunction", finding.status_extended)
     
    -    @mock_iam
    +    @mock_aws
         def test_iam_policy_allows_privilege_escalation_over_permissive_policy(
             self,
         ):
    -        current_audit_info = self.set_mocked_audit_info()
    -        iam_client = client("iam", region_name=AWS_REGION)
    +        current_audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
    +        iam_client = client("iam", region_name=AWS_REGION_US_EAST_1)
             policy_name_1 = "privileged_policy_1"
             policy_document_1 = {
                 "Version": "2012-10-17",
    @@ -853,7 +826,7 @@ def test_iam_policy_allows_privilege_escalation_over_permissive_policy(
                         assert finding.status == "FAIL"
                         assert finding.resource_id == policy_name_1
                         assert finding.resource_arn == policy_arn_1
    -                    assert finding.region == AWS_REGION
    +                    assert finding.region == AWS_REGION_US_EAST_1
                         assert finding.resource_tags == []
     
                         assert search(
    @@ -864,12 +837,12 @@ def test_iam_policy_allows_privilege_escalation_over_permissive_policy(
                         assert search("iam:PassRole", finding.status_extended)
                         assert search("ec2:RunInstances", finding.status_extended)
     
    -    @mock_iam
    +    @mock_aws
         def test_iam_policy_allows_privilege_escalation_administrator_policy(
             self,
         ):
    -        current_audit_info = self.set_mocked_audit_info()
    -        iam_client = client("iam", region_name=AWS_REGION)
    +        current_audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
    +        iam_client = client("iam", region_name=AWS_REGION_US_EAST_1)
             policy_name_1 = "privileged_policy_1"
             policy_document_1 = {
                 "Version": "2012-10-17",
    @@ -909,7 +882,7 @@ def test_iam_policy_allows_privilege_escalation_administrator_policy(
                         assert finding.status == "FAIL"
                         assert finding.resource_id == policy_name_1
                         assert finding.resource_arn == policy_arn_1
    -                    assert finding.region == AWS_REGION
    +                    assert finding.region == AWS_REGION_US_EAST_1
                         assert finding.resource_tags == []
                         assert search(
                             f"Custom Policy {policy_arn_1} allows privilege escalation using the following actions:",
    @@ -922,12 +895,12 @@ def test_iam_policy_allows_privilege_escalation_administrator_policy(
                             ]:
                                 assert search(permission, finding.status_extended)
     
    -    @mock_iam
    +    @mock_aws
         def test_iam_policy_allows_privilege_escalation_iam_put(
             self,
         ):
    -        current_audit_info = self.set_mocked_audit_info()
    -        iam_client = client("iam", region_name=AWS_REGION)
    +        current_audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
    +        iam_client = client("iam", region_name=AWS_REGION_US_EAST_1)
             policy_name_1 = "privileged_policy_1"
             policy_document_1 = {
                 "Version": "2012-10-17",
    @@ -967,7 +940,7 @@ def test_iam_policy_allows_privilege_escalation_iam_put(
                         assert finding.status == "FAIL"
                         assert finding.resource_id == policy_name_1
                         assert finding.resource_arn == policy_arn_1
    -                    assert finding.region == AWS_REGION
    +                    assert finding.region == AWS_REGION_US_EAST_1
                         assert finding.resource_tags == []
                         assert search(
                             f"Custom Policy {policy_arn_1} allows privilege escalation using the following actions:",
    @@ -975,12 +948,12 @@ def test_iam_policy_allows_privilege_escalation_iam_put(
                         )
                         assert search("iam:Put*", finding.status_extended)
     
    -    @mock_iam
    +    @mock_aws
         def test_iam_policy_allows_privilege_escalation_iam_wildcard(
             self,
         ):
    -        current_audit_info = self.set_mocked_audit_info()
    -        iam_client = client("iam", region_name=AWS_REGION)
    +        current_audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
    +        iam_client = client("iam", region_name=AWS_REGION_US_EAST_1)
             policy_name_1 = "privileged_policy_1"
             policy_document_1 = {
                 "Version": "2012-10-17",
    @@ -1020,7 +993,7 @@ def test_iam_policy_allows_privilege_escalation_iam_wildcard(
                         assert finding.status == "FAIL"
                         assert finding.resource_id == policy_name_1
                         assert finding.resource_arn == policy_arn_1
    -                    assert finding.region == AWS_REGION
    +                    assert finding.region == AWS_REGION_US_EAST_1
                         assert finding.resource_tags == []
                         assert search(
                             f"Custom Policy {policy_arn_1} allows privilege escalation using the following actions:",
    @@ -1028,12 +1001,12 @@ def test_iam_policy_allows_privilege_escalation_iam_wildcard(
                         )
                         assert search("iam:*", finding.status_extended)
     
    -    @mock_iam
    +    @mock_aws
         def test_iam_policy_not_allows_privilege_escalation_custom_policy(
             self,
         ):
    -        current_audit_info = self.set_mocked_audit_info()
    -        iam_client = client("iam", region_name=AWS_REGION)
    +        current_audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
    +        iam_client = client("iam", region_name=AWS_REGION_US_EAST_1)
             policy_name_1 = "privileged_policy_1"
             policy_document_1 = {
                 "Version": "2012-10-17",
    @@ -1048,7 +1021,7 @@ def test_iam_policy_not_allows_privilege_escalation_custom_policy(
                         "Sid": "",
                         "Effect": "Allow",
                         "Action": "es:*",
    -                    "Resource": f"arn:aws:es:{AWS_REGION}:{AWS_ACCOUNT_NUMBER}:domain/test/*",
    +                    "Resource": f"arn:aws:es:{AWS_REGION_US_EAST_1}:{AWS_ACCOUNT_NUMBER}:domain/test/*",
                     },
                 ],
             }
    @@ -1079,7 +1052,7 @@ def test_iam_policy_not_allows_privilege_escalation_custom_policy(
                         assert finding.status == "PASS"
                         assert finding.resource_id == policy_name_1
                         assert finding.resource_arn == policy_arn_1
    -                    assert finding.region == AWS_REGION
    +                    assert finding.region == AWS_REGION_US_EAST_1
                         assert finding.resource_tags == []
                         assert (
                             finding.status_extended
    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 ef45039a6b7..6da58e95e5e 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
    @@ -1,49 +1,18 @@
     from json import dumps
     from unittest import mock
     
    -from boto3 import client, session
    -from moto import mock_iam
    +from boto3 import client
    +from moto import mock_aws
     
    -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"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_ACCOUNT_NUMBER,
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     
     class Test_iam_policy_attached_only_to_group_or_roles:
    -    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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=[AWS_REGION],
    -            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
    -
    -    @mock_iam
    +    @mock_aws
         def test_iam_user_attached_policy(self):
             result = []
             iam_client = client("iam")
    @@ -61,7 +30,7 @@ def test_iam_user_attached_policy(self):
             )["Policy"]["Arn"]
             iam_client.attach_user_policy(UserName=user, PolicyArn=policyArn)
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
             from prowler.providers.aws.services.iam.iam_service import IAM
     
             with mock.patch(
    @@ -82,14 +51,14 @@ def test_iam_user_attached_policy(self):
                     result[0].status_extended
                     == f"User {user} has the policy {policy_name} attached."
                 )
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_US_EAST_1
                 assert result[0].resource_id == f"{user}/{policy_name}"
                 assert (
                     result[0].resource_arn
                     == f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:user/{user}"
                 )
     
    -    @mock_iam
    +    @mock_aws
         def test_iam_user_attached_and_inline_policy(self):
             result = []
             iam_client = client("iam")
    @@ -110,7 +79,7 @@ def test_iam_user_attached_and_inline_policy(self):
             )["Policy"]["Arn"]
             iam_client.attach_user_policy(UserName=user, PolicyArn=policyArn)
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
             from prowler.providers.aws.services.iam.iam_service import IAM
     
             with mock.patch(
    @@ -132,7 +101,7 @@ def test_iam_user_attached_and_inline_policy(self):
                     result[0].status_extended
                     == f"User {user} has the policy {policyName} attached."
                 )
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_US_EAST_1
                 assert result[0].resource_id == f"{user}/{policyName}"
     
                 assert result[0].status == "FAIL"
    @@ -140,14 +109,14 @@ def test_iam_user_attached_and_inline_policy(self):
                     result[0].status_extended
                     == f"User {user} has the policy {policyName} attached."
                 )
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_US_EAST_1
                 assert result[0].resource_id == f"{user}/{policyName}"
                 assert (
                     result[0].resource_arn
                     == f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:user/{user}"
                 )
     
    -    @mock_iam
    +    @mock_aws
         def test_iam_user_inline_policy(self):
             result = []
             iam_client = client("iam")
    @@ -164,7 +133,7 @@ def test_iam_user_inline_policy(self):
                 UserName=user, PolicyName=policyName, PolicyDocument=dumps(policyDocument)
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
             from prowler.providers.aws.services.iam.iam_service import IAM
     
             with mock.patch(
    @@ -185,21 +154,21 @@ def test_iam_user_inline_policy(self):
                     result[0].status_extended
                     == f"User {user} has the inline policy {policyName} attached."
                 )
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_US_EAST_1
                 assert result[0].resource_id == f"{user}/{policyName}"
                 assert (
                     result[0].resource_arn
                     == f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:user/{user}"
                 )
     
    -    @mock_iam
    +    @mock_aws
         def test_iam_user_no_policies(self):
             result = []
             iam_client = client("iam")
             user = "test_no_policies"
             iam_client.create_user(UserName=user)
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
             from prowler.providers.aws.services.iam.iam_service import IAM
     
             with mock.patch(
    @@ -220,7 +189,7 @@ def test_iam_user_no_policies(self):
                     result[0].status_extended
                     == f"User {user} has no inline or attached policies."
                 )
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_US_EAST_1
                 assert result[0].resource_id == user
                 assert (
                     result[0].resource_arn
    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 8d7515c171c..1781f1f046f 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
    @@ -1,49 +1,20 @@
     from json import dumps
     from unittest import mock
     
    -from boto3 import client, session
    -from moto import mock_iam
    +from boto3 import client
    +from moto import mock_aws
     
    -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
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     
     class Test_iam_policy_no_full_access_to_cloudtrail:
    -    # 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=None,
    -            audited_account_arn=None,
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region="us-east-1",
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=None,
    -            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
    -
    -    @mock_iam
    +    @mock_aws
         def test_policy_full_access_to_cloudtrail(self):
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
             iam_client = client("iam")
             policy_name = "policy_cloudtrail_full"
             policy_document_full_access = {
    @@ -80,9 +51,9 @@ def test_policy_full_access_to_cloudtrail(self):
                     assert result[0].resource_arn == arn
                     assert result[0].region == "us-east-1"
     
    -    @mock_iam
    +    @mock_aws
         def test_policy_no_full_access_to_cloudtrail(self):
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
             iam_client = client("iam")
             policy_name = "policy_no_cloudtrail_full"
             policy_document_full_access = {
    @@ -119,9 +90,9 @@ def test_policy_no_full_access_to_cloudtrail(self):
                     assert result[0].resource_arn == arn
                     assert result[0].region == "us-east-1"
     
    -    @mock_iam
    +    @mock_aws
         def test_policy_mixed(self):
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
             iam_client = client("iam")
             policy_name = "policy_mixed"
             policy_document_full_access = {
    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 80fdb406d79..425038233e8 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
    @@ -1,49 +1,20 @@
     from json import dumps
     from unittest import mock
     
    -from boto3 import client, session
    -from moto import mock_iam
    +from boto3 import client
    +from moto import mock_aws
     
    -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
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     
     class Test_iam_policy_no_full_access_to_kms:
    -    # 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=None,
    -            audited_account_arn=None,
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region="us-east-1",
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=None,
    -            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
    -
    -    @mock_iam
    +    @mock_aws
         def test_policy_full_access_to_kms(self):
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
             iam_client = client("iam")
             policy_name = "policy_kms_full"
             policy_document_full_access = {
    @@ -80,9 +51,9 @@ def test_policy_full_access_to_kms(self):
                     assert result[0].resource_arn == arn
                     assert result[0].region == "us-east-1"
     
    -    @mock_iam
    +    @mock_aws
         def test_policy_no_full_access_to_kms(self):
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
             iam_client = client("iam")
             policy_name = "policy_no_kms_full"
             policy_document_full_access = {
    @@ -119,9 +90,9 @@ def test_policy_no_full_access_to_kms(self):
                     assert result[0].resource_arn == arn
                     assert result[0].region == "us-east-1"
     
    -    @mock_iam
    +    @mock_aws
         def test_policy_mixed(self):
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
             iam_client = client("iam")
             policy_name = "policy_mixed"
             policy_document_full_access = {
    diff --git a/tests/providers/aws/services/iam/iam_role_administratoraccess_policy/iam_role_administratoraccess_policy_test.py b/tests/providers/aws/services/iam/iam_role_administratoraccess_policy/iam_role_administratoraccess_policy_test.py
    index 2ccf1086e50..12936c0198d 100644
    --- a/tests/providers/aws/services/iam/iam_role_administratoraccess_policy/iam_role_administratoraccess_policy_test.py
    +++ b/tests/providers/aws/services/iam/iam_role_administratoraccess_policy/iam_role_administratoraccess_policy_test.py
    @@ -1,54 +1,25 @@
     from json import dumps
     from unittest import mock
     
    -from boto3 import client, session
    -from moto import mock_iam
    +from boto3 import client
    +from moto import mock_aws
     
    -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
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     AWS_REGION = "us-east-1"
     AWS_ACCOUNT_ID = "123456789012"
     
     
     class Test_iam_role_administratoraccess_policy:
    -    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_ID,
    -            audited_account_arn=f"arn:aws:iam::{AWS_ACCOUNT_ID}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=["us-east-1", "eu-west-1"],
    -            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
    -
    -    @mock_iam
    +    @mock_aws(config={"iam": {"load_aws_managed_policies": True}})
         def test_no_roles(self):
             from prowler.providers.aws.services.iam.iam_service import IAM
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
                 new=current_audit_info,
    @@ -65,7 +36,7 @@ def test_no_roles(self):
                 result = check.execute()
                 assert len(result) == 0
     
    -    @mock_iam
    +    @mock_aws(config={"iam": {"load_aws_managed_policies": True}})
         def test_role_without_administratoraccess_policy(self):
             iam = client("iam")
             role_name = "test"
    @@ -83,7 +54,7 @@ def test_role_without_administratoraccess_policy(self):
                 AssumeRolePolicyDocument=dumps(assume_role_policy_document),
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
             from prowler.providers.aws.services.iam.iam_service import IAM
     
             with mock.patch(
    @@ -110,7 +81,7 @@ def test_role_without_administratoraccess_policy(self):
                 assert result[0].resource_arn == response["Role"]["Arn"]
                 assert result[0].resource_tags == []
     
    -    @mock_iam
    +    @mock_aws(config={"iam": {"load_aws_managed_policies": True}})
         def test_role_with_securityaudit_policy(self):
             iam = client("iam")
             role_name = "test"
    @@ -132,7 +103,7 @@ def test_role_with_securityaudit_policy(self):
                 PolicyArn="arn:aws:iam::aws:policy/SecurityAudit",
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
             from prowler.providers.aws.services.iam.iam_service import IAM
     
             with mock.patch(
    @@ -159,7 +130,7 @@ def test_role_with_securityaudit_policy(self):
                 assert result[0].resource_arn == response["Role"]["Arn"]
                 assert result[0].resource_tags == []
     
    -    @mock_iam
    +    @mock_aws(config={"iam": {"load_aws_managed_policies": True}})
         def test_role_with_administratoraccess_policy(self):
             iam = client("iam")
             role_name = "test"
    @@ -181,7 +152,7 @@ def test_role_with_administratoraccess_policy(self):
                 PolicyArn="arn:aws:iam::aws:policy/AdministratorAccess",
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
             from prowler.providers.aws.services.iam.iam_service import IAM
     
             with mock.patch(
    @@ -208,7 +179,7 @@ def test_role_with_administratoraccess_policy(self):
                 assert result[0].resource_arn == response["Role"]["Arn"]
                 assert result[0].resource_tags == []
     
    -    @mock_iam
    +    @mock_aws(config={"iam": {"load_aws_managed_policies": True}})
         def test_asterisk_principal_role_with_administratoraccess_policy(self):
             iam = client("iam")
             role_name = "test"
    @@ -230,7 +201,7 @@ def test_asterisk_principal_role_with_administratoraccess_policy(self):
                 PolicyArn="arn:aws:iam::aws:policy/AdministratorAccess",
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
             from prowler.providers.aws.services.iam.iam_service import IAM
     
             with mock.patch(
    @@ -257,7 +228,7 @@ def test_asterisk_principal_role_with_administratoraccess_policy(self):
                 assert result[0].resource_arn == response["Role"]["Arn"]
                 assert result[0].resource_tags == []
     
    -    @mock_iam
    +    @mock_aws(config={"iam": {"load_aws_managed_policies": True}})
         def test_only_aws_service_linked_roles(self):
             iam_client = mock.MagicMock
             iam_client.roles = []
    @@ -279,7 +250,7 @@ def test_only_aws_service_linked_roles(self):
                 )
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_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 4d4da908011..cc2dd250c81 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
    @@ -1,54 +1,25 @@
     from json import dumps
     from unittest import mock
     
    -from boto3 import client, session
    -from moto import mock_iam
    +from boto3 import client
    +from moto import mock_aws
     
    -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
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     AWS_REGION = "us-east-1"
     AWS_ACCOUNT_ID = "123456789012"
     
     
     class Test_iam_role_cross_account_readonlyaccess_policy:
    -    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_ID,
    -            audited_account_arn=f"arn:aws:iam::{AWS_ACCOUNT_ID}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=["us-east-1", "eu-west-1"],
    -            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
    -
    -    @mock_iam
    +    @mock_aws(config={"iam": {"load_aws_managed_policies": True}})
         def test_no_roles(self):
             from prowler.providers.aws.services.iam.iam_service import IAM
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
                 new=current_audit_info,
    @@ -65,7 +36,7 @@ def test_no_roles(self):
                 result = check.execute()
                 assert len(result) == 0
     
    -    @mock_iam
    +    @mock_aws(config={"iam": {"load_aws_managed_policies": True}})
         def test_role_without_readonlyaccess_policy(self):
             iam = client("iam")
             role_name = "test"
    @@ -83,7 +54,7 @@ def test_role_without_readonlyaccess_policy(self):
                 AssumeRolePolicyDocument=dumps(assume_role_policy_document),
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
             from prowler.providers.aws.services.iam.iam_service import IAM
     
             with mock.patch(
    @@ -110,7 +81,7 @@ def test_role_without_readonlyaccess_policy(self):
                 assert result[0].resource_arn == response["Role"]["Arn"]
                 assert result[0].resource_tags == []
     
    -    @mock_iam
    +    @mock_aws(config={"iam": {"load_aws_managed_policies": True}})
         def test_internal_role_with_readonlyaccess_policy(self):
             iam = client("iam")
             role_name = "test"
    @@ -132,7 +103,7 @@ def test_internal_role_with_readonlyaccess_policy(self):
                 PolicyArn="arn:aws:iam::aws:policy/ReadOnlyAccess",
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
             from prowler.providers.aws.services.iam.iam_service import IAM
     
             with mock.patch(
    @@ -159,7 +130,7 @@ def test_internal_role_with_readonlyaccess_policy(self):
                 assert result[0].resource_arn == response["Role"]["Arn"]
                 assert result[0].resource_tags == []
     
    -    @mock_iam
    +    @mock_aws(config={"iam": {"load_aws_managed_policies": True}})
         def test_cross_account_role_with_readonlyaccess_policy(self):
             iam = client("iam")
             role_name = "test"
    @@ -181,7 +152,7 @@ def test_cross_account_role_with_readonlyaccess_policy(self):
                 PolicyArn="arn:aws:iam::aws:policy/ReadOnlyAccess",
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
             from prowler.providers.aws.services.iam.iam_service import IAM
     
             with mock.patch(
    @@ -208,7 +179,7 @@ def test_cross_account_role_with_readonlyaccess_policy(self):
                 assert result[0].resource_arn == response["Role"]["Arn"]
                 assert result[0].resource_tags == []
     
    -    @mock_iam
    +    @mock_aws(config={"iam": {"load_aws_managed_policies": True}})
         def test_asterisk_cross_account_role_with_readonlyaccess_policy(self):
             iam = client("iam")
             role_name = "test"
    @@ -230,7 +201,7 @@ def test_asterisk_cross_account_role_with_readonlyaccess_policy(self):
                 PolicyArn="arn:aws:iam::aws:policy/ReadOnlyAccess",
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
             from prowler.providers.aws.services.iam.iam_service import IAM
     
             with mock.patch(
    @@ -257,7 +228,7 @@ def test_asterisk_cross_account_role_with_readonlyaccess_policy(self):
                 assert result[0].resource_arn == response["Role"]["Arn"]
                 assert result[0].resource_tags == []
     
    -    @mock_iam
    +    @mock_aws(config={"iam": {"load_aws_managed_policies": True}})
         def test_only_aws_service_linked_roles(self):
             iam_client = mock.MagicMock
             iam_client.roles = []
    @@ -279,7 +250,7 @@ def test_only_aws_service_linked_roles(self):
                 )
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_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 bc707dc0ee4..2c8e1f3e8ba 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
    @@ -1,54 +1,25 @@
     from json import dumps
     from unittest import mock
     
    -from boto3 import client, session
    -from moto import mock_iam
    +from boto3 import client
    +from moto import mock_aws
     
    -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
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     AWS_REGION = "us-east-1"
     AWS_ACCOUNT_ID = "123456789012"
     
     
     class Test_iam_role_cross_service_confused_deputy_prevention:
    -    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_ID,
    -            audited_account_arn=f"arn:aws:iam::{AWS_ACCOUNT_ID}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=["us-east-1", "eu-west-1"],
    -            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
    -
    -    @mock_iam
    +    @mock_aws
         def test_no_roles(self):
             from prowler.providers.aws.services.iam.iam_service import IAM
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
             current_audit_info.audited_account = AWS_ACCOUNT_ID
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -66,7 +37,7 @@ def test_no_roles(self):
                 result = check.execute()
                 assert len(result) == 0
     
    -    @mock_iam
    +    @mock_aws
         def test_only_aws_service_linked_roles(self):
             iam_client = mock.MagicMock
             iam_client.roles = []
    @@ -88,7 +59,7 @@ def test_only_aws_service_linked_roles(self):
                 )
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
             current_audit_info.audited_account = AWS_ACCOUNT_ID
     
             with mock.patch(
    @@ -107,7 +78,7 @@ def test_only_aws_service_linked_roles(self):
                 result = check.execute()
                 assert len(result) == 0
     
    -    @mock_iam
    +    @mock_aws
         def test_iam_service_role_without_cross_service_confused_deputy_prevention(self):
             iam_client = client("iam", region_name=AWS_REGION)
             policy_document = {
    @@ -127,7 +98,7 @@ def test_iam_service_role_without_cross_service_confused_deputy_prevention(self)
     
             from prowler.providers.aws.services.iam.iam_service import IAM
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
             current_audit_info.audited_account = AWS_ACCOUNT_ID
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -152,7 +123,7 @@ def test_iam_service_role_without_cross_service_confused_deputy_prevention(self)
                 assert result[0].resource_id == "test"
                 assert result[0].resource_arn == response["Role"]["Arn"]
     
    -    @mock_iam
    +    @mock_aws
         def test_iam_service_role_with_cross_service_confused_deputy_prevention(self):
             iam_client = client("iam", region_name=AWS_REGION)
             policy_document = {
    @@ -175,7 +146,7 @@ def test_iam_service_role_with_cross_service_confused_deputy_prevention(self):
     
             from prowler.providers.aws.services.iam.iam_service import IAM
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
             current_audit_info.audited_account = AWS_ACCOUNT_ID
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -200,7 +171,7 @@ def test_iam_service_role_with_cross_service_confused_deputy_prevention(self):
                 assert result[0].resource_id == "test"
                 assert result[0].resource_arn == response["Role"]["Arn"]
     
    -    @mock_iam
    +    @mock_aws
         def test_iam_service_role_with_cross_service_confused_deputy_prevention_stringlike(
             self,
         ):
    @@ -225,7 +196,7 @@ def test_iam_service_role_with_cross_service_confused_deputy_prevention_stringli
     
             from prowler.providers.aws.services.iam.iam_service import IAM
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
             current_audit_info.audited_account = AWS_ACCOUNT_ID
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -250,7 +221,7 @@ def test_iam_service_role_with_cross_service_confused_deputy_prevention_stringli
                 assert result[0].resource_id == "test"
                 assert result[0].resource_arn == response["Role"]["Arn"]
     
    -    @mock_iam
    +    @mock_aws
         def test_iam_service_role_with_cross_service_confused_deputy_prevention_PrincipalAccount(
             self,
         ):
    @@ -275,7 +246,7 @@ def test_iam_service_role_with_cross_service_confused_deputy_prevention_Principa
     
             from prowler.providers.aws.services.iam.iam_service import IAM
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
             current_audit_info.audited_account = AWS_ACCOUNT_ID
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -300,7 +271,7 @@ def test_iam_service_role_with_cross_service_confused_deputy_prevention_Principa
                 assert result[0].resource_id == "test"
                 assert result[0].resource_arn == response["Role"]["Arn"]
     
    -    @mock_iam
    +    @mock_aws
         def test_iam_service_role_with_cross_service_confused_deputy_prevention_ResourceAccount(
             self,
         ):
    @@ -325,7 +296,7 @@ def test_iam_service_role_with_cross_service_confused_deputy_prevention_Resource
     
             from prowler.providers.aws.services.iam.iam_service import IAM
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
             current_audit_info.audited_account = AWS_ACCOUNT_ID
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_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 d0e69821bbb..1f2e91c1588 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
    @@ -1,48 +1,24 @@
     from re import search
     from unittest import mock
     
    -from boto3 import client, session
    -from moto import mock_iam
    +from boto3 import client
    +from moto import mock_aws
     
    -from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info
    -from prowler.providers.common.models import Audit_Metadata
    -
    -AWS_ACCOUNT_NUMBER = "123456789012"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     
     class Test_iam_root_hardware_mfa_enabled_test:
    -    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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=["us-east-1", "eu-west-1"],
    -            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
    -
    -    @mock_iam
    +    from tests.providers.aws.audit_info_utils import (
    +        AWS_ACCOUNT_ARN,
    +        AWS_ACCOUNT_NUMBER,
    +        AWS_REGION_US_EAST_1,
    +        set_mocked_aws_audit_info,
    +    )
    +
    +    @mock_aws
         def test_root_hardware_virtual_mfa_enabled(self):
             iam = client("iam")
             mfa_device_name = "mfa-test"
    @@ -50,7 +26,7 @@ def test_root_hardware_virtual_mfa_enabled(self):
     
             from prowler.providers.aws.services.iam.iam_service import IAM
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -75,7 +51,7 @@ def test_root_hardware_virtual_mfa_enabled(self):
                 )
                 assert result[0].resource_id == ""
     
    -    @mock_iam
    +    @mock_aws
         def test_root_hardware_virtual_hardware_mfa_enabled(self):
             iam = client("iam")
             mfa_device_name = "mfa-test"
    @@ -83,7 +59,7 @@ def test_root_hardware_virtual_hardware_mfa_enabled(self):
     
             from prowler.providers.aws.services.iam.iam_service import IAM
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    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 36964460e72..984fbf33e3d 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
    @@ -1,54 +1,32 @@
     from re import search
     from unittest import mock
     
    -from boto3 import client, session
    -from moto import mock_iam
    +from boto3 import client
    +from moto import mock_aws
     
    -from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info
    -from prowler.providers.common.models import Audit_Metadata
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     AWS_ACCOUNT_NUMBER = "123456789012"
     
     
     class Test_iam_root_mfa_enabled_test:
    -    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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=["us-east-1", "eu-west-1"],
    -            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
    -
    -    @mock_iam
    +    from tests.providers.aws.audit_info_utils import (
    +        AWS_ACCOUNT_ARN,
    +        AWS_ACCOUNT_NUMBER,
    +        AWS_REGION_US_EAST_1,
    +        set_mocked_aws_audit_info,
    +    )
    +
    +    @mock_aws
         def test_root_mfa_not_enabled(self):
             iam_client = client("iam")
             user = "test-user"
             iam_client.create_user(UserName=user)["User"]["Arn"]
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
             from prowler.providers.aws.services.iam.iam_service import IAM
     
             with mock.patch(
    @@ -77,13 +55,13 @@ def test_root_mfa_not_enabled(self):
                 assert result[0].resource_id == ""
                 assert result[0].resource_arn == service_client.credential_report[0]["arn"]
     
    -    @mock_iam
    +    @mock_aws
         def test_root_mfa_enabled(self):
             iam_client = client("iam")
             user = "test-user"
             iam_client.create_user(UserName=user)["User"]["Arn"]
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
             from prowler.providers.aws.services.iam.iam_service import IAM
     
             with mock.patch(
    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 5c92d109eb5..f0e7e1200a2 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
    @@ -1,49 +1,17 @@
     import datetime
     from unittest import mock
     
    -from boto3 import client, session
    -from moto import mock_iam
    +from boto3 import client
    +from moto import mock_aws
     
    -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"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     
     class Test_iam_rotate_access_key_90_days_test:
    -    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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=AWS_REGION,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=["us-east-1", "eu-west-1"],
    -            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
    -
    -    @mock_iam
    +    @mock_aws
         def test_user_no_access_keys(self):
             iam_client = client("iam")
             user = "test-user"
    @@ -51,7 +19,7 @@ def test_user_no_access_keys(self):
     
             from prowler.providers.aws.services.iam.iam_service import IAM
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -76,9 +44,9 @@ def test_user_no_access_keys(self):
                 )
                 assert result[0].resource_id == user
                 assert result[0].resource_arn == arn
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_US_EAST_1
     
    -    @mock_iam
    +    @mock_aws
         def test_user_access_key_1_not_rotated(self):
             credentials_last_rotated = (
                 datetime.datetime.now() - datetime.timedelta(days=100)
    @@ -89,7 +57,7 @@ def test_user_access_key_1_not_rotated(self):
     
             from prowler.providers.aws.services.iam.iam_service import IAM
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -117,9 +85,9 @@ def test_user_access_key_1_not_rotated(self):
                 )
                 assert result[0].resource_id == user
                 assert result[0].resource_arn == arn
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_US_EAST_1
     
    -    @mock_iam
    +    @mock_aws
         def test_user_access_key_2_not_rotated(self):
             credentials_last_rotated = (
                 datetime.datetime.now() - datetime.timedelta(days=100)
    @@ -130,7 +98,7 @@ def test_user_access_key_2_not_rotated(self):
     
             from prowler.providers.aws.services.iam.iam_service import IAM
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -158,9 +126,9 @@ def test_user_access_key_2_not_rotated(self):
                 )
                 assert result[0].resource_id == user
                 assert result[0].resource_arn == arn
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_US_EAST_1
     
    -    @mock_iam
    +    @mock_aws
         def test_user_both_access_keys_not_rotated(self):
             credentials_last_rotated = (
                 datetime.datetime.now() - datetime.timedelta(days=100)
    @@ -171,7 +139,7 @@ def test_user_both_access_keys_not_rotated(self):
     
             from prowler.providers.aws.services.iam.iam_service import IAM
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -204,7 +172,7 @@ def test_user_both_access_keys_not_rotated(self):
                 )
                 assert result[0].resource_id == user
                 assert result[0].resource_arn == arn
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_US_EAST_1
                 assert result[1].status == "FAIL"
                 assert (
                     result[1].status_extended
    @@ -212,9 +180,9 @@ def test_user_both_access_keys_not_rotated(self):
                 )
                 assert result[1].resource_id == user
                 assert result[1].resource_arn == arn
    -            assert result[1].region == AWS_REGION
    +            assert result[1].region == AWS_REGION_US_EAST_1
     
    -    @mock_iam
    +    @mock_aws
         def test_user_both_access_keys_rotated(self):
             credentials_last_rotated = (
                 datetime.datetime.now() - datetime.timedelta(days=10)
    @@ -225,7 +193,7 @@ def test_user_both_access_keys_rotated(self):
     
             from prowler.providers.aws.services.iam.iam_service import IAM
     
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -259,4 +227,4 @@ def test_user_both_access_keys_rotated(self):
                     )
                     assert result[0].resource_id == user
                     assert result[0].resource_arn == arn
    -                assert result[0].region == AWS_REGION
    +                assert result[0].region == AWS_REGION_US_EAST_1
    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 76df621be51..db21e106c93 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
    @@ -2,51 +2,20 @@
     from re import search
     from unittest import mock
     
    -from boto3 import client, session
    -from moto import mock_iam
    +from boto3 import client
    +from moto import mock_aws
     
    -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"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     
     class Test_iam_securityaudit_role_created:
    -    # 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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region="us-east-1",
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=None,
    -            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
    -
    -    @mock_iam
    +    @mock_aws(config={"iam": {"load_aws_managed_policies": True}})
         def test_securityaudit_role_created(self):
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
             iam = client("iam")
             role_name = "test_securityaudit_role_created"
             assume_role_policy_document = {
    @@ -91,9 +60,9 @@ def test_securityaudit_role_created(self):
                     assert result[0].resource_arn == "arn:aws:iam::aws:policy/SecurityAudit"
                     assert result[0].region == "us-east-1"
     
    -    @mock_iam
    +    @mock_aws(config={"iam": {"load_aws_managed_policies": True}})
         def test_no_securityaudit_role_created(self):
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_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 c8fbe0df374..d7a99804f2c 100644
    --- a/tests/providers/aws/services/iam/iam_service_test.py
    +++ b/tests/providers/aws/services/iam/iam_service_test.py
    @@ -2,16 +2,18 @@
     from uuid import uuid4
     
     import botocore
    -from boto3 import client, session
    +from boto3 import client
     from freezegun import freeze_time
     from mock import patch
    -from moto import mock_iam
    +from moto import mock_aws
     
    -from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info
     from prowler.providers.aws.services.iam.iam_service import IAM, Policy, is_service_role
    -from prowler.providers.common.models import Audit_Metadata
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_ACCOUNT_NUMBER,
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
    -AWS_ACCOUNT_NUMBER = "123456789012"
     TEST_DATETIME = "2023-01-01T12:01:01+00:00"
     
     INLINE_POLICY_NOT_ADMIN = {
    @@ -77,56 +79,26 @@ def mock_make_api_call(self, operation_name, kwargs):
     # Patch every AWS call using Boto3
     @patch("botocore.client.BaseClient._make_api_call", new=mock_make_api_call)
     class Test_IAM_Service:
    -    # 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=None,
    -            audited_account_arn=None,
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region="us-east-1",
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=None,
    -            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
     
         # Test IAM Client
    -    @mock_iam
    +    @mock_aws
         def test__get_client__(self):
             # IAM client for this test class
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
             iam = IAM(audit_info)
             assert iam.client.__class__.__name__ == "IAM"
     
         # Test IAM Session
    -    @mock_iam
    +    @mock_aws
         def test__get_session__(self):
             # IAM client for this test class
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
             iam = IAM(audit_info)
             assert iam.session.__class__.__name__ == "Session"
     
         # Test IAM Get Credential Report
         @freeze_time(TEST_DATETIME)
    -    @mock_iam
    +    @mock_aws
         def test__get_credential_report__(self):
             # Generate IAM Client
             iam_client = client("iam")
    @@ -162,7 +134,7 @@ def test__get_credential_report__(self):
             }
     
             # IAM client for this test class
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
             iam = IAM(audit_info)
             assert len(iam.credential_report) == 1
             assert iam.credential_report[0].get("user")
    @@ -292,7 +264,7 @@ def test__get_credential_report__(self):
             )
     
         # Test IAM Get Roles
    -    @mock_iam
    +    @mock_aws
         def test__get_roles__(self):
             # Generate IAM Client
             iam_client = client("iam")
    @@ -333,7 +305,7 @@ def test__get_roles__(self):
             )["Role"]
     
             # IAM client for this test class
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
             iam = IAM(audit_info)
     
             assert len(iam.roles) == len(iam_client.list_roles()["Roles"])
    @@ -347,7 +319,7 @@ def test__get_roles__(self):
             assert not is_service_role(role)
     
         # Test IAM Get Groups
    -    @mock_iam
    +    @mock_aws
         def test__get_groups__(self):
             # Generate IAM Client
             iam_client = client("iam")
    @@ -360,12 +332,12 @@ def test__get_groups__(self):
             )
     
             # IAM client for this test class
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
             iam = IAM(audit_info)
             assert len(iam.groups) == len(iam_client.list_groups()["Groups"])
     
         # Test IAM Get Users
    -    @mock_iam
    +    @mock_aws
         def test__get_users__(self):
             # Generate IAM Client
             iam_client = client("iam")
    @@ -384,7 +356,7 @@ def test__get_users__(self):
             )
     
             # IAM client for this test class
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
             iam = IAM(audit_info)
             assert len(iam.users) == len(iam_client.list_users()["Users"])
             assert iam.users[0].tags == [
    @@ -395,20 +367,20 @@ def test__get_users__(self):
             ]
     
         # Test IAM Get Account Summary
    -    @mock_iam
    +    @mock_aws
         def test__get_account_summary__(self):
             # Generate IAM Client
             iam_client = client("iam")
             account_summary = iam_client.get_account_summary()["SummaryMap"]
     
             # IAM client for this test class
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
             iam = IAM(audit_info)
     
             assert iam.account_summary["SummaryMap"] == account_summary
     
         # Test IAM Get Password Policy
    -    @mock_iam
    +    @mock_aws
         def test__get_password_policy__(self):
             # Generate IAM Client
             iam_client = client("iam")
    @@ -436,7 +408,7 @@ def test__get_password_policy__(self):
             )
     
             # IAM client for this test class
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
             iam = IAM(audit_info)
     
             assert iam.password_policy.length == min_password_length
    @@ -451,7 +423,7 @@ def test__get_password_policy__(self):
             assert iam.password_policy.hard_expiry == hard_expiry
     
         # Test IAM List MFA Device
    -    @mock_iam
    +    @mock_aws
         def test__list_mfa_devices__(self):
             # Generate IAM Client
             iam_client = client("iam")
    @@ -472,7 +444,7 @@ def test__list_mfa_devices__(self):
             )
     
             # IAM client for this test class
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
             iam = IAM(audit_info)
     
             assert len(iam.users) == 1
    @@ -484,7 +456,7 @@ def test__list_mfa_devices__(self):
             assert iam.users[0].mfa_devices[0].type == "mfa"
     
         # Test IAM List Virtual MFA Device
    -    @mock_iam
    +    @mock_aws
         def test__list_virtual_mfa_devices__(self):
             # Generate IAM Client
             iam_client = client("iam")
    @@ -506,7 +478,7 @@ def test__list_virtual_mfa_devices__(self):
             )
     
             # IAM client for this test class
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
             iam = IAM(audit_info)
     
             assert len(iam.virtual_mfa_devices) == 1
    @@ -517,7 +489,7 @@ def test__list_virtual_mfa_devices__(self):
             assert iam.virtual_mfa_devices[0]["User"]["UserName"] == username
     
         # Test IAM Get Group Users
    -    @mock_iam
    +    @mock_aws
         def test__get_group_users__(self):
             # Generate IAM Client
             iam_client = client("iam")
    @@ -533,7 +505,7 @@ def test__get_group_users__(self):
             iam_client.add_user_to_group(GroupName=group, UserName=username)
     
             # IAM client for this test class
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
             iam = IAM(audit_info)
     
             assert len(iam.groups) == 1
    @@ -543,7 +515,7 @@ def test__get_group_users__(self):
             assert iam.groups[0].users[0].name == username
     
         # Test IAM List Attached Group Policies
    -    @mock_iam
    +    @mock_aws
         def test__list_attached_group_policies__(self):
             # Generate IAM Client
             iam_client = client("iam")
    @@ -580,7 +552,7 @@ def test__list_attached_group_policies__(self):
             )
     
             # IAM client for this test class
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
             iam = IAM(audit_info)
     
             assert len(iam.groups) == 1
    @@ -592,7 +564,7 @@ def test__list_attached_group_policies__(self):
             )
     
         # Test IAM List Attached Role Policies
    -    @mock_iam
    +    @mock_aws(config={"iam": {"load_aws_managed_policies": True}})
         def test__list_attached_role_policies__(self):
             iam = client("iam")
             role_name = "test"
    @@ -615,7 +587,7 @@ def test__list_attached_role_policies__(self):
             )
     
             # IAM client for this test class
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
             iam = IAM(audit_info)
     
             assert len(iam.roles) == 1
    @@ -628,7 +600,7 @@ def test__list_attached_role_policies__(self):
                 == READ_ONLY_ACCESS_POLICY_ARN
             )
     
    -    @mock_iam
    +    @mock_aws(config={"iam": {"load_aws_managed_policies": True}})
         def test__get_entities_attached_to_support_roles__no_roles(self):
             iam_client = client("iam")
             _ = iam_client.list_entities_for_policy(
    @@ -636,11 +608,11 @@ def test__get_entities_attached_to_support_roles__no_roles(self):
                 EntityFilter="Role",
             )["PolicyRoles"]
     
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
             iam = IAM(audit_info)
             assert len(iam.entities_role_attached_to_support_policy) == 0
     
    -    @mock_iam
    +    @mock_aws(config={"iam": {"load_aws_managed_policies": True}})
         def test__get_entities_attached_to_support_roles__(self):
             iam_client = client("iam")
             role_name = "test_support"
    @@ -667,12 +639,12 @@ def test__get_entities_attached_to_support_roles__(self):
                 EntityFilter="Role",
             )["PolicyRoles"]
     
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
             iam = IAM(audit_info)
             assert len(iam.entities_role_attached_to_support_policy) == 1
             assert iam.entities_role_attached_to_support_policy[0]["RoleName"] == role_name
     
    -    @mock_iam
    +    @mock_aws
         def test__get_entities_attached_to_securityaudit_roles__no_roles(self):
             iam_client = client("iam")
             _ = iam_client.list_entities_for_policy(
    @@ -680,11 +652,11 @@ def test__get_entities_attached_to_securityaudit_roles__no_roles(self):
                 EntityFilter="Role",
             )["PolicyRoles"]
     
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
             iam = IAM(audit_info)
             assert len(iam.entities_role_attached_to_securityaudit_policy) == 0
     
    -    @mock_iam
    +    @mock_aws(config={"iam": {"load_aws_managed_policies": True}})
         def test__get_entities_attached_to_securityaudit_roles__(self):
             iam_client = client("iam")
             role_name = "test_securityaudit"
    @@ -711,7 +683,7 @@ def test__get_entities_attached_to_securityaudit_roles__(self):
                 EntityFilter="Role",
             )["PolicyRoles"]
     
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
             iam = IAM(audit_info)
             assert len(iam.entities_role_attached_to_securityaudit_policy) == 1
             assert (
    @@ -719,7 +691,7 @@ def test__get_entities_attached_to_securityaudit_roles__(self):
                 == role_name
             )
     
    -    @mock_iam
    +    @mock_aws
         def test___list_policies__(self):
             iam_client = client("iam")
             policy_name = "policy1"
    @@ -736,7 +708,7 @@ def test___list_policies__(self):
                     {"Key": "string", "Value": "string"},
                 ],
             )
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
             iam = IAM(audit_info)
             custom_policies = 0
             for policy in iam.policies:
    @@ -748,7 +720,7 @@ def test___list_policies__(self):
                     ]
             assert custom_policies == 1
     
    -    @mock_iam
    +    @mock_aws
         def test__list_policies_version__(self):
             iam_client = client("iam")
             policy_name = "policy2"
    @@ -761,7 +733,7 @@ def test__list_policies_version__(self):
             iam_client.create_policy(
                 PolicyName=policy_name, PolicyDocument=dumps(policy_document)
             )
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
             iam = IAM(audit_info)
     
             custom_policies = 0
    @@ -775,7 +747,7 @@ def test__list_policies_version__(self):
             assert custom_policies == 1
     
         # Test IAM List SAML Providers
    -    @mock_iam
    +    @mock_aws
         def test__list_saml_providers__(self):
             iam_client = client("iam")
             xml_template = r""" 1000
     
    -    @mock_sqs
    +    @mock_aws
         # Test SQS list queues
         def test__get_queue_attributes__(self):
    -        sqs_client = client("sqs", region_name=AWS_REGION)
    +        sqs_client = client("sqs", region_name=AWS_REGION_EU_WEST_1)
             queue = sqs_client.create_queue(
                 QueueName=test_queue,
             )
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1])
             sqs = SQS(audit_info)
             assert len(sqs.queues) == 1
             assert sqs.queues[0].id == queue["QueueUrl"]
    -        assert sqs.queues[0].region == AWS_REGION
    +        assert sqs.queues[0].region == AWS_REGION_EU_WEST_1
             assert sqs.queues[0].policy
             assert sqs.queues[0].kms_key_id == test_key
    diff --git a/tests/providers/aws/services/ssm/ssm_document_secrets/ssm_document_secrets_test.py b/tests/providers/aws/services/ssm/ssm_document_secrets/ssm_document_secrets_test.py
    index 2ebfd33e6cb..4f20a3578c2 100644
    --- a/tests/providers/aws/services/ssm/ssm_document_secrets/ssm_document_secrets_test.py
    +++ b/tests/providers/aws/services/ssm/ssm_document_secrets/ssm_document_secrets_test.py
    @@ -1,10 +1,10 @@
     from unittest import mock
     
    -from moto.core import DEFAULT_ACCOUNT_ID
    -
     from prowler.providers.aws.services.ssm.ssm_service import Document
    -
    -AWS_REGION = "eu-west-1"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_ACCOUNT_NUMBER,
    +    AWS_REGION_US_EAST_1,
    +)
     
     
     class Test_ssm_documents_secrets:
    @@ -28,15 +28,13 @@ def test_no_documents(self):
         def test_document_with_secrets(self):
             ssm_client = mock.MagicMock
             document_name = "test-document"
    -        document_arn = (
    -            f"arn:aws:ssm:{AWS_REGION}:{DEFAULT_ACCOUNT_ID}:document/{document_name}"
    -        )
    -        ssm_client.audited_account = DEFAULT_ACCOUNT_ID
    +        document_arn = f"arn:aws:ssm:{AWS_REGION_US_EAST_1}:{AWS_ACCOUNT_NUMBER}:document/{document_name}"
    +        ssm_client.audited_account = AWS_ACCOUNT_NUMBER
             ssm_client.documents = {
                 document_name: Document(
                     arn=document_arn,
                     name=document_name,
    -                region=AWS_REGION,
    +                region=AWS_REGION_US_EAST_1,
                     content={"db_password": "test-password"},
                     account_owners=[],
                 )
    @@ -54,7 +52,7 @@ def test_document_with_secrets(self):
                 result = check.execute()
     
                 assert len(result) == 1
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_US_EAST_1
                 assert result[0].resource_id == document_name
                 assert result[0].resource_arn == document_arn
                 assert result[0].status == "FAIL"
    @@ -66,15 +64,13 @@ def test_document_with_secrets(self):
         def test_document_no_secrets(self):
             ssm_client = mock.MagicMock
             document_name = "test-document"
    -        document_arn = (
    -            f"arn:aws:ssm:{AWS_REGION}:{DEFAULT_ACCOUNT_ID}:document/{document_name}"
    -        )
    -        ssm_client.audited_account = DEFAULT_ACCOUNT_ID
    +        document_arn = f"arn:aws:ssm:{AWS_REGION_US_EAST_1}:{AWS_ACCOUNT_NUMBER}:document/{document_name}"
    +        ssm_client.audited_account = AWS_ACCOUNT_NUMBER
             ssm_client.documents = {
                 document_name: Document(
                     arn=document_arn,
                     name=document_name,
    -                region=AWS_REGION,
    +                region=AWS_REGION_US_EAST_1,
                     content={"profile": "test"},
                     account_owners=[],
                 )
    @@ -92,7 +88,7 @@ def test_document_no_secrets(self):
                 result = check.execute()
     
                 assert len(result) == 1
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_US_EAST_1
                 assert result[0].resource_id == document_name
                 assert result[0].resource_arn == document_arn
                 assert result[0].status == "PASS"
    diff --git a/tests/providers/aws/services/ssm/ssm_documents_set_as_public/ssm_documents_set_as_public_test.py b/tests/providers/aws/services/ssm/ssm_documents_set_as_public/ssm_documents_set_as_public_test.py
    index 4216b62fcc3..a932c9e474d 100644
    --- a/tests/providers/aws/services/ssm/ssm_documents_set_as_public/ssm_documents_set_as_public_test.py
    +++ b/tests/providers/aws/services/ssm/ssm_documents_set_as_public/ssm_documents_set_as_public_test.py
    @@ -1,10 +1,10 @@
     from unittest import mock
     
    -from moto.core import DEFAULT_ACCOUNT_ID
    -
     from prowler.providers.aws.services.ssm.ssm_service import Document
    -
    -AWS_REGION = "eu-west-1"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_ACCOUNT_NUMBER,
    +    AWS_REGION_US_EAST_1,
    +)
     
     
     class Test_ssm_documents_set_as_public:
    @@ -28,15 +28,13 @@ def test_no_documents(self):
         def test_document_public(self):
             ssm_client = mock.MagicMock
             document_name = "test-document"
    -        document_arn = (
    -            f"arn:aws:ssm:{AWS_REGION}:{DEFAULT_ACCOUNT_ID}:document/{document_name}"
    -        )
    -        ssm_client.audited_account = DEFAULT_ACCOUNT_ID
    +        document_arn = f"arn:aws:ssm:{AWS_REGION_US_EAST_1}:{AWS_ACCOUNT_NUMBER}:document/{document_name}"
    +        ssm_client.audited_account = AWS_ACCOUNT_NUMBER
             ssm_client.documents = {
                 document_name: Document(
                     arn=document_arn,
                     name=document_name,
    -                region=AWS_REGION,
    +                region=AWS_REGION_US_EAST_1,
                     content="",
                     account_owners=["111111111111", "111111222222"],
                 )
    @@ -54,7 +52,7 @@ def test_document_public(self):
                 result = check.execute()
     
                 assert len(result) == 1
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_US_EAST_1
                 assert result[0].resource_id == document_name
                 assert result[0].resource_arn == document_arn
                 assert result[0].status == "FAIL"
    @@ -65,15 +63,13 @@ def test_document_public(self):
         def test_document_not_public(self):
             ssm_client = mock.MagicMock
             document_name = "test-document"
    -        document_arn = (
    -            f"arn:aws:ssm:{AWS_REGION}:{DEFAULT_ACCOUNT_ID}:document/{document_name}"
    -        )
    -        ssm_client.audited_account = DEFAULT_ACCOUNT_ID
    +        document_arn = f"arn:aws:ssm:{AWS_REGION_US_EAST_1}:{AWS_ACCOUNT_NUMBER}:document/{document_name}"
    +        ssm_client.audited_account = AWS_ACCOUNT_NUMBER
             ssm_client.documents = {
                 document_name: Document(
                     arn=document_arn,
                     name=document_name,
    -                region=AWS_REGION,
    +                region=AWS_REGION_US_EAST_1,
                     content="",
                     account_owners=[],
                 )
    @@ -91,7 +87,7 @@ def test_document_not_public(self):
                 result = check.execute()
     
                 assert len(result) == 1
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_US_EAST_1
                 assert result[0].resource_id == document_name
                 assert result[0].resource_arn == document_arn
                 assert result[0].status == "PASS"
    diff --git a/tests/providers/aws/services/ssm/ssm_managed_compliant_patching/ssm_managed_compliant_patching_test.py b/tests/providers/aws/services/ssm/ssm_managed_compliant_patching/ssm_managed_compliant_patching_test.py
    index 898a0fb25bd..ce70cc011a4 100644
    --- a/tests/providers/aws/services/ssm/ssm_managed_compliant_patching/ssm_managed_compliant_patching_test.py
    +++ b/tests/providers/aws/services/ssm/ssm_managed_compliant_patching/ssm_managed_compliant_patching_test.py
    @@ -1,13 +1,13 @@
     from unittest import mock
     
    -from moto.core import DEFAULT_ACCOUNT_ID
    -
     from prowler.providers.aws.services.ssm.ssm_service import (
         ComplianceResource,
         ResourceStatus,
     )
    -
    -AWS_REGION = "eu-west-1"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_ACCOUNT_NUMBER,
    +    AWS_REGION_US_EAST_1,
    +)
     
     
     class Test_ssm_managed_compliant_patching:
    @@ -31,11 +31,11 @@ def test_no_compliance_resources(self):
         def test_compliance_resources_compliant(self):
             ssm_client = mock.MagicMock
             instance_id = "i-1234567890abcdef0"
    -        ssm_client.audited_account = DEFAULT_ACCOUNT_ID
    +        ssm_client.audited_account = AWS_ACCOUNT_NUMBER
             ssm_client.compliance_resources = {
                 instance_id: ComplianceResource(
                     id="i-1234567890abcdef0",
    -                region=AWS_REGION,
    +                region=AWS_REGION_US_EAST_1,
                     status=ResourceStatus.COMPLIANT,
                 )
             }
    @@ -53,7 +53,7 @@ def test_compliance_resources_compliant(self):
                 result = check.execute()
     
                 assert len(result) == 1
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_US_EAST_1
                 assert result[0].resource_id == instance_id
                 assert result[0].status == "PASS"
                 assert (
    @@ -64,11 +64,11 @@ def test_compliance_resources_compliant(self):
         def test_compliance_resources_non_compliant(self):
             ssm_client = mock.MagicMock
             instance_id = "i-1234567890abcdef0"
    -        ssm_client.audited_account = DEFAULT_ACCOUNT_ID
    +        ssm_client.audited_account = AWS_ACCOUNT_NUMBER
             ssm_client.compliance_resources = {
                 instance_id: ComplianceResource(
                     id="i-1234567890abcdef0",
    -                region=AWS_REGION,
    +                region=AWS_REGION_US_EAST_1,
                     status=ResourceStatus.NON_COMPLIANT,
                 )
             }
    @@ -86,7 +86,7 @@ def test_compliance_resources_non_compliant(self):
                 result = check.execute()
     
                 assert len(result) == 1
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_US_EAST_1
                 assert result[0].resource_id == instance_id
                 assert result[0].status == "FAIL"
                 assert (
    diff --git a/tests/providers/aws/services/ssm/ssm_service_test.py b/tests/providers/aws/services/ssm/ssm_service_test.py
    index dd03957c5ab..b92254a2c48 100644
    --- a/tests/providers/aws/services/ssm/ssm_service_test.py
    +++ b/tests/providers/aws/services/ssm/ssm_service_test.py
    @@ -2,16 +2,15 @@
     
     import botocore
     import yaml
    -from boto3 import client, session
    -from moto import mock_ssm
    -from moto.core import DEFAULT_ACCOUNT_ID
    +from boto3 import client
    +from moto import mock_aws
     
    -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"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_ACCOUNT_NUMBER,
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     # Mocking Access Analyzer Calls
     make_api_call = botocore.client.BaseClient._make_api_call
    @@ -67,10 +66,12 @@ def mock_make_api_call(self, operation_name, kwarg):
     
     
     # Mock generate_regional_clients()
    -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}
    +def mock_generate_regional_clients(service, audit_info):
    +    regional_client = audit_info.audit_session.client(
    +        service, region_name=AWS_REGION_US_EAST_1
    +    )
    +    regional_client.region = AWS_REGION_US_EAST_1
    +    return {AWS_REGION_US_EAST_1: regional_client}
     
     
     # SSM Document YAML Template
    @@ -132,59 +133,28 @@ def mock_generate_regional_clients(service, audit_info, _):
         new=mock_generate_regional_clients,
     )
     class Test_SSM_Service:
    -    # 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=DEFAULT_ACCOUNT_ID,
    -            audited_account_arn=f"arn:aws:iam::{DEFAULT_ACCOUNT_ID}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=AWS_REGION,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=None,
    -            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
    -
         # Test SSM Client
    -    @mock_ssm
    +    @mock_aws
         def test__get_client__(self):
    -        ssm = SSM(self.set_mocked_audit_info())
    -        assert ssm.regional_clients[AWS_REGION].__class__.__name__ == "SSM"
    +        ssm = SSM(set_mocked_aws_audit_info([AWS_REGION_US_EAST_1]))
    +        assert ssm.regional_clients[AWS_REGION_US_EAST_1].__class__.__name__ == "SSM"
     
         # Test SSM Session
    -    @mock_ssm
    +    @mock_aws
         def test__get_session__(self):
    -        ssm = SSM(self.set_mocked_audit_info())
    +        ssm = SSM(set_mocked_aws_audit_info([AWS_REGION_US_EAST_1]))
             assert ssm.session.__class__.__name__ == "Session"
     
         # Test SSM Service
    -    @mock_ssm
    +    @mock_aws
         def test__get_service__(self):
    -        ssm = SSM(self.set_mocked_audit_info())
    +        ssm = SSM(set_mocked_aws_audit_info([AWS_REGION_US_EAST_1]))
             assert ssm.service == "ssm"
     
    -    @mock_ssm
    +    @mock_aws
         def test__list_documents__(self):
             # Create SSM Document
    -        ssm_client = client("ssm", region_name=AWS_REGION)
    +        ssm_client = client("ssm", region_name=AWS_REGION_US_EAST_1)
             ssm_document_name = "test-document"
             _ = ssm_client.create_document(
                 Content=ssm_document_yaml,
    @@ -199,32 +169,32 @@ def test__list_documents__(self):
             ssm_client.modify_document_permission(
                 Name=ssm_document_name,
                 PermissionType="Share",
    -            AccountIdsToAdd=[DEFAULT_ACCOUNT_ID],
    +            AccountIdsToAdd=[AWS_ACCOUNT_NUMBER],
             )
     
    -        ssm = SSM(self.set_mocked_audit_info())
    +        ssm = SSM(set_mocked_aws_audit_info([AWS_REGION_US_EAST_1]))
     
    -        document_arn = f"arn:aws:ssm:{AWS_REGION}:{DEFAULT_ACCOUNT_ID}:document/{ssm_document_name}"
    +        document_arn = f"arn:aws:ssm:{AWS_REGION_US_EAST_1}:{AWS_ACCOUNT_NUMBER}:document/{ssm_document_name}"
     
             assert len(ssm.documents) == 1
             assert ssm.documents
             assert ssm.documents[document_arn]
             assert ssm.documents[document_arn].arn == document_arn
             assert ssm.documents[document_arn].name == ssm_document_name
    -        assert ssm.documents[document_arn].region == AWS_REGION
    +        assert ssm.documents[document_arn].region == AWS_REGION_US_EAST_1
             assert ssm.documents[document_arn].tags == [
                 {"Key": "test", "Value": "test"},
             ]
             assert ssm.documents[document_arn].content == yaml.safe_load(ssm_document_yaml)
    -        assert ssm.documents[document_arn].account_owners == [DEFAULT_ACCOUNT_ID]
    +        assert ssm.documents[document_arn].account_owners == [AWS_ACCOUNT_NUMBER]
     
    -    @mock_ssm
    +    @mock_aws
         def test__list_resource_compliance_summaries__(self):
    -        ssm = SSM(self.set_mocked_audit_info())
    +        ssm = SSM(set_mocked_aws_audit_info([AWS_REGION_US_EAST_1]))
             instance_id = "i-1234567890abcdef0"
             assert len(ssm.compliance_resources) == 1
             assert ssm.compliance_resources
             assert ssm.compliance_resources[instance_id]
             assert ssm.compliance_resources[instance_id].id == instance_id
    -        assert ssm.compliance_resources[instance_id].region == AWS_REGION
    +        assert ssm.compliance_resources[instance_id].region == AWS_REGION_US_EAST_1
             assert ssm.compliance_resources[instance_id].status == ResourceStatus.COMPLIANT
    diff --git a/tests/providers/aws/services/ssmincidents/ssmincidents_enabled_with_plans/ssmincidents_enabled_with_plans_test.py b/tests/providers/aws/services/ssmincidents/ssmincidents_enabled_with_plans/ssmincidents_enabled_with_plans_test.py
    index 32a98d2860a..63e2f44408f 100644
    --- a/tests/providers/aws/services/ssmincidents/ssmincidents_enabled_with_plans/ssmincidents_enabled_with_plans_test.py
    +++ b/tests/providers/aws/services/ssmincidents/ssmincidents_enabled_with_plans/ssmincidents_enabled_with_plans_test.py
    @@ -4,11 +4,13 @@
         ReplicationSet,
         ResponsePlan,
     )
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_ACCOUNT_NUMBER,
    +    AWS_REGION_US_EAST_1,
    +)
     
    -AWS_REGION = "us-east-1"
     REPLICATION_SET_ARN = "arn:aws:ssm-incidents::111122223333:replication-set/40bd98f0-4110-2dee-b35e-b87006f9e172"
     RESPONSE_PLAN_ARN = "arn:aws:ssm-incidents::111122223333:response-plan/example-response"
    -AWS_ACCOUNT_NUMBER = "123456789012"
     
     
     class Test_ssmincidents_enabled_with_plans:
    @@ -18,7 +20,7 @@ def test_ssmincidents_no_replicationset(self):
             ssmincidents_client.audited_account_arn = (
                 f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root"
             )
    -        ssmincidents_client.region = AWS_REGION
    +        ssmincidents_client.region = AWS_REGION_US_EAST_1
             ssmincidents_client.replication_set = []
             with mock.patch(
                 "prowler.providers.aws.services.ssmincidents.ssmincidents_service.SSMIncidents",
    @@ -39,7 +41,7 @@ def test_ssmincidents_no_replicationset(self):
                 )
                 assert result[0].resource_id == AWS_ACCOUNT_NUMBER
                 assert result[0].resource_arn == f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root"
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_US_EAST_1
     
         def test_ssmincidents_replicationset_not_active(self):
             ssmincidents_client = mock.MagicMock
    @@ -47,7 +49,7 @@ def test_ssmincidents_replicationset_not_active(self):
             ssmincidents_client.audited_account_arn = (
                 f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root"
             )
    -        ssmincidents_client.region = AWS_REGION
    +        ssmincidents_client.region = AWS_REGION_US_EAST_1
             ssmincidents_client.replication_set = [
                 ReplicationSet(arn=REPLICATION_SET_ARN, status="CREATING")
             ]
    @@ -71,7 +73,7 @@ def test_ssmincidents_replicationset_not_active(self):
                 )
                 assert result[0].resource_id == AWS_ACCOUNT_NUMBER
                 assert result[0].resource_arn == REPLICATION_SET_ARN
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_US_EAST_1
     
         def test_ssmincidents_replicationset_active_no_plans(self):
             ssmincidents_client = mock.MagicMock
    @@ -79,7 +81,7 @@ def test_ssmincidents_replicationset_active_no_plans(self):
             ssmincidents_client.audited_account_arn = (
                 f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root"
             )
    -        ssmincidents_client.region = AWS_REGION
    +        ssmincidents_client.region = AWS_REGION_US_EAST_1
             ssmincidents_client.replication_set = [
                 ReplicationSet(arn=REPLICATION_SET_ARN, status="ACTIVE")
             ]
    @@ -104,7 +106,7 @@ def test_ssmincidents_replicationset_active_no_plans(self):
                 )
                 assert result[0].resource_id == AWS_ACCOUNT_NUMBER
                 assert result[0].resource_arn == REPLICATION_SET_ARN
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_US_EAST_1
     
         def test_ssmincidents_replicationset_active_with_plans(self):
             ssmincidents_client = mock.MagicMock
    @@ -112,12 +114,14 @@ def test_ssmincidents_replicationset_active_with_plans(self):
             ssmincidents_client.audited_account_arn = (
                 f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root"
             )
    -        ssmincidents_client.region = AWS_REGION
    +        ssmincidents_client.region = AWS_REGION_US_EAST_1
             ssmincidents_client.replication_set = [
                 ReplicationSet(arn=REPLICATION_SET_ARN, status="ACTIVE")
             ]
             ssmincidents_client.response_plans = [
    -            ResponsePlan(arn=RESPONSE_PLAN_ARN, name="test", region=AWS_REGION)
    +            ResponsePlan(
    +                arn=RESPONSE_PLAN_ARN, name="test", region=AWS_REGION_US_EAST_1
    +            )
             ]
             with mock.patch(
                 "prowler.providers.aws.services.ssmincidents.ssmincidents_service.SSMIncidents",
    @@ -139,4 +143,4 @@ def test_ssmincidents_replicationset_active_with_plans(self):
                 )
                 assert result[0].resource_id == AWS_ACCOUNT_NUMBER
                 assert result[0].resource_arn == REPLICATION_SET_ARN
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_US_EAST_1
    diff --git a/tests/providers/aws/services/ssmincidents/ssmincidents_service_test.py b/tests/providers/aws/services/ssmincidents/ssmincidents_service_test.py
    index 7381965ea1c..bc1547b0c57 100644
    --- a/tests/providers/aws/services/ssmincidents/ssmincidents_service_test.py
    +++ b/tests/providers/aws/services/ssmincidents/ssmincidents_service_test.py
    @@ -2,16 +2,15 @@
     from unittest.mock import patch
     
     import botocore
    -from boto3 import session
     
    -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
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
    -# Mock Test Region
    -AWS_REGION = "us-east-1"
     REPLICATION_SET_ARN = "arn:aws:ssm-incidents::111122223333:replication-set/40bd98f0-4110-2dee-b35e-b87006f9e172"
     RESPONSE_PLAN_ARN = "arn:aws:ssm-incidents::111122223333:response-plan/example-response"
     
    @@ -33,7 +32,7 @@ def mock_make_api_call(self, operation_name, kwargs):
                     "lastModifiedBy": datetime(2024, 1, 1),
                     "lastModifiedTime": datetime(2024, 1, 1),
                     "regionMap": {
    -                    AWS_REGION: {
    +                    AWS_REGION_US_EAST_1: {
                             "sseKmsKeyId": "DefaultKey",
                             "status": "ACTIVE",
                             "statusMessage": "Test",
    @@ -55,10 +54,12 @@ 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, _):
    -    regional_client = audit_info.audit_session.client(service, region_name=AWS_REGION)
    -    regional_client.region = AWS_REGION
    -    return {AWS_REGION: regional_client}
    +def mock_generate_regional_clients(service, audit_info):
    +    regional_client = audit_info.audit_session.client(
    +        service, region_name=AWS_REGION_US_EAST_1
    +    )
    +    regional_client.region = AWS_REGION_US_EAST_1
    +    return {AWS_REGION_US_EAST_1: regional_client}
     
     
     # Patch every AWS call using Boto3 and generate_regional_clients to have 1 client
    @@ -68,76 +69,45 @@ def mock_generate_regional_clients(service, audit_info, _):
         new=mock_generate_regional_clients,
     )
     class Test_SSMIncidents_Service:
    -    # 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=None,
    -            audited_account_arn=None,
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=None,
    -            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
    -
         def test__get_client__(self):
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
             ssmincidents = SSMIncidents(audit_info)
             assert (
    -            ssmincidents.regional_clients[AWS_REGION].__class__.__name__
    +            ssmincidents.regional_clients[AWS_REGION_US_EAST_1].__class__.__name__
                 == "SSMIncidents"
             )
     
         def test__get_service__(self):
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
             ssmincidents = SSMIncidents(audit_info)
             assert ssmincidents.service == "ssm-incidents"
     
         def test__list_replication_sets__(self):
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
             ssmincidents = SSMIncidents(audit_info)
             assert len(ssmincidents.replication_set) == 1
     
         def test__get_replication_set__(self):
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
             ssmincidents = SSMIncidents(audit_info)
             assert ssmincidents.replication_set[0].arn == REPLICATION_SET_ARN
             assert ssmincidents.replication_set[0].status == "ACTIVE"
             for region in ssmincidents.replication_set[0].region_map:
    -            assert region.region == AWS_REGION
    +            assert region.region == AWS_REGION_US_EAST_1
                 assert region.status == "ACTIVE"
                 assert region.sse_kms_id == "DefaultKey"
     
         def test__list_response_plans__(self):
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
             ssmincidents = SSMIncidents(audit_info)
             assert len(ssmincidents.response_plans) == 1
             assert ssmincidents.response_plans[0].arn == RESPONSE_PLAN_ARN
             assert ssmincidents.response_plans[0].name == "test"
    -        assert ssmincidents.response_plans[0].region == AWS_REGION
    +        assert ssmincidents.response_plans[0].region == AWS_REGION_US_EAST_1
             assert ssmincidents.response_plans[0].tags == {"tag_test": "tag_value"}
     
         def test__list_tags_for_resource__(self):
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
             ssmincidents = SSMIncidents(audit_info)
             assert len(ssmincidents.response_plans) == 1
             assert ssmincidents.response_plans[0].tags == {"tag_test": "tag_value"}
    diff --git a/tests/providers/aws/services/trustedadvisor/trustedadvisor_errors_and_warnings/trustedadvisor_errors_and_warnings_test.py b/tests/providers/aws/services/trustedadvisor/trustedadvisor_errors_and_warnings/trustedadvisor_errors_and_warnings_test.py
    index 5c6f95d1404..ae99e6fb3e9 100644
    --- a/tests/providers/aws/services/trustedadvisor/trustedadvisor_errors_and_warnings/trustedadvisor_errors_and_warnings_test.py
    +++ b/tests/providers/aws/services/trustedadvisor/trustedadvisor_errors_and_warnings/trustedadvisor_errors_and_warnings_test.py
    @@ -4,10 +4,11 @@
         Check,
         PremiumSupport,
     )
    -
    -AWS_REGION = "eu-west-1"
    -AWS_ACCOUNT_NUMBER = "123456789012"
    -AWS_ACCOUNT_ARN = f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_ACCOUNT_ARN,
    +    AWS_ACCOUNT_NUMBER,
    +    AWS_REGION_US_EAST_1,
    +)
     
     CHECK_NAME = "test-check"
     
    @@ -19,7 +20,7 @@ def test_no_detectors_premium_support_disabled(self):
             trustedadvisor_client.premium_support = PremiumSupport(enabled=False)
             trustedadvisor_client.audited_account = AWS_ACCOUNT_NUMBER
             trustedadvisor_client.audited_account_arn = AWS_ACCOUNT_ARN
    -        trustedadvisor_client.region = AWS_REGION
    +        trustedadvisor_client.region = AWS_REGION_US_EAST_1
             with mock.patch(
                 "prowler.providers.aws.services.trustedadvisor.trustedadvisor_service.TrustedAdvisor",
                 trustedadvisor_client,
    @@ -36,7 +37,7 @@ def test_no_detectors_premium_support_disabled(self):
                     result[0].status_extended
                     == "Amazon Web Services Premium Support Subscription is required to use this service."
                 )
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_US_EAST_1
                 assert result[0].resource_id == AWS_ACCOUNT_NUMBER
                 assert result[0].resource_arn == AWS_ACCOUNT_ARN
     
    @@ -50,7 +51,7 @@ def test_trustedadvisor_all_passed_checks(self):
                 Check(
                     id=CHECK_NAME,
                     name=CHECK_NAME,
    -                region=AWS_REGION,
    +                region=AWS_REGION_US_EAST_1,
                     status="ok",
                 )
             )
    @@ -71,7 +72,7 @@ def test_trustedadvisor_all_passed_checks(self):
                     == f"Trusted Advisor check {CHECK_NAME} is in state ok."
                 )
                 assert result[0].resource_id == CHECK_NAME
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_US_EAST_1
     
         def test_trustedadvisor_error_check(self):
             trustedadvisor_client = mock.MagicMock
    @@ -83,7 +84,7 @@ def test_trustedadvisor_error_check(self):
                 Check(
                     id=CHECK_NAME,
                     name=CHECK_NAME,
    -                region=AWS_REGION,
    +                region=AWS_REGION_US_EAST_1,
                     status="error",
                 )
             )
    @@ -104,7 +105,7 @@ def test_trustedadvisor_error_check(self):
                     == f"Trusted Advisor check {CHECK_NAME} is in state error."
                 )
                 assert result[0].resource_id == CHECK_NAME
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_US_EAST_1
     
         def test_trustedadvisor_not_available_check(self):
             trustedadvisor_client = mock.MagicMock
    @@ -116,7 +117,7 @@ def test_trustedadvisor_not_available_check(self):
                 Check(
                     id=CHECK_NAME,
                     name=CHECK_NAME,
    -                region=AWS_REGION,
    +                region=AWS_REGION_US_EAST_1,
                     status="not_available",
                 )
             )
    diff --git a/tests/providers/aws/services/trustedadvisor/trustedadvisor_premium_support_plan_subscribed/trustedadvisor_premium_support_plan_subscribed_test.py b/tests/providers/aws/services/trustedadvisor/trustedadvisor_premium_support_plan_subscribed/trustedadvisor_premium_support_plan_subscribed_test.py
    index 9324061580f..595dabc27f1 100644
    --- a/tests/providers/aws/services/trustedadvisor/trustedadvisor_premium_support_plan_subscribed/trustedadvisor_premium_support_plan_subscribed_test.py
    +++ b/tests/providers/aws/services/trustedadvisor/trustedadvisor_premium_support_plan_subscribed/trustedadvisor_premium_support_plan_subscribed_test.py
    @@ -3,10 +3,11 @@
     from prowler.providers.aws.services.trustedadvisor.trustedadvisor_service import (
         PremiumSupport,
     )
    -
    -AWS_REGION = "eu-west-1"
    -AWS_ACCOUNT_NUMBER = "123456789012"
    -AWS_ACCOUNT_ARN = f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_ACCOUNT_ARN,
    +    AWS_ACCOUNT_NUMBER,
    +    AWS_REGION_US_EAST_1,
    +)
     
     
     class Test_trustedadvisor_premium_support_plan_subscribed:
    @@ -16,7 +17,7 @@ def test_premium_support_not_susbcribed(self):
             trustedadvisor_client.premium_support = PremiumSupport(enabled=False)
             trustedadvisor_client.audited_account = AWS_ACCOUNT_NUMBER
             trustedadvisor_client.audited_account_arn = AWS_ACCOUNT_ARN
    -        trustedadvisor_client.region = AWS_REGION
    +        trustedadvisor_client.region = AWS_REGION_US_EAST_1
     
             # Set verify_premium_support_plans config
             trustedadvisor_client.audit_config = {"verify_premium_support_plans": True}
    @@ -37,7 +38,7 @@ def test_premium_support_not_susbcribed(self):
                     result[0].status_extended
                     == "Amazon Web Services Premium Support Plan isn't subscribed."
                 )
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_US_EAST_1
                 assert result[0].resource_id == AWS_ACCOUNT_NUMBER
                 assert result[0].resource_arn == AWS_ACCOUNT_ARN
     
    @@ -47,7 +48,7 @@ def test_premium_support_susbcribed(self):
             trustedadvisor_client.premium_support = PremiumSupport(enabled=True)
             trustedadvisor_client.audited_account = AWS_ACCOUNT_NUMBER
             trustedadvisor_client.audited_account_arn = AWS_ACCOUNT_ARN
    -        trustedadvisor_client.region = AWS_REGION
    +        trustedadvisor_client.region = AWS_REGION_US_EAST_1
     
             # Set verify_premium_support_plans config
             trustedadvisor_client.audit_config = {"verify_premium_support_plans": True}
    @@ -68,6 +69,6 @@ def test_premium_support_susbcribed(self):
                     result[0].status_extended
                     == "Amazon Web Services Premium Support Plan is subscribed."
                 )
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_US_EAST_1
                 assert result[0].resource_id == AWS_ACCOUNT_NUMBER
                 assert result[0].resource_arn == AWS_ACCOUNT_ARN
    diff --git a/tests/providers/aws/services/trustedadvisor/trustedadvisor_service_test.py b/tests/providers/aws/services/trustedadvisor/trustedadvisor_service_test.py
    index 3deb12f22bf..1e09d63c963 100644
    --- a/tests/providers/aws/services/trustedadvisor/trustedadvisor_service_test.py
    +++ b/tests/providers/aws/services/trustedadvisor/trustedadvisor_service_test.py
    @@ -1,17 +1,15 @@
     from unittest.mock import patch
     
     import botocore
    -from boto3 import session
    -from moto import mock_support
    +from moto import mock_aws
     
    -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"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     make_api_call = botocore.client.BaseClient._make_api_call
     
    @@ -39,60 +37,30 @@ def mock_make_api_call(self, operation_name, kwarg):
     
     @patch("botocore.client.BaseClient._make_api_call", new=mock_make_api_call)
     class Test_TrustedAdvisor_Service:
    -    # 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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=AWS_REGION,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=None,
    -            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
     
         # Test TrustedAdvisor Service
         def test_service(self):
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
             trustedadvisor = TrustedAdvisor(audit_info)
             assert trustedadvisor.service == "support"
     
         # Test TrustedAdvisor client
         def test_client(self):
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
             trustedadvisor = TrustedAdvisor(audit_info)
             assert trustedadvisor.client.__class__.__name__ == "Support"
     
         # Test TrustedAdvisor session
         def test__get_session__(self):
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
             trustedadvisor = TrustedAdvisor(audit_info)
             assert trustedadvisor.session.__class__.__name__ == "Session"
     
    -    @mock_support
    +    @mock_aws
         # Test TrustedAdvisor session
         def test__describe_trusted_advisor_checks__(self):
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
             trustedadvisor = TrustedAdvisor(audit_info)
             assert trustedadvisor.premium_support.enabled
             assert len(trustedadvisor.checks) == 104  # Default checks
    -        assert trustedadvisor.checks[0].region == AWS_REGION
    +        assert trustedadvisor.checks[0].region == AWS_REGION_US_EAST_1
    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 7856c206fa8..4fd860f6121 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
    @@ -1,51 +1,51 @@
     from unittest import mock
     
    -from boto3 import client, session
    -from moto import mock_ec2
    +from boto3 import client
    +from moto import mock_aws
     
    -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"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_ACCOUNT_ARN,
    +    AWS_ACCOUNT_NUMBER,
    +    AWS_REGION_EU_WEST_1,
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     
     class Test_vpc_different_regions:
    -    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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region="us-east-1",
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=["us-east-1", "eu-west-1"],
    -            organizations_metadata=None,
    -            audit_resources=None,
    -            mfa_enabled=False,
    -            audit_metadata=Audit_Metadata(
    -                services_scanned=0,
    -                expected_checks=[],
    -                completed_checks=0,
    -                audit_progress=0,
    -            ),
    +    @mock_aws
    +    def test_no_vpcs(self):
    +        from prowler.providers.aws.services.vpc.vpc_service import VPC
    +
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_US_EAST_1, AWS_REGION_EU_WEST_1]
             )
     
    -        return audit_info
    +        with mock.patch(
    +            "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    +            new=current_audit_info,
    +        ):
    +            with mock.patch(
    +                "prowler.providers.aws.services.vpc.vpc_different_regions.vpc_different_regions.vpc_client",
    +                new=VPC(current_audit_info),
    +            ) as vpc_client:
    +                # Remove all VPCs
    +                vpc_client.vpcs.clear()
    +
    +                # Test Check
    +                from prowler.providers.aws.services.vpc.vpc_different_regions.vpc_different_regions import (
    +                    vpc_different_regions,
    +                )
     
    -    @mock_ec2
    +                check = vpc_different_regions()
    +                result = check.execute()
    +
    +                assert len(result) == 0
    +
    +    @mock_aws
         def test_vpc_different_regions(self):
             # VPC Region 1
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
             ec2_client.create_vpc(CidrBlock="172.28.7.0/24", InstanceTenancy="default")
             # VPC Region 2
             ec2_client_eu = client("ec2", region_name="eu-west-1")
    @@ -53,7 +53,9 @@ def test_vpc_different_regions(self):
     
             from prowler.providers.aws.services.vpc.vpc_service import VPC
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_US_EAST_1, AWS_REGION_EU_WEST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -78,17 +80,20 @@ def test_vpc_different_regions(self):
                         result[0].status_extended == "VPCs found in more than one region."
                     )
                     assert result[0].resource_id == AWS_ACCOUNT_NUMBER
    +                assert result[0].resource_arn == AWS_ACCOUNT_ARN
                     assert result[0].resource_tags == []
     
    -    @mock_ec2
    -    def test_vpc_only_one_regions(self):
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    +    @mock_aws
    +    def test_vpc_only_one_region(self):
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
             # VPC Region 1
             ec2_client.create_vpc(CidrBlock="172.28.6.0/24", InstanceTenancy="default")
     
             from prowler.providers.aws.services.vpc.vpc_service import VPC
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_US_EAST_1, AWS_REGION_EU_WEST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -108,7 +113,8 @@ def test_vpc_only_one_regions(self):
     
                     assert len(result) == 1
                     assert result[0].status == "FAIL"
    -                assert result[0].region == "us-east-1"
    +                assert result[0].region == AWS_REGION_US_EAST_1
                     assert result[0].status_extended == "VPCs found only in one region."
                     assert result[0].resource_id == AWS_ACCOUNT_NUMBER
    +                assert result[0].resource_arn == AWS_ACCOUNT_ARN
                     assert result[0].resource_tags == []
    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 6405bebb95e..74c1fa496e0 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
    @@ -1,55 +1,25 @@
     import json
     from unittest import mock
     
    -from boto3 import client, session
    -from moto import mock_ec2
    +from boto3 import client
    +from moto import mock_aws
     
    -from prowler.providers.aws.lib.audit_info.models import AWS_Audit_Info
    -from prowler.providers.common.models import Audit_Metadata
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_ACCOUNT_NUMBER,
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
    -AWS_REGION = "us-east-1"
    -AWS_ACCOUNT_NUMBER = "123456789012"
     TRUSTED_AWS_ACCOUNT_NUMBER = "111122223333"
     NON_TRUSTED_AWS_ACCOUNT_NUMBER = "000011112222"
     
     
     class Test_vpc_endpoint_connections_trust_boundaries:
    -    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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=["us-east-1", "eu-west-1"],
    -            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
    -
    -    @mock_ec2
    +    @mock_aws
         def test_vpc_no_endpoints(self):
             from prowler.providers.aws.services.vpc.vpc_service import VPC
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
             # Set config variable
             current_audit_info.audit_config = {"trusted_account_ids": []}
     
    @@ -71,10 +41,10 @@ def test_vpc_no_endpoints(self):
     
                     assert len(result) == 0
     
    -    @mock_ec2
    +    @mock_aws
         def test_vpc_aws_endpoint(self):
             # Create VPC Mocked Resources
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
     
             vpc = ec2_client.create_vpc(CidrBlock="10.0.0.0/16")["Vpc"]
     
    @@ -88,7 +58,7 @@ def test_vpc_aws_endpoint(self):
     
             from prowler.providers.aws.services.vpc.vpc_service import VPC
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
             # Set config variable
             current_audit_info.audit_config = {"trusted_account_ids": []}
     
    @@ -110,10 +80,10 @@ def test_vpc_aws_endpoint(self):
     
                     assert len(result) == 0
     
    -    @mock_ec2
    +    @mock_aws
         def test_vpc_endpoint_with_full_access(self):
             # Create VPC Mocked Resources
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
     
             vpc = ec2_client.create_vpc(CidrBlock="10.0.0.0/16")["Vpc"]
     
    @@ -139,7 +109,7 @@ def test_vpc_endpoint_with_full_access(self):
     
             from prowler.providers.aws.services.vpc.vpc_service import VPC
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
             # Set config variable
             current_audit_info.audit_config = {"trusted_account_ids": []}
     
    @@ -169,12 +139,12 @@ def test_vpc_endpoint_with_full_access(self):
                         result[0].resource_id
                         == vpc_endpoint["VpcEndpoint"]["VpcEndpointId"]
                     )
    -                assert result[0].region == AWS_REGION
    +                assert result[0].region == AWS_REGION_US_EAST_1
     
    -    @mock_ec2
    +    @mock_aws
         def test_vpc_endpoint_with_trusted_account_arn(self):
             # Create VPC Mocked Resources
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
     
             vpc = ec2_client.create_vpc(CidrBlock="10.0.0.0/16")["Vpc"]
     
    @@ -201,7 +171,7 @@ def test_vpc_endpoint_with_trusted_account_arn(self):
             )
             from prowler.providers.aws.services.vpc.vpc_service import VPC
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
             # Set config variable
             current_audit_info.audit_config = {"trusted_account_ids": []}
     
    @@ -231,12 +201,12 @@ def test_vpc_endpoint_with_trusted_account_arn(self):
                         result[0].resource_id
                         == vpc_endpoint["VpcEndpoint"]["VpcEndpointId"]
                     )
    -                assert result[0].region == AWS_REGION
    +                assert result[0].region == AWS_REGION_US_EAST_1
     
    -    @mock_ec2
    +    @mock_aws
         def test_vpc_endpoint_with_trusted_account_id(self):
             # Create VPC Mocked Resources
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
     
             vpc = ec2_client.create_vpc(CidrBlock="10.0.0.0/16")["Vpc"]
     
    @@ -261,7 +231,7 @@ def test_vpc_endpoint_with_trusted_account_id(self):
             )
             from prowler.providers.aws.services.vpc.vpc_service import VPC
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
             # Set config variable
             current_audit_info.audit_config = {"trusted_account_ids": []}
     
    @@ -291,12 +261,12 @@ def test_vpc_endpoint_with_trusted_account_id(self):
                         result[0].resource_id
                         == vpc_endpoint["VpcEndpoint"]["VpcEndpointId"]
                     )
    -                assert result[0].region == AWS_REGION
    +                assert result[0].region == AWS_REGION_US_EAST_1
     
    -    @mock_ec2
    +    @mock_aws
         def test_vpc_endpoint_with_untrusted_account(self):
             # Create VPC Mocked Resources
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
     
             vpc = ec2_client.create_vpc(CidrBlock="10.0.0.0/16")["Vpc"]
     
    @@ -324,7 +294,7 @@ def test_vpc_endpoint_with_untrusted_account(self):
     
             from prowler.providers.aws.services.vpc.vpc_service import VPC
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
             # Set config variable
             current_audit_info.audit_config = {"trusted_account_ids": []}
     
    @@ -355,10 +325,10 @@ def test_vpc_endpoint_with_untrusted_account(self):
                         == vpc_endpoint["VpcEndpoint"]["VpcEndpointId"]
                     )
     
    -    @mock_ec2
    +    @mock_aws
         def test_vpc_endpoint_with_config_trusted_account_with_arn(self):
             # Create VPC Mocked Resources
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
     
             vpc = ec2_client.create_vpc(CidrBlock="10.0.0.0/16")["Vpc"]
     
    @@ -385,7 +355,7 @@ def test_vpc_endpoint_with_config_trusted_account_with_arn(self):
             )
             from prowler.providers.aws.services.vpc.vpc_service import VPC
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
     
             # Set config variable
             current_audit_info.audit_config = {
    @@ -418,12 +388,12 @@ def test_vpc_endpoint_with_config_trusted_account_with_arn(self):
                         result[0].resource_id
                         == vpc_endpoint["VpcEndpoint"]["VpcEndpointId"]
                     )
    -                assert result[0].region == AWS_REGION
    +                assert result[0].region == AWS_REGION_US_EAST_1
     
    -    @mock_ec2
    +    @mock_aws
         def test_vpc_endpoint_with_config_trusted_account(self):
             # Create VPC Mocked Resources
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
     
             vpc = ec2_client.create_vpc(CidrBlock="10.0.0.0/16")["Vpc"]
     
    @@ -448,7 +418,7 @@ def test_vpc_endpoint_with_config_trusted_account(self):
             )
             from prowler.providers.aws.services.vpc.vpc_service import VPC
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
     
             # Set config variable
             current_audit_info.audit_config = {
    @@ -481,12 +451,12 @@ def test_vpc_endpoint_with_config_trusted_account(self):
                         result[0].resource_id
                         == vpc_endpoint["VpcEndpoint"]["VpcEndpointId"]
                     )
    -                assert result[0].region == AWS_REGION
    +                assert result[0].region == AWS_REGION_US_EAST_1
     
    -    @mock_ec2
    +    @mock_aws
         def test_vpc_endpoint_with_two_account_ids_one_trusted_one_not(self):
             # Create VPC Mocked Resources
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
     
             vpc = ec2_client.create_vpc(CidrBlock="10.0.0.0/16")["Vpc"]
     
    @@ -516,7 +486,7 @@ def test_vpc_endpoint_with_two_account_ids_one_trusted_one_not(self):
             )
             from prowler.providers.aws.services.vpc.vpc_service import VPC
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
             # Set config variable
             current_audit_info.audit_config = {"trusted_account_ids": []}
     
    @@ -546,12 +516,12 @@ def test_vpc_endpoint_with_two_account_ids_one_trusted_one_not(self):
                         result[0].resource_id
                         == vpc_endpoint["VpcEndpoint"]["VpcEndpointId"]
                     )
    -                assert result[0].region == AWS_REGION
    +                assert result[0].region == AWS_REGION_US_EAST_1
     
    -    @mock_ec2
    +    @mock_aws
         def test_vpc_endpoint_with_aws_principal_all(self):
             # Create VPC Mocked Resources
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
     
             vpc = ec2_client.create_vpc(CidrBlock="10.0.0.0/16")["Vpc"]
     
    @@ -576,7 +546,7 @@ def test_vpc_endpoint_with_aws_principal_all(self):
             )
             from prowler.providers.aws.services.vpc.vpc_service import VPC
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
             # Set config variable
             current_audit_info.audit_config = {"trusted_account_ids": []}
     
    @@ -606,14 +576,14 @@ def test_vpc_endpoint_with_aws_principal_all(self):
                         result[0].resource_id
                         == vpc_endpoint["VpcEndpoint"]["VpcEndpointId"]
                     )
    -                assert result[0].region == AWS_REGION
    +                assert result[0].region == AWS_REGION_US_EAST_1
     
    -    @mock_ec2
    +    @mock_aws
         def test_vpc_endpoint_with_aws_principal_all_but_restricted_condition_with_SourceAccount(
             self,
         ):
             # Create VPC Mocked Resources
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
     
             vpc = ec2_client.create_vpc(CidrBlock="10.0.0.0/16")["Vpc"]
     
    @@ -643,7 +613,7 @@ def test_vpc_endpoint_with_aws_principal_all_but_restricted_condition_with_Sourc
             )
             from prowler.providers.aws.services.vpc.vpc_service import VPC
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
             # Set config variable
             current_audit_info.audit_config = {"trusted_account_ids": []}
     
    @@ -673,14 +643,14 @@ def test_vpc_endpoint_with_aws_principal_all_but_restricted_condition_with_Sourc
                         result[0].resource_id
                         == vpc_endpoint["VpcEndpoint"]["VpcEndpointId"]
                     )
    -                assert result[0].region == AWS_REGION
    +                assert result[0].region == AWS_REGION_US_EAST_1
     
    -    @mock_ec2
    +    @mock_aws
         def test_vpc_endpoint_with_aws_principal_all_but_restricted_condition_with_PrincipalAccount(
             self,
         ):
             # Create VPC Mocked Resources
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
     
             vpc = ec2_client.create_vpc(CidrBlock="10.0.0.0/16")["Vpc"]
     
    @@ -710,7 +680,7 @@ def test_vpc_endpoint_with_aws_principal_all_but_restricted_condition_with_Princ
             )
             from prowler.providers.aws.services.vpc.vpc_service import VPC
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
             # Set config variable
             current_audit_info.audit_config = {"trusted_account_ids": []}
     
    @@ -740,4 +710,4 @@ def test_vpc_endpoint_with_aws_principal_all_but_restricted_condition_with_Princ
                         result[0].resource_id
                         == vpc_endpoint["VpcEndpoint"]["VpcEndpointId"]
                     )
    -                assert result[0].region == AWS_REGION
    +                assert result[0].region == AWS_REGION_US_EAST_1
    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 5695ad9bc0a..885294759b5 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
    @@ -1,21 +1,21 @@
     from unittest import mock
     
     from boto3 import client
    -from moto import mock_ec2, mock_elbv2
    +from moto import mock_aws
     
     from tests.providers.aws.audit_info_utils import (
    +    AWS_ACCOUNT_NUMBER,
         AWS_REGION_US_EAST_1,
         set_mocked_aws_audit_info,
     )
     
    -AWS_ACCOUNT_NUMBER = "123456789012"
     AWS_ACCOUNT_ARN = f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root"
     AWS_ACCOUNT_NUMBER_2 = "111122223333"
     AWS_ACCOUNT_ARN_2 = f"arn:aws:iam::{AWS_ACCOUNT_NUMBER_2}:root"
     
     
     class Test_vpc_endpoint_services_allowed_principals_trust_boundaries:
    -    @mock_ec2
    +    @mock_aws
         def test_no_vpc_endpoint_services(self):
             from prowler.providers.aws.services.vpc.vpc_service import VPC
     
    @@ -43,8 +43,7 @@ def test_no_vpc_endpoint_services(self):
     
                     assert len(result) == 0
     
    -    @mock_ec2
    -    @mock_elbv2
    +    @mock_aws
         def test_vpc_endpoint_service_without_allowed_principals(self):
             # Create VPC Mocked Resources
             ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
    @@ -107,8 +106,7 @@ def test_vpc_endpoint_service_without_allowed_principals(self):
                     assert result[0].resource_tags == []
                     assert result[0].region == AWS_REGION_US_EAST_1
     
    -    @mock_ec2
    -    @mock_elbv2
    +    @mock_aws
         def test_vpc_endpoint_service_with_allowed_principal_account_arn(self):
             # Create VPC Mocked Resources
             ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
    @@ -176,8 +174,7 @@ def test_vpc_endpoint_service_with_allowed_principal_account_arn(self):
                     assert result[0].resource_tags == []
                     assert result[0].region == AWS_REGION_US_EAST_1
     
    -    @mock_ec2
    -    @mock_elbv2
    +    @mock_aws
         def test_vpc_endpoint_service_with_allowed_principal_account_number(self):
             # Create VPC Mocked Resources
             ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
    @@ -245,8 +242,7 @@ def test_vpc_endpoint_service_with_allowed_principal_account_number(self):
                     assert result[0].resource_tags == []
                     assert result[0].region == AWS_REGION_US_EAST_1
     
    -    @mock_ec2
    -    @mock_elbv2
    +    @mock_aws
         def test_vpc_endpoint_service_with_principal_not_allowed(self):
             # Create VPC Mocked Resources
             ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
    @@ -314,8 +310,7 @@ def test_vpc_endpoint_service_with_principal_not_allowed(self):
                     assert result[0].resource_tags == []
                     assert result[0].region == AWS_REGION_US_EAST_1
     
    -    @mock_ec2
    -    @mock_elbv2
    +    @mock_aws
         def test_vpc_endpoint_service_with_principal_different_than_account_but_allowed_in_config(
             self,
         ):
    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 e3a63f76b92..f6cc27bc9f4 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
    @@ -1,51 +1,24 @@
     from unittest import mock
     
    -from boto3 import client, resource, session
    -from moto import mock_ec2
    +from boto3 import client, resource
    +from moto import mock_aws
     
    -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"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_ACCOUNT_NUMBER,
    +    AWS_REGION_EU_WEST_1,
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     
     class Test_vpc_flow_logs_enabled:
    -    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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=["us-east-1", "eu-west-1"],
    -            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
    -
    -    @mock_ec2
    +    @mock_aws
         def test_vpc_only_default_vpcs(self):
             from prowler.providers.aws.services.vpc.vpc_service import VPC
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_US_EAST_1, AWS_REGION_EU_WEST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -64,12 +37,12 @@ def test_vpc_only_default_vpcs(self):
     
                 assert len(result) == 2  # Number of AWS regions, one default VPC per region
     
    -    @mock_ec2
    +    @mock_aws
         def test_vpc_with_flow_logs(self):
             from prowler.providers.aws.services.vpc.vpc_service import VPC
     
             # Create VPC Mocked Resources
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
     
             vpc = ec2_client.create_vpc(
                 CidrBlock="10.0.0.0/16",
    @@ -94,7 +67,9 @@ def test_vpc_with_flow_logs(self):
                 + ":role/test-role",
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_US_EAST_1, AWS_REGION_EU_WEST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -120,16 +95,18 @@ def test_vpc_with_flow_logs(self):
                         )
                         assert result.resource_id == vpc["VpcId"]
     
    -    @mock_ec2
    +    @mock_aws
         def test_vpc_without_flow_logs(self):
             from prowler.providers.aws.services.vpc.vpc_service import VPC
     
             # Create VPC Mocked Resources
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
     
             vpc = ec2_client.create_vpc(CidrBlock="10.0.0.0/16")["Vpc"]
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_US_EAST_1, AWS_REGION_EU_WEST_1]
    +        )
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -156,16 +133,18 @@ def test_vpc_without_flow_logs(self):
                         )
                         assert result.resource_id == vpc["VpcId"]
     
    -    @mock_ec2
    +    @mock_aws
         def test_vpc_without_flow_logs_ignoring(self):
             from prowler.providers.aws.services.vpc.vpc_service import VPC
     
             # Create VPC Mocked Resources
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
     
             ec2_client.create_vpc(CidrBlock="10.0.0.0/16")["Vpc"]
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_US_EAST_1, AWS_REGION_EU_WEST_1]
    +        )
             current_audit_info.ignore_unused_services = True
     
             with mock.patch(
    @@ -185,17 +164,19 @@ def test_vpc_without_flow_logs_ignoring(self):
     
                 assert len(result) == 0
     
    -    @mock_ec2
    +    @mock_aws
         def test_vpc_without_flow_logs_ignoring_in_use(self):
             from prowler.providers.aws.services.vpc.vpc_service import VPC
     
             # Create VPC Mocked Resources
    -        ec2 = resource("ec2", region_name=AWS_REGION)
    +        ec2 = resource("ec2", region_name=AWS_REGION_US_EAST_1)
     
             vpc = ec2.create_vpc(CidrBlock="10.0.0.0/16")
             subnet = ec2.create_subnet(VpcId=vpc.id, CidrBlock="10.0.0.0/18")
             ec2.create_network_interface(SubnetId=subnet.id)
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_US_EAST_1, AWS_REGION_EU_WEST_1]
    +        )
             current_audit_info.ignore_unused_services = True
     
             with mock.patch(
    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 181a180bb8c..3fca4ab057e 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
    @@ -1,52 +1,20 @@
     from unittest import mock
     
    -from boto3 import client, resource, session
    -from moto import mock_ec2
    +from boto3 import client, resource
    +from moto import mock_aws
     
    -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"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     
     class Test_vpc_peering_routing_tables_with_least_privilege:
    -    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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=["us-east-1", "eu-west-1"],
    -            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
    -
    -    @mock_ec2
    +    @mock_aws
         def test_vpc_no_peering_connections(self):
             from prowler.providers.aws.services.vpc.vpc_service import VPC
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -66,11 +34,11 @@ def test_vpc_no_peering_connections(self):
     
                     assert len(result) == 0
     
    -    @mock_ec2
    +    @mock_aws
         def test_vpc_comply_peering_connection_(self):
             # Create VPC Mocked Resources
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    -        ec2_resource = resource("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
    +        ec2_resource = resource("ec2", region_name=AWS_REGION_US_EAST_1)
     
             # Create VPCs peers as well as a comply route
             vpc = ec2_client.create_vpc(CidrBlock="10.0.0.0/16")
    @@ -96,7 +64,7 @@ def test_vpc_comply_peering_connection_(self):
     
             from prowler.providers.aws.services.vpc.vpc_service import VPC, Route
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -131,13 +99,13 @@ def test_vpc_comply_peering_connection_(self):
                         == f"VPC Peering Connection {vpc_pcx_id} comply with least privilege access."
                     )
                     assert result[0].resource_id == vpc_pcx_id
    -                assert result[0].region == AWS_REGION
    +                assert result[0].region == AWS_REGION_US_EAST_1
     
    -    @mock_ec2
    +    @mock_aws
         def test_vpc_comply_peering_connection_edge_case(self):
             # Create VPC Mocked Resources
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    -        ec2_resource = resource("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
    +        ec2_resource = resource("ec2", region_name=AWS_REGION_US_EAST_1)
     
             # Create VPCs peers as well as a comply route
             vpc = ec2_client.create_vpc(CidrBlock="10.0.0.0/16")
    @@ -161,7 +129,7 @@ def test_vpc_comply_peering_connection_edge_case(self):
     
             from prowler.providers.aws.services.vpc.vpc_service import VPC, Route
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -196,13 +164,13 @@ def test_vpc_comply_peering_connection_edge_case(self):
                         == f"VPC Peering Connection {vpc_pcx_id} comply with least privilege access."
                     )
                     assert result[0].resource_id == vpc_pcx_id
    -                assert result[0].region == AWS_REGION
    +                assert result[0].region == AWS_REGION_US_EAST_1
     
    -    @mock_ec2
    +    @mock_aws
         def test_vpc_not_comply_peering_connection_(self):
             # Create VPC Mocked Resources
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    -        ec2_resource = resource("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
    +        ec2_resource = resource("ec2", region_name=AWS_REGION_US_EAST_1)
     
             # Create VPCs peers as well as a comply route
             vpc = ec2_client.create_vpc(CidrBlock="10.0.0.0/16")
    @@ -228,7 +196,7 @@ def test_vpc_not_comply_peering_connection_(self):
     
             from prowler.providers.aws.services.vpc.vpc_service import VPC, Route
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -263,4 +231,4 @@ def test_vpc_not_comply_peering_connection_(self):
                         == f"VPC Peering Connection {vpc_pcx_id} does not comply with least privilege access since it accepts whole VPCs CIDR in its route tables."
                     )
                     assert result[0].resource_id == vpc_pcx_id
    -                assert result[0].region == AWS_REGION
    +                assert result[0].region == AWS_REGION_US_EAST_1
    diff --git a/tests/providers/aws/services/vpc/vpc_service_test.py b/tests/providers/aws/services/vpc/vpc_service_test.py
    index 86493c2bc0f..c4317fc9325 100644
    --- a/tests/providers/aws/services/vpc/vpc_service_test.py
    +++ b/tests/providers/aws/services/vpc/vpc_service_test.py
    @@ -1,86 +1,65 @@
     import json
     
    -from boto3 import client, resource, session
    -from moto import mock_ec2, mock_elbv2
    +from boto3 import client, resource
    +from moto import mock_aws
     
    -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"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_ACCOUNT_NUMBER,
    +    AWS_REGION_EU_WEST_1,
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     
     class Test_VPC_Service:
    -    # 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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=["eu-west-1", "us-east-1"],
    -            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
     
         # Test VPC Service
    -    @mock_ec2
    +    @mock_aws
         def test_service(self):
             # VPC client for this test class
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_US_EAST_1, AWS_REGION_EU_WEST_1]
    +        )
             vpc = VPC(audit_info)
             assert vpc.service == "ec2"
     
         # Test VPC Client
    -    @mock_ec2
    +    @mock_aws
         def test_client(self):
             # VPC client for this test class
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_US_EAST_1, AWS_REGION_EU_WEST_1]
    +        )
             vpc = VPC(audit_info)
             for regional_client in vpc.regional_clients.values():
                 assert regional_client.__class__.__name__ == "EC2"
     
         # Test VPC Session
    -    @mock_ec2
    +    @mock_aws
         def test__get_session__(self):
             # VPC client for this test class
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_US_EAST_1, AWS_REGION_EU_WEST_1]
    +        )
             vpc = VPC(audit_info)
             assert vpc.session.__class__.__name__ == "Session"
     
         # Test VPC Session
    -    @mock_ec2
    +    @mock_aws
         def test_audited_account(self):
             # VPC client for this test class
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_US_EAST_1, AWS_REGION_EU_WEST_1]
    +        )
             vpc = VPC(audit_info)
             assert vpc.audited_account == AWS_ACCOUNT_NUMBER
     
         # Test VPC Describe VPCs
    -    @mock_ec2
    +    @mock_aws
         def test__describe_vpcs__(self):
             # Generate VPC Client
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
             # Create VPC
             vpc = ec2_client.create_vpc(
                 CidrBlock="10.0.0.0/16",
    @@ -94,7 +73,9 @@ def test__describe_vpcs__(self):
                 ],
             )["Vpc"]
             # VPC client for this test class
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_US_EAST_1, AWS_REGION_EU_WEST_1]
    +        )
             vpc = VPC(audit_info)
             assert (
                 len(vpc.vpcs) == 3
    @@ -106,10 +87,10 @@ def test__describe_vpcs__(self):
                     ]
     
         # Test VPC Describe Flow Logs
    -    @mock_ec2
    +    @mock_aws
         def test__describe_flow_logs__(self):
             # Generate VPC Client
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
             new_vpc = ec2_client.create_vpc(CidrBlock="10.0.0.0/16")["Vpc"]
             # Create VPC Flow log
             ec2_client.create_flow_logs(
    @@ -123,7 +104,9 @@ def test__describe_flow_logs__(self):
                 + ":role/test-role",
             )
             # VPC client for this test class
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_US_EAST_1, AWS_REGION_EU_WEST_1]
    +        )
             vpc = VPC(audit_info)
             # Search created VPC among default ones
             for vpc_iter in vpc.vpcs.values():
    @@ -131,10 +114,10 @@ def test__describe_flow_logs__(self):
                     assert vpc_iter.flow_log is True
     
         # Test VPC Describe VPC Peering connections
    -    @mock_ec2
    +    @mock_aws
         def test__describe_vpc_peering_connections__(self):
             # Generate VPC Client
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
             # Create VPCs peers
             vpc = ec2_client.create_vpc(CidrBlock="10.0.0.0/16")
             peer_vpc = ec2_client.create_vpc(CidrBlock="11.0.0.0/16")
    @@ -156,7 +139,9 @@ def test__describe_vpc_peering_connections__(self):
                 VpcPeeringConnectionId=vpc_pcx_id
             )
             # VPC client for this test class
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_US_EAST_1, AWS_REGION_EU_WEST_1]
    +        )
             vpc = VPC(audit_info)
             assert len(vpc.vpc_peering_connections) == 1
             assert vpc.vpc_peering_connections[0].id == vpc_pcx_id
    @@ -165,11 +150,11 @@ def test__describe_vpc_peering_connections__(self):
             ]
     
         # Test VPC Describe VPC Peering connections
    -    @mock_ec2
    +    @mock_aws
         def test__describe_route_tables__(self):
             # Generate VPC Client
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    -        _ = resource("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
    +        _ = resource("ec2", region_name=AWS_REGION_US_EAST_1)
     
             # Create VPCs peers as well as a route
             vpc = ec2_client.create_vpc(CidrBlock="10.0.0.0/16")
    @@ -195,7 +180,9 @@ def test__describe_route_tables__(self):
             # )
     
             # VPC client for this test class
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_US_EAST_1, AWS_REGION_EU_WEST_1]
    +        )
             vpc = VPC(audit_info)
             vpc.vpc_peering_connections[0].route_tables = [
                 Route(
    @@ -207,10 +194,10 @@ def test__describe_route_tables__(self):
             assert vpc.vpc_peering_connections[0].id == vpc_pcx_id
     
         # Test VPC Describe VPC Endpoints
    -    @mock_ec2
    +    @mock_aws
         def test__describe_vpc_endpoints__(self):
             # Generate VPC Client
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
             # Create VPC endpoint
             vpc = ec2_client.create_vpc(CidrBlock="10.0.0.0/16")["Vpc"]
     
    @@ -242,7 +229,9 @@ def test__describe_vpc_endpoints__(self):
                 ],
             )["VpcEndpoint"]["VpcEndpointId"]
             # VPC client for this test class
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_US_EAST_1, AWS_REGION_EU_WEST_1]
    +        )
             vpc = VPC(audit_info)
             assert len(vpc.vpc_endpoints) == 1
             assert vpc.vpc_endpoints[0].id == endpoint
    @@ -251,12 +240,11 @@ def test__describe_vpc_endpoints__(self):
             ]
     
         # Test VPC Describe VPC Endpoint Services
    -    @mock_ec2
    -    @mock_elbv2
    +    @mock_aws
         def test__describe_vpc_endpoint_services__(self):
             # Generate VPC Client
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    -        elbv2_client = client("elbv2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
    +        elbv2_client = client("elbv2", region_name=AWS_REGION_US_EAST_1)
     
             vpc = ec2_client.create_vpc(
                 CidrBlock="172.28.7.0/24", InstanceTenancy="default"
    @@ -264,7 +252,7 @@ def test__describe_vpc_endpoint_services__(self):
             subnet = ec2_client.create_subnet(
                 VpcId=vpc["Vpc"]["VpcId"],
                 CidrBlock="172.28.7.192/26",
    -            AvailabilityZone=f"{AWS_REGION}a",
    +            AvailabilityZone=f"{AWS_REGION_US_EAST_1}a",
             )
             lb_name = "lb_vpce-test"
             lb_arn = elbv2_client.create_load_balancer(
    @@ -286,11 +274,13 @@ def test__describe_vpc_endpoint_services__(self):
                 ],
             )
             endpoint_id = endpoint["ServiceConfiguration"]["ServiceId"]
    -        endpoint_arn = f"arn:aws:ec2:{AWS_REGION}:{AWS_ACCOUNT_NUMBER}:vpc-endpoint-service/{endpoint_id}"
    +        endpoint_arn = f"arn:aws:ec2:{AWS_REGION_US_EAST_1}:{AWS_ACCOUNT_NUMBER}:vpc-endpoint-service/{endpoint_id}"
             endpoint_service = endpoint["ServiceConfiguration"]["ServiceName"]
     
             # VPC client for this test class
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_US_EAST_1, AWS_REGION_EU_WEST_1]
    +        )
             vpc = VPC(audit_info)
     
             for vpce in vpc.vpc_endpoint_services:
    @@ -299,14 +289,14 @@ def test__describe_vpc_endpoint_services__(self):
                 assert vpce.service == endpoint_service
                 assert vpce.owner_id == AWS_ACCOUNT_NUMBER
                 assert vpce.allowed_principals == []
    -            assert vpce.region == AWS_REGION
    +            assert vpce.region == AWS_REGION_US_EAST_1
                 assert vpce.tags == []
     
         # Test VPC Describe VPC Subnets
    -    @mock_ec2
    +    @mock_aws
         def test__describe_vpc_subnets__(self):
             # Generate VPC Client
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
             # Create VPC
             vpc = ec2_client.create_vpc(
                 CidrBlock="172.28.7.0/24", InstanceTenancy="default"
    @@ -314,10 +304,12 @@ def test__describe_vpc_subnets__(self):
             subnet = ec2_client.create_subnet(
                 VpcId=vpc["Vpc"]["VpcId"],
                 CidrBlock="172.28.7.192/26",
    -            AvailabilityZone=f"{AWS_REGION}a",
    +            AvailabilityZone=f"{AWS_REGION_US_EAST_1}a",
             )
             # VPC client for this test class
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info(
    +            [AWS_REGION_US_EAST_1, AWS_REGION_EU_WEST_1]
    +        )
             vpc = VPC(audit_info)
             assert (
                 len(vpc.vpcs) == 3
    @@ -328,8 +320,8 @@ def test__describe_vpc_subnets__(self):
                     assert vpc.subnets[0].default is False
                     assert vpc.subnets[0].vpc_id == vpc.id
                     assert vpc.subnets[0].cidr_block == "172.28.7.192/26"
    -                assert vpc.subnets[0].availability_zone == f"{AWS_REGION}a"
    +                assert vpc.subnets[0].availability_zone == f"{AWS_REGION_US_EAST_1}a"
                     assert vpc.subnets[0].public is False
                     assert vpc.subnets[0].nat_gateway is False
    -                assert vpc.subnets[0].region == AWS_REGION
    +                assert vpc.subnets[0].region == AWS_REGION_US_EAST_1
                     assert vpc.subnets[0].tags is None
    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 6ff54eb3236..bf082e9916d 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
    @@ -1,50 +1,18 @@
     from unittest import mock
     
    -from boto3 import client, session
    -from moto import mock_ec2
    +from boto3 import client
    +from moto import mock_aws
     
    -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"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     
     class Test_vpc_subnet_different_az:
    -    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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=["us-east-1", "eu-west-1"],
    -            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
    -
    -    @mock_ec2
    +    @mock_aws
         def test_vpc_subnet_different_az(self):
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
             vpc = ec2_client.create_vpc(
                 CidrBlock="172.28.7.0/24",
                 InstanceTenancy="default",
    @@ -61,19 +29,19 @@ def test_vpc_subnet_different_az(self):
             ec2_client.create_subnet(
                 VpcId=vpc["Vpc"]["VpcId"],
                 CidrBlock="172.28.7.192/26",
    -            AvailabilityZone=f"{AWS_REGION}a",
    +            AvailabilityZone=f"{AWS_REGION_US_EAST_1}a",
             )
     
             # VPC AZ 2
             ec2_client.create_subnet(
                 VpcId=vpc["Vpc"]["VpcId"],
                 CidrBlock="172.28.7.0/26",
    -            AvailabilityZone=f"{AWS_REGION}b",
    +            AvailabilityZone=f"{AWS_REGION_US_EAST_1}b",
             )
     
             from prowler.providers.aws.services.vpc.vpc_service import VPC
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -103,13 +71,13 @@ def test_vpc_subnet_different_az(self):
                             assert result.resource_tags == [
                                 {"Key": "Name", "Value": "vpc_name"}
                             ]
    -                        assert result.region == AWS_REGION
    +                        assert result.region == AWS_REGION_US_EAST_1
                     if not found:
                         assert False
     
    -    @mock_ec2
    +    @mock_aws
         def test_vpc_subnet_same_az(self):
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
             vpc = ec2_client.create_vpc(
                 CidrBlock="172.28.7.0/24", InstanceTenancy="default"
             )
    @@ -117,19 +85,19 @@ def test_vpc_subnet_same_az(self):
             ec2_client.create_subnet(
                 VpcId=vpc["Vpc"]["VpcId"],
                 CidrBlock="172.28.7.192/26",
    -            AvailabilityZone=f"{AWS_REGION}a",
    +            AvailabilityZone=f"{AWS_REGION_US_EAST_1}a",
             )
     
             # VPC AZ 2
             ec2_client.create_subnet(
                 VpcId=vpc["Vpc"]["VpcId"],
                 CidrBlock="172.28.7.0/26",
    -            AvailabilityZone=f"{AWS_REGION}a",
    +            AvailabilityZone=f"{AWS_REGION_US_EAST_1}a",
             )
     
             from prowler.providers.aws.services.vpc.vpc_service import VPC
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -153,24 +121,24 @@ def test_vpc_subnet_same_az(self):
                             assert result.status == "FAIL"
                             assert (
                                 result.status_extended
    -                            == f"VPC {vpc['Vpc']['VpcId']} has only subnets in {AWS_REGION}a."
    +                            == f"VPC {vpc['Vpc']['VpcId']} has only subnets in {AWS_REGION_US_EAST_1}a."
                             )
                             assert result.resource_id == vpc["Vpc"]["VpcId"]
                             assert result.resource_tags == []
    -                        assert result.region == AWS_REGION
    +                        assert result.region == AWS_REGION_US_EAST_1
                     if not found:
                         assert False
     
    -    @mock_ec2
    +    @mock_aws
         def test_vpc_no_subnets(self):
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
             vpc = ec2_client.create_vpc(
                 CidrBlock="172.28.7.0/24", InstanceTenancy="default"
             )
     
             from prowler.providers.aws.services.vpc.vpc_service import VPC
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -198,6 +166,6 @@ def test_vpc_no_subnets(self):
                             )
                             assert result.resource_id == vpc["Vpc"]["VpcId"]
                             assert result.resource_tags == []
    -                        assert result.region == AWS_REGION
    +                        assert result.region == AWS_REGION_US_EAST_1
                     if not found:
                         assert False
    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 f0475ab2bb0..543db22e462 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
    @@ -1,57 +1,25 @@
     from unittest import mock
     
    -from boto3 import client, session
    -from moto import mock_ec2
    +from boto3 import client
    +from moto import mock_aws
     
    -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"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     
     class Test_vpc_subnet_no_public_ip_by_default:
    -    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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=["us-east-1", "eu-west-1"],
    -            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
    -
    -    @mock_ec2
    +    @mock_aws
         def test_vpc_with_map_ip_on_launch(self):
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
             vpc = ec2_client.create_vpc(
                 CidrBlock="172.28.7.0/24", InstanceTenancy="default"
             )
             subnet_private = ec2_client.create_subnet(
                 VpcId=vpc["Vpc"]["VpcId"],
                 CidrBlock="172.28.7.192/26",
    -            AvailabilityZone=f"{AWS_REGION}a",
    +            AvailabilityZone=f"{AWS_REGION_US_EAST_1}a",
                 TagSpecifications=[
                     {
                         "ResourceType": "subnet",
    @@ -69,7 +37,7 @@ def test_vpc_with_map_ip_on_launch(self):
     
             from prowler.providers.aws.services.vpc.vpc_service import VPC
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -94,16 +62,16 @@ def test_vpc_with_map_ip_on_launch(self):
                                 == "VPC subnet subnet_name assigns public IP by default."
                             )
     
    -    @mock_ec2
    +    @mock_aws
         def test_vpc_without_map_ip_on_launch(self):
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
             vpc = ec2_client.create_vpc(
                 CidrBlock="172.28.7.0/24", InstanceTenancy="default"
             )
             subnet_private = ec2_client.create_subnet(
                 VpcId=vpc["Vpc"]["VpcId"],
                 CidrBlock="172.28.7.192/26",
    -            AvailabilityZone=f"{AWS_REGION}a",
    +            AvailabilityZone=f"{AWS_REGION_US_EAST_1}a",
             )
     
             ec2_client.modify_subnet_attribute(
    @@ -113,7 +81,7 @@ def test_vpc_without_map_ip_on_launch(self):
     
             from prowler.providers.aws.services.vpc.vpc_service import VPC
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_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 7732c9da155..9cccbf9e819 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
    @@ -1,50 +1,18 @@
     from unittest import mock
     
    -from boto3 import client, session
    -from moto import mock_ec2
    +from boto3 import client
    +from moto import mock_aws
     
    -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"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_REGION_US_EAST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     
     class Test_vpc_subnet_separate_private_public:
    -    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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=["us-east-1", "eu-west-1"],
    -            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
    -
    -    @mock_ec2
    +    @mock_aws
         def test_vpc_subnet_only_private(self):
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
             vpc = ec2_client.create_vpc(
                 CidrBlock="172.28.7.0/24",
                 InstanceTenancy="default",
    @@ -61,7 +29,7 @@ def test_vpc_subnet_only_private(self):
             subnet_private = ec2_client.create_subnet(
                 VpcId=vpc["Vpc"]["VpcId"],
                 CidrBlock="172.28.7.192/26",
    -            AvailabilityZone=f"{AWS_REGION}a",
    +            AvailabilityZone=f"{AWS_REGION_US_EAST_1}a",
             )
             route_table_private = ec2_client.create_route_table(
                 VpcId=vpc["Vpc"]["VpcId"],
    @@ -77,7 +45,7 @@ def test_vpc_subnet_only_private(self):
     
             from prowler.providers.aws.services.vpc.vpc_service import VPC
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -107,13 +75,13 @@ def test_vpc_subnet_only_private(self):
                             assert result.resource_tags == [
                                 {"Key": "Name", "Value": "vpc_name"}
                             ]
    -                        assert result.region == AWS_REGION
    +                        assert result.region == AWS_REGION_US_EAST_1
                     if not found:
                         assert False
     
    -    @mock_ec2
    +    @mock_aws
         def test_vpc_subnet_only_public(self):
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
             vpc = ec2_client.create_vpc(
                 CidrBlock="172.28.7.0/24", InstanceTenancy="default"
             )
    @@ -121,7 +89,7 @@ def test_vpc_subnet_only_public(self):
             subnet_public = ec2_client.create_subnet(
                 VpcId=vpc["Vpc"]["VpcId"],
                 CidrBlock="172.28.7.192/26",
    -            AvailabilityZone=f"{AWS_REGION}a",
    +            AvailabilityZone=f"{AWS_REGION_US_EAST_1}a",
             )
             route_table_public = ec2_client.create_route_table(
                 VpcId=vpc["Vpc"]["VpcId"],
    @@ -139,7 +107,7 @@ def test_vpc_subnet_only_public(self):
     
             from prowler.providers.aws.services.vpc.vpc_service import VPC
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -167,13 +135,13 @@ def test_vpc_subnet_only_public(self):
                             )
                             assert result.resource_id == vpc["Vpc"]["VpcId"]
                             assert result.resource_tags == []
    -                        assert result.region == AWS_REGION
    +                        assert result.region == AWS_REGION_US_EAST_1
                     if not found:
                         assert False
     
    -    @mock_ec2
    +    @mock_aws
         def test_vpc_subnet_private_and_public(self):
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_US_EAST_1)
             vpc = ec2_client.create_vpc(
                 CidrBlock="172.28.7.0/24", InstanceTenancy="default"
             )
    @@ -181,7 +149,7 @@ def test_vpc_subnet_private_and_public(self):
             subnet_private = ec2_client.create_subnet(
                 VpcId=vpc["Vpc"]["VpcId"],
                 CidrBlock="172.28.7.192/26",
    -            AvailabilityZone=f"{AWS_REGION}a",
    +            AvailabilityZone=f"{AWS_REGION_US_EAST_1}a",
             )
             route_table_private = ec2_client.create_route_table(
                 VpcId=vpc["Vpc"]["VpcId"],
    @@ -198,7 +166,7 @@ def test_vpc_subnet_private_and_public(self):
             subnet_public = ec2_client.create_subnet(
                 VpcId=vpc["Vpc"]["VpcId"],
                 CidrBlock="172.28.7.0/26",
    -            AvailabilityZone=f"{AWS_REGION}a",
    +            AvailabilityZone=f"{AWS_REGION_US_EAST_1}a",
             )
             route_table_public = ec2_client.create_route_table(
                 VpcId=vpc["Vpc"]["VpcId"],
    @@ -216,7 +184,7 @@ def test_vpc_subnet_private_and_public(self):
     
             from prowler.providers.aws.services.vpc.vpc_service import VPC
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info([AWS_REGION_US_EAST_1])
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -244,6 +212,6 @@ def test_vpc_subnet_private_and_public(self):
                             )
                             assert result.resource_id == vpc["Vpc"]["VpcId"]
                             assert result.resource_tags == []
    -                        assert result.region == AWS_REGION
    +                        assert result.region == AWS_REGION_US_EAST_1
                     if not found:
                         assert False
    diff --git a/tests/providers/aws/services/waf/waf_service_test.py b/tests/providers/aws/services/waf/waf_service_test.py
    index 8851e961e75..c6c2305ca61 100644
    --- a/tests/providers/aws/services/waf/waf_service_test.py
    +++ b/tests/providers/aws/services/waf/waf_service_test.py
    @@ -1,14 +1,12 @@
     from unittest.mock import patch
     
     import botocore
    -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"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_REGION_EU_WEST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     # Mocking WAF-Regional Calls
     make_api_call = botocore.client.BaseClient._make_api_call
    @@ -33,10 +31,12 @@ def mock_make_api_call(self, operation_name, kwarg):
     
     
     # Mock generate_regional_clients()
    -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}
    +def mock_generate_regional_clients(service, audit_info):
    +    regional_client = audit_info.audit_session.client(
    +        service, region_name=AWS_REGION_EU_WEST_1
    +    )
    +    regional_client.region = AWS_REGION_EU_WEST_1
    +    return {AWS_REGION_EU_WEST_1: regional_client}
     
     
     # Patch every AWS call using Boto3 and generate_regional_clients to have 1 client
    @@ -46,48 +46,17 @@ def mock_generate_regional_clients(service, audit_info, _):
         new=mock_generate_regional_clients,
     )
     class Test_WAF_Service:
    -    # 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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=None,
    -            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
    -
         # Test WAF Service
         def test_service(self):
             # WAF client for this test class
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1])
             waf = WAF(audit_info)
             assert waf.service == "waf-regional"
     
         # Test WAF Client
         def test_client(self):
             # WAF client for this test class
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1])
             waf = WAF(audit_info)
             for regional_client in waf.regional_clients.values():
                 assert regional_client.__class__.__name__ == "WAFRegional"
    @@ -95,24 +64,24 @@ def test_client(self):
         # Test WAF Session
         def test__get_session__(self):
             # WAF client for this test class
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1])
             waf = WAF(audit_info)
             assert waf.session.__class__.__name__ == "Session"
     
         # Test WAF Describe Web ACLs
         def test__list_web_acls__(self):
             # WAF client for this test class
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1])
             waf = WAF(audit_info)
             assert len(waf.web_acls) == 1
             assert waf.web_acls[0].name == "my-web-acl"
    -        assert waf.web_acls[0].region == AWS_REGION
    +        assert waf.web_acls[0].region == AWS_REGION_EU_WEST_1
             assert waf.web_acls[0].id == "my-web-acl-id"
     
         # Test WAF Describe Web ACLs Resources
         def test__list_resources_for_web_acl__(self):
             # WAF client for this test class
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1])
             waf = WAF(audit_info)
             assert len(waf.web_acls) == 1
             assert len(waf.web_acls[0].albs) == 1
    diff --git a/tests/providers/aws/services/wafv2/wafv2_service_test.py b/tests/providers/aws/services/wafv2/wafv2_service_test.py
    index 5022c27cf79..f8af8ce43be 100644
    --- a/tests/providers/aws/services/wafv2/wafv2_service_test.py
    +++ b/tests/providers/aws/services/wafv2/wafv2_service_test.py
    @@ -1,75 +1,43 @@
    -from boto3 import client, resource, session
    -from moto import mock_ec2, mock_elbv2, mock_wafv2
    +from boto3 import client, resource
    +from moto import mock_aws
     
    -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"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_REGION_EU_WEST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     
     class Test_WAFv2_Service:
    -    # 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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=None,
    -            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
    -
         # Test WAFv2 Service
    -    @mock_wafv2
    +    @mock_aws
         def test_service(self):
             # WAFv2 client for this test class
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1])
             wafv2 = WAFv2(audit_info)
             assert wafv2.service == "wafv2"
     
         # Test WAFv2 Client
    -    @mock_wafv2
    +    @mock_aws
         def test_client(self):
             # WAFv2 client for this test class
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1])
             wafv2 = WAFv2(audit_info)
             for regional_client in wafv2.regional_clients.values():
                 assert regional_client.__class__.__name__ == "WAFV2"
     
         # Test WAFv2 Session
    -    @mock_wafv2
    +    @mock_aws
         def test__get_session__(self):
             # WAFv2 client for this test class
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1])
             wafv2 = WAFv2(audit_info)
             assert wafv2.session.__class__.__name__ == "Session"
     
         # Test WAFv2 Describe Web ACLs
    -    @mock_wafv2
    +    @mock_aws
         def test__list_web_acls__(self):
    -        wafv2 = client("wafv2", region_name="us-east-1")
    +        wafv2 = client("wafv2", region_name=AWS_REGION_EU_WEST_1)
             waf = wafv2.create_web_acl(
                 Scope="REGIONAL",
                 Name="my-web-acl",
    @@ -81,22 +49,20 @@ def test__list_web_acls__(self):
                 },
             )["Summary"]
             # WAFv2 client for this test class
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1])
             wafv2 = WAFv2(audit_info)
             assert len(wafv2.web_acls) == 1
             assert wafv2.web_acls[0].name == waf["Name"]
    -        assert wafv2.web_acls[0].region == AWS_REGION
    +        assert wafv2.web_acls[0].region == AWS_REGION_EU_WEST_1
             assert wafv2.web_acls[0].arn == waf["ARN"]
             assert wafv2.web_acls[0].id == waf["Id"]
     
         # Test WAFv2 Describe Web ACLs Resources
    -    @mock_ec2
    -    @mock_elbv2
    -    @mock_wafv2
    +    @mock_aws
         def test__list_resources_for_web_acl__(self):
    -        wafv2 = client("wafv2", region_name="us-east-1")
    -        conn = client("elbv2", region_name=AWS_REGION)
    -        ec2 = resource("ec2", region_name=AWS_REGION)
    +        wafv2 = client("wafv2", region_name=AWS_REGION_EU_WEST_1)
    +        conn = client("elbv2", region_name=AWS_REGION_EU_WEST_1)
    +        ec2 = resource("ec2", region_name=AWS_REGION_EU_WEST_1)
             waf = wafv2.create_web_acl(
                 Scope="REGIONAL",
                 Name="my-web-acl",
    @@ -112,10 +78,14 @@ def test__list_resources_for_web_acl__(self):
             )
             vpc = ec2.create_vpc(CidrBlock="172.28.7.0/24", InstanceTenancy="default")
             subnet1 = ec2.create_subnet(
    -            VpcId=vpc.id, CidrBlock="172.28.7.192/26", AvailabilityZone=f"{AWS_REGION}a"
    +            VpcId=vpc.id,
    +            CidrBlock="172.28.7.192/26",
    +            AvailabilityZone=f"{AWS_REGION_EU_WEST_1}a",
             )
             subnet2 = ec2.create_subnet(
    -            VpcId=vpc.id, CidrBlock="172.28.7.0/26", AvailabilityZone=f"{AWS_REGION}b"
    +            VpcId=vpc.id,
    +            CidrBlock="172.28.7.0/26",
    +            AvailabilityZone=f"{AWS_REGION_EU_WEST_1}b",
             )
     
             lb = conn.create_load_balancer(
    @@ -128,7 +98,7 @@ def test__list_resources_for_web_acl__(self):
     
             wafv2.associate_web_acl(WebACLArn=waf["ARN"], ResourceArn=lb["LoadBalancerArn"])
             # WAFv2 client for this test class
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1])
             wafv2 = WAFv2(audit_info)
             wafv2.web_acls[0].albs.append(lb["LoadBalancerArn"])
             assert len(wafv2.web_acls) == 1
    diff --git a/tests/providers/aws/services/wafv2/wafv2_webacl_logging_enabled/wafv2_webacl_logging_enabled_test.py b/tests/providers/aws/services/wafv2/wafv2_webacl_logging_enabled/wafv2_webacl_logging_enabled_test.py
    index 8e782fcbb3a..1f557324c73 100644
    --- a/tests/providers/aws/services/wafv2/wafv2_webacl_logging_enabled/wafv2_webacl_logging_enabled_test.py
    +++ b/tests/providers/aws/services/wafv2/wafv2_webacl_logging_enabled/wafv2_webacl_logging_enabled_test.py
    @@ -2,12 +2,14 @@
     from uuid import uuid4
     
     from prowler.providers.aws.services.wafv2.wafv2_service import WebAclv2
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_ACCOUNT_NUMBER,
    +    AWS_REGION_EU_WEST_1,
    +)
     
    -AWS_REGION = "eu-west-1"
    -AWS_ACCOUNT_NUMBER = "123456789012"
     waf_id = str(uuid4())
     waf_name = "waf-example"
    -waf_arn = f"arn:aws:wafv2:{AWS_REGION}:{AWS_ACCOUNT_NUMBER}:regional/webacl/{waf_name}/{waf_id}"
    +waf_arn = f"arn:aws:wafv2:{AWS_REGION_EU_WEST_1}:{AWS_ACCOUNT_NUMBER}:regional/webacl/{waf_name}/{waf_id}"
     
     
     class Test_wafv2_webacl_logging_enabled:
    @@ -39,7 +41,7 @@ def test_wafv2_wb_acl_with_logging(self):
                     name=waf_name,
                     id=waf_id,
                     albs=[],
    -                region=AWS_REGION,
    +                region=AWS_REGION_EU_WEST_1,
                     logging_enabled=True,
                 )
             )
    @@ -64,7 +66,7 @@ def test_wafv2_wb_acl_with_logging(self):
                 )
                 assert result[0].resource_id == waf_id
                 assert result[0].resource_arn == waf_arn
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_EU_WEST_1
     
         def test_wafv2_wb_acl_without_logging(self):
             wafv2_client = mock.MagicMock
    @@ -76,7 +78,7 @@ def test_wafv2_wb_acl_without_logging(self):
                     name=waf_name,
                     id=waf_id,
                     albs=[],
    -                region=AWS_REGION,
    +                region=AWS_REGION_EU_WEST_1,
                     logging_enabled=False,
                 )
             )
    @@ -101,4 +103,4 @@ def test_wafv2_wb_acl_without_logging(self):
                 )
                 assert result[0].resource_id == waf_id
                 assert result[0].resource_arn == waf_arn
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_EU_WEST_1
    diff --git a/tests/providers/aws/services/wellarchitected/wellarchitected_service_test.py b/tests/providers/aws/services/wellarchitected/wellarchitected_service_test.py
    index 345a937b783..8a32598aaa0 100644
    --- a/tests/providers/aws/services/wellarchitected/wellarchitected_service_test.py
    +++ b/tests/providers/aws/services/wellarchitected/wellarchitected_service_test.py
    @@ -2,17 +2,15 @@
     from uuid import uuid4
     
     import botocore
    -from boto3 import session
     
    -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"
    -
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_ACCOUNT_NUMBER,
    +    AWS_REGION_EU_WEST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     workload_id = str(uuid4())
     
    @@ -25,7 +23,7 @@ def mock_make_api_call(self, operation_name, kwarg):
                 "WorkloadSummaries": [
                     {
                         "WorkloadId": workload_id,
    -                    "WorkloadArn": f"arn:aws:wellarchitected:{AWS_REGION}:{AWS_ACCOUNT_NUMBER}:workload/{workload_id}",
    +                    "WorkloadArn": f"arn:aws:wellarchitected:{AWS_REGION_EU_WEST_1}:{AWS_ACCOUNT_NUMBER}:workload/{workload_id}",
                         "WorkloadName": "test",
                         "Owner": AWS_ACCOUNT_NUMBER,
                         "UpdatedAt": "2023-06-07T15:40:24+02:00",
    @@ -42,10 +40,12 @@ 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, _):
    -    regional_client = audit_info.audit_session.client(service, region_name=AWS_REGION)
    -    regional_client.region = AWS_REGION
    -    return {AWS_REGION: regional_client}
    +def mock_generate_regional_clients(service, audit_info):
    +    regional_client = audit_info.audit_session.client(
    +        service, region_name=AWS_REGION_EU_WEST_1
    +    )
    +    regional_client.region = AWS_REGION_EU_WEST_1
    +    return {AWS_REGION_EU_WEST_1: regional_client}
     
     
     @patch("botocore.client.BaseClient._make_api_call", new=mock_make_api_call)
    @@ -54,68 +54,37 @@ def mock_generate_regional_clients(service, audit_info, _):
         new=mock_generate_regional_clients,
     )
     class Test_WellArchitected_Service:
    -    # 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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=None,
    -            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
    -
         # Test WellArchitected Service
         def test_service(self):
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1])
             wellarchitected = WellArchitected(audit_info)
             assert wellarchitected.service == "wellarchitected"
     
         # Test WellArchitected client
         def test_client(self):
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1])
             wellarchitected = WellArchitected(audit_info)
             for reg_client in wellarchitected.regional_clients.values():
                 assert reg_client.__class__.__name__ == "WellArchitected"
     
         # Test WellArchitected session
         def test__get_session__(self):
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1])
             wellarchitected = WellArchitected(audit_info)
             assert wellarchitected.session.__class__.__name__ == "Session"
     
         # Test WellArchitected list workloads
         def test__list_workloads__(self):
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1])
             wellarchitected = WellArchitected(audit_info)
             assert len(wellarchitected.workloads) == 1
             assert wellarchitected.workloads[0].id == workload_id
             assert (
                 wellarchitected.workloads[0].arn
    -            == f"arn:aws:wellarchitected:{AWS_REGION}:{AWS_ACCOUNT_NUMBER}:workload/{workload_id}"
    +            == f"arn:aws:wellarchitected:{AWS_REGION_EU_WEST_1}:{AWS_ACCOUNT_NUMBER}:workload/{workload_id}"
             )
             assert wellarchitected.workloads[0].name == "test"
    -        assert wellarchitected.workloads[0].region == AWS_REGION
    +        assert wellarchitected.workloads[0].region == AWS_REGION_EU_WEST_1
             assert wellarchitected.workloads[0].tags == [
                 {"Key": "test", "Value": "test"},
             ]
    diff --git a/tests/providers/aws/services/wellarchitected/wellarchitected_workload_no_high_or_medium_risks/wellarchitected_workload_no_high_or_medium_risks_test.py b/tests/providers/aws/services/wellarchitected/wellarchitected_workload_no_high_or_medium_risks/wellarchitected_workload_no_high_or_medium_risks_test.py
    index 9d6cd2f246d..99e0ce765f6 100644
    --- a/tests/providers/aws/services/wellarchitected/wellarchitected_workload_no_high_or_medium_risks/wellarchitected_workload_no_high_or_medium_risks_test.py
    +++ b/tests/providers/aws/services/wellarchitected/wellarchitected_workload_no_high_or_medium_risks/wellarchitected_workload_no_high_or_medium_risks_test.py
    @@ -5,9 +5,10 @@
     from prowler.providers.aws.services.wellarchitected.wellarchitected_service import (
         Workload,
     )
    -
    -AWS_REGION = "eu-west-1"
    -AWS_ACCOUNT_NUMBER = "123456789012"
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_ACCOUNT_NUMBER,
    +    AWS_REGION_EU_WEST_1,
    +)
     
     workload_id = str(uuid4())
     
    @@ -37,12 +38,12 @@ def test_wellarchitected_no_risks(self):
             wellarchitected_client.workloads.append(
                 Workload(
                     id=workload_id,
    -                arn=f"arn:aws:wellarchitected:{AWS_REGION}:{AWS_ACCOUNT_NUMBER}:workload/{workload_id}",
    +                arn=f"arn:aws:wellarchitected:{AWS_REGION_EU_WEST_1}:{AWS_ACCOUNT_NUMBER}:workload/{workload_id}",
                     name="test",
                     lenses=["wellarchitected", "serverless", "softwareasaservice"],
                     improvement_status="NOT_APPLICABLE",
                     risks={},
    -                region=AWS_REGION,
    +                region=AWS_REGION_EU_WEST_1,
                 )
             )
             with mock.patch(
    @@ -66,7 +67,7 @@ def test_wellarchitected_no_risks(self):
                 assert result[0].resource_id == workload_id
                 assert (
                     result[0].resource_arn
    -                == f"arn:aws:wellarchitected:{AWS_REGION}:{AWS_ACCOUNT_NUMBER}:workload/{workload_id}"
    +                == f"arn:aws:wellarchitected:{AWS_REGION_EU_WEST_1}:{AWS_ACCOUNT_NUMBER}:workload/{workload_id}"
                 )
     
         def test_wellarchitected_no_high_medium_risks(self):
    @@ -75,7 +76,7 @@ def test_wellarchitected_no_high_medium_risks(self):
             wellarchitected_client.workloads.append(
                 Workload(
                     id=workload_id,
    -                arn=f"arn:aws:wellarchitected:{AWS_REGION}:{AWS_ACCOUNT_NUMBER}:workload/{workload_id}",
    +                arn=f"arn:aws:wellarchitected:{AWS_REGION_EU_WEST_1}:{AWS_ACCOUNT_NUMBER}:workload/{workload_id}",
                     name="test",
                     lenses=["wellarchitected", "serverless", "softwareasaservice"],
                     improvement_status="NOT_APPLICABLE",
    @@ -83,7 +84,7 @@ def test_wellarchitected_no_high_medium_risks(self):
                         "UNANSWERED": 56,
                         "NOT_APPLICABLE": 4,
                     },
    -                region=AWS_REGION,
    +                region=AWS_REGION_EU_WEST_1,
                 )
             )
             with mock.patch(
    @@ -107,7 +108,7 @@ def test_wellarchitected_no_high_medium_risks(self):
                 assert result[0].resource_id == workload_id
                 assert (
                     result[0].resource_arn
    -                == f"arn:aws:wellarchitected:{AWS_REGION}:{AWS_ACCOUNT_NUMBER}:workload/{workload_id}"
    +                == f"arn:aws:wellarchitected:{AWS_REGION_EU_WEST_1}:{AWS_ACCOUNT_NUMBER}:workload/{workload_id}"
                 )
     
         def test_wellarchitected_with_high_medium_risks(self):
    @@ -116,7 +117,7 @@ def test_wellarchitected_with_high_medium_risks(self):
             wellarchitected_client.workloads.append(
                 Workload(
                     id=workload_id,
    -                arn=f"arn:aws:wellarchitected:{AWS_REGION}:{AWS_ACCOUNT_NUMBER}:workload/{workload_id}",
    +                arn=f"arn:aws:wellarchitected:{AWS_REGION_EU_WEST_1}:{AWS_ACCOUNT_NUMBER}:workload/{workload_id}",
                     name="test",
                     lenses=["wellarchitected", "serverless", "softwareasaservice"],
                     improvement_status="NOT_APPLICABLE",
    @@ -126,7 +127,7 @@ def test_wellarchitected_with_high_medium_risks(self):
                         "HIGH": 10,
                         "MEDIUM": 20,
                     },
    -                region=AWS_REGION,
    +                region=AWS_REGION_EU_WEST_1,
                 )
             )
             with mock.patch(
    @@ -150,5 +151,5 @@ def test_wellarchitected_with_high_medium_risks(self):
                 assert result[0].resource_id == workload_id
                 assert (
                     result[0].resource_arn
    -                == f"arn:aws:wellarchitected:{AWS_REGION}:{AWS_ACCOUNT_NUMBER}:workload/{workload_id}"
    +                == f"arn:aws:wellarchitected:{AWS_REGION_EU_WEST_1}:{AWS_ACCOUNT_NUMBER}:workload/{workload_id}"
                 )
    diff --git a/tests/providers/aws/services/workspaces/workspaces_service_test.py b/tests/providers/aws/services/workspaces/workspaces_service_test.py
    index 347d18ffdcb..4b66ad908dd 100644
    --- a/tests/providers/aws/services/workspaces/workspaces_service_test.py
    +++ b/tests/providers/aws/services/workspaces/workspaces_service_test.py
    @@ -2,15 +2,12 @@
     from uuid import uuid4
     
     import botocore
    -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"
    -
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_REGION_EU_WEST_1,
    +    set_mocked_aws_audit_info,
    +)
     
     workspace_id = str(uuid4())
     
    @@ -38,10 +35,12 @@ 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, _):
    -    regional_client = audit_info.audit_session.client(service, region_name=AWS_REGION)
    -    regional_client.region = AWS_REGION
    -    return {AWS_REGION: regional_client}
    +def mock_generate_regional_clients(service, audit_info):
    +    regional_client = audit_info.audit_session.client(
    +        service, region_name=AWS_REGION_EU_WEST_1
    +    )
    +    regional_client.region = AWS_REGION_EU_WEST_1
    +    return {AWS_REGION_EU_WEST_1: regional_client}
     
     
     @patch("botocore.client.BaseClient._make_api_call", new=mock_make_api_call)
    @@ -50,63 +49,32 @@ def mock_generate_regional_clients(service, audit_info, _):
         new=mock_generate_regional_clients,
     )
     class Test_WorkSpaces_Service:
    -    # 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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=None,
    -            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
    -
         # Test WorkSpaces Service
         def test_service(self):
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1])
             workspaces = WorkSpaces(audit_info)
             assert workspaces.service == "workspaces"
     
         # Test WorkSpaces client
         def test_client(self):
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1])
             workspaces = WorkSpaces(audit_info)
             for reg_client in workspaces.regional_clients.values():
                 assert reg_client.__class__.__name__ == "WorkSpaces"
     
         # Test WorkSpaces session
         def test__get_session__(self):
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1])
             workspaces = WorkSpaces(audit_info)
             assert workspaces.session.__class__.__name__ == "Session"
     
         # Test WorkSpaces describe workspaces
         def test__describe_workspaces__(self):
    -        audit_info = self.set_mocked_audit_info()
    +        audit_info = set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1])
             workspaces = WorkSpaces(audit_info)
             assert len(workspaces.workspaces) == 1
             assert workspaces.workspaces[0].id == workspace_id
    -        assert workspaces.workspaces[0].region == AWS_REGION
    +        assert workspaces.workspaces[0].region == AWS_REGION_EU_WEST_1
             assert workspaces.workspaces[0].tags == [
                 {"Key": "test", "Value": "test"},
             ]
    diff --git a/tests/providers/aws/services/workspaces/workspaces_volume_encryption_enabled/workspaces_volume_encryption_enabled_test.py b/tests/providers/aws/services/workspaces/workspaces_volume_encryption_enabled/workspaces_volume_encryption_enabled_test.py
    index d92d40db94f..5ae74c3ff5e 100644
    --- a/tests/providers/aws/services/workspaces/workspaces_volume_encryption_enabled/workspaces_volume_encryption_enabled_test.py
    +++ b/tests/providers/aws/services/workspaces/workspaces_volume_encryption_enabled/workspaces_volume_encryption_enabled_test.py
    @@ -3,13 +3,13 @@
     from uuid import uuid4
     
     from prowler.providers.aws.services.workspaces.workspaces_service import WorkSpace
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_ACCOUNT_NUMBER,
    +    AWS_REGION_EU_WEST_1,
    +)
     
    -AWS_REGION = "eu-west-1"
    -AWS_ACCOUNT_NUMBER = "123456789012"
     WORKSPACE_ID = str(uuid4())
    -WORKSPACE_ARN = (
    -    f"arn:aws:workspaces:{AWS_REGION}:{AWS_ACCOUNT_NUMBER}:workspace/{WORKSPACE_ID}"
    -)
    +WORKSPACE_ARN = f"arn:aws:workspaces:{AWS_REGION_EU_WEST_1}:{AWS_ACCOUNT_NUMBER}:workspace/{WORKSPACE_ID}"
     
     
     class Test_workspaces_volume_encryption_enabled:
    @@ -38,7 +38,7 @@ def test_workspaces_encrypted(self):
                 WorkSpace(
                     id=WORKSPACE_ID,
                     arn=WORKSPACE_ARN,
    -                region=AWS_REGION,
    +                region=AWS_REGION_EU_WEST_1,
                     user_volume_encryption_enabled=True,
                     root_volume_encryption_enabled=True,
                     subnet_id="subnet-12345678",
    @@ -64,7 +64,7 @@ def test_workspaces_encrypted(self):
                 )
                 assert result[0].resource_id == WORKSPACE_ID
                 assert result[0].resource_arn == WORKSPACE_ARN
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_EU_WEST_1
     
         def test_workspaces_user_not_encrypted(self):
             workspaces_client = mock.MagicMock
    @@ -73,7 +73,7 @@ def test_workspaces_user_not_encrypted(self):
                 WorkSpace(
                     id=WORKSPACE_ID,
                     arn=WORKSPACE_ARN,
    -                region=AWS_REGION,
    +                region=AWS_REGION_EU_WEST_1,
                     user_volume_encryption_enabled=False,
                     root_volume_encryption_enabled=True,
                     subnet_id="subnet-12345678",
    @@ -97,7 +97,7 @@ def test_workspaces_user_not_encrypted(self):
                 assert search("user unencrypted volumes", result[0].status_extended)
                 assert result[0].resource_id == WORKSPACE_ID
                 assert result[0].resource_arn == WORKSPACE_ARN
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_EU_WEST_1
     
         def test_workspaces_root_not_encrypted(self):
             workspaces_client = mock.MagicMock
    @@ -106,7 +106,7 @@ def test_workspaces_root_not_encrypted(self):
                 WorkSpace(
                     id=WORKSPACE_ID,
                     arn=WORKSPACE_ARN,
    -                region=AWS_REGION,
    +                region=AWS_REGION_EU_WEST_1,
                     user_volume_encryption_enabled=True,
                     root_volume_encryption_enabled=False,
                     subnet_id="subnet-12345678",
    @@ -130,7 +130,7 @@ def test_workspaces_root_not_encrypted(self):
                 assert search("root unencrypted volumes", result[0].status_extended)
                 assert result[0].resource_id == WORKSPACE_ID
                 assert result[0].resource_arn == WORKSPACE_ARN
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_EU_WEST_1
     
         def test_workspaces_user_and_root_not_encrypted(self):
             workspaces_client = mock.MagicMock
    @@ -139,7 +139,7 @@ def test_workspaces_user_and_root_not_encrypted(self):
                 WorkSpace(
                     id=WORKSPACE_ID,
                     arn=WORKSPACE_ARN,
    -                region=AWS_REGION,
    +                region=AWS_REGION_EU_WEST_1,
                     user_volume_encryption_enabled=False,
                     root_volume_encryption_enabled=False,
                     subnet_id="subnet-12345678",
    @@ -165,4 +165,4 @@ def test_workspaces_user_and_root_not_encrypted(self):
                 )
                 assert result[0].resource_id == WORKSPACE_ID
                 assert result[0].resource_arn == WORKSPACE_ARN
    -            assert result[0].region == AWS_REGION
    +            assert result[0].region == AWS_REGION_EU_WEST_1
    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 4633c500b5f..55522532c93 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
    @@ -1,54 +1,22 @@
     from unittest import mock
     from uuid import uuid4
     
    -from boto3 import client, session
    -from moto import mock_ec2
    +from boto3 import client
    +from moto import mock_aws
     
    -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
    +from tests.providers.aws.audit_info_utils import (
    +    AWS_ACCOUNT_NUMBER,
    +    AWS_REGION_EU_WEST_1,
    +    set_mocked_aws_audit_info,
    +)
     
    -AWS_REGION = "eu-west-1"
    -AWS_ACCOUNT_NUMBER = "123456789012"
     WORKSPACE_ID = str(uuid4())
    -WORKSPACE_ARN = (
    -    f"arn:aws:workspaces:{AWS_REGION}:{AWS_ACCOUNT_NUMBER}:workspace/{WORKSPACE_ID}"
    -)
    +WORKSPACE_ARN = f"arn:aws:workspaces:{AWS_REGION_EU_WEST_1}:{AWS_ACCOUNT_NUMBER}:workspace/{WORKSPACE_ID}"
     
     
     class Test_workspaces_vpc_2private_1public_subnets_nat:
    -    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=f"arn:aws:iam::{AWS_ACCOUNT_NUMBER}:root",
    -            audited_user_id=None,
    -            audited_partition="aws",
    -            audited_identity_arn=None,
    -            profile=None,
    -            profile_region=None,
    -            credentials=None,
    -            assumed_role_info=None,
    -            audited_regions=["us-east-1", "eu-west-1"],
    -            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
    -
         def test_no_workspaces(self):
             workspaces_client = mock.MagicMock
             workspaces_client.workspaces = []
    @@ -78,13 +46,13 @@ def test_workspaces_no_subnet(self):
                 WorkSpace(
                     id=WORKSPACE_ID,
                     arn=WORKSPACE_ARN,
    -                region=AWS_REGION,
    +                region=AWS_REGION_EU_WEST_1,
                     user_volume_encryption_enabled=True,
                     root_volume_encryption_enabled=True,
                 )
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1])
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -112,12 +80,12 @@ def test_workspaces_no_subnet(self):
                         )
                         assert result[0].resource_id == WORKSPACE_ID
                         assert result[0].resource_arn == WORKSPACE_ARN
    -                    assert result[0].region == AWS_REGION
    +                    assert result[0].region == AWS_REGION_EU_WEST_1
     
    -    @mock_ec2
    +    @mock_aws
         def test_workspaces_vpc_one_private_subnet(self):
             # EC2 Client
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_EU_WEST_1)
             vpc = ec2_client.create_vpc(
                 CidrBlock="172.28.7.0/24", InstanceTenancy="default"
             )
    @@ -125,7 +93,7 @@ def test_workspaces_vpc_one_private_subnet(self):
             subnet_private = ec2_client.create_subnet(
                 VpcId=vpc["Vpc"]["VpcId"],
                 CidrBlock="172.28.7.0/26",
    -            AvailabilityZone=f"{AWS_REGION}a",
    +            AvailabilityZone=f"{AWS_REGION_EU_WEST_1}a",
             )
             route_table_private = ec2_client.create_route_table(
                 VpcId=vpc["Vpc"]["VpcId"],
    @@ -145,14 +113,14 @@ def test_workspaces_vpc_one_private_subnet(self):
                 WorkSpace(
                     id=WORKSPACE_ID,
                     arn=WORKSPACE_ARN,
    -                region=AWS_REGION,
    +                region=AWS_REGION_EU_WEST_1,
                     user_volume_encryption_enabled=True,
                     root_volume_encryption_enabled=True,
                     subnet_id=subnet_private["Subnet"]["SubnetId"],
                 )
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1])
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -180,12 +148,12 @@ def test_workspaces_vpc_one_private_subnet(self):
                         )
                         assert result[0].resource_id == WORKSPACE_ID
                         assert result[0].resource_arn == WORKSPACE_ARN
    -                    assert result[0].region == AWS_REGION
    +                    assert result[0].region == AWS_REGION_EU_WEST_1
     
    -    @mock_ec2
    +    @mock_aws
         def test_workspaces_vpc_two_private_subnet(self):
             # EC2 Client
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_EU_WEST_1)
             vpc = ec2_client.create_vpc(
                 CidrBlock="172.28.7.0/24", InstanceTenancy="default"
             )
    @@ -193,7 +161,7 @@ def test_workspaces_vpc_two_private_subnet(self):
             subnet_private = ec2_client.create_subnet(
                 VpcId=vpc["Vpc"]["VpcId"],
                 CidrBlock="172.28.7.0/26",
    -            AvailabilityZone=f"{AWS_REGION}a",
    +            AvailabilityZone=f"{AWS_REGION_EU_WEST_1}a",
             )
             route_table_private = ec2_client.create_route_table(
                 VpcId=vpc["Vpc"]["VpcId"],
    @@ -210,7 +178,7 @@ def test_workspaces_vpc_two_private_subnet(self):
             subnet_private_2 = ec2_client.create_subnet(
                 VpcId=vpc["Vpc"]["VpcId"],
                 CidrBlock="172.28.7.64/26",
    -            AvailabilityZone=f"{AWS_REGION}a",
    +            AvailabilityZone=f"{AWS_REGION_EU_WEST_1}a",
             )
             route_table_private_2 = ec2_client.create_route_table(
                 VpcId=vpc["Vpc"]["VpcId"],
    @@ -230,14 +198,14 @@ def test_workspaces_vpc_two_private_subnet(self):
                 WorkSpace(
                     id=WORKSPACE_ID,
                     arn=WORKSPACE_ARN,
    -                region=AWS_REGION,
    +                region=AWS_REGION_EU_WEST_1,
                     user_volume_encryption_enabled=True,
                     root_volume_encryption_enabled=True,
                     subnet_id=subnet_private["Subnet"]["SubnetId"],
                 )
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1])
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -265,12 +233,12 @@ def test_workspaces_vpc_two_private_subnet(self):
                         )
                         assert result[0].resource_id == WORKSPACE_ID
                         assert result[0].resource_arn == WORKSPACE_ARN
    -                    assert result[0].region == AWS_REGION
    +                    assert result[0].region == AWS_REGION_EU_WEST_1
     
    -    @mock_ec2
    +    @mock_aws
         def test_workspaces_vpc_two_private_subnet_one_public(self):
             # EC2 Client
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_EU_WEST_1)
             vpc = ec2_client.create_vpc(
                 CidrBlock="172.28.7.0/24", InstanceTenancy="default"
             )
    @@ -278,7 +246,7 @@ def test_workspaces_vpc_two_private_subnet_one_public(self):
             subnet_private = ec2_client.create_subnet(
                 VpcId=vpc["Vpc"]["VpcId"],
                 CidrBlock="172.28.7.0/26",
    -            AvailabilityZone=f"{AWS_REGION}a",
    +            AvailabilityZone=f"{AWS_REGION_EU_WEST_1}a",
             )
             route_table_private = ec2_client.create_route_table(
                 VpcId=vpc["Vpc"]["VpcId"],
    @@ -295,7 +263,7 @@ def test_workspaces_vpc_two_private_subnet_one_public(self):
             subnet_private_2 = ec2_client.create_subnet(
                 VpcId=vpc["Vpc"]["VpcId"],
                 CidrBlock="172.28.7.64/26",
    -            AvailabilityZone=f"{AWS_REGION}a",
    +            AvailabilityZone=f"{AWS_REGION_EU_WEST_1}a",
             )
             route_table_private_2 = ec2_client.create_route_table(
                 VpcId=vpc["Vpc"]["VpcId"],
    @@ -312,7 +280,7 @@ def test_workspaces_vpc_two_private_subnet_one_public(self):
             subnet_public = ec2_client.create_subnet(
                 VpcId=vpc["Vpc"]["VpcId"],
                 CidrBlock="172.28.7.192/26",
    -            AvailabilityZone=f"{AWS_REGION}a",
    +            AvailabilityZone=f"{AWS_REGION_EU_WEST_1}a",
             )
             route_table_public = ec2_client.create_route_table(
                 VpcId=vpc["Vpc"]["VpcId"],
    @@ -334,14 +302,14 @@ def test_workspaces_vpc_two_private_subnet_one_public(self):
                 WorkSpace(
                     id=WORKSPACE_ID,
                     arn=WORKSPACE_ARN,
    -                region=AWS_REGION,
    +                region=AWS_REGION_EU_WEST_1,
                     user_volume_encryption_enabled=True,
                     root_volume_encryption_enabled=True,
                     subnet_id=subnet_private["Subnet"]["SubnetId"],
                 )
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1])
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -369,12 +337,12 @@ def test_workspaces_vpc_two_private_subnet_one_public(self):
                         )
                         assert result[0].resource_id == WORKSPACE_ID
                         assert result[0].resource_arn == WORKSPACE_ARN
    -                    assert result[0].region == AWS_REGION
    +                    assert result[0].region == AWS_REGION_EU_WEST_1
     
    -    @mock_ec2
    +    @mock_aws
         def test_workspaces_vpc_two_private_subnet_one_public_and_nat(self):
             # EC2 Client
    -        ec2_client = client("ec2", region_name=AWS_REGION)
    +        ec2_client = client("ec2", region_name=AWS_REGION_EU_WEST_1)
             vpc = ec2_client.create_vpc(
                 CidrBlock="172.28.7.0/24", InstanceTenancy="default"
             )
    @@ -382,7 +350,7 @@ def test_workspaces_vpc_two_private_subnet_one_public_and_nat(self):
             subnet_private = ec2_client.create_subnet(
                 VpcId=vpc["Vpc"]["VpcId"],
                 CidrBlock="172.28.7.0/26",
    -            AvailabilityZone=f"{AWS_REGION}a",
    +            AvailabilityZone=f"{AWS_REGION_EU_WEST_1}a",
             )
             route_table_private = ec2_client.create_route_table(
                 VpcId=vpc["Vpc"]["VpcId"],
    @@ -399,7 +367,7 @@ def test_workspaces_vpc_two_private_subnet_one_public_and_nat(self):
             subnet_private_2 = ec2_client.create_subnet(
                 VpcId=vpc["Vpc"]["VpcId"],
                 CidrBlock="172.28.7.64/26",
    -            AvailabilityZone=f"{AWS_REGION}a",
    +            AvailabilityZone=f"{AWS_REGION_EU_WEST_1}a",
             )
             route_table_private_2 = ec2_client.create_route_table(
                 VpcId=vpc["Vpc"]["VpcId"],
    @@ -424,7 +392,7 @@ def test_workspaces_vpc_two_private_subnet_one_public_and_nat(self):
             subnet_public = ec2_client.create_subnet(
                 VpcId=vpc["Vpc"]["VpcId"],
                 CidrBlock="172.28.7.192/26",
    -            AvailabilityZone=f"{AWS_REGION}a",
    +            AvailabilityZone=f"{AWS_REGION_EU_WEST_1}a",
             )
             route_table_public = ec2_client.create_route_table(
                 VpcId=vpc["Vpc"]["VpcId"],
    @@ -446,14 +414,14 @@ def test_workspaces_vpc_two_private_subnet_one_public_and_nat(self):
                 WorkSpace(
                     id=WORKSPACE_ID,
                     arn=WORKSPACE_ARN,
    -                region=AWS_REGION,
    +                region=AWS_REGION_EU_WEST_1,
                     user_volume_encryption_enabled=True,
                     root_volume_encryption_enabled=True,
                     subnet_id=subnet_private["Subnet"]["SubnetId"],
                 )
             )
     
    -        current_audit_info = self.set_mocked_audit_info()
    +        current_audit_info = set_mocked_aws_audit_info([AWS_REGION_EU_WEST_1])
     
             with mock.patch(
                 "prowler.providers.aws.lib.audit_info.audit_info.current_audit_info",
    @@ -481,4 +449,4 @@ def test_workspaces_vpc_two_private_subnet_one_public_and_nat(self):
                         )
                         assert result[0].resource_id == WORKSPACE_ID
                         assert result[0].resource_arn == WORKSPACE_ARN
    -                    assert result[0].region == AWS_REGION
    +                    assert result[0].region == AWS_REGION_EU_WEST_1
    diff --git a/tests/providers/azure/azure_fixtures.py b/tests/providers/azure/azure_fixtures.py
    new file mode 100644
    index 00000000000..55741defff3
    --- /dev/null
    +++ b/tests/providers/azure/azure_fixtures.py
    @@ -0,0 +1,43 @@
    +from uuid import uuid4
    +
    +from azure.identity import DefaultAzureCredential
    +
    +from prowler.providers.azure.lib.audit_info.models import (
    +    Azure_Audit_Info,
    +    Azure_Identity_Info,
    +    Azure_Region_Config,
    +)
    +
    +AZURE_SUBSCRIPTION = str(uuid4())
    +
    +# Azure Identity
    +IDENTITY_ID = "00000000-0000-0000-0000-000000000000"
    +IDENTITY_TYPE = "Service Principal"
    +TENANT_IDS = ["00000000-0000-0000-0000-000000000000"]
    +DOMAIN = "user.onmicrosoft.com"
    +
    +
    +# Mocked Azure Audit Info
    +def set_mocked_azure_audit_info(
    +    credentials: DefaultAzureCredential = DefaultAzureCredential(),
    +    identity: Azure_Identity_Info = Azure_Identity_Info(
    +        identity_id=IDENTITY_ID,
    +        identity_type=IDENTITY_TYPE,
    +        tenant_ids=TENANT_IDS,
    +        domain=DOMAIN,
    +        subscriptions={AZURE_SUBSCRIPTION: "id_subscription"},
    +    ),
    +    audit_config: dict = None,
    +    azure_region_config: Azure_Region_Config = Azure_Region_Config(),
    +    locations: list = None,
    +):
    +    audit_info = Azure_Audit_Info(
    +        credentials=credentials,
    +        identity=identity,
    +        audit_metadata=None,
    +        audit_resources=None,
    +        audit_config=audit_config,
    +        azure_region_config=azure_region_config,
    +        locations=locations,
    +    )
    +    return audit_info
    diff --git a/tests/providers/azure/services/app/app_client_certificates_on/app_client_certificates_on_test.py b/tests/providers/azure/services/app/app_client_certificates_on/app_client_certificates_on_test.py
    new file mode 100644
    index 00000000000..d2c5537b023
    --- /dev/null
    +++ b/tests/providers/azure/services/app/app_client_certificates_on/app_client_certificates_on_test.py
    @@ -0,0 +1,111 @@
    +from unittest import mock
    +from uuid import uuid4
    +
    +from prowler.providers.azure.services.app.app_service import WebApp
    +from tests.providers.azure.azure_fixtures import AZURE_SUBSCRIPTION
    +
    +
    +class Test_app_client_certificates_on:
    +    def test_app_no_subscriptions(self):
    +        app_client = mock.MagicMock
    +        app_client.apps = {}
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.app.app_client_certificates_on.app_client_certificates_on.app_client",
    +            new=app_client,
    +        ):
    +            from prowler.providers.azure.services.app.app_client_certificates_on.app_client_certificates_on import (
    +                app_client_certificates_on,
    +            )
    +
    +            check = app_client_certificates_on()
    +            result = check.execute()
    +            assert len(result) == 0
    +
    +    def test_app_subscription_empty(self):
    +        app_client = mock.MagicMock
    +        app_client.apps = {AZURE_SUBSCRIPTION: {}}
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.app.app_client_certificates_on.app_client_certificates_on.app_client",
    +            new=app_client,
    +        ):
    +            from prowler.providers.azure.services.app.app_client_certificates_on.app_client_certificates_on import (
    +                app_client_certificates_on,
    +            )
    +
    +            check = app_client_certificates_on()
    +            result = check.execute()
    +            assert len(result) == 0
    +
    +    def test_app_client_certificates_on(self):
    +        resource_id = f"/subscriptions/{uuid4()}"
    +        app_client = mock.MagicMock
    +        app_client.apps = {
    +            AZURE_SUBSCRIPTION: {
    +                "app_id-1": WebApp(
    +                    resource_id=resource_id,
    +                    auth_enabled=True,
    +                    configurations=None,
    +                    client_cert_mode="Required",
    +                    https_only=False,
    +                    identity=None,
    +                )
    +            }
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.app.app_client_certificates_on.app_client_certificates_on.app_client",
    +            new=app_client,
    +        ):
    +            from prowler.providers.azure.services.app.app_client_certificates_on.app_client_certificates_on import (
    +                app_client_certificates_on,
    +            )
    +
    +            check = app_client_certificates_on()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "PASS"
    +            assert (
    +                result[0].status_extended
    +                == f"Clients are required to present a certificate for app 'app_id-1' in subscription '{AZURE_SUBSCRIPTION}'."
    +            )
    +            assert result[0].resource_id == resource_id
    +            assert result[0].resource_name == "app_id-1"
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +
    +    def test_app_client_certificates_off(self):
    +        resource_id = f"/subscriptions/{uuid4()}"
    +        app_client = mock.MagicMock
    +        app_client.apps = {
    +            AZURE_SUBSCRIPTION: {
    +                "app_id-1": WebApp(
    +                    resource_id=resource_id,
    +                    auth_enabled=True,
    +                    configurations=None,
    +                    client_cert_mode="Ignore",
    +                    https_only=False,
    +                    identity=None,
    +                )
    +            }
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.app.app_client_certificates_on.app_client_certificates_on.app_client",
    +            new=app_client,
    +        ):
    +            from prowler.providers.azure.services.app.app_client_certificates_on.app_client_certificates_on import (
    +                app_client_certificates_on,
    +            )
    +
    +            check = app_client_certificates_on()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "FAIL"
    +            assert (
    +                result[0].status_extended
    +                == f"Clients are not required to present a certificate for app 'app_id-1' in subscription '{AZURE_SUBSCRIPTION}'."
    +            )
    +            assert result[0].resource_id == resource_id
    +            assert result[0].resource_name == "app_id-1"
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    diff --git a/tests/providers/azure/services/app/app_ensure_auth_is_set_up/app_ensure_auth_is_set_up_test.py b/tests/providers/azure/services/app/app_ensure_auth_is_set_up/app_ensure_auth_is_set_up_test.py
    new file mode 100644
    index 00000000000..61b77e03cb9
    --- /dev/null
    +++ b/tests/providers/azure/services/app/app_ensure_auth_is_set_up/app_ensure_auth_is_set_up_test.py
    @@ -0,0 +1,111 @@
    +from unittest import mock
    +from uuid import uuid4
    +
    +from prowler.providers.azure.services.app.app_service import WebApp
    +from tests.providers.azure.azure_fixtures import AZURE_SUBSCRIPTION
    +
    +
    +class Test_app_ensure_auth_is_set_up:
    +    def test_app_no_subscriptions(self):
    +        app_client = mock.MagicMock
    +        app_client.apps = {}
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.app.app_ensure_auth_is_set_up.app_ensure_auth_is_set_up.app_client",
    +            new=app_client,
    +        ):
    +            from prowler.providers.azure.services.app.app_ensure_auth_is_set_up.app_ensure_auth_is_set_up import (
    +                app_ensure_auth_is_set_up,
    +            )
    +
    +            check = app_ensure_auth_is_set_up()
    +            result = check.execute()
    +            assert len(result) == 0
    +
    +    def test_app_subscription_empty(self):
    +        app_client = mock.MagicMock
    +        app_client.apps = {AZURE_SUBSCRIPTION: {}}
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.app.app_ensure_auth_is_set_up.app_ensure_auth_is_set_up.app_client",
    +            new=app_client,
    +        ):
    +            from prowler.providers.azure.services.app.app_ensure_auth_is_set_up.app_ensure_auth_is_set_up import (
    +                app_ensure_auth_is_set_up,
    +            )
    +
    +            check = app_ensure_auth_is_set_up()
    +            result = check.execute()
    +            assert len(result) == 0
    +
    +    def test_app_auth_enabled(self):
    +        resource_id = f"/subscriptions/{uuid4()}"
    +        app_client = mock.MagicMock
    +        app_client.apps = {
    +            AZURE_SUBSCRIPTION: {
    +                "app_id-1": WebApp(
    +                    resource_id=resource_id,
    +                    auth_enabled=True,
    +                    configurations=mock.MagicMock(),
    +                    client_cert_mode="Ignore",
    +                    https_only=False,
    +                    identity=None,
    +                )
    +            }
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.app.app_ensure_auth_is_set_up.app_ensure_auth_is_set_up.app_client",
    +            new=app_client,
    +        ):
    +            from prowler.providers.azure.services.app.app_ensure_auth_is_set_up.app_ensure_auth_is_set_up import (
    +                app_ensure_auth_is_set_up,
    +            )
    +
    +            check = app_ensure_auth_is_set_up()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "PASS"
    +            assert (
    +                result[0].status_extended
    +                == f"Authentication is set up for app 'app_id-1' in subscription '{AZURE_SUBSCRIPTION}'."
    +            )
    +            assert result[0].resource_name == "app_id-1"
    +            assert result[0].resource_id == resource_id
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +
    +    def test_app_auth_disabled(self):
    +        resource_id = f"/subscriptions/{uuid4()}"
    +        app_client = mock.MagicMock
    +        app_client.apps = {
    +            AZURE_SUBSCRIPTION: {
    +                "app_id-1": WebApp(
    +                    resource_id=resource_id,
    +                    auth_enabled=False,
    +                    configurations=mock.MagicMock(),
    +                    client_cert_mode="Ignore",
    +                    https_only=False,
    +                    identity=None,
    +                )
    +            }
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.app.app_ensure_auth_is_set_up.app_ensure_auth_is_set_up.app_client",
    +            new=app_client,
    +        ):
    +            from prowler.providers.azure.services.app.app_ensure_auth_is_set_up.app_ensure_auth_is_set_up import (
    +                app_ensure_auth_is_set_up,
    +            )
    +
    +            check = app_ensure_auth_is_set_up()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "FAIL"
    +            assert (
    +                result[0].status_extended
    +                == f"Authentication is not set up for app 'app_id-1' in subscription '{AZURE_SUBSCRIPTION}'."
    +            )
    +            assert result[0].resource_name == "app_id-1"
    +            assert result[0].resource_id == resource_id
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    diff --git a/tests/providers/azure/services/app/app_ensure_http_is_redirected_to_https/app_ensure_http_is_redirected_to_https_test.py b/tests/providers/azure/services/app/app_ensure_http_is_redirected_to_https/app_ensure_http_is_redirected_to_https_test.py
    new file mode 100644
    index 00000000000..cba1a49a7d2
    --- /dev/null
    +++ b/tests/providers/azure/services/app/app_ensure_http_is_redirected_to_https/app_ensure_http_is_redirected_to_https_test.py
    @@ -0,0 +1,111 @@
    +from unittest import mock
    +from uuid import uuid4
    +
    +from prowler.providers.azure.services.app.app_service import WebApp
    +from tests.providers.azure.azure_fixtures import AZURE_SUBSCRIPTION
    +
    +
    +class Test_app_ensure_http_is_redirected_to_https:
    +    def test_app_no_subscriptions(self):
    +        app_client = mock.MagicMock
    +        app_client.apps = {}
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.app.app_ensure_http_is_redirected_to_https.app_ensure_http_is_redirected_to_https.app_client",
    +            new=app_client,
    +        ):
    +            from prowler.providers.azure.services.app.app_ensure_http_is_redirected_to_https.app_ensure_http_is_redirected_to_https import (
    +                app_ensure_http_is_redirected_to_https,
    +            )
    +
    +            check = app_ensure_http_is_redirected_to_https()
    +            result = check.execute()
    +            assert len(result) == 0
    +
    +    def test_app_subscriptions_empty_empty(self):
    +        app_client = mock.MagicMock
    +        app_client.apps = {AZURE_SUBSCRIPTION: {}}
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.app.app_ensure_http_is_redirected_to_https.app_ensure_http_is_redirected_to_https.app_client",
    +            new=app_client,
    +        ):
    +            from prowler.providers.azure.services.app.app_ensure_http_is_redirected_to_https.app_ensure_http_is_redirected_to_https import (
    +                app_ensure_http_is_redirected_to_https,
    +            )
    +
    +            check = app_ensure_http_is_redirected_to_https()
    +            result = check.execute()
    +            assert len(result) == 0
    +
    +    def test_app_http_to_https(self):
    +        resource_id = f"/subscriptions/{uuid4()}"
    +        app_client = mock.MagicMock
    +        app_client.apps = {
    +            AZURE_SUBSCRIPTION: {
    +                "app_id-1": WebApp(
    +                    resource_id=resource_id,
    +                    auth_enabled=True,
    +                    configurations=mock.MagicMock(),
    +                    client_cert_mode="Ignore",
    +                    https_only=False,
    +                    identity=None,
    +                )
    +            }
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.app.app_ensure_http_is_redirected_to_https.app_ensure_http_is_redirected_to_https.app_client",
    +            new=app_client,
    +        ):
    +            from prowler.providers.azure.services.app.app_ensure_http_is_redirected_to_https.app_ensure_http_is_redirected_to_https import (
    +                app_ensure_http_is_redirected_to_https,
    +            )
    +
    +            check = app_ensure_http_is_redirected_to_https()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "FAIL"
    +            assert (
    +                result[0].status_extended
    +                == f"HTTP is not redirected to HTTPS for app 'app_id-1' in subscription '{AZURE_SUBSCRIPTION}'."
    +            )
    +            assert result[0].resource_name == "app_id-1"
    +            assert result[0].resource_id == resource_id
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +
    +    def test_app_http_to_https_enabled(self):
    +        resource_id = f"/subscriptions/{uuid4()}"
    +        app_client = mock.MagicMock
    +        app_client.apps = {
    +            AZURE_SUBSCRIPTION: {
    +                "app_id-1": WebApp(
    +                    resource_id=resource_id,
    +                    auth_enabled=True,
    +                    configurations=mock.MagicMock(),
    +                    client_cert_mode="Ignore",
    +                    https_only=True,
    +                    identity=None,
    +                )
    +            }
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.app.app_ensure_http_is_redirected_to_https.app_ensure_http_is_redirected_to_https.app_client",
    +            new=app_client,
    +        ):
    +            from prowler.providers.azure.services.app.app_ensure_http_is_redirected_to_https.app_ensure_http_is_redirected_to_https import (
    +                app_ensure_http_is_redirected_to_https,
    +            )
    +
    +            check = app_ensure_http_is_redirected_to_https()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "PASS"
    +            assert (
    +                result[0].status_extended
    +                == f"HTTP is redirected to HTTPS for app 'app_id-1' in subscription '{AZURE_SUBSCRIPTION}'."
    +            )
    +            assert result[0].resource_name == "app_id-1"
    +            assert result[0].resource_id == resource_id
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    diff --git a/tests/providers/azure/services/app/app_ensure_java_version_is_latest/app_ensure_java_version_is_latest_test.py b/tests/providers/azure/services/app/app_ensure_java_version_is_latest/app_ensure_java_version_is_latest_test.py
    new file mode 100644
    index 00000000000..e4f057a0234
    --- /dev/null
    +++ b/tests/providers/azure/services/app/app_ensure_java_version_is_latest/app_ensure_java_version_is_latest_test.py
    @@ -0,0 +1,259 @@
    +from unittest import mock
    +from uuid import uuid4
    +
    +from prowler.providers.azure.services.app.app_service import WebApp
    +from tests.providers.azure.azure_fixtures import AZURE_SUBSCRIPTION
    +
    +
    +class Test_app_ensure_java_version_is_latest:
    +    def test_app_no_subscriptions(self):
    +        app_client = mock.MagicMock
    +        app_client.apps = {}
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.app.app_ensure_java_version_is_latest.app_ensure_java_version_is_latest.app_client",
    +            new=app_client,
    +        ):
    +            from prowler.providers.azure.services.app.app_ensure_java_version_is_latest.app_ensure_java_version_is_latest import (
    +                app_ensure_java_version_is_latest,
    +            )
    +
    +            check = app_ensure_java_version_is_latest()
    +            result = check.execute()
    +            assert len(result) == 0
    +
    +    def test_app_subscriptions_empty(self):
    +        app_client = mock.MagicMock
    +        app_client.apps = {AZURE_SUBSCRIPTION: {}}
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.app.app_ensure_java_version_is_latest.app_ensure_java_version_is_latest.app_client",
    +            new=app_client,
    +        ):
    +            from prowler.providers.azure.services.app.app_ensure_java_version_is_latest.app_ensure_java_version_is_latest import (
    +                app_ensure_java_version_is_latest,
    +            )
    +
    +            check = app_ensure_java_version_is_latest()
    +            result = check.execute()
    +            assert len(result) == 0
    +
    +    def test_app_configurations_none(self):
    +        resource_id = f"/subscriptions/{uuid4()}"
    +        app_client = mock.MagicMock
    +        app_client.apps = {
    +            AZURE_SUBSCRIPTION: {
    +                "app_id-1": WebApp(
    +                    resource_id=resource_id,
    +                    auth_enabled=True,
    +                    configurations=None,
    +                    client_cert_mode="Ignore",
    +                    https_only=False,
    +                    identity=None,
    +                )
    +            }
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.app.app_ensure_java_version_is_latest.app_ensure_java_version_is_latest.app_client",
    +            new=app_client,
    +        ):
    +            from prowler.providers.azure.services.app.app_ensure_java_version_is_latest.app_ensure_java_version_is_latest import (
    +                app_ensure_java_version_is_latest,
    +            )
    +
    +            check = app_ensure_java_version_is_latest()
    +            result = check.execute()
    +            assert len(result) == 0
    +
    +    def test_app_linux_java_version_latest(self):
    +        resource_id = f"/subscriptions/{uuid4()}"
    +        app_client = mock.MagicMock
    +        app_client.apps = {
    +            AZURE_SUBSCRIPTION: {
    +                "app_id-1": WebApp(
    +                    resource_id=resource_id,
    +                    auth_enabled=True,
    +                    configurations=mock.MagicMock(
    +                        linux_fx_version="Tomcat|9.0-java17", java_version=None
    +                    ),
    +                    client_cert_mode="Ignore",
    +                    https_only=False,
    +                    identity=None,
    +                )
    +            }
    +        }
    +
    +        app_client.audit_config = {"java_latest_version": "17"}
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.app.app_ensure_java_version_is_latest.app_ensure_java_version_is_latest.app_client",
    +            new=app_client,
    +        ):
    +            from prowler.providers.azure.services.app.app_ensure_java_version_is_latest.app_ensure_java_version_is_latest import (
    +                app_ensure_java_version_is_latest,
    +            )
    +
    +            check = app_ensure_java_version_is_latest()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "PASS"
    +            assert (
    +                result[0].status_extended
    +                == f"Java version is set to 'java 17' for app 'app_id-1' in subscription '{AZURE_SUBSCRIPTION}'."
    +            )
    +            assert result[0].resource_id == resource_id
    +            assert result[0].resource_name == "app_id-1"
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +
    +    def test_app_linux_java_version_not_latest(self):
    +        resource_id = f"/subscriptions/{uuid4()}"
    +        app_client = mock.MagicMock
    +        app_client.apps = {
    +            AZURE_SUBSCRIPTION: {
    +                "app_id-1": WebApp(
    +                    resource_id=resource_id,
    +                    auth_enabled=True,
    +                    configurations=mock.MagicMock(
    +                        linux_fx_version="Tomcat|9.0-java11", java_version=None
    +                    ),
    +                    client_cert_mode="Ignore",
    +                    https_only=False,
    +                    identity=None,
    +                )
    +            }
    +        }
    +
    +        app_client.audit_config = {"java_latest_version": "17"}
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.app.app_ensure_java_version_is_latest.app_ensure_java_version_is_latest.app_client",
    +            new=app_client,
    +        ):
    +            from prowler.providers.azure.services.app.app_ensure_java_version_is_latest.app_ensure_java_version_is_latest import (
    +                app_ensure_java_version_is_latest,
    +            )
    +
    +            check = app_ensure_java_version_is_latest()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "FAIL"
    +            assert (
    +                result[0].status_extended
    +                == f"Java version is set to 'Tomcat|9.0-java11', but should be set to 'java 17' for app 'app_id-1' in subscription '{AZURE_SUBSCRIPTION}'."
    +            )
    +            assert result[0].resource_id == resource_id
    +            assert result[0].resource_name == "app_id-1"
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +
    +    def test_app_windows_java_version_latest(self):
    +        resource_id = f"/subscriptions/{uuid4()}"
    +        app_client = mock.MagicMock
    +        app_client.apps = {
    +            AZURE_SUBSCRIPTION: {
    +                "app_id-1": WebApp(
    +                    resource_id=resource_id,
    +                    auth_enabled=True,
    +                    configurations=mock.MagicMock(
    +                        linux_fx_version="", java_version="17"
    +                    ),
    +                    client_cert_mode="Ignore",
    +                    https_only=False,
    +                    identity=None,
    +                )
    +            }
    +        }
    +
    +        app_client.audit_config = {"java_latest_version": "17"}
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.app.app_ensure_java_version_is_latest.app_ensure_java_version_is_latest.app_client",
    +            new=app_client,
    +        ):
    +            from prowler.providers.azure.services.app.app_ensure_java_version_is_latest.app_ensure_java_version_is_latest import (
    +                app_ensure_java_version_is_latest,
    +            )
    +
    +            check = app_ensure_java_version_is_latest()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "PASS"
    +            assert (
    +                result[0].status_extended
    +                == f"Java version is set to 'java 17' for app 'app_id-1' in subscription '{AZURE_SUBSCRIPTION}'."
    +            )
    +            assert result[0].resource_id == resource_id
    +            assert result[0].resource_name == "app_id-1"
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +
    +    def test_app_windows_java_version_not_latest(self):
    +        resource_id = f"/subscriptions/{uuid4()}"
    +        app_client = mock.MagicMock
    +        app_client.apps = {
    +            AZURE_SUBSCRIPTION: {
    +                "app_id-1": WebApp(
    +                    resource_id=resource_id,
    +                    auth_enabled=True,
    +                    configurations=mock.MagicMock(
    +                        linux_fx_version="", java_version="11"
    +                    ),
    +                    client_cert_mode="Ignore",
    +                    https_only=False,
    +                    identity=None,
    +                )
    +            }
    +        }
    +
    +        app_client.audit_config = {"java_latest_version": "17"}
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.app.app_ensure_java_version_is_latest.app_ensure_java_version_is_latest.app_client",
    +            new=app_client,
    +        ):
    +            from prowler.providers.azure.services.app.app_ensure_java_version_is_latest.app_ensure_java_version_is_latest import (
    +                app_ensure_java_version_is_latest,
    +            )
    +
    +            check = app_ensure_java_version_is_latest()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "FAIL"
    +            assert (
    +                result[0].status_extended
    +                == f"Java version is set to 'java11', but should be set to 'java 17' for app 'app_id-1' in subscription '{AZURE_SUBSCRIPTION}'."
    +            )
    +            assert result[0].resource_id == resource_id
    +            assert result[0].resource_name == "app_id-1"
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +
    +    def test_app_linux_php_version_latest(self):
    +        resource_id = f"/subscriptions/{uuid4()}"
    +        app_client = mock.MagicMock
    +        app_client.apps = {
    +            AZURE_SUBSCRIPTION: {
    +                "app_id-1": WebApp(
    +                    resource_id=resource_id,
    +                    auth_enabled=True,
    +                    configurations=mock.MagicMock(
    +                        linux_fx_version="php|8.0", java_version=None
    +                    ),
    +                    client_cert_mode="Ignore",
    +                    https_only=False,
    +                    identity=None,
    +                )
    +            }
    +        }
    +
    +        app_client.audit_config = {"java_latest_version": "17"}
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.app.app_ensure_java_version_is_latest.app_ensure_java_version_is_latest.app_client",
    +            new=app_client,
    +        ):
    +            from prowler.providers.azure.services.app.app_ensure_java_version_is_latest.app_ensure_java_version_is_latest import (
    +                app_ensure_java_version_is_latest,
    +            )
    +
    +            check = app_ensure_java_version_is_latest()
    +            result = check.execute()
    +            assert len(result) == 0
    diff --git a/tests/providers/azure/services/app/app_ensure_php_version_is_latest/app_ensure_php_version_is_latest_test.py b/tests/providers/azure/services/app/app_ensure_php_version_is_latest/app_ensure_php_version_is_latest_test.py
    new file mode 100644
    index 00000000000..b9fd80c7490
    --- /dev/null
    +++ b/tests/providers/azure/services/app/app_ensure_php_version_is_latest/app_ensure_php_version_is_latest_test.py
    @@ -0,0 +1,143 @@
    +from unittest import mock
    +from uuid import uuid4
    +
    +from prowler.providers.azure.services.app.app_service import WebApp
    +from tests.providers.azure.azure_fixtures import AZURE_SUBSCRIPTION
    +
    +
    +class Test_app_ensure_php_version_is_latest:
    +    def test_app_no_subscriptions(self):
    +        app_client = mock.MagicMock
    +        app_client.apps = {}
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.app.app_ensure_php_version_is_latest.app_ensure_php_version_is_latest.app_client",
    +            new=app_client,
    +        ):
    +            from prowler.providers.azure.services.app.app_ensure_php_version_is_latest.app_ensure_php_version_is_latest import (
    +                app_ensure_php_version_is_latest,
    +            )
    +
    +            check = app_ensure_php_version_is_latest()
    +            result = check.execute()
    +            assert len(result) == 0
    +
    +    def test_app_subscription_empty(self):
    +        app_client = mock.MagicMock
    +        app_client.apps = {AZURE_SUBSCRIPTION: {}}
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.app.app_ensure_php_version_is_latest.app_ensure_php_version_is_latest.app_client",
    +            new=app_client,
    +        ):
    +            from prowler.providers.azure.services.app.app_ensure_php_version_is_latest.app_ensure_php_version_is_latest import (
    +                app_ensure_php_version_is_latest,
    +            )
    +
    +            check = app_ensure_php_version_is_latest()
    +            result = check.execute()
    +            assert len(result) == 0
    +
    +    def test_app_configurations_none(self):
    +        resource_id = f"/subscriptions/{uuid4()}"
    +        app_client = mock.MagicMock
    +        app_client.apps = {
    +            AZURE_SUBSCRIPTION: {
    +                "app_id-1": WebApp(
    +                    resource_id=resource_id,
    +                    auth_enabled=True,
    +                    configurations=None,
    +                    client_cert_mode="Ignore",
    +                    https_only=False,
    +                    identity=None,
    +                )
    +            }
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.app.app_ensure_php_version_is_latest.app_ensure_php_version_is_latest.app_client",
    +            new=app_client,
    +        ):
    +            from prowler.providers.azure.services.app.app_ensure_php_version_is_latest.app_ensure_php_version_is_latest import (
    +                app_ensure_php_version_is_latest,
    +            )
    +
    +            check = app_ensure_php_version_is_latest()
    +            result = check.execute()
    +            assert len(result) == 0
    +
    +    def test_app_php_version_not_latest(self):
    +        resource_id = f"/subscriptions/{uuid4()}"
    +        app_client = mock.MagicMock
    +        app_client.apps = {
    +            AZURE_SUBSCRIPTION: {
    +                "app_id-1": WebApp(
    +                    resource_id=resource_id,
    +                    auth_enabled=True,
    +                    configurations=mock.MagicMock(linux_fx_version="php|8.0"),
    +                    client_cert_mode="Ignore",
    +                    https_only=False,
    +                    identity=None,
    +                )
    +            }
    +        }
    +
    +        app_client.audit_config = {"php_latest_version": "8.2"}
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.app.app_ensure_php_version_is_latest.app_ensure_php_version_is_latest.app_client",
    +            new=app_client,
    +        ):
    +            from prowler.providers.azure.services.app.app_ensure_php_version_is_latest.app_ensure_php_version_is_latest import (
    +                app_ensure_php_version_is_latest,
    +            )
    +
    +            check = app_ensure_php_version_is_latest()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "FAIL"
    +            assert (
    +                result[0].status_extended
    +                == f"PHP version is set to 'php|8.0', the latest version that you could use is the '8.2' version, for app 'app_id-1' in subscription '{AZURE_SUBSCRIPTION}'."
    +            )
    +            assert result[0].resource_id == resource_id
    +            assert result[0].resource_name == "app_id-1"
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +
    +    def test_app_php_version_latest(self):
    +        resource_id = f"/subscriptions/{uuid4()}"
    +        app_client = mock.MagicMock
    +        app_client.apps = {
    +            AZURE_SUBSCRIPTION: {
    +                "app_id-1": WebApp(
    +                    resource_id=resource_id,
    +                    auth_enabled=True,
    +                    configurations=mock.MagicMock(linux_fx_version="php|8.2"),
    +                    client_cert_mode="Ignore",
    +                    https_only=False,
    +                    identity=None,
    +                )
    +            }
    +        }
    +
    +        app_client.audit_config = {"php_latest_version": "8.2"}
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.app.app_ensure_php_version_is_latest.app_ensure_php_version_is_latest.app_client",
    +            new=app_client,
    +        ):
    +            from prowler.providers.azure.services.app.app_ensure_php_version_is_latest.app_ensure_php_version_is_latest import (
    +                app_ensure_php_version_is_latest,
    +            )
    +
    +            check = app_ensure_php_version_is_latest()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "PASS"
    +            assert (
    +                result[0].status_extended
    +                == f"PHP version is set to '8.2' for app 'app_id-1' in subscription '{AZURE_SUBSCRIPTION}'."
    +            )
    +            assert result[0].resource_id == resource_id
    +            assert result[0].resource_name == "app_id-1"
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    diff --git a/tests/providers/azure/services/app/app_ensure_python_version_is_latest/app_ensure_python_version_is_latest_test.py b/tests/providers/azure/services/app/app_ensure_python_version_is_latest/app_ensure_python_version_is_latest_test.py
    new file mode 100644
    index 00000000000..8795bacb8ef
    --- /dev/null
    +++ b/tests/providers/azure/services/app/app_ensure_python_version_is_latest/app_ensure_python_version_is_latest_test.py
    @@ -0,0 +1,143 @@
    +from unittest import mock
    +from uuid import uuid4
    +
    +from prowler.providers.azure.services.app.app_service import WebApp
    +from tests.providers.azure.azure_fixtures import AZURE_SUBSCRIPTION
    +
    +
    +class Test_app_ensure_python_version_is_latest:
    +    def test_app_no_subscriptions(self):
    +        app_client = mock.MagicMock
    +        app_client.apps = {}
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.app.app_ensure_python_version_is_latest.app_ensure_python_version_is_latest.app_client",
    +            new=app_client,
    +        ):
    +            from prowler.providers.azure.services.app.app_ensure_python_version_is_latest.app_ensure_python_version_is_latest import (
    +                app_ensure_python_version_is_latest,
    +            )
    +
    +            check = app_ensure_python_version_is_latest()
    +            result = check.execute()
    +            assert len(result) == 0
    +
    +    def test_app_subscriptions_empty(self):
    +        app_client = mock.MagicMock
    +        app_client.apps = {AZURE_SUBSCRIPTION: {}}
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.app.app_ensure_python_version_is_latest.app_ensure_python_version_is_latest.app_client",
    +            new=app_client,
    +        ):
    +            from prowler.providers.azure.services.app.app_ensure_python_version_is_latest.app_ensure_python_version_is_latest import (
    +                app_ensure_python_version_is_latest,
    +            )
    +
    +            check = app_ensure_python_version_is_latest()
    +            result = check.execute()
    +            assert len(result) == 0
    +
    +    def test_app_configurations_none(self):
    +        resource_id = f"/subscriptions/{uuid4()}"
    +        app_client = mock.MagicMock
    +        app_client.apps = {
    +            AZURE_SUBSCRIPTION: {
    +                "app_id-1": WebApp(
    +                    resource_id=resource_id,
    +                    auth_enabled=True,
    +                    configurations=None,
    +                    client_cert_mode="Ignore",
    +                    https_only=False,
    +                    identity=None,
    +                )
    +            }
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.app.app_ensure_python_version_is_latest.app_ensure_python_version_is_latest.app_client",
    +            new=app_client,
    +        ):
    +            from prowler.providers.azure.services.app.app_ensure_python_version_is_latest.app_ensure_python_version_is_latest import (
    +                app_ensure_python_version_is_latest,
    +            )
    +
    +            check = app_ensure_python_version_is_latest()
    +            result = check.execute()
    +            assert len(result) == 0
    +
    +    def test_app_python_version_latest(self):
    +        resource_id = f"/subscriptions/{uuid4()}"
    +        app_client = mock.MagicMock
    +        app_client.apps = {
    +            AZURE_SUBSCRIPTION: {
    +                "app_id-1": WebApp(
    +                    resource_id=resource_id,
    +                    auth_enabled=True,
    +                    configurations=mock.MagicMock(linux_fx_version="python|3.12"),
    +                    client_cert_mode="Ignore",
    +                    https_only=False,
    +                    identity=None,
    +                )
    +            }
    +        }
    +
    +        app_client.audit_config = {"python_latest_version": "3.12"}
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.app.app_ensure_python_version_is_latest.app_ensure_python_version_is_latest.app_client",
    +            new=app_client,
    +        ):
    +            from prowler.providers.azure.services.app.app_ensure_python_version_is_latest.app_ensure_python_version_is_latest import (
    +                app_ensure_python_version_is_latest,
    +            )
    +
    +            check = app_ensure_python_version_is_latest()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "PASS"
    +            assert (
    +                result[0].status_extended
    +                == f"Python version is set to '3.12' for app 'app_id-1' in subscription '{AZURE_SUBSCRIPTION}'."
    +            )
    +            assert result[0].resource_id == resource_id
    +            assert result[0].resource_name == "app_id-1"
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +
    +    def test_app_python_version_not_latest(self):
    +        resource_id = f"/subscriptions/{uuid4()}"
    +        app_client = mock.MagicMock
    +        app_client.apps = {
    +            AZURE_SUBSCRIPTION: {
    +                "app_id-1": WebApp(
    +                    resource_id=resource_id,
    +                    auth_enabled=True,
    +                    configurations=mock.MagicMock(linux_fx_version="python|3.10"),
    +                    client_cert_mode="Ignore",
    +                    https_only=False,
    +                    identity=None,
    +                )
    +            }
    +        }
    +
    +        app_client.audit_config = {"python_latest_version": "3.12"}
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.app.app_ensure_python_version_is_latest.app_ensure_python_version_is_latest.app_client",
    +            new=app_client,
    +        ):
    +            from prowler.providers.azure.services.app.app_ensure_python_version_is_latest.app_ensure_python_version_is_latest import (
    +                app_ensure_python_version_is_latest,
    +            )
    +
    +            check = app_ensure_python_version_is_latest()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "FAIL"
    +            assert (
    +                result[0].status_extended
    +                == f"Python version is 'python|3.10', the latest version that you could use is the '3.12' version, for app 'app_id-1' in subscription '{AZURE_SUBSCRIPTION}'."
    +            )
    +            assert result[0].resource_id == resource_id
    +            assert result[0].resource_name == "app_id-1"
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    diff --git a/tests/providers/azure/services/app/app_ensure_using_http20/app_ensure_using_http20_test.py b/tests/providers/azure/services/app/app_ensure_using_http20/app_ensure_using_http20_test.py
    new file mode 100644
    index 00000000000..a5a04ec4c50
    --- /dev/null
    +++ b/tests/providers/azure/services/app/app_ensure_using_http20/app_ensure_using_http20_test.py
    @@ -0,0 +1,147 @@
    +from unittest import mock
    +from uuid import uuid4
    +
    +from prowler.providers.azure.services.app.app_service import WebApp
    +from tests.providers.azure.azure_fixtures import AZURE_SUBSCRIPTION
    +
    +
    +class Test_app_ensure_using_http20:
    +    def test_app_no_subscriptions(self):
    +        app_client = mock.MagicMock
    +        app_client.apps = {}
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.app.app_ensure_using_http20.app_ensure_using_http20.app_client",
    +            new=app_client,
    +        ):
    +            from prowler.providers.azure.services.app.app_ensure_using_http20.app_ensure_using_http20 import (
    +                app_ensure_using_http20,
    +            )
    +
    +            check = app_ensure_using_http20()
    +            result = check.execute()
    +            assert len(result) == 0
    +
    +    def test_app_subscription_empty(self):
    +        app_client = mock.MagicMock
    +        app_client.apps = {AZURE_SUBSCRIPTION: {}}
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.app.app_ensure_using_http20.app_ensure_using_http20.app_client",
    +            new=app_client,
    +        ):
    +            from prowler.providers.azure.services.app.app_ensure_using_http20.app_ensure_using_http20 import (
    +                app_ensure_using_http20,
    +            )
    +
    +            check = app_ensure_using_http20()
    +            result = check.execute()
    +            assert len(result) == 0
    +
    +    def test_app_configurations_none(self):
    +        resource_id = f"/subscriptions/{uuid4()}"
    +        app_client = mock.MagicMock
    +        app_client.apps = {
    +            AZURE_SUBSCRIPTION: {
    +                "app_id-1": WebApp(
    +                    resource_id=resource_id,
    +                    auth_enabled=True,
    +                    configurations=None,
    +                    client_cert_mode="Ignore",
    +                    https_only=False,
    +                    identity=None,
    +                )
    +            }
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.app.app_ensure_using_http20.app_ensure_using_http20.app_client",
    +            new=app_client,
    +        ):
    +            from prowler.providers.azure.services.app.app_ensure_using_http20.app_ensure_using_http20 import (
    +                app_ensure_using_http20,
    +            )
    +
    +            check = app_ensure_using_http20()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "FAIL"
    +            assert (
    +                result[0].status_extended
    +                == f"HTTP/2.0 is not enabled for app 'app_id-1' in subscription '{AZURE_SUBSCRIPTION}'."
    +            )
    +            assert result[0].resource_id == resource_id
    +            assert result[0].resource_name == "app_id-1"
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +
    +    def test_app_http20_enabled(self):
    +        resource_id = f"/subscriptions/{uuid4()}"
    +        app_client = mock.MagicMock
    +        app_client.apps = {
    +            AZURE_SUBSCRIPTION: {
    +                "app_id-1": WebApp(
    +                    resource_id=resource_id,
    +                    auth_enabled=True,
    +                    configurations=mock.MagicMock(http20_enabled=True),
    +                    client_cert_mode="Ignore",
    +                    https_only=False,
    +                    identity=None,
    +                )
    +            }
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.app.app_ensure_using_http20.app_ensure_using_http20.app_client",
    +            new=app_client,
    +        ):
    +            from prowler.providers.azure.services.app.app_ensure_using_http20.app_ensure_using_http20 import (
    +                app_ensure_using_http20,
    +            )
    +
    +            check = app_ensure_using_http20()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "PASS"
    +            assert (
    +                result[0].status_extended
    +                == f"HTTP/2.0 is enabled for app 'app_id-1' in subscription '{AZURE_SUBSCRIPTION}'."
    +            )
    +            assert result[0].resource_id == resource_id
    +            assert result[0].resource_name == "app_id-1"
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +
    +    def test_app_http20_not_enabled(self):
    +        resource_id = f"/subscriptions/{uuid4()}"
    +        app_client = mock.MagicMock
    +        app_client.apps = {
    +            AZURE_SUBSCRIPTION: {
    +                "app_id-1": WebApp(
    +                    resource_id=resource_id,
    +                    auth_enabled=True,
    +                    configurations=mock.MagicMock(http20_enabled=False),
    +                    client_cert_mode="Ignore",
    +                    https_only=False,
    +                    identity=None,
    +                )
    +            }
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.app.app_ensure_using_http20.app_ensure_using_http20.app_client",
    +            new=app_client,
    +        ):
    +            from prowler.providers.azure.services.app.app_ensure_using_http20.app_ensure_using_http20 import (
    +                app_ensure_using_http20,
    +            )
    +
    +            check = app_ensure_using_http20()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "FAIL"
    +            assert (
    +                result[0].status_extended
    +                == f"HTTP/2.0 is not enabled for app 'app_id-1' in subscription '{AZURE_SUBSCRIPTION}'."
    +            )
    +            assert result[0].resource_id == resource_id
    +            assert result[0].resource_name == "app_id-1"
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    diff --git a/tests/providers/azure/services/app/app_ftp_deployment_disabled/app_ftp_deployment_disabled_test.py b/tests/providers/azure/services/app/app_ftp_deployment_disabled/app_ftp_deployment_disabled_test.py
    new file mode 100644
    index 00000000000..6f522d2a32e
    --- /dev/null
    +++ b/tests/providers/azure/services/app/app_ftp_deployment_disabled/app_ftp_deployment_disabled_test.py
    @@ -0,0 +1,147 @@
    +from unittest import mock
    +from uuid import uuid4
    +
    +from prowler.providers.azure.services.app.app_service import WebApp
    +from tests.providers.azure.azure_fixtures import AZURE_SUBSCRIPTION
    +
    +
    +class Test_app_ftp_deployment_disabled:
    +    def test_app_no_subscriptions(self):
    +        app_client = mock.MagicMock
    +        app_client.apps = {}
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.app.app_ftp_deployment_disabled.app_ftp_deployment_disabled.app_client",
    +            new=app_client,
    +        ):
    +            from prowler.providers.azure.services.app.app_ftp_deployment_disabled.app_ftp_deployment_disabled import (
    +                app_ftp_deployment_disabled,
    +            )
    +
    +            check = app_ftp_deployment_disabled()
    +            result = check.execute()
    +            assert len(result) == 0
    +
    +    def test_app_subscriptions_empty(self):
    +        app_client = mock.MagicMock
    +        app_client.apps = {AZURE_SUBSCRIPTION: {}}
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.app.app_ftp_deployment_disabled.app_ftp_deployment_disabled.app_client",
    +            new=app_client,
    +        ):
    +            from prowler.providers.azure.services.app.app_ftp_deployment_disabled.app_ftp_deployment_disabled import (
    +                app_ftp_deployment_disabled,
    +            )
    +
    +            check = app_ftp_deployment_disabled()
    +            result = check.execute()
    +            assert len(result) == 0
    +
    +    def test_app_configurations_none(self):
    +        resource_id = f"/subscriptions/{uuid4()}"
    +        app_client = mock.MagicMock
    +        app_client.apps = {
    +            AZURE_SUBSCRIPTION: {
    +                "app_id-1": WebApp(
    +                    resource_id=resource_id,
    +                    auth_enabled=True,
    +                    configurations=None,
    +                    client_cert_mode="Ignore",
    +                    https_only=False,
    +                    identity=None,
    +                )
    +            }
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.app.app_ftp_deployment_disabled.app_ftp_deployment_disabled.app_client",
    +            new=app_client,
    +        ):
    +            from prowler.providers.azure.services.app.app_ftp_deployment_disabled.app_ftp_deployment_disabled import (
    +                app_ftp_deployment_disabled,
    +            )
    +
    +            check = app_ftp_deployment_disabled()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "FAIL"
    +            assert (
    +                result[0].status_extended
    +                == f"FTP is enabled for app 'app_id-1' in subscription '{AZURE_SUBSCRIPTION}'."
    +            )
    +            assert result[0].resource_id == resource_id
    +            assert result[0].resource_name == "app_id-1"
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +
    +    def test_app_ftp_deployment_disabled(self):
    +        resource_id = f"/subscriptions/{uuid4()}"
    +        app_client = mock.MagicMock
    +        app_client.apps = {
    +            AZURE_SUBSCRIPTION: {
    +                "app_id-1": WebApp(
    +                    resource_id=resource_id,
    +                    auth_enabled=True,
    +                    configurations=mock.MagicMock(ftps_state="AllAllowed"),
    +                    client_cert_mode="Ignore",
    +                    https_only=False,
    +                    identity=None,
    +                )
    +            }
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.app.app_ftp_deployment_disabled.app_ftp_deployment_disabled.app_client",
    +            new=app_client,
    +        ):
    +            from prowler.providers.azure.services.app.app_ftp_deployment_disabled.app_ftp_deployment_disabled import (
    +                app_ftp_deployment_disabled,
    +            )
    +
    +            check = app_ftp_deployment_disabled()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "FAIL"
    +            assert (
    +                result[0].status_extended
    +                == f"FTP is enabled for app 'app_id-1' in subscription '{AZURE_SUBSCRIPTION}'."
    +            )
    +            assert result[0].resource_id == resource_id
    +            assert result[0].resource_name == "app_id-1"
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +
    +    def test_app_ftp_deploy_enabled(self):
    +        resource_id = f"/subscriptions/{uuid4()}"
    +        app_client = mock.MagicMock
    +        app_client.apps = {
    +            AZURE_SUBSCRIPTION: {
    +                "app_id-1": WebApp(
    +                    resource_id=resource_id,
    +                    auth_enabled=True,
    +                    configurations=mock.MagicMock(ftps_state="Disabled"),
    +                    client_cert_mode="Ignore",
    +                    https_only=False,
    +                    identity=None,
    +                )
    +            }
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.app.app_ftp_deployment_disabled.app_ftp_deployment_disabled.app_client",
    +            new=app_client,
    +        ):
    +            from prowler.providers.azure.services.app.app_ftp_deployment_disabled.app_ftp_deployment_disabled import (
    +                app_ftp_deployment_disabled,
    +            )
    +
    +            check = app_ftp_deployment_disabled()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "PASS"
    +            assert (
    +                result[0].status_extended
    +                == f"FTP is disabled for app 'app_id-1' in subscription '{AZURE_SUBSCRIPTION}'."
    +            )
    +            assert result[0].resource_id == resource_id
    +            assert result[0].resource_name == "app_id-1"
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    diff --git a/tests/providers/azure/services/app/app_minimum_tls_version_12/app_minimum_tls_version_12_test.py b/tests/providers/azure/services/app/app_minimum_tls_version_12/app_minimum_tls_version_12_test.py
    new file mode 100644
    index 00000000000..b408b846f04
    --- /dev/null
    +++ b/tests/providers/azure/services/app/app_minimum_tls_version_12/app_minimum_tls_version_12_test.py
    @@ -0,0 +1,147 @@
    +from unittest import mock
    +from uuid import uuid4
    +
    +from prowler.providers.azure.services.app.app_service import WebApp
    +from tests.providers.azure.azure_fixtures import AZURE_SUBSCRIPTION
    +
    +
    +class Test_app_minimum_tls_version_12:
    +    def test_app_no_subscriptions(self):
    +        app_client = mock.MagicMock
    +        app_client.apps = {}
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.app.app_minimum_tls_version_12.app_minimum_tls_version_12.app_client",
    +            new=app_client,
    +        ):
    +            from prowler.providers.azure.services.app.app_minimum_tls_version_12.app_minimum_tls_version_12 import (
    +                app_minimum_tls_version_12,
    +            )
    +
    +            check = app_minimum_tls_version_12()
    +            result = check.execute()
    +            assert len(result) == 0
    +
    +    def test_app_subscriptions_empty(self):
    +        app_client = mock.MagicMock
    +        app_client.apps = {AZURE_SUBSCRIPTION: {}}
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.app.app_minimum_tls_version_12.app_minimum_tls_version_12.app_client",
    +            new=app_client,
    +        ):
    +            from prowler.providers.azure.services.app.app_minimum_tls_version_12.app_minimum_tls_version_12 import (
    +                app_minimum_tls_version_12,
    +            )
    +
    +            check = app_minimum_tls_version_12()
    +            result = check.execute()
    +            assert len(result) == 0
    +
    +    def test_app_none_configurations(self):
    +        resource_id = f"/subscriptions/{uuid4()}"
    +        app_client = mock.MagicMock
    +        app_client.apps = {
    +            AZURE_SUBSCRIPTION: {
    +                "app_id-1": WebApp(
    +                    resource_id=resource_id,
    +                    auth_enabled=True,
    +                    configurations=None,
    +                    client_cert_mode="Ignore",
    +                    https_only=False,
    +                    identity=None,
    +                )
    +            }
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.app.app_minimum_tls_version_12.app_minimum_tls_version_12.app_client",
    +            new=app_client,
    +        ):
    +            from prowler.providers.azure.services.app.app_minimum_tls_version_12.app_minimum_tls_version_12 import (
    +                app_minimum_tls_version_12,
    +            )
    +
    +            check = app_minimum_tls_version_12()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "FAIL"
    +            assert (
    +                result[0].status_extended
    +                == f"Minimum TLS version is not set to 1.2 for app 'app_id-1' in subscription '{AZURE_SUBSCRIPTION}'."
    +            )
    +            assert result[0].resource_id == resource_id
    +            assert result[0].resource_name == "app_id-1"
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +
    +    def test_app_min_tls_version_12(self):
    +        resource_id = f"/subscriptions/{uuid4()}"
    +        app_client = mock.MagicMock
    +        app_client.apps = {
    +            AZURE_SUBSCRIPTION: {
    +                "app_id-1": WebApp(
    +                    resource_id=resource_id,
    +                    auth_enabled=True,
    +                    configurations=mock.MagicMock(min_tls_version="1.2"),
    +                    client_cert_mode="Ignore",
    +                    https_only=False,
    +                    identity=None,
    +                )
    +            }
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.app.app_minimum_tls_version_12.app_minimum_tls_version_12.app_client",
    +            new=app_client,
    +        ):
    +            from prowler.providers.azure.services.app.app_minimum_tls_version_12.app_minimum_tls_version_12 import (
    +                app_minimum_tls_version_12,
    +            )
    +
    +            check = app_minimum_tls_version_12()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "PASS"
    +            assert (
    +                result[0].status_extended
    +                == f"Minimum TLS version is set to 1.2 for app 'app_id-1' in subscription '{AZURE_SUBSCRIPTION}'."
    +            )
    +            assert result[0].resource_id == resource_id
    +            assert result[0].resource_name == "app_id-1"
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +
    +    def test_app_min_tls_version_10(self):
    +        resource_id = f"/subscriptions/{uuid4()}"
    +        app_client = mock.MagicMock
    +        app_client.apps = {
    +            AZURE_SUBSCRIPTION: {
    +                "app_id-1": WebApp(
    +                    resource_id=resource_id,
    +                    auth_enabled=False,
    +                    configurations=mock.MagicMock(min_tls_version="1.0"),
    +                    client_cert_mode="Ignore",
    +                    https_only=False,
    +                    identity=None,
    +                )
    +            }
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.app.app_minimum_tls_version_12.app_minimum_tls_version_12.app_client",
    +            new=app_client,
    +        ):
    +            from prowler.providers.azure.services.app.app_minimum_tls_version_12.app_minimum_tls_version_12 import (
    +                app_minimum_tls_version_12,
    +            )
    +
    +            check = app_minimum_tls_version_12()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "FAIL"
    +            assert (
    +                result[0].status_extended
    +                == f"Minimum TLS version is not set to 1.2 for app 'app_id-1' in subscription '{AZURE_SUBSCRIPTION}'."
    +            )
    +            assert result[0].resource_id == resource_id
    +            assert result[0].resource_name == "app_id-1"
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    diff --git a/tests/providers/azure/services/app/app_register_with_identity/app_register_with_identity_test.py b/tests/providers/azure/services/app/app_register_with_identity/app_register_with_identity_test.py
    new file mode 100644
    index 00000000000..e80075882f5
    --- /dev/null
    +++ b/tests/providers/azure/services/app/app_register_with_identity/app_register_with_identity_test.py
    @@ -0,0 +1,111 @@
    +from unittest import mock
    +from uuid import uuid4
    +
    +from prowler.providers.azure.services.app.app_service import WebApp
    +from tests.providers.azure.azure_fixtures import AZURE_SUBSCRIPTION
    +
    +
    +class Test_app_register_with_identity:
    +    def test_app_no_subscriptions(self):
    +        app_client = mock.MagicMock
    +        app_client.apps = {}
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.app.app_register_with_identity.app_register_with_identity.app_client",
    +            new=app_client,
    +        ):
    +            from prowler.providers.azure.services.app.app_register_with_identity.app_register_with_identity import (
    +                app_register_with_identity,
    +            )
    +
    +            check = app_register_with_identity()
    +            result = check.execute()
    +            assert len(result) == 0
    +
    +    def test_app_subscriptions_empty(self):
    +        app_client = mock.MagicMock
    +        app_client.apps = {AZURE_SUBSCRIPTION: {}}
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.app.app_register_with_identity.app_register_with_identity.app_client",
    +            new=app_client,
    +        ):
    +            from prowler.providers.azure.services.app.app_register_with_identity.app_register_with_identity import (
    +                app_register_with_identity,
    +            )
    +
    +            check = app_register_with_identity()
    +            result = check.execute()
    +            assert len(result) == 0
    +
    +    def test_app_none_configurations(self):
    +        resource_id = f"/subscriptions/{uuid4()}"
    +        app_client = mock.MagicMock
    +        app_client.apps = {
    +            AZURE_SUBSCRIPTION: {
    +                "app_id-1": WebApp(
    +                    resource_id=resource_id,
    +                    auth_enabled=True,
    +                    configurations=None,
    +                    client_cert_mode="Ignore",
    +                    https_only=False,
    +                    identity=None,
    +                )
    +            }
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.app.app_register_with_identity.app_register_with_identity.app_client",
    +            new=app_client,
    +        ):
    +            from prowler.providers.azure.services.app.app_register_with_identity.app_register_with_identity import (
    +                app_register_with_identity,
    +            )
    +
    +            check = app_register_with_identity()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "FAIL"
    +            assert (
    +                result[0].status_extended
    +                == f"App 'app_id-1' in subscription '{AZURE_SUBSCRIPTION}' does not have an identity configured."
    +            )
    +            assert result[0].resource_id == resource_id
    +            assert result[0].resource_name == "app_id-1"
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +
    +    def test_app_identity(self):
    +        resource_id = f"/subscriptions/{uuid4()}"
    +        app_client = mock.MagicMock
    +        app_client.apps = {
    +            AZURE_SUBSCRIPTION: {
    +                "app_id-1": WebApp(
    +                    resource_id=resource_id,
    +                    auth_enabled=True,
    +                    configurations=None,
    +                    client_cert_mode="Ignore",
    +                    https_only=False,
    +                    identity=mock.MagicMock,
    +                )
    +            }
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.app.app_register_with_identity.app_register_with_identity.app_client",
    +            new=app_client,
    +        ):
    +            from prowler.providers.azure.services.app.app_register_with_identity.app_register_with_identity import (
    +                app_register_with_identity,
    +            )
    +
    +            check = app_register_with_identity()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "PASS"
    +            assert (
    +                result[0].status_extended
    +                == f"App 'app_id-1' in subscription '{AZURE_SUBSCRIPTION}' has an identity configured."
    +            )
    +            assert result[0].resource_id == resource_id
    +            assert result[0].resource_name == "app_id-1"
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    diff --git a/tests/providers/azure/services/app/app_service_test.py b/tests/providers/azure/services/app/app_service_test.py
    new file mode 100644
    index 00000000000..6b5d45728e5
    --- /dev/null
    +++ b/tests/providers/azure/services/app/app_service_test.py
    @@ -0,0 +1,79 @@
    +from unittest.mock import patch
    +
    +from azure.mgmt.web.models import ManagedServiceIdentity, SiteConfigResource
    +
    +from prowler.providers.azure.services.app.app_service import App, WebApp
    +from tests.providers.azure.azure_fixtures import (
    +    AZURE_SUBSCRIPTION,
    +    set_mocked_azure_audit_info,
    +)
    +
    +
    +def mock_app_get_apps(self):
    +    return {
    +        AZURE_SUBSCRIPTION: {
    +            "app_id-1": WebApp(
    +                resource_id="/subscriptions/resource_id",
    +                configurations=SiteConfigResource(),
    +                identity=ManagedServiceIdentity(type="SystemAssigned"),
    +                auth_enabled=True,
    +                client_cert_mode="Required",
    +                https_only=True,
    +            )
    +        }
    +    }
    +
    +
    +@patch(
    +    "prowler.providers.azure.services.app.app_service.App.__get_apps__",
    +    new=mock_app_get_apps,
    +)
    +class Test_App_Service:
    +    def test__get_client__(self):
    +        app_service = App(set_mocked_azure_audit_info())
    +        assert (
    +            app_service.clients[AZURE_SUBSCRIPTION].__class__.__name__
    +            == "WebSiteManagementClient"
    +        )
    +
    +    def test__get_subscriptions__(self):
    +        app_service = App(set_mocked_azure_audit_info())
    +        assert app_service.subscriptions.__class__.__name__ == "dict"
    +
    +    def test__get_apps__(self):
    +        app_service = App(set_mocked_azure_audit_info())
    +        assert len(app_service.apps) == 1
    +        assert (
    +            app_service.apps[AZURE_SUBSCRIPTION]["app_id-1"].resource_id
    +            == "/subscriptions/resource_id"
    +        )
    +        assert app_service.apps[AZURE_SUBSCRIPTION]["app_id-1"].auth_enabled
    +        assert (
    +            app_service.apps[AZURE_SUBSCRIPTION]["app_id-1"].client_cert_mode
    +            == "Required"
    +        )
    +        assert app_service.apps[AZURE_SUBSCRIPTION]["app_id-1"].https_only
    +        assert (
    +            app_service.apps[AZURE_SUBSCRIPTION]["app_id-1"].identity.type
    +            == "SystemAssigned"
    +        )
    +        assert (
    +            app_service.apps[AZURE_SUBSCRIPTION][
    +                "app_id-1"
    +            ].configurations.__class__.__name__
    +            == "SiteConfigResource"
    +        )
    +
    +    def test__get_client_cert_mode__(self):
    +        app_service = App(set_mocked_azure_audit_info())
    +        assert (
    +            app_service.__get_client_cert_mode__(False, "OptionalInteractiveUser")
    +            == "Ignore"
    +        )
    +        assert (
    +            app_service.__get_client_cert_mode__(True, "OptionalInteractiveUser")
    +            == "Optional"
    +        )
    +        assert app_service.__get_client_cert_mode__(True, "Optional") == "Allow"
    +        assert app_service.__get_client_cert_mode__(True, "Required") == "Required"
    +        assert app_service.__get_client_cert_mode__(True, "Foo") == "Ignore"
    diff --git a/tests/providers/azure/services/appinsights/appinsights_ensure_is_configured/appinsights_ensure_is_configured_test.py b/tests/providers/azure/services/appinsights/appinsights_ensure_is_configured/appinsights_ensure_is_configured_test.py
    new file mode 100644
    index 00000000000..9ccaf7e8aab
    --- /dev/null
    +++ b/tests/providers/azure/services/appinsights/appinsights_ensure_is_configured/appinsights_ensure_is_configured_test.py
    @@ -0,0 +1,77 @@
    +from unittest import mock
    +
    +from prowler.providers.azure.services.appinsights.appinsights_service import Component
    +from tests.providers.azure.azure_fixtures import AZURE_SUBSCRIPTION
    +
    +
    +class Test_appinsights_ensure_is_configured:
    +    def test_appinsights_no_subscriptions(self):
    +        appinsights_client = mock.MagicMock
    +        appinsights_client.components = {}
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.appinsights.appinsights_ensure_is_configured.appinsights_ensure_is_configured.appinsights_client",
    +            new=appinsights_client,
    +        ):
    +            from prowler.providers.azure.services.appinsights.appinsights_ensure_is_configured.appinsights_ensure_is_configured import (
    +                appinsights_ensure_is_configured,
    +            )
    +
    +            check = appinsights_ensure_is_configured()
    +            result = check.execute()
    +            assert len(result) == 0
    +
    +    def test_no_appinsights(self):
    +        appinsights_client = mock.MagicMock
    +        appinsights_client.components = {AZURE_SUBSCRIPTION: {}}
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.appinsights.appinsights_ensure_is_configured.appinsights_ensure_is_configured.appinsights_client",
    +            new=appinsights_client,
    +        ):
    +            from prowler.providers.azure.services.appinsights.appinsights_ensure_is_configured.appinsights_ensure_is_configured import (
    +                appinsights_ensure_is_configured,
    +            )
    +
    +            check = appinsights_ensure_is_configured()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].status == "FAIL"
    +            assert result[0].resource_id == "AppInsights"
    +            assert result[0].resource_name == "AppInsights"
    +            assert (
    +                result[0].status_extended
    +                == f"There are no AppInsight configured in susbscription {AZURE_SUBSCRIPTION}."
    +            )
    +
    +    def test_appinsights_configured(self):
    +        appinsights_client = mock.MagicMock
    +        appinsights_client.components = {
    +            AZURE_SUBSCRIPTION: {
    +                "app_id-1": Component(
    +                    resource_id="/subscriptions/resource_id",
    +                    resource_name="AppInsightsTest",
    +                )
    +            }
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.appinsights.appinsights_ensure_is_configured.appinsights_ensure_is_configured.appinsights_client",
    +            new=appinsights_client,
    +        ):
    +            from prowler.providers.azure.services.appinsights.appinsights_ensure_is_configured.appinsights_ensure_is_configured import (
    +                appinsights_ensure_is_configured,
    +            )
    +
    +            check = appinsights_ensure_is_configured()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].status == "PASS"
    +            assert result[0].resource_id == "AppInsights"
    +            assert result[0].resource_name == "AppInsights"
    +            assert (
    +                result[0].status_extended
    +                == f"There is at least one AppInsight configured in susbscription {AZURE_SUBSCRIPTION}."
    +            )
    diff --git a/tests/providers/azure/services/appinsights/appinsights_service_test.py b/tests/providers/azure/services/appinsights/appinsights_service_test.py
    new file mode 100644
    index 00000000000..8761e96a3b7
    --- /dev/null
    +++ b/tests/providers/azure/services/appinsights/appinsights_service_test.py
    @@ -0,0 +1,50 @@
    +from unittest.mock import patch
    +
    +from prowler.providers.azure.services.appinsights.appinsights_service import (
    +    AppInsights,
    +    Component,
    +)
    +from tests.providers.azure.azure_fixtures import (
    +    AZURE_SUBSCRIPTION,
    +    set_mocked_azure_audit_info,
    +)
    +
    +
    +def mock_appinsights_get_components(_):
    +    return {
    +        AZURE_SUBSCRIPTION: {
    +            "app_id-1": Component(
    +                resource_id="/subscriptions/resource_id",
    +                resource_name="AppInsightsTest",
    +            )
    +        }
    +    }
    +
    +
    +@patch(
    +    "prowler.providers.azure.services.appinsights.appinsights_service.AppInsights.__get_components__",
    +    new=mock_appinsights_get_components,
    +)
    +class Test_AppInsights_Service:
    +    def test__get_client__(self):
    +        app_insights = AppInsights(set_mocked_azure_audit_info())
    +        assert (
    +            app_insights.clients[AZURE_SUBSCRIPTION].__class__.__name__
    +            == "ApplicationInsightsManagementClient"
    +        )
    +
    +    def test__get_subscriptions__(self):
    +        app_insights = AppInsights(set_mocked_azure_audit_info())
    +        assert app_insights.subscriptions.__class__.__name__ == "dict"
    +
    +    def test__get_components__(self):
    +        appinsights = AppInsights(set_mocked_azure_audit_info())
    +        assert len(appinsights.components) == 1
    +        assert (
    +            appinsights.components[AZURE_SUBSCRIPTION]["app_id-1"].resource_id
    +            == "/subscriptions/resource_id"
    +        )
    +        assert (
    +            appinsights.components[AZURE_SUBSCRIPTION]["app_id-1"].resource_name
    +            == "AppInsightsTest"
    +        )
    diff --git a/tests/providers/azure/services/cosmosdb/cosmosdb_account_firewall_use_selected_networks/cosmosdb_account_firewall_use_selected_networks_test.py b/tests/providers/azure/services/cosmosdb/cosmosdb_account_firewall_use_selected_networks/cosmosdb_account_firewall_use_selected_networks_test.py
    new file mode 100644
    index 00000000000..64187ba0ff9
    --- /dev/null
    +++ b/tests/providers/azure/services/cosmosdb/cosmosdb_account_firewall_use_selected_networks/cosmosdb_account_firewall_use_selected_networks_test.py
    @@ -0,0 +1,101 @@
    +from unittest import mock
    +from uuid import uuid4
    +
    +from prowler.providers.azure.services.cosmosdb.cosmosdb_service import Account
    +from tests.providers.azure.azure_fixtures import AZURE_SUBSCRIPTION
    +
    +
    +class Test_cosmosdb_account_firewall_use_selected_networks:
    +    def test_no_accounts(self):
    +        cosmosdb_client = mock.MagicMock
    +        cosmosdb_client.accounts = {}
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.cosmosdb.cosmosdb_account_firewall_use_selected_networks.cosmosdb_account_firewall_use_selected_networks.cosmosdb_client",
    +            new=cosmosdb_client,
    +        ):
    +            from prowler.providers.azure.services.cosmosdb.cosmosdb_account_firewall_use_selected_networks.cosmosdb_account_firewall_use_selected_networks import (
    +                cosmosdb_account_firewall_use_selected_networks,
    +            )
    +
    +            check = cosmosdb_account_firewall_use_selected_networks()
    +            result = check.execute()
    +            assert len(result) == 0
    +
    +    def test_accounts_no_virtual_network_filter_enabled(self):
    +        cosmosdb_client = mock.MagicMock
    +        account_name = "Account Name"
    +        account_id = str(uuid4())
    +        cosmosdb_client.accounts = {
    +            AZURE_SUBSCRIPTION: [
    +                Account(
    +                    id=account_id,
    +                    name=account_name,
    +                    kind=None,
    +                    location=None,
    +                    type=None,
    +                    tags=None,
    +                    disable_local_auth=None,
    +                    is_virtual_network_filter_enabled=False,
    +                )
    +            ]
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.cosmosdb.cosmosdb_account_firewall_use_selected_networks.cosmosdb_account_firewall_use_selected_networks.cosmosdb_client",
    +            new=cosmosdb_client,
    +        ):
    +            from prowler.providers.azure.services.cosmosdb.cosmosdb_account_firewall_use_selected_networks.cosmosdb_account_firewall_use_selected_networks import (
    +                cosmosdb_account_firewall_use_selected_networks,
    +            )
    +
    +            check = cosmosdb_account_firewall_use_selected_networks()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "FAIL"
    +            assert (
    +                result[0].status_extended
    +                == f"CosmosDB account {account_name} from subscription {AZURE_SUBSCRIPTION} has firewall rules that allow access from all networks."
    +            )
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == account_name
    +            assert result[0].resource_id == account_id
    +
    +    def test_accounts_virtual_network_filter_enabled(self):
    +        cosmosdb_client = mock.MagicMock
    +        account_name = "Account Name"
    +        account_id = str(uuid4())
    +        cosmosdb_client.accounts = {
    +            AZURE_SUBSCRIPTION: [
    +                Account(
    +                    id=account_id,
    +                    name=account_name,
    +                    kind=None,
    +                    location=None,
    +                    type=None,
    +                    tags=None,
    +                    disable_local_auth=None,
    +                    is_virtual_network_filter_enabled=True,
    +                )
    +            ]
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.cosmosdb.cosmosdb_account_firewall_use_selected_networks.cosmosdb_account_firewall_use_selected_networks.cosmosdb_client",
    +            new=cosmosdb_client,
    +        ):
    +            from prowler.providers.azure.services.cosmosdb.cosmosdb_account_firewall_use_selected_networks.cosmosdb_account_firewall_use_selected_networks import (
    +                cosmosdb_account_firewall_use_selected_networks,
    +            )
    +
    +            check = cosmosdb_account_firewall_use_selected_networks()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "PASS"
    +            assert (
    +                result[0].status_extended
    +                == f"CosmosDB account {account_name} from subscription {AZURE_SUBSCRIPTION} has firewall rules that allow access only from selected networks."
    +            )
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == account_name
    +            assert result[0].resource_id == account_id
    diff --git a/tests/providers/azure/services/cosmosdb/cosmosdb_account_use_aad_and_rbac/cosmosdb_account_use_aad_and_rbac_test.py b/tests/providers/azure/services/cosmosdb/cosmosdb_account_use_aad_and_rbac/cosmosdb_account_use_aad_and_rbac_test.py
    new file mode 100644
    index 00000000000..5530262be3c
    --- /dev/null
    +++ b/tests/providers/azure/services/cosmosdb/cosmosdb_account_use_aad_and_rbac/cosmosdb_account_use_aad_and_rbac_test.py
    @@ -0,0 +1,103 @@
    +from unittest import mock
    +from uuid import uuid4
    +
    +from prowler.providers.azure.services.cosmosdb.cosmosdb_service import Account
    +from tests.providers.azure.azure_fixtures import AZURE_SUBSCRIPTION
    +
    +
    +class Test_cosmosdb_account_use_aad_and_rbac:
    +    def test_no_accounts(self):
    +        cosmosdb_client = mock.MagicMock
    +        cosmosdb_client.accounts = {}
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.cosmosdb.cosmosdb_account_use_aad_and_rbac.cosmosdb_account_use_aad_and_rbac.cosmosdb_client",
    +            new=cosmosdb_client,
    +        ):
    +            from prowler.providers.azure.services.cosmosdb.cosmosdb_account_use_aad_and_rbac.cosmosdb_account_use_aad_and_rbac import (
    +                cosmosdb_account_use_aad_and_rbac,
    +            )
    +
    +            check = cosmosdb_account_use_aad_and_rbac()
    +            result = check.execute()
    +            assert len(result) == 0
    +
    +    def test_accounts_disable_local_auth_false(self):
    +        cosmosdb_client = mock.MagicMock
    +        account_name = "Account Name"
    +        account_id = str(uuid4())
    +        cosmosdb_client.accounts = {
    +            AZURE_SUBSCRIPTION: [
    +                Account(
    +                    id=account_id,
    +                    name=account_name,
    +                    kind=None,
    +                    location=None,
    +                    type=None,
    +                    tags=None,
    +                    is_virtual_network_filter_enabled=None,
    +                    private_endpoint_connections=None,
    +                    disable_local_auth=False,
    +                )
    +            ]
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.cosmosdb.cosmosdb_account_use_aad_and_rbac.cosmosdb_account_use_aad_and_rbac.cosmosdb_client",
    +            new=cosmosdb_client,
    +        ):
    +            from prowler.providers.azure.services.cosmosdb.cosmosdb_account_use_aad_and_rbac.cosmosdb_account_use_aad_and_rbac import (
    +                cosmosdb_account_use_aad_and_rbac,
    +            )
    +
    +            check = cosmosdb_account_use_aad_and_rbac()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "FAIL"
    +            assert (
    +                result[0].status_extended
    +                == f"CosmosDB account {account_name} from subscription {AZURE_SUBSCRIPTION} is not using AAD and RBAC"
    +            )
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == account_name
    +            assert result[0].resource_id == account_id
    +
    +    def test_accounts_disable_local_auth_true(self):
    +        cosmosdb_client = mock.MagicMock
    +        account_name = "Account Name"
    +        account_id = str(uuid4())
    +        cosmosdb_client.accounts = {
    +            AZURE_SUBSCRIPTION: [
    +                Account(
    +                    id=account_id,
    +                    name=account_name,
    +                    kind=None,
    +                    location=None,
    +                    type=None,
    +                    tags=None,
    +                    is_virtual_network_filter_enabled=None,
    +                    private_endpoint_connections=None,
    +                    disable_local_auth=True,
    +                )
    +            ]
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.cosmosdb.cosmosdb_account_use_aad_and_rbac.cosmosdb_account_use_aad_and_rbac.cosmosdb_client",
    +            new=cosmosdb_client,
    +        ):
    +            from prowler.providers.azure.services.cosmosdb.cosmosdb_account_use_aad_and_rbac.cosmosdb_account_use_aad_and_rbac import (
    +                cosmosdb_account_use_aad_and_rbac,
    +            )
    +
    +            check = cosmosdb_account_use_aad_and_rbac()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "PASS"
    +            assert (
    +                result[0].status_extended
    +                == f"CosmosDB account {account_name} from subscription {AZURE_SUBSCRIPTION} is using AAD and RBAC"
    +            )
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == account_name
    +            assert result[0].resource_id == account_id
    diff --git a/tests/providers/azure/services/cosmosdb/cosmosdb_account_use_private_endpoints/cosmosdb_account_use_private_endpoints_test.py b/tests/providers/azure/services/cosmosdb/cosmosdb_account_use_private_endpoints/cosmosdb_account_use_private_endpoints_test.py
    new file mode 100644
    index 00000000000..4fdf18a19a1
    --- /dev/null
    +++ b/tests/providers/azure/services/cosmosdb/cosmosdb_account_use_private_endpoints/cosmosdb_account_use_private_endpoints_test.py
    @@ -0,0 +1,109 @@
    +from unittest import mock
    +from uuid import uuid4
    +
    +from azure.mgmt.cosmosdb.models import PrivateEndpointConnection
    +
    +from prowler.providers.azure.services.cosmosdb.cosmosdb_service import Account
    +from tests.providers.azure.azure_fixtures import AZURE_SUBSCRIPTION
    +
    +
    +class Test_cosmosdb_account_use_private_endpoints:
    +    def test_no_accounts(self):
    +        cosmosdb_client = mock.MagicMock
    +        cosmosdb_client.accounts = {}
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.cosmosdb.cosmosdb_account_use_private_endpoints.cosmosdb_account_use_private_endpoints.cosmosdb_client",
    +            new=cosmosdb_client,
    +        ):
    +            from prowler.providers.azure.services.cosmosdb.cosmosdb_account_use_private_endpoints.cosmosdb_account_use_private_endpoints import (
    +                cosmosdb_account_use_private_endpoints,
    +            )
    +
    +            check = cosmosdb_account_use_private_endpoints()
    +            result = check.execute()
    +            assert len(result) == 0
    +
    +    def test_accounts_no_private_endpoints_connections(self):
    +        cosmosdb_client = mock.MagicMock
    +        account_name = "Account Name"
    +        account_id = str(uuid4())
    +        cosmosdb_client.accounts = {
    +            AZURE_SUBSCRIPTION: [
    +                Account(
    +                    id=account_id,
    +                    name=account_name,
    +                    kind=None,
    +                    location=None,
    +                    type=None,
    +                    tags=None,
    +                    is_virtual_network_filter_enabled=None,
    +                    private_endpoint_connections=None,
    +                    disable_local_auth=None,
    +                )
    +            ]
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.cosmosdb.cosmosdb_account_use_private_endpoints.cosmosdb_account_use_private_endpoints.cosmosdb_client",
    +            new=cosmosdb_client,
    +        ):
    +            from prowler.providers.azure.services.cosmosdb.cosmosdb_account_use_private_endpoints.cosmosdb_account_use_private_endpoints import (
    +                cosmosdb_account_use_private_endpoints,
    +            )
    +
    +            check = cosmosdb_account_use_private_endpoints()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "FAIL"
    +            assert (
    +                result[0].status_extended
    +                == f"CosmosDB account {account_name} from subscription {AZURE_SUBSCRIPTION} is not using private endpoints connections"
    +            )
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == account_name
    +            assert result[0].resource_id == account_id
    +
    +    def test_accounts_private_endpoints_connections(self):
    +        cosmosdb_client = mock.MagicMock
    +        account_name = "Account Name"
    +        account_id = str(uuid4())
    +        cosmosdb_client.accounts = {
    +            AZURE_SUBSCRIPTION: [
    +                Account(
    +                    id=account_id,
    +                    name=account_name,
    +                    kind=None,
    +                    location=None,
    +                    type=None,
    +                    tags=None,
    +                    is_virtual_network_filter_enabled=None,
    +                    private_endpoint_connections=[
    +                        PrivateEndpointConnection(
    +                            id="private_endpoint", name="private_name"
    +                        )
    +                    ],
    +                    disable_local_auth=None,
    +                )
    +            ]
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.cosmosdb.cosmosdb_account_use_private_endpoints.cosmosdb_account_use_private_endpoints.cosmosdb_client",
    +            new=cosmosdb_client,
    +        ):
    +            from prowler.providers.azure.services.cosmosdb.cosmosdb_account_use_private_endpoints.cosmosdb_account_use_private_endpoints import (
    +                cosmosdb_account_use_private_endpoints,
    +            )
    +
    +            check = cosmosdb_account_use_private_endpoints()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "PASS"
    +            assert (
    +                result[0].status_extended
    +                == f"CosmosDB account {account_name} from subscription {AZURE_SUBSCRIPTION} is using private endpoints connections"
    +            )
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == account_name
    +            assert result[0].resource_id == account_id
    diff --git a/tests/providers/azure/services/cosmosdb/cosmosdb_service_test.py b/tests/providers/azure/services/cosmosdb/cosmosdb_service_test.py
    new file mode 100644
    index 00000000000..4e965c8ad9a
    --- /dev/null
    +++ b/tests/providers/azure/services/cosmosdb/cosmosdb_service_test.py
    @@ -0,0 +1,52 @@
    +from unittest.mock import patch
    +
    +from prowler.providers.azure.services.cosmosdb.cosmosdb_service import Account, CosmosDB
    +from tests.providers.azure.azure_fixtures import (
    +    AZURE_SUBSCRIPTION,
    +    set_mocked_azure_audit_info,
    +)
    +
    +
    +def mock_cosmosdb_get_accounts(_):
    +    return {
    +        AZURE_SUBSCRIPTION: [
    +            Account(
    +                id="account_id",
    +                name="account_name",
    +                kind=None,
    +                location=None,
    +                type=None,
    +                tags=None,
    +                is_virtual_network_filter_enabled=None,
    +                disable_local_auth=None,
    +            )
    +        ]
    +    }
    +
    +
    +@patch(
    +    "prowler.providers.azure.services.cosmosdb.cosmosdb_service.CosmosDB.__get_accounts__",
    +    new=mock_cosmosdb_get_accounts,
    +)
    +class Test_CosmosDB_Service:
    +    def test__get_client__(self):
    +        account = CosmosDB(set_mocked_azure_audit_info())
    +        assert (
    +            account.clients[AZURE_SUBSCRIPTION].__class__.__name__
    +            == "CosmosDBManagementClient"
    +        )
    +
    +    def test__get_accounts__(self):
    +        account = CosmosDB(set_mocked_azure_audit_info())
    +        assert account.accounts[AZURE_SUBSCRIPTION][0].__class__.__name__ == "Account"
    +        assert account.accounts[AZURE_SUBSCRIPTION][0].id == "account_id"
    +        assert account.accounts[AZURE_SUBSCRIPTION][0].name == "account_name"
    +        assert account.accounts[AZURE_SUBSCRIPTION][0].kind is None
    +        assert account.accounts[AZURE_SUBSCRIPTION][0].location is None
    +        assert account.accounts[AZURE_SUBSCRIPTION][0].type is None
    +        assert account.accounts[AZURE_SUBSCRIPTION][0].tags is None
    +        assert (
    +            account.accounts[AZURE_SUBSCRIPTION][0].is_virtual_network_filter_enabled
    +            is None
    +        )
    +        assert account.accounts[AZURE_SUBSCRIPTION][0].disable_local_auth is None
    diff --git a/tests/providers/azure/services/defender/defender_additional_email_configured_with_a_security_contact/defender_additional_email_configured_with_a_security_contact_test.py b/tests/providers/azure/services/defender/defender_additional_email_configured_with_a_security_contact/defender_additional_email_configured_with_a_security_contact_test.py
    new file mode 100644
    index 00000000000..5078c909b6a
    --- /dev/null
    +++ b/tests/providers/azure/services/defender/defender_additional_email_configured_with_a_security_contact/defender_additional_email_configured_with_a_security_contact_test.py
    @@ -0,0 +1,247 @@
    +from unittest import mock
    +from uuid import uuid4
    +
    +from prowler.providers.azure.services.defender.defender_service import SecurityContacts
    +from tests.providers.azure.azure_fixtures import AZURE_SUBSCRIPTION
    +
    +
    +class Test_defender_additional_email_configured_with_a_security_contact:
    +    def test_defender_no_subscriptions(self):
    +        defender_client = mock.MagicMock
    +        defender_client.security_contacts = {}
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.defender.defender_additional_email_configured_with_a_security_contact.defender_additional_email_configured_with_a_security_contact.defender_client",
    +            new=defender_client,
    +        ):
    +            from prowler.providers.azure.services.defender.defender_additional_email_configured_with_a_security_contact.defender_additional_email_configured_with_a_security_contact import (
    +                defender_additional_email_configured_with_a_security_contact,
    +            )
    +
    +            check = defender_additional_email_configured_with_a_security_contact()
    +            result = check.execute()
    +            assert len(result) == 0
    +
    +    def test_defender_no_additional_emails(self):
    +        resource_id = str(uuid4())
    +        defender_client = mock.MagicMock
    +        defender_client.security_contacts = {
    +            AZURE_SUBSCRIPTION: {
    +                "default": SecurityContacts(
    +                    resource_id=resource_id,
    +                    emails="",
    +                    phone="",
    +                    alert_notifications_minimal_severity="High",
    +                    alert_notifications_state="On",
    +                    notified_roles=["Contributor"],
    +                    notified_roles_state="On",
    +                )
    +            }
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.defender.defender_additional_email_configured_with_a_security_contact.defender_additional_email_configured_with_a_security_contact.defender_client",
    +            new=defender_client,
    +        ):
    +            from prowler.providers.azure.services.defender.defender_additional_email_configured_with_a_security_contact.defender_additional_email_configured_with_a_security_contact import (
    +                defender_additional_email_configured_with_a_security_contact,
    +            )
    +
    +            check = defender_additional_email_configured_with_a_security_contact()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "FAIL"
    +            assert (
    +                result[0].status_extended
    +                == f"There is not another correct email configured for susbscription {AZURE_SUBSCRIPTION}."
    +            )
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == "default"
    +            assert result[0].resource_id == resource_id
    +
    +    def test_defender_additional_email_bad_format(self):
    +        resource_id = str(uuid4())
    +        defender_client = mock.MagicMock
    +        defender_client.security_contacts = {
    +            AZURE_SUBSCRIPTION: {
    +                "default": SecurityContacts(
    +                    resource_id=resource_id,
    +                    emails="bad_email",
    +                    phone="",
    +                    alert_notifications_minimal_severity="High",
    +                    alert_notifications_state="On",
    +                    notified_roles=["Contributor"],
    +                    notified_roles_state="On",
    +                )
    +            }
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.defender.defender_additional_email_configured_with_a_security_contact.defender_additional_email_configured_with_a_security_contact.defender_client",
    +            new=defender_client,
    +        ):
    +            from prowler.providers.azure.services.defender.defender_additional_email_configured_with_a_security_contact.defender_additional_email_configured_with_a_security_contact import (
    +                defender_additional_email_configured_with_a_security_contact,
    +            )
    +
    +            check = defender_additional_email_configured_with_a_security_contact()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "FAIL"
    +            assert (
    +                result[0].status_extended
    +                == f"There is not another correct email configured for susbscription {AZURE_SUBSCRIPTION}."
    +            )
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == "default"
    +            assert result[0].resource_id == resource_id
    +
    +    def test_defender_additional_email_bad_separator(self):
    +        resource_id = str(uuid4())
    +        defender_client = mock.MagicMock
    +        defender_client.security_contacts = {
    +            AZURE_SUBSCRIPTION: {
    +                "default": SecurityContacts(
    +                    resource_id=resource_id,
    +                    emails="test@test.es,   test@test.email.com",
    +                    phone="",
    +                    alert_notifications_minimal_severity="High",
    +                    alert_notifications_state="On",
    +                    notified_roles=["Contributor"],
    +                    notified_roles_state="On",
    +                )
    +            }
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.defender.defender_additional_email_configured_with_a_security_contact.defender_additional_email_configured_with_a_security_contact.defender_client",
    +            new=defender_client,
    +        ):
    +            from prowler.providers.azure.services.defender.defender_additional_email_configured_with_a_security_contact.defender_additional_email_configured_with_a_security_contact import (
    +                defender_additional_email_configured_with_a_security_contact,
    +            )
    +
    +            check = defender_additional_email_configured_with_a_security_contact()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "FAIL"
    +            assert (
    +                result[0].status_extended
    +                == f"There is not another correct email configured for susbscription {AZURE_SUBSCRIPTION}."
    +            )
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == "default"
    +            assert result[0].resource_id == resource_id
    +
    +    def test_defender_additional_email_good_format(self):
    +        resource_id = str(uuid4())
    +        defender_client = mock.MagicMock
    +        defender_client.security_contacts = {
    +            AZURE_SUBSCRIPTION: {
    +                "default": SecurityContacts(
    +                    resource_id=resource_id,
    +                    emails="test@test.com",
    +                    phone="",
    +                    alert_notifications_minimal_severity="High",
    +                    alert_notifications_state="On",
    +                    notified_roles=["Contributor"],
    +                    notified_roles_state="On",
    +                )
    +            }
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.defender.defender_additional_email_configured_with_a_security_contact.defender_additional_email_configured_with_a_security_contact.defender_client",
    +            new=defender_client,
    +        ):
    +            from prowler.providers.azure.services.defender.defender_additional_email_configured_with_a_security_contact.defender_additional_email_configured_with_a_security_contact import (
    +                defender_additional_email_configured_with_a_security_contact,
    +            )
    +
    +            check = defender_additional_email_configured_with_a_security_contact()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "PASS"
    +            assert (
    +                result[0].status_extended
    +                == f"There is another correct email configured for susbscription {AZURE_SUBSCRIPTION}."
    +            )
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == "default"
    +            assert result[0].resource_id == resource_id
    +
    +    def test_defender_additional_email_good_format_multiple_subdomains(self):
    +        resource_id = str(uuid4())
    +        defender_client = mock.MagicMock
    +        defender_client.security_contacts = {
    +            AZURE_SUBSCRIPTION: {
    +                "default": SecurityContacts(
    +                    resource_id=resource_id,
    +                    emails="test@test.mail.es; bad_mail",
    +                    phone="",
    +                    alert_notifications_minimal_severity="High",
    +                    alert_notifications_state="On",
    +                    notified_roles=["Contributor"],
    +                    notified_roles_state="On",
    +                )
    +            }
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.defender.defender_additional_email_configured_with_a_security_contact.defender_additional_email_configured_with_a_security_contact.defender_client",
    +            new=defender_client,
    +        ):
    +            from prowler.providers.azure.services.defender.defender_additional_email_configured_with_a_security_contact.defender_additional_email_configured_with_a_security_contact import (
    +                defender_additional_email_configured_with_a_security_contact,
    +            )
    +
    +            check = defender_additional_email_configured_with_a_security_contact()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "PASS"
    +            assert (
    +                result[0].status_extended
    +                == f"There is another correct email configured for susbscription {AZURE_SUBSCRIPTION}."
    +            )
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == "default"
    +            assert result[0].resource_id == resource_id
    +
    +    def test_defender_default_security_contact_not_found(self):
    +        defender_client = mock.MagicMock
    +        defender_client.security_contacts = {
    +            AZURE_SUBSCRIPTION: {
    +                "default": SecurityContacts(
    +                    resource_id=f"/subscriptions/{AZURE_SUBSCRIPTION}/providers/Microsoft.Security/securityContacts/default",
    +                    emails="",
    +                    phone="",
    +                    alert_notifications_minimal_severity="",
    +                    alert_notifications_state="",
    +                    notified_roles=[""],
    +                    notified_roles_state="",
    +                )
    +            }
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.defender.defender_additional_email_configured_with_a_security_contact.defender_additional_email_configured_with_a_security_contact.defender_client",
    +            new=defender_client,
    +        ):
    +            from prowler.providers.azure.services.defender.defender_additional_email_configured_with_a_security_contact.defender_additional_email_configured_with_a_security_contact import (
    +                defender_additional_email_configured_with_a_security_contact,
    +            )
    +
    +            check = defender_additional_email_configured_with_a_security_contact()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "FAIL"
    +            assert (
    +                result[0].status_extended
    +                == f"There is not another correct email configured for susbscription {AZURE_SUBSCRIPTION}."
    +            )
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == "default"
    +            assert (
    +                result[0].resource_id
    +                == f"/subscriptions/{AZURE_SUBSCRIPTION}/providers/Microsoft.Security/securityContacts/default"
    +            )
    diff --git a/tests/providers/azure/services/defender/defender_assessments_vm_endpoint_protection_installed/defender_assessments_vm_endpoint_protection_installed_test.py b/tests/providers/azure/services/defender/defender_assessments_vm_endpoint_protection_installed/defender_assessments_vm_endpoint_protection_installed_test.py
    new file mode 100644
    index 00000000000..d88615c4aa1
    --- /dev/null
    +++ b/tests/providers/azure/services/defender/defender_assessments_vm_endpoint_protection_installed/defender_assessments_vm_endpoint_protection_installed_test.py
    @@ -0,0 +1,103 @@
    +from unittest import mock
    +from uuid import uuid4
    +
    +from prowler.providers.azure.services.defender.defender_service import Assesment
    +from tests.providers.azure.azure_fixtures import AZURE_SUBSCRIPTION
    +
    +
    +class Test_defender_assessments_vm_endpoint_protection_installed:
    +    def test_defender_no_subscriptions(self):
    +        defender_client = mock.MagicMock
    +        defender_client.assessments = {}
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.defender.defender_assessments_vm_endpoint_protection_installed.defender_assessments_vm_endpoint_protection_installed.defender_client",
    +            new=defender_client,
    +        ):
    +            from prowler.providers.azure.services.defender.defender_assessments_vm_endpoint_protection_installed.defender_assessments_vm_endpoint_protection_installed import (
    +                defender_assessments_vm_endpoint_protection_installed,
    +            )
    +
    +            check = defender_assessments_vm_endpoint_protection_installed()
    +            result = check.execute()
    +            assert len(result) == 0
    +
    +    def test_defender_subscriptions_with_no_assessments(self):
    +        defender_client = mock.MagicMock
    +        defender_client.assessments = {AZURE_SUBSCRIPTION: {}}
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.defender.defender_assessments_vm_endpoint_protection_installed.defender_assessments_vm_endpoint_protection_installed.defender_client",
    +            new=defender_client,
    +        ):
    +            from prowler.providers.azure.services.defender.defender_assessments_vm_endpoint_protection_installed.defender_assessments_vm_endpoint_protection_installed import (
    +                defender_assessments_vm_endpoint_protection_installed,
    +            )
    +
    +            check = defender_assessments_vm_endpoint_protection_installed()
    +            result = check.execute()
    +            assert len(result) == 0
    +
    +    def test_defender_subscriptions_with_healthy_assessments(self):
    +        defender_client = mock.MagicMock
    +        resource_id = str(uuid4())
    +        defender_client.assessments = {
    +            AZURE_SUBSCRIPTION: {
    +                "Install endpoint protection solution on virtual machines": Assesment(
    +                    resource_id=resource_id,
    +                    resource_name="vm1",
    +                    status="Healthy",
    +                )
    +            }
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.defender.defender_assessments_vm_endpoint_protection_installed.defender_assessments_vm_endpoint_protection_installed.defender_client",
    +            new=defender_client,
    +        ):
    +            from prowler.providers.azure.services.defender.defender_assessments_vm_endpoint_protection_installed.defender_assessments_vm_endpoint_protection_installed import (
    +                defender_assessments_vm_endpoint_protection_installed,
    +            )
    +
    +            check = defender_assessments_vm_endpoint_protection_installed()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "PASS"
    +            assert (
    +                result[0].status_extended
    +                == f"Endpoint protection is set up in all VMs in subscription {AZURE_SUBSCRIPTION}."
    +            )
    +            assert result[0].resource_name == "vm1"
    +            assert result[0].resource_id == resource_id
    +
    +    def test_defender_subscriptions_with_unhealthy_assessments(self):
    +        defender_client = mock.MagicMock
    +        resource_id = str(uuid4())
    +        defender_client.assessments = {
    +            AZURE_SUBSCRIPTION: {
    +                "Install endpoint protection solution on virtual machines": Assesment(
    +                    resource_id=resource_id,
    +                    resource_name="vm1",
    +                    status="Unhealthy",
    +                )
    +            }
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.defender.defender_assessments_vm_endpoint_protection_installed.defender_assessments_vm_endpoint_protection_installed.defender_client",
    +            new=defender_client,
    +        ):
    +            from prowler.providers.azure.services.defender.defender_assessments_vm_endpoint_protection_installed.defender_assessments_vm_endpoint_protection_installed import (
    +                defender_assessments_vm_endpoint_protection_installed,
    +            )
    +
    +            check = defender_assessments_vm_endpoint_protection_installed()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "FAIL"
    +            assert (
    +                result[0].status_extended
    +                == f"Endpoint protection is not set up in all VMs in subscription {AZURE_SUBSCRIPTION}."
    +            )
    +            assert result[0].resource_name == "vm1"
    +            assert result[0].resource_id == resource_id
    diff --git a/tests/providers/azure/services/defender/defender_auto_provisioning_log_analytics_agent_vms_on/defender_auto_provisioning_log_analytics_agent_vms_on_test.py b/tests/providers/azure/services/defender/defender_auto_provisioning_log_analytics_agent_vms_on/defender_auto_provisioning_log_analytics_agent_vms_on_test.py
    new file mode 100644
    index 00000000000..c048075070a
    --- /dev/null
    +++ b/tests/providers/azure/services/defender/defender_auto_provisioning_log_analytics_agent_vms_on/defender_auto_provisioning_log_analytics_agent_vms_on_test.py
    @@ -0,0 +1,142 @@
    +from unittest import mock
    +from uuid import uuid4
    +
    +from prowler.providers.azure.services.defender.defender_service import (
    +    AutoProvisioningSetting,
    +)
    +from tests.providers.azure.azure_fixtures import AZURE_SUBSCRIPTION
    +
    +
    +class Test_defender_auto_provisioning_log_analytics_agent_vms_on:
    +    def test_defender_no_app_services(self):
    +        defender_client = mock.MagicMock
    +        defender_client.auto_provisioning_settings = {}
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.defender.defender_auto_provisioning_log_analytics_agent_vms_on.defender_auto_provisioning_log_analytics_agent_vms_on.defender_client",
    +            new=defender_client,
    +        ):
    +            from prowler.providers.azure.services.defender.defender_auto_provisioning_log_analytics_agent_vms_on.defender_auto_provisioning_log_analytics_agent_vms_on import (
    +                defender_auto_provisioning_log_analytics_agent_vms_on,
    +            )
    +
    +            check = defender_auto_provisioning_log_analytics_agent_vms_on()
    +            result = check.execute()
    +            assert len(result) == 0
    +
    +    def test_defender_auto_provisioning_log_analytics_off(self):
    +        resource_id = str(uuid4())
    +        defender_client = mock.MagicMock
    +        defender_client.auto_provisioning_settings = {
    +            AZURE_SUBSCRIPTION: {
    +                "default": AutoProvisioningSetting(
    +                    resource_id=resource_id,
    +                    resource_name="default",
    +                    auto_provision="Off",
    +                    resource_type="Defender",
    +                )
    +            }
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.defender.defender_auto_provisioning_log_analytics_agent_vms_on.defender_auto_provisioning_log_analytics_agent_vms_on.defender_client",
    +            new=defender_client,
    +        ):
    +            from prowler.providers.azure.services.defender.defender_auto_provisioning_log_analytics_agent_vms_on.defender_auto_provisioning_log_analytics_agent_vms_on import (
    +                defender_auto_provisioning_log_analytics_agent_vms_on,
    +            )
    +
    +            check = defender_auto_provisioning_log_analytics_agent_vms_on()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "FAIL"
    +            assert (
    +                result[0].status_extended
    +                == f"Defender Auto Provisioning Log Analytics Agents from subscription {AZURE_SUBSCRIPTION} is set to OFF."
    +            )
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == "default"
    +            assert result[0].resource_id == resource_id
    +
    +    def test_defender_auto_provisioning_log_analytics_on(self):
    +        resource_id = str(uuid4())
    +        defender_client = mock.MagicMock
    +        defender_client.auto_provisioning_settings = {
    +            AZURE_SUBSCRIPTION: {
    +                "default": AutoProvisioningSetting(
    +                    resource_id=resource_id,
    +                    resource_name="default",
    +                    auto_provision="On",
    +                    resource_type="Defender",
    +                )
    +            }
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.defender.defender_auto_provisioning_log_analytics_agent_vms_on.defender_auto_provisioning_log_analytics_agent_vms_on.defender_client",
    +            new=defender_client,
    +        ):
    +            from prowler.providers.azure.services.defender.defender_auto_provisioning_log_analytics_agent_vms_on.defender_auto_provisioning_log_analytics_agent_vms_on import (
    +                defender_auto_provisioning_log_analytics_agent_vms_on,
    +            )
    +
    +            check = defender_auto_provisioning_log_analytics_agent_vms_on()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "PASS"
    +            assert (
    +                result[0].status_extended
    +                == f"Defender Auto Provisioning Log Analytics Agents from subscription {AZURE_SUBSCRIPTION} is set to ON."
    +            )
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == "default"
    +            assert result[0].resource_id == resource_id
    +
    +    def test_defender_auto_provisioning_log_analytics_on_and_off(self):
    +        resource_id = str(uuid4())
    +        defender_client = mock.MagicMock
    +        defender_client.auto_provisioning_settings = {
    +            AZURE_SUBSCRIPTION: {
    +                "default": AutoProvisioningSetting(
    +                    resource_id=resource_id,
    +                    resource_name="default",
    +                    auto_provision="On",
    +                    resource_type="Defender",
    +                ),
    +                "default2": AutoProvisioningSetting(
    +                    resource_id=resource_id,
    +                    resource_name="default2",
    +                    auto_provision="Off",
    +                    resource_type="Defender",
    +                ),
    +            }
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.defender.defender_auto_provisioning_log_analytics_agent_vms_on.defender_auto_provisioning_log_analytics_agent_vms_on.defender_client",
    +            new=defender_client,
    +        ):
    +            from prowler.providers.azure.services.defender.defender_auto_provisioning_log_analytics_agent_vms_on.defender_auto_provisioning_log_analytics_agent_vms_on import (
    +                defender_auto_provisioning_log_analytics_agent_vms_on,
    +            )
    +
    +            check = defender_auto_provisioning_log_analytics_agent_vms_on()
    +            result = check.execute()
    +            assert len(result) == 2
    +            assert result[0].status == "PASS"
    +            assert (
    +                result[0].status_extended
    +                == f"Defender Auto Provisioning Log Analytics Agents from subscription {AZURE_SUBSCRIPTION} is set to ON."
    +            )
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == "default"
    +            assert result[0].resource_id == resource_id
    +
    +            assert result[1].status == "FAIL"
    +            assert (
    +                result[1].status_extended
    +                == f"Defender Auto Provisioning Log Analytics Agents from subscription {AZURE_SUBSCRIPTION} is set to OFF."
    +            )
    +            assert result[1].subscription == AZURE_SUBSCRIPTION
    +            assert result[1].resource_name == "default2"
    +            assert result[1].resource_id == resource_id
    diff --git a/tests/providers/azure/services/defender/defender_auto_provisioning_vulnerabilty_assessments_machines_on/defender_auto_provisioning_vulnerabilty_assessments_machines_on_test.py b/tests/providers/azure/services/defender/defender_auto_provisioning_vulnerabilty_assessments_machines_on/defender_auto_provisioning_vulnerabilty_assessments_machines_on_test.py
    new file mode 100644
    index 00000000000..0f7306fdcda
    --- /dev/null
    +++ b/tests/providers/azure/services/defender/defender_auto_provisioning_vulnerabilty_assessments_machines_on/defender_auto_provisioning_vulnerabilty_assessments_machines_on_test.py
    @@ -0,0 +1,89 @@
    +from unittest import mock
    +from uuid import uuid4
    +
    +from prowler.providers.azure.services.defender.defender_service import Assesment
    +from tests.providers.azure.azure_fixtures import AZURE_SUBSCRIPTION
    +
    +
    +class Test_defender_auto_provisioning_vulnerabilty_assessments_machines_on:
    +    def test_defender_no_app_services(self):
    +        defender_client = mock.MagicMock
    +        defender_client.assessments = {}
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.defender.defender_auto_provisioning_vulnerabilty_assessments_machines_on.defender_auto_provisioning_vulnerabilty_assessments_machines_on.defender_client",
    +            new=defender_client,
    +        ):
    +            from prowler.providers.azure.services.defender.defender_auto_provisioning_vulnerabilty_assessments_machines_on.defender_auto_provisioning_vulnerabilty_assessments_machines_on import (
    +                defender_auto_provisioning_vulnerabilty_assessments_machines_on,
    +            )
    +
    +            check = defender_auto_provisioning_vulnerabilty_assessments_machines_on()
    +            result = check.execute()
    +            assert len(result) == 0
    +
    +    def test_defender_machines_no_vulnerability_assessment_solution(self):
    +        resource_id = str(uuid4())
    +        defender_client = mock.MagicMock
    +        defender_client.assessments = {
    +            AZURE_SUBSCRIPTION: {
    +                "Machines should have a vulnerability assessment solution": Assesment(
    +                    resource_id=resource_id,
    +                    resource_name="vm1",
    +                    status="Unhealthy",
    +                )
    +            }
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.defender.defender_auto_provisioning_vulnerabilty_assessments_machines_on.defender_auto_provisioning_vulnerabilty_assessments_machines_on.defender_client",
    +            new=defender_client,
    +        ):
    +            from prowler.providers.azure.services.defender.defender_auto_provisioning_vulnerabilty_assessments_machines_on.defender_auto_provisioning_vulnerabilty_assessments_machines_on import (
    +                defender_auto_provisioning_vulnerabilty_assessments_machines_on,
    +            )
    +
    +            check = defender_auto_provisioning_vulnerabilty_assessments_machines_on()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "FAIL"
    +            assert (
    +                result[0].status_extended
    +                == f"Vulnerability assessment is not set up in all VMs in subscription {AZURE_SUBSCRIPTION}."
    +            )
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == "vm1"
    +            assert result[0].resource_id == resource_id
    +
    +    def test_defender_machines_vulnerability_assessment_solution(self):
    +        resource_id = str(uuid4())
    +        defender_client = mock.MagicMock
    +        defender_client.assessments = {
    +            AZURE_SUBSCRIPTION: {
    +                "Machines should have a vulnerability assessment solution": Assesment(
    +                    resource_id=resource_id,
    +                    resource_name="vm1",
    +                    status="Healthy",
    +                )
    +            }
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.defender.defender_auto_provisioning_vulnerabilty_assessments_machines_on.defender_auto_provisioning_vulnerabilty_assessments_machines_on.defender_client",
    +            new=defender_client,
    +        ):
    +            from prowler.providers.azure.services.defender.defender_auto_provisioning_vulnerabilty_assessments_machines_on.defender_auto_provisioning_vulnerabilty_assessments_machines_on import (
    +                defender_auto_provisioning_vulnerabilty_assessments_machines_on,
    +            )
    +
    +            check = defender_auto_provisioning_vulnerabilty_assessments_machines_on()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "PASS"
    +            assert (
    +                result[0].status_extended
    +                == f"Vulnerability assessment is set up in all VMs in subscription {AZURE_SUBSCRIPTION}."
    +            )
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == "vm1"
    +            assert result[0].resource_id == resource_id
    diff --git a/tests/providers/azure/services/defender/defender_ensure_defender_for_app_services_is_on/defender_ensure_defender_for_app_services_is_on_test.py b/tests/providers/azure/services/defender/defender_ensure_defender_for_app_services_is_on/defender_ensure_defender_for_app_services_is_on_test.py
    index 83bf9fe5c86..fc659680abf 100644
    --- a/tests/providers/azure/services/defender/defender_ensure_defender_for_app_services_is_on/defender_ensure_defender_for_app_services_is_on_test.py
    +++ b/tests/providers/azure/services/defender/defender_ensure_defender_for_app_services_is_on/defender_ensure_defender_for_app_services_is_on_test.py
    @@ -1,9 +1,8 @@
     from unittest import mock
     from uuid import uuid4
     
    -from prowler.providers.azure.services.defender.defender_service import Defender_Pricing
    -
    -AZURE_SUSCRIPTION = str(uuid4())
    +from prowler.providers.azure.services.defender.defender_service import Pricing
    +from tests.providers.azure.azure_fixtures import AZURE_SUBSCRIPTION
     
     
     class Test_defender_ensure_defender_for_app_services_is_on:
    @@ -27,8 +26,8 @@ def test_defender_app_services_pricing_tier_not_standard(self):
             resource_id = str(uuid4())
             defender_client = mock.MagicMock
             defender_client.pricings = {
    -            AZURE_SUSCRIPTION: {
    -                "AppServices": Defender_Pricing(
    +            AZURE_SUBSCRIPTION: {
    +                "AppServices": Pricing(
                         resource_id=resource_id,
                         pricing_tier="Not Standard",
                         free_trial_remaining_time=0,
    @@ -50,9 +49,9 @@ def test_defender_app_services_pricing_tier_not_standard(self):
                 assert result[0].status == "FAIL"
                 assert (
                     result[0].status_extended
    -                == f"Defender plan Defender for App Services from subscription {AZURE_SUSCRIPTION} is set to OFF (pricing tier not standard)."
    +                == f"Defender plan Defender for App Services from subscription {AZURE_SUBSCRIPTION} is set to OFF (pricing tier not standard)."
                 )
    -            assert result[0].subscription == AZURE_SUSCRIPTION
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
                 assert result[0].resource_name == "Defender plan App Services"
                 assert result[0].resource_id == resource_id
     
    @@ -60,8 +59,8 @@ def test_defender_app_services_pricing_tier_standard(self):
             resource_id = str(uuid4())
             defender_client = mock.MagicMock
             defender_client.pricings = {
    -            AZURE_SUSCRIPTION: {
    -                "AppServices": Defender_Pricing(
    +            AZURE_SUBSCRIPTION: {
    +                "AppServices": Pricing(
                         resource_id=resource_id,
                         pricing_tier="Standard",
                         free_trial_remaining_time=0,
    @@ -83,8 +82,8 @@ def test_defender_app_services_pricing_tier_standard(self):
                 assert result[0].status == "PASS"
                 assert (
                     result[0].status_extended
    -                == f"Defender plan Defender for App Services from subscription {AZURE_SUSCRIPTION} is set to ON (pricing tier standard)."
    +                == f"Defender plan Defender for App Services from subscription {AZURE_SUBSCRIPTION} is set to ON (pricing tier standard)."
                 )
    -            assert result[0].subscription == AZURE_SUSCRIPTION
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
                 assert result[0].resource_name == "Defender plan App Services"
                 assert result[0].resource_id == resource_id
    diff --git a/tests/providers/azure/services/defender/defender_ensure_defender_for_arm_is_on/defender_ensure_defender_for_arm_is_on_test.py b/tests/providers/azure/services/defender/defender_ensure_defender_for_arm_is_on/defender_ensure_defender_for_arm_is_on_test.py
    index ce4aa31033e..648ae416329 100644
    --- a/tests/providers/azure/services/defender/defender_ensure_defender_for_arm_is_on/defender_ensure_defender_for_arm_is_on_test.py
    +++ b/tests/providers/azure/services/defender/defender_ensure_defender_for_arm_is_on/defender_ensure_defender_for_arm_is_on_test.py
    @@ -1,9 +1,8 @@
     from unittest import mock
     from uuid import uuid4
     
    -from prowler.providers.azure.services.defender.defender_service import Defender_Pricing
    -
    -AZURE_SUSCRIPTION = str(uuid4())
    +from prowler.providers.azure.services.defender.defender_service import Pricing
    +from tests.providers.azure.azure_fixtures import AZURE_SUBSCRIPTION
     
     
     class Test_defender_ensure_defender_for_arm_is_on:
    @@ -27,8 +26,8 @@ def test_defender_arm_pricing_tier_not_standard(self):
             resource_id = str(uuid4())
             defender_client = mock.MagicMock
             defender_client.pricings = {
    -            AZURE_SUSCRIPTION: {
    -                "Arm": Defender_Pricing(
    +            AZURE_SUBSCRIPTION: {
    +                "Arm": Pricing(
                         resource_id=resource_id,
                         pricing_tier="Not Standard",
                         free_trial_remaining_time=0,
    @@ -50,9 +49,9 @@ def test_defender_arm_pricing_tier_not_standard(self):
                 assert result[0].status == "FAIL"
                 assert (
                     result[0].status_extended
    -                == f"Defender plan Defender for ARM from subscription {AZURE_SUSCRIPTION} is set to OFF (pricing tier not standard)."
    +                == f"Defender plan Defender for ARM from subscription {AZURE_SUBSCRIPTION} is set to OFF (pricing tier not standard)."
                 )
    -            assert result[0].subscription == AZURE_SUSCRIPTION
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
                 assert result[0].resource_name == "Defender plan ARM"
                 assert result[0].resource_id == resource_id
     
    @@ -60,8 +59,8 @@ def test_defender_arm_pricing_tier_standard(self):
             resource_id = str(uuid4())
             defender_client = mock.MagicMock
             defender_client.pricings = {
    -            AZURE_SUSCRIPTION: {
    -                "Arm": Defender_Pricing(
    +            AZURE_SUBSCRIPTION: {
    +                "Arm": Pricing(
                         resource_id=resource_id,
                         pricing_tier="Standard",
                         free_trial_remaining_time=0,
    @@ -83,8 +82,8 @@ def test_defender_arm_pricing_tier_standard(self):
                 assert result[0].status == "PASS"
                 assert (
                     result[0].status_extended
    -                == f"Defender plan Defender for ARM from subscription {AZURE_SUSCRIPTION} is set to ON (pricing tier standard)."
    +                == f"Defender plan Defender for ARM from subscription {AZURE_SUBSCRIPTION} is set to ON (pricing tier standard)."
                 )
    -            assert result[0].subscription == AZURE_SUSCRIPTION
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
                 assert result[0].resource_name == "Defender plan ARM"
                 assert result[0].resource_id == resource_id
    diff --git a/tests/providers/azure/services/defender/defender_ensure_defender_for_azure_sql_databases_is_on/defender_ensure_defender_for_azure_sql_databases_is_on_test.py b/tests/providers/azure/services/defender/defender_ensure_defender_for_azure_sql_databases_is_on/defender_ensure_defender_for_azure_sql_databases_is_on_test.py
    index 70de6a0a929..3e4a4a5ec61 100644
    --- a/tests/providers/azure/services/defender/defender_ensure_defender_for_azure_sql_databases_is_on/defender_ensure_defender_for_azure_sql_databases_is_on_test.py
    +++ b/tests/providers/azure/services/defender/defender_ensure_defender_for_azure_sql_databases_is_on/defender_ensure_defender_for_azure_sql_databases_is_on_test.py
    @@ -1,9 +1,8 @@
     from unittest import mock
     from uuid import uuid4
     
    -from prowler.providers.azure.services.defender.defender_service import Defender_Pricing
    -
    -AZURE_SUSCRIPTION = str(uuid4())
    +from prowler.providers.azure.services.defender.defender_service import Pricing
    +from tests.providers.azure.azure_fixtures import AZURE_SUBSCRIPTION
     
     
     class Test_defender_ensure_defender_for_azure_sql_databases_is_on:
    @@ -27,8 +26,8 @@ def test_defender_sql_databases_pricing_tier_not_standard(self):
             resource_id = str(uuid4())
             defender_client = mock.MagicMock
             defender_client.pricings = {
    -            AZURE_SUSCRIPTION: {
    -                "SqlServers": Defender_Pricing(
    +            AZURE_SUBSCRIPTION: {
    +                "SqlServers": Pricing(
                         resource_id=resource_id,
                         pricing_tier="Not Standard",
                         free_trial_remaining_time=0,
    @@ -50,9 +49,9 @@ def test_defender_sql_databases_pricing_tier_not_standard(self):
                 assert result[0].status == "FAIL"
                 assert (
                     result[0].status_extended
    -                == f"Defender plan Defender for Azure SQL DB Servers from subscription {AZURE_SUSCRIPTION} is set to OFF (pricing tier not standard)."
    +                == f"Defender plan Defender for Azure SQL DB Servers from subscription {AZURE_SUBSCRIPTION} is set to OFF (pricing tier not standard)."
                 )
    -            assert result[0].subscription == AZURE_SUSCRIPTION
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
                 assert result[0].resource_name == "Defender plan Azure SQL DB Servers"
                 assert result[0].resource_id == resource_id
     
    @@ -60,8 +59,8 @@ def test_defender_sql_databases_pricing_tier_standard(self):
             resource_id = str(uuid4())
             defender_client = mock.MagicMock
             defender_client.pricings = {
    -            AZURE_SUSCRIPTION: {
    -                "SqlServers": Defender_Pricing(
    +            AZURE_SUBSCRIPTION: {
    +                "SqlServers": Pricing(
                         resource_id=resource_id,
                         pricing_tier="Standard",
                         free_trial_remaining_time=0,
    @@ -83,8 +82,8 @@ def test_defender_sql_databases_pricing_tier_standard(self):
                 assert result[0].status == "PASS"
                 assert (
                     result[0].status_extended
    -                == f"Defender plan Defender for Azure SQL DB Servers from subscription {AZURE_SUSCRIPTION} is set to ON (pricing tier standard)."
    +                == f"Defender plan Defender for Azure SQL DB Servers from subscription {AZURE_SUBSCRIPTION} is set to ON (pricing tier standard)."
                 )
    -            assert result[0].subscription == AZURE_SUSCRIPTION
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
                 assert result[0].resource_name == "Defender plan Azure SQL DB Servers"
                 assert result[0].resource_id == resource_id
    diff --git a/tests/providers/azure/services/defender/defender_ensure_defender_for_containers_is_on/defender_ensure_defender_for_containers_is_on_test.py b/tests/providers/azure/services/defender/defender_ensure_defender_for_containers_is_on/defender_ensure_defender_for_containers_is_on_test.py
    index 5e7779aea7b..fae2a50db3e 100644
    --- a/tests/providers/azure/services/defender/defender_ensure_defender_for_containers_is_on/defender_ensure_defender_for_containers_is_on_test.py
    +++ b/tests/providers/azure/services/defender/defender_ensure_defender_for_containers_is_on/defender_ensure_defender_for_containers_is_on_test.py
    @@ -1,9 +1,8 @@
     from unittest import mock
     from uuid import uuid4
     
    -from prowler.providers.azure.services.defender.defender_service import Defender_Pricing
    -
    -AZURE_SUSCRIPTION = str(uuid4())
    +from prowler.providers.azure.services.defender.defender_service import Pricing
    +from tests.providers.azure.azure_fixtures import AZURE_SUBSCRIPTION
     
     
     class Test_defender_ensure_defender_for_containers_is_on:
    @@ -27,8 +26,8 @@ def test_defender_container_registries_pricing_tier_not_standard(self):
             resource_id = str(uuid4())
             defender_client = mock.MagicMock
             defender_client.pricings = {
    -            AZURE_SUSCRIPTION: {
    -                "Containers": Defender_Pricing(
    +            AZURE_SUBSCRIPTION: {
    +                "Containers": Pricing(
                         resource_id=resource_id,
                         pricing_tier="Not Standard",
                         free_trial_remaining_time=0,
    @@ -50,9 +49,9 @@ def test_defender_container_registries_pricing_tier_not_standard(self):
                 assert result[0].status == "FAIL"
                 assert (
                     result[0].status_extended
    -                == f"Defender plan Defender for Containers from subscription {AZURE_SUSCRIPTION} is set to OFF (pricing tier not standard)."
    +                == f"Defender plan Defender for Containers from subscription {AZURE_SUBSCRIPTION} is set to OFF (pricing tier not standard)."
                 )
    -            assert result[0].subscription == AZURE_SUSCRIPTION
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
                 assert result[0].resource_name == "Defender plan Container Registries"
                 assert result[0].resource_id == resource_id
     
    @@ -60,8 +59,8 @@ def test_defender_container_registries_pricing_tier_standard(self):
             resource_id = str(uuid4())
             defender_client = mock.MagicMock
             defender_client.pricings = {
    -            AZURE_SUSCRIPTION: {
    -                "Containers": Defender_Pricing(
    +            AZURE_SUBSCRIPTION: {
    +                "Containers": Pricing(
                         resource_id=resource_id,
                         pricing_tier="Standard",
                         free_trial_remaining_time=0,
    @@ -83,8 +82,8 @@ def test_defender_container_registries_pricing_tier_standard(self):
                 assert result[0].status == "PASS"
                 assert (
                     result[0].status_extended
    -                == f"Defender plan Defender for Containers from subscription {AZURE_SUSCRIPTION} is set to ON (pricing tier standard)."
    +                == f"Defender plan Defender for Containers from subscription {AZURE_SUBSCRIPTION} is set to ON (pricing tier standard)."
                 )
    -            assert result[0].subscription == AZURE_SUSCRIPTION
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
                 assert result[0].resource_name == "Defender plan Container Registries"
                 assert result[0].resource_id == resource_id
    diff --git a/tests/providers/azure/services/defender/defender_ensure_defender_for_cosmosdb_is_on/defender_ensure_defender_for_cosmosdb_is_on_test.py b/tests/providers/azure/services/defender/defender_ensure_defender_for_cosmosdb_is_on/defender_ensure_defender_for_cosmosdb_is_on_test.py
    index 596b501a61a..c32631743f6 100644
    --- a/tests/providers/azure/services/defender/defender_ensure_defender_for_cosmosdb_is_on/defender_ensure_defender_for_cosmosdb_is_on_test.py
    +++ b/tests/providers/azure/services/defender/defender_ensure_defender_for_cosmosdb_is_on/defender_ensure_defender_for_cosmosdb_is_on_test.py
    @@ -1,9 +1,8 @@
     from unittest import mock
     from uuid import uuid4
     
    -from prowler.providers.azure.services.defender.defender_service import Defender_Pricing
    -
    -AZURE_SUSCRIPTION = str(uuid4())
    +from prowler.providers.azure.services.defender.defender_service import Pricing
    +from tests.providers.azure.azure_fixtures import AZURE_SUBSCRIPTION
     
     
     class Test_defender_ensure_defender_for_cosmosdb_is_on:
    @@ -27,8 +26,8 @@ def test_defender_cosmosdb_pricing_tier_not_standard(self):
             resource_id = str(uuid4())
             defender_client = mock.MagicMock
             defender_client.pricings = {
    -            AZURE_SUSCRIPTION: {
    -                "CosmosDbs": Defender_Pricing(
    +            AZURE_SUBSCRIPTION: {
    +                "CosmosDbs": Pricing(
                         resource_id=resource_id,
                         pricing_tier="Not Standard",
                         free_trial_remaining_time=0,
    @@ -50,9 +49,9 @@ def test_defender_cosmosdb_pricing_tier_not_standard(self):
                 assert result[0].status == "FAIL"
                 assert (
                     result[0].status_extended
    -                == f"Defender plan Defender for Cosmos DB from subscription {AZURE_SUSCRIPTION} is set to OFF (pricing tier not standard)."
    +                == f"Defender plan Defender for Cosmos DB from subscription {AZURE_SUBSCRIPTION} is set to OFF (pricing tier not standard)."
                 )
    -            assert result[0].subscription == AZURE_SUSCRIPTION
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
                 assert result[0].resource_name == "Defender plan Cosmos DB"
                 assert result[0].resource_id == resource_id
     
    @@ -60,8 +59,8 @@ def test_defender_cosmosdb_pricing_tier_standard(self):
             resource_id = str(uuid4())
             defender_client = mock.MagicMock
             defender_client.pricings = {
    -            AZURE_SUSCRIPTION: {
    -                "CosmosDbs": Defender_Pricing(
    +            AZURE_SUBSCRIPTION: {
    +                "CosmosDbs": Pricing(
                         resource_id=resource_id,
                         pricing_tier="Standard",
                         free_trial_remaining_time=0,
    @@ -83,8 +82,8 @@ def test_defender_cosmosdb_pricing_tier_standard(self):
                 assert result[0].status == "PASS"
                 assert (
                     result[0].status_extended
    -                == f"Defender plan Defender for Cosmos DB from subscription {AZURE_SUSCRIPTION} is set to ON (pricing tier standard)."
    +                == f"Defender plan Defender for Cosmos DB from subscription {AZURE_SUBSCRIPTION} is set to ON (pricing tier standard)."
                 )
    -            assert result[0].subscription == AZURE_SUSCRIPTION
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
                 assert result[0].resource_name == "Defender plan Cosmos DB"
                 assert result[0].resource_id == resource_id
    diff --git a/tests/providers/azure/services/defender/defender_ensure_defender_for_databases_is_on/defender_ensure_defender_for_databases_is_on_test.py b/tests/providers/azure/services/defender/defender_ensure_defender_for_databases_is_on/defender_ensure_defender_for_databases_is_on_test.py
    index 52ae36f7ca9..bcc0abb88af 100644
    --- a/tests/providers/azure/services/defender/defender_ensure_defender_for_databases_is_on/defender_ensure_defender_for_databases_is_on_test.py
    +++ b/tests/providers/azure/services/defender/defender_ensure_defender_for_databases_is_on/defender_ensure_defender_for_databases_is_on_test.py
    @@ -1,9 +1,8 @@
     from unittest import mock
     from uuid import uuid4
     
    -from prowler.providers.azure.services.defender.defender_service import Defender_Pricing
    -
    -AZURE_SUSCRIPTION = str(uuid4())
    +from prowler.providers.azure.services.defender.defender_service import Pricing
    +from tests.providers.azure.azure_fixtures import AZURE_SUBSCRIPTION
     
     
     class Test_defender_ensure_defender_for_databases_is_on:
    @@ -27,8 +26,8 @@ def test_defender_databases_sql_servers(self):
             resource_id = str(uuid4())
             defender_client = mock.MagicMock
             defender_client.pricings = {
    -            AZURE_SUSCRIPTION: {
    -                "SqlServers": Defender_Pricing(
    +            AZURE_SUBSCRIPTION: {
    +                "SqlServers": Pricing(
                         resource_id=resource_id,
                         pricing_tier="Standard",
                         free_trial_remaining_time=0,
    @@ -52,8 +51,8 @@ def test_defender_databases_sql_server_virtual_machines(self):
             resource_id = str(uuid4())
             defender_client = mock.MagicMock
             defender_client.pricings = {
    -            AZURE_SUSCRIPTION: {
    -                "SqlServerVirtualMachines": Defender_Pricing(
    +            AZURE_SUBSCRIPTION: {
    +                "SqlServerVirtualMachines": Pricing(
                         resource_id=resource_id,
                         pricing_tier="Standard",
                         free_trial_remaining_time=0,
    @@ -77,8 +76,8 @@ def test_defender_databases_open_source_relation_databases(self):
             resource_id = str(uuid4())
             defender_client = mock.MagicMock
             defender_client.pricings = {
    -            AZURE_SUSCRIPTION: {
    -                "OpenSourceRelationalDatabases": Defender_Pricing(
    +            AZURE_SUBSCRIPTION: {
    +                "OpenSourceRelationalDatabases": Pricing(
                         resource_id=resource_id,
                         pricing_tier="Standard",
                         free_trial_remaining_time=0,
    @@ -102,8 +101,8 @@ def test_defender_databases_cosmosdbs(self):
             resource_id = str(uuid4())
             defender_client = mock.MagicMock
             defender_client.pricings = {
    -            AZURE_SUSCRIPTION: {
    -                "CosmosDbs": Defender_Pricing(
    +            AZURE_SUBSCRIPTION: {
    +                "CosmosDbs": Pricing(
                         resource_id=resource_id,
                         pricing_tier="Standard",
                         free_trial_remaining_time=0,
    @@ -127,23 +126,23 @@ def test_defender_databases_all_standard(self):
             resource_id = str(uuid4())
             defender_client = mock.MagicMock
             defender_client.pricings = {
    -            AZURE_SUSCRIPTION: {
    -                "SqlServers": Defender_Pricing(
    +            AZURE_SUBSCRIPTION: {
    +                "SqlServers": Pricing(
                         resource_id=resource_id,
                         pricing_tier="Standard",
                         free_trial_remaining_time=0,
                     ),
    -                "SqlServerVirtualMachines": Defender_Pricing(
    +                "SqlServerVirtualMachines": Pricing(
                         resource_id=resource_id,
                         pricing_tier="Standard",
                         free_trial_remaining_time=0,
                     ),
    -                "OpenSourceRelationalDatabases": Defender_Pricing(
    +                "OpenSourceRelationalDatabases": Pricing(
                         resource_id=resource_id,
                         pricing_tier="Standard",
                         free_trial_remaining_time=0,
                     ),
    -                "CosmosDbs": Defender_Pricing(
    +                "CosmosDbs": Pricing(
                         resource_id=resource_id,
                         pricing_tier="Standard",
                         free_trial_remaining_time=0,
    @@ -165,9 +164,9 @@ def test_defender_databases_all_standard(self):
                 assert result[0].status == "PASS"
                 assert (
                     result[0].status_extended
    -                == f"Defender plan Defender for Databases from subscription {AZURE_SUSCRIPTION} is set to ON (pricing tier standard)."
    +                == f"Defender plan Defender for Databases from subscription {AZURE_SUBSCRIPTION} is set to ON (pricing tier standard)."
                 )
    -            assert result[0].subscription == AZURE_SUSCRIPTION
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
                 assert result[0].resource_name == "Defender plan Databases"
                 assert result[0].resource_id == resource_id
     
    @@ -175,23 +174,23 @@ def test_defender_databases_cosmosdb_not_standard(self):
             resource_id = str(uuid4())
             defender_client = mock.MagicMock
             defender_client.pricings = {
    -            AZURE_SUSCRIPTION: {
    -                "SqlServers": Defender_Pricing(
    +            AZURE_SUBSCRIPTION: {
    +                "SqlServers": Pricing(
                         resource_id=resource_id,
                         pricing_tier="Standard",
                         free_trial_remaining_time=0,
                     ),
    -                "SqlServerVirtualMachines": Defender_Pricing(
    +                "SqlServerVirtualMachines": Pricing(
                         resource_id=resource_id,
                         pricing_tier="Standard",
                         free_trial_remaining_time=0,
                     ),
    -                "OpenSourceRelationalDatabases": Defender_Pricing(
    +                "OpenSourceRelationalDatabases": Pricing(
                         resource_id=resource_id,
                         pricing_tier="Standard",
                         free_trial_remaining_time=0,
                     ),
    -                "CosmosDbs": Defender_Pricing(
    +                "CosmosDbs": Pricing(
                         resource_id=resource_id,
                         pricing_tier="Not Standard",
                         free_trial_remaining_time=0,
    @@ -213,8 +212,8 @@ def test_defender_databases_cosmosdb_not_standard(self):
                 assert result[0].status == "FAIL"
                 assert (
                     result[0].status_extended
    -                == f"Defender plan Defender for Databases from subscription {AZURE_SUSCRIPTION} is set to OFF (pricing tier not standard)."
    +                == f"Defender plan Defender for Databases from subscription {AZURE_SUBSCRIPTION} is set to OFF (pricing tier not standard)."
                 )
    -            assert result[0].subscription == AZURE_SUSCRIPTION
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
                 assert result[0].resource_name == "Defender plan Databases"
                 assert result[0].resource_id == resource_id
    diff --git a/tests/providers/azure/services/defender/defender_ensure_defender_for_dns_is_on/defender_ensure_defender_for_dns_is_on_test.py b/tests/providers/azure/services/defender/defender_ensure_defender_for_dns_is_on/defender_ensure_defender_for_dns_is_on_test.py
    index d34e176ae26..f3335dbc9b6 100644
    --- a/tests/providers/azure/services/defender/defender_ensure_defender_for_dns_is_on/defender_ensure_defender_for_dns_is_on_test.py
    +++ b/tests/providers/azure/services/defender/defender_ensure_defender_for_dns_is_on/defender_ensure_defender_for_dns_is_on_test.py
    @@ -1,9 +1,8 @@
     from unittest import mock
     from uuid import uuid4
     
    -from prowler.providers.azure.services.defender.defender_service import Defender_Pricing
    -
    -AZURE_SUSCRIPTION = str(uuid4())
    +from prowler.providers.azure.services.defender.defender_service import Pricing
    +from tests.providers.azure.azure_fixtures import AZURE_SUBSCRIPTION
     
     
     class Test_defender_ensure_defender_for_dns_is_on:
    @@ -27,8 +26,8 @@ def test_defender_dns_pricing_tier_not_standard(self):
             resource_id = str(uuid4())
             defender_client = mock.MagicMock
             defender_client.pricings = {
    -            AZURE_SUSCRIPTION: {
    -                "Dns": Defender_Pricing(
    +            AZURE_SUBSCRIPTION: {
    +                "Dns": Pricing(
                         resource_id=resource_id,
                         pricing_tier="Not Standard",
                         free_trial_remaining_time=0,
    @@ -50,9 +49,9 @@ def test_defender_dns_pricing_tier_not_standard(self):
                 assert result[0].status == "FAIL"
                 assert (
                     result[0].status_extended
    -                == f"Defender plan Defender for DNS from subscription {AZURE_SUSCRIPTION} is set to OFF (pricing tier not standard)."
    +                == f"Defender plan Defender for DNS from subscription {AZURE_SUBSCRIPTION} is set to OFF (pricing tier not standard)."
                 )
    -            assert result[0].subscription == AZURE_SUSCRIPTION
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
                 assert result[0].resource_name == "Defender plan DNS"
                 assert result[0].resource_id == resource_id
     
    @@ -60,8 +59,8 @@ def test_defender_dns_pricing_tier_standard(self):
             resource_id = str(uuid4())
             defender_client = mock.MagicMock
             defender_client.pricings = {
    -            AZURE_SUSCRIPTION: {
    -                "Dns": Defender_Pricing(
    +            AZURE_SUBSCRIPTION: {
    +                "Dns": Pricing(
                         resource_id=resource_id,
                         pricing_tier="Standard",
                         free_trial_remaining_time=0,
    @@ -83,8 +82,8 @@ def test_defender_dns_pricing_tier_standard(self):
                 assert result[0].status == "PASS"
                 assert (
                     result[0].status_extended
    -                == f"Defender plan Defender for DNS from subscription {AZURE_SUSCRIPTION} is set to ON (pricing tier standard)."
    +                == f"Defender plan Defender for DNS from subscription {AZURE_SUBSCRIPTION} is set to ON (pricing tier standard)."
                 )
    -            assert result[0].subscription == AZURE_SUSCRIPTION
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
                 assert result[0].resource_name == "Defender plan DNS"
                 assert result[0].resource_id == resource_id
    diff --git a/tests/providers/azure/services/defender/defender_ensure_defender_for_keyvault_is_on/defender_ensure_defender_for_keyvault_is_on_test.py b/tests/providers/azure/services/defender/defender_ensure_defender_for_keyvault_is_on/defender_ensure_defender_for_keyvault_is_on_test.py
    index e9cb4764bd8..b9d88bc5f31 100644
    --- a/tests/providers/azure/services/defender/defender_ensure_defender_for_keyvault_is_on/defender_ensure_defender_for_keyvault_is_on_test.py
    +++ b/tests/providers/azure/services/defender/defender_ensure_defender_for_keyvault_is_on/defender_ensure_defender_for_keyvault_is_on_test.py
    @@ -1,9 +1,8 @@
     from unittest import mock
     from uuid import uuid4
     
    -from prowler.providers.azure.services.defender.defender_service import Defender_Pricing
    -
    -AZURE_SUSCRIPTION = str(uuid4())
    +from prowler.providers.azure.services.defender.defender_service import Pricing
    +from tests.providers.azure.azure_fixtures import AZURE_SUBSCRIPTION
     
     
     class Test_defender_ensure_defender_for_keyvault_is_on:
    @@ -27,8 +26,8 @@ def test_defender_keyvaults_pricing_tier_not_standard(self):
             resource_id = str(uuid4())
             defender_client = mock.MagicMock
             defender_client.pricings = {
    -            AZURE_SUSCRIPTION: {
    -                "KeyVaults": Defender_Pricing(
    +            AZURE_SUBSCRIPTION: {
    +                "KeyVaults": Pricing(
                         resource_id=resource_id,
                         pricing_tier="Not Standard",
                         free_trial_remaining_time=0,
    @@ -50,9 +49,9 @@ def test_defender_keyvaults_pricing_tier_not_standard(self):
                 assert result[0].status == "FAIL"
                 assert (
                     result[0].status_extended
    -                == f"Defender plan Defender for KeyVaults from subscription {AZURE_SUSCRIPTION} is set to OFF (pricing tier not standard)."
    +                == f"Defender plan Defender for KeyVaults from subscription {AZURE_SUBSCRIPTION} is set to OFF (pricing tier not standard)."
                 )
    -            assert result[0].subscription == AZURE_SUSCRIPTION
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
                 assert result[0].resource_name == "Defender plan KeyVaults"
                 assert result[0].resource_id == resource_id
     
    @@ -60,8 +59,8 @@ def test_defender_keyvaults_pricing_tier_standard(self):
             resource_id = str(uuid4())
             defender_client = mock.MagicMock
             defender_client.pricings = {
    -            AZURE_SUSCRIPTION: {
    -                "KeyVaults": Defender_Pricing(
    +            AZURE_SUBSCRIPTION: {
    +                "KeyVaults": Pricing(
                         resource_id=resource_id,
                         pricing_tier="Standard",
                         free_trial_remaining_time=0,
    @@ -83,8 +82,8 @@ def test_defender_keyvaults_pricing_tier_standard(self):
                 assert result[0].status == "PASS"
                 assert (
                     result[0].status_extended
    -                == f"Defender plan Defender for KeyVaults from subscription {AZURE_SUSCRIPTION} is set to ON (pricing tier standard)."
    +                == f"Defender plan Defender for KeyVaults from subscription {AZURE_SUBSCRIPTION} is set to ON (pricing tier standard)."
                 )
    -            assert result[0].subscription == AZURE_SUSCRIPTION
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
                 assert result[0].resource_name == "Defender plan KeyVaults"
                 assert result[0].resource_id == resource_id
    diff --git a/tests/providers/azure/services/defender/defender_ensure_defender_for_os_relational_databases_is_on/defender_ensure_defender_for_os_relational_databases_is_on_test.py b/tests/providers/azure/services/defender/defender_ensure_defender_for_os_relational_databases_is_on/defender_ensure_defender_for_os_relational_databases_is_on_test.py
    index f63c447b782..416ac243088 100644
    --- a/tests/providers/azure/services/defender/defender_ensure_defender_for_os_relational_databases_is_on/defender_ensure_defender_for_os_relational_databases_is_on_test.py
    +++ b/tests/providers/azure/services/defender/defender_ensure_defender_for_os_relational_databases_is_on/defender_ensure_defender_for_os_relational_databases_is_on_test.py
    @@ -1,9 +1,8 @@
     from unittest import mock
     from uuid import uuid4
     
    -from prowler.providers.azure.services.defender.defender_service import Defender_Pricing
    -
    -AZURE_SUSCRIPTION = str(uuid4())
    +from prowler.providers.azure.services.defender.defender_service import Pricing
    +from tests.providers.azure.azure_fixtures import AZURE_SUBSCRIPTION
     
     
     class Test_defender_ensure_defender_for_os_relational_databases_is_on:
    @@ -27,8 +26,8 @@ def test_defender_os_relational_databases_pricing_tier_not_standard(self):
             resource_id = str(uuid4())
             defender_client = mock.MagicMock
             defender_client.pricings = {
    -            AZURE_SUSCRIPTION: {
    -                "OpenSourceRelationalDatabases": Defender_Pricing(
    +            AZURE_SUBSCRIPTION: {
    +                "OpenSourceRelationalDatabases": Pricing(
                         resource_id=resource_id,
                         pricing_tier="Not Standard",
                         free_trial_remaining_time=0,
    @@ -50,9 +49,9 @@ def test_defender_os_relational_databases_pricing_tier_not_standard(self):
                 assert result[0].status == "FAIL"
                 assert (
                     result[0].status_extended
    -                == f"Defender plan Defender for Open-Source Relational Databases from subscription {AZURE_SUSCRIPTION} is set to OFF (pricing tier not standard)."
    +                == f"Defender plan Defender for Open-Source Relational Databases from subscription {AZURE_SUBSCRIPTION} is set to OFF (pricing tier not standard)."
                 )
    -            assert result[0].subscription == AZURE_SUSCRIPTION
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
                 assert (
                     result[0].resource_name
                     == "Defender plan Open-Source Relational Databases"
    @@ -63,8 +62,8 @@ def test_defender_os_relational_databases_pricing_tier_standard(self):
             resource_id = str(uuid4())
             defender_client = mock.MagicMock
             defender_client.pricings = {
    -            AZURE_SUSCRIPTION: {
    -                "OpenSourceRelationalDatabases": Defender_Pricing(
    +            AZURE_SUBSCRIPTION: {
    +                "OpenSourceRelationalDatabases": Pricing(
                         resource_id=resource_id,
                         pricing_tier="Standard",
                         free_trial_remaining_time=0,
    @@ -86,9 +85,9 @@ def test_defender_os_relational_databases_pricing_tier_standard(self):
                 assert result[0].status == "PASS"
                 assert (
                     result[0].status_extended
    -                == f"Defender plan Defender for Open-Source Relational Databases from subscription {AZURE_SUSCRIPTION} is set to ON (pricing tier standard)."
    +                == f"Defender plan Defender for Open-Source Relational Databases from subscription {AZURE_SUBSCRIPTION} is set to ON (pricing tier standard)."
                 )
    -            assert result[0].subscription == AZURE_SUSCRIPTION
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
                 assert (
                     result[0].resource_name
                     == "Defender plan Open-Source Relational Databases"
    diff --git a/tests/providers/azure/services/defender/defender_ensure_defender_for_server_is_on/defender_ensure_defender_for_server_is_on_test.py b/tests/providers/azure/services/defender/defender_ensure_defender_for_server_is_on/defender_ensure_defender_for_server_is_on_test.py
    index ff5c2211e68..e23c8380ceb 100644
    --- a/tests/providers/azure/services/defender/defender_ensure_defender_for_server_is_on/defender_ensure_defender_for_server_is_on_test.py
    +++ b/tests/providers/azure/services/defender/defender_ensure_defender_for_server_is_on/defender_ensure_defender_for_server_is_on_test.py
    @@ -1,9 +1,8 @@
     from unittest import mock
     from uuid import uuid4
     
    -from prowler.providers.azure.services.defender.defender_service import Defender_Pricing
    -
    -AZURE_SUSCRIPTION = str(uuid4())
    +from prowler.providers.azure.services.defender.defender_service import Pricing
    +from tests.providers.azure.azure_fixtures import AZURE_SUBSCRIPTION
     
     
     class Test_defender_ensure_defender_for_server_is_on:
    @@ -27,8 +26,8 @@ def test_defender_server_pricing_tier_not_standard(self):
             resource_id = str(uuid4())
             defender_client = mock.MagicMock
             defender_client.pricings = {
    -            AZURE_SUSCRIPTION: {
    -                "VirtualMachines": Defender_Pricing(
    +            AZURE_SUBSCRIPTION: {
    +                "VirtualMachines": Pricing(
                         resource_id=resource_id,
                         pricing_tier="Not Standard",
                         free_trial_remaining_time=0,
    @@ -50,9 +49,9 @@ def test_defender_server_pricing_tier_not_standard(self):
                 assert result[0].status == "FAIL"
                 assert (
                     result[0].status_extended
    -                == f"Defender plan Defender for Servers from subscription {AZURE_SUSCRIPTION} is set to OFF (pricing tier not standard)."
    +                == f"Defender plan Defender for Servers from subscription {AZURE_SUBSCRIPTION} is set to OFF (pricing tier not standard)."
                 )
    -            assert result[0].subscription == AZURE_SUSCRIPTION
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
                 assert result[0].resource_name == "Defender plan Servers"
                 assert result[0].resource_id == resource_id
     
    @@ -60,8 +59,8 @@ def test_defender_server_pricing_tier_standard(self):
             resource_id = str(uuid4())
             defender_client = mock.MagicMock
             defender_client.pricings = {
    -            AZURE_SUSCRIPTION: {
    -                "VirtualMachines": Defender_Pricing(
    +            AZURE_SUBSCRIPTION: {
    +                "VirtualMachines": Pricing(
                         resource_id=resource_id,
                         pricing_tier="Standard",
                         free_trial_remaining_time=0,
    @@ -83,8 +82,8 @@ def test_defender_server_pricing_tier_standard(self):
                 assert result[0].status == "PASS"
                 assert (
                     result[0].status_extended
    -                == f"Defender plan Defender for Servers from subscription {AZURE_SUSCRIPTION} is set to ON (pricing tier standard)."
    +                == f"Defender plan Defender for Servers from subscription {AZURE_SUBSCRIPTION} is set to ON (pricing tier standard)."
                 )
    -            assert result[0].subscription == AZURE_SUSCRIPTION
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
                 assert result[0].resource_name == "Defender plan Servers"
                 assert result[0].resource_id == resource_id
    diff --git a/tests/providers/azure/services/defender/defender_ensure_defender_for_sql_servers_is_on/defender_ensure_defender_for_sql_servers_is_on_test.py b/tests/providers/azure/services/defender/defender_ensure_defender_for_sql_servers_is_on/defender_ensure_defender_for_sql_servers_is_on_test.py
    index d08a93f44c4..7e37b8695fc 100644
    --- a/tests/providers/azure/services/defender/defender_ensure_defender_for_sql_servers_is_on/defender_ensure_defender_for_sql_servers_is_on_test.py
    +++ b/tests/providers/azure/services/defender/defender_ensure_defender_for_sql_servers_is_on/defender_ensure_defender_for_sql_servers_is_on_test.py
    @@ -1,9 +1,8 @@
     from unittest import mock
     from uuid import uuid4
     
    -from prowler.providers.azure.services.defender.defender_service import Defender_Pricing
    -
    -AZURE_SUSCRIPTION = str(uuid4())
    +from prowler.providers.azure.services.defender.defender_service import Pricing
    +from tests.providers.azure.azure_fixtures import AZURE_SUBSCRIPTION
     
     
     class Test_defender_ensure_defender_for_sql_servers_is_on:
    @@ -27,8 +26,8 @@ def test_defender_server_pricing_tier_not_standard(self):
             resource_id = str(uuid4())
             defender_client = mock.MagicMock
             defender_client.pricings = {
    -            AZURE_SUSCRIPTION: {
    -                "SqlServerVirtualMachines": Defender_Pricing(
    +            AZURE_SUBSCRIPTION: {
    +                "SqlServerVirtualMachines": Pricing(
                         resource_id=resource_id,
                         pricing_tier="Not Standard",
                         free_trial_remaining_time=0,
    @@ -50,9 +49,9 @@ def test_defender_server_pricing_tier_not_standard(self):
                 assert result[0].status == "FAIL"
                 assert (
                     result[0].status_extended
    -                == f"Defender plan Defender for SQL Server VMs from subscription {AZURE_SUSCRIPTION} is set to OFF (pricing tier not standard)."
    +                == f"Defender plan Defender for SQL Server VMs from subscription {AZURE_SUBSCRIPTION} is set to OFF (pricing tier not standard)."
                 )
    -            assert result[0].subscription == AZURE_SUSCRIPTION
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
                 assert result[0].resource_name == "Defender plan SQL Server VMs"
                 assert result[0].resource_id == resource_id
     
    @@ -60,8 +59,8 @@ def test_defender_server_pricing_tier_standard(self):
             resource_id = str(uuid4())
             defender_client = mock.MagicMock
             defender_client.pricings = {
    -            AZURE_SUSCRIPTION: {
    -                "SqlServerVirtualMachines": Defender_Pricing(
    +            AZURE_SUBSCRIPTION: {
    +                "SqlServerVirtualMachines": Pricing(
                         resource_id=resource_id,
                         pricing_tier="Standard",
                         free_trial_remaining_time=0,
    @@ -83,8 +82,8 @@ def test_defender_server_pricing_tier_standard(self):
                 assert result[0].status == "PASS"
                 assert (
                     result[0].status_extended
    -                == f"Defender plan Defender for SQL Server VMs from subscription {AZURE_SUSCRIPTION} is set to ON (pricing tier standard)."
    +                == f"Defender plan Defender for SQL Server VMs from subscription {AZURE_SUBSCRIPTION} is set to ON (pricing tier standard)."
                 )
    -            assert result[0].subscription == AZURE_SUSCRIPTION
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
                 assert result[0].resource_name == "Defender plan SQL Server VMs"
                 assert result[0].resource_id == resource_id
    diff --git a/tests/providers/azure/services/defender/defender_ensure_defender_for_storage_is_on/defender_ensure_defender_for_storage_is_on_test.py b/tests/providers/azure/services/defender/defender_ensure_defender_for_storage_is_on/defender_ensure_defender_for_storage_is_on_test.py
    index 0cae2e389d8..92895271f44 100644
    --- a/tests/providers/azure/services/defender/defender_ensure_defender_for_storage_is_on/defender_ensure_defender_for_storage_is_on_test.py
    +++ b/tests/providers/azure/services/defender/defender_ensure_defender_for_storage_is_on/defender_ensure_defender_for_storage_is_on_test.py
    @@ -1,9 +1,8 @@
     from unittest import mock
     from uuid import uuid4
     
    -from prowler.providers.azure.services.defender.defender_service import Defender_Pricing
    -
    -AZURE_SUSCRIPTION = str(uuid4())
    +from prowler.providers.azure.services.defender.defender_service import Pricing
    +from tests.providers.azure.azure_fixtures import AZURE_SUBSCRIPTION
     
     
     class Test_defender_ensure_defender_for_storage_is_on:
    @@ -27,8 +26,8 @@ def test_defender_server_pricing_tier_not_standard(self):
             resource_id = str(uuid4())
             defender_client = mock.MagicMock
             defender_client.pricings = {
    -            AZURE_SUSCRIPTION: {
    -                "StorageAccounts": Defender_Pricing(
    +            AZURE_SUBSCRIPTION: {
    +                "StorageAccounts": Pricing(
                         resource_id=resource_id,
                         pricing_tier="Not Standard",
                         free_trial_remaining_time=0,
    @@ -50,9 +49,9 @@ def test_defender_server_pricing_tier_not_standard(self):
                 assert result[0].status == "FAIL"
                 assert (
                     result[0].status_extended
    -                == f"Defender plan Defender for Storage Accounts from subscription {AZURE_SUSCRIPTION} is set to OFF (pricing tier not standard)."
    +                == f"Defender plan Defender for Storage Accounts from subscription {AZURE_SUBSCRIPTION} is set to OFF (pricing tier not standard)."
                 )
    -            assert result[0].subscription == AZURE_SUSCRIPTION
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
                 assert result[0].resource_name == "Defender plan Storage Accounts"
                 assert result[0].resource_id == resource_id
     
    @@ -60,8 +59,8 @@ def test_defender_server_pricing_tier_standard(self):
             resource_id = str(uuid4())
             defender_client = mock.MagicMock
             defender_client.pricings = {
    -            AZURE_SUSCRIPTION: {
    -                "StorageAccounts": Defender_Pricing(
    +            AZURE_SUBSCRIPTION: {
    +                "StorageAccounts": Pricing(
                         resource_id=resource_id,
                         pricing_tier="Standard",
                         free_trial_remaining_time=0,
    @@ -83,8 +82,8 @@ def test_defender_server_pricing_tier_standard(self):
                 assert result[0].status == "PASS"
                 assert (
                     result[0].status_extended
    -                == f"Defender plan Defender for Storage Accounts from subscription {AZURE_SUSCRIPTION} is set to ON (pricing tier standard)."
    +                == f"Defender plan Defender for Storage Accounts from subscription {AZURE_SUBSCRIPTION} is set to ON (pricing tier standard)."
                 )
    -            assert result[0].subscription == AZURE_SUSCRIPTION
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
                 assert result[0].resource_name == "Defender plan Storage Accounts"
                 assert result[0].resource_id == resource_id
    diff --git a/tests/providers/azure/services/defender/defender_ensure_iot_hub_defender_is_on/defender_ensure_iot_hub_defender_is_on_test.py b/tests/providers/azure/services/defender/defender_ensure_iot_hub_defender_is_on/defender_ensure_iot_hub_defender_is_on_test.py
    new file mode 100644
    index 00000000000..68d96b51347
    --- /dev/null
    +++ b/tests/providers/azure/services/defender/defender_ensure_iot_hub_defender_is_on/defender_ensure_iot_hub_defender_is_on_test.py
    @@ -0,0 +1,153 @@
    +from unittest import mock
    +from uuid import uuid4
    +
    +from prowler.providers.azure.services.defender.defender_service import (
    +    IoTSecuritySolution,
    +)
    +from tests.providers.azure.azure_fixtures import AZURE_SUBSCRIPTION
    +
    +
    +class Test_defender_ensure_iot_hub_defender_is_on:
    +    def test_defender_no_subscriptions(self):
    +        defender_client = mock.MagicMock
    +        defender_client.iot_security_solutions = {}
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.defender.defender_ensure_iot_hub_defender_is_on.defender_ensure_iot_hub_defender_is_on.defender_client",
    +            new=defender_client,
    +        ):
    +            from prowler.providers.azure.services.defender.defender_ensure_iot_hub_defender_is_on.defender_ensure_iot_hub_defender_is_on import (
    +                defender_ensure_iot_hub_defender_is_on,
    +            )
    +
    +            check = defender_ensure_iot_hub_defender_is_on()
    +            result = check.execute()
    +            assert len(result) == 0
    +
    +    def test_defender_no_iot_hub_solutions(self):
    +        defender_client = mock.MagicMock
    +        defender_client.iot_security_solutions = {AZURE_SUBSCRIPTION: {}}
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.defender.defender_ensure_iot_hub_defender_is_on.defender_ensure_iot_hub_defender_is_on.defender_client",
    +            new=defender_client,
    +        ):
    +            from prowler.providers.azure.services.defender.defender_ensure_iot_hub_defender_is_on.defender_ensure_iot_hub_defender_is_on import (
    +                defender_ensure_iot_hub_defender_is_on,
    +            )
    +
    +            check = defender_ensure_iot_hub_defender_is_on()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "FAIL"
    +            assert (
    +                result[0].status_extended
    +                == f"No IoT Security Solutions found in the subscription {AZURE_SUBSCRIPTION}."
    +            )
    +            assert result[0].resource_name == "IoT Hub Defender"
    +            assert result[0].resource_id == "IoT Hub Defender"
    +
    +    def test_defender_iot_hub_solution_disabled(self):
    +        resource_id = str(uuid4())
    +        defender_client = mock.MagicMock
    +        defender_client.iot_security_solutions = {
    +            AZURE_SUBSCRIPTION: {
    +                "iot_sec_solution": IoTSecuritySolution(
    +                    resource_id=resource_id, status="Disabled"
    +                )
    +            }
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.defender.defender_ensure_iot_hub_defender_is_on.defender_ensure_iot_hub_defender_is_on.defender_client",
    +            new=defender_client,
    +        ):
    +            from prowler.providers.azure.services.defender.defender_ensure_iot_hub_defender_is_on.defender_ensure_iot_hub_defender_is_on import (
    +                defender_ensure_iot_hub_defender_is_on,
    +            )
    +
    +            check = defender_ensure_iot_hub_defender_is_on()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "FAIL"
    +            assert (
    +                result[0].status_extended
    +                == f"The security solution iot_sec_solution is disabled in susbscription {AZURE_SUBSCRIPTION}"
    +            )
    +            assert result[0].resource_name == "iot_sec_solution"
    +            assert result[0].resource_id == resource_id
    +
    +    def test_defender_iot_hub_solution_enabled(self):
    +        resource_id = str(uuid4())
    +        defender_client = mock.MagicMock
    +        defender_client.iot_security_solutions = {
    +            AZURE_SUBSCRIPTION: {
    +                "iot_sec_solution": IoTSecuritySolution(
    +                    resource_id=resource_id, status="Enabled"
    +                )
    +            }
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.defender.defender_ensure_iot_hub_defender_is_on.defender_ensure_iot_hub_defender_is_on.defender_client",
    +            new=defender_client,
    +        ):
    +            from prowler.providers.azure.services.defender.defender_ensure_iot_hub_defender_is_on.defender_ensure_iot_hub_defender_is_on import (
    +                defender_ensure_iot_hub_defender_is_on,
    +            )
    +
    +            check = defender_ensure_iot_hub_defender_is_on()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "PASS"
    +            assert (
    +                result[0].status_extended
    +                == f"The security solution iot_sec_solution is enabled in susbscription {AZURE_SUBSCRIPTION}."
    +            )
    +            assert result[0].resource_name == "iot_sec_solution"
    +            assert result[0].resource_id == resource_id
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +
    +    def test_defender_multiple_iot_hub_solution_enabled_and_disabled(self):
    +        resource_id_enabled = str(uuid4())
    +        resource_id_disabled = str(uuid4())
    +        defender_client = mock.MagicMock
    +        defender_client.iot_security_solutions = {
    +            AZURE_SUBSCRIPTION: {
    +                "iot_sec_solution_enabled": IoTSecuritySolution(
    +                    resource_id=resource_id_enabled, status="Enabled"
    +                ),
    +                "iot_sec_solution_disabled": IoTSecuritySolution(
    +                    resource_id=resource_id_disabled, status="Disabled"
    +                ),
    +            }
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.defender.defender_ensure_iot_hub_defender_is_on.defender_ensure_iot_hub_defender_is_on.defender_client",
    +            new=defender_client,
    +        ):
    +            from prowler.providers.azure.services.defender.defender_ensure_iot_hub_defender_is_on.defender_ensure_iot_hub_defender_is_on import (
    +                defender_ensure_iot_hub_defender_is_on,
    +            )
    +
    +            check = defender_ensure_iot_hub_defender_is_on()
    +            result = check.execute()
    +            assert len(result) == 2
    +            assert result[0].status == "PASS"
    +            assert (
    +                result[0].status_extended
    +                == f"The security solution iot_sec_solution_enabled is enabled in susbscription {AZURE_SUBSCRIPTION}."
    +            )
    +            assert result[0].resource_name == "iot_sec_solution_enabled"
    +            assert result[0].resource_id == resource_id_enabled
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +
    +            assert result[1].status == "FAIL"
    +            assert (
    +                result[1].status_extended
    +                == f"The security solution iot_sec_solution_disabled is disabled in susbscription {AZURE_SUBSCRIPTION}"
    +            )
    +            assert result[1].resource_name == "iot_sec_solution_disabled"
    +            assert result[1].resource_id == resource_id_disabled
    +            assert result[1].subscription == AZURE_SUBSCRIPTION
    diff --git a/tests/providers/azure/services/defender/defender_ensure_mcas_is_enabled/defender_ensure_mcas_is_enabled_test.py b/tests/providers/azure/services/defender/defender_ensure_mcas_is_enabled/defender_ensure_mcas_is_enabled_test.py
    new file mode 100644
    index 00000000000..860de799a19
    --- /dev/null
    +++ b/tests/providers/azure/services/defender/defender_ensure_mcas_is_enabled/defender_ensure_mcas_is_enabled_test.py
    @@ -0,0 +1,115 @@
    +from unittest import mock
    +from uuid import uuid4
    +
    +from prowler.providers.azure.services.defender.defender_service import Setting
    +from tests.providers.azure.azure_fixtures import AZURE_SUBSCRIPTION
    +
    +
    +class Test_defender_ensure_mcas_is_enabled:
    +    def test_defender_no_settings(self):
    +        defender_client = mock.MagicMock
    +        defender_client.settings = {}
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.defender.defender_ensure_mcas_is_enabled.defender_ensure_mcas_is_enabled.defender_client",
    +            new=defender_client,
    +        ):
    +            from prowler.providers.azure.services.defender.defender_ensure_mcas_is_enabled.defender_ensure_mcas_is_enabled import (
    +                defender_ensure_mcas_is_enabled,
    +            )
    +
    +            check = defender_ensure_mcas_is_enabled()
    +            result = check.execute()
    +            assert len(result) == 0
    +
    +    def test_defender_mcas_disabled(self):
    +        resource_id = str(uuid4())
    +        defender_client = mock.MagicMock
    +        defender_client.settings = {
    +            AZURE_SUBSCRIPTION: {
    +                "MCAS": Setting(
    +                    resource_id=resource_id,
    +                    resource_type="Microsoft.Security/locations/settings",
    +                    kind="DataExportSettings",
    +                    enabled=False,
    +                )
    +            }
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.defender.defender_ensure_mcas_is_enabled.defender_ensure_mcas_is_enabled.defender_client",
    +            new=defender_client,
    +        ):
    +            from prowler.providers.azure.services.defender.defender_ensure_mcas_is_enabled.defender_ensure_mcas_is_enabled import (
    +                defender_ensure_mcas_is_enabled,
    +            )
    +
    +            check = defender_ensure_mcas_is_enabled()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "FAIL"
    +            assert (
    +                result[0].status_extended
    +                == f"Microsoft Defender for Cloud Apps is disabeld for subscription {AZURE_SUBSCRIPTION}."
    +            )
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == "MCAS"
    +            assert result[0].resource_id == resource_id
    +
    +    def test_defender_mcas_enabled(self):
    +        resource_id = str(uuid4())
    +        defender_client = mock.MagicMock
    +        defender_client.settings = {
    +            AZURE_SUBSCRIPTION: {
    +                "MCAS": Setting(
    +                    resource_id=resource_id,
    +                    resource_type="Microsoft.Security/locations/settings",
    +                    kind="DataExportSettings",
    +                    enabled=True,
    +                )
    +            }
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.defender.defender_ensure_mcas_is_enabled.defender_ensure_mcas_is_enabled.defender_client",
    +            new=defender_client,
    +        ):
    +            from prowler.providers.azure.services.defender.defender_ensure_mcas_is_enabled.defender_ensure_mcas_is_enabled import (
    +                defender_ensure_mcas_is_enabled,
    +            )
    +
    +            check = defender_ensure_mcas_is_enabled()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "PASS"
    +            assert (
    +                result[0].status_extended
    +                == f"Microsoft Defender for Cloud Apps is enabled for subscription {AZURE_SUBSCRIPTION}."
    +            )
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == "MCAS"
    +            assert result[0].resource_id == resource_id
    +
    +    def test_defender_mcas_no_settings(self):
    +        defender_client = mock.MagicMock
    +        defender_client.settings = {AZURE_SUBSCRIPTION: {}}
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.defender.defender_ensure_mcas_is_enabled.defender_ensure_mcas_is_enabled.defender_client",
    +            new=defender_client,
    +        ):
    +            from prowler.providers.azure.services.defender.defender_ensure_mcas_is_enabled.defender_ensure_mcas_is_enabled import (
    +                defender_ensure_mcas_is_enabled,
    +            )
    +
    +            check = defender_ensure_mcas_is_enabled()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "FAIL"
    +            assert (
    +                result[0].status_extended
    +                == f"Microsoft Defender for Cloud Apps not exists for subscription {AZURE_SUBSCRIPTION}."
    +            )
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == "MCAS"
    +            assert result[0].resource_id == "MCAS"
    diff --git a/tests/providers/azure/services/defender/defender_ensure_notify_alerts_severity_is_high/defender_ensure_notify_alerts_severity_is_high_test.py b/tests/providers/azure/services/defender/defender_ensure_notify_alerts_severity_is_high/defender_ensure_notify_alerts_severity_is_high_test.py
    new file mode 100644
    index 00000000000..48b1f1bd084
    --- /dev/null
    +++ b/tests/providers/azure/services/defender/defender_ensure_notify_alerts_severity_is_high/defender_ensure_notify_alerts_severity_is_high_test.py
    @@ -0,0 +1,136 @@
    +from unittest import mock
    +from uuid import uuid4
    +
    +from prowler.providers.azure.services.defender.defender_service import SecurityContacts
    +from tests.providers.azure.azure_fixtures import AZURE_SUBSCRIPTION
    +
    +
    +class Test_defender_ensure_notify_alerts_severity_is_high:
    +    def test_defender_no_subscriptions(self):
    +        defender_client = mock.MagicMock
    +        defender_client.security_contacts = {}
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.defender.defender_ensure_notify_alerts_severity_is_high.defender_ensure_notify_alerts_severity_is_high.defender_client",
    +            new=defender_client,
    +        ):
    +            from prowler.providers.azure.services.defender.defender_ensure_notify_alerts_severity_is_high.defender_ensure_notify_alerts_severity_is_high import (
    +                defender_ensure_notify_alerts_severity_is_high,
    +            )
    +
    +            check = defender_ensure_notify_alerts_severity_is_high()
    +            result = check.execute()
    +            assert len(result) == 0
    +
    +    def test_defender_severity_alerts_low(self):
    +        resource_id = str(uuid4())
    +        defender_client = mock.MagicMock
    +        defender_client.security_contacts = {
    +            AZURE_SUBSCRIPTION: {
    +                "default": SecurityContacts(
    +                    resource_id=resource_id,
    +                    emails="",
    +                    phone="",
    +                    alert_notifications_minimal_severity="Low",
    +                    alert_notifications_state="On",
    +                    notified_roles=["Contributor"],
    +                    notified_roles_state="On",
    +                )
    +            }
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.defender.defender_ensure_notify_alerts_severity_is_high.defender_ensure_notify_alerts_severity_is_high.defender_client",
    +            new=defender_client,
    +        ):
    +            from prowler.providers.azure.services.defender.defender_ensure_notify_alerts_severity_is_high.defender_ensure_notify_alerts_severity_is_high import (
    +                defender_ensure_notify_alerts_severity_is_high,
    +            )
    +
    +            check = defender_ensure_notify_alerts_severity_is_high()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "FAIL"
    +            assert (
    +                result[0].status_extended
    +                == f"Notifiy alerts are not enabled for severity high in susbscription {AZURE_SUBSCRIPTION}."
    +            )
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == "default"
    +            assert result[0].resource_id == resource_id
    +
    +    def test_defender_severity_alerts_high(self):
    +        resource_id = str(uuid4())
    +        defender_client = mock.MagicMock
    +        defender_client.security_contacts = {
    +            AZURE_SUBSCRIPTION: {
    +                "default": SecurityContacts(
    +                    resource_id=resource_id,
    +                    emails="",
    +                    phone="",
    +                    alert_notifications_minimal_severity="High",
    +                    alert_notifications_state="On",
    +                    notified_roles=["Contributor"],
    +                    notified_roles_state="On",
    +                )
    +            }
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.defender.defender_ensure_notify_alerts_severity_is_high.defender_ensure_notify_alerts_severity_is_high.defender_client",
    +            new=defender_client,
    +        ):
    +            from prowler.providers.azure.services.defender.defender_ensure_notify_alerts_severity_is_high.defender_ensure_notify_alerts_severity_is_high import (
    +                defender_ensure_notify_alerts_severity_is_high,
    +            )
    +
    +            check = defender_ensure_notify_alerts_severity_is_high()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "PASS"
    +            assert (
    +                result[0].status_extended
    +                == f"Notifiy alerts are enabled for severity high in susbscription {AZURE_SUBSCRIPTION}."
    +            )
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == "default"
    +            assert result[0].resource_id == resource_id
    +
    +    def test_defender_default_security_contact_not_found(self):
    +        defender_client = mock.MagicMock
    +        defender_client.security_contacts = {
    +            AZURE_SUBSCRIPTION: {
    +                "default": SecurityContacts(
    +                    resource_id=f"/subscriptions/{AZURE_SUBSCRIPTION}/providers/Microsoft.Security/securityContacts/default",
    +                    emails="",
    +                    phone="",
    +                    alert_notifications_minimal_severity="",
    +                    alert_notifications_state="",
    +                    notified_roles=[""],
    +                    notified_roles_state="",
    +                )
    +            }
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.defender.defender_ensure_notify_alerts_severity_is_high.defender_ensure_notify_alerts_severity_is_high.defender_client",
    +            new=defender_client,
    +        ):
    +            from prowler.providers.azure.services.defender.defender_ensure_notify_alerts_severity_is_high.defender_ensure_notify_alerts_severity_is_high import (
    +                defender_ensure_notify_alerts_severity_is_high,
    +            )
    +
    +            check = defender_ensure_notify_alerts_severity_is_high()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "FAIL"
    +            assert (
    +                result[0].status_extended
    +                == f"Notifiy alerts are not enabled for severity high in susbscription {AZURE_SUBSCRIPTION}."
    +            )
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == "default"
    +            assert (
    +                result[0].resource_id
    +                == f"/subscriptions/{AZURE_SUBSCRIPTION}/providers/Microsoft.Security/securityContacts/default"
    +            )
    diff --git a/tests/providers/azure/services/defender/defender_ensure_notify_emails_to_owners/defender_ensure_notify_emails_to_owners_test.py b/tests/providers/azure/services/defender/defender_ensure_notify_emails_to_owners/defender_ensure_notify_emails_to_owners_test.py
    new file mode 100644
    index 00000000000..4df36a115f1
    --- /dev/null
    +++ b/tests/providers/azure/services/defender/defender_ensure_notify_emails_to_owners/defender_ensure_notify_emails_to_owners_test.py
    @@ -0,0 +1,173 @@
    +from unittest import mock
    +from uuid import uuid4
    +
    +from prowler.providers.azure.services.defender.defender_service import SecurityContacts
    +from tests.providers.azure.azure_fixtures import AZURE_SUBSCRIPTION
    +
    +
    +class Test_defender_ensure_notify_emails_to_owners:
    +    def test_defender_no_subscriptions(self):
    +        defender_client = mock.MagicMock
    +        defender_client.security_contacts = {}
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.defender.defender_ensure_notify_emails_to_owners.defender_ensure_notify_emails_to_owners.defender_client",
    +            new=defender_client,
    +        ):
    +            from prowler.providers.azure.services.defender.defender_ensure_notify_emails_to_owners.defender_ensure_notify_emails_to_owners import (
    +                defender_ensure_notify_emails_to_owners,
    +            )
    +
    +            check = defender_ensure_notify_emails_to_owners()
    +            result = check.execute()
    +            assert len(result) == 0
    +
    +    def test_defender_no_notify_emails_to_owners(self):
    +        resource_id = str(uuid4())
    +        defender_client = mock.MagicMock
    +        defender_client.security_contacts = {
    +            AZURE_SUBSCRIPTION: {
    +                "default": SecurityContacts(
    +                    resource_id=resource_id,
    +                    emails="",
    +                    phone="",
    +                    alert_notifications_minimal_severity="High",
    +                    alert_notifications_state="On",
    +                    notified_roles=["Contributor"],
    +                    notified_roles_state="On",
    +                )
    +            }
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.defender.defender_ensure_notify_emails_to_owners.defender_ensure_notify_emails_to_owners.defender_client",
    +            new=defender_client,
    +        ):
    +            from prowler.providers.azure.services.defender.defender_ensure_notify_emails_to_owners.defender_ensure_notify_emails_to_owners import (
    +                defender_ensure_notify_emails_to_owners,
    +            )
    +
    +            check = defender_ensure_notify_emails_to_owners()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "FAIL"
    +            assert (
    +                result[0].status_extended
    +                == f"The Owner role is not notified for subscription {AZURE_SUBSCRIPTION}."
    +            )
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == "default"
    +            assert result[0].resource_id == resource_id
    +
    +    def test_defender_notify_emails_to_owners_off(self):
    +        resource_id = str(uuid4())
    +        defender_client = mock.MagicMock
    +        defender_client.security_contacts = {
    +            AZURE_SUBSCRIPTION: {
    +                "default": SecurityContacts(
    +                    resource_id=resource_id,
    +                    emails="",
    +                    phone="",
    +                    alert_notifications_minimal_severity="High",
    +                    alert_notifications_state="On",
    +                    notified_roles=["Owner", "Contributor"],
    +                    notified_roles_state="Off",
    +                )
    +            }
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.defender.defender_ensure_notify_emails_to_owners.defender_ensure_notify_emails_to_owners.defender_client",
    +            new=defender_client,
    +        ):
    +            from prowler.providers.azure.services.defender.defender_ensure_notify_emails_to_owners.defender_ensure_notify_emails_to_owners import (
    +                defender_ensure_notify_emails_to_owners,
    +            )
    +
    +            check = defender_ensure_notify_emails_to_owners()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "FAIL"
    +            assert (
    +                result[0].status_extended
    +                == f"The Owner role is not notified for subscription {AZURE_SUBSCRIPTION}."
    +            )
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == "default"
    +            assert result[0].resource_id == resource_id
    +
    +    def test_defender_notify_emails_to_owners(self):
    +        resource_id = str(uuid4())
    +        defender_client = mock.MagicMock
    +        defender_client.security_contacts = {
    +            AZURE_SUBSCRIPTION: {
    +                "default": SecurityContacts(
    +                    resource_id=resource_id,
    +                    emails="test@test.es",
    +                    phone="",
    +                    alert_notifications_minimal_severity="High",
    +                    alert_notifications_state="On",
    +                    notified_roles=["Owner", "Contributor"],
    +                    notified_roles_state="On",
    +                )
    +            }
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.defender.defender_ensure_notify_emails_to_owners.defender_ensure_notify_emails_to_owners.defender_client",
    +            new=defender_client,
    +        ):
    +            from prowler.providers.azure.services.defender.defender_ensure_notify_emails_to_owners.defender_ensure_notify_emails_to_owners import (
    +                defender_ensure_notify_emails_to_owners,
    +            )
    +
    +            check = defender_ensure_notify_emails_to_owners()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "PASS"
    +            assert (
    +                result[0].status_extended
    +                == f"The Owner role is notified for subscription {AZURE_SUBSCRIPTION}."
    +            )
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == "default"
    +            assert result[0].resource_id == resource_id
    +
    +    def test_defender_default_security_contact_not_found(self):
    +        defender_client = mock.MagicMock
    +        defender_client.security_contacts = {
    +            AZURE_SUBSCRIPTION: {
    +                "default": SecurityContacts(
    +                    resource_id=f"/subscriptions/{AZURE_SUBSCRIPTION}/providers/Microsoft.Security/securityContacts/default",
    +                    emails="",
    +                    phone="",
    +                    alert_notifications_minimal_severity="",
    +                    alert_notifications_state="",
    +                    notified_roles=[""],
    +                    notified_roles_state="",
    +                )
    +            }
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.defender.defender_ensure_notify_emails_to_owners.defender_ensure_notify_emails_to_owners.defender_client",
    +            new=defender_client,
    +        ):
    +            from prowler.providers.azure.services.defender.defender_ensure_notify_emails_to_owners.defender_ensure_notify_emails_to_owners import (
    +                defender_ensure_notify_emails_to_owners,
    +            )
    +
    +            check = defender_ensure_notify_emails_to_owners()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "FAIL"
    +            assert (
    +                result[0].status_extended
    +                == f"The Owner role is not notified for subscription {AZURE_SUBSCRIPTION}."
    +            )
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == "default"
    +            assert (
    +                result[0].resource_id
    +                == f"/subscriptions/{AZURE_SUBSCRIPTION}/providers/Microsoft.Security/securityContacts/default"
    +            )
    diff --git a/tests/providers/azure/services/defender/defender_ensure_system_updates_are_applied/defender_ensure_system_updates_are_applied_test.py b/tests/providers/azure/services/defender/defender_ensure_system_updates_are_applied/defender_ensure_system_updates_are_applied_test.py
    new file mode 100644
    index 00000000000..176c2634a5e
    --- /dev/null
    +++ b/tests/providers/azure/services/defender/defender_ensure_system_updates_are_applied/defender_ensure_system_updates_are_applied_test.py
    @@ -0,0 +1,199 @@
    +from unittest import mock
    +from uuid import uuid4
    +
    +from prowler.providers.azure.services.defender.defender_service import Assesment
    +from tests.providers.azure.azure_fixtures import AZURE_SUBSCRIPTION
    +
    +
    +class Test_defender_ensure_system_updates_are_applied:
    +    def test_defender_no_app_services(self):
    +        defender_client = mock.MagicMock
    +        defender_client.assessments = {}
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.defender.defender_ensure_system_updates_are_applied.defender_ensure_system_updates_are_applied.defender_client",
    +            new=defender_client,
    +        ):
    +            from prowler.providers.azure.services.defender.defender_ensure_system_updates_are_applied.defender_ensure_system_updates_are_applied import (
    +                defender_ensure_system_updates_are_applied,
    +            )
    +
    +            check = defender_ensure_system_updates_are_applied()
    +            result = check.execute()
    +            assert len(result) == 0
    +
    +    def test_defender_machines_no_log_analytics_installed(self):
    +        resource_id = str(uuid4())
    +        defender_client = mock.MagicMock
    +        defender_client.assessments = {
    +            AZURE_SUBSCRIPTION: {
    +                "Log Analytics agent should be installed on virtual machines": Assesment(
    +                    resource_id=resource_id,
    +                    resource_name="vm1",
    +                    status="Unhealthy",
    +                ),
    +                "Machines should be configured to periodically check for missing system updates": Assesment(
    +                    resource_id=resource_id,
    +                    resource_name="vm1",
    +                    status="Healthy",
    +                ),
    +                "System updates should be installed on your machines": Assesment(
    +                    resource_id=resource_id,
    +                    resource_name="vm1",
    +                    status="Healthy",
    +                ),
    +            }
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.defender.defender_ensure_system_updates_are_applied.defender_ensure_system_updates_are_applied.defender_client",
    +            new=defender_client,
    +        ):
    +            from prowler.providers.azure.services.defender.defender_ensure_system_updates_are_applied.defender_ensure_system_updates_are_applied import (
    +                defender_ensure_system_updates_are_applied,
    +            )
    +
    +            check = defender_ensure_system_updates_are_applied()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "FAIL"
    +            assert (
    +                result[0].status_extended
    +                == f"System updates are not applied for all the VMs in the subscription {AZURE_SUBSCRIPTION}."
    +            )
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == "vm1"
    +            assert result[0].resource_id == resource_id
    +
    +    def test_defender_machines_no_configured_to_periodically_check_for_system_updates(
    +        self,
    +    ):
    +        resource_id = str(uuid4())
    +        defender_client = mock.MagicMock
    +        defender_client.assessments = {
    +            AZURE_SUBSCRIPTION: {
    +                "Log Analytics agent should be installed on virtual machines": Assesment(
    +                    resource_id=resource_id,
    +                    resource_name="vm1",
    +                    status="Healthy",
    +                ),
    +                "Machines should be configured to periodically check for missing system updates": Assesment(
    +                    resource_id=resource_id,
    +                    resource_name="vm1",
    +                    status="Unhealthy",
    +                ),
    +                "System updates should be installed on your machines": Assesment(
    +                    resource_id=resource_id,
    +                    resource_name="vm1",
    +                    status="Healthy",
    +                ),
    +            }
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.defender.defender_ensure_system_updates_are_applied.defender_ensure_system_updates_are_applied.defender_client",
    +            new=defender_client,
    +        ):
    +            from prowler.providers.azure.services.defender.defender_ensure_system_updates_are_applied.defender_ensure_system_updates_are_applied import (
    +                defender_ensure_system_updates_are_applied,
    +            )
    +
    +            check = defender_ensure_system_updates_are_applied()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "FAIL"
    +            assert (
    +                result[0].status_extended
    +                == f"System updates are not applied for all the VMs in the subscription {AZURE_SUBSCRIPTION}."
    +            )
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == "vm1"
    +            assert result[0].resource_id == resource_id
    +
    +    def test_defender_machines_no_system_updates_installed(self):
    +        resource_id = str(uuid4())
    +        defender_client = mock.MagicMock
    +        defender_client.assessments = {
    +            AZURE_SUBSCRIPTION: {
    +                "Log Analytics agent should be installed on virtual machines": Assesment(
    +                    resource_id=resource_id,
    +                    resource_name="vm1",
    +                    status="Healthy",
    +                ),
    +                "Machines should be configured to periodically check for missing system updates": Assesment(
    +                    resource_id=resource_id,
    +                    resource_name="vm1",
    +                    status="Healthy",
    +                ),
    +                "System updates should be installed on your machines": Assesment(
    +                    resource_id=resource_id,
    +                    resource_name="vm1",
    +                    status="Unhealthy",
    +                ),
    +            }
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.defender.defender_ensure_system_updates_are_applied.defender_ensure_system_updates_are_applied.defender_client",
    +            new=defender_client,
    +        ):
    +            from prowler.providers.azure.services.defender.defender_ensure_system_updates_are_applied.defender_ensure_system_updates_are_applied import (
    +                defender_ensure_system_updates_are_applied,
    +            )
    +
    +            check = defender_ensure_system_updates_are_applied()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "FAIL"
    +            assert (
    +                result[0].status_extended
    +                == f"System updates are not applied for all the VMs in the subscription {AZURE_SUBSCRIPTION}."
    +            )
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == "vm1"
    +            assert result[0].resource_id == resource_id
    +
    +    def test_defender_machines_configured_to_periodically_check_for_system_updates_and_system_updates_installed(
    +        self,
    +    ):
    +        resource_id = str(uuid4())
    +        defender_client = mock.MagicMock
    +        defender_client.assessments = {
    +            AZURE_SUBSCRIPTION: {
    +                "Log Analytics agent should be installed on virtual machines": Assesment(
    +                    resource_id=resource_id,
    +                    resource_name="vm1",
    +                    status="Healthy",
    +                ),
    +                "Machines should be configured to periodically check for missing system updates": Assesment(
    +                    resource_id=resource_id,
    +                    resource_name="vm1",
    +                    status="Healthy",
    +                ),
    +                "System updates should be installed on your machines": Assesment(
    +                    resource_id=resource_id,
    +                    resource_name="vm1",
    +                    status="Healthy",
    +                ),
    +            }
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.defender.defender_ensure_system_updates_are_applied.defender_ensure_system_updates_are_applied.defender_client",
    +            new=defender_client,
    +        ):
    +            from prowler.providers.azure.services.defender.defender_ensure_system_updates_are_applied.defender_ensure_system_updates_are_applied import (
    +                defender_ensure_system_updates_are_applied,
    +            )
    +
    +            check = defender_ensure_system_updates_are_applied()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "PASS"
    +            assert (
    +                result[0].status_extended
    +                == f"System updates are applied for all the VMs in the subscription {AZURE_SUBSCRIPTION}."
    +            )
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == "vm1"
    +            assert result[0].resource_id == resource_id
    diff --git a/tests/providers/azure/services/defender/defender_ensure_wdatp_is_enabled/defender_ensure_wdatp_is_enabled_test.py b/tests/providers/azure/services/defender/defender_ensure_wdatp_is_enabled/defender_ensure_wdatp_is_enabled_test.py
    new file mode 100644
    index 00000000000..9d5a91d008b
    --- /dev/null
    +++ b/tests/providers/azure/services/defender/defender_ensure_wdatp_is_enabled/defender_ensure_wdatp_is_enabled_test.py
    @@ -0,0 +1,115 @@
    +from unittest import mock
    +from uuid import uuid4
    +
    +from prowler.providers.azure.services.defender.defender_service import Setting
    +from tests.providers.azure.azure_fixtures import AZURE_SUBSCRIPTION
    +
    +
    +class Test_defender_ensure_wdatp_is_enabled:
    +    def test_defender_no_settings(self):
    +        defender_client = mock.MagicMock
    +        defender_client.settings = {}
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.defender.defender_ensure_wdatp_is_enabled.defender_ensure_wdatp_is_enabled.defender_client",
    +            new=defender_client,
    +        ):
    +            from prowler.providers.azure.services.defender.defender_ensure_wdatp_is_enabled.defender_ensure_wdatp_is_enabled import (
    +                defender_ensure_wdatp_is_enabled,
    +            )
    +
    +            check = defender_ensure_wdatp_is_enabled()
    +            result = check.execute()
    +            assert len(result) == 0
    +
    +    def test_defender_wdatp_disabled(self):
    +        resource_id = str(uuid4())
    +        defender_client = mock.MagicMock
    +        defender_client.settings = {
    +            AZURE_SUBSCRIPTION: {
    +                "WDATP": Setting(
    +                    resource_id=resource_id,
    +                    resource_type="Microsoft.Security/locations/settings",
    +                    kind="DataExportSettings",
    +                    enabled=False,
    +                )
    +            }
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.defender.defender_ensure_wdatp_is_enabled.defender_ensure_wdatp_is_enabled.defender_client",
    +            new=defender_client,
    +        ):
    +            from prowler.providers.azure.services.defender.defender_ensure_wdatp_is_enabled.defender_ensure_wdatp_is_enabled import (
    +                defender_ensure_wdatp_is_enabled,
    +            )
    +
    +            check = defender_ensure_wdatp_is_enabled()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "FAIL"
    +            assert (
    +                result[0].status_extended
    +                == f"Microsoft Defender for Endpoint integration is disabeld for subscription {AZURE_SUBSCRIPTION}."
    +            )
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == "WDATP"
    +            assert result[0].resource_id == resource_id
    +
    +    def test_defender_wdatp_enabled(self):
    +        resource_id = str(uuid4())
    +        defender_client = mock.MagicMock
    +        defender_client.settings = {
    +            AZURE_SUBSCRIPTION: {
    +                "WDATP": Setting(
    +                    resource_id=resource_id,
    +                    resource_type="Microsoft.Security/locations/settings",
    +                    kind="DataExportSettings",
    +                    enabled=True,
    +                )
    +            }
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.defender.defender_ensure_wdatp_is_enabled.defender_ensure_wdatp_is_enabled.defender_client",
    +            new=defender_client,
    +        ):
    +            from prowler.providers.azure.services.defender.defender_ensure_wdatp_is_enabled.defender_ensure_wdatp_is_enabled import (
    +                defender_ensure_wdatp_is_enabled,
    +            )
    +
    +            check = defender_ensure_wdatp_is_enabled()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "PASS"
    +            assert (
    +                result[0].status_extended
    +                == f"Microsoft Defender for Endpoint integration is enabled for subscription {AZURE_SUBSCRIPTION}."
    +            )
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == "WDATP"
    +            assert result[0].resource_id == resource_id
    +
    +    def test_defender_wdatp_no_settings(self):
    +        defender_client = mock.MagicMock
    +        defender_client.settings = {AZURE_SUBSCRIPTION: {}}
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.defender.defender_ensure_wdatp_is_enabled.defender_ensure_wdatp_is_enabled.defender_client",
    +            new=defender_client,
    +        ):
    +            from prowler.providers.azure.services.defender.defender_ensure_wdatp_is_enabled.defender_ensure_wdatp_is_enabled import (
    +                defender_ensure_wdatp_is_enabled,
    +            )
    +
    +            check = defender_ensure_wdatp_is_enabled()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "FAIL"
    +            assert (
    +                result[0].status_extended
    +                == f"Microsoft Defender for Endpoint integration not exists for subscription {AZURE_SUBSCRIPTION}."
    +            )
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == "WDATP"
    +            assert result[0].resource_id == "WDATP"
    diff --git a/tests/providers/azure/services/defender/defender_service_test.py b/tests/providers/azure/services/defender/defender_service_test.py
    new file mode 100644
    index 00000000000..ba8d5757102
    --- /dev/null
    +++ b/tests/providers/azure/services/defender/defender_service_test.py
    @@ -0,0 +1,255 @@
    +from datetime import timedelta
    +from unittest.mock import patch
    +
    +from prowler.providers.azure.services.defender.defender_service import (
    +    Assesment,
    +    AutoProvisioningSetting,
    +    Defender,
    +    IoTSecuritySolution,
    +    Pricing,
    +    SecurityContacts,
    +    Setting,
    +)
    +from tests.providers.azure.azure_fixtures import (
    +    AZURE_SUBSCRIPTION,
    +    set_mocked_azure_audit_info,
    +)
    +
    +
    +def mock_defender_get_pricings(_):
    +    return {
    +        AZURE_SUBSCRIPTION: {
    +            "Standard": Pricing(
    +                resource_id="resource_id",
    +                pricing_tier="pricing_tier",
    +                free_trial_remaining_time=timedelta(days=1),
    +            )
    +        }
    +    }
    +
    +
    +def mock_defender_get_auto_provisioning_settings(_):
    +    return {
    +        AZURE_SUBSCRIPTION: {
    +            "default": AutoProvisioningSetting(
    +                resource_id="/subscriptions/resource_id",
    +                resource_name="default",
    +                resource_type="Microsoft.Security/autoProvisioningSettings",
    +                auto_provision="On",
    +            )
    +        }
    +    }
    +
    +
    +def mock_defender_get_assessments(_):
    +    return {
    +        AZURE_SUBSCRIPTION: {
    +            "default": Assesment(
    +                resource_id="/subscriptions/resource_id",
    +                resource_name="default",
    +                status="Healthy",
    +            )
    +        }
    +    }
    +
    +
    +def mock_defender_get_security_contacts(_):
    +    return {
    +        AZURE_SUBSCRIPTION: {
    +            "default": SecurityContacts(
    +                resource_id="/subscriptions/resource_id",
    +                emails="user@user.com, test@test.es",
    +                phone="666666666",
    +                alert_notifications_minimal_severity="High",
    +                alert_notifications_state="On",
    +                notified_roles=["Owner", "Contributor"],
    +                notified_roles_state="On",
    +            )
    +        }
    +    }
    +
    +
    +def mock_defender_get_settings(_):
    +    return {
    +        AZURE_SUBSCRIPTION: {
    +            "MCAS": Setting(
    +                resource_id="/subscriptions/resource_id",
    +                resource_type="Microsoft.Security/locations/settings",
    +                kind="DataExportSettings",
    +                enabled=True,
    +            )
    +        }
    +    }
    +
    +
    +def mock_defender_get_iot_security_solutions(_):
    +    return {
    +        AZURE_SUBSCRIPTION: {
    +            "iot_sec_solution": IoTSecuritySolution(
    +                resource_id="/subscriptions/resource_id",
    +                status="Enabled",
    +            )
    +        }
    +    }
    +
    +
    +@patch(
    +    "prowler.providers.azure.services.defender.defender_service.Defender.__get_pricings__",
    +    new=mock_defender_get_pricings,
    +)
    +@patch(
    +    "prowler.providers.azure.services.defender.defender_service.Defender.__get_auto_provisioning_settings__",
    +    new=mock_defender_get_auto_provisioning_settings,
    +)
    +@patch(
    +    "prowler.providers.azure.services.defender.defender_service.Defender.__get_assessments__",
    +    new=mock_defender_get_assessments,
    +)
    +@patch(
    +    "prowler.providers.azure.services.defender.defender_service.Defender.__get_settings__",
    +    new=mock_defender_get_settings,
    +)
    +@patch(
    +    "prowler.providers.azure.services.defender.defender_service.Defender.__get_security_contacts__",
    +    new=mock_defender_get_security_contacts,
    +)
    +@patch(
    +    "prowler.providers.azure.services.defender.defender_service.Defender.__get_iot_security_solutions__",
    +    new=mock_defender_get_iot_security_solutions,
    +)
    +class Test_Defender_Service:
    +    def test__get_client__(self):
    +        defender = Defender(set_mocked_azure_audit_info())
    +        assert (
    +            defender.clients[AZURE_SUBSCRIPTION].__class__.__name__ == "SecurityCenter"
    +        )
    +
    +    def test__get_subscriptions__(self):
    +        defender = Defender(set_mocked_azure_audit_info())
    +        defender = Defender(set_mocked_azure_audit_info())
    +        assert defender.subscriptions.__class__.__name__ == "dict"
    +
    +    def test__get_pricings__(self):
    +        defender = Defender(set_mocked_azure_audit_info())
    +        assert len(defender.pricings) == 1
    +        assert (
    +            defender.pricings[AZURE_SUBSCRIPTION]["Standard"].resource_id
    +            == "resource_id"
    +        )
    +        assert (
    +            defender.pricings[AZURE_SUBSCRIPTION]["Standard"].pricing_tier
    +            == "pricing_tier"
    +        )
    +        assert defender.pricings[AZURE_SUBSCRIPTION][
    +            "Standard"
    +        ].free_trial_remaining_time == timedelta(days=1)
    +
    +    def test__get_auto_provisioning_settings__(self):
    +        defender = Defender(set_mocked_azure_audit_info())
    +        assert len(defender.auto_provisioning_settings) == 1
    +        assert (
    +            defender.auto_provisioning_settings[AZURE_SUBSCRIPTION][
    +                "default"
    +            ].resource_id
    +            == "/subscriptions/resource_id"
    +        )
    +        assert (
    +            defender.auto_provisioning_settings[AZURE_SUBSCRIPTION][
    +                "default"
    +            ].resource_name
    +            == "default"
    +        )
    +        assert (
    +            defender.auto_provisioning_settings[AZURE_SUBSCRIPTION][
    +                "default"
    +            ].resource_type
    +            == "Microsoft.Security/autoProvisioningSettings"
    +        )
    +        assert (
    +            defender.auto_provisioning_settings[AZURE_SUBSCRIPTION][
    +                "default"
    +            ].auto_provision
    +            == "On"
    +        )
    +
    +    def test__get_assessments__(self):
    +        defender = Defender(set_mocked_azure_audit_info())
    +        assert len(defender.assessments) == 1
    +        assert (
    +            defender.assessments[AZURE_SUBSCRIPTION]["default"].resource_id
    +            == "/subscriptions/resource_id"
    +        )
    +        assert (
    +            defender.assessments[AZURE_SUBSCRIPTION]["default"].resource_name
    +            == "default"
    +        )
    +        assert defender.assessments[AZURE_SUBSCRIPTION]["default"].status == "Healthy"
    +
    +    def test__get_settings__(self):
    +        defender = Defender(set_mocked_azure_audit_info())
    +        assert len(defender.settings) == 1
    +        assert (
    +            defender.settings[AZURE_SUBSCRIPTION]["MCAS"].resource_id
    +            == "/subscriptions/resource_id"
    +        )
    +        assert (
    +            defender.settings[AZURE_SUBSCRIPTION]["MCAS"].resource_type
    +            == "Microsoft.Security/locations/settings"
    +        )
    +        assert (
    +            defender.settings[AZURE_SUBSCRIPTION]["MCAS"].kind == "DataExportSettings"
    +        )
    +        assert defender.settings[AZURE_SUBSCRIPTION]["MCAS"].enabled
    +
    +    def test__get_security_contacts__(self):
    +        defender = Defender(set_mocked_azure_audit_info())
    +        assert len(defender.security_contacts) == 1
    +        assert (
    +            defender.security_contacts[AZURE_SUBSCRIPTION]["default"].resource_id
    +            == "/subscriptions/resource_id"
    +        )
    +        assert (
    +            defender.security_contacts[AZURE_SUBSCRIPTION]["default"].emails
    +            == "user@user.com, test@test.es"
    +        )
    +        assert (
    +            defender.security_contacts[AZURE_SUBSCRIPTION]["default"].phone
    +            == "666666666"
    +        )
    +        assert (
    +            defender.security_contacts[AZURE_SUBSCRIPTION][
    +                "default"
    +            ].alert_notifications_minimal_severity
    +            == "High"
    +        )
    +        assert (
    +            defender.security_contacts[AZURE_SUBSCRIPTION][
    +                "default"
    +            ].alert_notifications_state
    +            == "On"
    +        )
    +        assert defender.security_contacts[AZURE_SUBSCRIPTION][
    +            "default"
    +        ].notified_roles == ["Owner", "Contributor"]
    +        assert (
    +            defender.security_contacts[AZURE_SUBSCRIPTION][
    +                "default"
    +            ].notified_roles_state
    +            == "On"
    +        )
    +
    +    def test__get_iot_security_solutions__(self):
    +        defender = Defender(set_mocked_azure_audit_info())
    +        assert len(defender.iot_security_solutions) == 1
    +        assert (
    +            defender.iot_security_solutions[AZURE_SUBSCRIPTION][
    +                "iot_sec_solution"
    +            ].resource_id
    +            == "/subscriptions/resource_id"
    +        )
    +        assert (
    +            defender.iot_security_solutions[AZURE_SUBSCRIPTION][
    +                "iot_sec_solution"
    +            ].status
    +            == "Enabled"
    +        )
    diff --git a/tests/providers/azure/services/iam/iam_custom_role_has_permissions_to_administer_resource_locks/iam_custom_role_has_permissions_to_administer_resource_locks_test.py b/tests/providers/azure/services/iam/iam_custom_role_has_permissions_to_administer_resource_locks/iam_custom_role_has_permissions_to_administer_resource_locks_test.py
    new file mode 100644
    index 00000000000..e407087c8dd
    --- /dev/null
    +++ b/tests/providers/azure/services/iam/iam_custom_role_has_permissions_to_administer_resource_locks/iam_custom_role_has_permissions_to_administer_resource_locks_test.py
    @@ -0,0 +1,112 @@
    +from unittest import mock
    +from uuid import uuid4
    +
    +from azure.mgmt.authorization.v2022_04_01.models import Permission
    +
    +from prowler.providers.azure.services.iam.iam_service import Role
    +from tests.providers.azure.azure_fixtures import AZURE_SUBSCRIPTION
    +
    +
    +class Test_iam_custom_role_has_permissions_to_administer_resource_locks:
    +    def test_iam_no_roles(self):
    +        defender_client = mock.MagicMock
    +        defender_client.custom_roles = {}
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.iam.iam_custom_role_has_permissions_to_administer_resource_locks.iam_custom_role_has_permissions_to_administer_resource_locks.iam_client",
    +            new=defender_client,
    +        ):
    +            from prowler.providers.azure.services.iam.iam_custom_role_has_permissions_to_administer_resource_locks.iam_custom_role_has_permissions_to_administer_resource_locks import (
    +                iam_custom_role_has_permissions_to_administer_resource_locks,
    +            )
    +
    +            check = iam_custom_role_has_permissions_to_administer_resource_locks()
    +            result = check.execute()
    +            assert len(result) == 0
    +
    +    def test_iam_custom_owner_role_created_with_lock_administration_permissions(
    +        self,
    +    ):
    +        defender_client = mock.MagicMock
    +        role_name = "test-role"
    +        defender_client.custom_roles = {
    +            AZURE_SUBSCRIPTION: [
    +                Role(
    +                    id=str(uuid4()),
    +                    name=role_name,
    +                    type="CustomRole",
    +                    assignable_scopes=["/.*", "/test"],
    +                    permissions=[
    +                        Permission(
    +                            actions=[
    +                                "Microsoft.Authorization/locks/*",
    +                                "microsoft.aadiam/azureADMetrics/read",
    +                            ]
    +                        )
    +                    ],
    +                )
    +            ]
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.iam.iam_custom_role_has_permissions_to_administer_resource_locks.iam_custom_role_has_permissions_to_administer_resource_locks.iam_client",
    +            new=defender_client,
    +        ):
    +            from prowler.providers.azure.services.iam.iam_custom_role_has_permissions_to_administer_resource_locks.iam_custom_role_has_permissions_to_administer_resource_locks import (
    +                iam_custom_role_has_permissions_to_administer_resource_locks,
    +            )
    +
    +            check = iam_custom_role_has_permissions_to_administer_resource_locks()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "PASS"
    +            assert (
    +                result[0].status_extended
    +                == f"Role {role_name} from subscription {AZURE_SUBSCRIPTION} has permission to administer resource locks."
    +            )
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert (
    +                result[0].resource_id
    +                == defender_client.custom_roles[AZURE_SUBSCRIPTION][0].id
    +            )
    +            assert result[0].resource_name == role_name
    +
    +    def test_iam_custom_owner_role_created_with_no_lock_administration_permissions(
    +        self,
    +    ):
    +        defender_client = mock.MagicMock
    +        role_name = "test-role"
    +        defender_client.custom_roles = {
    +            AZURE_SUBSCRIPTION: [
    +                Role(
    +                    id=str(uuid4()),
    +                    name=role_name,
    +                    type="CustomRole",
    +                    assignable_scopes=["/*"],
    +                    permissions=[Permission(actions=["*"])],
    +                )
    +            ]
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.iam.iam_custom_role_has_permissions_to_administer_resource_locks.iam_custom_role_has_permissions_to_administer_resource_locks.iam_client",
    +            new=defender_client,
    +        ):
    +            from prowler.providers.azure.services.iam.iam_custom_role_has_permissions_to_administer_resource_locks.iam_custom_role_has_permissions_to_administer_resource_locks import (
    +                iam_custom_role_has_permissions_to_administer_resource_locks,
    +            )
    +
    +            check = iam_custom_role_has_permissions_to_administer_resource_locks()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "FAIL"
    +            assert (
    +                result[0].status_extended
    +                == f"Role {role_name} from subscription {AZURE_SUBSCRIPTION} has no permission to administer resource locks."
    +            )
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert (
    +                result[0].resource_id
    +                == defender_client.custom_roles[AZURE_SUBSCRIPTION][0].id
    +            )
    +            assert result[0].resource_name == role_name
    diff --git a/tests/providers/azure/services/iam/iam_subscription_roles_owner_custom_not_created/iam_subscription_roles_owner_custom_not_created_test.py b/tests/providers/azure/services/iam/iam_subscription_roles_owner_custom_not_created/iam_subscription_roles_owner_custom_not_created_test.py
    index 238fcb13e32..a008d3f52a0 100644
    --- a/tests/providers/azure/services/iam/iam_subscription_roles_owner_custom_not_created/iam_subscription_roles_owner_custom_not_created_test.py
    +++ b/tests/providers/azure/services/iam/iam_subscription_roles_owner_custom_not_created/iam_subscription_roles_owner_custom_not_created_test.py
    @@ -4,14 +4,13 @@
     from azure.mgmt.authorization.v2022_04_01.models import Permission
     
     from prowler.providers.azure.services.iam.iam_service import Role
    +from tests.providers.azure.azure_fixtures import AZURE_SUBSCRIPTION
     
    -AZURE_SUSCRIPTION = str(uuid4())
     
    -
    -class Test_defender_ensure_defender_for_storage_is_on:
    +class Test_iam_subscription_roles_owner_custom_not_created:
         def test_iam_no_roles(self):
             defender_client = mock.MagicMock
    -        defender_client.roles = {}
    +        defender_client.custom_roles = {}
     
             with mock.patch(
                 "prowler.providers.azure.services.iam.iam_subscription_roles_owner_custom_not_created.iam_subscription_roles_owner_custom_not_created.iam_client",
    @@ -28,12 +27,12 @@ def test_iam_no_roles(self):
         def test_iam_custom_owner_role_created_with_all(self):
             defender_client = mock.MagicMock
             role_name = "test-role"
    -        defender_client.roles = {
    -            AZURE_SUSCRIPTION: [
    +        defender_client.custom_roles = {
    +            AZURE_SUBSCRIPTION: [
                     Role(
                         id=str(uuid4()),
                         name=role_name,
    -                    type="type-role",
    +                    type="CustomRole",
                         assignable_scopes=["/*"],
                         permissions=[Permission(actions="*")],
                     )
    @@ -54,14 +53,20 @@ def test_iam_custom_owner_role_created_with_all(self):
                 assert result[0].status == "FAIL"
                 assert (
                     result[0].status_extended
    -                == f"Role {role_name} from subscription {AZURE_SUSCRIPTION} is a custom owner role."
    +                == f"Role {role_name} from subscription {AZURE_SUBSCRIPTION} is a custom owner role."
    +            )
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert (
    +                result[0].resource_id
    +                == defender_client.custom_roles[AZURE_SUBSCRIPTION][0].id
                 )
    +            assert result[0].resource_name == role_name
     
         def test_iam_custom_owner_role_created_with_no_permissions(self):
             defender_client = mock.MagicMock
             role_name = "test-role"
    -        defender_client.roles = {
    -            AZURE_SUSCRIPTION: [
    +        defender_client.custom_roles = {
    +            AZURE_SUBSCRIPTION: [
                     Role(
                         id=str(uuid4()),
                         name=role_name,
    @@ -86,5 +91,11 @@ def test_iam_custom_owner_role_created_with_no_permissions(self):
                 assert result[0].status == "PASS"
                 assert (
                     result[0].status_extended
    -                == f"Role {role_name} from subscription {AZURE_SUSCRIPTION} is not a custom owner role."
    +                == f"Role {role_name} from subscription {AZURE_SUBSCRIPTION} is not a custom owner role."
    +            )
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert (
    +                result[0].resource_id
    +                == defender_client.custom_roles[AZURE_SUBSCRIPTION][0].id
                 )
    +            assert result[0].resource_name == role_name
    diff --git a/tests/providers/azure/services/keyvault/keyvault_key_expiration_set_in_non_rbac/keyvault_key_expiration_set_in_non_rbac_test.py b/tests/providers/azure/services/keyvault/keyvault_key_expiration_set_in_non_rbac/keyvault_key_expiration_set_in_non_rbac_test.py
    new file mode 100644
    index 00000000000..bf47f7b824b
    --- /dev/null
    +++ b/tests/providers/azure/services/keyvault/keyvault_key_expiration_set_in_non_rbac/keyvault_key_expiration_set_in_non_rbac_test.py
    @@ -0,0 +1,151 @@
    +from unittest import mock
    +from uuid import uuid4
    +
    +from azure.mgmt.keyvault.v2023_07_01.models import KeyAttributes, VaultProperties
    +
    +from prowler.providers.azure.services.keyvault.keyvault_service import Key, KeyVaultInfo
    +
    +AZURE_SUBSCRIPTION = str(uuid4())
    +
    +
    +class Test_keyvault_key_expiration_set_in_non_rbac:
    +    def test_no_key_vaults(self):
    +        keyvault_client = mock.MagicMock
    +        keyvault_client.key_vaults = {}
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.keyvault.keyvault_key_expiration_set_in_non_rbac.keyvault_key_expiration_set_in_non_rbac.keyvault_client",
    +            new=keyvault_client,
    +        ):
    +            from prowler.providers.azure.services.keyvault.keyvault_key_expiration_set_in_non_rbac.keyvault_key_expiration_set_in_non_rbac import (
    +                keyvault_key_expiration_set_in_non_rbac,
    +            )
    +
    +            check = keyvault_key_expiration_set_in_non_rbac()
    +            result = check.execute()
    +            assert len(result) == 0
    +
    +    def test_no_keys(self):
    +        keyvault_client = mock.MagicMock
    +        keyvault_client.key_vaults = {
    +            AZURE_SUBSCRIPTION: [
    +                KeyVaultInfo(
    +                    id="id",
    +                    name="name",
    +                    location="location",
    +                    resource_group="resource_group",
    +                    properties=VaultProperties(
    +                        tenant_id="tenantid", sku="sku", enable_rbac_authorization=False
    +                    ),
    +                    keys=[],
    +                    secrets=[],
    +                )
    +            ]
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.keyvault.keyvault_key_expiration_set_in_non_rbac.keyvault_key_expiration_set_in_non_rbac.keyvault_client",
    +            new=keyvault_client,
    +        ):
    +            from prowler.providers.azure.services.keyvault.keyvault_key_expiration_set_in_non_rbac.keyvault_key_expiration_set_in_non_rbac import (
    +                keyvault_key_expiration_set_in_non_rbac,
    +            )
    +
    +            check = keyvault_key_expiration_set_in_non_rbac()
    +            result = check.execute()
    +            assert len(result) == 0
    +
    +    def test_key_vaults_invalid_keys(self):
    +        keyvault_client = mock.MagicMock
    +        keyvault_name = "Keyvault Name"
    +        keyvault_id = str(uuid4())
    +        key_name = "Key Name"
    +        key = Key(
    +            id="id",
    +            name=key_name,
    +            enabled=True,
    +            location="location",
    +            attributes=KeyAttributes(expires=None, enabled=True),
    +        )
    +        keyvault_client.key_vaults = {
    +            AZURE_SUBSCRIPTION: [
    +                KeyVaultInfo(
    +                    id=keyvault_id,
    +                    name=keyvault_name,
    +                    location="location",
    +                    resource_group="resource_group",
    +                    properties=VaultProperties(
    +                        tenant_id="tenantid", sku="sku", enable_rbac_authorization=False
    +                    ),
    +                    keys=[key],
    +                    secrets=[],
    +                )
    +            ]
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.keyvault.keyvault_key_expiration_set_in_non_rbac.keyvault_key_expiration_set_in_non_rbac.keyvault_client",
    +            new=keyvault_client,
    +        ):
    +            from prowler.providers.azure.services.keyvault.keyvault_key_expiration_set_in_non_rbac.keyvault_key_expiration_set_in_non_rbac import (
    +                keyvault_key_expiration_set_in_non_rbac,
    +            )
    +
    +            check = keyvault_key_expiration_set_in_non_rbac()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "FAIL"
    +            assert (
    +                result[0].status_extended
    +                == f"Keyvault {keyvault_name} from subscription {AZURE_SUBSCRIPTION} has the key {key_name} without expiration date set."
    +            )
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == keyvault_name
    +            assert result[0].resource_id == keyvault_id
    +
    +    def test_key_vaults_valid_keys(self):
    +        keyvault_client = mock.MagicMock
    +        keyvault_name = "Keyvault Name"
    +        keyvault_id = str(uuid4())
    +        key = Key(
    +            id="id",
    +            name="name",
    +            enabled=True,
    +            location="location",
    +            attributes=KeyAttributes(expires=49394, enabled=True),
    +        )
    +        keyvault_client.key_vaults = {
    +            AZURE_SUBSCRIPTION: [
    +                KeyVaultInfo(
    +                    id=keyvault_id,
    +                    name=keyvault_name,
    +                    location="location",
    +                    resource_group="resource_group",
    +                    properties=VaultProperties(
    +                        tenant_id="tenantid", sku="sku", enable_rbac_authorization=False
    +                    ),
    +                    keys=[key],
    +                    secrets=[],
    +                )
    +            ]
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.keyvault.keyvault_key_expiration_set_in_non_rbac.keyvault_key_expiration_set_in_non_rbac.keyvault_client",
    +            new=keyvault_client,
    +        ):
    +            from prowler.providers.azure.services.keyvault.keyvault_key_expiration_set_in_non_rbac.keyvault_key_expiration_set_in_non_rbac import (
    +                keyvault_key_expiration_set_in_non_rbac,
    +            )
    +
    +            check = keyvault_key_expiration_set_in_non_rbac()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "PASS"
    +            assert (
    +                result[0].status_extended
    +                == f"Keyvault {keyvault_name} from subscription {AZURE_SUBSCRIPTION} has all the keys with expiration date set."
    +            )
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == keyvault_name
    +            assert result[0].resource_id == keyvault_id
    diff --git a/tests/providers/azure/services/keyvault/keyvault_key_rotation_enabled/keyvault_key_rotation_enabled_test.py b/tests/providers/azure/services/keyvault/keyvault_key_rotation_enabled/keyvault_key_rotation_enabled_test.py
    new file mode 100644
    index 00000000000..77ab9c6ccbd
    --- /dev/null
    +++ b/tests/providers/azure/services/keyvault/keyvault_key_rotation_enabled/keyvault_key_rotation_enabled_test.py
    @@ -0,0 +1,163 @@
    +from unittest import mock
    +from uuid import uuid4
    +
    +from azure.keyvault.keys import KeyRotationLifetimeAction, KeyRotationPolicy
    +from azure.mgmt.keyvault.v2023_07_01.models import KeyAttributes, VaultProperties
    +
    +from prowler.providers.azure.services.keyvault.keyvault_service import Key, KeyVaultInfo
    +
    +AZURE_SUBSCRIPTION = str(uuid4())
    +
    +
    +class Test_keyvault_key_rotation_enabled:
    +    def test_no_key_vaults(self):
    +        keyvault_client = mock.MagicMock
    +        keyvault_client.key_vaults = {}
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.keyvault.keyvault_key_rotation_enabled.keyvault_key_rotation_enabled.keyvault_client",
    +            new=keyvault_client,
    +        ):
    +            from prowler.providers.azure.services.keyvault.keyvault_key_rotation_enabled.keyvault_key_rotation_enabled import (
    +                keyvault_key_rotation_enabled,
    +            )
    +
    +            check = keyvault_key_rotation_enabled()
    +            result = check.execute()
    +            assert len(result) == 0
    +
    +    def test_no_keys(self):
    +        keyvault_client = mock.MagicMock
    +        keyvault_client.key_vaults = {
    +            AZURE_SUBSCRIPTION: [
    +                KeyVaultInfo(
    +                    id="id",
    +                    name="name",
    +                    location="location",
    +                    resource_group="resource_group",
    +                    properties=VaultProperties(
    +                        tenant_id="tenantid", sku="sku", enable_rbac_authorization=False
    +                    ),
    +                    keys=[],
    +                    secrets=[],
    +                )
    +            ]
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.keyvault.keyvault_key_rotation_enabled.keyvault_key_rotation_enabled.keyvault_client",
    +            new=keyvault_client,
    +        ):
    +            from prowler.providers.azure.services.keyvault.keyvault_key_rotation_enabled.keyvault_key_rotation_enabled import (
    +                keyvault_key_rotation_enabled,
    +            )
    +
    +            check = keyvault_key_rotation_enabled()
    +            result = check.execute()
    +            assert len(result) == 0
    +
    +    def test_key_without_rotation_policy(self):
    +        keyvault_client = mock.MagicMock
    +        keyvault_name = "keyvault_name"
    +        key_name = "key_name"
    +        keyvault_client.key_vaults = {
    +            AZURE_SUBSCRIPTION: [
    +                KeyVaultInfo(
    +                    id="id",
    +                    name=keyvault_name,
    +                    location="location",
    +                    resource_group="resource_group",
    +                    properties=VaultProperties(
    +                        tenant_id="tenantid", sku="sku", enable_rbac_authorization=False
    +                    ),
    +                    keys=[
    +                        Key(
    +                            id="id",
    +                            name=key_name,
    +                            enabled=True,
    +                            location="location",
    +                            attributes=KeyAttributes(expires=None, enabled=True),
    +                            rotation_policy=None,
    +                        )
    +                    ],
    +                    secrets=[],
    +                )
    +            ]
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.keyvault.keyvault_key_rotation_enabled.keyvault_key_rotation_enabled.keyvault_client",
    +            new=keyvault_client,
    +        ):
    +            from prowler.providers.azure.services.keyvault.keyvault_key_rotation_enabled.keyvault_key_rotation_enabled import (
    +                keyvault_key_rotation_enabled,
    +            )
    +
    +            check = keyvault_key_rotation_enabled()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "FAIL"
    +            assert (
    +                result[0].status_extended
    +                == f"Keyvault {keyvault_name} from subscription {AZURE_SUBSCRIPTION} has the key {key_name} without rotation policy set."
    +            )
    +            assert result[0].resource_name == keyvault_name
    +            assert result[0].resource_id == "id"
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +
    +    def test_key_with_rotation_policy(self):
    +        keyvault_client = mock.MagicMock
    +        keyvault_name = "keyvault_name"
    +        key_name = "key_name"
    +        keyvault_client.key_vaults = {
    +            AZURE_SUBSCRIPTION: [
    +                KeyVaultInfo(
    +                    id="id",
    +                    name=keyvault_name,
    +                    location="location",
    +                    resource_group="resource_group",
    +                    properties=VaultProperties(
    +                        tenant_id="tenantid", sku="sku", enable_rbac_authorization=False
    +                    ),
    +                    keys=[
    +                        Key(
    +                            id="id",
    +                            name=key_name,
    +                            enabled=True,
    +                            location="location",
    +                            attributes=KeyAttributes(expires=None, enabled=True),
    +                            rotation_policy=KeyRotationPolicy(
    +                                lifetime_actions=[
    +                                    KeyRotationLifetimeAction(
    +                                        action="Rotate",
    +                                        lifetime_action_type="Rotate",
    +                                        lifetime_percentage=80,
    +                                    )
    +                                ]
    +                            ),
    +                        )
    +                    ],
    +                    secrets=[],
    +                )
    +            ]
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.keyvault.keyvault_key_rotation_enabled.keyvault_key_rotation_enabled.keyvault_client",
    +            new=keyvault_client,
    +        ):
    +            from prowler.providers.azure.services.keyvault.keyvault_key_rotation_enabled.keyvault_key_rotation_enabled import (
    +                keyvault_key_rotation_enabled,
    +            )
    +
    +            check = keyvault_key_rotation_enabled()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "PASS"
    +            assert (
    +                result[0].status_extended
    +                == f"Keyvault {keyvault_name} from subscription {AZURE_SUBSCRIPTION} has the key {key_name} with rotation policy set."
    +            )
    +            assert result[0].resource_name == keyvault_name
    +            assert result[0].resource_id == "id"
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    diff --git a/tests/providers/azure/services/keyvault/keyvault_non_rbac_secret_expiration_set/keyvault_non_rbac_secret_expiration_set_test.py b/tests/providers/azure/services/keyvault/keyvault_non_rbac_secret_expiration_set/keyvault_non_rbac_secret_expiration_set_test.py
    new file mode 100644
    index 00000000000..d13084cd22b
    --- /dev/null
    +++ b/tests/providers/azure/services/keyvault/keyvault_non_rbac_secret_expiration_set/keyvault_non_rbac_secret_expiration_set_test.py
    @@ -0,0 +1,210 @@
    +from unittest import mock
    +from uuid import uuid4
    +
    +from azure.mgmt.keyvault.v2023_07_01.models import SecretAttributes, VaultProperties
    +
    +from prowler.providers.azure.services.keyvault.keyvault_service import (
    +    KeyVaultInfo,
    +    Secret,
    +)
    +
    +AZURE_SUBSCRIPTION = str(uuid4())
    +
    +
    +class Test_keyvault_non_rbac_secret_expiration_set:
    +    def test_no_key_vaults(self):
    +        keyvault_client = mock.MagicMock
    +        keyvault_client.key_vaults = {}
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.keyvault.keyvault_non_rbac_secret_expiration_set.keyvault_non_rbac_secret_expiration_set.keyvault_client",
    +            new=keyvault_client,
    +        ):
    +            from prowler.providers.azure.services.keyvault.keyvault_non_rbac_secret_expiration_set.keyvault_non_rbac_secret_expiration_set import (
    +                keyvault_non_rbac_secret_expiration_set,
    +            )
    +
    +            check = keyvault_non_rbac_secret_expiration_set()
    +            result = check.execute()
    +            assert len(result) == 0
    +
    +    def test_no_secrets(self):
    +        keyvault_client = mock.MagicMock
    +        keyvault_client.key_vaults = {
    +            AZURE_SUBSCRIPTION: [
    +                KeyVaultInfo(
    +                    id="id",
    +                    name="name",
    +                    location="location",
    +                    resource_group="resource_group",
    +                    properties=VaultProperties(
    +                        tenant_id="tenantid", sku="sku", enable_rbac_authorization=False
    +                    ),
    +                    keys=[],
    +                    secrets=[],
    +                )
    +            ]
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.keyvault.keyvault_non_rbac_secret_expiration_set.keyvault_non_rbac_secret_expiration_set.keyvault_client",
    +            new=keyvault_client,
    +        ):
    +            from prowler.providers.azure.services.keyvault.keyvault_non_rbac_secret_expiration_set.keyvault_non_rbac_secret_expiration_set import (
    +                keyvault_non_rbac_secret_expiration_set,
    +            )
    +
    +            check = keyvault_non_rbac_secret_expiration_set()
    +            result = check.execute()
    +            assert len(result) == 0
    +
    +    def test_key_vaults_invalid_secrets(self):
    +        keyvault_client = mock.MagicMock
    +        keyvault_name = "Keyvault Name"
    +        keyvault_id = str(uuid4())
    +        secret_name = "Secret"
    +        secret = Secret(
    +            id="id",
    +            name=secret_name,
    +            enabled=True,
    +            location="location",
    +            attributes=SecretAttributes(expires=None, enabled=True),
    +        )
    +        keyvault_client.key_vaults = {
    +            AZURE_SUBSCRIPTION: [
    +                KeyVaultInfo(
    +                    id=keyvault_id,
    +                    name=keyvault_name,
    +                    location="location",
    +                    resource_group="resource_group",
    +                    properties=VaultProperties(
    +                        tenant_id="tenantid", sku="sku", enable_rbac_authorization=False
    +                    ),
    +                    keys=[],
    +                    secrets=[secret],
    +                )
    +            ]
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.keyvault.keyvault_non_rbac_secret_expiration_set.keyvault_non_rbac_secret_expiration_set.keyvault_client",
    +            new=keyvault_client,
    +        ):
    +            from prowler.providers.azure.services.keyvault.keyvault_non_rbac_secret_expiration_set.keyvault_non_rbac_secret_expiration_set import (
    +                keyvault_non_rbac_secret_expiration_set,
    +            )
    +
    +            check = keyvault_non_rbac_secret_expiration_set()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "FAIL"
    +            assert (
    +                result[0].status_extended
    +                == f"Keyvault {keyvault_name} from subscription {AZURE_SUBSCRIPTION} has the secret {secret_name} without expiration date set."
    +            )
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == keyvault_name
    +            assert result[0].resource_id == keyvault_id
    +
    +    def test_key_vaults_invalid_multiple_secrets(self):
    +        keyvault_client = mock.MagicMock
    +        keyvault_name = "Keyvault Name"
    +        keyvault_id = str(uuid4())
    +        secret1_name = "Secret1"
    +        secret2_name = "Secret2"
    +        secret1 = Secret(
    +            id="id",
    +            name=secret1_name,
    +            enabled=True,
    +            location="location",
    +            attributes=SecretAttributes(expires=None),
    +        )
    +        secret2 = Secret(
    +            id="id",
    +            name=secret2_name,
    +            enabled=True,
    +            location="location",
    +            attributes=SecretAttributes(expires=84934),
    +        )
    +        keyvault_client.key_vaults = {
    +            AZURE_SUBSCRIPTION: [
    +                KeyVaultInfo(
    +                    id=keyvault_id,
    +                    name=keyvault_name,
    +                    location="location",
    +                    resource_group="resource_group",
    +                    properties=VaultProperties(
    +                        tenant_id="tenantid", sku="sku", enable_rbac_authorization=False
    +                    ),
    +                    keys=[],
    +                    secrets=[secret1, secret2],
    +                )
    +            ]
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.keyvault.keyvault_non_rbac_secret_expiration_set.keyvault_non_rbac_secret_expiration_set.keyvault_client",
    +            new=keyvault_client,
    +        ):
    +            from prowler.providers.azure.services.keyvault.keyvault_non_rbac_secret_expiration_set.keyvault_non_rbac_secret_expiration_set import (
    +                keyvault_non_rbac_secret_expiration_set,
    +            )
    +
    +            check = keyvault_non_rbac_secret_expiration_set()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "FAIL"
    +            assert (
    +                result[0].status_extended
    +                == f"Keyvault {keyvault_name} from subscription {AZURE_SUBSCRIPTION} has the secret {secret1_name} without expiration date set."
    +            )
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == keyvault_name
    +            assert result[0].resource_id == keyvault_id
    +
    +    def test_key_vaults_valid_keys(self):
    +        keyvault_client = mock.MagicMock
    +        keyvault_name = "Keyvault Name"
    +        keyvault_id = str(uuid4())
    +        secret = Secret(
    +            id="id",
    +            name="name",
    +            enabled=False,
    +            location="location",
    +            attributes=SecretAttributes(expires=None),
    +        )
    +        keyvault_client.key_vaults = {
    +            AZURE_SUBSCRIPTION: [
    +                KeyVaultInfo(
    +                    id=keyvault_id,
    +                    name=keyvault_name,
    +                    location="location",
    +                    resource_group="resource_group",
    +                    properties=VaultProperties(
    +                        tenant_id="tenantid", sku="sku", enable_rbac_authorization=False
    +                    ),
    +                    keys=[],
    +                    secrets=[secret],
    +                )
    +            ]
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.keyvault.keyvault_non_rbac_secret_expiration_set.keyvault_non_rbac_secret_expiration_set.keyvault_client",
    +            new=keyvault_client,
    +        ):
    +            from prowler.providers.azure.services.keyvault.keyvault_non_rbac_secret_expiration_set.keyvault_non_rbac_secret_expiration_set import (
    +                keyvault_non_rbac_secret_expiration_set,
    +            )
    +
    +            check = keyvault_non_rbac_secret_expiration_set()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "PASS"
    +            assert (
    +                result[0].status_extended
    +                == f"Keyvault {keyvault_name} from subscription {AZURE_SUBSCRIPTION} has all the secrets with expiration date set."
    +            )
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == keyvault_name
    +            assert result[0].resource_id == keyvault_id
    diff --git a/tests/providers/azure/services/keyvault/keyvault_private_endpoints/keyvault_private_endpoints_test.py b/tests/providers/azure/services/keyvault/keyvault_private_endpoints/keyvault_private_endpoints_test.py
    new file mode 100644
    index 00000000000..fe74b7360ef
    --- /dev/null
    +++ b/tests/providers/azure/services/keyvault/keyvault_private_endpoints/keyvault_private_endpoints_test.py
    @@ -0,0 +1,121 @@
    +from unittest import mock
    +from uuid import uuid4
    +
    +from azure.mgmt.keyvault.v2023_07_01.models import (
    +    PrivateEndpointConnectionItem,
    +    VaultProperties,
    +)
    +
    +from prowler.providers.azure.services.keyvault.keyvault_service import KeyVaultInfo
    +
    +AZURE_SUBSCRIPTION = str(uuid4())
    +
    +
    +class Test_keyvault_private_endpoints:
    +    def test_no_key_vaults(self):
    +        keyvault_client = mock.MagicMock
    +        keyvault_client.key_vaults = {}
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.keyvault.keyvault_private_endpoints.keyvault_private_endpoints.keyvault_client",
    +            new=keyvault_client,
    +        ):
    +            from prowler.providers.azure.services.keyvault.keyvault_private_endpoints.keyvault_private_endpoints import (
    +                keyvault_private_endpoints,
    +            )
    +
    +            check = keyvault_private_endpoints()
    +            result = check.execute()
    +            assert len(result) == 0
    +
    +    def test_key_vaults_no_private_endpoints(self):
    +        keyvault_client = mock.MagicMock
    +        keyvault_name = "Keyvault Name"
    +        keyvault_id = str(uuid4())
    +        keyvault_client.key_vaults = {
    +            AZURE_SUBSCRIPTION: [
    +                KeyVaultInfo(
    +                    id=keyvault_id,
    +                    name=keyvault_name,
    +                    location="location",
    +                    resource_group="resource_group",
    +                    properties=VaultProperties(
    +                        tenant_id="tenantid",
    +                        sku="sku",
    +                        enable_rbac_authorization=False,
    +                        private_endpoint_connections=None,
    +                    ),
    +                    keys=[],
    +                    secrets=[],
    +                )
    +            ]
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.keyvault.keyvault_private_endpoints.keyvault_private_endpoints.keyvault_client",
    +            new=keyvault_client,
    +        ):
    +            from prowler.providers.azure.services.keyvault.keyvault_private_endpoints.keyvault_private_endpoints import (
    +                keyvault_private_endpoints,
    +            )
    +
    +            check = keyvault_private_endpoints()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "FAIL"
    +            assert (
    +                result[0].status_extended
    +                == f"Keyvault {keyvault_name} from subscription {AZURE_SUBSCRIPTION} is not using private endpoints."
    +            )
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == keyvault_name
    +            assert result[0].resource_id == keyvault_id
    +
    +    def test_key_vaults_using_private_endpoints(self):
    +        keyvault_client = mock.MagicMock
    +        keyvault_name = "Keyvault Name"
    +        keyvault_id = str(uuid4())
    +        private_endpoint = PrivateEndpointConnectionItem(
    +            id="id",
    +        )
    +        keyvault_client.key_vaults = {
    +            AZURE_SUBSCRIPTION: [
    +                KeyVaultInfo(
    +                    id=keyvault_id,
    +                    name=keyvault_name,
    +                    location="location",
    +                    resource_group="resource_group",
    +                    properties=VaultProperties(
    +                        tenant_id="tenantid",
    +                        sku="sku",
    +                        enable_rbac_authorization=True,
    +                    ),
    +                    keys=[],
    +                    secrets=[],
    +                )
    +            ]
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.keyvault.keyvault_private_endpoints.keyvault_private_endpoints.keyvault_client",
    +            new=keyvault_client,
    +        ):
    +            from prowler.providers.azure.services.keyvault.keyvault_private_endpoints.keyvault_private_endpoints import (
    +                keyvault_private_endpoints,
    +            )
    +
    +            keyvault_client.key_vaults[AZURE_SUBSCRIPTION][
    +                0
    +            ].properties.private_endpoint_connections = [private_endpoint]
    +
    +            check = keyvault_private_endpoints()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "PASS"
    +            assert (
    +                result[0].status_extended
    +                == f"Keyvault {keyvault_name} from subscription {AZURE_SUBSCRIPTION} is using private endpoints."
    +            )
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == keyvault_name
    +            assert result[0].resource_id == keyvault_id
    diff --git a/tests/providers/azure/services/keyvault/keyvault_rbac_enabled/keyvault_rbac_enabled_test.py b/tests/providers/azure/services/keyvault/keyvault_rbac_enabled/keyvault_rbac_enabled_test.py
    new file mode 100644
    index 00000000000..ad2817c55ee
    --- /dev/null
    +++ b/tests/providers/azure/services/keyvault/keyvault_rbac_enabled/keyvault_rbac_enabled_test.py
    @@ -0,0 +1,110 @@
    +from unittest import mock
    +from uuid import uuid4
    +
    +from azure.mgmt.keyvault.v2023_07_01.models import VaultProperties
    +
    +from prowler.providers.azure.services.keyvault.keyvault_service import KeyVaultInfo
    +
    +AZURE_SUBSCRIPTION = str(uuid4())
    +
    +
    +class Test_keyvault_rbac_enabled:
    +    def test_no_key_vaults(self):
    +        keyvault_client = mock.MagicMock
    +        keyvault_client.key_vaults = {}
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.keyvault.keyvault_rbac_enabled.keyvault_rbac_enabled.keyvault_client",
    +            new=keyvault_client,
    +        ):
    +            from prowler.providers.azure.services.keyvault.keyvault_rbac_enabled.keyvault_rbac_enabled import (
    +                keyvault_rbac_enabled,
    +            )
    +
    +            check = keyvault_rbac_enabled()
    +            result = check.execute()
    +            assert len(result) == 0
    +
    +    def test_key_vaults_no_rbac(self):
    +        keyvault_client = mock.MagicMock
    +        keyvault_name = "Keyvault Name"
    +        keyvault_id = str(uuid4())
    +        keyvault_client.key_vaults = {
    +            AZURE_SUBSCRIPTION: [
    +                KeyVaultInfo(
    +                    id=keyvault_id,
    +                    name=keyvault_name,
    +                    location="location",
    +                    resource_group="resource_group",
    +                    properties=VaultProperties(
    +                        tenant_id="tenantid",
    +                        sku="sku",
    +                        enable_rbac_authorization=False,
    +                    ),
    +                    keys=[],
    +                    secrets=[],
    +                )
    +            ]
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.keyvault.keyvault_rbac_enabled.keyvault_rbac_enabled.keyvault_client",
    +            new=keyvault_client,
    +        ):
    +            from prowler.providers.azure.services.keyvault.keyvault_rbac_enabled.keyvault_rbac_enabled import (
    +                keyvault_rbac_enabled,
    +            )
    +
    +            check = keyvault_rbac_enabled()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "FAIL"
    +            assert (
    +                result[0].status_extended
    +                == f"Keyvault {keyvault_name} from subscription {AZURE_SUBSCRIPTION} is not using RBAC for access control."
    +            )
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == keyvault_name
    +            assert result[0].resource_id == keyvault_id
    +
    +    def test_key_vaults_rbac(self):
    +        keyvault_client = mock.MagicMock
    +        keyvault_name = "Keyvault Name"
    +        keyvault_id = str(uuid4())
    +        keyvault_client.key_vaults = {
    +            AZURE_SUBSCRIPTION: [
    +                KeyVaultInfo(
    +                    id=keyvault_id,
    +                    name=keyvault_name,
    +                    location="location",
    +                    resource_group="resource_group",
    +                    properties=VaultProperties(
    +                        tenant_id="tenantid",
    +                        sku="sku",
    +                        enable_rbac_authorization=True,
    +                    ),
    +                    keys=[],
    +                    secrets=[],
    +                )
    +            ]
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.keyvault.keyvault_rbac_enabled.keyvault_rbac_enabled.keyvault_client",
    +            new=keyvault_client,
    +        ):
    +            from prowler.providers.azure.services.keyvault.keyvault_rbac_enabled.keyvault_rbac_enabled import (
    +                keyvault_rbac_enabled,
    +            )
    +
    +            check = keyvault_rbac_enabled()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "PASS"
    +            assert (
    +                result[0].status_extended
    +                == f"Keyvault {keyvault_name} from subscription {AZURE_SUBSCRIPTION} is using RBAC for access control."
    +            )
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == keyvault_name
    +            assert result[0].resource_id == keyvault_id
    diff --git a/tests/providers/azure/services/keyvault/keyvault_rbac_key_expiration_set/keyvault_rbac_key_expiration_set_test.py b/tests/providers/azure/services/keyvault/keyvault_rbac_key_expiration_set/keyvault_rbac_key_expiration_set_test.py
    new file mode 100644
    index 00000000000..7fc9c593403
    --- /dev/null
    +++ b/tests/providers/azure/services/keyvault/keyvault_rbac_key_expiration_set/keyvault_rbac_key_expiration_set_test.py
    @@ -0,0 +1,151 @@
    +from unittest import mock
    +from uuid import uuid4
    +
    +from azure.mgmt.keyvault.v2023_07_01.models import KeyAttributes, VaultProperties
    +
    +from prowler.providers.azure.services.keyvault.keyvault_service import Key, KeyVaultInfo
    +
    +AZURE_SUBSCRIPTION = str(uuid4())
    +
    +
    +class Test_keyvault_rbac_key_expiration_set:
    +    def test_no_key_vaults(self):
    +        keyvault_client = mock.MagicMock
    +        keyvault_client.key_vaults = {}
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.keyvault.keyvault_rbac_key_expiration_set.keyvault_rbac_key_expiration_set.keyvault_client",
    +            new=keyvault_client,
    +        ):
    +            from prowler.providers.azure.services.keyvault.keyvault_rbac_key_expiration_set.keyvault_rbac_key_expiration_set import (
    +                keyvault_rbac_key_expiration_set,
    +            )
    +
    +            check = keyvault_rbac_key_expiration_set()
    +            result = check.execute()
    +            assert len(result) == 0
    +
    +    def test_no_keys(self):
    +        keyvault_client = mock.MagicMock
    +        keyvault_client.key_vaults = {
    +            AZURE_SUBSCRIPTION: [
    +                KeyVaultInfo(
    +                    id="id",
    +                    name="name",
    +                    location="location",
    +                    resource_group="resource_group",
    +                    properties=VaultProperties(
    +                        tenant_id="tenantid", sku="sku", enable_rbac_authorization=True
    +                    ),
    +                    keys=[],
    +                    secrets=[],
    +                )
    +            ]
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.keyvault.keyvault_rbac_key_expiration_set.keyvault_rbac_key_expiration_set.keyvault_client",
    +            new=keyvault_client,
    +        ):
    +            from prowler.providers.azure.services.keyvault.keyvault_rbac_key_expiration_set.keyvault_rbac_key_expiration_set import (
    +                keyvault_rbac_key_expiration_set,
    +            )
    +
    +            check = keyvault_rbac_key_expiration_set()
    +            result = check.execute()
    +            assert len(result) == 0
    +
    +    def test_key_vaults_invalid_keys(self):
    +        keyvault_client = mock.MagicMock
    +        keyvault_name = "Keyvault Name"
    +        keyvault_id = str(uuid4())
    +        key_name = "Key Name"
    +        key = Key(
    +            id="id",
    +            name=key_name,
    +            enabled=True,
    +            location="location",
    +            attributes=KeyAttributes(expires=None, enabled=True),
    +        )
    +        keyvault_client.key_vaults = {
    +            AZURE_SUBSCRIPTION: [
    +                KeyVaultInfo(
    +                    id=keyvault_id,
    +                    name=keyvault_name,
    +                    location="location",
    +                    resource_group="resource_group",
    +                    properties=VaultProperties(
    +                        tenant_id="tenantid", sku="sku", enable_rbac_authorization=True
    +                    ),
    +                    keys=[key],
    +                    secrets=[],
    +                )
    +            ]
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.keyvault.keyvault_rbac_key_expiration_set.keyvault_rbac_key_expiration_set.keyvault_client",
    +            new=keyvault_client,
    +        ):
    +            from prowler.providers.azure.services.keyvault.keyvault_rbac_key_expiration_set.keyvault_rbac_key_expiration_set import (
    +                keyvault_rbac_key_expiration_set,
    +            )
    +
    +            check = keyvault_rbac_key_expiration_set()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "FAIL"
    +            assert (
    +                result[0].status_extended
    +                == f"Keyvault {keyvault_name} from subscription {AZURE_SUBSCRIPTION} has the key {key_name} without expiration date set."
    +            )
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == keyvault_name
    +            assert result[0].resource_id == keyvault_id
    +
    +    def test_key_vaults_valid_keys(self):
    +        keyvault_client = mock.MagicMock
    +        keyvault_name = "Keyvault Name"
    +        keyvault_id = str(uuid4())
    +        key = Key(
    +            id="id",
    +            name="name",
    +            enabled=True,
    +            location="location",
    +            attributes=KeyAttributes(expires=49394, enabled=True),
    +        )
    +        keyvault_client.key_vaults = {
    +            AZURE_SUBSCRIPTION: [
    +                KeyVaultInfo(
    +                    id=keyvault_id,
    +                    name=keyvault_name,
    +                    location="location",
    +                    resource_group="resource_group",
    +                    properties=VaultProperties(
    +                        tenant_id="tenantid", sku="sku", enable_rbac_authorization=True
    +                    ),
    +                    keys=[key],
    +                    secrets=[],
    +                )
    +            ]
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.keyvault.keyvault_rbac_key_expiration_set.keyvault_rbac_key_expiration_set.keyvault_client",
    +            new=keyvault_client,
    +        ):
    +            from prowler.providers.azure.services.keyvault.keyvault_rbac_key_expiration_set.keyvault_rbac_key_expiration_set import (
    +                keyvault_rbac_key_expiration_set,
    +            )
    +
    +            check = keyvault_rbac_key_expiration_set()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "PASS"
    +            assert (
    +                result[0].status_extended
    +                == f"Keyvault {keyvault_name} from subscription {AZURE_SUBSCRIPTION} has all the keys with expiration date set."
    +            )
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == keyvault_name
    +            assert result[0].resource_id == keyvault_id
    diff --git a/tests/providers/azure/services/keyvault/keyvault_rbac_secret_expiration_set/keyvault_rbac_secret_expiration_set_test.py b/tests/providers/azure/services/keyvault/keyvault_rbac_secret_expiration_set/keyvault_rbac_secret_expiration_set_test.py
    new file mode 100644
    index 00000000000..4a98b0e6001
    --- /dev/null
    +++ b/tests/providers/azure/services/keyvault/keyvault_rbac_secret_expiration_set/keyvault_rbac_secret_expiration_set_test.py
    @@ -0,0 +1,210 @@
    +from unittest import mock
    +from uuid import uuid4
    +
    +from azure.mgmt.keyvault.v2023_07_01.models import SecretAttributes, VaultProperties
    +
    +from prowler.providers.azure.services.keyvault.keyvault_service import (
    +    KeyVaultInfo,
    +    Secret,
    +)
    +
    +AZURE_SUBSCRIPTION = str(uuid4())
    +
    +
    +class Test_keyvault_rbac_secret_expiration_set:
    +    def test_no_key_vaults(self):
    +        keyvault_client = mock.MagicMock
    +        keyvault_client.key_vaults = {}
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.keyvault.keyvault_rbac_secret_expiration_set.keyvault_rbac_secret_expiration_set.keyvault_client",
    +            new=keyvault_client,
    +        ):
    +            from prowler.providers.azure.services.keyvault.keyvault_rbac_secret_expiration_set.keyvault_rbac_secret_expiration_set import (
    +                keyvault_rbac_secret_expiration_set,
    +            )
    +
    +            check = keyvault_rbac_secret_expiration_set()
    +            result = check.execute()
    +            assert len(result) == 0
    +
    +    def test_no_secrets(self):
    +        keyvault_client = mock.MagicMock
    +        keyvault_client.key_vaults = {
    +            AZURE_SUBSCRIPTION: [
    +                KeyVaultInfo(
    +                    id="id",
    +                    name="name",
    +                    location="location",
    +                    resource_group="resource_group",
    +                    properties=VaultProperties(
    +                        tenant_id="tenantid", sku="sku", enable_rbac_authorization=True
    +                    ),
    +                    keys=[],
    +                    secrets=[],
    +                )
    +            ]
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.keyvault.keyvault_rbac_secret_expiration_set.keyvault_rbac_secret_expiration_set.keyvault_client",
    +            new=keyvault_client,
    +        ):
    +            from prowler.providers.azure.services.keyvault.keyvault_rbac_secret_expiration_set.keyvault_rbac_secret_expiration_set import (
    +                keyvault_rbac_secret_expiration_set,
    +            )
    +
    +            check = keyvault_rbac_secret_expiration_set()
    +            result = check.execute()
    +            assert len(result) == 0
    +
    +    def test_key_vaults_invalid_secrets(self):
    +        keyvault_client = mock.MagicMock
    +        keyvault_name = "Keyvault Name"
    +        keyvault_id = str(uuid4())
    +        secret_name = "Secret"
    +        secret = Secret(
    +            id="id",
    +            name=secret_name,
    +            enabled=True,
    +            location="location",
    +            attributes=SecretAttributes(expires=None),
    +        )
    +        keyvault_client.key_vaults = {
    +            AZURE_SUBSCRIPTION: [
    +                KeyVaultInfo(
    +                    id=keyvault_id,
    +                    name=keyvault_name,
    +                    location="location",
    +                    resource_group="resource_group",
    +                    properties=VaultProperties(
    +                        tenant_id="tenantid", sku="sku", enable_rbac_authorization=True
    +                    ),
    +                    keys=[],
    +                    secrets=[secret],
    +                )
    +            ]
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.keyvault.keyvault_rbac_secret_expiration_set.keyvault_rbac_secret_expiration_set.keyvault_client",
    +            new=keyvault_client,
    +        ):
    +            from prowler.providers.azure.services.keyvault.keyvault_rbac_secret_expiration_set.keyvault_rbac_secret_expiration_set import (
    +                keyvault_rbac_secret_expiration_set,
    +            )
    +
    +            check = keyvault_rbac_secret_expiration_set()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "FAIL"
    +            assert (
    +                result[0].status_extended
    +                == f"Keyvault {keyvault_name} from subscription {AZURE_SUBSCRIPTION} has the secret {secret_name} without expiration date set."
    +            )
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == keyvault_name
    +            assert result[0].resource_id == keyvault_id
    +
    +    def test_key_vaults_invalid_multiple_secrets(self):
    +        keyvault_client = mock.MagicMock
    +        keyvault_name = "Keyvault Name"
    +        keyvault_id = str(uuid4())
    +        secret1_name = "Secret1"
    +        secret2_name = "Secret2"
    +        secret1 = Secret(
    +            id="id",
    +            name=secret1_name,
    +            enabled=True,
    +            location="location",
    +            attributes=SecretAttributes(expires=None),
    +        )
    +        secret2 = Secret(
    +            id="id",
    +            name=secret2_name,
    +            enabled=True,
    +            location="location",
    +            attributes=SecretAttributes(expires=84934),
    +        )
    +        keyvault_client.key_vaults = {
    +            AZURE_SUBSCRIPTION: [
    +                KeyVaultInfo(
    +                    id=keyvault_id,
    +                    name=keyvault_name,
    +                    location="location",
    +                    resource_group="resource_group",
    +                    properties=VaultProperties(
    +                        tenant_id="tenantid", sku="sku", enable_rbac_authorization=True
    +                    ),
    +                    keys=[],
    +                    secrets=[secret1, secret2],
    +                )
    +            ]
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.keyvault.keyvault_rbac_secret_expiration_set.keyvault_rbac_secret_expiration_set.keyvault_client",
    +            new=keyvault_client,
    +        ):
    +            from prowler.providers.azure.services.keyvault.keyvault_rbac_secret_expiration_set.keyvault_rbac_secret_expiration_set import (
    +                keyvault_rbac_secret_expiration_set,
    +            )
    +
    +            check = keyvault_rbac_secret_expiration_set()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "FAIL"
    +            assert (
    +                result[0].status_extended
    +                == f"Keyvault {keyvault_name} from subscription {AZURE_SUBSCRIPTION} has the secret {secret1_name} without expiration date set."
    +            )
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == keyvault_name
    +            assert result[0].resource_id == keyvault_id
    +
    +    def test_key_vaults_valid_keys(self):
    +        keyvault_client = mock.MagicMock
    +        keyvault_name = "Keyvault Name"
    +        keyvault_id = str(uuid4())
    +        secret = Secret(
    +            id="id",
    +            name="name",
    +            enabled=False,
    +            location="location",
    +            attributes=SecretAttributes(expires=None),
    +        )
    +        keyvault_client.key_vaults = {
    +            AZURE_SUBSCRIPTION: [
    +                KeyVaultInfo(
    +                    id=keyvault_id,
    +                    name=keyvault_name,
    +                    location="location",
    +                    resource_group="resource_group",
    +                    properties=VaultProperties(
    +                        tenant_id="tenantid", sku="sku", enable_rbac_authorization=True
    +                    ),
    +                    keys=[],
    +                    secrets=[secret],
    +                )
    +            ]
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.keyvault.keyvault_rbac_secret_expiration_set.keyvault_rbac_secret_expiration_set.keyvault_client",
    +            new=keyvault_client,
    +        ):
    +            from prowler.providers.azure.services.keyvault.keyvault_rbac_secret_expiration_set.keyvault_rbac_secret_expiration_set import (
    +                keyvault_rbac_secret_expiration_set,
    +            )
    +
    +            check = keyvault_rbac_secret_expiration_set()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "PASS"
    +            assert (
    +                result[0].status_extended
    +                == f"Keyvault {keyvault_name} from subscription {AZURE_SUBSCRIPTION} has all the secrets with expiration date set."
    +            )
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == keyvault_name
    +            assert result[0].resource_id == keyvault_id
    diff --git a/tests/providers/azure/services/keyvault/keyvault_recoverable/keyvault_recoverable_test.py b/tests/providers/azure/services/keyvault/keyvault_recoverable/keyvault_recoverable_test.py
    new file mode 100644
    index 00000000000..3f210d7eb92
    --- /dev/null
    +++ b/tests/providers/azure/services/keyvault/keyvault_recoverable/keyvault_recoverable_test.py
    @@ -0,0 +1,182 @@
    +from unittest import mock
    +from uuid import uuid4
    +
    +from azure.mgmt.keyvault.v2023_07_01.models import SecretAttributes, VaultProperties
    +
    +from prowler.providers.azure.services.keyvault.keyvault_service import (
    +    KeyVaultInfo,
    +    Secret,
    +)
    +
    +AZURE_SUBSCRIPTION = str(uuid4())
    +
    +
    +class Test_keyvault_recoverable:
    +    def test_no_key_vaults(self):
    +        keyvault_client = mock.MagicMock
    +        keyvault_client.key_vaults = {}
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.keyvault.keyvault_recoverable.keyvault_recoverable.keyvault_client",
    +            new=keyvault_client,
    +        ):
    +            from prowler.providers.azure.services.keyvault.keyvault_recoverable.keyvault_recoverable import (
    +                keyvault_recoverable,
    +            )
    +
    +            check = keyvault_recoverable()
    +            result = check.execute()
    +            assert len(result) == 0
    +
    +    def test_key_vaults_no_purge(self):
    +        keyvault_client = mock.MagicMock
    +        keyvault_name = "Keyvault Name"
    +        keyvault_id = str(uuid4())
    +        keyvault_client.key_vaults = {
    +            AZURE_SUBSCRIPTION: [
    +                KeyVaultInfo(
    +                    id=keyvault_id,
    +                    name=keyvault_name,
    +                    location="location",
    +                    resource_group="resource_group",
    +                    properties=VaultProperties(
    +                        tenant_id="tenantid",
    +                        sku="sku",
    +                        enable_rbac_authorization=True,
    +                        enable_soft_delete=True,
    +                        enable_purge_protection=False,
    +                    ),
    +                    keys=[],
    +                    secrets=[],
    +                )
    +            ]
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.keyvault.keyvault_recoverable.keyvault_recoverable.keyvault_client",
    +            new=keyvault_client,
    +        ):
    +            from prowler.providers.azure.services.keyvault.keyvault_recoverable.keyvault_recoverable import (
    +                keyvault_recoverable,
    +            )
    +
    +            check = keyvault_recoverable()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "FAIL"
    +            assert (
    +                result[0].status_extended
    +                == f"Keyvault {keyvault_name} from subscription {AZURE_SUBSCRIPTION} is not recoverable."
    +            )
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == keyvault_name
    +            assert result[0].resource_id == keyvault_id
    +
    +    def test_key_vaults_no_soft_delete(self):
    +        keyvault_client = mock.MagicMock
    +        keyvault_name = "Keyvault Name"
    +        keyvault_id = str(uuid4())
    +        secret1 = Secret(
    +            id="id",
    +            name="name",
    +            enabled=True,
    +            location="location",
    +            attributes=SecretAttributes(expires=None, enabled=True),
    +        )
    +        secret2 = Secret(
    +            id="id",
    +            name="name",
    +            enabled=True,
    +            location="location",
    +            attributes=SecretAttributes(expires=84934, enabled=True),
    +        )
    +        keyvault_client.key_vaults = {
    +            AZURE_SUBSCRIPTION: [
    +                KeyVaultInfo(
    +                    id=keyvault_id,
    +                    name=keyvault_name,
    +                    location="location",
    +                    resource_group="resource_group",
    +                    properties=VaultProperties(
    +                        tenant_id="tenantid",
    +                        sku="sku",
    +                        enable_rbac_authorization=True,
    +                        enable_soft_delete=True,
    +                        enable_purge_protection=False,
    +                    ),
    +                    keys=[],
    +                    secrets=[secret1, secret2],
    +                )
    +            ]
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.keyvault.keyvault_recoverable.keyvault_recoverable.keyvault_client",
    +            new=keyvault_client,
    +        ):
    +            from prowler.providers.azure.services.keyvault.keyvault_recoverable.keyvault_recoverable import (
    +                keyvault_recoverable,
    +            )
    +
    +            check = keyvault_recoverable()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "FAIL"
    +            assert (
    +                result[0].status_extended
    +                == f"Keyvault {keyvault_name} from subscription {AZURE_SUBSCRIPTION} is not recoverable."
    +            )
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == keyvault_name
    +            assert result[0].resource_id == keyvault_id
    +
    +    def test_key_vaults_valid_configuration(self):
    +        keyvault_client = mock.MagicMock
    +        keyvault_name = "Keyvault Name"
    +        keyvault_id = str(uuid4())
    +        secret = Secret(
    +            id="id",
    +            name="name",
    +            enabled=True,
    +            location="location",
    +            attributes=SecretAttributes(expires=None, enabled=False),
    +        )
    +        keyvault_client.key_vaults = {
    +            AZURE_SUBSCRIPTION: [
    +                KeyVaultInfo(
    +                    id=keyvault_id,
    +                    name=keyvault_name,
    +                    location="location",
    +                    resource_group="resource_group",
    +                    properties=VaultProperties(
    +                        tenant_id="tenantid",
    +                        sku="sku",
    +                        enable_rbac_authorization=True,
    +                        enable_soft_delete=True,
    +                        enable_purge_protection=True,
    +                    ),
    +                    keys=[],
    +                    secrets=[secret],
    +                )
    +            ]
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.keyvault.keyvault_recoverable.keyvault_recoverable.keyvault_client",
    +            new=keyvault_client,
    +        ):
    +            from prowler.providers.azure.services.keyvault.keyvault_recoverable.keyvault_recoverable import (
    +                keyvault_recoverable,
    +            )
    +
    +            check = keyvault_recoverable()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "PASS"
    +            assert (
    +                result[0].status_extended
    +                == f"Keyvault {keyvault_name} from subscription {AZURE_SUBSCRIPTION} is recoverable."
    +            )
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == keyvault_name
    +            assert result[0].resource_id == keyvault_id
    diff --git a/tests/providers/azure/services/keyvault/keyvault_service_test.py b/tests/providers/azure/services/keyvault/keyvault_service_test.py
    new file mode 100644
    index 00000000000..768d43aa7f9
    --- /dev/null
    +++ b/tests/providers/azure/services/keyvault/keyvault_service_test.py
    @@ -0,0 +1,99 @@
    +from unittest.mock import patch
    +
    +from prowler.providers.azure.services.keyvault.keyvault_service import (
    +    Key,
    +    KeyVault,
    +    KeyVaultInfo,
    +    Secret,
    +)
    +from tests.providers.azure.azure_fixtures import (
    +    AZURE_SUBSCRIPTION,
    +    set_mocked_azure_audit_info,
    +)
    +
    +
    +def mock_keyvault_get_key_vaults(_, __):
    +    keyvault_info = KeyVaultInfo(
    +        id="id",
    +        name="name",
    +        location="location",
    +        resource_group="resource_group",
    +        properties=None,
    +        keys=[
    +            Key(
    +                id="id",
    +                name="name",
    +                enabled=True,
    +                location="location",
    +                attributes=None,
    +                rotation_policy=None,
    +            )
    +        ],
    +        secrets=[
    +            Secret(
    +                id="id",
    +                name="name",
    +                enabled=True,
    +                location="location",
    +                attributes=None,
    +            )
    +        ],
    +    )
    +    return {AZURE_SUBSCRIPTION: [keyvault_info]}
    +
    +
    +@patch(
    +    "prowler.providers.azure.services.keyvault.keyvault_service.KeyVault.__get_key_vaults__",
    +    new=mock_keyvault_get_key_vaults,
    +)
    +class Test_keyvault_service:
    +    def test__get_client__(self):
    +        keyvault = KeyVault(set_mocked_azure_audit_info())
    +        assert (
    +            keyvault.clients[AZURE_SUBSCRIPTION].__class__.__name__
    +            == "KeyVaultManagementClient"
    +        )
    +
    +    def test__get_key_vaults__(self):
    +        keyvault = KeyVault(set_mocked_azure_audit_info())
    +        assert (
    +            keyvault.key_vaults[AZURE_SUBSCRIPTION][0].__class__.__name__
    +            == "KeyVaultInfo"
    +        )
    +        assert keyvault.key_vaults[AZURE_SUBSCRIPTION][0].id == "id"
    +        assert keyvault.key_vaults[AZURE_SUBSCRIPTION][0].name == "name"
    +        assert keyvault.key_vaults[AZURE_SUBSCRIPTION][0].location == "location"
    +        assert (
    +            keyvault.key_vaults[AZURE_SUBSCRIPTION][0].resource_group
    +            == "resource_group"
    +        )
    +        assert keyvault.key_vaults[AZURE_SUBSCRIPTION][0].properties is None
    +
    +    def test__get_keys__(self):
    +        keyvault = KeyVault(set_mocked_azure_audit_info())
    +        assert (
    +            keyvault.key_vaults[AZURE_SUBSCRIPTION][0].keys[0].__class__.__name__
    +            == "Key"
    +        )
    +        assert keyvault.key_vaults[AZURE_SUBSCRIPTION][0].keys[0].id == "id"
    +        assert keyvault.key_vaults[AZURE_SUBSCRIPTION][0].keys[0].name == "name"
    +        assert keyvault.key_vaults[AZURE_SUBSCRIPTION][0].keys[0].enabled is True
    +        assert keyvault.key_vaults[AZURE_SUBSCRIPTION][0].keys[0].location == "location"
    +        assert keyvault.key_vaults[AZURE_SUBSCRIPTION][0].keys[0].attributes is None
    +        assert (
    +            keyvault.key_vaults[AZURE_SUBSCRIPTION][0].keys[0].rotation_policy is None
    +        )
    +
    +    def test__get_secrets__(self):
    +        keyvault = KeyVault(set_mocked_azure_audit_info())
    +        assert (
    +            keyvault.key_vaults[AZURE_SUBSCRIPTION][0].secrets[0].__class__.__name__
    +            == "Secret"
    +        )
    +        assert keyvault.key_vaults[AZURE_SUBSCRIPTION][0].secrets[0].id == "id"
    +        assert keyvault.key_vaults[AZURE_SUBSCRIPTION][0].secrets[0].name == "name"
    +        assert keyvault.key_vaults[AZURE_SUBSCRIPTION][0].secrets[0].enabled is True
    +        assert (
    +            keyvault.key_vaults[AZURE_SUBSCRIPTION][0].secrets[0].location == "location"
    +        )
    +        assert keyvault.key_vaults[AZURE_SUBSCRIPTION][0].secrets[0].attributes is None
    diff --git a/tests/providers/azure/services/monitor/monitor_diagnostic_setting_with_appropriate_categories/monitor_diagnostic_setting_with_appropriate_categories_test.py b/tests/providers/azure/services/monitor/monitor_diagnostic_setting_with_appropriate_categories/monitor_diagnostic_setting_with_appropriate_categories_test.py
    new file mode 100644
    index 00000000000..047e8cd20e4
    --- /dev/null
    +++ b/tests/providers/azure/services/monitor/monitor_diagnostic_setting_with_appropriate_categories/monitor_diagnostic_setting_with_appropriate_categories_test.py
    @@ -0,0 +1,103 @@
    +from unittest import mock
    +
    +from prowler.providers.azure.services.monitor.monitor_service import DiagnosticSetting
    +from tests.providers.azure.azure_fixtures import AZURE_SUBSCRIPTION
    +
    +
    +class Test_monitor_diagnostic_setting_with_appropriate_categories:
    +    def test_monitor_diagnostic_setting_with_appropriate_categories_no_subscriptions(
    +        self,
    +    ):
    +        monitor_client = mock.MagicMock
    +        monitor_client.diagnostics_settings = {}
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.monitor.monitor_diagnostic_setting_with_appropriate_categories.monitor_diagnostic_setting_with_appropriate_categories.monitor_client",
    +            new=monitor_client,
    +        ):
    +
    +            from prowler.providers.azure.services.monitor.monitor_diagnostic_setting_with_appropriate_categories.monitor_diagnostic_setting_with_appropriate_categories import (
    +                monitor_diagnostic_setting_with_appropriate_categories,
    +            )
    +
    +            check = monitor_diagnostic_setting_with_appropriate_categories()
    +            result = check.execute()
    +            assert len(result) == 0
    +
    +    def test_no_diagnostic_settings(self):
    +        monitor_client = mock.MagicMock
    +        monitor_client.diagnostics_settings = {AZURE_SUBSCRIPTION: []}
    +        with mock.patch(
    +            "prowler.providers.azure.services.monitor.monitor_diagnostic_setting_with_appropriate_categories.monitor_diagnostic_setting_with_appropriate_categories.monitor_client",
    +            new=monitor_client,
    +        ):
    +            from prowler.providers.azure.services.monitor.monitor_diagnostic_setting_with_appropriate_categories.monitor_diagnostic_setting_with_appropriate_categories import (
    +                monitor_diagnostic_setting_with_appropriate_categories,
    +            )
    +
    +            check = monitor_diagnostic_setting_with_appropriate_categories()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].status == "FAIL"
    +            assert result[0].resource_id == "Monitor"
    +            assert result[0].resource_name == "Monitor"
    +            assert (
    +                result[0].status_extended
    +                == f"There are no diagnostic settings capturing appropiate categories in subscription {AZURE_SUBSCRIPTION}."
    +            )
    +
    +    def test_diagnostic_settings_configured(self):
    +        monitor_client = mock.MagicMock
    +        monitor_client.diagnostics_settings = {
    +            AZURE_SUBSCRIPTION: [
    +                DiagnosticSetting(
    +                    id="id",
    +                    logs=[
    +                        mock.MagicMock(category="Administrative", enabled=True),
    +                        mock.MagicMock(category="Security", enabled=True),
    +                        mock.MagicMock(category="ServiceHealth", enabled=False),
    +                        mock.MagicMock(category="Alert", enabled=True),
    +                        mock.MagicMock(category="Recommendation", enabled=False),
    +                        mock.MagicMock(category="Policy", enabled=True),
    +                        mock.MagicMock(category="Autoscale", enabled=False),
    +                        mock.MagicMock(category="ResourceHealth", enabled=False),
    +                    ],
    +                    storage_account_id="/subscriptions/1234a5-123a-123a-123a-1234567890ab/resourceGroups/rg/providers/Microsoft.Storage/storageAccounts/storageaccountname",
    +                ),
    +                DiagnosticSetting(
    +                    id="id2",
    +                    logs=[
    +                        mock.MagicMock(category="Administrative", enabled=False),
    +                        mock.MagicMock(category="Security", enabled=True),
    +                        mock.MagicMock(category="ServiceHealth", enabled=False),
    +                        mock.MagicMock(category="Alert", enabled=True),
    +                        mock.MagicMock(category="Recommendation", enabled=False),
    +                        mock.MagicMock(category="Policy", enabled=True),
    +                        mock.MagicMock(category="Autoscale", enabled=False),
    +                        mock.MagicMock(category="ResourceHealth", enabled=False),
    +                    ],
    +                    storage_account_id="/subscriptions/1224a5-123a-123a-123a-1234567890ab/resourceGroups/rg/providers/Microsoft.Storage/storageAccounts/storageaccountname",
    +                ),
    +            ]
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.monitor.monitor_diagnostic_setting_with_appropriate_categories.monitor_diagnostic_setting_with_appropriate_categories.monitor_client",
    +            new=monitor_client,
    +        ):
    +            from prowler.providers.azure.services.monitor.monitor_diagnostic_setting_with_appropriate_categories.monitor_diagnostic_setting_with_appropriate_categories import (
    +                monitor_diagnostic_setting_with_appropriate_categories,
    +            )
    +
    +            check = monitor_diagnostic_setting_with_appropriate_categories()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].status == "PASS"
    +            assert result[0].resource_id == "Monitor"
    +            assert result[0].resource_name == "Monitor"
    +            assert (
    +                result[0].status_extended
    +                == f"There is at least one diagnostic setting capturing appropiate categories in subscription {AZURE_SUBSCRIPTION}."
    +            )
    diff --git a/tests/providers/azure/services/monitor/monitor_service_test.py b/tests/providers/azure/services/monitor/monitor_service_test.py
    new file mode 100644
    index 00000000000..ee935ca1442
    --- /dev/null
    +++ b/tests/providers/azure/services/monitor/monitor_service_test.py
    @@ -0,0 +1,102 @@
    +from unittest import mock
    +from unittest.mock import patch
    +
    +from prowler.providers.azure.services.monitor.monitor_service import (
    +    DiagnosticSetting,
    +    Monitor,
    +)
    +from tests.providers.azure.azure_fixtures import (
    +    AZURE_SUBSCRIPTION,
    +    set_mocked_azure_audit_info,
    +)
    +
    +
    +def mock_monitor_get_diagnostics_settings(_):
    +    return {
    +        AZURE_SUBSCRIPTION: [
    +            DiagnosticSetting(
    +                id="id",
    +                logs=[
    +                    mock.MagicMock(category="Administrative", enabled=True),
    +                    mock.MagicMock(category="Security", enabled=True),
    +                    mock.MagicMock(category="ServiceHealth", enabled=False),
    +                    mock.MagicMock(category="Alert", enabled=True),
    +                    mock.MagicMock(category="Recommendation", enabled=False),
    +                    mock.MagicMock(category="Policy", enabled=True),
    +                    mock.MagicMock(category="Autoscale", enabled=False),
    +                    mock.MagicMock(category="ResourceHealth", enabled=False),
    +                ],
    +                storage_account_id="/subscriptions/1234a5-123a-123a-123a-1234567890ab/resourceGroups/rg/providers/Microsoft.Storage/storageAccounts/storageaccountname",
    +            )
    +        ]
    +    }
    +
    +
    +@patch(
    +    "prowler.providers.azure.services.monitor.monitor_service.Monitor.__get_diagnostics_settings__",
    +    new=mock_monitor_get_diagnostics_settings,
    +)
    +class Test_Monitor_Service:
    +    def test__get_client__(self):
    +        monitor = Monitor(set_mocked_azure_audit_info())
    +        assert (
    +            monitor.clients[AZURE_SUBSCRIPTION].__class__.__name__
    +            == "MonitorManagementClient"
    +        )
    +
    +    def test__get_subscriptions__(self):
    +        monitor = Monitor(set_mocked_azure_audit_info())
    +        assert monitor.subscriptions.__class__.__name__ == "dict"
    +
    +    def test__get_diagnostics_settings(self):
    +        monitor = Monitor(set_mocked_azure_audit_info())
    +        assert len(monitor.diagnostics_settings) == 1
    +        assert monitor.diagnostics_settings[AZURE_SUBSCRIPTION][0].id == "id"
    +        assert (
    +            monitor.diagnostics_settings[AZURE_SUBSCRIPTION][0].logs[0].enabled is True
    +        )
    +        assert (
    +            monitor.diagnostics_settings[AZURE_SUBSCRIPTION][0].logs[0].category
    +            == "Administrative"
    +        )
    +        assert (
    +            monitor.diagnostics_settings[AZURE_SUBSCRIPTION][0].logs[1].enabled is True
    +        )
    +        assert (
    +            monitor.diagnostics_settings[AZURE_SUBSCRIPTION][0].logs[1].category
    +            == "Security"
    +        )
    +        assert (
    +            monitor.diagnostics_settings[AZURE_SUBSCRIPTION][0].logs[2].category
    +            == "ServiceHealth"
    +        )
    +        assert (
    +            monitor.diagnostics_settings[AZURE_SUBSCRIPTION][0].logs[3].enabled is True
    +        )
    +        assert (
    +            monitor.diagnostics_settings[AZURE_SUBSCRIPTION][0].logs[3].category
    +            == "Alert"
    +        )
    +        assert (
    +            monitor.diagnostics_settings[AZURE_SUBSCRIPTION][0].logs[4].category
    +            == "Recommendation"
    +        )
    +        assert (
    +            monitor.diagnostics_settings[AZURE_SUBSCRIPTION][0].logs[5].enabled is True
    +        )
    +        assert (
    +            monitor.diagnostics_settings[AZURE_SUBSCRIPTION][0].logs[5].category
    +            == "Policy"
    +        )
    +        assert (
    +            monitor.diagnostics_settings[AZURE_SUBSCRIPTION][0].logs[6].category
    +            == "Autoscale"
    +        )
    +        assert (
    +            monitor.diagnostics_settings[AZURE_SUBSCRIPTION][0].logs[7].category
    +            == "ResourceHealth"
    +        )
    +        assert (
    +            monitor.diagnostics_settings[AZURE_SUBSCRIPTION][0].storage_account_id
    +            == "/subscriptions/1234a5-123a-123a-123a-1234567890ab/resourceGroups/rg/providers/Microsoft.Storage/storageAccounts/storageaccountname"
    +        )
    diff --git a/tests/providers/azure/services/mysql/mysql_flexible_server_audit_log_connection_activated/mysql_flexible_server_audit_log_connection_activated_test.py b/tests/providers/azure/services/mysql/mysql_flexible_server_audit_log_connection_activated/mysql_flexible_server_audit_log_connection_activated_test.py
    new file mode 100644
    index 00000000000..91b3096f3a1
    --- /dev/null
    +++ b/tests/providers/azure/services/mysql/mysql_flexible_server_audit_log_connection_activated/mysql_flexible_server_audit_log_connection_activated_test.py
    @@ -0,0 +1,171 @@
    +from unittest import mock
    +from uuid import uuid4
    +
    +from prowler.providers.azure.services.mysql.mysql_service import (
    +    Configuration,
    +    FlexibleServer,
    +)
    +from tests.providers.azure.azure_fixtures import AZURE_SUBSCRIPTION
    +
    +
    +class Test_mysql_flexible_server_audit_log_connection_activated:
    +    def test_mysql_no_subscriptions(self):
    +        mysql_client = mock.MagicMock
    +        mysql_client.flexible_servers = {}
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.mysql.mysql_flexible_server_audit_log_connection_activated.mysql_flexible_server_audit_log_connection_activated.mysql_client",
    +            new=mysql_client,
    +        ):
    +            from prowler.providers.azure.services.mysql.mysql_flexible_server_audit_log_connection_activated.mysql_flexible_server_audit_log_connection_activated import (
    +                mysql_flexible_server_audit_log_connection_activated,
    +            )
    +
    +            check = mysql_flexible_server_audit_log_connection_activated()
    +            result = check.execute()
    +            assert len(result) == 0
    +
    +    def test_mysql_no_servers(self):
    +        mysql_client = mock.MagicMock
    +        mysql_client.flexible_servers = {AZURE_SUBSCRIPTION: {}}
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.mysql.mysql_flexible_server_audit_log_connection_activated.mysql_flexible_server_audit_log_connection_activated.mysql_client",
    +            new=mysql_client,
    +        ):
    +            from prowler.providers.azure.services.mysql.mysql_flexible_server_audit_log_connection_activated.mysql_flexible_server_audit_log_connection_activated import (
    +                mysql_flexible_server_audit_log_connection_activated,
    +            )
    +
    +            check = mysql_flexible_server_audit_log_connection_activated()
    +            result = check.execute()
    +            assert len(result) == 0
    +
    +    def test_mysql_audit_log_connection_not_connection(self):
    +        server_name = str(uuid4())
    +        mysql_client = mock.MagicMock
    +        mysql_client.flexible_servers = {
    +            AZURE_SUBSCRIPTION: {
    +                server_name: FlexibleServer(
    +                    resource_id="/subscriptions/resource_id",
    +                    location="location",
    +                    version="version",
    +                    configurations={
    +                        "audit_log_events": Configuration(
    +                            resource_id=f"/subscriptions/{server_name}/configurations/audit_log_events",
    +                            description="description",
    +                            value="ADMIN,DDL",
    +                        )
    +                    },
    +                )
    +            }
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.mysql.mysql_flexible_server_audit_log_connection_activated.mysql_flexible_server_audit_log_connection_activated.mysql_client",
    +            new=mysql_client,
    +        ):
    +            from prowler.providers.azure.services.mysql.mysql_flexible_server_audit_log_connection_activated.mysql_flexible_server_audit_log_connection_activated import (
    +                mysql_flexible_server_audit_log_connection_activated,
    +            )
    +
    +            check = mysql_flexible_server_audit_log_connection_activated()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "FAIL"
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == server_name
    +            assert (
    +                result[0].resource_id
    +                == f"/subscriptions/{server_name}/configurations/audit_log_events"
    +            )
    +            assert (
    +                result[0].status_extended
    +                == f"Audit log is disabled for server {server_name} in subscription {AZURE_SUBSCRIPTION}."
    +            )
    +
    +    def test_mysql_audit_log_connection_activated(self):
    +        server_name = str(uuid4())
    +        mysql_client = mock.MagicMock
    +        mysql_client.flexible_servers = {
    +            AZURE_SUBSCRIPTION: {
    +                server_name: FlexibleServer(
    +                    resource_id="/subscriptions/resource_id",
    +                    location="location",
    +                    version="version",
    +                    configurations={
    +                        "audit_log_events": Configuration(
    +                            resource_id=f"/subscriptions/{server_name}/configurations/audit_log_events",
    +                            description="description",
    +                            value="CONNECTION",
    +                        )
    +                    },
    +                )
    +            }
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.mysql.mysql_flexible_server_audit_log_connection_activated.mysql_flexible_server_audit_log_connection_activated.mysql_client",
    +            new=mysql_client,
    +        ):
    +            from prowler.providers.azure.services.mysql.mysql_flexible_server_audit_log_connection_activated.mysql_flexible_server_audit_log_connection_activated import (
    +                mysql_flexible_server_audit_log_connection_activated,
    +            )
    +
    +            check = mysql_flexible_server_audit_log_connection_activated()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "PASS"
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == server_name
    +            assert (
    +                result[0].resource_id
    +                == f"/subscriptions/{server_name}/configurations/audit_log_events"
    +            )
    +            assert (
    +                result[0].status_extended
    +                == f"Audit log is enabled for server {server_name} in subscription {AZURE_SUBSCRIPTION}."
    +            )
    +
    +    def test_mysql_audit_log_connection_activated_with_other_options(self):
    +        server_name = str(uuid4())
    +        mysql_client = mock.MagicMock
    +        mysql_client.flexible_servers = {
    +            AZURE_SUBSCRIPTION: {
    +                server_name: FlexibleServer(
    +                    resource_id="/subscriptions/resource_id",
    +                    location="location",
    +                    version="version",
    +                    configurations={
    +                        "audit_log_events": Configuration(
    +                            resource_id=f"/subscriptions/{server_name}/configurations/audit_log_events",
    +                            description="description",
    +                            value="ADMIN,GENERAL,CONNECTION,DDL",
    +                        )
    +                    },
    +                )
    +            }
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.mysql.mysql_flexible_server_audit_log_connection_activated.mysql_flexible_server_audit_log_connection_activated.mysql_client",
    +            new=mysql_client,
    +        ):
    +            from prowler.providers.azure.services.mysql.mysql_flexible_server_audit_log_connection_activated.mysql_flexible_server_audit_log_connection_activated import (
    +                mysql_flexible_server_audit_log_connection_activated,
    +            )
    +
    +            check = mysql_flexible_server_audit_log_connection_activated()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "PASS"
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == server_name
    +            assert (
    +                result[0].resource_id
    +                == f"/subscriptions/{server_name}/configurations/audit_log_events"
    +            )
    +            assert (
    +                result[0].status_extended
    +                == f"Audit log is enabled for server {server_name} in subscription {AZURE_SUBSCRIPTION}."
    +            )
    diff --git a/tests/providers/azure/services/mysql/mysql_flexible_server_audit_log_enabled/mysql_flexible_server_audit_log_enabled_test.py b/tests/providers/azure/services/mysql/mysql_flexible_server_audit_log_enabled/mysql_flexible_server_audit_log_enabled_test.py
    new file mode 100644
    index 00000000000..7ae19929328
    --- /dev/null
    +++ b/tests/providers/azure/services/mysql/mysql_flexible_server_audit_log_enabled/mysql_flexible_server_audit_log_enabled_test.py
    @@ -0,0 +1,128 @@
    +from unittest import mock
    +from uuid import uuid4
    +
    +from prowler.providers.azure.services.mysql.mysql_service import (
    +    Configuration,
    +    FlexibleServer,
    +)
    +from tests.providers.azure.azure_fixtures import AZURE_SUBSCRIPTION
    +
    +
    +class Test_mysql_flexible_server_audit_log_enabled:
    +    def test_mysql_no_subscriptions(self):
    +        mysql_client = mock.MagicMock
    +        mysql_client.flexible_servers = {}
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.mysql.mysql_flexible_server_audit_log_enabled.mysql_flexible_server_audit_log_enabled.mysql_client",
    +            new=mysql_client,
    +        ):
    +            from prowler.providers.azure.services.mysql.mysql_flexible_server_audit_log_enabled.mysql_flexible_server_audit_log_enabled import (
    +                mysql_flexible_server_audit_log_enabled,
    +            )
    +
    +            check = mysql_flexible_server_audit_log_enabled()
    +            result = check.execute()
    +            assert len(result) == 0
    +
    +    def test_mysql_no_servers(self):
    +        mysql_client = mock.MagicMock
    +        mysql_client.flexible_servers = {AZURE_SUBSCRIPTION: {}}
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.mysql.mysql_flexible_server_audit_log_enabled.mysql_flexible_server_audit_log_enabled.mysql_client",
    +            new=mysql_client,
    +        ):
    +            from prowler.providers.azure.services.mysql.mysql_flexible_server_audit_log_enabled.mysql_flexible_server_audit_log_enabled import (
    +                mysql_flexible_server_audit_log_enabled,
    +            )
    +
    +            check = mysql_flexible_server_audit_log_enabled()
    +            result = check.execute()
    +            assert len(result) == 0
    +
    +    def test_mysql_audit_log_disabled(self):
    +        server_name = str(uuid4())
    +        mysql_client = mock.MagicMock
    +        mysql_client.flexible_servers = {
    +            AZURE_SUBSCRIPTION: {
    +                server_name: FlexibleServer(
    +                    resource_id="/subscriptions/resource_id",
    +                    location="location",
    +                    version="version",
    +                    configurations={
    +                        "audit_log_enabled": Configuration(
    +                            resource_id=f"/subscriptions/{server_name}/configurations/audit_log_enabled",
    +                            description="description",
    +                            value="OFF",
    +                        )
    +                    },
    +                )
    +            }
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.mysql.mysql_flexible_server_audit_log_enabled.mysql_flexible_server_audit_log_enabled.mysql_client",
    +            new=mysql_client,
    +        ):
    +            from prowler.providers.azure.services.mysql.mysql_flexible_server_audit_log_enabled.mysql_flexible_server_audit_log_enabled import (
    +                mysql_flexible_server_audit_log_enabled,
    +            )
    +
    +            check = mysql_flexible_server_audit_log_enabled()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "FAIL"
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == server_name
    +            assert (
    +                result[0].resource_id
    +                == f"/subscriptions/{server_name}/configurations/audit_log_enabled"
    +            )
    +            assert (
    +                result[0].status_extended
    +                == f"Audit log is disabled for server {server_name} in subscription {AZURE_SUBSCRIPTION}."
    +            )
    +
    +    def test_mysql_audit_log_enabled(self):
    +        server_name = str(uuid4())
    +        mysql_client = mock.MagicMock
    +        mysql_client.flexible_servers = {
    +            AZURE_SUBSCRIPTION: {
    +                server_name: FlexibleServer(
    +                    resource_id="/subscriptions/resource_id",
    +                    location="location",
    +                    version="version",
    +                    configurations={
    +                        "audit_log_enabled": Configuration(
    +                            resource_id=f"/subscriptions/{server_name}/configurations/audit_log_enabled",
    +                            description="description",
    +                            value="ON",
    +                        )
    +                    },
    +                )
    +            }
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.mysql.mysql_flexible_server_audit_log_enabled.mysql_flexible_server_audit_log_enabled.mysql_client",
    +            new=mysql_client,
    +        ):
    +            from prowler.providers.azure.services.mysql.mysql_flexible_server_audit_log_enabled.mysql_flexible_server_audit_log_enabled import (
    +                mysql_flexible_server_audit_log_enabled,
    +            )
    +
    +            check = mysql_flexible_server_audit_log_enabled()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "PASS"
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == server_name
    +            assert (
    +                result[0].resource_id
    +                == f"/subscriptions/{server_name}/configurations/audit_log_enabled"
    +            )
    +            assert (
    +                result[0].status_extended
    +                == f"Audit log is enabled for server {server_name} in subscription {AZURE_SUBSCRIPTION}."
    +            )
    diff --git a/tests/providers/azure/services/mysql/mysql_flexible_server_minimum_tls_version_12/mysql_flexible_server_minimum_tls_version_12_test.py b/tests/providers/azure/services/mysql/mysql_flexible_server_minimum_tls_version_12/mysql_flexible_server_minimum_tls_version_12_test.py
    new file mode 100644
    index 00000000000..1e195957732
    --- /dev/null
    +++ b/tests/providers/azure/services/mysql/mysql_flexible_server_minimum_tls_version_12/mysql_flexible_server_minimum_tls_version_12_test.py
    @@ -0,0 +1,243 @@
    +from unittest import mock
    +from uuid import uuid4
    +
    +from prowler.providers.azure.services.mysql.mysql_service import (
    +    Configuration,
    +    FlexibleServer,
    +)
    +from tests.providers.azure.azure_fixtures import AZURE_SUBSCRIPTION
    +
    +
    +class Test_mysql_flexible_server_minimum_tls_version_12:
    +    def test_mysql_no_subscriptions(self):
    +        mysql_client = mock.MagicMock
    +        mysql_client.flexible_servers = {}
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.mysql.mysql_flexible_server_minimum_tls_version_12.mysql_flexible_server_minimum_tls_version_12.mysql_client",
    +            new=mysql_client,
    +        ):
    +            from prowler.providers.azure.services.mysql.mysql_flexible_server_minimum_tls_version_12.mysql_flexible_server_minimum_tls_version_12 import (
    +                mysql_flexible_server_minimum_tls_version_12,
    +            )
    +
    +            check = mysql_flexible_server_minimum_tls_version_12()
    +            result = check.execute()
    +            assert len(result) == 0
    +
    +    def test_mysql_no_servers(self):
    +        mysql_client = mock.MagicMock
    +        mysql_client.flexible_servers = {AZURE_SUBSCRIPTION: {}}
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.mysql.mysql_flexible_server_minimum_tls_version_12.mysql_flexible_server_minimum_tls_version_12.mysql_client",
    +            new=mysql_client,
    +        ):
    +            from prowler.providers.azure.services.mysql.mysql_flexible_server_minimum_tls_version_12.mysql_flexible_server_minimum_tls_version_12 import (
    +                mysql_flexible_server_minimum_tls_version_12,
    +            )
    +
    +            check = mysql_flexible_server_minimum_tls_version_12()
    +            result = check.execute()
    +            assert len(result) == 0
    +
    +    def test_mysql_no_tls_configuration(self):
    +        server_name = str(uuid4())
    +        mysql_client = mock.MagicMock
    +        mysql_client.flexible_servers = {
    +            AZURE_SUBSCRIPTION: {
    +                server_name: FlexibleServer(
    +                    resource_id="/subscriptions/resource_id",
    +                    location="location",
    +                    version="version",
    +                    configurations={},
    +                )
    +            }
    +        }
    +        with mock.patch(
    +            "prowler.providers.azure.services.mysql.mysql_flexible_server_minimum_tls_version_12.mysql_flexible_server_minimum_tls_version_12.mysql_client",
    +            new=mysql_client,
    +        ):
    +            from prowler.providers.azure.services.mysql.mysql_flexible_server_minimum_tls_version_12.mysql_flexible_server_minimum_tls_version_12 import (
    +                mysql_flexible_server_minimum_tls_version_12,
    +            )
    +
    +            check = mysql_flexible_server_minimum_tls_version_12()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "FAIL"
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == server_name
    +            assert result[0].resource_id == server_name
    +            assert (
    +                result[0].status_extended
    +                == f"TLS version is not configured in server {server_name} in subscription {AZURE_SUBSCRIPTION}."
    +            )
    +
    +    def test_mysql_flexible_server_minimum_tls_version_12(self):
    +        server_name = str(uuid4())
    +        mysql_client = mock.MagicMock
    +        mysql_client.flexible_servers = {
    +            AZURE_SUBSCRIPTION: {
    +                server_name: FlexibleServer(
    +                    resource_id="/subscriptions/resource_id",
    +                    location="location",
    +                    version="version",
    +                    configurations={
    +                        "tls_version": Configuration(
    +                            resource_id=f"/subscriptions/{server_name}/configurations/tls_version",
    +                            description="description",
    +                            value="TLSv1.2",
    +                        )
    +                    },
    +                )
    +            }
    +        }
    +        with mock.patch(
    +            "prowler.providers.azure.services.mysql.mysql_flexible_server_minimum_tls_version_12.mysql_flexible_server_minimum_tls_version_12.mysql_client",
    +            new=mysql_client,
    +        ):
    +            from prowler.providers.azure.services.mysql.mysql_flexible_server_minimum_tls_version_12.mysql_flexible_server_minimum_tls_version_12 import (
    +                mysql_flexible_server_minimum_tls_version_12,
    +            )
    +
    +            check = mysql_flexible_server_minimum_tls_version_12()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "PASS"
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == server_name
    +            assert (
    +                result[0].resource_id
    +                == f"/subscriptions/{server_name}/configurations/tls_version"
    +            )
    +            assert (
    +                result[0].status_extended
    +                == f"TLS version is TLSv1.2 in server {server_name} in subscription {AZURE_SUBSCRIPTION}. This version of TLS is considered secure."
    +            )
    +
    +    def test_mysql_tls_version_is_1_3(self):
    +        server_name = str(uuid4())
    +        mysql_client = mock.MagicMock
    +        mysql_client.flexible_servers = {
    +            AZURE_SUBSCRIPTION: {
    +                server_name: FlexibleServer(
    +                    resource_id="/subscriptions/resource_id",
    +                    location="location",
    +                    version="version",
    +                    configurations={
    +                        "tls_version": Configuration(
    +                            resource_id=f"/subscriptions/{server_name}/configurations/tls_version",
    +                            description="description",
    +                            value="TLSv1.3",
    +                        )
    +                    },
    +                )
    +            }
    +        }
    +        with mock.patch(
    +            "prowler.providers.azure.services.mysql.mysql_flexible_server_minimum_tls_version_12.mysql_flexible_server_minimum_tls_version_12.mysql_client",
    +            new=mysql_client,
    +        ):
    +            from prowler.providers.azure.services.mysql.mysql_flexible_server_minimum_tls_version_12.mysql_flexible_server_minimum_tls_version_12 import (
    +                mysql_flexible_server_minimum_tls_version_12,
    +            )
    +
    +            check = mysql_flexible_server_minimum_tls_version_12()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "PASS"
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == server_name
    +            assert (
    +                result[0].resource_id
    +                == f"/subscriptions/{server_name}/configurations/tls_version"
    +            )
    +            assert (
    +                result[0].status_extended
    +                == f"TLS version is TLSv1.3 in server {server_name} in subscription {AZURE_SUBSCRIPTION}. This version of TLS is considered secure."
    +            )
    +
    +    def test_mysql_tls_version_is_not_1_2(self):
    +        server_name = str(uuid4())
    +        mysql_client = mock.MagicMock
    +        mysql_client.flexible_servers = {
    +            AZURE_SUBSCRIPTION: {
    +                server_name: FlexibleServer(
    +                    resource_id="/subscriptions/resource_id",
    +                    location="location",
    +                    version="version",
    +                    configurations={
    +                        "tls_version": Configuration(
    +                            resource_id=f"/subscriptions/{server_name}/configurations/tls_version",
    +                            description="description",
    +                            value="TLSv1.1",
    +                        )
    +                    },
    +                )
    +            }
    +        }
    +        with mock.patch(
    +            "prowler.providers.azure.services.mysql.mysql_flexible_server_minimum_tls_version_12.mysql_flexible_server_minimum_tls_version_12.mysql_client",
    +            new=mysql_client,
    +        ):
    +            from prowler.providers.azure.services.mysql.mysql_flexible_server_minimum_tls_version_12.mysql_flexible_server_minimum_tls_version_12 import (
    +                mysql_flexible_server_minimum_tls_version_12,
    +            )
    +
    +            check = mysql_flexible_server_minimum_tls_version_12()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "FAIL"
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == server_name
    +            assert (
    +                result[0].resource_id
    +                == f"/subscriptions/{server_name}/configurations/tls_version"
    +            )
    +            assert (
    +                result[0].status_extended
    +                == f"TLS version is TLSv1.1 in server {server_name} in subscription {AZURE_SUBSCRIPTION}. There is at leat one version of TLS that is considered insecure."
    +            )
    +
    +    def test_mysql_tls_version_is_1_1_and_1_3(self):
    +        server_name = str(uuid4())
    +        mysql_client = mock.MagicMock
    +        mysql_client.flexible_servers = {
    +            AZURE_SUBSCRIPTION: {
    +                server_name: FlexibleServer(
    +                    resource_id="/subscriptions/resource_id",
    +                    location="location",
    +                    version="version",
    +                    configurations={
    +                        "tls_version": Configuration(
    +                            resource_id=f"/subscriptions/{server_name}/configurations/tls_version",
    +                            description="description",
    +                            value="TLSv1.1,TLSv1.3",
    +                        )
    +                    },
    +                )
    +            }
    +        }
    +        with mock.patch(
    +            "prowler.providers.azure.services.mysql.mysql_flexible_server_minimum_tls_version_12.mysql_flexible_server_minimum_tls_version_12.mysql_client",
    +            new=mysql_client,
    +        ):
    +            from prowler.providers.azure.services.mysql.mysql_flexible_server_minimum_tls_version_12.mysql_flexible_server_minimum_tls_version_12 import (
    +                mysql_flexible_server_minimum_tls_version_12,
    +            )
    +
    +            check = mysql_flexible_server_minimum_tls_version_12()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "FAIL"
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == server_name
    +            assert (
    +                result[0].resource_id
    +                == f"/subscriptions/{server_name}/configurations/tls_version"
    +            )
    +            assert (
    +                result[0].status_extended
    +                == f"TLS version is TLSv1.1,TLSv1.3 in server {server_name} in subscription {AZURE_SUBSCRIPTION}. There is at leat one version of TLS that is considered insecure."
    +            )
    diff --git a/tests/providers/azure/services/mysql/mysql_flexible_server_ssl_connection_enabled/mysql_flexible_server_ssl_connection_enabled_test.py b/tests/providers/azure/services/mysql/mysql_flexible_server_ssl_connection_enabled/mysql_flexible_server_ssl_connection_enabled_test.py
    new file mode 100644
    index 00000000000..b91a95d14c4
    --- /dev/null
    +++ b/tests/providers/azure/services/mysql/mysql_flexible_server_ssl_connection_enabled/mysql_flexible_server_ssl_connection_enabled_test.py
    @@ -0,0 +1,229 @@
    +from unittest import mock
    +from uuid import uuid4
    +
    +from prowler.providers.azure.services.mysql.mysql_service import (
    +    Configuration,
    +    FlexibleServer,
    +)
    +from tests.providers.azure.azure_fixtures import AZURE_SUBSCRIPTION
    +
    +
    +class Test_mysql_flexible_server_ssl_connection_enabled:
    +    def test_mysql_no_subscriptions(self):
    +        mysql_client = mock.MagicMock
    +        mysql_client.flexible_servers = {}
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.mysql.mysql_flexible_server_ssl_connection_enabled.mysql_flexible_server_ssl_connection_enabled.mysql_client",
    +            new=mysql_client,
    +        ):
    +            from prowler.providers.azure.services.mysql.mysql_flexible_server_ssl_connection_enabled.mysql_flexible_server_ssl_connection_enabled import (
    +                mysql_flexible_server_ssl_connection_enabled,
    +            )
    +
    +            check = mysql_flexible_server_ssl_connection_enabled()
    +            result = check.execute()
    +            assert len(result) == 0
    +
    +    def test_mysql_no_servers(self):
    +        mysql_client = mock.MagicMock
    +        mysql_client.flexible_servers = {AZURE_SUBSCRIPTION: {}}
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.mysql.mysql_flexible_server_ssl_connection_enabled.mysql_flexible_server_ssl_connection_enabled.mysql_client",
    +            new=mysql_client,
    +        ):
    +            from prowler.providers.azure.services.mysql.mysql_flexible_server_ssl_connection_enabled.mysql_flexible_server_ssl_connection_enabled import (
    +                mysql_flexible_server_ssl_connection_enabled,
    +            )
    +
    +            check = mysql_flexible_server_ssl_connection_enabled()
    +            result = check.execute()
    +            assert len(result) == 0
    +
    +    def test_mysql_connection_enabled(self):
    +        server_name = str(uuid4())
    +        mysql_client = mock.MagicMock
    +        mysql_client.flexible_servers = {
    +            AZURE_SUBSCRIPTION: {
    +                server_name: FlexibleServer(
    +                    resource_id="/subscriptions/resource_id",
    +                    location="location",
    +                    version="version",
    +                    configurations={
    +                        "require_secure_transport": Configuration(
    +                            resource_id=f"/subscriptions/{server_name}/configurations/require_secure_transport",
    +                            description="description",
    +                            value="ON",
    +                        )
    +                    },
    +                )
    +            }
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.mysql.mysql_flexible_server_ssl_connection_enabled.mysql_flexible_server_ssl_connection_enabled.mysql_client",
    +            new=mysql_client,
    +        ):
    +            from prowler.providers.azure.services.mysql.mysql_flexible_server_ssl_connection_enabled.mysql_flexible_server_ssl_connection_enabled import (
    +                mysql_flexible_server_ssl_connection_enabled,
    +            )
    +
    +            check = mysql_flexible_server_ssl_connection_enabled()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "PASS"
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == server_name
    +            assert (
    +                result[0].resource_id
    +                == f"/subscriptions/{server_name}/configurations/require_secure_transport"
    +            )
    +            assert (
    +                result[0].status_extended
    +                == f"SSL connection is enabled for server {server_name} in subscription {AZURE_SUBSCRIPTION}."
    +            )
    +
    +    def test_mysql_ssl_connection_disabled(self):
    +        server_name = str(uuid4())
    +        mysql_client = mock.MagicMock
    +        mysql_client.flexible_servers = {
    +            AZURE_SUBSCRIPTION: {
    +                server_name: FlexibleServer(
    +                    resource_id="/subscriptions/resource_id",
    +                    location="location",
    +                    version="version",
    +                    configurations={
    +                        "require_secure_transport": Configuration(
    +                            resource_id=f"/subscriptions/{server_name}/configurations/require_secure_transport",
    +                            description="description",
    +                            value="OFF",
    +                        )
    +                    },
    +                )
    +            }
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.mysql.mysql_flexible_server_ssl_connection_enabled.mysql_flexible_server_ssl_connection_enabled.mysql_client",
    +            new=mysql_client,
    +        ):
    +            from prowler.providers.azure.services.mysql.mysql_flexible_server_ssl_connection_enabled.mysql_flexible_server_ssl_connection_enabled import (
    +                mysql_flexible_server_ssl_connection_enabled,
    +            )
    +
    +            check = mysql_flexible_server_ssl_connection_enabled()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "FAIL"
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == server_name
    +            assert (
    +                result[0].resource_id
    +                == f"/subscriptions/{server_name}/configurations/require_secure_transport"
    +            )
    +            assert (
    +                result[0].status_extended
    +                == f"SSL connection is disabled for server {server_name} in subscription {AZURE_SUBSCRIPTION}."
    +            )
    +
    +    def test_mysql_ssl_connection_no_configuration(self):
    +        server_name = str(uuid4())
    +        mysql_client = mock.MagicMock
    +        mysql_client.flexible_servers = {
    +            AZURE_SUBSCRIPTION: {
    +                server_name: FlexibleServer(
    +                    resource_id="/subscriptions/resource_id",
    +                    location="location",
    +                    version="version",
    +                    configurations={},
    +                )
    +            }
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.mysql.mysql_flexible_server_ssl_connection_enabled.mysql_flexible_server_ssl_connection_enabled.mysql_client",
    +            new=mysql_client,
    +        ):
    +            from prowler.providers.azure.services.mysql.mysql_flexible_server_ssl_connection_enabled.mysql_flexible_server_ssl_connection_enabled import (
    +                mysql_flexible_server_ssl_connection_enabled,
    +            )
    +
    +            check = mysql_flexible_server_ssl_connection_enabled()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "FAIL"
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == server_name
    +            assert result[0].resource_id == server_name
    +            assert (
    +                result[0].status_extended
    +                == f"SSL connection is disabled for server {server_name} in subscription {AZURE_SUBSCRIPTION}."
    +            )
    +
    +    def test_mysql_ssl_connection_enabled_and_disabled(self):
    +        server_name_1 = str(uuid4())
    +        server_name_2 = str(uuid4())
    +        mysql_client = mock.MagicMock
    +        mysql_client.flexible_servers = {
    +            AZURE_SUBSCRIPTION: {
    +                server_name_1: FlexibleServer(
    +                    resource_id="/subscriptions/resource_id",
    +                    location="location",
    +                    version="version",
    +                    configurations={
    +                        "require_secure_transport": Configuration(
    +                            resource_id=f"/subscriptions/{server_name_1}/configurations/require_secure_transport",
    +                            description="description",
    +                            value="ON",
    +                        )
    +                    },
    +                ),
    +                server_name_2: FlexibleServer(
    +                    resource_id="/subscriptions/resource_id",
    +                    location="location",
    +                    version="version",
    +                    configurations={
    +                        "require_secure_transport": Configuration(
    +                            resource_id=f"/subscriptions/{server_name_2}/configurations/require_secure_transport",
    +                            description="description",
    +                            value="OFF",
    +                        )
    +                    },
    +                ),
    +            }
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.mysql.mysql_flexible_server_ssl_connection_enabled.mysql_flexible_server_ssl_connection_enabled.mysql_client",
    +            new=mysql_client,
    +        ):
    +            from prowler.providers.azure.services.mysql.mysql_flexible_server_ssl_connection_enabled.mysql_flexible_server_ssl_connection_enabled import (
    +                mysql_flexible_server_ssl_connection_enabled,
    +            )
    +
    +            check = mysql_flexible_server_ssl_connection_enabled()
    +            result = check.execute()
    +            assert len(result) == 2
    +            assert result[0].status == "PASS"
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == server_name_1
    +            assert (
    +                result[0].resource_id
    +                == f"/subscriptions/{server_name_1}/configurations/require_secure_transport"
    +            )
    +            assert (
    +                result[0].status_extended
    +                == f"SSL connection is enabled for server {server_name_1} in subscription {AZURE_SUBSCRIPTION}."
    +            )
    +            assert result[1].status == "FAIL"
    +            assert result[1].subscription == AZURE_SUBSCRIPTION
    +            assert result[1].resource_name == server_name_2
    +            assert (
    +                result[1].resource_id
    +                == f"/subscriptions/{server_name_2}/configurations/require_secure_transport"
    +            )
    +            assert (
    +                result[1].status_extended
    +                == f"SSL connection is disabled for server {server_name_2} in subscription {AZURE_SUBSCRIPTION}."
    +            )
    diff --git a/tests/providers/azure/services/mysql/mysql_service_test.py b/tests/providers/azure/services/mysql/mysql_service_test.py
    new file mode 100644
    index 00000000000..e5c98830670
    --- /dev/null
    +++ b/tests/providers/azure/services/mysql/mysql_service_test.py
    @@ -0,0 +1,101 @@
    +from unittest.mock import patch
    +
    +from prowler.providers.azure.services.mysql.mysql_service import (
    +    Configuration,
    +    FlexibleServer,
    +    MySQL,
    +)
    +from tests.providers.azure.azure_fixtures import (
    +    AZURE_SUBSCRIPTION,
    +    set_mocked_azure_audit_info,
    +)
    +
    +
    +def mock_mysql_get_servers(_):
    +    return {
    +        AZURE_SUBSCRIPTION: {
    +            "test": FlexibleServer(
    +                resource_id="/subscriptions/resource_id",
    +                location="location",
    +                version="version",
    +                configurations={
    +                    "test": Configuration(
    +                        resource_id="/subscriptions/test/resource_id",
    +                        description="description",
    +                        value="value",
    +                    )
    +                },
    +            )
    +        }
    +    }
    +
    +
    +def mock_mysql_get_configurations(_):
    +    return {
    +        "test": Configuration(
    +            resource_id="/subscriptions/resource_id",
    +            description="description",
    +            value="value",
    +        )
    +    }
    +
    +
    +@patch(
    +    "prowler.providers.azure.services.mysql.mysql_service.MySQL.__get_flexible_servers__",
    +    new=mock_mysql_get_servers,
    +)
    +@patch(
    +    "prowler.providers.azure.services.mysql.mysql_service.MySQL.__get_configurations__",
    +    new=mock_mysql_get_configurations,
    +)
    +class Test_MySQL_Service:
    +    def test__get_client__(self):
    +        mysql = MySQL(set_mocked_azure_audit_info())
    +        assert (
    +            mysql.clients[AZURE_SUBSCRIPTION].__class__.__name__
    +            == "MySQLManagementClient"
    +        )
    +
    +    def test__get_subscriptions__(self):
    +        mysql = MySQL(set_mocked_azure_audit_info())
    +        assert mysql.subscriptions.__class__.__name__ == "dict"
    +
    +    def test__get_flexible_servers__(self):
    +        mysql = MySQL(set_mocked_azure_audit_info())
    +        assert len(mysql.flexible_servers) == 1
    +        assert (
    +            mysql.flexible_servers[AZURE_SUBSCRIPTION]["test"].resource_id
    +            == "/subscriptions/resource_id"
    +        )
    +        assert mysql.flexible_servers[AZURE_SUBSCRIPTION]["test"].location == "location"
    +        assert mysql.flexible_servers[AZURE_SUBSCRIPTION]["test"].version == "version"
    +        assert (
    +            len(mysql.flexible_servers[AZURE_SUBSCRIPTION]["test"].configurations) == 1
    +        )
    +        assert (
    +            mysql.flexible_servers[AZURE_SUBSCRIPTION]["test"]
    +            .configurations["test"]
    +            .resource_id
    +            == "/subscriptions/test/resource_id"
    +        )
    +        assert (
    +            mysql.flexible_servers[AZURE_SUBSCRIPTION]["test"]
    +            .configurations["test"]
    +            .description
    +            == "description"
    +        )
    +        assert (
    +            mysql.flexible_servers[AZURE_SUBSCRIPTION]["test"]
    +            .configurations["test"]
    +            .value
    +            == "value"
    +        )
    +
    +    def test__get_configurations__(self):
    +        mysql = MySQL(set_mocked_azure_audit_info())
    +        configurations = mysql.__get_configurations__()
    +
    +        assert len(configurations) == 1
    +        assert configurations["test"].resource_id == "/subscriptions/resource_id"
    +        assert configurations["test"].description == "description"
    +        assert configurations["test"].value == "value"
    diff --git a/tests/providers/azure/services/network/network_bastion_host_exists/network_bastion_host_exists_test.py b/tests/providers/azure/services/network/network_bastion_host_exists/network_bastion_host_exists_test.py
    new file mode 100644
    index 00000000000..bf4fce59d8d
    --- /dev/null
    +++ b/tests/providers/azure/services/network/network_bastion_host_exists/network_bastion_host_exists_test.py
    @@ -0,0 +1,72 @@
    +from unittest import mock
    +from uuid import uuid4
    +
    +from prowler.providers.azure.services.network.network_service import BastionHost
    +from tests.providers.azure.azure_fixtures import AZURE_SUBSCRIPTION
    +
    +
    +class Test_network_bastion_host_exists:
    +    def test_no_bastion_hosts(self):
    +        network_client = mock.MagicMock
    +        network_client.bastion_hosts = {AZURE_SUBSCRIPTION: []}
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.network.network_service.Network",
    +            new=network_client,
    +        ) as service_client, mock.patch(
    +            "prowler.providers.azure.services.network.network_client.network_client",
    +            new=service_client,
    +        ):
    +            from prowler.providers.azure.services.network.network_bastion_host_exists.network_bastion_host_exists import (
    +                network_bastion_host_exists,
    +            )
    +
    +            check = network_bastion_host_exists()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "FAIL"
    +            assert (
    +                result[0].status_extended
    +                == f"Bastion Host from subscription {AZURE_SUBSCRIPTION} does not exist"
    +            )
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == "Bastion Host"
    +            assert result[0].resource_id == "N/A"
    +
    +    def test_network_bastion_host_exists(self):
    +        network_client = mock.MagicMock
    +        bastion_host_name = "Bastion Host Name"
    +        bastion_host_id = str(uuid4())
    +
    +        network_client.bastion_hosts = {
    +            AZURE_SUBSCRIPTION: [
    +                BastionHost(
    +                    id=bastion_host_id,
    +                    name=bastion_host_name,
    +                    location="location",
    +                )
    +            ]
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.network.network_service.Network",
    +            new=network_client,
    +        ) as service_client, mock.patch(
    +            "prowler.providers.azure.services.network.network_client.network_client",
    +            new=service_client,
    +        ):
    +            from prowler.providers.azure.services.network.network_bastion_host_exists.network_bastion_host_exists import (
    +                network_bastion_host_exists,
    +            )
    +
    +            check = network_bastion_host_exists()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "PASS"
    +            assert (
    +                result[0].status_extended
    +                == f"Bastion Host from subscription {AZURE_SUBSCRIPTION} available are: {bastion_host_name}"
    +            )
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == "Bastion Host"
    +            assert result[0].resource_id == bastion_host_id
    diff --git a/tests/providers/azure/services/network/network_flow_log_more_than_90_days/network_flow_log_more_than_90_days_test.py b/tests/providers/azure/services/network/network_flow_log_more_than_90_days/network_flow_log_more_than_90_days_test.py
    new file mode 100644
    index 00000000000..d2f79c97843
    --- /dev/null
    +++ b/tests/providers/azure/services/network/network_flow_log_more_than_90_days/network_flow_log_more_than_90_days_test.py
    @@ -0,0 +1,199 @@
    +from unittest import mock
    +from uuid import uuid4
    +
    +from azure.mgmt.network.models._models import FlowLog, RetentionPolicyParameters
    +
    +from prowler.providers.azure.services.network.network_service import NetworkWatcher
    +from tests.providers.azure.azure_fixtures import AZURE_SUBSCRIPTION
    +
    +
    +class Test_network_flow_log_more_than_90_days:
    +    def test_no_network_watchers(self):
    +        network_client = mock.MagicMock
    +        network_client.network_watchers = {}
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.network.network_service.Network",
    +            new=network_client,
    +        ) as service_client, mock.patch(
    +            "prowler.providers.azure.services.network.network_client.network_client",
    +            new=service_client,
    +        ):
    +            from prowler.providers.azure.services.network.network_flow_log_more_than_90_days.network_flow_log_more_than_90_days import (
    +                network_flow_log_more_than_90_days,
    +            )
    +
    +            check = network_flow_log_more_than_90_days()
    +            result = check.execute()
    +            assert len(result) == 0
    +
    +    def test_network_network_watchers_no_flow_logs(self):
    +        network_client = mock.MagicMock
    +        network_watcher_name = "Network Watcher Name"
    +        network_watcher_id = str(uuid4())
    +
    +        network_client.network_watchers = {
    +            AZURE_SUBSCRIPTION: [
    +                NetworkWatcher(
    +                    id=network_watcher_id,
    +                    name=network_watcher_name,
    +                    location="location",
    +                    flow_logs=[],
    +                )
    +            ]
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.network.network_service.Network",
    +            new=network_client,
    +        ) as service_client, mock.patch(
    +            "prowler.providers.azure.services.network.network_client.network_client",
    +            new=service_client,
    +        ):
    +            from prowler.providers.azure.services.network.network_flow_log_more_than_90_days.network_flow_log_more_than_90_days import (
    +                network_flow_log_more_than_90_days,
    +            )
    +
    +            check = network_flow_log_more_than_90_days()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "FAIL"
    +            assert (
    +                result[0].status_extended
    +                == f"Network Watcher {network_watcher_name} from subscription {AZURE_SUBSCRIPTION} has no flow logs"
    +            )
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == network_watcher_name
    +            assert result[0].resource_id == network_watcher_id
    +
    +    def test_network_network_watchers_flow_logs_disabled(self):
    +        network_client = mock.MagicMock
    +        network_watcher_name = "Network Watcher Name"
    +        network_watcher_id = str(uuid4())
    +
    +        network_client.network_watchers = {
    +            AZURE_SUBSCRIPTION: [
    +                NetworkWatcher(
    +                    id=network_watcher_id,
    +                    name=network_watcher_name,
    +                    location="location",
    +                    flow_logs=[
    +                        FlowLog(
    +                            enabled=False,
    +                            retention_policy=RetentionPolicyParameters(days=90),
    +                        )
    +                    ],
    +                )
    +            ]
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.network.network_service.Network",
    +            new=network_client,
    +        ) as service_client, mock.patch(
    +            "prowler.providers.azure.services.network.network_client.network_client",
    +            new=service_client,
    +        ):
    +            from prowler.providers.azure.services.network.network_flow_log_more_than_90_days.network_flow_log_more_than_90_days import (
    +                network_flow_log_more_than_90_days,
    +            )
    +
    +            check = network_flow_log_more_than_90_days()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "FAIL"
    +            assert (
    +                result[0].status_extended
    +                == f"Network Watcher {network_watcher_name} from subscription {AZURE_SUBSCRIPTION} has flow logs disabled"
    +            )
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == network_watcher_name
    +            assert result[0].resource_id == network_watcher_id
    +
    +    def test_network_network_watchers_flow_logs_retention_days_80(self):
    +        network_client = mock.MagicMock
    +        network_watcher_name = "Network Watcher Name"
    +        network_watcher_id = str(uuid4())
    +
    +        network_client.network_watchers = {
    +            AZURE_SUBSCRIPTION: [
    +                NetworkWatcher(
    +                    id=network_watcher_id,
    +                    name=network_watcher_name,
    +                    location="location",
    +                    flow_logs=[
    +                        FlowLog(
    +                            enabled=True,
    +                            retention_policy=RetentionPolicyParameters(days=80),
    +                        )
    +                    ],
    +                )
    +            ]
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.network.network_service.Network",
    +            new=network_client,
    +        ) as service_client, mock.patch(
    +            "prowler.providers.azure.services.network.network_client.network_client",
    +            new=service_client,
    +        ):
    +            from prowler.providers.azure.services.network.network_flow_log_more_than_90_days.network_flow_log_more_than_90_days import (
    +                network_flow_log_more_than_90_days,
    +            )
    +
    +            check = network_flow_log_more_than_90_days()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "FAIL"
    +            assert (
    +                result[0].status_extended
    +                == f"Network Watcher {network_watcher_name} from subscription {AZURE_SUBSCRIPTION} flow logs retention policy is less than 90 days"
    +            )
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == network_watcher_name
    +            assert result[0].resource_id == network_watcher_id
    +
    +    def test_network_network_watchers_flow_logs_well_configured(self):
    +        network_client = mock.MagicMock
    +        network_watcher_name = "Network Watcher Name"
    +        network_watcher_id = str(uuid4())
    +
    +        network_client.network_watchers = {
    +            AZURE_SUBSCRIPTION: [
    +                NetworkWatcher(
    +                    id=network_watcher_id,
    +                    name=network_watcher_name,
    +                    location="location",
    +                    flow_logs=[
    +                        FlowLog(
    +                            enabled=True,
    +                            retention_policy=RetentionPolicyParameters(days=90),
    +                        )
    +                    ],
    +                )
    +            ]
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.network.network_service.Network",
    +            new=network_client,
    +        ) as service_client, mock.patch(
    +            "prowler.providers.azure.services.network.network_client.network_client",
    +            new=service_client,
    +        ):
    +            from prowler.providers.azure.services.network.network_flow_log_more_than_90_days.network_flow_log_more_than_90_days import (
    +                network_flow_log_more_than_90_days,
    +            )
    +
    +            check = network_flow_log_more_than_90_days()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "PASS"
    +            assert (
    +                result[0].status_extended
    +                == f"Network Watcher {network_watcher_name} from subscription {AZURE_SUBSCRIPTION} has flow logs enabled for more than 90 days"
    +            )
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == network_watcher_name
    +            assert result[0].resource_id == network_watcher_id
    diff --git a/tests/providers/azure/services/network/network_http_internet_access_restricted/network_http_internet_access_restricted_test.py b/tests/providers/azure/services/network/network_http_internet_access_restricted/network_http_internet_access_restricted_test.py
    new file mode 100644
    index 00000000000..6f19e37619e
    --- /dev/null
    +++ b/tests/providers/azure/services/network/network_http_internet_access_restricted/network_http_internet_access_restricted_test.py
    @@ -0,0 +1,208 @@
    +from unittest import mock
    +from uuid import uuid4
    +
    +from azure.mgmt.network.models._models import SecurityRule
    +
    +from prowler.providers.azure.services.network.network_service import SecurityGroup
    +from tests.providers.azure.azure_fixtures import AZURE_SUBSCRIPTION
    +
    +
    +class Test_network_http_internet_access_restricted:
    +    def test_no_security_groups(self):
    +        network_client = mock.MagicMock
    +        network_client.security_groups = {}
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.network.network_service.Network",
    +            new=network_client,
    +        ) as service_client, mock.patch(
    +            "prowler.providers.azure.services.network.network_client.network_client",
    +            new=service_client,
    +        ):
    +            from prowler.providers.azure.services.network.network_http_internet_access_restricted.network_http_internet_access_restricted import (
    +                network_http_internet_access_restricted,
    +            )
    +
    +            check = network_http_internet_access_restricted()
    +            result = check.execute()
    +            assert len(result) == 0
    +
    +    def test_network_security_groups_no_security_rules(self):
    +        network_client = mock.MagicMock
    +        security_group_name = "Security Group Name"
    +        security_group_id = str(uuid4())
    +
    +        network_client.security_groups = {
    +            AZURE_SUBSCRIPTION: [
    +                SecurityGroup(
    +                    id=security_group_id,
    +                    name=security_group_name,
    +                    location="location",
    +                    security_rules=[],
    +                )
    +            ]
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.network.network_service.Network",
    +            new=network_client,
    +        ) as service_client, mock.patch(
    +            "prowler.providers.azure.services.network.network_client.network_client",
    +            new=service_client,
    +        ):
    +            from prowler.providers.azure.services.network.network_http_internet_access_restricted.network_http_internet_access_restricted import (
    +                network_http_internet_access_restricted,
    +            )
    +
    +            check = network_http_internet_access_restricted()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "PASS"
    +            assert (
    +                result[0].status_extended
    +                == f"Security Group {security_group_name} from subscription {AZURE_SUBSCRIPTION} has HTTP internet access restricted."
    +            )
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == security_group_name
    +            assert result[0].resource_id == security_group_id
    +
    +    def test_network_security_groups_invalid_security_rules(self):
    +        network_client = mock.MagicMock
    +        security_group_name = "Security Group Name"
    +        security_group_id = str(uuid4())
    +
    +        network_client.security_groups = {
    +            AZURE_SUBSCRIPTION: [
    +                SecurityGroup(
    +                    id=security_group_id,
    +                    name=security_group_name,
    +                    location="location",
    +                    security_rules=[
    +                        SecurityRule(
    +                            destination_port_range="80",
    +                            protocol="TCP",
    +                            source_address_prefix="Internet",
    +                            access="Allow",
    +                            direction="Inbound",
    +                        )
    +                    ],
    +                )
    +            ]
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.network.network_service.Network",
    +            new=network_client,
    +        ) as service_client, mock.patch(
    +            "prowler.providers.azure.services.network.network_client.network_client",
    +            new=service_client,
    +        ):
    +            from prowler.providers.azure.services.network.network_http_internet_access_restricted.network_http_internet_access_restricted import (
    +                network_http_internet_access_restricted,
    +            )
    +
    +            check = network_http_internet_access_restricted()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "FAIL"
    +            assert (
    +                result[0].status_extended
    +                == f"Security Group {security_group_name} from subscription {AZURE_SUBSCRIPTION} has HTTP internet access allowed."
    +            )
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == security_group_name
    +            assert result[0].resource_id == security_group_id
    +
    +    def test_network_security_groups_invalid_security_rules_range(self):
    +        network_client = mock.MagicMock
    +        security_group_name = "Security Group Name"
    +        security_group_id = str(uuid4())
    +
    +        network_client.security_groups = {
    +            AZURE_SUBSCRIPTION: [
    +                SecurityGroup(
    +                    id=security_group_id,
    +                    name=security_group_name,
    +                    location="location",
    +                    security_rules=[
    +                        SecurityRule(
    +                            destination_port_range="20-100",
    +                            protocol="TCP",
    +                            source_address_prefix="Internet",
    +                            access="Allow",
    +                            direction="Inbound",
    +                        )
    +                    ],
    +                )
    +            ]
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.network.network_service.Network",
    +            new=network_client,
    +        ) as service_client, mock.patch(
    +            "prowler.providers.azure.services.network.network_client.network_client",
    +            new=service_client,
    +        ):
    +            from prowler.providers.azure.services.network.network_http_internet_access_restricted.network_http_internet_access_restricted import (
    +                network_http_internet_access_restricted,
    +            )
    +
    +            check = network_http_internet_access_restricted()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "FAIL"
    +            assert (
    +                result[0].status_extended
    +                == f"Security Group {security_group_name} from subscription {AZURE_SUBSCRIPTION} has HTTP internet access allowed."
    +            )
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == security_group_name
    +            assert result[0].resource_id == security_group_id
    +
    +    def test_network_security_groups_valid_security_rules(self):
    +        network_client = mock.MagicMock
    +        security_group_name = "Security Group Name"
    +        security_group_id = str(uuid4())
    +
    +        network_client.security_groups = {
    +            AZURE_SUBSCRIPTION: [
    +                SecurityGroup(
    +                    id=security_group_id,
    +                    name=security_group_name,
    +                    location="location",
    +                    security_rules=[
    +                        SecurityRule(
    +                            destination_port_range="23",
    +                            protocol="TCP",
    +                            source_address_prefix="Internet",
    +                            access="Allow",
    +                            direction="Inbound",
    +                        )
    +                    ],
    +                )
    +            ]
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.network.network_service.Network",
    +            new=network_client,
    +        ) as service_client, mock.patch(
    +            "prowler.providers.azure.services.network.network_client.network_client",
    +            new=service_client,
    +        ):
    +            from prowler.providers.azure.services.network.network_http_internet_access_restricted.network_http_internet_access_restricted import (
    +                network_http_internet_access_restricted,
    +            )
    +
    +            check = network_http_internet_access_restricted()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "PASS"
    +            assert (
    +                result[0].status_extended
    +                == f"Security Group {security_group_name} from subscription {AZURE_SUBSCRIPTION} has HTTP internet access restricted."
    +            )
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == security_group_name
    +            assert result[0].resource_id == security_group_id
    diff --git a/tests/providers/azure/services/network/network_public_ip_shodan/network_public_ip_shodan_test.py b/tests/providers/azure/services/network/network_public_ip_shodan/network_public_ip_shodan_test.py
    new file mode 100644
    index 00000000000..128aba54217
    --- /dev/null
    +++ b/tests/providers/azure/services/network/network_public_ip_shodan/network_public_ip_shodan_test.py
    @@ -0,0 +1,78 @@
    +from unittest import mock
    +
    +from prowler.providers.azure.services.network.network_service import PublicIp
    +from tests.providers.azure.azure_fixtures import AZURE_SUBSCRIPTION
    +
    +
    +class Test_network_public_ip_shodan:
    +    def test_no_public_ip_addresses(self):
    +        network_client = mock.MagicMock
    +        network_client.public_ip_addresses = {}
    +        network_client.audit_info = mock.MagicMock
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.network.network_service.Network",
    +            new=network_client,
    +        ) as service_client, mock.patch(
    +            "prowler.providers.azure.services.network.network_client.network_client",
    +            new=service_client,
    +        ):
    +            from prowler.providers.azure.services.network.network_public_ip_shodan.network_public_ip_shodan import (
    +                network_public_ip_shodan,
    +            )
    +
    +            network_client.audit_config = {"shodan_api_key": "api_key"}
    +
    +            check = network_public_ip_shodan()
    +            result = check.execute()
    +            assert len(result) == 0
    +
    +    def test_network_ip_in_shodan(self):
    +        network_client = mock.MagicMock
    +        public_ip_id = "id"
    +        public_ip_name = "name"
    +        ip_address = "ip_address"
    +        shodan_info = {
    +            "ports": [80, 443],
    +            "isp": "Microsoft Corporation",
    +            "country_name": "country_name",
    +        }
    +        network_client.audit_info = mock.MagicMock
    +
    +        network_client.public_ip_addresses = {
    +            AZURE_SUBSCRIPTION: [
    +                PublicIp(
    +                    id=public_ip_id,
    +                    name=public_ip_name,
    +                    location=None,
    +                    ip_address=ip_address,
    +                )
    +            ]
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.network.network_service.Network",
    +            new=network_client,
    +        ) as service_client, mock.patch(
    +            "prowler.providers.azure.services.network.network_client.network_client",
    +            new=service_client,
    +        ), mock.patch(
    +            "prowler.providers.azure.services.network.network_public_ip_shodan.network_public_ip_shodan.shodan.Shodan.host",
    +            return_value=shodan_info,
    +        ):
    +            from prowler.providers.azure.services.network.network_public_ip_shodan.network_public_ip_shodan import (
    +                network_public_ip_shodan,
    +            )
    +
    +            network_client.audit_config = {"shodan_api_key": "api_key"}
    +            check = network_public_ip_shodan()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "FAIL"
    +            assert (
    +                result[0].status_extended
    +                == f"Public IP {ip_address} listed in Shodan with open ports {str(shodan_info['ports'])} and ISP {shodan_info['isp']} in {shodan_info['country_name']}. More info at https://www.shodan.io/host/{ip_address}."
    +            )
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == public_ip_name
    +            assert result[0].resource_id == public_ip_id
    diff --git a/tests/providers/azure/services/network/network_rdp_internet_access_restricted/network_rdp_internet_access_restricted_test.py b/tests/providers/azure/services/network/network_rdp_internet_access_restricted/network_rdp_internet_access_restricted_test.py
    new file mode 100644
    index 00000000000..e44342792b1
    --- /dev/null
    +++ b/tests/providers/azure/services/network/network_rdp_internet_access_restricted/network_rdp_internet_access_restricted_test.py
    @@ -0,0 +1,161 @@
    +from unittest import mock
    +from uuid import uuid4
    +
    +from azure.mgmt.network.models._models import SecurityRule
    +
    +from prowler.providers.azure.services.network.network_service import SecurityGroup
    +from tests.providers.azure.azure_fixtures import AZURE_SUBSCRIPTION
    +
    +
    +class Test_network_rdp_internet_access_restricted:
    +    def test_no_security_groups(self):
    +        network_client = mock.MagicMock
    +        network_client.security_groups = {}
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.network.network_service.Network",
    +            new=network_client,
    +        ) as service_client, mock.patch(
    +            "prowler.providers.azure.services.network.network_client.network_client",
    +            new=service_client,
    +        ):
    +            from prowler.providers.azure.services.network.network_rdp_internet_access_restricted.network_rdp_internet_access_restricted import (
    +                network_rdp_internet_access_restricted,
    +            )
    +
    +            check = network_rdp_internet_access_restricted()
    +            result = check.execute()
    +            assert len(result) == 0
    +
    +    def test_network_security_groups_no_security_rules(self):
    +        network_client = mock.MagicMock
    +        security_group_name = "Security Group Name"
    +        security_group_id = str(uuid4())
    +
    +        network_client.security_groups = {
    +            AZURE_SUBSCRIPTION: [
    +                SecurityGroup(
    +                    id=security_group_id,
    +                    name=security_group_name,
    +                    location="location",
    +                    security_rules=[],
    +                )
    +            ]
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.network.network_service.Network",
    +            new=network_client,
    +        ) as service_client, mock.patch(
    +            "prowler.providers.azure.services.network.network_client.network_client",
    +            new=service_client,
    +        ):
    +            from prowler.providers.azure.services.network.network_rdp_internet_access_restricted.network_rdp_internet_access_restricted import (
    +                network_rdp_internet_access_restricted,
    +            )
    +
    +            check = network_rdp_internet_access_restricted()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "PASS"
    +            assert (
    +                result[0].status_extended
    +                == f"Security Group {security_group_name} from subscription {AZURE_SUBSCRIPTION} has RDP internet access restricted."
    +            )
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == security_group_name
    +            assert result[0].resource_id == security_group_id
    +
    +    def test_network_security_groups_valid_security_rules(self):
    +        network_client = mock.MagicMock
    +        security_group_name = "Security Group Name"
    +        security_group_id = str(uuid4())
    +
    +        network_client.security_groups = {
    +            AZURE_SUBSCRIPTION: [
    +                SecurityGroup(
    +                    id=security_group_id,
    +                    name=security_group_name,
    +                    location="location",
    +                    security_rules=[
    +                        SecurityRule(
    +                            destination_port_range="3388",
    +                            protocol="TCP",
    +                            source_address_prefix="Internet",
    +                            access="Allow",
    +                            direction="Inbound",
    +                        )
    +                    ],
    +                )
    +            ]
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.network.network_service.Network",
    +            new=network_client,
    +        ) as service_client, mock.patch(
    +            "prowler.providers.azure.services.network.network_client.network_client",
    +            new=service_client,
    +        ):
    +            from prowler.providers.azure.services.network.network_rdp_internet_access_restricted.network_rdp_internet_access_restricted import (
    +                network_rdp_internet_access_restricted,
    +            )
    +
    +            check = network_rdp_internet_access_restricted()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "PASS"
    +            assert (
    +                result[0].status_extended
    +                == f"Security Group {security_group_name} from subscription {AZURE_SUBSCRIPTION} has RDP internet access restricted."
    +            )
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == security_group_name
    +            assert result[0].resource_id == security_group_id
    +
    +    def test_network_security_groups_invalid_security_rules_range(self):
    +        network_client = mock.MagicMock
    +        security_group_name = "Security Group Name"
    +        security_group_id = str(uuid4())
    +
    +        network_client.security_groups = {
    +            AZURE_SUBSCRIPTION: [
    +                SecurityGroup(
    +                    id=security_group_id,
    +                    name=security_group_name,
    +                    location="location",
    +                    security_rules=[
    +                        SecurityRule(
    +                            destination_port_range="33-6000",
    +                            protocol="TCP",
    +                            source_address_prefix="Internet",
    +                            access="Allow",
    +                            direction="Inbound",
    +                        )
    +                    ],
    +                )
    +            ]
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.network.network_service.Network",
    +            new=network_client,
    +        ) as service_client, mock.patch(
    +            "prowler.providers.azure.services.network.network_client.network_client",
    +            new=service_client,
    +        ):
    +            from prowler.providers.azure.services.network.network_rdp_internet_access_restricted.network_rdp_internet_access_restricted import (
    +                network_rdp_internet_access_restricted,
    +            )
    +
    +            check = network_rdp_internet_access_restricted()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "FAIL"
    +            assert (
    +                result[0].status_extended
    +                == f"Security Group {security_group_name} from subscription {AZURE_SUBSCRIPTION} has RDP internet access allowed."
    +            )
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == security_group_name
    +            assert result[0].resource_id == security_group_id
    diff --git a/tests/providers/azure/services/network/network_service_test.py b/tests/providers/azure/services/network/network_service_test.py
    new file mode 100644
    index 00000000000..6d6fb176804
    --- /dev/null
    +++ b/tests/providers/azure/services/network/network_service_test.py
    @@ -0,0 +1,161 @@
    +from unittest.mock import patch
    +
    +from azure.mgmt.network.models import FlowLog
    +
    +from prowler.providers.azure.services.network.network_service import (
    +    BastionHost,
    +    Network,
    +    NetworkWatcher,
    +    PublicIp,
    +    SecurityGroup,
    +)
    +from tests.providers.azure.azure_fixtures import (
    +    AZURE_SUBSCRIPTION,
    +    set_mocked_azure_audit_info,
    +)
    +
    +
    +def mock_network_get_security_groups(_):
    +    return {
    +        AZURE_SUBSCRIPTION: [
    +            SecurityGroup(
    +                id="id",
    +                name="name",
    +                location="location",
    +                security_rules=[],
    +            )
    +        ]
    +    }
    +
    +
    +def mock_network_get_bastion_hosts(_):
    +    return {
    +        AZURE_SUBSCRIPTION: [
    +            BastionHost(
    +                id="id",
    +                name="name",
    +                location="location",
    +            )
    +        ]
    +    }
    +
    +
    +def mock_network_get_network_watchers(_):
    +    return {
    +        AZURE_SUBSCRIPTION: [
    +            NetworkWatcher(
    +                id="id",
    +                name="name",
    +                location="location",
    +                flow_logs=[FlowLog(enabled=True, retention_policy=90)],
    +            )
    +        ]
    +    }
    +
    +
    +def mock_network_get_public_ip_addresses(_):
    +    return {
    +        AZURE_SUBSCRIPTION: [
    +            PublicIp(
    +                id="id",
    +                name="name",
    +                location="location",
    +                ip_address="ip_address",
    +            )
    +        ]
    +    }
    +
    +
    +@patch(
    +    "prowler.providers.azure.services.network.network_service.Network.__get_security_groups__",
    +    new=mock_network_get_security_groups,
    +)
    +@patch(
    +    "prowler.providers.azure.services.network.network_service.Network.__get_bastion_hosts__",
    +    new=mock_network_get_bastion_hosts,
    +)
    +@patch(
    +    "prowler.providers.azure.services.network.network_service.Network.__get_network_watchers__",
    +    new=mock_network_get_network_watchers,
    +)
    +@patch(
    +    "prowler.providers.azure.services.network.network_service.Network.__get_public_ip_addresses__",
    +    new=mock_network_get_public_ip_addresses,
    +)
    +class Test_Network_Service:
    +    def test__get_client__(self):
    +        network = Network(set_mocked_azure_audit_info())
    +        assert (
    +            network.clients[AZURE_SUBSCRIPTION].__class__.__name__
    +            == "NetworkManagementClient"
    +        )
    +
    +    def test__get_security_groups__(self):
    +        network = Network(set_mocked_azure_audit_info())
    +        assert (
    +            network.security_groups[AZURE_SUBSCRIPTION][0].__class__.__name__
    +            == "SecurityGroup"
    +        )
    +        assert network.security_groups[AZURE_SUBSCRIPTION][0].id == "id"
    +        assert network.security_groups[AZURE_SUBSCRIPTION][0].name == "name"
    +        assert network.security_groups[AZURE_SUBSCRIPTION][0].location == "location"
    +        assert network.security_groups[AZURE_SUBSCRIPTION][0].security_rules == []
    +
    +    def test__get_network_watchers__(self):
    +        network = Network(set_mocked_azure_audit_info())
    +        assert (
    +            network.network_watchers[AZURE_SUBSCRIPTION][0].__class__.__name__
    +            == "NetworkWatcher"
    +        )
    +        assert network.network_watchers[AZURE_SUBSCRIPTION][0].id == "id"
    +        assert network.network_watchers[AZURE_SUBSCRIPTION][0].name == "name"
    +        assert network.network_watchers[AZURE_SUBSCRIPTION][0].location == "location"
    +        assert network.network_watchers[AZURE_SUBSCRIPTION][0].flow_logs == [
    +            FlowLog(enabled=True, retention_policy=90)
    +        ]
    +
    +    def __get_flow_logs__(self):
    +        network = Network(set_mocked_azure_audit_info())
    +        nw_name = "name"
    +        assert (
    +            network.network_watchers[AZURE_SUBSCRIPTION][0]
    +            .flow_logs[nw_name][0]
    +            .__class__.__name__
    +            == "FlowLog"
    +        )
    +        assert network.network_watchers[AZURE_SUBSCRIPTION][0].flow_logs == [
    +            FlowLog(enabled=True, retention_policy=90)
    +        ]
    +        assert (
    +            network.network_watchers[AZURE_SUBSCRIPTION][0].flow_logs[0].enabled is True
    +        )
    +        assert (
    +            network.network_watchers[AZURE_SUBSCRIPTION][0]
    +            .flow_logs[0]
    +            .retention_policy
    +            == 90
    +        )
    +
    +    def __get_bastion_hosts__(self):
    +        network = Network(set_mocked_azure_audit_info())
    +        assert (
    +            network.bastion_hosts[AZURE_SUBSCRIPTION][0].__class__.__name__
    +            == "BastionHost"
    +        )
    +        assert network.bastion_hosts[AZURE_SUBSCRIPTION][0].id == "id"
    +        assert network.bastion_hosts[AZURE_SUBSCRIPTION][0].name == "name"
    +        assert network.bastion_hosts[AZURE_SUBSCRIPTION][0].location == "location"
    +
    +    def __get_public_ip_addresses__(self):
    +        network = Network(set_mocked_azure_audit_info())
    +        assert (
    +            network.public_ip_addresses[AZURE_SUBSCRIPTION][0].__class__.__name__
    +            == "PublicIp"
    +        )
    +        assert network.public_ip_addresses[AZURE_SUBSCRIPTION][0].id == "id"
    +        assert network.public_ip_addresses[AZURE_SUBSCRIPTION][0].name == "name"
    +        assert network.public_ip_addresses[AZURE_SUBSCRIPTION][0].location == "location"
    +        assert (
    +            network.public_ip_addresses[AZURE_SUBSCRIPTION][0].ip_address
    +            == "ip_address"
    +        )
    diff --git a/tests/providers/azure/services/network/network_ssh_internet_access_restricted/network_ssh_internet_access_restricted_test.py b/tests/providers/azure/services/network/network_ssh_internet_access_restricted/network_ssh_internet_access_restricted_test.py
    new file mode 100644
    index 00000000000..8d001d82ce6
    --- /dev/null
    +++ b/tests/providers/azure/services/network/network_ssh_internet_access_restricted/network_ssh_internet_access_restricted_test.py
    @@ -0,0 +1,208 @@
    +from unittest import mock
    +from uuid import uuid4
    +
    +from azure.mgmt.network.models._models import SecurityRule
    +
    +from prowler.providers.azure.services.network.network_service import SecurityGroup
    +from tests.providers.azure.azure_fixtures import AZURE_SUBSCRIPTION
    +
    +
    +class Test_network_ssh_internet_access_restricted:
    +    def test_no_security_groups(self):
    +        network_client = mock.MagicMock
    +        network_client.security_groups = {}
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.network.network_service.Network",
    +            new=network_client,
    +        ) as service_client, mock.patch(
    +            "prowler.providers.azure.services.network.network_client.network_client",
    +            new=service_client,
    +        ):
    +            from prowler.providers.azure.services.network.network_ssh_internet_access_restricted.network_ssh_internet_access_restricted import (
    +                network_ssh_internet_access_restricted,
    +            )
    +
    +            check = network_ssh_internet_access_restricted()
    +            result = check.execute()
    +            assert len(result) == 0
    +
    +    def test_network_security_groups_no_security_rules(self):
    +        network_client = mock.MagicMock
    +        security_group_name = "Security Group Name"
    +        security_group_id = str(uuid4())
    +
    +        network_client.security_groups = {
    +            AZURE_SUBSCRIPTION: [
    +                SecurityGroup(
    +                    id=security_group_id,
    +                    name=security_group_name,
    +                    location="location",
    +                    security_rules=[],
    +                )
    +            ]
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.network.network_service.Network",
    +            new=network_client,
    +        ) as service_client, mock.patch(
    +            "prowler.providers.azure.services.network.network_client.network_client",
    +            new=service_client,
    +        ):
    +            from prowler.providers.azure.services.network.network_ssh_internet_access_restricted.network_ssh_internet_access_restricted import (
    +                network_ssh_internet_access_restricted,
    +            )
    +
    +            check = network_ssh_internet_access_restricted()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "PASS"
    +            assert (
    +                result[0].status_extended
    +                == f"Security Group {security_group_name} from subscription {AZURE_SUBSCRIPTION} has SSH internet access restricted."
    +            )
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == security_group_name
    +            assert result[0].resource_id == security_group_id
    +
    +    def test_network_security_groups_invalid_security_rules(self):
    +        network_client = mock.MagicMock
    +        security_group_name = "Security Group Name"
    +        security_group_id = str(uuid4())
    +
    +        network_client.security_groups = {
    +            AZURE_SUBSCRIPTION: [
    +                SecurityGroup(
    +                    id=security_group_id,
    +                    name=security_group_name,
    +                    location="location",
    +                    security_rules=[
    +                        SecurityRule(
    +                            destination_port_range="22",
    +                            protocol="TCP",
    +                            source_address_prefix="Internet",
    +                            access="Allow",
    +                            direction="Inbound",
    +                        )
    +                    ],
    +                )
    +            ]
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.network.network_service.Network",
    +            new=network_client,
    +        ) as service_client, mock.patch(
    +            "prowler.providers.azure.services.network.network_client.network_client",
    +            new=service_client,
    +        ):
    +            from prowler.providers.azure.services.network.network_ssh_internet_access_restricted.network_ssh_internet_access_restricted import (
    +                network_ssh_internet_access_restricted,
    +            )
    +
    +            check = network_ssh_internet_access_restricted()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "FAIL"
    +            assert (
    +                result[0].status_extended
    +                == f"Security Group {security_group_name} from subscription {AZURE_SUBSCRIPTION} has SSH internet access allowed."
    +            )
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == security_group_name
    +            assert result[0].resource_id == security_group_id
    +
    +    def test_network_security_groups_invalid_security_rules_range(self):
    +        network_client = mock.MagicMock
    +        security_group_name = "Security Group Name"
    +        security_group_id = str(uuid4())
    +
    +        network_client.security_groups = {
    +            AZURE_SUBSCRIPTION: [
    +                SecurityGroup(
    +                    id=security_group_id,
    +                    name=security_group_name,
    +                    location="location",
    +                    security_rules=[
    +                        SecurityRule(
    +                            destination_port_range="20-25",
    +                            protocol="TCP",
    +                            source_address_prefix="Internet",
    +                            access="Allow",
    +                            direction="Inbound",
    +                        )
    +                    ],
    +                )
    +            ]
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.network.network_service.Network",
    +            new=network_client,
    +        ) as service_client, mock.patch(
    +            "prowler.providers.azure.services.network.network_client.network_client",
    +            new=service_client,
    +        ):
    +            from prowler.providers.azure.services.network.network_ssh_internet_access_restricted.network_ssh_internet_access_restricted import (
    +                network_ssh_internet_access_restricted,
    +            )
    +
    +            check = network_ssh_internet_access_restricted()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "FAIL"
    +            assert (
    +                result[0].status_extended
    +                == f"Security Group {security_group_name} from subscription {AZURE_SUBSCRIPTION} has SSH internet access allowed."
    +            )
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == security_group_name
    +            assert result[0].resource_id == security_group_id
    +
    +    def test_network_security_groups_valid_security_rules(self):
    +        network_client = mock.MagicMock
    +        security_group_name = "Security Group Name"
    +        security_group_id = str(uuid4())
    +
    +        network_client.security_groups = {
    +            AZURE_SUBSCRIPTION: [
    +                SecurityGroup(
    +                    id=security_group_id,
    +                    name=security_group_name,
    +                    location="location",
    +                    security_rules=[
    +                        SecurityRule(
    +                            destination_port_range="23",
    +                            protocol="TCP",
    +                            source_address_prefix="Internet",
    +                            access="Allow",
    +                            direction="Inbound",
    +                        )
    +                    ],
    +                )
    +            ]
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.network.network_service.Network",
    +            new=network_client,
    +        ) as service_client, mock.patch(
    +            "prowler.providers.azure.services.network.network_client.network_client",
    +            new=service_client,
    +        ):
    +            from prowler.providers.azure.services.network.network_ssh_internet_access_restricted.network_ssh_internet_access_restricted import (
    +                network_ssh_internet_access_restricted,
    +            )
    +
    +            check = network_ssh_internet_access_restricted()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "PASS"
    +            assert (
    +                result[0].status_extended
    +                == f"Security Group {security_group_name} from subscription {AZURE_SUBSCRIPTION} has SSH internet access restricted."
    +            )
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == security_group_name
    +            assert result[0].resource_id == security_group_id
    diff --git a/tests/providers/azure/services/network/network_udp_internet_access_restricted/network_udp_internet_access_restricted_test.py b/tests/providers/azure/services/network/network_udp_internet_access_restricted/network_udp_internet_access_restricted_test.py
    new file mode 100644
    index 00000000000..f94001100b7
    --- /dev/null
    +++ b/tests/providers/azure/services/network/network_udp_internet_access_restricted/network_udp_internet_access_restricted_test.py
    @@ -0,0 +1,159 @@
    +from unittest import mock
    +from uuid import uuid4
    +
    +from azure.mgmt.network.models._models import SecurityRule
    +
    +from prowler.providers.azure.services.network.network_service import SecurityGroup
    +from tests.providers.azure.azure_fixtures import AZURE_SUBSCRIPTION
    +
    +
    +class Test_network_udp_internet_access_restricted:
    +    def test_no_security_groups(self):
    +        network_client = mock.MagicMock
    +        network_client.security_groups = {}
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.network.network_service.Network",
    +            new=network_client,
    +        ) as service_client, mock.patch(
    +            "prowler.providers.azure.services.network.network_client.network_client",
    +            new=service_client,
    +        ):
    +            from prowler.providers.azure.services.network.network_udp_internet_access_restricted.network_udp_internet_access_restricted import (
    +                network_udp_internet_access_restricted,
    +            )
    +
    +            check = network_udp_internet_access_restricted()
    +            result = check.execute()
    +            assert len(result) == 0
    +
    +    def test_network_security_groups_no_security_rules(self):
    +        network_client = mock.MagicMock
    +        security_group_name = "Security Group Name"
    +        security_group_id = str(uuid4())
    +
    +        network_client.security_groups = {
    +            AZURE_SUBSCRIPTION: [
    +                SecurityGroup(
    +                    id=security_group_id,
    +                    name=security_group_name,
    +                    location="location",
    +                    security_rules=[],
    +                )
    +            ]
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.network.network_service.Network",
    +            new=network_client,
    +        ) as service_client, mock.patch(
    +            "prowler.providers.azure.services.network.network_client.network_client",
    +            new=service_client,
    +        ):
    +            from prowler.providers.azure.services.network.network_udp_internet_access_restricted.network_udp_internet_access_restricted import (
    +                network_udp_internet_access_restricted,
    +            )
    +
    +            check = network_udp_internet_access_restricted()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "PASS"
    +            assert (
    +                result[0].status_extended
    +                == f"Security Group {security_group_name} from subscription {AZURE_SUBSCRIPTION} has UDP internet access restricted."
    +            )
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == security_group_name
    +            assert result[0].resource_id == security_group_id
    +
    +    def test_network_security_groups_invalid_security_rules(self):
    +        network_client = mock.MagicMock
    +        security_group_name = "Security Group Name"
    +        security_group_id = str(uuid4())
    +
    +        network_client.security_groups = {
    +            AZURE_SUBSCRIPTION: [
    +                SecurityGroup(
    +                    id=security_group_id,
    +                    name=security_group_name,
    +                    location="location",
    +                    security_rules=[
    +                        SecurityRule(
    +                            protocol="UDP",
    +                            source_address_prefix="Internet",
    +                            access="Allow",
    +                            direction="Inbound",
    +                        )
    +                    ],
    +                )
    +            ]
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.network.network_service.Network",
    +            new=network_client,
    +        ) as service_client, mock.patch(
    +            "prowler.providers.azure.services.network.network_client.network_client",
    +            new=service_client,
    +        ):
    +            from prowler.providers.azure.services.network.network_udp_internet_access_restricted.network_udp_internet_access_restricted import (
    +                network_udp_internet_access_restricted,
    +            )
    +
    +            check = network_udp_internet_access_restricted()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "FAIL"
    +            assert (
    +                result[0].status_extended
    +                == f"Security Group {security_group_name} from subscription {AZURE_SUBSCRIPTION} has UDP internet access allowed."
    +            )
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == security_group_name
    +            assert result[0].resource_id == security_group_id
    +
    +    def test_network_security_groups_valid_security_rules(self):
    +        network_client = mock.MagicMock
    +        security_group_name = "Security Group Name"
    +        security_group_id = str(uuid4())
    +
    +        network_client.security_groups = {
    +            AZURE_SUBSCRIPTION: [
    +                SecurityGroup(
    +                    id=security_group_id,
    +                    name=security_group_name,
    +                    location="location",
    +                    security_rules=[
    +                        SecurityRule(
    +                            protocol="TCP",
    +                            source_address_prefix="Internet",
    +                            access="Allow",
    +                            direction="Inbound",
    +                        )
    +                    ],
    +                )
    +            ]
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.network.network_service.Network",
    +            new=network_client,
    +        ) as service_client, mock.patch(
    +            "prowler.providers.azure.services.network.network_client.network_client",
    +            new=service_client,
    +        ):
    +            from prowler.providers.azure.services.network.network_udp_internet_access_restricted.network_udp_internet_access_restricted import (
    +                network_udp_internet_access_restricted,
    +            )
    +
    +            check = network_udp_internet_access_restricted()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "PASS"
    +            assert (
    +                result[0].status_extended
    +                == f"Security Group {security_group_name} from subscription {AZURE_SUBSCRIPTION} has UDP internet access restricted."
    +            )
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == security_group_name
    +            assert result[0].resource_id == security_group_id
    diff --git a/tests/providers/azure/services/network/network_watcher_enabled/network_watcher_enabled_test.py b/tests/providers/azure/services/network/network_watcher_enabled/network_watcher_enabled_test.py
    new file mode 100644
    index 00000000000..d4bef4046a5
    --- /dev/null
    +++ b/tests/providers/azure/services/network/network_watcher_enabled/network_watcher_enabled_test.py
    @@ -0,0 +1,110 @@
    +from unittest import mock
    +
    +from prowler.providers.azure.services.network.network_service import NetworkWatcher
    +from tests.providers.azure.azure_fixtures import AZURE_SUBSCRIPTION
    +
    +
    +class Test_network_watcher_enabled:
    +    def test_no_network_watchers(self):
    +        network_client = mock.MagicMock
    +        locations = []
    +        network_client.locations = {AZURE_SUBSCRIPTION: locations}
    +        network_client.security_groups = {}
    +        network_client.network_watchers = {}
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.network.network_service.Network",
    +            new=network_client,
    +        ) as service_client, mock.patch(
    +            "prowler.providers.azure.services.network.network_client.network_client",
    +            new=service_client,
    +        ):
    +            from prowler.providers.azure.services.network.network_watcher_enabled.network_watcher_enabled import (
    +                network_watcher_enabled,
    +            )
    +
    +            check = network_watcher_enabled()
    +            result = check.execute()
    +            assert len(result) == 0
    +
    +    def test_network_invalid_network_watchers(self):
    +        network_client = mock.MagicMock
    +        locations = ["location"]
    +        network_client.locations = {AZURE_SUBSCRIPTION: locations}
    +        network_watcher_name = "Network Watcher"
    +        network_watcher_id = f"/subscriptions/{AZURE_SUBSCRIPTION}/providers/Microsoft.Network/networkWatchers/{locations[0]}"
    +
    +        network_client.network_watchers = {
    +            AZURE_SUBSCRIPTION: [
    +                NetworkWatcher(
    +                    id=network_watcher_id,
    +                    name=network_watcher_name,
    +                    location=None,
    +                    flow_logs=[],
    +                )
    +            ]
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.network.network_service.Network",
    +            new=network_client,
    +        ) as service_client, mock.patch(
    +            "prowler.providers.azure.services.network.network_client.network_client",
    +            new=service_client,
    +        ):
    +            from prowler.providers.azure.services.network.network_watcher_enabled.network_watcher_enabled import (
    +                network_watcher_enabled,
    +            )
    +
    +            check = network_watcher_enabled()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "FAIL"
    +            assert (
    +                result[0].status_extended
    +                == f"Network Watcher is not enabled for the location {locations[0]} in subscription {AZURE_SUBSCRIPTION}."
    +            )
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == network_watcher_name
    +            assert result[0].resource_id == network_watcher_id
    +
    +    def test_network_valid_network_watchers(self):
    +        network_client = mock.MagicMock
    +        locations = ["location"]
    +        network_client.locations = {AZURE_SUBSCRIPTION: locations}
    +        network_watcher_name = "Network Watcher"
    +        network_watcher_id = f"/subscriptions/{AZURE_SUBSCRIPTION}/providers/Microsoft.Network/networkWatchers/{locations[0]}"
    +
    +        network_client.network_watchers = {
    +            AZURE_SUBSCRIPTION: [
    +                NetworkWatcher(
    +                    id=network_watcher_id,
    +                    name=network_watcher_name,
    +                    location="location",
    +                    flow_logs=[],
    +                )
    +            ]
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.network.network_service.Network",
    +            new=network_client,
    +        ) as service_client, mock.patch(
    +            "prowler.providers.azure.services.network.network_client.network_client",
    +            new=service_client,
    +        ):
    +            from prowler.providers.azure.services.network.network_watcher_enabled.network_watcher_enabled import (
    +                network_watcher_enabled,
    +            )
    +
    +            check = network_watcher_enabled()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "PASS"
    +            assert (
    +                result[0].status_extended
    +                == f"Network Watcher is enabled for the location {locations[0]} in subscription {AZURE_SUBSCRIPTION}."
    +            )
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == network_watcher_name
    +            assert result[0].resource_id == network_watcher_id
    diff --git a/tests/providers/azure/services/policy/policy_ensure_asc_enforcement_enabled/policy_ensure_asc_enforcement_enabled_test.py b/tests/providers/azure/services/policy/policy_ensure_asc_enforcement_enabled/policy_ensure_asc_enforcement_enabled_test.py
    new file mode 100644
    index 00000000000..398ff8b4992
    --- /dev/null
    +++ b/tests/providers/azure/services/policy/policy_ensure_asc_enforcement_enabled/policy_ensure_asc_enforcement_enabled_test.py
    @@ -0,0 +1,122 @@
    +from unittest import mock
    +from uuid import uuid4
    +
    +from prowler.providers.azure.services.policy.policy_service import PolicyAssigment
    +from tests.providers.azure.azure_fixtures import AZURE_SUBSCRIPTION
    +
    +
    +class Test_policy_ensure_asc_enforcement_enabled:
    +    def test_policy_no_subscriptions(self):
    +        policy_client = mock.MagicMock
    +        policy_client.policy_assigments = {}
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.policy.policy_ensure_asc_enforcement_enabled.policy_ensure_asc_enforcement_enabled.policy_client",
    +            new=policy_client,
    +        ):
    +            from prowler.providers.azure.services.policy.policy_ensure_asc_enforcement_enabled.policy_ensure_asc_enforcement_enabled import (
    +                policy_ensure_asc_enforcement_enabled,
    +            )
    +
    +            check = policy_ensure_asc_enforcement_enabled()
    +            result = check.execute()
    +            assert len(result) == 0
    +
    +    def test_policy_subscription_empty(self):
    +        policy_client = mock.MagicMock
    +        policy_client.policy_assigments = {AZURE_SUBSCRIPTION: {}}
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.policy.policy_ensure_asc_enforcement_enabled.policy_ensure_asc_enforcement_enabled.policy_client",
    +            new=policy_client,
    +        ):
    +            from prowler.providers.azure.services.policy.policy_ensure_asc_enforcement_enabled.policy_ensure_asc_enforcement_enabled import (
    +                policy_ensure_asc_enforcement_enabled,
    +            )
    +
    +            check = policy_ensure_asc_enforcement_enabled()
    +            result = check.execute()
    +            assert len(result) == 0
    +
    +    def test_policy_subscription_no_asc(self):
    +        policy_client = mock.MagicMock
    +        resource_id = uuid4()
    +        policy_client.policy_assigments = {
    +            AZURE_SUBSCRIPTION: {
    +                "policy-1": PolicyAssigment(id=resource_id, enforcement_mode="Default")
    +            }
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.policy.policy_ensure_asc_enforcement_enabled.policy_ensure_asc_enforcement_enabled.policy_client",
    +            new=policy_client,
    +        ):
    +            from prowler.providers.azure.services.policy.policy_ensure_asc_enforcement_enabled.policy_ensure_asc_enforcement_enabled import (
    +                policy_ensure_asc_enforcement_enabled,
    +            )
    +
    +            check = policy_ensure_asc_enforcement_enabled()
    +            result = check.execute()
    +            assert len(result) == 0
    +
    +    def test_policy_subscription_asc_default(self):
    +        policy_client = mock.MagicMock
    +        resource_id = uuid4()
    +        policy_client.policy_assigments = {
    +            AZURE_SUBSCRIPTION: {
    +                "SecurityCenterBuiltIn": PolicyAssigment(
    +                    id=resource_id, enforcement_mode="Default"
    +                )
    +            }
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.policy.policy_ensure_asc_enforcement_enabled.policy_ensure_asc_enforcement_enabled.policy_client",
    +            new=policy_client,
    +        ):
    +            from prowler.providers.azure.services.policy.policy_ensure_asc_enforcement_enabled.policy_ensure_asc_enforcement_enabled import (
    +                policy_ensure_asc_enforcement_enabled,
    +            )
    +
    +            check = policy_ensure_asc_enforcement_enabled()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "PASS"
    +            assert (
    +                result[0].status_extended
    +                == f"Policy assigment '{resource_id}' is configured with enforcement mode 'Default'."
    +            )
    +            assert result[0].resource_id == resource_id
    +            assert result[0].resource_name == "SecurityCenterBuiltIn"
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +
    +    def test_policy_subscription_asc_not_default(self):
    +        policy_client = mock.MagicMock
    +        resource_id = uuid4()
    +        policy_client.policy_assigments = {
    +            AZURE_SUBSCRIPTION: {
    +                "SecurityCenterBuiltIn": PolicyAssigment(
    +                    id=resource_id, enforcement_mode="DoNotEnforce"
    +                )
    +            }
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.policy.policy_ensure_asc_enforcement_enabled.policy_ensure_asc_enforcement_enabled.policy_client",
    +            new=policy_client,
    +        ):
    +            from prowler.providers.azure.services.policy.policy_ensure_asc_enforcement_enabled.policy_ensure_asc_enforcement_enabled import (
    +                policy_ensure_asc_enforcement_enabled,
    +            )
    +
    +            check = policy_ensure_asc_enforcement_enabled()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "FAIL"
    +            assert (
    +                result[0].status_extended
    +                == f"Policy assigment '{resource_id}' is not configured with enforcement mode Default."
    +            )
    +            assert result[0].resource_id == resource_id
    +            assert result[0].resource_name == "SecurityCenterBuiltIn"
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    diff --git a/tests/providers/azure/services/policy/policy_service_test.py b/tests/providers/azure/services/policy/policy_service_test.py
    new file mode 100644
    index 00000000000..35266af4663
    --- /dev/null
    +++ b/tests/providers/azure/services/policy/policy_service_test.py
    @@ -0,0 +1,46 @@
    +from unittest.mock import patch
    +
    +from prowler.providers.azure.services.policy.policy_service import (
    +    Policy,
    +    PolicyAssigment,
    +)
    +from tests.providers.azure.azure_fixtures import (
    +    AZURE_SUBSCRIPTION,
    +    set_mocked_azure_audit_info,
    +)
    +
    +
    +def mock_policy_assigments(_):
    +    return {
    +        AZURE_SUBSCRIPTION: {
    +            "policy-1": PolicyAssigment(id="id-1", enforcement_mode="Default")
    +        }
    +    }
    +
    +
    +@patch(
    +    "prowler.providers.azure.services.policy.policy_service.Policy.__get_policy_assigments__",
    +    new=mock_policy_assigments,
    +)
    +class Test_AppInsights_Service:
    +    def test__get_client__(self):
    +        policy = Policy(set_mocked_azure_audit_info())
    +        assert policy.clients[AZURE_SUBSCRIPTION].__class__.__name__ == "PolicyClient"
    +
    +    def test__get_subscriptions__(self):
    +        policy = Policy(set_mocked_azure_audit_info())
    +        assert policy.subscriptions.__class__.__name__ == "dict"
    +
    +    def test__get_policy_assigments__(self):
    +        policy = Policy(set_mocked_azure_audit_info())
    +        assert policy.policy_assigments.__class__.__name__ == "dict"
    +        assert policy.policy_assigments[AZURE_SUBSCRIPTION].__class__.__name__ == "dict"
    +        assert (
    +            policy.policy_assigments[AZURE_SUBSCRIPTION]["policy-1"].__class__.__name__
    +            == "PolicyAssigment"
    +        )
    +        assert policy.policy_assigments[AZURE_SUBSCRIPTION]["policy-1"].id == "id-1"
    +        assert (
    +            policy.policy_assigments[AZURE_SUBSCRIPTION]["policy-1"].enforcement_mode
    +            == "Default"
    +        )
    diff --git a/tests/providers/azure/services/postgresql/postgresql_flexible_server_allow_access_services_disabled/postgresql_flexible_server_allow_access_services_disabled_test.py b/tests/providers/azure/services/postgresql/postgresql_flexible_server_allow_access_services_disabled/postgresql_flexible_server_allow_access_services_disabled_test.py
    new file mode 100644
    index 00000000000..87ca80a6ffe
    --- /dev/null
    +++ b/tests/providers/azure/services/postgresql/postgresql_flexible_server_allow_access_services_disabled/postgresql_flexible_server_allow_access_services_disabled_test.py
    @@ -0,0 +1,120 @@
    +from unittest import mock
    +from uuid import uuid4
    +
    +from prowler.providers.azure.services.postgresql.postgresql_service import (
    +    Firewall,
    +    Server,
    +)
    +from tests.providers.azure.azure_fixtures import AZURE_SUBSCRIPTION
    +
    +
    +class Test_postgresql_flexible_server_allow_access_services_disabled:
    +    def test_no_postgresql_flexible_servers(self):
    +        postgresql_client = mock.MagicMock
    +        postgresql_client.flexible_servers = {}
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.postgresql.postgresql_flexible_server_allow_access_services_disabled.postgresql_flexible_server_allow_access_services_disabled.postgresql_client",
    +            new=postgresql_client,
    +        ):
    +            from prowler.providers.azure.services.postgresql.postgresql_flexible_server_allow_access_services_disabled.postgresql_flexible_server_allow_access_services_disabled import (
    +                postgresql_flexible_server_allow_access_services_disabled,
    +            )
    +
    +            check = postgresql_flexible_server_allow_access_services_disabled()
    +            result = check.execute()
    +            assert len(result) == 0
    +
    +    def test_flexible_servers_allow_public_access(self):
    +        postgresql_client = mock.MagicMock
    +        postgresql_server_name = "Postgres Flexible Server Name"
    +        postgresql_server_id = str(uuid4())
    +        firewall = Firewall(
    +            id=str(uuid4()),
    +            name="firewall_name",
    +            start_ip="0.0.0.0",
    +            end_ip="0.0.0.0",
    +        )
    +        postgresql_client.flexible_servers = {
    +            AZURE_SUBSCRIPTION: [
    +                Server(
    +                    id=postgresql_server_id,
    +                    name=postgresql_server_name,
    +                    resource_group="resource_group",
    +                    require_secure_transport="OFF",
    +                    log_checkpoints="OFF",
    +                    log_connections="OFF",
    +                    log_disconnections="OFF",
    +                    connection_throttling="OFF",
    +                    log_retention_days="3",
    +                    firewall=[firewall],
    +                )
    +            ]
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.postgresql.postgresql_flexible_server_allow_access_services_disabled.postgresql_flexible_server_allow_access_services_disabled.postgresql_client",
    +            new=postgresql_client,
    +        ):
    +            from prowler.providers.azure.services.postgresql.postgresql_flexible_server_allow_access_services_disabled.postgresql_flexible_server_allow_access_services_disabled import (
    +                postgresql_flexible_server_allow_access_services_disabled,
    +            )
    +
    +            check = postgresql_flexible_server_allow_access_services_disabled()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "FAIL"
    +            assert (
    +                result[0].status_extended
    +                == f"Flexible Postgresql server {postgresql_server_name} from subscription {AZURE_SUBSCRIPTION} has allow public access from any Azure service enabled"
    +            )
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == postgresql_server_name
    +            assert result[0].resource_id == postgresql_server_id
    +
    +    def test_flexible_servers_dont_allow_public_access(self):
    +        postgresql_client = mock.MagicMock
    +        postgresql_server_name = "Postgres Flexible Server Name"
    +        postgresql_server_id = str(uuid4())
    +        firewall = Firewall(
    +            id=str(uuid4()),
    +            name="firewall_name",
    +            start_ip="1.1.1.1",
    +            end_ip="1.1.1.1",
    +        )
    +        postgresql_client.flexible_servers = {
    +            AZURE_SUBSCRIPTION: [
    +                Server(
    +                    id=postgresql_server_id,
    +                    name=postgresql_server_name,
    +                    resource_group="resource_group",
    +                    require_secure_transport="OFF",
    +                    log_checkpoints="OFF",
    +                    log_connections="OFF",
    +                    log_disconnections="OFF",
    +                    connection_throttling="OFF",
    +                    log_retention_days="3",
    +                    firewall=[firewall],
    +                )
    +            ]
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.postgresql.postgresql_flexible_server_allow_access_services_disabled.postgresql_flexible_server_allow_access_services_disabled.postgresql_client",
    +            new=postgresql_client,
    +        ):
    +            from prowler.providers.azure.services.postgresql.postgresql_flexible_server_allow_access_services_disabled.postgresql_flexible_server_allow_access_services_disabled import (
    +                postgresql_flexible_server_allow_access_services_disabled,
    +            )
    +
    +            check = postgresql_flexible_server_allow_access_services_disabled()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "PASS"
    +            assert (
    +                result[0].status_extended
    +                == f"Flexible Postgresql server {postgresql_server_name} from subscription {AZURE_SUBSCRIPTION} has allow public access from any Azure service disabled"
    +            )
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == postgresql_server_name
    +            assert result[0].resource_id == postgresql_server_id
    diff --git a/tests/providers/azure/services/postgresql/postgresql_flexible_server_connection_throttling_on/postgresql_flexible_server_connection_throttling_on_test.py b/tests/providers/azure/services/postgresql/postgresql_flexible_server_connection_throttling_on/postgresql_flexible_server_connection_throttling_on_test.py
    new file mode 100644
    index 00000000000..59efcbf52a3
    --- /dev/null
    +++ b/tests/providers/azure/services/postgresql/postgresql_flexible_server_connection_throttling_on/postgresql_flexible_server_connection_throttling_on_test.py
    @@ -0,0 +1,105 @@
    +from unittest import mock
    +from uuid import uuid4
    +
    +from prowler.providers.azure.services.postgresql.postgresql_service import Server
    +from tests.providers.azure.azure_fixtures import AZURE_SUBSCRIPTION
    +
    +
    +class Test_postgresql_flexible_server_connection_throttling_on:
    +    def test_no_postgresql_flexible_servers(self):
    +        postgresql_client = mock.MagicMock
    +        postgresql_client.flexible_servers = {}
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.postgresql.postgresql_flexible_server_connection_throttling_on.postgresql_flexible_server_connection_throttling_on.postgresql_client",
    +            new=postgresql_client,
    +        ):
    +            from prowler.providers.azure.services.postgresql.postgresql_flexible_server_connection_throttling_on.postgresql_flexible_server_connection_throttling_on import (
    +                postgresql_flexible_server_connection_throttling_on,
    +            )
    +
    +            check = postgresql_flexible_server_connection_throttling_on()
    +            result = check.execute()
    +            assert len(result) == 0
    +
    +    def test_flexible_servers_connection_throttling_off(self):
    +        postgresql_client = mock.MagicMock
    +        postgresql_server_name = "Postgres Flexible Server Name"
    +        postgresql_server_id = str(uuid4())
    +        postgresql_client.flexible_servers = {
    +            AZURE_SUBSCRIPTION: [
    +                Server(
    +                    id=postgresql_server_id,
    +                    name=postgresql_server_name,
    +                    resource_group="resource_group",
    +                    require_secure_transport="OFF",
    +                    log_checkpoints="OFF",
    +                    log_connections="OFF",
    +                    log_disconnections="OFF",
    +                    connection_throttling="OFF",
    +                    log_retention_days="3",
    +                    firewall=None,
    +                )
    +            ]
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.postgresql.postgresql_flexible_server_connection_throttling_on.postgresql_flexible_server_connection_throttling_on.postgresql_client",
    +            new=postgresql_client,
    +        ):
    +            from prowler.providers.azure.services.postgresql.postgresql_flexible_server_connection_throttling_on.postgresql_flexible_server_connection_throttling_on import (
    +                postgresql_flexible_server_connection_throttling_on,
    +            )
    +
    +            check = postgresql_flexible_server_connection_throttling_on()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "FAIL"
    +            assert (
    +                result[0].status_extended
    +                == f"Flexible Postgresql server {postgresql_server_name} from subscription {AZURE_SUBSCRIPTION} has connection_throttling disabled"
    +            )
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == postgresql_server_name
    +            assert result[0].resource_id == postgresql_server_id
    +
    +    def test_flexible_servers_connection_throttling_on(self):
    +        postgresql_client = mock.MagicMock
    +        postgresql_server_name = "Postgres Flexible Server Name"
    +        postgresql_server_id = str(uuid4())
    +        postgresql_client.flexible_servers = {
    +            AZURE_SUBSCRIPTION: [
    +                Server(
    +                    id=postgresql_server_id,
    +                    name=postgresql_server_name,
    +                    resource_group="resource_group",
    +                    require_secure_transport="OFF",
    +                    log_checkpoints="ON",
    +                    log_connections="ON",
    +                    log_disconnections="ON",
    +                    connection_throttling="ON",
    +                    log_retention_days="3",
    +                    firewall=None,
    +                )
    +            ]
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.postgresql.postgresql_flexible_server_connection_throttling_on.postgresql_flexible_server_connection_throttling_on.postgresql_client",
    +            new=postgresql_client,
    +        ):
    +            from prowler.providers.azure.services.postgresql.postgresql_flexible_server_connection_throttling_on.postgresql_flexible_server_connection_throttling_on import (
    +                postgresql_flexible_server_connection_throttling_on,
    +            )
    +
    +            check = postgresql_flexible_server_connection_throttling_on()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "PASS"
    +            assert (
    +                result[0].status_extended
    +                == f"Flexible Postgresql server {postgresql_server_name} from subscription {AZURE_SUBSCRIPTION} has connection_throttling enabled"
    +            )
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == postgresql_server_name
    +            assert result[0].resource_id == postgresql_server_id
    diff --git a/tests/providers/azure/services/postgresql/postgresql_flexible_server_enforce_ssl_enabled/postgresql_flexible_server_enforce_ssl_enabled_test.py b/tests/providers/azure/services/postgresql/postgresql_flexible_server_enforce_ssl_enabled/postgresql_flexible_server_enforce_ssl_enabled_test.py
    new file mode 100644
    index 00000000000..0544c412db1
    --- /dev/null
    +++ b/tests/providers/azure/services/postgresql/postgresql_flexible_server_enforce_ssl_enabled/postgresql_flexible_server_enforce_ssl_enabled_test.py
    @@ -0,0 +1,105 @@
    +from unittest import mock
    +from uuid import uuid4
    +
    +from prowler.providers.azure.services.postgresql.postgresql_service import Server
    +from tests.providers.azure.azure_fixtures import AZURE_SUBSCRIPTION
    +
    +
    +class Test_postgresql_flexible_server_enforce_ssl_enabled:
    +    def test_no_postgresql_flexible_servers(self):
    +        postgresql_client = mock.MagicMock
    +        postgresql_client.flexible_servers = {}
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.postgresql.postgresql_flexible_server_enforce_ssl_enabled.postgresql_flexible_server_enforce_ssl_enabled.postgresql_client",
    +            new=postgresql_client,
    +        ):
    +            from prowler.providers.azure.services.postgresql.postgresql_flexible_server_enforce_ssl_enabled.postgresql_flexible_server_enforce_ssl_enabled import (
    +                postgresql_flexible_server_enforce_ssl_enabled,
    +            )
    +
    +            check = postgresql_flexible_server_enforce_ssl_enabled()
    +            result = check.execute()
    +            assert len(result) == 0
    +
    +    def test_flexible_servers_require_secure_transport_off(self):
    +        postgresql_client = mock.MagicMock
    +        postgresql_server_name = "Postgres Flexible Server Name"
    +        postgresql_server_id = str(uuid4())
    +        postgresql_client.flexible_servers = {
    +            AZURE_SUBSCRIPTION: [
    +                Server(
    +                    id=postgresql_server_id,
    +                    name=postgresql_server_name,
    +                    resource_group="resource_group",
    +                    require_secure_transport="OFF",
    +                    log_checkpoints="ON",
    +                    log_connections="ON",
    +                    log_disconnections="ON",
    +                    connection_throttling="ON",
    +                    log_retention_days="3",
    +                    firewall=None,
    +                )
    +            ]
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.postgresql.postgresql_flexible_server_enforce_ssl_enabled.postgresql_flexible_server_enforce_ssl_enabled.postgresql_client",
    +            new=postgresql_client,
    +        ):
    +            from prowler.providers.azure.services.postgresql.postgresql_flexible_server_enforce_ssl_enabled.postgresql_flexible_server_enforce_ssl_enabled import (
    +                postgresql_flexible_server_enforce_ssl_enabled,
    +            )
    +
    +            check = postgresql_flexible_server_enforce_ssl_enabled()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "FAIL"
    +            assert (
    +                result[0].status_extended
    +                == f"Flexible Postgresql server {postgresql_server_name} from subscription {AZURE_SUBSCRIPTION} has enforce ssl disabled"
    +            )
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == postgresql_server_name
    +            assert result[0].resource_id == postgresql_server_id
    +
    +    def test_flexible_servers_require_secure_transport_on(self):
    +        postgresql_client = mock.MagicMock
    +        postgresql_server_name = "Postgres Flexible Server Name"
    +        postgresql_server_id = str(uuid4())
    +        postgresql_client.flexible_servers = {
    +            AZURE_SUBSCRIPTION: [
    +                Server(
    +                    id=postgresql_server_id,
    +                    name=postgresql_server_name,
    +                    resource_group="resource_group",
    +                    require_secure_transport="ON",
    +                    log_checkpoints="ON",
    +                    log_connections="ON",
    +                    log_disconnections="ON",
    +                    connection_throttling="ON",
    +                    log_retention_days="3",
    +                    firewall=None,
    +                )
    +            ]
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.postgresql.postgresql_flexible_server_enforce_ssl_enabled.postgresql_flexible_server_enforce_ssl_enabled.postgresql_client",
    +            new=postgresql_client,
    +        ):
    +            from prowler.providers.azure.services.postgresql.postgresql_flexible_server_enforce_ssl_enabled.postgresql_flexible_server_enforce_ssl_enabled import (
    +                postgresql_flexible_server_enforce_ssl_enabled,
    +            )
    +
    +            check = postgresql_flexible_server_enforce_ssl_enabled()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "PASS"
    +            assert (
    +                result[0].status_extended
    +                == f"Flexible Postgresql server {postgresql_server_name} from subscription {AZURE_SUBSCRIPTION} has enforce ssl enabled"
    +            )
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == postgresql_server_name
    +            assert result[0].resource_id == postgresql_server_id
    diff --git a/tests/providers/azure/services/postgresql/postgresql_flexible_server_log_checkpoints_on/postgresql_flexible_server_log_checkpoints_on_test.py b/tests/providers/azure/services/postgresql/postgresql_flexible_server_log_checkpoints_on/postgresql_flexible_server_log_checkpoints_on_test.py
    new file mode 100644
    index 00000000000..2d2960cb1c7
    --- /dev/null
    +++ b/tests/providers/azure/services/postgresql/postgresql_flexible_server_log_checkpoints_on/postgresql_flexible_server_log_checkpoints_on_test.py
    @@ -0,0 +1,105 @@
    +from unittest import mock
    +from uuid import uuid4
    +
    +from prowler.providers.azure.services.postgresql.postgresql_service import Server
    +from tests.providers.azure.azure_fixtures import AZURE_SUBSCRIPTION
    +
    +
    +class Test_postgresql_flexible_server_log_checkpoints_on:
    +    def test_no_postgresql_flexible_servers(self):
    +        postgresql_client = mock.MagicMock
    +        postgresql_client.flexible_servers = {}
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.postgresql.postgresql_flexible_server_log_checkpoints_on.postgresql_flexible_server_log_checkpoints_on.postgresql_client",
    +            new=postgresql_client,
    +        ):
    +            from prowler.providers.azure.services.postgresql.postgresql_flexible_server_log_checkpoints_on.postgresql_flexible_server_log_checkpoints_on import (
    +                postgresql_flexible_server_log_checkpoints_on,
    +            )
    +
    +            check = postgresql_flexible_server_log_checkpoints_on()
    +            result = check.execute()
    +            assert len(result) == 0
    +
    +    def test_flexible_servers_log_checkpoints_off(self):
    +        postgresql_client = mock.MagicMock
    +        postgresql_server_name = "Postgres Flexible Server Name"
    +        postgresql_server_id = str(uuid4())
    +        postgresql_client.flexible_servers = {
    +            AZURE_SUBSCRIPTION: [
    +                Server(
    +                    id=postgresql_server_id,
    +                    name=postgresql_server_name,
    +                    resource_group="resource_group",
    +                    require_secure_transport="ON",
    +                    log_checkpoints="OFF",
    +                    log_connections="ON",
    +                    log_disconnections="ON",
    +                    connection_throttling="ON",
    +                    log_retention_days="3",
    +                    firewall=None,
    +                )
    +            ]
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.postgresql.postgresql_flexible_server_log_checkpoints_on.postgresql_flexible_server_log_checkpoints_on.postgresql_client",
    +            new=postgresql_client,
    +        ):
    +            from prowler.providers.azure.services.postgresql.postgresql_flexible_server_log_checkpoints_on.postgresql_flexible_server_log_checkpoints_on import (
    +                postgresql_flexible_server_log_checkpoints_on,
    +            )
    +
    +            check = postgresql_flexible_server_log_checkpoints_on()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "FAIL"
    +            assert (
    +                result[0].status_extended
    +                == f"Flexible Postgresql server {postgresql_server_name} from subscription {AZURE_SUBSCRIPTION} has log_checkpoints disabled"
    +            )
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == postgresql_server_name
    +            assert result[0].resource_id == postgresql_server_id
    +
    +    def test_flexible_servers_log_checkpoints_on(self):
    +        postgresql_client = mock.MagicMock
    +        postgresql_server_name = "Postgres Flexible Server Name"
    +        postgresql_server_id = str(uuid4())
    +        postgresql_client.flexible_servers = {
    +            AZURE_SUBSCRIPTION: [
    +                Server(
    +                    id=postgresql_server_id,
    +                    name=postgresql_server_name,
    +                    resource_group="resource_group",
    +                    require_secure_transport="ON",
    +                    log_checkpoints="ON",
    +                    log_connections="ON",
    +                    log_disconnections="ON",
    +                    connection_throttling="ON",
    +                    log_retention_days="3",
    +                    firewall=None,
    +                )
    +            ]
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.postgresql.postgresql_flexible_server_log_checkpoints_on.postgresql_flexible_server_log_checkpoints_on.postgresql_client",
    +            new=postgresql_client,
    +        ):
    +            from prowler.providers.azure.services.postgresql.postgresql_flexible_server_log_checkpoints_on.postgresql_flexible_server_log_checkpoints_on import (
    +                postgresql_flexible_server_log_checkpoints_on,
    +            )
    +
    +            check = postgresql_flexible_server_log_checkpoints_on()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "PASS"
    +            assert (
    +                result[0].status_extended
    +                == f"Flexible Postgresql server {postgresql_server_name} from subscription {AZURE_SUBSCRIPTION} has log_checkpoints enabled"
    +            )
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == postgresql_server_name
    +            assert result[0].resource_id == postgresql_server_id
    diff --git a/tests/providers/azure/services/postgresql/postgresql_flexible_server_log_connections_on/postgresql_flexible_server_log_connections_on_test.py b/tests/providers/azure/services/postgresql/postgresql_flexible_server_log_connections_on/postgresql_flexible_server_log_connections_on_test.py
    new file mode 100644
    index 00000000000..98e7724b3c3
    --- /dev/null
    +++ b/tests/providers/azure/services/postgresql/postgresql_flexible_server_log_connections_on/postgresql_flexible_server_log_connections_on_test.py
    @@ -0,0 +1,105 @@
    +from unittest import mock
    +from uuid import uuid4
    +
    +from prowler.providers.azure.services.postgresql.postgresql_service import Server
    +from tests.providers.azure.azure_fixtures import AZURE_SUBSCRIPTION
    +
    +
    +class Test_postgresql_flexible_server_log_connections_on:
    +    def test_no_postgresql_flexible_servers(self):
    +        postgresql_client = mock.MagicMock
    +        postgresql_client.flexible_servers = {}
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.postgresql.postgresql_flexible_server_log_connections_on.postgresql_flexible_server_log_connections_on.postgresql_client",
    +            new=postgresql_client,
    +        ):
    +            from prowler.providers.azure.services.postgresql.postgresql_flexible_server_log_connections_on.postgresql_flexible_server_log_connections_on import (
    +                postgresql_flexible_server_log_connections_on,
    +            )
    +
    +            check = postgresql_flexible_server_log_connections_on()
    +            result = check.execute()
    +            assert len(result) == 0
    +
    +    def test_flexible_servers_log_connections_off(self):
    +        postgresql_client = mock.MagicMock
    +        postgresql_server_name = "Postgres Flexible Server Name"
    +        postgresql_server_id = str(uuid4())
    +        postgresql_client.flexible_servers = {
    +            AZURE_SUBSCRIPTION: [
    +                Server(
    +                    id=postgresql_server_id,
    +                    name=postgresql_server_name,
    +                    resource_group="resource_group",
    +                    require_secure_transport="OFF",
    +                    log_checkpoints="OFF",
    +                    log_connections="OFF",
    +                    log_disconnections="OFF",
    +                    connection_throttling="ON",
    +                    log_retention_days="3",
    +                    firewall=None,
    +                )
    +            ]
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.postgresql.postgresql_flexible_server_log_connections_on.postgresql_flexible_server_log_connections_on.postgresql_client",
    +            new=postgresql_client,
    +        ):
    +            from prowler.providers.azure.services.postgresql.postgresql_flexible_server_log_connections_on.postgresql_flexible_server_log_connections_on import (
    +                postgresql_flexible_server_log_connections_on,
    +            )
    +
    +            check = postgresql_flexible_server_log_connections_on()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "FAIL"
    +            assert (
    +                result[0].status_extended
    +                == f"Flexible Postgresql server {postgresql_server_name} from subscription {AZURE_SUBSCRIPTION} has log_connections disabled"
    +            )
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == postgresql_server_name
    +            assert result[0].resource_id == postgresql_server_id
    +
    +    def test_flexible_servers_log_connections_on(self):
    +        postgresql_client = mock.MagicMock
    +        postgresql_server_name = "Postgres Flexible Server Name"
    +        postgresql_server_id = str(uuid4())
    +        postgresql_client.flexible_servers = {
    +            AZURE_SUBSCRIPTION: [
    +                Server(
    +                    id=postgresql_server_id,
    +                    name=postgresql_server_name,
    +                    resource_group="resource_group",
    +                    require_secure_transport="OFF",
    +                    log_checkpoints="ON",
    +                    log_connections="ON",
    +                    log_disconnections="ON",
    +                    connection_throttling="ON",
    +                    log_retention_days="3",
    +                    firewall=None,
    +                )
    +            ]
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.postgresql.postgresql_flexible_server_log_connections_on.postgresql_flexible_server_log_connections_on.postgresql_client",
    +            new=postgresql_client,
    +        ):
    +            from prowler.providers.azure.services.postgresql.postgresql_flexible_server_log_connections_on.postgresql_flexible_server_log_connections_on import (
    +                postgresql_flexible_server_log_connections_on,
    +            )
    +
    +            check = postgresql_flexible_server_log_connections_on()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "PASS"
    +            assert (
    +                result[0].status_extended
    +                == f"Flexible Postgresql server {postgresql_server_name} from subscription {AZURE_SUBSCRIPTION} has log_connections enabled"
    +            )
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == postgresql_server_name
    +            assert result[0].resource_id == postgresql_server_id
    diff --git a/tests/providers/azure/services/postgresql/postgresql_flexible_server_log_disconnections_on/postgresql_flexible_server_log_disconnections_on_test.py b/tests/providers/azure/services/postgresql/postgresql_flexible_server_log_disconnections_on/postgresql_flexible_server_log_disconnections_on_test.py
    new file mode 100644
    index 00000000000..fff5d27b081
    --- /dev/null
    +++ b/tests/providers/azure/services/postgresql/postgresql_flexible_server_log_disconnections_on/postgresql_flexible_server_log_disconnections_on_test.py
    @@ -0,0 +1,105 @@
    +from unittest import mock
    +from uuid import uuid4
    +
    +from prowler.providers.azure.services.postgresql.postgresql_service import Server
    +from tests.providers.azure.azure_fixtures import AZURE_SUBSCRIPTION
    +
    +
    +class Test_postgresql_flexible_server_log_disconnections_on:
    +    def test_no_postgresql_flexible_servers(self):
    +        postgresql_client = mock.MagicMock
    +        postgresql_client.flexible_servers = {}
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.postgresql.postgresql_flexible_server_log_disconnections_on.postgresql_flexible_server_log_disconnections_on.postgresql_client",
    +            new=postgresql_client,
    +        ):
    +            from prowler.providers.azure.services.postgresql.postgresql_flexible_server_log_disconnections_on.postgresql_flexible_server_log_disconnections_on import (
    +                postgresql_flexible_server_log_disconnections_on,
    +            )
    +
    +            check = postgresql_flexible_server_log_disconnections_on()
    +            result = check.execute()
    +            assert len(result) == 0
    +
    +    def test_flexible_servers_log_connections_off(self):
    +        postgresql_client = mock.MagicMock
    +        postgresql_server_name = "Postgres Flexible Server Name"
    +        postgresql_server_id = str(uuid4())
    +        postgresql_client.flexible_servers = {
    +            AZURE_SUBSCRIPTION: [
    +                Server(
    +                    id=postgresql_server_id,
    +                    name=postgresql_server_name,
    +                    resource_group="resource_group",
    +                    require_secure_transport="OFF",
    +                    log_checkpoints="OFF",
    +                    log_connections="OFF",
    +                    log_disconnections="OFF",
    +                    connection_throttling="OFF",
    +                    log_retention_days="3",
    +                    firewall=None,
    +                )
    +            ]
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.postgresql.postgresql_flexible_server_log_disconnections_on.postgresql_flexible_server_log_disconnections_on.postgresql_client",
    +            new=postgresql_client,
    +        ):
    +            from prowler.providers.azure.services.postgresql.postgresql_flexible_server_log_disconnections_on.postgresql_flexible_server_log_disconnections_on import (
    +                postgresql_flexible_server_log_disconnections_on,
    +            )
    +
    +            check = postgresql_flexible_server_log_disconnections_on()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "FAIL"
    +            assert (
    +                result[0].status_extended
    +                == f"Flexible Postgresql server {postgresql_server_name} from subscription {AZURE_SUBSCRIPTION} has log_disconnections disabled"
    +            )
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == postgresql_server_name
    +            assert result[0].resource_id == postgresql_server_id
    +
    +    def test_flexible_servers_log_connections_on(self):
    +        postgresql_client = mock.MagicMock
    +        postgresql_server_name = "Postgres Flexible Server Name"
    +        postgresql_server_id = str(uuid4())
    +        postgresql_client.flexible_servers = {
    +            AZURE_SUBSCRIPTION: [
    +                Server(
    +                    id=postgresql_server_id,
    +                    name=postgresql_server_name,
    +                    resource_group="resource_group",
    +                    require_secure_transport="OFF",
    +                    log_checkpoints="ON",
    +                    log_connections="ON",
    +                    log_disconnections="ON",
    +                    connection_throttling="ON",
    +                    log_retention_days="3",
    +                    firewall=None,
    +                )
    +            ]
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.postgresql.postgresql_flexible_server_log_disconnections_on.postgresql_flexible_server_log_disconnections_on.postgresql_client",
    +            new=postgresql_client,
    +        ):
    +            from prowler.providers.azure.services.postgresql.postgresql_flexible_server_log_disconnections_on.postgresql_flexible_server_log_disconnections_on import (
    +                postgresql_flexible_server_log_disconnections_on,
    +            )
    +
    +            check = postgresql_flexible_server_log_disconnections_on()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "PASS"
    +            assert (
    +                result[0].status_extended
    +                == f"Flexible Postgresql server {postgresql_server_name} from subscription {AZURE_SUBSCRIPTION} has log_disconnections enabled"
    +            )
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == postgresql_server_name
    +            assert result[0].resource_id == postgresql_server_id
    diff --git a/tests/providers/azure/services/postgresql/postgresql_flexible_server_log_retention_days_greater_3/postgresql_flexible_server_log_retention_days_greater_3_test.py b/tests/providers/azure/services/postgresql/postgresql_flexible_server_log_retention_days_greater_3/postgresql_flexible_server_log_retention_days_greater_3_test.py
    new file mode 100644
    index 00000000000..fdc476277d7
    --- /dev/null
    +++ b/tests/providers/azure/services/postgresql/postgresql_flexible_server_log_retention_days_greater_3/postgresql_flexible_server_log_retention_days_greater_3_test.py
    @@ -0,0 +1,190 @@
    +from unittest import mock
    +from uuid import uuid4
    +
    +from prowler.providers.azure.services.postgresql.postgresql_service import Server
    +from tests.providers.azure.azure_fixtures import AZURE_SUBSCRIPTION
    +
    +
    +class Test_postgresql_flexible_server_log_retention_days_greater_3:
    +    def test_no_postgresql_flexible_servers(self):
    +        postgresql_client = mock.MagicMock
    +        postgresql_client.flexible_servers = {}
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.postgresql.postgresql_flexible_server_log_retention_days_greater_3.postgresql_flexible_server_log_retention_days_greater_3.postgresql_client",
    +            new=postgresql_client,
    +        ):
    +            from prowler.providers.azure.services.postgresql.postgresql_flexible_server_log_retention_days_greater_3.postgresql_flexible_server_log_retention_days_greater_3 import (
    +                postgresql_flexible_server_log_retention_days_greater_3,
    +            )
    +
    +            check = postgresql_flexible_server_log_retention_days_greater_3()
    +            result = check.execute()
    +            assert len(result) == 0
    +
    +    def test_flexible_servers_no_log_retention_days(self):
    +        postgresql_client = mock.MagicMock
    +        postgresql_server_name = "Postgres Flexible Server Name"
    +        postgresql_server_id = str(uuid4())
    +        postgresql_client.flexible_servers = {
    +            AZURE_SUBSCRIPTION: [
    +                Server(
    +                    id=postgresql_server_id,
    +                    name=postgresql_server_name,
    +                    resource_group="resource_group",
    +                    require_secure_transport="OFF",
    +                    log_checkpoints="OFF",
    +                    log_connections="OFF",
    +                    log_disconnections="OFF",
    +                    connection_throttling="OFF",
    +                    log_retention_days=None,
    +                    firewall=None,
    +                )
    +            ]
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.postgresql.postgresql_flexible_server_log_retention_days_greater_3.postgresql_flexible_server_log_retention_days_greater_3.postgresql_client",
    +            new=postgresql_client,
    +        ):
    +            from prowler.providers.azure.services.postgresql.postgresql_flexible_server_log_retention_days_greater_3.postgresql_flexible_server_log_retention_days_greater_3 import (
    +                postgresql_flexible_server_log_retention_days_greater_3,
    +            )
    +
    +            check = postgresql_flexible_server_log_retention_days_greater_3()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "FAIL"
    +            assert (
    +                result[0].status_extended
    +                == f"Flexible Postgresql server {postgresql_server_name} from subscription {AZURE_SUBSCRIPTION} has log_retention disabled"
    +            )
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == postgresql_server_name
    +            assert result[0].resource_id == postgresql_server_id
    +
    +    def test_flexible_servers_log_retention_days_3(self):
    +        postgresql_client = mock.MagicMock
    +        postgresql_server_name = "Postgres Flexible Server Name"
    +        postgresql_server_id = str(uuid4())
    +        log_retention_days = "3"
    +        postgresql_client.flexible_servers = {
    +            AZURE_SUBSCRIPTION: [
    +                Server(
    +                    id=postgresql_server_id,
    +                    name=postgresql_server_name,
    +                    resource_group="resource_group",
    +                    require_secure_transport="OFF",
    +                    log_checkpoints="OFF",
    +                    log_connections="OFF",
    +                    log_disconnections="OFF",
    +                    connection_throttling="OFF",
    +                    log_retention_days=log_retention_days,
    +                    firewall=None,
    +                )
    +            ]
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.postgresql.postgresql_flexible_server_log_retention_days_greater_3.postgresql_flexible_server_log_retention_days_greater_3.postgresql_client",
    +            new=postgresql_client,
    +        ):
    +            from prowler.providers.azure.services.postgresql.postgresql_flexible_server_log_retention_days_greater_3.postgresql_flexible_server_log_retention_days_greater_3 import (
    +                postgresql_flexible_server_log_retention_days_greater_3,
    +            )
    +
    +            check = postgresql_flexible_server_log_retention_days_greater_3()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "FAIL"
    +            assert (
    +                result[0].status_extended
    +                == f"Flexible Postgresql server {postgresql_server_name} from subscription {AZURE_SUBSCRIPTION} has log_retention set to {log_retention_days}"
    +            )
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == postgresql_server_name
    +            assert result[0].resource_id == postgresql_server_id
    +
    +    def test_flexible_servers_log_retention_days_4(self):
    +        postgresql_client = mock.MagicMock
    +        postgresql_server_name = "Postgres Flexible Server Name"
    +        postgresql_server_id = str(uuid4())
    +        log_retention_days = "4"
    +        postgresql_client.flexible_servers = {
    +            AZURE_SUBSCRIPTION: [
    +                Server(
    +                    id=postgresql_server_id,
    +                    name=postgresql_server_name,
    +                    resource_group="resource_group",
    +                    require_secure_transport="OFF",
    +                    log_checkpoints="OFF",
    +                    log_connections="OFF",
    +                    log_disconnections="OFF",
    +                    connection_throttling="OFF",
    +                    log_retention_days=log_retention_days,
    +                    firewall=None,
    +                )
    +            ]
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.postgresql.postgresql_flexible_server_log_retention_days_greater_3.postgresql_flexible_server_log_retention_days_greater_3.postgresql_client",
    +            new=postgresql_client,
    +        ):
    +            from prowler.providers.azure.services.postgresql.postgresql_flexible_server_log_retention_days_greater_3.postgresql_flexible_server_log_retention_days_greater_3 import (
    +                postgresql_flexible_server_log_retention_days_greater_3,
    +            )
    +
    +            check = postgresql_flexible_server_log_retention_days_greater_3()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "PASS"
    +            assert (
    +                result[0].status_extended
    +                == f"Flexible Postgresql server {postgresql_server_name} from subscription {AZURE_SUBSCRIPTION} has log_retention set to {log_retention_days}"
    +            )
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == postgresql_server_name
    +            assert result[0].resource_id == postgresql_server_id
    +
    +    def test_flexible_servers_log_retention_days_8(self):
    +        postgresql_client = mock.MagicMock
    +        postgresql_server_name = "Postgres Flexible Server Name"
    +        postgresql_server_id = str(uuid4())
    +        log_retention_days = "8"
    +        postgresql_client.flexible_servers = {
    +            AZURE_SUBSCRIPTION: [
    +                Server(
    +                    id=postgresql_server_id,
    +                    name=postgresql_server_name,
    +                    resource_group="resource_group",
    +                    require_secure_transport="OFF",
    +                    log_checkpoints="OFF",
    +                    log_connections="OFF",
    +                    log_disconnections="OFF",
    +                    connection_throttling="OFF",
    +                    log_retention_days=log_retention_days,
    +                    firewall=None,
    +                )
    +            ]
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.postgresql.postgresql_flexible_server_log_retention_days_greater_3.postgresql_flexible_server_log_retention_days_greater_3.postgresql_client",
    +            new=postgresql_client,
    +        ):
    +            from prowler.providers.azure.services.postgresql.postgresql_flexible_server_log_retention_days_greater_3.postgresql_flexible_server_log_retention_days_greater_3 import (
    +                postgresql_flexible_server_log_retention_days_greater_3,
    +            )
    +
    +            check = postgresql_flexible_server_log_retention_days_greater_3()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "FAIL"
    +            assert (
    +                result[0].status_extended
    +                == f"Flexible Postgresql server {postgresql_server_name} from subscription {AZURE_SUBSCRIPTION} has log_retention set to {log_retention_days}"
    +            )
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == postgresql_server_name
    +            assert result[0].resource_id == postgresql_server_id
    diff --git a/tests/providers/azure/services/postgresql/postgresql_service_test.py b/tests/providers/azure/services/postgresql/postgresql_service_test.py
    new file mode 100644
    index 00000000000..cdc479c6c8e
    --- /dev/null
    +++ b/tests/providers/azure/services/postgresql/postgresql_service_test.py
    @@ -0,0 +1,122 @@
    +from unittest.mock import patch
    +
    +from prowler.providers.azure.services.postgresql.postgresql_service import (
    +    Firewall,
    +    PostgreSQL,
    +    Server,
    +)
    +from tests.providers.azure.azure_fixtures import (
    +    AZURE_SUBSCRIPTION,
    +    set_mocked_azure_audit_info,
    +)
    +
    +
    +def mock_sqlserver_get_postgresql_flexible_servers(_):
    +    firewall = Firewall(
    +        id="id",
    +        name="name",
    +        start_ip="start_ip",
    +        end_ip="end_ip",
    +    )
    +    return {
    +        AZURE_SUBSCRIPTION: [
    +            Server(
    +                id="id",
    +                name="name",
    +                resource_group="resource_group",
    +                require_secure_transport="ON",
    +                log_checkpoints="ON",
    +                log_connections="ON",
    +                log_disconnections="ON",
    +                connection_throttling="ON",
    +                log_retention_days="3",
    +                firewall=[firewall],
    +            )
    +        ]
    +    }
    +
    +
    +@patch(
    +    "prowler.providers.azure.services.postgresql.postgresql_service.PostgreSQL.__get_flexible_servers__",
    +    new=mock_sqlserver_get_postgresql_flexible_servers,
    +)
    +class Test_SqlServer_Service:
    +    def test__get_client__(self):
    +        postgresql = PostgreSQL(set_mocked_azure_audit_info())
    +        assert (
    +            postgresql.clients[AZURE_SUBSCRIPTION].__class__.__name__
    +            == "PostgreSQLManagementClient"
    +        )
    +
    +    def test__get_sql_servers__(self):
    +        postgesql = PostgreSQL(set_mocked_azure_audit_info())
    +        assert (
    +            postgesql.flexible_servers[AZURE_SUBSCRIPTION][0].__class__.__name__
    +            == "Server"
    +        )
    +        assert postgesql.flexible_servers[AZURE_SUBSCRIPTION][0].id == "id"
    +        assert postgesql.flexible_servers[AZURE_SUBSCRIPTION][0].name == "name"
    +        assert (
    +            postgesql.flexible_servers[AZURE_SUBSCRIPTION][0].resource_group
    +            == "resource_group"
    +        )
    +
    +    def test__get_resource_group__(self):
    +        id = "/subscriptions/subscription/resourceGroups/resource_group/providers/Microsoft.DBforPostgreSQL/flexibleServers/server"
    +        postgresql = PostgreSQL(set_mocked_azure_audit_info())
    +        assert postgresql.__get_resource_group__(id) == "resource_group"
    +
    +    def test__get_require_secure_transport__(self):
    +        postgesql = PostgreSQL(set_mocked_azure_audit_info())
    +        assert (
    +            postgesql.flexible_servers[AZURE_SUBSCRIPTION][0].require_secure_transport
    +            == "ON"
    +        )
    +
    +    def test__get_log_checkpoints__(self):
    +        postgesql = PostgreSQL(set_mocked_azure_audit_info())
    +        assert postgesql.flexible_servers[AZURE_SUBSCRIPTION][0].log_checkpoints == "ON"
    +
    +    def test__get_log_connections__(self):
    +        postgesql = PostgreSQL(set_mocked_azure_audit_info())
    +        assert postgesql.flexible_servers[AZURE_SUBSCRIPTION][0].log_connections == "ON"
    +
    +    def test__get_log_disconnections__(self):
    +        postgesql = PostgreSQL(set_mocked_azure_audit_info())
    +        assert (
    +            postgesql.flexible_servers[AZURE_SUBSCRIPTION][0].log_disconnections == "ON"
    +        )
    +
    +    def test__get_connection_throttling__(self):
    +        postgesql = PostgreSQL(set_mocked_azure_audit_info())
    +        assert (
    +            postgesql.flexible_servers[AZURE_SUBSCRIPTION][0].connection_throttling
    +            == "ON"
    +        )
    +
    +    def test__get_log_retention_days__(self):
    +        postgesql = PostgreSQL(set_mocked_azure_audit_info())
    +        assert (
    +            postgesql.flexible_servers[AZURE_SUBSCRIPTION][0].log_retention_days == "3"
    +        )
    +
    +    def test__get_firewall__(self):
    +        postgesql = PostgreSQL(set_mocked_azure_audit_info())
    +        assert (
    +            postgesql.flexible_servers[AZURE_SUBSCRIPTION][0]
    +            .firewall[0]
    +            .__class__.__name__
    +            == "Firewall"
    +        )
    +        assert postgesql.flexible_servers[AZURE_SUBSCRIPTION][0].firewall[0].id == "id"
    +        assert (
    +            postgesql.flexible_servers[AZURE_SUBSCRIPTION][0].firewall[0].name == "name"
    +        )
    +        assert (
    +            postgesql.flexible_servers[AZURE_SUBSCRIPTION][0].firewall[0].start_ip
    +            == "start_ip"
    +        )
    +        assert (
    +            postgesql.flexible_servers[AZURE_SUBSCRIPTION][0].firewall[0].end_ip
    +            == "end_ip"
    +        )
    diff --git a/tests/providers/azure/services/sqlserver/sqlserver_auditing_enabled/sqlserver_auditing_enabled_test.py b/tests/providers/azure/services/sqlserver/sqlserver_auditing_enabled/sqlserver_auditing_enabled_test.py
    index ce8c5bf6218..0c43204a07d 100644
    --- a/tests/providers/azure/services/sqlserver/sqlserver_auditing_enabled/sqlserver_auditing_enabled_test.py
    +++ b/tests/providers/azure/services/sqlserver/sqlserver_auditing_enabled/sqlserver_auditing_enabled_test.py
    @@ -7,12 +7,11 @@
         ServerExternalAdministrator,
     )
     
    -from prowler.providers.azure.services.sqlserver.sqlserver_service import SQL_Server
    +from prowler.providers.azure.services.sqlserver.sqlserver_service import Server
    +from tests.providers.azure.azure_fixtures import AZURE_SUBSCRIPTION
     
    -AZURE_SUSCRIPTION = str(uuid4())
     
    -
    -class Test_defender_ensure_defender_for_storage_is_on:
    +class Test_sqlserver_auditing_enabled:
         def test_no_sql_servers(self):
             sqlserver_client = mock.MagicMock
             sqlserver_client.sql_servers = {}
    @@ -34,8 +33,8 @@ def test_sql_servers_auditing_disabled(self):
             sql_server_name = "SQL Server Name"
             sql_server_id = str(uuid4())
             sqlserver_client.sql_servers = {
    -            AZURE_SUSCRIPTION: [
    -                SQL_Server(
    +            AZURE_SUBSCRIPTION: [
    +                Server(
                         id=sql_server_id,
                         name=sql_server_name,
                         public_network_access="",
    @@ -61,9 +60,9 @@ def test_sql_servers_auditing_disabled(self):
                 assert result[0].status == "FAIL"
                 assert (
                     result[0].status_extended
    -                == f"SQL Server {sql_server_name} from subscription {AZURE_SUSCRIPTION} does not have any auditing policy configured."
    +                == f"SQL Server {sql_server_name} from subscription {AZURE_SUBSCRIPTION} does not have any auditing policy configured."
                 )
    -            assert result[0].subscription == AZURE_SUSCRIPTION
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
                 assert result[0].resource_name == sql_server_name
                 assert result[0].resource_id == sql_server_id
     
    @@ -72,8 +71,8 @@ def test_sql_servers_auditing_enabled(self):
             sql_server_name = "SQL Server Name"
             sql_server_id = str(uuid4())
             sqlserver_client.sql_servers = {
    -            AZURE_SUSCRIPTION: [
    -                SQL_Server(
    +            AZURE_SUBSCRIPTION: [
    +                Server(
                         id=sql_server_id,
                         name=sql_server_name,
                         public_network_access="",
    @@ -99,8 +98,8 @@ def test_sql_servers_auditing_enabled(self):
                 assert result[0].status == "PASS"
                 assert (
                     result[0].status_extended
    -                == f"SQL Server {sql_server_name} from subscription {AZURE_SUSCRIPTION} has a auditing policy configured."
    +                == f"SQL Server {sql_server_name} from subscription {AZURE_SUBSCRIPTION} has a auditing policy configured."
                 )
    -            assert result[0].subscription == AZURE_SUSCRIPTION
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
                 assert result[0].resource_name == sql_server_name
                 assert result[0].resource_id == sql_server_id
    diff --git a/tests/providers/azure/services/sqlserver/sqlserver_auditing_retention_90_days/sqlserver_auditing_retention_90_days_test.py b/tests/providers/azure/services/sqlserver/sqlserver_auditing_retention_90_days/sqlserver_auditing_retention_90_days_test.py
    new file mode 100644
    index 00000000000..cbe5505cb90
    --- /dev/null
    +++ b/tests/providers/azure/services/sqlserver/sqlserver_auditing_retention_90_days/sqlserver_auditing_retention_90_days_test.py
    @@ -0,0 +1,239 @@
    +from unittest import mock
    +from uuid import uuid4
    +
    +from azure.mgmt.sql.models import ServerBlobAuditingPolicy
    +
    +from prowler.providers.azure.services.sqlserver.sqlserver_service import Server
    +from tests.providers.azure.azure_fixtures import AZURE_SUBSCRIPTION
    +
    +
    +class Test_sqlserver_auditing_retention_90_days:
    +    def test_no_sql_servers(self):
    +        sqlserver_client = mock.MagicMock
    +        sqlserver_client.sql_servers = {}
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.sqlserver.sqlserver_auditing_retention_90_days.sqlserver_auditing_retention_90_days.sqlserver_client",
    +            new=sqlserver_client,
    +        ):
    +            from prowler.providers.azure.services.sqlserver.sqlserver_auditing_retention_90_days.sqlserver_auditing_retention_90_days import (
    +                sqlserver_auditing_retention_90_days,
    +            )
    +
    +            check = sqlserver_auditing_retention_90_days()
    +            result = check.execute()
    +            assert len(result) == 0
    +
    +    def test_sql_servers_auditing_policy_disabled(self):
    +        sqlserver_client = mock.MagicMock
    +        sql_server_name = "SQL Server Name"
    +        sql_server_id = str(uuid4())
    +        sqlserver_client.sql_servers = {
    +            AZURE_SUBSCRIPTION: [
    +                Server(
    +                    id=sql_server_id,
    +                    name=sql_server_name,
    +                    public_network_access="",
    +                    minimal_tls_version="",
    +                    administrators=None,
    +                    auditing_policies=[ServerBlobAuditingPolicy(state="Disabled")],
    +                    firewall_rules=None,
    +                    databases=None,
    +                    encryption_protector=None,
    +                )
    +            ]
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.sqlserver.sqlserver_auditing_retention_90_days.sqlserver_auditing_retention_90_days.sqlserver_client",
    +            new=sqlserver_client,
    +        ):
    +            from prowler.providers.azure.services.sqlserver.sqlserver_auditing_retention_90_days.sqlserver_auditing_retention_90_days import (
    +                sqlserver_auditing_retention_90_days,
    +            )
    +
    +            check = sqlserver_auditing_retention_90_days()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "FAIL"
    +            assert (
    +                result[0].status_extended
    +                == f"SQL Server {sql_server_name} from subscription {AZURE_SUBSCRIPTION} has auditing disabled."
    +            )
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == sql_server_name
    +            assert result[0].resource_id == sql_server_id
    +
    +    def test_sql_servers_auditing_retention_less_than_90_days(self):
    +        sqlserver_client = mock.MagicMock
    +        sql_server_name = "SQL Server Name"
    +        sql_server_id = str(uuid4())
    +        sqlserver_client.sql_servers = {
    +            AZURE_SUBSCRIPTION: [
    +                Server(
    +                    id=sql_server_id,
    +                    name=sql_server_name,
    +                    public_network_access="",
    +                    minimal_tls_version="",
    +                    administrators=None,
    +                    auditing_policies=[
    +                        ServerBlobAuditingPolicy(state="Enabled", retention_days=89)
    +                    ],
    +                    firewall_rules=None,
    +                    databases=None,
    +                    encryption_protector=None,
    +                )
    +            ]
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.sqlserver.sqlserver_auditing_retention_90_days.sqlserver_auditing_retention_90_days.sqlserver_client",
    +            new=sqlserver_client,
    +        ):
    +            from prowler.providers.azure.services.sqlserver.sqlserver_auditing_retention_90_days.sqlserver_auditing_retention_90_days import (
    +                sqlserver_auditing_retention_90_days,
    +            )
    +
    +            check = sqlserver_auditing_retention_90_days()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "FAIL"
    +            assert (
    +                result[0].status_extended
    +                == f"SQL Server {sql_server_name} from subscription {AZURE_SUBSCRIPTION} has auditing retention less than 91 days."
    +            )
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == sql_server_name
    +            assert result[0].resource_id == sql_server_id
    +
    +    def test_sql_servers_auditing_retention_greater_than_90_days(self):
    +        sqlserver_client = mock.MagicMock
    +        sql_server_name = "SQL Server Name"
    +        sql_server_id = str(uuid4())
    +        sqlserver_client.sql_servers = {
    +            AZURE_SUBSCRIPTION: [
    +                Server(
    +                    id=sql_server_id,
    +                    name=sql_server_name,
    +                    public_network_access="",
    +                    minimal_tls_version="",
    +                    administrators=None,
    +                    auditing_policies=[
    +                        ServerBlobAuditingPolicy(state="Enabled", retention_days=91)
    +                    ],
    +                    firewall_rules=None,
    +                    databases=None,
    +                    encryption_protector=None,
    +                )
    +            ]
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.sqlserver.sqlserver_auditing_retention_90_days.sqlserver_auditing_retention_90_days.sqlserver_client",
    +            new=sqlserver_client,
    +        ):
    +            from prowler.providers.azure.services.sqlserver.sqlserver_auditing_retention_90_days.sqlserver_auditing_retention_90_days import (
    +                sqlserver_auditing_retention_90_days,
    +            )
    +
    +            check = sqlserver_auditing_retention_90_days()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "PASS"
    +            assert (
    +                result[0].status_extended
    +                == f"SQL Server {sql_server_name} from subscription {AZURE_SUBSCRIPTION} has auditing retention greater than 90 days."
    +            )
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == sql_server_name
    +            assert result[0].resource_id == sql_server_id
    +
    +    def test_sql_servers_two_auditing_policies_with_auditing_retention_greater_than_90_days(
    +        self,
    +    ):
    +        sqlserver_client = mock.MagicMock
    +        sql_server_name = "SQL Server Name"
    +        sql_server_id = str(uuid4())
    +        sqlserver_client.sql_servers = {
    +            AZURE_SUBSCRIPTION: [
    +                Server(
    +                    id=sql_server_id,
    +                    name=sql_server_name,
    +                    public_network_access="",
    +                    minimal_tls_version="",
    +                    administrators=None,
    +                    auditing_policies=[
    +                        ServerBlobAuditingPolicy(state="Enabled", retention_days=91),
    +                        ServerBlobAuditingPolicy(state="Enabled", retention_days=100),
    +                    ],
    +                    firewall_rules=None,
    +                    databases=None,
    +                    encryption_protector=None,
    +                )
    +            ]
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.sqlserver.sqlserver_auditing_retention_90_days.sqlserver_auditing_retention_90_days.sqlserver_client",
    +            new=sqlserver_client,
    +        ):
    +            from prowler.providers.azure.services.sqlserver.sqlserver_auditing_retention_90_days.sqlserver_auditing_retention_90_days import (
    +                sqlserver_auditing_retention_90_days,
    +            )
    +
    +            check = sqlserver_auditing_retention_90_days()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "PASS"
    +            assert (
    +                result[0].status_extended
    +                == f"SQL Server {sql_server_name} from subscription {AZURE_SUBSCRIPTION} has auditing retention greater than 90 days."
    +            )
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == sql_server_name
    +            assert result[0].resource_id == sql_server_id
    +
    +    def test_sql_servers_two_auditing_policies_with_one_auditing_retention_less_than_90_days(
    +        self,
    +    ):
    +        sqlserver_client = mock.MagicMock
    +        sql_server_name = "SQL Server Name"
    +        sql_server_id = str(uuid4())
    +        sqlserver_client.sql_servers = {
    +            AZURE_SUBSCRIPTION: [
    +                Server(
    +                    id=sql_server_id,
    +                    name=sql_server_name,
    +                    public_network_access="",
    +                    minimal_tls_version="",
    +                    administrators=None,
    +                    auditing_policies=[
    +                        ServerBlobAuditingPolicy(state="Enabled", retention_days=91),
    +                        ServerBlobAuditingPolicy(state="Enabled", retention_days=80),
    +                    ],
    +                    firewall_rules=None,
    +                    databases=None,
    +                    encryption_protector=None,
    +                )
    +            ]
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.sqlserver.sqlserver_auditing_retention_90_days.sqlserver_auditing_retention_90_days.sqlserver_client",
    +            new=sqlserver_client,
    +        ):
    +            from prowler.providers.azure.services.sqlserver.sqlserver_auditing_retention_90_days.sqlserver_auditing_retention_90_days import (
    +                sqlserver_auditing_retention_90_days,
    +            )
    +
    +            check = sqlserver_auditing_retention_90_days()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "FAIL"
    +            assert (
    +                result[0].status_extended
    +                == f"SQL Server {sql_server_name} from subscription {AZURE_SUBSCRIPTION} has auditing retention less than 91 days."
    +            )
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == sql_server_name
    +            assert result[0].resource_id == sql_server_id
    diff --git a/tests/providers/azure/services/sqlserver/sqlserver_azuread_administrator_enabled/sqlserver_azuread_administrator_enabled_test.py b/tests/providers/azure/services/sqlserver/sqlserver_azuread_administrator_enabled/sqlserver_azuread_administrator_enabled_test.py
    index 44b3ef8211f..4bda9d24ee6 100644
    --- a/tests/providers/azure/services/sqlserver/sqlserver_azuread_administrator_enabled/sqlserver_azuread_administrator_enabled_test.py
    +++ b/tests/providers/azure/services/sqlserver/sqlserver_azuread_administrator_enabled/sqlserver_azuread_administrator_enabled_test.py
    @@ -3,12 +3,11 @@
     
     from azure.mgmt.sql.models import ServerExternalAdministrator
     
    -from prowler.providers.azure.services.sqlserver.sqlserver_service import SQL_Server
    +from prowler.providers.azure.services.sqlserver.sqlserver_service import Server
    +from tests.providers.azure.azure_fixtures import AZURE_SUBSCRIPTION
     
    -AZURE_SUSCRIPTION = str(uuid4())
     
    -
    -class Test_defender_ensure_defender_for_storage_is_on:
    +class Test_sqlserver_azuread_administrator_enabled:
         def test_no_sql_servers(self):
             sqlserver_client = mock.MagicMock
             sqlserver_client.sql_servers = {}
    @@ -30,8 +29,8 @@ def test_sql_servers_azuread_no_administrator(self):
             sql_server_name = "SQL Server Name"
             sql_server_id = str(uuid4())
             sqlserver_client.sql_servers = {
    -            AZURE_SUSCRIPTION: [
    -                SQL_Server(
    +            AZURE_SUBSCRIPTION: [
    +                Server(
                         id=sql_server_id,
                         name=sql_server_name,
                         public_network_access="",
    @@ -57,9 +56,9 @@ def test_sql_servers_azuread_no_administrator(self):
                 assert result[0].status == "FAIL"
                 assert (
                     result[0].status_extended
    -                == f"SQL Server {sql_server_name} from subscription {AZURE_SUSCRIPTION} does not have an Active Directory administrator."
    +                == f"SQL Server {sql_server_name} from subscription {AZURE_SUBSCRIPTION} does not have an Active Directory administrator."
                 )
    -            assert result[0].subscription == AZURE_SUSCRIPTION
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
                 assert result[0].resource_name == sql_server_name
                 assert result[0].resource_id == sql_server_id
     
    @@ -68,8 +67,8 @@ def test_sql_servers_azuread_administrator_no_active_directory(self):
             sql_server_name = "SQL Server Name"
             sql_server_id = str(uuid4())
             sqlserver_client.sql_servers = {
    -            AZURE_SUSCRIPTION: [
    -                SQL_Server(
    +            AZURE_SUBSCRIPTION: [
    +                Server(
                         id=sql_server_id,
                         name=sql_server_name,
                         public_network_access="",
    @@ -97,9 +96,9 @@ def test_sql_servers_azuread_administrator_no_active_directory(self):
                 assert result[0].status == "FAIL"
                 assert (
                     result[0].status_extended
    -                == f"SQL Server {sql_server_name} from subscription {AZURE_SUSCRIPTION} does not have an Active Directory administrator."
    +                == f"SQL Server {sql_server_name} from subscription {AZURE_SUBSCRIPTION} does not have an Active Directory administrator."
                 )
    -            assert result[0].subscription == AZURE_SUSCRIPTION
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
                 assert result[0].resource_name == sql_server_name
                 assert result[0].resource_id == sql_server_id
     
    @@ -108,8 +107,8 @@ def test_sql_servers_azuread_administrator_active_directory(self):
             sql_server_name = "SQL Server Name"
             sql_server_id = str(uuid4())
             sqlserver_client.sql_servers = {
    -            AZURE_SUSCRIPTION: [
    -                SQL_Server(
    +            AZURE_SUBSCRIPTION: [
    +                Server(
                         id=sql_server_id,
                         name=sql_server_name,
                         public_network_access="",
    @@ -137,8 +136,8 @@ def test_sql_servers_azuread_administrator_active_directory(self):
                 assert result[0].status == "PASS"
                 assert (
                     result[0].status_extended
    -                == f"SQL Server {sql_server_name} from subscription {AZURE_SUSCRIPTION} has an Active Directory administrator."
    +                == f"SQL Server {sql_server_name} from subscription {AZURE_SUBSCRIPTION} has an Active Directory administrator."
                 )
    -            assert result[0].subscription == AZURE_SUSCRIPTION
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
                 assert result[0].resource_name == sql_server_name
                 assert result[0].resource_id == sql_server_id
    diff --git a/tests/providers/azure/services/sqlserver/sqlserver_microsoft_defender_enabled/sqlserver_microsoft_defender_enabled_test.py b/tests/providers/azure/services/sqlserver/sqlserver_microsoft_defender_enabled/sqlserver_microsoft_defender_enabled_test.py
    new file mode 100644
    index 00000000000..f4bb81d68f9
    --- /dev/null
    +++ b/tests/providers/azure/services/sqlserver/sqlserver_microsoft_defender_enabled/sqlserver_microsoft_defender_enabled_test.py
    @@ -0,0 +1,134 @@
    +from unittest import mock
    +from uuid import uuid4
    +
    +from azure.mgmt.sql.models import ServerSecurityAlertPolicy
    +
    +from prowler.providers.azure.services.sqlserver.sqlserver_service import Server
    +from tests.providers.azure.azure_fixtures import AZURE_SUBSCRIPTION
    +
    +
    +class Test_sqlserver_microsoft_defender_enabled:
    +    def test_no_sql_servers(self):
    +        sqlserver_client = mock.MagicMock
    +        sqlserver_client.sql_servers = {}
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.sqlserver.sqlserver_microsoft_defender_enabled.sqlserver_microsoft_defender_enabled.sqlserver_client",
    +            new=sqlserver_client,
    +        ):
    +            from prowler.providers.azure.services.sqlserver.sqlserver_microsoft_defender_enabled.sqlserver_microsoft_defender_enabled import (
    +                sqlserver_microsoft_defender_enabled,
    +            )
    +
    +            check = sqlserver_microsoft_defender_enabled()
    +            result = check.execute()
    +            assert len(result) == 0
    +
    +    def test_sql_servers_no_security_alert_policies(self):
    +        sqlserver_client = mock.MagicMock
    +        sql_server_name = "SQL Server Name"
    +        sql_server_id = str(uuid4())
    +        sqlserver_client.sql_servers = {
    +            AZURE_SUBSCRIPTION: [
    +                Server(
    +                    id=sql_server_id,
    +                    name=sql_server_name,
    +                    public_network_access="",
    +                    minimal_tls_version="",
    +                    administrators=None,
    +                    auditing_policies=[],
    +                    firewall_rules=None,
    +                    security_alert_policies=None,
    +                )
    +            ]
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.sqlserver.sqlserver_microsoft_defender_enabled.sqlserver_microsoft_defender_enabled.sqlserver_client",
    +            new=sqlserver_client,
    +        ):
    +            from prowler.providers.azure.services.sqlserver.sqlserver_microsoft_defender_enabled.sqlserver_microsoft_defender_enabled import (
    +                sqlserver_microsoft_defender_enabled,
    +            )
    +
    +            check = sqlserver_microsoft_defender_enabled()
    +            result = check.execute()
    +            assert len(result) == 0
    +
    +    def test_sql_servers_microsoft_defender_disabled(self):
    +        sqlserver_client = mock.MagicMock
    +        sql_server_name = "SQL Server Name"
    +        sql_server_id = str(uuid4())
    +        sqlserver_client.sql_servers = {
    +            AZURE_SUBSCRIPTION: [
    +                Server(
    +                    id=sql_server_id,
    +                    name=sql_server_name,
    +                    public_network_access="",
    +                    minimal_tls_version="",
    +                    administrators=None,
    +                    auditing_policies=[],
    +                    firewall_rules=None,
    +                    security_alert_policies=ServerSecurityAlertPolicy(state="Disabled"),
    +                )
    +            ]
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.sqlserver.sqlserver_microsoft_defender_enabled.sqlserver_microsoft_defender_enabled.sqlserver_client",
    +            new=sqlserver_client,
    +        ):
    +            from prowler.providers.azure.services.sqlserver.sqlserver_microsoft_defender_enabled.sqlserver_microsoft_defender_enabled import (
    +                sqlserver_microsoft_defender_enabled,
    +            )
    +
    +            check = sqlserver_microsoft_defender_enabled()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "FAIL"
    +            assert (
    +                result[0].status_extended
    +                == f"SQL Server {sql_server_name} from subscription {AZURE_SUBSCRIPTION} has microsoft defender disabled."
    +            )
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == sql_server_name
    +            assert result[0].resource_id == sql_server_id
    +
    +    def test_sql_servers_microsoft_defender_enabled(self):
    +        sqlserver_client = mock.MagicMock
    +        sql_server_name = "SQL Server Name"
    +        sql_server_id = str(uuid4())
    +        sqlserver_client.sql_servers = {
    +            AZURE_SUBSCRIPTION: [
    +                Server(
    +                    id=sql_server_id,
    +                    name=sql_server_name,
    +                    public_network_access="",
    +                    minimal_tls_version="",
    +                    administrators=None,
    +                    auditing_policies=[],
    +                    firewall_rules=None,
    +                    security_alert_policies=ServerSecurityAlertPolicy(state="Enabled"),
    +                )
    +            ]
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.sqlserver.sqlserver_microsoft_defender_enabled.sqlserver_microsoft_defender_enabled.sqlserver_client",
    +            new=sqlserver_client,
    +        ):
    +            from prowler.providers.azure.services.sqlserver.sqlserver_microsoft_defender_enabled.sqlserver_microsoft_defender_enabled import (
    +                sqlserver_microsoft_defender_enabled,
    +            )
    +
    +            check = sqlserver_microsoft_defender_enabled()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "PASS"
    +            assert (
    +                result[0].status_extended
    +                == f"SQL Server {sql_server_name} from subscription {AZURE_SUBSCRIPTION} has microsoft defender enabled."
    +            )
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == sql_server_name
    +            assert result[0].resource_id == sql_server_id
    diff --git a/tests/providers/azure/services/sqlserver/sqlserver_service_test.py b/tests/providers/azure/services/sqlserver/sqlserver_service_test.py
    new file mode 100644
    index 00000000000..6cee6fd4f69
    --- /dev/null
    +++ b/tests/providers/azure/services/sqlserver/sqlserver_service_test.py
    @@ -0,0 +1,238 @@
    +from unittest.mock import patch
    +
    +from azure.mgmt.sql.models import (
    +    EncryptionProtector,
    +    FirewallRule,
    +    ServerBlobAuditingPolicy,
    +    ServerSecurityAlertPolicy,
    +    ServerVulnerabilityAssessment,
    +    TransparentDataEncryption,
    +)
    +
    +from prowler.providers.azure.services.sqlserver.sqlserver_service import (
    +    Database,
    +    Server,
    +    SQLServer,
    +)
    +from tests.providers.azure.azure_fixtures import (
    +    AZURE_SUBSCRIPTION,
    +    set_mocked_azure_audit_info,
    +)
    +
    +
    +def mock_sqlserver_get_sql_servers(_):
    +    database = Database(
    +        id="id",
    +        name="name",
    +        type="type",
    +        location="location",
    +        managed_by="managed_by",
    +        tde_encryption=TransparentDataEncryption(status="Disabled"),
    +    )
    +    return {
    +        AZURE_SUBSCRIPTION: [
    +            Server(
    +                id="id",
    +                name="name",
    +                public_network_access="public_network_access",
    +                minimal_tls_version="minimal_tls_version",
    +                administrators=None,
    +                auditing_policies=ServerBlobAuditingPolicy(state="Disabled"),
    +                firewall_rules=FirewallRule(name="name"),
    +                encryption_protector=EncryptionProtector(
    +                    server_key_type="AzureKeyVault"
    +                ),
    +                databases=[database],
    +                vulnerability_assessment=ServerVulnerabilityAssessment(
    +                    storage_container_path="/subcription_id/resource_group/sql_server"
    +                ),
    +                security_alert_policies=ServerSecurityAlertPolicy(state="Disabled"),
    +            )
    +        ]
    +    }
    +
    +
    +@patch(
    +    "prowler.providers.azure.services.sqlserver.sqlserver_service.SQLServer.__get_sql_servers__",
    +    new=mock_sqlserver_get_sql_servers,
    +)
    +class Test_SqlServer_Service:
    +    def test__get_client__(self):
    +        sql_server = SQLServer(set_mocked_azure_audit_info())
    +        assert (
    +            sql_server.clients[AZURE_SUBSCRIPTION].__class__.__name__
    +            == "SqlManagementClient"
    +        )
    +
    +    def test__get_sql_servers__(self):
    +        database = Database(
    +            id="id",
    +            name="name",
    +            type="type",
    +            location="location",
    +            managed_by="managed_by",
    +            tde_encryption=TransparentDataEncryption(status="Disabled"),
    +        )
    +        sql_server = SQLServer(set_mocked_azure_audit_info())
    +        assert (
    +            sql_server.sql_servers[AZURE_SUBSCRIPTION][0].__class__.__name__ == "Server"
    +        )
    +        assert sql_server.sql_servers[AZURE_SUBSCRIPTION][0].id == "id"
    +        assert sql_server.sql_servers[AZURE_SUBSCRIPTION][0].name == "name"
    +        assert (
    +            sql_server.sql_servers[AZURE_SUBSCRIPTION][0].public_network_access
    +            == "public_network_access"
    +        )
    +        assert (
    +            sql_server.sql_servers[AZURE_SUBSCRIPTION][0].minimal_tls_version
    +            == "minimal_tls_version"
    +        )
    +        assert sql_server.sql_servers[AZURE_SUBSCRIPTION][0].administrators is None
    +        assert (
    +            sql_server.sql_servers[AZURE_SUBSCRIPTION][
    +                0
    +            ].auditing_policies.__class__.__name__
    +            == "ServerBlobAuditingPolicy"
    +        )
    +        assert (
    +            sql_server.sql_servers[AZURE_SUBSCRIPTION][
    +                0
    +            ].firewall_rules.__class__.__name__
    +            == "FirewallRule"
    +        )
    +        assert (
    +            sql_server.sql_servers[AZURE_SUBSCRIPTION][
    +                0
    +            ].encryption_protector.__class__.__name__
    +            == "EncryptionProtector"
    +        )
    +        assert sql_server.sql_servers[AZURE_SUBSCRIPTION][0].databases == [database]
    +        assert (
    +            sql_server.sql_servers[AZURE_SUBSCRIPTION][
    +                0
    +            ].vulnerability_assessment.__class__.__name__
    +            == "ServerVulnerabilityAssessment"
    +        )
    +
    +    def test__get_databases__(self):
    +        sql_server = SQLServer(set_mocked_azure_audit_info())
    +        assert (
    +            sql_server.sql_servers[AZURE_SUBSCRIPTION][0]
    +            .databases[0]
    +            .__class__.__name__
    +            == "Database"
    +        )
    +        assert sql_server.sql_servers[AZURE_SUBSCRIPTION][0].databases[0].id == "id"
    +        assert sql_server.sql_servers[AZURE_SUBSCRIPTION][0].databases[0].name == "name"
    +        assert sql_server.sql_servers[AZURE_SUBSCRIPTION][0].databases[0].type == "type"
    +        assert (
    +            sql_server.sql_servers[AZURE_SUBSCRIPTION][0].databases[0].location
    +            == "location"
    +        )
    +        assert (
    +            sql_server.sql_servers[AZURE_SUBSCRIPTION][0].databases[0].managed_by
    +            == "managed_by"
    +        )
    +        assert (
    +            sql_server.sql_servers[AZURE_SUBSCRIPTION][0]
    +            .databases[0]
    +            .tde_encryption.__class__.__name__
    +            == "TransparentDataEncryption"
    +        )
    +
    +    def test__get_transparent_data_encryption__(self):
    +        sql_server = SQLServer(set_mocked_azure_audit_info())
    +        assert (
    +            sql_server.sql_servers[AZURE_SUBSCRIPTION][0]
    +            .databases[0]
    +            .tde_encryption.__class__.__name__
    +            == "TransparentDataEncryption"
    +        )
    +        assert (
    +            sql_server.sql_servers[AZURE_SUBSCRIPTION][0]
    +            .databases[0]
    +            .tde_encryption.status
    +            == "Disabled"
    +        )
    +
    +    def test__get_encryption_protectors__(self):
    +        sql_server = SQLServer(set_mocked_azure_audit_info())
    +        assert (
    +            sql_server.sql_servers[AZURE_SUBSCRIPTION][
    +                0
    +            ].encryption_protector.__class__.__name__
    +            == "EncryptionProtector"
    +        )
    +        assert (
    +            sql_server.sql_servers[AZURE_SUBSCRIPTION][
    +                0
    +            ].encryption_protector.server_key_type
    +            == "AzureKeyVault"
    +        )
    +
    +    def test__get_resource_group__(self):
    +        id = "/subscriptions/subscription_id/resourceGroups/resource_group/providers/Microsoft.Sql/servers/sql_server"
    +        sql_server = SQLServer(set_mocked_azure_audit_info())
    +        assert sql_server.__get_resource_group__(id) == "resource_group"
    +
    +    def test__get_vulnerability_assessment__(self):
    +        sql_server = SQLServer(set_mocked_azure_audit_info())
    +        storage_container_path = "/subcription_id/resource_group/sql_server"
    +        assert (
    +            sql_server.sql_servers[AZURE_SUBSCRIPTION][
    +                0
    +            ].vulnerability_assessment.__class__.__name__
    +            == "ServerVulnerabilityAssessment"
    +        )
    +        assert (
    +            sql_server.sql_servers[AZURE_SUBSCRIPTION][
    +                0
    +            ].vulnerability_assessment.storage_container_path
    +            == storage_container_path
    +        )
    +
    +    def test__get_server_blob_auditing_policies__(self):
    +        sql_server = SQLServer(set_mocked_azure_audit_info())
    +        auditing_policies = ServerBlobAuditingPolicy(state="Disabled")
    +        assert (
    +            sql_server.sql_servers[AZURE_SUBSCRIPTION][
    +                0
    +            ].auditing_policies.__class__.__name__
    +            == "ServerBlobAuditingPolicy"
    +        )
    +        assert (
    +            sql_server.sql_servers[AZURE_SUBSCRIPTION][0].auditing_policies
    +            == auditing_policies
    +        )
    +
    +    def test__get_firewall_rules__(self):
    +        sql_server = SQLServer(set_mocked_azure_audit_info())
    +        firewall_rules = FirewallRule(name="name")
    +        assert (
    +            sql_server.sql_servers[AZURE_SUBSCRIPTION][
    +                0
    +            ].firewall_rules.__class__.__name__
    +            == "FirewallRule"
    +        )
    +        assert (
    +            sql_server.sql_servers[AZURE_SUBSCRIPTION][0].firewall_rules
    +            == firewall_rules
    +        )
    +
    +    def test__get_server_security_alert_policies__(self):
    +        sql_server = SQLServer(set_mocked_azure_audit_info())
    +        security_alert_policies = ServerSecurityAlertPolicy(state="Disabled")
    +        assert (
    +            sql_server.sql_servers[AZURE_SUBSCRIPTION][
    +                0
    +            ].security_alert_policies.__class__.__name__
    +            == "ServerSecurityAlertPolicy"
    +        )
    +        assert (
    +            sql_server.sql_servers[AZURE_SUBSCRIPTION][0].security_alert_policies
    +            == security_alert_policies
    +        )
    +        assert (
    +            sql_server.sql_servers[AZURE_SUBSCRIPTION][0].security_alert_policies.state
    +            == "Disabled"
    +        )
    diff --git a/tests/providers/azure/services/sqlserver/sqlserver_tde_encrypted_with_cmk/sqlserver_tde_encrypted_with_cmk_test.py b/tests/providers/azure/services/sqlserver/sqlserver_tde_encrypted_with_cmk/sqlserver_tde_encrypted_with_cmk_test.py
    new file mode 100644
    index 00000000000..a2f3be2b8b4
    --- /dev/null
    +++ b/tests/providers/azure/services/sqlserver/sqlserver_tde_encrypted_with_cmk/sqlserver_tde_encrypted_with_cmk_test.py
    @@ -0,0 +1,209 @@
    +from unittest import mock
    +from uuid import uuid4
    +
    +from azure.mgmt.sql.models import EncryptionProtector, TransparentDataEncryption
    +
    +from prowler.providers.azure.services.sqlserver.sqlserver_service import (
    +    Database,
    +    Server,
    +)
    +from tests.providers.azure.azure_fixtures import AZURE_SUBSCRIPTION
    +
    +
    +class Test_sqlserver_tde_encrypted_with_cmk:
    +    def test_no_sql_servers(self):
    +        sqlserver_client = mock.MagicMock
    +        sqlserver_client.sql_servers = {}
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.sqlserver.sqlserver_tde_encrypted_with_cmk.sqlserver_tde_encrypted_with_cmk.sqlserver_client",
    +            new=sqlserver_client,
    +        ):
    +            from prowler.providers.azure.services.sqlserver.sqlserver_tde_encrypted_with_cmk.sqlserver_tde_encrypted_with_cmk import (
    +                sqlserver_tde_encrypted_with_cmk,
    +            )
    +
    +            check = sqlserver_tde_encrypted_with_cmk()
    +            result = check.execute()
    +            assert len(result) == 0
    +
    +    def test_no_sql_servers_databases(self):
    +        sqlserver_client = mock.MagicMock
    +        sql_server_name = "SQL Server Name"
    +        sql_server_id = str(uuid4())
    +        sqlserver_client.sql_servers = {
    +            AZURE_SUBSCRIPTION: [
    +                Server(
    +                    id=sql_server_id,
    +                    name=sql_server_name,
    +                    public_network_access="",
    +                    minimal_tls_version="",
    +                    administrators=None,
    +                    auditing_policies=None,
    +                    firewall_rules=None,
    +                    databases=None,
    +                )
    +            ]
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.sqlserver.sqlserver_tde_encrypted_with_cmk.sqlserver_tde_encrypted_with_cmk.sqlserver_client",
    +            new=sqlserver_client,
    +        ):
    +            from prowler.providers.azure.services.sqlserver.sqlserver_tde_encrypted_with_cmk.sqlserver_tde_encrypted_with_cmk import (
    +                sqlserver_tde_encrypted_with_cmk,
    +            )
    +
    +            check = sqlserver_tde_encrypted_with_cmk()
    +            result = check.execute()
    +            assert len(result) == 0
    +
    +    def test_sql_servers_encryption_protector_service_managed(self):
    +        sqlserver_client = mock.MagicMock
    +        sql_server_name = "SQL Server Name"
    +        sql_server_id = str(uuid4())
    +        database = Database(
    +            id="id",
    +            name="name",
    +            type="type",
    +            location="location",
    +            managed_by="managed_by",
    +            tde_encryption=None,
    +        )
    +        sqlserver_client.sql_servers = {
    +            AZURE_SUBSCRIPTION: [
    +                Server(
    +                    id=sql_server_id,
    +                    name=sql_server_name,
    +                    public_network_access="",
    +                    minimal_tls_version="",
    +                    administrators=None,
    +                    auditing_policies=None,
    +                    firewall_rules=None,
    +                    databases=[database],
    +                    encryption_protector=EncryptionProtector(
    +                        server_key_type="ServiceManaged"
    +                    ),
    +                )
    +            ]
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.sqlserver.sqlserver_tde_encrypted_with_cmk.sqlserver_tde_encrypted_with_cmk.sqlserver_client",
    +            new=sqlserver_client,
    +        ):
    +            from prowler.providers.azure.services.sqlserver.sqlserver_tde_encrypted_with_cmk.sqlserver_tde_encrypted_with_cmk import (
    +                sqlserver_tde_encrypted_with_cmk,
    +            )
    +
    +            check = sqlserver_tde_encrypted_with_cmk()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "FAIL"
    +            assert (
    +                result[0].status_extended
    +                == f"SQL Server {sql_server_name} from subscription {AZURE_SUBSCRIPTION} has TDE disabled without CMK."
    +            )
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == sql_server_name
    +            assert result[0].resource_id == sql_server_id
    +
    +    def test_sql_servers_database_encryption_disabled(self):
    +        sqlserver_client = mock.MagicMock
    +        sql_server_name = "SQL Server Name"
    +        sql_server_id = str(uuid4())
    +        database = Database(
    +            id="id",
    +            name="name",
    +            type="type",
    +            location="location",
    +            managed_by="managed_by",
    +            tde_encryption=TransparentDataEncryption(status="Disabled"),
    +        )
    +        sqlserver_client.sql_servers = {
    +            AZURE_SUBSCRIPTION: [
    +                Server(
    +                    id=sql_server_id,
    +                    name=sql_server_name,
    +                    public_network_access="",
    +                    minimal_tls_version="",
    +                    administrators=None,
    +                    auditing_policies=None,
    +                    firewall_rules=None,
    +                    databases=[database],
    +                    encryption_protector=EncryptionProtector(
    +                        server_key_type="AzureKeyVault"
    +                    ),
    +                )
    +            ]
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.sqlserver.sqlserver_tde_encrypted_with_cmk.sqlserver_tde_encrypted_with_cmk.sqlserver_client",
    +            new=sqlserver_client,
    +        ):
    +            from prowler.providers.azure.services.sqlserver.sqlserver_tde_encrypted_with_cmk.sqlserver_tde_encrypted_with_cmk import (
    +                sqlserver_tde_encrypted_with_cmk,
    +            )
    +
    +            check = sqlserver_tde_encrypted_with_cmk()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "FAIL"
    +            assert (
    +                result[0].status_extended
    +                == f"SQL Server {sql_server_name} from subscription {AZURE_SUBSCRIPTION} has TDE disabled with CMK."
    +            )
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == sql_server_name
    +            assert result[0].resource_id == sql_server_id
    +
    +    def test_sql_servers_database_encryption_enabled(self):
    +        sqlserver_client = mock.MagicMock
    +        sql_server_name = "SQL Server Name"
    +        sql_server_id = str(uuid4())
    +        database = Database(
    +            id="id",
    +            name="name",
    +            type="type",
    +            location="location",
    +            managed_by="managed_by",
    +            tde_encryption=TransparentDataEncryption(status="Enabled"),
    +        )
    +        sqlserver_client.sql_servers = {
    +            AZURE_SUBSCRIPTION: [
    +                Server(
    +                    id=sql_server_id,
    +                    name=sql_server_name,
    +                    public_network_access="",
    +                    minimal_tls_version="",
    +                    administrators=None,
    +                    auditing_policies=None,
    +                    firewall_rules=None,
    +                    databases=[database],
    +                    encryption_protector=EncryptionProtector(
    +                        server_key_type="AzureKeyVault"
    +                    ),
    +                )
    +            ]
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.sqlserver.sqlserver_tde_encrypted_with_cmk.sqlserver_tde_encrypted_with_cmk.sqlserver_client",
    +            new=sqlserver_client,
    +        ):
    +            from prowler.providers.azure.services.sqlserver.sqlserver_tde_encrypted_with_cmk.sqlserver_tde_encrypted_with_cmk import (
    +                sqlserver_tde_encrypted_with_cmk,
    +            )
    +
    +            check = sqlserver_tde_encrypted_with_cmk()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "PASS"
    +            assert (
    +                result[0].status_extended
    +                == f"SQL Server {sql_server_name} from subscription {AZURE_SUBSCRIPTION} has TDE enabled with CMK."
    +            )
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == sql_server_name
    +            assert result[0].resource_id == sql_server_id
    diff --git a/tests/providers/azure/services/sqlserver/sqlserver_tde_encryption_enabled/sqlserver_tde_encryption_enabled_test.py b/tests/providers/azure/services/sqlserver/sqlserver_tde_encryption_enabled/sqlserver_tde_encryption_enabled_test.py
    new file mode 100644
    index 00000000000..05308a8fc5a
    --- /dev/null
    +++ b/tests/providers/azure/services/sqlserver/sqlserver_tde_encryption_enabled/sqlserver_tde_encryption_enabled_test.py
    @@ -0,0 +1,159 @@
    +from unittest import mock
    +from uuid import uuid4
    +
    +from azure.mgmt.sql.models import TransparentDataEncryption
    +
    +from prowler.providers.azure.services.sqlserver.sqlserver_service import (
    +    Database,
    +    Server,
    +)
    +from tests.providers.azure.azure_fixtures import AZURE_SUBSCRIPTION
    +
    +
    +class Test_sqlserver_tde_encryption_enabled:
    +    def test_no_sql_servers(self):
    +        sqlserver_client = mock.MagicMock
    +        sqlserver_client.sql_servers = {}
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.sqlserver.sqlserver_tde_encryption_enabled.sqlserver_tde_encryption_enabled.sqlserver_client",
    +            new=sqlserver_client,
    +        ):
    +            from prowler.providers.azure.services.sqlserver.sqlserver_tde_encryption_enabled.sqlserver_tde_encryption_enabled import (
    +                sqlserver_tde_encryption_enabled,
    +            )
    +
    +            check = sqlserver_tde_encryption_enabled()
    +            result = check.execute()
    +            assert len(result) == 0
    +
    +    def test_no_sql_servers_databases(self):
    +        sqlserver_client = mock.MagicMock
    +        sql_server_name = "SQL Server Name"
    +        sql_server_id = str(uuid4())
    +        sqlserver_client.sql_servers = {
    +            AZURE_SUBSCRIPTION: [
    +                Server(
    +                    id=sql_server_id,
    +                    name=sql_server_name,
    +                    public_network_access="",
    +                    minimal_tls_version="",
    +                    administrators=None,
    +                    auditing_policies=None,
    +                    firewall_rules=None,
    +                    databases=None,
    +                )
    +            ]
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.sqlserver.sqlserver_tde_encryption_enabled.sqlserver_tde_encryption_enabled.sqlserver_client",
    +            new=sqlserver_client,
    +        ):
    +            from prowler.providers.azure.services.sqlserver.sqlserver_tde_encryption_enabled.sqlserver_tde_encryption_enabled import (
    +                sqlserver_tde_encryption_enabled,
    +            )
    +
    +            check = sqlserver_tde_encryption_enabled()
    +            result = check.execute()
    +            assert len(result) == 0
    +
    +    def test_sql_servers_database_encryption_disabled(self):
    +        sqlserver_client = mock.MagicMock
    +        sql_server_name = "SQL Server Name"
    +        sql_server_id = str(uuid4())
    +        database_name = "Database Name"
    +        database_id = str(uuid4())
    +        database = Database(
    +            id=database_id,
    +            name=database_name,
    +            type="type",
    +            location="location",
    +            managed_by="managed_by",
    +            tde_encryption=TransparentDataEncryption(status="Disabled"),
    +        )
    +        sqlserver_client.sql_servers = {
    +            AZURE_SUBSCRIPTION: [
    +                Server(
    +                    id=sql_server_id,
    +                    name=sql_server_name,
    +                    public_network_access="",
    +                    minimal_tls_version="",
    +                    administrators=None,
    +                    auditing_policies=None,
    +                    firewall_rules=None,
    +                    databases=[database],
    +                    encryption_protector=None,
    +                )
    +            ]
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.sqlserver.sqlserver_tde_encryption_enabled.sqlserver_tde_encryption_enabled.sqlserver_client",
    +            new=sqlserver_client,
    +        ):
    +            from prowler.providers.azure.services.sqlserver.sqlserver_tde_encryption_enabled.sqlserver_tde_encryption_enabled import (
    +                sqlserver_tde_encryption_enabled,
    +            )
    +
    +            check = sqlserver_tde_encryption_enabled()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "FAIL"
    +            assert (
    +                result[0].status_extended
    +                == f"Database {database_name} from SQL Server {sql_server_name} from subscription {AZURE_SUBSCRIPTION} has TDE disabled"
    +            )
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == database_name
    +            assert result[0].resource_id == database_id
    +
    +    def test_sql_servers_database_encryption_enabled(self):
    +        sqlserver_client = mock.MagicMock
    +        sql_server_name = "SQL Server Name"
    +        sql_server_id = str(uuid4())
    +        database_name = "Database Name"
    +        database_id = str(uuid4())
    +        database = Database(
    +            id=database_id,
    +            name=database_name,
    +            type="type",
    +            location="location",
    +            managed_by="managed_by",
    +            tde_encryption=TransparentDataEncryption(status="Enabled"),
    +        )
    +        sqlserver_client.sql_servers = {
    +            AZURE_SUBSCRIPTION: [
    +                Server(
    +                    id=sql_server_id,
    +                    name=sql_server_name,
    +                    public_network_access="",
    +                    minimal_tls_version="",
    +                    administrators=None,
    +                    auditing_policies=None,
    +                    firewall_rules=None,
    +                    databases=[database],
    +                    encryption_protector=None,
    +                )
    +            ]
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.sqlserver.sqlserver_tde_encryption_enabled.sqlserver_tde_encryption_enabled.sqlserver_client",
    +            new=sqlserver_client,
    +        ):
    +            from prowler.providers.azure.services.sqlserver.sqlserver_tde_encryption_enabled.sqlserver_tde_encryption_enabled import (
    +                sqlserver_tde_encryption_enabled,
    +            )
    +
    +            check = sqlserver_tde_encryption_enabled()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "PASS"
    +            assert (
    +                result[0].status_extended
    +                == f"Database {database_name} from SQL Server {sql_server_name} from subscription {AZURE_SUBSCRIPTION} has TDE enabled"
    +            )
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == database_name
    +            assert result[0].resource_id == database_id
    diff --git a/tests/providers/azure/services/sqlserver/sqlserver_unrestricted_inbound_access/sqlserver_unrestricted_inbound_access_test.py b/tests/providers/azure/services/sqlserver/sqlserver_unrestricted_inbound_access/sqlserver_unrestricted_inbound_access_test.py
    index 5a50e3f3911..74056f68200 100644
    --- a/tests/providers/azure/services/sqlserver/sqlserver_unrestricted_inbound_access/sqlserver_unrestricted_inbound_access_test.py
    +++ b/tests/providers/azure/services/sqlserver/sqlserver_unrestricted_inbound_access/sqlserver_unrestricted_inbound_access_test.py
    @@ -3,12 +3,11 @@
     
     from azure.mgmt.sql.models import FirewallRule
     
    -from prowler.providers.azure.services.sqlserver.sqlserver_service import SQL_Server
    +from prowler.providers.azure.services.sqlserver.sqlserver_service import Server
    +from tests.providers.azure.azure_fixtures import AZURE_SUBSCRIPTION
     
    -AZURE_SUSCRIPTION = str(uuid4())
     
    -
    -class Test_defender_ensure_defender_for_storage_is_on:
    +class Test_sqlserver_unrestricted_inbound_access:
         def test_no_sql_servers(self):
             sqlserver_client = mock.MagicMock
             sqlserver_client.sql_servers = {}
    @@ -30,8 +29,8 @@ def test_sql_servers_unrestricted_inbound_access(self):
             sql_server_name = "SQL Server Name"
             sql_server_id = str(uuid4())
             sqlserver_client.sql_servers = {
    -            AZURE_SUSCRIPTION: [
    -                SQL_Server(
    +            AZURE_SUBSCRIPTION: [
    +                Server(
                         id=sql_server_id,
                         name=sql_server_name,
                         public_network_access="",
    @@ -61,9 +60,9 @@ def test_sql_servers_unrestricted_inbound_access(self):
                 assert result[0].status == "FAIL"
                 assert (
                     result[0].status_extended
    -                == f"SQL Server {sql_server_name} from subscription {AZURE_SUSCRIPTION} has firewall rules allowing 0.0.0.0-255.255.255.255."
    +                == f"SQL Server {sql_server_name} from subscription {AZURE_SUBSCRIPTION} has firewall rules allowing 0.0.0.0-255.255.255.255."
                 )
    -            assert result[0].subscription == AZURE_SUSCRIPTION
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
                 assert result[0].resource_name == sql_server_name
                 assert result[0].resource_id == sql_server_id
     
    @@ -72,8 +71,8 @@ def test_sql_servers_restricted_inbound_access(self):
             sql_server_name = "SQL Server Name"
             sql_server_id = str(uuid4())
             sqlserver_client.sql_servers = {
    -            AZURE_SUSCRIPTION: [
    -                SQL_Server(
    +            AZURE_SUBSCRIPTION: [
    +                Server(
                         id=sql_server_id,
                         name=sql_server_name,
                         public_network_access="",
    @@ -103,8 +102,8 @@ def test_sql_servers_restricted_inbound_access(self):
                 assert result[0].status == "PASS"
                 assert (
                     result[0].status_extended
    -                == f"SQL Server {sql_server_name} from subscription {AZURE_SUSCRIPTION} does not have firewall rules allowing 0.0.0.0-255.255.255.255."
    +                == f"SQL Server {sql_server_name} from subscription {AZURE_SUBSCRIPTION} does not have firewall rules allowing 0.0.0.0-255.255.255.255."
                 )
    -            assert result[0].subscription == AZURE_SUSCRIPTION
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
                 assert result[0].resource_name == sql_server_name
                 assert result[0].resource_id == sql_server_id
    diff --git a/tests/providers/azure/services/sqlserver/sqlserver_va_emails_notifications_admins_enabled/sqlserver_va_emails_notifications_admins_enabled_test.py b/tests/providers/azure/services/sqlserver/sqlserver_va_emails_notifications_admins_enabled/sqlserver_va_emails_notifications_admins_enabled_test.py
    new file mode 100644
    index 00000000000..bff8a005d75
    --- /dev/null
    +++ b/tests/providers/azure/services/sqlserver/sqlserver_va_emails_notifications_admins_enabled/sqlserver_va_emails_notifications_admins_enabled_test.py
    @@ -0,0 +1,207 @@
    +from unittest import mock
    +from uuid import uuid4
    +
    +from azure.mgmt.sql.models import (
    +    ServerVulnerabilityAssessment,
    +    VulnerabilityAssessmentRecurringScansProperties,
    +)
    +
    +from prowler.providers.azure.services.sqlserver.sqlserver_service import Server
    +from tests.providers.azure.azure_fixtures import AZURE_SUBSCRIPTION
    +
    +
    +class Test_sqlserver_va_emails_notifications_admins_enabled:
    +    def test_no_sql_servers(self):
    +        sqlserver_client = mock.MagicMock
    +        sqlserver_client.sql_servers = {}
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.sqlserver.sqlserver_va_emails_notifications_admins_enabled.sqlserver_va_emails_notifications_admins_enabled.sqlserver_client",
    +            new=sqlserver_client,
    +        ):
    +            from prowler.providers.azure.services.sqlserver.sqlserver_va_emails_notifications_admins_enabled.sqlserver_va_emails_notifications_admins_enabled import (
    +                sqlserver_va_emails_notifications_admins_enabled,
    +            )
    +
    +            check = sqlserver_va_emails_notifications_admins_enabled()
    +            result = check.execute()
    +            assert len(result) == 0
    +
    +    def test_sql_servers_no_vulnerability_assessment(self):
    +        sqlserver_client = mock.MagicMock
    +        sql_server_name = "SQL Server Name"
    +        sql_server_id = str(uuid4())
    +        sqlserver_client.sql_servers = {
    +            AZURE_SUBSCRIPTION: [
    +                Server(
    +                    id=sql_server_id,
    +                    name=sql_server_name,
    +                    public_network_access="",
    +                    minimal_tls_version="",
    +                    administrators=None,
    +                    auditing_policies=None,
    +                    firewall_rules=None,
    +                    databases=None,
    +                    encryption_protector=None,
    +                    vulnerability_assessment=None,
    +                )
    +            ]
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.sqlserver.sqlserver_va_emails_notifications_admins_enabled.sqlserver_va_emails_notifications_admins_enabled.sqlserver_client",
    +            new=sqlserver_client,
    +        ):
    +            from prowler.providers.azure.services.sqlserver.sqlserver_va_emails_notifications_admins_enabled.sqlserver_va_emails_notifications_admins_enabled import (
    +                sqlserver_va_emails_notifications_admins_enabled,
    +            )
    +
    +            check = sqlserver_va_emails_notifications_admins_enabled()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "FAIL"
    +            assert (
    +                result[0].status_extended
    +                == f"SQL Server {sql_server_name} from subscription {AZURE_SUBSCRIPTION} has vulnerability assessment disabled."
    +            )
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == sql_server_name
    +            assert result[0].resource_id == sql_server_id
    +
    +    def test_sql_servers_no_vulnerability_assessment_no_admin_emails(self):
    +        sqlserver_client = mock.MagicMock
    +        sql_server_name = "SQL Server Name"
    +        sql_server_id = str(uuid4())
    +        sqlserver_client.sql_servers = {
    +            AZURE_SUBSCRIPTION: [
    +                Server(
    +                    id=sql_server_id,
    +                    name=sql_server_name,
    +                    public_network_access="",
    +                    minimal_tls_version="",
    +                    administrators=None,
    +                    auditing_policies=None,
    +                    firewall_rules=None,
    +                    databases=None,
    +                    encryption_protector=None,
    +                    vulnerability_assessment=ServerVulnerabilityAssessment(
    +                        storage_container_path="/subcription_id/resource_group/sql_server",
    +                        recurring_scans=VulnerabilityAssessmentRecurringScansProperties(
    +                            email_subscription_admins=None
    +                        ),
    +                    ),
    +                )
    +            ]
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.sqlserver.sqlserver_va_emails_notifications_admins_enabled.sqlserver_va_emails_notifications_admins_enabled.sqlserver_client",
    +            new=sqlserver_client,
    +        ):
    +            from prowler.providers.azure.services.sqlserver.sqlserver_va_emails_notifications_admins_enabled.sqlserver_va_emails_notifications_admins_enabled import (
    +                sqlserver_va_emails_notifications_admins_enabled,
    +            )
    +
    +            check = sqlserver_va_emails_notifications_admins_enabled()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "FAIL"
    +            assert (
    +                result[0].status_extended
    +                == f"SQL Server {sql_server_name} from subscription {AZURE_SUBSCRIPTION} has vulnerability assessment enabled but no scan reports configured for subscription admins."
    +            )
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == sql_server_name
    +            assert result[0].resource_id == sql_server_id
    +
    +    def test_sql_servers_vulnerability_assessment_admin_emails_false(self):
    +        sqlserver_client = mock.MagicMock
    +        sql_server_name = "SQL Server Name"
    +        sql_server_id = str(uuid4())
    +        sqlserver_client.sql_servers = {
    +            AZURE_SUBSCRIPTION: [
    +                Server(
    +                    id=sql_server_id,
    +                    name=sql_server_name,
    +                    public_network_access="",
    +                    minimal_tls_version="",
    +                    administrators=None,
    +                    auditing_policies=None,
    +                    firewall_rules=None,
    +                    databases=None,
    +                    encryption_protector=None,
    +                    vulnerability_assessment=ServerVulnerabilityAssessment(
    +                        storage_container_path="/subcription_id/resource_group/sql_server",
    +                        recurring_scans=VulnerabilityAssessmentRecurringScansProperties(
    +                            email_subscription_admins=False
    +                        ),
    +                    ),
    +                )
    +            ]
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.sqlserver.sqlserver_va_emails_notifications_admins_enabled.sqlserver_va_emails_notifications_admins_enabled.sqlserver_client",
    +            new=sqlserver_client,
    +        ):
    +            from prowler.providers.azure.services.sqlserver.sqlserver_va_emails_notifications_admins_enabled.sqlserver_va_emails_notifications_admins_enabled import (
    +                sqlserver_va_emails_notifications_admins_enabled,
    +            )
    +
    +            check = sqlserver_va_emails_notifications_admins_enabled()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "FAIL"
    +            assert (
    +                result[0].status_extended
    +                == f"SQL Server {sql_server_name} from subscription {AZURE_SUBSCRIPTION} has vulnerability assessment enabled but no scan reports configured for subscription admins."
    +            )
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == sql_server_name
    +            assert result[0].resource_id == sql_server_id
    +
    +    def test_sql_servers_vulnerability_assessment_no_email_subscription_admins(self):
    +        sqlserver_client = mock.MagicMock
    +        sql_server_name = "SQL Server Name"
    +        sql_server_id = str(uuid4())
    +        sqlserver_client.sql_servers = {
    +            AZURE_SUBSCRIPTION: [
    +                Server(
    +                    id=sql_server_id,
    +                    name=sql_server_name,
    +                    public_network_access="",
    +                    minimal_tls_version="",
    +                    administrators=None,
    +                    auditing_policies=None,
    +                    firewall_rules=None,
    +                    databases=None,
    +                    encryption_protector=None,
    +                    vulnerability_assessment=ServerVulnerabilityAssessment(
    +                        storage_container_path="/subcription_id/resource_group/sql_server",
    +                        recurring_scans=VulnerabilityAssessmentRecurringScansProperties(
    +                            email_subscription_admins=True
    +                        ),
    +                    ),
    +                )
    +            ]
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.sqlserver.sqlserver_va_emails_notifications_admins_enabled.sqlserver_va_emails_notifications_admins_enabled.sqlserver_client",
    +            new=sqlserver_client,
    +        ):
    +            from prowler.providers.azure.services.sqlserver.sqlserver_va_emails_notifications_admins_enabled.sqlserver_va_emails_notifications_admins_enabled import (
    +                sqlserver_va_emails_notifications_admins_enabled,
    +            )
    +
    +            check = sqlserver_va_emails_notifications_admins_enabled()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "PASS"
    +            assert (
    +                result[0].status_extended
    +                == f"SQL Server {sql_server_name} from subscription {AZURE_SUBSCRIPTION} has vulnerability assessment enabled and scan reports configured for subscription admins."
    +            )
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == sql_server_name
    +            assert result[0].resource_id == sql_server_id
    diff --git a/tests/providers/azure/services/sqlserver/sqlserver_va_periodic_recurring_scans_enabled/sqlserver_va_periodic_recurring_scans_enabled_test.py b/tests/providers/azure/services/sqlserver/sqlserver_va_periodic_recurring_scans_enabled/sqlserver_va_periodic_recurring_scans_enabled_test.py
    new file mode 100644
    index 00000000000..fa1a43d3c9f
    --- /dev/null
    +++ b/tests/providers/azure/services/sqlserver/sqlserver_va_periodic_recurring_scans_enabled/sqlserver_va_periodic_recurring_scans_enabled_test.py
    @@ -0,0 +1,204 @@
    +from unittest import mock
    +from uuid import uuid4
    +
    +from azure.mgmt.sql.models import (
    +    ServerVulnerabilityAssessment,
    +    VulnerabilityAssessmentRecurringScansProperties,
    +)
    +
    +from prowler.providers.azure.services.sqlserver.sqlserver_service import Server
    +from tests.providers.azure.azure_fixtures import AZURE_SUBSCRIPTION
    +
    +
    +class Test_sqlserver_va_periodic_recurring_scans_enabled:
    +    def test_no_sql_servers(self):
    +        sqlserver_client = mock.MagicMock
    +        sqlserver_client.sql_servers = {}
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.sqlserver.sqlserver_va_periodic_recurring_scans_enabled.sqlserver_va_periodic_recurring_scans_enabled.sqlserver_client",
    +            new=sqlserver_client,
    +        ):
    +            from prowler.providers.azure.services.sqlserver.sqlserver_va_periodic_recurring_scans_enabled.sqlserver_va_periodic_recurring_scans_enabled import (
    +                sqlserver_va_periodic_recurring_scans_enabled,
    +            )
    +
    +            check = sqlserver_va_periodic_recurring_scans_enabled()
    +            result = check.execute()
    +            assert len(result) == 0
    +
    +    def test_sql_servers_no_vulnerability_assessment(self):
    +        sqlserver_client = mock.MagicMock
    +        sql_server_name = "SQL Server Name"
    +        sql_server_id = str(uuid4())
    +        sqlserver_client.sql_servers = {
    +            AZURE_SUBSCRIPTION: [
    +                Server(
    +                    id=sql_server_id,
    +                    name=sql_server_name,
    +                    public_network_access="",
    +                    minimal_tls_version="",
    +                    administrators=None,
    +                    auditing_policies=None,
    +                    firewall_rules=None,
    +                    databases=None,
    +                    encryption_protector=None,
    +                    vulnerability_assessment=None,
    +                )
    +            ]
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.sqlserver.sqlserver_va_periodic_recurring_scans_enabled.sqlserver_va_periodic_recurring_scans_enabled.sqlserver_client",
    +            new=sqlserver_client,
    +        ):
    +            from prowler.providers.azure.services.sqlserver.sqlserver_va_periodic_recurring_scans_enabled.sqlserver_va_periodic_recurring_scans_enabled import (
    +                sqlserver_va_periodic_recurring_scans_enabled,
    +            )
    +
    +            check = sqlserver_va_periodic_recurring_scans_enabled()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "FAIL"
    +            assert (
    +                result[0].status_extended
    +                == f"SQL Server {sql_server_name} from subscription {AZURE_SUBSCRIPTION} has vulnerability assessment disabled."
    +            )
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == sql_server_name
    +            assert result[0].resource_id == sql_server_id
    +
    +    def test_sql_servers_no_vulnerability_assessment_storage_container_path(self):
    +        sqlserver_client = mock.MagicMock
    +        sql_server_name = "SQL Server Name"
    +        sql_server_id = str(uuid4())
    +        sqlserver_client.sql_servers = {
    +            AZURE_SUBSCRIPTION: [
    +                Server(
    +                    id=sql_server_id,
    +                    name=sql_server_name,
    +                    public_network_access="",
    +                    minimal_tls_version="",
    +                    administrators=None,
    +                    auditing_policies=None,
    +                    firewall_rules=None,
    +                    databases=None,
    +                    encryption_protector=None,
    +                    vulnerability_assessment=ServerVulnerabilityAssessment(
    +                        storage_container_path=None
    +                    ),
    +                )
    +            ]
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.sqlserver.sqlserver_va_periodic_recurring_scans_enabled.sqlserver_va_periodic_recurring_scans_enabled.sqlserver_client",
    +            new=sqlserver_client,
    +        ):
    +            from prowler.providers.azure.services.sqlserver.sqlserver_va_periodic_recurring_scans_enabled.sqlserver_va_periodic_recurring_scans_enabled import (
    +                sqlserver_va_periodic_recurring_scans_enabled,
    +            )
    +
    +            check = sqlserver_va_periodic_recurring_scans_enabled()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "FAIL"
    +            assert (
    +                result[0].status_extended
    +                == f"SQL Server {sql_server_name} from subscription {AZURE_SUBSCRIPTION} has vulnerability assessment disabled."
    +            )
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == sql_server_name
    +            assert result[0].resource_id == sql_server_id
    +
    +    def test_sql_servers_vulnerability_assessment_recuring_scans_disabled(self):
    +        sqlserver_client = mock.MagicMock
    +        sql_server_name = "SQL Server Name"
    +        sql_server_id = str(uuid4())
    +        sqlserver_client.sql_servers = {
    +            AZURE_SUBSCRIPTION: [
    +                Server(
    +                    id=sql_server_id,
    +                    name=sql_server_name,
    +                    public_network_access="",
    +                    minimal_tls_version="",
    +                    administrators=None,
    +                    auditing_policies=None,
    +                    firewall_rules=None,
    +                    databases=None,
    +                    encryption_protector=None,
    +                    vulnerability_assessment=ServerVulnerabilityAssessment(
    +                        storage_container_path="/subcription_id/resource_group/sql_server",
    +                        recurring_scans=VulnerabilityAssessmentRecurringScansProperties(
    +                            is_enabled=False
    +                        ),
    +                    ),
    +                )
    +            ]
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.sqlserver.sqlserver_va_periodic_recurring_scans_enabled.sqlserver_va_periodic_recurring_scans_enabled.sqlserver_client",
    +            new=sqlserver_client,
    +        ):
    +            from prowler.providers.azure.services.sqlserver.sqlserver_va_periodic_recurring_scans_enabled.sqlserver_va_periodic_recurring_scans_enabled import (
    +                sqlserver_va_periodic_recurring_scans_enabled,
    +            )
    +
    +            check = sqlserver_va_periodic_recurring_scans_enabled()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "FAIL"
    +            assert (
    +                result[0].status_extended
    +                == f"SQL Server {sql_server_name} from subscription {AZURE_SUBSCRIPTION} has vulnerability assessment enabled but no recurring scans."
    +            )
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == sql_server_name
    +            assert result[0].resource_id == sql_server_id
    +
    +    def test_sql_servers_vulnerability_assessment_recuring_scans_enabled(self):
    +        sqlserver_client = mock.MagicMock
    +        sql_server_name = "SQL Server Name"
    +        sql_server_id = str(uuid4())
    +        sqlserver_client.sql_servers = {
    +            AZURE_SUBSCRIPTION: [
    +                Server(
    +                    id=sql_server_id,
    +                    name=sql_server_name,
    +                    public_network_access="",
    +                    minimal_tls_version="",
    +                    administrators=None,
    +                    auditing_policies=None,
    +                    firewall_rules=None,
    +                    databases=None,
    +                    encryption_protector=None,
    +                    vulnerability_assessment=ServerVulnerabilityAssessment(
    +                        storage_container_path="/subcription_id/resource_group/sql_server",
    +                        recurring_scans=VulnerabilityAssessmentRecurringScansProperties(
    +                            is_enabled=True
    +                        ),
    +                    ),
    +                )
    +            ]
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.sqlserver.sqlserver_va_periodic_recurring_scans_enabled.sqlserver_va_periodic_recurring_scans_enabled.sqlserver_client",
    +            new=sqlserver_client,
    +        ):
    +            from prowler.providers.azure.services.sqlserver.sqlserver_va_periodic_recurring_scans_enabled.sqlserver_va_periodic_recurring_scans_enabled import (
    +                sqlserver_va_periodic_recurring_scans_enabled,
    +            )
    +
    +            check = sqlserver_va_periodic_recurring_scans_enabled()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "PASS"
    +            assert (
    +                result[0].status_extended
    +                == f"SQL Server {sql_server_name} from subscription {AZURE_SUBSCRIPTION} has periodic recurring scans enabled."
    +            )
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == sql_server_name
    +            assert result[0].resource_id == sql_server_id
    diff --git a/tests/providers/azure/services/sqlserver/sqlserver_va_scan_reports_configured/sqlserver_va_scan_reports_configured_test.py b/tests/providers/azure/services/sqlserver/sqlserver_va_scan_reports_configured/sqlserver_va_scan_reports_configured_test.py
    new file mode 100644
    index 00000000000..5bff4f61535
    --- /dev/null
    +++ b/tests/providers/azure/services/sqlserver/sqlserver_va_scan_reports_configured/sqlserver_va_scan_reports_configured_test.py
    @@ -0,0 +1,253 @@
    +from unittest import mock
    +from uuid import uuid4
    +
    +from azure.mgmt.sql.models import (
    +    ServerVulnerabilityAssessment,
    +    VulnerabilityAssessmentRecurringScansProperties,
    +)
    +
    +from prowler.providers.azure.services.sqlserver.sqlserver_service import Server
    +from tests.providers.azure.azure_fixtures import AZURE_SUBSCRIPTION
    +
    +
    +class Test_sqlserver_va_scan_reports_configured:
    +    def test_no_sql_servers(self):
    +        sqlserver_client = mock.MagicMock
    +        sqlserver_client.sql_servers = {}
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.sqlserver.sqlserver_va_scan_reports_configured.sqlserver_va_scan_reports_configured.sqlserver_client",
    +            new=sqlserver_client,
    +        ):
    +            from prowler.providers.azure.services.sqlserver.sqlserver_va_scan_reports_configured.sqlserver_va_scan_reports_configured import (
    +                sqlserver_va_scan_reports_configured,
    +            )
    +
    +            check = sqlserver_va_scan_reports_configured()
    +            result = check.execute()
    +            assert len(result) == 0
    +
    +    def test_sql_servers_no_vulnerability_assessment(self):
    +        sqlserver_client = mock.MagicMock
    +        sql_server_name = "SQL Server Name"
    +        sql_server_id = str(uuid4())
    +        sqlserver_client.sql_servers = {
    +            AZURE_SUBSCRIPTION: [
    +                Server(
    +                    id=sql_server_id,
    +                    name=sql_server_name,
    +                    public_network_access="",
    +                    minimal_tls_version="",
    +                    administrators=None,
    +                    auditing_policies=None,
    +                    firewall_rules=None,
    +                    databases=None,
    +                    encryption_protector=None,
    +                    vulnerability_assessment=None,
    +                )
    +            ]
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.sqlserver.sqlserver_va_scan_reports_configured.sqlserver_va_scan_reports_configured.sqlserver_client",
    +            new=sqlserver_client,
    +        ):
    +            from prowler.providers.azure.services.sqlserver.sqlserver_va_scan_reports_configured.sqlserver_va_scan_reports_configured import (
    +                sqlserver_va_scan_reports_configured,
    +            )
    +
    +            check = sqlserver_va_scan_reports_configured()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "FAIL"
    +            assert (
    +                result[0].status_extended
    +                == f"SQL Server {sql_server_name} from subscription {AZURE_SUBSCRIPTION} has vulnerability assessment disabled."
    +            )
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == sql_server_name
    +            assert result[0].resource_id == sql_server_id
    +
    +    def test_sql_servers_no_vulnerability_assessment_emails(self):
    +        sqlserver_client = mock.MagicMock
    +        sql_server_name = "SQL Server Name"
    +        sql_server_id = str(uuid4())
    +        sqlserver_client.sql_servers = {
    +            AZURE_SUBSCRIPTION: [
    +                Server(
    +                    id=sql_server_id,
    +                    name=sql_server_name,
    +                    public_network_access="",
    +                    minimal_tls_version="",
    +                    administrators=None,
    +                    auditing_policies=None,
    +                    firewall_rules=None,
    +                    databases=None,
    +                    encryption_protector=None,
    +                    vulnerability_assessment=ServerVulnerabilityAssessment(
    +                        storage_container_path="/subcription_id/resource_group/sql_server",
    +                        recurring_scans=VulnerabilityAssessmentRecurringScansProperties(
    +                            emails=None, email_subscription_admins=False
    +                        ),
    +                    ),
    +                )
    +            ]
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.sqlserver.sqlserver_va_scan_reports_configured.sqlserver_va_scan_reports_configured.sqlserver_client",
    +            new=sqlserver_client,
    +        ):
    +            from prowler.providers.azure.services.sqlserver.sqlserver_va_scan_reports_configured.sqlserver_va_scan_reports_configured import (
    +                sqlserver_va_scan_reports_configured,
    +            )
    +
    +            check = sqlserver_va_scan_reports_configured()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "FAIL"
    +            assert (
    +                result[0].status_extended
    +                == f"SQL Server {sql_server_name} from subscription {AZURE_SUBSCRIPTION} has vulnerability assessment enabled but no scan reports configured."
    +            )
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == sql_server_name
    +            assert result[0].resource_id == sql_server_id
    +
    +    def test_sql_servers_vulnerability_assessment_emails_none(self):
    +        sqlserver_client = mock.MagicMock
    +        sql_server_name = "SQL Server Name"
    +        sql_server_id = str(uuid4())
    +        sqlserver_client.sql_servers = {
    +            AZURE_SUBSCRIPTION: [
    +                Server(
    +                    id=sql_server_id,
    +                    name=sql_server_name,
    +                    public_network_access="",
    +                    minimal_tls_version="",
    +                    administrators=None,
    +                    auditing_policies=None,
    +                    firewall_rules=None,
    +                    databases=None,
    +                    encryption_protector=None,
    +                    vulnerability_assessment=ServerVulnerabilityAssessment(
    +                        storage_container_path="/subcription_id/resource_group/sql_server",
    +                        recurring_scans=VulnerabilityAssessmentRecurringScansProperties(
    +                            emails=None, email_subscription_admins=True
    +                        ),
    +                    ),
    +                )
    +            ]
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.sqlserver.sqlserver_va_scan_reports_configured.sqlserver_va_scan_reports_configured.sqlserver_client",
    +            new=sqlserver_client,
    +        ):
    +            from prowler.providers.azure.services.sqlserver.sqlserver_va_scan_reports_configured.sqlserver_va_scan_reports_configured import (
    +                sqlserver_va_scan_reports_configured,
    +            )
    +
    +            check = sqlserver_va_scan_reports_configured()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "PASS"
    +            assert (
    +                result[0].status_extended
    +                == f"SQL Server {sql_server_name} from subscription {AZURE_SUBSCRIPTION} has vulnerability assessment enabled and scan reports configured."
    +            )
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == sql_server_name
    +            assert result[0].resource_id == sql_server_id
    +
    +    def test_sql_servers_vulnerability_assessment_no_email_subscription_admins(self):
    +        sqlserver_client = mock.MagicMock
    +        sql_server_name = "SQL Server Name"
    +        sql_server_id = str(uuid4())
    +        sqlserver_client.sql_servers = {
    +            AZURE_SUBSCRIPTION: [
    +                Server(
    +                    id=sql_server_id,
    +                    name=sql_server_name,
    +                    public_network_access="",
    +                    minimal_tls_version="",
    +                    administrators=None,
    +                    auditing_policies=None,
    +                    firewall_rules=None,
    +                    databases=None,
    +                    encryption_protector=None,
    +                    vulnerability_assessment=ServerVulnerabilityAssessment(
    +                        storage_container_path="/subcription_id/resource_group/sql_server",
    +                        recurring_scans=VulnerabilityAssessmentRecurringScansProperties(
    +                            emails=["email@email.com"], email_subscription_admins=False
    +                        ),
    +                    ),
    +                )
    +            ]
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.sqlserver.sqlserver_va_scan_reports_configured.sqlserver_va_scan_reports_configured.sqlserver_client",
    +            new=sqlserver_client,
    +        ):
    +            from prowler.providers.azure.services.sqlserver.sqlserver_va_scan_reports_configured.sqlserver_va_scan_reports_configured import (
    +                sqlserver_va_scan_reports_configured,
    +            )
    +
    +            check = sqlserver_va_scan_reports_configured()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "PASS"
    +            assert (
    +                result[0].status_extended
    +                == f"SQL Server {sql_server_name} from subscription {AZURE_SUBSCRIPTION} has vulnerability assessment enabled and scan reports configured."
    +            )
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == sql_server_name
    +            assert result[0].resource_id == sql_server_id
    +
    +    def test_sql_servers_vulnerability_assessment_both_emails(self):
    +        sqlserver_client = mock.MagicMock
    +        sql_server_name = "SQL Server Name"
    +        sql_server_id = str(uuid4())
    +        sqlserver_client.sql_servers = {
    +            AZURE_SUBSCRIPTION: [
    +                Server(
    +                    id=sql_server_id,
    +                    name=sql_server_name,
    +                    public_network_access="",
    +                    minimal_tls_version="",
    +                    administrators=None,
    +                    auditing_policies=None,
    +                    firewall_rules=None,
    +                    databases=None,
    +                    encryption_protector=None,
    +                    vulnerability_assessment=ServerVulnerabilityAssessment(
    +                        storage_container_path="/subcription_id/resource_group/sql_server",
    +                        recurring_scans=VulnerabilityAssessmentRecurringScansProperties(
    +                            emails=["email@email.com"], email_subscription_admins=True
    +                        ),
    +                    ),
    +                )
    +            ]
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.sqlserver.sqlserver_va_scan_reports_configured.sqlserver_va_scan_reports_configured.sqlserver_client",
    +            new=sqlserver_client,
    +        ):
    +            from prowler.providers.azure.services.sqlserver.sqlserver_va_scan_reports_configured.sqlserver_va_scan_reports_configured import (
    +                sqlserver_va_scan_reports_configured,
    +            )
    +
    +            check = sqlserver_va_scan_reports_configured()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "PASS"
    +            assert (
    +                result[0].status_extended
    +                == f"SQL Server {sql_server_name} from subscription {AZURE_SUBSCRIPTION} has vulnerability assessment enabled and scan reports configured."
    +            )
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == sql_server_name
    +            assert result[0].resource_id == sql_server_id
    diff --git a/tests/providers/azure/services/sqlserver/sqlserver_vulnerability_assessment_enabled/sqlserver_vulnerability_assessment_enabled_test.py b/tests/providers/azure/services/sqlserver/sqlserver_vulnerability_assessment_enabled/sqlserver_vulnerability_assessment_enabled_test.py
    new file mode 100644
    index 00000000000..ed1abbc1cf8
    --- /dev/null
    +++ b/tests/providers/azure/services/sqlserver/sqlserver_vulnerability_assessment_enabled/sqlserver_vulnerability_assessment_enabled_test.py
    @@ -0,0 +1,189 @@
    +from unittest import mock
    +from uuid import uuid4
    +
    +from azure.mgmt.sql.models import (
    +    EncryptionProtector,
    +    ServerVulnerabilityAssessment,
    +    TransparentDataEncryption,
    +)
    +
    +from prowler.providers.azure.services.sqlserver.sqlserver_service import (
    +    Database,
    +    Server,
    +)
    +from tests.providers.azure.azure_fixtures import AZURE_SUBSCRIPTION
    +
    +
    +class Test_sqlserver_vulnerability_assessment_enabled:
    +    def test_no_sql_servers(self):
    +        sqlserver_client = mock.MagicMock
    +        sqlserver_client.sql_servers = {}
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.sqlserver.sqlserver_vulnerability_assessment_enabled.sqlserver_vulnerability_assessment_enabled.sqlserver_client",
    +            new=sqlserver_client,
    +        ):
    +            from prowler.providers.azure.services.sqlserver.sqlserver_vulnerability_assessment_enabled.sqlserver_vulnerability_assessment_enabled import (
    +                sqlserver_vulnerability_assessment_enabled,
    +            )
    +
    +            check = sqlserver_vulnerability_assessment_enabled()
    +            result = check.execute()
    +            assert len(result) == 0
    +
    +    def test_sql_servers_no_vulnerability_assessment(self):
    +        sqlserver_client = mock.MagicMock
    +        sql_server_name = "SQL Server Name"
    +        sql_server_id = str(uuid4())
    +        database = Database(
    +            id="id",
    +            name="name",
    +            type="type",
    +            location="location",
    +            managed_by="managed_by",
    +            tde_encryption=None,
    +        )
    +        sqlserver_client.sql_servers = {
    +            AZURE_SUBSCRIPTION: [
    +                Server(
    +                    id=sql_server_id,
    +                    name=sql_server_name,
    +                    public_network_access="",
    +                    minimal_tls_version="",
    +                    administrators=None,
    +                    auditing_policies=None,
    +                    firewall_rules=None,
    +                    databases=[database],
    +                    encryption_protector=EncryptionProtector(
    +                        server_key_type="ServiceManaged"
    +                    ),
    +                    vulnerability_assessment=None,
    +                )
    +            ]
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.sqlserver.sqlserver_vulnerability_assessment_enabled.sqlserver_vulnerability_assessment_enabled.sqlserver_client",
    +            new=sqlserver_client,
    +        ):
    +            from prowler.providers.azure.services.sqlserver.sqlserver_vulnerability_assessment_enabled.sqlserver_vulnerability_assessment_enabled import (
    +                sqlserver_vulnerability_assessment_enabled,
    +            )
    +
    +            check = sqlserver_vulnerability_assessment_enabled()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "FAIL"
    +            assert (
    +                result[0].status_extended
    +                == f"SQL Server {sql_server_name} from subscription {AZURE_SUBSCRIPTION} has vulnerability assessment disabled."
    +            )
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == sql_server_name
    +            assert result[0].resource_id == sql_server_id
    +
    +    def test_sql_servers_no_vulnerability_assessment_path(self):
    +        sqlserver_client = mock.MagicMock
    +        sql_server_name = "SQL Server Name"
    +        sql_server_id = str(uuid4())
    +        database = Database(
    +            id="id",
    +            name="name",
    +            type="type",
    +            location="location",
    +            managed_by="managed_by",
    +            tde_encryption=TransparentDataEncryption(status="Disabled"),
    +        )
    +        sqlserver_client.sql_servers = {
    +            AZURE_SUBSCRIPTION: [
    +                Server(
    +                    id=sql_server_id,
    +                    name=sql_server_name,
    +                    public_network_access="",
    +                    minimal_tls_version="",
    +                    administrators=None,
    +                    auditing_policies=None,
    +                    firewall_rules=None,
    +                    databases=[database],
    +                    encryption_protector=EncryptionProtector(
    +                        server_key_type="AzureKeyVault"
    +                    ),
    +                    vulnerability_assessment=ServerVulnerabilityAssessment(
    +                        storage_container_path=None
    +                    ),
    +                )
    +            ]
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.sqlserver.sqlserver_vulnerability_assessment_enabled.sqlserver_vulnerability_assessment_enabled.sqlserver_client",
    +            new=sqlserver_client,
    +        ):
    +            from prowler.providers.azure.services.sqlserver.sqlserver_vulnerability_assessment_enabled.sqlserver_vulnerability_assessment_enabled import (
    +                sqlserver_vulnerability_assessment_enabled,
    +            )
    +
    +            check = sqlserver_vulnerability_assessment_enabled()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "FAIL"
    +            assert (
    +                result[0].status_extended
    +                == f"SQL Server {sql_server_name} from subscription {AZURE_SUBSCRIPTION} has vulnerability assessment disabled."
    +            )
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == sql_server_name
    +            assert result[0].resource_id == sql_server_id
    +
    +    def test_sql_servers_vulnerability_assessment_enabled(self):
    +        sqlserver_client = mock.MagicMock
    +        sql_server_name = "SQL Server Name"
    +        sql_server_id = str(uuid4())
    +        database = Database(
    +            id="id",
    +            name="name",
    +            type="type",
    +            location="location",
    +            managed_by="managed_by",
    +            tde_encryption=TransparentDataEncryption(status="Enabled"),
    +        )
    +        sqlserver_client.sql_servers = {
    +            AZURE_SUBSCRIPTION: [
    +                Server(
    +                    id=sql_server_id,
    +                    name=sql_server_name,
    +                    public_network_access="",
    +                    minimal_tls_version="",
    +                    administrators=None,
    +                    auditing_policies=None,
    +                    firewall_rules=None,
    +                    databases=[database],
    +                    encryption_protector=EncryptionProtector(
    +                        server_key_type="AzureKeyVault"
    +                    ),
    +                    vulnerability_assessment=ServerVulnerabilityAssessment(
    +                        storage_container_path="/subcription_id/resource_group/sql_server"
    +                    ),
    +                )
    +            ]
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.sqlserver.sqlserver_vulnerability_assessment_enabled.sqlserver_vulnerability_assessment_enabled.sqlserver_client",
    +            new=sqlserver_client,
    +        ):
    +            from prowler.providers.azure.services.sqlserver.sqlserver_vulnerability_assessment_enabled.sqlserver_vulnerability_assessment_enabled import (
    +                sqlserver_vulnerability_assessment_enabled,
    +            )
    +
    +            check = sqlserver_vulnerability_assessment_enabled()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "PASS"
    +            assert (
    +                result[0].status_extended
    +                == f"SQL Server {sql_server_name} from subscription {AZURE_SUBSCRIPTION} has vulnerability assessment enabled."
    +            )
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == sql_server_name
    +            assert result[0].resource_id == sql_server_id
    diff --git a/tests/providers/azure/services/storage/storage_blob_public_access_level_is_disabled/storage_blob_public_access_level_is_disabled_test.py b/tests/providers/azure/services/storage/storage_blob_public_access_level_is_disabled/storage_blob_public_access_level_is_disabled_test.py
    index 94f31b3c045..ce91bd55d62 100644
    --- a/tests/providers/azure/services/storage/storage_blob_public_access_level_is_disabled/storage_blob_public_access_level_is_disabled_test.py
    +++ b/tests/providers/azure/services/storage/storage_blob_public_access_level_is_disabled/storage_blob_public_access_level_is_disabled_test.py
    @@ -1,9 +1,8 @@
     from unittest import mock
     from uuid import uuid4
     
    -from prowler.providers.azure.services.storage.storage_service import Storage_Account
    -
    -AZURE_SUSCRIPTION = str(uuid4())
    +from prowler.providers.azure.services.storage.storage_service import Account
    +from tests.providers.azure.azure_fixtures import AZURE_SUBSCRIPTION
     
     
     class Test_storage_blob_public_access_level_is_disabled:
    @@ -28,16 +27,19 @@ def test_storage_storage_accounts_public_access_level_enabled(self):
             storage_account_name = "Test Storage Account"
             storage_client = mock.MagicMock
             storage_client.storage_accounts = {
    -            AZURE_SUSCRIPTION: [
    -                Storage_Account(
    +            AZURE_SUBSCRIPTION: [
    +                Account(
                         id=storage_account_id,
                         name=storage_account_name,
    +                    resouce_group_name=None,
                         enable_https_traffic_only=False,
                         infrastructure_encryption=False,
                         allow_blob_public_access=True,
                         network_rule_set=None,
                         encryption_type=None,
                         minimum_tls_version=None,
    +                    key_expiration_period_in_days=None,
    +                    private_endpoint_connections=None,
                     )
                 ]
             }
    @@ -56,9 +58,9 @@ def test_storage_storage_accounts_public_access_level_enabled(self):
                 assert result[0].status == "FAIL"
                 assert (
                     result[0].status_extended
    -                == f"Storage account {storage_account_name} from subscription {AZURE_SUSCRIPTION} has allow blob public access enabled."
    +                == f"Storage account {storage_account_name} from subscription {AZURE_SUBSCRIPTION} has allow blob public access enabled."
                 )
    -            assert result[0].subscription == AZURE_SUSCRIPTION
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
                 assert result[0].resource_name == storage_account_name
                 assert result[0].resource_id == storage_account_id
     
    @@ -67,16 +69,19 @@ def test_storage_storage_accounts_public_access_level_disabled(self):
             storage_account_name = "Test Storage Account"
             storage_client = mock.MagicMock
             storage_client.storage_accounts = {
    -            AZURE_SUSCRIPTION: [
    -                Storage_Account(
    +            AZURE_SUBSCRIPTION: [
    +                Account(
                         id=storage_account_id,
                         name=storage_account_name,
    +                    resouce_group_name=None,
                         enable_https_traffic_only=False,
                         infrastructure_encryption=False,
                         allow_blob_public_access=False,
                         network_rule_set=None,
                         encryption_type=None,
                         minimum_tls_version=None,
    +                    key_expiration_period_in_days=None,
    +                    private_endpoint_connections=None,
                     )
                 ]
             }
    @@ -95,8 +100,8 @@ def test_storage_storage_accounts_public_access_level_disabled(self):
                 assert result[0].status == "PASS"
                 assert (
                     result[0].status_extended
    -                == f"Storage account {storage_account_name} from subscription {AZURE_SUSCRIPTION} has allow blob public access disabled."
    +                == f"Storage account {storage_account_name} from subscription {AZURE_SUBSCRIPTION} has allow blob public access disabled."
                 )
    -            assert result[0].subscription == AZURE_SUSCRIPTION
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
                 assert result[0].resource_name == storage_account_name
                 assert result[0].resource_id == storage_account_id
    diff --git a/tests/providers/azure/services/storage/storage_default_network_access_rule_is_denied/storage_default_network_access_rule_is_denied_test.py b/tests/providers/azure/services/storage/storage_default_network_access_rule_is_denied/storage_default_network_access_rule_is_denied_test.py
    index 18fa9f2e903..57f5e2528d0 100644
    --- a/tests/providers/azure/services/storage/storage_default_network_access_rule_is_denied/storage_default_network_access_rule_is_denied_test.py
    +++ b/tests/providers/azure/services/storage/storage_default_network_access_rule_is_denied/storage_default_network_access_rule_is_denied_test.py
    @@ -3,9 +3,8 @@
     
     from azure.mgmt.storage.v2022_09_01.models import NetworkRuleSet
     
    -from prowler.providers.azure.services.storage.storage_service import Storage_Account
    -
    -AZURE_SUSCRIPTION = str(uuid4())
    +from prowler.providers.azure.services.storage.storage_service import Account
    +from tests.providers.azure.azure_fixtures import AZURE_SUBSCRIPTION
     
     
     class Test_storage_default_network_access_rule_is_denied:
    @@ -30,16 +29,19 @@ def test_storage_storage_accounts_default_network_access_rule_allowed(self):
             storage_account_name = "Test Storage Account"
             storage_client = mock.MagicMock
             storage_client.storage_accounts = {
    -            AZURE_SUSCRIPTION: [
    -                Storage_Account(
    +            AZURE_SUBSCRIPTION: [
    +                Account(
                         id=storage_account_id,
                         name=storage_account_name,
    +                    resouce_group_name=None,
                         enable_https_traffic_only=False,
                         infrastructure_encryption=False,
                         allow_blob_public_access=None,
                         network_rule_set=NetworkRuleSet(default_action="Allow"),
                         encryption_type=None,
                         minimum_tls_version=None,
    +                    key_expiration_period_in_days=None,
    +                    private_endpoint_connections=None,
                     )
                 ]
             }
    @@ -58,9 +60,9 @@ def test_storage_storage_accounts_default_network_access_rule_allowed(self):
                 assert result[0].status == "FAIL"
                 assert (
                     result[0].status_extended
    -                == f"Storage account {storage_account_name} from subscription {AZURE_SUSCRIPTION} has network access rule set to Allow."
    +                == f"Storage account {storage_account_name} from subscription {AZURE_SUBSCRIPTION} has network access rule set to Allow."
                 )
    -            assert result[0].subscription == AZURE_SUSCRIPTION
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
                 assert result[0].resource_name == storage_account_name
                 assert result[0].resource_id == storage_account_id
     
    @@ -69,16 +71,19 @@ def test_storage_storage_accounts_default_network_access_rule_denied(self):
             storage_account_name = "Test Storage Account"
             storage_client = mock.MagicMock
             storage_client.storage_accounts = {
    -            AZURE_SUSCRIPTION: [
    -                Storage_Account(
    +            AZURE_SUBSCRIPTION: [
    +                Account(
                         id=storage_account_id,
                         name=storage_account_name,
    +                    resouce_group_name=None,
                         enable_https_traffic_only=False,
                         infrastructure_encryption=False,
                         allow_blob_public_access=None,
                         network_rule_set=NetworkRuleSet(default_action="Deny"),
                         encryption_type=None,
                         minimum_tls_version=None,
    +                    key_expiration_period_in_days=None,
    +                    private_endpoint_connections=None,
                     )
                 ]
             }
    @@ -97,8 +102,8 @@ def test_storage_storage_accounts_default_network_access_rule_denied(self):
                 assert result[0].status == "PASS"
                 assert (
                     result[0].status_extended
    -                == f"Storage account {storage_account_name} from subscription {AZURE_SUSCRIPTION} has network access rule set to Deny."
    +                == f"Storage account {storage_account_name} from subscription {AZURE_SUBSCRIPTION} has network access rule set to Deny."
                 )
    -            assert result[0].subscription == AZURE_SUSCRIPTION
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
                 assert result[0].resource_name == storage_account_name
                 assert result[0].resource_id == storage_account_id
    diff --git a/tests/providers/azure/services/storage/storage_ensure_azure_services_are_trusted_to_access_is_enabled/storage_ensure_azure_services_are_trusted_to_access_is_enabled_test.py b/tests/providers/azure/services/storage/storage_ensure_azure_services_are_trusted_to_access_is_enabled/storage_ensure_azure_services_are_trusted_to_access_is_enabled_test.py
    index 983c5e9c049..6ba9b248938 100644
    --- a/tests/providers/azure/services/storage/storage_ensure_azure_services_are_trusted_to_access_is_enabled/storage_ensure_azure_services_are_trusted_to_access_is_enabled_test.py
    +++ b/tests/providers/azure/services/storage/storage_ensure_azure_services_are_trusted_to_access_is_enabled/storage_ensure_azure_services_are_trusted_to_access_is_enabled_test.py
    @@ -3,9 +3,8 @@
     
     from azure.mgmt.storage.v2022_09_01.models import NetworkRuleSet
     
    -from prowler.providers.azure.services.storage.storage_service import Storage_Account
    -
    -AZURE_SUSCRIPTION = str(uuid4())
    +from prowler.providers.azure.services.storage.storage_service import Account
    +from tests.providers.azure.azure_fixtures import AZURE_SUBSCRIPTION
     
     
     class Test_storage_ensure_azure_services_are_trusted_to_access_is_enabled:
    @@ -30,16 +29,19 @@ def test_storage_storage_accounts_azure_services_are_not_trusted_to_access(self)
             storage_account_name = "Test Storage Account"
             storage_client = mock.MagicMock
             storage_client.storage_accounts = {
    -            AZURE_SUSCRIPTION: [
    -                Storage_Account(
    +            AZURE_SUBSCRIPTION: [
    +                Account(
                         id=storage_account_id,
                         name=storage_account_name,
    +                    resouce_group_name=None,
                         enable_https_traffic_only=False,
                         infrastructure_encryption=False,
                         allow_blob_public_access=None,
                         network_rule_set=NetworkRuleSet(bypass=[None]),
                         encryption_type=None,
                         minimum_tls_version=None,
    +                    key_expiration_period_in_days=None,
    +                    private_endpoint_connections=None,
                     )
                 ]
             }
    @@ -58,9 +60,9 @@ def test_storage_storage_accounts_azure_services_are_not_trusted_to_access(self)
                 assert result[0].status == "FAIL"
                 assert (
                     result[0].status_extended
    -                == f"Storage account {storage_account_name} from subscription {AZURE_SUSCRIPTION} does not allow trusted Microsoft services to access this storage account."
    +                == f"Storage account {storage_account_name} from subscription {AZURE_SUBSCRIPTION} does not allow trusted Microsoft services to access this storage account."
                 )
    -            assert result[0].subscription == AZURE_SUSCRIPTION
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
                 assert result[0].resource_name == storage_account_name
                 assert result[0].resource_id == storage_account_id
     
    @@ -69,16 +71,19 @@ def test_storage_storage_accounts_azure_services_are_trusted_to_access(self):
             storage_account_name = "Test Storage Account"
             storage_client = mock.MagicMock
             storage_client.storage_accounts = {
    -            AZURE_SUSCRIPTION: [
    -                Storage_Account(
    +            AZURE_SUBSCRIPTION: [
    +                Account(
                         id=storage_account_id,
                         name=storage_account_name,
    +                    resouce_group_name=None,
                         enable_https_traffic_only=False,
                         infrastructure_encryption=False,
                         allow_blob_public_access=None,
                         network_rule_set=NetworkRuleSet(bypass=["AzureServices"]),
                         encryption_type=None,
                         minimum_tls_version=None,
    +                    key_expiration_period_in_days=None,
    +                    private_endpoint_connections=None,
                     )
                 ]
             }
    @@ -97,8 +102,8 @@ def test_storage_storage_accounts_azure_services_are_trusted_to_access(self):
                 assert result[0].status == "PASS"
                 assert (
                     result[0].status_extended
    -                == f"Storage account {storage_account_name} from subscription {AZURE_SUSCRIPTION} allows trusted Microsoft services to access this storage account."
    +                == f"Storage account {storage_account_name} from subscription {AZURE_SUBSCRIPTION} allows trusted Microsoft services to access this storage account."
                 )
    -            assert result[0].subscription == AZURE_SUSCRIPTION
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
                 assert result[0].resource_name == storage_account_name
                 assert result[0].resource_id == storage_account_id
    diff --git a/tests/providers/azure/services/storage/storage_ensure_encryption_with_customer_managed_keys/storage_ensure_encryption_with_customer_managed_keys_test.py b/tests/providers/azure/services/storage/storage_ensure_encryption_with_customer_managed_keys/storage_ensure_encryption_with_customer_managed_keys_test.py
    index 3f0deedef19..550ed3d6e6a 100644
    --- a/tests/providers/azure/services/storage/storage_ensure_encryption_with_customer_managed_keys/storage_ensure_encryption_with_customer_managed_keys_test.py
    +++ b/tests/providers/azure/services/storage/storage_ensure_encryption_with_customer_managed_keys/storage_ensure_encryption_with_customer_managed_keys_test.py
    @@ -1,9 +1,8 @@
     from unittest import mock
     from uuid import uuid4
     
    -from prowler.providers.azure.services.storage.storage_service import Storage_Account
    -
    -AZURE_SUSCRIPTION = str(uuid4())
    +from prowler.providers.azure.services.storage.storage_service import Account
    +from tests.providers.azure.azure_fixtures import AZURE_SUBSCRIPTION
     
     
     class Test_storage_ensure_encryption_with_customer_managed_keys:
    @@ -28,16 +27,19 @@ def test_storage_storage_accounts_encryption_without_customer_managed_keys(self)
             storage_account_name = "Test Storage Account"
             storage_client = mock.MagicMock
             storage_client.storage_accounts = {
    -            AZURE_SUSCRIPTION: [
    -                Storage_Account(
    +            AZURE_SUBSCRIPTION: [
    +                Account(
                         id=storage_account_id,
                         name=storage_account_name,
    +                    resouce_group_name=None,
                         enable_https_traffic_only=False,
                         infrastructure_encryption=False,
                         allow_blob_public_access=None,
                         network_rule_set=None,
                         encryption_type="None",
                         minimum_tls_version=None,
    +                    key_expiration_period_in_days=None,
    +                    private_endpoint_connections=None,
                     )
                 ]
             }
    @@ -56,9 +58,9 @@ def test_storage_storage_accounts_encryption_without_customer_managed_keys(self)
                 assert result[0].status == "FAIL"
                 assert (
                     result[0].status_extended
    -                == f"Storage account {storage_account_name} from subscription {AZURE_SUSCRIPTION} does not encrypt with CMKs."
    +                == f"Storage account {storage_account_name} from subscription {AZURE_SUBSCRIPTION} does not encrypt with CMKs."
                 )
    -            assert result[0].subscription == AZURE_SUSCRIPTION
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
                 assert result[0].resource_name == storage_account_name
                 assert result[0].resource_id == storage_account_id
     
    @@ -67,16 +69,19 @@ def test_storage_storage_accounts_encryption_with_customer_managed_keys(self):
             storage_account_name = "Test Storage Account"
             storage_client = mock.MagicMock
             storage_client.storage_accounts = {
    -            AZURE_SUSCRIPTION: [
    -                Storage_Account(
    +            AZURE_SUBSCRIPTION: [
    +                Account(
                         id=storage_account_id,
                         name=storage_account_name,
    +                    resouce_group_name=None,
                         enable_https_traffic_only=False,
                         infrastructure_encryption=False,
                         allow_blob_public_access=None,
                         network_rule_set=None,
                         encryption_type="Microsoft.Keyvault",
                         minimum_tls_version=None,
    +                    key_expiration_period_in_days=None,
    +                    private_endpoint_connections=None,
                     )
                 ]
             }
    @@ -95,8 +100,8 @@ def test_storage_storage_accounts_encryption_with_customer_managed_keys(self):
                 assert result[0].status == "PASS"
                 assert (
                     result[0].status_extended
    -                == f"Storage account {storage_account_name} from subscription {AZURE_SUSCRIPTION} encrypts with CMKs."
    +                == f"Storage account {storage_account_name} from subscription {AZURE_SUBSCRIPTION} encrypts with CMKs."
                 )
    -            assert result[0].subscription == AZURE_SUSCRIPTION
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
                 assert result[0].resource_name == storage_account_name
                 assert result[0].resource_id == storage_account_id
    diff --git a/tests/providers/azure/services/storage/storage_ensure_minimum_tls_version_12/storage_ensure_minimum_tls_version_12_test.py b/tests/providers/azure/services/storage/storage_ensure_minimum_tls_version_12/storage_ensure_minimum_tls_version_12_test.py
    index ac35f9412cc..b0174c0989d 100644
    --- a/tests/providers/azure/services/storage/storage_ensure_minimum_tls_version_12/storage_ensure_minimum_tls_version_12_test.py
    +++ b/tests/providers/azure/services/storage/storage_ensure_minimum_tls_version_12/storage_ensure_minimum_tls_version_12_test.py
    @@ -1,9 +1,8 @@
     from unittest import mock
     from uuid import uuid4
     
    -from prowler.providers.azure.services.storage.storage_service import Storage_Account
    -
    -AZURE_SUSCRIPTION = str(uuid4())
    +from prowler.providers.azure.services.storage.storage_service import Account
    +from tests.providers.azure.azure_fixtures import AZURE_SUBSCRIPTION
     
     
     class Test_storage_ensure_minimum_tls_version_12:
    @@ -28,16 +27,19 @@ def test_storage_storage_accounts_tls_not_1_2(self):
             storage_account_name = "Test Storage Account"
             storage_client = mock.MagicMock
             storage_client.storage_accounts = {
    -            AZURE_SUSCRIPTION: [
    -                Storage_Account(
    +            AZURE_SUBSCRIPTION: [
    +                Account(
                         id=storage_account_id,
                         name=storage_account_name,
    +                    resouce_group_name=None,
                         enable_https_traffic_only=False,
                         infrastructure_encryption=False,
                         allow_blob_public_access=None,
                         network_rule_set=None,
                         encryption_type="None",
                         minimum_tls_version="TLS1_1",
    +                    key_expiration_period_in_days=None,
    +                    private_endpoint_connections=None,
                     )
                 ]
             }
    @@ -56,9 +58,9 @@ def test_storage_storage_accounts_tls_not_1_2(self):
                 assert result[0].status == "FAIL"
                 assert (
                     result[0].status_extended
    -                == f"Storage account {storage_account_name} from subscription {AZURE_SUSCRIPTION} does not have TLS version set to 1.2."
    +                == f"Storage account {storage_account_name} from subscription {AZURE_SUBSCRIPTION} does not have TLS version set to 1.2."
                 )
    -            assert result[0].subscription == AZURE_SUSCRIPTION
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
                 assert result[0].resource_name == storage_account_name
                 assert result[0].resource_id == storage_account_id
     
    @@ -67,16 +69,19 @@ def test_storage_storage_accounts_tls_1_2(self):
             storage_account_name = "Test Storage Account"
             storage_client = mock.MagicMock
             storage_client.storage_accounts = {
    -            AZURE_SUSCRIPTION: [
    -                Storage_Account(
    +            AZURE_SUBSCRIPTION: [
    +                Account(
                         id=storage_account_id,
                         name=storage_account_name,
    +                    resouce_group_name=None,
                         enable_https_traffic_only=False,
                         infrastructure_encryption=False,
                         allow_blob_public_access=None,
                         network_rule_set=None,
                         encryption_type="None",
                         minimum_tls_version="TLS1_2",
    +                    key_expiration_period_in_days=None,
    +                    private_endpoint_connections=None,
                     )
                 ]
             }
    @@ -95,8 +100,8 @@ def test_storage_storage_accounts_tls_1_2(self):
                 assert result[0].status == "PASS"
                 assert (
                     result[0].status_extended
    -                == f"Storage account {storage_account_name} from subscription {AZURE_SUSCRIPTION} has TLS version set to 1.2."
    +                == f"Storage account {storage_account_name} from subscription {AZURE_SUBSCRIPTION} has TLS version set to 1.2."
                 )
    -            assert result[0].subscription == AZURE_SUSCRIPTION
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
                 assert result[0].resource_name == storage_account_name
                 assert result[0].resource_id == storage_account_id
    diff --git a/tests/providers/azure/services/storage/storage_ensure_private_endpoints_in_storage_accounts/storage_ensure_private_endpoints_in_storage_accounts_test.py b/tests/providers/azure/services/storage/storage_ensure_private_endpoints_in_storage_accounts/storage_ensure_private_endpoints_in_storage_accounts_test.py
    new file mode 100644
    index 00000000000..5ba451a5310
    --- /dev/null
    +++ b/tests/providers/azure/services/storage/storage_ensure_private_endpoints_in_storage_accounts/storage_ensure_private_endpoints_in_storage_accounts_test.py
    @@ -0,0 +1,113 @@
    +from unittest import mock
    +from uuid import uuid4
    +
    +from azure.mgmt.storage.v2023_01_01.models import PrivateEndpointConnection
    +
    +from prowler.providers.azure.services.storage.storage_service import Account
    +from tests.providers.azure.azure_fixtures import AZURE_SUBSCRIPTION
    +
    +
    +class Test_storage_ensure_private_endpoints_in_storage_accounts:
    +    def test_storage_ensure_private_endpoints_in_storage_accounts(self):
    +        storage_client = mock.MagicMock
    +        storage_client.storage_accounts = {}
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.storage.storage_ensure_private_endpoints_in_storage_accounts.storage_ensure_private_endpoints_in_storage_accounts.storage_client",
    +            new=storage_client,
    +        ):
    +            from prowler.providers.azure.services.storage.storage_ensure_private_endpoints_in_storage_accounts.storage_ensure_private_endpoints_in_storage_accounts import (
    +                storage_ensure_private_endpoints_in_storage_accounts,
    +            )
    +
    +            check = storage_ensure_private_endpoints_in_storage_accounts()
    +            result = check.execute()
    +            assert len(result) == 0
    +
    +    def test_storage_ensure_private_endpoints_in_storage_accounts_no_endpoints(
    +        self,
    +    ):
    +        storage_account_id = str(uuid4())
    +        storage_account_name = "Test Storage Account"
    +        storage_client = mock.MagicMock
    +        storage_client.storage_accounts = {
    +            AZURE_SUBSCRIPTION: [
    +                Account(
    +                    id=storage_account_id,
    +                    name=storage_account_name,
    +                    resouce_group_name=None,
    +                    enable_https_traffic_only=False,
    +                    infrastructure_encryption=False,
    +                    allow_blob_public_access=None,
    +                    network_rule_set=None,
    +                    encryption_type="None",
    +                    minimum_tls_version=None,
    +                    key_expiration_period_in_days=None,
    +                    private_endpoint_connections=None,
    +                )
    +            ]
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.storage.storage_ensure_private_endpoints_in_storage_accounts.storage_ensure_private_endpoints_in_storage_accounts.storage_client",
    +            new=storage_client,
    +        ):
    +            from prowler.providers.azure.services.storage.storage_ensure_private_endpoints_in_storage_accounts.storage_ensure_private_endpoints_in_storage_accounts import (
    +                storage_ensure_private_endpoints_in_storage_accounts,
    +            )
    +
    +            check = storage_ensure_private_endpoints_in_storage_accounts()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "FAIL"
    +            assert (
    +                result[0].status_extended
    +                == f"Storage account {storage_account_name} from subscription {AZURE_SUBSCRIPTION} does not have private endpoint connections."
    +            )
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == storage_account_name
    +            assert result[0].resource_id == storage_account_id
    +
    +    def test_storage_ensure_private_endpoints_in_storage_accounts_has_endpoints(
    +        self,
    +    ):
    +        storage_account_id = str(uuid4())
    +        storage_account_name = "Test Storage Account"
    +        storage_client = mock.MagicMock
    +        storage_client.storage_accounts = {
    +            AZURE_SUBSCRIPTION: [
    +                Account(
    +                    id=storage_account_id,
    +                    name=storage_account_name,
    +                    resouce_group_name=None,
    +                    enable_https_traffic_only=False,
    +                    infrastructure_encryption=False,
    +                    allow_blob_public_access=None,
    +                    network_rule_set=None,
    +                    encryption_type="None",
    +                    minimum_tls_version=None,
    +                    key_expiration_period_in_days=None,
    +                    private_endpoint_connections=PrivateEndpointConnection(),
    +                )
    +            ]
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.storage.storage_ensure_private_endpoints_in_storage_accounts.storage_ensure_private_endpoints_in_storage_accounts.storage_client",
    +            new=storage_client,
    +        ):
    +            from prowler.providers.azure.services.storage.storage_ensure_private_endpoints_in_storage_accounts.storage_ensure_private_endpoints_in_storage_accounts import (
    +                storage_ensure_private_endpoints_in_storage_accounts,
    +            )
    +
    +            check = storage_ensure_private_endpoints_in_storage_accounts()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "PASS"
    +            assert (
    +                result[0].status_extended
    +                == f"Storage account {storage_account_name} from subscription {AZURE_SUBSCRIPTION} has private endpoint connections."
    +            )
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == storage_account_name
    +            assert result[0].resource_id == storage_account_id
    diff --git a/tests/providers/azure/services/storage/storage_ensure_soft_delete_is_enabled/storage_ensure_soft_delete_is_enabled_test.py b/tests/providers/azure/services/storage/storage_ensure_soft_delete_is_enabled/storage_ensure_soft_delete_is_enabled_test.py
    new file mode 100644
    index 00000000000..c7d1d624d04
    --- /dev/null
    +++ b/tests/providers/azure/services/storage/storage_ensure_soft_delete_is_enabled/storage_ensure_soft_delete_is_enabled_test.py
    @@ -0,0 +1,168 @@
    +from unittest import mock
    +from uuid import uuid4
    +
    +from azure.mgmt.storage.v2023_01_01.models import DeleteRetentionPolicy
    +
    +from prowler.providers.azure.services.storage.storage_service import (
    +    Account,
    +    BlobProperties,
    +)
    +from tests.providers.azure.azure_fixtures import AZURE_SUBSCRIPTION
    +
    +
    +class Test_storage_ensure_soft_delete_is_enabled:
    +    def test_storage_no_storage_accounts(self):
    +        storage_client = mock.MagicMock
    +        storage_client.storage_accounts = {}
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.storage.storage_ensure_soft_delete_is_enabled.storage_ensure_soft_delete_is_enabled.storage_client",
    +            new=storage_client,
    +        ):
    +            from prowler.providers.azure.services.storage.storage_ensure_soft_delete_is_enabled.storage_ensure_soft_delete_is_enabled import (
    +                storage_ensure_soft_delete_is_enabled,
    +            )
    +
    +            check = storage_ensure_soft_delete_is_enabled()
    +            result = check.execute()
    +            assert len(result) == 0
    +
    +    def test_storage_no_blob_properties(self):
    +        storage_account_id = str(uuid4())
    +        storage_account_name = "Test Storage Account"
    +        storage_client = mock.MagicMock
    +        storage_account_blob_properties = None
    +        storage_client.storage_accounts = {
    +            AZURE_SUBSCRIPTION: [
    +                Account(
    +                    id=storage_account_id,
    +                    name=storage_account_name,
    +                    resouce_group_name=None,
    +                    enable_https_traffic_only=False,
    +                    infrastructure_encryption=False,
    +                    allow_blob_public_access=None,
    +                    network_rule_set=None,
    +                    encryption_type="None",
    +                    minimum_tls_version=None,
    +                    key_expiration_period_in_days=None,
    +                    private_endpoint_connections=None,
    +                    blob_properties=storage_account_blob_properties,
    +                )
    +            ]
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.storage.storage_ensure_soft_delete_is_enabled.storage_ensure_soft_delete_is_enabled.storage_client",
    +            new=storage_client,
    +        ):
    +            from prowler.providers.azure.services.storage.storage_ensure_soft_delete_is_enabled.storage_ensure_soft_delete_is_enabled import (
    +                storage_ensure_soft_delete_is_enabled,
    +            )
    +
    +            check = storage_ensure_soft_delete_is_enabled()
    +            result = check.execute()
    +            assert len(result) == 0
    +
    +    def test_storage_ensure_soft_delete_is_disabled(
    +        self,
    +    ):
    +        storage_account_id = str(uuid4())
    +        storage_account_name = "Test Storage Account"
    +        storage_client = mock.MagicMock
    +        storage_account_blob_properties = BlobProperties(
    +            id=None,
    +            name=None,
    +            type=None,
    +            default_service_version=None,
    +            container_delete_retention_policy=DeleteRetentionPolicy(enabled=False),
    +        )
    +        storage_client.storage_accounts = {
    +            AZURE_SUBSCRIPTION: [
    +                Account(
    +                    id=storage_account_id,
    +                    name=storage_account_name,
    +                    resouce_group_name=None,
    +                    enable_https_traffic_only=False,
    +                    infrastructure_encryption=False,
    +                    allow_blob_public_access=None,
    +                    network_rule_set=None,
    +                    encryption_type="None",
    +                    minimum_tls_version=None,
    +                    key_expiration_period_in_days=None,
    +                    private_endpoint_connections=None,
    +                    blob_properties=storage_account_blob_properties,
    +                )
    +            ]
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.storage.storage_ensure_soft_delete_is_enabled.storage_ensure_soft_delete_is_enabled.storage_client",
    +            new=storage_client,
    +        ):
    +            from prowler.providers.azure.services.storage.storage_ensure_soft_delete_is_enabled.storage_ensure_soft_delete_is_enabled import (
    +                storage_ensure_soft_delete_is_enabled,
    +            )
    +
    +            check = storage_ensure_soft_delete_is_enabled()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "FAIL"
    +            assert (
    +                result[0].status_extended
    +                == f"Storage account {storage_account_name} from subscription {AZURE_SUBSCRIPTION} has soft delete disabled."
    +            )
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == storage_account_name
    +            assert result[0].resource_id == storage_account_id
    +
    +    def test_storage_ensure_soft_delete_is_enabled(
    +        self,
    +    ):
    +        storage_account_id = str(uuid4())
    +        storage_account_name = "Test Storage Account"
    +        storage_client = mock.MagicMock
    +        storage_account_blob_properties = BlobProperties(
    +            id=None,
    +            name=None,
    +            type=None,
    +            default_service_version=None,
    +            container_delete_retention_policy=DeleteRetentionPolicy(enabled=True),
    +        )
    +        storage_client.storage_accounts = {
    +            AZURE_SUBSCRIPTION: [
    +                Account(
    +                    id=storage_account_id,
    +                    name=storage_account_name,
    +                    resouce_group_name=None,
    +                    enable_https_traffic_only=False,
    +                    infrastructure_encryption=False,
    +                    allow_blob_public_access=None,
    +                    network_rule_set=None,
    +                    encryption_type="None",
    +                    minimum_tls_version=None,
    +                    key_expiration_period_in_days=None,
    +                    private_endpoint_connections=None,
    +                    blob_properties=storage_account_blob_properties,
    +                )
    +            ]
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.storage.storage_ensure_soft_delete_is_enabled.storage_ensure_soft_delete_is_enabled.storage_client",
    +            new=storage_client,
    +        ):
    +            from prowler.providers.azure.services.storage.storage_ensure_soft_delete_is_enabled.storage_ensure_soft_delete_is_enabled import (
    +                storage_ensure_soft_delete_is_enabled,
    +            )
    +
    +            check = storage_ensure_soft_delete_is_enabled()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "PASS"
    +            assert (
    +                result[0].status_extended
    +                == f"Storage account {storage_account_name} from subscription {AZURE_SUBSCRIPTION} has soft delete enabled."
    +            )
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == storage_account_name
    +            assert result[0].resource_id == storage_account_id
    diff --git a/tests/providers/azure/services/storage/storage_infrastructure_encryption_is_enabled/storage_infrastructure_encryption_is_enabled_test.py b/tests/providers/azure/services/storage/storage_infrastructure_encryption_is_enabled/storage_infrastructure_encryption_is_enabled_test.py
    index d12aabb1926..5815229f397 100644
    --- a/tests/providers/azure/services/storage/storage_infrastructure_encryption_is_enabled/storage_infrastructure_encryption_is_enabled_test.py
    +++ b/tests/providers/azure/services/storage/storage_infrastructure_encryption_is_enabled/storage_infrastructure_encryption_is_enabled_test.py
    @@ -1,9 +1,8 @@
     from unittest import mock
     from uuid import uuid4
     
    -from prowler.providers.azure.services.storage.storage_service import Storage_Account
    -
    -AZURE_SUSCRIPTION = str(uuid4())
    +from prowler.providers.azure.services.storage.storage_service import Account
    +from tests.providers.azure.azure_fixtures import AZURE_SUBSCRIPTION
     
     
     class Test_storage_infrastructure_encryption_is_enabled:
    @@ -28,16 +27,19 @@ def test_storage_storage_accounts_infrastructure_encryption_disabled(self):
             storage_account_name = "Test Storage Account"
             storage_client = mock.MagicMock
             storage_client.storage_accounts = {
    -            AZURE_SUSCRIPTION: [
    -                Storage_Account(
    +            AZURE_SUBSCRIPTION: [
    +                Account(
                         id=storage_account_id,
                         name=storage_account_name,
    +                    resouce_group_name=None,
                         enable_https_traffic_only=False,
                         infrastructure_encryption=False,
                         allow_blob_public_access=None,
                         network_rule_set=None,
                         encryption_type="None",
                         minimum_tls_version="TLS1_1",
    +                    key_expiration_period_in_days=None,
    +                    private_endpoint_connections=None,
                     )
                 ]
             }
    @@ -56,9 +58,9 @@ def test_storage_storage_accounts_infrastructure_encryption_disabled(self):
                 assert result[0].status == "FAIL"
                 assert (
                     result[0].status_extended
    -                == f"Storage account {storage_account_name} from subscription {AZURE_SUSCRIPTION} has infrastructure encryption disabled."
    +                == f"Storage account {storage_account_name} from subscription {AZURE_SUBSCRIPTION} has infrastructure encryption disabled."
                 )
    -            assert result[0].subscription == AZURE_SUSCRIPTION
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
                 assert result[0].resource_name == storage_account_name
                 assert result[0].resource_id == storage_account_id
     
    @@ -67,16 +69,19 @@ def test_storage_storage_accounts_infrastructure_encryption_enabled(self):
             storage_account_name = "Test Storage Account"
             storage_client = mock.MagicMock
             storage_client.storage_accounts = {
    -            AZURE_SUSCRIPTION: [
    -                Storage_Account(
    +            AZURE_SUBSCRIPTION: [
    +                Account(
                         id=storage_account_id,
                         name=storage_account_name,
    +                    resouce_group_name=None,
                         enable_https_traffic_only=False,
                         infrastructure_encryption=True,
                         allow_blob_public_access=None,
                         network_rule_set=None,
                         encryption_type="None",
                         minimum_tls_version="TLS1_1",
    +                    key_expiration_period_in_days=None,
    +                    private_endpoint_connections=None,
                     )
                 ]
             }
    @@ -95,8 +100,8 @@ def test_storage_storage_accounts_infrastructure_encryption_enabled(self):
                 assert result[0].status == "PASS"
                 assert (
                     result[0].status_extended
    -                == f"Storage account {storage_account_name} from subscription {AZURE_SUSCRIPTION} has infrastructure encryption enabled."
    +                == f"Storage account {storage_account_name} from subscription {AZURE_SUBSCRIPTION} has infrastructure encryption enabled."
                 )
    -            assert result[0].subscription == AZURE_SUSCRIPTION
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
                 assert result[0].resource_name == storage_account_name
                 assert result[0].resource_id == storage_account_id
    diff --git a/tests/providers/azure/services/storage/storage_key_rotation_90_days/storage_key_rotation_90_days_test.py b/tests/providers/azure/services/storage/storage_key_rotation_90_days/storage_key_rotation_90_days_test.py
    new file mode 100644
    index 00000000000..1a27a1de222
    --- /dev/null
    +++ b/tests/providers/azure/services/storage/storage_key_rotation_90_days/storage_key_rotation_90_days_test.py
    @@ -0,0 +1,151 @@
    +from unittest import mock
    +from uuid import uuid4
    +
    +from prowler.providers.azure.services.storage.storage_service import Account
    +from tests.providers.azure.azure_fixtures import AZURE_SUBSCRIPTION
    +
    +
    +class Test_storage_key_rotation_90_dayss:
    +    def test_storage_no_storage_accounts(self):
    +        storage_client = mock.MagicMock
    +        storage_client.storage_accounts = {}
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.storage.storage_key_rotation_90_days.storage_key_rotation_90_days.storage_client",
    +            new=storage_client,
    +        ):
    +            from prowler.providers.azure.services.storage.storage_key_rotation_90_days.storage_key_rotation_90_days import (
    +                storage_key_rotation_90_days,
    +            )
    +
    +            check = storage_key_rotation_90_days()
    +            result = check.execute()
    +            assert len(result) == 0
    +
    +    def test_storage_storage_key_rotation_91_days(self):
    +        storage_account_id = str(uuid4())
    +        storage_account_name = "Test Storage Account"
    +        expiration_days = 91
    +        storage_client = mock.MagicMock
    +        storage_client.storage_accounts = {
    +            AZURE_SUBSCRIPTION: [
    +                Account(
    +                    id=storage_account_id,
    +                    name=storage_account_name,
    +                    resouce_group_name=None,
    +                    enable_https_traffic_only=False,
    +                    infrastructure_encryption=False,
    +                    allow_blob_public_access=None,
    +                    network_rule_set=None,
    +                    encryption_type="None",
    +                    minimum_tls_version="TLS1_1",
    +                    key_expiration_period_in_days=expiration_days,
    +                    private_endpoint_connections=None,
    +                )
    +            ]
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.storage.storage_key_rotation_90_days.storage_key_rotation_90_days.storage_client",
    +            new=storage_client,
    +        ):
    +            from prowler.providers.azure.services.storage.storage_key_rotation_90_days.storage_key_rotation_90_days import (
    +                storage_key_rotation_90_days,
    +            )
    +
    +            check = storage_key_rotation_90_days()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "FAIL"
    +            assert (
    +                result[0].status_extended
    +                == f"Storage account {storage_account_name} from subscription {AZURE_SUBSCRIPTION} has an invalid key expiration period of {expiration_days} days."
    +            )
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == storage_account_name
    +            assert result[0].resource_id == storage_account_id
    +
    +    def test_storage_storage_key_rotation_90_days(self):
    +        storage_account_id = str(uuid4())
    +        storage_account_name = "Test Storage Account"
    +        expiration_days = 90
    +        storage_client = mock.MagicMock
    +        storage_client.storage_accounts = {
    +            AZURE_SUBSCRIPTION: [
    +                Account(
    +                    id=storage_account_id,
    +                    name=storage_account_name,
    +                    resouce_group_name=None,
    +                    enable_https_traffic_only=False,
    +                    infrastructure_encryption=False,
    +                    allow_blob_public_access=None,
    +                    network_rule_set=None,
    +                    encryption_type="None",
    +                    minimum_tls_version="TLS1_2",
    +                    key_expiration_period_in_days=expiration_days,
    +                    private_endpoint_connections=None,
    +                )
    +            ]
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.storage.storage_key_rotation_90_days.storage_key_rotation_90_days.storage_client",
    +            new=storage_client,
    +        ):
    +            from prowler.providers.azure.services.storage.storage_key_rotation_90_days.storage_key_rotation_90_days import (
    +                storage_key_rotation_90_days,
    +            )
    +
    +            check = storage_key_rotation_90_days()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "PASS"
    +            assert (
    +                result[0].status_extended
    +                == f"Storage account {storage_account_name} from subscription {AZURE_SUBSCRIPTION} has a key expiration period of {expiration_days} days."
    +            )
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == storage_account_name
    +            assert result[0].resource_id == storage_account_id
    +
    +    def test_storage_storage_no_key_rotation(self):
    +        storage_account_id = str(uuid4())
    +        storage_account_name = "Test Storage Account"
    +        storage_client = mock.MagicMock
    +        storage_client.storage_accounts = {
    +            AZURE_SUBSCRIPTION: [
    +                Account(
    +                    id=storage_account_id,
    +                    name=storage_account_name,
    +                    resouce_group_name=None,
    +                    enable_https_traffic_only=False,
    +                    infrastructure_encryption=False,
    +                    allow_blob_public_access=None,
    +                    network_rule_set=None,
    +                    encryption_type="None",
    +                    minimum_tls_version="TLS1_2",
    +                    key_expiration_period_in_days=None,
    +                    private_endpoint_connections=None,
    +                )
    +            ]
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.storage.storage_key_rotation_90_days.storage_key_rotation_90_days.storage_client",
    +            new=storage_client,
    +        ):
    +            from prowler.providers.azure.services.storage.storage_key_rotation_90_days.storage_key_rotation_90_days import (
    +                storage_key_rotation_90_days,
    +            )
    +
    +            check = storage_key_rotation_90_days()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "FAIL"
    +            assert (
    +                result[0].status_extended
    +                == f"Storage account {storage_account_name} from subscription {AZURE_SUBSCRIPTION} has no key expiration period set."
    +            )
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == storage_account_name
    +            assert result[0].resource_id == storage_account_id
    diff --git a/tests/providers/azure/services/storage/storage_secure_transfer_required_is_enabled/storage_secure_transfer_required_is_enabled_test.py b/tests/providers/azure/services/storage/storage_secure_transfer_required_is_enabled/storage_secure_transfer_required_is_enabled_test.py
    index 663ee684018..4ada6b29858 100644
    --- a/tests/providers/azure/services/storage/storage_secure_transfer_required_is_enabled/storage_secure_transfer_required_is_enabled_test.py
    +++ b/tests/providers/azure/services/storage/storage_secure_transfer_required_is_enabled/storage_secure_transfer_required_is_enabled_test.py
    @@ -1,9 +1,8 @@
     from unittest import mock
     from uuid import uuid4
     
    -from prowler.providers.azure.services.storage.storage_service import Storage_Account
    -
    -AZURE_SUSCRIPTION = str(uuid4())
    +from prowler.providers.azure.services.storage.storage_service import Account
    +from tests.providers.azure.azure_fixtures import AZURE_SUBSCRIPTION
     
     
     class Test_storage_secure_transfer_required_is_enabled:
    @@ -28,16 +27,19 @@ def test_storage_storage_accounts_secure_transfer_required_disabled(self):
             storage_account_name = "Test Storage Account"
             storage_client = mock.MagicMock
             storage_client.storage_accounts = {
    -            AZURE_SUSCRIPTION: [
    -                Storage_Account(
    +            AZURE_SUBSCRIPTION: [
    +                Account(
                         id=storage_account_id,
                         name=storage_account_name,
    +                    resouce_group_name=None,
                         enable_https_traffic_only=False,
                         infrastructure_encryption=False,
                         allow_blob_public_access=None,
                         network_rule_set=None,
                         encryption_type="None",
                         minimum_tls_version="TLS1_1",
    +                    key_expiration_period_in_days=None,
    +                    private_endpoint_connections=None,
                     )
                 ]
             }
    @@ -56,9 +58,9 @@ def test_storage_storage_accounts_secure_transfer_required_disabled(self):
                 assert result[0].status == "FAIL"
                 assert (
                     result[0].status_extended
    -                == f"Storage account {storage_account_name} from subscription {AZURE_SUSCRIPTION} has secure transfer required disabled."
    +                == f"Storage account {storage_account_name} from subscription {AZURE_SUBSCRIPTION} has secure transfer required disabled."
                 )
    -            assert result[0].subscription == AZURE_SUSCRIPTION
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
                 assert result[0].resource_name == storage_account_name
                 assert result[0].resource_id == storage_account_id
     
    @@ -67,16 +69,19 @@ def test_storage_storage_accounts_secure_transfer_required_enabled(self):
             storage_account_name = "Test Storage Account"
             storage_client = mock.MagicMock
             storage_client.storage_accounts = {
    -            AZURE_SUSCRIPTION: [
    -                Storage_Account(
    +            AZURE_SUBSCRIPTION: [
    +                Account(
                         id=storage_account_id,
                         name=storage_account_name,
    +                    resouce_group_name=None,
                         enable_https_traffic_only=True,
                         infrastructure_encryption=True,
                         allow_blob_public_access=None,
                         network_rule_set=None,
                         encryption_type="None",
                         minimum_tls_version="TLS1_1",
    +                    key_expiration_period_in_days=None,
    +                    private_endpoint_connections=None,
                     )
                 ]
             }
    @@ -95,8 +100,8 @@ def test_storage_storage_accounts_secure_transfer_required_enabled(self):
                 assert result[0].status == "PASS"
                 assert (
                     result[0].status_extended
    -                == f"Storage account {storage_account_name} from subscription {AZURE_SUSCRIPTION} has secure transfer required enabled."
    +                == f"Storage account {storage_account_name} from subscription {AZURE_SUBSCRIPTION} has secure transfer required enabled."
                 )
    -            assert result[0].subscription == AZURE_SUSCRIPTION
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
                 assert result[0].resource_name == storage_account_name
                 assert result[0].resource_id == storage_account_id
    diff --git a/tests/providers/azure/services/storage/storage_service_test.py b/tests/providers/azure/services/storage/storage_service_test.py
    new file mode 100644
    index 00000000000..21eb1a53875
    --- /dev/null
    +++ b/tests/providers/azure/services/storage/storage_service_test.py
    @@ -0,0 +1,132 @@
    +from unittest.mock import patch
    +
    +from prowler.providers.azure.services.storage.storage_service import (
    +    Account,
    +    BlobProperties,
    +    Storage,
    +)
    +from tests.providers.azure.azure_fixtures import (
    +    AZURE_SUBSCRIPTION,
    +    set_mocked_azure_audit_info,
    +)
    +
    +
    +def mock_storage_get_storage_accounts(_):
    +    blob_properties = BlobProperties(
    +        id="id",
    +        name="name",
    +        type="type",
    +        default_service_version=None,
    +        container_delete_retention_policy=None,
    +    )
    +    return {
    +        AZURE_SUBSCRIPTION: [
    +            Account(
    +                id="id",
    +                name="name",
    +                resouce_group_name=None,
    +                enable_https_traffic_only=False,
    +                infrastructure_encryption=False,
    +                allow_blob_public_access=None,
    +                network_rule_set=None,
    +                encryption_type="None",
    +                minimum_tls_version=None,
    +                key_expiration_period_in_days=None,
    +                private_endpoint_connections=None,
    +                blob_properties=blob_properties,
    +            )
    +        ]
    +    }
    +
    +
    +@patch(
    +    "prowler.providers.azure.services.storage.storage_service.Storage.__get_storage_accounts__",
    +    new=mock_storage_get_storage_accounts,
    +)
    +class Test_Storage_Service:
    +    def test__get_client__(self):
    +        storage = Storage(set_mocked_azure_audit_info())
    +        assert (
    +            storage.clients[AZURE_SUBSCRIPTION].__class__.__name__
    +            == "StorageManagementClient"
    +        )
    +
    +    def test__get_storage_accounts__(self):
    +        storage = Storage(set_mocked_azure_audit_info())
    +        assert (
    +            storage.storage_accounts[AZURE_SUBSCRIPTION][0].__class__.__name__
    +            == "Account"
    +        )
    +        assert storage.storage_accounts[AZURE_SUBSCRIPTION][0].id == "id"
    +        assert storage.storage_accounts[AZURE_SUBSCRIPTION][0].name == "name"
    +        assert (
    +            storage.storage_accounts[AZURE_SUBSCRIPTION][0].resouce_group_name is None
    +        )
    +        assert (
    +            storage.storage_accounts[AZURE_SUBSCRIPTION][0].enable_https_traffic_only
    +            is False
    +        )
    +        assert (
    +            storage.storage_accounts[AZURE_SUBSCRIPTION][0].infrastructure_encryption
    +            is False
    +        )
    +        assert (
    +            storage.storage_accounts[AZURE_SUBSCRIPTION][0].allow_blob_public_access
    +            is None
    +        )
    +        assert storage.storage_accounts[AZURE_SUBSCRIPTION][0].network_rule_set is None
    +        assert storage.storage_accounts[AZURE_SUBSCRIPTION][0].encryption_type == "None"
    +        assert (
    +            storage.storage_accounts[AZURE_SUBSCRIPTION][0].minimum_tls_version is None
    +        )
    +        assert (
    +            storage.storage_accounts[AZURE_SUBSCRIPTION][
    +                0
    +            ].key_expiration_period_in_days
    +            is None
    +        )
    +        assert (
    +            storage.storage_accounts[AZURE_SUBSCRIPTION][0].private_endpoint_connections
    +            is None
    +        )
    +        assert storage.storage_accounts[AZURE_SUBSCRIPTION][
    +            0
    +        ].blob_properties == BlobProperties(
    +            id="id",
    +            name="name",
    +            type="type",
    +            default_service_version=None,
    +            container_delete_retention_policy=None,
    +        )
    +
    +    def test__get_blob_properties__(self):
    +        storage = Storage(set_mocked_azure_audit_info())
    +        assert (
    +            storage.storage_accounts[AZURE_SUBSCRIPTION][
    +                0
    +            ].blob_properties.__class__.__name__
    +            == "BlobProperties"
    +        )
    +        assert (
    +            storage.storage_accounts[AZURE_SUBSCRIPTION][0].blob_properties.id == "id"
    +        )
    +        assert (
    +            storage.storage_accounts[AZURE_SUBSCRIPTION][0].blob_properties.name
    +            == "name"
    +        )
    +        assert (
    +            storage.storage_accounts[AZURE_SUBSCRIPTION][0].blob_properties.type
    +            == "type"
    +        )
    +        assert (
    +            storage.storage_accounts[AZURE_SUBSCRIPTION][
    +                0
    +            ].blob_properties.default_service_version
    +            is None
    +        )
    +        assert (
    +            storage.storage_accounts[AZURE_SUBSCRIPTION][
    +                0
    +            ].blob_properties.container_delete_retention_policy
    +            is None
    +        )
    diff --git a/tests/providers/azure/services/vm/vm_ensure_attached_disks_encrypted_with_cmk/vm_ensure_attached_disks_encrypted_with_cmk_test.py b/tests/providers/azure/services/vm/vm_ensure_attached_disks_encrypted_with_cmk/vm_ensure_attached_disks_encrypted_with_cmk_test.py
    new file mode 100644
    index 00000000000..dc13bb03cc0
    --- /dev/null
    +++ b/tests/providers/azure/services/vm/vm_ensure_attached_disks_encrypted_with_cmk/vm_ensure_attached_disks_encrypted_with_cmk_test.py
    @@ -0,0 +1,186 @@
    +from unittest import mock
    +from uuid import uuid4
    +
    +from prowler.providers.azure.services.vm.vm_service import Disk
    +from tests.providers.azure.azure_fixtures import AZURE_SUBSCRIPTION
    +
    +
    +class Test_vm_ensure_attached_disks_encrypted_with_cmk:
    +    def test_vm_no_subscriptions(self):
    +        vm_client = mock.MagicMock
    +        vm_client.disks = {}
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.vm.vm_ensure_attached_disks_encrypted_with_cmk.vm_ensure_attached_disks_encrypted_with_cmk.vm_client",
    +            new=vm_client,
    +        ):
    +            from prowler.providers.azure.services.vm.vm_ensure_attached_disks_encrypted_with_cmk.vm_ensure_attached_disks_encrypted_with_cmk import (
    +                vm_ensure_attached_disks_encrypted_with_cmk,
    +            )
    +
    +            check = vm_ensure_attached_disks_encrypted_with_cmk()
    +            result = check.execute()
    +            assert len(result) == 0
    +
    +    def test_vm_subscription_empty(self):
    +        vm_client = mock.MagicMock
    +        vm_client.disks = {AZURE_SUBSCRIPTION: {}}
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.vm.vm_ensure_attached_disks_encrypted_with_cmk.vm_ensure_attached_disks_encrypted_with_cmk.vm_client",
    +            new=vm_client,
    +        ):
    +            from prowler.providers.azure.services.vm.vm_ensure_attached_disks_encrypted_with_cmk.vm_ensure_attached_disks_encrypted_with_cmk import (
    +                vm_ensure_attached_disks_encrypted_with_cmk,
    +            )
    +
    +            check = vm_ensure_attached_disks_encrypted_with_cmk()
    +            result = check.execute()
    +            assert len(result) == 0
    +
    +    def test_vm_subscription_one_disk_attached_encrypt_pk(self):
    +        disk_id = uuid4()
    +        resource_id = uuid4()
    +        vm_client = mock.MagicMock
    +        vm_client.disks = {
    +            AZURE_SUBSCRIPTION: {
    +                disk_id: Disk(
    +                    resource_id=resource_id,
    +                    resource_name="test-disk",
    +                    vms_attached=[uuid4()],
    +                    encryption_type="EncryptionAtRestWithPlatformKey",
    +                )
    +            }
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.vm.vm_ensure_attached_disks_encrypted_with_cmk.vm_ensure_attached_disks_encrypted_with_cmk.vm_client",
    +            new=vm_client,
    +        ):
    +            from prowler.providers.azure.services.vm.vm_ensure_attached_disks_encrypted_with_cmk.vm_ensure_attached_disks_encrypted_with_cmk import (
    +                vm_ensure_attached_disks_encrypted_with_cmk,
    +            )
    +
    +            check = vm_ensure_attached_disks_encrypted_with_cmk()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].status == "FAIL"
    +            assert result[0].resource_id == resource_id
    +            assert result[0].resource_name == "test-disk"
    +            assert (
    +                result[0].status_extended
    +                == f"Disk '{disk_id}' is not encrypted with a customer-managed key in subscription {AZURE_SUBSCRIPTION}."
    +            )
    +
    +    def test_vm_subscription_one_disk_attached_encrypt_cmk(self):
    +        disk_id = uuid4()
    +        resource_id = uuid4()
    +        vm_client = mock.MagicMock
    +        vm_client.disks = {
    +            AZURE_SUBSCRIPTION: {
    +                disk_id: Disk(
    +                    resource_id=resource_id,
    +                    resource_name="test-disk",
    +                    vms_attached=[uuid4()],
    +                    encryption_type="EncryptionAtRestWithCustomerKey",
    +                )
    +            }
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.vm.vm_ensure_attached_disks_encrypted_with_cmk.vm_ensure_attached_disks_encrypted_with_cmk.vm_client",
    +            new=vm_client,
    +        ):
    +            from prowler.providers.azure.services.vm.vm_ensure_attached_disks_encrypted_with_cmk.vm_ensure_attached_disks_encrypted_with_cmk import (
    +                vm_ensure_attached_disks_encrypted_with_cmk,
    +            )
    +
    +            check = vm_ensure_attached_disks_encrypted_with_cmk()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].status == "PASS"
    +            assert result[0].resource_id == resource_id
    +            assert result[0].resource_name == "test-disk"
    +            assert (
    +                result[0].status_extended
    +                == f"Disk '{disk_id}' is encrypted with a customer-managed key in subscription {AZURE_SUBSCRIPTION}."
    +            )
    +
    +    def test_vm_subscription_two_disk_attached_encrypt_cmk_and_pk(self):
    +        disk_id_1 = uuid4()
    +        resource_id_1 = uuid4()
    +        disk_id_2 = uuid4()
    +        resource_id_2 = uuid4()
    +        vm_client = mock.MagicMock
    +        vm_client.disks = {
    +            AZURE_SUBSCRIPTION: {
    +                disk_id_1: Disk(
    +                    resource_id=resource_id_1,
    +                    resource_name="test-disk",
    +                    vms_attached=[uuid4()],
    +                    encryption_type="EncryptionAtRestWithPlatformKey",
    +                ),
    +                disk_id_2: Disk(
    +                    resource_id=resource_id_2,
    +                    resource_name="test-disk-2",
    +                    vms_attached=[uuid4(), uuid4()],
    +                    encryption_type="EncryptionAtRestWithCustomerKey",
    +                ),
    +            }
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.vm.vm_ensure_attached_disks_encrypted_with_cmk.vm_ensure_attached_disks_encrypted_with_cmk.vm_client",
    +            new=vm_client,
    +        ):
    +            from prowler.providers.azure.services.vm.vm_ensure_attached_disks_encrypted_with_cmk.vm_ensure_attached_disks_encrypted_with_cmk import (
    +                vm_ensure_attached_disks_encrypted_with_cmk,
    +            )
    +
    +            check = vm_ensure_attached_disks_encrypted_with_cmk()
    +            result = check.execute()
    +            assert len(result) == 2
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].status == "FAIL"
    +            assert result[0].resource_id == resource_id_1
    +            assert result[0].resource_name == "test-disk"
    +            assert (
    +                result[0].status_extended
    +                == f"Disk '{disk_id_1}' is not encrypted with a customer-managed key in subscription {AZURE_SUBSCRIPTION}."
    +            )
    +            assert result[1].status == "PASS"
    +            assert result[1].resource_id == resource_id_2
    +            assert result[1].resource_name == "test-disk-2"
    +            assert (
    +                result[1].status_extended
    +                == f"Disk '{disk_id_2}' is encrypted with a customer-managed key in subscription {AZURE_SUBSCRIPTION}."
    +            )
    +
    +    def test_vm_unattached_disk_encrypt_cmk(self):
    +        disk_id = uuid4()
    +        resource_id = uuid4()
    +        vm_client = mock.MagicMock
    +        vm_client.disks = {
    +            AZURE_SUBSCRIPTION: {
    +                disk_id: Disk(
    +                    resource_id=resource_id,
    +                    resource_name="test-disk",
    +                    vms_attached=[],
    +                    encryption_type="EncryptionAtRestWithCustomerKey",
    +                )
    +            }
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.vm.vm_ensure_attached_disks_encrypted_with_cmk.vm_ensure_attached_disks_encrypted_with_cmk.vm_client",
    +            new=vm_client,
    +        ):
    +            from prowler.providers.azure.services.vm.vm_ensure_attached_disks_encrypted_with_cmk.vm_ensure_attached_disks_encrypted_with_cmk import (
    +                vm_ensure_attached_disks_encrypted_with_cmk,
    +            )
    +
    +            check = vm_ensure_attached_disks_encrypted_with_cmk()
    +            result = check.execute()
    +            assert len(result) == 0
    diff --git a/tests/providers/azure/services/vm/vm_ensure_unattached_disks_encrypted_with_cmk/vm_ensure_unattached_disks_encrypted_with_cmk_test.py b/tests/providers/azure/services/vm/vm_ensure_unattached_disks_encrypted_with_cmk/vm_ensure_unattached_disks_encrypted_with_cmk_test.py
    new file mode 100644
    index 00000000000..b07ba8eedcb
    --- /dev/null
    +++ b/tests/providers/azure/services/vm/vm_ensure_unattached_disks_encrypted_with_cmk/vm_ensure_unattached_disks_encrypted_with_cmk_test.py
    @@ -0,0 +1,186 @@
    +from unittest import mock
    +from uuid import uuid4
    +
    +from prowler.providers.azure.services.vm.vm_service import Disk
    +from tests.providers.azure.azure_fixtures import AZURE_SUBSCRIPTION
    +
    +
    +class Test_vm_ensure_unattached_disks_encrypted_with_cmk:
    +    def test_vm_no_subscriptions(self):
    +        vm_client = mock.MagicMock
    +        vm_client.disks = {}
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.vm.vm_ensure_unattached_disks_encrypted_with_cmk.vm_ensure_unattached_disks_encrypted_with_cmk.vm_client",
    +            new=vm_client,
    +        ):
    +            from prowler.providers.azure.services.vm.vm_ensure_unattached_disks_encrypted_with_cmk.vm_ensure_unattached_disks_encrypted_with_cmk import (
    +                vm_ensure_unattached_disks_encrypted_with_cmk,
    +            )
    +
    +            check = vm_ensure_unattached_disks_encrypted_with_cmk()
    +            result = check.execute()
    +            assert len(result) == 0
    +
    +    def test_vm_subscription_empty(self):
    +        vm_client = mock.MagicMock
    +        vm_client.disks = {AZURE_SUBSCRIPTION: {}}
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.vm.vm_ensure_unattached_disks_encrypted_with_cmk.vm_ensure_unattached_disks_encrypted_with_cmk.vm_client",
    +            new=vm_client,
    +        ):
    +            from prowler.providers.azure.services.vm.vm_ensure_unattached_disks_encrypted_with_cmk.vm_ensure_unattached_disks_encrypted_with_cmk import (
    +                vm_ensure_unattached_disks_encrypted_with_cmk,
    +            )
    +
    +            check = vm_ensure_unattached_disks_encrypted_with_cmk()
    +            result = check.execute()
    +            assert len(result) == 0
    +
    +    def test_vm_one_unattached_disk_encrypt_pk(self):
    +        disk_id = uuid4()
    +        resource_id = uuid4()
    +        vm_client = mock.MagicMock
    +        vm_client.disks = {
    +            AZURE_SUBSCRIPTION: {
    +                disk_id: Disk(
    +                    resource_id=resource_id,
    +                    resource_name="test-disk",
    +                    vms_attached=[],
    +                    encryption_type="EncryptionAtRestWithPlatformKey",
    +                )
    +            }
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.vm.vm_ensure_unattached_disks_encrypted_with_cmk.vm_ensure_unattached_disks_encrypted_with_cmk.vm_client",
    +            new=vm_client,
    +        ):
    +            from prowler.providers.azure.services.vm.vm_ensure_unattached_disks_encrypted_with_cmk.vm_ensure_unattached_disks_encrypted_with_cmk import (
    +                vm_ensure_unattached_disks_encrypted_with_cmk,
    +            )
    +
    +            check = vm_ensure_unattached_disks_encrypted_with_cmk()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].status == "FAIL"
    +            assert result[0].resource_id == resource_id
    +            assert result[0].resource_name == "test-disk"
    +            assert (
    +                result[0].status_extended
    +                == f"Disk '{disk_id}' is not encrypted with a customer-managed key in subscription {AZURE_SUBSCRIPTION}."
    +            )
    +
    +    def test_vm_one_unattached_disk_encrypt_cmk(self):
    +        disk_id = uuid4()
    +        resource_id = uuid4()
    +        vm_client = mock.MagicMock
    +        vm_client.disks = {
    +            AZURE_SUBSCRIPTION: {
    +                disk_id: Disk(
    +                    resource_id=resource_id,
    +                    resource_name="test-disk",
    +                    vms_attached=[],
    +                    encryption_type="EncryptionAtRestWithCustomerKey",
    +                )
    +            }
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.vm.vm_ensure_unattached_disks_encrypted_with_cmk.vm_ensure_unattached_disks_encrypted_with_cmk.vm_client",
    +            new=vm_client,
    +        ):
    +            from prowler.providers.azure.services.vm.vm_ensure_unattached_disks_encrypted_with_cmk.vm_ensure_unattached_disks_encrypted_with_cmk import (
    +                vm_ensure_unattached_disks_encrypted_with_cmk,
    +            )
    +
    +            check = vm_ensure_unattached_disks_encrypted_with_cmk()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].status == "PASS"
    +            assert result[0].resource_id == resource_id
    +            assert result[0].resource_name == "test-disk"
    +            assert (
    +                result[0].status_extended
    +                == f"Disk '{disk_id}' is encrypted with a customer-managed key in subscription {AZURE_SUBSCRIPTION}."
    +            )
    +
    +    def test_vm_subscription_two_unattached_disk_encrypt_cmk_and_pk(self):
    +        disk_id_1 = uuid4()
    +        resource_id_1 = uuid4()
    +        disk_id_2 = uuid4()
    +        resource_id_2 = uuid4()
    +        vm_client = mock.MagicMock
    +        vm_client.disks = {
    +            AZURE_SUBSCRIPTION: {
    +                disk_id_1: Disk(
    +                    resource_id=resource_id_1,
    +                    resource_name="test-disk",
    +                    vms_attached=[],
    +                    encryption_type="EncryptionAtRestWithPlatformKey",
    +                ),
    +                disk_id_2: Disk(
    +                    resource_id=resource_id_2,
    +                    resource_name="test-disk-2",
    +                    vms_attached=[],
    +                    encryption_type="EncryptionAtRestWithCustomerKey",
    +                ),
    +            }
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.vm.vm_ensure_unattached_disks_encrypted_with_cmk.vm_ensure_unattached_disks_encrypted_with_cmk.vm_client",
    +            new=vm_client,
    +        ):
    +            from prowler.providers.azure.services.vm.vm_ensure_unattached_disks_encrypted_with_cmk.vm_ensure_unattached_disks_encrypted_with_cmk import (
    +                vm_ensure_unattached_disks_encrypted_with_cmk,
    +            )
    +
    +            check = vm_ensure_unattached_disks_encrypted_with_cmk()
    +            result = check.execute()
    +            assert len(result) == 2
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].status == "FAIL"
    +            assert result[0].resource_id == resource_id_1
    +            assert result[0].resource_name == "test-disk"
    +            assert (
    +                result[0].status_extended
    +                == f"Disk '{disk_id_1}' is not encrypted with a customer-managed key in subscription {AZURE_SUBSCRIPTION}."
    +            )
    +            assert result[1].status == "PASS"
    +            assert result[1].resource_id == resource_id_2
    +            assert result[1].resource_name == "test-disk-2"
    +            assert (
    +                result[1].status_extended
    +                == f"Disk '{disk_id_2}' is encrypted with a customer-managed key in subscription {AZURE_SUBSCRIPTION}."
    +            )
    +
    +    def test_vm_attached_disk_encrypt_cmk(self):
    +        disk_id = uuid4()
    +        resource_id = uuid4()
    +        vm_client = mock.MagicMock
    +        vm_client.disks = {
    +            AZURE_SUBSCRIPTION: {
    +                disk_id: Disk(
    +                    resource_id=resource_id,
    +                    resource_name="test-disk",
    +                    vms_attached=[uuid4()],
    +                    encryption_type="EncryptionAtRestWithCustomerKey",
    +                )
    +            }
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.vm.vm_ensure_unattached_disks_encrypted_with_cmk.vm_ensure_unattached_disks_encrypted_with_cmk.vm_client",
    +            new=vm_client,
    +        ):
    +            from prowler.providers.azure.services.vm.vm_ensure_unattached_disks_encrypted_with_cmk.vm_ensure_unattached_disks_encrypted_with_cmk import (
    +                vm_ensure_unattached_disks_encrypted_with_cmk,
    +            )
    +
    +            check = vm_ensure_unattached_disks_encrypted_with_cmk()
    +            result = check.execute()
    +            assert len(result) == 0
    diff --git a/tests/providers/azure/services/vm/vm_ensure_using_managed_disks/vm_ensure_using_managed_disks_test.py b/tests/providers/azure/services/vm/vm_ensure_using_managed_disks/vm_ensure_using_managed_disks_test.py
    new file mode 100644
    index 00000000000..4c0c51b6b47
    --- /dev/null
    +++ b/tests/providers/azure/services/vm/vm_ensure_using_managed_disks/vm_ensure_using_managed_disks_test.py
    @@ -0,0 +1,156 @@
    +from unittest import mock
    +from uuid import uuid4
    +
    +from prowler.providers.azure.services.vm.vm_service import VirtualMachine
    +from tests.providers.azure.azure_fixtures import AZURE_SUBSCRIPTION
    +
    +
    +class Test_vm_ensure_using_managed_disks:
    +    def test_vm_no_subscriptions(self):
    +        vm_client = mock.MagicMock
    +        vm_client.virtual_machines = {}
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.vm.vm_ensure_using_managed_disks.vm_ensure_using_managed_disks.vm_client",
    +            new=vm_client,
    +        ):
    +            from prowler.providers.azure.services.vm.vm_ensure_using_managed_disks.vm_ensure_using_managed_disks import (
    +                vm_ensure_using_managed_disks,
    +            )
    +
    +            check = vm_ensure_using_managed_disks()
    +            result = check.execute()
    +            assert len(result) == 0
    +
    +    def test_vm_subscriptions(self):
    +        vm_client = mock.MagicMock
    +        vm_client.virtual_machines = {AZURE_SUBSCRIPTION: {}}
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.vm.vm_ensure_using_managed_disks.vm_ensure_using_managed_disks.vm_client",
    +            new=vm_client,
    +        ):
    +            from prowler.providers.azure.services.vm.vm_ensure_using_managed_disks.vm_ensure_using_managed_disks import (
    +                vm_ensure_using_managed_disks,
    +            )
    +
    +            check = vm_ensure_using_managed_disks()
    +            result = check.execute()
    +            assert len(result) == 0
    +
    +    def test_vm_ensure_using_managed_disks(self):
    +        vm_id = str(uuid4())
    +        vm_client = mock.MagicMock
    +        vm_client.virtual_machines = {
    +            AZURE_SUBSCRIPTION: {
    +                vm_id: VirtualMachine(
    +                    resource_id="/subscriptions/resource_id",
    +                    resource_name="VMTest",
    +                    storage_profile=mock.MagicMock(
    +                        os_disk=mock.MagicMock(
    +                            create_option="FromImage",
    +                            managed_disk=mock.MagicMock(id="managed_disk_id"),
    +                        ),
    +                        data_disks=[],
    +                    ),
    +                )
    +            }
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.vm.vm_ensure_using_managed_disks.vm_ensure_using_managed_disks.vm_client",
    +            new=vm_client,
    +        ):
    +            from prowler.providers.azure.services.vm.vm_ensure_using_managed_disks.vm_ensure_using_managed_disks import (
    +                vm_ensure_using_managed_disks,
    +            )
    +
    +            check = vm_ensure_using_managed_disks()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "PASS"
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == "VMTest"
    +            assert result[0].resource_id == vm_id
    +            assert (
    +                result[0].status_extended
    +                == f"VM VMTest is using managed disks in subscription {AZURE_SUBSCRIPTION}"
    +            )
    +
    +    def test_vm_using_not_managed_os_disk(self):
    +        vm_id = str(uuid4())
    +        vm_client = mock.MagicMock
    +        vm_client.virtual_machines = {
    +            AZURE_SUBSCRIPTION: {
    +                vm_id: VirtualMachine(
    +                    resource_id="/subscriptions/resource_id",
    +                    resource_name="VMTest",
    +                    storage_profile=mock.MagicMock(
    +                        os_disk=mock.MagicMock(
    +                            create_option="FromImage",
    +                            managed_disk=None,
    +                        ),
    +                        data_disks=[],
    +                    ),
    +                )
    +            }
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.vm.vm_ensure_using_managed_disks.vm_ensure_using_managed_disks.vm_client",
    +            new=vm_client,
    +        ):
    +            from prowler.providers.azure.services.vm.vm_ensure_using_managed_disks.vm_ensure_using_managed_disks import (
    +                vm_ensure_using_managed_disks,
    +            )
    +
    +            check = vm_ensure_using_managed_disks()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "FAIL"
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == "VMTest"
    +            assert result[0].resource_id == vm_id
    +            assert (
    +                result[0].status_extended
    +                == f"VM VMTest is not using managed disks in subscription {AZURE_SUBSCRIPTION}"
    +            )
    +
    +    def test_vm_using_not_managed_data_disks(self):
    +        vm_id = str(uuid4())
    +        vm_client = mock.MagicMock
    +        vm_client.virtual_machines = {
    +            AZURE_SUBSCRIPTION: {
    +                vm_id: VirtualMachine(
    +                    resource_id="/subscriptions/resource_id",
    +                    resource_name="VMTest",
    +                    storage_profile=mock.MagicMock(
    +                        os_disk=mock.MagicMock(
    +                            create_option="FromImage",
    +                            managed_disk=mock.MagicMock(id="managed_disk_id"),
    +                        ),
    +                        data_disks=[mock.MagicMock(managed_disk=None)],
    +                    ),
    +                )
    +            }
    +        }
    +
    +        with mock.patch(
    +            "prowler.providers.azure.services.vm.vm_ensure_using_managed_disks.vm_ensure_using_managed_disks.vm_client",
    +            new=vm_client,
    +        ):
    +            from prowler.providers.azure.services.vm.vm_ensure_using_managed_disks.vm_ensure_using_managed_disks import (
    +                vm_ensure_using_managed_disks,
    +            )
    +
    +            check = vm_ensure_using_managed_disks()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "FAIL"
    +            assert result[0].subscription == AZURE_SUBSCRIPTION
    +            assert result[0].resource_name == "VMTest"
    +            assert result[0].resource_id == vm_id
    +            assert (
    +                result[0].status_extended
    +                == f"VM VMTest is not using managed disks in subscription {AZURE_SUBSCRIPTION}"
    +            )
    diff --git a/tests/providers/azure/services/vm/vm_service_test.py b/tests/providers/azure/services/vm/vm_service_test.py
    new file mode 100644
    index 00000000000..d5d07e8775a
    --- /dev/null
    +++ b/tests/providers/azure/services/vm/vm_service_test.py
    @@ -0,0 +1,104 @@
    +from unittest.mock import patch
    +
    +from azure.mgmt.compute.models import ManagedDiskParameters, OSDisk, StorageProfile
    +
    +from prowler.providers.azure.services.vm.vm_service import (
    +    Disk,
    +    VirtualMachine,
    +    VirtualMachines,
    +)
    +from tests.providers.azure.azure_fixtures import (
    +    AZURE_SUBSCRIPTION,
    +    set_mocked_azure_audit_info,
    +)
    +
    +
    +def mock_vm_get_virtual_machines(_):
    +    return {
    +        AZURE_SUBSCRIPTION: {
    +            "vm_id-1": VirtualMachine(
    +                resource_id="/subscriptions/resource_id",
    +                resource_name="VMTest",
    +                storage_profile=StorageProfile(
    +                    os_disk=OSDisk(
    +                        create_option="FromImage",
    +                        managed_disk=ManagedDiskParameters(id="managed_disk_id"),
    +                    ),
    +                    data_disks=[],
    +                ),
    +            )
    +        }
    +    }
    +
    +
    +def mock_vm_get_disks(_):
    +    return {
    +        AZURE_SUBSCRIPTION: {
    +            "disk_id-1": Disk(
    +                resource_id="disk_id-1",
    +                resource_name="DiskTest",
    +                vms_attached=["managed_by"],
    +                encryption_type="EncryptionAtRestWithPlatformKey",
    +            )
    +        }
    +    }
    +
    +
    +@patch(
    +    "prowler.providers.azure.services.vm.vm_service.VirtualMachines.__get_virtual_machines__",
    +    new=mock_vm_get_virtual_machines,
    +)
    +@patch(
    +    "prowler.providers.azure.services.vm.vm_service.VirtualMachines.__get_disks__",
    +    new=mock_vm_get_disks,
    +)
    +class Test_AppInsights_Service:
    +    def test__get_client__(self):
    +        app_insights = VirtualMachines(set_mocked_azure_audit_info())
    +        assert (
    +            app_insights.clients[AZURE_SUBSCRIPTION].__class__.__name__
    +            == "ComputeManagementClient"
    +        )
    +
    +    def test__get_subscriptions__(self):
    +        app_insights = VirtualMachines(set_mocked_azure_audit_info())
    +        assert app_insights.subscriptions.__class__.__name__ == "dict"
    +
    +    def test__get_virtual_machines(self):
    +        virtual_machines = VirtualMachines(set_mocked_azure_audit_info())
    +        assert len(virtual_machines.virtual_machines) == 1
    +        assert (
    +            virtual_machines.virtual_machines[AZURE_SUBSCRIPTION]["vm_id-1"].resource_id
    +            == "/subscriptions/resource_id"
    +        )
    +        assert (
    +            virtual_machines.virtual_machines[AZURE_SUBSCRIPTION][
    +                "vm_id-1"
    +            ].resource_name
    +            == "VMTest"
    +        )
    +        assert (
    +            virtual_machines.virtual_machines[AZURE_SUBSCRIPTION][
    +                "vm_id-1"
    +            ].storage_profile.os_disk.managed_disk.id
    +            == "managed_disk_id"
    +        )
    +        assert (
    +            len(
    +                virtual_machines.virtual_machines[AZURE_SUBSCRIPTION][
    +                    "vm_id-1"
    +                ].storage_profile.data_disks
    +            )
    +            == 0
    +        )
    +
    +    def test__get_disks(self):
    +        disks = VirtualMachines(set_mocked_azure_audit_info()).disks
    +        assert len(disks) == 1
    +        assert disks[AZURE_SUBSCRIPTION]["disk_id-1"].resource_id == "disk_id-1"
    +        assert disks[AZURE_SUBSCRIPTION]["disk_id-1"].resource_name == "DiskTest"
    +        assert disks[AZURE_SUBSCRIPTION]["disk_id-1"].vms_attached == ["managed_by"]
    +        assert (
    +            disks[AZURE_SUBSCRIPTION]["disk_id-1"].encryption_type
    +            == "EncryptionAtRestWithPlatformKey"
    +        )
    diff --git a/tests/providers/common/audit_info_test.py b/tests/providers/common/audit_info_test.py
    index fb9e7ba4d8c..2a252bde66d 100644
    --- a/tests/providers/common/audit_info_test.py
    +++ b/tests/providers/common/audit_info_test.py
    @@ -3,7 +3,7 @@
     import pytest
     from boto3 import session
     from mock import patch
    -from moto import mock_ec2, mock_resourcegroupstaggingapi
    +from moto import mock_aws
     
     from prowler.config.config import default_config_file_path
     from prowler.providers.aws.lib.audit_info.models import AWS_Assume_Role, AWS_Audit_Info
    @@ -36,6 +36,7 @@
         audit_resources=None,
         audit_config=None,
         azure_region_config=AzureRegionConfig(),
    +    locations=None,
     )
     
     mock_set_audit_info = Audit_Info()
    @@ -126,6 +127,7 @@ def set_mocked_audit_info(self):
                     session_duration=None,
                     external_id=None,
                     mfa_enabled=None,
    +                role_session_name="ProwlerAssessmentSession",
                 ),
                 audited_regions=["eu-west-2", "eu-west-1"],
                 organizations_metadata=None,
    @@ -312,8 +314,7 @@ def test_set_audit_info_kubernetes(self):
             audit_info = set_provider_audit_info(provider, arguments)
             assert isinstance(audit_info, Kubernetes_Audit_Info)
     
    -    @mock_resourcegroupstaggingapi
    -    @mock_ec2
    +    @mock_aws
         def test_get_tagged_resources(self):
             with patch(
                 "prowler.providers.common.audit_info.current_audit_info",
    @@ -361,6 +362,7 @@ def test_get_tagged_resources(self):
                     get_tagged_resources(["MY_TAG1=MY_VALUE1"], mock_audit_info)
                 )
     
    +    @mock_aws
         @patch(
             "prowler.providers.common.audit_info.validate_aws_credentials",
             new=mock_validate_credentials,
    @@ -425,7 +427,7 @@ def test_set_audit_info_aws_session_duration_without_role(self):
     
                 with pytest.raises(SystemExit) as exception:
                     _ = set_provider_audit_info(provider, arguments)
    -            # assert exception == "To use -I/-T options -R option is needed"
    +            # assert exception == "To use -I/--external-id, -T/--session-duration or --role-session-name options -R/--role option is needed"
                 assert isinstance(exception, pytest.ExceptionInfo)
     
         def test_set_audit_info_external_id_without_role(self):
    @@ -445,5 +447,5 @@ def test_set_audit_info_external_id_without_role(self):
     
                 with pytest.raises(SystemExit) as exception:
                     _ = set_provider_audit_info(provider, arguments)
    -            # assert exception == "To use -I/-T options -R option is needed"
    +            # assert exception == "To use -I/--external-id, -T/--session-duration or --role-session-name options -R/--role option is needed"
                 assert isinstance(exception, pytest.ExceptionInfo)
    diff --git a/tests/providers/common/common_outputs_test.py b/tests/providers/common/common_outputs_test.py
    index b06020fb3b2..70885aa8121 100644
    --- a/tests/providers/common/common_outputs_test.py
    +++ b/tests/providers/common/common_outputs_test.py
    @@ -38,6 +38,7 @@ def set_mocked_azure_audit_info(self):
                 audit_resources=None,
                 audit_config=None,
                 azure_region_config=AzureRegionConfig(),
    +            locations=None,
             )
             return audit_info
     
    @@ -112,6 +113,7 @@ def test_set_provider_output_options_aws(self):
             arguments.shodan = "test-api-key"
             arguments.only_logs = False
             arguments.unix_timestamp = False
    +        arguments.send_sh_only_fails = True
     
             audit_info = self.set_mocked_aws_audit_info()
             mutelist_file = ""
    @@ -121,6 +123,7 @@ def test_set_provider_output_options_aws(self):
             )
             assert isinstance(output_options, Aws_Output_Options)
             assert output_options.security_hub_enabled
    +        assert output_options.send_sh_only_fails
             assert output_options.is_quiet
             assert output_options.output_modes == ["html", "csv", "json", "json-asff"]
             assert output_options.output_directory == arguments.output_directory
    @@ -207,6 +210,7 @@ def test_set_provider_output_options_aws_no_output_filename(self):
             arguments.shodan = "test-api-key"
             arguments.only_logs = False
             arguments.unix_timestamp = False
    +        arguments.send_sh_only_fails = True
     
             # Mock AWS Audit Info
             audit_info = self.set_mocked_aws_audit_info()
    @@ -218,6 +222,7 @@ def test_set_provider_output_options_aws_no_output_filename(self):
             )
             assert isinstance(output_options, Aws_Output_Options)
             assert output_options.security_hub_enabled
    +        assert output_options.send_sh_only_fails
             assert output_options.is_quiet
             assert output_options.output_modes == ["html", "csv", "json", "json-asff"]
             assert output_options.output_directory == arguments.output_directory
    @@ -243,6 +248,7 @@ def test_set_provider_output_options_azure_domain(self):
             arguments.verbose = True
             arguments.only_logs = False
             arguments.unix_timestamp = False
    +        arguments.shodan = "test-api-key"
     
             # Mock Azure Audit Info
             audit_info = self.set_mocked_azure_audit_info()
    @@ -283,6 +289,7 @@ def test_set_provider_output_options_azure_tenant_ids(self):
             arguments.verbose = True
             arguments.only_logs = False
             arguments.unix_timestamp = False
    +        arguments.shodan = "test-api-key"
     
             # Mock Azure Audit Info
             audit_info = self.set_mocked_azure_audit_info()
    @@ -324,7 +331,7 @@ def test_azure_get_assessment_summary(self):
             }
             printed_subscriptions = []
             for key, value in audit_info.identity.subscriptions.items():
    -            intermediate = key + " : " + value
    +            intermediate = f"{key} : {value}"
                 printed_subscriptions.append(intermediate)
             assert (
                 get_assessment_summary(audit_info)
    diff --git a/tests/providers/gcp/lib/audit_info_utils.py b/tests/providers/gcp/lib/audit_info_utils.py
    new file mode 100644
    index 00000000000..60a900cd63e
    --- /dev/null
    +++ b/tests/providers/gcp/lib/audit_info_utils.py
    @@ -0,0 +1 @@
    +GCP_PROJECT_ID = "123456789012"
    diff --git a/tests/providers/gcp/services/apikeys/apikeys_api_restrictions_configured/apikeys_api_restrictions_configured_test.py b/tests/providers/gcp/services/apikeys/apikeys_api_restrictions_configured/apikeys_api_restrictions_configured_test.py
    index c1145ec033f..45cca513c10 100644
    --- a/tests/providers/gcp/services/apikeys/apikeys_api_restrictions_configured/apikeys_api_restrictions_configured_test.py
    +++ b/tests/providers/gcp/services/apikeys/apikeys_api_restrictions_configured/apikeys_api_restrictions_configured_test.py
    @@ -1,7 +1,7 @@
     from re import search
     from unittest import mock
     
    -GCP_PROJECT_ID = "123456789012"
    +from tests.providers.gcp.lib.audit_info_utils import GCP_PROJECT_ID
     
     
     class Test_apikeys_api_restrictions_configured:
    diff --git a/tests/providers/gcp/services/apikeys/apikeys_key_exists/apikeys_key_exists_test.py b/tests/providers/gcp/services/apikeys/apikeys_key_exists/apikeys_key_exists_test.py
    index 9160caf7bf0..b6449c99bf2 100644
    --- a/tests/providers/gcp/services/apikeys/apikeys_key_exists/apikeys_key_exists_test.py
    +++ b/tests/providers/gcp/services/apikeys/apikeys_key_exists/apikeys_key_exists_test.py
    @@ -1,7 +1,7 @@
     from re import search
     from unittest import mock
     
    -GCP_PROJECT_ID = "123456789012"
    +from tests.providers.gcp.lib.audit_info_utils import GCP_PROJECT_ID
     
     
     class Test_apikeys_key_exists:
    diff --git a/tests/providers/gcp/services/apikeys/apikeys_key_rotated_in_90_days/apikeys_key_rotated_in_90_days_test.py b/tests/providers/gcp/services/apikeys/apikeys_key_rotated_in_90_days/apikeys_key_rotated_in_90_days_test.py
    index 82267bd1533..e531c00ebc8 100644
    --- a/tests/providers/gcp/services/apikeys/apikeys_key_rotated_in_90_days/apikeys_key_rotated_in_90_days_test.py
    +++ b/tests/providers/gcp/services/apikeys/apikeys_key_rotated_in_90_days/apikeys_key_rotated_in_90_days_test.py
    @@ -2,7 +2,7 @@
     from re import search
     from unittest import mock
     
    -GCP_PROJECT_ID = "123456789012"
    +from tests.providers.gcp.lib.audit_info_utils import GCP_PROJECT_ID
     
     
     class Test_apikeys_key_rotated_in_90_days:
    diff --git a/tests/providers/gcp/services/artifacts/artifacts_container_analysis_enabled/artifacts_container_analysis_enabled_test.py b/tests/providers/gcp/services/artifacts/artifacts_container_analysis_enabled/artifacts_container_analysis_enabled_test.py
    new file mode 100644
    index 00000000000..92d4b941417
    --- /dev/null
    +++ b/tests/providers/gcp/services/artifacts/artifacts_container_analysis_enabled/artifacts_container_analysis_enabled_test.py
    @@ -0,0 +1,68 @@
    +from unittest import mock
    +
    +from prowler.providers.gcp.services.serviceusage.serviceusage_service import Service
    +from tests.providers.gcp.lib.audit_info_utils import GCP_PROJECT_ID
    +
    +
    +class Test_artifacts_container_analysis_enabled:
    +    def test_serviceusage_no_active_services(self):
    +        serviceusage_client = mock.MagicMock
    +        serviceusage_client.active_services = {}
    +        serviceusage_client.project_ids = [GCP_PROJECT_ID]
    +        serviceusage_client.region = "global"
    +
    +        with mock.patch(
    +            "prowler.providers.gcp.services.artifacts.artifacts_container_analysis_enabled.artifacts_container_analysis_enabled.serviceusage_client",
    +            new=serviceusage_client,
    +        ):
    +            from prowler.providers.gcp.services.artifacts.artifacts_container_analysis_enabled.artifacts_container_analysis_enabled import (
    +                artifacts_container_analysis_enabled,
    +            )
    +
    +            check = artifacts_container_analysis_enabled()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "FAIL"
    +            assert (
    +                result[0].status_extended
    +                == f"AR Container Analysis is not enabled in project {GCP_PROJECT_ID}."
    +            )
    +            assert result[0].resource_id == "containeranalysis.googleapis.com"
    +            assert result[0].project_id == GCP_PROJECT_ID
    +            assert result[0].resource_name == "AR Container Analysis"
    +            assert result[0].location == serviceusage_client.region
    +
    +    def test_serviceusage_active_cloudasset(self):
    +        serviceusage_client = mock.MagicMock
    +        serviceusage_client.active_services = {
    +            GCP_PROJECT_ID: [
    +                Service(
    +                    name="containeranalysis.googleapis.com",
    +                    title="AR Container Analysis",
    +                    project_id=GCP_PROJECT_ID,
    +                )
    +            ]
    +        }
    +        serviceusage_client.project_ids = [GCP_PROJECT_ID]
    +        serviceusage_client.region = "global"
    +
    +        with mock.patch(
    +            "prowler.providers.gcp.services.artifacts.artifacts_container_analysis_enabled.artifacts_container_analysis_enabled.serviceusage_client",
    +            new=serviceusage_client,
    +        ):
    +            from prowler.providers.gcp.services.artifacts.artifacts_container_analysis_enabled.artifacts_container_analysis_enabled import (
    +                artifacts_container_analysis_enabled,
    +            )
    +
    +            check = artifacts_container_analysis_enabled()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "PASS"
    +            assert (
    +                result[0].status_extended
    +                == f"AR Container Analysis is enabled in project {GCP_PROJECT_ID}."
    +            )
    +            assert result[0].resource_id == "containeranalysis.googleapis.com"
    +            assert result[0].project_id == GCP_PROJECT_ID
    +            assert result[0].resource_name == "AR Container Analysis"
    +            assert result[0].location == serviceusage_client.region
    diff --git a/tests/providers/gcp/services/bigquery/bigquery_dataset_public_access/bigquery_dataset_public_access_test.py b/tests/providers/gcp/services/bigquery/bigquery_dataset_public_access/bigquery_dataset_public_access_test.py
    index 752751294bc..b4a5929267d 100644
    --- a/tests/providers/gcp/services/bigquery/bigquery_dataset_public_access/bigquery_dataset_public_access_test.py
    +++ b/tests/providers/gcp/services/bigquery/bigquery_dataset_public_access/bigquery_dataset_public_access_test.py
    @@ -1,6 +1,6 @@
     from unittest import mock
     
    -GCP_PROJECT_ID = "123456789012"
    +from tests.providers.gcp.lib.audit_info_utils import GCP_PROJECT_ID
     
     
     class Test_bigquery_dataset_public_access:
    diff --git a/tests/providers/gcp/services/compute/compute_block_project_wide_ssh_keys_disabled/compute_block_project_wide_ssh_keys_disabled_test.py b/tests/providers/gcp/services/compute/compute_block_project_wide_ssh_keys_disabled/compute_block_project_wide_ssh_keys_disabled_test.py
    index 8b6991879e4..a7556b6e8dc 100644
    --- a/tests/providers/gcp/services/compute/compute_block_project_wide_ssh_keys_disabled/compute_block_project_wide_ssh_keys_disabled_test.py
    +++ b/tests/providers/gcp/services/compute/compute_block_project_wide_ssh_keys_disabled/compute_block_project_wide_ssh_keys_disabled_test.py
    @@ -1,7 +1,7 @@
     from re import search
     from unittest import mock
     
    -GCP_PROJECT_ID = "123456789012"
    +from tests.providers.gcp.lib.audit_info_utils import GCP_PROJECT_ID
     
     
     class Test_compute_instance_block_project_wide_ssh_keys_disabled:
    diff --git a/tests/providers/gcp/services/compute/compute_default_service_account_in_use/compute_default_service_account_in_use_test.py b/tests/providers/gcp/services/compute/compute_default_service_account_in_use/compute_default_service_account_in_use_test.py
    index 2e63b975ac8..8a70974a245 100644
    --- a/tests/providers/gcp/services/compute/compute_default_service_account_in_use/compute_default_service_account_in_use_test.py
    +++ b/tests/providers/gcp/services/compute/compute_default_service_account_in_use/compute_default_service_account_in_use_test.py
    @@ -1,7 +1,7 @@
     from re import search
     from unittest import mock
     
    -GCP_PROJECT_ID = "123456789012"
    +from tests.providers.gcp.lib.audit_info_utils import GCP_PROJECT_ID
     
     
     class Test_compute_instance_default_service_account_in_use:
    diff --git a/tests/providers/gcp/services/compute/compute_default_service_account_in_use_with_full_api_access/compute_default_service_account_in_use_with_full_api_access_test.py b/tests/providers/gcp/services/compute/compute_default_service_account_in_use_with_full_api_access/compute_default_service_account_in_use_with_full_api_access_test.py
    index d31580907f5..85048c06d19 100644
    --- a/tests/providers/gcp/services/compute/compute_default_service_account_in_use_with_full_api_access/compute_default_service_account_in_use_with_full_api_access_test.py
    +++ b/tests/providers/gcp/services/compute/compute_default_service_account_in_use_with_full_api_access/compute_default_service_account_in_use_with_full_api_access_test.py
    @@ -1,6 +1,6 @@
     from unittest import mock
     
    -GCP_PROJECT_ID = "123456789012"
    +from tests.providers.gcp.lib.audit_info_utils import GCP_PROJECT_ID
     
     
     class Test_compute_instance_default_service_account_in_use_with_full_api_access:
    diff --git a/tests/providers/gcp/services/compute/compute_encryption_with_csek_is_disabled/compute_encryption_with_csek_is_disabled_test.py b/tests/providers/gcp/services/compute/compute_encryption_with_csek_is_disabled/compute_encryption_with_csek_is_disabled_test.py
    index 4d24f2d76db..56914fd117e 100644
    --- a/tests/providers/gcp/services/compute/compute_encryption_with_csek_is_disabled/compute_encryption_with_csek_is_disabled_test.py
    +++ b/tests/providers/gcp/services/compute/compute_encryption_with_csek_is_disabled/compute_encryption_with_csek_is_disabled_test.py
    @@ -1,7 +1,7 @@
     from re import search
     from unittest import mock
     
    -GCP_PROJECT_ID = "123456789012"
    +from tests.providers.gcp.lib.audit_info_utils import GCP_PROJECT_ID
     
     
     class Test_compute_instance_encryption_with_csek_enabled:
    diff --git a/tests/providers/gcp/services/compute/compute_instance_confidential_computing_enabled/compute_instance_confidential_computing_enabled_test.py b/tests/providers/gcp/services/compute/compute_instance_confidential_computing_enabled/compute_instance_confidential_computing_enabled_test.py
    index a64284b95ba..b750378e773 100644
    --- a/tests/providers/gcp/services/compute/compute_instance_confidential_computing_enabled/compute_instance_confidential_computing_enabled_test.py
    +++ b/tests/providers/gcp/services/compute/compute_instance_confidential_computing_enabled/compute_instance_confidential_computing_enabled_test.py
    @@ -1,7 +1,7 @@
     from re import search
     from unittest import mock
     
    -GCP_PROJECT_ID = "123456789012"
    +from tests.providers.gcp.lib.audit_info_utils import GCP_PROJECT_ID
     
     
     class Test_compute_instance_confidential_computing_enabled:
    diff --git a/tests/providers/gcp/services/compute/compute_ip_forwarding_is_enabled/compute_ip_forwarding_is_enabled_test.py b/tests/providers/gcp/services/compute/compute_ip_forwarding_is_enabled/compute_ip_forwarding_is_enabled_test.py
    index 53740aeb580..2eb604f0f70 100644
    --- a/tests/providers/gcp/services/compute/compute_ip_forwarding_is_enabled/compute_ip_forwarding_is_enabled_test.py
    +++ b/tests/providers/gcp/services/compute/compute_ip_forwarding_is_enabled/compute_ip_forwarding_is_enabled_test.py
    @@ -1,7 +1,7 @@
     from re import search
     from unittest import mock
     
    -GCP_PROJECT_ID = "123456789012"
    +from tests.providers.gcp.lib.audit_info_utils import GCP_PROJECT_ID
     
     
     class Test_compute_instance_ip_forwarding_is_enabled:
    diff --git a/tests/providers/gcp/services/compute/compute_loadbalancer_logging_enabled/compute_loadbalancer_logging_enabled_test.py b/tests/providers/gcp/services/compute/compute_loadbalancer_logging_enabled/compute_loadbalancer_logging_enabled_test.py
    index 48cf8956ff8..a2c6d8c4466 100644
    --- a/tests/providers/gcp/services/compute/compute_loadbalancer_logging_enabled/compute_loadbalancer_logging_enabled_test.py
    +++ b/tests/providers/gcp/services/compute/compute_loadbalancer_logging_enabled/compute_loadbalancer_logging_enabled_test.py
    @@ -1,7 +1,7 @@
     from re import search
     from unittest import mock
     
    -GCP_PROJECT_ID = "123456789012"
    +from tests.providers.gcp.lib.audit_info_utils import GCP_PROJECT_ID
     
     
     class Test_compute_loadbalancer_logging_enabled:
    diff --git a/tests/providers/gcp/services/compute/compute_network_dns_logging_enabled/compute_network_dns_logging_enabled_test.py b/tests/providers/gcp/services/compute/compute_network_dns_logging_enabled/compute_network_dns_logging_enabled_test.py
    index 8e1ff2fb259..67e62eee46d 100644
    --- a/tests/providers/gcp/services/compute/compute_network_dns_logging_enabled/compute_network_dns_logging_enabled_test.py
    +++ b/tests/providers/gcp/services/compute/compute_network_dns_logging_enabled/compute_network_dns_logging_enabled_test.py
    @@ -2,8 +2,7 @@
     from unittest import mock
     
     from prowler.providers.gcp.services.dns.dns_service import Policy
    -
    -GCP_PROJECT_ID = "123456789012"
    +from tests.providers.gcp.lib.audit_info_utils import GCP_PROJECT_ID
     
     
     class Test_compute_network_dns_logging_enabled:
    diff --git a/tests/providers/gcp/services/compute/compute_network_not_legacy/compute_network_not_legacy_test.py b/tests/providers/gcp/services/compute/compute_network_not_legacy/compute_network_not_legacy_test.py
    index 234b8315a9f..dfcbeb2b918 100644
    --- a/tests/providers/gcp/services/compute/compute_network_not_legacy/compute_network_not_legacy_test.py
    +++ b/tests/providers/gcp/services/compute/compute_network_not_legacy/compute_network_not_legacy_test.py
    @@ -1,7 +1,7 @@
     from re import search
     from unittest import mock
     
    -GCP_PROJECT_ID = "123456789012"
    +from tests.providers.gcp.lib.audit_info_utils import GCP_PROJECT_ID
     
     
     class Test_compute_network_not_legacy:
    diff --git a/tests/providers/gcp/services/compute/compute_project_os_login_enabled/compute_project_os_login_enabled_test.py b/tests/providers/gcp/services/compute/compute_project_os_login_enabled/compute_project_os_login_enabled_test.py
    index 6512a9c42ec..116cc738b35 100644
    --- a/tests/providers/gcp/services/compute/compute_project_os_login_enabled/compute_project_os_login_enabled_test.py
    +++ b/tests/providers/gcp/services/compute/compute_project_os_login_enabled/compute_project_os_login_enabled_test.py
    @@ -1,7 +1,7 @@
     from re import search
     from unittest import mock
     
    -GCP_PROJECT_ID = "123456789012"
    +from tests.providers.gcp.lib.audit_info_utils import GCP_PROJECT_ID
     
     
     class Test_compute_project_os_login_enabled:
    diff --git a/tests/providers/gcp/services/compute/compute_rdp_access_from_the_internet_allowed/compute_rdp_access_from_the_internet_allowed_test.py b/tests/providers/gcp/services/compute/compute_rdp_access_from_the_internet_allowed/compute_rdp_access_from_the_internet_allowed_test.py
    index 50d9225f874..85d599a21b8 100644
    --- a/tests/providers/gcp/services/compute/compute_rdp_access_from_the_internet_allowed/compute_rdp_access_from_the_internet_allowed_test.py
    +++ b/tests/providers/gcp/services/compute/compute_rdp_access_from_the_internet_allowed/compute_rdp_access_from_the_internet_allowed_test.py
    @@ -1,7 +1,7 @@
     from re import search
     from unittest import mock
     
    -GCP_PROJECT_ID = "123456789012"
    +from tests.providers.gcp.lib.audit_info_utils import GCP_PROJECT_ID
     
     
     class Test_compute_firewall_rdp_access_from_the_internet_allowed:
    diff --git a/tests/providers/gcp/services/compute/compute_serial_ports_in_use/compute_serial_ports_in_use_test.py b/tests/providers/gcp/services/compute/compute_serial_ports_in_use/compute_serial_ports_in_use_test.py
    index 10ac1446655..49e4f051d9b 100644
    --- a/tests/providers/gcp/services/compute/compute_serial_ports_in_use/compute_serial_ports_in_use_test.py
    +++ b/tests/providers/gcp/services/compute/compute_serial_ports_in_use/compute_serial_ports_in_use_test.py
    @@ -1,7 +1,7 @@
     from re import search
     from unittest import mock
     
    -GCP_PROJECT_ID = "123456789012"
    +from tests.providers.gcp.lib.audit_info_utils import GCP_PROJECT_ID
     
     
     class Test_compute_instance_serial_ports_in_use:
    diff --git a/tests/providers/gcp/services/compute/compute_shielded_vm_enabled/compute_shielded_vm_enabled_test.py b/tests/providers/gcp/services/compute/compute_shielded_vm_enabled/compute_shielded_vm_enabled_test.py
    index 7e134ecfe08..6e8ace8202c 100644
    --- a/tests/providers/gcp/services/compute/compute_shielded_vm_enabled/compute_shielded_vm_enabled_test.py
    +++ b/tests/providers/gcp/services/compute/compute_shielded_vm_enabled/compute_shielded_vm_enabled_test.py
    @@ -1,7 +1,7 @@
     from re import search
     from unittest import mock
     
    -GCP_PROJECT_ID = "123456789012"
    +from tests.providers.gcp.lib.audit_info_utils import GCP_PROJECT_ID
     
     
     class Test_compute_instance_shielded_vm_enabled:
    diff --git a/tests/providers/gcp/services/compute/compute_ssh_access_from_the_internet_allowed/compute_ssh_access_from_the_internet_allowed_test.py b/tests/providers/gcp/services/compute/compute_ssh_access_from_the_internet_allowed/compute_ssh_access_from_the_internet_allowed_test.py
    index 892ae55fd83..482d24d3c2f 100644
    --- a/tests/providers/gcp/services/compute/compute_ssh_access_from_the_internet_allowed/compute_ssh_access_from_the_internet_allowed_test.py
    +++ b/tests/providers/gcp/services/compute/compute_ssh_access_from_the_internet_allowed/compute_ssh_access_from_the_internet_allowed_test.py
    @@ -1,7 +1,7 @@
     from re import search
     from unittest import mock
     
    -GCP_PROJECT_ID = "123456789012"
    +from tests.providers.gcp.lib.audit_info_utils import GCP_PROJECT_ID
     
     
     class Test_compute_firewall_ssh_access_from_the_internet_allowed:
    diff --git a/tests/providers/gcp/services/compute/compute_subnet_flow_logs_enabled/compute_subnet_flow_logs_enabled_test.py b/tests/providers/gcp/services/compute/compute_subnet_flow_logs_enabled/compute_subnet_flow_logs_enabled_test.py
    index 3f51e02d93b..ca8a9b0a2bf 100644
    --- a/tests/providers/gcp/services/compute/compute_subnet_flow_logs_enabled/compute_subnet_flow_logs_enabled_test.py
    +++ b/tests/providers/gcp/services/compute/compute_subnet_flow_logs_enabled/compute_subnet_flow_logs_enabled_test.py
    @@ -1,7 +1,7 @@
     from re import search
     from unittest import mock
     
    -GCP_PROJECT_ID = "123456789012"
    +from tests.providers.gcp.lib.audit_info_utils import GCP_PROJECT_ID
     
     
     class Test_compute_subnet_flow_logs_enabled:
    diff --git a/tests/providers/gcp/services/dataproc/dataproc_encrypted_with_cmks_disabled/dataproc_encrypted_with_cmks_disabled_test.py b/tests/providers/gcp/services/dataproc/dataproc_encrypted_with_cmks_disabled/dataproc_encrypted_with_cmks_disabled_test.py
    index a0b949a0504..cf2190c36b4 100644
    --- a/tests/providers/gcp/services/dataproc/dataproc_encrypted_with_cmks_disabled/dataproc_encrypted_with_cmks_disabled_test.py
    +++ b/tests/providers/gcp/services/dataproc/dataproc_encrypted_with_cmks_disabled/dataproc_encrypted_with_cmks_disabled_test.py
    @@ -1,7 +1,7 @@
     from re import search
     from unittest import mock
     
    -GCP_PROJECT_ID = "123456789012"
    +from tests.providers.gcp.lib.audit_info_utils import GCP_PROJECT_ID
     
     
     class Test_dataproc_encrypted_with_cmks_disabled:
    diff --git a/tests/providers/gcp/services/dns/dns_dnssec_disabled/dns_dnssec_disabled_test.py b/tests/providers/gcp/services/dns/dns_dnssec_disabled/dns_dnssec_disabled_test.py
    index 9da614952ab..d0f59413e2c 100644
    --- a/tests/providers/gcp/services/dns/dns_dnssec_disabled/dns_dnssec_disabled_test.py
    +++ b/tests/providers/gcp/services/dns/dns_dnssec_disabled/dns_dnssec_disabled_test.py
    @@ -1,7 +1,7 @@
     from re import search
     from unittest import mock
     
    -GCP_PROJECT_ID = "123456789012"
    +from tests.providers.gcp.lib.audit_info_utils import GCP_PROJECT_ID
     
     
     class Test_dns_dnssec_disabled:
    diff --git a/tests/providers/gcp/services/dns/dns_rsasha1_in_use_to_key_sign_in_dnssec/dns_rsasha1_in_use_to_key_sign_in_dnssec_test.py b/tests/providers/gcp/services/dns/dns_rsasha1_in_use_to_key_sign_in_dnssec/dns_rsasha1_in_use_to_key_sign_in_dnssec_test.py
    index 704f5a68ac9..0ca8f39a0a5 100644
    --- a/tests/providers/gcp/services/dns/dns_rsasha1_in_use_to_key_sign_in_dnssec/dns_rsasha1_in_use_to_key_sign_in_dnssec_test.py
    +++ b/tests/providers/gcp/services/dns/dns_rsasha1_in_use_to_key_sign_in_dnssec/dns_rsasha1_in_use_to_key_sign_in_dnssec_test.py
    @@ -1,7 +1,7 @@
     from re import search
     from unittest import mock
     
    -GCP_PROJECT_ID = "123456789012"
    +from tests.providers.gcp.lib.audit_info_utils import GCP_PROJECT_ID
     
     
     class Test_dns_rsasha1_in_use_to_key_sign_in_dnssec:
    diff --git a/tests/providers/gcp/services/dns/dns_rsasha1_in_use_to_zone_sign_in_dnssec/dns_rsasha1_in_use_to_zone_sign_in_dnssec_test.py b/tests/providers/gcp/services/dns/dns_rsasha1_in_use_to_zone_sign_in_dnssec/dns_rsasha1_in_use_to_zone_sign_in_dnssec_test.py
    index e60e2866c19..638017b37ef 100644
    --- a/tests/providers/gcp/services/dns/dns_rsasha1_in_use_to_zone_sign_in_dnssec/dns_rsasha1_in_use_to_zone_sign_in_dnssec_test.py
    +++ b/tests/providers/gcp/services/dns/dns_rsasha1_in_use_to_zone_sign_in_dnssec/dns_rsasha1_in_use_to_zone_sign_in_dnssec_test.py
    @@ -1,7 +1,7 @@
     from re import search
     from unittest import mock
     
    -GCP_PROJECT_ID = "123456789012"
    +from tests.providers.gcp.lib.audit_info_utils import GCP_PROJECT_ID
     
     
     class Test_dns_rsasha1_in_use_to_zone_sign_in_dnssec:
    diff --git a/tests/providers/gcp/services/gcr/gcr_container_scanning_enabled/gcr_container_scanning_enabled_test.py b/tests/providers/gcp/services/gcr/gcr_container_scanning_enabled/gcr_container_scanning_enabled_test.py
    new file mode 100644
    index 00000000000..da28d67e23e
    --- /dev/null
    +++ b/tests/providers/gcp/services/gcr/gcr_container_scanning_enabled/gcr_container_scanning_enabled_test.py
    @@ -0,0 +1,68 @@
    +from unittest import mock
    +
    +from prowler.providers.gcp.services.serviceusage.serviceusage_service import Service
    +from tests.providers.gcp.lib.audit_info_utils import GCP_PROJECT_ID
    +
    +
    +class Test_gcr_container_scanning_enabled:
    +    def test_serviceusage_no_active_services(self):
    +        serviceusage_client = mock.MagicMock
    +        serviceusage_client.active_services = {}
    +        serviceusage_client.project_ids = [GCP_PROJECT_ID]
    +        serviceusage_client.region = "global"
    +
    +        with mock.patch(
    +            "prowler.providers.gcp.services.gcr.gcr_container_scanning_enabled.gcr_container_scanning_enabled.serviceusage_client",
    +            new=serviceusage_client,
    +        ):
    +            from prowler.providers.gcp.services.gcr.gcr_container_scanning_enabled.gcr_container_scanning_enabled import (
    +                gcr_container_scanning_enabled,
    +            )
    +
    +            check = gcr_container_scanning_enabled()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "FAIL"
    +            assert (
    +                result[0].status_extended
    +                == f"GCR Container Scanning is not enabled in project {GCP_PROJECT_ID}."
    +            )
    +            assert result[0].resource_id == "containerscanning.googleapis.com"
    +            assert result[0].project_id == GCP_PROJECT_ID
    +            assert result[0].resource_name == "GCR Container Scanning"
    +            assert result[0].location == serviceusage_client.region
    +
    +    def test_serviceusage_active_cloudasset(self):
    +        serviceusage_client = mock.MagicMock
    +        serviceusage_client.active_services = {
    +            GCP_PROJECT_ID: [
    +                Service(
    +                    name="containerscanning.googleapis.com",
    +                    title="GCR Container Scanning",
    +                    project_id=GCP_PROJECT_ID,
    +                )
    +            ]
    +        }
    +        serviceusage_client.project_ids = [GCP_PROJECT_ID]
    +        serviceusage_client.region = "global"
    +
    +        with mock.patch(
    +            "prowler.providers.gcp.services.gcr.gcr_container_scanning_enabled.gcr_container_scanning_enabled.serviceusage_client",
    +            new=serviceusage_client,
    +        ):
    +            from prowler.providers.gcp.services.gcr.gcr_container_scanning_enabled.gcr_container_scanning_enabled import (
    +                gcr_container_scanning_enabled,
    +            )
    +
    +            check = gcr_container_scanning_enabled()
    +            result = check.execute()
    +            assert len(result) == 1
    +            assert result[0].status == "PASS"
    +            assert (
    +                result[0].status_extended
    +                == f"GCR Container Scanning is enabled in project {GCP_PROJECT_ID}."
    +            )
    +            assert result[0].resource_id == "containerscanning.googleapis.com"
    +            assert result[0].project_id == GCP_PROJECT_ID
    +            assert result[0].resource_name == "GCR Container Scanning"
    +            assert result[0].location == serviceusage_client.region
    diff --git a/tests/providers/gcp/services/gke/gke_cluster_no_default_service_account/gke_cluster_no_default_service_account_test.py b/tests/providers/gcp/services/gke/gke_cluster_no_default_service_account/gke_cluster_no_default_service_account_test.py
    new file mode 100644
    index 00000000000..68f1c68f589
    --- /dev/null
    +++ b/tests/providers/gcp/services/gke/gke_cluster_no_default_service_account/gke_cluster_no_default_service_account_test.py
    @@ -0,0 +1,196 @@
    +from unittest import mock
    +
    +from prowler.providers.gcp.services.gke.gke_service import Cluster, NodePool
    +from tests.providers.gcp.lib.audit_info_utils import GCP_PROJECT_ID
    +
    +
    +class Test_gke_cluster_no_default_service_account:
    +    def test_gke_no_clusters(self):
    +        gke_client = mock.MagicMock
    +        gke_client.clusters = {}
    +
    +        with mock.patch(
    +            "prowler.providers.gcp.services.gke.gke_cluster_no_default_service_account.gke_cluster_no_default_service_account.gke_client",
    +            new=gke_client,
    +        ):
    +            from prowler.providers.gcp.services.gke.gke_cluster_no_default_service_account.gke_cluster_no_default_service_account import (
    +                gke_cluster_no_default_service_account,
    +            )
    +
    +            check = gke_cluster_no_default_service_account()
    +            result = check.execute()
    +            assert len(result) == 0
    +
    +    def test_one_cluster_without_node_pool(self):
    +
    +        clusters = {
    +            "123": Cluster(
    +                name="test",
    +                id="123",
    +                location="eu-west-1",
    +                service_account="default",
    +                node_pools=[],
    +                project_id=GCP_PROJECT_ID,
    +            )
    +        }
    +
    +        gke_client = mock.MagicMock
    +        gke_client.project_ids = [GCP_PROJECT_ID]
    +        gke_client.clusters = clusters
    +        gke_client.region = "global"
    +
    +        with mock.patch(
    +            "prowler.providers.gcp.services.gke.gke_cluster_no_default_service_account.gke_cluster_no_default_service_account.gke_client",
    +            new=gke_client,
    +        ):
    +            from prowler.providers.gcp.services.gke.gke_cluster_no_default_service_account.gke_cluster_no_default_service_account import (
    +                gke_cluster_no_default_service_account,
    +            )
    +
    +            check = gke_cluster_no_default_service_account()
    +            result = check.execute()
    +
    +            assert len(result) == 1
    +            assert result[0].status == "FAIL"
    +            assert (
    +                result[0].status_extended
    +                == f"GKE cluster {clusters['123'].name} is using the Compute Engine default service account."
    +            )
    +            assert result[0].project_id == clusters["123"].project_id
    +            assert result[0].resource_id == clusters["123"].id
    +            assert result[0].resource_name == clusters["123"].name
    +            assert result[0].location == clusters["123"].location
    +
    +    def test_one_cluster_without_node_pool_without_default_sa(self):
    +
    +        clusters = {
    +            "123": Cluster(
    +                name="test",
    +                id="123",
    +                location="eu-west-1",
    +                service_account="1231231231",
    +                node_pools=[],
    +                project_id=GCP_PROJECT_ID,
    +            )
    +        }
    +
    +        gke_client = mock.MagicMock
    +        gke_client.project_ids = [GCP_PROJECT_ID]
    +        gke_client.clusters = clusters
    +        gke_client.region = "global"
    +
    +        with mock.patch(
    +            "prowler.providers.gcp.services.gke.gke_cluster_no_default_service_account.gke_cluster_no_default_service_account.gke_client",
    +            new=gke_client,
    +        ):
    +            from prowler.providers.gcp.services.gke.gke_cluster_no_default_service_account.gke_cluster_no_default_service_account import (
    +                gke_cluster_no_default_service_account,
    +            )
    +
    +            check = gke_cluster_no_default_service_account()
    +            result = check.execute()
    +
    +            assert len(result) == 1
    +            assert result[0].status == "PASS"
    +            assert (
    +                result[0].status_extended
    +                == f"GKE cluster {clusters['123'].name} is not using the Compute Engine default service account."
    +            )
    +            assert result[0].project_id == clusters["123"].project_id
    +            assert result[0].resource_id == clusters["123"].id
    +            assert result[0].resource_name == clusters["123"].name
    +            assert result[0].location == clusters["123"].location
    +
    +    def test_one_cluster_with_node_pool_with_default_sa(self):
    +
    +        clusters = {
    +            "123": Cluster(
    +                name="test",
    +                id="123",
    +                location="eu-west-1",
    +                service_account="default",
    +                node_pools=[
    +                    NodePool(
    +                        name="test",
    +                        locations=["eu-west-1"],
    +                        service_account="default",
    +                        project_id=GCP_PROJECT_ID,
    +                    )
    +                ],
    +                project_id=GCP_PROJECT_ID,
    +            )
    +        }
    +
    +        gke_client = mock.MagicMock
    +        gke_client.project_ids = [GCP_PROJECT_ID]
    +        gke_client.clusters = clusters
    +        gke_client.region = "global"
    +
    +        with mock.patch(
    +            "prowler.providers.gcp.services.gke.gke_cluster_no_default_service_account.gke_cluster_no_default_service_account.gke_client",
    +            new=gke_client,
    +        ):
    +            from prowler.providers.gcp.services.gke.gke_cluster_no_default_service_account.gke_cluster_no_default_service_account import (
    +                gke_cluster_no_default_service_account,
    +            )
    +
    +            check = gke_cluster_no_default_service_account()
    +            result = check.execute()
    +
    +            assert len(result) == 1
    +            assert result[0].status == "FAIL"
    +            assert (
    +                result[0].status_extended
    +                == f"GKE cluster {clusters['123'].name} is using the Compute Engine default service account."
    +            )
    +            assert result[0].project_id == clusters["123"].project_id
    +            assert result[0].resource_id == clusters["123"].id
    +            assert result[0].resource_name == clusters["123"].name
    +            assert result[0].location == clusters["123"].location
    +
    +    def test_one_cluster_with_node_pool_with_non_default_sa(self):
    +
    +        clusters = {
    +            "123": Cluster(
    +                name="test",
    +                id="123",
    +                location="eu-west-1",
    +                service_account="default",
    +                node_pools=[
    +                    NodePool(
    +                        name="test",
    +                        locations=["eu-west-1"],
    +                        service_account="123123123",
    +                        project_id=GCP_PROJECT_ID,
    +                    )
    +                ],
    +                project_id=GCP_PROJECT_ID,
    +            )
    +        }
    +
    +        gke_client = mock.MagicMock
    +        gke_client.project_ids = [GCP_PROJECT_ID]
    +        gke_client.clusters = clusters
    +        gke_client.region = "global"
    +
    +        with mock.patch(
    +            "prowler.providers.gcp.services.gke.gke_cluster_no_default_service_account.gke_cluster_no_default_service_account.gke_client",
    +            new=gke_client,
    +        ):
    +            from prowler.providers.gcp.services.gke.gke_cluster_no_default_service_account.gke_cluster_no_default_service_account import (
    +                gke_cluster_no_default_service_account,
    +            )
    +
    +            check = gke_cluster_no_default_service_account()
    +            result = check.execute()
    +
    +            assert len(result) == 1
    +            assert result[0].status == "PASS"
    +            assert (
    +                result[0].status_extended
    +                == f"GKE cluster {clusters['123'].name} is not using the Compute Engine default service account."
    +            )
    +            assert result[0].project_id == clusters["123"].project_id
    +            assert result[0].resource_id == clusters["123"].id
    +            assert result[0].resource_name == clusters["123"].name
    +            assert result[0].location == clusters["123"].location
    diff --git a/tests/providers/gcp/services/iam/iam_account_access_approval_enabled/iam_account_access_approval_enabled_test.py b/tests/providers/gcp/services/iam/iam_account_access_approval_enabled/iam_account_access_approval_enabled_test.py
    index 1aa512922fc..1d028322264 100644
    --- a/tests/providers/gcp/services/iam/iam_account_access_approval_enabled/iam_account_access_approval_enabled_test.py
    +++ b/tests/providers/gcp/services/iam/iam_account_access_approval_enabled/iam_account_access_approval_enabled_test.py
    @@ -2,8 +2,7 @@
     from unittest import mock
     
     from prowler.providers.gcp.services.iam.iam_service import Setting
    -
    -GCP_PROJECT_ID = "123456789012"
    +from tests.providers.gcp.lib.audit_info_utils import GCP_PROJECT_ID
     
     
     class Test_iam_account_access_approval_enabled:
    diff --git a/tests/providers/gcp/services/iam/iam_audit_logs_enabled/iam_audit_logs_enabled_test.py b/tests/providers/gcp/services/iam/iam_audit_logs_enabled/iam_audit_logs_enabled_test.py
    index 1b01c0ee351..446acebd3c9 100644
    --- a/tests/providers/gcp/services/iam/iam_audit_logs_enabled/iam_audit_logs_enabled_test.py
    +++ b/tests/providers/gcp/services/iam/iam_audit_logs_enabled/iam_audit_logs_enabled_test.py
    @@ -1,7 +1,7 @@
     from re import search
     from unittest import mock
     
    -GCP_PROJECT_ID = "123456789012"
    +from tests.providers.gcp.lib.audit_info_utils import GCP_PROJECT_ID
     
     
     class Test_iam_audit_logs_enabled:
    diff --git a/tests/providers/gcp/services/serviceusage/serviceusage_cloudasset_inventory_enabled/serviceusage_cloudasset_inventory_enabled_test.py b/tests/providers/gcp/services/iam/iam_cloud_asset_inventory_enabled/iam_cloud_asset_inventory_enabled_test.py
    similarity index 59%
    rename from tests/providers/gcp/services/serviceusage/serviceusage_cloudasset_inventory_enabled/serviceusage_cloudasset_inventory_enabled_test.py
    rename to tests/providers/gcp/services/iam/iam_cloud_asset_inventory_enabled/iam_cloud_asset_inventory_enabled_test.py
    index 026e9f83005..f4876f3d11d 100644
    --- a/tests/providers/gcp/services/serviceusage/serviceusage_cloudasset_inventory_enabled/serviceusage_cloudasset_inventory_enabled_test.py
    +++ b/tests/providers/gcp/services/iam/iam_cloud_asset_inventory_enabled/iam_cloud_asset_inventory_enabled_test.py
    @@ -1,4 +1,3 @@
    -from re import search
     from unittest import mock
     
     from prowler.providers.gcp.services.serviceusage.serviceusage_service import Service
    @@ -6,7 +5,7 @@
     GCP_PROJECT_ID = "123456789012"
     
     
    -class Test_serviceusage_cloudasset_inventory_enabled:
    +class Test_iam_cloud_asset_inventory_enabled:
         def test_serviceusage_no_active_services(self):
             serviceusage_client = mock.MagicMock
             serviceusage_client.active_services = {}
    @@ -14,20 +13,20 @@ def test_serviceusage_no_active_services(self):
             serviceusage_client.region = "global"
     
             with mock.patch(
    -            "prowler.providers.gcp.services.serviceusage.serviceusage_cloudasset_inventory_enabled.serviceusage_cloudasset_inventory_enabled.serviceusage_client",
    +            "prowler.providers.gcp.services.iam.iam_cloud_asset_inventory_enabled.iam_cloud_asset_inventory_enabled.serviceusage_client",
                 new=serviceusage_client,
             ):
    -            from prowler.providers.gcp.services.serviceusage.serviceusage_cloudasset_inventory_enabled.serviceusage_cloudasset_inventory_enabled import (
    -                serviceusage_cloudasset_inventory_enabled,
    +            from prowler.providers.gcp.services.iam.iam_cloud_asset_inventory_enabled.iam_cloud_asset_inventory_enabled import (
    +                iam_cloud_asset_inventory_enabled,
                 )
     
    -            check = serviceusage_cloudasset_inventory_enabled()
    +            check = iam_cloud_asset_inventory_enabled()
                 result = check.execute()
                 assert len(result) == 1
                 assert result[0].status == "FAIL"
    -            assert search(
    -                f"Cloud Asset Inventory is not enabled in project {GCP_PROJECT_ID}",
    -                result[0].status_extended,
    +            assert (
    +                result[0].status_extended
    +                == f"Cloud Asset Inventory is not enabled in project {GCP_PROJECT_ID}."
                 )
                 assert result[0].resource_id == "cloudasset.googleapis.com"
                 assert result[0].project_id == GCP_PROJECT_ID
    @@ -49,20 +48,20 @@ def test_serviceusage_active_cloudasset(self):
             serviceusage_client.region = "global"
     
             with mock.patch(
    -            "prowler.providers.gcp.services.serviceusage.serviceusage_cloudasset_inventory_enabled.serviceusage_cloudasset_inventory_enabled.serviceusage_client",
    +            "prowler.providers.gcp.services.iam.iam_cloud_asset_inventory_enabled.iam_cloud_asset_inventory_enabled.serviceusage_client",
                 new=serviceusage_client,
             ):
    -            from prowler.providers.gcp.services.serviceusage.serviceusage_cloudasset_inventory_enabled.serviceusage_cloudasset_inventory_enabled import (
    -                serviceusage_cloudasset_inventory_enabled,
    +            from prowler.providers.gcp.services.iam.iam_cloud_asset_inventory_enabled.iam_cloud_asset_inventory_enabled import (
    +                iam_cloud_asset_inventory_enabled,
                 )
     
    -            check = serviceusage_cloudasset_inventory_enabled()
    +            check = iam_cloud_asset_inventory_enabled()
                 result = check.execute()
                 assert len(result) == 1
                 assert result[0].status == "PASS"
    -            assert search(
    -                f"Cloud Asset Inventory is enabled in project {GCP_PROJECT_ID}",
    -                result[0].status_extended,
    +            assert (
    +                result[0].status_extended
    +                == f"Cloud Asset Inventory is enabled in project {GCP_PROJECT_ID}."
                 )
                 assert result[0].resource_id == "cloudasset.googleapis.com"
                 assert result[0].project_id == GCP_PROJECT_ID
    diff --git a/tests/providers/gcp/services/iam/iam_no_service_roles_at_project_level/iam_no_service_roles_at_project_level_test.py b/tests/providers/gcp/services/iam/iam_no_service_roles_at_project_level/iam_no_service_roles_at_project_level_test.py
    index 21518e6ef36..ec9cb716637 100644
    --- a/tests/providers/gcp/services/iam/iam_no_service_roles_at_project_level/iam_no_service_roles_at_project_level_test.py
    +++ b/tests/providers/gcp/services/iam/iam_no_service_roles_at_project_level/iam_no_service_roles_at_project_level_test.py
    @@ -1,7 +1,7 @@
     from re import search
     from unittest import mock
     
    -GCP_PROJECT_ID = "123456789012"
    +from tests.providers.gcp.lib.audit_info_utils import GCP_PROJECT_ID
     
     
     class Test_iam_no_service_roles_at_project_level:
    diff --git a/tests/providers/gcp/services/iam/iam_organization_essential_contacts_configured/iam_organization_essential_contacts_configured_test.py b/tests/providers/gcp/services/iam/iam_organization_essential_contacts_configured/iam_organization_essential_contacts_configured_test.py
    index f42856b752d..e7c8377db53 100644
    --- a/tests/providers/gcp/services/iam/iam_organization_essential_contacts_configured/iam_organization_essential_contacts_configured_test.py
    +++ b/tests/providers/gcp/services/iam/iam_organization_essential_contacts_configured/iam_organization_essential_contacts_configured_test.py
    @@ -3,8 +3,6 @@
     
     from prowler.providers.gcp.services.iam.iam_service import Organization
     
    -GCP_PROJECT_ID = "123456789012"
    -
     
     class Test_iam_organization_essential_contacts_configured:
         def test_iam_no_organizations(self):
    diff --git a/tests/providers/gcp/services/iam/iam_role_kms_enforce_separation_of_duties/iam_role_kms_enforce_separation_of_duties_test.py b/tests/providers/gcp/services/iam/iam_role_kms_enforce_separation_of_duties/iam_role_kms_enforce_separation_of_duties_test.py
    index 74c12ff0aa0..60551a14833 100644
    --- a/tests/providers/gcp/services/iam/iam_role_kms_enforce_separation_of_duties/iam_role_kms_enforce_separation_of_duties_test.py
    +++ b/tests/providers/gcp/services/iam/iam_role_kms_enforce_separation_of_duties/iam_role_kms_enforce_separation_of_duties_test.py
    @@ -1,7 +1,7 @@
     from re import search
     from unittest import mock
     
    -GCP_PROJECT_ID = "123456789012"
    +from tests.providers.gcp.lib.audit_info_utils import GCP_PROJECT_ID
     
     
     class Test_iam_role_kms_enforce_separation_of_duties:
    diff --git a/tests/providers/gcp/services/iam/iam_role_sa_enforce_separation_of_duties/iam_role_sa_enforce_separation_of_duties_test.py b/tests/providers/gcp/services/iam/iam_role_sa_enforce_separation_of_duties/iam_role_sa_enforce_separation_of_duties_test.py
    index 78e9cc46ef8..29c6eadce75 100644
    --- a/tests/providers/gcp/services/iam/iam_role_sa_enforce_separation_of_duties/iam_role_sa_enforce_separation_of_duties_test.py
    +++ b/tests/providers/gcp/services/iam/iam_role_sa_enforce_separation_of_duties/iam_role_sa_enforce_separation_of_duties_test.py
    @@ -1,7 +1,7 @@
     from re import search
     from unittest import mock
     
    -GCP_PROJECT_ID = "123456789012"
    +from tests.providers.gcp.lib.audit_info_utils import GCP_PROJECT_ID
     
     
     class Test_iam_role_sa_enforce_separation_of_duties:
    diff --git a/tests/providers/kubernetes/kubernetes_provider_test.py b/tests/providers/kubernetes/kubernetes_provider_test.py
    index 40f981e187a..39caeaed248 100644
    --- a/tests/providers/kubernetes/kubernetes_provider_test.py
    +++ b/tests/providers/kubernetes/kubernetes_provider_test.py
    @@ -15,10 +15,6 @@ class TestKubernetesProvider:
         def test_setup_session(
             self,
             mock_list_kube_config_contexts,
    -        mock_load_incluster_config,
    -        mock_load_kube_config,
    -        mock_api_client,
    -        mock_rbac_api,
         ):
             # Mocking the return value of list_kube_config_contexts
             mock_list_kube_config_contexts.return_value = (
    @@ -52,8 +48,6 @@ def test_setup_session(
         @patch("kubernetes.config.load_kube_config")
         def test_get_context_user_roles(
             self,
    -        mock_load_kube_config,
    -        mock_load_incluster_config,
             mock_list_kube_config_contexts,
             mock_rbac_api,
         ):
    @@ -97,12 +91,7 @@ def test_get_context_user_roles(
         @patch("sys.stdout", new_callable=MagicMock)
         def test_print_credentials(
             self,
    -        mock_stdout,
             mock_list_kube_config_contexts,
    -        mock_load_incluster_config,
    -        mock_load_kube_config,
    -        mock_api_client,
    -        mock_rbac_api,
         ):
             mock_list_kube_config_contexts.return_value = (
                 [
    @@ -143,8 +132,6 @@ def test_print_credentials(
         @patch("kubernetes.config.load_kube_config")
         def test_search_and_save_roles(
             self,
    -        mock_load_kube_config,
    -        mock_load_incluster_config,
             mock_list_kube_config_contexts,
             mock_rbac_api,
         ):
    diff --git a/util/update_aws_services_regions.py b/util/update_aws_services_regions.py
    index a0506eca098..7e3526531e9 100644
    --- a/util/update_aws_services_regions.py
    +++ b/util/update_aws_services_regions.py
    @@ -48,6 +48,10 @@
     logging.info("Updating subservices and the services not present in the original matrix")
     # macie2 --> macie
     regions_by_service["services"]["macie2"] = regions_by_service["services"]["macie"]
    +# cognito --> cognito-idp
    +regions_by_service["services"]["cognito"] = regions_by_service["services"][
    +    "cognito-idp"
    +]
     # opensearch --> es
     regions_by_service["services"]["opensearch"] = regions_by_service["services"]["es"]
     # elbv2 --> elb
    

    YaO z4V3IoS8ldDd}{P7!HZ1%AsJ*@NRLck^Me?l(1j`+*yE5z8IP;a0LM!vA``rg4X(|=`(Y*vYFF@q_iC2lM1>eNzLU`1@@KPNqbd341Wy6-vlnzw)SZZ$7px=|=D`hJKvWhf-N6i4kl*%?M2Yz+fF^UXqZDVrM? z`3z`__D%Pom+ao1p{dfBg9ASBAMvAIA0ne?5G8F=Vak9YD=~N3m1jE+@_}j-x)fUn zeS5=*U3JJeFIm3hrf$PIvf6pL3SkT8rsstKs&Kx!4w`yOM8#6UgO2j%d_B5ztdj&;QrpOp3nI7`9YA4TFQjSZtaI>s`L{L zuJ{{=5(-+g`&FRr_T0S^f3a@FeK!Nu!7)8`Lol#71}#A`88+heYm!pX>9tF~8o%j7 z6k_6i1T!oB7e)83y6>)2pgYa4i_e`AgQIEL{^~O9k?w_mvpXW}#B)p_L_@i<+4N## z7YoGm#1|Xeh=}vc0|}5dQ2a=8**PFnM;^jFzS5L?uBW|G9(GvDn+H}+k|HgukAVsSvSmv%w*!5!a(<$<_ zTo67_EziL`?{Iz%Xj~od_^kT2cco_I&IOjQS9)V)UE0@dh&~a9-vR5L5e`7hDZfGQ zV0;9xmx}lwsk-O(L?J6-lrp}59{iX0mnGmFdSL!yTnO(^k{# zPKfp>KL;ha@aqW3+heE#u}C#mOqS)j4_1CiPFc-3emf@R{%lk)JYJyjNbg;U>tx_+ z@!%F0YBJq&p9<-(u$d4(5 zeo)I9F74Xcs*kS>2X)R`8`W!whGJLyntwKi#;dNXJ;a)~0P3u2#DiO7Y3I#9U^Tt< zw_(`on$Fx-=-f;uwN<+0_+kPb9gsQLRajnfS{geK#lphbC zdbBZ3+1TYrRwOH?-1o{N#IX^0e69j%N0bBPD+8oA4j-<4ASh=>*A*6X@(A@_I{VWF zin+ryo*`LG5l>w0G-j_KMhw0xB0j?Nl^}Sv-jS8ZKA5`)Ro#)qt@x5{CJ1Nx8)8hcqZtdQqMC^Sqnq4-{b}f^Th+ywUd%AGLr! zPC2I$8S5as{sl`ggU}6)COUB{=8UdXl{y6=sWc;FbU<0^($F`e|VBq zGTef=+;jPVO-HJWiE7x(#U5FT0__w3_F#c-gNG=kJb5IQ8?G2XjP;h)Jv;eoZ;1Nb z9r~Bf)7zx(wM0ePg9Z1nVA)W^Ya{xz=)=r4rM`2HY#l<_s3uBo5au}dN_EC)RZU?c zEWGA2Ff#Mq(zm>Z0(3R=Tq#4i-ycam+kckS(=4fZ#4>5^EHZcS?l@XZj5TzBVAHjV z)eud74g~b|8s&MgIlh|FKGVyqczKN*@=A}g0F6J@aaYD_rlO+IXeGCl6IhN2UbUW; zQ!K>-GZ2+(>(os&L$^+E=gGK%{hhWb7bJLL@BGmH{BwU3G$mpL)L^u4%xBBDxQzwn0 zI9<3HTj4`i?P26IOjF!p5>Fc4jxnEiTDo*g*4!uM!q@w#Y#~ZJE*4Q3ec#_doJfw5 zGputwVv49pA~<^tz_IajIp2Bw4a@H8g~o+`MSdg`%}_u}%%|l!S4hc}usnXc%0+Wn zf@iS#ionOK4&llnWb zxyK$KH+?%;f)6bDIY^LhqylqDWsv;^(G!f8+QNv&_zbpE>oi+G?Pum4(8Yvww2_t5 zJ$+VXQY^5Q-1Ta~`PKE>!Vj3bq|%j!>{lhkkf`9H2cOl0n2X%PcjFs1`;E(q4mqtJ z3O!J!ge9l5#8HMl_ZE1nV`dPg#@@PMK(pi7^oju&j;U4oEeOG()94}MVs30h-Jp2a zeVoG|njod^g}9cx5X#TP6y%Kq=x++_hVC8G-DADJ{eeWTrzeWqWk*tmBdD2F^bLFi zj(dmp-6fIjNbJNeOqv3N(3FSIzVw+(X&)m{kNM}6-ZDoeQ*{qq)PU_@O<-wL@TH)0 z)2_{2T{6XW{bYCju4#IP#Jy3ViY&KlJeY0PXus|eXZ9QD0W%B8%i>zOnVJL;8oYy5 zRbDr3uUuz7M7Sb;k1TWA9XvcgNj&`8Y_!kAg?Vo9AIyoPE|rk!}u!p!+68DPLHsaIHQ3o7QttuT=YKg4orC&0Q&-lfmSA!xr+h zL>&EaEQ0?1cS?9gxQorVP|C%=FED+_RTjB}@)EqLaxq^*R;*p9G3>i=v;I2x=db?z zooW)C^YBHhLW)2ZDUZ$Y6(!|xTdFsK9+9#|C#Pk@s(4_Fo^z3Ivpix~czB~mVWeU_ zROPY4Q*{{5k<4bg+2R!isi0kIv0lAowGAx&bbm<+U{}v1dRJO=TQ5jF8CwdN%6(Rm zzq48z9|HuCUadD;&$XTX{Tb+kdI)zq`}v4Hj44ApMW9vz&CK-pf-!99=H&a#hnp6K zqtksOyK9jCq#5_jJ6W{@1{dXr)!s*Mb6b}as6E}@?yXtDD1m7Wlj7nJhsO-|M<+=% zG{Wx5hS%W~H~FOsbZbX_tj$|$qn1Pi{*pZ2r#?%apEC!-dHhOR3uIb*`VYg3TimCw zf)P=Bo-gas56D6=koRrt;0_1ge!}icbs+C9eR~Yb;1WGtJHRfYahP7`h}i#?i1p^i z`1_-m^@!PtB0B=l&t|dQCzkzd+$DHd;{_8ET=5(x-yXmE;-dQmvELb*c(i@`(0j`P`5(3$2gK)2`9^bY$|` ze##xzW}9q<*umX7<4nXMoK^8x;clIm&9O85(oz4wxmi`gj<88k4A6Y?n-c>$j!Ws+ zej;K!E{%$xG2L5(^ER7h%f~SE4iKYtO-wrzvOaK^SaLV^$6jxspgp@jI9gY+Yr3q5 z3h!2KJ@aeEHEa(Qc@@?4t}akQH6G>Kg%WYBgXD-?Q|JkM#JZpU`>WEP+14fy#rO>S ze1^yf!1X5BEx!~Ta9{+bpUy2jum0eSJ!hfvpls%s5mY`-o)$3bMNj1UdIYU*orji( z6dUsOuVXmUgGC>MmaXJ^=k-t&n?Rv}SlFvNuzPD3c2URe!sUsYe!Eg(l%?JU$^W4U z!yggw9SjsMP}G{e&x#_lbDGZi*TLK1_#a*<{NNm@=O;TaDu@dbli|W6|Hk{4*yfez zHBohwcg$z1$d7dJmt9GFqgjYK{a=_3dC6&TiUd^qgtAQ~`V`;26zjHvl?G1+4$k~2 zFuPcCm8!zmnn<=3&bOou7A~sqj=vkpx2s=K+eu5N1@E^inCF)aCChgmFBlxbpn^O^ z(L9P{RPeH6Q7iBe1+C`yf(~0>ef$wDZUE2{^Sy}0rD){s#uJI9AO}>Rn-{lbIw{D1 zRHjob31=I`ML|+901n(^wVP&oJkj)TMPGPstcPmv=C?gl!{$ zbr1a;%?bmSM?iS@nf=28>SJciiNkW zh@oJBrzCZ|0I~=CXA9sKZO9?A&ky`SCS)rNWzkN8)=xi%?CJ?<`V52sP{~ga8A+gZ zX*Va)X^t~1*74R$S{Qo zdu>4^!YP=|2k+A%A+?CU6hc1qjtHN3rK5cU5bYFT>_^DrAytpq8dr!Kjb+i2W^FwB zLJ>d?imrsQeWQL5)Fm#arpa9o9e&(lY@2Nzcp&v2LG<_{)3Ht-=b{3j5^pQH9)YC!+=Pl)vG^BDzHg#RSc`D3F0!&v#par5WT z7>{ok)^*YUsFHi{1h4bV=N~qee|`F3EBbOft3Ui-7)*bD0Z6aFLg-%if3p4kcXj&j ze(-q=D&2y*;2E7!J^E{UK@-3|?f8Q+<$S3~^7nHNnhefq5o+ZX{-??MuU~-A%Libx zrLg?}G5kY&LCM1UMyA|JCo40S;-~)2<#jbaXkK(o%K^W+j!si z^tGMEpJOyqW)*`6i?HHiN{JS|KsU`vm_IdMK5QiEtZY2J3jq@Q4 zxr61KUEPbNG>pZ)!>fDyBr!O_ctw&UI{tfP@4v<(%JV>%+m}rbFD{ znF2j|YPHV4k89ZHlIi~$E_?~WcR5FpE_fBJXdF{v7=h(y!mvj*hvn<@_sshq_^{)sxligA|!RgJ79YEpK% zN#u!sM0w}CKY>nhl-m!7a!mj0koxCq!BGF>!`lDU^9@F6G}3{Qp`P<8Ieo;eUH#ia!C@DUmhuQvdc3 zP`O}$4-qi>{QT}e-_F0>Y@o~S-97(z!yqaKu*cFfgrc1z-Im{5#K7=fAeK$)@eck& z>llzun#FU#MlKJ?1c4lMds|Zu=kU~K32z`qAjxjj8N%TyCiT}Hg3DZxpxXm^-7pCA zQT#Pa4M$`_IFmu!a`wLl=gV)maI_Z&*d+d~Z9Py1>?c7onLbT_>|T3dFQ#|td|-9} zqbV_Hq1iZ-&>vZsyuUg6<1Y0Do-4sbF)VGDMemy^D%LP)e$MAD(x_PEUbJomr9c`=Fw51Sp(irYY*fpi z_!j0|8ggs@NV8Iea{yzlDHp?b9z3t7D5u27Kz~{3%j3`MfIiIKgEyJmuT?g>tB?{X z32X|#9n-!tAiWHq2s86)$4(QTpF6GX!+OvjOgNMye*-unM;E)zw`31bhH%lpwz&oW z+r{DNKYl(gk*I&L5U9ocF9hO%EKMe2zHiOpjIeeAsF$vTW`Pe9q`rrQO_^BJH^rTy zvNnxZ1Wy#chG>3LK56?IO(SuT*1_r7$wb0yp3B?Z4M8Cn_JZcC7Cf0Y6GJR_;V2#b z9%;7|$AY50pP(K>rK4Wgwi$^Kxk@&^A7uuNS1KIf*0){L*5ZkbW;nf3bU@r~N(VpX z@jaDJmZhGkoUu|B4Yz9nV?VF@h9vb2al3qtYA2T|4|!p?BVJIa{=%Z)RH&~ZPz6+c zvw-fj5=c7pY}28DK}0RtCM@V7o$5Ise64V(e*DF>U*LTw=V;YX5})k*39B^F5iy!K zY9?^daO0)Npi=iZhCvPbGfQqWa;>ig0n^U_VCLuqeDL!Hw2;=M_n~UD9=XNOnsi3H zh-Uc5tyDWe=H=nExu!Wkg9p&$$;9-kre8{RT84#91=dOpv68J?748F5WpM*q*g#^n zIZf;C=dSfjKdcXjYq(4E$xr1hWMUYefRay;%vXBJ;>ME%{koD@?`=AQ)V?}C8BHNv zAI$;z_!^$WEJr3GCX<`?<+$>6lM$Wg#enP5<|ky~%!5_;RH4oJ4m<53E^0iOgL=`M zOn2SQspaP*W~_B9yam;WkBl0{KNnis$R=)HWd*608lpyeZ`EM7AI>uET|JI*8ps~s z!ITJoc+yucz_A9Ms+EZ0_3mf(p3e!*r15I9T_yJ^6f3-|)NqF6r(>_|Ll9W7;{EXNOig=lxdixFSiV zQFCh)0<_oaLeJH_)R(;cO@rfsZfgOfp3P6|$r-(M5=X#XixU{X)2QVnArMbdQsoMxaWiz8gw*R?#sZC={bkiFF7^4yv7S}<8 z{*N+wBcx!hbHt`qh?D1KA8R-$){2OJfasZkq(38HO$cwQ>0*Z_=DMUoZzX^<_Smzw z+-=~E1q|pKSImCBD#0Fz6YAg)Y(UYw?*&}@TH{7pSi^7p9Sa)txP%lPeoSg`LsA7+ zWv82OK1wNv57jGes;9cO^9i1=%^V&n)dq!?g%finQ>YgSBUZJO0ZTDh1s z3pt3oEZk$&cUf!W6vZ&M0mt3hjdw%;K*{`34^Sb^R%6L<`8Bm*T^1|k9s$(dldv7i41o`66q1U4D2lU|oZ)PO_ zW6xcXAVBfFI_AsQDo9y3xV~QbEG1BUZG|07FffWO=s=WdXDMRPycUxs5&SE=^UYS{ zCt_HgXQIpMdtyz4AELen*pbW_$`WW>e5PGha&?h9U}?4(E0mqEnJpnRb(G)JnF2~f zCVJ(c)W6S+0I8DW#{@AYQjwHiHCe@bL!SlEd2HTD<*DTSJe=MZaM}CV>kaIs`-Hu3 zGTjLmUo$80WXl`E$(8j zM}8XRwI227x{G+YA_-afTB)7#C4KzYw$A;d=dgU3PoOiu`gINW_rX5OUF$W?U@29nB)1>Xko6G@HH^ z>0hJvkJ={LZLan26b$}$&}xM)jpld{^T&%}^YIOp(xQJtKngAcaZ`Up(JACbtfBgA zXvC(wmUn^z9KM{+UN(#PA}6;Fzv~7kxqwTcOf1Wzii`rFSH=FG+qN-__@G?LyTW{g zSLPE~SbLlXs3n^g$QWDD3 z(M?UJ7|Gb;Wd`Gs>PDEJ3`VG@1QXiwa@FNwtZzHD%CLS|$sOHlm7 z))jn|V1VAFH~JxuHCZE@JN$fSNrKv1I+{K*5O+vSF(#kOu?3gZP=QRCJ7gjj2<(j9 z%GtQKy6p6Be&%Fg2GV+v`^KI;SdD;eoRNyyxspak!^sAGh;{hkUtH3wNo%@chmRU_ zK+e2eig1$ZvgHc>yuqFpL%CRr=h)@L@S+a`*$NF)@0lomWvR#xh`D!^`al>hDiubN zg^Z3n3ZJXzrJxL#!A8%=_~wvvGL~oL9!}lXJJWImA~ZY${s=ldvr6o3_f$KMBI@_CPPy_UyeQ&t9vW zIJNPON}#0)%b@d;H4s?d&SO|zfZjO>b4uG?08ybIoDY~U2k*m zO}!gm4?-u*sFV+(g61(H`(X0VR1qcUHpDjmcQKg1OF_0YMIjHrex8XdU4A+oSBigR z;j(%JbaOYlSeN8gAt+jQ8mJgd!gpEQlw$1<6+A#k)esCYZORT zqXw28u?8m)7s}Vp`P!p(E*yl)F>Wz7a{s8@#4~nnFka-$ z&03M=gvI6w1w>i|f{6E11>DaZ*;tlfmEZG~&w<|4^u`CvWm-3uNvEet?f7&GN`Qwi z&f<*)^+?wCX;L^d+L2vEc0bQoD|qpUS@{$9``x?WXPh8R14XsA{-O$Bk-lzC!7|Z6 zR|KEj*y+Wt0{tzAkb+TU*glM<>!hN;`yJj&oN z2qqZqdiY_*4x|1G=E80C!}8Oq&OiNvMgF1$@H?e3}FI7qaIGB+Z}C0gkoHM5Y1M0einpjn<=dv1-=D-O4x4X91G;1NS60 z|J65%&bxE?Bde8aF{4>>1!jwCv04~*Cz}qfzUb}+3qp2+ThtxqY#peCEayR|l*KTY z<@+F^<1UQ_0-Yy6fllo2#Ub20>2%Sf#el41?xd~RM)&af8>+ExSm@hJUv%8x1yB0K z%Wa;>F{sb;Y_=6nIjny+eR%@fH&g%($&nQ|Db^3?;)Fa+EFgS%fYN#dY<25RYduuz zg_`aD8Bc-;GeIk!Vh9ntKz@_Q>OHIJ3W;{WG+@e7NDZ5Gz$}*W{C^mG%eN@FsO|ew zKna0Cq@^V!rIB<%Qc}95k?sxw=}x5uq`MoG?(Q1tX6TN0<8|H7`{B7iJpKV5!!fh> zUTdA_`CEIl4g+n2edAenG!fORCawCnz;m^UH{j-4^ zM*tSr#`ng)7U>Aa%>v_xKDwqwl3~906UAfin7f1!R~&xQsPFQ5-h3}_{-z{&fw+Ur7vMV3Z@0|*K7y#3g`&~jd5S6 zQd7t_r^{AaHGB(KcGzfIou5X3#ws)P-5vi78%auJbF1HKoMgLcz{axs5+?1mwY>z7J=i<>xPLJJJ+&Iwi zluFDVJZ&o^5ECe*O?QL>?HhOL`O~xHw@ejo#~fOA^^#6y?}pUO9V{*=%G!bWV7jA)Mgr$Z z4*Z`({*E99y(AWo;O;I8?Je@irtz{Go{Aq#Z+H$p_X`hvOtyDh9AtRHS) z|6d3G|5rB*?hZ$WCLBbqI#(r)h1vq@#7iD?!~0IfsYcNg_*4?`)6?k9R>7q}SB!lv z%7QF*2b}t`RAw?!gI?!`-^Ye{Lo48o8+iUcUa^$1vYCgJ-8Q$Z3d zMZo3jb1KPK%gQBcANF{^7P{_5ZNU&Y#aEO{-r{e3+4l1ZJDBN1F3Di@Wp`F-f^@T2 zSQNxF<{C%rlSt^836&j@s^Ho%D8H@ss!1(QEl3FX0cdyfai&#Ye`jiUm$KP+zr&<7 z5iZ|LpXD0tezIyVzHcGNfBzN#pVZM#_QcN|`FQm7vO?KN=ur&$J0onXgiD-LB^p%i z`u^s{m=im}^v4|qQNU|dyM6V?`!)~iTVH&=XNJ`IHhmGkyB!+(mh5_k85()g{_B+K zJ695TR4I~>H>;h}?&@>XL#dCFIP?=`_Xd($BAYiCWSPx0f5T`AQ~1s5seRC~Sa@)} z@sYkN``^0KxX*tct@PVBe8(Y)QBwa7+2_UvGY}a%9Gj;zI;=~HL{YIJ;k;{5KUeo> z-DPVvq0#Od7t`B+x5kD(4c6(b6R|MJ=(Uhjcm=Qax_ge8a5|I+Ql>Z9skudx6N&aW z?Ghu&Gj7#tg8j>?_F8$i4$J4-6_Mn^uD2d3W8fE+FtHV1rI2c5!5d`9szSMvFqH8P zR4>>qVu?tec>NhDZK@^%zw>^~6fzNPI2P8D)I6Mtg~|PeFh8Bw3IXnEHpIKcv5SYkQ-h-q!U)@fD#=h*$qYYx#T)~MFtGm=*m_|Z{!BhdCy9qPZ6t3{Q|Hk6p z?;fPvRJ#9d*#E!9&g6qYVJQEZeHibrv_b-g>3+l?tPr6sH%Eb}FBtOCcxwSj21a#O zYYS48dYP^S)B3;4vqIX_w_Ttd=Fu)QJE%l&dw%(QH8`3_1?UwJiskuWoMprSV+TKT zPT3=uetedyiKz$_I1+0V632Y=GmzZv%+t_8{GSFn$aEe*&JGE5%wT~ES5_aST%9+K z3(YV3l?;P&n4rgc;Xb+l9N};aCWqyV?Q~I`9_#uCXKqzmazxl8yN#Z#FzB%@Ub)T59|6(|I4mrgOa@Z4j(J6*9t)WNcIr_|$G#&mR7 zL7vGfb-vPc?PDJgXyD1-+b4Su8H2%Eyi3t@PE(Sf>eZ(7(JuYpnD2Yzoc<|r+VG!DSx{h3Ot2hVG9}{N7<_+*Z+y>{-d}-xC4} ziMhP%{e4krhX{vBS#J0wZDhHkC!Qvx^~fMWjo@}h4m@FYyfrrtY317`b9a}*7oR4$ zavsM&^7V&=_;A~APp9%YnOZ4Po$gMEIbW9I%%(Dnpy_dYoPtGzLEX zPdMWGtIt3E-?Yd7B_i-nkph&HiiGGVNDuOsPXIU|x?Q6tCuT1Oa;dH`@uk>|2e9PL z|LLUgd1!yslnXVbLE}9ZVLWsb4O;v>6wcI-*$nWlLpMjOO#9Dc+g7jfM%WtSA z+v!;kg0CBo1fFur7*L8}br0;T`RwJ%+C)Y|kh2AgE+u7zuHoUyQn_C%9nf^B`IPX`sCSe`=UcNZ)E z1|rcSLq$hLSM*ag7}eQv9%r{FKFt8)R?ux%1gRNC$x1Aj6^UfzABP#nvNcb|iN*_Y zOkjb})%ArOLW~cTAOJ9@>hgB^MtH2t5AH2xf#dv!1X4>GiC$%?QOieAiIX#ZLQISs$z zNRcqODaCj^W1?SOPEaV*UE@8J{8rrn{>~l!lF)LYS^5&~#YD)5^fbEm6}O{FMxu6? zo=}Y(Ab1^Gn5{YSvH z53fPn2xuI_=lunTxML~{`voi64+VZ`R)2?t_7yeCP(Z1+-{y!|Jln0pffsL{k2ysk zX6-WfJY{>LVD!6un_)Dp#&RRRWnV#=X1&@=9ts(+mv&Qc(T(BmIB1We6b;V~ipdUc z97yEMZuSs@l@;L=tXvYOz)}pqvv{B$^5#7QAs#g86wVYNe+Y~I79MVSHEzZ{4ELCS z?7x{lRS7bZ~jbg^A$q(j- zNi>8HoNQFycyL9D>LP}CtKR57dsxpGcBVLlRHR;$397A-UC}a8`GJdDU|%Isl1^Yx z6}YQyB*|Hy$tIAuTQGNz+qjLKh$?y(4~MnL)*bt=$~WQKbmWt5hG?fL92-fuqxQRI z3hXN8sVkfl>KlpoWPHs^bb4Cw>ozj=%{;14;cVn#{yQPprKr!~OGKY~V5R^ISiIC^ zO{1+_mTdl37tGxw`T@3atGfT6QH~B{4-tyf>-9cUEbKvp?aK(SLBnNu{+Na7)5-p7 z0omqR3hxQ@jv@n-udDg3lO!o=7jZ>5x7D4{Rfdz`m|`l-_vtCkng0rVC?S7%r|kDv z~Xnlbv?wvx2O6ww`=5)p8H3v{;CyQ@Z-DXZpDG9U?9Zr{$=R>iaJ5 zk|yFg&Mk_rgW1q-V2KZDdA1jpN)fu(tNPLMJ%skbN#vWL(z>1TEQ> z@-%z$8(L!^Ay;ql{nq0Bo}mDi$3&XTgO1FU!i#VF^<}nroOVP&zz?vs^tNB6Y3$H$ zuYXIw9$%dFrG*&r7#_MrK#8u?n?S+_;`(+<7g%Jq{QMoC#6^nEPcO zLq`e+5NbgyHrtUHwfUmy&Fy%vFsmV|-Y}GUofE zlq4FOAPx-P+fgSjQy3@eH_jwB-2bQGdvF&J>;7NU885;0t9hC+tjF$t`72o%$DRU4~}>D@1;j z{zIC5KRGh4SxH{DrCA4AHh!r@>wj1PteUl!De4b{Gx?z+4FJsgt*57hQ~XlEHWtV- z^vipV{@plnE)Is;hH6igAgduu*@Yk(>QGMR>qlVv>Gva|8x21*6(-ZhjG)zbXgDgR51Yt*yNRm+-{^SE>)!2&-jPV2OvF8q=7Wd$C~ zW`>LN39$lNJRD#xFr`>n7LZGK9E#NI#_8o%!Q;{tbH9J_0m2UO1w3}^3{<1LeA-@& z&2Kn83ukQS>m4+>2)|h{|Lu3suy%X6b*eE*@1)+^HkIIUxR$LTD(&VQ-#B&Aa>i{v zWYo?-x-irb&(>rWYw`37dlUq}I}uMx0X?+*xuur5t#g|F#-J9RT7IFx`K1fL+vK_d=EvJj{gzMGjbeuEv)b*}%zVLm zKH;>MA%dpiT83&d0#-=534UC3M>>71JalWjM!&U)OC$SI42NEMxDVfHy+1|PS|2LW^J&6ht_je6; ztvg69X_Xc*iFQ&@7`dKo3tyj;9;ouG;iMe&E;aga2LKYI!jvU{y8xP>?Rq!US(q1a zK~QEmbL^mP3~l%1cmL|OJ|148WH;RY=1NeJa(C;hP+$33B--?gVfE-+qE{8)h0yai z$$&xr%(Ki1?)l(%URT-@lgvfQ{Fp5cE$MVqDqJ4$U?I%O>uhxdjsQeMUpWlNC&nNM zTsD>C8-Nj_bOFL&g)U64NguPMBsQ2e$+Q_$e8Dou7;0Hc&Ov2_lJ7&Q5LIL{exAH7 znX?CI>DAgdu~wo{uxgU>thIxp=0P3+jn;b{K4SoM%DQcEXtgd-M7NtMXd8cx&Di&* zMZHRxFA=|Mu{<*R*A&}OL9LBW7FbxDG(G&C|4Z5VbAm-LLFS_2#*9XwF|qb;6uD|~ zn84h9d>Irg4 z@0Vy-#Lqe*<2XGdW{upQKtCO&IG(Yfw8g-`UIO!mGVRlg$-TMpZ0V;9Zb&+K;HP~i zS(q_NbMAsQ1H@DQW(IBc2vj^&j^qvZ%&yR!1UBP73O#!Gg0c@;b9TrJ#;g#tTDj^% zIBJOiu!|k!hF~TKzq@F>tZUOgSv~E@$i_$!+K~O;TZN2k5f6f3YSDq$x92dw?z0EO zhrVZVu}(wua#w_vS|`KrARxh3Oia0bp+jCat962>8ZF@2RGCc-&)9z5ChsnfjQ{0> zj4O)oTXT-gWe2sG`?g_71~g;FkZV00@RQNqA`oRFJ5fMsmaC6vyzCL?XX{a$<=@McxZ)w>m z?n9OXx6FsYF8K2Y?H2EWNJs0@>2zxH`cA&Y8_fM@nJ%(iC(vZ4bGW_&_x|5z>%jX# zXBy5Z1iOCo9op|3(BVd&0r^UK;*F=qZ$JS0R!4?V8bup(CtkaHq4|Ss{ki@$rYy40 zD{}KD@=}*MnMAgG`X=#(M5VmZF4C>8hlBc$_rb%wpM?C{{-I99SAd(+H+6V$6i?lM z&zx*~LUPjsEvn@wyON%MIeviy)zi9NdAv6;_jhyRE-8Nlle2ou-iSp-_~ewFFA2M zc7{vSM>q_TI_!mn1d_gHxF@BhV!_V=i$WUV2|Ctg*7sbOkjZ*zv*|xsXA&=vH)PlQ z6HLIo*tPh1BHq^raY&yY8fluGhsVC#ZMU@P?d$(MM2EZ7#NeiOL=UzfVftsy3OXEL zG?yzDv3N4p7T~BgeAy=jJ_^u-v-P{eL-b;(Lvfbv)B@^H1IPkfvbsRc`0RM1e&Fo( zHS+S+#(<8v&dEMr_G`}X_Zcdf3J3>p5{O0Tf!5sXc~ZtiVQt!7V>5*7rFOPA$PJ)27nNJZ=;dGq*|I&T@oJnZ43uy<^@NC0e6w-iQs><@r zy;JmP&S`fvb0!AIZRpPr!h{`yXS^Q~KL_FlJSZL@mbxX;7|n~e+lamxTEOL!aw2Rv zymD+gUO$l|6YP?*(K}I~Sm;d9l$;`l!XM+C!fHqlaWh=`w7xK)+5x;WdCN3PB9#lL zMlW83;|qLMHP^#c#1dcRtIGq6PDy4KB@<&WQey->c*t{=u)`Jw$Jy(ws6WPiW{@-g z=~AK(WqQh~x>#w$m?aUT&U?hfjV0oIZGPIt{|*PS#|b0HI2+aHA;p9eX&0EmfLZ`d zRZWRtB>OP)KGCns)Fx#etW|DRV@xf*&)t#Y5UE56q#TX7R zAKRqa&Iz8@(-KOM`23fjhu}9j?7iQc^Ai{gGaoo|wPXIs?@@j(k1L>xbgD(*^8+He z$k$bLly5f~+T?0+)U*%yTog$Qy!W90I$B={LyD?9#vR5gfVsJ@w(#l##?Kt1dLz45 zldJTqdf6_0?>FZ5zJfA7Qn#3?LcZny-q&BRAM`f~5jCjX{cp;xIW)XIH~5>lj&~kz z4tC$?)Hs257?2gLFebWAkDDxD7w#WUXf+FtdbTQr0K=QvcpxXG;e4x(40%-k(^JHE zzsSM=_tK}l`w27>319exS@2$JAc;MTEk`yamgjVP^viEw^txnX&zxHXHNWyy`raZ~ zc>=5P;BMh#!S(w5Tj4(weJZp%cbK%=jn1Bh1WMlT+Oht4IrF=3LO_h@dwC;K{bR-U zQ!>+<_Vbd)w{}}8jrO;RYr!_I)NO-*yb(SR_CqqGiqkwq88vEHSCMzgL!5iP@NHpI znYRdcXA2EYmex~)DdU+MPOc_z)?Jz1903!qXzEnN?{O4Alf3t%tA8GQzxw5GMd|NW zY%;i4hlNDY@vi)Sfy1{}D&eLA0zrgE(^dal#ovL5fShU~IBofIIeHza?G#7_k#9dZ zYW4qm(y@!>-IhOLmM7c=!F<9fXd%PzW}l;3CkWAt``5+m;rHzuW}hbmaD#A$n2s8D zQ-sezT;cnBdTIB$6fwXT_LU`dlI^Y`hEI(Z^LH>dbQlaB^8ooM(@Wpu$az0Gpi%(5Eq7%>0Y;S>9R(ab3kC zQHu!b3S%$XV~p5j%RB3kVw09E2~0fE6_Xsm^<3rnPY)M!J9lqP z&NFIfg$Mu=XFTlk?IO&FtoXRR(`>68r&5kczb9q@x3>2+TGxY>Mi$+A zDIn|rbEtl92x@uQ-lL#cCmA^Wi#xTGq^u^`^Y&@bCU66$+vvA>GUNAg^DCF!BOMzl zlnh%4=PF678N|+RSt(BY1OGZXCxzn>H@Z!mBLDQYWpZ zUnN>oblXxO>&dDEiqlUtgF4%@{R$8j2VwfsklB2SNU+LBAt!uq?R7xI?d66}?x%FU z>Pw)-TF{LHTG`vGsnmg;NejrD+OtaAwdcLdD=o*lPu7()(5=#n?rNWce&8o+3c+{z zH?IG2ae}dw)*s1!tUoPg<*%_%)?HtOi z$EVI1&DT!oS-rr9bDhF{Z@&HTLX&(DKJ55f8V8|!EVvU?=|4_bQUeEE_DkD(^9hTem0DDd z`CTAzTvS9$JZ478efRq#eQ{l>*GzGc^_crsjart>woP=`RQ*6N!Af!^tN;$Fw_nTG ze&It#jN}MD%FBoR3^{Fx`EMp5DS}>$%e!q6#j1JFm2xjwJl;Ccg}q$A^u1Z% zoBQe%bYOPakEMhN1!Z-PXOr+V#$a4}(Teqf)7{)Y$}`Q8I$<%)p;t>vGxZiky-{q& z&NGpg&@V{ZZBGIUpY*E{a(tEo+wdy8i8(=jFx`GlvRm*C*aDM$bpqdr`rKM;b23n8 z#kahRk?r|*U_3?&w%8QZWMLy7MS*m>KQ&dHXblpb#gvH9WSfIhAS_hpjL6jDAiDT} zf*__$g!1K^p6g>YBl|cv;|!+3?0>R-rq{BXe%_p(@Oeo*{43Z+`ShQG76@V?B42Z$ z&yCtQVs~(PZ<3+^{a${lJoF`08=x;ieLp^t5ynBdbG^P3Q@?b)(iQP~$E{8T3-`P~ zktHnn+l}1Ip=5zLft%9GH}zgzW-{cppO)mo2Jt-6fqDvAV3E!fzOHtS*}e5|dTR5D z(p9?(mh|U6WL4TD`TS3Mn__{ZN7MAK+F08uNhaZ20B!k6XnOP=uw}JK(f0rRN0!Yf z5q%WIv&c}d2CPBd#y4#wZlYlrSOJH0M~#V%YS#3~%dm~|&vs&{HV@+JU$AUr-=an$ zy9Ie7=2tTDRJ{A7rAZ53lg(1B2h%x4qKFlP=dp^M%0dlmDQC6A`9A+r%7;$)VpZH| z&IcMy{%SrkmtxxkW#>QgQ9a)EbeGdClzCtxOkLL)^05ioT7p+tydV(}VrsRO@IN;i z70yNZ@Dd>N7C-klNp3^JfZmI&6I#j7?Mh8Rg%a;XN2z z84t|JacnRKkoPUOLDt{T_-tDhf5_B>c#MRe!h=nfU_ z{#JU@up_zt8~48x?@sk_;_JYPS8p~YKD@s}2Bp}mJ6PK9USUX$e3`pizDh%)nBDGP zU=xWNz))<~z`SyRhhvHDbVS@6ol8FU8KE1VUd4Ms)LU%mQ--;3tamsM1-DCcX_ttsQt_y!m+fjqM8yce$Ynlp33`os^CCd+bDjGB!Pqzj=~=R1vO`g>Fsq2Ef>>92Zj z|3oTYN4*g_G9Z6C3p0(QH_=a$6zs%!$O7O$1gc&wFW8i#`Ow9cyn}hJX#V>2b1F-N z%QP!UQB{@wv(ToXxs3qsaA~Bd|Hf=XS78F%8aZGTg-gc0E+Xwq$)!N1(`w|_x}K7* zW`1&ZMI)x9~LvS}PK07sK0stZGVe0{c?MU5^D6B{$`en(VeiE>+;o*~&Gd2%{aVbmeL!lYgIQWVmjk;U5a!Fd&C_eqdy>MOJv@eCuD zN?5eXqz)Cwq}9Ob-a1zW_Z2S$5li}|U}|Rs0lg@D`WdDzaf5yO%R1Xp9k07Qf{^z) zg)>6;SWNlPu6GI8I`jzNa=>L=swPMVz#!L1(LKbjb*?5+zBdiTk?dCwbc0D4c_u96 zU~PdTX?yrPM*)#tqz?Gkh7Ql5kvIhH|7NjjA8cZ(uA-0r8h5z}^<^?ynr2WhG>zIi z2gdUqc;%Cuo@sK!FK_?LxYvkVEj9+dDcwL&;%+B#0pl29&1R^t>%#D7fu;)E?-^)i|-Mza*-E5!>8Pk`!-0Ns~-?)M%O60!(k!?sE2qn0#l7n z)t?twrJ~ZZH;Ef1r%53Z${9o*Bg-I4D;1Dpu208oo6cK3TAm?e6b9dQ)n?Xpas~C$RYe znzBgTjr+2jHPzk>83LMKU+m${IRY02M6HBNqj~CNF9&pvygJO)Kx-fHeD%JzK+Lr+ zlaRjw2d^g^XxGTGWP#V+=hP1FYF{++e{Qr8ciY*NJFwx+3ovV;_%O6v$_&m(kkr`G z|1FvnI=KG}QE>lWrX2#~P1BZv0H%85(`W8StFQlRT%2lJZJloO=?HGpu>01Xmu{^F z-bew5E23yaKa32=oz#(igiu6Q*;3NCWu}oc??9>#`#wg!prvWzHDd_venEKl%#e zr3@aE_UKBmX>0mQjtm-07|G{p0zuO^OAsc#IQ5Ocp+eli+4u@Z^IHbx!(Yz1pe zMfw-J^)!C{A)HQ$#IF)T+tB;|x7ZWhjsCQ^Y9zsX78X?7So+i>T6@AHbk_U`*C)g8 z-=qsVmZ&#G#WUy>;Vo4LB=(tB@$<{iE%6+!^@uc_6Dwx&pUtdbr{##KU_c_!_z1bB{2NPFZs(nZi(Vw#@BY z!1U637?EOzxI90m8!jQ2O@=3fQ${e^W<_ygRQC~1hDMuM*r;+d%54D0j0%@VCRt$E zf&N#0O;-1DaXQu9$Rs13&2qqBYy0!I+m5ACuEvOw$8|L@m5~oBr#TQwt$lOh>RFM} zlsHV2NL?+5;6{-6hSLB^lYqH|&1HA5TED@uQg^{s-h4T>=S2SUXi*t!{E{4*Vtcd< zyGV=p$YVk@i8-a-F=$kOkRHjXFIMd&3O?W-!HEVzOprem7<_F7Hxoti!v3U7igv@j zJ6rSZW47cPoSI?Bj&jpRVX|D969ouAzo5_mro6rkJxG}$gL!0uD!-T&s`<3)U+BHp zsgYqMWOe?ciYPmI1tJtdI6+yuIxC{+ChzVcC4;O(M{D#!P1L#MZfEC}@FgYJ@xP6x z*btofjJDG0+>sv>UP_h;*e31t26hLc+`lgo$bn8C=Kq^P8=uo2g2VK}G_dE=KrZYh zK=@+{&SyOK3+^#z2M|9xZH5yrUYSo(2xwG4bHVV#a4=dcBJHnn_!YRX3ax?Qr3m(^ z+jM*I0qd9)#l-N~pvfMXsK&OuGfBHT*%tv+s>z+D6j+rXUW3u;t^fy?;`mxv4(Z*KzPM|I zl(JrJ_;=j^^aHE;T8TUhTu3s98`J5Ipg42g=QhILc*X)xcM*-BM*H(fvn?^AIil!9 zkcgCL4OJqJ&W4Tzq5h3trf9+JpC_Zw;DTi3u?+Ibz}Zb+5#opU?ei2su3qQbZ+#^3 zuM@mIi4m8LZl5`T6B29=D1DdV*~CL~j@g8b%iFmV zyo1l7hmZ4G?~aIpx%n6XgIsSc>3DX+4Fx5%fgaYD0-uB20^#Zy?b zhGB5|7kyI&7gbKGx2iJ-ka+9!8KXPSmm6J4e@G#?BvOipBCL5|Y7$JcL!@?w2ji=w1s>%>7;g7t*HUOQOu~9I05UIJmt90Ao3?||VKV*MN z+>n4~nf6U4wP#!6z$3+P{^doZnkq@|A4ki#O|qA>UNyINbnc(LlP4->^Wk7>g`Z0`hhSZB3Q?76ogwF}@$| zJqL8y+c&^uYZNDz>I3!ixdNL_OH|5O9bwdv``sk1X6;vjeFD~>cqBw@#)I!~Jl&Kk z1o62npBJe$$Oxv~Cz5qr7S1;}+!oGA0N%ffaT~1rrl`8{q=adG+G2ho2WEoF_4eK0wdIi><+8a zC224m|EE+`vMBmq&XnZ~#4QviC&I}BiM2j|S32u4F)n>@4e{v2G9 zfnI>4KshspM#gzS1oxs*Mb>nZVwKoi<(|*|fUIN0Q;JTm^hcLqudQb$K4m_d&qWu! z?;BGPX^@U=0bg11X>N7sAP+ z98q~^A2OYKJD?gFfJDnGcY0Qgp?keA7%~JaM`qHZu%QZS5w%%k0_+~)UkbKA} zlnyvO&KT(A%MD^l&Pf4ydD$-{PymEbF4Ap#c@OxZXiHd|BSpN7I@MAJA;3n>wH;F0 z^^JAO2AP@I=f?puIq|<8G2UOLZe0=5PIbP=`_5s9Yn1-ARzBiHzMAjz#;7mT+>z+t zr{AR@5U~*Rl?E&hkB)z0_g}93Z`N~aE}AJKvpHFXU1c>TIz;KDxFQiw|1Z2+?3$ST zZAT!9Fn*C%;|2fTbX~|tQ*95m_E*9`5TTlaA*rf2KcCAe44GcKe%MRJa7hdp|6k`Am3jzk3O(9_=cT$~AE`u{Bl9RU{cY@4Vc!b;)mVb~xmF3?~chpzitjb8UI_uxYCDv;Gx@kyJhPd-)2ZAr6`E8_%Fvh-Hvh zPK!R_!5#Nty7wH`*PbETnz#Y%t6&AGnjV6IXD@l7Q9BL{<>;J~0b>b0q7f^R80}$3 zhnxGuHw_!t#pZ5V?-@Y{KNgLQ`K1RQ+S~)CsPRzg?Ru^A2wx67F@GXge^nO)ZT;G6 za|14+#+@Y?;IKXZvrxxFM7HBxm7(_|5lUTH9DTf;_sw0487T@nYyFcYmYNMOU(tWG`q~`}m%kNQuRq@CqlcFuqAa7)+mm8zyk5Qz;#w?Ux&96} zUQ4VpVVp9?*opUdCZ^YDE-zC)G+InxyTR0}pnNQE;pVz_9VK#pP|EGYjiu@!Y}k(D`}E3PZmy+zXPqGt;5@GX7;5+ z=J8l(P%2XH!zYDJxwNw#0_kwX?C>p3?Xyr+j)(=fzA*<$Ggfi!hTAd0v7-$&CtRPx z#fg0$^E>mR7K8!7U-y)9ImYA6xMb5q*S&oW@`|>58emJ>81HU5hWS;p8e}}*g)))fs%+$iMzk8caqtbR!$F`8m}j=F(i(p%8}4L; zLC_>)?WmBi#N0>P^|D{|!~_c(WhlJRbv-P*5VGkzOOer|s37Z#oBmpayY^g%(CgAr z%0_Zp#Pw+0#x}uJ(6NyD^K833oj3#dBF^}zaB`k!$tJ1aIk)P(Yrb0Ju$ZZC>v6>j zNnamIG>G*85N?N^HLqS=n$kZxk{#vX>DjvJ=(FG0_n>T%oMJ>Q(yV~8eoXjo3@p%V z-x`evwSJ_)_8s(wYmD)FqhI^>@5?}5sJPdqun4OkX6>@kph@PVH&cH|{5~4U99M#j zT^2ziI1!Wk>5gwaJ?tJ&#_`I;I9$8=%CA$}UR9yqVWU`qG{KHy&%WGWs6AHHUH-{m z#=$-ieOJRnjSridkZr}tovL?F#u{P}-^#XihJF6^2fAPG_M*k)_hUlNX)n9?;>bRC zI69U=I^`WfUQ7JjV_pd;K0k(Y;9&hu6F#Rc;zY5=lwrUHVm=78gv5w3^JE2lCEJXh zekorQzamylxZJB;6|0oNK{OdMrdz>#`sfk-;Y(D5usbb1ru$f#>-5K8j&Wl!H7il6 zpl6mG8I`ra zePJ?fOPIlAfgd)BL=Yy|N!yZ=T@-TZbI_EyQ)Eeo;`;8}4Z_F#5MD0U7}JzNe(yR{ zYF=ZcpzpA)+w&J%^{+cOp;u7hG-+DjxPR|vEz>R6xrajOiqU*(Kixm_P2qH^%a?+E z%>gfU><*6uQ9T{S%89KbB9w0umvIhXnRlM^f{C2lhm45_zzf!K)&U@jPN+1*CGU`lY#1NrAVuK6myMCU+9xC!4Kz|Mv_CDPGn{~68nR~0l4|T&j5z6v zlzuzN74q?sq5{*e_Wz3HQ;m^NVE2XAI|k}ETpnX{~`pxST-~tBUxfGU;l_K<7Gw0wTA*S zp`Das;riJ}c|8PEZgp-qIu5h3nU9c@m^TX-ep`raN} z=B+~CN7|mst;!0>i{z^949eh!_2ar~qg24sL~f_QtW zHki|!u8EVR6tjC){1qB&Z4}@9O5WbPzlPrjUT%l`aWizwTV53+*&lSX;JnCDR>_pa zc`0~Q`y8=sI&e;|Sh{O}**@zV9c?FJ+`3fSr%>;f_a?)IMKPPSzHf4PN+a4%N*4rN z^}}nAjnLG2p6Xj4JOGxyAOWqK;g549D31|7e)9QIpi(>>Ymb5>ieb;q_+<~TuK zF9(vCNtFsU!CHtIT?9KvBq-m02p)5{5s*XZ7}?6Gk}?A#0!i0PMknCKa+RASv|3ls z#0qr%bj6j zjVQ1<{Uy8z#(A-&T=|&Ja-HM|uVkG!R;dipuN91zFV|~RVD7>-?Ra&&C0aEYSrSQ; zx$!N}v>IGFw3_WD7KH`x4k)u;(AZ_;oD0PmN%Jq8D^l~-lWn3MX8JsDD!czRLMcN% zs#LeItT@LBFZ{G+C?o_KZwTOCQwjaHu)Nl{8N}UDC_ALhs#yZ{AmlUue)9CR#X_Sx z7~2!xrx#bCoQ0TJn@s8De3y*Ntof?HJuR!DHCnD+Jjx(7G=WwA^&taj+l1ZyF%rAO zcQh$GZH1FfFBjJOj^GrY{uKtdlKon2SBiXW_4;U{?#!htoGz&|LQ@!6PQrXsD(%Mu z0gOK-V*E`f^B9je*Jg%vT+<+e!=!I*zwd+PgtBRT)Xm1zRI*V%N2>$$oW<-J-*wt! zZMFqfe1444$c})`rJF|`A8biRL$KesJU5dhwjr#f|DfF#fRW{QyxvE5>w5Nc(qb-m z8$r`)Z~palkJ;p{+c~YbD(}ZE8Ig(nsUMoSG}Gm4w5c?>K?`*rNzv3Fs5y5GAW0!~ za*BseT2+#91{yu>Jyi|oaLnQ2w?4Ae`kk`vx|l1Sq2$$%+loyNm-TM@^$cWFc+lf$ zl}3>(0;Xp7=Bj%y*K7_X>IhhkUJMzz<|{SCb9c-ouzVZYsI^aEjTK71IlsAvZ_Q~n zth)PQdx<%1%}%JY)rQU-&R(zfU|%vYYwdCu`c65g;;lI|7AtnxBqkTQ=q@eXd0e;W z`A+ev(RzrO{8J#`x%IMQYF z%C&bIb~D!uT^bDq6UjNtVQMWMXVAg?aZ{I><)pb<2Y!ACsSgGBDSvKb3Tgv#Y4_pq zZ(qHYewRac0W6w$FIhpfLmR2GC&mMbalIkf@dy<%4$=pLo~yaj&#XT*@>+guyf}QV zQEhH(v2^ZWVACDE|A0{_lhC7Ccz!-8eOP=cqRO`F5IENtOBFKKNv*_`n_N5Jfrhu$ zt=r}FYQ}CgawjZbR?7V(+$d8Gcpa6RgR@RZcU@_E8ydmA|4T{L4h-doYK*lY`^#4cTB*hhjb5rBac9R7|f@6qS^&*qWlD;y2+ZPDfh;fJE`iI^4g6 z$Z!$W-YzCjHn}ki)9McP5hcu&Lw`TM411-8m|<1T#p?X~Sk*n7gv*lR&`7Le0!4{G z#3nxwp4S`4$k>c`bl>bZc6t0-!)CbXGS~KWdon&g4yYLxs%Rrf&}6Fz`J)E@|K>m>WQ757`g8ilqVq~8;}aS?B(-vb_(?L&iJ~+*xMa6M zaUWejE>dUkMzE}~)4ArMk$CeIow9v@gG**kvqZ{0wIRKNdHUA=f}3U1`i8%(xom8= zj{6E{Mbg(lmUI(E99u&)8d2)y(}!B$77eW7kD9`NTwGqJ(G+@@Rg{1EG~rae-btjz z73|QrKy8l;dx#yg8usGr!$>&z-jT>sID_v-ZJsJ`qJf2xVxkIrS3#; zR&lv{=S&mcZX+|l2h9!w@T3Zy?vJIZ#^$_i5eDcD$>R;4ML6B!;KY8@+7=Jayuj=p zsn?_eg+al_z_!+2G295v^on;_D}i^prn^|nEl{|axW#Jw(wQ-p+lGM(0=sl=+gq%N z@JA;l_(R@9 z&-#-qBF{*9Oxw47UQ&*R1xW9e|B!I1|C4L=-i>5G@d%YoHKb4@zQ8spP&BFrBJ@?Utn)ETT}aQPE%aTd_kra&lJ0iRF zp%|k1fkWjbzhk`N19D-5cv0y@xqIkctGSB)#LjZquY#$Pu}saYJyf5QuziGpXW3Rx z`xz@;;dSOAlqy9U^v&F-_d?%WOjh42#3O3rFlaRMNhb(MQ*Q||E`IS^{dynq##L>h zemr~uhMF#Hnot2Y$-MRk2JvdPL!4!Ecp6_2ol>!R zxFgXd@acL7AVGo59d+q;x+gpUL-A5XGPlXM4|;A7U%)(Dp^^S+nbOd0V1?#$ce8@o z`>OrLt}27w*{FysBZJfWbD{;M`5rrC-%~@gKBIv!8<`ZAl-^i+nw`~q3=(d#LVHfm z)?&UZzIsWnuEX_f60L@}14XF;a8geuwf>CcJIzDabHsT)*YXm>{tb&YjJ$iwo)X) zMT@0VmqJ3&bSO*A@%eFTHYG1B*rkj7h;E!hb(htsaRp8*z!>A_ktr5BZp-af$E;5s znj_?g#!Izn$7iw$S(awW^uN9j>r0SL=BH#>^xRUELAr2}ilO+Ew?L<*b$YmS-0DMc zH*yuo?KhL6QRj%h*1vWm{Je%&|H?j*PdB4Mue`s|#V%|>%95@5!!Z1ymzE4RWw1rtNHgde1b9c3&D%*PflNdPT|HBOb3V47_!v}fOI6XfErmC_3rU+4d zt>Ap)GS|RwGu}y5=m~i$GmjI%!-plbYqD(T^sx6loem|4OZ9dtT#)(rNj=!;+*@o7 zyMX1SiK0}RF(hw*?AdS3|k3u3{D#d*Bb4~l>3->e*9 zwT7^w%q#tW?7an0Rcre;t_Vtqg1|;WN<ubX;)y7ofWaJX7{Bu^F7)q`;l z-Fb2@D7)Svr~{1pAW3HY#(l*mx44MBebhKDe4cZGe~PPet{p?71~Ym@E#y^|LF1rY ztc_!dmc(W?>CT^Ho_??2_=rQhB?+J1-6cLSVlGIu_DJbsa#KLDy6_^Cabi9llcTR^ zPTv0!p(o=82?3EnOhiuevcTk2XT$s=avNzAo9?2k`F**eW&e^dr`?XVJx39Y$3FK_ z=j$M(^N8g4gPskZE7r z%G-)k{!gh_2yIZE3GatB^ZO1sDM6YY0sU&G^ZA;!A3`&>O!o27Bi z6O1RoA$k)<*IP$W|HS$L;ktq`a{(n@9Zu9RfN^B+8};R0X30Fg#QX>x4+*bdPil}y z)04c%NQ#ioC<@Wk!`CQ4WY@Vjb-Qu3+Iq{!Ip7oMjNMmoxM}hIoGAIj47@9ZT2&a3 z@aflj;h4xi)_pk_IS)2@L$Yy#SB_0=MRDR)q7t^h?wTO8S=HAeTbH4q!Jh~-n8u?) z*onLEu(rAXjW;lUE`+0iQ^hoiEBs!rCcP}gwG*5jetRf>#?gDVIj?{--hoO`V8dfW zg|(&OLxFuXa0|eroX-K*0bR&s+Xp~nH&7vPTx^w=XkqV$?=XL@Uj5#?tHCwKI5(1- zU1(}|P+{u%^6`{XPL7F5gJEpq+r<3UwciWqN^o>KH8blL*eVR@6IV9Zm5 zSXQSAfuP;c0?z`YPjv}V3^ME36HIJ11rBY)+~1Ore6_d*QBsa%kFvYk4gE=s?>X;E zJlSnvR7CfATARZ`L{VPQM7k&!v5<*DQVi-InC(~?)5Kmp%BM>nUDym*F!&I(yErdm z5Et6WqraEo>#i?R4)S=PPfSPU24Lqix%^a zFpqC!@QSbdaKO|sy`sme>Ab>VU`YtNRG}r|RM1`_W3Er`j!Csy)0?madGqD01oX9q z&NUR3N5MeH?lA`!x1Jtd0eQbTDnDU$~;pN~}3@7*!3ReM8SIRN*$x4+*I zR(t$eEG)JnZo+o2cW)>F4OzP8Ttjj)YOaKH^U=)9(0KB)vXuOE2UT2FD=8yagnPzA zY1!)tyCPYtRRKa0=O>r5*0Wq{eLnf^?;yjUZTu<+MqXg_tl!F)6)ed_a_!tUkoJsU z=bO9p)+n$g8wmCQooBOPyh150#&JilwlK2W2mD zzq#A^4n(Q?w^4pb^1g*mFR?;MVujWKU<1FrcX{RRkw{eZToJdZ=n146BDVI5Sd3q; zywd(C4*h)`s*E)Z+OXqF^>e2`x~HDqEPK`jaSgFI*-jgIeU>Gn^h;L1{vLp-a+c?6 zP+@nUcRqO_`${95(-4OwC6}`5Igrr!KVL7}pf^cbsp)yWT$7Bp0zdcL~5_TPm3iH(2r? zY7a%__7arNve6`1sXy75QZ~#RQQmfPObzwKp3`h+D%O64?am}xzBQRCd}d{5^~U+b z6CS@k#oAFLIht9tF#O>FgJ$OhXOWe$JTDM;b^3+;0Q+wFS0~2~s6TsEkBS z1@T`a5DA7_Wc63~#kP#3=+XL|Y&8m%)xO~N7L=h-GzzIQT`nW|(%aG+W*kwoWz)cn z#A`Fp!eXodFR@ub1c97p(A&7#Es%)oCd^bitkOj0nhj-1c%w0yX+F|MBD%0UN-WKm z?JyCepN$5g;#V$AX8_}Uu)+PdE1=6$N2Td41`t023K6HRLVRz^dy$kWtv*f82x!kj z=B3nX>GP()6etyO`%%iqP0+|=5@ArPC@Bp0b=c00F!ZlOT&=dgacwG=2TK=lzU{em zY`*v!Z0w;G;&mU-XF$|;pvJ9E+MWWxmy)ayBf<_Di~sB6@OiXvYr{Eu@ctIFzVa0H zN4(?rHd9vuI*Jms=TDJEAn)X6n(H4f%9(s|&7;#BxP7eVbT<5M5Rei=LyacubPhTw zx-$q)ztx%(lU9hqi69Xum=oYjCczbBpk3Hn5W)8YR#|u|n;ia{mTn_<`Gc_=cR7~!}&ce!0SuOnh_Ay|46H-CE~*UK<7U@+ldm_Nar^4gy_POWn2!%ahjzPTl|gt(b6Wk<;pJZHo55;Rv{yOHYm-Z) z#zUUj>(q7U+~ZW3F-ihJ;b?tcTe9?QjGB+qwR zx;BNn>F7+mMTT0jM3<0q%0vM$`Sk`{)s_t5e@!DeMuD0U;{6&R2q)GF5$|l!cmV`_ zxW_(&=FF;hEQcsdMb1`hFp77g7&Jb93wglP9L+;Z`z#QZxTP^fPqa~+tZwR7>Ic(w z!3o%EO87Zsns>~6$n4~QXaQJR7wyfb=@BYm!bY~_D{hO!<-h`sf!GvM+NG?VJuJ2{ z9T7G21gBUmsf@Smk8rSD@v9tx`T?sO^d!$^p^O?nTvz-%94xN*FK<@>e+_%`!tNkpcysJ_#$4y>fZ3-~!Cr>!;#6!c zQ>~HO8ZZ(7F|=z@Iv%r3?n{`h(&vfMB5dpq%MO|)GFCs%CI=yW(6~U&~uG!WhiNwY0 zLB%?0f0!ck?lJdckzo%=_3YKR%uk-ry%_p*dNv9Q8f*`l77B<(oWEOe^_Ed8W}185 zEAmNTCEOYtgyS`2GMIhPvYKOe35Do4J#^ibmyMJ&FIckqE9Fu+zq*#_j!M)-92B=w zYDAUro|nkeW&+%om+^UEt++}TZTO4n=t?>Me91au#>=ryMRakwT=nGx*6$kvx#Ooj z)amOmti>7b1Eb6W0tEHqVIqT-8fE=OHYYUgstGqRP0cD_h6Fu;UDePmysv2bf&~J% z*cR8|9Y^boTNvaY%icm^s6ML*@L0cUuH6;$*-U&A#`T3D7dPFuB%UIJrDd5z>z(&5 zB^JBtj|Q6@$R>w|9C|)0-tQXjm%F>4W8ZUf%!5c+>-*;Yt zPEY^oCY#Osk57g5-IZ-O%=XgoTf4C`^3Byi<+D2XHCH0#?K#lf--tf*qqC_Rx-pH> zcpRbKeJG4B<;GX3nxv2IZ}Z;8<3?T^L9RwId(VjiuT)_YOeU4}?9Il>cWfX}WQih3 zNdA)n@SgK6EVK1)GIUb3;|)F1by;~5Fh^{Tfi?*+vj@_;6#eGJIW9s1aG5xP9y}hS zw&wdkI;%Lp5JRhTZ2sFoG>_tGpOm^r)P+NzZ@Q_w@?yrB>+}eAz{F@y9dtuTZ8Yers!#S%eaSn+?rA37xv~Ws zA>8l3C_`JeNtD~Ac#Q*M*?9^zTEf&EDJZfYF={?f6`5DD*nY?wq1{LiZsRZFMKot;-@uS(yI`h2s4t8%(^M{GXr5Y01*rZiggi02NH zuf&l4aDpiNNuxKCkIvdc8=YIrzYPinQnZ{VYdg{^Z{EI^3s=fVlsM3$LebKRloXu*(6`BPKfJNwe71%5-f3) z*=MC1Ro@S~=v$_}?eA@*r?h?So2;_V)C^84il<1LMZUyyJP5wKe&qp%i0kz95cR~9 zj|_;O+Z0>H3iam}+cLN0t`LMR4YFk>x^6(&z z#d7ZH5XKyj6-6Vf#RiE75~hf>h7#UHooEvx27UdA$IA+M)F=FJbXFx#jHUXv62a`W|kl5Ytbe8(!YK;OSO(;?PZ3jn-^0p_1kq0J;@Zhtnpfd^b#2D z*A+XRG4!#`zAwF%Bh3~Us>XQe34JK*M;Fn7AJ{6md|at;Yp5!CA2d;*E3v@4Dw%Up z{NP8kK_9Gnuj|oBC`vHIA~8u<7t>cH=1W42*gUhGU!q};cM9Hw*Cp@F)=L@{2EqWZ z`eXdmmnzs0VEKn_cIWyR1m;PNaa&wI%Gd^jk$cyZH1KzvpfRo8PzS=0N+QZpv+CHn}B>1cOp3NP)pv(_J)944#pe=RJsejlyp)gAJ+i?Bs}i#=-mwa;D#4E2XY6Pf0|B5I}0 zp^v2MB-{joYo`oj#Mdkga?O{>ST8@Sliq`}O(5R2?Wds~d77Oe0zO?*>TicNtPH0` zaK_3$jk-NCl02*e!3eWr-&+H$_7^>shwGA|`qGqe>ST3JhwJ^JgVj4V=+sUQZ1Shh zXPdGOmElFzjR=(wzd)1wks)oH%QHV7Eko4Bz6QQ}yY+PLl26_bo(VmrKr4NbBMZle z(s(i0$1k)bFl(7nNPfH>>gJ# zQ#|f>DU=eUE`_zB$z2?NR5dRBt$H}Sm!9#IH_}DICg90Y36FAZW}om@vlL?M=niK9 z4yp;~5)PZu9uyqQ~(~!v)tlBxRT>tG%@vEKb0yg|7ZTz@SK)_Dzag* zxP*KPrsw8H;VXv>XBuFx^=5w3axykSq~sENYw%VM9adicjszOo7D@|1mSn?}fGH!c|9dF(#l%v-j@tmNT zy!HEI7k!29qEm)%6`1>_+QXnEy>JY*2rQDZsO%QQ%Tpc~?@z)3Kd|VB; znJMkY?YnCUIbul=>B3}+f^bpwwE@G6w21gL>^qmOU6Bn=S%Nt;()M34p?xZV6F{0lT6keeIe;_%uq_C!03$kQg8O= zs=GWTXLC508g4q2&Xfy#KrBeI?*%Ns5nc@uy#8<{?F-|@2+7nvEfV?ur;X_kwD{v? z6oMpHE1=@}?;}B4ulvUjxA_h~p!g|ZkK z@8w7Rq0D(H&H2;A!5RaGbjC6Wo$VN%59#aSI1qlWfEW)Q$cu>jDk?nfBR4JYi`|c5 zxAci(FyfxToGjE$)Clh$tPns$q|Om4K%(SAQH)S~LmO9_0Ivx)Q$;Q*8gXBUz$X~G z?4CDbuv~_0K9rKMOH|6${L( zZ|Qz=ub5n_;`!mmz_^B*Sg!ui>P95(lKzBebg3>^&Dmk-YMc*G4t>LPg;VVDiB_7+ z=NUv-n>?wDPiZ2ldl=-cX*ur1e1VS>c@Nj_3=^dv&|*@1*JZPZ_qY~SHgcD$5%MuE zO1cC=V0RrqlIC8qS&PYK34rOw`ctcww)4De!=HWq21Zmwm%nAwFx(V{Ba_)rlHJsg zr3;kr+3xOfrGyy4EwN(2uC5c*`5wnEbg!zHrjpC@lUtqEv_L!qVi>pbDjci^t9mGs zc0`k=KVmjh;*{e7GT{>dT6%XX}Or%ax}yi1s3g z>`_z_KD;Zs*uEQp^o#vT>uiIZTYO&F%mwpc#DkbsxEaIN{ta(?sSQN4K5RSPWtAF2XjX_1KZ8g zL^c&9E~`IlUiLnK9bHW>hvfq7EXxO8kuIgW67hoQdFXq9_*INyz z_tN2HQBoAm6^hiE7CYkOvy0JJz!yR2O7yl3Nu^~HE{^*6UbD8~A>8k21G$MNnQx$+ z`$GHbJJ_ZtQCZn4xnuoB54=VZkrk8sVn<=Ry4kAQCM&aj`D`|0iQ@FE;<^i`@>uGo zJdHeBW2OT@4!cCkyMO#g@gtQmF-{Id^4W8p+8ZQxkhE%K29=IPit^`7mJ~Jn(T#+n!#J~ zq}Pc68hW^`954dMh1sK;0Gfl%ODtq$0;F&!$Hb>^-pUZ5y(-LLJsrZ10ZJ?%n9sKw zIVsN7%H?B@b*&PK5MA+Gg>cn=fQ`mbaw|5v_?M(%Be} zYq$aNWH1OFmhC~9apfV_%q~87r0odN4>wtkQdCv0)=cq01%PTrFd~`koI+oUxPx9B zc%MaSwzX4Lpipqor|1fl#kVD5C{g> z?nX9v1>&XK?9LaCgwZOxS2$c?@dP{`)rvLTeA|&G>`8RDyAiv2+;U}xrjCgw2j2C- zDVD`vM!}cK?6?3mmm<_X41Wdin=;;Y$P`^*y)@`=E$qf_^$&n+&;U)iYmn|}Y7d-^ z<*t3N0KDXtzGQPTW`Nxshh)d7YQ22TPqAP^%xJT}gv@4lEcV^)%xbHjr@?NZYU^{2 z%@cSD4`(nlLZMh6LpYkXX+<`h{#}NBejJ(acs7+0Xjg=h&QlnAr(*7!u8wN$n!tku zIelGWBQ>^2P2j`?8)H!BUgvRIxR0rMLIe{sA^ChWpeIU zTSbl++NDe9D|t}Ga8R#D6u)K1pp@y%=#iY_z4>Vw%%2EhGlyshtF6CPt~%>$!E-iT zm?+n|zpKzBf(cuL;#$i(ic`-e!eY6llrVhkc@Im-7n5pXWAGZ`ud6$#I_rTxm1b!M zM7Oh~MhWH)p9Y%eP60Z_0$W(dk2=?vc;IR;DQ5otFx49_2~fq4sE2@$;V_X#Z#WeI zh+h7|?DlJnKB)8NgpVWAO*`(@`z^-vmOc8^(i^VYNLQcU6PKPzyUbMj^+Qa$`I!uz z`o`1bYQXNcSg?VL4~WY`oB6+enc|IL>yXV)?^3jWXlm%9+xPeiEftT$R#1ajCctixsNxHx}Db#0;NUL;kHjiX%3&w`?@F3bkDjcvlt^= z5*}<#I`bR8fW|)3Qtu5s5A-s%25zHM8$FIJvpl0xs5Hx!tbN(B#N@F|rNmoxg!_C> z-2pdNThu(pB>zcQ5{{A1TRe_XLnXHXKI6{dwJ#qeb@aAeQ$=9NMKsd7utt(8B55*m zuHzL>=s0aS&Ic**0HUv`CVU{xvtLbU8*1huW zZ^6vg>+LFvTL3AQN_EvpCR40?Oa9R1GtPLqq*vLdCVe*Y_>x_H641jJkI()fnZ}RA zx@7wqMEXD$n`W)O{tkq*V7%~5Q81Lb^dOo+sj7I-~LbeYp@90`s&CalSpWNq--cItg$Ss@k#esYrkd z(J_$NkxI09^k|_Lhsjil=yT25u%X=D#w2{v*lyQcPYQ*yK`n7mZi56DM))ba@%rn| z1bw~PK8^v4!(9tH+ck6Io1d=J(}c+^0OoHy@fXag3uO2)UH?( zA`tLbckkM@bWgIl#3xE{^C#u_BjdbqT^r0M@33KRp)tq5T7|)w{22K;VyJq>b`rt$ zpfm_fuaG$K+_zw>HoagDC6^x4mB1_lRk-9jug?l(%vAzgt$#(DH#H9Romg(wzFOM%78(kh3>M1NyKEv5Pt{?`zB&r{_ zo(I@)9vIo5Ri>Z9vDX>E@5k`hVNE0#ie}d`hp^VyKB!${@oA+#b=%L*OuGk&xG>UpU zej@Ji_7DVGk8S(gEO};h5>L=d{x)9PhM@XbW?1V!v`>oH_eq!a|VA-xU$kd%W>w z7#?taiRn|PQ^Al+$zj9M47m>vL{609KtwNGV}B4LP(2&LfO}^tj8dN4?UaRrLjmDY z=b^h6msl~c|0<9gE9%gHbv4fym|^1L+WcGzLBeL=t}AQkE;-6+nwcoWmtuS`2BG3( zPv!JH<&0P9BD_^rtS$(yFxlhduK3E0{guj!d+U7-MM!|W4Na+ASr^G=5(Kt$3gjRU zJ^&}7e6q!oC6!m5GgfUnscioPT@u7~^RaJMtFvw#5eQh;+%-DY6E>wRIa9*ZnZo1{&g$&Y`MRsotig~EpEN^^2)qgHPEYzy zOV>5AdXBOz4M^4M-Dx(~>Z;}@Rg1i@*gCgS%cj!JX~T;<^!A(mMIg7j;$1pr;JVhc z(tEtBUW)niVJ`k;nB{!rUc`FrB5Kn94d?Ekh2i(_$$@?ToaFk)G@IYI;P1yf*Mvjh zGK-en2H!q7zBuCW&b{}UxhW?1!eVcIUCO+)eKAw!uy@jLZt&(0p2#gIPo(Ap7>50| zr~2zRA?fMXtp3huHA|#hWPwi7*c-ODETYg!51%%0n04xAiDyGDfE;PPJ~wFtqDSyo z|8%YO;lX5UYKBZe^YWbGdgUc{;fbs@*S<)uI}(5+B`7D;x+e|sL1Uo0AZ_d<7L7@H zLCA;o#O()GDttj+vJ(kPrQ(YN8Sx4s_*s(WaTC2=ksF2<%Uvrkv!#>sJ$9a1PqBvZ z!`I9ET?l!b0Q{R9t>r{fdZN_&eky}1dIQc%#m0A_ zZYg>8Jqt_yCeNhZA*tHjYxEb~ux)41CJN(i6+tk?@EbnIM61Cf!W-9wc<0kdGlaw_ zv*@ySsi0jTGod4Ul)G#64JMQUOtrrjyah&(5DTS{*FQn?wW85!6H;|LNiFef9M*;) zy0m%h-!n+WAeT-;kbJf-U3qwaV{)I1 z&=2GfbPv`R-`E}O5a2M|c+2^vDiV*^8RHd#?ocp|8%42c)+&zGmK(Hdy@VxfE|mNOkVvz}>H3x*7= zz;N86cpx6IeZMR#Tr4LR3@L97%H1a^*K9It59g>uY|l;yJpp<*A**RaQ|qjr&BD>% zw>WDPut)OSmL(CQDk9`j4nRKxsq+@Ag8#i)<*dQX#wZLfMCW{8yW?1yawoP(QOs3S zSj9&a@|AQ=zIcI7pr^!Ws)DqGQm!cC310xk2qH^NcPtw@Tw&IyYR|z;Sy2ZSZ^H4} z9@KL~a!dfaHXma51~+(V(Ne@^N#te~fGKi5xuaQ1RJ$?mA;p9ng_87)^Ddy!H7Iub zdN<-fhX!K2@T-5v7XI?iOdN=Mw?<76q48`GmJkfv8FHdmAg<(Ti5`iT&%(hX<_i*~ zcMOjLv)O{bh0(2NdO8%oRoQJ?xvWW|WtuC~0G z2e77NfPCwYug3M>5IlGY)hA(;Rs{vmo-b$OXJi%No2}0A$m1vi5xpGDLX9`*h6G>R z3l}|J)-&^>7phI5=|Es@CA7QGZ5y#OM@L6jjHd9n^4>vIUzji6zW@4szL0jOOh(aVxyACzy<#zy z;uwu?`?If(kF<1Rr7Yu^9HYMJN7-#jRcEhHx!oZV=ugS}7&GVk1b)u-lre^k1}?2T zLWClKhDEtRTV$Z&n#Qs{OvE-NIR!Mko!e6cJmK)oqnHdKu%?xxFoB=%dX26nsET@p zayUIxWH9DR7mYOw9rCU+S!8KY|A-@^Z6LyXE6OYW-Qk8iC}L1#3`M28yt*w3BHRO# z{F54jm0ez(xO?!R6Hckm6a&RWbaaK*KW1$FN ze|(7h6f^}$4JQ~0XNi@i5X%Sus7QY4fL7)20L8^Sbx=w~4|~mIy=DhWwVHypHWF8i z)zOwR7PBr24n*d;MT>fr9ruJ}x{C6n3m{p8Al@scP-Ryd?9YStitldv6CPhI(|nbh zq&`Ak=0(~E)3)DE1*!sYNJOWqm!76SSFGa?rHe$hzO3pv7}bey+ZpasOld+Vg3!>^ z>=(TCp`>a&ub(D!V+v$?{FtjZDfLa}mk~HEX+va>+@ykePcu;+Hx5Xl z0}X3z_j!#vRfs8GWpuUiKAWBOZ{K9GOaazf99Auuk7?>HP~5tIYBfTIp`|3>J0vdG zEmxzDQMmZX3UH!i)dUEk1inkfqir~{_iDbcYF^uK(a#kxCM;1ZN?gLg`Pt=yuD1-J z4@qaUB9^^zv%eM-5`ws3I>G1AV}u6bvPeg2*G9Z~M=`>5d2J|*l0qmpsBP0-D-xhZ z6Izx&cr+#`l=3C~&AZ2#RPu8nTV%b7?^q;;qbPj&}n`MhYSo+{{Zg)g38c3djayBX*8tSef;fK^K{Z6Q5}i3;r9JBfVoCjku*Rd zWXQ*Q--ag^%b-f4m2-ZyJ(+yzc-p_K(c))FQPCR3hTRp#BHKJFPwX$~;RUC2zVR82 z)U0aAU^vAJXUzU7;?OpeQOl>pAWELYz4a}#F74gX2!wf$rpyJq^4N3ht%=0A$@9A% zs&-F~;ya4r9$9yzO>MQCodX6i;jlYGv;CXJ#UtVMvUiyZU05O1I#iD~p;qty)^zy( zm!prPyTuLhk_SET(1avcsWv7}Bx>U$wjzm!npUGXs{h)CiF$`6&Uoqlg4??fPt4&t z#)YxzKRzJ>?2&=xhFB5_Y}{Kp|xq@N$CxG6MD+cW=$v{acjEiAtoVf;NYo3=X#yP-%Vu zbFjX^VSKIEMn4sUn)#$qz`~P@;3pCB!;$nS1_ze63k{@-S6QT z`4n?r-FMuV%x6}-lO0a&@q8HxjM;+_J+LGf50rFydpnNJkykXHJrOUCBOS_jfJHzP zE7EKu@m!fcTltoB)3?Owc=nFn?tI|EZVR683!;<|Qb`Fwo}0M0I@}dqG;!6ay}m#y z0e_R*%;)J6&C|!mMwj9T+i~B{uMXPKUc~n;Ogs~c@wP!@iE)IXK(s&DNt`(+y!bwz z53PutDDCZQwCr9q^=vy9ez?-<^R%P-gos2Ir_hh6e>U-Kn!LK!0hiFT#1Q?Z{$PR( z;eN5nR`=$3|MsdvJq#?w{xxb(;1KQCxymzZ9uBx8c+~oVaP=CXNR+2koWtDVI9GVF z+Y+xX>_@flg@oCi#qXU8w3$>t9>yw`lLDcSl(%Gwavb#rPwG(&l(HkHiF@2p$kHN= zd=mO)XY0m>a7!zM^El)d(0?Kil0sVA1X`>wuo1I0VSJx5l^vHSVzGJu` zyxwu-(ctJ}*Kn|$#lFIU+gY~;{2E(l&uDSF=%PJ`V2CIwxJ~{2Q9}=pKWmDk`D)s9 z&k^(EZ;iJa`ND>yIpcn|I?Os|-FwgOf10__u|1R!(D$x|Rp{*-dxyXs2ag4F+ly0V zELuCI_bSp^QZAsQtUI5y3dXZ06Tp^7bV;-ZtP=QTNe@e*6nI)JgH70>I#0 z4C{~DKlBIX2qZTH85%i#r1%Fj*8ou>_{)#3F2EVUhu?c9JP7v(6W}-R_@~$0NrVE_ zcFkaV_L7^_PZVWG51i9zv z_H!fuzh72vDBL>S`9HiY6!(EDq34A25a2%XUIzy1&J2)%c-ASI2u zFY%Mj{3RXwtQgxlDx-wZ2uOs#H{z(+Mvo`3RIme6)6*I6DSfteW4}DsAY@leqc}J{ zq~?{g?N+XR-Iv58$<-cBhRT5YHqGRK6v+$YSd7*__T>;mLbk2>D3VlHAGo zQ++Vf0j7hkwm4d9O$|~@Zn#YKQ8NnwN)qO<0=lutDy^m%SC)7xSuBTjH~8q7KQ@U$ znIRcJ=$=XhX$<(Ne3?EGP=%C*%al)Uw%GY{6MXb1IGK$PWeU|!mV*AI9zUkyOwCLQ zGJa)dtEAj$2Jq2HMlD3?3@LHAOxYt`Kmou4A5Cr!NL_nrkb#f9F%l1wNqzTFot*+T zDbW9pk%IcltIyST->+crV0Ah^iryGNTuz;GQB01Ns4{UzY<6PNR_~;P(uCui7r7a=9o~ zt6;g-yCZ(N`2&PGK6JLUBDPrz5I$dpnt@3C;~Y>(P>T+LunBnNS5A?P=! z)2Zbc0U88i$)}eS(zWMsNd0qKm-`k=gL+xY4bHgIwLr(UFRS!&-|3{EC`;n&Rjt?w zjaD}|cKPWvAA|8kLJ`r$Hf<=iWmL&QS2>Gx5bhr|qxMfv^(4mZcitoRAN9nEyRcsN zxCnY^M3*H!NY?_~Q4j0PqqzZ@OdC z8PM`|UOeFQbG%{=s!l$prOxWE047@F#r7}?VFqI*S+4ohuJS4p%P2bD3PBG+i<5pH za7TeGZlX{mZFWLMzJ7nCWIDKeISN%_W()0^u5;|~IQj15(bu;Z+l&J0WWjqxpR-z~ z&GF(E@W{lR>}Trks*{n#6FS9p20&j!=9fRli-Kqiye=LyEiX@QKwp)aR2Xb7p0hw- z#R5hMR02D%Uqj|C{YMyzuU{9nMdAsDJ6@3KDvg&I@PP!Mp&n_e3v+#244kEKGy~w% zpJgVh|2u=1s^ zf%h2Hl+fd?&9KxKKVXp4<8aJhIn+2^L=|bZ=YU@;(d}EE(7IYa?22XxA+W?ERJH{c z0&Ul}^W@~{U_Ul%{#6w>%0XfmWAk<1llTgdqIzfjWd6Mkbod0df%{;x)Jwb+DBS~U z+C-s5mZ<|U9CQXaQMX<qv-+u{XdgR{(}f3JQWNzVl7@IT+|04%D3BHAn%iehkAk zp@5!np9v3V1f;s6AAKPT%a0sEU=m$ z{g1K0J2>FeC*4ZwPycj^zs~5lgG5mP*BdMWd%w>`_A>-HrUMJHAq-TJ{v|HB0q;%( zzSbjklvDNEe*-cT$^wh|hu}ZU&wss$AMd-fgD=d9d2oOyfA;c-haI=lvC&zYJ)1uKRp(jfp~&|tp4YDa>`v# z{)zfIGu8n*Gq#pC{2{_`zw`U=|2XDcfj(zZAY=l#&;PqA|L>;!-?mdcfu``t#rOVb z=Sx1t+vv$X9R8ZdLH}ZE@NT%s)?Eo>cx|Kx5_%@TYVdKqLD-D)BUI#uCJ2c9VjQjBm ztbY??gCFgvLG8OJ)jydMY#G4EB!j?pO`C^{Or0XsR-WGmLU9FV>v^9ec1y4c-a(4;9~Fo^do<&yZPH%sX`N}{GR8{KYBF(`mKNdO_Yz&OGpE* z@PB0Qe?5cm^PwhuMCalBzsGmr1)%q50G#UIvmoI6Tkiia7U;_e$dne=Y5jKpPSO2+ zOSnIUuFopy!}uRL#b3)XvkuFxfO4?3UFV2H@E_J_=O)_mQM~iQibk{F>c{%s`4;77 zd#p$XW0mwAz_87}%jbvQM#`RZ8)S*uv~Es6&zO_sx-Oyl_eA;6$Y{qBEYHd5T@8mn zZ^^H7{Oy1MO4l@~{GSFGzgFm&8A?fYguKkkCu}_a_YoocTNt209-i#wfj`1<6A(u~ z1No&NA7O_FrwL5Q|G$?4?zDrW=L_~fm+!ad{f{?Yf}r9pFO~mkPyQ2v@M}#RVxh4M zd&9#Y#e`o^`oA1-@?UeX{?Xw4Q$YFazSfF>Tc{eZ=6C-$h~_tg@bg6QpF$x5VQ{Md z7i@S(?=R3^mA=pBm@7vdPU%3DO3WP|)j`+dAtE$Fgbf61{&hZ05KtodXa0x;e=XV1 zgBc(2TX`AyzxrDKzG~O+uo6P=JTdgn+k}i|i#pq#E@XB_GnziZqPGa*TMQz#KoE+f z@#hV|BFD~ENPW;1!A@ks@_rb)^!Rt7_jM`-isk)Fko)Ti_&+duq6wJ*xKBNY^JQEF zy+-hb&q-1y%Qjh7zPjB(Cl+~}rIIVi&w!b>9uLI)FV42>Lf8~#+CLGOcht({s`v)r zun-I+@m_=&O;@kc;5~u5&Y4#r<_@YE1w8)$rumQOlx*>je?8wUYSBJYC2PGlSXd*e z#1Bg*lf|1Z5}yd#hFxo`EU2DF*-)>Y18AL8-lwD}zf^xHp$)C&^TrVnmd@nsVW-Kp zEq+$8u<-E#^laJbt}O@Xn*Ud{@Q)1(eE9#q5iAta@}*-kTTIvKiDO!P^YQ76SVk*v z_R|%@bQ|M4G}_&~)GFr(Uy)pKS#9{iV8{>~z{rl71rx@hCZANkKZS}u8vPw&J>nugM;x}xz3MAm4l8twp8G$kuc@Wl7Eg;xedIZ|5!<3Xk7X!Uz8 z%V3qUbFy3yu9GK+M2h!d5s$gg!xyfoEpgc+d3{S=<11sO>lP6yEc2^wne6eQtYv_;~K=$q%v&3Ejx^F9UsnBYucqZqigA|{4 z5{*_T{=OL=gV6-HY`#k9JHX=MXj~jGHQ1COIb0heXExbE0aXd5;huSi%Len)g-@a@ z+4)6cyGcA5DmBdNLa167=hKJl3{L|c&+hkv5e`}oKz%<$&CQNC?)8TU5{LTIn#UWX z`xYxZsH;8E#F&e1pT=9$?W>zs7dygBv^VW4%?_~~txpgycINLx+oj3mlOC4pPJu(8 z6bAAOR%(FcreHG|^#kfKsmKOn$a6KA_E;9oP;$kn{uBY6gu73m_T~#z)?%ZV5KznXM*k~m8;TGz^&Px??tW3`le9bku>>RRIeey+9Mi6_qe9E z9vROxp(uPf4!e5L;U~08s~sx7I*^)NZEHRNEZqTxXFL;y3S)ekb8!R8%EJ#)I!#4Q zBAZa75kev$Na4d-^Yj!7lV`{E(E>?o*O|SchPbmp+hVoT?(WzdO%Tn|u>rNbhn45l@&dBz~!Fakl zi|_08n4L1HAH7fT5Ae%x(b4~QNKqj?S)oT;sy8m4wm$a}%vIq1n}$1d z2Du;@U~;#ZlPtHu6^-1A;)>gC=&Jo<>Jm+yq)fXG}K3>vHlEHPyF zxk1^1#cVx~#^Vk7QZrHvs)JI$dE2*z;bxr-vU!gW#<%MRh}1kjoB)@+0(HqV&=hbq z8Q~wmvR{t+{~)$8lC)IoZa&QRSd3w%*#--l>FCwnuUholRH4Ym={+-$Sdr2i$)8TB z=XukPkK`bCW1*eR@ie4pvDM&dsbQbr>Crl2?uN-iAV)1AB#ifhc?FtrLXkB6-Nt2N zpodQD8wI@nU;(=+4#jQtmiidfPNs z2UXU~%%Imo-t%hv>QYn=V@x2DMmy-q6T(kBCZk|T>m!I)dl)GX(o#=faqk>aM}|&* zElr+GE*72b9Aml#M!^GE+h{aJ+O@5bA(V3yFuJ3fM-`JQuaa;nk)hOJT*33~JGQQz zN*3@4!Vfu`TU&4;#%vD9-u-F9^XP%samKgnQG>4k0O#5zwSjTu<*aJl}oBsu{%Y~)e6s#7A}Dh>7`l``Y2LXT4HNslyq-I;{MM(&4J z6uqN0231oSt5>@%m?5NZtO(8tQ<8d@H=7ZJu(K2#-(bNBM7N-F<{-u|@WvpYWZCDBg6k$!tB- z;ip@G0g*_^7tm%?X3+=<{ARh`7ac~WNN@p&6DhY3*9Cui>L4hr!B+oYUzyO{*}ISE zxzkGZM`Lc^U)v7J*DDS?=n7D#FPN ztSU1*t-ATfhiO z({;mxE-y+ybaVNUz;eayzB2eTNc}z4{28z!&R_n@9{=%x8(L%e4&8vu^HO$8o$_Sj zSuvgY(#6+SCXH$DV3by&&MCQb{Idpmsz9t@T7w|;THgScQR?HP#==+V98Ro}GK4@P zIg$Pyi+9e(Xi@*EW%g@UAc(Oco~d{gcbm(PnS%`%3zT5y8jofG;YaH}9(#%%a#Zih zJ|?3cJTlf`@|H47ACQzVYUP80CZDWO8>0gY%JY7B3V*@#|25T-eR%XA@S`Xwev}T) zeDTuzfsO3*i!6@a+oVw_*XMFPI|z}k2bTn*1To;H7b<|_Xu?9R;{$zj|@9s|9==YRr{ z{pH}N6~$=2 z_zwsZv{!rsiZJ!Gh@BoyJ4>#WJW6FG5}0d5XY%P|37UHEfdg_pj5Z*Pfd>TQ1Cm~U zc+#&18l=ANVNyWjRJ3_2)v|~^Fra2`36GFBAkB21*k?l~H%hXOz2-G51uPdb7JX{& zxD(2Jp>>i6(vsN0O5Y;7^VNm5U?j5}KWN$ZX1RwX!Yc9>%o}6>c7HynaVbQ;OP}IZxq<=Q8e@8~Mx@>s#FQc&AL(?m_@Pz1 z=Q;TOaA_*lT5h-tpAQy(4^{g;%+oa^vGm5OG2VSE5YT*SH259}4`)Dp8SPu!!t0(- zR@h3W@C7^s&DO(^-2xQYrhv23n1P%}l9@u05;R@G3Gl92(%IZ#4CjlI5wroF&ZNs* zw|zC;ZXfC%Kj({~t#?HWL__C78CiaAKKyuXyr+MVaQS;k2YvN7Zc6gVU;hBafg8kUR@+gf{ z8lZ-rE}M?la!>sHcvn*aIBxGIDm%ssX9gmHk8+|u>w6g48OmoOG}{Zi4d~P=O2PM# zxWxJwG8Y|1;tp`6^Q5@CJqXXf<0a@1;lL1)-{&Hi$xAESWcHz_7-V+b^G>XZD**8z z9B~|<2`rannov5|E6)$(B(iyTyCUf2>xiJ;shnRlfTywbL;=s#apKE=uIL>@d#4;6 zJxs5C)2|TaZwHA`0Mi}-n4|l_snEf@Ao%DwxUa|{aeA<-IYw5bv(26*UYti!Ip-XZ z#1|+6^`anFZgqfsrqi1UqS0x8UA{d*@cng){b3(D=(PY+x{0u=cMgJIXxt{twjBoJ z^AOo=c7hbj40#JRnv%fo32&Fp;BE$PKslz6mLf-UD@O?)*H!VqkDHM>}))dz{626?mksQa0S!1_%>EajpHWj(WLwyzE}z5xI|f} zS6|RwCDlL3n3YPm5;o;Hz6mWY5J0N{JtY6_9b05Eb?z~ktb-S1$qrRR9WBGCIgo`V~vM|mI`f_n|wK5k5RzS3B}#-=^!(_Qlm|M z6Ah^F<%wXrrhxbdX~*u4U_us36~;gtB{p{td|l`y%u)qPNB;EecIXntAYoE+0gGp@ z-|>ipt%7jx|KshggX&DT?!gX$KyZS)B!u7z!QtQp3+^6VgS!T|;1=B7J$M8N!8JGp zcMk3{&q;UZ-ut_EzL}}-)>L&-r@H$OIPdfBXYaMvUTYVG!BN(79T0$9{{jWimdo4f z8>M5hQmxk<-PcP_$$f0th2#tP^UR+$%L(ATbzzkK3qkbzef*0Opnre$|3EqX8dzYI zLwY1bnNl7%DYt`2E{~I`6i8T)Hgbxd_q-h4;W`qD7eYW88lgrJxdyn};8N$pXyLGdXgx4F2RA9J!=#Phv*6B`3?xacw!9#dM*td=&Ns@tdQ2=1 zQo-U}&2zom`Nm4k9*2@}RVPairb7x=Xh(Zmg3hdY9%ju0ZO*}?Ckc+_x~+z^8WPF8 zbvT@9e2#HT9TAK(rCN2busKf>R^0^a%#{meE69|Zt?qMs-}>eSQIxwM{b1bs(TY#X zX(Mh;$Gd0P9}}?F@8}|s%wc`+WMf=4j>A+gG7y89VS6ijXr;pdM8hy@w8X9TCCMgU z-<%W?lmqiF-1L;mFif~##Sg}s@WN)g|7!8`ciW7oSKYh}PdSc!S}c*w`ViEs5A)zn zqzLaNvjgL6W?h(M6lpp^siwdnJYv2FzfuaRwlP3#UVRyd&^V{7n z^QB-tB+jLrd3IWy~?hTf%AQ%@^@~ zL>U?hl7bmGP|ratoWJV3NAf4A_qDVlhi(=l&7S=2nC@`lC1LBKSMvaWN$UdH;>}uo ziJ!!u-MK&ez2z(J{L{7p%xU3lZvfn5!jwlyJ|Z0d($)W4=|FaZT zCXAV)7$TLSWY7k6^y}wB^9!EdOjF2+<~uxcqh&u~PaTTlozuIO|-!?ot_vKau<-+g9rU+LDv;Zb2oLf;K8@TE9KRVsBMY+8X@bB)vA zu5au|=Zt0QDawPROa0XFA2P>xvRH4JO4+jo=v#z}?C4G;mL*>ho$IC)DK$lZ%JBrujc9MMVeES9Aay5}Aj!9cXGL0KI zPdq&pppeoRN2_&~gJjH&H`$$1n@gQx$pjl1>XF{e;)(2xxU@TBqM_&CJxY+ysyr?v zOQ@ppL2j*NDkqjve@y2pl-S8rB=WZCtES1wlQ;%51<7J?v z);&!87c1UMl>%OLrE~68*#VnU(oZ_{dd3JHM6MtdoRsp})}}w-waG|FW^hV?oTTUr zQl8p8fb90vl2t9|OjI??WUxzI-{OsVJ$e!>D;$JcyG>;Dj|WQutBrRQ;K#ogrGJJz zT=4H%b36wuYI8b%--BOwIE4q2%heUPN8uYK%zZ03EHI4;WgZjOAm<3`&fe-$gs3AVbcfLBt0*(hJ_$d-$OO|R;USlNwh~uW zgDss+^l-JP;?_b%q#`X;jK_JC>FiJjciw1Uiz$_7Rmo%L{2`zx(gopHls2_r^%ISo z?q}ZX5F#vjzB3ces<&iVLRHWriQ5}?1!T$jSq#rS;{a3xoM0u__)tlwpPc{kPS7t1 zhWETR=L!u(BNYiJ`hgz;6!xPa@d)m%fik5*7iz8Jky}AFm_0{A<4cVA!rDQ!Bkiag zAObg8O}n2%2v@f2=A`tgzx{Vts%yuZpNY`^B;$|Zm&evhW_ zoU!(u?i&DKzirpgmVXZLUxMB>v{!r$LVksC5Bd}{8bPpyWzPLLA50=4qD!$I4c0S; zjc+VHx?Y*O6)H4RNhfpa$P$%Hr!-LUy-o3>_hT3K!<2EML(-^rAavZ?!F+Y_eItdv z)G;}WE-JJec*`mC$;ZU`%ARZ~Z#LWJq^Sjnbb+D4tZx!3qAG^In`7N}!TqF3l>8sZ z^C$Z~;B&TJfvphNEiZD#VZAVv#^aoJsZsl;Jl2_18M6Z}#dMg@(Y(NTtVAXol88cK=uWZjDqf`d-gNn#7=&Una;FHZqPCr%SVO4U|u z(Rsfk1pC|b2riI9iVSu(+PH}SX`9Ffrg6Z2B>Vtg@BxYVUxz`U1NLuCVE4}N2J%xg zl1sDC3$RUf((;D=&#!q=_|we7#G)`lj_*5X?BEUXoYY&q{GQrHm!D_AEU$WN$>h=S zxdwYGqmHH&UxzAf0((?@<3Xf^XtFch*`L6)48WDF`nkfBBgM-0TNB?Fcg52%;04i% zEYFic{B<;vw4mHK8Ev!8v))clO!y*Ms-@qLSWom5Xb|nUi$7Z|w%^@K;WO!Em(RIL zVhFUD@Y$KR3sPk7m6*t62pRPzppP*2rL;%69i#3ObQqwLjb+%G>!$-tQi;J-7{Zal zVLf8qeq+49Jx(%nR%QdxJeG1 zv(X?oonpquUvve;s*SZAqQ+m`zdXyr>rd&aoff;_|9E9z&(DZ(p%)xI)49v=>C~cd2IYwn@Pg7=-L@XK=Ntz$E3ig*gS7udw5ngjVc9-UiCL+2a9ToVL%&-pC0XS_DTl-exX4U3amn7 zp#7)r^`B>h|5uMTbA3=(t{TT|g^DqiKPVKBkzthN1#$moz_$pJO#g@28xpnG!4ZL_TAMvZ&Xr|AS=X5%i*#ooi{#Q>zAfaWF8Mg_56S!SRI4M<-Er`UaY9= zMvA;e=I|{-Td6=tc$gZPKU)(5xYaS3;+r2mQt@Bl$9oR1*=JirRVBgrbZYMsnACs% z-~}7-DA;trp>O|tuuh&5EEoK*FHLRCjuOSzSESR;gSIiO86*7#jwO130Yz+59c41* z>0B1*C%YVSaVg=~$LLHKSEEgi#NQY0SgPJ_EQ6RE;8~=Q%vx0FR7P~%iLbk%yc#cy zo5AjxAZ`MrBiG2dI5gqbL#Q|vT8(r|FkDxuNC5=cQtXAHVF6aWZUeX{d{ipZcRg(P z2-sU_mjyxP)a*DbFkG)-v{AF(RMOJrTUQ*(UybCGB^7>OyLPYzJidna=6a$~4?+_u z4LUg*>5Lbe=;I&d?_VB|ngZOJ!+L%w_q(D5PoWOaCgc&D#qPs(bPnbrV#Wf zR%px?KMJ`3SN^yN#GF902BVj@o1C$gV?N%r4 z(ue$t?bnAQI0r@Bz#{xdiTsIqd}q-$rgo0DH~$qpU?6YMJWxhfZ%RRD07rWwN@&f$64C&5Lyv0J);&n3i`r~#N8SFEW=v9?y z?dH?q(H~_!$1Q*zQ;c~MLhJSAiCaRiMNCHs@b8+-_Bf0)J8ZO_5}=oZ8i5P1qbuGA z!Eu^2DMi{Utd7_v8#Qzy+Di zZkDTJOQ>6A$5!`tLOuZmRs{&A`@>F%-bjNmqN4CF#XBFrz#)(w+NpGTvMXJt!H(jf zu?2mwbFi_Y7bGyR{58|YX&mwJpSo$7##BWK?ht6W-}n&xb(lmrVGKz9%0DA+En)8( zhzWp(L3 zC*gb&17@~N01JnHq&xrl9t`Pnz7_ZVsTdgaeWJ;_-rq#L3MVU}3F+h~d}&N^>SDh! zgq1WHU00H*IFQO^m=4RH$q!~i1*uk-;O;Myk6jzN!r;(taH3uvYMCz-!cuII`A$5+ zgyk-c+$St&18tC9xW{U7s`a8gzS5|BXz|NcB;N}>?W%K0w48763x*B4LKyg>(`EA; zPyk|`xZQK&^44yBfVu@4><0Tx_F@GAu1(1{smE7VATr1G{9>nO5Oh%A6a>0%YV_#% zy?6RInjgk)%q-?`&an3-LHyL7tQAp+r#;5#K6;(<6z#?ZN(Qy_`LN=>C--!aOha(2)JZ7+hl9mi$C1d-@ZX3uZ)bd#uHgOy+D zB{5<5Ae~Ynh38TDSI!sGTS~C5JQhq2os#{Uwb}ie z_20QR^eK`Kn6lkO%txE3Pd4YiY6a9=U42%;T={-e%~`Avzoq}0UCz+wb*^~y3duEc zViX+dKrIU%gGLK$8o#$-t$L#e?P`CDW_?4b@{k&jimQHYJm9f&hni1o-;7~I{w+3OXth) ze#zMximP}ik07XAqLdASLB6xF9o}9+6?Zk*R?>HXPOih<2|~jCF$fr==hDnI{V1A{ z3tjf3%3d58Z+!&4aDf&eD)%h|0mCTRz>dzQ&XX$^J<4az^d@gbQMj@Z!-S2=!+|{e z;0~3->t8R_^ns*TBTBLDw>9heT`Dyy1W-WFeCd!BAk?b^X|XC54#BnO7mEu?4ufJd z^_H2agd-)R4x#Q;z_!XG;BYnda_l9@t~PLSI`R0$!Tt&Se)_LgCz9=)P*WndQrWM8 z=#LOUyO0H>+hHHAW;wtZLBwt8->u2%jgHHxq1Hhooi4f48Ympwg=W_M^B&az|Jbei zPL1cxQ}ui?HJmsmVLS+}48wYCFBfP`!DNg}re$bEogFa_6y)Yp*@SiGqv<~?7M@vD zRfZtQs89k6>@5;sw|0+9_nxuMyg!U52Fl{NgcN}RvyGpZzA$wYF z4l+bBTPOV!b=yA_!xG+#vJ)f7q;L;wb+YW1Q*>8X#Y~loS~T)C70~2;_#%V}q-ru| z9QLH`lW30r4 zBWW#|4v7Uv?Fm3gsChZ;u-pqvHOdl79k;uTXtL@U9I)g?mv1gl^HmsA8Vfg5%R)n@ z8!Ut&?hf(sN-r>=3%zl))V;SZ2Z-9uUTJH6XqY?uWG6pwArGoTrh|BVGuc2oZLi91 z2PcCmzne=t$;--a{%N;xV*X)@S%sNO@dDwi`Z#`F9kv-G-a=nsX>v8xa)Bc1o%6~| z%5fXMv}78eJo~xn8~(&)J0BWfikXNyp*d`mHz#uFziy&m@Hb2aaTEkFBsn?M%nE>sz#xKp>1#WwkXGc^FXE=NjTEelh|pDr3psxH+13>}R<} zkDdU%`4T3)S2|}U$52IEDCM?x%Ze_0 z2A(77|0Aon&jdGb^#)Zi${E7^0qs|_BXAB5p)J`?I zLX7%8e11{6xgJM5YBm(5N7dkVQv5|N3i~rId{R>ZTM4X%S)@kd_BcmUF4dZQ z7Zf1qq3<5D)amO1*PiwG$?rDy_6U9!7yf|nZGZ7<9D}+-uRG8-0iZdTD&U4;+twJ! za&kA;uLHuAYSrGYr@btQl;2US(yFhclS8;Ju3RWC=aR+6KG~QTbr~AoF4QN33~o)s zfTXF`lvwf5?PAZ5kC7BGn0`WLw&HtB10Cq0n>8l264*S9Y9BvrDPIYv&kT+{cAJ$y?|+prf`mI8wOxP5W9$0DKN1>kAzdX^|zRf za5P^g*UqR{4vZNg;pFO{z6y~+DuXCaaXJ>)9KE?qLUzhGO zt!BIEY|$%!7NhSHK>Ub9h1-U&-I0?KdJ70I$)xGw2n0wXb6UgR&H||56+1FurSNkkstV7CmNr zJ2Lb(-A(f!SF?xTJ9W(3o1p$}W3AD7pJQ}NzLL(lF zHQKqSgg+HWr=GgjmrmI`7Mz7q25~Q~McL_$6BQ)c8Y`E`5kqSz*>fTc>u7e^rA6SH zwfRofe^sO_$Y@Lo3>rtyptIQIpX73FC<|mRY~JyJWMmH>W3A8Fz*GAReZhCi`+qmN zf52c{tq0L1(|MC# zmtZNs`J$r^(~yP=gZwPgaAKZN^B;xz=$klaN|-p0&U$0F#u|wk)weh|Jr=LI;+~l4 z_oNkMeyFhG<#yhK+nQ>w=;i_Hx|`c8MUY_ZE6!oAmH`NjCrg4CwwK3*$qvac_{@1zc9Y1GlN>Rl6v!SVm2J;8x-0t00w$Da|&#UB)#NaKxKYqd`+ zh?8i6WUky$yEbBuWS2W!uuQaMxEK;N<8k9C#O?4V@>sxdVzAZyjMn0Gwi?;J?|U>P z<#maEI#U{tLgE0r55MYjclIT}`{#e$vzG%MYoP+ruyH$G`)}l1XQYpTi_JdqvkX62 z0vj>uqnmNwo=)O+w4@nb3kGjQhPRgpAq#@d%d=%V&&@ApmrG&H3}Had+~NEBZ&`qk z4XmO-9R6=vR21kBZ?gyYECsTH3a4o`_tH&^8^8r1Kw*efc`yL37()|Sl-v6|)yGYg zm3((mmB-bf9?2`cAX;p4`l0_XM)zkw zywLI-5s_yxYU_<>*#NFB`1KIMAP$!fKRy>e3HumxGyS6ApGa6r!oTs;kXie$&uy*q}t^5JgbNyIFLJ2F^X?=Q_z^uv8K@o@yeN_BHyF{fwK$VCIxtyXt5Y@5<-@IucYaasi_KD0y^iFHn3xD%L@udXZ%FvUgVtcc{xnp72jWrqBL!5cVNl z-*9y!q=Kw3au0u-n!lSU4Y-~YqXKNspE$H%;_}Qgi1R%d1rwVSHu~i9fcQMT~ zU3IFFx1dH0hx+wSl+RLkF9iwzsx@Gk`v4oYpX$E`VDyU5pDKqxkVKySf?{T2Pz-a6 zW+Jn8Ad}8Vih|)nGwiMLg2>m8;o#`*;gzQH+WNu*yr!y6Fh;!J72Z%-N&jrn_0F?Q zV(I;2(O@kPW>~|^cDzQ93*>N;7t?0bAfmRftJ7_Lj&->P451qmk>#L@k&yXjg6+~_ znhX#9=TDB14!u7f7~SN0N@_XTB>IvFm9sSkrP+B?s6?d{=cL-OU-ISpK$a~3 z&Daq7LwC6Av~%D<|9RJb*YMTJ6S=E|XO2OC96{Vxkc_%Nge-LgnD&zzw`m|kEp)Zj zXYr9-$iazyZ;_3xer|a5(qteM*%+&%#$=GzwWl`wb=kMT5JZd}cBkSz&;W}Pvs*s8 zV6Y$x`RMmu~=Gh+uJ6jwLKHv@dg+qqM}LKep!_+quJ7H!A4 z-=xGjg%7}UJbD%L2Qmfy?)yJ3kR{FItTG@r1xYm1b(+}kEz=L;03h z287>grpf1A?v?6i28ZfHp`y^&U{yl4u6=p^yQbWZx+{tDc|~N&sU8i|r6SJ;fHsH@ z&*Ekq?MFZ(c5EfIQ|v~uHCxo`q$Wg@=-Et?Z z+5`}Aiv{v~+4kE>@GCNDeBo3e8!YO8=|{V@uG{&~EOBb_sCSp>8&IWhsa2+*;iem$ zGrG&Q>X30&MLe!aCyG1~H>0grHsp_|)-zI?D_BkqJGYg2do#$(W+FR zLL9bc!xI?ThyY#uwNr*%e-LH;Ta~}pr%&nmUNkIGa`2Uh`2_&HP`x?ymZ$N` zriUU(n?&V6z)D*&dLd66~D#KpRB&z(~j zgMs93DQs|cfuVoiQBAzxzV=Y%>--~Pb9d7{zx&V(uy`uAc0xB6YRB$mL!bjHP?L3&r*Pwxdz_tV;{Zl`%MV(kgVS@11+?- zWue{m7tjWVJtldLH8v%R^TeqxRus|(LKZs||n#l3LM5vXL(qt*t~=uKQM zzqkVOJNb2xNUlQTp~GJ3*HIsy8|_BhISHUBN!1UyM(sZ%nUppCxGhVhJ4z^}`R;6gI=Vw{0=PuF4T11Hf+E?QETuI?k&a24r4sCqVb_Scv ztr7y9i`H(3%RWGE*|Vqdx@wG-D^>AIC-Dl_v+^@r9w+md$hh4uae-~*_m`)e5|$s; z>$Rw-@};*ElPO0HvD=LiEFwr$yrD)a*2zKNoomol(p!|TD~_)lJvA5x4%da1 zx`I9N^aZ1w9vU7XuD-MATD3yE009M`7~Zm&A~>U>dX-KwO9UHV%;N`Wbe1TY1C9AKW11(a4&bjDasbVzhj{25M#22|=3 zbTO(kDRIN6GHxG%{?F;TJQjquyrn`9iy!5cOGO8w#Nh&Rr0JCo-Vw=ULs*PCV(UiM zFY3tY)56b>o{iN;tUfXtp{Hi7`UV3v>jR^gC-=N9R_b9hKG2Bbg7 zaT}j}gtJMZTpVxJgaPx7XI6*NmiQ$ACBy^oR2M*_17=6V0TP#=))oklJ(^3HX4hXJ z<8(`b9iEX6!514}G5Ck}uCU%tew0A|+(>>p@O|F(*j3|XH-f?x07}c1C8`9U*^K3?SIU?T$_K z0zrAH4(*oXbdpJQM!_;)EY-WFiU0NjFfF-7><0@X9g|z{s_O1+rkV_zjej18B;RC& zUx6o$-+_H!Pj>pjx*m|PErYB}=@b^Q5lpbi&I0Baxwn%|0Sab!RYiz+wRpoKsQmM2 zoPxIB(&vuDPczby2H;_7mvzO;7%?s@*GAqnk?eEL4p|@+wddaX%_lNdA@0)Qd2ekV z$Amfb3#Sjp`F_V(n2r)cSjfr%@NS-7Cy*cf;6gqx2W!7D14KO!X zDribwtax}mg*0T@ZBm{pd}Pz=vdBA}p@a7baDv-YHS0=cuikRoKNX;8vD%gFiH7{l z!~%tNHqpHAyBT_el~%%)pzPknaEfq8+_R7aYmzMjE$G3r?lbMcci6oK9p^CvsoYQf zCEWOZw69LcpZN1Tow#^%lSMH=8 zl*BZob{io^C*}@@F(*5=!xh2XjW(XfIsD!p{1X*AkLGO1+$oV6#){R`fW(ndjV<9w!S zEQkpm?0Qcs+X8ju=u74b?}=kFQ`g2l0;@f?UoDcwd31fgR7Wm;eSm@?mYQ`+N&hkU z`6z8{7mEDHFgm6hkdEAoEO`$~I&~iwEf%k}ZVCi4M^LqLUY%t3bROq>Cp)_!p?aKb z0pLKcyd|~t)>SHw(Z9ESF{@xxSo`gN0)plNOQN6kg=2ve)&1t?Ce0uDb)83ND9A?T z9Q-55&cYfGKB3k_N70e+?LxdQ}hzoa|-6 z$-vVg@FSu%dQ!*nYiV3Um<|rtd!Z{NZk=cQ1%bsZdGc2=0un zb@)B`l;03=x!za_!Ol*Orx3@@w8;Z6U6Ls2ov0w@k>28o`}Frr;PJL@7>wu$c`B3i znp!FmeT1MGQ~m7+3O%9eI%{TFoL@hC$5((h9Zj}+XXwp-dbCxe*sP;X#OYFL`6aN< zxt2{2s<;r&c6(cSx333+qihbMcly4H+swCuziE;6JGd~@=gFu2-Z8_Br(Bga>#W2| zCQ4%w)(29DPUm#L*OIv&t~|_>z^BOmdoh!_zJ<>--!*)bLyky1nZByZpe8>&RpzHL zr7XZ$jZOfk((D06CuR42Dr4u;zCBmMQ}=dMvVIw4KFGD{EBghn?q{{eZKPO>Kwu~G z(tUKTEccT?8a4*`Y)%@}ZPrGRH~g8G5u%2OcI02{abx;eXRsm2%o}lKsMO4Wh_x~! zxcSNtYV@UpwpQ~f$`aRQmM^&>gSF^BI?2%XT#I8^lOvQ`)_vWBU9B&f8l^vFd;jt{ z)~UxMlFZW-sHcyOmwNghSlAmGJ8rSzxWYo3<u-n86%|0Ia)^ru(Ecmgn_M$OgCO!jGFaAJNL&S zF>Oy;7HGAbaL_g;Quyw!?ID^vQ<@misy=sCb-}Q)3e_MWKQY{Yo||B=g?qF=U#hLS z-d?ozR_OqBy-FZuz34P+V!T3YfGofT`b{T_PURU5f{Gida|LYSS24do6JS8!PpZsk z>ZE9@DkAW9u}k!Y)7@nIECA~hcnEAT6apm24d>%~*J<4-f^ck&=7mlA;(R6?#o7Q_4CZgTLf}{8(iArE68d-E=arJ6T;zOfp+t=_9NFEA^Re%-OSLZJ z#DCyx5SF?LrG`J2xEgdldbqWB`u#xCH7dlqkjiLy z6vN36Uk09y=cA~v44m(cMU&D+|EyPRLaKpP7f-4%Jci7Bo}{lhJlt+U+}KI>-SIfc z>}}x`d_jONITxkn0u=Y?W`daQs*^T%O93bk-ZQ`vu{t2F4#a+YWBP4@7TBccR* zg6THaBVQ?5^~wHGt*)aVcvIg$jA;!jH)(IP3&Ce4Kxdo9uAroNxxb3-h2d% zs6JQXFFD&)I}5#Sl?N<~pld;c>2#dab)`1>E0>9fQW%1kB7~0ygIj#$LV*sPJO2jJ zt88n$bEnu`74JDIWQlXv>tahePW`2aBkpaOFU5%t$dQ!|-{zoTzg?4SG{+@+;a00b zJ+>_9iintJB`z}yUVKW|iVYNaj{u-KTC9n=b`Ar35oQJcy4YlnlaTFAqLHfZSDY7CmH zE5>!uQ|?Go8a(Q;)3yaucimflKKQ?1TiDBc2D^O*K_16{;;`lZXg7;3z|6QV3p`2T zkl$i86Z!G;-u;kpPOg2k9Y&3YM`Z9$RtqxUBFJ(yr^$VKL4u=lu`;gXF*!{Hc>!pS zM&f%DH)p46sCbNuuduCg;^a(eB2+~4`+t<@jL^>W;LEUL@& z$Y|LZ!fHP4?{>18Lu1y{A(0&Y`F_$s5`7~3w`!mbmB4;#N*3c4<0=}4p96=00@hXZ z417U^&d8=>K}YMp#9hX#yEu?`A`lRUgGKYL#`dDFL^VL~5=0-Y-q?{_rs`D6QMU5* zRHP+ql)Bg^IpKmh@E6)m8<_7~&UBt^jW<-Bf4vTcCO(9stq-JOlcj%*TkYjPtNjqlxV!t;$w<{W6`yUVdiF7TiGmcgNVP-=h_+Ux~@256N_fQ;vXCwJcq4 z&uqdj4+$Wbpz_)~-J23#A571o(eRpYxd_gXXWN;t3qvl! ztz4|o`Q}+C*=MKSNy=ogFuZVJ_MhoQy)^r+zD!dz6`C?JOQOd6(JO8FiD|m~Nith! zvPmzF&DK%fOoJ9OEt%P!YqgfhTk>HM5J;RIZRb6wZ3xn+Yjg!T59dO+3;zP1gxKwYK0bVX$Hje zX&a*J9pIB(dy*k3*oe0Sy6skF=WP>bSRUSlEXH8zXC}lsdEWbtsxs#n$0?NM)4AsR z7EgP0TU-Q9WYY3S3uL)mmGyucy18KC(>);^(o|>eJH#9HxBROWtu(LD$(iQAU&3Ep ztT~sGZE;vqi~wgMET}$&Ki}AYs$3WmHo;P$Yb*(WOB?}K3 zNX}678a(tWQA%PVIztU)cY4SklLi^J^=%pF*_xnf53PeZua$P4)Vj2HgyBby|Feu?Nn@EZvu`Cd-w}qyXYeM~feF>*%Cq$?9vsL8JHu4ab|uFUSmc7_A`&-M3;ADSmOSQg=jZIkZS4v{5)z5oGcs2AqhPOVL>Hv4br;+Weps|t-& z4%m06<%0&&N<&dyi{+o;KR3V={Lso(6n;v=OCh4^Ha{fjXS%n;!3&yaf?Iz*+qH|rq#^4f{b3vO4bG$v1S_`TVvR>aq?k(63@xmJj+5g(-8J+Zt# zweijs1z*ig$A&9YWvJ8^o7P`G!vb&iH35eX(pRlIllvP^q~WiIR2=7krn8bs`Vgl& z%rS*sA-UE}v`Hj7TWIX-L!ECR+Jk^MW6XLo3SiC5Th)TMnYZ`--w7J3U5i(^W)VQV zNPu6NTHHJ+4x#u=R2F31PD)504FmBAUz+1cr?ILVr*Ya(Zys@ZZYdG5dH5H8{Zdc+ zGQXJ-Nxw?IK_(4tfyVARYtsFTnZjzNC1ktTBTvtK5Fh70-kqan)#&E z)$KyNbH>|ornx5h(Y1b5D*T%6!1e+)&R#e&)hwfwAISu!b%Lp8TNJ)0%~Z!rJD1?zAnk54DP>)~1+NIM*=rByV-#v`topki~_o=sAz(4ww6 z#O;=~XM0gero_zUmVQBma}T${2+J&h1>Lrxkugjxh1GP!F7nH+V+2V9$`%<5P{Sp9 z-%4z;1{Pk^(X9%`HR@5i7RJ_5*?MDB z@fFT(`gH5U?bX06206(mL?oM`v(`0kx8#7f78>KvPl7-`j65t>a_M>Vk|(Kg;R{S8 z5t!k%Xs}V2^gs4)|M_+O`?EhRe`@D5%pB_97T_t7kbgF~EK+S%xJ)d@#9K_rb-hj! z0cm>AGK~aY%0jW0-~2QV*dWjXtd|M zzE%W;py_Ys+Asp)*7-n*v?W2gp(kwT>`TYFcxim!!THjrU;s&)K?O9N>hTbxO1aMX zA#s&4DwV-74J%yL0Nvu~o7AKlR#}331;;fL5e&dcjGXy4^CnL9wzl&av9 zueoV28Gb^UhS}80X_=-{?wfZF&y;PjKSZ~-@$G!iRjJ#0aDYR6R-Kr3bp|CC5wQfV z$&lbB5QTSmgqo)pI}FkouvW=kgubGDb1`Csx?3>tVR0qC&~24Y0rh+?S0b4vipA=o z@8pd9@+I06{97+Q`TIejNfNguL&;UKnCAif5LFLQaCKLnVpb_!hiuMbNIj(^U3P8Yd;Ghi0mbF)4a!K~GrbK5F> z*v_?aB^+^d6}jL?vU7^JWwO#vhqUCrGg^c1*>3nyEI>?%?+*%IU^1{MNNV8w&Kh<@ za7^Gj|Ib+rnCviSWF3h6{^M@`=g8K3tUqLwINXUi9dA>Q@qkTMl$%>~n~>#GHuEDjed^pB*v(arWyLPhK#kpkU1 z$BeRv`sKRK`KpdA`OZe~27D8Dxa@~O6K2+%FJ0YAL@QTGVbmQL9YGFRTcOR-i|rcI zJm6)O!cHqB)18b;gnaG@CyqoX2;fAXEI3HlQg%9 zvcB1RHjiy~8rqpnjy`JApZg{GnE=}CsW;FA>{n(bl)(B|KSb2r3;XrZ{2jFQPtjki ziNP{TCkvQ0ayld)jf#Y^motcu5ABNrg9;+qMu5>x%`V;l}0UVT~FCKq{hf(Ka6@85q_K<#KC ziG~-vew`;CGgdj$^o>r~m?8w>Xzii3rg>dlkpeO$1wT|JeQ#1qC-tK(;2fjT@GHe| zPiqg?c8L?=(7mkeSNbHbgDUE#o8{4rBN{yA!w^Cvn@dnlItu& zOoYn1$sE>9=Y!L4Z^tP1SGccl2I24^mFI_k7<`yi3z==B-kygg`|mnI`&>kH4vAw= z`zl4cUZcuuyipXCIoIqYKN|Qd@;NLS7l&5yk#{*TXnJ}|zO(tA0aZ`_o*WJr8Y+j zIN}gHg)un{t%YU-?;oW=ywih&zG1XfeD&k*g1@%_^Q?fD(e5GrL$vn~9O$=A48;y? z#dZ(~I{$rsCI$-;mMe)ovSjxL7w%$WZJ*&+`s|G0_ENtArx$^k;kjPUF!(A=0~4$_ zODftP!C~UjRlX5KD^|s0f6b`c#CiiFOiQzg_-dYqpuHIX)O9!Kb}Cm>_!{_U^L|1o z-tZX(tz`i*yOjut#a)IirV$M6Oy}^hSx+g%Eqt`~3%$ZkaOC zzWlUSiYHtLgMomE-!?nl;i{M@!0xe5GwA*Z-plrrvGh@4Q8zC(SS1;}%D68>|+XuHHb287SltAaoe?IbJoK>ob(XYzHH+xz?hr zgXF_C>I|ouvWXt9_oSuZF*&BH40i2+89iE>S*MlieVNfK%*TM336I8SaC-lBuEq5z zd2g;+42XPkjieHL(won=B&1Uik=&I8F^MTS%tt!j43%;yZ66%<43=^2OgF|Rvzas0 zM5c2~TsJCrqF7>jY|W}Ss?5||<$*r5o1H{&P`LRF8tV$?nJjijl8oq>>2(*7H(tCN>`7zTKZ z8m`fLFDSfqx3fe?^8>+F4&R_oQz5>lo26oVMPv4b{h+Jm@j}yE%?KjCJ1XHTED$-p z{4KJRM;9vGnhdE(;)hZm=xonsF8^ExH-EtwHX$*Idk%A)Y|;K<8DBk8>LM zNbOC9EZ8Q@XKuUxA~!B6-sR@$A3zt1%2j5>U8qtJ+0;4$qlRvxR1Js7iNFMLl(pP-S}CxlaDTQT)vwCCfn45lHw@#^OW%R8SK zYFVofLCRFMU?Xv!`IQ%smJ9pPx*nk2E>u)&Z0RQC5%@u^-*&blZX)7#sr>BsAWVSJf_H6(kT&|9{c;)=^RKZM*oE5CjoW0Re$g6r`o4K|~sq zZbZ5pgdqeJ6r~%aySq!IyStGdV5nhe&S%)q-urpa`@C!Y&N{#I&#YO@2!20t$8}%# zbr%ty@3CjnnT=$XTqgTqWqWM%vQgYm^+c$%e=`Q9TNVLX+r(K8y#T8!1}uAaz*wF! z{k2r^w7Y@(dnS&1WTB2&OsRqG<|e>~Ge$bm5=4k$MalU*MFYvg33dCWSvdDc&UDJH zC=5H+caNLr(mwP~eyI*z9h62sDTD7m>eW=#Vtoat6iCnd+A7S5vqTULkwD0BxQ#sP z)qkx#D0k6BDIi76L{mbql=CXJJ%GqonIN27w*lf3_6Cs8U)=ug^O{rK+0QxDom%Q< zezKS)!=pRj{!qKUVD({l;l@gT#Ppl^*0^(ubYI`8Gpnn)KlFakGnd8ssT-sUHoG>` zmceSp}vdo8pB+bE~lIcFLs{;9d=wj=?FT}do=Q)`f6f5&@dGKm@|@Xs7#!1By(?p zu64#(`wr2&`kR{AQfJ0!lsseg@BH24^0&+Q_cuTX2jxB}{&XK+1k^v9FUKr22F?4xZsFtGW@=x21rFb87CgXfpF;4 z-fz=iReL2p5rldsxZW8uKVIpJ2Spw{hnfdt5{DGs$B0=oeF}=x{2&yfxss0hf*0g@ zw(aasB_!DTg|OKs$c+KG+89hpmDeLq{CNqOxM{w5H3*pEl?XbXOTpb7z5K}m&zW^r z4)wj6a6!?Vo7^^k81{sBDmybD_<(l1CN${H)7@r#yo+jT>>76%F%g}bL`ALB88NE3 zmofTq~o zmxMRxfU+s!38TtFKPFb`m!JHF%&~;WQ=_?J+DBzXYwDImRjvM9;IuY>~lDI z>j&mU|BAy9acXNlb^lx*mGou#QHRudlE3aDXHl(&`_sK4+=hsnqqdN1M-SD75w4Z8SDTPWrbcPh^Mc@HQWT{CuHd z*rg5}>^(J5rG0W#WO(QNMDLNzwyWc3EK&RF+(Q7mXFKfOO_|uTZQDHiIA1QyQCzsQ z-L2fHa*_kdGDB=mH9%68Ii=#5DT-BD1+w0AGUyf3b5%~U*a~eLKLG}@PF1Uhf5ASd zU$@a?zmxXxgyglniU@*$!};hT8Lvt3dg%PwH%>x_518P{f8%e%yfKgBBU$Iu?))k7 z^zX;~-`_(lt}71Ys3Y$cSu*&uO;&S#bJTok{sfm~JxVv>O^t&oo#Uob_)ESUf|gSw z;X;Xn&$tEx-!`pbgYIrcZ13Z?*Fj`*j%MTm(e69GwxXcZ;p)~kYgq=RB-Iw}`X%$0 zXef=e6r*pJLVj$Rgcq!u0Vu_saS<`Uc>~wbGVVzb^APiYu%Guml!Q@Trutwxc_&s_ zZ`41cq=CVwa{v_9*P3o7!niEM4@$mG+%w}v+9&jhEWO`*YxL%u_{ktz=;RM9s>}uhma&7BebM4R zf&8;yH4MN@{8(`Sf7rzsn&aEMa&Rl6qDf0YKBG}OK%qfY;@>(B3^0?xu10G zo=3I9oqj<^4~=T4fZb=m5`12Kk9#h1aIPrj`u?340j~e~#YMKoEk9$DquVW%-iPmq z2|=?cn8{4Ibfezmo$4rVI5%)QtjuF@Rz@)qLO@t^>xI*l9>3B>S5?i0C*CveC-Br6 zefPAj+GeHXgRVw>KVYi-QXt?c()HAM;o0z`f&Pb$alvXoo3jBi28h_g)NGD_&(_*K zR3$u!{cx&N3tbD`^-c>kPDs>fv(2slS{=w^nNV5HUvwysPc@Vi!C=}pV%jq2*Rwd0 zt$5fPb*D)Tlmip$hF$LH(P7tkY?F-^==eAgX2;z4HrFN}yIz6J{ui1m#+_rL1drm` zx6cl2hfB`+Wyswt6V*nA9(eLp-J7mETk1-2U(mmOSFa+Wya9Cbk^)&pesY7exf}=cuSNT-)9*j( zGGddX+W+iR8|8 z1+jwb;f|PWENLr_R|p5WHvR+tFPkH|Ya?4g_bxM!^m}GjTz!d6sv@nt6r9?X7RGIT z_hwwGZ&1>PBD!3k^HW!BOA!L7*}EV-R~t_JdaZibZy=r`3LpPOZh^65g*wEz5z$d( zp)|M?&e_fLOf17L6yWwX!{fRrAnpS=wkCfe{<++~-JS|%>>s7Wwis04rQZ8KY zST2iKjQ$HheP=oqr=YNoNC9$I@jG)g*mj0mJ-?{#z{W5?7!#6C1r^=J6yp#Hju^0L zT=im>n|Z-e>?cJ${SgNhkh6VS?fLPv#Pw)HmhmB{A2=$5yN^UoFKQfpA0tS)?pH}* zh!dpYywh@kh0o@R;ckwV`aROU_?NPi5f-KeRqYlqkCp%;!i|$af^G&-s2sRm~D`NoZ zS$y;opiTpFOT$>^w_HDrqirGK(VTJOdLU`WsGO@YS<+6-G(Duzs}|nev!R$}q28Xo z85t3BO$^j~g=&Em2D%=CLIBvANv&r7#;s9lY5u@scB*_t{XiqtcbKG45sc&h(n?A( zU9R|TeJ1_eVX;$a9U0(~N&wR!$K;oq5$b9hgM!gngO&JEo! zJ$qfV+`7^j^vWjf*Q7$;i(Qc5y`a$bf?W9_W-nGe-^q`8ysWU8voMm6W7P)A>I;l) zX2&*bTC{R8jJoc{9sI)i_?;{o=jG~hR7*RJp?I+IIMXYn_m%CW-Yux# z4pzE&00nh9Y@|4@;FL_t3sUI!&3rTv`^hWgnB0UzPG*~WOmA1@IvuiFJ?3FIgywfJH_mk@Sa{nvuXM&N ztD5g??1|3zA0-hD(#XU<0h)io1}dEQ@d(Y5nkdgbku}YCYGh>4MQQ@C*1oSR1sv$o zzS)(oq#$XYLC!}d%({tEIVr!I)lGtyU-lvJnJ_h&X^;-HB*vrRk>q>&X&Ne54f{*N#tIPXulke6?#Unb;DUmPj{6$r@)2&?mI_ST zkykBIV4GfrY~S6v@63xB?*&VS7v$n@%wtR(UJ)JykT0Ei%0af}bWFUNwSZ+hFUcF`p=X&4k*>C~f%?0odA zS4gr6n_cyA?>ilH#bcfDIa{=a>Nx1k;(y-UXLYyHXl5ciFYqkYfF)8Ue{N}A1+=$>d_Q51QwFDs^bxkPbw%M zj^fB`Y)JYMGbM)TxVxk4WHiCsKQ>$}$H%bu&KyzjNu1qjXyR;ajh93smahJ&D;-dN zouc?if_u?J$SiuTI7gY<@}wn**6o*$uG>X~L3hF|xFnGU=E|FcBIx(O310o;@7O9( zu>rDt*=jp)OTX)!>5B(&{T`+C)M{(w8vH&jbS{c<>6KJD?<#%s2xd(@{yf;%JB9C) z6yzBV{+)J%$#vdW#?@~;e^#kgewqKq;49u>lxpvB*}XnL&LE^Q=UKsFGBKbuD-qA@ zn8uYKoZjfnVSpNEB0cx8VKfI2B_PeOwNC0?`c4JZOC;W|iFnQ?osk8~b^#HVHi&?ZcsTUZ0^`C}EAsUJL|M#C%tQ_f51f zW-}YnXPddZqa;DOtS3*K&snP1tU>q15?AFo?omR)^d3G&wddOO*`TVk$we2MJx->*&L5{6 zv~=o+U5zW%Lh~Q;Gc9+_Eqx;;SNY!zrs|66HXX*% z(dg`^oB_A+0rt>*p}eM^MJ>IGOtV^r=<`C>YAmn`?*cnLXWumHo>8$3V?!V>AzyO; z(*^wVXI|zc5HJc$9JGAVD&+b?{qHk81s#X%mO-k8^g!;Q~oTM{^koXg^q2MQt$`TOTM=D<-laA zaXM)H5+wTMu$W24$#&yAM`b2!yWRT2qiWbr?JKIsm43qbSDT{4pZ)KL;Hs=^MX|go zN~-@5Uby4;(lHraZkoE&oH|~kyi#{}6IUOEFg$>J?%Ap3(QsxxbE$XnoGwSrp1y7taWEmP0d8qyJZTvN;_-%v}tfpSEX(|g8ayje_ z3|7m%4kTrgAHmbQHB=w()GxsDt>O4r&ycx7Vek6wJyPtU;K-wZJ7hmyuYB;IDCaPE zCRRIagu3AO#j&?DrYh4AGoSvV4bSWjf2Q?h2yrpS2bb7j3yMY@if=4EU0(K#P~493 zdMVMU?%7Xop)6j6Rl5`=Q13Y}n5~grB0vZ4@sO7aXWWp122@d%F<*30?~mnuu}5mq zR!kSHcrBW%(@y-pgTVT(&qt7^L#<273?BF zI38w?C*6skYBb2vujWn?A;fDiHL>gXDI%wQ7aBvVVp1eiU1G%cro+e!;n5ud>q5V> zCBhzp=2D6`oMSHg!Gkn!^fiRc6-uiXJa5txm;gL4AbqmyKEL6fE|TiI`T<_i09i5f zf;dMI&t{x89Coube(|Ljy4qs5WE0iG@HVQu^u0~NKQZ^&Wt8BxIIJPL5q^0Jljm{k zs4;%X`z(LDETk6Rpox}0oT4n9t=iaNP=(YPlo}%Q=C}CVb10~|yXcqx^6C8MTS2~a z>zAU%aE(UpZ^R5nW7Wt8XnvBE1`KJbV4t6_UH=+1W3QIxc-kC+307Q;-(+3bL~&{F*HJ&V=V`qoSTz5svTm$+`aK!8*_j2oB8Bw0vu8$m<=WNe z9Weo&QeTh-H>tN=OtKVXdUILMJUgB2F6c?4<-9uh9Lg7DeLTZ6`Qkx!BotnrcW*1% z@AQIq;y~XW;}`IkZ(bbHuYLLh=#_u`4=)6|Xc*pg>9;Uk&R&^qk9!8o#2@*xdrn8f z^ZZ12>@o_u>^4XG_jjQ1xK_5bMsYHZEE1cD@%d=Im*SG4Gmw0Zis$oc<}6wB66fiN zfIa&)4+vJC9~mO~2iA_KFy)5@4?5k3A4}@3r9h z`n|~-%UX;13Q@TWHz^>E{RoVN3OPk2e&5%8i@vRES)n$s(%>+O1DkN}{2E5PvOcK4 z8W%U3Wm5cjD6ez)EoEbUFCg%Dj^$4qA`=AcwkB*lE#s~AV0uMpnER4BoT zN8NjH&tUHPSh`#lF@8p^8V5<(c>zB}IY;Rhokm*GPu=1V}fOsd6azElko*F4<@BKbys!HJL*v0e7`4`fci# zDFZ~|Zyo|2utsMA4LmcuSPPYnvU zrId0MN}A7?CgHh)yJRb+m$+c_ZfiS#RT)vQeqVi?innKSBokMtRM2z9F{A!92-wpS z5#==z0{qb@B7g15FP+Gi?C~$VCoHY3^D}mf5W?=Go1;CP+1=GZCD;#V!ZNAQz)VO}uLwTN?H*tVa&V6iJgfR0; z682Kf$H=;RU95NEilpiN0L&!EfJXXDu{9(#ExyLc#84P-VV!q0e>d#r=M?r=$~^6! z+W9XtN7vu89sAKE;QN^S%XlB;D=KS$<-7nAYZXa58#VbyEM*6`EGDNbb=w1}SUAl_ z!&!)#?_b=$8`eaD9g8@c9-7C=s>ZrFCtSA|ci7q3`EBb-JXH^^bbt>j(`#M{ro+uI zDvOs@)?E(TWLGaM_G;lhkCe(T<1M>jg|+zY_WU$nka{?A`Hu6^Zl^Ks6Sye;WY`Ve z3kFlmnF{4Cf1{m#4^>=@4VT%_r7i)!fxfARi9U>#nMB1h7BkH&Bj@sDXb@$evG-f* z*B#;GG%?DD0_jL=ip%0TO}|TA&CRuY$RuUr@~QW3cuh0*KI%w~K9&*q__&>1o{w-9 zE&(&hLj7nA{^3$b+=&|yx-A0q8*8;~9qc7SInPGZ9`$UxN zu*^!zikUjwd{X392={!m+(+Y+p~9y?Q_&~{HI*T@(qvodY)@A{(|pWLD?`>rwku9)sx{zZRi1GH93p52N6aRKAMO4gm9OKG}y;j4mtlc6PcFMJRr zwaB7Cy*fqN&iWsL=A0CGOaTvgc)JWa>V{IGs#nUXKRhgl?vrvHcZo*7Wja3U*-)rf zXqD)t^*oi-@u<#pGgQX=Vy3p=`xvIV>RCzoJdbMhai1HWJs!}_km0r*8=BmKDbh*? zkd4N#I4ma-?YJ(s-k}*-9$ttY_&BoQb+J-0ZROZoP8sNcISK~nJxlZ~?zlyF!gxI2 zl9}iR0dlamvG47)c^Fu||3K4wBn)|0W%Y#MzI$Ud2%mCKKW3=7?-epGHHy1KY=_FS z6>=O*uV`)^4%nuB)?z_{z1S(y?*0^euk`dhVvu^ zFs$Hqk{+3JBi59>gQ(_F%?_631=YvOsOl-0J`n?tJ0~&~e`WEd>Pw+ZmhXi?PJW;cr%1J#6&=TmfOLxWj4T|WIH@Z)}RiGoZ4 ziDv6RQlUIody6U^`BwF`y<4AdW3;xR|0*uV^GwXj5WTqZy9yg4`?E^c(8oC6#T52q zT^Md2i|4w@=gk5x6GRO6oa^wZ-Iuc;VxpV`X+(iK@h=_?kvQBYeeq`QhhQ_02lPpe zR}zRzB`_I263sSUA(Q#GlBR9^__i!vF}1f10aC(fsZmk03AY0_1-1dNBbJT5c{_b# zx?J}+J;6x5s=O&;tMtg~$9V26I`|uj>fY6vu)f0s^?>#qUeKOcj4q-*RjME*Gl77)?%|^SK5~aN8ofba={r2_DUg~2jTHmP^j94;^CcxAl%Nvb(D>nO%ep>+hnPYF@@Zdz%cv~A+ z3N$p?qcL#DrRX8rc-S9aNwDln9@YN=d-%g^f*52yOj020Y0p%?YQAW|DtU3R+Uwr0 zWNB;kO8?1(@W482VHX(5{6m0$@VPu&VglZ9qx z+t^Q?X2|Dr-8YelpiftJr)@kpRDL`KqRRfqn%vgUiGtjWUb8M9y^T8@tGo?s#?pxC zq}U(4u$-@XtB@wKXd#(P67fu#MuC7{dbKCxWvB`ar12u2=a+sXt|C36@WR z;y!Dyj#tu^I(`xnok~|bGTCpx>td`j9$rR&ZW2Ka9k@JR_u)B8b8*D-p25@5ex}&= zy~MSbEYUKz_ZMd3i*Gfv4jJQ)D|s#0XxN`VgQZ=l*>eTkxq|Ne9L1R*N>eX=u-M8$ zkVY;9J<9w3fJ>%KLoP`~l;h$iUU+TZCZpHQi!CnKmJSIbnZu^OC|;-VII9}TQ^eOQ zdDy9!H@^M6r!FAzQJNm4Q@OmV(Ij${Q`cKE)*`OY+b%a5WgFU`FVJ`j>P5uvyVIUU zxuqknOScj;L{+fe-&|dm4CP>~QyyxLCRR{NSRFf1Bey>O2ARo|10aH9ihH6&TLHO*d4Dj zRfKXL7g#O^=(RLVf4|N>{Q@08>P74m&6GY?2DzO?X(ss@)UcALl+H;lA=YS&tWb6j$#comaOH9l*V)~dG)*I{8duA?JM zI3zn%({anLHz=hi#v&_o9j+}kis={Fq31oV<*!uUcG=1;jDU*6ZSx}_|CC2mh{d#HdC_lwGLFa@!RW4A$Lbi{@3_in60nZQZ*$Gx zT&vE->(^LhsokGFjIriHR^+RE-WaEmv6(urOhpO{WIp7vKjn6jtA)1%9vV9lW~#>G z#!Y#iMsA&=9WRPnhd{Hpi6=V?wR|!wmpvo%H6F8#xrb8&{mZPRTmAQT`soI>J-hoT zLg|(1ORH2N5@(9@SEpynK4F|@W8s>4E_<9Us{+GPbs>Lg0dR3ut~g!-V|m2uG(}LQ z17KL~LVi?AGp?=olivnrI&_w101@p00=!8Mx_qyBA-m!Q{(Fk72s%+H8H)kW*@f#bkJXBl1C zD|7+gA3(eL6#v1KVdFZ(3`F~?EKFv-En)EvMg+6A0G1eY z9;F{bmOJCSV<>^L@b|>s*qE`O!74{CB~}z`B64^P6g+k#O6F2Pp1yRhw7(v5uqMtA z$x#m49IxGH+UR>Z_C*zvW!>n-wvE^@vPF1UkI8gK!MnJJ`s0zwWuDn#rPVRk^^cV4 zRqZk^fXh^uWO%XBECh(4$oUNafu2fZ9+;cwR+7EdxT`h~xjx1XjJx^QmUIVLQq0Wz z=Tj&c4A4(vcfAF7Pv5OFj`>`YQqRItr@}m>F9!A7WiY=0v2|Ux8E9b@eC2JvasRk= z<-ESTAn(ONKh3+~r{*fvh%wFW)d%&P)enU{v@VNs@MxqHWOi!Ktg5F^e{-%I69`-_ zkBKhhtKko}Juz4+pN%flZg5j~f=?MzUe?ainFUY8+^W~-VLqd^!$>B`cb`1Y>8 zr4Q6#lthRR)}3gq-C>OzwH9N|RnD2xB<;`u*8{Q_15F-ZUJQhu)-FI{(u8IB9_4eX z&T5HJ&WF*RI5%3?L|eQ9W!JVROI2Ur4${gmSIH++$aU(?QaSiRH7eT1;tYGtW52qq z#a$DSeEHE<3pg*i(}schN3{9KD#1LDTA~I?WB0{R7tV~xk{#QN3;PKi2Q#(DhFzMk z;G`Oa&yqcLPqBOtqdAkZ8|M+oiT*JGId}kB+JP&4axG_(-yMHW@3Y|+4#Y{*K?gBs zG_Pt^zpc_~=|1?i)=t5pf-tW8-0XtyS7#V)&wM=M2gkBQDFP~x)6|d%<4hsS*qRq1 zbE=N)$3As-x)8{V7?8Vin>sBC7wR?s1kLYfJZ-0t^52Z!IwAWx=t(}5GvYP&EgxEQ zQ_%B#5lhn2{g$-vZBjIq@@W#UcLQYy+Qk=Oe zj3IgIrN9+&TmdBlDl2}N z9COBQNP)*ONK&RDabJn!&yg`2U!mwRvDE@~7q80&wBd=yS0f)L!- z8YjfY=?f|+6#m1@hIki$7vtW|lK7?faYq%12;pE&>bka69E{K7>ULZJ924%rTw0nV zBbjzcR0jpH+4im%XrOtA0DDR5KUTi3f%k?n+}wak<# z34gWEDY8}rB0-X;o?DPNzZC=XTi|WfT+r$-W1NQfQ_r1`KbK%8%vj z8QLlOu7WjHYOYz<=q@xN99;W2)WZkfhL?-3!n9jx<8Zz%0wdoEi}~%Gs0zl;Ew?&Z zQqvv#6<1izK{kfOl%7X{McCkjzNxX=O?~(Vfs8v^7rd~wTP~_ zDvbVefQ@!UVK|3H71MhJAJ?=r=YGgIli{2%xuWF!)fYdUCNwcyOND8eiwSL?GiH?jDvThXUzC~7zF0vD> zSo~gWWjJV!XU(BJ1neceKZb#V*NL+>TdlaR$MvlDV{IM4^$n`vBAJ%Gn=AY8GGvUv z21B%W6K<3C?w>YOVAqVnx+Wh`V?%;Xz%jubcf|1aKG3%W>CA#F!9=OCby-8pBN}4c zV%b?wu&y$o{-*jBUV`E6CJ_A+to`}FPUHvx^v}v0nf{OJK<$|baIiwbgfZhekN`*k z0jT&t*L27|PqR`d!D>jWFF|0fR65^cxLQ%%bT&sUZIcUJ{b~ke9oL?6wkGZ4!{4R% z%$FvLe=C%IFf~3JY(87gh_hlFzD0pOB)Bgro7VwuPlp7zNHKAVqQFGPXvzGZG@@7sY%YSd z>8ePW)VMyltu4T2J*&E;Cb<8D%KSQ_`4lO9y+Z3#g(PSq<5umls4JUw>l1*wN9tZs zV!RXq&`yVS;}vr){=@J@xx~nCV^N8${|0&!M4?HBJqd9z9hNG{Q-9KHS=qW$F!5gu zXNwOiMlwLfNFf@tO|h!&fuT3?HpMjB%wJmoyyL9#eE(ZdJTjyw7Lo9f-=V`e3IP+M z``sRJ6tgC{1A6c!GGtWgTPJY2tfpQPv*^615f6M|lyhg&a!2*TsoQRafv;5V+~$>4 z)#6R|_+YQ3ZqT-wniC&p#A!?Lj5VG_naa=va8HmJtlf z;g!a6&XKiK5=CA~bc(uBm*_X+W=9H?6*FWK2v(S9FOCsWxGNwvj5XA!28o>ih9l96 z*ANK*zP`S`*J6L)YXWR0FHqu*79J?qWdS1KA*6+kixvy3an_OJ^FJ14*a6%F4(Vdjf`{tM|5H=Ax@Gb_OKb1_C-17q{|3KFEThT` ze8B*9lTRDdkRM@>P%3)_GTjol$?=e!y;mBYoYWO)A_cNtzHqLtthf4xC;kzATLQHe zfVg1#!_+zWNse$ZpVCnEu=EfRIx%)fc9g6zENA=5_TF;@bPEE%S@`9GoU_nNf%SPYBzPXGe?uHn8`J~(*PSSjjNj|$S?f? zT~4^I>irHR_`wbvJ5JnZ-^JHz_SL;^VGu}!gD3WeRoLKT81_cfK?b~1#obm*wJ@-l zW84aGp=cyphZ+(V<6iC;I@X1#n8yOsI|VvVAH4P`mkmx8!tBGu=OmG%smOBxC{&MV zuX2|+d&*v`2CvdkW1G7=fk)TFjMoCOGJCIr4~mJl3n_s8YT>NPz|$;IS#^cxf1Rl2iY zka$lpIRvH`7``Lc^I^^nzZ+HR+FOxsjC?re8LDMD@aC(pv_mw%X&wLD+Q?FW5K|c; z>|CBJ(q#5hx|px>4b_XcG;@(TX_VW2RXl0ed97QE+@iLwM^wZpm#+S1v+Rn%GP}!0 za0o7}bdZjFkFA*F`CCkHPzs`ppjTywZ3bDZGDk3~v+)hWX6o z=p^z=nvHzAtz^mUaMCCiDfx>S-={iuoG_1xhY$5)hG{4SGR5e%N^F^oe(!=)@y$!<~8-o!0 zF+o~m%&ls%nMCYrZBL}>*>}+k4@)ZALTreQ7|NQs?~jgW@DBW5p?Z4TVWs5V?Y}8T zkU&h1`-hXE=_$(IW~zbbVuH4HP_7`9QTi*xEq(?fTXIm(s+9jZ_BtT0GxTZqkBZga zIH{l=?WYLKN}humYO<~B-+|Mz>9P9lfzpFZ>G7*bquy|!G|w~4n{p$Btb9{#{*_x_ zPmmR)!(EHo7e69HHo>U^cIQF;wGYg!7&Z!eD0EqWAHZ%2;a~_!XP9H6O@^ZZ7@|4G zji+j}TEBOC-=)q~*_ihcx=86u>awh+veZUz->?sIJ&H*jsvPlmI9W zCkJck4l(<7hwH4vD#hVQ%8$$x)Yr3|OYq8mF^4#HXsde{sTV%wE zuxo4j7Z;Yt^*$wQLdX)3jM>)?Mnw(Y1O(e)9 zB2BxsuBU*~5e8-^b)!UJ07-VD zc-p%+>V4s4Vb6)x-%_hvBB*=n2vSx+4pNGs(DYE8bQsh?$OLd5tzYfAQ^T3#4Gd z!lz){cFoV%t?eqCWWczGjk8))g6wBN!+xTJ%K8u#U_a0QwV!3cQQrWIpX^v~!*RVU zx2Op=k+4s1^$M{+Re-GlpSgdwbNFk=gpYARxoo~+rRN`iUBCi<@7#qf2+3)?#+pG% z0J#cc&1z^8E4K}k5l0^ z7_;P3tgV^o1YH6#_x4*bD8?sE+PU&po;J*J#o{|5aK~lW?wI$VBw5(x`s8DHzl6Ci znp{8o-PaIMM7)*yONS8K6089D>P73CH*ppRj8Bkp zu1Z48#ibTt!zW}X=wp4DVK6PqbVZmAHClt|=SS1B!{DPd{mg>>6B5F!TT40(Ae|Yi zw#RZo&LRz$vsg1a3kVJYLsRXbt?SHwHI~2+DnK#r?zp)dT4pt?0H_bE!)_=0hA#T2 zaT)%>XD`Zg-h#>M(yjh0@hj#2gJq_}h9Fz+<3~#P+(a0Fk>{bO71J}Ny~p~aW?hj? zn!U%~CsdLlzdk=^8qTt12g5I8Vy-T?oMkW{Uwzi7G-Yr~PZMsUxLVoX0R7ibW^0jL z5s_Oir#Uw=M8;U>-41$bcGC`0rV3OvH|ITzHWan{1j3mPzT76~>QKV7>mSDv0?BSD z7#hb@TJEjboVh9O7p22-Ftc|5*+?ob6A%gGb=bUH;X@yH86S$qNwG!QAVdL<3i=)539m4m!K5dvG~_$#YO72~Dm zM_~f+S;I>n-oHvk5I2xTzh9zWs#rur83IW8X zM&A9w377#FW-(dP#Z)=7q{A^(3nrqN`o^)%pDhjt1$U`H%44KXFk6?I{&DdjrP$Cb;Re!c{26?%Q*iT@v- zc>Mf77xh#5HTW3?5QG0$8zl;?9m?VBU1x+l0CM=>Gs0(O1tfttuYH={b+YoDev8O! z08|D6#j&jLP2iosVhU_suNF#dUi;PWbrTI?!(f!3N{Fxgs51b+?RFO)se`$Y4`0~4 zae~iL*E+$ua#uRT#P^r`uH9FP7_Rh=R&}1cV>r99M-Uib%A{C7r9YG;BEa4#J-< zNg37Y&g-CxLnnX>yHdS2-3jp4-gDrpCDWyd9$V55+(z1t=4)z#8B~v4b05q?)PhEdA`6Zai zhQEDBf!zIFV;v=G5@xMnR9@L6s`J&1(73_(JJ6q{LmG6f_k7#v__jSI1>mC|Gcch# z5)6}w*%M3bj{?-ExV=qIvu=RD^nL))-EzG;dvDcv&^DiwRC?Fw53zN&hV+M1#_9ZLJ!m%`}tcSJ|<9vs{{zE8lU{{MWy?m{71M)@@*9?i~z6o(tM zR6wX*%x(2V9tZ4ex=F0DV45DnKdOpoE*IQ;tqE@{46#l&~>QEF$1 zM6-e_c_hXk^% zyo!f?ZdZiPhKY1xv=U&vF8BoelYau(S4H6ywAm+xumcVV=U< zLnq$N-6nz1$6`3fQvxMMy&5hlR_Mkm;N+%lA6PyC=dQ0VIDez}6e}Fu{0o%JQ3eQPEZP9k+}|-m1-NB@2FwIw*S1#Y z|I*e<40K9G9Twj+|CrI`F)d9oZ@ z8IvC2C3v-U5A;=ht?%HhZ!?0JfaGGR$`p6)MTPb3Gw0ceu^6YI+oZf&G%`O7j07|a z@_IbrmYFfa!J*5Tho^m6}4_o2@F*?DF=Pu$MA#iVO%vn0CEb-|nM*vL#pRciop1p-{KUf39| zzYJSwuD@~pQXm2;zUe)dugOxLkY(Igr7=p+rhm$DvI%P)DpQwcFLXPx+n>veF`Bvf zy(}*z>E$gJuTIqy&y+45<&aV6_=F2xTHF>o&WR*^NXh<*4r)3`J`0CM`#`vX6;?VkLk?T0I zrTioO0#IH&;)M#FJC8uECKAvv391!HhMCW1<2|UyP3UIqY zqQvBKAh3mDT4ABXf=rWMqb^yj4NyomqA;FY^npGBK}+9Zd0>kXL?S3z_ezA#af*D^ zMk1y<4*q$bwMbBxvKAbO|J~ejE1`=( zJ&v^#;_I4}ZsF|QzJ79mS>GMl6dq1sdCUW^XL=&fw{&?FpMCd!C|1Xx4-6r|N8^4f zZ#G+q>$i2mONl*!d0kHcvDqu?ds~+SkQXe51~d!=FtTwNDJY!i{Pa z*P>SHCkYp0Zd{y6#2IVybZ>P0)f03ulu@tfWHG%w?2&)3m;!sM!m?J$W6O5U2JLg) z%{!FzVKlOw-5h2U!foFv7a0oy=P=s|89e=vu=7H<{c()Y<$D-ths0;xczSj01u6*+bOdwFPdkWiaD^Vk>V15>BPEq z=6ml?An7OZ0OU=}#c5M;qwaKj4~Sq;Wu(UhEzlc(g(AWbJ&e2hkoDmc+_YZ%?b~X= z&>D6v-?}sR7r5yF2*3udC9QICf#1ml#!lJ$dWH#l&gF#;O&iC)PJkTLHk|$<3k5GXF!UA<9E=eF@Z!%6R8tF(z_EYP=Xc}dz+@-^olLL|` zstIm(M_WAXa2N~8sapbIGl6LiEZ+nZ;d$ge5`YQ&Cmt^57Ky}X$p`hZkv!$`hj#xK z$RsKPXs)>l<1f2SaCCjpqyPIs|F^*P+QR?+@~IXCwpD;8CxnqTA9~q4t}C&>+?iUJ z2g-C}t35HsQ}c-zfdE6G=`u9^r#dJxgZ7n)z+pc#5hPP7cTWGhrDcJKTcfH*bv(m8 z&;nWW4d5(?1>M^;hjN{T*y90CRASXDmB|zx0*Hk1ASA&du2Dc34?CMb5%s;j`W!W1 zfNXgj&{Xe?B?ba3*nHu90}s!Ae^AT0wEsB2G9#34r>fbQ^4?!J3_w28pd8}ti7HGc zgOmy^zE=?liSKJ6@BUR2{rfEb860}qfEJ?ro`Ap`d3v-%XE|N*b-&~>!TqOre}|>Q z;b;efu`H*w6OZHz9_|~&$EFnSu|BB~9th7al)k#*LlFytU7p`Z9Uy&r#jw5}Os_08 zS#O_v?+XxW{mNlA^-D*|zS@n0h#~|Z!~ku`36yXO-n*(^N%m`fl93kG@y$c; zuE5wbgSI&K-ntNKU&$nT$tej)haQR!^XDb6V!pPk?El@a{#$JOUmpY88Mx!Ud)V}# zKLSDheC2R|A9eqHGK0f>DXn z#w=fD2gvEI+Aci7(IwF%`)ld2tx;jgh4g<9OQioP-Th;6Q15rTc82!q5=WbIl8?uaoxx4<;%<_U*5#uv^LtF2VFXJ znoXv2B`)HZKm^Q&h9IxR*;G44Y|@kA_!mAZ#_(>q zJS8_B+9GXENfdF0&(H%d64HQ7@O}7q3hpLG#Ux=5^}~}0969^do_iNFFiMW+S8wL( zP*zdVQQT+O?+!&I-n^L7B!7{06x23x53C;wRoy3He4HtNwN%;<%EnP$5%i}$_VR!o zYj(68<~ZAXqy6k?=TYU1o%ByGqd)T*)IGSyis6?aSls@f!Iyu+SJb;jW>BubL=(|} z9aKbVGV=^@7Hyex)92mjs_j-BGC+fMVxKO=GQr$9vNxU~s*VpPE14)*U%E5nLM3$; z#T&D+HCfu}Z%B9}c~D;`A|$mf`h@J}(3@a^b)U%U1L88;Uh{6_*zVva^dBxLI@-hP zeV*Yne*;K}Crk}Fz5lZsqQI{njAWWR z#2##!*%)Kf$*J(1yi5YrV~d3IP0#5lH=Ld;5q~Uty|Gev4N%)B#w$0Qi(tFa;Z_TH z$kvO8Sv(CjhU2WF(X_Fu=3kZrGW7FV4=H*~+XB%#>R28mIwsSd3#e7P^+}B9$ZCRw zU#Ick_8F1I!xZVJu_8$!D%PB!E+YH|C~yp?-iyi;-R^f2?uw$rq@y`n9_LXyh{v6L z>XKEV%;T_?5a?`|2AE*Ez1Y#DZMWWV_VSSeRn5A_4RzU$Mu~^mp3yGlBFtvnEHD;L zEQWfUc4%ori7~~U*pOqO1Nbz=*<0ayzs_*zW0;pX!u-!(f*A31?&^|K$UiC^W=y+H zfl(g%mV0WzmB%*#@+)L`#62&fMdJ^pCQ8la--+){ENg|H?C~<0=QnFo#1gv<1mZr} z@r4yw1iF`glc!cGd4;z{ef2$2OX@Vsyr_1mF>~n*;{l+sgxYS{Pvaa#e^4?1-=`cL5253~)X` zijBkIvIS{=p|ei914P#M!B!{$s~HR~JzVRbgv9)cT@dv>-YOvFDQ9P`B)`6k2v7c+ zw=+J&+$i2}dePA#%p32Zjj=BvNK~1NWyB24MLU42NxkF#vzE1OIzB z`~d*ky2)yb=16Mg!P*v{ib!`k#G@*Oie-ZmC=40-X>PRKS>g_*3f+iR`$0%LG&rKyX5?-XS}2j z6yo)~lyLjOL-;(V4D%8xi|++#8% zVi_sw^;CaeDhdD1hCKMue0lkOX#rGtPYk(a*WW7LA z`gDIwht+E3n+~;VUIO0sp*1e1%8*|i3vrCGycW~m$uIfer|{tWsbo$-$p*OJUH*jn zK-qkWU|=u!zk+>oGZK;FVpwNkdRs54rU|%e)+*Q3MtSa)L2G^eC3TAqF!126abu1F ztoL{qn~GM=yo39AJNsGc*DyFSHQAM&HN~0yznPHx_#UT0>L-NxFhdtPaKj_z_15*n zzX{w|d>b(C)BgT{1qEMj@H+)nz8F>lMI|dXwI{dif{8fk!FpQz=uY528usNlJ53ak z#S%Fx&rh4LItSCidY9R|v-en4W9mYWq~14T2=`q>BBT8VK>(o}?u9w{;_H-mqfFL1a&!z>iR zf3;9pVCW1$vA#-6R%n+VB%>75Ieo}O9t3%|AUbW?k z#zZIQ0St?=(fu5ICgXY3fRD7y!sGuH{(M)0()kXhzwQC{3lSrjVsHaq=D(RA5Cz1s zSUAzE-`mrUM?-d~&PSEYaz5Lbi3phS*l+NnYsK94sryv0NpC%R`KNy-9Z^PgBz zcM|9}6d0mD!`eBwGfC^EzU`j)N3L-o7vCCd@C*3!k=O(0-5N}${`ZaW{Wc5e-%}dD z?)&=_`yTdL;UfC4n=XTDRahF1-D%_PeepPnt)?^j+T|qY`_J2MeRUc)BmQNbNpN7_ z4M!UPTO33J|2^b{`>&SFj}3ygHBPbY^UGwys2|I1oj$Z*-}l++d$HH>e?6xl`F3QQ zu=gwZCZGrcwVcB{?cP7X3|4gxyKd+I%F}?<=5(>u-`9w!2oxrDl8F%aXM_aM$|Fpe z4-@*2N(9(i%jPzA-d|@*0h|_ZlYUE$-wbGr1k7*X{#R+kdw#gUU;fpf?I8mztjOd3 zX!Unt1qp-+ru$m|SJ=Ps=KmG;|JCgOAI(VV91||RRwO7s2I)mM5zt7c>wc@Wq!pI# z1q^*pG$==+0G;20v}PJ2`N|&bE3 zy9e+4@xG4$JJ^j+{*yiWStM$`Geqv#aGq{G9K`m<*}=x`Z({@{{np=n)nzCiEjDyt zG{b&T3~H?~$QuaO3X3;g?YzD(oun}|Z6BW@<*M!pFLEC8^0enjZ$8@G;4q);miR8@ z&drO{=DCcccgj7Fl&Fq;M+y~Zu9&}?pU%1WcQ33m>2EjP;5nn!Ov_=;(-ua($3x?T zN*pF|bFY)AdTt9$%#)Ca-w8IGXc{(i`nr;;RPw+N@9Jcqq0Dg|wKIw=f7*Sn(W-QP z-7S9k@?4(PY+Cog2H%lNy2z+Gxzgek1<&}LMw#jXXgzkCQHT3}>@8hEao+Bh0}$B1 z=bHcaBCuDGEx2)K5~JR%-rf0J`S8_QXL5_+jn}~9dj4i{A&`NG1HquUsRNBy(9gp<7Q>aFn=RUE^Zmij-3ZcHlvth%VD6v*1e*00j9fLB4Qy9k*J*&H416l-5qPr&K1FqX}98j;p};EIos&a z%zm&GL?ALKFnF5=1F`O2F-{*I44jaJ0;s}Aqr8OvTcg!@BKYCwx`e-LvVQrI@1))9 z`gaHS5Qi>DWd^ox+*-^Y&PGD;KD*g}^2-H7NmBSz{_2v!5V|YU$#eGA^yEC>B2a5> z>P3_sxxd&}0z2TU2o{cyc)N~x&#Bs*uHGvkc14rh$aI}LL`uz^#hO>VxU9hHxss`< z#zpo>p_{Vrs9-aUeU7ToOA!gjzsYgL%pbphlo7!*!|~KwtIE2Puu9%C`BQ}{yZtDYZesW$6GD0V=>54y^HHXR{Gr1DZkrWhD~9nSSjZyYM>b4-vooNL=h>N+L4!{`nMbqn%(ZA_slg2LsXQR&;7z)!HJd9HzpQKu@&{o8 zhR?g8&WLWoF}6W&+44B9x2qm4Rs)3OzacAd+Co6Y`4v50^Ox8_vy8}1gpj+Gyh)FZ zgWXzEctA6E*JDmh6pB0eJZ)yYAmv@E_Y^@skj|R))t&eTCq4dblA#MTLGy z-@?X(&F*|>MA`G@d#Vj)nG-%rx9YB%?igrXZP!nek#iqy7J+0(?en91 z>$iy=x~=j(W%DAb$;&JItuw{n(oofbQxx2t7S0&lySVd(H+TSARm_?G$j zA{+{S;PLA6uu@c1RM}Cpxl*BqR=E0=aHb$aKC(2=y71Eh{;IZq8)td1uG&FvfluLC!^}PM z0PIo?i?9O%w(j>Ig(a_^E+0E=PEbBjE{;fc;~;0tu9>J=yIgj!5~(tqGY&TXkOK{8 zHkM;*nys^UyVzvgX-2594pqt)Gt`uJDoo%yD0iv03RvAvF4$qtl^6GLam*+fU4{)s znTS5~IlSV?-yMLie~P#-sY}#;A(y5CwJ9`8UXiJFQO(Ct!Z=aZ&F4|kD#E;ga=oF_XiW|R_FZZdAAJR-% zD2{VGZ%Ny5FN1wn3c>gf%_>w2TqcHg^)}l#6%&-Xvx({t)f8Krz~JYT@q+lPR4$(O z!rN09j{P$Zsu$79eF-O;tS=@gvfWQcH-wk}qTwKUF#UFZ^Dp%I;pFo+>C(&hFY>w6 zvLd-=zKPb-p(`+#g(ND&7dd#$6^iL?_g(VsPklnh?qNurm7=Tx=Laup` z5TpK9Yy`~aE57A>7mLNsSFCglJmZXAG7_&8L5EQ$qx+W_kGLmZR3JOYR$RX9Y9>H> z9k;@OqWS|)aWEmFVtMQ~D!lQ^N+kBc4zVrgX0nC806sn<-lId7auNFnDuZ9V$1Vf9 z*X-sx3yydn?yUpYiA_w0X^fXRX!s5Bq!pR|3Clufl%UqjDsO3$mEfu24xtArHcLmm za7C;+N8PX@6l~SE5%D2KsO98p~9o!^C&Uf&J&B2pK$^YBi`g=9d9X}f`a>Cw}jbLVJ=%# zP|JolZkwq;Nyet0;UI3r9C>ntceD1cR2E>o}4H%Xj5s*K_5M+^jD@+?+pI^W~Q+>C%#} z9(Vq1$rQ`vthDEL{5hguuX9(?VD^=krt1eI{IPX5y^KB1ceBAwCdoz}!ndyYLi^mE z4>cwl?0k&D%q_tqb4_J?mF_KRln=(f;vt>)kX5dy873R+O7H$v4%>kQLr56^)5?FZ z#+xv$ep%I+i@M*oQ2N@#3`+}L)h|i}9 z%5VJ)eZem<>fbrr@P;dzj&WwEqFtIk1eFU@V6N}eiaH;jh2oEexpJbJ$oh+(*a|A9 ziX5e0Xlm3MK?f;UlPCm>>ZZh3XPbdYi7OoVcLqYeP^k;WDEceSOxn^f}wI`I*6dUQ|b7IMt zspuG=k3<~mW~qtUawkTeKdrD1CbAsLr%2MF1+8muo?7!l zlFy1Ctyl|2@PAQH7o~`_gm%(*>M3>BVCS);y9$~Nf0(JJ4tIDUq(zv zvGVkNUU25JIa;Ik775nztvPDc{E*D)y%P2lm(KcS8#Nxf_)PiMomI$BS1;#J&d>$m55$N+; z5zpJ*AI1-?akCe`daGnHS$&m~+oors-u$d`7L#Q|)F#n5Md}uJ6R9_H+@8ww-trr7 zP}aGjA(6BO(L3%}VA=>;BTs-@YEkz3c&Xve|4TjOo%!m>#NjYTa7YUq#TbSJtHvPQ zske}l(i86c@^|7D2G9Q2j`|yDNA3JpikT?m=_+*^>OLVXCYB0!k^u3V$%?Y5J0j2( zpvMorJ6&8a4SY5pA-mHwEzfM;hwzPN8rpSMv+&sMUY0#|HuuTbEF0!po1;Wj114N* zg{}9PKRvW-<1BMse!-OgqHs+vb($=Trn?~o_pRe4w#I%#{XYJ)$qi)Q!^1QuSJN>< z)n==5<9pl{$zXI9!9!~wK4y)b0_;x%%Fdt4w_gP&6Yg9M;StwJ*V&mF#ubeY&%Q_* zw@-AAg9IZuaa4yK^I9EQn{(Q;MSvn|UF-8Ys6%FMlICQ$>yd$_{n5C#d#BL@mxFZd zltE~gN6M+4iQ1@x|Cxr5mvEp>)%a>FYdFiEm%-Fl=y*9DKFs0vx?H3xnzuEvjv~El zVTLFS)@7ND=d9TfiYvQ3IApiHX#huBVOd5{c# zJ{0)1lqore`m~Tf8=p&1T8EN^a+g&Nw{-TSW2W6+n}LSAMu{7n?aSJb+QXr_2&q%s zb)(7YZEY0E)w7-VfoM5AF@;u}hB@(s?5<*+?A$ z(B4rph}l!2bV#L`mNT41wiWthJBCwDQGO`)@Dnn85CMP`Rt%SBEN&_|sqkYvtJFFr_9PvZ#=7j(MrX+d&)|%jO2F~!7k(4= zs;hKi&D8Nb)O3n<#IISMN-xK2R+3H*I+Fy09sE0YuB;9VY}c7S5qfA*(#5mxa^i;> zD?KyqK1?*YgwGcURZ1O%a$tMH9UPr|Yj>r!iubZks$DN_P~zJF{hPZ2+4l^Rl&0_o z^7HW=t}KsqfJO13*e>3z zQ96HRxXtx0ooe#&rGPIyV(9DHn;D2h=#jfn8d4f6P5+^caYPa6SMUO_AghWHtW^?8 znI}S6{Bb$^sMq1-;O_I?S&Vnki=OG8Sqkqaclg5FFK9p6*K@fPY`E=sSj`ZGmQ0_Y zr#A`;rC-&y+$%j@4kMs@8p#ToT#eC89YQ07}sP7`zrIa-?>fI-9O-+o&mn+Tk zgzNLb~i8J(qHVc1*gh^$XvF|FQEz zBk0;|l0701h+f~VLXvB6uz#UhNPLLaX3kJ}_BQE66sSnpJ9PNz81TWP8O{R2zy9*C zof+?H;Yr}xV;G*^`h78sN5#`u?t&#GB_Jc?k0r~u@0VWDKuU^WHCeuWt@ldTuV=hS zHqm=D3%Lf!n92=E^FAEY--}WP7LXz}%$H#ivr5;y)P$zV#-hxb55;uVZ zId&^mL=3JZ)}Y&dn5^Ed2k!ffq5|liW}+lC;lWynVl>hZ#7FWHpzu4N$Hv@OIv&Nb zIyWWMZ=Ut$JUz&pDiJu}qP% ze>W=pU_U%kYowGMo*J)v?7ZrAija0;N@D#{*9k#@uW0n@wxICpai@Hl)6?U}jw9}9 zPwsd^ZYY&Nv4}_bK>q$1uE80{0hzZ~;R=L4KOdQZcw!+D^1pM1J)F75 zk6rv=Maggf62z|wgxZ|w+WupWph!3TV{0Vd<9^*6l)+CiSncoY_Z;7G-J4OGEHMty zjOmxPRB`*VU#o0JhF z8ZHkLb2-a{u#A_3q$ADJM=v# zo>GZC;+WYzk?Sunq9#Yc<^z4LE8%9JPI7qHN*9)k-KlMB{AhcX*;1d(NiP@2y#ZhT z%Ts+5$KZw*^tUP+w{PQ7ud}D&3O6|&e@hKC%RICY`Fyv|ah(;LS|b$Uk;aMe`xr1h$a1XME<_TfWdz} z2$Dj~XJ4Ml@I7p8nGTELNU=bpIW*Hb-C5Q)ZjC!AD_ZIvrE=&aWR)GsRrE@7Y?H6z zR7b>r>{6j&s$^k-jDlZODC#Fr+rlA?LLkEHhbYnw!pzP0*S$LX$A#BTqX)b1cT&TX zM`cf_MQwy(2n_T$Up@t6)T6prr<+g|^JM5}hvWnh>+Cq=5CZxiWSc0`$evZv%@+!O z7k009#p}ZjUXo>GJeI&R!)}up$cV#dOaFRzZMVx~8zVZ^0H@ZAeOadu?Lk@j<3)pS zks=l$L_9B(wF)$33HqWT8Es4b&6O}I|FkPRg+hpOn1-ETX*-TLBELU!@DD?>B?2_^ zq=+ApaXBJqEGM3Ab@G6qh1ckDg>jo2T$a)G0C^Zp{R=I7+otJ>FG(jGmBEI*;6c?vu$ld=~rR|%EDCI$_i+-DMnL#7NFaRq}`t(3y27_x& zKYRhpQ>91*S-SjYb_T@u&;{OGDvly%xa2*-$mbyCc{)1s*Ca^_qVzmG6UJtrLtm~B zZ0lGf@k24QJNhxDS;<@y5{8oy`QOj;W(LHN>hBlkVzz??Z>x9K7e)9k5Q0MOGR1g= zUF+R5Dw9KM_@FxS`X?X9dRITRicFpk+kegB(wToMi-3k!SWE|{a+xILaNCVcaPNBk z%yC2t15aHb)U81jn%>d9A|d^{>d z!9#w2h79d^%0;(rUM7br%2fC_ntlHMl<5QL1%$#DVzg=l*)|BEt@j z5Nf0#@)qmHu^M|Fs_?{@7^M(Iy3>mz9f+l}ccu18y%YrM9Rw93V5vG#zh*#quWNb!N< zz$tkoI70kn2(qZW+8?P8MMy4u0`I#?(OYb3V391`ml9nxemk8O8ZIz!aSJV{|CNsQ z&2z>*t8|}MXQfA(uSv*jzv-&6SV&ZwDvWnL0k$!Fcv%d|=K%}8k6x&U7?Mm)&?GmALy%?2CY0Ua7h_ z-g{ZH6buZSLC+_6FVEuv^OJ_MYwzW>5W!uqG-mjCvVRCWzcTNGH?rJj9D}ibR4oya zWMbWcypUs0?8guTiF+0~g4e$*6v-y+jDFG*K(r1_<{%IVCG{XftYHA(y;bj^!v2qE z{pyts%zx2q2mUb1KQ+VHs1Y#3)ujfPt@zKfNBDwQ@ zh^YVs?JZUkYczGfyd2_Jr0kvqVd3D!P@D4mV|DtNU35H5$}NUp&WNjwWwZ3O(NTnj zN|2CIvc4bp=Zl@4J?f!zZ#kB(?cS$7r574?o>d&D;fx3(|eQ*1LKt70r;; zTKUvn<%{;VIt0rn__ndUd{TlnRWq&ND^@&G1Z@^?&a`uxsGX=&-gRVQMd(`MbwN4hw+nWBNf zL)5#BI%QvO$r)K*!^TckD$Kl%%g}j{S5>AjCjWWhdY;kaH*X|U8_%vr);N5tA2Pq3 zXDJN4^Zg6?CP{%+DZO|N`~uVArIAMsTHt^)r4%;Qx|A0f+t}kN%UDas1OY{%$ zGz912@ln`Rz^iawNA=mKcTEU`uk;au?`7c9s+fd&21?bvMdy(sh;~oEgMaV7H(cSa zmBA_4Aup@H@47GG(KO3ASEF+y@5qFx+l0gMl-64^Hg{D0huWwFr`DC;VLp#=vlk@+ zpfKZ`!k#*3Rt0G6;xyTKLLH&19@6x}AJdy8$#9$4UF^CLFXi%y&BkghKbQMSv6)x_ zM2|hGspqTg+!nF1;vpjcv?@caRqS}qm6R2caQ)XD<>=MfMwQc-A}LCRAsm^C{(&Gu zI9q9@xnPfWY=pF!J0B9IoM_WNvYpS-^rvIPq6tlYb7zI@Y^Aw*44&a5AJt#x_*DS< zD~Mhbl>PyH5XKiQw0k@zO-`KZs>sMAjYRMJhRy7!fbWUpw$N!fL|*LbVndn6ML0y! zsSwtv5ebVa?r`g*1Ka1%{P;x}F+J@sn_?(d-6Ud>_(A_f8kh@$KDCV9-AqzUIqRMF zWB)Hn?|0jw^nYkO>MWYl&8HlU26DX3W$ z(8ClsT)s7>2BjnSVh%cO&DLj+E<@1$p9UOy{z{d~;Ibyxsa2UX?L! z?L7E{tufIhcE(7ub;Dfa)vn^zm7NF#9zt#k=`D>4y;gko5Edvb`tkM-jNCjI-eg-Y zM7qyuzlkoJs$|WyN(SGFyyKG`f4;Zs+es2rkaoE#!>kQO;ejO6+dOk&%+j1P8M| zL6mcqN@N$_!=WE*lFv&DX*jH&bJ4_%#h8@7sO|9jfdO9Se^)v(pme#nx_V+Pv`wvV z^OJcO*mejg#bI&8AtR?xGM3(SJ8u!C*>f>Q4}a9CZ_{9{p^;GXnR|Y8{ejA)@rlQd zuxBg;h9%W%4H{Wr$3imftVy2tv#6jZN80Q^FL~X{c65%0^aBF90qd|~s9#9=n#5EA zL;Dt#YNy8%0kH=E`oWp`jwhvsolPZ+F83esg(MUo0Gmt%yPoe08-M+FOZ2nc0yY$W zIwf9U_e&(FvQ!t{{a`cIM$871U}WpnUH!V(Vs-(vHHf$KS8CDtt|_9T$na);1+m`9ETEDKfy@t?xsl+*9xD zSZoI1l7TWph7)$_;Pv_bkx|p}O5At29m&$ZoIFTH4D6gGE&KhW`3eu+-FA1ojE)A* zHG{F{u5xnJBNflx-_Hr*ybJdVm!FXlEMtVrKS?1TB#G!PV<6DZz}=Dv9>jN z_X?Mb&FMsebObZkoJ%pT1?{Kut80k>$U1CIM}3t+<>lR}dW}4iCxp4VL{G7Vdf~d_ z8yUvxT0Q!ZxS9H$dVyf3TVq`Zq7cl3&hPc+iMf=k6q(^EW|$~GkR{UTv{5TD@`LWm zjCNt?6wyyF#@Wpc_(f#vYd7g^%rr(sT8;&70u>^+v4Jg&43bP|`h+aI38s9rj zfU~V*5+&H2O&a5`VO-48l*QMP%xGL|fdA%-^uF5b7Du$pI-g72$iB$YuAYTy1TlGM!@7 zC<;lBUZdg3Jf$RA(_m#3qha3@{_BD{GVjk@zDO_ud4tDOajC+0v{3mE6`RotBHP;OG(r-ew z&A9c)3|kml!1@ht?;s*kJSLubfAO|B!u#)J^Tu9GO9&xjr;&Q!mebjpp1-kU{cWC7 zYEb#XSV#Xg>A_|PHX5ys33x*D=(k zOj(eiEh`z&jRnm%Pl9HPq#3{#9aD zr07pDbfRO?E_!ON#{6hA9Ulr$jq%v?he3Wf45N}xX6qZk)t&2XGRCtRKRIWpl@|~Q z@DX-`-c-c49*9@ipZK7ZtzG8AQmA?qG`6(5Dw;T1nZ@O3J)Gp~KCrZ1HRN>*t@2RE z>wGnps#v2uDebxLS0U^!5IwlKx>Q_V|A;U!g15KQ7DTm^z80uMyQPr!@=@XT)stgI zY*)%sbkCQNrdboke3`xkw+f4^>vfioh*Ky zBJucs%bzF!f@CFdRwIF*5TyRX1M$Q#czuuL^BNFt?J25`>n~IP<3+B}H31ouu=a*O zeqO})Y-nV{_UnjoZKQ;j)~;$1MbNCZccu=C6e)y=NRWWlUAq2oBlFWIca(CygTt(& z_(t(4nn1uNU+FB75R1tV%*Eghl0G09lezUgpQ zwj_p`mFsMSU-k1b2%B_IaC4kvPzA<1iw^V$vlZ*<)nb_%>)oGJnl@#ON+z=;S6!3| zKBzXHh@3V5#1|bx$Srl9KUIyuP{8YkS(mUNoagF7E|c2TUyxf(HCeO(5~++Rk@_6Y z*S#cnBv+l+3(Q=M3d8A*r;k5*)BL=;DGwyspF+Nh9q^^Deadwu$h$i3g+$Lg9G664 zc`9fV{xE$Tlt8|2N@Gp}h-FX7ckF=E z@s{`>K%I}I5=jG>p`yv=h#tEqnV~Yq^F;pbwdUjVrz4VLG4w=>orwWlOnM?;u%B`K zg#I2Cd@zNkuk(hq#H8GN$kd!bSx9@M6l*j>RFB->sCD`1Yguc6f|#rUX(3 z?Npu%9}`XX52&}9@NC%{2+55Ej@>a(917&~5e_!SWRvE_0EWY8rG9MbYfqOD%Wio6 z;&`uEEl~^cDbw1beJxWA;A)IPVg{K@7e|z%&b$i{21G>(OZVR)wa)ZOMfHv(OWB%(!eZ?mFn;HxsU`>#`Id?wELA1FjKNs_^3kWlwOwlRTQAOz%)Dc~ zeA%}TUvE>QKF7mnZ8gv~MPX2O4?A~uh>|R#ho{qM2n2(T(=^{`A?k+tc;9o4<27Y; zbT%ARZpD1JF8~QpaZ(j?*WJ%j6Kz)U9+=kJ8 zIIE+Sif2T`l?xs*GhA6Gr6wrdcHw;t{E&dJe}IGE#o1xX8iP{S4R@l9Z@J|ev@N?X z>j1%jQMb5zYSSVa+>k5RZLlpnd^9U7LzPtIIy~nCX_dI6Y2=jbQ0};L@7G%4aoL{jzRaoKJt@QDup9x)gws%;uwEgMQ z)b{EgLv)@=eei*Hu{dq3rL`frF(}TP{nh+_!&c|@dZ!ebgW=o!=b@XlJCIx+pI?4O#pvfth=C6}g0KzA|n_{GSB=F>L(W1%@xSnY*W;1%{F8B=llCo`<$yPvm zW!FSi@5>6S5HfD~l~$pAK$*dXG=`I!Hwlhw+v_(|=gj-7gRv%~IZ`)#f*Cswlai7u zEVmRsa+AF#iN7nK$v@LfCLojdxjo|#<)D`U%5mEQH5%cc%Js`Z|9J6v7wB57MVLAg zzYFymKa+Y)DERTe^hzK8Q8hRp)D&QPA}XoaC(88|XA163RhdZHnT&^; zZ_&bUPBw;opy+?7G2hcUPc4kfE10;*v+hkYy7O&tzT)Mo7>E6NMjj(!ta5)55sKYk z0qtGbW7!okLlThD^;6y6?h_b5<2BE&z1>toTI7H$DmARda=}tm~B?)Y~bvj0#KOWk!WTf;L@p~A!OtX*X^!Qp;V5wy39Xq%wO*J z2xjRnjv&f^h~SU6p-wP~lsj-jJ7~pZ_9%jUuWALS5pVWLss_K?jKw$cyo6-O7<1N=utSdYH0_Ba=Bb6YjeU6 zY}&M-9o7Y`bn!#=C$10E*y?)q#c}c)vyHeS z@Kx>)>-NW6xddSBY!+Tn!|#yi-s&4!EWOhrCnJ^-YlHJW%LL3v+Ol{|MnkPlM2NI~ z*XJ+%!okTYyscgVw3RCn#YV~8bQ1aaT%^7r*_RKNYYq)Nqs*mEvS^d?YHQcIp0Oqd z)QBwi33s>$5i|;&BiKoe7tN(?xd!fHit|{o= z`4ikOndytiU8~E&`rVPyu8DN;JNKhMK*o0taA{>;>FVmjtel3v2tc5zU_?S!UFke8 zIZjxY-vKVVgvw)(GlX7LnW9N1@w8jcR(!L9#pr@Wf4N_25T`kPAf;wUV{TU?s7cXS{3siPzeU+R4T{~uxFH1JU*Y_nXn|D-Pec!+!?KQhU1 z)!3eo#RgJ83a_Rdk2i>to%El}MHJhu^*B~sj3@fxmjJM+aOBQXX;aV$)ikXL9~8d! z)rU{LdfUXe?73stNC~7Xf-1naUC0kXG#Q$92qy7SZr5n%g#Rv$3z6zBN z9t|#ooXJk(d>0GBYg@Ny0J_2iK@w0Dar9*MVkv0VyWP6l4YiM$$2t&3C8GMx+d-q| zf`iBEN)&npxRd+S>h-@mcVJRVcbfzUPSm#x%PCFNZ(rNIn7>BEYo+$Id1E-ed@=V8 zWB1xs;qzojO%OVBx9>^0USGk%_DEA@zM}EcenALRJ zmBEKsJCvXnfqGpf@~AJ|nj-bzzodCfZoke9ULh`#584j2I8k(Wd>#nPmkFvDZN&`J}?Z)&~!Y67R z1B%-0K{E^$5ZJ7RI%Xr?QL29VQO+u;eRF9oWydN)KsRIe=HMv4O zdrnl$XDDYs_o5lx<8&J`sn1*Rp_!^QM&Aya&r1x+?oUXU&hBM({ajM;a^5*6m{_K% z!LdUAq;NTZ{6*;1W0PbCQZP3;oC_&g>UaZj8z z{lqtR1S8^ya@DhOU<6LpPI5}$B^aKvktZu*t( zXiV;lz|F-QrLah+5YO(13UUCk*ggyo^@c>k8!1UyQ9^ym>TK7!2Q0B!w4A{D>@|}d z@tkMHkQUM)p0&V{*x&G{bf7U+RthoN%<& zI^-=LL**rmKoiQ#px^O~r)srD%7ly9D(n;u^Ia38n`y3Yho#Q0y1!~Hq7iPp(~)a$Y}qQ-PL%^r@cQ z0y4I?fuZu}C_{+CWsb{*Y%5(+?nWQ8=ny92w>>_z1&w7X2|$FkX_XHh9g7#pUhmY@ zob6wPOs$NpmaA#^^~7=T&wAx`Ens+7T^=)Cd>dx4<>cVd!s-A^ROAlLr0*ZPHP*`& zC9ro4BJ#Ufa6NLVYlxhul+G0o7iK69R1ledp1-d%6|Ep9vYHT0t1W3d=9(VY;#xy# zhau~>i}=R*@Pa?SdCKGyTI1`eyHG0E)BWAdYm-k%hd&36=co*lh7V7aqubJx3iM^h z1n*yH(xE{+M(yF(umAHPT4Do@)6l0ZLHz@f|MAuV=9yf^0s7wK&&NdMa@rSZvf~CL z843plgG`=><%g zL;g-bMCvmq0U(nr-hZi94>&WmGRt5kgD=x$jkij#J&%P!>`8|${ZRF%cUBo%p`+t* z5E!4f59%Eh8a|arQb)va&CQxFQ$-M(%O$HkE2FUCq=8>umPzx^GaW9YZajO;k(D=3 zCOl&{S`^Ua@8odhYclR4njg<&%42?}@1rypqAv-U2wrk=tn_7nT+B3gH-A4rXfUbM z$~W1#%z)VzXAt8tS2xWmCg3u>&E4VupNRYwq5y>F<{v)g&$pqrK=3^iuqq!fB}&L+ zs@Vcwu?E%Tbm}Mu<>*~MwxTnT_Q;8^HfryiTiuVfd84}Cc!+GbH83XQ^CLXq+x=eT zBmB2~*Va)gfTIBNeLT>N+o+P6_CuWqjzx#{6!2Magh@?KXF2nzLR@d%VR|wX%Sop3 zWV+L2<$3->a-R3Td0GRnDJJ2P^#Ts?6qO{9D7w- z64 zxwyFYC0~RAbb~YXTIes<^rywofP)cN*NEi*`1v39B?Av8w(8xhYuBz_T@g=g;QU_9T9C#i~zEP6d6X`{n+p*%#97zz?1e)uOF%=|L^c_~=A zq>V=uGdCO9zfjy~DxU}^vZvhZ+YECNwVj{ccQ^8_|_cmpzl@1x|Ag^Tg5t~xa0NuB1MNXr08IamuIejXs}yT@H@M5 z<#4!c;1NK_W4yl>mN%N>?dGa275_G;SYC75U(rFX zC$6@uq3M$Il{u$v1etKi#N?A|CZ}Vca5_^Q^>R(;!!GS9hmJW;`|i^Dc5>5b+HfXe z`;(pQRt!8m<0{u`S5s>BB_5k*;cbsH$#p~8)&T4<9`3rk^`%-ClVy@He-HXX-rWjk zuy~;!JBi0`kVdP%6R(=YB5r`kq#IgW%xW@bN;6(O_psYU!C6(y`NYv??o*CdeQ9ZK zvFYebNiC;T|3Zn)0?lSw1XR2)%3BIDm+#Alnk1PT!5|>#4AYRNswF@SMCl6Mp6Uur z9NXmV-oc~{(zHngaJL#QQ}7dDFYw(xmfPI+=^2RGVh}*K`P2jXvVEk_TuR zLpX3r-Jg1t10noJMfPt~Jow&4z_ka@xcJZq9L}nz=#SZ@yn>P+UoA5YfL=~==a@G1Au7nf`+g=el>+i@U6YQ)yh;i zJ&QDIY3vB9%Vq?gwB2FcnunG;z3>wy$x&T*Sm>FsS*jhek(*@B?RA|C0xM=ZOVG~V zwwh3ov82mN#8@UnjZV5o8FlyJ31aZovoq~`#}`Y5?~TQ`fOT^mnoZV12EDNiHf}0+ z^&c9YgKj@+(hsYQ7(!sN%9BTTG=7bcg+2BA0^qLwEM;o$|1OK)@7p63HYbEj0p2sg zHK$P$E`~vStUr=MGH%NDsnqv5_bFi5N9`FW_*7s23XzxxiCr%k66wi52AH`xxy4n= zLZRR(uw(sT#6V#>ueZR6RuX?KtV^29V1uKmShJqO4!@FFa6E4(9lKk+QduihgWaa1 zRXk>4GkC__BOUA<+ng*{uCr~%&Jl}e4RYad%SbP;WTf{XNxwQ+XWLIXkC}5}0Nv{> z{s(sHPL&I>T~TKGepWtwGP;D=MM%H57GMBvOKEwCta0PFrqO>i*YV|mCUxt3>~Q>j zJR_tq8IgQ82143;69ZPZ@uoZE-1Kxi-l06PUBhi#j9(wua?`p!-9QEQG_iCCqF@iy zx?R*|h((DpAY&oM@i+$NsJ;r+|B#Vewi2Tqq*+U*EQQBW;_z-hKIqc@`S4QVkn=kk z^_`5;k3zkqdbFUWI5Hwzil822%>y8Q8u3OomY%amtbr;1rP`~5$U|wyH=d7cS2%-1K21RetxnmHp^8@4yG)CIcsX99}gB6!eMot`&=UoI4({f)S8|AiXoDJZS(yuH*~dmXO37${u&!TWAslT$J9dbNbTe z!nybDr6y#v#(fuTYK4+l8UtP8Q4R9RETSwc(~Z>|V6F1l;UaEQgfI=)eN{%oXjmKk zrI(ML4NFmR!*K%WIubO4GLdwUj3Va%oUzqK%&|vXlzEjbkP72&*3}tzk#|{Mrw1c9c=P1EofK*) zDa6NUWA%G{Ex%~JqR0UWH^60S79Diuy-){wEVRxVN z?|1(Q+`Vi6tSh70!ecO0smAI-u&F7DNH1ds94Ae}e7(vIeh{RFz2H7wWx8`xwKr3Z z;Hfb4Ipk?~9Pii(Yk)QH2pqpjbh_+3#mP*F1qpzCGed=jyv_DcJy;+aT}_EB(oM%} zoavKRM9E+f0cBnOlSiwAo0_hNDSQWhxq-l_;G-1X{D)DAfEg8Le2v@xc9g(QPnc18 z^zTLm!E@vw|5^WrBX8G-WSs6!`RpL|UG@A}$Jqi|$*$D}u)-dB z?Qf1sTI=;2RMi7><8rWR#+{>!b84p7hXw8Dxp>{Ms|z;jfrcVR>mJJ8_Bs@U*wWMw zqBMNW`lk}ngVK}J{T1DfHm8g6L!w=`ZI3E9GN1jJ1orZ&u93b^ ze)0=3sY)dYlELNA%1~yXb zwjM!#U5G)@X*vw#qr;0i!i&32p-C?Q276(pH(iNQuUJj>^W|X%$N<~G+tL-Or=b=_ zlq-Yg^emcOb)@Wfo7Y83KVN;9dP}b%n|V`la&rLty=1mbY$0sb1^G#RN`fcFOo5Z zsrIC)Pz`>#E-wxen1;^^Kf9J=1u_46T8Dt258_|e3Oh$HY_kj4=dT@3&3OWz)u((o z6JRhQ(`C5?PwW8YKQ`edRxv-|yv>gf{`{vOKM}Bj-+LFRu1MP)cJFxb)kBGk*cdAS zCK+RszTa^v&*z*YFaSX|McC!8;LnE$7fTSdhYS9!@$i>7c~}O7yaYozeQC{UVBg;S zYcV#X`~cLZ6Oy_C(eUc~OTJwol95)LG)4WSulP{H9{eueU`*=IA7TUkAM4`=hH!;# z?jEOnzjDU^ef0nLR-JapH#z(0kZP3b%luDU`RAq{|8y<69@Q+5Sq4Mnes?3w*3Ko= zrS5G24s#?fQQXH6sT$6cmMc=QNA;|lJpVQU1S>W~hsv4RQ^{Z|iy#zDpK z`vAe?JP=vBt_bJ-r5f{NC0UkG1NGb^&y$z`9KQ6I?+5467nk&=%koQa7bpRt2mz4E zuTuLlbPF6>M}hYL9>4#3jz3)8pXcNMs?)2I>@Ax{Hp|D}guXOw4|~r91t9|~hPJoa zQ!eAF5KHH;Of60)ofp^klRPspeOn-kk~}ii{*P78pMj~G8GGdJ{>vjLB^MM`vUK!9 zF;qKDpD+6yAiFSu4;eVe@UkADt4M?Dqrdas(mM6`cQw^Wuv zM0S<4`_;pifnORW?DmIU-tc{<0HX^ea@wSkt=i`4=DcYt9`Bf&6hSmlxyd&ow%Qj zhC~@_G?mA_mv6Ez^}X2TA_Do2tM}H=nb`OJs0LFDnwRL?F+WLo{q&H)I&trSoTdnL zPkt4;|NZ4e;GQpcS&5UDm0dJf1w#H<(QDtl$GzBA$~dTgr)@#dtJq8x_~&)};tbx_ zkj8lRPnFugE|>)EORR-CA0Od(37pg3cbQOBH@Z6yhf+hE+d1DdbVb=?I~DaK*i{Pt zkE~LXg;i&wD67+4M+|mM3({vTOeJ2RttB%38l*Hw1I)2tb{{m*NNeTQC}{Z5?sy@0 zHWwe)&sOgpRuT7jwS^6^L4E#P^7|JD;ReQ>gbm8Q-2eHc{pDy8yah&L4!+>CSV+mH zw=QjhkZb=*i4dZaR?pQ62s!2^XC<`ns1E#Jhoso3KSB>IAOVc2`S%SZ>0wED_~09} zr83jcmyaHX#!+U-htoM8CT$iT)q8`9Mz6htCO-wX^e~9yiBS6=f<-@2VUh%!=64nQ z5G?cF0cgf>}>G;?FdIRnlLaPIBo`JvNjGcbnLf7S6an{lnS}L1|~*Y zLc|A7zJwRH%18%t_X+>DSvTcxgGQ{zYRdE3c5%CboU539RJ3NM#$HJp?J9WfNn1Hp zV0X0q;OG0PGe|JQrS5lzU%8($Y@jH-cls}z{KIEs{iE*?_OZ$7Nv4;lboLE*5_#4m zTRhysEHKkCnrsG>#xve4_aR(sPw@)xe^MN-b`Jy%EV+%@4ps(5(inj(oyd(DnhoJm z^E>Hnpd-iNG^?ypXLuzbDCotSc}I8&U^)!2L(G;+Z8S2}uEGaiyV#7#gSl)6A;zTE zLtoR|69kObiX5h{2Q**2nzqWptg7juoKQeU5I+4 zog0UpW;r5AfIED1=-6hi1DmsB14h^!sco-}*jbq@XME|QvC>w2s~j6d z2Zyg9_$a~jnlqO~`am1Q{p)+jjp6hQ40Lo2Y^&WxWkFQp>c}MCeMl^iS(X>3!xah# zlc~)}au@O((w z`!m{^`0)L$2w9?~C7XV6Tt8((eyrUmW9_~PTekoE$5p$^=ja6Uj+#u7_0lW~3>6}G z5-+7Hf_8>OJ0MGAisQ~P%1Qisn)Z#lwFiq-?%69NXxsJ4Po@hIkP}xyLlNaZw^FKs zK@DPOIC|{gNx$7fWj7F|63@T1A4Tn>4D~vUb+A~kq2TLP9X{3i5(V47>U`E@xO{@R zCB@&pZ;}cqhq7lETa0Tek`CgC4;Lvc_GP9$CO_N*O*GSS;?rAQn!Y%D!BPuWWKTTu zJym0GxIeEwx*KI~+QT^2!T*0~S-kcXGqr2p>bY!v6>}OHy2$5|b6MDBbf_ek#%EdG zeKMe_qYxaO*rMrOd`C@svW(2#<_pkxjHl~MUm7b~i|rgcFz(}2`_v_>4{}~?m{VtZ zT!ZyIgDP#;P+_Xq;aO|7gSkb;w*3tmJc9;RHFo$ewfoSwFF23F49$sfYrfvnq7<`! z2bxy{%M`uAHY0}-imKzUP|Z7NAb+nJ?gD(~Lt&5ytR8@B_}@UMn$6eNcwWE7%h7%(@G#gWvWSH>Fp}8fFqZ5j^hK~MMcY?7ul_vl1s8jB*M1u$xlP(tmc7u-17)ou z>(0EoYheERY%RjAM4xE5+#yoWWuigG3A`Gj#Hviw?M;MXdV`EsVvXRPkm21Uf#`f) z2Dy;S-8<2o7@6nf?62*bu8|abWAHOIPz+!JXy;dt#yA;O6ML2n;WG@_=}omZ81tP( zQ7{?MqsF57i?7B~hrrg#5I*+elP)mkfW>orxfiM`be-k5C~+ULmN2nL)p}Kl-auqa z+r1QI^u8llDdYsc|3xr(91mQGJ(a^xOK?29K@h8!X-)%K87?xP`5dtmXT}=M9t}cI z{Jt;0Y$zos&DLtRj^0U0r5N@YF!CF3@x0lv5#;CvNL&|Cwm6dD#xwes%xchvh%bv+ z{6>I?!5(uB3%_qN&Fm4=6=7%Y4|2XCxvd1aG7M7K<|WBptoi?7DFa7xVA!+ojHC?`X7k|p^4nl!G8le$ zw@;rPJTP$hVWaM+W9QT*)23T6<^()c7F7AQ8->#?kr2-3mbCL_NbR<^eC;x7+108w zL%2&aW}mqEbAqsn5{@MQb(iBb@;Dm*2REP&L1E;fGH`JC)X=+A)V0lz2C7tOs{YjS zH6d<-h`ZwIArgaj0Hf+y;sx?Hg=6mcg5IrAUdhp-R@)Y($E(lgxq+6n8Qzbs7k+8- z_ZY+rWzZUOs7fj zW1_A0SWNBt#S)t|z@|?|9L!dv+cM!QzKUn&jsX`(5qfNG&8yiMB?*-9eQ7XYf1!Sgtac9@rNC8DlGTQO{!lxf75w3$h70to=ZZ= z<}ShGB5^S4R~+Bvr&^!D0qo6Hv4?lX{@gRHda5He4|dN^SREaDKFyE_aaK=>drIx0 z)~752=JrKU3FNgEm^7K~ZA2A1kMP%6riWa41FzzTmVqN6U-6VBZa>Rzq%=1zga3}2 zwDjXw1Bc>FJ1ZlcO3?=_;Py8Qq>>2Npvpys+OxWF8Bqffe_MH2Hc}SZvx8A} zoNm5~o!bqdM6J)svaykVy2=i!_})*z{2%}ra3fX8%wSsE))bhnrYz**2IkZW^mt_h6++0dxurv6Dl@AdGI-O{7-lB z?WfVRzAIHb&D)}$Z=_RhX}q>i8F5hjY70OX&~qisJi(}JXG9EpbyS&bTwbchqu1lmOPUr!oe0P5e8dd zcH(S(Lga%$uZ>rz^t@HEVl_F1t%<&uQ|TU9jKM#5V*J?eJys9eBq8LvX4`qm=Nyh? z*_>T)5%%1FUkv*yY=y9!?Ku-`BXXrU!;?H12E%kF}=NiWf7S%-+62IVH3JL}Q75S(v&V?!%5W;Mu zpwgN}e+-E1$@L_T74^*1gN~_5z7c?F4w~}=dT4@Se;HDOa&O%NUIiJv-SgI2$%@9exSc4H=2``^ZPWhe3=u-k zuqm#b zFp@;zVIvAarL=ttqyPnI5I_{&>I?K``_ud;7{8QAsF_alRk&c{-b}#RFrgJ#L>v%U z+$637K#iVsISMBun^&T)x5t-;jY6!}#xlQyCDiN0(*-7J;(x0vu)e(feJ3SuU`^2% z8~#3KY5QAkuZ}P-`f7FDkEHi>!H)g|129Bnn*`G_x+ zw4G63Vm0`tv)TIj;$*1k+W8kV=A#v1I{_2WgTG)1;{tP3H z>cOLPk6D8hXe|&y`DWYIc%?ezyt|Cv5Q4{=2wHZfcGrfhs$+OGP^Pai$w)2JiCdF{8)pw{QBo=LN zl)ar`V+JEn>J-1i2!KZgQN)K9#W{N>3As6go>yk_gaen%d~6YPG-oloboBH#HaIKO zUAL~#5L1z4JTH`{`#Sad6XJ|&`c^hJ>Qx^u1{Ty71|m+8P~CvH4dkP(I28acjjL_; z;GNoA@58hTnz2TcP!Tqk(YJ=RW|H5Ul)hc(2>K<$JW91BqxVkxgq+)s>Al{VkuZ4a z(={+5WaEY&z&?%Smf7{*Z57{rm>ZM;!C7CYViikVvNKTcgHZ9?MzbTDt_P*TqFT{x z1&v}>*me-`PURTvS?Kr|7Z?B3R+R8M{n&H&TCM2RlG}s`2k6NiJ+F-yRZT)Q)ybMR z%p1Rkju&u1N^N2c;ivQhr^h`N70Pa}*nlCy2iNJFcI%37miwr-Byr~F+7u0}HOCgs zweyf&j^nq?$w2u&dYWcZmgtB<6BUhHK9UHFygiwb4WPD^s~RRECat@=M!KK@ut*17 zI{jLy9edg;%ef`1*FW%f*McON@cqux2(qxuJFX^ea?8?_Jc!Kt?jhnwPS}+8x(e-Z zwe|6iF`9_=c&lFHZ5t|QATg>dn4GFO9MF=f>G$cf*E^cKUi7|RY;B3xJQnXb?*n#M zZv)1?Pb*_fo?jr={yCaV-l2UZ#kjt3F~`JzX%}1?90kI1J0_j(#&K1V6hJu5=b8=x~XN6MoBqIZ?q zIp)FIMu;K*gO3;YY&!HIaF88N14Z&kwpiYlw6>U;_Sm9A^EEMyzamJvv!u(M)?f1% zsTM(a_ea6#Lo`GsT%=;#)#=k2hCRB>y8M9Dr;2emEWNUal*3~P9` ziAyFtkMD|-?f;r zyM0}8Et&?p-UaILo9~iL+oC(P$q9uGuP`!t;z+tA09cIte#qF0e{>CCr(j{Nx{9{8 z+kH?1L{sljzv(eGx(?bo+%&+VXw;W;*aE_UUV_ z3^qy&ED7)$`Dr>Y&d58ffOe-wRq4!Vh0pZYZWBkHfcvEzL#r8^hBfGX0Lj#dxTbJ^ zWVI}}#zR5V!0JAF!yRM@+Z$%jnTSe{YVK6}aMkD3jrk@Q(4VrDENn;bbtcu(0;%yA z1sB9iFu|FMWcqg|_{hH>OZfww6mo*+u$fQ6;Qxy9(B5$`yMSxX0Z<9=r?S% z`~{le7aoGZjoZ|5V_G4WAO0kWN>#saGGnR$mK~NY;KF16 zJj{WHnA>HhYIxJMF$NjC4>Oq#I|O6oUDU5ud#E6W7QIf&l(ybn&Y-CFHmWk*w|fLq zX)semlod8WXQDosy}A?(%OAo~m8~fdd$60qcHmyHJmRBv_VUeZi+1d{PRohGp`}t-E4_&(esJIQpN*<1uyGH$aW*_GRu$>Qp z&(?VDre35BpYR-Iykq_TWn8~eI8eWew|NqJi4(v_GS}wX!wve*Xuw?F=GP^$F8bF? zJtbbkXwhaUFC1C=#vv+w7wvDw`@@!ueA;?uvJVa$``YpwBUp9LX5QI!HW6q=eNsXw zOR3m(+<0?I+h>I#bG!94G)YjL?L}sikL7AMkri!oh8pK^ZGTEUGDwpC$yOwQK40w6 z{fB?M^=|#UHiWZJD`y>tfNCm&j4e#n`);u=AOtf2lv{UFuqHvBZg@jawF0~) zkv$ummDOUr6Sqam`bCmFwyV~BT$Li9lrY?pe(bJXGO>T4JJ&I2HleDtW!_M;Pdq=@ z4AN%+9n^(s`)K*REx95w0^sWw`ymEAo~yY?zQv0`xTh2@{pD+TYT-s1((FTH2f8TJ zd7FVugHxkCOiXxDYNmD9&<_d!I4d}`bC2cAMkIgaBKgY6)B86b0qvszkIt)s+Y=|9 zR~f0ZnPN*~)pFbXPg9u93Lx76A>(-^F^C&-d9OB1)8wXyTUB>41MjxWY^yNAWHEE- zO$v_YR;{`=1j+~I19^%Xe$^*>F%V7iDV2<7z$f)0jj&psD!&y?s2a`dm-(2(0*=L# zBnu^VR3?^#m6?a?e$2h*t?N@|&^oQU_blS;FT0hER1<}yZYNgrji`Nk+O|NG%XKMp zU9SX99LwigyC;4s>oz7~uEXi6h<-}7$aeDw#9l9@!S|gciN>DKrwRXjF^e1N+A6`9f|3nWnXndModvq8pv+U=AUt+PwUGL zTXBkW@@3UnFE1{cG~JeucdZ<1#ZpK5vex4aOO-sY7AUzM#rg-Gy>mV2#SP1z`6|pQ zq8OBqEl-wo4asiHQ0Nv$!swAU=MsFVEPcAolQrYMOUQ@DXWbV}0pFl|Ta)u)CRaeE z*wSn0!k){3$lgZ0-oX936?Gb-KBL!~WDX0dw-hg2S0zKqxTnkbSB}GmrRnH+;yU`; z9uUP1f8foHy!iJFhgj%v*OrIU$)Ud%AB(Q9}qD~+seQ~)P z$`=e%Pf0FA!i=@Ei7A3E^S47K=;1q~oYI{brJsE2duJ~6`5vl0=6$KAghHf7{FGuW%hM*CJgxMDZJsebP>gTF5C@r$I z-Srj6wCJ=sRngRPc*)+7qJgrTU%dS{X5QFjzb&o&Ju-c`+Bz!wiWMyr2mC&IGC?TK z99Op%DTt^jqmqb*hqP4sXywKwAWEfRzw*(i>zA!BOLgQ77aGVx>c=yR@^XD?`S$0l z3_P(L={-@Ap7t3i|K^lwm+u{WFSN>tG$ntLVGM#_>@G=s-TE#eE*@I`;TkFvjw9)- z$#e`BIBr^grvLl7F3XpGE`?+XHS~jp>4r~%{4AWfetksl&X;o^$zZpxTvaR*5SsW- zQeMxK?X`gnZ}z?E z-UZn^?lYgVG>Xuyj^H}Ma;Q32FOPrRazulg&9hE#drCFX2Hx@f2&rbo>a(#fH|?L* zDgX8v0dmn|2Xs<*N|s9Y+c+84*f{ixf75I{Lpi-%;bXczx>w4n2QlZ=I3;HPHH<&| zHgTO(#&4RSw=@lID?H*aAgoOQO>n?`B|s^uu5>MI$CJ1?L9S+KZ-}0(IR7EzpgGY7 zCa!9oE@6?hT_TK!d0)a3Bcz>&9^;>SA>=y4NF8~dXlcHPDc4{p{j#`212hYf!Rbq- zWVo`lwTM?WA1!f$8pYs>l5sVO-TZK?E`K&Vf55!u)v(2V$bRj-Ue-Q?qE z(hKxv_r20s`c9ovM7oB)QHs~r&e1oC@0RJ0@p+e1Y}c!7v#8{S??=Z2?OI*qXaOn_ z8N+OV2zNcc)H*V)O@}hQcW}VmQj26>>^>TpsN0vYbA>J#SrZ+jY;$ykYjhZxUAp#n ztUxq+Bmktagt#)YhP~pmYH#c%Tiy((_d|oUc7#30aUk-oy96K5MDf#0YqRr5I}}Jt z&?)J79c*-cb6|XJKvE-3nc3EyV6iJLeOcVTOC&F@rnt3NRT01-w(6X<(!D$T^Y$t; zmQ24@-~U^X*t5WgF;drLX)~5jn!SPbvusRXh%y~q9n+|jyg(JD0}9x;)gpHSjYfI07cUqfIHgrEdooNiF(#V!{8d1_)WXQmGwi;hPI6BHZgeRP#6hml3 z+x>cTP{NM0%Yro=Kpt1WDm;jJNslJBOmJ{jc;zcWo{jx$+bCqt09u zxn*bdLZ(F9h(6z-DDLpSk*1ATTW6v$BV~_y7y241H^RmT!!C;UvS3Z(Hme>k-FcXT zMejl24~zmsl#&3`F{aLSxiGJA`&~_vx8+60^ty2wMUU7N6tfk43z$U~> zN-Kfe3X$W*cX$Oe^MfH2e35t3UB`I>q28DpuT9KdC!-41-XV_n1h{*(5*PcIbqi{= z5kIn0d%RoBB&1BFuM>y+iXh4qD7Li3%p9d6S?8G+#n45W!F;2b9r24yK>N3p|C|+< zkQ#0Cj^L;(IVIUcN^w}m9$QYs8sPjDV{E??Y3}1&8p1QPs@Ku1v(5&X9V2(0)5f~y z7qp`8Fa{5tq=pHL;YhYh!-Ht)=u(B=AbTo2?S^a2lk^Vn_nV`TWU{_%@Q>SqZh*vu zP!_KV`mkVy63#R)3sE=h-L7+0+#$vvLhClEY3cg7W@3EdgQ2e#`ZLr};p2!Dm@e%zf(6tR8$Mkz)ciLsw=!cuu;qcZf|G~u9_ z1#KCz?;Qt3DU4-j%(Lu0e|BGlkfxpi?W5c&z`U&G9g?OXAly30fU;{9#puUeJ?WtU z)JV2o?-JnZgP7OIp)9&F0SLC7KySnQvh##mtH9x&!?w88lD1aW#J{8(PaZrIPDrfKS^LOzsdPp54y9Omeg?%*4)1b?eSk*= zN7l?n6zj$Zza-Q54M{VAiD{Kn~sDi(V+Ubgb>ys&o|7yq*0=1 zW)+U*u=i2S<+g>Lpt0c8n2iSg43G59eaA0fj5m35IB#V&?0PtGUF5~x!_R+C#>@uN zUcNPdq8}ZXSJ(`HgD82M%%e`j@s zbD=k__YpPZ2x05_1P<8qJs`o^jJOYO06fkn^1$D&xXLI)TV4V7d2BvrHK3!X+CkKP za$W9zugoNxinSE@6oD358<+kBM7x%->q>XNy1!4K9VZIXsC%A=WNRORdX3}i8x7Qc z6;V1yJw9vrS?OoK-9p)4z$WFBe>W)yctb;?AZc?6+KjLlOm~@t-bzDMY2~H;H5U18 zE#ocaI)=b~iMG>dpY@FaJwr`U|F$VD%?7vg!#?aVaPbMN0%4+VBd!~lLeLh;rk&AR zUgjrZ-EV3$D5f|JDy?rs0hw!sZaVJ$eMGHEOndB3Dz>dYj2wE_{8I9IP-*8wQ!pr} zKhP46f3~Eid48m^(hk?}>=iM(6=9b$ZH20Vj_HY~t%%kfVTT1LkV?2$_3jURkWc3H z$&Oj9+@80xGOw0bpq(dg8w!7PO=-5hjPTHB35{CPC^F=QxTndn$_KtBvNrqUUTE?H z=!taY2yU98+wH8MHS)&ib{RJbZN7!Qg>qT;SEm>eBT3qLqe{Y*YT~cPd?Y0ha$YPh zwixMl!2sU*IlkTu{Yh35()rX=rIGqBlfoo@-`mNXXY`6pqq*tvV*xP4YabUj1tA}) zV?Z7j>;=#4L%Nu!fy}SuLbrMHN?FocMKI>^8Qe_0$i~~def*FY4hD_-9esVdCc;=v z3iXcw!jFYfyu$*`MV9~ehL++?TqGoXDiIdb6eSTh&wDbH((is%Mpqc&hYX6EAhW^5 znw~UI8WWv-)~t@KLd;r%N9-ameB&bAGjN+>726@T>5pkY8ZG`bs$-L`a)}*Wh;X;v zFDy8!ms|kZlu<9`oyL*8{(N6;d(bYn1him~r&LJvpJ)q`2wTMFEv5V_m-?bxRmE&s zi&j6Tg~t7!si3q^fz0KUztn^*HjCd{75_NYKL`@rbEt+(zR3_a(96WBq1DfBwA$!7 zt!3*B{ef>ipLSeV8C6Nf`%at0rxL!%zUK~dhBGj@H~UUKrY9uc&_LQ#eqqbZqojlzAQ1?R$s^&L0xAf*XK{ls^QuSZ?ska40kUoj zsSTBU7_4r>*plC-gMjrtC4Lo6Jif-}I^DX^cTLur8`M_4ps~($>nVq*HO(9Q%4cBz zCSF53iSF0s#n7?7N>$9=V8##dJ{hN+kroL?=T!Pw= z7}p&x@;h$87B!b9&^5U<-zkjXL2};C=42YQ9ny$*X5zVr)L>Y9L2V#B@2rz=7$p>} zk7u1u2nHPc^i+I+s1FEhWzYr@e$aXMw0 zP%6dt97Wz<8@)96vi7FMRwxX<-os$owKd?NCA_4R2lM$%eA;Yr&L~U8>333)2(*{N z23zd3bH??PvmTRY-2ZV`_K}@L(Ki|Nsdhz;SjN6b?)$j8x3*cV?bzHM=OT=0#t9d) zH&VfbZOGaKzPS0NZJRg+_Z2}M_5h#~g5GiFG2OMmR0jE652d-f(DSz6b&8&(Zw4b) zN-4QH*T&j$slVTx5u>xuo(lEXD}V(%cm%9TbO|6k`^|OuRFiF#W4U@9qGQ*fN3^`P z2LsFJnRd;z@r~&#k-FUQyd9f#G2HGH8zpAF!pGNCqm`rCAk0(OZ*#BFik*~PTrC4mWKztk(bC`V7ZtzZ?99CD7XH;h#-E^(Xj30^x_JMo6Q0zrKwJsK% z@(W!FkALK#lIWbse=48DVR#nT|HI8Ep0x9ToT!nnK(&-qe2BLo97s_D8279?NB!m( z3bl8i2y2ejU!^x)K?e^&XG_sI6@-?chr+C0^Xj4n;9KX3pgyL0Yr&pePUkev=86zn z&FnRAuN{aDXm9w9>W;Y=i0v4Q0n@fP8Cl|^u2JG?Ga}p)>k;+ai9$A|Iz^1ZR|G$< zdrb8-4YJ!HZfvx?oG7IX>tj<`R2px*&qr`WDr`+B*G`9aKHJVb5Zzg+e34HRbpP}N zUyp_4gL79!$>sJK^zZ9kZj(LM@MZe>76n*J-1lZ=;rlG}vVjgNOW%Z3)-#PE9vmtF zH7*uE`-VBG%}=K8q83^oWR_gbx?=H%Y3&JhUBD4N+TS51d#tVmoW>r$YG2VRxT9Mf z%sgBt!kuZ0hn!Y}-y6s#;@c02^KYv3;@PIhqCf6}S|c+R{;|Fi6w9MfQSTn}jb2Wr zj_d1J2+-ilj#6lHwmq{^0muI!Sg2&1NHG(6iT>$X5>))BmGd-p1^3Z+*Y<^H0-9*T zXM>kw%f5If)%qr{AlO95JW&E8*}FkRRBoCjB4+b zwO53xs?hovqO3ZZ?~BoZMXqf&U-&f@`=1e^0yq;S*VV-giE#bfcKtnRDeM&AYUsDa6H6>FijlAb}=+gK|wm#_~7dY?4odQkH!Poum zg8qclF>N||u%emEJx88J=a%~bXlCv5G zn*6Bz#B3nQYJk1*D?{n*3>6z+!Q8BJS&QPViv{>p>Y|e08_!?^L>TuJUKP!4n!bQ=0EW`^~R!}n*(w;hd=&A#1BZA)lQRIve?!ddrstS^22KB=={4jRoYsE z>nj7$VW2ZT4SHZ5@Dla9&s0ET>a02qn_8d=EmOU6+CVIW>+&f3Bk@aS`zq&QpY$U!R z)tD+7#Jo*DZB-nmhBmddBE8EDA_$+z02JwILP{c_DRP9_N!oUJ1U=ysPYDm=I(ipA zbs+ZQUU2}-h6qf~l^tXAKlTx5{ay}mqFfk2leR?M@ z12q1qx{;W6(XMofbvN|OLjNFjpE~FHEDFNhKy*U|x~IbV_pOLNFni~XmawN$fBN@c zK<-$_%1~|2K$;YU8IBZ%`lJT~(E!%mlBEEZFU^+-G@8ai_j^IWq8vF`3-7c76fcAv zyrO#N;Z=0ZBs|n+Oovmp7NdPy-H57;!w4=6>GQcAxM)QriAPWJ<})&NM`E}XE?2Ll z&gpv{9DhuQiv?2gIVsDjXp1oGu3gpzDeFe#QocNht=@AFSZ=z_zdO7? z9-i7{-O-2P8@Q$DlQTwJmv3MZ?+3{s|HjU?tIL( z3RFr8q~KiO49)}Pt%JpgevQabo-?oddvfFqqQnX-wuXiAAX%8PHOo6g6?U#0a^8m3 zeK|Xr2(Jzg6`LKMR7BebqOCK2rC;`Yr##+_IEpp()Qff;8>yOlA>$3rIxBS}!n&$y zgPs%vC9BPcBfd}qk2{{-D6W|7o%?MjD@Mt;2;uCWYU* zzP=wBNwTmulV~Xx&wppYX6T}sJcvF(?1~MH8xIq9oVjsILNwb)VE+`n^lDL8VM=1) zNSP&vt3DK;Cu^>KU;XXp-Byq^0cAvsk(~r~%`0}JO;Xl2UMH`nDULIXR=RMF?23tt z>6Qk8NUwc3UeIQp%1>8J=^MwNwL}3ExReX}-26pzjHSqPVEB3rwx=4OqmOxdhDvb2 zA}?Q@GP@%>@^HXfP`#t|0qEgP144OZVl?s9j|?QFk#qN)jq9xHIIqJx8x|iC)dp6M z1GVmJotk;3*&4jdK?%E=D~Gv6eNHQn%+_MaRW4c7_2P6M!fa>&1Pmly`QECTdbxl| z0;@UG63rKQxSxhh4sF-dIf>`jCwCeMIO!a9qEDQ3M#5YMcZ5n}o;?df7o5b{WIxA> zlWjJlwutr4T;Xo4K8x~{#pJ06#+59k8+iviLbaXGpst=qcE!1KVHs&4ZzrHXc2Gd; z>a&e6kXSc{=&2JelTiFe!+hwvpxf85S7J`uN2(Yk4wwMLDd+?pG{RAe z6mouLCkc0lbksXZ2z$RFf5og_{EoCe$*8X_rof;t5YAYf|I(<&LyO0fQ)RX}QANXY zaIyGfsVYF*0{H4PkW)+K8Psv$6;t$X%(k$@ToUHV$sTI>Cis*LhZ9bBrek6T$ycA} z`FIUv$LxXLOpbxlo9S*pLEAqr4WdJ-t3EA=(Q>)HMMFiK(Sz zU2EcH4g$DR^jLD@95Ia;3-g_~VQh$}zx6f!wlQ5xFY8^~6p{~0H1|9mlUfr1;Y~L1 zsVufk0}#T}hw*DAG9~%YAdRzvPNqe0`}c^$pzU~vxm8h*cXF89EE$+pg(R_rl7Okw zOEIAQe1=A{>u?x_Ulz1IoNbR0C^Hdf`G%1vV8rfx>fhgaNPS?+1#qQWeUpP5GXgCA z4m08>5g+-^Ooo;Z~E2{f+|E@kaVm zpCZ6HW|j5)o+)7M_Iw%OLVXk#10rl|L-uAraM};4uVT`K72^HldjU@R+HLUF0Zw=Ow9XMIR-1f?`s3AYu^gtQf1&91 zPc@D2JwjkjM$P)-P8+rd)o zzahp+@<5yB{2C~p{=GkcdiRN61AEYUYvg=LXdQuX^8BG<#&^smwveYS2Jgc#zP@<) z{x^UZiE#Jj)P`$QdrliWCH?4AgB|TU?)%yP-KGBGLU1vKv_YawYUJqh#HuQ7^O2q3 z`JZ<5mL3qoVhW`m4EghopC31-g8yz~YLo-JlJWrPZ#TGbGc;7<=KckOjXjflKXV32 z0DzWs@?`VOpZ$o(uYU8Tox6%9r2j26C=ks2XCa6Gf#UXeP>bNje<7FfKXAAHPOAlQ zM+~vJVbr1d#-`x2o&xBp}u&(13|J!#sfXX@uvL<)<;|lRV_R<&I z<0rMH|BU&jE{bKYT*FG1&0*=9|6St$F7Y=m)6WdV|5H{RItRmQo3!cVMC>aeSu338 zwns4zQpYZ}0BfegoX7!OKQEadsPk{F%M={T+xlx#X6+sk z43HI30G#}G__t)NK^1&a75A?%)&Kt-H6X9?orQ*uI>q8v_F)7tu1*6Ah*|RDh~f5# zUG~h3PImkp#{Ql-m{S2nIPtO3Mq(F>ju)5(w4l9zieF%Xej)1vSlYOL4K^PujQ(^3 zkB{+pSZjwLz;b<)t%nO0r5g!~I)Kjjbc25&fGJyyW%*YFI(;r%ic6kh4U1W8bW9|p z>O#!B*|M1cTk_P$g%j1-Co0GGmIXHc!%vi7_v$JctC+Qw)7B98!ieibFBGZ_x_97S z^yb0Bemmyz=(C{e>pnI}4#07Z0D3Ifr_=0hv2W-r4YWC%$7sP*{er^>^m+bSO-Z60 ztSVvIxjFAYIg00xwQ#XaSYSHA96;UrE?`|Ix-IJM?XO+&IQpC*Bwtl(a}XkP;#(SU zOqw3U{=)y_&$_XbJizqe306#+3+~Kas(5D-e^<~$Eze+Aj%Hwbfmd zxMM_aLu3S-4ceZ{@n@d7?{RGme7HGK9syeAn(4%+h{97o$j)Po+)}cXFA5;mbYc7{ zo#IK%BZp`ue%sM&0AtRarZ~p16T`u-5`QBC=*#S()Q_olSn465tVJM?bhFDUcE*od zKFrWW=-UmvFl&o$OG2#o^}Ke!fR$6J%{`>#c6&l5$|qGk8;9Na{xFUO^dg zoqnPCq(3twaz{ufvL)#@l8u+qb-@vUh=>4PwPD0{Eez<^?^S5!X`Z9xg{nPSq^97| z$1y@uJi8)HerVl8aCmsATW5UX^D9(CRGW_d%%T=xUJ%;4Z#JLE++Ckqm2X}95yD^n7@#}CY{_e)GSPqwQc)1tRwcKu8 z^*dDvfv2gjG#;)ACu|h1E8O|^_iyF?c2cr2Cfb+QgeK6?^Q7dRx3`Xpt3hr2v-6Dp z0dbNCQ-v<9`qjmiEIsX%ceuPhTA0D2b<68A;Uk z7@BU!@j@=N>x6bDeA`G854?*6Jhi3ZHg;ck3qeHy>n%+!7Wypf?p^d&h0AN`p0g3% zgFC>eN)m-#Z%;QT8symxl`9ZUnRdkCjg(qT?0%i-FX)IXYZ$N*?(>KPIxA$JJyQ$4 z<~Q9JixGLGe&-2<9H%eB`m(Z>qi9Z(w{zwb3^jsi@2@(Y>v7h{?koG)+A&@?{Sf~rgeDpb)(8|vk`+|qB7dUs1wwYTN z-|zC~l=Y97|9SC95a8ViS9D&^$@#9aeocDd)RM+JIC=1?O;SwlC6}>Ux-1zf`wQ`A zCqe8N9-H+D&gaVn=d*DPX!9$g(o&P$KngQfAga)17Uw**~kN#y!4rMRN+LA%)0Y-dsO;U=>bsWbTX=tuW>+o6{W<_B-+Vg7)g-^pjh0>^AX~H>v&zsllCBjU+&)^EqHVyym0e(0G+Tzn(B&3LZuFg;# zr0SO>MpbU7aXOK3F*#>bR!HH+ENzyxW{#UNKh`<;VG+LHVU63R7<9>prosFh<|Zt% z3ekk?&oLpof}Y~`Ez;Zk9sJ)U2E1CM-@cG-(9hz87+88B__*eN-0FdU4-wo z)^?wS${Ti~cI_aOlQ`+}57!idbr5y<-^?0zQgUUaL=wG~xA=0d6Yj8j;BGxyu4i*0 zdkQNyLv&z0UP#2QUmCt&;(O8APjjf+omIaW#wvi?&8DiXbd6}cB3xn8zgXh97rHUS zWw**!VSPxi9`TSixW+fxX2dnwvPgR|kHbhLu-t(?CXDk=p5LW;%aOMXz)_@s?#B1y zx79saRvmqmBH++N8gx-mHj!RiK*-T8>8|(IJh$TZDpEgj(ZlKZ~b{>jH*sXtvoG^r*U^PPEtWEXHW?Fb@miM;w`t7;#>8bsjR zmj~@eKL+#~x_$i`{;4SUtEZ(VlMdo_0?`jMz%{6+JSlnKEZJ$5h`m9Aj^M>>g;Up< z$m}1%=)==J`6m+RNCWSM5#Y^y)oqXR3;OEaBL=ohf%8lf`H$@qI)U%^;4(QGz8{-> z5LGcy1`n4Q=1Jp*ZV_BlekpN9$o4=wh*H=vPxb4?N0rX7Y`EeC+S!hj)mUFWL%U<~ zrAUj^YR?k~a`(?tfJOX*xw7dCu3w|4a>G3L)HJ3q8$v}rrIK=GEF=vp4AC`QQ#A?} zS~AD5Lix&TB3v6pIXTe!*4}^70Nz@yq;la^i7#z;Qoh8w(JEIXYDA9Zg>u&g+&ug@ z&FkS<@3V94eRTc@@55s-0hHNHJ_9iggVpZTr}XL#kI7Ahofn?yaI&vKZN=WHrQl#Q zP4}X^KI@ZsZ&i}~L6SK!o!Pti(rtb6bpy@Jy3S4>$xO2CX>zuY z=rgxp-OLQRAh61+{`zK?X5QoHWXnccvta1Le6Q67`n^VPkKICY^j$X&)5E08U+_qT0 zP;g7*3i}=7yeSyK=`8|+m39IAx)UTHeAm7hcyMvtK>mSB;S10E^6y*SQCbCct>%kV zEDLn=P}Ak(@5c^TzgE7Xa+^;e>-@<2woQ8w^NUc#iOUs#A;nawrHRA5QJ?cyk+f{v z#8aW=A-|FhE->D!tGo8B-e;X+yBA&<7&f-;VWo^-1&RO}&azh~vj(N0`rV;#g(9GU zTbM>+0o4Z0zbWcI$+YlL zw-&cWB1BctY#6L4mi|WvGYGXAFygPyE05>j^b=(KEWnEcpG&6q>C|ZW!-mltnYc2^ z!~TV6Rsv=niBH8|^lB}V`jiR5W!s&RhQ>psE=l;Dbp;x6mSq;Jx!i=OP|Px`q1OFO zot$@?1c+`0Umf40n1H6{ zKQU4@8LVY^hkiC~93VaqE1#^_8Fk!%55uzt2)j<4(#pxK+ed+E98atH>=v;IW1)h4 z(|E)`<%AF2g89!{O1dewsya%3uJDmEyVH0XVwtT`KJpH8LVnz;at-%T>2{XclkAyK zPtc*UJx_^~H@jJF0>xR@y4MuBASo=DdS}^&PmYM*`o5BzS5zVCMGfbC*cN)nt2@u; zkU;VSR*5}LUwNMQO}aa?}6e>($cb>kYHdLqxQ8!1iH> z5^^8_H@)(YdQ~#_X307pB7I~pwHU^RM?Pw)0WgD6Ug*}3o-9MD&m(Md_tVX8Sg+1U z(E^B`q*tq3%ySn+ZIF$X_M2@)2WBeqFT6!_C|0cmo_{k3$TRX=b7WRxLAcW7i^h~v zTQ9FK{eH|=G}H=iV_=aJa}^ehM#MOh{yOEDPeIuCS$!q&*_+Z1YmDLV0R~8er2t}l zdfFbE7{F@S(T#^y9Z1gq4qRtGSLwF~Dbw6A z<&#*8c!p|eK3@%{50o);(9{Z^OXef3a-Hs8XR2oTu&H@yS9rotm2akwwRz6W95l1* z@c3d-kW(Amopxf?dfkwNgPyNl7xX^OQyt2HItC}aSTfQPelr+a0@>eZ&11WN?t1bA z9r~Eep`~@-bll|4T0eaK5ktNaux?A6&->wgvh``%9ks%8zP;(H=KIEH1bwsM4+aLwowp9f$Ue}jxR#nts^&5IIquX&Ctq^)8m0oz zj?bLwJx^zkb=Nc1OBjQ2y9!j#q<+IVAr^!$44BJK(Lc-K8bqCCT0#+8<3z1N z(8_CkCd8FbHIo~R0%MLA@8`O}Suuo&X( zZ#DZ4mLWsFU-UKlPAL9`gL>&ufY)qI_rutnN#MzvGEYNo3S-*v$U_2OX1p00lw=rT%sri(p z81yS36l%TkrmV@zMSlreb!a62c)!-8vS7aS!DQ+PzQv1N zwbL9)tB3C)ENjh@mPv-ke4wo2s~HALjT5h2>TM zC-tjKdG|hUx7DYuVPsmoclGMso1!ulM@i5&czPMBxl~V}LHJC^8fXZg;#RPjeXOh)&?J#nA`caz!+p!Ge9zTg9ZX+orgn12;9#Zw`!k*_aDt-P`NJ} z{&;)zHv|TU9#oK@;DqN4&zp_R8oS;qy-yQKK%B;G-}3n30+k4enZ3twJ%U_>7w?Al zUD~NiQ9PBsJbvuO?o0Q7e#5 za6MTM0qNrK(Y*gW_JcBGbz%`lOw||1`eGqwXSxb5;x zu4r_ERSq^J4A`k(b@Mr+F5=xeRY)AN+>G4iwfI)}8$SzqCn|wWv6RycQhm61ffD79 zrH*iVt$gZMovcL1#Y+rB z0c=oVxr+SweRZeJ?zUY)YfOht_VcLVYCx zqxa#@v1P%x{vb4vQDJ3WnQV_^${?0(PIM6}>Z5!B5=E>?;N-U)6 zO%vA}GA2oZ;AaEF{BhO}#+)mdLyYYDO3sHSzQNd!l6ob+4GKk|w36n(sJ3~dp+j%e zHdV>%_1?X7B(Iw0c^!l!>@L?UN+~-I3SGXI7;m!u-Lw+h92AVIM>An8-$T`DlpUL( z@j(a_e;&{p38cr60_0V_K(7LjXw(F`gwSq3|`h(D(L?K$DGkg&f} zx>el4p)*|0EIP2pYM-n#%V~>mX^qc#Uzw`xWU`AYjK)XsRejgDdTTC`%BZ2orcgxj(#_SbSLYY@4A+X{CmCT>CPVjSIDb7_<8AO< zq>WMOZ2y|JidaVtRvV?!uq_cO<7P zH5(^}KR+(wJ_8o-^s1?q=aVrS4pIn)t*?Pj*>Zyp!pLK@714V&z44LXi2NLb@V-<3 z7gj_y#?6Kv6SD+kDD(!U;?nQ?(h?0ui4)%a6c2Jfd&08KrxE@EcIPSX+;WMmTKULy znD+&6dg3c?B?v-epx>)rpm)VQN^wK|iStc|$rjpBrKxN2MtZR%wK@(yvJj<6#0hkS z5->k5H`m0_#~!hW?!cX?xp@{pmhNKsvirSso*CK+f={b+I75lGC~6yn*5QNWNM1>f zv@Xd%MVSx%!b9&Qx*Cp!slA4g5}X|P6&>Shtg@lZd+-bvQ_mte?xr4Tp&`bbYAaO8 zJbNc#7*QCq{%){~&n!F)$)|MfW3r7K_m+KjAOqjyg8Y(~6}Zn(4YvmrC{VEJR-B+n z3Y_d$PVX}_Hu*56vp>%z23HS)x=?~=E9Ez3yI}N_tqKAe3b0iq8kACUKPGdS`3N3= zSPQBVBonAaR!WhG0hUW{DH?%qyef5nX5Pp2P{fm^nW{s~4t0(qxWP`W7Rqa-=eY{@ z;FiHlerLi~u2+DXIs#VX%f0GSpWZP<(IveOH8s`21@_m0)NOFh@&?B=`=rs^Ziqf} zb#DH-lXf{2*`yN{XzRl@jQ%S$zgQ+pkoV!8hgAPPs%9KD{SLhRY{hd!Xds<;x*V4~ zSw}L})DwoX4BddUI1T+UJQ-6n+c)J@rH7`)HpTF@L3B90zwmS z)N~|rvm8#CLcm?!9&JS%0+$)p|moNrvv3X9!THwjwUmULkUL+ zSPjKub5?Itz6#0fFdl&+_Or%%KMtEOU*?5y8m>}Tspy28Ko#?UbS9Sq0zR~izeKe5uLCZyo z4>5)&)8dnJLJ@>aJDOnbD$RUx#|Yg0D_&Xn9oFU-BdIHL@CWFubj6AOX ztaY`mFxNO6jHCcp*9ieCaa4zNrhz0sKYcH3>a>i->ssV!$Lu^e|3%ZKMwtNv zu$06zrtBOaC-_vd`W~uW{L<#3&K5(gpvSqd_4np)D~+B3Y5}kNKGR^}-2O6CW!F4+ zrd6>mRI>V@MJ9&v#fjV%0ivJLvxi#cmj3c_<(>U$Zk$f`yJLt;{0|U$G4F@zr5ZEL zR9k3%YuBWg^$jn6`GhE_UsAkMu4dBgdqB#Gb8@ZAA*9rJ6k>_rZ!$Zj*7=#XfxYN3`kGgHc`rQ3T@sPrU~!8Lfe;s!}4hjHkNImVXzbEMk^_wT6S|#P z4^Qf;#zQ^jjtJ3g=vcSM3U1~l7=GIS+wHjtz# zus;qc4VmZfGrJxc^9ZJaD>;bmH_Xr9#~I@!s-2ylcFr1jQP&Qq+Q7ql{+|q>DJT!r zvLGt;&l5kY{$fFUHr)3o6HfW$%&9MnymlW~R^D#|#4-FmgxNYbj59QRH7Jt+ok}ya z0sEJu{QT3UaND6!IJ1enD1oDPtws?BIF1H5`HNMlio1-6O2tVQagc)z9@~u7j@q+? zAH(BEuR77Ur;}|`koL4I34t=PZ3X!7ZBq5|d)2!i9Af5|b8N3A8I+~SlZ;V|`0k-2 z`m_eg9+PlHVleb|Z1zZhyb;i@wI_PjbxjoxEJ)GDay7$%BhJ#m_m)cFfox7Sg(lO0 z+!lmaROR!YCQLI5_}zgqpL5fw%5R3CT#aCKU_4v(H^HTD8S>Lbj2k3eV*+CTDg;Gl zvJ|ITl0EMmXQA8ZW(LKakS*_wF;V-hNY(ihGV%^gnaguJd#?N{U&=!w}*y~SWA0t zpPS)~2n_%OXqG<1*U5I$9)CaxO z62i+e{ex%|LXH`GWSc?z7xRy~wG9Py-OHf>byV6OXV0)Zbcu~*>Z(1S#zCoe*yKRP zW1Vf9ai5>6Mk($2#6D}9nPEuhl&eX08b21J7F~LQmw07j#hAHW0>Rgh6Y)dUu>XV{ z7e+ee|I|dedx`WpRp#q$S1$L{%-TeNvXi_T=I}e_%FHl`*-g^RgBJ$kI6X~gYbj5t zPF~e>FJ{ihYS>8691To8faqh7Q$1%RFq`F=KEFrqN5HI?{a!|x?vEG1mB-D7PpUNb zx8nsQAHLZ9)<6}bQID}KCB!yVEnO{#Tfe%^;4KlNg8Jaci>$k+2M%iTHX`Cs?I<7W za`o}2sE9;<-mUd*Hm&>7@}!ca%!TqKC~U+ebXHg|$@n>6bjC7s4JJJmJC!tdAutz@ z#x)uBEI29KKkwqMN^sdzZDmrH*j7QM!b4FGGul?-Guodi(|QKxQryl7J2r9Eog%$P zslrbx1-?mY&GRcD zB5ImStc#kf_h6d6w~d}~c_?<>vBOnl*zE+7jpMl2?2lo!Yx$e7-@*mqRe_$Q<(kgp z&Kr_HhviQx^IQ2~en)I*rnGmAP;x3ovZOvajOOB!+z!~s1_fYIQ$lhzhO(Il)9@6j z7bXwaDm`aO*81YrF&N;;{nOq^C;Of=7g_+i#%{Gw(&uzPEyiZ?n|C4%X*pk>vYt?I zWup1nZ%mMTxI&*nO;jgp6g6Ygy-n1JS^G32Bt9{Vh*I<2FYk(BG8hZVl8Mz}Lg05l zMFG?P!p**SFtuz0uxX1g{d&CIubV!V=vF%I)>jKw)VdS`z#ZJ*-X3_*m{1Cq)c=<=7a58mv`mRS`=`4_Ol+d+)Q0d z(s7V>_tdD9AUl2+0CWto>cq;c2%sYkfihgUiNE6Ha##!)rR+^^ligPjpWEP4!fbeA zY3Y(SAcqZfCi-jnv(@wdo*r((xdExOq&6cv8Lu`SCrV9%%fBU?Z)!h8^0fFU(1An1 z94BIwob`G%i2iwQ;pq3(+f=W_DG!^jkiw${obG9mHP(4B0neo=cf!p-t1|&>wa|`0 z(GlAER8S_{d(<%=HVaT6(Quf3{oJt`yU^Y$Z0l7kk{0Qbx$aRrvv({BgeM-(RC#@> zG%p+;RJ7G#a+{!TXK6k<^vF=d=lEFzf~30_^>c6P!}g|4wXTg3^DBo$U^!~|HDh%L zMZt-~z4_-e?A3u%&{po_zll$94b8CjjY1ugX+R3_68-p8UwZ+kAq4jVPCsa zBR)l^Ov2(RQvi#ypN!h*5~KivXfT?{qTl>6)c5fo4TO!y-MWC(QW!&^fuJv5Vxqvwo8UsX+T3p@mN}8c z_4voT%d^AvK4{-;jqyZbmi=M<^g-ok_Uvyt9N+NP{X2ZW!7ixLexy@m zh>c_9B~g;yA3DD)(_l^_yLJ`)0a4@qUSMCr}w+7{q;3#`1eNp*9V?esOqu=Z& znTinT(9e{~gmAUyaR>A%)uBo+*Jyo1F_r#xgj;u2j2C#@^NCHy>0YqG{*0Jj-FfH; z#^ZFwIA2q>9E}h|_+P z_`1;iOs3N5N|yWsmyLmQJU96Su11GMnS!KA#1Q|9*pkH#ndMdg&hdGfS?!mb~ny z^;)33j^q_RKMJ4_6u7*+gkfJ`y07O^pX}9}z2Z1;Ars&EtAxE&21uOSv5E-AwkN#g z55xGkXjaG==>0nDnas%>E7v{5bsgI3C)1UtSmZOpwg)qu8clhpu7ErkE{1XZnR?T= zXjYoBJRR?ktcIrkS+9zwx<3{zjkz2z*T{+?IgYV^6m}RH)RB0qcHNx@R2O# zub?l-WkbF2c(;qYi}&(;X{v0~)LO%lN4c)@_Cf+ft)^!l*I!C}OE0U1YaaX6HO&-!{lw;K0KuNsRQ*PH0s8 z*&p+R^~csSHb<|QO7iIFJ|raaxcInsFl#MM{3@DZ1x?XBjH~@u0=eQ{RKW-c%eOe@ z1BS8C2lwXN>KVV!|e$WPDXlLxs5Ja^~rlpp)@9M)InpN`--1?Ky?JG2XIe*R`1`{3EChP6K1_FC{(~kcYmROKuo1|%!kB4k zni22!TaFn#Xh55ILE$&bO8g2WC~|MSlNxfF;&P|OtXa=z#u z+cus{F5~0UEX}NRT!DiX%=0fzM!+3AO0_SaJG;$CtlcHyLFtXV%8I*L4W-x^F?;jG zsCL;A3rVx)wO_ALAlviYsV7$T8Omknr<$n5vp`L?gVQglmaS@AWtEsfubZ1W$~{JW zaePAps^ZuhPiA#|wAKD{j-J=k!x{Y%k0i;&ZrNiSF8n%^0eHfWQW-F!cbfKm+b{F)i9?vE$qkQ3poylV$o<$g*oHP3Pa-hc50f+On7KZo!I@~?{7gHv{XjOz9gAlC&fwAAwr;FvC%J$W~8Ox!Z9|F#qSJHU^bW z0hg;WsZq8C7ak8vDb(=!FKoEsW1pL!e@_+@uYYxcNhR@+WNIu9FtpWZT7NRYX%zxU zDD~tprO4$`ou{Yg(CpV+``_VyYqW))!D!IzkDh$+!mb!&e=D#36OL{n9)a81QR@i-L?y#;}%!;XeJE?9@Ag|o=HyyKz-7}U!!d++iMj^+U#BAOgaV9GChPG&5G?eFly8S%%-<)#B`5bH=+V|RR4%@xD3r)jdb7LZsl9SJ4Ybm z^e?y2L~=yQoiD@!ASt>duwQaKPbckNLi9K4#?g%3TWLYO75P~WUST{zXUz=y%?KOU zWr$uk;l|@%qfF@&mPWhR(vnmVwpnVrHaRU?`s$E#!{lQhu!DPZf_@Ape_zT7Kgbs0 zw47@XjxERyQzvGMW(q}Zh=pXk|6~Zk*#(!h^kJi5XRPw4gM^c>+^?LA9c|Ra!BCRY zFj$I$*w(f44%h4RoKY4|J-!(I56~#bXM*>LoFj<8E~&M2NNV*O@!8b-kmK-qS7qca zF^X%g=N(Hq()+uNuJ3X?**!wbX0t669rHWNu=tm&HRLlJH(F3={ASx$d%Tlw_%9^u z%Vj2{zbH;Az(i4@wUW-64+rBW`( z0IsPgzk~fiOpM{h{*Qgb+~+0e1|h|xKlPp+^lE2CKN*@jhy{~UEg?3oOy*b~9^<7F zd75l&>Da45e9!_zkOKYD_f~uA#V_wHcYPA&NfZMbTAl=H{frjLu#JR7l!q46#kZAG zkY+HghnBMl1q_~o7CW_8x=alA9i01bZX~^6Y(+_0j9)7%e;0?#dt}qm+RG38BJ~#zBu0Y1DtDi2ZpJBci8Mi@ht8E>V~$~5)o=KZHwctMSJ4` z*9UAOYPLg%dzm&A9@@0=SZ{NPjpNV2G(dZkq%qR^nXSdX zwA71r`jqZLQ8{usYz#d;op0b$=6<2pV{W)g<(SZX@FfWhM!){%Cv_)^n4C#>usA@k zlvJSZxaB)4_h`|bZiskg=k49iQFM7K>6PmD&t0oleoEU){Iv0NuJ7lWqMo@&?hszj zt=*oRsSR?%*fo7E%9A0|$zy=u?2F-wqBDs#@5G4x*YQ{|g4H{x*|6Sbi|(&aCzOc~ ztAV<^VdC{K^1mzT-_6ipXiB68kfC6p*)9K=y5EJK#?P}f4jW~te3CJEU{IvLDgfNt zVi|yfYa%LItw0i!guuOZ4_ulYo&P*{tK`+NYcO79G-a@5VW^BcRN=?II%iIuOj4U^ zMtTvT_l)QBL(^&ZlIy%F_g}Re&~^zSM7NG5yQthHJE+huU+VyoM+wYU=+Jjg@nKEu ze-V_dV2nx$J2?+rQvvrzhmi2fRLDe?tr2NVBQkJRcpf@l9xj`_5OuinL#zDuwHQ#@ z>r>)>Un$YBIes%#Tlm)LLJ?e9zXw374`u(SXmQN{LdTR-@^d-=_MF-?IN{ar>F(Xo z?-fEKJd1(aL=#v*MjMf+(#)n7@ilyX^)}e2lXfBuagGu}?c0ywgim^U+02m^@t@9y z2m!X$DBoIZ znZh~l&N1ap6q9OIe5&^~+WyRG{tRQbrly-I?<2Iq{S4bKb=0aghz+_k%enhu(;zMG z+QThH#P0yoLI8@bd*n}rboo0rZub(y0|C-^yR}D+@9xFjeJf4vO9LqhB;_ui#Cl^k zo^N>V>G!=F~_volLepsGFMnU&)XU(`NWJk znB0ia;_;01Ig4NuXLI?Yp)WPFKkIHt->L2E@Ly*b9|haUq1=J}a?RtplaE1KlKsxx zRMNoftM`@>F zOzR^birXcg`R`F8`P@%26%+Yea@23Am6CmnMZtY@K+1F~l(+@zKby5aodBVpVIxH> z0d42|ik7w^;2!m)!!mf?hHH%Re7)GW5NT{WiO;23ku1V+IbRvKYZJ3BzqcT3$3lp) zbMCc;V2KL&zkK`{g<@`ENU5WLh(N#1!I}E%v4G3DSUvh8ROyl#h$7}=I-zZ{Gcmeo zi%#nR1EG*S{$jr~7%6tHBNO+a%>L>jM*p*jv^!eA-&hl#b-Pf6hR)g-H&J)@D;cLL z7zhb^Ko*gtN~=?o*98+L_1mG&2~?(#V1ogf3>Uq0hc(;(LM)W3;A_hhE3d!|m|$P} ze~anA-`Q6kfOG~t{aie8tsmb$WHy4(s}tjSGH+|sH5vV`PfnZQ`iN1m&B2M;OmSTl z-0hwhW34uOow~~%1d1n|-hncl`rW%a<55PUzarY{AZ+XE!CvA2ZIwe`s;8eof%rvH z=*;#(i%_4__G!q^LVRHj(|T1Xg4)^aoSsjcTRjVDb1==(F4biEiH05b`Zy*4e|k$i zhYx?3?Nn5-$pW_jj|F5{@Hphq9!_`cqw6>NofyHp0O<2RN}H*0_?UCE(KPWwx6y@a zi?8_N0eeKL1WrEc%ftz0!Ju7UuQR>daK95yeITrz7y?5Og}>*!FtcH7_}0O{5s3Ys zYyACtKpR|79yomXL~ov~ZnibP9J>kjxh zIg45Fi~(rxiOS#AaFBD*=EP#?}Gw+SZjfw2MCO({J$QcKS$=- zf;#Bx|4^@4#si6S!oTj<_j*5rea$d7_TO|EL@w}F&;EufzBC2f z^~zNJ%i8Z9599pyQebDP9=4JH7uF1%GQI7fL-#+J68r_vQrHrx!{ER_%=&0qlQ-AU zMEA^(U?^&Y%H`MK0?NBvH@e91p(^xyICu8gFL8A43dAHr-V{V7o($~;DlOE2X3UX} zOO@S!y(_TXm2ZFv4>ql|{^)9A2h@IBJUG_7qM{;SUKM?7KJ+MmedOdr-n9O3`Xf^v zhMolOdohe^&$0=5Eq#szG0O6BtDWp5p_V$)*|p3?iih%BvRf*X`EK(IAu8~EpQ`Sf7DxhL;m4U8cTX}cn21ldjDBuYKZvU%RK8B{WKgFJsMeWU)MRp z_*bw1r^MHT>Tf!nkZ#v2eEH6}&#k;L4MN({wtUrJib2@lxs(E%?dbe2LKB0?v-6yG z;=dRh5Y%9CoZz2rLjvWJv$UFs_p3Ir-vdTC8^(VQa)ZUuYY{w0-8=20Y#a}KqD?Cx ziR$hKep!7T1N6^$z(0zp4Pmfl9S7qY|8!X|hjgT*54m8QmK0}U-t1?)UQqK*!FLJ| zL}zy+%!SQXqI~Q`8pQfK@XO}sqTT)g+<(yC@Ya)rsjJO;LAb+k`@O-wYJ#tIJZ6TC zF!_y`d#*oDP5rfl!tU(tmcc50*a;fn3$KUctAB#B=dgHJJ+MC#ZeAB`RV%A5{y*Kl z|DrJdTG7S=*v#dA+3SCH_C!oM8te&_hxpK83(Y!#DmYij|K@D`^{0Nn;e~P7DB-ClY=rn90v9UwIK65#1`~3BpnG^@ z2zTkW4VxARSrMF(l!9B~yLaK--?@{I3x6_pfzt^Jgm|?{68v zzs;xr3%mBOnEpFyI{c)W#{OBr(Ua<3jolHE`P}gpycIANf1}I03Vrn2>+AsW=3-B{ zB1Z~~hFb0;OLcjYY673fJO6OCr$>u_-by!Y|F z3QmW2{GJiluiZafJJM^NT7SnBaCZiR+$Z43^$2OCH8NAbxK3EpN_0Fj9;`opTqXFo zapiw}grr8rpF1P%pGM_>v@;s4STDx5YY16hMq8@4ARmhdEkCa2aAPdcyYVNo!!Ob%S<@)jogsClT(LNQf- zsghTcM6j?aw%bIE=!pkTu4fEW@8Q2XNV`8v2FCw1RxCX9Dp1d#d;{314TY2bcMdBt zR`#LFD+i;SZ(gs2%zIw+Zd9hwDdx&6;2x`lWj781Sg{m1dx=*+Fo zdD7H;ItycWBo}gLl=0>(yz|KnfzI_th8Y?G$3wm~IbmQHV82bS@_O;;lU;TBbzL>J z=(&A$`L50x#5?JU?i#D-(A_vikecJ3D$IU=SfKA+>u_QD@Oe?Y7%6X{Ny+Nwlo&8w_LN$EuR150`!d|gXc$T;`@(~)fFGlze*5sw2Qdewslp!o`kGAK!EpR-UU?zdCLCezK zd|Cvz$^@M8p%)WM_UYq+WEm|~;KRj(5@YgCoBqEDMnbolz&AY?9(>A*ncDOMHe3y> zP;x+GU7o-*0_FYRg(I+NSD;Ds)ME5bqJS4fkxOQ|^CQ1SttNq=OM+~X(G8VOT;}Cu z=HssDhd@}x9Kc~UES?uEvMNV3uvXAlT^^C?o+C8SX%l6=Kcsfd&=E?49Mz7lvYBjs zGJ^;v(W(3NY(9(^MwA0sUBFueCJdLx@_4JqD`%*#tam4nTx?&dXS+v(&x<-$;Qgdd z!N>76DX5|eVbwrt%U_+N{~79Gi~FVsmO};p(@6N{$yFUWk1b!mZo^mJ@9RP;$^yV~mm9h-R>c&Uugux*(|+%to9XOKV1E zqPbtY_}mti$TAeyKTWEaikuO*IOOrVbAdq)*-XY{P`+PkHi`>#Oo-=&uB@G%%u`A1VA$E3+;L5Lr*U zMmJ5hKu>R=$ifaRm46s%2gr6KBDaft4?Noj}@n_C)l!QQk&OB)6gK zun?1Ao6U(#PM}VtZZNeJbgQc1=yOm2OeS|bbx|CRs{E)Xe|E0HD|~d5W9c*W9=9{S z2oLp0^nGcAROxu^#g9b>?E?yt-NI*Xn6xr49j@6KZdKWIqt8^jkSvzvk><#>%@;YJ znbx`<7x0u@H@O>6A1Idf`RF!&(xp2$>H`(+Lcp7o8(GrH@Vu(Q6hz-4i%|W)MjHN6 z>}Y)c6TsO1-<%@+?_cuyk$)&u4pF>Ps(`RpZG+M8AA2a^p}my1kwd=bmHC*IOBjb&Plp;GfL%w?64o(!H8%$MHF8M9Q4WBkDU z7Km*OzrT+$jiZ-KJ`ff$^Hl%iuwG1jQ1)Z#xVQ*2_P^?TJ+wOTMi(N*?h?0y=f|GQQ*^W$oH)3`E`ENtCXY?+qt(gXRpN62;~5+yz;TcxIh2!6djwy>3^k+63u;Dv7auPx%emMqi(L`-?; z4;v8s_dmgS0F)pQ=Y$6rHU8Pr{}~KHMNV1g?-KgA1Kb^xjDhIEFLeDLkMnr{w=c)qQsg4ANE=D@!a=?HtZAL~s^k5ngH= zfYLfq5{TIteJ2Hz#)MlcOJ%;3BFb!3N}_s z>5?Dw!L&1yyEPAQ+6LDJj$}D(6zJS^syOBGEjrz914QOmPrUM&w#Ufb95#J(pR;A_ zFsG?G@HlOzOgBtrF&M)Ohm+sDCHFu!aSaV#?YP@D508by5Zleus<62@A%h8e7=X0ab=*Dxk7Dghe)BlV7;TcIdJ zwfl#no9MHnj!HjdL|JKq_bdegFlAQD4G1VrXlU&)K02 z)5=qo4rJO}ds|h^xp|mC1b7GO9!YTAPy?AUr-k!+32p*tA3I8FQc3$Vlxj_lWQ~|c zNjU7upo$`tiwqo-aI!j|aycZ>2Mnl0HX~w!=~Pl~*CB%#TLep&P8o#V}$<>J#w zU~{iJlraC9Pp2RN7bXn z6Q&&ie=L znO|=+1&7A7+|ylS&b~^f^lW(Y(pr2=gLP&6gvJE%>*bkkic1vIL8Z5-gjOxON}60) z57F=vXb@MruY9)jDoVYQBj(heEBJx(b03`N^i%SkoJm$F77?pISm&Ora-vYr*RF8B z$A+1@RGi5*yxF?=tppfap_GF)Y)W4e`&S3>7O0f3XJ2r*ur%YB*9cBLl__(}tLqUf79l{I@nQ-!5htz|y;FrAkl`KVY7AiagP zpPHjhFbr+z`9EQ6-wE`5gos)0Bb%(#5Kse&)>hgK%+o)_ZZ z!p!*sl9BSY-V9gK{>J<`{R2O9az1x+cFfY<1^ullJ0U1vEBDdvD4u@Wt+!`mZjCHD zm?F9F?nA_fERFhgP@ZBQK?_+cZ4S#Fi6t;d-T*m$w*|H8NZz=Ral=a{k-G+EG)0fJ zi?MkfccZ!&{mZS^gUTj~Jz}RaaKUYP0gzteZ))2Pxc7h)yx4xSU-Vb^r#RN>^(Yy{JoO)g6emF*Um(=up7D8N>gB)0nm&5sD>BF{6 z#pOh~nhNgYg$J>351ecU@DBOJ@5sqKTliI}M_%GoVaN+}WOgCsn6e%Xv-CSQV1EDXH)h@}w&12na-?bq! zhmzO5K5{_ZnzLO=E&D-^UbFS+RlJZBp$|OLUDA-}C2N}ei?B}XGfKfBV0CkWu`_>9 z-Q<|katzUQET0b9M{IY3m1eL|n12)A%X_Rw@rp%%SnXIY?t{$REe69J2QxofZw0UL#g?^ngz33Ey`#1tZ+ds2W9nhB?t~12JU^uRUfRk7uk0F5BeKTOzY2As~JUd?j7W z;pVh^-@hw*&L%2-DR&$(EeMpF$(k#IKvxvdI2D!AKf-|p!D%YJLJog%a@l5DLx1<8 zh7*Vx^Ua1KCtJJ$E@-hPaV)y1^nq^@iv!1Ha~yRXa_|H3f{91+s4(up0#7>5SDtMS zX;l88@dn4ui874VAek<(52*F820D?X6oML)BwegWPMKVdL<=pg2ow4U5H_2jOca`0W*!AVvLj|2&^k}|ULK@k& zD?uOGTkOZxgPR(JS_aMf2lU4nj^$M7Lf*ZaMWYen>gJVXdV8(wc$-9#KRQQ6tLCfF zxw8xbn0WWzrH3)^mF4van-jX+7g}h0vQG1w(HF3(>OBvHFZ;V?E_-R(>)4$MkDh=W zolIR81zDrNpV!B#s%f&caZF-*F@fb}*p$3dX}|J$3R0%*GLo(PJTF+y58#R9G4W1G zUystbhK2@Gj-hh)Y<0AT*hdVUh_ts}Ji<(!EuasE3NBVLF=2j!23J?fS_1@e6F*z( zU^Kf!GL{nv7>4z!+CIJ3i95sg7Af!0Bh=l_4pz_r1{n7XsghN%;U z>JM2%FC!Fd6yh~M{$L$r6pkw=EAniSsIofgF@YKSjM_Aaq`)Gy-I@&1K&qH&Tt>f8 zggmk1v!Bg|Wx{{RGIK4>Zvrr+Kii(S5ttztDTf{xz&y(|EoLGf>O2%gyqa^n%ybNe z8kh3=N@x-Zx*G^S0;Ae&wn%c3)YnVn;pD)n0$gHFs{$>oRJkmJ(-M81Dqi~Aw}6#b z%r$**by+rpfBE?-5L<+kUnEJ+H&tI%Sk2x=JX{+sd+ye!!&@f2^JQ|yreyU|vo|ol z;5KMWnW-u^Y#mpN5yLc`=@kAkl+wVH?h*Ie`KS|lYICAe*dm~jfD`yzf{GN-8cde~ z+gnv=m3Gkj9kCe7@N%V^jo9+pOg^V}1a4K%DMQpgy~e;vhOD6utLGP_ZNxn{k6?vN@UMGQ2EctjFM{QM_8KnfI)vOs2mG7=G3Jz#*+oR(-UZkk@Nf%=ZqCgoWAe99n_y zRnFMqa^GzzdLBp}z~hrBG!+OYaGKt2sL63=p~&27)U1@K(My{tP*;B`M^Pw~Ka|hs z87wrgIezoiVvW4(@k+;Q`Hd7+n_;g+CbHNxybtfZ?m_7-yr5TT>qDO{rKlh;l$!;U z=V?t0UiN=R)GFV7?_ZNH`_|i|I^|VOzA2Y1LP6`sw<)~%bOk~`4c22$Wu>qV$tV~| z1g3FQc&_exwPG2T9`>&8KzybV(y1!WDb-d+C={{((eQdaHH50CV(25`3fV`^DqtzejO({NC zF9|A-2`33s@!O~qFfyHAhV*w=9me_n{Z1(a=C=_J1Zgqgrq z?lW@or4AXY2xG^c?`wpPTN5^_IZBeAY|qn}o42NlR@R&i1izQSEDssg@*fM90Bwrk z_u(5V#cvSGOygCAj{|(+qie0;;&3qSwNL|76A-fgqm~lvumh4T$z-!{4+^btJpgP@ zvK59?m11u5bgn!>&XSm6-`4Yix?q6`8aOd(sZ?`N&MLzr%1ndQJ5aWED~(am(R>>2 zY}U4WB?;kHE}{>k3=^EiT(wGt7nVCAd#PY+7tI*Qp^(T)uJXs^9055hh&~agO||8@ zFRLi1ve$!(KNYwixlO(|RxS82^hj`L%Iy}wTjOQ_hqAALin`n0793;%k)f6D4h1A7 zhVDkB5u^n~x?uz)Bt$x;LqWPrQbAg}k(Tb}JL7%tz3+d0-~V0fTWc1}#V9hrbIv}` ze)hAU-J8NiMB_!xi<^MAJ!yjs-lw3;ar=u_BNwn-jRbw53rkj&d<9Z^u9nSihM#5O!Gz!2&9`b4R(>13?MC?vQ!s0t z4Nf|~ppum#u&Q^L&9+gUP>#r=7RSJq_z@0Rz!b_6nMZH6GZ zo@a;mEzsPSulO;>~y0%-$q=ZZ395w#$j^_m^m~pkH9&hYqKHt(Vk!*}%V@vOg-UMu2vjw7PWA z*z{}m>H_3GOvtAHs*}w@1NJGFikE|T2Qw3!RI|vDGnHS?)ES60MMmO))~N_Eb}&n4 zxD!~o2~^olQR95kFF-iuy%;9&zuh}0U7qq=GR zf<;PM(9IQ2Y?!F-B*i?lb^%rA0G8`a^1;sAf+AyriO70nfvtp;Q74M6Cvi*B( zAioLly*`uSI+U8Oadst%JTmP+4!h(UUV^BBv*QVar>BI3;P%6 z>>|X~^^|EF>16I1CH6+*6=RJM0h8*qy#Hdy;~F9GZj<}!c<=Vg_UrHT@%6ikzGfD) zgIE1q<|lS(?jO{M9*uzk2bsXS74(AOR(6=B2;@9OuqtoUS9Rs<+QAEKCH%4GDqN6Cjf%>lcnd*w!Jtxq+Se4PDny52JZK<0BsE2K3zZ7y z1<^n95jJn-*%xr1WP=_Lwat3Ow6u~F?IvJ>v@ctoK6I^&=(6_R^-Pn3g((g#+g){p zz(VUcYH#MV6W5^@=&c_Zh#;K(%qw)9;ko207K3h6U^j00W7nSm=mb+!@!^CJ2P0sS zrZL66ZxYGG9RL&{wM-e>%^CZ`MshZdT+CJ9hgS!_wspm1Z}aEd<17#gJhq*ye7nN_ zEVD-g@5uT_euO1nJDOjYYF>Wql^BA`ux4v}(10*-kNM!l=9dii(?++w)j&}`dE<U7Zcn@pYhW3@qlvv3vlVDRLe{{*F&ShnA*^()6mXISRuMd(jlx)BIcaVE zYboywe{{HgWUWm+hPW1Dgd*s4lW!byez&iD5QoEV`QO42gAq{C5Zpq6{o^YPLIo`g zmNplIy-1C0o^F+r9~!Y4%Wl-uR@oRG+23xuX0f>|rz8>93Owp}oTJ7Fkh%eVIPalub+*Cz{( z33&8}_*!0P`+=P*36iFr$`7^mL*D`|xBT0CneRE$hU$)CkzMiZZLZ3?Fv6Z{An_(!o=ueT>3cMvxYS`c<2Tt)vLRM{?-a7uU zf?VaakNC$-+mBy|D0DgE^GhL=!X-wG=(>r1^J%gY+Sxa zU#EDSYOT}^yH5u#m39`dHy)>zME1>cVIZFIRD9M`^EDIvAt;W{kwCP0RG1jMK_s{S z3M}_(@Qz|G#)wCWQ;wJ zXHLY6!GkDJzgtiU7K(PG(ayO&WpA4O_0?zBlfD@CusL%|fM7FcJdcx?ADc}>Yxmyr z9t63KosjU0+eGh70^XdCubSUU@nv-B%Vk}ICbbIKeH1@>xN7KLFv{hlu zcdJ*;Y1d8FB~maaxhKhYNkpXiT#o75XBD~3Wo1fDJ7Us8;z*ukzJT>pgl~++dE1>@ zgo$RTd|#Bx*D4RHbBUx7l>@}zzy$x-)=W`zmE7G$%f8`g^{;ESvZcTB8UH#-BHTp3 zN|{thb$P7BaukR@ zys^)5G|8WMu0v#|mDBVE@<9^Nj;Oylp$x5a{jT&9s#zfZz=YFuOX%dM`^|#jrTeN) z5MNg!?{6GmTV)D9{R-T-VRyPE1{n8dG|ERQ%F>Q0i3In(w~BYmoOcJ*1ZjB%hwf1L z){pj9Ftk60=&uV7-X&E7XHN(m#21WWn&|&{5Kl9Zf6e=x8d}yT6K_Kh^7&a)0GMj{ znblOmWUlG9<|k!ugF)bEp$a@0)`87ep==OV$tp$v+>vOL4H|q>`t@p`9LU77Q|n!9 zddr#?QJ5^YQQHl@5P0tpRL4ofU7wmKH5=R*-Ui+hZF1lZxhbMKtk0OAq3!bN` zwhQXcZt5^jsR1igy?gJyFj1*Y0XT0L$zx%wDr%pfl~#0+6Y*gp z&VTkvA9ZbJ*x(rUJmO)EjT6-Ro=+P27(Sr=^~-wuRiPWBZcMP|hHnUyONFeHh8xED z&Zb0VQE9KE#`jH(^}QY(O}lxQk!#nv=om>ieD&5I*Yx~=v8VLRkyCf#sfpN_7q;GV zYGzk|ZzG)IJ>rzYFulos@e7Lj9B~T*KUT^r$3i^2%VRZ}VoZ$spkQyYQ+Z2Ipoj?? zw*8JfhzEIE_!*I>MHHAqacuI*IB&nh5GR01^-h-WQ1vF1iz%_<8h-8%JMIkx_59(c z+qvPqKbA>tuRL927jJb?kbx&Y*@mT4e@r6g)ikL}Wkj)WIi_w?_FV#IpY(O{j$?** z@``4SvB>%U5$n}#5vQ>C%Bu6IzI#XKtbeZ3eflP&JT7~U^h{}&A~O!&&V`~~7i5bI@g_`f?hERt^zF=5IV3VHRGPznb^tS{ zGi&IpemNzFMa;=ZbP#WjJMAaJ&_CIU;WC64p^1K>=B?;}|B=+B&l8H)& z;M1!Q>%w7J;&m?Tiq5}(W`29GBp$@5lBRk!mlQ?A#jKOb&u&nrTGapkHu^pFaNVQq zaI}YP0gs6B==TnSG6^A#xF$(t0tbaANghWVQ77M?6D(hdGm1p!__Akxl?W;@6W4{c z)1

  • uCe{E&~_plLg0JnDIlp;CO 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

    -17Usjlk%`6gTu3r2M@l&4ki_P|9th66Xs7 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%0D^cIT96S3z~Jj!6RKJ5p;c;fg#ZTE7vi{I_;9% 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 OKTD*I*~5LVKm8vQtTej- literal 0 HcmV?d00001 diff --git a/docs/tutorials/aws/img/enable-partner-integration-3.png b/docs/tutorials/aws/img/enable-partner-integration-3.png new file mode 100644 index 0000000000000000000000000000000000000000..3cc7c4ed8e7e18ca75ec585cfd29cf36edf44179 GIT binary patch literal 313271 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ν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