Commit Graph
8561 Commits
Author SHA1 Message Date
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
Davidm4randPepe 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ínandPepe 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
Hugo Pereira Brito 1b17304c4a docs(installation): add PowerShell commands for Prowler App install (#11413) 2026-06-02 09:17:40 +01:00
StylusFrost 9a574b32e4 Merge remote-tracking branch 'origin/PROWLER-1777-dynamic-compliance-framework-discovery' into PROWLER-1778-dynamic-output-report-generation 2026-06-01 22:17:59 +02:00
StylusFrost d12d920119 Merge remote-tracking branch 'origin/PROWLER-1775-dynamic-credential-validation' into PROWLER-1777-dynamic-compliance-framework-discovery 2026-06-01 22:17:36 +02:00
StylusFrost 5daa39c4cb feat: bind external provider secret validation to its secret type
- get_credentials_schema returns schemas keyed by secret type
- validate an external provider's secret against the schema for its
  secret_type instead of accepting any declared schema
- reject a secret_type the provider does not declare
2026-06-01 22:09:21 +02:00
StylusFrost 116fb7083d fix(api): reject non-object external provider secret
- Validate the secret is a JSON object before the no-schema path accepts it,
  so a list/string/null cannot be persisted and fail later at {**secret}
- Add parametrized coverage for list/string/null/int payloads
2026-06-01 21:35:34 +02:00
StylusFrost 77b2ffeb54 Merge remote-tracking branch 'origin/PROWLER-1774-dynamic-provider-kwargs-connection' into PROWLER-1775-dynamic-credential-validation 2026-06-01 21:35:10 +02:00
StylusFrost 21e63ebc7e Merge remote-tracking branch 'origin/PROWLER-1773-dynamic-provider-resolution' into PROWLER-1774-dynamic-provider-kwargs-connection
# Conflicts:
#	prowler/providers/common/provider.py
2026-06-01 21:30:39 +02:00
StylusFrost bcc697f42a Merge remote-tracking branch 'origin/PROWLER-1772-provider-type-storage-varchar' into PROWLER-1773-dynamic-provider-resolution 2026-06-01 21:29:02 +02:00
StylusFrost c94456c131 perf(api): share cached provider-type choices across filters and serializer
- Move get_provider_type_choices into a leaf module so the provider
  serializer field reuses the filters' cached list instead of recomputing
  SDK provider discovery on every request
2026-06-01 21:18:39 +02:00
StylusFrost 28433362c5 fix(api): make provider enum-to-varchar migration deploy-safe
- Backfill provider_str synchronously in 0095 (single UPDATE) so the column
  is populated before 0096 sets it NOT NULL, removing the Celery race
- Recreate the unique index inside 0096's transaction with a lock_timeout,
  closing the duplicate-provider window left by the concurrent rebuild
- Drop migration 0097 and the now-unused backfill_provider_str task
2026-06-01 21:18:31 +02:00
StylusFrost 9c7b33157f Merge remote-tracking branch 'origin/PROWLER-1771-public-dynamic-provider-class-resolver' into PROWLER-1772-provider-type-storage-varchar 2026-06-01 20:45:01 +02:00
StylusFrost a111ae763c chore(sdk): tighten get_class docstring and unknown-provider test
- Reword get_class docstring: it may populate the _ep_providers cache,
  rather than claiming "no global state"
- Assert ImportError specifically in the unknown-provider test to enforce
  the public API contract
- Drop the unused provider_class_name left over after get_class delegation
2026-06-01 20:28:19 +02:00
StylusFrost ece6af5dd3 Merge remote-tracking branch 'origin/PROWLER-1391-provider-contract-dynamic-discovery' into PROWLER-1771-public-dynamic-provider-class-resolver
# Conflicts:
#	prowler/providers/common/provider.py
2026-06-01 20:20:50 +02:00
StylusFrost b7b5565aeb Merge remote-tracking branch 'origin/master' into PROWLER-1391-provider-contract-dynamic-discovery 2026-06-01 20:09:48 +02:00
StylusFrost 9c7afd64c5 fix(sdk): match compliance provider segment exactly in get_bulk
- Compare the module's last dotted segment instead of substring
- Prevent a provider name from capturing overlapping built-ins
- Add parametrized regression test (cloud, git, work, open cases)
- Update get_bulk test mock to the real dotted module name
2026-06-01 19:51:27 +02:00
StylusFrost 64e82682bd fix(sdk): detect shadowed provider plug-ins without loading them
- Match shadowing entry point by name instead of calling ep.load()
- Prevent plug-in code from executing during a built-in run
- Update regression test to assert ep.load is never called
2026-06-01 19:44:17 +02:00
StylusFrost 5070ce39c2 fix(sdk): guard built-in providers in is_tool_wrapper_provider
- Short-circuit on is_builtin_provider before loading entry points
- Prevent same-name plug-ins from flipping a built-in onto the tool-wrapper path
- Avoid executing plug-in code via ep.load() for built-in names
- Add regression test asserting ep.load is never called
2026-06-01 19:43:36 +02:00
Prowler Botandprowler-bot c2cef99b33 chore(release): Bump versions to v5.30.0 (#11418)
Co-authored-by: prowler-bot <179230569+prowler-bot@users.noreply.github.com>
2026-06-01 18:37:51 +02:00
StylusFrost 9fc5a93f54 docs(api): add changelog entry for dynamic report availability 2026-06-01 15:07:04 +02:00
StylusFrost 765a6cec28 feat(api): derive report availability from provider frameworks
- Gate threatscore/ens/nis2/csa reports on the provider's available
  compliance frameworks instead of hard-coded provider whitelists
- Reference the ASFF/SecurityHub gate via the provider enum symbol
- Cover external-provider report availability and generic compliance
  fallback with tests
2026-06-01 15:05:46 +02:00
Alejandro Bailo a769e37615 fix(ui): restore scheduled scan column (#11411) 2026-06-01 14:34:58 +02:00
Alejandro Bailo 9d2a8d9108 fix(ui): improve background glow contrast (#11409) 2026-06-01 14:25:23 +02:00
StylusFrost 82cd317390 docs(api): add changelog entry for dynamic compliance discovery 2026-06-01 13:48:42 +02:00
StylusFrost 58fb424ed7 feat(api): discover compliance frameworks from available providers
- Source compliance template, checks mapping, and overview filter
  validation from the SDK's available providers
- Replace static provider enum loops with get_available_providers()
- Cover dynamic external-provider compliance discovery with tests
2026-06-01 13:44:56 +02:00
Alejandro Bailo e05519ff9f fix(ui): refine scans tabs and provider launch flow (#11407) 2026-06-01 12:34:11 +02:00
Pedro Martín 67b26072f8 docs(installation): add info about updating prowler (#11404) 2026-06-01 11:15:07 +02:00
lydiavilchez 2222082631 fix(googleworkspace): update metadata urls to point to official documentation (#11405) 2026-06-01 10:52:32 +02:00
StylusFrost b8d3312577 feat: validate external provider secrets via SDK credential schema
- Add get_credentials_schema to the provider contract
- Validate non-built-in secrets against the declared schema; built-ins unchanged
- Accept secrets as-is when no schema is declared (validated at connection)
2026-06-01 01:08:41 +02:00
StylusFrost 51581c35ec feat: add SDK contract for dynamic provider construction args
- Add get_scan_arguments/get_connection_arguments to the provider contract
- Route non-built-in providers through the contract; built-ins unchanged
- Cover the external dynamic path in tests
2026-06-01 00:19:17 +02:00
StylusFrost cd15ed07eb feat(api): resolve provider class dynamically via the SDK resolver
- Replace the hardcoded provider match with Provider.get_class
- Drop the closed provider-type union and TYPE_CHECKING imports
- Cover built-in and external entry-point resolution in tests
2026-05-31 23:41:10 +02:00
StylusFrost 30f8244ec1 docs(api): add changelog entry for provider varchar migration 2026-05-31 23:33:23 +02:00
StylusFrost 37323e691a feat(api): drive provider-type filters from SDK-available providers
- Replace the static provider enum in filters with the SDK provider list
- Cache the provider-type choices for hot list endpoints
- Drop the dead provider enum filter override
2026-05-31 23:33:23 +02:00
StylusFrost f14778438e feat(api): validate provider against SDK-available providers
- Drive provider validity from the SDK instead of a static enum
- Tolerate providers without a uid validator at model clean()
- Accept any SDK-exposed provider in the provider serializer field
2026-05-31 23:33:23 +02:00