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

Модуль 0.4: Стратегія іспиту CKS

Hands-On Lab Available
K8s Cluster advanced 30 min
Launch Lab ↗

Opens in Killercoda in a new tab

Складність: [ШВИДКО] — Критично для успіху на іспиті

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

Передумови: Сертифікація CKA, Модулі 0.1-0.3


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

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

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

  • Реалізувати стратегію трьох проходів, адаптовану для специфічних завдань безпеки CKS
  • Оцінити складність завдання, щоб вирішити пропустити чи розв’язувати протягом перших 30 секунд
  • Спроєктувати бюджет часу, що максимізує бали по всіх доменах CKS
  • Створити персональний чек-лист на день іспиту, що охоплює налаштування середовища та ярлики kubectl

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

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

Іспит CKS — це 2 години, ~15-20 завдань, 67% для проходження. Тиск часу реальний. Багато кандидатів, які знають матеріал, провалюються, бо погано управляють часом або застрягають на складних завданнях.

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


Стратегія безпекових трьох проходів

Розділ «Стратегія безпекових трьох проходів»
┌─────────────────────────────────────────────────────────────┐
│ СТРАТЕГІЯ ТРЬОХ ПРОХОДІВ CKS │
├─────────────────────────────────────────────────────────────┤
│ │
│ ПРОХІД 1: Швидкі перемоги безпеки (40-50 хв) │
│ Ціль: 1-3 хв на завдання │
│ ───────────────────────────────────────────────────────── │
│ ✓ Створити/змінити NetworkPolicy │
│ ✓ Виправити проблему з правами RBAC │
│ ✓ Застосувати існуючий профіль AppArmor │
│ ✓ Встановити поля securityContext │
│ ✓ Увімкнути журналювання аудиту │
│ ✓ Запустити сканування Trivy, визначити вразливості │
│ │
│ ПРОХІД 2: Завдання з інструментами (40-50 хв) │
│ Ціль: 4-6 хв на завдання │
│ ───────────────────────────────────────────────────────── │
│ ✓ Створити профіль seccomp з нуля │
│ ✓ Налаштувати Pod Security Admission │
│ ✓ Запустити kube-bench, виправити конкретні знахідки │
│ ✓ Створити NetworkPolicy з правилами egress │
│ ✓ Налаштувати ServiceAccount з мінімальними правами │
│ │
│ ПРОХІД 3: Складні сценарії (20-30 хв) │
│ Ціль: 7+ хв на завдання │
│ ───────────────────────────────────────────────────────── │
│ ✓ Написати власне правило Falco │
│ ✓ Розслідувати та відреагувати на інцидент виконання │
│ ✓ Багатокрокове зміцнення кластера │
│ ✓ Складна NetworkPolicy (кілька Pod, просторів імен) │
│ │
└─────────────────────────────────────────────────────────────┘

Класифікація завдань

Розділ «Класифікація завдань»

Навчіться розпізнавати складність завдання за секунди:

Завдання проходу 1 (Швидкі)

Розділ «Завдання проходу 1 (Швидкі)»
ПатернПрикладЧас
”Встановити runAsNonRoot”Додати поле до securityContext1-2 хв
”Створити NetworkPolicy, що дозволяє…”Одне правило ingress/egress2-3 хв
”Надати дозвіл на…”Створити Role/RoleBinding2-3 хв
”Застосувати профіль AppArmor”Додати анотацію1-2 хв
”Сканувати образ з Trivy”Виконати команду, повідомити знахідки2-3 хв

Завдання проходу 2 (Середні)

Розділ «Завдання проходу 2 (Середні)»
ПатернПрикладЧас
”Створити профіль seccomp”Написати JSON, послатися в pod4-5 хв
”Виправити всі збої kube-bench”Кілька змін конфігурації5-6 хв
”Налаштувати PSA для простору імен”Мітки + тестові Pod4-5 хв
”Обмежити ServiceAccount”RBAC + налаштування automount4-5 хв
”NetworkPolicy з кількома правилами”Ingress + egress5-6 хв

Завдання проходу 3 (Складні)

Розділ «Завдання проходу 3 (Складні)»
ПатернПрикладЧас
”Написати правило Falco для виявлення…”Власна умова + вивід7-10 хв
”Розслідувати інцидент”Прочитати журнали, визначити причину, виправити8-12 хв
”Зміцнити кластер на основі…”Кілька компонентів10-15 хв
”Ізолювати скомпрометований Pod”NetworkPolicy + аналіз8-10 хв

┌─────────────────────────────────────────────────────────────┐
│ БЮДЖЕТ 120 ХВИЛИН │
├─────────────────────────────────────────────────────────────┤
│ │
│ 0:00 ─────── Початок проходу 1 ─────── │
│ │ │
│ │ Швидкі перемоги: RBAC, базова NetworkPolicy, │
│ │ securityContext, анотації AppArmor │
│ │ │
│ 0:50 ─────── Початок проходу 2 ─────── │
│ │ │
│ │ Завдання з інструментами: seccomp, PSA, │
│ │ виправлення kube-bench, складні NetworkPolicies, │
│ │ зміцнення ServiceAccount │
│ │ │
│ 1:40 ─────── Початок проходу 3 ─────── │
│ │ │
│ │ Складні: правила Falco, розслідування інцидентів, │
│ │ багатокрокове зміцнення │
│ │ │
│ 2:00 ─────── Кінець іспиту ─────── │
│ │
│ Залиште 5 хв в кінці для перевірки! │
│ │
└─────────────────────────────────────────────────────────────┘

Поради, специфічні для безпеки

Розділ «Поради, специфічні для безпеки»

1. Знайте свою документацію

Розділ «1. Знайте свою документацію»
Terminal window
# Bookmark these in exam browser:
# NetworkPolicy examples
kubernetes.io/docs/concepts/services-networking/network-policies/
# Pod Security Standards
kubernetes.io/docs/concepts/security/pod-security-standards/
# seccomp profiles
kubernetes.io/docs/tutorials/security/seccomp/
# AppArmor
kubernetes.io/docs/tutorials/security/apparmor/
# Trivy
aquasecurity.github.io/trivy/
# Falco
falco.org/docs/

2. Шаблонні команди напоготові

Розділ «2. Шаблонні команди напоготові»
Terminal window
# Trivy scan
trivy image --severity HIGH,CRITICAL <image>
# kube-bench
./kube-bench run --targets=master
# Check AppArmor profiles
cat /sys/kernel/security/apparmor/profiles
# Check seccomp support
grep SECCOMP /boot/config-$(uname -r)
# Audit logs location
/var/log/kubernetes/audit.log

3. Поширені поля Security Context

Розділ «3. Поширені поля Security Context»
# Memorize this pattern
securityContext:
runAsNonRoot: true
runAsUser: 1000
readOnlyRootFilesystem: true
allowPrivilegeEscalation: false
capabilities:
drop: ["ALL"]
# Default deny all ingress
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: default-deny-ingress
spec:
podSelector: {}
policyTypes:
- Ingress
# Allow specific pod
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: allow-app
spec:
podSelector:
matchLabels:
app: web
ingress:
- from:
- podSelector:
matchLabels:
app: api
ports:
- port: 80

Поради щодо середовища іспиту

Розділ «Поради щодо середовища іспиту»

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

Розділ «Розташування інструментів безпеки»
ІнструментРозташування на іспиті
TrivyПопередньо встановлений або наданий
FalcoПрацює в кластері або можна встановити
kube-benchЗавантажити або маніфест Job
kubesecМоже потребувати завантаження

Розташування файлів

Розділ «Розташування файлів»
ФайлШлях
Маніфест API server/etc/kubernetes/manifests/kube-apiserver.yaml
Конфігурація kubelet/var/lib/kubelet/config.yaml
Політика аудиту/etc/kubernetes/audit-policy.yaml
Профілі seccomp/var/lib/kubelet/seccomp/
Профілі AppArmor/etc/apparmor.d/

Пропускайте негайно, якщо:

  • Завдання вимагає інструмент, яким ви ніколи не користувалися
  • Складне правило Falco з незнайомим синтаксисом
  • Мульти-простір імен NetworkPolicy з нечіткими вимогами

Поверніться, якщо дозволить час. Часткові бали існують — здайте хоч щось.


Контрольний список перевірки

Розділ «Контрольний список перевірки»

Перед переходом до наступного завдання:

Terminal window
# For pods/deployments
kubectl get pods -n <namespace> # Running?
# For NetworkPolicy
kubectl describe networkpolicy <name> # Applied?
# For RBAC
kubectl auth can-i <verb> <resource> --as=<user> # Works?
# For security context
kubectl get pod <name> -o yaml | grep -A 10 securityContext
# For Trivy
trivy image <image> # Scans correctly?

  • 67% прохідний бал означає, що можна пропустити ~5-6 завдань з 15-20 і все ще пройти. Не панікуйте, якщо щось пропускаєте.

  • Часткові бали можливі. Навіть неповні відповіді можуть принести бали. Завжди здавайте хоч щось.

  • Іспит з відкритими ресурсами. Ваш виклик — знайти інформацію швидко, а не запам’ятати все.

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


ПомилкаЧому це шкодитьРішення
Починати зі складних завданьВитрачений час, втрачена впевненістьСтратегія трьох проходів
Не читати завдання повністюПропуск вимогЧитайте двічі перед тим, як друкувати
Забути простір іменЗміни в неправильному просторі іменЗавжди -n namespace
Не перевірятиЧасткові рішенняПеревіряйте перед переходом
Надмірне ускладненняПростого рішення було достатньоВідповідайте вимогам точно

  1. У стратегії трьох проходів, які завдання слід робити першими?

    Відповідь Швидкі перемоги (Прохід 1): Прості виправлення RBAC, базові NetworkPolicies, доповнення securityContext, додавання анотацій AppArmor. Завдання на 1-3 хвилини кожне.
  2. Скільки часу слід залишити на Прохід 3 (складні завдання)?

    Відповідь 20-30 хвилин. Складні завдання на кшталт правил Falco та розслідування інцидентів потребують більше часу. Але не починайте з них — заробляйте бали швидкими перемогами спершу.
  3. Що робити, якщо зустрічаєте повністю незнайоме завдання?

    Відповідь Позначте його та пропустіть. Поверніться в Проході 3, якщо дозволить час. Витратити 15 хвилин на одне завдання, яке не можете розв'язати, — це витрата часу, краще витраченого на завдання, які можете виконати.
  4. Чому потрібно перевіряти кожне завдання перед переходом?

    Відповідь Часткові рішення не зараховуються. NetworkPolicy, яка не застосовується, Pod, який не запускається, або RBAC, що не працює, отримують нуль балів. Перевірка це виявляє.

Завдання: Практикуйте управління часом із зразковими завданнями.

Terminal window
# Simulate exam conditions:
# Set a 15-minute timer for these 5 tasks
# START YOUR TIMER NOW!
# Task 1 (2 min): Create NetworkPolicy
kubectl create namespace secure
cat <<EOF | kubectl apply -f -
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: deny-all
namespace: secure
spec:
podSelector: {}
policyTypes:
- Ingress
EOF
# Verify:
kubectl get networkpolicy -n secure
# Task 2 (2 min): Fix security context
cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: Pod
metadata:
name: insecure-pod
namespace: secure
spec:
containers:
- name: app
image: busybox
command: ["sleep", "3600"]
securityContext:
runAsUser: 1000
runAsNonRoot: true
EOF
# Verify:
kubectl get pod insecure-pod -n secure -o jsonpath='{.spec.containers[0].securityContext}'
echo ""
# Task 3 (3 min): RBAC
kubectl create serviceaccount app-sa -n secure
cat <<EOF | kubectl apply -f -
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: pod-reader
namespace: secure
rules:
- apiGroups: [""]
resources: ["pods"]
verbs: ["get", "list", "watch"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: read-pods
namespace: secure
subjects:
- kind: ServiceAccount
name: app-sa
namespace: secure
roleRef:
kind: Role
name: pod-reader
apiGroup: rbac.authorization.k8s.io
EOF
# Verify:
kubectl auth can-i list pods -n secure --as=system:serviceaccount:secure:app-sa
# Task 4 (4 min): Trivy scan
# (Requires Trivy installed - skip if not available)
trivy image --severity CRITICAL nginx:1.20 2>/dev/null || echo "Trivy not installed - would scan for CVEs"
# Task 5 (4 min): AppArmor
cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: Pod
metadata:
name: web
namespace: secure
annotations:
container.apparmor.security.beta.kubernetes.io/web: runtime/default
spec:
containers:
- name: web
image: nginx:alpine
securityContext:
runAsNonRoot: false # nginx needs root initially
EOF
# Verify:
kubectl get pod web -n secure -o jsonpath='{.metadata.annotations}'
echo ""
# STOP TIMER - How did you do?
echo "=== Task Summary ==="
kubectl get networkpolicy,pods,role,rolebinding,sa -n secure
# Cleanup
kubectl delete namespace secure

Критерії успіху: Виконайте щонайменше 4/5 завдань за 15 хвилин.


Стратегія трьох проходів для CKS:

  • Прохід 1 (50 хв): Швидкі перемоги — RBAC, базова NetworkPolicy, securityContext
  • Прохід 2 (50 хв): Завдання з інструментами — seccomp, PSA, kube-bench
  • Прохід 3 (20 хв): Складні — правила Falco, реагування на інциденти

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

  • Заробляйте бали рано швидкими перемогами
  • Пропускайте незнайомі завдання, повертайтеся пізніше
  • Перевіряйте кожне рішення
  • Використовуйте документацію ефективно
  • Залиште час для перевірки

Пам’ятайте: 67% для проходження. Ви можете пропустити деякі завдання і все ще успішно скласти.


Частина 0 завершена!

Розділ «Частина 0 завершена!»

Ви закінчили розділ Налаштування середовища. Тепер у вас є:

  • Розуміння формату іспиту CKS та доменів
  • Лабораторія безпеки з основними інструментами
  • Вправність із Trivy, Falco, kube-bench
  • Стратегія іспиту для завдань з безпеки

Наступна частина: Частина 1: Налаштування кластера — Глибоке занурення в мережеву безпеку.