# Memorizzazione dei segreti dell'app per un sito

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

La scheda Secrets è un archivio crittografato per i valori di configurazione sensibili di cui un'app Node.js ha bisogno, come chiavi API, secret di firma e token di terze parti, mantenuti per ambiente in modo che le credenziali di produzione e quelle di anteprima non si mescolino mai.

## Dove Risiedono i Secrets

Apri **Siti web**, fai clic sul sito, apri il gruppo **Environment** nel menu a sinistra del sito e scegli **Secret**. La scheda si chiama **Secret**.

La scheda compare solo sui 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 una semplice app PHP.

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

## Come Vengono Protetti i Valori

Ogni valore viene crittografato prima ancora di toccare il database. Nulla viene memorizzato 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 porta un distintivo **Encrypted** a titolo di promemoria. Rileggere un valore è un'azione separata e deliberata, non qualcosa che accade semplicemente aprendo la pagina.

> **Note:** Impostare, rivelare ed eliminare un secret richiedono tutti il permesso **sites:write**. Un membro del team con accesso 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 permette di passare tra **production** e **preview**. Sono due insiemi di chiavi completamente separati. Impostare `STRIPE_SECRET_KEY` in produzione non lo crea in anteprima, ed eliminarlo dall'anteprima non tocca la produzione.

Quella separazione è il punto centrale della funzione. Le build di anteprima sono ambienti usa e getta che chiunque abbia accesso al repository può avviare, quindi dovrebbero contenere credenziali di test, non credenziali reali. Vedi [Deploy di Anteprima per le Pull Request](https://support.kapsulehost.com/it-it/site-preview) per come vengono creati gli ambienti di anteprima.

## Aggiungere o Aggiornare un Secret

1. Scegli l'ambiente con il controllo segmentato.
2. Digita il nome nel campo **KEY_NAME**. Il campo forza le maiuscole mentre digiti.
3. Inserisci il valore nel secondo campo. Viene mascherato mentre digiti.
4. Fai clic su **Set**.

Impostare una chiave già esistente la sovrascrive. Non esiste un'azione di modifica separata né un passaggio di conferma per una sovrascrittura, quindi controlla la scheda dell'ambiente prima di fare clic su **Set**.

### Regole per il Nome della Chiave

Una chiave deve iniziare con una lettera maiuscola e può poi contenere lettere maiuscole, cifre e underscore, fino a 128 caratteri. `DATABASE_URL`, `API_KEY_V2` e `SENTRY_DSN` sono tutti validi. Qualsiasi altra cosa viene rifiutata con il messaggio **Key deve essere UPPER_SNAKE_CASE lettere/numeri/underscore**.

Vale la pena conoscere altri due limiti:

- Un valore non può essere vuoto. L'invio di un valore vuoto restituisce **value obbligatorio**.
- Un valore non può superare i 16 KB. È generoso per un token, ma non sufficiente, ad esempio, per una catena di certificati completa, che va inserita in un file piuttosto che in un secret.

## Rileggere un Valore

Fai clic su **Copy** sulla riga. KPanel decripta il valore lato server e lo mette direttamente negli appunti, con una conferma **Valore copiato negli appunti**. Il valore non viene stampato a schermo, quindi una condivisione schermo o qualcuno che guarda da dietro le spalle non riesce a vederlo.

Ogni rivelazione viene scritta nel registro di controllo del sito, insieme a chi l'ha effettuata e a quale chiave, e compare nel [Registro Attività del Sito](https://support.kapsulehost.com/it-it/site-activity-log).

> **Tip:** Se hai bisogno di verificare che un valore sia corretto senza esporlo, confronta invece la maschera. Gli ultimi quattro caratteri sono sufficienti per confermare di avere il token giusto, e sono già visibili a schermo.

## Usare un Secret Nella Tua App

Copia il valore ovunque la tua applicazione legga la sua configurazione sul server. Per un'app Node.js si tratta normalmente di una variabile d'ambiente impostata dal tuo process manager, oppure di un file `.env` nella radice dell'app che il tuo codice carica all'avvio.

> **Warning:** Non fare il commit di quel file nel tuo repository. Aggiungi `.env` a `.gitignore` prima di crearlo. Un secret che è stato inviato a un remote git deve essere considerato compromesso e ruotato presso il fornitore, perché rimane nella cronologia anche dopo aver eliminato il file.

La scheda Secrets è il tuo registro di ciò che è il valore, mantenuto crittografato e sottoposto a controllo, piuttosto che un appunto in un password manager o in un thread di messaggi. Mantienila come fonte di verità: quando ruoti una chiave presso il fornitore, aggiornala qui allo stesso tempo, in modo che la prossima persona che fa il deploy abbia il valore attuale.

## Eliminare un Secret

Fai clic su **Delete** sulla riga. KPanel chiede di confermare con **Delete API_TOKEN?** e avverte che l'app perderà l'accesso a questo valore al suo prossimo riavvio. Non esiste un annulla e non viene conservata alcuna copia, quindi se potresti avere di nuovo bisogno del valore, copialo prima.

Elimina un secret quando la credenziale sottostante è stata revocata presso il fornitore, o quando il codice che la utilizzava è stato rimosso. Lasciare in giro chiavi obsolete rende più difficile capire, in seguito, quali siano effettivamente importanti.

## Ruotare una Credenziale in Sicurezza

L'ordine sicuro è sempre: crea la nuova credenziale presso il fornitore, aggiornala qui, fai il deploy, conferma che l'app funzioni, poi revoca la vecchia credenziale presso il fornitore.

Fare il contrario, revocare per primo, crea una finestra temporale in cui l'app in esecuzione detiene una credenziale morta e ogni richiesta che ne ha bisogno fallisce. Se la modifica è rischiosa, esegui prima un backup così da poter tornare a uno stato noto e funzionante: vedi [Eseguire un Backup](https://support.kapsulehost.com/it-it/taking-a-backup).

## Risoluzione dei Problemi

**La scheda Secrets non è nel menu.** Il sito non è un sito Node.js. Controlla il distintivo 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 **Chiave + valore obbligatori** se uno dei due è vuoto.

**La chiave è stata rifiutata.** Lettere minuscole, trattini, punti e spazi non sono ammessi. `api-key` e `Api_Key` falliscono entrambi; `API_KEY` passa.

**Copy non ha messo nulla negli appunti.** Alcuni browser bloccano la scrittura negli appunti su una scheda inattiva. Fai clic prima sulla pagina, poi fai di nuovo clic su **Copy**.

## Dove Andare Ora

- [Deploy di Anteprima per le Pull Request](https://support.kapsulehost.com/it-it/site-preview), l'altra metà della separazione tra produzione e anteprima.
- [Deploy Git per un Sito](https://support.kapsulehost.com/it-it/site-git-deploy) per inviare il codice che legge questi valori.
- [Registro Attività del Sito](https://support.kapsulehost.com/it-it/site-activity-log) per vedere chi ha impostato, rivelato o eliminato un secret.
