
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
Cloud Custodian (c7n)
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
- Homepage
- Documentazione
- Roadmap del progetto
- Installazione per sviluppatori
- Presentazioni
- Canale YouTube
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.
- impone che nessun bucket S3 abbia l'accesso cross-account abilitato.
- terminerà ogni nuova istanza EC2 avviata che non disponga di un volume EBS crittografato.
- 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.
- Video delle riunioni della comunità
- Archivio delle note delle riunioni della comunità
- Prossimi eventi della comunità
- Rapporto annuale di Cloud Custodian 2021 - Controllo annuale fornito al CNCF che delinea lo stato di salute del progetto
- Audit di sicurezza di terze parti di Ada Logics
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.