# App Secrets Opslaan Voor een Site

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

De tab Secrets is een versleutelde opslagplaats voor de gevoelige configuratiewaarden die een Node.js-app nodig heeft, zoals API-sleutels, ondertekeningssleutels en tokens van derden, per omgeving bewaard zodat je productiegegevens en je previewgegevens nooit door elkaar raken.

## Waar Secrets Zich Bevinden

Open **Websites**, klik op de site, open de groep **Environment** in het linkermenu van de site, en kies **Secrets**. De tab heet **Secrets**.

De tab verschijnt alleen bij Node.js-sites. WordPress, PHP en statische sites tonen hem niet, omdat hun configuratie in bestanden op schijf staat: `wp-config.php` voor WordPress, en wat je framework dan ook inleest voor een gewone PHP-app.

![Secrets tab voor een Node.js-site in KPanel](https://support.kapsulehost.com/help/screenshots/site-secrets.812e0706.webp)

## Hoe Waarden Worden Beschermd

Elke waarde wordt versleuteld voordat deze de database raakt. Niets wordt als leesbare tekst opgeslagen, en de lijstweergave toont nooit een volledige waarde: ze toont een masker met alleen de laatste vier tekens, zodat je twee gelijkende sleutels van elkaar kunt onderscheiden zonder een van beide bloot te geven.

Elke rij draagt een **Encrypted**-label als herinnering hieraan. Een waarde opnieuw bekijken is een aparte, bewuste handeling in plaats van iets dat gewoon gebeurt door de pagina te openen.

> **Note:** Het instellen, onthullen en verwijderen van een secret vereisen allemaal de rechten **sites:write**. Een teamlid met alleen-lezen rechten kan zien welke sleutels bestaan en hun maskers, maar niet hun waarden.

## De Twee Omgevingen

Een segmented control bovenaan de pagina wisselt tussen **production** en **preview**. Dit zijn volledig gescheiden verzamelingen sleutels. Het instellen van `STRIPE_SECRET_KEY` in productie maakt deze niet aan in preview, en het verwijderen ervan uit preview raakt productie niet aan.

Die scheiding is het hele punt van deze functie. Preview-builds zijn wegwerp-omgevingen die iedereen met toegang tot de repository kan starten, dus ze moeten testgegevens bevatten, geen live gegevens. Zie [Preview Deploys Voor Pull Requests](https://support.kapsulehost.com/nl-nl/site-preview) voor hoe preview-omgevingen worden aangemaakt.

## Een Secret Toevoegen Of Bijwerken

1. Kies de omgeving met de segmented control.
2. Typ de naam in het veld **KEY_NAME**. Het veld dwingt hoofdletters af terwijl je typt.
3. Plaats de waarde in het tweede veld. Deze wordt gemaskeerd terwijl je typt.
4. Klik op **Set**.

Het instellen van een sleutel die al bestaat, overschrijft deze. Er is geen aparte bewerkingsactie en geen bevestigingsstap bij een overschrijving, dus controleer de omgevingstab voordat je op **Set** klikt.

### Regels Voor Sleutelnamen

Een sleutel moet beginnen met een hoofdletter en mag daarna hoofdletters, cijfers en underscores bevatten, tot 128 tekens. `DATABASE_URL`, `API_KEY_V2` en `SENTRY_DSN` zijn allemaal geldig. Al het andere wordt geweigerd met de melding **Key moet UPPER_SNAKE_CASE letters/nummers/underscore zijn**.

Twee andere beperkingen zijn het vermelden waard:

- Een waarde mag niet leeg zijn. Het indienen van een lege waarde geeft **value vereist** terug.
- Een waarde mag niet groter zijn dan 16 KB. Dat is ruim voldoende voor een token, maar niet genoeg voor bijvoorbeeld een volledige certificaatketen, die eerder in een bestand thuishoort dan in een secret.

## Een Waarde Opnieuw Bekijken

Klik op **Copy** op de rij. KPanel ontsleutelt de waarde serverzijdig en zet deze rechtstreeks op je klembord, met een bevestiging **Waarde gekopieerd naar klembord**. De waarde wordt niet op het scherm weergegeven, zodat een schermdeling of een meekijker deze niet kan oppikken.

Elke onthulling wordt vastgelegd in het auditlog van de site, samen met wie het deed en welke sleutel het betrof, en verschijnt in het [Site Activity Log](https://support.kapsulehost.com/nl-nl/site-activity-log).

> **Tip:** Als je wilt controleren of een waarde correct is zonder deze bloot te geven, vergelijk dan in plaats daarvan het masker. De laatste vier tekens zijn genoeg om te bevestigen dat je het juiste token hebt, en ze staan al op het scherm.

## Een Secret Gebruiken In Je App

Kopieer de waarde naar de plek waar je applicatie haar configuratie op de server leest. Voor een Node.js-app is dat normaal gesproken een environment variable die door je process manager wordt ingesteld, of een `.env`-bestand in de hoofdmap van de app dat je code bij het opstarten inleest.

> **Warning:** Commit dat bestand niet naar je repository. Voeg `.env` toe aan `.gitignore` voordat je het aanmaakt. Een secret die naar een git-remote is gepusht, moet als gelekt worden beschouwd en bij de provider worden vervangen, omdat deze in de geschiedenis blijft staan, zelfs nadat je het bestand verwijdert.

De tab Secrets is jouw vastlegging van wat de waarde is, versleuteld bewaard en gecontroleerd, in plaats van een notitie in een wachtwoordbeheerder of een berichtenreeks. Houd deze als enige bron van waarheid aan: wanneer je een sleutel bij de provider vervangt, werk deze dan tegelijkertijd hier bij, zodat de volgende persoon die deploy't de actuele waarde heeft.

## Een Secret Verwijderen

Klik op **Delete** op de rij. KPanel vraagt om bevestiging met **Delete API_TOKEN?** en waarschuwt dat de app bij de volgende herstart de toegang tot deze waarde verliest. Er is geen ongedaan maken en er wordt geen kopie bewaard, dus als je de waarde later nog eens nodig zou kunnen hebben, kopieer deze dan eerst.

Verwijder een secret wanneer de onderliggende inloggegevens bij de provider zijn ingetrokken, of wanneer de code die deze gebruikte, is verwijderd. Verouderde sleutels laten staan maakt het later lastiger om te zien welke er daadwerkelijk toe doen.

## Veilig Een Credential Vervangen

De veilige volgorde is altijd: maak de nieuwe inloggegevens aan bij de provider, werk deze hier bij, deploy, bevestig dat de app werkt, en trek dan pas de oude inloggegevens bij de provider in.

Het in omgekeerde volgorde doen, eerst intrekken, geeft je een periode waarin de draaiende app nog de oude inloggegevens gebruikt en elk verzoek dat deze nodig heeft, mislukt. Als de wijziging risicovol is, maak dan eerst een back-up, zodat je kunt terugkeren naar een bekende goede staat: zie [Een Back-up Maken](https://support.kapsulehost.com/nl-nl/taking-a-backup).

## Probleemoplossing

**De tab Secrets staat niet in het menu.** De site is geen Node.js-site. Controleer het stack-label naast de sitenaam bovenaan de pagina.

**De knop Set doet niets.** Beide velden zijn verplicht. De knop meldt **Sleutel + waarde vereist** als een van beide leeg is.

**De sleutel werd geweigerd.** Kleine letters, koppeltekens, punten en spaties zijn niet toegestaan. `api-key` en `Api_Key` mislukken allebei; `API_KEY` wordt geaccepteerd.

**Copy heeft niets op het klembord gezet.** Sommige browsers blokkeren klembordschrijfacties op een inactieve tab. Klik eerst op de pagina en klik daarna opnieuw op **Copy**.

## Waar Je Vervolgens Naartoe Kunt

- [Preview Deploys Voor Pull Requests](https://support.kapsulehost.com/nl-nl/site-preview), de andere helft van de scheiding tussen productie en preview.
- [Git Deploy Voor Een Site](https://support.kapsulehost.com/nl-nl/site-git-deploy) voor het pushen van de code die deze waarden inleest.
- [Site Activity Log](https://support.kapsulehost.com/nl-nl/site-activity-log) om te zien wie een secret heeft ingesteld, onthuld of verwijderd.
