Skip to content
Merged
Show file tree
Hide file tree
Changes from 38 commits
Commits
Show all changes
39 commits
Select commit Hold shift + click to select a range
ae22001
wip
andoniaf Sep 9, 2025
5c2b867
wip: do not use progress bar in Celery workers
andoniaf Sep 9, 2025
ff22d19
wip
andoniaf Sep 9, 2025
dbff605
wip: add IaC to API
andoniaf Sep 9, 2025
27f5c95
wip: fix IaC scan mapping
andoniaf Sep 9, 2025
75390c0
wip: add IaC to UI
andoniaf Sep 12, 2025
06cf9ed
wip: set defaults
andoniaf Sep 10, 2025
f76847d
chore: update trivy
andoniaf Sep 12, 2025
d09adb3
chore: update comments
andoniaf Sep 12, 2025
d47ff10
remove: commit local dev changes, revert after sending PR
andoniaf Sep 12, 2025
a5fe98b
refactor: scan IaC skip validations
andoniaf Sep 24, 2025
861f969
chore: update with new branch
andoniaf Sep 24, 2025
23a77b7
Merge branch 'master' into DEVREL-91-add-ia-c-to-the-app
andoniaf Oct 22, 2025
4ce625a
fix: rename iac provider migration
andoniaf Oct 22, 2025
6349f20
fix: solve linter issues
andoniaf Oct 22, 2025
5a13701
chore: update CHANGELOG
andoniaf Oct 22, 2025
2a87120
chore: move load compliance frameworks into conditional
andoniaf Oct 23, 2025
7b8558b
chore(iac): hardcode risk value to avoid empty field
andoniaf Oct 27, 2025
f249b54
fix(iac) IaC logo now renders correctly on the overview page
andoniaf Oct 27, 2025
0a3b9c1
fix(iac): remove duplicate repository URL input for IaC provider
andoniaf Oct 27, 2025
1693f7a
fix(iac): return IaC findings in batchs to avoid possible memory issues
andoniaf Oct 27, 2025
c1213ac
chore(iac): move lazy imports to top of the file
andoniaf Oct 27, 2025
a9e5068
Merge branch 'master' into DEVREL-91-add-ia-c-to-the-app
andoniaf Oct 27, 2025
6c97f6d
chore(iac): move lazy imports to top of the file
andoniaf Oct 27, 2025
113d1ce
chore(iac): move version to top of the file
andoniaf Oct 27, 2025
5307bf4
chore: update CHANGELOG format
andoniaf Oct 27, 2025
b5e13da
fix(iac): filter findings by status
andoniaf Oct 27, 2025
59a7002
Merge branch 'master' into DEVREL-91-add-ia-c-to-the-app
andoniaf Oct 27, 2025
782b698
chore(iac): improve error handling flow
andoniaf Oct 29, 2025
a997f0b
Merge branch 'master' into DEVREL-91-add-ia-c-to-the-app
andoniaf Oct 29, 2025
843c1ae
docs: update providers table
andoniaf Oct 29, 2025
6204e1b
fix(iac): solve next typecheck
andoniaf Oct 29, 2025
6a11df4
fix(iac): solve migration order
andoniaf Oct 29, 2025
c3e395c
Merge branch 'master' into DEVREL-91-add-ia-c-to-the-app
andoniaf Oct 31, 2025
957342f
fix(iac): solve indentation
andoniaf Oct 31, 2025
8e19c74
fix(iac): solve migration order, yes, again
andoniaf Oct 31, 2025
9b9af9b
Merge branch 'master' into DEVREL-91-add-ia-c-to-the-app
andoniaf Oct 31, 2025
3b4a2c3
fix(iac): solve migration order, yes, again, nowyes
andoniaf Oct 31, 2025
2062d50
Merge branch 'master' into DEVREL-91-add-ia-c-to-the-app
andoniaf Nov 4, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 13 additions & 13 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -80,19 +80,19 @@ prowler dashboard
> For the most accurate and up-to-date information about checks, services, frameworks, and categories, visit [**Prowler Hub**](https://hub.prowler.com).


| 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) | Support | Stage | Interface |
|---|---|---|---|---|---|---|---|
| AWS | 576 | 82 | 38 | 10 | Official | Stable | UI, API, CLI |
| GCP | 79 | 13 | 11 | 3 | Official | Stable | UI, API, CLI |
| Azure | 162 | 19 | 12 | 4 | Official | Stable | UI, API, CLI |
| Kubernetes | 83 | 7 | 5 | 7 | Official | Stable | UI, API, CLI |
| GitHub | 17 | 2 | 1 | 0 | Official | Stable | UI, API, CLI |
| M365 | 70 | 7 | 3 | 2 | Official | Stable | UI, API, CLI |
| OCI | 51 | 13 | 1 | 10 | Official | Stable | UI, API, CLI |
| IaC | [See `trivy` docs.](https://trivy.dev/latest/docs/coverage/iac/) | N/A | N/A | N/A | Official | Beta | CLI |
| MongoDB Atlas | 10 | 3 | 0 | 0 | Official | Beta | CLI |
| LLM | [See `promptfoo` docs.](https://www.promptfoo.dev/docs/red-team/plugins/) | N/A | N/A | N/A | Official | Beta | CLI |
| NHN | 6 | 2 | 1 | 0 | Unofficial | Beta | CLI |
| 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) | Support | Interface |
|---|---|---|---|---|---|---|
| AWS | 576 | 82 | 38 | 10 | Official | UI, API, CLI |
| GCP | 79 | 13 | 11 | 3 | Official | UI, API, CLI |
| Azure | 162 | 19 | 12 | 4 | Official | UI, API, CLI |
| Kubernetes | 83 | 7 | 5 | 7 | Official | UI, API, CLI |
| GitHub | 17 | 2 | 1 | 0 | Official | UI, API, CLI |
| M365 | 70 | 7 | 3 | 2 | Official | UI, API, CLI |
| OCI | 51 | 13 | 1 | 10 | Official | UI, API, CLI |
| IaC | [See `trivy` docs.](https://trivy.dev/latest/docs/coverage/iac/) | N/A | N/A | N/A | Official | UI, API, CLI |
| MongoDB Atlas | 10 | 3 | 0 | 0 | Official | CLI |
| LLM | [See `promptfoo` docs.](https://www.promptfoo.dev/docs/red-team/plugins/) | N/A | N/A | N/A | Official | CLI |
| NHN | 6 | 2 | 1 | 0 | Unofficial | CLI |

> [!Note]
> The numbers in the table are updated periodically.
Expand Down
1 change: 1 addition & 0 deletions api/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ All notable changes to the **Prowler API** are documented in this file.
## [1.15.0] (Prowler UNRELEASED)

### Added
- IaC (Infrastructure as Code) provider support for remote repositories [(#8751)](https://github.com/prowler-cloud/prowler/pull/8751)
- Extend `GET /api/v1/providers` with provider-type filters and optional pagination disable to support the new Overview filters [(#8975)](https://github.com/prowler-cloud/prowler/pull/8975)
- New endpoint to retrieve the number of providers grouped by provider type [(#8975)](https://github.com/prowler-cloud/prowler/pull/8975)
- Support for configuring multiple LLM providers [(#8772)](https://github.com/prowler-cloud/prowler/pull/8772)
Expand Down
21 changes: 21 additions & 0 deletions api/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,9 @@ LABEL maintainer="https://github.com/prowler-cloud/api"
ARG POWERSHELL_VERSION=7.5.0
ENV POWERSHELL_VERSION=${POWERSHELL_VERSION}

ARG TRIVY_VERSION=0.66.0
ENV TRIVY_VERSION=${TRIVY_VERSION}

# hadolint ignore=DL3008
RUN apt-get update && apt-get install -y --no-install-recommends \
wget \
Expand Down Expand Up @@ -36,6 +39,24 @@ RUN ARCH=$(uname -m) && \
ln -s /opt/microsoft/powershell/7/pwsh /usr/bin/pwsh && \
rm /tmp/powershell.tar.gz

# Install Trivy for IaC scanning
RUN ARCH=$(uname -m) && \
if [ "$ARCH" = "x86_64" ]; then \
TRIVY_ARCH="Linux-64bit" ; \
elif [ "$ARCH" = "aarch64" ]; then \
TRIVY_ARCH="Linux-ARM64" ; \
else \
echo "Unsupported architecture for Trivy: $ARCH" && exit 1 ; \
fi && \
wget --progress=dot:giga "https://github.com/aquasecurity/trivy/releases/download/v${TRIVY_VERSION}/trivy_${TRIVY_VERSION}_${TRIVY_ARCH}.tar.gz" -O /tmp/trivy.tar.gz && \
tar zxf /tmp/trivy.tar.gz -C /tmp && \
mv /tmp/trivy /usr/local/bin/trivy && \
chmod +x /usr/local/bin/trivy && \
rm /tmp/trivy.tar.gz && \
# Create trivy cache directory with proper permissions
mkdir -p /tmp/.cache/trivy && \
chmod 777 /tmp/.cache/trivy

# Add prowler user
RUN addgroup --gid 1000 prowler && \
adduser --uid 1000 --gid 1000 --disabled-password --gecos "" prowler
Expand Down
35 changes: 35 additions & 0 deletions api/src/backend/api/migrations/0054_iac_provider.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
# Generated by Django 5.1.10 on 2025-09-09 09:25

from django.db import migrations

import api.db_utils


class Migration(migrations.Migration):
dependencies = [
("api", "0053_lighthouse_bedrock_openai_compatible"),
]

operations = [
migrations.AlterField(
model_name="provider",
name="provider",
field=api.db_utils.ProviderEnumField(
choices=[
("aws", "AWS"),
("azure", "Azure"),
("gcp", "GCP"),
("kubernetes", "Kubernetes"),
("m365", "M365"),
("github", "GitHub"),
("oci", "Oracle Cloud Infrastructure"),
("iac", "IaC"),
],
default="aws",
),
),
migrations.RunSQL(
"ALTER TYPE provider ADD VALUE IF NOT EXISTS 'iac';",
reverse_sql=migrations.RunSQL.noop,
),
]
14 changes: 14 additions & 0 deletions api/src/backend/api/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -284,6 +284,7 @@ class ProviderChoices(models.TextChoices):
KUBERNETES = "kubernetes", _("Kubernetes")
M365 = "m365", _("M365")
GITHUB = "github", _("GitHub")
IAC = "iac", _("IaC")
OCI = "oci", _("Oracle Cloud Infrastructure")

@staticmethod
Expand Down Expand Up @@ -355,6 +356,19 @@ def validate_github_uid(value):
pointer="/data/attributes/uid",
)

@staticmethod
def validate_iac_uid(value):
# Validate that it's a valid repository URL (git URL format)
if not re.match(
r"^(https?://|git@|ssh://)[^\s/]+[^\s]*\.git$|^(https?://)[^\s/]+[^\s]*$",
value,
):
raise ModelValidationError(
detail="IaC provider ID must be a valid repository URL (e.g., https://github.com/user/repo or https://github.com/user/repo.git).",
code="iac-uid",
pointer="/data/attributes/uid",
)

@staticmethod
def validate_oci_uid(value):
if not re.match(
Expand Down
Loading
Loading