
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.
Cloud Custodian (c7n)
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
- Page d'accueil
- Documentation
- Feuille de route du projet
- Installation pour les développeurs
- Présentations
- Chaîne YouTube
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.
- appliquera qu'aucun bucket S3 n'ait l'accès cross-compte activé.
- terminera toute nouvelle instance EC2 qui n'a pas de volume EBS chiffré.
- 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
# Exécuter la politique (en utilisant les identifiants générés par AWS via STS)
#
# NOTE : Nous montons les répertoires ``.aws/credentials`` et ``.aws/config`` dans
# le conteneur Docker pour prendre en charge l'authentification à AWS en utilisant les mêmes
# identifiants que ceux disponibles pour l'utilisateur local en cas d'authentification avec STS.
$ docker run -it \
-v $(pwd)/output:/home/custodian/output \
-v $(pwd)/policy.yml:/home/custodian/policy.yml \
-v $(cd ~ && pwd)/.aws/credentials:/home/custodian/.aws/credentials \
-v $(cd ~ && pwd)/.aws/config:/home/custodian/.aws/config \
--env-file <(env | grep "^AWS") \
cloudcustodian/c7n run -v -s /home/custodian/output /home/custodian/policy.yml
L'outil custodian cask est un binaire Go qui fournit une interface transparente à Docker, miroir de la CLI custodian classique, mais gère automatiquement le montage des volumes.
Consultez la documentation pour des informations supplémentaires, ou contactez-nous sur Gitter.
Aide spécifique au fournisseur cloud
Pour des instructions spécifiques pour AWS, Azure et GCP, consultez la page de démarrage correspondante.
S'impliquer
- GitHub - (Cette page)
- Slack - Chat en temps réel si vous cherchez de l'aide ou voulez contribuer à Custodian !
- Gitter - (Ancien chat en temps réel, nous migrons probablement)
- Linen.dev - Suivez nos discussions sur Linen
- Liste de diffusion - Notre liste de diffusion du projet, abonnez-vous ici pour des annonces importantes du projet, n'hésitez pas à poser des questions
- Reddit - Notre subreddit
- StackOverflow - Site Q&A pour les développeurs, nous surveillons le tag
cloudcustodian - Chaîne YouTube - Nous ajoutons des tutoriels et d'autres informations utiles, ainsi que des vidéos de réunions
Ressources communautaires
Nous avons une réunion communautaire régulière ouverte à tous les utilisateurs et développeurs, quel que soit leur niveau de compétence. Rejoindre la liste de diffusion vous enverra automatiquement une invitation à la réunion. Voir les notes ci-dessous pour des informations techniques supplémentaires sur la participation à la réunion.
- Vidéos des réunions communautaires
- Archives des notes de réunion communautaire
- Événements communautaires à venir
- Rapport annuel Cloud Custodian 2021 - Bilan de santé annuel fourni à la CNCF décrivant la santé du projet
- Audit de sécurité tiers par Ada Logics
Outils supplémentaires
Le projet Custodian développe et maintient également une suite d'outils supplémentaires ici https://github.com/cloud-custodian/cloud-custodian/tree/main/tools :
-
Org: Exécution de politiques multi-comptes.
-
ShiftLeft: Shift Left ~ exécute des politiques sur des actifs d'infrastructure en tant que code comme terraform.
-
PolicyStream: Historique Git sous forme de flux de changements de politiques logiques.
-
Salactus: Analyse à grande échelle des buckets S3.
-
Mailer: Implémentation de référence pour l'envoi de messages aux utilisateurs pour les notifier.
-
Trail Creator: Balisage rétroactif des créateurs de ressources à partir de CloudTrail.
-
TrailDB: Indexation de CloudTrail et génération de séries temporelles pour les tableaux de bord.
-
LogExporter: Exportation des logs CloudWatch vers S3.
-
Cask: Exécution facile de custodian via Docker.
-
Guardian: Configuration automatisée de Guard Duty multi-comptes.
-
Omni SSM: Automatisation EC2 Systems Manager.
-
Mugc: Utilitaire pour nettoyer les politiques Lambda Custodian déployées dans un environnement AWS.
Contribuer
Voir https://cloudcustodian.io/docs/contribute.html
Sécurité
Si vous avez trouvé un problème lié à la sécurité, une vulnérabilité ou une vulnérabilité potentielle dans Cloud Custodian, veuillez informer l'équipe de sécurité de Custodian avec les détails de la vulnérabilité. Nous enverrons un email de confirmation pour accuser réception de votre rapport, et nous enverrons un email supplémentaire lorsque nous aurons identifié le problème de manière positive ou négative.
Code de conduite
Ce projet adhère au Code de conduite de la CNCF
En participant, vous vous engagez à respecter ce code.