diff --git a/docs/developer-guide/provider.md b/docs/developer-guide/provider.md index 47b82c78c21..3827999eddc 100644 --- a/docs/developer-guide/provider.md +++ b/docs/developer-guide/provider.md @@ -190,9 +190,9 @@ from prowler.providers.common.models import Audit_Metadata from prowler.providers.common.provider import Provider from prowler.providers..models import ( # All providers models needed - ProvierSessionModel, - ProvierIdentityModel, - ProvierOutputOptionsModel + ProviderSessionModel, + ProviderIdentityModel, + ProviderOutputOptionsModel ) class NewProvider(Provider): @@ -201,7 +201,7 @@ class NewProvider(Provider): _session: _identity: _audit_config: dict - _output_options: ProvierOutputOptionsModel + _output_options: ProviderOutputOptionsModel _mutelist: dict audit_metadata: Audit_Metadata diff --git a/prowler/lib/scan/scan.py b/prowler/lib/scan/scan.py index 213161b64b5..53851219aea 100644 --- a/prowler/lib/scan/scan.py +++ b/prowler/lib/scan/scan.py @@ -22,7 +22,7 @@ ScanInvalidSeverityError, ScanInvalidStatusError, ) -from prowler.providers.common.models import Audit_Metadata +from prowler.providers.common.models import Audit_Metadata, ProviderOutputOptions from prowler.providers.common.provider import Provider @@ -222,7 +222,7 @@ def findings(self) -> list: def scan( self, - custom_checks_metadata: dict = {}, + custom_checks_metadata: dict = None, ) -> Generator[tuple[float, list[Finding]], None, None]: """ Executes the scan by iterating over the checks to execute and executing each check. @@ -239,6 +239,20 @@ def scan( Exception: If any other error occurs during the execution of a check. """ try: + # Load bulk compliance frameworks + bulk_compliance_frameworks = Compliance.get_bulk(self.provider.type) + + # Get bulk checks metadata for the provider + bulk_checks_metadata = CheckMetadata.get_bulk(self.provider.type) + # Complete checks metadata with the compliance framework specification + bulk_checks_metadata = update_checks_metadata_with_compliance( + bulk_compliance_frameworks, bulk_checks_metadata + ) + + output_options = ProviderOutputOptions( + bulk_checks_metadata=bulk_checks_metadata, + ) + checks_to_execute = self.checks_to_execute # Initialize the Audit Metadata # TODO: this should be done in the provider class @@ -306,7 +320,7 @@ def scan( findings = [ Finding.generate_output( - self._provider, finding, output_options=None + self._provider, finding, output_options=output_options ) for finding in check_findings ]