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

Модуль 1.1: Чотири C безпеки хмарних технологій

Складність: [СЕРЕДНЯ] - Основний фреймворк

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

Передумови: Модуль 0.2: Мислення безпеки


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

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

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

  • Пояснити модель 4 C (Cloud, Cluster, Container, Code) та як кожен рівень будується на попередньому
  • Оцінити до якого рівня безпеки належить дана вразливість або неправильна конфігурація
  • Оцінити чи засіб безпеки адресує правильний рівень у ієрархії 4 C
  • Спроєктувати багаторівневий підхід до безпеки, використовуючи 4 C як організаційний фреймворк

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

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

4 C - це фундаментальна ментальна модель безпеки хмарних технологій. Кожне рішення з безпеки в Kubernetes відображається на один з цих рівнів. Опануйте цей фреймворк, і ви матимете структурований спосіб думати про будь-яке питання безпеки на іспиті KCSA.

Документація Kubernetes сама використовує цю модель, і вона безпосередньо з’являється у питаннях іспиту. Це не просто теорія - це офіційний спосіб категоризації безпеки хмарних технологій.


┌─────────────────────────────────────────────────────────────┐
│ 4 C БЕЗПЕКИ │
├─────────────────────────────────────────────────────────────┤
│ │
│ Кожен рівень будується на безпеці рівня нижче. │
│ Порушення на будь-якому рівні компрометує всі │
│ рівні вище нього. │
│ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ CLOUD │ │
│ │ Фундамент інфраструктури │ │
│ │ ┌─────────────────────────────────────────────┐ │ │
│ │ │ CLUSTER │ │ │
│ │ │ Компоненти та конфігурація Kubernetes │ │ │
│ │ │ ┌─────────────────────────────────────┐ │ │ │
│ │ │ │ CONTAINER │ │ │ │
│ │ │ │ Безпека образів та runtime │ │ │ │
│ │ │ │ ┌─────────────────────────────┐ │ │ │ │
│ │ │ │ │ CODE │ │ │ │ │
│ │ │ │ │ Безпека застосунку │ │ │ │ │
│ │ │ │ └─────────────────────────────┘ │ │ │ │
│ │ │ └─────────────────────────────────────┘ │ │ │
│ │ └─────────────────────────────────────────────┘ │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ Безпека на одному рівні НЕ МОЖЕ компенсувати │
│ небезпеку на рівні нижче. │
│ │
└─────────────────────────────────────────────────────────────┘

Критичне розуміння

Розділ «Критичне розуміння»

Ви можете бути захищені лише настільки, наскільки захищений ваш найслабший рівень.

Якщо ваш рівень Cloud скомпрометований (хтось має ваші root-облікові дані AWS), не має значення, наскільки добре ви налаштували RBAC або безпеку контейнерів Kubernetes - атакуючий контролює все.


Рівень 1: Cloud (Інфраструктура)

Розділ «Рівень 1: Cloud (Інфраструктура)»

Зовнішній рівень - ваш фундамент інфраструктури.

КомпонентПроблеми безпеки
Хмарний провайдерAWS, GCP, Azure, локальна інфраструктура
ОбчисленняВМ, фізичні сервери
МережаVPC, підмережі, фаєрволи
ІдентифікаціяIAM-ролі, сервісні облікові записи
СховищеБлочне сховище, об’єктне сховище

Ключові контролі безпеки

Розділ «Ключові контролі безпеки»
┌─────────────────────────────────────────────────────────────┐
│ БЕЗПЕКА РІВНЯ CLOUD │
├─────────────────────────────────────────────────────────────┤
│ │
│ ІДЕНТИФІКАЦІЯ ТА ДОСТУП │
│ ├── IAM-політики (мінімальні привілеї) │
│ ├── MFA для привілейованих облікових записів │
│ └── Ротація ключів сервісних облікових записів │
│ │
│ МЕРЕЖА │
│ ├── Ізоляція VPC │
│ ├── Групи безпеки / фаєрволи │
│ ├── Приватні підмережі для площини управління │
│ └── TLS для всього зовнішнього трафіку │
│ │
│ ОБЧИСЛЕННЯ │
│ ├── Шифровані кореневі томи │
│ ├── Незмінна інфраструктура │
│ └── Регулярне оновлення / патчі │
│ │
│ ДАНІ │
│ ├── Шифрування у спокої │
│ ├── Шифрування при передачі │
│ └── Логування доступу │
│ │
└─────────────────────────────────────────────────────────────┘

Спільна відповідальність Cloud

Розділ «Спільна відповідальність Cloud»

Хто за що відповідає залежить від моделі розгортання:

┌─────────────────────────────────────────────────────────────┐
│ МОДЕЛЬ СПІЛЬНОЇ ВІДПОВІДАЛЬНОСТІ │
├─────────────────────────────────────────────────────────────┤
│ │
│ КЕРОВАНИЙ KUBERNETES (EKS, GKE, AKS) │
│ ├── Хмарний провайдер: Площина управління, інфраструктура │
│ └── Ви: Робочі навантаження, RBAC, network policies, поди │
│ │
│ САМОКЕРОВАНИЙ KUBERNETES │
│ ├── Хмарний провайдер: Лише фізична інфраструктура │
│ └── Ви: Все інше (площина управління, вузли тощо) │
│ │
│ ЛОКАЛЬНА ІНФРАСТРУКТУРА │
│ └── Ви: Все (від фізичної безпеки до застосунку) │
│ │
└─────────────────────────────────────────────────────────────┘

Рівень 2: Cluster (Kubernetes)

Розділ «Рівень 2: Cluster (Kubernetes)»

Рівень платформи Kubernetes - компоненти та конфігурація.

КомпонентПроблеми безпеки
Площина управлінняAPI server, etcd, scheduler, controller-manager
Вузлиkubelet, kube-proxy, середовище виконання контейнерів
АвтентифікаціяІдентифікація користувачів та сервісних облікових записів
АвторизаціяRBAC, admission control
СекретиУправління секретами Kubernetes

Ключові контролі безпеки

Розділ «Ключові контролі безпеки»
┌─────────────────────────────────────────────────────────────┐
│ БЕЗПЕКА РІВНЯ CLUSTER │
├─────────────────────────────────────────────────────────────┤
│ │
│ API SERVER │
│ ├── TLS для всієї комунікації API │
│ ├── Сильна автентифікація (OIDC, сертифікати) │
│ ├── RBAC-авторизація │
│ └── Ввімкнене логування аудиту │
│ │
│ ETCD │
│ ├── Шифрування у спокої │
│ ├── TLS для комунікації peer/client │
│ └── Обмежений мережевий доступ │
│ │
│ ВУЗЛИ │
│ ├── Безпечна конфігурація kubelet │
│ ├── Вимкнені порти лише для читання │
│ └── Режим авторизації Node │
│ │
│ РОБОЧІ НАВАНТАЖЕННЯ │
│ ├── Pod Security Standards │
│ ├── Network Policies │
│ └── Квоти ресурсів │
│ │
└─────────────────────────────────────────────────────────────┘

Рівень 3: Container (Runtime)

Розділ «Рівень 3: Container (Runtime)»

Рівень контейнерів - образи та ізоляція runtime.

КомпонентПроблеми безпеки
ОбразиБазові образи, вразливості, походження
Runtimecontainerd, CRI-O, gVisor
ІзоляціяNamespaces, cgroups, seccomp
CapabilitiesМожливості Linux, привілейований режим

Ключові контролі безпеки

Розділ «Ключові контролі безпеки»
┌─────────────────────────────────────────────────────────────┐
│ БЕЗПЕКА РІВНЯ CONTAINER │
├─────────────────────────────────────────────────────────────┤
│ │
│ ОБРАЗИ │
│ ├── Використовуйте мінімальні базові образи (distroless) │
│ ├── Скануйте на вразливості │
│ ├── Підписуйте та перевіряйте образи │
│ └── Використовуйте незмінні теги (не :latest) │
│ │
│ RUNTIME │
│ ├── Запускайте від не-root користувача │
│ ├── Файлова система лише для читання │
│ ├── Скиньте всі capabilities, додайте лише потрібні │
│ └── Використовуйте профілі seccomp/AppArmor │
│ │
│ ІЗОЛЯЦІЯ │
│ ├── Уникайте привілейованих контейнерів │
│ ├── Вимкніть hostPID, hostNetwork, hostIPC │
│ └── Розгляньте ізольовані runtime (gVisor, Kata) │
│ │
└─────────────────────────────────────────────────────────────┘

Ризик втечі з контейнера

Розділ «Ризик втечі з контейнера»

Чому безпека контейнерів має значення:

┌─────────────────────────────────────────────────────────────┐
│ ШЛЯХ ВТЕЧІ З КОНТЕЙНЕРА │
├─────────────────────────────────────────────────────────────┤
│ │
│ Неправильно налаштований контейнер │
│ │ │
│ ├── privileged: true │
│ │ └── Повний доступ до пристроїв та ядра хоста │
│ │ │
│ ├── hostPID: true │
│ │ └── Може бачити процеси хоста та надсилати сигнали │
│ │ │
│ ├── hostNetwork: true │
│ │ └── Може отримати доступ до мережі та сервісів вузла │
│ │ │
│ └── Все це → ВТЕЧА З КОНТЕЙНЕРА → КОМПРОМЕТАЦІЯ ВУЗЛА │
│ │
└─────────────────────────────────────────────────────────────┘

Рівень 4: Code (Застосунок)

Розділ «Рівень 4: Code (Застосунок)»

Найвнутрішній рівень - ваш застосунок та його залежності.

КомпонентПроблеми безпеки
ЗалежностіБібліотеки, пакети, ланцюг постачання
АвтентифікаціяАвтентифікація користувачів, токени
АвторизаціяКонтроль доступу на рівні застосунку
Обробка данихВалідація введення, шифрування
СекретиAPI-ключі, облікові дані бази даних

Ключові контролі безпеки

Розділ «Ключові контролі безпеки»
┌─────────────────────────────────────────────────────────────┐
│ БЕЗПЕКА РІВНЯ CODE │
├─────────────────────────────────────────────────────────────┤
│ │
│ БЕЗПЕЧНЕ КОДУВАННЯ │
│ ├── Валідація введення │
│ ├── Кодування виводу │
│ ├── Параметризовані запити (запобігання SQL-ін'єкціям) │
│ └── Безпечна робота з пам'яттю │
│ │
│ ЗАЛЕЖНОСТІ │
│ ├── Сканування на відомі вразливості (SCA) │
│ ├── Фіксація версій │
│ ├── Перевірка цілісності (контрольні суми, підписи) │
│ └── Мінімізація залежностей │
│ │
│ СЕКРЕТИ │
│ ├── Ніколи не вписуйте секрети в код │
│ ├── Використовуйте змінні середовища або сховища секретів │
│ ├── Регулярно ротуйте облікові дані │
│ └── Використовуйте короткотривалі токени │
│ │
│ АВТЕНТИФІКАЦІЯ/АВТОРИЗАЦІЯ │
│ ├── Сильні механізми автентифікації │
│ ├── Управління сесіями │
│ └── Принцип мінімальних привілеїв │
│ │
└─────────────────────────────────────────────────────────────┘

Як рівні взаємодіють

Розділ «Як рівні взаємодіють»

Безпека каскадує вниз

Розділ «Безпека каскадує вниз»

Порушення на нижчому рівні компрометує всі рівні вище:

┌─────────────────────────────────────────────────────────────┐
│ КАСКАД ВПЛИВУ ПОРУШЕННЯ │
├─────────────────────────────────────────────────────────────┤
│ │
│ Порушення CLOUD (витік облікових даних AWS) │
│ └── Атакуючий може: │
│ ├── Отримати доступ до будь-якого Cluster │
│ ├── Змінити будь-який Container │
│ └── Прочитати будь-який Code/Дані │
│ │
│ Порушення CLUSTER (admin-доступ Kubernetes) │
│ └── Атакуючий може: │
│ ├── Розгорнути шкідливі Containers │
│ └── Отримати доступ до секретів Code │
│ (але інфраструктура Cloud залишається захищеною) │
│ │
│ Порушення CONTAINER (втеча з контейнера) │
│ └── Атакуючий може: │
│ └── Отримати доступ до Code на тому ж вузлі │
│ (але інші вузли можуть бути безпечні) │
│ │
│ Порушення CODE (вразливість застосунку) │
│ └── Атакуючий може: │
│ └── Отримати доступ до даних/секретів застосунку │
│ (інші контейнери захищені) │
│ │
└─────────────────────────────────────────────────────────────┘

Застосування глибинного захисту

Розділ «Застосування глибинного захисту»

Захищайте кожен рівень незалежно:

Навіть якщо атакуючий скомпрометує рівень Code через
вразливість, належна безпека Container (не-root,
скинуті capabilities) обмежує його дії.
Навіть якщо він вирветься з Container, належна безпека
Cluster (RBAC, network policies) обмежує бічний рух.
Кожен рівень забезпечує межу безпеки, що уповільнює
атакуючих та обмежує радіус ураження.

  • Модель 4 C походить з офіційної документації Kubernetes. Це не просто навчальний фреймворк - це те, як проєкт Kubernetes думає про безпеку.

  • Cloud є фундаментом не просто так. У 2023 році неправильні конфігурації cloud IAM були відповідальні за більше порушень, ніж будь-який інший окремий фактор.

  • Втечі з контейнерів напрочуд поширені, коли контейнери працюють у привілейованому режимі. Вразливість runc CVE-2019-5736 дозволяла втечу з контейнера через шкідливий образ.

  • Вразливості коду, такі як Log4Shell (CVE-2021-44228), показали, як одна залежність може скомпрометувати мільйони систем, незалежно від безпеки інфраструктури.


ПомилкаЧому це шкодитьРішення
Зосередження лише на рівні ClusterІгнорує ризики Cloud та ContainerЗахищайте всі чотири рівні
Вважати, що хмарний провайдер все забезпечуєСпільна відповідальність варіюєтьсяЗнайте свої обов’язки
Запуск привілейованих контейнерівЛегка втеча з контейнераВикористовуйте Pod Security Standards
Не сканувати залежностіВразливості коду поширюютьсяВпровадьте SCA-сканування
Сприймати рівні як незалежніПорушення каскадуютьПроектуйте глибинний захист

  1. Які 4 C безпеки хмарних технологій у порядку від зовнішнього до внутрішнього?

    Відповідь Cloud, Cluster, Container, Code. Від інфраструктури до застосунку.
  2. Якщо атакуючий скомпрометує рівень Cluster, які рівні постраждають?

    Відповідь Рівні Container та Code вище нього. Рівень Cloud нижче залишається захищеним (хоча атакуючий може запитувати хмарні ресурси через кластер).
  3. Який рівень включає Kubernetes RBAC?

    Відповідь Рівень Cluster. RBAC - це механізм авторизації Kubernetes.
  4. Що означає “безпека каскадує вниз” у моделі 4 C?

    Відповідь Порушення на нижчому рівні (наприклад, Cloud) компрометує всі рівні вище нього (Cluster, Container, Code). Ви можете бути захищені лише настільки, наскільки захищений ваш найслабший рівень.
  5. У моделі спільної відповідальності для керованого Kubernetes, за що зазвичай відповідає клієнт?

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

Практична вправа: Категоризація контролів безпеки

Розділ «Практична вправа: Категоризація контролів безпеки»

Сценарій: Ваша команда захищає нове розгортання Kubernetes. Категоризуйте кожен контроль безпеки у правильний рівень.

Контроль безпекиРівень (Cloud/Cluster/Container/Code)
Правила фаєрволу VPC?
RBAC roles та bindings?
Запуск від не-root користувача?
Валідація введення в API?
Шифрування etcd?
Сканування вразливостей образів?
IAM-роль для сервісного облікового запису?
Network policies?
Відповіді
Контроль безпекиРівень
Правила фаєрволу VPCCloud - Мережа інфраструктури
RBAC roles та bindingsCluster - Авторизація Kubernetes
Запуск від не-root користувачаContainer - Безпека runtime
Валідація введення в APICode - Безпека застосунку
Шифрування etcdCluster - Сховище даних Kubernetes
Сканування вразливостей образівContainer - Безпека образів
IAM-роль для сервісного облікового записуCloud - Ідентифікація інфраструктури
Network policiesCluster - Мережа Kubernetes

Чотири C безпеки хмарних технологій:

РівеньОбсягКлючові контролі
CloudІнфраструктураIAM, VPC, шифрування, фаєрволи
ClusterKubernetesRBAC, PSS, etcd, логування аудиту
ContainerRuntimeОбрази, не-root, capabilities
CodeЗастосунокAuth, залежності, секрети

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

  • Безпека каскадує - порушення нижчого рівня компрометує верхні рівні
  • Глибинний захист - захищайте кожен рівень незалежно
  • Спільна відповідальність - знайте, за що ви відповідаєте
  • Найслабша ланка - ви захищені лише настільки, наскільки ваш найслабший рівень

Модуль 1.2: Безпека хмарного провайдера - Глибоке занурення у рівень Cloud, спільну відповідальність та безпеку інфраструктури.