Siti web
Archiviazione dei Segreti dell'App per un Sito
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…
La scheda Secrets è un archivio crittografato per i valori di configurazione sensibili di cui ha bisogno un'app Node.js, come chiavi API, segreti di firma e token di terze parti, mantenuti per ambiente in modo che le credenziali di produzione e le credenziali di anteprima non si mescolino mai.
Dove si trovano i Secrets
Apri Websites, fai clic sul sito, apri il menu Advanced nella barra delle schede del sito e scegli Secrets. La scheda è intitolata Secrets.
La scheda appare solo nei siti Node.js. I siti WordPress, PHP e statici non la mostrano, perché la loro configurazione risiede in file su disco: wp-config.php per WordPress e qualsiasi cosa il tuo framework legga per un'app PHP semplice.

Come i Valori Sono Protetti
Ogni valore è crittografato prima di toccare il database. Nulla è archiviato come testo leggibile e la vista elenco non mostra mai un valore completo: mostra una maschera con solo gli ultimi quattro caratteri, in modo da poter distinguere due chiavi simili senza esporre nessuna delle due.
Ogni riga contiene un badge Encrypted come promemoria di questo. Leggere un valore è un'azione separata e deliberata piuttosto che qualcosa che accade semplicemente aprendo la pagina.
L'impostazione, la rivelazione e l'eliminazione di un segreto richiedono tutti il permesso sites:write. Un membro del team di sola lettura può vedere quali chiavi esistono e le loro maschere, ma non i loro valori.
I Due Ambienti
Un controllo segmentato nella parte superiore della pagina consente di passare tra production e preview. Sono set di chiavi completamente separati. L'impostazione di STRIPE_SECRET_KEY in produzione non lo crea in anteprima e la sua eliminazione dall'anteprima non tocca la produzione.
Quella separazione è il punto di questa funzione. Le build di anteprima sono ambienti usa e getta che chiunque abbia accesso al repository può attivare, quindi dovrebbero contenere credenziali di prova, non credenziali attive. Consulta Preview Deploys For Pull Requests per scoprire come vengono creati gli ambienti di anteprima.
Aggiunta o Aggiornamento di un Secret
- Scegli l'ambiente con il controllo segmentato.
- Digita il nome nel campo KEY_NAME. Il campo forza le maiuscole mentre digiti.
- Inserisci il valore nel secondo campo. È mascherato mentre digiti.
- Fai clic su Set.
L'impostazione di una chiave che esiste già la sovrascrive. Non c'è un'azione di modifica separata e nessun passaggio di conferma per una sovrascrittura, quindi controlla la scheda dell'ambiente prima di fare clic su Set.
Regole per i Nomi delle Chiavi
Una chiave deve iniziare con una lettera maiuscola e può quindi contenere lettere maiuscole, cifre e caratteri di sottolineatura, fino a 128 caratteri. DATABASE_URL, API_KEY_V2 e SENTRY_DSN sono tutti validi. Qualsiasi altra cosa viene rifiutata con il messaggio Key must be UPPER_SNAKE_CASE letters/numbers/underscore.
Ci sono altri due limiti che vale la pena conoscere:
- Un valore non può essere vuoto. L'invio di un valore vuoto restituisce value required.
- Un valore non può superare 16 KB. È generoso per un token ma non abbastanza per, ad esempio, una catena di certificati completa, che appartiene a un file piuttosto che a un segreto.
Lettura di un Valore
Fai clic su Copy sulla riga. KPanel decripta il valore lato server e lo mette direttamente negli appunti, con una conferma Value copied to clipboard. Il valore non viene stampato sullo schermo, quindi una condivisione dello schermo o un'osservazione da dietro la spalla non lo raccoglie.
Ogni rivelazione viene scritta nel registro di audit del sito, insieme a chi l'ha fatto e quale chiave, e appare nel Site Activity Log.
Se devi verificare che un valore sia corretto senza esporlo, confronta la maschera. Gli ultimi quattro caratteri sono sufficienti per confermare che hai il token giusto e sono già sullo schermo.
Uso di un Secret nella Tua App
Copia il valore in qualsiasi punto la tua applicazione legga la sua configurazione sul server. Per un'app Node.js questo di solito è una variabile d'ambiente impostata dal tuo gestore di processi, o un file .env nella radice dell'app che il tuo codice carica all'avvio.
Non eseguire il commit di quel file nel tuo repository. Aggiungi .env a .gitignore prima di crearlo. Un segreto che è stato inviato a un git remote deve essere considerato come esposto e ruotato presso il provider, perché rimane nella cronologia anche dopo aver eliminato il file.
La scheda Secrets è il tuo record di quale sia il valore, mantenuto crittografato e controllato, piuttosto che una nota in un gestore di password o un thread di messaggi. Mantienilo come fonte di verità: quando ruoti una chiave presso il provider, aggiornalo qui allo stesso tempo, in modo che la prossima persona a distribuire abbia il valore corrente.
Eliminazione di un Secret
Fai clic su Delete sulla riga. KPanel ti chiede di confermare con Delete {KEY}? e ti avverte che l'app perderà l'accesso a questo valore al suo prossimo riavvio. Non c'è annullamento e nessuna copia conservata, quindi se potresti aver bisogno del valore di nuovo, copialo prima.
Elimina un segreto quando la credenziale sottostante è stata revocata presso il provider, o quando il codice che l'ha utilizzato è stato rimosso. Lasciare chiavi stantie in giro rende più difficile capire, più tardi, quali di esse contano effettivamente.
Rotazione Sicura di una Credenziale
L'ordine sicuro è sempre: crea la nuova credenziale presso il provider, aggiornala qui, distribuisci, conferma che l'app funziona, quindi revoca la credenziale precedente presso il provider.
Farlo al contrario, revocando per primo, ti dà una finestra in cui l'app in esecuzione contiene una credenziale scaduta e ogni richiesta che ne ha bisogno fallisce. Se il cambiamento è rischioso, fai prima un backup in modo da poter tornare a uno stato noto e funzionante: consulta Taking a Backup.
Risoluzione dei Problemi
La scheda Secrets non è nel menu. Il sito non è un sito Node.js. Controlla il badge dello stack accanto al nome del sito nella parte superiore della pagina.
Il pulsante Set non fa nulla. Entrambi i campi sono obbligatori. Il pulsante segnala Key + value required se uno dei due è vuoto.
La chiave è stata rifiutata. Le lettere minuscole, i trattini, i punti e gli spazi non sono consentiti. api-key e Api_Key falliscono entrambi; API_KEY passa.
Copy non ha messo nulla negli appunti. Alcuni browser bloccano le scritture negli appunti su una scheda inattiva. Fai clic sulla pagina prima, quindi fai clic di nuovo su Copy.
Dove Andare Dopo
- Preview Deploys For Pull Requests, l'altra metà della divisione tra produzione e anteprima.
- Git Deploy For a Site per inviare il codice che legge questi valori.
- Site Activity Log per vedere chi ha impostato, rivelato o eliminato un segreto.