Retour aux mises à jour
New releaseSep 5, 2026

cloud-custodian v0.9.52.0

Moteur de règles pour la sécurité cloud, l'optimisation des coûts et la gouvernance, DSL en yaml pour des politiques permettant d'interroger, filtrer et agir sur les ressources.

Partager

Cloud Custodian (c7n)

Logo Cloud Custodian


slack CI CII Best Practices

Cloud Custodian, également connu sous le nom de c7n, est un moteur de règles pour la gestion des comptes et des ressources cloud publics. Il permet aux utilisateurs de définir des politiques pour une infrastructure cloud bien gérée, à la fois sécurisée et optimisée en termes de coûts. Il consolide les nombreux scripts ad hoc des organisations en un outil léger et flexible, avec des métriques et des rapports unifiés.

Custodian peut être utilisé pour gérer les environnements AWS, Azure et GCP en assurant une conformité en temps réel aux politiques de sécurité (comme le chiffrement et les exigences d'accès), aux politiques de balisage, et à la gestion des coûts via le nettoyage des ressources inutilisées et la gestion des ressources hors heures de travail.

Custodian prend également en charge l'exécution de politiques sur des actifs d'infrastructure en tant que code pour fournir un retour directement sur les postes de travail des développeurs ou dans les pipelines CI.

Les politiques Custodian sont écrites dans des fichiers de configuration YAML simples qui permettent aux utilisateurs de spécifier des politiques sur un type de ressource (EC2, ASG, Redshift, CosmosDB, Topic Pub/Sub) et sont construites à partir d'un vocabulaire de filtres et d'actions.

Il s'intègre aux capacités serverless natives du cloud de chaque fournisseur pour assurer une application en temps réel des politiques avec un provisionnement intégré. Il peut également être exécuté comme une simple tâche cron sur un serveur pour s'exécuter sur de grandes flottes existantes.

Cloud Custodian est un projet CNCF en phase d'incubation, dirigé par une communauté de centaines de contributeurs.

Fonctionnalités

  • Prise en charge complète des services et ressources cloud publics avec une riche bibliothèque d'actions et de filtres pour créer des politiques.
  • Exécution de politiques sur des actifs d'infrastructure en tant que code (terraform, etc.).
  • Prise en charge du filtrage arbitraire des ressources avec des conditions booléennes imbriquées.
  • Simulation de toute politique pour voir ce qu'elle ferait.
  • Provisionnement automatique des fonctions serverless et des sources d'événements (AWS CloudWatchEvents, AWS Config Rules, Azure EventGrid, GCP AuditLog & Pub/Sub, etc.)
  • Sorties de métriques natives du fournisseur cloud sur les ressources correspondant à une politique.
  • Sorties structurées dans le stockage d'objets natif du cloud des ressources correspondant à une politique.
  • Utilisation intelligente du cache pour minimiser les appels API.
  • Prise en charge multi-compte/abonnement/projet.
  • Éprouvé en production sur des environnements cloud très volumineux.

Liens

Installation rapide

Custodian est publié sur pypi sous forme de série de packages avec le préfixe c7n, et est également disponible en tant qu'image docker.

$ python3 -m venv custodian
$ source custodian/bin/activate
(custodian) $ pip install c7n

Utilisation

La première étape pour utiliser Cloud Custodian (c7n) est d'écrire un fichier YAML contenant les politiques que vous souhaitez exécuter. Chaque politique spécifie le type de ressource sur lequel la politique s'exécutera, un ensemble de filtres qui contrôlent les ressources affectées par cette politique, les actions que la politique entreprendra sur les ressources correspondantes, et un mode qui contrôle comment la politique s'exécutera.

Les meilleurs guides de démarrage sont les tutoriels spécifiques au fournisseur cloud.

En guise de rapide illustration, voici quelques exemples de politiques pour les ressources AWS.

  1. appliquera qu'aucun bucket S3 n'ait l'accès cross-compte activé.
  2. terminera toute nouvelle instance EC2 qui n'a pas de volume EBS chiffré.
  3. marquera toute instance EC2 qui n'a pas les balises "Environment", "AppId", et soit "OwnerContact" soit "DeptID" pour être arrêtée dans quatre jours.
policies:
 - name: s3-cross-account
   description: |
     Vérifie les buckets S3 avec un accès cross-compte et
     supprime l'accès cross-compte.
   resource: aws.s3
   region: us-east-1
   filters:
     - type: cross-account
   actions:
     - type: remove-statements
       statement_ids: matched

 - name: ec2-require-non-public-and-encrypted-volumes
   resource: aws.ec2
   description: |
    Provisionne une lambda et une cible d'événement CloudWatch
    qui examine toutes les nouvelles instances et termine celles avec
    des volumes non chiffrés.
   mode:
    type: cloudtrail
    role: CloudCustodian-QuickStart
    events:
      - RunInstances
   filters:
    - type: ebs
      key: Encrypted
      value: false
   actions:
    - terminate

 - name: tag-compliance
   resource: aws.ec2
   description: |
     Planifie une ressource qui ne respecte pas les politiques de conformité des balises pour être arrêtée dans quatre jours. Notez qu'une politique distincte utilisant le filtre `marked-for-op` est nécessaire pour arrêter réellement les instances après quatre jours.
   filters:
    - State.Name: running
    - "tag:Environment": absent
    - "tag:AppId": absent
    - or:
      - "tag:OwnerContact": absent
      - "tag:DeptID": absent
   actions:
    - type: mark-for-op
      op: stop
      days: 4

Vous pouvez valider, tester et exécuter Cloud Custodian avec l'exemple de politique à l'aide de ces commandes :

# Valider la configuration (notez que cela se produit par défaut lors de l'exécution)
$ custodian validate policy.yml

# Exécution à vide (dryrun) des politiques (aucune action exécutée) pour voir quelles ressources
# correspondent à chaque politique.
$ custodian run --dryrun -s out policy.yml

# Exécuter la politique
$ custodian run -s out policy.yml

Vous pouvez également exécuter Cloud Custodian via Docker :

# Télécharger l'image
$ docker pull cloudcustodian/c7n
$ mkdir output

# Exécuter la politique
#
# Cela exécutera la politique en utilisant uniquement les variables d'environnement pour l'authentification
$ docker run -it \
  -v $(pwd)/output:/home/custodian/output \
  -v $(pwd)/policy.yml:/home/custodian/policy.yml \
  --env-file <(env | grep "^AWS\|^AZURE\|^GOOGLE") \
  cloudcustodian/c7n run -v -s /home/custodian/output /home/custodian/policy.yml

Catégories