Getting to Know Prowler Open Source
1. Prowler Open Source Overview
- Multi-cloud: Although Prowler originally focused on AWS, the current version also supports Azure, GCP, and Oracle Cloud. In the AWS context, this is especially useful for organizations managing hybrid or multi-cloud environments.
- Extensive checks: It has over 300 checks covering different security and compliance areas (identity, networking, encryption, logging, monitoring, etc.).
- Built-in frameworks: Comes with built-in support for benchmarks such as CIS (Center for Internet Security), PCI-DSS, HIPAA, ISO 27001, SOC 2, GDPR, among others. You can choose to run specific audits or combine several.
2. Installation and Configuration
2.1 Installation Methods
-
Repository Clone (GitHub)
- The most straightforward way to install, getting the latest version (or choosing a specific version/tag).
- Ideal for those who want to customize the code or integrate directly into pipelines. -
Docker / Container
- Prowler provides an official Docker image.
- Allows execution without installing dependencies on the local machine.
- Facilitates standardization in CI/CD environments or clusters like ECS, EKS, and Docker Swarm. -
Distributed Packages
- Some users package Prowler into packages or installation scripts. Depending on the Linux distro (Ubuntu, Amazon Linux, etc.), there may be specific packages or tutorials.
2.2 Basic Configuration
- Credentials and Permissions
- Prowler needs access to AWS APIs (via AWS CLI or environment variables).
-
It is recommended to create an IAM Role with read permissions for services such as IAM, EC2, S3, CloudTrail, and so on, following the principle of least privilege.
-
Environment Variables
AWS_ACCESS_KEY_ID,AWS_SECRET_ACCESS_KEY, andAWS_DEFAULT_REGIONorAWS_PROFILEcan be set to point to the audit profile/credentials.
2.3 Basic Execution
# Default execution example
./prowler -p default
# Example running CIS checks
./prowler -p default -g cislevel1
- -p: indicates the AWS profile (if you have multiple in ~/.aws/credentials).
- -g: indicates the check group (e.g., cislevel1, cislevel2, etc.).
3. Specific Use Cases
3.1 Selecting and Customizing Checks
- Check Groups
- Prowler organizes checks into groups (e.g.,
cislevel1,cislevel2,iso27001,hipaa, etc.). -
You can run all checks simultaneously or focus on specific checks to optimize time and generate reports oriented to the desired compliance.
-
Configuration Files and Custom Checks
- The documentation shows how to create custom modules using shell scripts or Python, to add internal rules that don't natively exist in Prowler.
- Useful when the organization follows its own policies (for example, checking if a specific tag is present).
3.2 Output and Report Formats
- Supported Formats:
json,csv,json-asff(AWS Security Finding Format),html,pdf, among others.-
json-asffallows easy integration with AWS Security Hub, generating natively compatible findings. -
Customization:
- You can add prefixes or suffixes to identify the analyzed environment (e.g., dev, stage, prod).
- Create pipelines that send these reports to S3, or index them in log systems (OpenSearch, Splunk, etc.).
Example:
./prowler -p default -M csv > resultados.csv
./prowler -p default -M json-asff > resultados-asff.json
3.3 Scanning Multiple Accounts and Regions
- Multi-Account
- The documentation explains how to use
-Ato run with multiple accounts if you have configured profiles or--roleto assume roles in different accounts. -
In large organizations, it is common to have a script that iterates over each account in
AWS Organizations, calling Prowler for each one. -
Regions
- By default, Prowler only checks the defined region (
AWS_DEFAULT_REGION). - This is important when there are sensitive resources spread across multiple regions.
You can use -r or --regions to inspect multiple regions:
./prowler -p default -r us-east-1,us-west-2,eu-central-1
3.4 Integration with AWS Security Hub
- AWS Security Finding Format (ASFF)
- Prowler generates findings in this format if you use the
-M json-asffparameter. -
Then, it is possible to import manually or via script to Security Hub, correlating Prowler findings with alerts from GuardDuty, Inspector, etc.
-
Automation
- A typical flow: Prowler runs (can be via container on ECS), generates a report in
json-asff, and then a Lambda script (or command line) posts these findings to Security Hub. - This unifies visualization and facilitates incident prioritization.
4. New Features and Documentation Highlights
4.1 Checks for Other Clouds
- Azure, GCP, and OCI
- Although our focus is AWS, the documentation reinforces that Prowler can now run checks on other clouds.
- This allows security teams to standardize audits in hybrid environments.
4.2 Integration with CI/CD Tools
- GitHub Actions
- You can find workflow examples in the repository and in the Prowler documentation, facilitating automatic execution on each pull request.
-
Use it for "shift-left" in security: whenever someone modifies infrastructure (Terraform, CloudFormation), you run Prowler to ensure there are no compliance violations.
-
GitLab CI and CodeBuild
- Similarly, there are templates and guides for integrating into GitLab or CodeBuild pipelines on AWS.
- The output (csv/json) can be stored as a build artifact or sent to S3 repositories.
4.3 Benchmark Mode and Custom Benchmarks
- Benchmark Mode
- Prowler has a "benchmark mode" that focuses exclusively on checks from a framework, assigning scores and generating specific reports for CIS, PCI, etc.
-
It allows you to have a compliance "score" and know which points you are failing or passing.
-
Custom Benchmarks
- The documentation explains how to create your own benchmarks by combining native checks + custom checks.
- Great for companies that have internal requirements, or that want to consolidate multiple benchmarks into a single execution.
5. Best Practices for Usage (According to the Documentation)
-
Automate Regular Executions
- The documentation emphasizes the importance of running Prowler periodically (daily, weekly, or monthly), as the security posture must be monitored continuously. -
Store Reports Historically
- For audits, it is useful to keep records of how compliance stood over time.
- Use versioning in an S3 bucket or a log repository to compare progress. -
Fix Critical Findings Quickly
- Some Prowler checks have higher severity — for example, "S3 Bucket Allows Public Access" or "Root Account without MFA".
- It is recommended to create an immediate remediation process for high-priority items. -
Keep the Tool Updated
- The Prowler team releases frequent updates, adding new checks, improving performance, and fixing bugs.
- Follow the changelog and release notes on GitHub or in the official documentation. -
Integrate with Other Tools
- The documentation provides examples of how to send findings to Splunk, Elasticsearch/OpenSearch, Slack, Email, etc.
- This ensures that critical alerts are not "forgotten" in a local report.
The main advantages include:
- Comprehensive Coverage (over 300 checks)
- Support for Multiple Compliance Frameworks
- Cross-Platform Execution (Docker, local, CI/CD, etc.)
- Easy Integration with AWS Services (Security Hub, EventBridge, S3, etc.)