Skip to main content

Zero-Trust für Kubernetes-Cluster und Anwendungen mit Teleport

Dr. Martin McCaffery updated 4 min read

Voraussetzungen

Bevor wir starten, sollten folgende Dinge vorhanden sein:

  • Teleport Cloud Account: Falls noch nicht geschehen, richten Sie sich einen Teleport-Cloud-Zugang ein.
  • Kind: Installieren Sie Kind, um einen lokalen Kubernetes-Cluster aufzusetzen.
  • Helm: Stellen Sie sicher, dass Helm installiert ist, um Anwendungen auf Kubernetes zu deployen.
  • kubectl: Installieren Sie kubectl, um mit Ihrem Kubernetes-Cluster zu interagieren.
  • tsh (Teleport CLI): Installieren Sie tsh für die Authentifizierung und den Cluster-Zugriff.

Schritt 1: Einen Kind-Kubernetes-Cluster aufsetzen

Zunächst erzeugen wir einen lokalen Kubernetes-Cluster mit Kind:

kind create cluster --name teleport-demo

Dieser Befehl initialisiert einen Kubernetes-Cluster mit dem Namen teleport-demo.

Schritt 2: Den Teleport Kubernetes Agent deployen

Der Teleport Kubernetes Agent stellt die Verbindung zwischen Ihrem Kubernetes-Cluster und der Teleport Cloud her. Wir deployen ihn mit Helm.

  1. Teleport Helm Repository hinzufügen:

    helm repo add teleport https://charts.releases.teleport.dev
  2. Helm Repository aktualisieren:

    helm repo update
  3. Teleport Kubernetes Agent installieren:

    Legen Sie eine values.yaml mit folgender Konfiguration an:

    proxyAddr: "your-account.teleport.sh:443"
    authToken: "your-teleport-auth-token"
    kubeClusterName: "teleport-demo"
    discover:
        - namespace: "default"

    Ersetzen Sie your-account.teleport.sh:443 durch die Proxy-Adresse Ihrer Teleport Cloud und your-teleport-auth-token durch Ihren Teleport-Authentifizierungs-Token. Das Feld discover legt fest, in welchen Namespaces die Application Autodiscovery arbeiten soll.

    Deployen Sie anschließend den Agent:

    helm install teleport-kube-agent teleport/teleport-kube-agent -f values.yaml

    Damit ist der Teleport Kubernetes Agent im Cluster installiert. Detaillierte Konfigurationsoptionen finden Sie in der Teleport Kubernetes Agent Helm Chart Reference.

Schritt 3: Authentifizierung am Kubernetes-Cluster über Teleport (tsh)

Sobald der Teleport Kubernetes Agent läuft, können wir uns mit tsh, dem Teleport-CLI, am Kubernetes-Cluster authentifizieren.

  1. An Teleport Cloud anmelden:

    tsh login --proxy=your-account.teleport.sh --user=your-teleport-username

    Ersetzen Sie your-account.teleport.sh durch die Proxy-Adresse Ihrer Teleport Cloud und your-teleport-username durch Ihren Teleport-Benutzernamen.

  2. Verfügbare Kubernetes-Cluster auflisten:

    tsh kube ls

    Dieser Befehl zeigt die bei Teleport registrierten Kubernetes-Cluster an.

  3. Kubernetes-Cluster auswählen und authentifizieren:

    tsh kube login teleport-demo

    Damit wird der Kubernetes-Authentifizierungskontext eingerichtet, sodass Sie den Cluster über kubectl ansprechen können.

  4. Zugriff auf Kubernetes prüfen:

    kubectl get pods -A

    Bei erfolgreicher Authentifizierung erscheint eine Liste der laufenden Pods in Ihrem Kubernetes-Cluster.

Schritt 4: Grafana auf Kubernetes deployen

Als Nächstes deployen wir Grafana über das offizielle Helm Chart.

  1. Grafana Helm Repository hinzufügen:

    helm repo add grafana https://grafana.github.io/helm-charts
  2. Helm Repository aktualisieren:

    helm repo update
  3. Grafana installieren:

    Legen Sie eine grafana-values.yaml an, in der die JWT-Authentifizierung aktiviert wird:

    grafana.ini:
        auth.jwt:
            enabled: true
            header_name: X-Auth-Token
            email_claim: email
            jwk_set_url: https://your-teleport-domain/.well-known/jwks.json
    service:
        type: ClusterIP

    Ersetzen Sie https://your-teleport-domain/.well-known/jwks.json durch die URL des JSON Web Key Set Ihrer Teleport-Instanz. Anschließend installieren Sie Grafana:

    helm install grafana grafana/grafana -f grafana-values.yaml

    Mit dieser Konfiguration authentifiziert Grafana Nutzer anhand von JWT-Tokens, die von Teleport ausgestellt werden.

Schritt 5: Grafana über die Teleport Application Autodiscovery bereitstellen

Da der Teleport Kubernetes Agent deployed und Grafana für JWT-Authentifizierung konfiguriert ist, kann Teleport Grafana automatisch als Anwendung erkennen und registrieren. Nutzer erreichen Grafana damit sicher über Teleport, ohne dass zusätzliche manuelle Konfiguration nötig wäre.

Weiterführende Informationen zur Application Autodiscovery unter Kubernetes finden Sie in der Teleport-Dokumentation.

Fazit

Durch die Integration von Teleport in Ihren Kubernetes-Cluster etablieren Sie ein Zero-Trust-Sicherheitsmodell, das sowohl Ihre Infrastruktur als auch die darauf laufenden Anwendungen wirksam schützt. Der Aufbau sichert nicht nur Zugriffe ab, sondern vereinfacht auch die Verwaltung von Authentifizierungs- und Autorisierungsrichtlinien über die gesamte Umgebung hinweg. Funktionen wie Application Autodiscovery und JWT-Authentifizierung nehmen der Absicherung von Anwendungen wie Grafana viel Aufwand ab und stellen sicher, dass nur autorisierte Nutzer auf sensible Dashboards und Daten zugreifen.

Damit setzen Sie die Prinzipien einer Zero-Trust-Sicherheitsarchitektur konsequent um und schaffen einen belastbaren Rahmen, um Ihre Kubernetes-Cluster und die darauf betriebenen Anwendungen zuverlässig zu schützen.


Offenlegung: Think Ahead Technologies ist offizieller Teleport Reseller und Support Partner. Dieser Artikel spiegelt unsere praktischen Erfahrungen aus dem Einsatz von Teleport bei Kundenprojekten und in internen Umgebungen wider.