initial commit
This commit is contained in:
95
03-CRD/SympoziumPolicy.md
Normal file
95
03-CRD/SympoziumPolicy.md
Normal file
@@ -0,0 +1,95 @@
|
||||
# SympoziumPolicy
|
||||
|
||||
#sympozium #crd #policy #security
|
||||
|
||||
## Definicja
|
||||
|
||||
`SympoziumPolicy` definiuje **polityki governance** nad zachowaniem agentów: sandbox requirements, network isolation, tool access i resource limits.
|
||||
|
||||
**Plik:** `api/v1alpha1/sympoziumpolicy_types.go`
|
||||
|
||||
## Spec
|
||||
|
||||
```yaml
|
||||
apiVersion: sympozium.ai/v1alpha1
|
||||
kind: SympoziumPolicy
|
||||
metadata:
|
||||
name: restrictive
|
||||
spec:
|
||||
sandboxPolicy:
|
||||
required: true # Sandbox obowiązkowy
|
||||
defaultImage: sandbox:v1
|
||||
maxCPU: "1"
|
||||
maxMemory: "1Gi"
|
||||
allowHostMounts: false
|
||||
seccompProfile:
|
||||
type: RuntimeDefault
|
||||
agentSandboxPolicy: # Agent Sandbox (gVisor/Kata)
|
||||
required: true
|
||||
defaultRuntimeClass: gvisor
|
||||
allowedRuntimeClasses: [gvisor, kata]
|
||||
|
||||
subagentPolicy:
|
||||
maxDepth: 3 # Max zagnieżdżenie sub-agentów
|
||||
maxConcurrent: 5 # Max równoległych
|
||||
|
||||
toolGating:
|
||||
defaultAction: deny # deny/allow/ask
|
||||
rules:
|
||||
- tool: read_file
|
||||
action: allow
|
||||
- tool: execute_command
|
||||
action: deny
|
||||
- tool: write_file
|
||||
action: ask
|
||||
|
||||
featureGates:
|
||||
memory: true
|
||||
web-endpoint: false
|
||||
channels: true
|
||||
|
||||
networkPolicy:
|
||||
denyAll: true # Deny-all egress
|
||||
allowDNS: true # Wyjątek: DNS
|
||||
allowEventBus: true # Wyjątek: NATS
|
||||
allowedEgress: # Dodatkowe wyjątki
|
||||
- host: "api.openai.com"
|
||||
port: 443
|
||||
```
|
||||
|
||||
## Enforcement
|
||||
|
||||
Polityki są enforced przez **admission webhook** - nie at runtime, ale **at admission time** (przed utworzeniem poda):
|
||||
|
||||
```
|
||||
AgentRun CR → API Server → Admission Webhook → SympoziumPolicy check
|
||||
├── PASS → CR created
|
||||
└── DENY → CR rejected
|
||||
```
|
||||
|
||||
## Presetowe polityki
|
||||
|
||||
| Polityka | Kto | Kluczowe reguły |
|
||||
|----------|-----|-----------------|
|
||||
| **Permissive** | Dev, demo | Wszystkie tools dozwolone, brak sandbox requirement |
|
||||
| **Default** | Ogólne użycie | `execute_command` wymaga approval, reszta dozwolona |
|
||||
| **Restrictive** | Produkcja | Wszystko domyślnie denied, whitelist, sandbox required |
|
||||
|
||||
## NetworkPolicy
|
||||
|
||||
Polityka `networkPolicy` generuje Kubernetes NetworkPolicy:
|
||||
- **denyAll: true** - agent pods nie mają dostępu do internetu ani innych podów
|
||||
- **allowDNS: true** - wyjątek dla rozwiązywania nazw
|
||||
- **allowEventBus: true** - wyjątek dla NATS (tylko IPC bridge)
|
||||
- **allowedEgress** - whitelist konkretnych endpointów (np. API providerów LLM)
|
||||
|
||||
## Status
|
||||
|
||||
```yaml
|
||||
status:
|
||||
boundInstances: 5 # Ile instancji używa tej polityki
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
Powiązane: [[Model bezpieczeństwa Defence-in-Depth]] | [[Admission Webhooks i polityki]] | [[NetworkPolicy i izolacja sieciowa]]
|
||||
Reference in New Issue
Block a user