Prowler scanne vos environnements cloud et identifie les écarts de sécurité en quelques minutes. Avec 570 contrôles AWS, 165 Azure, 99 GCP et 83 Kubernetes (version 5.17), il vérifie automatiquement la conformité aux standards CIS, NIST, PCI-DSS, SOC2 et bien d'autres.
Ce que vous allez apprendre
Section intitulée « Ce que vous allez apprendre »- Scanner un environnement cloud : lancer un audit AWS, Azure, GCP ou Kubernetes
- Vérifier la conformité : utiliser les frameworks CIS, NIST, PCI-DSS
- Analyser les résultats : comprendre et exploiter les rapports générés
- Automatiser : intégrer Prowler dans vos pipelines CI/CD
Qu'est-ce que Prowler ?
Section intitulée « Qu'est-ce que Prowler ? »Prowler est un outil open source de CSPM (Cloud Security Posture Management) qui audite automatiquement la sécurité de vos environnements cloud. Développé initialement pour AWS, il supporte maintenant plusieurs providers.
Providers supportés
Section intitulée « Providers supportés »La colonne qui compte au démarrage est Checks : c'est le volume de contrôles que Prowler exécute par défaut sur ce provider, donc l'ordre de grandeur du temps de scan et du bruit à trier. AWS est le plus mature avec 570 contrôles, les autres providers montent en couverture à chaque version. Les valeurs ci-dessous correspondent à Prowler 5.17 ; elles augmentent à chaque release, vérifiez avec prowler <provider> --list-checks.
| Provider | Checks | Frameworks | Cas d'usage |
|---|---|---|---|
| AWS | 570 | 40 | Comptes AWS, organisations |
| Azure | 165 | 16 | Subscriptions Azure |
| GCP | 99 | 14 | Projets Google Cloud |
| Kubernetes | 83 | 7 | Clusters K8s (minikube, EKS, AKS, GKE) |
| GitHub | 20 | - | Repos, organisations |
| M365 | 70 | - | Microsoft 365, Exchange |
Frameworks de conformité
Section intitulée « Frameworks de conformité »Prowler vérifie la conformité à de nombreux standards :
| Framework | Description | Providers |
|---|---|---|
| CIS Benchmarks | Bonnes pratiques de sécurité par le CIS | AWS, Azure, GCP, K8s |
| NIST 800-53 | Standard fédéral américain (rev. 4 et 5) | AWS, Azure, GCP |
| PCI-DSS | Sécurité des données de paiement (v3.2.1 et v4.0) | AWS, Azure, GCP, K8s |
| SOC2 | Contrôles pour les fournisseurs de services | AWS, Azure, GCP |
| HIPAA | Protection des données de santé | AWS, GCP |
| GDPR | Règlement européen sur les données | AWS |
| ISO 27001 | Management de la sécurité (2013 et 2022) | AWS, Azure, GCP, K8s |
| MITRE ATT&CK | Mapping des techniques d'attaque | AWS, Azure, GCP |
Installation
Section intitulée « Installation »Prowler s'installe via pip (Python ≥ 3.9) ou Docker.
# Installation avec pipx (isolé)pipx install prowler
# Ou avec pippip install prowler# Image stabledocker pull toniblyx/prowler:stable
# Exécuter un scan AWSdocker run -v ~/.aws:/root/.aws toniblyx/prowler:stable awsgit clone https://github.com/prowler-cloud/prowlercd prowlerpip install .Vérifiez l'installation :
prowler -vProwler 5.17.0Scanner AWS
Section intitulée « Scanner AWS »Prérequis
Section intitulée « Prérequis »Prowler utilise vos credentials AWS existants (profil configuré, variables d'environnement ou rôle IAM).
# Vérifier vos credentialsaws sts get-caller-identityScan complet
Section intitulée « Scan complet »prowler awsProwler exécute tous les 570 checks sur toutes les régions de votre compte.
Scan ciblé
Section intitulée « Scan ciblé »Un scan complet sur toutes les régions prend plusieurs minutes et remonte des centaines de résultats. En phase d'investigation, restreignez le périmètre pour itérer vite : par région avec -f, par service avec --services, ou par check précis avec --checks. Les trois onglets ci-dessous couvrent ces cas ; chaque option accepte aussi sa variante d'exclusion pour retirer un service ou un check bruyant du scan.
# Scanner uniquement eu-west-1 et eu-west-3prowler aws -f eu-west-1 eu-west-3# Scanner S3 et IAM uniquementprowler aws --services s3 iam
# Exclure certains servicesprowler aws --excluded-services ec2 rds# Exécuter des checks spécifiquesprowler aws --checks s3_bucket_public_access iam_root_mfa_enabled
# Exclure des checksprowler aws --excluded-checks s3_bucket_versioning_enabledScan de conformité
Section intitulée « Scan de conformité »Pour vérifier la conformité à un framework spécifique :
# CIS AWS Benchmark 2.0prowler aws --compliance cis_2.0_aws
# NIST 800-53 Revision 5prowler aws --compliance nist_800_53_revision_5_aws
# PCI-DSS v4.0prowler aws --compliance pci_4.0_awsExemple de sortie
Section intitulée « Exemple de sortie »À la fin du scan, deux blocs comptent. La ligne Overview Results donne le taux global (Failed / Passed / Muted) : c'est votre indicateur de posture. Le tableau Scan Results ventile ensuite les échecs par service et par sévérité ; les colonnes de sévérité ne comptent que les FAIL. Attaquez d'abord la colonne Critical, puis High : ce sont les écarts exploitables à court terme.
_ _ __ _ __ _____ _| | ___ _ __| '_ \| '__/ _ \ \ /\ / / |/ _ \ '__|| |_) | | | (_) \ V V /| | __/ || .__/|_| \___/ \_/\_/ |_|\___|_|v5.17.0|_| the handy multi-cloud security tool
Date: 2026-01-23 16:48:00
Executing 570 checks, please wait...-> Scan completed! |▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉| 570/570 [100%] in 2m 30s
Overview Results:╭────────────────────┬────────────────────┬────────────────╮│ 15.2% (87) Failed │ 84.8% (483) Passed │ 0.0% (0) Muted │╰────────────────────┴────────────────────┴────────────────╯
Account 123456789012 Scan Results (severity columns are for fails only):╭──────────┬───────────┬───────────┬──────────┬────────┬──────────┬───────┬─────────╮│ Provider │ Service │ Status │ Critical │ High │ Medium │ Low │ Muted │├──────────┼───────────┼───────────┼──────────┼────────┼──────────┼───────┼─────────┤│ aws │ iam │ FAIL (12) │ 2 │ 5 │ 4 │ 1 │ 0 ││ aws │ s3 │ FAIL (8) │ 1 │ 3 │ 4 │ 0 │ 0 ││ aws │ ec2 │ FAIL (15) │ 0 │ 8 │ 7 │ 0 │ 0 │╰──────────┴───────────┴───────────┴──────────┴────────┴──────────┴───────┴─────────╯Scanner Kubernetes
Section intitulée « Scanner Kubernetes »Prowler peut auditer n'importe quel cluster Kubernetes : minikube, kind, EKS, AKS, GKE...
Prérequis
Section intitulée « Prérequis »Prowler utilise votre kubeconfig par défaut (~/.kube/config).
# Vérifier la connexion au clusterkubectl cluster-infoScan complet
Section intitulée « Scan complet »La commande sans argument lance les 83 contrôles Kubernetes sur tous les namespaces accessibles via votre kubeconfig. Sur un cluster managé (EKS, AKS, GKE), les contrôles du plan de contrôle (apiserver, etcd, scheduler) remontent souvent en MANUAL car le fournisseur gère cette couche : c'est normal, ils ne sont pas exploitables de votre côté.
prowler kubernetesScan de conformité CIS
Section intitulée « Scan de conformité CIS »Plutôt que les 83 contrôles bruts, cadrez le scan sur le CIS Kubernetes Benchmark : Prowler ne garde que les checks rattachés au référentiel et présente le résultat par exigence, ce qui produit un rapport directement présentable en audit.
# CIS Kubernetes Benchmark 1.12prowler kubernetes --compliance cis_1.12_kubernetesExemple de sortie
Section intitulée « Exemple de sortie »Sur Kubernetes, regardez surtout le service rbac : les échecs y révèlent des rôles trop permissifs (cluster-admin distribué trop largement, ServiceAccount avec des droits d'écriture globaux). C'est le premier vecteur d'escalade de privilèges dans un cluster, avant même les réglages de l'apiserver.
_ _ __ _ __ _____ _| | ___ _ __| '_ \| '__/ _ \ \ /\ / / |/ _ \ '__|| |_) | | | (_) \ V V /| | __/ || .__/|_| \___/ \_/\_/ |_|\___|_|v5.17.0|_| the handy multi-cloud security tool
Date: 2026-01-23 16:49:48
-> Using the Kubernetes credentials below: · Kubernetes Cluster: minikube · User: minikube · Namespaces: default, kube-node-lease, kube-public, kube-system
Executing 81 checks, please wait...-> Scan completed! |▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉| 81/81 [100%] in 0.3s
Overview Results:╭───────────────────┬─────────────────────┬────────────────╮│ 9.46% (47) Failed │ 87.73% (436) Passed │ 0.0% (0) Muted │╰───────────────────┴─────────────────────┴────────────────╯
Context minikube Scan Results (severity columns are for fails only):╭────────────┬───────────────────┬───────────┬──────────┬────────┬──────────┬───────╮│ Provider │ Service │ Status │ Critical │ High │ Medium │ Low │├────────────┼───────────────────┼───────────┼──────────┼────────┼──────────┼───────┤│ kubernetes │ apiserver │ FAIL (12) │ 0 │ 5 │ 7 │ 0 ││ kubernetes │ controllermanager │ FAIL (1) │ 0 │ 0 │ 1 │ 0 ││ kubernetes │ rbac │ FAIL (19) │ 0 │ 19 │ 0 │ 0 │╰────────────┴───────────────────┴───────────┴──────────┴────────┴──────────┴───────╯Scanner Azure et GCP
Section intitulée « Scanner Azure et GCP »Le squelette de commande reste identique, seule l'authentification change de provider à provider. Sur Azure, Prowler s'appuie sur une session az login existante (--az-cli-auth) ou sur un Service Principal via variables d'environnement (--sp-env-auth). Sur GCP, il réutilise le jeton gcloud auth par défaut, ou un fichier de clé de Service Account. Choisissez le mode non interactif (Service Principal, Service Account) dès que le scan tourne dans une pipeline.
# Avec Azure CLI (az login)prowler azure --az-cli-auth
# Avec Service Principalprowler azure --sp-env-auth
# Subscriptions spécifiquesprowler azure --az-cli-auth --subscription-ids sub-id-1 sub-id-2# Avec compte utilisateur (gcloud auth)prowler gcp
# Avec Service Accountprowler gcp --credentials-file /path/to/sa-key.json
# Projets spécifiquesprowler gcp --project-ids project-1 project-2Formats de sortie
Section intitulée « Formats de sortie »Par défaut, Prowler génère des rapports CSV, JSON-OCSF et HTML.
# Spécifier les formatsprowler aws -M csv json-ocsf html
# Avec JSON-ASFF (pour AWS Security Hub)prowler aws -M json-asff
# Dossier de sortie personnaliséprowler aws -o /path/to/reports/Rapport HTML
Section intitulée « Rapport HTML »Le rapport HTML est interactif et facilement partageable :
| Section | Contenu |
|---|---|
| Overview | Résumé graphique des résultats |
| Findings | Liste détaillée par sévérité |
| Resources | Ressources affectées |
| Remediation | Recommandations de correction |
Dashboard local
Section intitulée « Dashboard local »Prowler inclut un dashboard local pour visualiser les résultats :
prowler dashboardOuvre un dashboard web sur http://localhost:8050 avec vos scans précédents.
Intégration CI/CD
Section intitulée « Intégration CI/CD »GitHub Actions
Section intitulée « GitHub Actions »L'action officielle est publiée depuis le dépôt principal prowler-cloud/prowler (à partir de la version 5.25), pas depuis un dépôt -action séparé. Les paramètres clés sont provider, output-formats (séparés par des espaces, pas des virgules), flags pour tout argument CLI supplémentaire comme --compliance, et upload-sarif pour remonter les résultats dans l'onglet Security > Code scanning du dépôt. Le workflow ci-dessous applique le moindre privilège : permissions: {} global, puis les seules permissions nécessaires au job.
name: Prowler Security Scan
on: schedule: - cron: '0 6 * * *' # Tous les jours à 6h workflow_dispatch:
permissions: {}
jobs: prowler: runs-on: ubuntu-latest permissions: contents: read security-events: write # requis par upload-sarif steps: - name: Configure AWS credentials uses: aws-actions/configure-aws-credentials@7474bc4690e29a8392af63c5b98e7449536d5c3a # v4 with: aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} aws-region: eu-west-1
- name: Run Prowler uses: prowler-cloud/prowler@9b0c4a0073daa877e6da1164cff0c69ff82ab465 # 5.35.0 with: provider: aws output-formats: sarif json-ocsf upload-sarif: true flags: --compliance cis_2.0_aws
- name: Upload results uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4 with: name: prowler-report path: output/GitLab CI
Section intitulée « GitLab CI »prowler-scan: image: toniblyx/prowler:5.35.0 stage: security script: - prowler aws --compliance cis_2.0_aws -M json html artifacts: paths: - output/ expire_in: 30 days rules: - if: $CI_PIPELINE_SOURCE == "schedule"Dépannage
Section intitulée « Dépannage »Problèmes courants
Section intitulée « Problèmes courants »La plupart des blocages au premier scan viennent des credentials ou des permissions, pas de Prowler lui-même. Le tableau relie chaque message d'erreur à sa cause la plus fréquente ; commencez par vérifier l'identité active (aws sts get-caller-identity) avant de suspecter un bug de l'outil.
| Symptôme | Cause probable | Solution |
|---|---|---|
NoCredentialProviders | Pas de credentials AWS | Configurez aws configure ou les variables d'environnement |
AccessDenied sur certains checks | Permissions insuffisantes | Ajoutez la policy SecurityAudit |
| Scan très lent | Toutes régions scannées | Limitez avec -f eu-west-1 |
Error: context deadline exceeded | Timeout Kubernetes | Vérifiez la connectivité au cluster |
Commandes de diagnostic
Section intitulée « Commandes de diagnostic »Avant de relancer un scan complet qui échoue, isolez la couche fautive avec ces commandes. Elles répondent chacune à une question précise : les credentials sont-ils valides, le cluster est-il joignable, le check ciblé existe-t-il bien sous ce nom. Un --list-checks filtré évite aussi les fautes de frappe dans les identifiants passés à --checks.
# Vérifier les credentials AWSaws sts get-caller-identity
# Vérifier la connexion Kuberneteskubectl auth can-i list pods --all-namespaces
# Lister les checks disponiblesprowler aws --list-checks | grep s3
# Lister les services scannablesprowler aws --list-servicesBonnes pratiques
Section intitulée « Bonnes pratiques »Sécurité
Section intitulée « Sécurité »Prowler ne lit que votre infrastructure, mais ses credentials et ses rapports deviennent eux-mêmes une cible : un rôle trop large ou un rapport HTML laissé en clair renseigne un attaquant sur vos failles. Ces trois réflexes limitent l'exposition.
- Principe du moindre privilège : créez un rôle IAM dédié avec uniquement les permissions de lecture nécessaires
- Pas de credentials en clair : utilisez des rôles IAM, des Service Accounts ou des variables d'environnement
- Chiffrez les rapports : les résultats contiennent des informations sensibles sur votre infrastructure
Organisation
Section intitulée « Organisation »Un premier scan remonte facilement des dizaines d'écarts : sans méthode, la liste décourage plus qu'elle n'aide. L'enjeu est de transformer ce bruit en file de travail priorisée et de suivre sa réduction dans le temps.
- Scans réguliers : planifiez des scans quotidiens ou hebdomadaires
- Baseline : établissez une baseline et suivez l'évolution dans le temps
- Priorisation : traitez d'abord les findings Critical et High
- Faux positifs : déclarez-les dans un fichier de mutelist passé avec
--mutelist-file(option-w), plutôt que de les subir à chaque scan
Performance
Section intitulée « Performance »Sur un grand compte multi-régions, le temps de scan grimpe vite. Deux leviers le maîtrisent : réduire le périmètre aux régions réellement utilisées, et laisser Prowler exploiter sa parallélisation intégrée sans la brider.
- Ciblez les régions : scannez uniquement les régions utilisées avec
-f - Parallélisation : Prowler parallélise automatiquement les checks
- Ciblez les services : sur une investigation,
--serviceslimite le scan aux services concernés
À retenir
Section intitulée « À retenir »- Prowler scanne 10+ providers cloud avec des centaines de contrôles de sécurité prêts à l'emploi
- 40+ frameworks de conformité : CIS, NIST, PCI-DSS, SOC2, HIPAA, GDPR, ISO 27001...
- Installation simple :
pip install prowleret c'est prêt, utilise vos credentials existants - Commande de base :
prowler awspour un scan complet,--compliance cis_2.0_awspour un framework spécifique - Rapports exploitables : CSV, JSON, HTML avec recommandations de remédiation
- Kubernetes aussi : auditez vos clusters avec les benchmarks CIS Kubernetes
- CI/CD ready : GitHub Actions, GitLab CI avec l'image Docker officielle
Prochaines étapes
Section intitulée « Prochaines étapes »Ressources
Section intitulée « Ressources »- Site officiel : prowler.com
- Documentation : docs.prowler.com
- GitHub : github.com/prowler-cloud/prowler
- Prowler Hub : hub.prowler.com - Catalogue des checks et frameworks
Questions fréquentes
Section intitulée « Questions fréquentes »Les questions ci-dessous reprennent les points qui reviennent le plus souvent au moment d'adopter Prowler : périmètre réel de l'outil, différence avec un scanner de vulnérabilités, et coût d'un scan sur un gros compte.
Définition
Prowler est un outil open source de CSPM (Cloud Security Posture Management) qui audite automatiquement la sécurité de vos environnements cloud.Fonctionnalités principales
| Fonctionnalité | Description |
|---|---|
| Multi-cloud | AWS, Azure, GCP, Kubernetes |
| 570+ checks AWS | Contrôles de sécurité prédéfinis |
| 40+ frameworks | CIS, NIST, PCI-DSS, SOC2, HIPAA... |
| Rapports | CSV, JSON, HTML, dashboard |
Exemple d'utilisation
# Scanner AWS avec conformité CIS 2.0
prowler aws --compliance cis_2.0_aws
# Scanner Kubernetes
prowler kubernetes
Comparaison
| Critère | Prowler | Trivy |
|---|---|---|
| Focus | Posture cloud (CSPM) | Vulnérabilités (CVE) |
| Cible | Configuration AWS/Azure/GCP/K8s | Images, IaC, SBOM, secrets |
| Standards | CIS, NIST, PCI-DSS, SOC2 | CVE databases |
| Question | "Est-ce bien configuré ?" | "Y a-t-il des failles connues ?" |
Quand utiliser chacun ?
- Prowler : Vérifier que votre S3 n'est pas public, que MFA est activé, que les logs sont activés
- Trivy : Détecter une CVE critique dans votre image nginx ou une faille dans votre Terraform
Complémentaires
Les deux outils sont complémentaires dans une stratégie DevSecOps :# Pipeline CI/CD
trivy image mon-app:latest # Vulnérabilités image
prowler aws # Configuration cloud
Installation pip (recommandé)
# Avec pipx (isolé)
pipx install prowler
# Ou avec pip
pip install prowler
Installation Docker
docker pull toniblyx/prowler:stable
# Exécuter un scan
docker run -v ~/.aws:/root/.aws toniblyx/prowler:stable aws
Prérequis
| Méthode | Prérequis |
|---|---|
| pip | Python ≥ 3.9, ≤ 3.12 |
| Docker | Docker installé |
| AWS | Credentials configurés |
Vérification
prowler -v
# Prowler 5.17.0
Scan complet
prowler aws
Exécute les 570 checks sur toutes les régions.Scan ciblé
# Par région
prowler aws -f eu-west-1 eu-west-3
# Par service
prowler aws --services s3 iam ec2
# Par check
prowler aws --checks s3_bucket_public_access
Scan de conformité
# CIS AWS 2.0
prowler aws --compliance cis_2.0_aws
# NIST 800-53
prowler aws --compliance nist_800_53_revision_5_aws
# PCI-DSS v4.0
prowler aws --compliance pci_4.0_aws
Lister les options
prowler aws --list-compliance # 40 frameworks
prowler aws --list-services # 83 services
prowler aws --list-checks # 570 checks
Scan complet
prowler kubernetes
Utilise automatiquement ~/.kube/config.Scan de conformité CIS
prowler kubernetes --compliance cis_1.12_kubernetes
Options disponibles
# Kubeconfig personnalisé
prowler kubernetes --kubeconfig-file /path/to/config
# Namespaces spécifiques
prowler kubernetes --namespaces production staging
# Contexte spécifique
prowler kubernetes --context my-cluster
Frameworks Kubernetes
| Framework | Description |
|---|---|
cis_1.12_kubernetes |
CIS Benchmark 1.12 |
cis_1.11_kubernetes |
CIS Benchmark 1.11 |
pci_4.0_kubernetes |
PCI-DSS v4.0 |
iso27001_2022_kubernetes |
ISO 27001:2022 |
Frameworks par provider
| Provider | Nombre | Exemples |
|---|---|---|
| AWS | 40 | CIS 2.0-5.0, NIST, PCI-DSS, SOC2, HIPAA |
| Azure | 16 | CIS 2.0-5.0, ISO 27001, PCI-DSS |
| GCP | 14 | CIS 2.0-4.0, HIPAA, SOC2 |
| Kubernetes | 7 | CIS 1.8-1.12, PCI-DSS, ISO 27001 |
Frameworks principaux
- CIS Benchmarks : Bonnes pratiques de sécurité
- NIST 800-53 : Standard fédéral américain (rev. 4 et 5)
- PCI-DSS : Sécurité des données de paiement
- SOC2 : Contrôles pour fournisseurs de services
- HIPAA : Protection des données de santé
- GDPR : Règlement européen sur les données
- ISO 27001 : Management de la sécurité
- MITRE ATT&CK : Mapping des techniques d'attaque
Lister les frameworks
prowler aws --list-compliance
prowler kubernetes --list-compliance
GitHub Actions
name: Prowler Security Scan
on:
schedule:
- cron: '0 6 * * *'
jobs:
prowler:
runs-on: ubuntu-latest
steps:
- uses: aws-actions/configure-aws-credentials@v4
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: eu-west-1
- uses: prowler-cloud/prowler-action@v2
with:
provider: aws
compliance: cis_2.0_aws
- uses: actions/upload-artifact@v4
with:
name: prowler-report
path: output/
GitLab CI
prowler-scan:
image: toniblyx/prowler:stable
script:
- prowler aws --compliance cis_2.0_aws -M json html
artifacts:
paths:
- output/
Policy recommandée
La policy SecurityAudit managée par AWS couvre la majorité des besoins :{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"arn:aws:iam::aws:policy/SecurityAudit"
]
}
]
}
Permissions supplémentaires
Certains checks nécessitent des permissions additionnelles :| Service | Permission |
|---|---|
| Support | support:Describe* |
| Account | account:Get* |
| Billing | aws-portal:View* |
Vérifier vos permissions
# Identité actuelle
aws sts get-caller-identity
# Tester un check spécifique
prowler aws --checks iam_root_mfa_enabled