Sécuriser vos clés
Une clé est un identifiant de connexion. Quatre réglages bornent ce qu'une clé fuitée permettrait.
Restriction de services
Par défaut une clé atteint tous les services du compte. Vous pouvez lui donner une liste explicite.
| Restriction | Détail |
|---|---|
| Maximum | 200 services par clé |
| Hors liste | 404 SERVICE_NOT_FOUND, la même réponse que pour un service d'un autre compte |
| Où la lire | GET /me → key.allServices (booléen) et key.serviceCodes (tableau de codes, vide quand allServices vaut true) |
Une clé restreinte ne liste que ses services dans GET /services.
Liste d'adresses autorisées
| Liste | Détail |
|---|---|
| Format d'une règle | une adresse IPv4 ou IPv6 littérale (203.0.113.7, 2a01:e0a::1) ou un bloc CIDR (203.0.113.0/24) |
| Longueur d'une règle | 64 caractères au plus |
| Maximum | 32 règles par clé |
| Vide | toute adresse est acceptée |
| Refusé à l'enregistrement | un préfixe /0, un index de zone (fe80::1%eth0), un nom de domaine. Les noms ne sont jamais résolus |
| Hors liste | 403 API_KEY_IP_NOT_ALLOWED, journalisé sur la clé, plus un e-mail au titulaire (au plus un par jour et par clé) |
| Où la lire | GET /me → key.ipAllowlist |
Expiration
| Expiration | Détail |
|---|---|
| Type | horodatage en millisecondes epoch, ou null pour une clé sans expiration |
| Où la lire | GET /me → key.expiresAt |
| Après | 403 API_KEY_EXPIRED |
| Avis | un e-mail sept jours avant |
Une clé expirée ne peut pas être renouvelée. Créez-en une nouvelle.
Plafond de dépense
Obligatoire dès que la clé porte billing.saved_methods:charge.
| Plafond | Détail |
|---|---|
| Unité | centimes |
| Bornes | 1 € à 10 000 €, 100 € par défaut |
| Fenêtre | 30 jours glissants |
| Compte | les débits de moyens enregistrés déclenchés par cette clé, y compris ceux d'un renouvellement |
| Ne compte pas | les paiements par solde prépayé |
| Dépassement | 403 API_KEY_SPENDING_CAP_EXCEEDED, avant tout appel au prestataire de paiement |
| Où le lire | GET /me ou GET /me/key → key.spendingCapCents et key.spendingRemainingCents |
Habitudes
- Une clé par intégration, nommée d'après elle.
- Uniquement les permissions dont l'intégration se sert.
- La restriction de services dès que la clé n'en touche qu'un.
- La liste d'adresses dès que la machine appelante a une adresse fixe.
- Une expiration quand l'usage est daté.
billing.saved_methods:chargeseulement là où il faut débiter, avec un plafond à la mesure de la tâche.- Le secret dans une variable d'environnement, un gestionnaire de secrets ou un fichier lisible par le seul compte de service. Jamais dans un dépôt, une image Docker, une application côté client ou une messagerie.
- Jamais dans une URL : l'API refuse ce cas avec
400 API_KEY_IN_QUERY, mais l'URL est déjà passée dans les journaux du proxy. - Un renouvellement périodique si votre politique l'impose : mêmes réglages, ancien secret tué au même instant.
Si une clé fuite
- Révoquez-la dans Compte > Clés d'API, ou renouvelez-la si l'intégration doit continuer à tourner. Effet à l'appel suivant.
- Lisez son journal des requêtes : 30 jours de routes, statuts, adresses et
X-Request-Id. - Vérifiez sa portée : sa liste de services, ses permissions, son plafond. Une clé sans
billing.saved_methods:chargen'a débité aucun moyen de paiement. - Relisez les commandes et les paiements récents dans le tableau de bord.
- Écrivez au support avec les
X-Request-Idconcernés.
Le support ne demande jamais un secret de clé, et ne peut pas en relire un.