Voltar às atualizações
New releaseSep 5, 2026

cloud-custodian v0.9.52.0

Motor de regras para segurança em nuvem, otimização de custos e governança, DSL em yaml para políticas de consultar, filtrar e agir sobre recursos

Compartilhar

Cloud Custodian (c7n)

Logotipo do Cloud Custodian


slack CI CII Best Practices

Cloud Custodian, também conhecido como c7n, é um motor de regras para gerenciar contas e recursos em nuvens públicas. Permite que os usuários definam políticas para possibilitar uma infraestrutura em nuvem bem gerenciada, que seja segura e otimizada em custos. Ele consolida muitos dos scripts ad hoc que as organizações possuem em uma ferramenta leve e flexível, com métricas e relatórios unificados.

Custodian pode ser usado para gerenciar ambientes AWS, Azure e GCP, garantindo conformidade em tempo real com políticas de segurança (como requisitos de criptografia e acesso), políticas de tags e gerenciamento de custos por meio da coleta de lixo de recursos não utilizados e gerenciamento de recursos fora do horário comercial.

Custodian também suporta a execução de políticas em ativos de infraestrutura como código para fornecer feedback diretamente nas estações de trabalho dos desenvolvedores ou dentro de pipelines de CI.

As políticas do Custodian são escritas em arquivos de configuração YAML simples que permitem aos usuários especificar políticas sobre um tipo de recurso (EC2, ASG, Redshift, CosmosDB, Tópico PubSub) e são construídas a partir de um vocabulário de filtros e ações.

Ele se integra com as capacidades serverless nativas da nuvem de cada provedor para fornecer aplicação em tempo real de políticas com provisionamento embutido. Ou pode ser executado como um simples cron job em um servidor para executar contra grandes frotas existentes.

Cloud Custodian é um projeto em incubação da CNCF, liderado por uma comunidade de centenas de contribuidores.

Funcionalidades

  • Suporte abrangente para serviços e recursos de nuvem pública com uma rica biblioteca de ações e filtros para construir políticas.
  • Executar políticas em ativos de infraestrutura como código (terraform, etc).
  • Suporta filtragem arbitrária em recursos com condições booleanas aninhadas.
  • Dry run em qualquer política para ver o que ela faria.
  • Provisiona automaticamente funções serverless e fontes de eventos (AWS CloudWatchEvents, AWS Config Rules, Azure EventGrid, GCP AuditLog & Pub/Sub, etc)
  • Saídas de métricas nativas do provedor de nuvem sobre recursos que corresponderam a uma política.
  • Saídas estruturadas para armazenamento de objetos nativo da nuvem de quais recursos corresponderam a uma política.
  • Uso inteligente de cache para minimizar chamadas de API.
  • Suporta uso multi-conta/assinatura/projeto.
  • Testado em batalha - em produção em alguns ambientes de nuvem muito grandes.

Instalação Rápida

Custodian é publicado no pypi como uma série de pacotes com o prefixo c7n, também está disponível como uma imagem docker.

$ python3 -m venv custodian
$ source custodian/bin/activate
(custodian) $ pip install c7n

Uso

O primeiro passo para usar o Cloud Custodian (c7n) é escrever um arquivo YAML contendo as políticas que você deseja executar. Cada política especifica o tipo de recurso no qual a política será executada, um conjunto de filtros que controlam quais recursos serão afetados por esta política, ações que a política tomará sobre os recursos correspondentes e um modo que controla como a política será executada.

Os melhores guias de início rápido são os tutoriais específicos de cada provedor de nuvem.

Como uma rápida demonstração, abaixo estão algumas políticas de exemplo para recursos AWS.

  1. garantirá que nenhum bucket S3 tenha acesso entre contas ativado.
  2. encerrará qualquer instância EC2 recém-lançada que não tenha um volume EBS criptografado.
  3. marcará qualquer instância EC2 que não tenha as seguintes tags "Environment", "AppId" e "OwnerContact" ou "DeptID" para ser parada em quatro dias.
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

Você pode validar, testar e executar o Cloud Custodian com a política de exemplo usando estes 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

Você também pode executar o Cloud Custodian via 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

A ferramenta custodian cask é um binário Go que fornece uma interface transparente para o docker que espelha o cli comum do custodian, mas cuida automaticamente da montagem de volumes.

Consulte a documentação para obter informações adicionais, ou entre em contato pelo gitter.

Ajuda Específica por Provedor de Nuvem

Para instruções específicas para AWS, Azure e GCP, visite a página de início rápido relevante.

Participe

  • GitHub - (Esta página)
  • Slack - Chat em tempo real se você está procurando ajuda ou interessado em contribuir com o Custodian!
    • Gitter - (Chat em tempo real mais antigo, provavelmente estamos migrando deste)
  • Linen.dev - Acompanhe nossas discussões no Linen
  • Lista de E-mails - Nossa lista de e-mails do projeto, inscreva-se aqui para anúncios importantes do projeto, sinta-se à vontade para fazer perguntas
  • Reddit - Nosso subreddit
  • StackOverflow - Site de perguntas e respostas para desenvolvedores, ficamos de olho na tag cloudcustodian
  • Canal do YouTube - Estamos trabalhando em adicionar tutoriais e outras informações úteis, além de vídeos de reuniões

Recursos da Comunidade

Nós temos uma reunião comunitária regular que é aberta a todos os usuários e desenvolvedores de todos os níveis de habilidade. Participar da lista de e-mails automaticamente enviará a você um convite para a reunião. Veja as notas abaixo para mais informações técnicas sobre como participar da reunião.

Ferramentas Adicionais

O projeto Custodian também desenvolve e mantém um conjunto de ferramentas adicionais aqui https://github.com/cloud-custodian/cloud-custodian/tree/main/tools:

  • Org: Execução de políticas multi-conta.

  • ShiftLeft: Shift Left ~ executar políticas contra ativos de Infraestrutura como Código, como terraform.

  • PolicyStream: Histórico do Git como fluxo de mudanças lógicas de políticas.

  • Salactus: Escalar a varredura s3.

  • Mailer: Uma implementação de referência para enviar mensagens aos usuários para notificá-los.

  • Trail Creator: Marcação retroativa de criadores de recursos a partir do CloudTrail

  • TrailDB: Indexação do CloudTrail e geração de séries temporais para dashboards.

  • LogExporter: Exportação de logs do CloudWatch para s3

  • Cask: Execução fácil do custodian via docker

  • Guardian: Configuração automatizada do Guard Duty multi-conta

  • Omni SSM: Automação do EC2 Systems Manager

  • Mugc: Um utilitário usado para limpar políticas Lambda do Cloud Custodian implantadas em um ambiente AWS.

Contribuindo

Veja https://cloudcustodian.io/docs/contribute.html

Segurança

Se você encontrou um problema relacionado à segurança, uma vulnerabilidade ou uma potencial vulnerabilidade no Cloud Custodian, por favor informe a Equipe de Segurança do Custodian com os detalhes da vulnerabilidade. Enviaremos um e-mail de confirmação para acusar o recebimento do seu relatório, e enviaremos um e-mail adicional quando identificarmos o problema positiva ou negativamente.

Código de Conduta

Este projeto adere ao Código de Conduta da CNCF

Ao participar, espera-se que você honre este código.

Categorias