# Speichern von App-Geheimnissen für eine Website

Source: https://support.kapsulehost.com/de-de/site-secrets

Der Tab „Secrets" ist ein verschlüsselter Speicher für die sensiblen Konfigurationswerte, die eine Node.js-App benötigt, etwa API-Schlüssel, Signierungsgeheimnisse und Tokens von Drittanbietern. Er wird pro Umgebung geführt, damit Ihre Produktionsdaten und Ihre Vorschaudaten nie durcheinandergeraten.

## Wo Secrets gespeichert werden

Öffnen Sie **Websites**, klicken Sie auf die Site, öffnen Sie die Gruppe **Environment** im linken Menü der Site und wählen Sie **Secrets**. Der Tab trägt den Titel **Secrets**.

Der Tab erscheint nur bei Node.js-Sites. WordPress-, PHP- und statische Sites zeigen ihn nicht, da deren Konfiguration stattdessen in Dateien auf der Festplatte liegt: `wp-config.php` bei WordPress, und was auch immer Ihr Framework bei einer reinen PHP-App einliest.

![Secrets-Tab für eine Node.js-Site in KPanel](https://support.kapsulehost.com/help/screenshots/site-secrets.812e0706.webp)

## Wie Werte geschützt werden

Jeder Wert wird verschlüsselt, bevor er die Datenbank erreicht. Nichts wird als lesbarer Text gespeichert, und die Listenansicht zeigt nie einen vollständigen Wert: Sie zeigt eine Maske mit nur den letzten vier Zeichen, sodass Sie zwei ähnliche Schlüssel unterscheiden können, ohne einen von beiden offenzulegen.

Jede Zeile trägt zur Erinnerung daran ein **Encrypted**-Label. Einen Wert auszulesen ist eine eigene, bewusste Handlung und nicht etwas, das allein durch das Öffnen der Seite geschieht.

> **Note:** Das Setzen, Offenlegen und Löschen eines Secrets erfordert jeweils die Berechtigung **sites:write**. Ein Teammitglied mit Nur-Lese-Zugriff kann sehen, welche Schlüssel existieren und ihre Masken, aber nicht ihre Werte.

## Die zwei Umgebungen

Ein segmentierter Schalter oben auf der Seite wechselt zwischen **production** und **preview**. Es handelt sich um vollständig getrennte Schlüsselsätze. Das Setzen von `STRIPE_SECRET_KEY` in production legt den Wert nicht auch in preview an, und das Löschen aus preview betrifft production nicht.

Diese Trennung ist der Sinn dieser Funktion. Vorschau-Builds sind Wegwerfumgebungen, die jeder mit Repository-Zugriff auslösen kann, deshalb sollten sie Testzugangsdaten tragen, keine echten. Siehe [Vorschau-Deployments für Pull Requests](https://support.kapsulehost.com/de-de/site-preview) dazu, wie Vorschauumgebungen erstellt werden.

## Ein Secret hinzufügen oder aktualisieren

1. Wählen Sie die Umgebung über den segmentierten Schalter.
2. Geben Sie den Namen in das Feld **KEY_NAME** ein. Das Feld erzwingt beim Tippen Großschreibung.
3. Tragen Sie den Wert in das zweite Feld ein. Er wird beim Tippen maskiert.
4. Klicken Sie auf **Set**.

Das Setzen eines bereits vorhandenen Schlüssels überschreibt ihn. Es gibt keine separate Bearbeitungsfunktion und keinen Bestätigungsschritt für ein Überschreiben, prüfen Sie daher den Umgebungs-Tab, bevor Sie auf **Set** klicken.

### Regeln für Schlüsselnamen

Ein Schlüssel muss mit einem Großbuchstaben beginnen und darf danach Großbuchstaben, Ziffern und Unterstriche enthalten, bis zu 128 Zeichen. `DATABASE_URL`, `API_KEY_V2` und `SENTRY_DSN` sind alle gültig. Alles andere wird mit der Meldung **Key muss UPPER_SNAKE_CASE mit Buchstaben/Zahlen/Unterstrich sein** abgelehnt.

Zwei weitere Grenzwerte sind wichtig zu wissen:

- Ein Wert darf nicht leer sein. Das Absenden eines leeren Werts liefert **value erforderlich**.
- Ein Wert darf 16 KB nicht überschreiten. Das ist für ein Token großzügig bemessen, reicht aber nicht aus für etwa eine vollständige Zertifikatskette, die eher in eine Datei gehört als in ein Secret.

## Einen Wert auslesen

Klicken Sie auf **Copy** in der Zeile. KPanel entschlüsselt den Wert serverseitig und legt ihn direkt in Ihre Zwischenablage, mit einer Bestätigung **Wert in Zwischenablage kopiert**. Der Wert wird nicht auf dem Bildschirm angezeigt, sodass ihn weder ein geteilter Bildschirm noch ein Mitleser erfassen kann.

Jede Offenlegung wird im Audit-Protokoll der Site vermerkt, zusammen mit der Person, die sie durchgeführt hat, und dem betroffenen Schlüssel, und erscheint im [Site-Aktivitätsprotokoll](https://support.kapsulehost.com/de-de/site-activity-log).

> **Tip:** Wenn Sie prüfen müssen, ob ein Wert korrekt ist, ohne ihn offenzulegen, vergleichen Sie stattdessen die Maske. Die letzten vier Zeichen reichen aus, um zu bestätigen, dass Sie das richtige Token haben, und sie stehen bereits auf dem Bildschirm.

## Ein Secret in Ihrer App verwenden

Kopieren Sie den Wert dorthin, wo Ihre Anwendung ihre Konfiguration auf dem Server ausliest. Bei einer Node.js-App ist das normalerweise eine von Ihrem Prozessmanager gesetzte Umgebungsvariable oder eine `.env`-Datei im App-Stammverzeichnis, die Ihr Code beim Start lädt.

> **Warning:** Committen Sie diese Datei nicht in Ihr Repository. Fügen Sie `.env` zu `.gitignore` hinzu, bevor Sie sie anlegen. Ein Secret, das zu einem Git-Remote gepusht wurde, muss als kompromittiert gelten und beim Anbieter neu ausgestellt werden, denn es bleibt in der Historie erhalten, selbst nachdem Sie die Datei gelöscht haben.

Der Secrets-Tab ist Ihr verbindlicher Nachweis darüber, wie der Wert lautet, verschlüsselt gespeichert und protokolliert, statt einer Notiz in einem Passwort-Manager oder einem Chatverlauf. Behandeln Sie ihn als maßgebliche Quelle: Wenn Sie einen Schlüssel beim Anbieter rotieren, aktualisieren Sie ihn gleichzeitig hier, damit die nächste Person beim Deployment den aktuellen Wert vorfindet.

## Ein Secret löschen

Klicken Sie auf **Delete** in der Zeile. KPanel bittet Sie um Bestätigung mit **Delete API_TOKEN?** und weist darauf hin, dass die App bei ihrem nächsten Neustart den Zugriff auf diesen Wert verliert. Es gibt kein Rückgängigmachen und keine aufbewahrte Kopie. Wenn Sie den Wert eventuell später noch benötigen, kopieren Sie ihn also vorher.

Löschen Sie ein Secret, wenn die zugrunde liegende Zugangsdaten beim Anbieter widerrufen wurden oder wenn der Code, der sie verwendet hat, entfernt wurde. Veraltete Schlüssel liegenzulassen erschwert es später, zu erkennen, welche davon tatsächlich noch relevant sind.

## Zugangsdaten sicher rotieren

Die sichere Reihenfolge lautet immer: die neue Zugangsdaten beim Anbieter anlegen, hier aktualisieren, deployen, prüfen, dass die App funktioniert, und erst dann die alten Zugangsdaten beim Anbieter widerrufen.

Macht man es in der umgekehrten Reihenfolge, also zuerst widerrufen, entsteht ein Zeitfenster, in dem die laufende App eine ungültige Zugangsdaten verwendet und jede Anfrage, die diese benötigt, fehlschlägt. Wenn die Änderung riskant ist, erstellen Sie zuerst ein Backup, damit Sie zu einem bekannt funktionierenden Zustand zurückkehren können: siehe [Ein Backup erstellen](https://support.kapsulehost.com/de-de/taking-a-backup).

## Fehlerbehebung

**Der Secrets-Tab fehlt im Menü.** Die Site ist keine Node.js-Site. Prüfen Sie das Stack-Label neben dem Site-Namen oben auf der Seite.

**Die Schaltfläche Set tut nichts.** Beide Felder sind erforderlich. Die Schaltfläche meldet **Schlüssel + Wert erforderlich**, wenn eines der Felder leer ist.

**Der Schlüssel wurde abgelehnt.** Kleinbuchstaben, Bindestriche, Punkte und Leerzeichen sind nicht erlaubt. `api-key` und `Api_Key` schlagen beide fehl; `API_KEY` wird akzeptiert.

**Copy hat nichts in die Zwischenablage gelegt.** Manche Browser blockieren Schreibzugriffe auf die Zwischenablage bei einem inaktiven Tab. Klicken Sie zuerst auf die Seite und dann erneut auf **Copy**.

## Wie es weitergeht

- [Vorschau-Deployments für Pull Requests](https://support.kapsulehost.com/de-de/site-preview), die andere Hälfte der Trennung von production und preview.
- [Git-Deployment für eine Site](https://support.kapsulehost.com/de-de/site-git-deploy) zum Pushen des Codes, der diese Werte ausliest.
- [Site-Aktivitätsprotokoll](https://support.kapsulehost.com/de-de/site-activity-log), um zu sehen, wer ein Secret gesetzt, offengelegt oder gelöscht hat.
