> ## Documentation index
> The full klickops handbook index is at https://klickops.io/llms.txt
> The HTML of this page is at https://klickops.io/docs/secrets
> Language: de

# Secrets

Werte, die deine Workloads brauchen und niemand zurücklesen soll: Passwörter, API-Keys, Tokens.

## Was das ist

Ein Secret ist ein Wert, den klickops verschlüsselt ablegt und dem Workload zur Laufzeit übergibt, ohne ihn dir je wieder zu zeigen. Konfiguration, die niemand verstecken muss, liegt daneben unter **Configuration**. Der Unterschied liegt in der Vertraulichkeit, nicht im Format.

Secrets gehören zum Projekt. Ein Satz, den alle Workloads im Projekt teilen. Denn ein API-Key, den zwei Apps brauchen, ist ein Key und nicht zwei Kopien, die auseinanderlaufen.

## Wann du das brauchst

- Ein API-Key eines Drittanbieters, ein SMTP-Passwort, ein Signing-Token.
- Zugangsdaten, die du rotierst und an einer einzigen Stelle ändern willst.
- Alles, was du ungern auf einem Screenshot finden würdest.

> [!Nicht dafür]
> Datenbank-Zugangsdaten gehören nicht hierhin. Eine Datenbank übergibt ihre Verbindungsdaten selbst als Verknüpfung an die App, und die wandert beim Passwortwechsel mit. Kopierst du sie in ein Secret, hast du eine zweite Kopie, die veraltet. Siehe [Datenbanken](/docs/databases).

## Ein Secret anlegen

1. Öffne das Projekt und geh auf **Configuration**.
2. Leg einen Key und seinen Wert an. Keys sind gross geschrieben, mit Unterstrichen, so wie Umgebungsvariablen aussehen.
3. Speichere. Workloads, die das Secret nutzen, starten neu. Das Speicherband nennt die Zahl, bevor du bestätigst.

Ab diesem Moment ist der Wert nur noch schreibbar. Ersetzen kannst du ihn, zurücklesen nicht. Nicht in der Oberfläche, nicht über die API, nicht in einer Listenantwort. Verlierst du ihn, rotier ihn an der Quelle.

![Die Seite Configuration eines Projekts, mit Key-Namen und verdeckten Werten.](/handbook/secrets-list.webp)

## Ein Secret in einem Workload nutzen

Öffne die App, geh auf **Configuration** und wähl die Keys aus, die sie bekommen soll. Jeder kommt als Umgebungsvariable unter seinem eigenen Namen an.

Ein Workload bekommt nur, was du auswählst. Der geteilte Satz sorgt für eine einzige Kopie und nicht dafür, dass jeder alles sieht.

## Einstellungen im Überblick

| Einstellung | Standard | Was sie bewirkt |
| --- | --- | --- |
| Key | keiner | Der Name der Umgebungsvariable. Gross, mit Unterstrichen, eindeutig im Projekt. |
| Wert | keiner | Nur schreibbar. Ersetzbar, nie lesbar. |
| Genutzt von | keinem | Welche Workloads diesen Key bekommen. Änderst du das, starten sie neu. |

## Grenzen und Fallstricke

- **Zurücklesen geht nicht.** Genau das ist der Sinn, und es überrascht jeden einmal. Halte die Quelle dort, wo die Zugangsdaten ausgestellt wurden.
- **Ein geändertes Secret startet neu, was es nutzt.** Ein Container liest seine Umgebung beim Start. Im laufenden Betrieb lässt sich das nicht ändern.
- **Ein Secret ist keine Datei.** Zertifikate und Konfigurationsdateien, die auf der Platte liegen müssen, bindest du als Volume ein.
- **Ein gelöschter Key bricht, was ihn erwartet.** Der Workload startet neu und die Variable fehlt einfach. Das zeigt sich meistens als Absturz beim Start und nicht als klare Meldung.

## Verwandt

- [Apps](/docs/apps) bekommen Secrets als Umgebungsvariablen.
- [Datenbanken](/docs/databases) liefern ihre Zugangsdaten selbst und brauchen kein Secret.
