
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 di cloud pubblico. Consente agli utenti di definire policy per abilitare un'infrastruttura cloud ben gestita, sicura ed economicamente ottimizzata. Consolida molti degli script ad hoc che le organizzazioni possiedono 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 alle policy di sicurezza (come la crittografia e i requisiti di accesso), alle policy sui tag e alla gestione dei costi tramite la raccolta di risorse inutilizzate e la gestione delle risorse fuori orario.
Custodian supporta inoltre l'esecuzione di policy su asset di infrastructure as code per fornire 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, PubSub Topic) e sono costruite da un vocabolario di filtri e azioni.
Si integra con le capacità serverless native del cloud di ciascun provider per fornire l'applicazione delle policy in tempo reale con provisioning integrato. Oppure può essere eseguito come semplice cron job su un server per essere eseguito su grandi flotte esistenti.
Cloud Custodian è un progetto CNCF Incubating, guidato da una community di centinaia di contributori.
Funzionalità
- Supporto completo per servizi e risorse di cloud pubblico con una ricca libreria di azioni e filtri per costruire policy.
- Esegui policy su asset di infrastructure as code (terraform, ecc.).
- Supporta filtri arbitrari sulle risorse con condizioni booleane annidate.
- Esegui in dry run qualsiasi policy per vedere cosa farebbe.
- Effettua automaticamente il provisioning di funzioni serverless e sorgenti di eventi ( AWS CloudWatchEvents, AWS Config Rules, Azure EventGrid, GCP AuditLog e Pub/Sub, ecc.)
- Output di metriche native del provider cloud sulle risorse che hanno corrisposto a una policy
- Output strutturati verso l'object storage nativo del cloud delle risorse che hanno corrisposto a una policy.
- Uso intelligente della cache per minimizzare le chiamate API.
- Supporta l'uso multi-account/sottoscrizione/progetto.
- Collaudato sul campo - in produzione su alcuni ambienti cloud molto grandi.
Link
Installazione rapida
Custodian è pubblicato su pypi come una serie di pacchetti con il prefisso c7n,
ed è 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 da questa policy, le azioni che la policy intraprenderà 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 riportate alcune policy di esempio per le risorse AWS.
- imporrà che nessun bucket S3 abbia l'accesso cross-account abilitato.
- terminerà qualsiasi istanza EC2 appena avviata che non disponga di un volume EBS crittografato.
- applicherà un tag a qualsiasi istanza EC2 che non abbia i seguenti tag "Environment", "AppId", e "OwnerContact" o "DeptID", per essere arrestata 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
Puoi validare, testare ed eseguire Cloud Custodian con la policy di esempio usando 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
Puoi 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.