Files
obsidian-sympozium/05-Bezpieczeństwo/Model bezpieczeństwa Defence-in-Depth.md
2026-03-25 00:05:57 +01:00

5.5 KiB

Model bezpieczeństwa Defence-in-Depth

#sympozium #security #defence-in-depth

Filozofia

Sympozium implementuje defence-in-depth - wiele niezależnych warstw bezpieczeństwa, gdzie przełamanie jednej nie daje dostępu do systemu.

Warstwy bezpieczeństwa

┌───────────────────────────────────────────────┐
│ Warstwa 7: Agent Sandbox (gVisor/Kata)        │ ← Izolacja kernela
│  ┌───────────────────────────────────────────┐│
│  │ Warstwa 6: NetworkPolicy (deny-all)       ││ ← Izolacja sieciowa
│  │  ┌───────────────────────────────────────┐││
│  │  │ Warstwa 5: Admission Webhook          │││ ← Walidacja przed tworzeniem
│  │  │  ┌───────────────────────────────────┐│││
│  │  │  │ Warstwa 4: Ephemeral RBAC         ││││ ← Efemeryczne credentials
│  │  │  │  ┌───────────────────────────────┐││││
│  │  │  │  │ Warstwa 3: Pod SecurityContext │││││ ← Hardened container
│  │  │  │  │  ┌───────────────────────────┐│││││
│  │  │  │  │  │ Warstwa 2: Sidecar isol.  ││││││ ← Separacja credentials
│  │  │  │  │  │  ┌───────────────────────┐│││││││
│  │  │  │  │  │  │ Warstwa 1: Ephemeral  ││││││││ ← Krótki czas życia
│  │  │  │  │  │  │ pod lifecycle         ││││││││
│  │  │  │  │  │  └───────────────────────┘│││││││
│  │  │  │  │  └───────────────────────────┘││││││
│  │  │  │  └───────────────────────────────┘│││││
│  │  │  └───────────────────────────────────┘││││
│  │  └───────────────────────────────────────┘│││
│  └───────────────────────────────────────────┘││
└───────────────────────────────────────────────┘│
                                                 │
Multi-tenancy (namespaced CRDs + K8s RBAC)  ─────┘

Szczegóły warstw

Warstwa 1: Ephemeral Pod Lifecycle

  • Każdy run = nowy pod = czyste środowisko
  • Brak persistent state w podzie
  • Automatyczny cleanup po zakończeniu
  • Atak musi się zmieścić w jednym runie

Warstwa 2: Sidecar Pattern Isolation

  • Agent NIE MA credentials K8s API
  • Tylko skill sidecar ma RBAC
  • Tool calls przechodzą przez IPC (filesystem → NATS)
  • Compromised agent nie ma bezpośredniego dostępu do klastra

Warstwa 3: Pod SecurityContext

securityContext:
  runAsNonRoot: true
  runAsUser: 1000
  readOnlyRootFilesystem: true
  allowPrivilegeEscalation: false
  capabilities:
    drop: ["ALL"]
  seccompProfile:
    type: RuntimeDefault

Warstwa 4: Ephemeral RBAC

  • Credentials żyją TYLKO przez czas runu
  • Least-privilege (deklarowane w SkillPack)
  • Namespace-scoped (ownerReference GC) + Cluster-scoped (label-based cleanup)
  • Brak standing god-role

Warstwa 5: Admission Webhook

  • SympoziumPolicy enforced PRZED tworzeniem poda
  • Tool gating (allow/deny/ask per tool)
  • Sandbox requirements
  • Feature gates
  • Policy nie może być obejścia at runtime

Warstwa 6: NetworkPolicy

  • Deny-all egress na agent pods
  • Tylko IPC bridge ma dostęp do NATS
  • Whitelist konkretnych endpointów (API providerów)
  • Agent nie może sięgnąć do internetu ani innych podów

Warstwa 7: Agent Sandbox (opcjonalna)

  • gVisor: user-space kernel - agent nie komunikuje się z host kernel
  • Kata Containers: lightweight VM - pełna izolacja na poziomie hypervisora
  • Warm pools eliminują cold-start penalty
  • Nawet container escape nie daje dostępu do hosta

Multi-tenancy

Dodatkowa warstwa ortogonalna do powyższych:

  • CRDs namespace-scoped
  • Standard K8s RBAC kontroluje kto tworzy agentów
  • Każdy tenant (SympoziumInstance) izolowany
  • ownerReferences zapobiegają cross-tenant access

Porównanie z alternatywami

Warstwa Sympozium kagent LangChain
Ephemeral lifecycle Job per run Persistent engine In-process
Sidecar isolation Tak Nie Nie
SecurityContext Hardened Standard N/A
Ephemeral RBAC Tak Standing SA N/A
Admission webhook SympoziumPolicy Nie Nie
NetworkPolicy deny-all Nie Nie
Kernel sandbox gVisor/Kata Nie Nie

Powiązane: Agent Sandbox - gVisor i Kata | Efemeryczny RBAC per-run | NetworkPolicy i izolacja sieciowa