Prerequisites
- A Prowler Cloud account with an active subscription (see Prowler Cloud Pricing)
- A Prowler Cloud API key with the Manage Ingestions permission (see API Keys)
- Cloud provider credentials configured in the CI/CD environment (e.g., AWS credentials for scanning AWS accounts)
- Access to configure pipeline workflows and secrets in the CI/CD platform
Key Concepts
Prowler CLI provides the--push-to-cloud flag, which uploads scan results directly to Prowler Cloud after a scan completes. Combined with the PROWLER_CLOUD_API_KEY environment variable, this enables fully automated ingestion without manual file uploads.
For full details on the flag and API, refer to the Import Findings documentation.
The examples in this guide use AWS as the target provider, but the same approach applies to any provider supported by Prowler (Azure, GCP, Kubernetes, and others). Replace
prowler aws with the desired provider command (e.g., prowler gcp, prowler azure) and configure the corresponding credentials in the CI/CD environment.GitHub Actions
Store Secrets
Before creating the workflow, add the following secrets to the repository (under “Settings” > “Secrets and variables” > “Actions”):PROWLER_CLOUD_API_KEY— the Prowler Cloud API key- Cloud provider credentials (e.g.,
AWS_ACCESS_KEY_IDandAWS_SECRET_ACCESS_KEY, or configure OIDC-based role assumption)
Workflow: Scheduled AWS Scan
This workflow runs Prowler against an AWS account on a daily schedule and on every push to themain branch:
Replace
123456789012 with the actual AWS account ID and ProwlerScanRole with the IAM role name. For IAM role setup, refer to the AWS authentication guide.Workflow: Scan Specific Services on Pull Request
To run targeted scans on pull requests without blocking the merge pipeline, usecontinue-on-error:
GitLab CI
Store Variables
Add the following CI/CD variables in the GitLab project (under “Settings” > “CI/CD” > “Variables”):PROWLER_CLOUD_API_KEY— mark as masked and protected- Cloud provider credentials as needed
Pipeline: Scheduled AWS Scan
Add the following to.gitlab-ci.yml:
Pipeline: Multi-Provider Scan
To scan multiple cloud providers in parallel:Tips and Best Practices
When to Run Scans
- Scheduled scans (daily or weekly) provide continuous monitoring and are ideal for baseline security assessments
- On-merge scans catch configuration changes introduced by new code
- Pull request scans provide early feedback but should target specific services to keep execution times reasonable
Handling Scan Failures
By default, Prowler exits with a non-zero code when it finds failing checks. This causes the CI/CD job to fail. To prevent scan results from blocking the pipeline:- GitHub Actions: Add
continue-on-error: trueto the job - GitLab CI: Add
allow_failure: trueto the job
Ingestion failures (e.g., network issues reaching Prowler Cloud) do not affect the Prowler exit code. The scan completes normally and only a warning is emitted. See Import Findings troubleshooting for details.

