Audit du Cloud avec les Benchmarks CIS
Quand l'utiliser
- Lors de l'exécution d'audits de sécurité initiaux d'environnements cloud par rapport aux benchmarks standard de l'industrie
- Lors de la préparation aux audits SOC 2, ISO 27001 ou réglementaires qui font référence aux contrôles CIS
- Lors de l'établissement d'une base de sécurité mesurable pour de nouveaux comptes ou abonnements cloud
- Lors du suivi de l'amélioration de la conformité avec des réévaluations périodiques
- Lors de l'évaluation de la posture de sécurité d'environnements cloud acquis ou hérités
Ne pas utiliser pour la détection de menaces en temps réel (voir detecting-cloud-threats-with-guardduty), pour les tests de sécurité au niveau applicatif (voir conducting-cloud-penetration-testing), ou pour les cadres de conformité non basés sur CIS (se référer aux fichiers de compétence réglementaires spécifiques).
Prérequis
- Accès en lecture seule aux comptes cloud cibles (politique AWS SecurityAudit, rôle Azure Lecteur, rôle GCP Lecteur)
- Prowler, ScoutSuite ou outils CSPM natifs cloud installés et configurés
- Compréhension de la structure du benchmark CIS : sections, contrôles, profils (Niveau 1 et Niveau 2)
- Accès de remédiation pour implémenter les correctifs (séparé des identifiants d'audit)
Workflow
Étape 1 : Sélectionner la version appropriée du benchmark CIS
Choisissez la version correcte du benchmark pour chaque fournisseur cloud. Les versions actuelles en 2025 incluent CIS AWS Foundations Benchmark v5.0, CIS Azure Foundations Benchmark v4.0 et CIS GCP Foundations Benchmark v4.0.
Zones de couverture du benchmark CIS :
+-------------------+-------------------------+------------------------+
| Section | AWS v5.0 | Azure v4.0 |
+-------------------+-------------------------+------------------------+
| Identité & Accès | Politiques IAM, MFA, root| Azure AD, RBAC, PIM |
| Journalisation | CloudTrail, Config | Journal d'activité, Diag|
| Surveillance | Alarmes CloudWatch | Defender, Sentinel |
| Réseau | VPC, SG, NACLs | NSG, ASG, Pare-feu |
| Stockage | Chiffrement S3, accès | Chiffrement du stockage|
| Base de données | Chiffrement RDS | SQL TDE, audit |
+-------------------+-------------------------+------------------------+
Niveaux de profil CIS :
Niveau 1 : Paramètres de sécurité pratiques pouvant être implémentés sans impact
significatif sur les performances ou réduction de fonctionnalité
Niveau 2 : Paramètres de défense en profondeur pouvant réduire les fonctionnalités
ou nécessiter une planification supplémentaire pour l'implémentation
Étape 2 : Exécuter une évaluation automatisée avec Prowler
Exécutez des analyses complètes du benchmark CIS à l'aide de Prowler pour une évaluation automatisée des contrôles sur AWS, Azure et GCP.
# Évaluation AWS CIS v5.0
prowler aws \
--compliance cis_5.0_aws \
--profile audit-account \
--output-formats json-ocsf,html,csv \
--output-directory ./cis-audit-$(date +%Y%m%d)
# Évaluation Azure CIS v4.0
prowler azure \
--compliance cis_4.0_azure \
--subscription-ids "sub-id-1,sub-id-2" \
--output-formats json-ocsf,html,csv \
--output-directory ./cis-audit-azure-$(date +%Y%m%d)
# Évaluation GCP CIS v4.0
prowler gcp \
--compliance cis_4.0_gcp \
--project-ids "project-1,project-2" \
--output-formats json-ocsf,html,csv \
--output-directory ./cis-audit-gcp-$(date +%Y%m%d)
# Scan multi-compte AWS avec ScoutSuite
scout suite aws \
--profile audit-account \
--report-dir ./scout-report \
--ruleset cis-5.0 \
--force
Étape 3 : Interpréter les résultats et prioriser la remédiation
Analysez les résultats d'audit par section et par sévérité. Priorisez d'abord les contrôles de Niveau 1 car ils représentent une hygiène de sécurité fondamentale, puis traitez les contrôles de Niveau 2 pour la défense en profondeur.
# Analyser les résultats Prowler pour les contrôles échoués
cat ./cis-audit-*/prowler-output-*.json | \
jq '[.[] | select(.StatusExtended == "FAIL")] | group_by(.CheckID) |
map({control: .[0].CheckID, description: .[0].CheckTitle,
failed_resources: length, severity: .[0].Severity}) |
sort_by(-.failed_resources)'
# Générer le score de conformité par section
cat ./cis-audit-*/prowler-output-*.json | \
jq 'group_by(.Section) | map({
section: .[0].Section,
total: length,
passed: [.[] | select(.StatusExtended == "PASS")] | length,
failed: [.[] | select(.StatusExtended == "FAIL")] | length,
score: (([.[] | select(.StatusExtended == "PASS")] | length) / length * 100 | round)
})'
Étape 4 : Remédier aux contrôles critiques et élevés
Corrigez les contrôles échoués en commençant par les éléments à plus fort impact. Utilisez la remédiation AWS Config, Azure Policy ou Terraform pour appliquer les correctifs systématiquement.
# CIS 1.4 : S'assurer qu'aucune clé d'accès root n'existe
aws iam list-access-keys --user-name root
# Si des clés existent, les supprimer
aws iam delete-access-key --user-name root --access-key-id AKIAEXAMPLE
# CIS 2.1.1 : S'assurer que le chiffrement par défaut des buckets S3 est activé
for bucket in $(aws s3api list-buckets --query 'Buckets[*].Name' --output text); do
aws s3api put-bucket-encryption --bucket "$bucket" \
--server-side-encryption-configuration '{
"Rules": [{"ApplyServerSideEncryptionByDefault": {"SSEAlgorithm": "AES256"}}]
}' 2>/dev/null && echo "Chiffré : $bucket" || echo "ÉCHEC : $bucket"
done
# CIS 3.1 : S'assurer que CloudTrail est activé dans toutes les régions
aws cloudtrail create-trail \
--name organisation-trail \
--s3-bucket-name cloudtrail-logs-bucket \
--is-multi-region-trail \
--enable-log-file-validation \
--kms-key-id arn:aws:kms:us-east-1:123456789012:key/key-id
aws cloudtrail start-logging --name organisation-trail
# CIS 4.x : Configurer les filtres de métriques CloudWatch et les alarmes
aws logs put-metric-filter \
--log-group-name CloudTrail/DefaultLogGroup \
--filter-name AppelsAPIUnautorisés \
--filter-pattern '{ ($.errorCode = "*UnauthorizedAccess*") || ($.errorCode = "AccessDenied*") }' \
--metric-transformations metricName=UnauthorizedAPICalls,metricNamespace=CISBenchmark,metricValue=1
Étape 5 : Mettre en place une surveillance continue de la conformité
Déployez une surveillance automatisée de la conformité pour détecter les dérives de configuration entre les audits périodiques. Utilisez AWS Security Hub, Azure Policy ou GCP Security Command Center.
# AWS : Activer CIS v5.0 dans Security Hub
aws securityhub batch-enable-standards \
--standards-subscription-requests '[
{"StandardsArn": "arn:aws:securityhub:::ruleset/cis-aws-foundations-benchmark/v/5.0.0"}
]'
# Azure : Assigner l'initiative de politique CIS benchmark
az policy assignment create \
--name cis-azure-benchmark \
--scope "/subscriptions/<id-abonnement>" \
--policy-set-definition "1a5bb27d-173f-493e-9568-eb56638dbd0e" \
--params '{"effect": {"value": "AuditIfNotExists"}}'
# Planifier des évaluations périodiques avec Prowler
# Exécuter chaque semaine via cron ou pipeline CI/CD
0 2 * * 1 prowler aws --compliance cis_5.0_aws --output-formats csv --output-directory /opt/audits/weekly-$(date +\%Y\%m\%d)
Concepts clés
| Terme | Définition |
|---|---|
| Benchmark CIS | Lignes directrices prescriptives de configuration de sécurité développées par le Center for Internet Security par consensus communautaire |
| Profil Niveau 1 | Contrôles de sécurité pratiques implémentables sans impact significatif sur les performances ou les fonctionnalités, représentant l'hygiène de sécurité |
| Profil Niveau 2 | Contrôles de défense en profondeur pouvant restreindre les fonctionnalités et nécessitant une planification minutieuse avant implémentation |
| Foundations Benchmark | Benchmark CIS spécifiquement pour les fournisseurs cloud couvrant la sécurité IAM, la journalisation, la surveillance, le réseau et le stockage |
| ID de contrôle | Identifiant numérique unique pour chaque recommandation CIS (par exemple, 1.4 pour les vérifications de clés d'accès root, 2.1.1 pour le chiffrement S3) |
| Score de conformité | Pourcentage de contrôles CIS dans un état de réussite, suivi dans le temps pour mesurer l'amélioration de la posture de sécurité |
| Évaluation automatisée | Évaluation pilotée par des outils des contrôles CIS utilisant les API des fournisseurs cloud pour vérifier les configurations des ressources par rapport aux exigences du benchmark |
| Runbook de remédiation | Procédure documentée étape par étape pour corriger un contrôle CIS échoué spécifique, incluant des pré-vérifications et une validation |
Outils & Systèmes
- Prowler : Outil cloud open-source de sécurité effectuant plus de 300 vérifications, y compris les évaluations de benchmark CIS pour AWS, Azure et GCP
- ScoutSuite : Outil d'audit de sécurité multi-cloud avec des ensembles de règles de benchmark CIS générant des rapports HTML
- AWS Security Hub : Service natif AWS prenant en charge le benchmark CIS AWS Foundations en tant que standard de sécurité
- Azure Policy : Service de gouvernance avec des initiatives de politique de benchmark CIS intégrées pour la surveillance automatisée de la conformité
- GCP Security Command Center : Service natif GCP évaluant les configurations par rapport au benchmark CIS GCP Foundations
Scénarios courants
Scénario : Évaluation CIS pré-audit pour la certification SOC 2
Contexte : Une entreprise SaaS poursuivant la certification SOC 2 Type II doit démontrer des contrôles de sécurité cloud alignés sur les benchmarks CIS. L'auditeur exige des preuves de surveillance continue de la conformité sur 45 comptes AWS.
Approche :
- Exécuter l'évaluation Prowler CIS v5.0 sur les 45 comptes pour établir le score de conformité de base
- Exporter les résultats au format CSV et catégoriser les échecs par section (IAM, Journalisation, Surveillance, Réseau)
- Mapper chaque contrôle CIS aux critères de services SOC 2 pertinents (CC6.1, CC6.6, CC7.1, etc.)
- Remédier à tous les échecs de contrôle de Niveau 1 dans les 30 jours et de Niveau 2 dans les 60 jours
- Activer CIS v5.0 dans AWS Security Hub pour une surveillance continue et une détection automatisée des dérives
- Générer des rapports de conformité hebdomadaires montrant la trajectoire d'amélioration pour l'auditeur
- Documenter les exceptions pour les contrôles intentionnellement non implémentés avec une justification d'acceptation des risques
Pièges : Remédier aux contrôles sans les tester d'abord dans un environnement de staging peut casser les charges de travail de production. Ignorer complètement les contrôles de Niveau 2 affaiblit le récit d'audit même s'ils ne sont pas strictement requis.
Format de sortie
Rapport d'audit du benchmark CIS
==================================
Fournisseur Cloud : AWS
Version du Benchmark : CIS AWS Foundations Benchmark v5.0
Comptes audités : 45
Date d'audit : 2025-02-23
Outil : Prowler v4.3.0
SCORE DE CONFORMITÉ GLOBAL : 74%
CONFORMITÉ PAR SECTION :
1. Gestion des identités et des accès : 68% (41/60 contrôles réussis)
2. Stockage : 82% (28/34 contrôles réussis)
3. Journalisation : 91% (20/22 contrôles réussis)
4. Surveillance : 55% (18/33 contrôles réussis)
5. Réseau : 78% (32/41 contrôles réussis)
PRINCIPAUX CONTRÔLES ÉCHOUÉS (par comptes concernés) :
[1.4] Le compte root a des clés d'accès actives - 3/45 comptes
[1.5] MFA non activé pour le compte root - 2/45 comptes
[2.1.1] Chiffrement par défaut S3 non activé - 12/45 comptes
[3.1] CloudTrail non multi-région - 8/45 comptes
[4.3] Aucune alarme pour l'utilisation du compte root - 28/45 comptes
[5.1] Les journaux de flux VPC ne sont pas activés - 15/45 comptes
[5.4] Les groupes de sécurité autorisent le trafic entrant 0.0.0.0/0 - 22/45 comptes
PRIORITÉ DE REMÉDIATION :
Critique (Corriger sous 7 jours) : Clés d'accès root, MFA root manquant
Élevé (Corriger sous 30 jours) : Chiffrement S3, CloudTrail, journaux de flux VPC
Moyen (Corriger sous 60 jours) : Alarmes CloudWatch, restrictions des groupes de sécurité
Faible (Corriger sous 90 jours) : Contrôles de Niveau 2, éléments informatifs