Websites

App-geheimen voor een site opslaan

The Secrets tab is an encrypted store for the sensitive configuration values a Node.js app needs, such as API keys, signing secrets and third-party tokens, kept per environment so your production…

Het tabblad Secrets is een versleutelde opslag voor de gevoelige configuratiewaarden die een Node.js-app nodig heeft, zoals API-sleutels, ondertekeningsgeheimen en tokens van derden. Deze worden per omgeving opgeslagen, zodat uw productiereferenties en voorbeeldreferenties nooit door elkaar worden gehaald.

Waar Secrets zich bevinden

Open Websites, klik op de site, open het menu Advanced in de sitetabbalk en kies Secrets. Het tabblad heet Secrets.

Het tabblad verschijnt alleen op Node.js-sites. WordPress-, PHP- en statische sites tonen het niet, omdat hun configuratie in bestanden op schijf staat: wp-config.php voor WordPress en wat uw framework ook leest voor een gewone PHP-app.

Tabblad Secrets voor een Node.js-site in KPanel

Hoe waarden worden beschermd

Elke waarde wordt versleuteld voordat deze de database bereikt. Niets wordt als leesbare tekst opgeslagen, en de lijstweergave toont nooit een volledige waarde: deze toont een masker met alleen de laatste vier tekens, zodat u twee vergelijkbare sleutels uit elkaar kunt houden zonder beide bloot te stellen.

Elke rij heeft een Encrypted-badge ter herinnering daaraan. Het uitlezen van een waarde is een aparte, bewuste actie in plaats van iets dat gebeurt door alleen de pagina te openen.

Het instellen, onthullen en verwijderen van een secret vereist de machtiging sites:write. Een teamlid met alleen-lezen toegang kan zien welke sleutels bestaan en hun maskers, maar niet hun waarden.

De twee omgevingen

Een gesegmenteerd besturingselement bovenaan de pagina schakelt tussen production en preview. Dit zijn volledig aparte sets sleutels. Het instellen van STRIPE_SECRET_KEY in production maakt dit niet in preview aan, en het verwijderen uit preview raakt production niet.

Die scheiding is het doel van deze functie. Preview-builds zijn wegwerpomgevingen die iedereen met repositorytoegang kan activeren, dus ze moeten testgegevens bevatten, niet live gegevens. Zie Preview Deploys Voor Pull Requests voor het maken van voorbeeldomgevingen.

Een secret toevoegen of bijwerken

  1. Kies de omgeving met het gesegmenteerde besturingselement.
  2. Typ de naam in het veld KEY_NAME. Het veld forceert hoofdletters terwijl u typt.
  3. Zet de waarde in het tweede veld. Deze wordt gemaskeerd terwijl u typt.
  4. Klik Set.

Het instellen van een sleutel die al bestaat, overschrijft deze. Er is geen aparte bewerking en geen bevestigingsstap voor een overschrijving, dus controleer het omgevingstabblad voordat u op Set klikt.

Regels voor sleutelnamen

Een sleutel moet beginnen met een hoofdletter en mag daarna hoofdletters, cijfers en underscores bevatten, tot maximaal 128 tekens. DATABASE_URL, API_KEY_V2 en SENTRY_DSN zijn allemaal geldig. Alles anders wordt afgewezen met het bericht Key must be UPPER_SNAKE_CASE letters/numbers/underscore.

Twee andere limieten zijn het waard om te weten:

  • Een waarde kan niet leeg zijn. Het indienen van een lege waarde geeft value required terug.
  • Een waarde mag niet meer dan 16 KB zijn. Dat is royaal voor een token maar niet genoeg voor bijvoorbeeld een volledige certificaatketen, die in een bestand hoort in plaats van in een secret.

Een waarde terugkoppelingen

Klik Copy op de rij. KPanel ontsleutelt de waarde aan serverzijde en zet deze direct in uw klembord, met een bevestiging Value copied to clipboard. De waarde wordt niet op het scherm afgedrukt, dus een schermdeelname of een schoudermeekijker pikt het niet op.

Elke onthulling wordt genoteerd in het audit trail van de site, samen met wie het deed en welke sleutel, en wordt weergegeven in het Site Activity Log.

Als u moet controleren of een waarde correct is zonder deze bloot te stellen, vergelijkt u in plaats daarvan het masker. De laatste vier tekens zijn genoeg om te bevestigen dat u het juiste token hebt, en ze zijn al op het scherm zichtbaar.

Een secret in uw app gebruiken

Kopieer de waarde naar waar uw toepassing zijn configuratie op de server leest. Voor een Node.js-app is dit normaal een omgevingsvariabele die is ingesteld door uw procesmanager, of een .env-bestand in de app-root die uw code bij het opstarten laadt.

Commit dit bestand niet naar uw repository. Voeg .env toe aan .gitignore voordat u het maakt. Een secret dat naar een git remote is gepusht, moet als gelekt worden behandeld en geroteerd bij de provider, omdat het in de historie blijft staan, zelfs nadat u het bestand verwijdert.

Het tabblad Secrets is uw record van wat de waarde is, versleuteld opgeslagen en gecontroleerd, in plaats van een aantekening in een wachtwoordbeheerder of een berichtthread. Beschouw het als de enige bron van waarheid: als u een sleutel bij de provider roteert, werkt u deze tegelijk hier bij, zodat de volgende persoon die implementeert, de huidige waarde heeft.

Een secret verwijderen

Klik Delete op de rij. KPanel vraagt u om te bevestigen met Delete {KEY}? en waarschuwt dat de app bij volgende herstart geen toegang meer heeft tot deze waarde. Er is geen ongedaan maken en geen kopie beschikbaar, dus als u de waarde mogelijk later nodig hebt, kopieert u hem eerst.

Verwijder een secret wanneer de onderliggende referentie is ingetrokken bij de provider, of wanneer de code die deze gebruikte, is verwijderd. Het achterlaten van stale sleutels maakt het later moeilijker om te bepalen welke eigenlijk van belang zijn.

Een referentie veilig roteren

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

Dit andersom doen, eerst intrekken, geeft u een venster waarin de lopende app een dode referentie bevat en elk verzoek dat deze nodig heeft, mislukt. Als de wijziging riskant is, maak eerst een back-up zodat u naar een bekende goede status kunt terugkeren: zie Taking a Backup.

Probleemoplossing

Het tabblad Secrets staat niet in het menu. De site is geen Node.js-site. Controleer de stack-badge naast de sitenaam bovenaan de pagina.

De knop Set doet niets. Beide velden zijn verplicht. De knop geeft Key + value required als een van beide leeg is.

De sleutel is afgewezen. Kleine letters, streepjes, punten en spaties zijn niet toegestaan. api-key en Api_Key mislukken allebei; API_KEY slaagt.

Copy zette niets op het klembord. Sommige browsers blokkeren klembordschrijfbewerkingen op een inactief tabblad. Klik eerst op de pagina en klik vervolgens opnieuw op Copy.

Volgende stappen

Nog steeds hulp nodig?

Stuur ons een e-mail op support@kapsulehost.com of open een chat in KPanel.

KPanel openen