Proč bezpečnost kontejnerů není jen o Dockeru
Kontejnerizace (Docker, containerd, CRI-O) a orchestrátory (Kubernetes) přinášejí rychlost a škálovatelnost, zároveň však zavádějí nové bezpečnostní hrozby: sdílené jádro systému, dynamickou síťovou topologii, složitý dodavatelský řetězec softwaru a vysokou míru automatizace. Cílem tohoto článku je formulovat komplexní zásady pro bezpečný návrh, sestavení, nasazení a provoz kontejnerů i celých klastrů. Přístup je založen na principu „defense-in-depth“: od kódu a image přes runtime a síť až po správu řízení a audit.
Model hrozeb v prostředí kontejnerů
- Únik z kontejneru: zneužití capability, zranitelností jádra nebo mountovacích bodů k úniku na hostitelský systém.
- Malware v image: podvržené či kompromitované základní image, knihovny nebo nástroje v procesu sestavení.
- Laterální pohyb: prolomení jednoho podu/služby vede k pivotaci napříč sítí klastru.
- Exfiltrace tajemství: únik secrets z proměnných prostředí, svazků nebo metadat
kubelet. - Útoky v dodavatelském řetězci: zneužití CI/CD pipeline, nedostatečná verifikace artefaktů, typosquatting v registru.
- Konfigurační chyby: privilegované pody, otevřené dashboardy, nesprávné RBAC, nešifrované etcd.
Bezpečný dodavatelský řetězec: od kódu po image
- Minimální základní image: distroless, ubi-minimal nebo alpine (dávejte pozor na kompatibilitu s musl); odstranění kompilátorů, shellů a správců balíčků v runtime.
- Reprodukovatelné buildy a SBOM: generujte a ukládejte Software Bill of Materials (CycloneDX/SPDX) pro každou image; mapujte závislosti na CVE.
- Podpisy a atestace: podepisujte image a manifesty (Sigstore/cosign), uchovávejte provenance (SLSA), vynucujte verifikaci při stahování (Policy Controller).
- Skener zranitelností: Trivy/Grype/Clair v CI i v registru; přerušení build procesu při kritických nálezech, avšak s workflow pro přijetí rizika (risk acceptance).
- Deterministická verze: používejte digesty (
@sha256:…) místo:latest; zapněte tag immutability v registru. - Izolace buildů: BuildKit/Kaniko bez privilegií, izolované sítě, „build secrets“ předávané přes
--secret(nikdy nekopírovat do image).
Zásady Dockerfile a runtime hardening
USERne-root: definujte neprivilegovaného uživatele; vyhněte se spouštění procesů jakorootza běhu.- Read-only filesystem: používejte readOnlyRootFilesystem, zapisujte pouze do explicitně definovaných svazků.
- Drop capabilities: ponechte minimální množinu capability (obvykle všechny odebrat a přidat jen nezbytné); zejména zakázat
NET_RAW,SYS_ADMIN. - Seccomp a LSM: použijte výchozí seccomp profil RuntimeDefault, aplikujte AppArmor/SELinux profily; vyhněte se
privileged: true. - Umístění tajemství: nikdy je neukládejte do image; načítejte z tajných svazků/CSI, ne z proměnných prostředí.
- Healthcheck: definujte
HEALTHCHECKpro detekci degradace služby a rychlejší náhradu podů.
Správa tajemství a klíčů
- Kubernetes Secrets: šifrování v etcd (envelope encryption) s podporou KMS; preferujte mountování tajemství před proměnné prostředí.
- Rotace a princip nejmenších práv: krátké časové platnosti (TTL), automatická rotace, omezení přístupu na konkrétní namespace a službu.
- Externí trezory: HashiCorp Vault, Cloud KMS; první přístup přes krátkodobé identity workloads (OIDC/JWT audiencing).
Síťová bezpečnost a izolace
- NetworkPolicy: omezte ingress a egress na úrovni podu nebo namespace; implementujte výchozí zamítnutí (default-deny) a výslovné povolení.
- CNI a eBPF: nástroje jako Cilium podporují L3/L7 politiky, audit a viditelnost s nízkou režijní zátěží.
- mTLS a identity: service mesh (Istio, Linkerd) zajišťuje šifrování provozu, vzájemnou autentizaci peerů a autorizaci na úrovni služby.
- Řízení Ingress/Egress: WAF, rate limit, validace hlaviček; egress gateway s allowlistem povolených cílů.
Kubernetes: politika, standardy a princip „secure by default“
- Pod Security Standards: používejte úroveň restricted (runAsNonRoot, readOnlyFS, zákaz privilege escalation, omezené capability).
- Admission kontrola: OPA Gatekeeper, Kyverno pro vynucování politik (zákaz
hostPath,hostNetwork, vyžadováníseccompProfile= RuntimeDefault, limity prostředků). - RBAC s minimálními právy: jemnozrnná Role/RoleBinding; oddělené service accounty pro jednotlivé workloady.
- Namespace a tenancy: oddělení prostředí (dev/test/prod); LimitRange a ResourceQuota pro prevenci „noisy neighbor“ a DoS útoků.
- Šifrování „at-rest“: etcd komunikuje pouze přes mTLS, firewall s omezeným přístupem, pravidelná rotace certifikátů.
- Kubelet a API server: auditní logy, vynucená autentizace a autorizace, vypnutí nepotřebných admission plugins.
Hardening nodů a operačního systému
- Minimální hostitelský OS: imutabilní buildy (OSTree, Golden Image), pravidelné aktualizace jádra, LSM (SELinux enforcing, AppArmor).
- Oddělené runtime: preferujte containerd/CRI-O s aktuální verzí; použití režimu rootless tam, kde je vhodné.
- Sysctl a mounty: zakázat nebezpečné sysctl parametry, nepovolovat
hostPID/hostIPC; mounty s příznakynoexec,nodev,nosuid. - Přístup k nodům: bez přímého SSH (nebo pouze přes bastion/SSM), přístup řízen IAM; oddělení control plane a worker nodů.
Observabilita, detekce a runtime ochrana
- Runtime senzory: Falco, Tetragon pro detekci podezřelých systémových volání (např.
execshellů, modifikace/proc). - Audit a tracing: Kubernetes auditní logy, certifikační rotace mTLS, OpenTelemetry pro korelaci požadavků.
- Metriky a SLO: zpoždění event-loop (u Node.js), latence p95/p99, chybovost, počet restartů, OOMKills; alerty na odchylky.
Řízení zranitelností a patch management
- Automatizované skenování: každá nová image i běžící workloady; kontinuální re-skany při objevování nových CVE.
- Rychlá obměna: rolling update s krátkou průměrnou dobou opravy (MTTP); odstranění zastaralých podů.
- Politika základních image: pravidelná obnova ze čerstvých základních vrstev, eliminace „snowflake“ image.
Governance, compliance a dokumentace
- Standardy a benchmarky: CIS Benchmark pro Docker a Kubernetes, interní bezpečnostní standardy.
- Politika přístupu: break-glass účty s časově omezeným přístupem a plným auditem.
- Evidence a schvalování: změny politik přes GitOps, schvalování přes pull requesty, podepisování commitů.
GitOps a vynucení bezpečnosti v dodavatelském řetězci
- Git jako jediný zdroj pravdy: Argo CD, Flux; klastry se synchronizují z podepsaných manifestů.
- Policy as Code: pravidla Gatekeeper/Kyverno v repozitáři, review a testy; CI validuje dodržování politik.
- ImagePolicyWebhook/Verifikace: nasazovat pouze podepsané image s požadovanými atestacemi (SBOM, SLSA).
Data a úložiště: bezpečné svazky a CSI
- CSI ovladače: vyžadujte mTLS a autorizaci; izolace svazků na úrovni PVC a namespace.
- Šifrování: šifrujte per-volume (cloud KMS), správa klíčů mimo klastr; zálohy mimo lokalitu a pravidelné testování obnovy.
- FS oprávnění:
fsGroup, připojení jakoreadOnly, zákazhostPaths výjimkou řízených případů.
Škálování, dostupnost a odolnost
- Resource limity: definujte
requestsalimits; předejdete OOM a DoS útokům v rámci klastru. - Disrupční rozpočty: PodDisruptionBudget a topology spread constraints pro vysokou dostupnost (HA).
- Rate limiting a zpětný tlak: chrání backendy; circuit breaker ve service meshi.
Testování a validace bezpečnosti
- Konfigurační testy: kube-bench, kubescape, polaris pro statickou analýzu manifestů.
- Penetrační testy: simulace útoků uvnitř podu (testování útěku z kontejneru), laterální pohyb, exfiltrace dat.
- Chaos a DR cvičení: simulace výpadků nodů, ztráty snapshotů etcd, testy obnovy z backupů etcd/registry.
Incident response a forenzní připravenost
- Forenzní postupy: okamžitý snapshot podu (ephemeral kontejnery), ukládání dat z
/proc, síťových spojení a digestů image. - Izolace: aplikace network policy pro izolaci, omezení replik, pozastavení rolloutů CI.
- Post-mortem: provádějte bez hledání viníka; identifikace příčiny, aktualizace politik, doplnění testů a alertů.
Metriky a KPI bezpečnosti kontejnerů
- MTTP/MTTR pro CVE: doba detekce a opravy kritických zranitelností v image.
- Míra dodržování politik: podíl workloadů v režimu restricted, procento podepsaných image, podíl podů s readOnlyFS.
- Hygiena tajemství: výskyt tajemství v env vs. volume, průměrná doba životnosti (TTL), míra rotace tajemství.
- Síťová expozice: procento namespace s default-deny politikou, počet povolených egress cílů.
Kontrolní seznam pro bezpečné nasazení
- Image vychází z minimální základní vrstvy, je podepsaná a doplněná o SBOM; používá digest, nikoli
:latest. - Manifest odpovídá restricted PSS:
runAsNonRoot,readOnlyRootFilesystem,allowPrivilegeEscalation: false,seccompProfile: RuntimeDefault. - RBAC a ServiceAccount mají jen nezbytná oprávnění;
automountServiceAccountToken: falsetam, kde není potřeba. - NetworkPolicy realizuje default-deny a explicitní povolení; mezi službami používá mTLS.
- Secrets jsou uloženy v KMS-šifrovaných Secrets nebo v externím trezoru; žádná tajemství v image ani v logách.
- Definovány resource
requests/limits; používané PDB a readiness/liveness pro samoopravování. - Auditní logy, metriky a alerty aktivní; nasazena runtime detekce anomálií (Falco).
- Etcd a API server chráněny mTLS, audit zapnut; nody hardenované a oddělené.
Závěr: bezpečnost jako průběžná schopnost
Bezpečnost kontejnerů není jednorázový checklist, ale soubor návyků: kurátorovaný dodavatelský řetězec, princip nejmenších práv, politiky vynucované automatizací, průběžné skenování a pozorovatelnost. Kombinací hardeningu image i runtime, síťových a datových kontrol, robustní správy tajemství a řízení zranitelností vzniká prostředí odolné vůči moderním útokům, které zároveň zachovává rychlost a pružnost, jež vás k použití kontejnerizace vedly.



























