prowler-cloud 5.14.1__py3-none-any.whl → 5.14.2__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
prowler/CHANGELOG.md CHANGED
@@ -2,6 +2,13 @@
2
2
 
3
3
  All notable changes to the **Prowler SDK** are documented in this file.
4
4
 
5
+ ## [v5.14.2] (Prowler v5.14.2)
6
+
7
+ ### Fixed
8
+ - Custom check folder metadata validation [(#9335)](https://github.com/prowler-cloud/prowler/pull/9335)
9
+
10
+ ---
11
+
5
12
  ## [v5.14.1] (Prowler v5.14.1)
6
13
 
7
14
  ### Fixed
prowler/__main__.py CHANGED
@@ -24,6 +24,7 @@ from prowler.lib.check.check import (
24
24
  list_checks_json,
25
25
  list_fixers,
26
26
  list_services,
27
+ load_custom_checks_metadata,
27
28
  parse_checks_from_file,
28
29
  parse_checks_from_folder,
29
30
  print_categories,
@@ -185,6 +186,11 @@ def prowler():
185
186
  logger.debug("Loading checks metadata from .metadata.json files")
186
187
  bulk_checks_metadata = CheckMetadata.get_bulk(provider)
187
188
 
189
+ # Load custom checks metadata before validation
190
+ if checks_folder:
191
+ custom_folder_metadata = load_custom_checks_metadata(checks_folder)
192
+ bulk_checks_metadata.update(custom_folder_metadata)
193
+
188
194
  if args.list_categories:
189
195
  print_categories(list_categories(bulk_checks_metadata))
190
196
  sys.exit()
prowler/config/config.py CHANGED
@@ -38,7 +38,7 @@ class _MutableTimestamp:
38
38
 
39
39
  timestamp = _MutableTimestamp(datetime.today())
40
40
  timestamp_utc = _MutableTimestamp(datetime.now(timezone.utc))
41
- prowler_version = "5.14.1"
41
+ prowler_version = "5.14.2"
42
42
  html_logo_url = "https://github.com/prowler-cloud/prowler/"
43
43
  square_logo_img = "https://raw.githubusercontent.com/prowler-cloud/prowler/dc7d2d5aeb92fdf12e8604f42ef6472cd3e8e889/docs/img/prowler-logo-black.png"
44
44
  aws_logo = "https://user-images.githubusercontent.com/38561120/235953920-3e3fba08-0795-41dc-b480-9bea57db9f2e.png"
@@ -14,7 +14,7 @@ from colorama import Fore, Style
14
14
  import prowler
15
15
  from prowler.config.config import orange_color
16
16
  from prowler.lib.check.custom_checks_metadata import update_check_metadata
17
- from prowler.lib.check.models import Check
17
+ from prowler.lib.check.models import Check, load_check_metadata
18
18
  from prowler.lib.check.utils import recover_checks_from_provider
19
19
  from prowler.lib.logger import logger
20
20
  from prowler.lib.outputs.outputs import report
@@ -110,6 +110,48 @@ def parse_checks_from_folder(provider, input_folder: str) -> set:
110
110
  sys.exit(1)
111
111
 
112
112
 
113
+ def load_custom_checks_metadata(input_folder: str) -> dict:
114
+ """
115
+ Load check metadata from a custom checks folder without copying the checks.
116
+ This is used to validate check names before the provider is initialized.
117
+
118
+ Args:
119
+ input_folder (str): Path to the folder containing custom checks.
120
+
121
+ Returns:
122
+ dict: A dictionary with CheckID as key and CheckMetadata as value.
123
+ """
124
+ custom_checks_metadata = {}
125
+
126
+ try:
127
+ if not os.path.isdir(input_folder):
128
+ return custom_checks_metadata
129
+
130
+ with os.scandir(input_folder) as checks:
131
+ for check in checks:
132
+ if check.is_dir():
133
+ check_name = check.name
134
+ metadata_file = os.path.join(
135
+ input_folder, check_name, f"{check_name}.metadata.json"
136
+ )
137
+ if os.path.isfile(metadata_file):
138
+ try:
139
+ check_metadata = load_check_metadata(metadata_file)
140
+ custom_checks_metadata[check_metadata.CheckID] = (
141
+ check_metadata
142
+ )
143
+ except Exception as error:
144
+ logger.warning(
145
+ f"Could not load metadata from {metadata_file}: {error}"
146
+ )
147
+ return custom_checks_metadata
148
+ except Exception as error:
149
+ logger.error(
150
+ f"{error.__class__.__name__}[{error.__traceback__.tb_lineno}] -- {error}"
151
+ )
152
+ return custom_checks_metadata
153
+
154
+
113
155
  # Load checks from custom folder
114
156
  def remove_custom_checks_module(input_folder: str, provider: str):
115
157
  # Check if input folder is a S3 URI
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: prowler-cloud
3
- Version: 5.14.1
3
+ Version: 5.14.2
4
4
  Summary: 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.
5
5
  License: Apache-2.0
6
6
  Author: Toni de la Fuente
@@ -105,9 +105,9 @@ dashboard/pages/overview.py,sha256=eH08NS-EKggKXjo63BvFXSALpp-WWIWhlWc54YIdM40,8
105
105
  dashboard/src/input.css,sha256=ZjC7DV_hHZRH92s0D-8Wk-L9WpP5oqfwIkfLi16GJdk,2936
106
106
  dashboard/tailwind.config.js,sha256=sDwGYIDZwdefOCPrcCkjsOT8cYDHrkZAedPosdDnwMY,2391
107
107
  prowler/AGENTS.md,sha256=ETv0yNxU3eTxViCSe6K_qABihEsRosW9F2Y1BR7FgZE,14281
108
- prowler/CHANGELOG.md,sha256=tYAtUZ2lSYA8kUjQJZD1so9WLGwYKaQJqEh-46KJRBs,49894
108
+ prowler/CHANGELOG.md,sha256=WupDYcmN2tCX4QOi2uOSxFiXadUkZT5KlMeUBHBYJlM,50046
109
109
  prowler/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
110
- prowler/__main__.py,sha256=tCKSeYRoafcEtX4arcYT99fxMxYmFk6biGWRwdmn_8w,49806
110
+ prowler/__main__.py,sha256=fbBKwqfb8h6hXdBUWin2wMNKK547an3elu-pUNmSJ4w,50050
111
111
  prowler/compliance/aws/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
112
112
  prowler/compliance/aws/aws_account_security_onboarding_aws.json,sha256=zIIjKG3gzKGqLysSXdadweGoXTtZqsCpoQwim5j9EHU,34775
113
113
  prowler/compliance/aws/aws_audit_manager_control_tower_guardrails_aws.json,sha256=ml0SQEpZXrT2Kzf5cC5pOhDSXsp2QhGU_mdGLlRGTYI,7057
@@ -204,7 +204,7 @@ prowler/config/aws_mutelist.yaml,sha256=PW3ekqtwhpBedyPWyvh5oXCiJz94P3nJLrMYGUGI
204
204
  prowler/config/aws_mutelist_example.yaml,sha256=O3fscPxW73tBcrAtKGo43btqnA6_mNW3myC21Gj0ysQ,2848
205
205
  prowler/config/azure_mutelist_example.yaml,sha256=r87OAhBg0N32s-XFRHEY4BzrHfZLGE9DfM8YgAHn7cY,2024
206
206
  prowler/config/checklist_example.json,sha256=E36OiPBUXF3fuKIu4mK92R3a3zFRGzKdztZdYsx5vQs,165
207
- prowler/config/config.py,sha256=r02KdqGfqIpVZpX_lS9Js2vcw1f_Bp8wQyjMvoJRO4w,8943
207
+ prowler/config/config.py,sha256=1xBSYNdlUslsjDwo5KHE4_SwAZ_JedcvnmlkqnhgkM0,8943
208
208
  prowler/config/config.yaml,sha256=48OmXTeSL5wxAxJoicTXCOvuxrVjMjVIuafmYUHJ_8o,19394
209
209
  prowler/config/custom_checks_metadata_example.yaml,sha256=vsn66e-kGDKfHJ0KhTa525wbquZN88Z5G_bMCIM0iG0,5720
210
210
  prowler/config/fixer_config.yaml,sha256=D3yIuDsgcvLyMc4-nwhU4569l6z48CWm1UKekbqupKo,1591
@@ -220,7 +220,7 @@ prowler/exceptions/exceptions.py,sha256=OKJIHo6wqgpZzOoZur8HKFlD6Xiqbr_OJGg4yOTx
220
220
  prowler/lib/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
221
221
  prowler/lib/banner.py,sha256=Wq9ITz9TaddSVBDRvw9FtRsLs5bPi9xBblVkx8_0u88,1104
222
222
  prowler/lib/check/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
223
- prowler/lib/check/check.py,sha256=dZSzklG0AhyBl4S1EaM7L_TYkcaiDfsFJ5bbUpOqJfU,28350
223
+ prowler/lib/check/check.py,sha256=zXi9izrdR57cbYms36b5S3FUzOeOzgOf4VNqfB5DWNI,29979
224
224
  prowler/lib/check/checks_loader.py,sha256=jp_upHi0hAceukFUM2Njgw25IZVesGN7eDOZXFZ1GYw,9112
225
225
  prowler/lib/check/compliance.py,sha256=mZdJmlAWYAWTceve2UMqz3AQvOhIsvS3UKuNxCvKq2M,1951
226
226
  prowler/lib/check/compliance_models.py,sha256=N9isi0AD5na75ZeM-A4c_5yNTVWHFCKzP798u2sIFiQ,12777
@@ -4230,8 +4230,8 @@ prowler/providers/oraclecloud/services/objectstorage/objectstorage_bucket_versio
4230
4230
  prowler/providers/oraclecloud/services/objectstorage/objectstorage_bucket_versioning_enabled/objectstorage_bucket_versioning_enabled.py,sha256=vkga-eV2ANNlrf_5spzoZZy05OCrBzVwuuusJzE0cqY,1374
4231
4231
  prowler/providers/oraclecloud/services/objectstorage/objectstorage_client.py,sha256=2kMRKmX3bfHOGxBSKyXIzaRSAPCI_zhABJP3xmPrMRQ,235
4232
4232
  prowler/providers/oraclecloud/services/objectstorage/objectstorage_service.py,sha256=N3lJfv-PHcz1wACQmcvNHA_pffyvLOjYIYPUNtYV7gA,4869
4233
- prowler_cloud-5.14.1.dist-info/LICENSE,sha256=oGZr2ZEftLZTNys3IcUA_b0JftHKg0Zq2wfnrnr7guA,11348
4234
- prowler_cloud-5.14.1.dist-info/METADATA,sha256=xDOyf6VhT7gdLbjkDphpzkl_qVI9AVyMWIR7XqLqrVA,17519
4235
- prowler_cloud-5.14.1.dist-info/WHEEL,sha256=XbeZDeTWKc1w7CSIyre5aMDU_-PohRwTQceYnisIYYY,88
4236
- prowler_cloud-5.14.1.dist-info/entry_points.txt,sha256=sWks5LHwHN_Rhj9HcrghwVKzHPIS4I4lebr-lkVZ-Dk,52
4237
- prowler_cloud-5.14.1.dist-info/RECORD,,
4233
+ prowler_cloud-5.14.2.dist-info/LICENSE,sha256=oGZr2ZEftLZTNys3IcUA_b0JftHKg0Zq2wfnrnr7guA,11348
4234
+ prowler_cloud-5.14.2.dist-info/METADATA,sha256=Gj7fTh_YlOG8kilnU-n05u_uJxSLTAEZ_SGSOBa2SeU,17519
4235
+ prowler_cloud-5.14.2.dist-info/WHEEL,sha256=XbeZDeTWKc1w7CSIyre5aMDU_-PohRwTQceYnisIYYY,88
4236
+ prowler_cloud-5.14.2.dist-info/entry_points.txt,sha256=sWks5LHwHN_Rhj9HcrghwVKzHPIS4I4lebr-lkVZ-Dk,52
4237
+ prowler_cloud-5.14.2.dist-info/RECORD,,