Skip to main content
gcpdown
criticalCloud IAMGlobal

The December 2020 Google Authentication Outage: When Identity Ran Out of Quota

GCPDown Research · Incident analysisPublished December 17, 2020Updated June 20, 20268 min read
A red padlock on a keyboard

Timeline

  1. Impact begins

    The central User ID Service - the system that issues and validates identity tokens for Google accounts - runs out of storage quota after a migration miscounted its usage as effectively zero. Authenticated requests across Google and Google Cloud begin returning errors.

  2. Investigating

    Google observes a broad spike in authentication failures spanning consumer products and Cloud. The common factor is quickly narrowed to the identity layer rather than any single product.

  3. Identified

    Engineers trace the failures to the User ID Service being denied quota. Because the automated quota system had reduced the allocation to near zero, the service could not serve reads, and unauthenticated fallback paths could not compensate.

  4. Mitigating

    The quota restriction is overridden and capacity is manually restored to the identity service. Authentication success rates begin climbing as the service comes back.

  5. Resolved

    The User ID Service is healthy and authentication returns to baseline. Dependent products drain their backlogs of failed sign-ins.

Root cause

Almost every action you take on a Google surface has to answer one question first: who are you? The system that answers it is the central User ID Service, the identity layer that issues and validates the tokens behind a signed-in Google account. It is a shared dependency in the truest sense, sitting in front of Gmail, YouTube, Docs, and the Google Cloud Console and APIs alike.

On December 14, 2020, that layer was starved of the resources it needed to do its job. Google had been migrating the identity service onto a new automated quota system, and during that migration its existing storage usage was miscounted as effectively zero. The automation, seeing a service that appeared to be using almost no storage, granted it almost no quota. With its allocation cut to near zero, the User ID Service could no longer read the account data required to authenticate requests. There was no graceful fallback, because authentication is not a feature you can skip: if identity cannot be established, the request cannot proceed.

Two properties turned a quota miscalculation into a global event. First, identity is on the hot path of nearly everything, so its failure is not a degraded feature but a hard wall in front of the whole platform. Second, the trigger was a slow-moving configuration change rather than a code bug, so it did not trip the usual crash-and-rollback safety nets - the service simply, quietly, ran out of room to operate.

Business impact

The blast radius was as wide as Google itself. Consumers could not open Gmail, watch signed-in YouTube, or edit Docs. For Google Cloud customers, the impact landed on anything that had to authenticate: the Console threw errors, API calls that required a fresh token failed, and IAM-gated operations could not complete. The tell that this was an identity problem and not a product problem was the correlation - dozens of unrelated products failed in lockstep, which only happens when they share a single upstream dependency.

Not everyone felt it equally. Workloads that leaned on cached credentials or service-account tokens that were still valid kept working, because they did not need to round-trip to the identity service during the window. That difference is the whole lesson: the outage separated systems that treat authentication as a per-request call from those that treat a valid token as something to cache and reuse. For a sense of the SLA math on a partial-hour event like this, the GCP SLA credit calculator shows how sub-hour impact stacks up against monthly thresholds.

There was also a second-order cost that is easy to overlook: recovery congestion. When the identity service came back, every client that had been failing for the better part of an hour retried at once - browsers reloading, mobile apps re-authenticating, backend jobs re-establishing sessions. A sign-in system that has been dark for 47 minutes does not return to a calm baseline; it returns to a thundering herd of pending logins. This is why authentication recoveries are rarely instant even after the underlying fault is fixed, and why the tail of an identity outage can feel almost as long as the outage itself. For a business, the practical takeaway is that "the fix landed" and "users can log in reliably again" are two different moments, sometimes separated by many minutes.

Prevention and lessons

  1. Guardrail automated quota systems against zeroing critical services. The failure was an automation confidently doing the wrong thing. Floors that refuse to cut a tier-0 service below a safe minimum, plus a review gate on large allocation changes, are the direct fix - and Google hardened exactly this afterward.
  2. Cache credentials and tokens; do not authenticate on every request. Workloads that reused valid tokens rode the outage out. Design so that a brief identity-layer failure degrades your app to "cannot sign in new users" rather than "everything is down." The GKE high availability guide covers keeping the data plane serving when a control or identity plane is unreachable.
  3. Know your global dependencies, and identity is the biggest one. Being multi-region does nothing against a global identity failure. Map which global layers - identity, Service Control, Cloud Load Balancing - your architecture cannot function without, using the multi-region GCP patterns.
  4. Have an out-of-band signal. When your own dashboards need a login to view, an identity outage blinds your monitoring too. An external check tells you the fault is Google's, not yours. When you do collect on the downtime, the GCP credit playbook walks through filing within Google's tight 30-day window, and platforms like Next Signal can watch provider status and evidence the impact for you.

SLA credit eligibility

Yes for Cloud workloads whose authenticated requests failed during the window. Roughly 47 minutes of core impact is short of a monthly SLO breach on its own, but combined with any other downtime in the same month it can push a workload into the 10% credit tier if you can evidence unavailability. Google requires notice within 30 days and caps credits at 50%.

Work out what your bill was owed with the independent Google Cloud SLA credit calculator, or automate breach detection with Next Signal (sponsor). For the full claim process, see the Google Cloud credit-recovery playbook.

Questions about this outage

What caused the December 14, 2020 Google outage?

A migration to a new automated quota system misread the storage usage of Google's central User ID Service as near zero and cut its allocation to almost nothing. Starved of quota, the identity service could not read the account data needed to authenticate requests, so logins failed across Gmail, YouTube, Docs, and Google Cloud for about 47 minutes of core impact.

Why did Gmail, YouTube, and Google Cloud all go down at once?

They share one identity layer. Nearly every authenticated Google request - consumer or Cloud - checks in with the same User ID Service. When that service could not serve reads, every product that required a signed-in user failed together, which is why the outage looked total even though the products themselves were healthy.

Did the December 2020 outage affect Google Cloud specifically?

Yes. The Google Cloud Console and APIs that authenticate through the shared identity layer returned errors during the window, and IAM-gated operations failed for customers whose requests had to be authenticated. Workloads using cached credentials and service accounts that did not need a fresh token were affected less.

Next time, hear it from us first

Instant alerts when Google Cloud incidents are detected - services and regions included.

Get outage alerts

More post-mortems

Cloud IAM

The June 2025 Google Cloud Global Outage: How Service Control Crash-Looped

A policy update containing unintended blank fields reached a code path in Service Control - the global layer that checks quota and policy on nearly every Google Cloud API call - that had a null-pointer defect and no feature-flag protection. Service Control crash-looped globally, returning 503s across dozens of products for roughly three hours; us-central1 took longest to recover due to a retry herd.

Cloud Load Balancing

The November 2021 Google Cloud Load Balancer Outage: A Config Race Condition

A race condition in the pipeline that propagates Google Cloud Load Balancer configuration caused a corrupt configuration to be pushed globally. Requests to sites fronted by GCLB began returning 404 errors even though the backends were healthy - taking down high-profile sites for roughly two hours until the configuration was rolled back.

Google Kubernetes Engine

GKE Control-Plane Outages: When the API Server Fails but Your Pods Keep Running

GKE control-plane incidents are the classic split-brain outage: the Google-managed control plane - the Kubernetes API server, scheduler, and controller manager - becomes unreachable or unhealthy in a region, so kubectl, deployments, autoscaling, and self-healing all stall. Meanwhile the nodes and pods you already had running keep serving traffic, because the data plane runs independently of the control plane. You cannot deploy, scale, or recover from node failures until the control plane returns, but existing workloads generally stay up.