Clé API Google volée : que faire immédiatement et comment se protéger

Tom

Tom

CEO & CTO Klack

Il est 23h47 un vendredi soir. Vous recevez un email de Google Cloud : « Unusual billing activity detected. » Vous ouvrez le tableau de bord — et là, vous voyez défiler des milliers de requêtes API en temps réel. Votre clé API Google a été volée. Chaque seconde qui passe vous coûte de l’argent. Voici exactement quoi faire dans les prochaines minutes.

Phase 1 : Urgence — Les 5 actions immédiates (dans les 10 premières minutes)

Action 1 — Révoquer immédiatement la clé compromise

C’est votre priorité absolue. Rendez-vous dans Google Cloud Console → APIs & Services → Credentials. Localisez la clé compromise et cliquez sur l’icône corbeille pour la supprimer, ou sur le bouton « Regenerate key » si vous voulez la remplacer immédiatement.

Via la CLI gcloud :

# Lister toutes vos clés API
gcloud services api-keys list --project=VOTRE_PROJECT_ID

# Révoquer une clé spécifique (remplacez KEY_ID)
gcloud services api-keys delete KEY_ID --project=VOTRE_PROJECT_ID

Action 2 — Poser une alerte de budget d’urgence

Même si vous venez de révoquer la clé, créez immédiatement un budget alert à 0€ supplémentaires pour être notifié si d’autres ressources consomment anormalement. Allez dans Billing → Budgets & Alerts → Create Budget avec un seuil à votre consommation actuelle + 10%.

Action 3 — Auditer les logs d’utilisation

Vous devez comprendre l’étendue de la compromission. Dans Cloud Console → Logging → Logs Explorer :

# Dans le champ de requête Logs Explorer :
resource.type="global"
protoPayload.methodName="GenerateIdToken"
severity>=ERROR

# Ou pour les appels API Maps spécifiquement :
resource.type="consumed_api"
resource.labels.service="maps-backend.googleapis.com"

Identifiez les IPs sources, les volumes d’appels et les APIs utilisées. Cette information sera cruciale pour le support Google.

Action 4 — Contacter le support Google Cloud Billing

C’est une étape que beaucoup oublient dans la panique, mais c’est souvent là que se joue la facture finale. Google a une politique non officielle de remboursement partiel ou total pour les incidents de clés volées, surtout si :

  • Vous réagissez rapidement (moins de 24-48h)
  • Vous avez des preuves que les appels ne venaient pas de vous
  • C’est votre première occurrence

Allez dans Cloud Console → Support → Cases → Create Case. Sélectionnez « Billing » et décrivez précisément l’incident avec les logs. Soyez factuels, pas dramatiques.

Action 5 — Scanner tous vos autres repos et services

La clé volée venait souvent de quelque part. Pendant que le support traite votre ticket, auditez :

# Chercher des clés API Google dans votre code
# (pattern : AIza suivi de 35 caractères)
grep -r "AIza[0-9A-Za-z\-_]{35}" . --include="*.js" --include="*.py" --include="*.env" --include="*.json"

# Chercher dans l'historique Git
git log --all --full-history -- "**/*.env"
git grep "AIza" $(git rev-list --all)

Phase 2 : Analyse — Comprendre comment ça s’est passé

Les vecteurs les plus courants de vol de clé API Google sont, par ordre de fréquence :

  1. Clé exposée en front-end : visible dans le HTML ou le JavaScript client-side
  2. Fichier .env committé sur Git : et potentiellement indexé par GitHub ou des scanners automatiques
  3. Repo Git public par erreur : un repo privé passé en public, même brièvement
  4. Clé dans une variable d’environnement CI/CD : exposée dans des logs de build publics
  5. Secrets manager non utilisé : clés stockées en clair dans des configs

Des outils comme GitGuardian scannent GitHub en continu et détectent les clés exposées en quelques secondes après un push. Les bots qui exploitent ces clés sont automatisés et agissent souvent dans les minutes qui suivent la détection.

Phase 3 : Protection — Comment ne plus jamais revivre ça

Restriction des clés API (à faire immédiatement sur toutes vos clés)

Chaque clé API Google Cloud peut être restreinte par application (referrer HTTP, package Android, bundle iOS) et par API (uniquement Maps, uniquement Places, etc.). Une clé sans restriction peut appeler toutes les APIs de votre projet.

Dans Credentials → Edit API Key :

  • Application restrictions : HTTP referrers (pour les clés web), IP addresses (pour les clés serveur)
  • API restrictions : sélectionnez uniquement les APIs que cette clé doit pouvoir appeler

Utiliser Google Secret Manager

# Créer un secret
gcloud secrets create my-api-key \
  --data-file=- <<< "VOTRE_CLE_API" \
  --project=VOTRE_PROJECT_ID

# Accéder au secret dans votre code Python
from google.cloud import secretmanager

client = secretmanager.SecretManagerServiceClient()
name = "projects/VOTRE_PROJECT_ID/secrets/my-api-key/versions/latest"
response = client.access_secret_version(request={"name": name})
api_key = response.payload.data.decode("UTF-8")

Rotation automatique des clés

La rotation régulière des clés limite la fenêtre d’exposition en cas de fuite non détectée. Mettez en place une rotation mensuelle via une Cloud Function schedulée, ou utilisez Secret Manager avec des versions de secrets et un mécanisme d’invalidation des anciennes versions.

Scanner les secrets en CI/CD avec git-secrets ou truffleHog

# Installer truffleHog
pip install trufflehog

# Scanner votre repo
trufflehog git file://. --only-verified

# Ajouter un pre-commit hook
# .git/hooks/pre-commit
#!/bin/bash
if git diff --cached | grep -E "AIza[0-9A-Za-z\-_]{35}"; then
  echo "ERREUR: Clé API Google détectée dans le commit !"
  exit 1
fi

Checklist complète post-incident

  • ☑ Clé compromise révoquée immédiatement
  • ☑ Budget alert d’urgence créé
  • ☑ Logs d’utilisation analysés (IPs, volumes, APIs)
  • ☑ Ticket support Google Billing ouvert avec preuves
  • ☑ Tous les repos scannés pour d’autres clés exposées
  • ☑ Toutes les clés existantes restreintes (application + API)
  • ☑ Clés migrées vers Secret Manager
  • ☑ Pre-commit hooks de détection installés
  • ☑ Kill switch automatique configuré (voir notre guide dédié)
  • ☑ Procédure d’incident documentée pour la prochaine fois

🔐 Vous n’êtes pas sûr que vos clés API et votre configuration cloud soient sécurisées ?

Klack propose un audit sécurité complet : vérification des clés exposées, mise en place de limites de facturation, alertes automatiques et kill switch. Intervention en 24-48h.

👉 Réserver un appel de diagnostic gratuit →

Autres articles Klack