Plus facile à lire avec un fond crème, une teinte, plus de contraste ou un texte plus grand ? Choisissez vos couleurs et votre texte, une fois pour toutes les pages.

Leçon gratuite

Garder les clés API hors du code

Après cette leçon: Je peux garder une clé hors de mon code et de mon historique Git.

Leçon de 60 min3 commandesLab agent de code IA : utiliser opencode pour expliquer et corriger du code, et vérifier son travail

Une clé API qui fuit coûte de l’argent

Une clé API est une chaîne secrète qui prouve qu’une requête vient de vous. Un fournisseur de modèle facture souvent votre compte pour chaque appel qui la porte.

Des développeurs laissent fuir leurs clés en les tapant dans le code, puis en le publiant sur Git. Des robots cherchent exactement cela : une clé qui fuit est une facture et un risque.

À la fin de cette leçon

Remarque

Je peux garder une clé hors de mon code et de mon historique Git.

Mots clés

MotCe que ça veut direExemple
Clé APIune chaîne secrète qui prouve qu’une requête est la vôtre
Variable d’environnementune valeur nommée donnée à un programme depuis l’extérieur de son codeMA_CLE_API
Le fichier .envun fichier texte de lignes NOM=valeur pour votre machine
Le fichier .gitignoreune liste de fichiers que Git ne doit jamais suivre
Renouvelercréer une nouvelle clé et annuler l’ancienne

Les cellules que les étudiants remplissent restent vides dans cet aperçu.

Dans ce laboratoire, votre code n’a aucune clé

Votre script envoie l’en-tête authorization: Bearer lab. Le mot lab est un espace réservé, pas une clé. À la sortie, la plateforme le remplace par votre vrai jeton et choisit le modèle.

La clé n’est donc jamais dans votre code et vous ne la voyez jamais. Sur un vrai projet, c’est vous qui la détenez.

Appeler un modèle sans clé

Commande
docker exec -w /home/node/project agent node -e "const u=(process.env.AI_URL||'http://ai:4000')+'/v1/chat/completions';(async()=>{const entetes={'content-type':'application/json',authorization:'Bearer lab'};console.log('En-tête d’autorisation dans mon code : '+entetes.authorization);try{const r=await fetch(u,{method:'POST',headers:entetes,body:JSON.stringify({model:'lab',messages:[{role:'user',content:'En une phrase, pourquoi une clé API doit-elle rester hors du code ?'}],max_tokens:60})});const j=await r.json();if(r.ok===false)throw new Error(r.status+' '+j.error.message);console.log('Modèle : '+j.choices[0].message.content)}catch(e){console.log('Aucune réponse du modèle ('+e.message+'). Exemple enregistré :');console.log('Modèle : Quiconque lit le code peut utiliser la clé et dépenser votre argent.')}})()"

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Une vraie clé vit dans l’environnement

Un vrai fournisseur vous donne une longue clé. Ne la tapez jamais dans un fichier que Git suit. Mettez-la dans une variable d’environnement et lisez-la dans le code avec process.env.MA_CLE_API.

Sur votre machine, gardez les variables dans un fichier .env et listez ce fichier dans .gitignore, pour que Git ne le voie jamais.

Écrire un .env et un .gitignore de démonstration

Commande
docker exec -w /home/node/project agent sh -c "mkdir -p demo-cles && printf 'EXEMPLE_CLE_API=pas-une-vraie-cle-123\n' > demo-cles/.env && printf '.env\n' > demo-cles/.gitignore"

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Lire le .env et masquer la valeur

Commande
docker exec -w /home/node/project agent node -e "const fs=require('fs');const nl=String.fromCharCode(10);for(const ligne of fs.readFileSync('demo-cles/.env','utf8').trim().split(nl)){const i=ligne.indexOf('=');const v=ligne.slice(i+1);console.log(ligne.slice(0,i)+' est définie, '+v.length+' caractères, valeur masquée')}console.log('.env est dans .gitignore : '+(fs.readFileSync('demo-cles/.gitignore','utf8').split(nl).includes('.env')?'oui':'non'))"

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

La même idée dans un vrai déploiement

Votre hébergeur a un endroit pour les secrets et les donne à votre programme comme variables d’environnement. Le code reste le même sur votre portable et sur le serveur.

Publiez un fichier .env.example avec les noms et de fausses valeurs. Il dit à un nouveau collègue ce qu’il faut régler.

Exemple travaillé : que faire après une fuite

Ce qui s’est passéQue faire
La clé est dans le code, pas validéeLa déplacer dans une variable d’environnement
Elle est validée, pas publiéeRenouveler la clé, puis réécrire le commit
Elle est publiée dans un dépôt publicRenouveler la clé tout de suite, puis nettoyer l’historique
Elle a été collée dans un message ou une consigneRenouveler la clé

Les cellules que les étudiants remplissent restent vides dans cet aperçu.

Une erreur fréquente

Attention

Beaucoup de gens pensent que supprimer la clé dans un nouveau commit l’efface. Git garde tous les anciens commits : la clé reste dans l’historique pour quiconque l’a copiée. Renouvelez la clé, car seule une nouvelle clé rend l’ancienne inutile.

À propos de ce labo et de sa source: Lab agent de code IA : utiliser opencode pour expliquer et corriger du code, et vérifier son travail

Vous enseignez à une classe ? Proposez ce module à vos étudiants avec un guide de l'enseignant, des devoirs corrigés et un laboratoire pour chaque étudiant.