
cloud-custodian v0.9.52.0
Правила для обеспечения безопасности облака, оптимизации затрат и управления, DSL на YAML для политик, позволяющих запрашивать, фильтровать и выполнять действия над ресурсами.
Cloud Custodian (c7n)
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.
- Поддержка использования нескольких аккаунтов/подписок/проектов.
- Проверено в бою — используется в производстве в очень крупных облачных средах.
Links
- Домашняя страница
- Документация
- Дорожная карта проекта
- Установка для разработчиков
- Презентации
- Канал на YouTube
Quick Install
Custodian публикуется на pypi в виде набора пакетов с префиксом c7n, а также доступен в виде Docker-образа.
$ python3 -m venv custodian
$ source custodian/bin/activate
(custodian) $ pip install c7n
Usage
Первый шаг к использованию Cloud Custodian (c7n) — написание YAML-файла, содержащего политики, которые вы хотите выполнить. Каждая политика указывает тип ресурсов, к которому она будет применяться, набор фильтров, определяющих, какие ресурсы будут затронуты этой политикой, действия, которые политика выполнит с соответствующими ресурсами, и режим, который определяет, как политика будет выполняться.
Лучшие руководства для начала — это учебные пособия, специфичные для конкретного облачного провайдера.
В качестве краткого обзора ниже приведены несколько примеров политик для ресурсов AWS.
- запретит любым S3-корзинам иметь межаккаунтный доступ.
- завершит любой только что запущенный экземпляр EC2, не имеющий зашифрованного EBS-тома.
- пометит любой экземпляр 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
У нас есть регулярная встреча сообщества, открытая для всех пользователей и разработчиков любого уровня квалификации. Подписка на список рассылки автоматически отправит вам приглашение на встречу. Смотрите заметки ниже для получения дополнительной технической информации о присоединении к встрече.
- Видео со встреч сообщества
- Архив заметок встреч сообщества
- Предстоящие мероприятия сообщества
- Годовой отчет Cloud Custodian 2021 - Ежегодная проверка здоровья, предоставленная CNCF, описывающая состояние проекта
- Сторонний аудит безопасности от Ada Logics
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
Участвуя, вы соглашаетесь соблюдать этот кодекс.