Перейти до вмісту

Модуль 5.4: Інструменти безпеки

Складність: [СЕРЕДНЯ] - Обізнаність щодо інструментів

Час на виконання: 25-30 хвилин

Передумови: Модуль 5.3: Безпека часу виконання


Що ви зможете робити

Розділ «Що ви зможете робити»

Після завершення цього модуля ви зможете:

  • Визначити ключові інструменти безпеки за категоріями: сканування (Trivy), політики (OPA/Kyverno), виконання (Falco), аудит (kube-bench)
  • Оцінити які інструменти адресують які фази життєвого циклу безпеки (збірка, розгортання, виконання)
  • Порівняти рушії політик (OPA Gatekeeper проти Kyverno) за архітектурою та варіантами використання
  • Оцінити стек інструментів безпеки на предмет прогалин покриття поверхні атак Kubernetes

Чому цей модуль важливий

Розділ «Чому цей модуль важливий»

Екосистема безпеки Kubernetes має багатий набір інструментів для сканування, моніторингу, забезпечення та аудиту безпеки. Знання того, які інструменти існують, що вони роблять та коли їх використовувати, допомагає побудувати комплексну програму безпеки.

KCSA перевіряє вашу обізнаність щодо поширених інструментів безпеки та їхнього призначення.


Категорії інструментів безпеки

Розділ «Категорії інструментів безпеки»
┌─────────────────────────────────────────────────────────────┐
│ ІНСТРУМЕНТИ БЕЗПЕКИ KUBERNETES │
├─────────────────────────────────────────────────────────────┤
│ │
│ БЕЗПЕКА ОБРАЗІВ │
│ ├── Сканування: Trivy, Grype, Clair │
│ ├── Підписування: Cosign, Notary │
│ └── SBOM: Syft, Trivy │
│ │
│ ЗМІЦНЕННЯ КЛАСТЕРА │
│ ├── Бенчмарки: kube-bench │
│ ├── Аудит: kubeaudit, Polaris │
│ └── Тестування на проникнення: kube-hunter │
│ │
│ ПРИМУСОВЕ ВИКОНАННЯ ПОЛІТИК │
│ ├── Admission: OPA/Gatekeeper, Kyverno │
│ ├── Мережа: Політики CNI, Cilium │
│ └── Час виконання: Seccomp, AppArmor │
│ │
│ БЕЗПЕКА ЧАСУ ВИКОНАННЯ │
│ ├── Виявлення: Falco, Tetragon │
│ ├── Ізоляція: gVisor, Kata │
│ └── Платформи: Aqua, Sysdig, Prisma │
│ │
│ УПРАВЛІННЯ СЕКРЕТАМИ │
│ ├── Зовнішні: Vault, AWS Secrets Manager │
│ └── Шифрування: SealedSecrets, SOPS │
│ │
└─────────────────────────────────────────────────────────────┘

Інструменти сканування образів

Розділ «Інструменти сканування образів»
┌─────────────────────────────────────────────────────────────┐
│ TRIVY │
├─────────────────────────────────────────────────────────────┤
│ │
│ ЩО: Комплексний сканер безпеки │
│ ВІД: Aqua Security (відкритий код) │
│ │
│ СКАНУЄ: │
│ ├── Образи контейнерів (ОС + пакети мов) │
│ ├── Файлові системи та репозиторії │
│ ├── Маніфести Kubernetes (неправильні конфігурації) │
│ ├── IaC (Terraform, CloudFormation) │
│ └── Генерація SBOM │
│ │
│ КОМАНДИ: │
│ trivy image nginx:1.25 │
│ trivy fs . │
│ trivy k8s --report summary │
│ trivy config Dockerfile │
│ │
└─────────────────────────────────────────────────────────────┘

Cosign — Підписування образів

Розділ «Cosign — Підписування образів»
┌─────────────────────────────────────────────────────────────┐
│ COSIGN │
├─────────────────────────────────────────────────────────────┤
│ │
│ ЩО: Підписування та верифікація образів контейнерів │
│ ВІД: Проєкт Sigstore (Linux Foundation) │
│ │
│ РОБОЧИЙ ПРОЦЕС: │
│ # Генерація пари ключів │
│ cosign generate-key-pair │
│ │
│ # Підписання образу │
│ cosign sign --key cosign.key myregistry/myimage:v1 │
│ │
│ # Верифікація підпису │
│ cosign verify --key cosign.pub myregistry/myimage:v1 │
│ │
│ # Підпис без ключів (використовує OIDC) │
│ cosign sign myregistry/myimage:v1 │
│ │
└─────────────────────────────────────────────────────────────┘

Оцінка безпеки кластера

Розділ «Оцінка безпеки кластера»
┌─────────────────────────────────────────────────────────────┐
│ KUBE-BENCH │
├─────────────────────────────────────────────────────────────┤
│ │
│ ЩО: Перевірка відповідності CIS Kubernetes Benchmark │
│ ВІД: Aqua Security (відкритий код) │
│ │
│ ПЕРЕВІРЯЄ: │
│ ├── Конфігурацію компонентів площини управління │
│ ├── Конфігурацію etcd │
│ ├── Файли конфігурації площини управління │
│ ├── Конфігурацію робочих вузлів │
│ └── Політики Kubernetes │
│ │
│ ЗАПУСК: │
│ # На вузлі площини управління │
│ kube-bench run --targets master │
│ │
│ # На робочому вузлі │
│ kube-bench run --targets node │
│ │
│ # Як Job у кластері │
│ kubectl apply -f job.yaml │
│ │
└─────────────────────────────────────────────────────────────┘

Управління секретами

Розділ «Управління секретами»
┌─────────────────────────────────────────────────────────────┐
│ VAULT З KUBERNETES │
├─────────────────────────────────────────────────────────────┤
│ │
│ ЩО: Корпоративне управління секретами │
│ ВІД: HashiCorp │
│ │
│ МЕТОДИ ІНТЕГРАЦІЇ: │
│ │
│ 1. VAULT AGENT INJECTOR │
│ ├── Sidecar автоматично впроваджує секрети │
│ ├── Анотації контролюють, які секрети впроваджувати │
│ └── Секрети записуються у спільний том │
│ │
│ 2. CSI DRIVER │
│ ├── Монтує секрети як томи │
│ └── Стандарт Kubernetes CSI │
│ │
│ 3. EXTERNAL SECRETS OPERATOR │
│ ├── Синхронізує секрети Vault із K8s Secrets │
│ └── Автоматична ротація │
│ │
│ ПЕРЕВАГИ: │
│ • Динамічні секрети (автоматично генеровані) │
│ • Автоматична ротація │
│ • Детальне журналювання аудиту │
│ • Гранулярний контроль доступу │
│ │
└─────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────┐
│ SEALED SECRETS │
├─────────────────────────────────────────────────────────────┤
│ │
│ ЩО: Шифрування секретів для GitOps │
│ ВІД: Bitnami │
│ │
│ ВИРІШЕНА ПРОБЛЕМА: │
│ • Не можна комітити K8s Secrets у Git (base64) │
│ • Потрібні секрети у системі контролю версій для GitOps │
│ │
│ ЯК ПРАЦЮЄ: │
│ 1. Встановити контролер у кластер │
│ 2. Контролер генерує пару публічного/приватного ключів │
│ 3. Використати kubeseal CLI для шифрування секретів │
│ 4. Закомітити зашифрований SealedSecret у Git │
│ 5. Контролер розшифровує у звичайний Secret у кластері │
│ │
│ SealedSecret → Git → Кластер → Secret │
│ │
└─────────────────────────────────────────────────────────────┘

Посібник з вибору інструментів

Розділ «Посібник з вибору інструментів»
┌─────────────────────────────────────────────────────────────┐
│ ВИБІР ІНСТРУМЕНТУ ЗА ВИПАДКОМ ВИКОРИСТАННЯ │
├─────────────────────────────────────────────────────────────┤
│ │
│ "Мені потрібно сканувати образи на вразливості" │
│ → Trivy (комплексний), Grype (швидкий) │
│ │
│ "Мені потрібно перевірити кластер за CIS benchmark" │
│ → kube-bench │
│ │
│ "Мені потрібно аудитувати конфігурації навантажень" │
│ → kubeaudit, Polaris │
│ │
│ "Мені потрібно блокувати небезпечні конфігурації" │
│ → Kyverno (простіший), OPA/Gatekeeper (гнучкіший) │
│ │
│ "Мені потрібне виявлення загроз часу виконання" │
│ → Falco (зрілий), Tetragon (для користувачів Cilium) │
│ │
│ "Мені потрібно підписувати та верифікувати образи" │
│ → Cosign (Sigstore) │
│ │
│ "Мені потрібне управління секретами за межами K8s" │
│ → Vault (корпоративний), Sealed Secrets (GitOps) │
│ │
│ "Мені потрібна безпека між сервісами" │
│ → Istio (повний mesh), Linkerd (простіший) │
│ │
└─────────────────────────────────────────────────────────────┘

  • Trivy може сканувати більше, ніж образи — він обробляє файлові системи, Git-репозиторії, кластери Kubernetes та IaC, наприклад Terraform.

  • kube-bench базується на CIS Kubernetes Benchmark, який оновлюється з кожним релізом Kubernetes.

  • Falco був створений у Sysdig та переданий CNCF. Зараз це graduated-проєкт CNCF.

  • Cosign підпис без ключів використовує вашу ідентичність GitHub/Google/Microsoft замість управління ключами — роблячи підписування набагато доступнішим.


ПомилкаЧому це шкодитьРішення
Забагато інструментівСкладність, перетиниОбрати цілеспрямований стек
Сканування без дійХибна безпекаВизначити SLA, автоматизувати
Політика без тестуванняЛамає розгортанняСпочатку тестувати в режимі аудиту
Час виконання без реагуванняСповіщення ігноруютьсяСтворити рунбуки інцидентів
Без базової лініїНеможливо виміряти покращенняСпочатку запустити оцінку

  1. Яка різниця між Trivy та kube-bench?

    Відповідь Trivy сканує образи контейнерів та код на вразливості. kube-bench перевіряє конфігурацію кластера відповідно до CIS Kubernetes Benchmark. Trivy зосереджений на тому, що ви розгортаєте; kube-bench — на тому, як ваш кластер налаштований.
  2. Коли використовувати Kyverno проти OPA/Gatekeeper?

    Відповідь Kyverno використовує YAML для політик (легше для команд, знайомих з Kubernetes), тоді як Gatekeeper використовує Rego (потужніший, крутіша крива навчання). Обирайте Kyverno для простіших випадків і команд, які хочуть залишатися в YAML; обирайте Gatekeeper для складних політик або якщо вже використовуєте OPA.
  3. Що робить Cosign?

    Відповідь Cosign підписує та верифікує образи контейнерів. Він зберігає підписи в OCI-реєстрах поруч із образами та підтримує підпис без ключів за допомогою OIDC-ідентичностей. Він є частиною проєкту Sigstore для безпеки ланцюга постачання програмного забезпечення.
  4. Як Sealed Secrets забезпечує GitOps для секретів?

    Відповідь Sealed Secrets шифрує Kubernetes Secrets за допомогою специфічного для кластера публічного ключа. Зашифрований SealedSecret можна безпечно комітити в Git. При застосуванні до кластера контролер Sealed Secrets розшифровує його назад у звичайний Secret.
  5. Яка різниця між Falco та Tetragon?

    Відповідь Обидва використовують eBPF для моніторингу безпеки часу виконання. Falco є зрілішим з більшою бібліотекою правил і зосереджений на виявленні. Tetragon (від Cilium) більше зосереджений на примусовому виконанні та має тіснішу інтеграцію з мережевими політиками Cilium. Обирайте залежно від існуючого стеку та потреб у примусовому виконанні.

Інструменти безпеки Kubernetes служать різним цілям:

КатегоріяІнструментиПризначення
СкануванняTrivy, GrypeЗнаходити вразливості
ПідписуванняCosignПеревіряти автентичність образів
Оцінкаkube-bench, kubeauditПеревіряти конфігурації
ПолітикаKyverno, GatekeeperЗабезпечувати стандарти
Час виконанняFalco, TetragonВиявляти загрози
СекретиVault, Sealed SecretsУправляти чутливими даними

Ключові принципи:

  • Обирайте інструменти, які добре інтегруються
  • Почніть з основного: сканування, політика, час виконання
  • Автоматизуйте все в CI/CD
  • Майте процедури реагування на сповіщення
  • Вимірюйте та покращуйте з часом

Модуль 6.1: Фреймворки відповідності — Розуміння стандартів відповідності безпеки для Kubernetes.