Une clé agit en votre nom : même quota, même crédit, mêmes suspensions. Elle n'ouvre pas une porte dérobée, elle vous représente. C'est aussi pour cela qu'elle ne donne accès ni à vos factures, ni à vos moyens de paiement, ni à vos tickets.
Le jeton
Il s'envoie en jeton porteur, sur chaque appel :
Authorization: Bearer ffxf_live_a1b2c3d4…
Nous n'en stockons que l'empreinte SHA-256. La console n'affiche ensuite que sa tête, de quoi reconnaître la clé dans une liste sans qu'elle serve à s'authentifier. Une clé perdue ne se récupère pas : elle se révoque.
Dix clés par compte. C'est assez pour séparer ses usages — supervision, provisionnement, intégration continue — et assez peu pour qu'un inventaire reste lisible.
Les portées
Une portée par conséquence, pas par ressource : lire ne coûte rien, agir interrompt un service, créer engage du crédit, détruire efface un disque.
| Portée | Ce qu'elle ouvre |
|---|---|
catalog.read | régions, forfaits et images (déjà public) |
vms.read | lister les machines et lire leur état |
vms.create | commander — engage du crédit |
vms.action | démarrer, arrêter, redémarrer, réinstaller, renommer |
vms.destroy | détruire une machine et son disque |
vms.console | ouvrir une session console |
network.write | adresses IPv6 et DNS inverse |
backups.write | restaurer et supprimer des sauvegardes |
billing.read | solde, consommation, quota |
sshkeys.write | gérer les clés SSH du compte |
Un appel hors portée répond 403 insufficient_scope, et la réponse
dit laquelle manquait.
Restreindre aux adresses
Une clé peut n'accepter les appels que depuis certaines adresses. C'est le réglage qui rend un vol de jeton inexploitable depuis ailleurs, et il ne coûte qu'une ligne au moment de créer la clé. Sans liste, la clé fonctionne de partout.
Expiration et révocation
Une date d'expiration facultative se pose à la création : passé ce jour, la clé cesse de fonctionner, sans rien changer d'autre. La révocation, elle, supprime la clé — elle ne la désactive pas. Une clé dont on ne veut plus n'a pas à rester réactivable d'un clic.
Tout ce qui s'en sert s'arrête immédiatement. Prévoyez la rotation : créez la nouvelle clé, déployez-la, révoquez l'ancienne.
Les refus d'authentification
| Code | Ce qui s'est passé |
|---|---|
missing_token | pas d'en-tête Authorization |
invalid_api_key | jeton inconnu |
key_disabled | clé désactivée |
key_expired | date d'expiration dépassée |
ip_not_allowed | appel venu d'une adresse hors liste |
insufficient_scope | la clé n'a pas la portée nécessaire |
account_suspended | compte fermé — écrivez au support |