RBAC
RBAC
ohMyHelm kann automatisch ServiceAccounts, Roles und RoleBindings für Ihre Anwendung erstellen.
Übersicht
RBAC (Role-Based Access Control) ermöglicht es Ihrer Anwendung, mit der Kubernetes API zu interagieren. ohMyHelm erstellt automatisch:
- ServiceAccount: Identität für Ihre Pods
- Role/ClusterRole: Definiert erlaubte Aktionen
- RoleBinding/ClusterRoleBinding: Verbindet ServiceAccount mit Role
Basis-Konfiguration
chart:
rbac:
enabled: true
Dies erstellt einen ServiceAccount für Ihre Anwendung.
ServiceAccount
Einfacher ServiceAccount
chart:
rbac:
enabled: true
serviceAccountName: my-app-sa
Mit Image Pull Secrets
chart:
rbac:
enabled: true
serviceAccountName: my-app-sa
imagePullSecrets:
- name: registry-credentials
Roles und RoleBindings
Namespace-Scope (Role)
Für Berechtigungen innerhalb eines Namespaces:
chart:
rbac:
enabled: true
rules:
- apiGroups: [""]
resources: ["pods", "services", "configmaps"]
verbs: ["get", "list", "watch"]
- apiGroups: ["apps"]
resources: ["deployments"]
verbs: ["get", "list", "watch", "update"]
Cluster-Scope (ClusterRole)
Für cluster-weite Berechtigungen:
chart:
rbac:
enabled: true
clusterRole: true
rules:
- apiGroups: [""]
resources: ["nodes"]
verbs: ["get", "list", "watch"]
- apiGroups: [""]
resources: ["namespaces"]
verbs: ["get", "list"]
Vollständiges Beispiel
Operator-Anwendung
Eine Anwendung, die Kubernetes-Ressourcen verwaltet:
chart:
enabled: true
fullnameOverride: "my-operator"
container:
image: myoperator:latest
ports:
- name: http
containerPort: 8080
rbac:
enabled: true
serviceAccountName: my-operator
clusterRole: true
rules:
# Custom Resource Definitions
- apiGroups: ["mycompany.io"]
resources: ["myresources"]
verbs: ["get", "list", "watch", "create", "update", "patch", "delete"]
# Status-Updates
- apiGroups: ["mycompany.io"]
resources: ["myresources/status"]
verbs: ["get", "update", "patch"]
# Secrets lesen
- apiGroups: [""]
resources: ["secrets"]
verbs: ["get", "list", "watch"]
# Events erstellen
- apiGroups: [""]
resources: ["events"]
verbs: ["create", "patch"]
Monitoring-Anwendung
Eine Anwendung, die Cluster-Metriken sammelt:
chart:
rbac:
enabled: true
clusterRole: true
rules:
# Pods und Services lesen
- apiGroups: [""]
resources: ["pods", "services", "endpoints"]
verbs: ["get", "list", "watch"]
# Nodes lesen
- apiGroups: [""]
resources: ["nodes"]
verbs: ["get", "list", "watch"]
# Metrics abrufen
- apiGroups: ["metrics.k8s.io"]
resources: ["nodes", "pods"]
verbs: ["get", "list"]
Backup-Job
Ein Job mit minimalen Berechtigungen:
chart:
job:
enabled: true
image: mybackup:latest
rbac:
enabled: true
rules:
# Nur Secrets im eigenen Namespace lesen
- apiGroups: [""]
resources: ["secrets"]
verbs: ["get", "list"]
# ConfigMaps lesen
- apiGroups: [""]
resources: ["configmaps"]
verbs: ["get", "list"]
RBAC-Verben
| Verb | Beschreibung |
|---|---|
get |
Einzelne Ressource abrufen |
list |
Mehrere Ressourcen auflisten |
watch |
Änderungen an Ressourcen beobachten |
create |
Neue Ressourcen erstellen |
update |
Bestehende Ressourcen vollständig ersetzen |
patch |
Teilweise Änderungen an Ressourcen |
delete |
Ressourcen löschen |
deletecollection |
Mehrere Ressourcen auf einmal löschen |
Best Practices
- Principle of Least Privilege - Vergeben Sie nur die minimal nötigen Berechtigungen
- Namespace-Scope bevorzugen - Verwenden Sie Roles statt ClusterRoles wenn möglich
- Vermeiden Sie Wildcards - Spezifizieren Sie Ressourcen und Verben explizit
- Dokumentieren Sie RBAC-Anforderungen - Erklären Sie warum Berechtigungen benötigt werden
- Regelmäßig überprüfen - Entfernen Sie nicht mehr benötigte Berechtigungen