Créer avec l’IA

Qu’est-ce qu’une clé d’API, et comment la protéger?

· Par Robert Scales · 5 min de lecture

Réponse courte

Une clé d’API est un code secret qui vous identifie auprès d’un service comme l’API d’OpenAI; chaque requête faite avec cette clé est donc facturée à votre compte. Gardez-la hors de votre code : conservez-la dans une variable d’environnement sur la machine qui exécute votre programme, ne la mettez jamais dans des pages Web ni dans des applications que les gens téléchargent, et ne la versez jamais dans un dépôt de code.

Quand vous vous inscrivez à l’API d’OpenAI, ou à presque n’importe quel autre service Web qu’utilisent les développeurs, vous recevez une clé d’API. Elle ressemble à une longue suite de lettres et de chiffres au hasard. En coulisses, elle fonctionne comme un mot de passe et un numéro de carte de crédit réunis : elle dit au service qui l’appelle, et elle détermine quel compte paie chaque requête.

C’est pourquoi une clé demande le même soin qu’une carte bancaire. Le centre d’aide d’OpenAI décrit la clé comme un code unique qui identifie vos requêtes et qui est destiné à vous seul. Quiconque la copie peut envoyer des requêtes en votre nom, épuiser votre quota et vous laisser la facture.

Ce que fait une clé d’API

API veut dire interface de programmation d’applications (application programming interface) : un moyen pour un programme de demander à un autre programme de faire quelque chose. Quand votre script demande à GPT-3 d’écrire un résumé, il envoie une requête par Internet aux serveurs d’OpenAI. La clé voyage avec cette requête. Le serveur la vérifie, trouve votre compte, applique vos limites d’utilisation et enregistre les jetons que vous avez utilisés.

Il en découle trois conséquences pratiques :

  • La clé est personnelle. Chaque personne d’une équipe devrait avoir sa propre clé. Les conditions d’OpenAI interdisent de partager les clés; vous invitez plutôt vos coéquipiers dans votre compte, et chacun reçoit sa propre clé.
  • La clé a de la valeur. Une clé volée peut faire grimper les frais, épuiser votre quota mensuel et faire interrompre votre accès.
  • La clé doit rester du côté serveur. L’ordinateur qui envoie la requête doit détenir la clé; cet ordinateur doit donc être un ordinateur que vous contrôlez.

Où les clés fuient

La plupart des fuites viennent de deux endroits.

Le code client. Le code qui s’exécute dans le navigateur Web d’un visiteur, ou dans une application que les gens installent sur leur téléphone, est livré sur leur appareil. N’importe qui peut ouvrir les outils de développement du navigateur ou décompresser l’application et lire ce qu’il y a dedans, y compris une clé qui y a été collée. Si une page Web a besoin de GPT-3, la page devrait envoyer le texte de l’utilisateur à votre propre petit serveur, et c’est ce serveur, qui détient la clé, qui appelle OpenAI et renvoie la réponse.

Les dépôts de code. Les développeurs conservent leur code dans des systèmes de gestion de versions comme Git, et le partagent souvent sur des sites comme GitHub. Le centre d’aide d’OpenAI cite le fait de verser une clé dans le code source comme l’une des façons courantes dont les clés sont compromises. Dans un dépôt public, la clé est visible par tout Internet. Même un dépôt privé n’est sûr que dans la mesure où le sont tous les comptes et tous les services qui y ont accès.

La solution, dans les deux cas, repose sur le même principe. The Twelve-Factor App, un guide très cité sur la conception de logiciels Web, dit que la configuration, comme les identifiants, doit être strictement séparée du code. Il propose un test simple : pourriez-vous publier votre code en code source ouvert dès maintenant sans exposer un seul secret? Si la réponse est non, un secret est au mauvais endroit.

Un exemple concret : utiliser une variable d’environnement

Une variable d’environnement est une valeur nommée conservée par le système d’exploitation de votre ordinateur plutôt qu’à l’intérieur de votre programme. Votre code demande la valeur par son nom au moment de l’exécution. OpenAI recommande le nom OPENAI_API_KEY, ce qui permet aussi à des coéquipiers de partager le même code tout en utilisant chacun sa propre clé.

Étape 1 : conserver la clé (macOS ou Linux avec l’interpréteur zsh). Remplacez le texte de substitution par votre clé :

echo "export OPENAI_API_KEY='collez-votre-cle-ici'" >> ~/.zshrc
source ~/.zshrc

Sur les Mac plus anciens et beaucoup de systèmes Linux qui utilisent bash, utilisez ~/.bash_profile au lieu de ~/.zshrc. Sous Windows, la commande setx OPENAI_API_KEY "collez-votre-cle-ici" fait le même travail; ouvrez ensuite une nouvelle fenêtre de commande.

Étape 2 : la lire dans votre programme. En Python :

import os
import openai

openai.api_key = os.environ["OPENAI_API_KEY"]

response = openai.Completion.create(
    engine="text-davinci-001",
    prompt="Écris un message de bienvenue d’une phrase pour l’infolettre d’une bibliothèque.",
    max_tokens=40,
)
print(response.choices[0].text.strip())

La clé n’apparaît nulle part dans le fichier. Vous pouvez verser ce script dans un dépôt, le partager ou le publier dans un forum sans risque.

Étape 3 : garder les fichiers secrets locaux hors de Git. Certains projets conservent plutôt leurs variables dans un fichier appelé .env. Si c’est votre cas, ajoutez .env à votre fichier .gitignore pour que Git ne le suive jamais. Le guide Twelve-Factor souligne la faiblesse de cette approche : ces fichiers sont faciles à verser par erreur dans un dépôt, et c’est pourquoi les variables d’environnement définies hors du projet sont le choix par défaut le plus sûr.

Pour les applications en production, OpenAI suggère aussi un service de gestion des clés, un produit spécialisé qui conserve les secrets chiffrés et séparés de votre application, pour qu’une intrusion dans l’application n’expose pas la clé.

À essayer : cherchez le début de votre clé d’API dans l’un de vos projets, y compris dans les vieux fichiers et les carnets. Si vous la trouvez quelque part, déplacez-la dans une variable d’environnement, modifiez le code pour qu’il lise os.environ, et lancez le script pour confirmer qu’il fonctionne toujours.

Que faire si une clé fuit?

Agissez vite, parce que quiconque trouve une clé publiée peut commencer à l’utiliser tout de suite. D’abord, remplacez la clé : dans votre compte OpenAI, allez à la page API Keys, créez une nouvelle clé et révoquez l’ancienne, pour que la copie qui a fui cesse de fonctionner. Mettez ensuite à jour chaque programme et chaque serveur qui utilisait l’ancienne clé.

Consultez ensuite la page Usage et vérifiez si l’activité récente correspond à votre propre travail. Des pics inattendus indiquent que quelqu’un d’autre a utilisé la clé. Si vous constatez un abus, communiquez avec le soutien d’OpenAI pour qu’il puisse enquêter.

Enfin, bouchez le trou qui a causé la fuite. Supprimer la clé de votre code le plus récent ne suffit pas si elle a été versée dans Git, parce que l’ancienne version reste dans l’historique du dépôt. C’est la révocation de la clé qui vous protège; nettoyer l’historique et déplacer le secret dans une variable d’environnement évite que cela se reproduise.

Sources

  1. Best Practices for API Key Safety — OpenAI Help Center
  2. The Twelve-Factor App: III. Config — Adam Wiggins (12factor.net)

Recevez gratuitement le Guide de l’intelligence artificielle

Abonnez-vous à l’infolettre hebdomadaire et recevez le guide gratuit : ce qui a changé en IA cette semaine, une leçon, un prompt à essayer. Désabonnement en un clic.

Ce que nous faisons de votre adresse

Retour en haut

Affichage

Vos choix sont enregistrés dans ce navigateur seulement. Aucune donnée n’est transmise.

Taille du texte
100 %
Couleurs
Lecture
Autres réglages
Déclaration d’accessibilité