# Stocker les secrets d'application pour un site

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

L'onglet Secrets est un espace de stockage chiffré pour les valeurs de configuration sensibles dont une application Node.js a besoin, comme les clés API, les secrets de signature et les jetons tiers, conservées par environnement afin que vos identifiants de production et vos identifiants de prévisualisation ne soient jamais mélangés.

## Où vivent les secrets

Ouvrez **Sites web**, cliquez sur le site, ouvrez le groupe **Environment** dans le menu de gauche du site, et choisissez **Secrets**. L'onglet s'intitule **Secrets**.

L'onglet n'apparaît que sur les sites Node.js. WordPress, PHP et les sites statiques ne l'affichent pas, car leur configuration vit dans des fichiers sur le disque à la place : `wp-config.php` pour WordPress, et ce que lit votre framework pour une application PHP simple.

![Onglet Secrets pour un site Node.js dans KPanel](https://support.kapsulehost.com/help/screenshots/site-secrets.812e0706.webp)

## Comment les valeurs sont protégées

Chaque valeur est chiffrée avant même d'atteindre la base de données. Rien n'est stocké en texte lisible, et la vue en liste n'affiche jamais une valeur complète : elle montre un masque avec seulement les quatre derniers caractères, afin que vous puissiez distinguer deux clés similaires sans exposer ni l'une ni l'autre.

Chaque ligne porte une pastille **Encrypted** pour le rappeler. Relire une valeur est une action séparée et délibérée, plutôt que quelque chose qui se produit simplement en ouvrant la page.

> **Note:** Définir, révéler et supprimer un secret nécessitent tous la permission **sites:write**. Un membre d'équipe en lecture seule peut voir quelles clés existent et leurs masques, mais pas leurs valeurs.

## Les deux environnements

Un contrôle segmenté en haut de la page bascule entre **production** et **preview**. Ce sont des ensembles de clés complètement séparés. Définir `STRIPE_SECRET_KEY` en production ne le crée pas en preview, et le supprimer de preview ne touche pas la production.

Cette séparation est tout l'intérêt de la fonctionnalité. Les builds de prévisualisation sont des environnements jetables que n'importe qui ayant accès au dépôt peut déclencher, ils devraient donc porter des identifiants de test, pas des identifiants réels. Consultez [Déploiements de prévisualisation pour les pull requests](https://support.kapsulehost.com/fr-fr/site-preview) pour savoir comment les environnements de prévisualisation sont créés.

## Ajouter ou mettre à jour un secret

1. Choisissez l'environnement avec le contrôle segmenté.
2. Saisissez le nom dans le champ **KEY_NAME**. Le champ force les majuscules au fur et à mesure que vous tapez.
3. Mettez la valeur dans le second champ. Elle est masquée au fur et à mesure que vous tapez.
4. Cliquez sur **Set**.

Définir une clé qui existe déjà l'écrase. Il n'y a pas d'action de modification séparée ni d'étape de confirmation pour un écrasement, vérifiez donc l'onglet d'environnement avant de cliquer sur **Set**.

### Règles de nommage des clés

Une clé doit commencer par une lettre majuscule et peut ensuite contenir des lettres majuscules, des chiffres et des tirets bas, jusqu'à 128 caractères. `DATABASE_URL`, `API_KEY_V2` et `SENTRY_DSN` sont tous valides. Tout le reste est rejeté avec le message **Key doit être UPPER_SNAKE_CASE lettres/chiffres/tiret bas**.

Deux autres limites méritent d'être connues :

- Une valeur ne peut pas être vide. Soumettre une valeur vide renvoie **value requis**.
- Une valeur ne peut pas dépasser 16 Ko. C'est généreux pour un jeton mais pas suffisant pour, disons, une chaîne de certificats complète, qui a sa place dans un fichier plutôt que dans un secret.

## Relire une valeur

Cliquez sur **Copy** sur la ligne. KPanel déchiffre la valeur côté serveur et la place directement dans votre presse-papiers, avec une confirmation **Valeur copiée dans le presse-papiers**. La valeur n'est pas affichée à l'écran, de sorte qu'un partage d'écran ou un regard indiscret ne la capte pas.

Chaque révélation est inscrite dans le journal d'audit du site, avec qui l'a faite et quelle clé, et apparaît dans le [Journal d'activité du site](https://support.kapsulehost.com/fr-fr/site-activity-log).

> **Tip:** Si vous devez vérifier qu'une valeur est correcte sans l'exposer, comparez plutôt le masque. Les quatre derniers caractères suffisent pour confirmer que vous avez le bon jeton, et ils sont déjà à l'écran.

## Utiliser un secret dans votre application

Copiez la valeur là où votre application lit sa configuration sur le serveur. Pour une application Node.js, il s'agit normalement d'une variable d'environnement définie par votre gestionnaire de processus, ou d'un fichier `.env` à la racine de l'application que votre code charge au démarrage.

> **Warning:** Ne commitez pas ce fichier dans votre dépôt. Ajoutez `.env` à `.gitignore` avant de le créer. Un secret qui a été poussé vers un dépôt git distant doit être traité comme compromis et renouvelé chez le fournisseur, car il reste dans l'historique même après que vous avez supprimé le fichier.

L'onglet Secrets est votre registre de ce qu'est la valeur, conservé chiffré et audité, plutôt qu'une note dans un gestionnaire de mots de passe ou un fil de messages. Gardez-le comme source de vérité : lorsque vous renouvelez une clé chez le fournisseur, mettez-la à jour ici en même temps, afin que la prochaine personne à déployer dispose de la valeur actuelle.

## Supprimer un secret

Cliquez sur **Delete** sur la ligne. KPanel vous demande de confirmer avec **Delete API_TOKEN?** et avertit que l'application perdra l'accès à cette valeur à son prochain redémarrage. Il n'y a pas d'annulation possible ni de copie conservée, donc si vous pourriez avoir besoin de la valeur à nouveau, copiez-la d'abord.

Supprimez un secret lorsque l'identifiant sous-jacent a été révoqué chez le fournisseur, ou lorsque le code qui l'utilisait a été retiré. Laisser traîner des clés obsolètes rend plus difficile de déterminer, plus tard, lesquelles comptent réellement.

## Renouveler un identifiant en toute sécurité

L'ordre sûr est toujours : créer le nouvel identifiant chez le fournisseur, le mettre à jour ici, déployer, confirmer que l'application fonctionne, puis révoquer l'ancien identifiant chez le fournisseur.

Faire l'inverse, révoquer d'abord, vous donne une fenêtre où l'application en cours d'exécution détient un identifiant mort et où chaque requête qui en a besoin échoue. Si le changement est risqué, prenez d'abord une sauvegarde pour pouvoir revenir à un état connu et stable : consultez [Effectuer une sauvegarde](https://support.kapsulehost.com/fr-fr/taking-a-backup).

## Dépannage

**L'onglet Secrets n'est pas dans le menu.** Le site n'est pas un site Node.js. Vérifiez la pastille de la pile technique à côté du nom du site en haut de la page.

**Le bouton Set ne fait rien.** Les deux champs sont requis. Le bouton affiche **Clé et valeur requises** si l'un des deux est vide.

**La clé a été rejetée.** Les lettres minuscules, les tirets, les points et les espaces ne sont pas autorisés. `api-key` et `Api_Key` échouent tous les deux ; `API_KEY` passe.

**Copy n'a rien mis dans le presse-papiers.** Certains navigateurs bloquent les écritures dans le presse-papiers sur un onglet inactif. Cliquez d'abord sur la page, puis cliquez à nouveau sur **Copy**.

## Pour aller plus loin

- [Déploiements de prévisualisation pour les pull requests](https://support.kapsulehost.com/fr-fr/site-preview), l'autre moitié de la séparation entre production et prévisualisation.
- [Déploiement Git pour un site](https://support.kapsulehost.com/fr-fr/site-git-deploy) pour pousser le code qui lit ces valeurs.
- [Journal d'activité du site](https://support.kapsulehost.com/fr-fr/site-activity-log) pour voir qui a défini, révélé ou supprimé un secret.
