Un développeur Reddit a partagé son histoire en 2023 : 82 000 dollars de facture Google Cloud en 48 heures. Sa clé API Maps, exposée dans son code front-end, avait été aspirée par un bot et utilisée massivement. Le pire ? Google lui avait bien envoyé des alertes email — mais n’avait jamais rien coupé. Parce que Google Cloud, contrairement à ce que beaucoup de devs croient, n’a pas de hard cap natif. Voici comment en créer un vous-même.
Le problème fondamental : Google Cloud facture à l’infini par défaut
Contrairement à une idée reçue, activer un « budget » sur Google Cloud ne protège pas vos ressources. Un budget alert envoie des emails quand vous atteignez 50%, 80%, 90% ou 100% de votre seuil. Mais il ne coupe absolument rien. Vous pouvez dépasser votre budget de 10x et Google continuera à vous facturer.
La bonne nouvelle : il existe plusieurs mécanismes à combiner pour créer une protection multicouche. Voici comment limiter les coûts Google Cloud efficacement.
Mécanisme 1 — Budget Alerts (la base, mais insuffisant seul)
Commencez par créer des alertes de budget. C’est minimal mais obligatoire. Dans Google Cloud Console → Billing → Budgets & Alerts → Create Budget :
- Scope : limitez à votre projet (pas à tout le billing account)
- Budget type : « Specified amount » avec votre seuil mensuel
- Alert thresholds : configurez à 50%, 80%, 100% et 500% (oui, au cas où)
- Notifications : email ET Pub/Sub topic (pour le kill switch automatique)
Via la CLI :
# Lister les billing accounts disponibles
gcloud billing accounts list
# Vérifier le budget actuel d'un projet
gcloud billing budgets list \
--billing-account=BILLING_ACCOUNT_ID
Mécanisme 2 — Quotas API : le vrai limiteur de coûts
Les quotas sont le mécanisme le plus efficace pour limiter les coûts API. Contrairement aux budgets, ils bloquent réellement les appels quand le seuil est atteint. Dans APIs & Services → API spécifique → Quotas & System Limits :
- Requests per day : limitez au nombre d’appels que votre usage légitime nécessite × 2
- Requests per 100 seconds : limitez le débit pour détecter les abus
- Requests per 100 seconds per user : isolez les abus par utilisateur
# Vérifier les quotas actuels d'une API
gcloud services quota list \
--service=maps-backend.googleapis.com \
--project=VOTRE_PROJECT_ID
# Modifier un quota via l'API (nécessite une demande de quota)
gcloud alpha services quota override \
--service=maps-backend.googleapis.com \
--metric=maps-backend.googleapis.com/map_load \
--value=10000 \
--project=VOTRE_PROJECT_ID
Point important : certains quotas nécessitent une demande explicite à Google pour être abaissés (contre-intuitif, mais c’est leur système). Pour les quotas que vous ne pouvez pas modifier directement, contactez le support.
Mécanisme 3 — Restrictions sur les clés API
Une clé API Google sans restriction peut appeler toutes vos APIs depuis n’importe quelle IP ou domaine. C’est un risque majeur. Dans APIs & Services → Credentials → Edit API Key, configurez :
Restriction par application
- HTTP referrers : pour les clés utilisées en front-end (ex:
https://votre-domaine.com/*) - IP addresses : pour les clés serveur (ex: votre IP de production)
- Android apps / iOS apps : pour les apps mobiles
Restriction par API
Ne donnez à chaque clé accès qu’aux APIs dont elle a besoin. Une clé Maps ne doit pas pouvoir appeler l’API Compute Engine ou Cloud Storage.
Mécanisme 4 — Export de facturation vers BigQuery
Le Billing Export vers BigQuery vous permet de monitorer vos coûts en quasi temps réel et de créer des alertes personnalisées. Dans Billing → Billing Export → BigQuery Export → Edit Settings :
- Activez « Standard usage cost » et « Detailed usage cost »
- Choisissez un dataset BigQuery dans votre projet
Ensuite, créez une requête de monitoring dans BigQuery :
-- Coûts par service des dernières 24h
SELECT
service.description,
SUM(cost) as total_cost,
SUM(usage.amount) as total_usage
FROM
`votre-projet.billing_dataset.gcp_billing_export_v1_XXXXXX`
WHERE
DATE(_PARTITIONTIME) = DATE_SUB(CURRENT_DATE(), INTERVAL 1 DAY)
GROUP BY
service.description
ORDER BY
total_cost DESC
LIMIT 20;
Combinez avec Looker Studio (ex-Data Studio) pour créer un dashboard de monitoring automatique avec alertes si le coût journalier dépasse un seuil.
Mécanisme 5 — Kill Switch automatique (le vrai hard cap)
C’est le mécanisme le plus puissant : une Cloud Function qui désactive automatiquement la facturation de votre projet si le budget est dépassé. Nous avons rédigé un guide complet avec le code Python pour le mettre en place : Comment configurer un kill switch automatique sur Google Cloud.
En résumé, l’architecture repose sur :
- Un Budget Alert avec notification vers un topic Pub/Sub
- Une Cloud Function Python déclenchée par Pub/Sub
- La Cloud Function appelle l’API Cloud Billing pour désactiver la facturation
Récapitulatif : la stack de protection recommandée
- Budget Alerts à 50%, 80%, 100%, 500% — pour la visibilité
- Quotas API stricts par service — pour bloquer les abus au niveau API
- Restrictions de clés (IP/referrer + scope API) — pour limiter la surface d’attaque
- Billing Export vers BigQuery + dashboard — pour le monitoring temps réel
- Kill Switch automatique (Cloud Function + Pub/Sub) — pour le hard cap réel
Aucun de ces mécanismes seul n’est suffisant. C’est leur combinaison qui vous protège vraiment. Et même avec tout ça en place, un audit régulier de votre configuration reste indispensable — les permissions évoluent, les clés se propagent, les configurations dérivent.
🔐 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.
