
cloud-custodian v0.9.52.0
Regel-Engine für Cloud-Sicherheit, Kostenoptimierung und Governance, DSL in yaml für Richtlinien, um Ressourcen abzufragen, zu filtern und Aktionen darauf auszuführen.
Cloud Custodian (c7n)
Cloud Custodian, auch bekannt als c7n, ist eine Rules Engine zur Verwaltung öffentlicher Cloud-Konten und -Ressourcen. Sie ermöglicht es Benutzern, Richtlinien zu definieren, um eine gut verwaltete Cloud-Infrastruktur zu ermöglichen, die sowohl sicher als auch kostenoptimiert ist. Sie konsolidiert viele der Ad-hoc-Skripte, die Organisationen besitzen, in einem leichtgewichtigen und flexiblen Werkzeug mit einheitlichen Metriken und Berichterstattung.
Custodian kann zur Verwaltung von AWS-, Azure- und GCP-Umgebungen eingesetzt werden, indem es die Einhaltung von Sicherheitsrichtlinien in Echtzeit sicherstellt (wie Verschlüsselungs- und Zugriffsanforderungen), Tag-Richtlinien und Kostenmanagement durch Garbage Collection ungenutzter Ressourcen und Ressourcenverwaltung außerhalb der Geschäftszeiten.
Custodian unterstützt außerdem die Ausführung von Richtlinien auf Infrastructure-as-Code-Assets, um Feedback direkt auf Entwickler-Workstations oder innerhalb von CI-Pipelines zu liefern.
Custodian-Richtlinien werden in einfachen YAML-Konfigurationsdateien geschrieben, die es Benutzern ermöglichen, Richtlinien für einen Ressourcentyp (EC2, ASG, Redshift, CosmosDB, PubSub Topic) festzulegen, und werden aus einem Vokabular von Filtern und Aktionen zusammengestellt.
Es integriert sich in die cloud-nativen Serverless-Funktionen jedes Anbieters, um die Durchsetzung von Richtlinien in Echtzeit mit integrierter Bereitstellung zu ermöglichen. Alternativ kann es als einfacher Cron-Job auf einem Server ausgeführt werden, um gegen große bestehende Flotten zu laufen.
Cloud Custodian ist ein CNCF-Incubating-Projekt, das von einer Community aus Hunderten von Mitwirkenden geleitet wird.
Funktionen
- Umfassende Unterstützung für öffentliche Cloud-Dienste und -Ressourcen mit einer umfangreichen Bibliothek von Aktionen und Filtern zum Erstellen von Richtlinien.
- Ausführen von Richtlinien auf Infrastructure-as-Code-Assets (terraform usw.).
- Unterstützt beliebige Filterung von Ressourcen mit verschachtelten booleschen Bedingungen.
- Probelauf jeder Richtlinie, um zu sehen, was sie tun würde.
- Automatische Bereitstellung von Serverless-Funktionen und Ereignisquellen ( AWS CloudWatchEvents, AWS Config Rules, Azure EventGrid, GCP AuditLog & Pub/Sub usw.)
- Cloud-Provider-native Metrikausgaben für Ressourcen, die einer Richtlinie entsprachen
- Strukturierte Ausgaben in cloud-nativen Objektspeicher darüber, welche Ressourcen einer Richtlinie entsprachen.
- Intelligente Cache-Nutzung zur Minimierung von API-Aufrufen.
- Unterstützt die Nutzung über mehrere Konten/Abonnements/Projekte hinweg.
- Praxisbewährt – im Produktivbetrieb in einigen sehr großen Cloud-Umgebungen.
Links
Schnellinstallation
Custodian wird auf pypi als eine Reihe von Paketen mit dem Präfix c7n
veröffentlicht und ist auch als Docker-Image verfügbar.
$ python3 -m venv custodian
$ source custodian/bin/activate
(custodian) $ pip install c7n
Verwendung
Der erste Schritt zur Verwendung von Cloud Custodian (c7n) besteht darin, eine YAML-Datei zu schreiben, die die Richtlinien enthält, die Sie ausführen möchten. Jede Richtlinie legt den Ressourcentyp fest, auf dem die Richtlinie ausgeführt wird, eine Reihe von Filtern, die steuern, welche Ressourcen von dieser Richtlinie betroffen sind, Aktionen, die die Richtlinie auf die übereinstimmenden Ressourcen anwendet, und einen Modus, der steuert, wie die Richtlinie ausgeführt wird.
Die besten Einstiegsanleitungen sind die anbieterspezifischen Tutorials.
Als kurzer Überblick finden Sie unten einige Beispielrichtlinien für AWS-Ressourcen.
- erzwingt, dass für keine S3-Buckets kontoübergreifender Zugriff aktiviert ist.
- beendet jede neu gestartete EC2-Instanz, die kein verschlüsseltes EBS-Volume hat.
- versieht jede EC2-Instanz, die nicht die folgenden Tags "Environment", "AppId" und entweder "OwnerContact" oder "DeptID" hat, mit Tags, damit sie in vier Tagen gestoppt wird.
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
Sie können Cloud Custodian mit der Beispielrichtlinie mit diesen Befehlen validieren, testen und ausführen:
# 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
Sie können Cloud Custodian auch über Docker ausführen:
# 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