11. Virtualizace a kontejnerizace

Co se po vás bude chtít?

Virtualizace

Základní pojmy

  • Co je virtualizace:

    • Abstrakce hardwarových prostředků
    • Běh více operačních systémů na jednom fyzickém stroji
    • Izolace prostředí
  • Typy virtualizace:

    • Plná virtualizace - kompletní emulace HW
    • Paravirtualizace - upravený guest OS
    • Hardwarová virtualizace - podpora v CPU (VT-x, AMD-V)

Hypervisory

  • Typ 1 (bare-metal):

    • Běží přímo na hardware
    • Příklady: VMware ESXi, Microsoft Hyper-V, Xen, KVM
    • Použití: servery, datacentra
  • Typ 2 (hosted):

    • Běží nad hostitelským OS
    • Příklady: VirtualBox, VMware Workstation
    • Použití: vývoj, testování, desktopy

Komponenty virtuálního stroje

  • Virtuální hardware:

    • vCPU, vRAM, virtuální disky
    • Virtuální síťové adaptéry
    • Virtuální storage controllers
  • Snapshoty:

    • Zachycení stavu VM v čase
    • Možnost návratu k předchozímu stavu
    • Využití při testování a zálohování

Síťování ve virtualizaci

  • Typy virtuálních sítí:
    • NAT - překlad adres přes host
    • Bridged - přímé připojení k fyzické síti
    • Host-only - izolovaná síť jen s hostem
    • Internal - komunikace pouze mezi VM

Kontejnerizace

Základní pojmy

  • Co je kontejner:

    • Izolované prostředí pro běh aplikace
    • Sdílí kernel s hostitelským systémem
    • Lehčí než virtuální stroje
  • Rozdíl VM vs kontejner:

    • VM: vlastní OS, těžší, pomalejší start
    • Kontejner: sdílený kernel, lehký, rychlý start

Docker

  • Základní koncepty:

    • Image - šablona pro vytvoření kontejneru
    • Container - běžící instance image
    • Dockerfile - skript pro vytvoření image
    • Registry - úložiště images (Docker Hub)
  • Základní příkazy:

    • docker pull - stažení image
    • docker run - spuštění kontejneru
    • docker ps - výpis běžících kontejnerů
    • docker build - sestavení image z Dockerfile
    • docker stop/start - zastavení/spuštění kontejneru
  • Dockerfile:

    • FROM - základní image
    • RUN - spuštění příkazu při buildu
    • COPY/ADD - kopírování souborů
    • EXPOSE - definice portů
    • CMD/ENTRYPOINT - příkaz při spuštění
  • Volumes:

    • Persistentní úložiště dat
    • Sdílení dat mezi kontejnery
    • Mapování hostitelských adresářů
  • Networking:

    • Bridge network (výchozí)
    • Host network
    • Overlay network (pro clustery)

Docker Compose

  • Účel:

    • Definice multi-kontejnerových aplikací
    • Konfigurace v YAML souboru
    • Orchestrace více služeb
  • Základní použití:

    • docker-compose up - spuštění služeb
    • docker-compose down - zastavení služeb
    • Definice závislostí mezi službami

Kubernetes (základy)

  • Co je Kubernetes:

    • Orchestrace kontejnerů
    • Automatické škálování
    • Self-healing, load balancing
  • Základní koncepty:

    • Pod - nejmenší jednotka, jeden nebo více kontejnerů
    • Service - síťový přístup k podům
    • Deployment - definice desired state
    • Namespace - logické oddělení prostředků

Bezpečnost virtualizace a kontejnerů

Bezpečnost VM

  • Izolace:

    • Oddělení VM od hostitele
    • Oddělení VM mezi sebou
    • VM escape jako bezpečnostní riziko
  • Hardening:

    • Aktualizace hypervisoru
    • Omezení sdílených prostředků
    • Síťová segmentace

Bezpečnost kontejnerů

  • Image security:

    • Použití důvěryhodných base images
    • Skenování images na zranitelnosti
    • Minimalizace velikosti image
  • Runtime security:

    • Neprivilegované kontejnery
    • Read-only filesystémy
    • Resource limits (CPU, memory)
    • Seccomp, AppArmor, SELinux
  • Bezpečnostní rizika:

    • Escape z kontejneru
    • Zranitelnosti v base image
    • Špatná konfigurace
    • Secrets management

Využití v kybernetické bezpečnosti

  • Izolované testovací prostředí:

    • Sandboxing malware
    • Penetrační testování
    • Bezpečná analýza
  • Reprodukovatelnost:

    • Konzistentní prostředí pro testování
    • CI/CD pro bezpečnostní nástroje
  • Honeypoty:

    • Snadné nasazení pomocí kontejnerů
    • Rychlá obnova po kompromitaci

Připrav se na HAXAGONu

Docker:

  • Docker - Úvod
  • Docker - První kontejner
  • Docker - Images
  • Docker - Dockerfile
  • Docker - Docker Hub
  • Docker - Compose
  • Docker - Volumes
  • Docker - Environment variables
  • Docker - Network
  • Docker - Opakování