0Pricing
DevOps Bootcamp · Lektion

Secrets-Management und RBAC

Lernen Sie fortgeschrittene Strategien zur Verwaltung vertraulicher Daten und zur Implementierung der rollenbasierten Zugriffskontrolle (RBAC) in Containerumgebungen kennen.

Secrets-Management und RBAC ist eine kostenlose DevOps Bootcamp-Lektion auf CoddyKit. Dies ist Lektion 3 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des DevOps Bootcamp-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der DevOps Bootcamp-Kurs umfasst insgesamt 4 Lektionen.

Ihre Containerumgebung absichern

Willkommen! In dieser Lektion beschäftigen wir uns mit wichtigen Sicherheitsmaßnahmen für containerisierte Anwendungen: Secrets Management und Role-Based Access Control (RBAC).

Diese Konzepte sind entscheidend, um sensible Daten zu schützen und sicherzustellen, dass nur autorisierte Entitäten bestimmte Aktionen in Ihren Containerumgebungen ausführen können.

Secrets-Management und RBAC — Illustration 1

Die Gefahr fest codierter Secrets

Das direkte Festschreiben sensibler Informationen wie API-Schlüssel, Datenbankpasswörter oder privater Zertifikate in Ihren Anwendungscode oder Ihre Dockerfiles stellt ein erhebliches Sicherheitsrisiko dar.

  • Offenlegung: Jeder, der Zugriff auf Ihr Code-Repository oder das erstellte Image hat, kann diese Informationen problemlos einsehen.
  • Fehlende Kontrolle: Zum Ändern eines Secrets müssen Sie Ihre gesamte Anwendung neu erstellen und bereitstellen.
  • Compliance-Probleme: Dies verstößt gegen viele bewährte Sicherheitsverfahren und regulatorische Anforderungen.

Umgebungsvariablen (mit Vorsicht)

Eine gängige, aber nicht immer sichere Methode zur Übergabe von Secrets sind Umgebungsvariablen. Docker ermöglicht es Ihnen, diese mit dem Flag -e zu übergeben, und Anwendungen können sie auslesen.

Umgebungsvariablen lassen sich jedoch leicht einsehen (z. B. mit docker inspect) und können im Shell-Verlauf oder in Protokollen erhalten bleiben. Für wirklich sensible Daten gibt es bessere Lösungen.

Docker Secrets in der Praxis

Mit Docker Secrets können Sie sensible Daten sicher speichern und an Container übertragen. Wenn ein Secret an einen Container angehängt wird, wird es als temporäre Datei in /run/secrets/ eingebunden.

Zuerst würden Sie ein Secret erstellen (z. B. echo "my_secure_pass" | docker secret create app_secret -). Anschließend kann Ihre Anwendung es auslesen:

import os

def main():
    secret_path = "/run/secrets/app_secret"
    try:
        with open(secret_path, 'r') as f:
            secret_value = f.read().strip()
        print(f"Secret read: {secret_value}")
    except FileNotFoundError:
        print("Secret file not found. Make sure it's mounted.")
    except Exception as e:
        print(f"An error occurred: {e}")

if __name__ == "__main__":
    main()

Überblick über Kubernetes Secrets

Ähnlich wie Docker Secrets verfügt Kubernetes über ein eigenes Objekt namens „Secrets“, um sensible Informationen zu speichern und zu verwalten. Diese Secrets können als Dateien in Pods eingebunden oder als Umgebungsvariablen bereitgestellt werden.

Wichtig: Kubernetes Secrets werden standardmäßig mit Base64 codiert und nicht verschlüsselt. Das bedeutet, dass sie sich leicht decodieren lassen. Für eine tatsächliche Verschlüsselung im Ruhezustand benötigen Sie eine zusätzliche Konfiguration (z. B. eine KMS-Integration).

Bereitstellungen mit K8s Secrets

Sehen wir uns ein Beispiel an, wie ein Kubernetes Secret definiert und anschließend innerhalb eines Pods verwendet wird. Sie können Secrets in YAML definieren oder mit kubectl-Befehlen erstellen.

Sobald es erstellt wurde, kann ein Pod auf das Secret verweisen, um es als Volume einzubinden oder seine Werte als Umgebungsvariablen zu injizieren.

apiVersion: v1
kind: Pod
metadata:
  name: my-secret-pod
spec:
  containers:
  - name: my-app-container
    image: busybox
    command: ["sh", "-c", "echo Username: $(cat /etc/secrets/username) Password: $(cat /etc/secrets/password)"]
    volumeMounts:
    - name: secret-volume
      mountPath: "/etc/secrets"
      readOnly: true
  volumes:
  - name: secret-volume
    secret:
      secretName: my-k8s-secret

Externe Secret-Vaults

Für besonders sensible Daten oder bei der Verwaltung von Secrets über mehrere Cluster und Umgebungen hinweg bieten externe Tools zur Secret-Verwaltung erweiterte Funktionen wie:

  • Zentraler Speicher: Eine zentrale Quelle für alle Secrets.
  • Verschlüsselung im Ruhezustand und bei der Übertragung: Stärkere Sicherheitsgarantien.
  • Dynamische Secrets: Automatisch generierte, kurzlebige Zugangsdaten.
  • Auditierung und Zugriffskontrolle: Fein abgestufte Berechtigungen und umfassende Protokollierung.

Beliebte Optionen sind HashiCorp Vault, AWS Secrets Manager und Azure Key Vault.

Was ist RBAC?

Role-Based Access Control (RBAC) ist eine Methode, den Systemzugriff auf autorisierte Benutzer zu beschränken. Anstatt Berechtigungen direkt einzelnen Benutzern zuzuweisen, werden sie in „Rollen“ gruppiert und anschließend Benutzer diesen Rollen zugewiesen.

In der Container-Orchestrierung stellt RBAC sicher, dass Benutzer, Anwendungen oder Services nur über die erforderlichen Berechtigungen verfügen, um mit Ressourcen (wie Pods, Deployments und Secrets) zu interagieren.

Bausteine von K8s-RBAC

Kubernetes-RBAC verwendet einige zentrale Ressourcentypen:

  • Role: Definiert Berechtigungen innerhalb eines bestimmten Namespace (z. B. „Pods im Namespace dev anzeigen“).
  • ClusterRole: Definiert Berechtigungen im gesamten Cluster (z. B. „alle Pods anzeigen“ oder „Nodes verwalten“).
  • RoleBinding: Gewährt einem Benutzer, einer Gruppe oder einem ServiceAccount innerhalb eines Namespace die in einer Role definierten Berechtigungen.
  • ClusterRoleBinding: Gewährt einem Benutzer, einer Gruppe oder einem ServiceAccount im gesamten Cluster die in einer ClusterRole definierten Berechtigungen.

RBAC-Beispiel: Zugriff beschränken

Sehen wir uns ein Beispiel an, wie einem bestimmten ServiceAccount die Berechtigung erteilt wird, in einem bestimmten Namespace ausschließlich Pods aufzulisten und abzurufen. Dadurch wird das Prinzip der geringsten Privilegien umgesetzt.

apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  namespace: default
  name: pod-reader
rules:
- apiGroups: [""] # "" indicates the core API group
  resources: ["pods"]
  verbs: ["get", "list", "watch"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: read-pods-binding
  namespace: default
subjects:
- kind: ServiceAccount
  name: pod-viewer-sa # Name of the ServiceAccount to bind to
  namespace: default
roleRef:
  kind: Role
  name: pod-reader
  apiGroup: rbac.authorization.k8s.io

Testen Sie Ihr Verständnis

Sie haben gelernt, wie Sie sensible Daten schützen und den Zugriff kontrollieren. Zeit für einen kurzen Test!

Zusammenfassung: Ihre Apps absichern

Sehr gut! In dieser Lektion haben Sie zwei entscheidende Säulen der Container-Sicherheit kennengelernt:

  • Secrets Management: Schutz sensibler Daten mithilfe von Docker Secrets und Kubernetes Secrets sowie Verständnis ihrer Stärken und Einschränkungen.
  • Role-Based Access Control (RBAC): Implementierung fein abgestufter Berechtigungen in Kubernetes, um das Prinzip der geringsten Privilegien sicherzustellen.

Indem Sie diese Konzepte beherrschen, entwickeln Sie robustere und sicherere containerisierte Anwendungen!

Häufig gestellte Fragen

Ist die Lektion „Secrets-Management und RBAC“ kostenlos?

Ja — der vollständige Text von „Secrets-Management und RBAC“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des DevOps Bootcamp-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der DevOps Bootcamp-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Secrets-Management und RBAC“?

Lernen Sie fortgeschrittene Strategien zur Verwaltung vertraulicher Daten und zur Implementierung der rollenbasierten Zugriffskontrolle (RBAC) in Containerumgebungen kennen. Du übst DevOps Bootcamp mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um DevOps Bootcamp zu starten?

Keine Vorkenntnisse erforderlich. DevOps Bootcamp auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 4.

Wie lange dauert die Lektion „Secrets-Management und RBAC“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser DevOps Bootcamp-Lektion Code schreiben und ausführen?

Ja. Jede DevOps Bootcamp-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Sicherheitsprüfung von Container-Images
  2. Container-Sicherheit zur Laufzeit
  3. Secrets-Management und RBAC
  4. Netzwerk-Policies und Least-Privilege-Netzwerke
← Zurück zu DevOps Bootcamp