113 lines
5.5 KiB
Markdown
113 lines
5.5 KiB
Markdown
# 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|Sidecar]] 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]]
|
|
```yaml
|
|
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|ownerRef]] 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|Kata]]: 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]]
|