Volver a actualizaciones
Nuevo releaseSep 5, 2026

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.

Compartir

Cloud Custodian (c7n)

Logo de Cloud Custodian


slack CI CII Best Practices

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

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.

  1. aplicará que ningún bucket S3 tenga habilitado el acceso entre cuentas.
  2. terminará cualquier instancia EC2 recién lanzada que no tenga un volumen EBS cifrado.
  3. 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.

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.

Categorías