Zum Inhalt

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

  1. Principle of Least Privilege - Vergeben Sie nur die minimal nötigen Berechtigungen
  2. Namespace-Scope bevorzugen - Verwenden Sie Roles statt ClusterRoles wenn möglich
  3. Vermeiden Sie Wildcards - Spezifizieren Sie Ressourcen und Verben explizit
  4. Dokumentieren Sie RBAC-Anforderungen - Erklären Sie warum Berechtigungen benötigt werden
  5. Regelmäßig überprüfen - Entfernen Sie nicht mehr benötigte Berechtigungen

Siehe auch