
cloud-custodian v0.9.52.0
Motor de reglas para seguridad en la nube, optimización de costos y gobernanza, DSL en yaml para políticas que consultan, filtran y ejecutan acciones sobre recursos.
Cloud Custodian (c7n)
Cloud Custodian, también conocido como c7n, es un motor de reglas para gestionar cuentas y recursos de nube pública. Permite a los usuarios definir políticas para habilitar una infraestructura de nube bien gestionada, que sea segura y optimizada en costos. Consolida muchos de los scripts ad hoc que las organizaciones tienen en una herramienta ligera y flexible, con métricas e informes unificados.
Custodian se puede utilizar para gestionar entornos AWS, Azure y GCP asegurando el cumplimiento en tiempo real de políticas de seguridad (como requisitos de cifrado y acceso), políticas de etiquetado y gestión de costos mediante la recolección de basura de recursos no utilizados y la gestión de recursos fuera del horario laboral.
Custodian también admite la ejecución de políticas sobre activos de infraestructura como código para proporcionar retroalimentación directamente en las estaciones de trabajo de los desarrolladores o dentro de pipelines CI.
Las políticas de Custodian se escriben en archivos de configuración YAML simples que permiten a los usuarios especificar políticas sobre un tipo de recurso (EC2, ASG, Redshift, CosmosDB, PubSub Topic) y se construyen a partir de un vocabulario de filtros y acciones.
Se integra con las capacidades serverless nativas de la nube de cada proveedor para proporcionar cumplimiento en tiempo real de las políticas con aprovisionamiento integrado. O se puede ejecutar como un simple trabajo cron en un servidor para ejecutarse contra grandes flotas existentes.
Cloud Custodian es un proyecto Incubating de CNCF, liderado por una comunidad de cientos de contribuyentes.
Características
- Soporte integral para servicios y recursos de nube pública con una amplia biblioteca de acciones y filtros para construir políticas.
- Ejecutar políticas sobre activos de infraestructura como código (terraform, etc.).
- Admite filtrado arbitrario sobre recursos con condiciones booleanas anidadas.
- Realizar una simulación de cualquier política para ver qué haría.
- Aprovisiona automáticamente funciones serverless y fuentes de eventos ( AWS CloudWatchEvents, AWS Config Rules, Azure EventGrid, GCP AuditLog & Pub/Sub, etc.)
- Salidas de métricas nativas del proveedor de nube sobre recursos que coincidieron con una política.
- Salidas estructuradas hacia almacenamiento de objetos nativo de la nube de qué recursos coincidieron con una política.
- Uso inteligente de caché para minimizar las llamadas a la API.
- Admite uso multi-cuenta/suscripción/proyecto.
- Probado en batalla - en producción en algunos entornos de nube muy grandes.
Enlaces
- Página principal
- Documentación
- Hoja de ruta del proyecto
- Instalación para desarrolladores
- Presentaciones
- Canal de YouTube
Instalación rápida
Custodian se publica en pypi como una serie de paquetes con el prefijo
c7n, también está disponible como imagen docker.
$ python3 -m venv custodian
$ source custodian/bin/activate
(custodian) $ pip install c7n
Uso
El primer paso para usar Cloud Custodian (c7n) es escribir un archivo YAML que contenga las políticas que desea ejecutar. Cada política especifica el tipo de recurso sobre el que se ejecutará la política, un conjunto de filtros que controlan qué recursos se verán afectados por esta política, acciones que la política tomará sobre los recursos coincidentes, y un modo que controla cómo se ejecutará la política.
Las mejores guías de inicio son los tutoriales específicos de cada proveedor de nube.
Como un recorrido rápido, a continuación se muestran algunas políticas de ejemplo para recursos de AWS.
- aplicará que ningún bucket S3 tenga habilitado el acceso entre cuentas.
- terminará cualquier instancia EC2 recién lanzada que no tenga un volumen EBS cifrado.
- etiquetará cualquier instancia EC2 que no tenga las siguientes etiquetas "Environment", "AppId", y ya sea "OwnerContact" o "DeptID" para que sea detenida en cuatro días.
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
Puede validar, probar y ejecutar Cloud Custodian con la política de ejemplo con estos comandos:
# 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
También puede ejecutar Cloud Custodian mediante 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
La herramienta cask de custodian es un binario go que proporciona un frontend transparente para docker que refleja la CLI regular de custodian, pero se encarga automáticamente de montar volúmenes.
Consulte la documentación para obtener información adicional, o comuníquese en gitter.
Ayuda específica por proveedor de nube
Para instrucciones específicas para AWS, Azure y GCP, visite la página de inicio correspondiente.
Participa
- GitHub - (Esta página)
- Slack - Chat en tiempo real si buscas ayuda o estás interesado en contribuir a Custodian!
- Gitter - (Chat en tiempo real más antiguo, probablemente nos estamos migrando de este)
- Linen.dev - Sigue nuestras discusiones en Linen
- Lista de correo - Nuestra lista de correo del proyecto, suscríbete aquí para anuncios importantes del proyecto, siéntete libre de hacer preguntas
- Reddit - Nuestro subreddit
- StackOverflow - Sitio de preguntas y respuestas para desarrolladores, vigilamos la etiqueta
cloudcustodian - Canal de YouTube - Estamos trabajando en agregar tutoriales y otra información útil, así como videos de reuniones
Recursos de la comunidad
Tenemos una reunión comunitaria regular abierta a todos los usuarios y desarrolladores de cualquier nivel de habilidad. Unirse a la lista de correo le enviará automáticamente una invitación a la reunión. Consulte las notas a continuación para obtener más información técnica sobre cómo unirse a la reunión.
- Videos de reuniones comunitarias
- Archivo de notas de reuniones comunitarias
- Próximos eventos comunitarios
- Informe anual de Cloud Custodian 2021 - Control de salud anual proporcionado a la CNCF que describe la salud del proyecto
- Auditoría de seguridad de terceros de Ada Logics
Herramientas adicionales
El proyecto Custodian también desarrolla y mantiene un conjunto de herramientas adicionales aquí https://github.com/cloud-custodian/cloud-custodian/tree/main/tools:
-
Org: Ejecución de políticas multi-cuenta.
-
ShiftLeft: Shift Left ~ ejecutar políticas contra activos de infraestructura como código como terraform.
-
PolicyStream: Historial de Git como flujo de cambios lógicos de políticas.
-
Salactus: Escalar el escaneo de s3.
-
Mailer: Una implementación de referencia para enviar mensajes a los usuarios para notificarles.
-
Trail Creator: Etiquetado retroactivo de creadores de recursos desde CloudTrail
-
TrailDB: Indexación de CloudTrail y generación de series temporales para paneles.
-
LogExporter: Exportación de registros de CloudWatch a s3
-
Cask: Ejecución fácil de custodian mediante docker
-
Guardian: Configuración automatizada de Guard Duty multi-cuenta
-
Omni SSM: Automatización de EC2 Systems Manager
-
Mugc: Una utilidad utilizada para limpiar las políticas Lambda de Cloud Custodian que están desplegadas en un entorno AWS.
Contribuir
Ver https://cloudcustodian.io/docs/contribute.html
Seguridad
Si ha encontrado un problema relacionado con la seguridad, una vulnerabilidad o una posible vulnerabilidad en Cloud Custodian, por favor informe al Equipo de Seguridad de Custodian con los detalles de la vulnerabilidad. Enviaremos un correo de confirmación para acusar recibo de su informe, y enviaremos un correo adicional cuando hayamos identificado el problema de manera positiva o negativa.
Código de Conducta
Este proyecto se adhiere al Código de Conducta de la CNCF
Al participar, se espera que respetes este código.