Все про збір даних для DevSecOps

Придумати круту ідею, втілити її в життя у батьківському гаражі та заробляти мільйонні статки… Це більше так не працює. Випуск хорошого продукту — це лише половина справи. Сучасні компанії повинні дбати не лише про ефективність та доступність, а й про приватність та безпеку.

Але як всього цього досягти? Один зі способів: командам DevSecOps слід запровадити практику спостережуваності. Вона використовує логи (та інші засоби) для збору широких масивів даних у вашому користувацькому середовищі та середовищах загроз. Відтак ви зможете краще виявляти та виправляти проблеми продуктивності, уразливості та порушення безпеки. Як результат: підвищиться якість роботи.

Дані спостережуваності та безпеки: що це й навіщо?

Дані спостережуваності дають розуміти стан даних у системах організації. Вони виключають час простою важливої інформації шляхом застосування кращих практик DevOps. 

Дані безпеки — це підмножина ваших даних спостережуваності. Вони використовуються, щоб виявити загрози безпеки. Визначення здається нечітким, бо на практиці все ще більш розмите. 

Приміром, програма демонструє повільний час відгуку. Це можна назвати даними безпеки? Коли як. Можливо, програму просто неправильно налаштували для поточного навантаження. Можливо, зловмисник скомпрометував систему та виконує робоче навантаження, яке сповільнює роботу.

Навіть те, що зазвичай не вважають даними безпеки, зрештою, може стати ними . Наприклад, якщо новий CVE розкривається для певної бібліотеки, вам потрібно буде знати, які служби залежать від цієї версії бібліотеки. А іноді чіткі випадки даних безпеки виявляються корисними для відстеження помилок, не пов’язаних з безпекою. Приміром, особистість абонента, що викликає, для деякої кінцевої точки API.

Зрештою, ми можемо сказати, що частина даних спостережуваності може бути даними безпеки… А може й не бути. Це залежить від специфіки використання, що часто стає відомим постфактум.

Три слони даних спостережуваності 

Коли ми дивимося на дані спостережуваності, ми часто розбиваємо їх на три частини: логи, метрики та трасування. Розгляньмо, що це і як це можна застосувати.

🐘 Логи

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

Запис і систематизація логів у централізованій системі реєстрації є основним аспектом збору даних спостережуваності. 

Дані аналітики логів мають вирішальне значення для моніторингу, усунення несправностей і дослідження проблем надійності та безпеки. Така інформація часто є найдетальнішою з доступної про системи компанії. Тому має сенс використовувати ці дані на благо компанії.

🐘 Метрики

Логи зазвичай містять текстову інформацію, метрики — це числові часові ряди. Наприклад, кількість модулів, що очікують на розгляд, у вашому кластері Kubernetes за певний час. 

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

🐘 Трасування

Трасування — дуже важливий інструмент для сучасних систем, побудованих на мікросервісах і безсерверних функціях. Він забезпечує «ланцюжок контролю» для системних операторів, що має вирішальне значення для аналізу продуктивності та безпеки. 

Ви можете розглядати трасування як спрямований ациклічний граф, який представляє обхід запиту через компоненти розподіленої системи. Кожен проміжок записує час, витрачений запитом на даний компонент, а посилання є ребрами графіка, які з’єднують один проміжок із наступними проміжками. 

Отже, як усе це перетинається з даними безпеки? 

Майже вся інформація про безпеку надходить із логів. Хоча метрики та трасування можуть допомогти вам зрозуміти, що саме йде не так. 

Приміром, навантаженість ЦП висока через криптомайнер. Та самі логи вкажуть лише на проблему (високу навантаженість на ЦП), а не першопричину (криптомайнер).

Як збирати дані?

Тепер, коли ми розуміємо важливість даних спостережуваності та безпеки, розгляньмо деякі більш практичні аспекти. Як збирати дані та як їх ефективно використовувати?

Ці кроки стосуються всіх ваших даних — спостереження та безпеки.

Логи

Ймовірно, у вас є багато логів, створених вашою ОС, Kubernetes і вашим хмарним провайдером. Ваші програми та ПЗ сторонніх розробників також створюють лог-файли. Однак стандартні рішення викликають певні проблеми:

  • Доступ до різноманітних логових файлів на багатьох хостах є неефективним і незручним для користувача.
  • Логи з часом заповнять диск (якщо ви не використовуєте постійне хмарне сховище).
  • Якщо ви змінюєте логи для розв’язання проблеми дискового простору, ви втрачаєте історичні дані.
  • Ваші сервери час від часу можуть виходити з ладу.
  • Диски можуть бути пошкоджені.

Щоб розв’язати ці проблеми, використовуйте збирача логів на кожному хості, який надсилає повідомлення на централізовану платформу спостереження. 

Централізована система керування логами: 

  • зберігатиме їх в довгостроковому сховищі, 
  • надаватиме інтерфейс запитів, 
  • забезпечуватиме агрегації та інші перетворення, 
  • зберігатиме резервні копії логів.

Щоб трохи полегшити біль, використовуйте галузеві стандарти та інструменти, такі як OpenTelemetry. Для збору даних, специфічних для логів, також популярні опенсорсні інструменти типу LogStash.

Метрики

Метрики дещо легше обробляти, ніж логи. Тут всі показники з будь-якого джерела можуть бути представлені однаково як єдиний часовий ряд із набором тегів, пов’язаних із ним. Подібно до збирача логів, збирач метрик може працювати на кожному хості та періодично зчитувати відповідні дані й надсилати їх на платформу спостереження. 

Метрики на рівні програм можна збирати двома способами: 

  1. Додаток може надавати стандартний інтерфейс, який збирач метрик може очищати.
  2. Додаток може бути оснащений інструментами (зазвичай з використанням бібліотеки) для виправлення своїх показників безпосередньо на платформі спостереження. Точки даних фіксуються із заданими інтервалами та відправляються на платформу спостереження для аналізу.

Що стосується метрик, Prometheus є безперечним королем, розробленим для очищення кінцевих точок додатків, які розкривають метрики програм. Grafana дуже добре працює для візуалізації ваших метрик.

Трасування

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

Для розподіленого відстеження лідером є Jaeger (спочатку розроблений Uber). Серед інших: Zipkin і SigNoz.

Як дані допоможуть підвищити безпеку програми?

Розгляньмо роль, яку ці частини спостережуваних даних можуть грати у різних аспектах виявлення інцидентів та реагування на них.

Виявлення інцидентів ґрунтується на зборі метрик для виявлення аномальної активності. Ці показники, що відстежуються платформою, сповіщають команди DevSecOps.

На цю мить команда знає лише про те, що відбувається щось ненормальне. Їм не відомо, пов’язаний цей інцидент з безпекою чи ні. Щоб виявити інцидент критично важливо перевірити логи. 

Якщо інцидент пов’язаний із безпекою, команда може використовувати логи, щоб визначити, як зловмисники отримують доступ до системи. Далі вони скасують доступ для скомпрометованих користувачів або служб.

Потім, команда може використовувати комбінацію логів, метрик і трасувань для оцінки наслідків зламу. Знаючи масштаби, можна зменшити радіус впливу, зробивши ці компоненти недоступними, доки їх не виправлять.

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

Післяслово

Збір даних про спостережуваність і безпеку в широких діапазонах є ключовим для високоякісного цифрового досвіду ваших користувачів. Щоб досягти успіху, вам потрібно буде покладатися на три основи спостережуваності: логи, метрики та розподілене трасування. Використовуйте цю інформацію для виявлення, ізоляції та пом’якшення атак.

Після того, як ви зібрали всі ці дані, що ви з ними робите? Поділіться досвідом у коментарях. 

Щоб не зробити свій проєкт ціллю зловмисників — покращте свої скіли в ITEDU. Обирайте курс та отримуйте навички за вигідною ціною 🎓

Залишити відповідь

Дякуємо, що поділились