Назад к обновлениям
New releaseSep 5, 2026

cloud-custodian v0.9.52.0

Правила для обеспечения безопасности облака, оптимизации затрат и управления, DSL на YAML для политик, позволяющих запрашивать, фильтровать и выполнять действия над ресурсами.

Поделиться

Cloud Custodian (c7n)

Cloud Custodian Logo


slack CI CII Best Practices

Cloud Custodian, также известный как c7n, — это механизм правил для управления публичными облачными аккаунтами и ресурсами. Он позволяет пользователям определять политики для обеспечения хорошо управляемой облачной инфраструктуры, которая является одновременно безопасной и оптимизированной по стоимости. Он объединяет множество разрозненных скриптов, используемых организациями, в легкий и гибкий инструмент с едиными метриками и отчетностью.

Custodian можно использовать для управления средами AWS, Azure и GCP, обеспечивая соответствие политикам безопасности в реальном времени (например, требования к шифрованию и доступу), политикам тегирования и управлению затратами за счет удаления неиспользуемых ресурсов и управления ресурсами в нерабочее время.

Custodian также поддерживает выполнение политик на активах инфраструктуры как кода, обеспечивая обратную связь непосредственно на рабочих станциях разработчиков или в конвейерах CI.

Политики Custodian записываются в простых YAML-файлах конфигурации, которые позволяют пользователям указывать политики для типа ресурсов (EC2, ASG, Redshift, CosmosDB, PubSub Topic) и строятся из словаря фильтров и действий.

Он интегрируется с облачными нативными бессерверными возможностями каждого провайдера для обеспечения применения политик в реальном времени со встроенной подготовкой. Или его можно запускать как простую задачу cron на сервере для выполнения на больших существующих парках.

Cloud Custodian — это проект инкубационного уровня CNCF, возглавляемый сообществом из сотен участников.

Features

  • Полная поддержка публичных облачных сервисов и ресурсов с богатой библиотекой действий и фильтров для создания политик.
  • Выполнение политик на активах инфраструктуры как кода (terraform и др.).
  • Поддерживает произвольную фильтрацию ресурсов с вложенными логическими условиями.
  • Пробный запуск любой политики для просмотра того, что она сделает.
  • Автоматическая подготовка бессерверных функций и источников событий (AWS CloudWatchEvents, AWS Config Rules, Azure EventGrid, GCP AuditLog & Pub/Sub и др.)
  • Выходные метрики облачного провайдера для ресурсов, соответствующих политике.
  • Структурированный вывод в облачное нативное объектное хранилище того, какие ресурсы соответствуют политике.
  • Интеллектуальное использование кэша для минимизации вызовов API.
  • Поддержка использования нескольких аккаунтов/подписок/проектов.
  • Проверено в бою — используется в производстве в очень крупных облачных средах.

Quick Install

Custodian публикуется на pypi в виде набора пакетов с префиксом c7n, а также доступен в виде Docker-образа.

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

Usage

Первый шаг к использованию Cloud Custodian (c7n) — написание YAML-файла, содержащего политики, которые вы хотите выполнить. Каждая политика указывает тип ресурсов, к которому она будет применяться, набор фильтров, определяющих, какие ресурсы будут затронуты этой политикой, действия, которые политика выполнит с соответствующими ресурсами, и режим, который определяет, как политика будет выполняться.

Лучшие руководства для начала — это учебные пособия, специфичные для конкретного облачного провайдера.

В качестве краткого обзора ниже приведены несколько примеров политик для ресурсов AWS.

  1. запретит любым S3-корзинам иметь межаккаунтный доступ.
  2. завершит любой только что запущенный экземпляр EC2, не имеющий зашифрованного EBS-тома.
  3. пометит любой экземпляр EC2, у которого отсутствуют теги "Environment", "AppId" и либо "OwnerContact", либо "DeptID", чтобы он был остановлен через четыре дня.
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

Вы можете проверить, протестировать и запустить Cloud Custodian с примером политики с помощью следующих команд:

# Проверка конфигурации (обратите внимание, это происходит по умолчанию при запуске)
$ custodian validate policy.yml

# Пробный запуск политик (действия не выполняются) для просмотра того, какие ресурсы
# соответствуют каждой политике.
$ custodian run --dryrun -s out policy.yml

# Выполнение политики
$ custodian run -s out policy.yml

Вы также можете запускать Cloud Custodian через Docker:

# Загрузка образа
$ docker pull cloudcustodian/c7n
$ mkdir output

# Выполнение политики
#
# Это запустит политику, используя только переменные среды для аутентификации
$ 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

# Выполнение политики (с использованием сгенерированных STS учетных данных AWS)
#
# ПРИМЕЧАНИЕ: Мы монтируем каталоги ``.aws/credentials`` и ``.aws/config`` в
# контейнер Docker для поддержки аутентификации в AWS с использованием тех же
# учетных данных, которые доступны локальному пользователю при аутентификации через 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

Инструмент custodian cask tool представляет собой бинарный файл Go, который предоставляет прозрачный интерфейс к Docker, повторяющий обычный CLI custodian, но автоматически занимающийся монтированием томов.

Обратитесь к документации за дополнительной информацией или задайте вопросы в Gitter.

Cloud Provider Specific Help

Для конкретных инструкций по AWS, Azure и GCP посетите соответствующие страницы начала работы.

Get Involved

  • GitHub - (Эта страница)
  • Slack - Общение в реальном времени, если вам нужна помощь или вы заинтересованы в участии в Custodian!
    • Gitter - (Старое общение в реальном времени, вероятно, мы от него отказываемся)
  • Linen.dev - Следите за нашими обсуждениями на Linen
  • Список рассылки - Список рассылки нашего проекта, подпишитесь здесь для важных объявлений о проекте, не стесняйтесь задавать вопросы
  • Reddit - Наш сабреддит
  • StackOverflow - Сайт вопросов и ответов для разработчиков, мы следим за тегом cloudcustodian
  • Канал на YouTube - Мы работаем над добавлением учебных пособий и другой полезной информации, а также видео со встреч

Community Resources

У нас есть регулярная встреча сообщества, открытая для всех пользователей и разработчиков любого уровня квалификации. Подписка на список рассылки автоматически отправит вам приглашение на встречу. Смотрите заметки ниже для получения дополнительной технической информации о присоединении к встрече.

Additional Tools

Проект Custodian также разрабатывает и сопровождает набор дополнительных инструментов здесь https://github.com/cloud-custodian/cloud-custodian/tree/main/tools:

  • Org: Выполнение политик в нескольких аккаунтах.

  • ShiftLeft: Shift Left — выполнение политик на активах инфраструктуры как кода, таких как terraform.

  • PolicyStream: История Git как поток логических изменений политик.

  • Salactus: Масштабируемое сканирование S3.

  • Mailer: Эталонная реализация отправки сообщений пользователям для их уведомления.

  • Trail Creator: Ретроактивное тегирование создателей ресурсов из CloudTrail

  • TrailDB: Индексирование CloudTrail и генерация временных рядов для создания панелей мониторинга.

  • LogExporter: Экспорт журналов Cloud Watch в S3

  • Cask: Простое выполнение Custodian через Docker

  • Guardian: Автоматизированная настройка Guard Duty в нескольких аккаунтах

  • Omni SSM: Автоматизация EC2 Systems Manager

  • Mugc: Утилита для очистки развернутых Lambda-политик Cloud Custodian в среде AWS.

Contributing

См. https://cloudcustodian.io/docs/contribute.html

Security

Если вы обнаружили проблему, связанную с безопасностью, уязвимость или потенциальную уязвимость в Cloud Custodian, пожалуйста, сообщите об этом команде безопасности Custodian с указанием деталей уязвимости. Мы отправим подтверждение по электронной почте, чтобы подтвердить получение вашего отчета, и отправим дополнительное письмо, когда мы определим проблему положительно или отрицательно.

Code of Conduct

Этот проект соблюдает Кодекс поведения CNCF

Участвуя, вы соглашаетесь соблюдать этот кодекс.

Категории