Datei hochladen
  1. base64hub
  2. Web- & Token-Tools
  3. Kubernetes-Secret-Decoder

Kubernetes-Secret-Decoder für kubectl-YAML

Fügen Sie ein Secret aus kubectl get secret NAME -o yaml (oder JSON) ein, und jeder data:-Wert wird dekodiert in einer Tabelle angezeigt. So müssen Sie nicht jeden Schlüssel einzeln durch base64 --decode schicken.

Kostenlos ohne Anmeldung, ohne Limits Lokal kein Upload Alle Schlüssel in einem Durchgang dekodiert, auch YAML mit mehreren Dokumenten Aktualisiert 27.10.2026

Wird in Ihrem Browser verarbeitet. Diese Seite kann Ihre Daten nirgendwohin senden – woher wir das wissen

So dekodieren Sie ein Kubernetes Secret

  1. Führen Sie kubectl get secret app-db -n shop -o yaml aus und fügen Sie die Ausgabe in das Feld ein. JSON aus -o json funktioniert ebenfalls.
  2. Die Tabelle listet jeden Schlüssel mit dekodiertem Wert und Größe, dazu die Schaltflächen Kopieren und Base64 kopieren.
  3. Der Ausgabebereich enthält dasselbe Secret, umgeschrieben mit stringData und Werten im Klartext. Binäre Werte bleiben in data.
  4. Wechseln Sie zu Secret erstellen für die Gegenrichtung: KEY=value-Zeilen rein, ein Secret mit Base64-data raus.

Die Eingabe kann auch eine List aus kubectl get secrets -o yaml sein, mehrere durch --- getrennte Dokumente, ein von Helm gerendertes Manifest, eine einzelne .dockerconfigjson oder nur ein Base64-Wert.

Beispiel: was kubectl liefert und was es bedeutet

apiVersion: v1
data:
  DATABASE_URL: cG9zdGdyZXM6Ly9hcHA6czNjcjN0LVBhNTVAZGI6NTQzMi9zaG9w
  DB_PASSWORD: czNjcjN0LVBhNTUK
  DB_USER: YXBw
kind: Secret
metadata:
  name: app-db
  namespace: shop
type: Opaque
SchlüsselDekodiertGröße
DATABASE_URLpostgres://app:s3cr3t-Pa55@db:5432/shop39 B
DB_PASSWORDs3cr3t-Pa55 plus ein Zeilenumbruch12 B
DB_USERapp3 B

Das Passwort hat 11 Zeichen, der Wert aber 12 Bytes. Jemand hat ihn mit echo 's3cr3t-Pa55' | base64 erstellt, und der abschließende Zeilenumbruch wird die Datenbankanmeldung scheitern lassen. Ohne den Zeilenumbruch wäre das Base64 czNjcjN0LVBhNTU=.

Was der Decoder erkennt

  • PEM-Zertifikate und -Schlüssel wie tls.crt und tls.key in einem Secret vom Typ kubernetes.io/tls werden markiert. Zertifikate bekommen einen Link zum Zertifikat-Decoder, um Ablaufdatum und SANs zu prüfen.
  • JSON-Werte werden formatiert.
  • Binäre Werte wie ein Java-Keystore erhalten ihren Dateityp, eine Hex-Vorschau und eine Schaltfläche Herunterladen.
  • .dockerconfigjson- und .dockercfg-Werte werden in Registry, Benutzername und Passwort zerlegt, mit dekodiertem auth. Der .dockerconfigjson-Decoder stellt diese an den Anfang.

kubectl-Einzeiler

Ein Wert. Punkte in Schlüsselnamen müssen in jsonpath maskiert werden:

kubectl get secret app-db -o jsonpath='{.data.DB_PASSWORD}' | base64 --decode
kubectl get secret app-tls -o jsonpath='{.data.tls\.crt}' | base64 --decode

Alle Werte, mit der in kubectl eingebauten Template-Funktion base64decode oder mit jq:

kubectl get secret app-db -o go-template='{{range $k, $v := .data}}{{$k}}={{$v | base64decode}}{{"\n"}}{{end}}'
kubectl get secret app-db -o json | jq '.data | map_values(@base64d)'

Ein Secret ohne die Zeilenumbruch-Falle erstellen:

kubectl create secret generic app-db --from-literal=DB_PASSWORD='s3cr3t-Pa55' --dry-run=client -o yaml

Weitere Shell-Rezepte stehen auf der Seite Base64 in Bash.

Grenzen und häufige Probleme

  • „In dieser Eingabe wurde kein Secret mit data oder stringData gefunden.“: Eingefügt wurde vermutlich ein Deployment oder eine ConfigMap. ConfigMap-Werte sind Klartext und müssen nicht dekodiert werden.
  • Größe: Ein Secret ist insgesamt auf 1 MiB begrenzt. Secret erstellen prüft die Grenze, die Schlüsselnamen und den Namen im DNS-Format, bevor Sie etwas anwenden.
  • YAML-Funktionen: Der Parser deckt ab, was kubectl, Helm und Kustomize erzeugen, einschließlich Block-Skalaren und mehrerer Dokumente. Anker, Aliase und Merge-Keys werden nicht unterstützt.
  • Helm-Release-Secrets (sh.helm.release.v1.*) enthalten im Base64-data-Wert Base64 von gzip-Daten. Dekodieren Sie hier die äußere Schicht und nutzen Sie dann den Gzip-Base64-Decoder.

Häufige Fragen

Wie dekodiere ich ein Kubernetes Secret mit kubectl?

Für einen Schlüssel: kubectl get secret app-db -o jsonpath='{.data.DB_PASSWORD}' | base64 --decode. Für alle Schlüssel auf einmal fügen Sie die Ausgabe von -o yaml hier ein, oder Sie verwenden die Einzeiler mit go-template oder jq auf dieser Seite.

Sind Kubernetes Secrets verschlüsselt?

Das Feld data ist nur Base64, das jeder mit Lesezugriff umkehren kann. Verschlüsselung im Ruhezustand in etcd ist eine separate Cluster-Einstellung, und RBAC entscheidet, wer Secrets lesen darf. Siehe Kodierung vs. Verschlüsselung.

Warum hat mein dekodiertes Secret am Ende einen Zeilenumbruch?

Der Wert wurde mit echo statt echo -n erstellt, sodass der Zeilenumbruch mitkodiert wurde. Sein Base64 endet dann oft auf K, o= oder Cg==. Erstellen Sie ihn neu mit printf '%s' value | base64 oder mit kubectl create secret --from-literal.

Was ist der Unterschied zwischen data und stringData?

data enthält Base64-Werte, stringData nimmt Klartext an, den der API-Server beim Schreiben für Sie kodiert. Beim Lesen kommt immer data zurück. Der Ausgabebereich hier schreibt das Secret mit stringData um, damit Sie es bearbeiten und erneut anwenden können.