1.5 KiB
1.5 KiB
ServiceAccount
#kubernetes #security #rbac #słownik
Co to jest?
ServiceAccount to tożsamość przypisana do podów w Kubernetes. Pody używają ServiceAccount do autentykacji wobec API servera i uzyskania uprawnień zdefiniowanych w RBAC.
Jak działa?
Pod → ServiceAccount → Token (auto-mounted) → K8s API Server
↓
RoleBinding sprawdza:
"Czy ten SA ma Role z verbs?"
Token jest automatycznie montowany w podzie pod:
/var/run/secrets/kubernetes.io/serviceaccount/token
Domyślne zachowanie
- Każdy namespace ma
defaultServiceAccount - Pody bez jawnego SA używają
default defaultSA ma minimalne uprawnienia (prawie żadne)
Użycie w Sympozium
Controller tworzy dedykowany ServiceAccount sympozium-agent w namespace runu:
1. ensureAgentServiceAccount() → tworzy SA
2. Role/ClusterRole → definiuje uprawnienia (z SkillPack)
3. RoleBinding → wiąże SA z Role
4. Pod spec: serviceAccountName: sympozium-agent
5. Skill sidecar używa tokenu SA do kubectl/API calls
6. Po zakończeniu → SA i RBAC garbage-collected
Agent container nie używa tokenu SA (brak dostępu do K8s API). Skill sidecar używa tokenu SA (kubectl via automounted token).
Więcej: RBAC | Efemeryczny RBAC per-run | Skill Sidecars i auto-RBAC
Powiązane: RBAC | Efemeryczny RBAC per-run | Pod