From install to first scan
Get Prowler running locally and authenticate against every provider it supports.
Install the Prowler CLI
Check your Python version, install with pipx, and confirm you are on Prowler v5.
python3 --version # >=3.9, <=3.12 pipx install prowler prowler -v # already installed? make sure you are on the latest pipx upgrade prowler
AWS authentication & role assumption
Prowler uses your AWS CLI credentials. Configure a profile or export the environment variables, then point Prowler at it. For read-only access, attach SecurityAudit and ViewOnlyAccess.
aws configure # ...or export the keys directly export AWS_ACCESS_KEY_ID="ASXXXXXXX" export AWS_SECRET_ACCESS_KEY="XXXXXXXXX" export AWS_SESSION_TOKEN="XXXXXXXXX" prowler aws -p <profile_name> # scan another account by assuming a role prowler aws -R arn:aws:iam::<account_id>:role/<role_name>
Azure: permissions and auth methods
Assign the Reader role on the subscription (Access control (IAM) → Add role assignment), then pick an auth method. Prowler scans every subscription it can list.
prowler azure --sp-env-auth # service principal prowler azure --az-cli-auth # az cli credentials prowler azure --browser-auth # interactive browser prowler azure --managed-identity-auth # managed identity
GCP authentication
Prowler uses your user account credentials by default and scans every project it is allowed to. You can also hand it a service account key file.
gcloud init # new account gcloud config set account <account> # existing account gcloud auth application-default login # or a downloaded service account key prowler gcp --credentials-file <credentials_file_path>
Kubernetes
Scan from outside the cluster (anywhere with access to the management port and admin permissions) or from inside it as a pod. Prowler uses the active context unless you name one.
prowler kubernetes prowler kubernetes --context <context_name>
Microsoft 365
Authentication goes through the MsGraph SDK. Note that the PowerShell-backed checks require service principal and user credentials (--sp-env-auth).
prowler m365 --env-auth # enterprise application prowler m365 --sp-env-auth # service principal + user prowler m365 --az-cli-auth prowler m365 --browser-auth --tenant-id "XXXXXXXX"
GitHub
Three ways in: a personal access token, an OAuth app token, or a GitHub App. Each one works as a flag or an environment variable.
prowler github --personal-access-token your_token_here export GITHUB_PERSONAL_ACCESS_TOKEN="your_token_here" prowler github prowler github --oauth-app-token your_oauth_token prowler github --github-app-id your_app_id \ --github-app-key /path/to/private-key.pem
Infrastructure as Code
Shift left: scan Terraform, CloudFormation, Kubernetes manifests and more straight from a directory — no cloud credentials needed.
prowler iac --scan-path ./my-iac-directory prowler iac --scan-path ./my-iac-directory --frameworks terraform kubernetes prowler iac --scan-path ./my-iac-directory \ --exclude-path ./my-iac-directory/test,./my-iac-directory/examples
Your first scan
Run every check for a provider (Ctrl+C stops it at any point), then narrow down to what hurts. Scope by region, project, subscription or context.
prowler aws prowler aws --status FAIL --severity critical # scope the scan prowler aws -f us-east-1 us-east-2 prowler gcp --project-ids <project_id_1> <project_id_2> prowler azure --subscription-ids <subscription_id_1> prowler kubernetes --context <context_name> # run only specific checks, or get help prowler aws -c s3_bucket_object_versioning iam_user_hardware_mfa_enabled prowler aws -h



