Як зібрати й автоматизувати звітність в AWS Config

💡 Усі статті, обговорення, новини про DevOps — в одному місці. Приєднуйтесь до DevOps спільноти!

У попередніх статтях (частина 1, частина 2) ми розглянули основні можливості AWS Config та його застосування для контролю стану ресурсів у хмарному середовищі AWS відповідно до політик безпеки та нормативних вимог.

У цьому матеріалі ми перейдемо до більш практичного рівня: налаштуємо AWS Config Aggregator для агрегації даних з кількох регіонів і автоматизуємо процес звітності за допомогою простого, але ефективного Python-скрипта.

Скрипт використовує бібліотеку boto3 для взаємодії з AWS Config Aggregator, отримує список ресурсів зі статусом Noncompliant, і формує звіти з детальною інформацією та прямими посиланнями на ці ресурси. Автоматизація цієї перевірки дозволяє зменшити навантаження на команду безпеки, пришвидшити виявлення порушень та оперативно реагувати на них.

Рішення легко інтегрується у ваші існуючі пайплайни контролю й моніторингу, а також масштабовано для використання в багатооблікових і багаторегіональних архітектурах.

AWS Config Aggregator

Якщо ваші ресурси розміщені в кількох регіонах AWS — або навіть у кількох облікових записах — перевірка кожного з них вручну може займати багато часу й бути малоефективною. На щастя, AWS Config Aggregator спрощує цей процес, збираючи конфігураційні дані з усіх регіонів і акаунтів в єдиному централізованому інтерфейсі.

Ось як налаштувати й використовувати Aggregator у випадку, коли ви працюєте з кількома регіонами в одному обліковому записі AWS:

Попередні умови

У всіх необхідних регіонах AWS має бути активований AWS Config recorder.

Інструкція

1. Спочатку перейдіть на сторінку Aggregators і натисніть кнопку Create aggregator (Створити агрегатор), щоб створити новий агрегатор.

2. На наступній сторінці встановіть прапорець для увімкнення агрегації даних, введіть назву вашого агрегатора та вкажіть ідентифікатор облікового запису як джерело (оскільки агрегатор створюється в межах цього ж акаунту).

Далі виберіть усі регіони, у яких активовано AWS Config Recorder — у моєму випадку це us-east-1, us-east-2 та us-west-1.

На завершення натисніть Create aggregator, щоб завершити налаштування.

3. Тепер, якщо відкрити сторінку агрегатора, ви побачите статус Incomplete authorization. Щоб усунути це, потрібно налаштувати авторизацію в кожному регіоні AWS, де активовано Config Recorder, і дозволити агрегатору отримувати дані з цих регіонів.

4. Перейдіть на сторінку Authorizations в розділі Aggregators і натисніть кнопку Add authorization.

5. Вкажіть AWS Account ID та регіон, у якому був створений агрегатор, і натисніть Add authorization, щоб надати агрегатору дозвіл отримувати дані з цього регіону.

6. Тепер на сторінці Aggregator у стовпці Authorization status (Статус авторизації) ви повинні побачити значення OK.

7. Після того як Aggregator налаштовано й авторизовано, ви можете вибрати його на сторінці Aggregators і переглянути:

  • інвентар ресурсів;
  • статус дотримання правил;
  • Top 5 правил із найбільшою кількістю порушень (noncompliant rules).

Альтернативно ви можете скористатися функцією Advanced queries, щоб отримати потрібні дані з кількох регіонів одночасно.

У полі Query scope виберіть агрегатор, який ви створили, і сформуйте запит. Наприклад, мені потрібно отримати список типів інстансів у кожному регіоні.

SELECT
  configuration.instanceType,
  awsRegion,
  COUNT(*)
WHERE
  resourceType = 'AWS::EC2::Instance'
GROUP BY
  configuration.instanceType,
  awsRegion

8. Щоб видалити агрегатор, перейдіть на сторінку Aggregators, виберіть потрібний агрегатор і в розділі Actions натисніть Delete.

Детальніше про AWS Config Aggregators можна дізнатися в офіційній документації AWS: AWS Config Aggregator Overview.

Створення кастомних звітів про невідповідність за допомогою AWS CLI / boto3

Моє рішення базується на прикладі AWS Config Reporting for Non-Compliant Resources. Цей скрипт автоматизує створення звітів для ресурсів, що залишаються у статусі Non-Compliant протягом заданого періоду. Я адаптував його під власні потреби — додав рівні критичності, відстеження завдань з усунення порушень та посилання на Jira-тікети.

Попередні умови:

  • Встановлений Python 3.
  • Налаштований AWS CLI.
  • Активований AWS Config Recorder.
  • Налаштовані правила AWS Config.
  • Налаштований AWS Config Aggregator.

Як користуватися скриптом

  • Клонуйте репозиторій із вихідним кодом: github.com/...​n/aws-config-reporter.git
  • Відкрийте термінал у директорії з клонованим репозиторієм.
  • Встановіть залежності за допомогою команди: pip install -r requirements.txt
  • Переконайтеся, що профіль AWS CLI та облікові дані налаштовані.
  • Запустіть скрипт за допомогою наступної команди:
python3 main.py --aggregator-name MyAggregator

У цьому прикладі MyAggregator — це назва вашого AWS Config Aggregator, яку ви вказали під час налаштування. Обов’язково замініть її на фактичну назву агрегатора у вашому обліковому записі.

  • Після запуску скрипт створює CSV-файл у папці ./reports. Ви можете відкрити його в Excel або Google Sheets, щоб переглянути отримані дані.
Report generated ./reports/Non_compliant_resources-2025-01-10.csv
['Non_compliant_resources-2025-01-10.csv']

Звіт матиме такий вигляд:

А ось як виглядає звіт після невеликих ручних правок — у простому й зрозумілому вигляді:

Підсумок

Завдяки AWS Config і невеликому скрипту на Python ви можете автоматизувати перевірку дотримання політик і формування звітів. Цей скрипт допомагає оперативно виявляти проблемні ресурси та швидше реагувати. Крім того, його легко адаптувати під потреби вашої організації.

Наступний рівень автоматизації — це автоматичне усунення порушень (automated remediation), наприклад, створення Jira-тікетів із шаблонним текстом на основі порушених правил. Це відкриває можливість повністю автоматизувати контроль і звітність, зменшуючи кількість ручної роботи, покращуючи безпеку й значно спрощуючи аудит.

Джерела

👍ПодобаєтьсяСподобалось3
До обраногоВ обраному4
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Підписатись на коментарі