Convert Figma logo to code with AI

prowler-cloud logoprowler

This repo hosts Prowler OSS (CLI and Local Server). Prowler is the world’s most widely used open-source cloud security platform that automates security and compliance across any cloud environment for Humans and AI Agents.

15,142
2,475
15,142
525

Top Related Projects

37,228

Find vulnerabilities, misconfigurations, secrets, SBOM in containers, Kubernetes, code repositories, clouds and more

8,936

Prevent cloud misconfigurations and find vulnerabilities during build-time in infrastructure as code, container images and open source packages with Checkov by Bridgecrew.

29,019

Find secrets with Gitleaks πŸ”‘

12,737

A vulnerability scanner for container images and filesystems

Write tests against structured configuration data using the Open Policy Agent Rego query language

Detect compliance and security violations across Infrastructure as Code to mitigate risk before provisioning cloud native infrastructure.

Quick Overview

Prowler is an open-source security tool designed to perform AWS security best practices assessments, audits, incident response, continuous monitoring, hardening, and forensics readiness. It contains hundreds of controls covering CIS, PCI-DSS, ISO27001, GDPR, HIPAA, FFIEC, SOC2, AWS FTR, ENS, and custom security frameworks.

Pros

  • Comprehensive security assessment with 300+ controls across multiple compliance frameworks
  • Supports multi-account and multi-region scans
  • Integrates with various security tools and platforms (e.g., Amazon Security Hub, Slack, Jira)
  • Regularly updated to include the latest AWS services and security best practices

Cons

  • Primarily focused on AWS, limiting its use for multi-cloud environments
  • Can be resource-intensive when scanning large environments
  • Requires careful configuration to avoid false positives
  • Learning curve for customizing checks and interpreting results

Getting Started

To get started with Prowler, follow these steps:

  1. Install Prowler:
pip install prowler
  1. Configure AWS credentials:
aws configure
  1. Run a basic scan:
prowler aws

For more advanced usage and customization options, refer to the official documentation at https://github.com/prowler-cloud/prowler.

Competitor Comparisons

37,228

Find vulnerabilities, misconfigurations, secrets, SBOM in containers, Kubernetes, code repositories, clouds and more

Pros of Trivy

  • Broader scope: Scans containers, filesystems, and git repositories for vulnerabilities and misconfigurations
  • Faster scanning speed, especially for large container images
  • Supports multiple operating systems and package managers

Cons of Trivy

  • Less comprehensive cloud security checks compared to Prowler
  • Primarily focused on vulnerability scanning rather than compliance auditing
  • May require additional tools for complete cloud infrastructure assessment

Code Comparison

Trivy CLI command:

trivy image alpine:3.10

Prowler CLI command:

./prowler aws

Trivy focuses on scanning specific targets like container images, while Prowler is designed to perform comprehensive security assessments of AWS environments.

Trivy excels in vulnerability scanning across various platforms and artifacts, making it ideal for DevSecOps pipelines. Prowler, on the other hand, specializes in cloud security auditing and compliance checks, particularly for AWS environments.

Both tools are valuable in their respective domains, with Trivy offering broader vulnerability scanning capabilities and Prowler providing deeper cloud security insights.

8,936

Prevent cloud misconfigurations and find vulnerabilities during build-time in infrastructure as code, container images and open source packages with Checkov by Bridgecrew.

Pros of Checkov

  • Supports multiple cloud providers and IaC tools (AWS, Azure, GCP, Terraform, CloudFormation, Kubernetes, etc.)
  • Offers a wide range of pre-built policies and custom policy creation
  • Integrates well with CI/CD pipelines and provides clear, actionable output

Cons of Checkov

  • May have a steeper learning curve for users new to IaC security scanning
  • Can produce false positives in some scenarios, requiring manual verification
  • Limited focus on runtime security checks compared to Prowler

Code Comparison

Checkov:

from checkov.common.models.enums import CheckResult, CheckCategories
from checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck

class S3BucketVersioning(BaseResourceCheck):
    def __init__(self):
        name = "Ensure S3 bucket has versioning enabled"
        check_id = "CKV_AWS_21"

Prowler:

#!/usr/bin/env bash

# Prowler - the handy cloud security tool (https://github.com/prowler-cloud/prowler)

PROWLER_VERSION="${PROWLER_VERSION:-$(cat ${PROWLER_DIR}/VERSION)}"

Both tools aim to enhance cloud security, but Checkov focuses more on Infrastructure as Code (IaC) scanning across multiple providers, while Prowler specializes in AWS security assessments with some multi-cloud capabilities. Checkov's Python-based approach allows for more flexible policy creation, while Prowler's bash-based structure may be more familiar to system administrators and DevOps engineers.

29,019

Find secrets with Gitleaks πŸ”‘

Pros of Gitleaks

  • Specialized in detecting secrets and sensitive information in git repositories
  • Supports scanning local repositories, GitHub organizations, and GitLab groups
  • Highly customizable with regex patterns and rules

Cons of Gitleaks

  • Limited to secret detection, lacking broader security assessment capabilities
  • May produce false positives, requiring manual review of results
  • Doesn't provide remediation suggestions or security best practices

Code Comparison

Gitleaks (Go):

func (d *Detector) Detect(src string) ([]DetectResult, error) {
    var results []DetectResult
    for _, r := range d.Rules {
        matches := r.Regexp.FindAllStringIndex(src, -1)
        for _, match := range matches {
            results = append(results, DetectResult{
                Rule:    r,
                Start:   match[0],
                End:     match[1],
                Secret:  src[match[0]:match[1]],
            })
        }
    }
    return results, nil
}

Prowler (Python):

def run_check(self, check):
    check_metadata = check.metadata()
    if self.audit_info.audit_session_name not in check_metadata.get("excluded_session_names", []):
        finding = check.execute()
        if finding:
            self.findings.append(finding)
    return self.findings

While both tools focus on security, Gitleaks specializes in secret detection within git repositories, whereas Prowler offers a broader range of cloud security assessments, particularly for AWS environments. Gitleaks is more focused and customizable for secret scanning, while Prowler provides a comprehensive security auditing solution for cloud infrastructures.

12,737

A vulnerability scanner for container images and filesystems

Pros of Grype

  • Focused specifically on vulnerability scanning for container images and filesystems
  • Faster scanning speed, especially for large container images
  • Supports a wide range of package ecosystems and vulnerability databases

Cons of Grype

  • Limited to vulnerability scanning, lacks broader security assessment capabilities
  • Does not provide cloud infrastructure security checks
  • Less comprehensive reporting and remediation guidance compared to Prowler

Code Comparison

Grype (scanning a container image):

grype alpine:latest

Prowler (running a security assessment):

./prowler aws

Summary

Grype is a specialized tool for vulnerability scanning in containers and filesystems, offering fast and focused scans across various package ecosystems. It excels in speed and specific vulnerability detection but lacks the broader security assessment capabilities of Prowler.

Prowler, on the other hand, provides a comprehensive security assessment for cloud environments, particularly AWS. It offers a wider range of checks, including compliance and best practices, but may not be as specialized or fast in container vulnerability scanning as Grype.

The choice between these tools depends on the specific security needs of your project: Grype for focused container vulnerability scanning, or Prowler for broader cloud security assessments.

Write tests against structured configuration data using the Open Policy Agent Rego query language

Pros of Conftest

  • More flexible and general-purpose, can be used for various configuration files and policy types
  • Integrates well with other Open Policy Agent tools and ecosystem
  • Supports multiple input formats (YAML, JSON, INI, etc.)

Cons of Conftest

  • Requires learning Rego language for writing policies
  • Less out-of-the-box functionality for cloud security auditing
  • May require more setup and configuration for specific use cases

Code Comparison

Prowler (shell script):

./prowler -p custom-profile -r us-east-1

Conftest (policy testing):

conftest test deployment.yaml

Key Differences

  • Prowler is specifically designed for AWS security auditing, while Conftest is a general-purpose policy testing tool
  • Prowler provides pre-defined checks and reports, whereas Conftest requires custom policy definitions
  • Conftest offers more flexibility in terms of input formats and policy types, but may require more initial setup
  • Prowler is more user-friendly for AWS-specific security assessments, while Conftest has a steeper learning curve but broader applicability

Both tools serve different purposes and can be complementary in a comprehensive security and compliance strategy.

Detect compliance and security violations across Infrastructure as Code to mitigate risk before provisioning cloud native infrastructure.

Pros of Terrascan

  • Broader scope: Supports multiple IaC tools (Terraform, Kubernetes, Helm, Kustomize, Dockerfiles)
  • Policy-as-code approach with Rego language for custom rules
  • Integrates well with CI/CD pipelines and supports various output formats

Cons of Terrascan

  • Less focus on cloud-specific security checks compared to Prowler
  • Steeper learning curve for creating custom policies
  • May require more setup and configuration for comprehensive cloud security audits

Code Comparison

Terrascan (scanning a Terraform file):

terrascan scan -i terraform -f main.tf

Prowler (scanning AWS environment):

./prowler aws

Summary

Terrascan is a versatile IaC security scanner supporting multiple tools, while Prowler specializes in cloud security audits, particularly for AWS. Terrascan offers more flexibility in policy creation but may require more setup for cloud-specific checks. Prowler provides out-of-the-box cloud security audits but is more limited in scope to specific cloud providers.

Convert Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README

Prowler logo Prowler logo

Prowler is the Open Cloud Security Platform trusted by thousands to automate security and compliance in any cloud environment. With thousands of ready-to-use checks and compliance frameworks, Prowler delivers real-time, customizable monitoring and seamless integrations, making cloud security simple, scalable, and cost-effective for organizations of any size.

The Agentic Cloud Defender

Try Prowler Cloud

Prowler community on Slack
Join our Prowler community!


Slack Shield Python Version Python Version PyPI Downloads Docker Pulls AWS ECR Gallery Codecov coverage Linux Foundation insights health score

Version Version Contributors Issues License Twitter Twitter


Prowler Cloud demo

Description

Prowler is the worldҀ™s most widely used Open-Source Cloud Security Platform that automates security and compliance across any cloud environment. With thousands of ready-to-use security checks, remediation guidance, and compliance frameworks, Prowler is built to Γ’Β€ΒœSecure ANY Cloud at AI SpeedҀ. Prowler delivers AI-driven, customizable, and easy-to-use assessments, dashboards, reports, and integrations, making cloud security simple, scalable, and cost-effective for organizations of any size.

Prowler includes hundreds of built-in controls to ensure compliance with standards and frameworks, including:

  • Prowler ThreatScore: Weighted risk prioritization scoring that helps you focus on the most critical security findings first
  • Industry Standards: CIS, NIST 800, NIST CSF, CISA, and MITRE ATT&CK
  • Regulatory Compliance and Governance: RBI, FedRAMP, PCI-DSS, and NIS2
  • Frameworks for Sensitive Data and Privacy: GDPR, HIPAA, and FFIEC
  • Frameworks for Organizational Governance and Quality Control: SOC2, GXP, and ISO 27001
  • Cloud-Specific Frameworks: AWS Foundational Technical Review (FTR), AWS Well-Architected Framework, and BSI C5
  • National Security Standards: ENS (Spanish National Security Scheme) and KISA ISMS-P (Korean)
  • Custom Security Frameworks: Tailored to your needs

Prowler Cloud & Prowler Local Server

Prowler Cloud and Prowler Local Server, its self-hosted open-source version, are web applications that simplify running Prowler across your cloud provider accounts. They provide a user-friendly interface to visualize the results and streamline your security assessments.

Prowler Cloud Risk Pipeline Threat Map

For more details, refer to the Prowler Local Server documentation

Prowler CLI

prowler <provider>

Prowler CLI Execution

Prowler Local Dashboard

prowler dashboard

Prowler Local Dashboard

Attack Paths

Attack Paths automatically extends every completed AWS scan with a graph that combines Cartography's cloud inventory with Prowler findings. The feature runs in the API worker after each scan.

Two graph backends are supported as the long-lived sink:

  • Neo4j (default; the Docker Compose files already ship a neo4j service).
  • Amazon Neptune (cloud-managed; opt-in).

Select the sink with ATTACK_PATHS_SINK_DATABASE (neo4j or neptune; default neo4j).

Note: Cartography ingestion always uses a temporary Neo4j database, regardless of the configured sink. The NEO4J_* variables below must remain set even when ATTACK_PATHS_SINK_DATABASE=neptune.

Neo4j sink

VariableDescriptionDefault
NEO4J_HOSTHostname used by the API containers.neo4j
NEO4J_PORTBolt port exposed by Neo4j.7687
NEO4J_USER / NEO4J_PASSWORDCredentials with rights to create per-tenant databases.neo4j / neo4j_password

Neptune sink

VariableDescriptionDefault
NEPTUNE_WRITER_ENDPOINTBolt host for the Neptune writer instance. Required when sink is neptune.empty
NEPTUNE_READER_ENDPOINTOptional reader endpoint for read-only queries. Falls back to the writer when unset.empty
NEPTUNE_PORTBolt port exposed by Neptune.8182
AWS_REGIONRegion the Neptune cluster lives in. Required when sink is neptune.empty

Neptune authenticates with SigV4 using the standard boto3 credential chain. The worker's IAM role (or AWS_ACCESS_KEY_ID / AWS_SECRET_ACCESS_KEY) supplies the credentials. There is no Neptune password variable.

Every AWS provider scan will enqueue an Attack Paths ingestion job automatically. Other cloud providers will be added in future iterations.

Prowler at a Glance

[!Tip] For the most accurate and up-to-date information about checks, services, frameworks, and categories, visit Prowler Hub.

ProviderChecksServicesCompliance FrameworksCategoriesSupportInterface
AWS639864719OfficialUI, API, CLI
Azure191222116OfficialUI, API, CLI
GCP109201912OfficialUI, API, CLI
Kubernetes927811OfficialUI, API, CLI
GitHub24325OfficialUI, API, CLI
M36514310610OfficialUI, API, CLI
OCI5214510OfficialUI, API, CLI
Alibaba Cloud63969OfficialUI, API, CLI
Cloudflare29325OfficialUI, API, CLI
IaCSee trivy docs.N/AN/AN/AOfficialUI, API, CLI
MongoDB Atlas10318OfficialUI, API, CLI
LLMSee promptfoo docs.N/AN/AN/AOfficialCLI
ImageN/AN/AN/AN/AOfficialUI, API, CLI
Google Workspace651146OfficialUI, API, CLI
OpenStack34519OfficialUI, API, CLI
Vercel26618OfficialUI, API, CLI
Okta29822OfficialUI, API, CLI
Linode Contact us10314UnofficialCLI
Huawei Cloud Contact us251016UnofficialCLI
E2E Networks Contact us27602UnofficialCLI
Scaleway Contact us1111UnofficialCLI
StackIT Contact us8213UnofficialCLI
NHN6220UnofficialCLI

[!Note] The numbers in the table are updated periodically.

[!Note] Use the following commands to list Prowler's available checks, services, compliance frameworks, and categories:

  • prowler <provider> --list-checks
  • prowler <provider> --list-services
  • prowler <provider> --list-compliance
  • prowler <provider> --list-categories

Γ°ΒŸΒ’Β» Installation

Prowler Local Server

Prowler Local Server offers flexible installation methods tailored to various environments:

For detailed instructions on using Prowler Local Server, refer to the usage guide.

Docker Compose

Requirements

Commands

macOS/Linux:

VERSION=$(curl -s https://api.github.com/repos/prowler-cloud/prowler/releases/latest | jq -r .tag_name)
curl -sLO "https://raw.githubusercontent.com/prowler-cloud/prowler/refs/tags/${VERSION}/docker-compose.yml"
# Environment variables can be customized in the .env file. Using default values in production environments is not recommended.
curl -sLO "https://raw.githubusercontent.com/prowler-cloud/prowler/refs/tags/${VERSION}/.env"
docker compose up -d

Windows PowerShell:

$VERSION = (Invoke-RestMethod -Uri "https://api.github.com/repos/prowler-cloud/prowler/releases/latest").tag_name
Invoke-WebRequest -Uri "https://raw.githubusercontent.com/prowler-cloud/prowler/refs/tags/$VERSION/docker-compose.yml" -OutFile "docker-compose.yml"
# Environment variables can be customized in the .env file. Using default values in production environments is not recommended.
Invoke-WebRequest -Uri "https://raw.githubusercontent.com/prowler-cloud/prowler/refs/tags/$VERSION/.env" -OutFile ".env"
docker compose up -d

[!WARNING] Γ°ΒŸΒ”Β’ For a secure setup, the API auto-generates a unique key pair, DJANGO_TOKEN_SIGNING_KEY and DJANGO_TOKEN_VERIFYING_KEY, and stores it in ~/.config/prowler-api (non-container) or the bound Docker volume in _data/api (container). Never commit or reuse static/default keys. To rotate keys, delete the stored key files and restart the API.

Once configured, access Prowler Local Server at http://localhost:3000. Sign up using your email and password to get started.

Common Issues with Docker Pull Installation

[!Note] If you want to use AWS role assumption (e.g., with the "Connect assuming IAM Role" option), you may need to mount your local .aws directory into the container as a volume (e.g., - "${HOME}/.aws:/home/prowler/.aws:ro"). There are several ways to configure credentials for Docker containers. See the Troubleshooting section for more details and examples.

You can find more information in the Troubleshooting section.

From GitHub

Requirements

Commands to run the API

git clone https://github.com/prowler-cloud/prowler
cd prowler/api
uv sync
source .venv/bin/activate
set -a
source .env
docker compose up postgres valkey -d
cd src/backend
python manage.py migrate --database admin
gunicorn -c config/guniconf.py config.wsgi:application

After completing the setup, access the API documentation at http://localhost:8080/api/v1/docs.

Commands to run the API Worker

git clone https://github.com/prowler-cloud/prowler
cd prowler/api
uv sync
source .venv/bin/activate
set -a
source .env
cd src/backend
python -m celery -A config.celery worker -l info -E

Commands to run the API Scheduler

git clone https://github.com/prowler-cloud/prowler
cd prowler/api
uv sync
source .venv/bin/activate
set -a
source .env
cd src/backend
python -m celery -A config.celery beat -l info --scheduler django_celery_beat.schedulers:DatabaseScheduler

Commands to run the UI

git clone https://github.com/prowler-cloud/prowler
cd prowler/ui
pnpm install
pnpm run build
pnpm start

Once configured, access Prowler Local Server at http://localhost:3000. Sign up using your email and password to get started.

Pre-commit Hooks Setup

Some pre-commit hooks require tools installed on your system:

  1. Install TruffleHog (secret scanning) Ҁ” see the official installation options.

  2. Install Hadolint (Dockerfile linting) Ҁ” see the official installation options.

Prowler CLI

Pip package

Prowler CLI is available as a project in PyPI. Consequently, it can be installed using pip with Python >=3.10, <3.13:

pip install prowler
prowler -v

For further guidance, refer to https://docs.prowler.com

Containers

Available Versions of Prowler CLI

The following versions of Prowler CLI are available, depending on your requirements:

  • latest: Synchronizes with the master branch. Note that this version is not stable.
  • v4-latest: Synchronizes with the v4 branch. Note that this version is not stable.
  • v3-latest: Synchronizes with the v3 branch. Note that this version is not stable.
  • <x.y.z> (release): Stable releases corresponding to specific versions. See the complete list of Prowler releases.
  • stable: Always points to the latest release.
  • v4-stable: Always points to the latest release for v4.
  • v3-stable: Always points to the latest release for v3.

The container images are available here:

From GitHub

Python >=3.10, <3.13 is required with uv:

git clone https://github.com/prowler-cloud/prowler
cd prowler
uv sync
source .venv/bin/activate
python prowler-cli.py -v

[!IMPORTANT] To clone Prowler on Windows, configure Git to support long file paths by running the following command: git config core.longpaths true.

Γ°ΒŸΒ›Β‘Γ―ΒΈΒ GitHub Action

The official Prowler GitHub Action runs Prowler scans in your GitHub workflows using the official prowlercloud/prowler Docker image. Scans run on any supported provider, with optional --push-to-cloud to send findings to Prowler Cloud and optional SARIF upload so findings show up in the repo's Security ҆’ Code scanning tab and as inline PR annotations.

name: Prowler IaC Scan
on:
  pull_request:

permissions:
  contents: read
  security-events: write
  actions: read

jobs:
  prowler:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - uses: prowler-cloud/prowler@5.25
        with:
          provider: iac
          output-formats: sarif json-ocsf
          upload-sarif: true
          flags: --severity critical high

Full configuration, per-provider authentication, and SARIF examples: Prowler GitHub Action tutorial. Marketplace listing: Prowler Security Scan.

Ҝï¸ High level architecture

Prowler Local Server

Prowler Local Server is composed of four key components:

  • Prowler UI: A web-based interface, built with Next.js, providing a user-friendly experience for executing Prowler scans and visualizing results.
  • Prowler API: A backend service, developed with Django REST Framework, responsible for running Prowler scans and storing the generated results.
  • Prowler SDK: A Python SDK designed to extend the functionality of the Prowler CLI for advanced capabilities.
  • Prowler MCP Server: A Model Context Protocol server that provides AI tools for Lighthouse, the AI-powered security assistant. This is a critical dependency for Lighthouse functionality.
flowchart TB
    user([User / Security Team])
    cli([Prowler CLI])

    subgraph APP["Prowler Local Server"]
        ui["Prowler UI<br/>(Next.js)"]
        api["Prowler API<br/>(Django REST Framework)"]
        worker["API Worker<br/>(Celery)"]
        beat["API Scheduler<br/>(Celery Beat)"]
        mcp["Prowler MCP Server<br/>(Lighthouse AI tools)"]
    end

    sdk["Prowler SDK<br/>(Python)"]

    subgraph DATA["Data Layer"]
        pg[("PostgreSQL")]
        valkey[("Valkey / Redis")]
        neo4j[("Neo4j")]
    end

    providers["Providers"]

    user --> ui
    user --> cli
    ui -->|REST| api
    ui -->|MCP HTTP| mcp
    mcp -->|REST| api
    api --> pg
    api --> valkey
    beat -->|enqueue jobs| valkey
    valkey -->|dispatch| worker
    worker --> pg
    worker -->|Attack Paths| neo4j
    worker -->|invokes| sdk
    cli --> sdk

    sdk --> providers

Prowler CLI

Running Prowler

Prowler can be executed across various environments, offering flexibility to meet your needs. It can be run from:

  • Your own workstation

  • A Kubernetes Job

  • Google Compute Engine

  • Azure Virtual Machines (VMs)

  • Amazon EC2 instances

  • AWS Fargate or other container platforms

  • CloudShell

And many more environments.

Architecture

Γ°ΒŸΒ€Β– AI Skills for Development

Prowler includes a comprehensive set of AI Skills that help AI coding assistants understand Prowler's codebase patterns and conventions.

What are AI Skills?

Skills are structured instructions that give AI assistants the context they need to write code that follows Prowler's standards. They include:

  • Coding patterns for each component (SDK, API, UI, MCP Server)
  • Testing conventions (pytest, Playwright)
  • Architecture guidelines (Clean Architecture, RLS patterns)
  • Framework-specific rules (React 19, Next.js 15, Django DRF, Tailwind 4)

Available Skills

CategorySkills
Generictypescript, react-19, nextjs-15, tailwind-4, playwright, pytest, django-drf, zod-4, zustand-5, ai-sdk-5
Prowlerprowler, prowler-api, prowler-ui, prowler-mcp, prowler-sdk-check, prowler-test-ui, prowler-test-api, prowler-test-sdk, prowler-compliance, prowler-provider, prowler-pr, prowler-docs

Setup

./skills/setup.sh

This configures skills for AI coding assistants that follow the agentskills.io standard:

ToolConfiguration
Claude Code.claude/skills/ (symlink)
OpenCode.claude/skills/ (symlink)
Codex (OpenAI).codex/skills/ (symlink)
GitHub Copilot.github/skills/ (symlink)
Gemini CLI.gemini/skills/ (symlink)

Note: Restart your AI coding assistant after running setup to load the skills. Gemini CLI requires experimental.skills enabled in settings.

Γ°ΒŸΒ“Β– Documentation

For installation instructions, usage details, tutorials, and the Developer Guide, visit https://docs.prowler.com/

Γ°ΒŸΒ“Βƒ License

Prowler is licensed under the Apache License 2.0.

A copy of the License is available at http://www.apache.org/licenses/LICENSE-2.0