78 lines
2.2 KiB
Markdown
78 lines
2.2 KiB
Markdown
# Admission Webhook
|
|
|
|
#kubernetes #security #api #słownik
|
|
|
|
## Co to jest?
|
|
|
|
**Admission Webhook** to mechanizm Kubernetes pozwalający na **przechwycenie i walidację/modyfikację żądań do API servera** zanim zasób zostanie zapisany w etcd.
|
|
|
|
## Typy
|
|
|
|
### Validating Admission Webhook
|
|
- **Sprawdza** czy żądanie jest prawidłowe
|
|
- Może ALLOW lub DENY
|
|
- Nie modyfikuje żądania
|
|
- Przykład: "Czy AgentRun spełnia SympoziumPolicy?"
|
|
|
|
### Mutating Admission Webhook
|
|
- **Modyfikuje** żądanie przed walidacją
|
|
- Może dodawać, usuwać lub zmieniać pola
|
|
- Przykład: "Dodaj domyślny SecurityContext do poda"
|
|
|
|
## Przepływ
|
|
|
|
```
|
|
kubectl apply -f agentrun.yaml
|
|
↓
|
|
API Server:
|
|
1. Authentication (kto?)
|
|
2. Authorization / RBAC (czy może?)
|
|
3. → Mutating Webhooks (modyfikacja)
|
|
4. Schema Validation (OpenAPI)
|
|
5. → Validating Webhooks (walidacja)
|
|
6. Zapis do etcd
|
|
```
|
|
|
|
## Kluczowe cechy
|
|
|
|
- **Synchroniczne** - żądanie czeka na odpowiedź webhooka
|
|
- **Fail-open / fail-closed** - konfiguracja co robić gdy webhook jest niedostępny
|
|
- **TLS required** - webhook musi serwować HTTPS (cert-manager w Sympozium)
|
|
- **Scope** - filtrowanie po zasobach, operacjach, namespace'ach
|
|
|
|
## Przykład konfiguracji
|
|
|
|
```yaml
|
|
apiVersion: admissionregistration.k8s.io/v1
|
|
kind: ValidatingWebhookConfiguration
|
|
metadata:
|
|
name: sympozium-webhook
|
|
webhooks:
|
|
- name: validate.sympozium.ai
|
|
rules:
|
|
- apiGroups: ["sympozium.ai"]
|
|
resources: ["agentruns"]
|
|
operations: ["CREATE", "UPDATE"]
|
|
clientConfig:
|
|
service:
|
|
name: sympozium-webhook
|
|
namespace: sympozium-system
|
|
path: /validate-agent-pods
|
|
failurePolicy: Fail # Odrzuć jeśli webhook niedostępny
|
|
```
|
|
|
|
## Użycie w Sympozium
|
|
|
|
Sympozium używa admission webhook do enforcowania [[SympoziumPolicy]]:
|
|
|
|
- Sprawdza czy [[AgentRun]] spełnia politykę bezpieczeństwa
|
|
- Waliduje tool gating (allow/deny per tool)
|
|
- Enforces sandbox requirements
|
|
- Sprawdza limity sub-agentów
|
|
|
|
Enforcement odbywa się **at admission time** (przed tworzeniem poda), nie at runtime. Więcej w [[Admission Webhooks i polityki]].
|
|
|
|
---
|
|
|
|
Powiązane: [[Admission Webhooks i polityki]] | [[SympoziumPolicy]] | [[CRD - Custom Resource Definition]]
|