StylusFrost
bccba5ff5f
Merge remote-tracking branch 'origin/PROWLER-1778-dynamic-output-report-generation' into PROWLER-1799-sdk-only-provider-property
2026-06-07 14:50:19 +02:00
StylusFrost
a88a05d3c1
Merge remote-tracking branch 'origin/PROWLER-1777-dynamic-compliance-framework-discovery' into PROWLER-1778-dynamic-output-report-generation
2026-06-07 14:50:16 +02:00
StylusFrost
382f419fdb
Merge remote-tracking branch 'origin/PROWLER-1775-dynamic-credential-validation' into PROWLER-1777-dynamic-compliance-framework-discovery
2026-06-07 14:50:05 +02:00
StylusFrost
0ffb0f6f45
Merge remote-tracking branch 'origin/PROWLER-1774-dynamic-provider-kwargs-connection' into PROWLER-1775-dynamic-credential-validation
2026-06-07 14:50:02 +02:00
StylusFrost
2b1c9c3381
Merge remote-tracking branch 'origin/PROWLER-1773-dynamic-provider-resolution' into PROWLER-1774-dynamic-provider-kwargs-connection
2026-06-07 14:49:59 +02:00
StylusFrost
983c2141ff
Merge remote-tracking branch 'origin/PROWLER-1772-provider-type-storage-varchar' into PROWLER-1773-dynamic-provider-resolution
2026-06-07 14:49:56 +02:00
StylusFrost
cdac1ce915
Merge remote-tracking branch 'origin/PROWLER-1771-public-dynamic-provider-class-resolver' into PROWLER-1772-provider-type-storage-varchar
2026-06-07 14:49:53 +02:00
StylusFrost
789dbfb620
Merge remote-tracking branch 'origin/PROWLER-1444-multi-provider-compliance-entry-points' into PROWLER-1771-public-dynamic-provider-class-resolver
2026-06-07 14:49:31 +02:00
StylusFrost
d7346a6e63
docs(changelog): add entry for external universal compliance via entry points
2026-06-07 14:46:05 +02:00
StylusFrost
17ed6a160e
Merge remote-tracking branch 'origin/PROWLER-1778-dynamic-output-report-generation' into PROWLER-1799-sdk-only-provider-property
...
# Conflicts:
# prowler/CHANGELOG.md
2026-06-07 14:28:51 +02:00
StylusFrost
9e40f4aa52
Merge remote-tracking branch 'origin/PROWLER-1777-dynamic-compliance-framework-discovery' into PROWLER-1778-dynamic-output-report-generation
2026-06-07 14:27:52 +02:00
StylusFrost
d7f8b5b51e
Merge remote-tracking branch 'origin/PROWLER-1775-dynamic-credential-validation' into PROWLER-1777-dynamic-compliance-framework-discovery
2026-06-07 14:27:37 +02:00
StylusFrost
8efff5ccf8
Merge remote-tracking branch 'origin/PROWLER-1774-dynamic-provider-kwargs-connection' into PROWLER-1775-dynamic-credential-validation
2026-06-07 14:27:34 +02:00
StylusFrost
900a668ddc
Merge remote-tracking branch 'origin/PROWLER-1773-dynamic-provider-resolution' into PROWLER-1774-dynamic-provider-kwargs-connection
2026-06-07 14:27:13 +02:00
StylusFrost
f34daf1e69
Merge remote-tracking branch 'origin/PROWLER-1772-provider-type-storage-varchar' into PROWLER-1773-dynamic-provider-resolution
2026-06-07 14:25:41 +02:00
StylusFrost
3c72e9d25e
Merge remote-tracking branch 'origin/PROWLER-1771-public-dynamic-provider-class-resolver' into PROWLER-1772-provider-type-storage-varchar
2026-06-07 14:22:41 +02:00
StylusFrost
5392a87a30
Merge remote-tracking branch 'origin/PROWLER-1444-multi-provider-compliance-entry-points' into PROWLER-1771-public-dynamic-provider-class-resolver
...
# Conflicts:
# prowler/CHANGELOG.md
2026-06-07 14:04:36 +02:00
StylusFrost
40da359804
feat(compliance): discover external universal frameworks via entry points
...
External plug-ins ship multi-provider (universal-schema) frameworks through a
dedicated prowler.compliance.universal entry point group, separate from the
per-provider prowler.compliance group. Both get_bulk_compliance_frameworks_universal
(loading) and get_available_compliance_frameworks (listing / --compliance
choices) scan the new group. Built-ins load first and win on a name collision;
multiple packages under the same provider are merged. load_compliance_framework
gains fatal=False so the legacy external path skips a non-legacy JSON with a
warning instead of aborting the run.
2026-06-07 13:56:59 +02:00
StylusFrost
8a0d56786d
fix(changelog): resolve leftover merge conflict marker
...
Remove a stray '=======' conflict marker left in prowler/CHANGELOG.md after
the master merge, and move the elbv2_alb_drop_invalid_header_fields_enabled
entry from Fixed to Added where it belongs.
2026-06-05 15:01:11 +02:00
StylusFrost
f729c5a9f0
Merge branch 'master' into PROWLER-1391-provider-contract-dynamic-discovery
2026-06-05 14:44:50 +02:00
StylusFrost
f9682c1354
fix(compliance): make GenericCompliance tolerant of provider-specific schemas
...
GenericCompliance is the documented last-resort renderer, but it read the
universal attribute fields (Section, SubSection, SubGroup, Service, Type,
Comment) directly and raised AttributeError on frameworks whose schema does
not declare them (CIS, ENS, ISO27001), dropping the whole compliance CSV.
Read all six fields with getattr defaulting to None, and dedupe the finding
and manual rows into a single helper.
2026-06-05 14:38:42 +02:00
potato-20 and Hugo P.Brito
6f172a5c19
feat(elbv2): add elbv2_alb_drop_invalid_header_fields_enabled check (FSBP ELB.4) ( #11471 )
...
Co-authored-by: Hugo P.Brito <hugopbrit@gmail.com >
2026-06-05 14:26:07 +02:00
StylusFrost
29825f9a2f
fix(provider): move get_output_options default to call site
...
Resolve the provider<->models import cycle CodeQL flagged (py/cyclic-import
#7267 , #7268 ). provider.py no longer imports models: get_output_options
stays override-only and __main__ falls back to a new default_output_options
helper in models.py when a provider does not implement it. models.py keeps
its original module-level Provider import (one-way, no cycle).
2026-06-05 14:21:49 +02:00
StylusFrost
356e6e2bb4
fix(provider): default get_summary_entity instead of raising
...
External providers that do not override get_summary_entity no longer cause
the summary table to be silently dropped. The base contract returns
(self.type, account_id), mirroring the get_output_options default.
2026-06-05 14:05:56 +02:00
StylusFrost
8bc8b16a77
fix(provider): avoid import cycle in get_output_options default
...
Move the models.py Provider import (used only in the shodan path) to a
local import so models no longer depends on provider at module level. This
breaks the provider <-> models import cycle CodeQL flagged after the
generic OutputOptions default was added, and lets provider.py import
ProviderOutputOptions without a cycle. The output_file_timestamp import is
consolidated into the existing top-level config import.
2026-06-05 13:57:36 +02:00
StylusFrost
efa3283a25
fix(provider): return generic OutputOptions default instead of raising
...
External providers that do not override get_output_options no longer abort
the run with NotImplementedError. The base contract returns a generic
ProviderOutputOptions, honoring arguments.output_filename and otherwise
falling back to a provider-typed filename. Built-ins are unaffected.
2026-06-05 13:42:29 +02:00
Pedro Martín
a7d180ea5b
feat(dashboard): add AWS AI Security Framework compliance view ( #11475 )
2026-06-05 13:28:31 +02:00
Pedro Martín
d4bbc8b5ad
fix(jira): avoid 400 INVALID_INPUT on findings with empty field ( #11474 )
2026-06-05 13:26:28 +02:00
Aline Almeida
a5bc226f11
fix(gcp): pass iam_service_account_unused for disabled service accounts ( #11467 )
2026-06-05 12:07:30 +02:00
Pablo Fernandez Guerra (PFE) and Pablo F.G
3a3d9d6146
chore(ui): type process.env via ambient NodeJS.ProcessEnv ( #11328 )
...
Co-authored-by: Pablo F.G <pablo.fernandez@prowler.com >
2026-06-05 08:31:16 +02:00
Oleksandr_Sanin and Hugo P.Brito
bcd282d3d0
fix(gcp): honour org-level aggregated sinks in logging_sink_created check ( #11355 )
...
Signed-off-by: Oleksandr Sanin <alexaaander.sanin@gmail.com >
Co-authored-by: Hugo P.Brito <hugopbrit@gmail.com >
2026-06-04 12:07:01 +02:00
Pedro Martín and Pepe Fagoaga
eb7949c884
fix(ui): show delete user action only for the current user ( #11447 )
...
Co-authored-by: Pepe Fagoaga <pepe@prowler.com >
2026-06-03 17:03:12 +02:00
Alejandro Bailo
e60a4462e5
fix(ui): refine add-provider wizard flow between scans and providers ( #11424 )
2026-06-03 16:08:06 +02:00
StylusFrost
a5702e2469
Merge remote-tracking branch 'origin/PROWLER-1778-dynamic-output-report-generation' into PROWLER-1799-sdk-only-provider-property
2026-06-03 13:14:24 +02:00
StylusFrost
5452acd610
Merge remote-tracking branch 'origin/PROWLER-1777-dynamic-compliance-framework-discovery' into PROWLER-1778-dynamic-output-report-generation
2026-06-03 13:14:12 +02:00
StylusFrost
8fb6e85887
Merge remote-tracking branch 'origin/PROWLER-1775-dynamic-credential-validation' into PROWLER-1777-dynamic-compliance-framework-discovery
...
# Conflicts:
# api/src/backend/api/tests/test_compliance.py
2026-06-03 13:14:00 +02:00
StylusFrost
4775f11dbf
Merge remote-tracking branch 'origin/PROWLER-1774-dynamic-provider-kwargs-connection' into PROWLER-1775-dynamic-credential-validation
2026-06-03 13:12:28 +02:00
StylusFrost
a471c82a7e
Merge remote-tracking branch 'origin/PROWLER-1773-dynamic-provider-resolution' into PROWLER-1774-dynamic-provider-kwargs-connection
2026-06-03 13:12:13 +02:00
StylusFrost
849c399c93
Merge remote-tracking branch 'origin/PROWLER-1772-provider-type-storage-varchar' into PROWLER-1773-dynamic-provider-resolution
2026-06-03 13:12:02 +02:00
StylusFrost
e25758ba8e
Merge remote-tracking branch 'origin/PROWLER-1771-public-dynamic-provider-class-resolver' into PROWLER-1772-provider-type-storage-varchar
...
# Conflicts:
# api/CHANGELOG.md
2026-06-03 13:11:38 +02:00
StylusFrost
c4effd7a60
Merge remote-tracking branch 'origin/PROWLER-1391-provider-contract-dynamic-discovery' into PROWLER-1771-public-dynamic-provider-class-resolver
2026-06-03 13:07:55 +02:00
StylusFrost
38788b7922
Merge remote-tracking branch 'origin/master' into PROWLER-1391-provider-contract-dynamic-discovery
...
# Conflicts:
# prowler/CHANGELOG.md
2026-06-03 12:15:24 +02:00
Pedro Martín
f7f8747512
feat(compliance): add DORA framework for AWS ( #11131 )
2026-06-03 11:43:55 +02:00
d573af911d
feat(aws): add sagemaker_models_monitor_enabled check ( #11278 )
...
Co-authored-by: RishiWig3 <rishi.wig@gmail.com >
Co-authored-by: Hugo P.Brito <hugopbrit@gmail.com >
Co-authored-by: Hugo Pereira Brito <101209179+HugoPBrito@users.noreply.github.com >
2026-06-02 16:10:13 +01:00
Adrián Peña
cf9beb8234
feat(api): recover orphaned background tasks and make task re-runs idempotent ( #11416 )
2026-06-02 14:00:17 +02:00
StylusFrost
d25f8a4fe9
docs(changelog): add sdk_only provider property entries
2026-06-02 13:57:27 +02:00
Davidm4r and Pepe Fagoaga
7f67eac1bf
perf(api): avoid N+1 query loading finding resource tags ( #11420 )
...
Co-authored-by: Pepe Fagoaga <pepe@prowler.com >
2026-06-02 13:19:21 +02:00
StylusFrost
742d50b4be
feat(api): expose only app-facing providers from the SDK
...
- Source provider-type choices and creation validation from get_app_providers()
- Hide CLI/SDK-only providers (llm, nhn, scaleway, stackit) from the API
2026-06-02 12:44:32 +02:00
StylusFrost
9537bb5a8c
feat(sdk): add sdk_only provider property to hide providers from the app
...
- Add sdk_only contract property (default True), hidden from the app until opt-in
- Add Provider.get_app_providers() returning providers with sdk_only = False
- Mark app-exposed built-in providers as sdk_only = False
2026-06-02 12:44:26 +02:00
Pedro Martín and Pepe Fagoaga
a652e28b4a
fix(api): clean up scan tmp output failure to avoid disk fill ( #11421 )
...
Co-authored-by: Pepe Fagoaga <pepe@prowler.com >
2026-06-02 11:37:05 +02:00