Torna agli aggiornamenti
New releaseSep 5, 2026

cloud-custodian v0.9.52.0

Motore di regole per sicurezza cloud, ottimizzazione dei costi e governance, DSL in YAML per policy per interrogare, filtrare e agire sulle risorse

Condividi

Cloud Custodian (c7n)

Cloud Custodian Logo


slack CI CII Best Practices

Cloud Custodian, noto anche come c7n, è un motore di regole per la gestione di account e risorse cloud pubbliche. Consente agli utenti di definire policy per un'infrastruttura cloud ben gestita, sicura e ottimizzata in termini di costi. Unifica i numerosi script ad hoc delle organizzazioni in uno strumento leggero e flessibile, con metriche e reportistica unificati.

Custodian può essere utilizzato per gestire ambienti AWS, Azure e GCP, garantendo la conformità in tempo reale a policy di sicurezza (come crittografia e requisiti di accesso), policy di tagging e gestione dei costi tramite la raccolta di risorse inutilizzate e la gestione delle risorse al di fuori degli orari di lavoro.

Custodian supporta anche l'esecuzione di policy su asset infrastrutturali come codice, fornendo feedback direttamente sulle workstation degli sviluppatori o all'interno delle pipeline CI.

Le policy di Custodian sono scritte in semplici file di configurazione YAML che consentono agli utenti di specificare policy su un tipo di risorsa (EC2, ASG, Redshift, CosmosDB, argomento PubSub) e sono costruite a partire da un vocabolario di filtri e azioni.

Si integra con le capacità serverless native del cloud di ogni provider per garantire l'applicazione in tempo reale delle policy con provisioning integrato. Oppure può essere eseguito come un semplice cron job su un server per eseguire operazioni su flotte esistenti di grandi dimensioni.

Cloud Custodian è un progetto CNCF Incubating, guidato da una comunità di centinaia di contributori.

Caratteristiche

  • Supporto completo per servizi e risorse cloud pubbliche con una ricca libreria di azioni e filtri per creare policy.
  • Esecuzione di policy su asset infrastrutturali come codice (terraform, ecc.).
  • Supporta filtri arbitrari sulle risorse con condizioni booleane annidate.
  • Esecuzione a secco di qualsiasi policy per vedere cosa farebbe.
  • Provisioning automatico di funzioni serverless e sorgenti di eventi (AWS CloudWatchEvents, AWS Config Rules, Azure EventGrid, GCP AuditLog & Pub/Sub, ecc.)
  • Output nativi delle metriche del provider cloud per le risorse che corrispondono a una policy.
  • Output strutturati in archivi di oggetti nativi del cloud per le risorse che corrispondono a una policy.
  • Uso intelligente della cache per ridurre al minimo le chiamate API.
  • Supporto per l'uso multi-account/sottoscrizione/progetto.
  • Testato in battaglia - in produzione in ambienti cloud molto grandi.

Collegamenti

Installazione rapida

Custodian è pubblicato su pypi come serie di pacchetti con il prefisso c7n, è anche disponibile come immagine docker.

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

Utilizzo

Il primo passo per utilizzare Cloud Custodian (c7n) è scrivere un file YAML contenente le policy che si desidera eseguire. Ogni policy specifica il tipo di risorsa su cui verrà eseguita, un insieme di filtri che controllano quali risorse saranno interessate dalla policy, le azioni che la policy eseguirà sulle risorse corrispondenti e una modalità che controlla come verrà eseguita la policy.

Le migliori guide per iniziare sono i tutorial specifici per provider cloud.

Come rapida panoramica, di seguito sono riportati alcuni esempi di policy per risorse AWS.

  1. impone che nessun bucket S3 abbia l'accesso cross-account abilitato.
  2. terminerà ogni nuova istanza EC2 avviata che non disponga di un volume EBS crittografato.
  3. taggherà qualsiasi istanza EC2 che non abbia i seguenti tag "Environment", "AppId" e "OwnerContact" o "DeptID" per essere fermata entro quattro giorni.
policies:
 - name: s3-cross-account
   description: |
     Checks S3 for buckets with cross-account access and
     removes the cross-account access.
   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: |
    Provision a lambda and cloud watch event target
    that looks at all new instances and terminates those with
    unencrypted volumes.
   mode:
    type: cloudtrail
    role: CloudCustodian-QuickStart
    events:
      - RunInstances
   filters:
    - type: ebs
      key: Encrypted
      value: false
   actions:
    - terminate

 - name: tag-compliance
   resource: aws.ec2
   description: |
     Schedule a resource that does not meet tag compliance policies to be stopped in four days. Note a separate policy using the`marked-for-op` filter is required to actually stop the instances after four days.
   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

È possibile convalidare, testare ed eseguire Cloud Custodian con la policy di esempio utilizzando questi comandi:

# Validate the configuration (note this happens by default on run)
$ custodian validate policy.yml

# Dryrun on the policies (no actions executed) to see what resources
# match each policy.
$ custodian run --dryrun -s out policy.yml

# Run the policy
$ custodian run -s out policy.yml

È possibile eseguire Cloud Custodian anche tramite Docker:

# Download the image
$ docker pull cloudcustodian/c7n
$ mkdir output

# Run the policy
#
# This will run the policy using only the environment variables for authentication
$ 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

# Run the policy (using AWS's generated credentials from STS)
#
# NOTE: We mount the ``.aws/credentials`` and ``.aws/config`` directories to
# the docker container to support authentication to AWS using the same credentials
# credentials that are available to the local user if authenticating with 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

Lo strumento cask di custodian è un binario go che fornisce un frontend trasparente per docker che rispecchia la normale CLI di custodian, ma gestisce automaticamente il montaggio dei volumi.

Consultare la documentazione per ulteriori informazioni o contattarci su gitter.

Aiuto specifico per provider cloud

Per istruzioni specifiche per AWS, Azure e GCP, visita la relativa pagina introduttiva.

Partecipa

  • GitHub - (Questa pagina)
  • Slack - Chat in tempo reale se cerchi aiuto o sei interessato a contribuire a Custodian!
    • Gitter - (Vecchia chat in tempo reale, probabilmente migreremo da questa)
  • Linen.dev - Segui le nostre discussioni su Linen
  • Mailing List - La nostra mailing list del progetto, iscriviti qui per annunci importanti del progetto, non esitare a fare domande
  • Reddit - Il nostro subreddit
  • StackOverflow - Sito di Q&A per sviluppatori, teniamo d'occhio il tag cloudcustodian
  • Canale YouTube - Stiamo lavorando per aggiungere tutorial e altre informazioni utili, oltre ai video delle riunioni

Risorse della comunità

Abbiamo una riunione comunitaria regolare aperta a tutti gli utenti e sviluppatori di ogni livello di competenza. Iscriversi alla mailing list ti invierà automaticamente un invito alla riunione. Vedi le note seguenti per informazioni più tecniche su come partecipare alla riunione.

Strumenti aggiuntivi

Il progetto Custodian sviluppa e mantiene anche una suite di strumenti aggiuntivi qui https://github.com/cloud-custodian/cloud-custodian/tree/main/tools:

  • Org: Esecuzione di policy multi-account.

  • ShiftLeft: Shift Left ~ esegue policy su asset infrastrutturali come codice come terraform.

  • PolicyStream: La cronologia Git come flusso di modifiche logiche alle policy.

  • Salactus: Scansione s3 su larga scala.

  • Mailer: Un'implementazione di riferimento per l'invio di messaggi agli utenti per notificarli.

  • Trail Creator: Taggatura retroattiva dei creatori di risorse da CloudTrail

  • TrailDB: Indicizzazione di Cloudtrail e generazione di serie temporali per cruscotti.

  • LogExporter: Esportazione dei log di Cloud Watch in s3

  • Cask: Esecuzione facile di custodian tramite docker

  • Guardian: Configurazione automatizzata multi-account di Guard Duty

  • Omni SSM: Automazione di EC2 Systems Manager

  • Mugc: Utilità per pulire le policy Lambda di Cloud Custodian distribuite in un ambiente AWS.

Contribuire

Vedi https://cloudcustodian.io/docs/contribute.html

Sicurezza

Se hai trovato un problema relativo alla sicurezza, una vulnerabilità o una potenziale vulnerabilità in Cloud Custodian, contatta il Team di sicurezza di Cloud Custodian con i dettagli della vulnerabilità. Invieremo un'email di conferma per accusare ricevuta della tua segnalazione e un'email aggiuntiva quando avremo identificato positivamente o negativamente il problema.

Codice di condotta

Questo progetto aderisce al Codice di condotta della CNCF

Partecipando, ci si aspetta che tu onori questo codice.

Categorie