Every source behind this page, graded. The ledger shipped beside this file
records one claim per row with its supporting passage. This session ran behind a
restricted network; GitHub sources were fetched directly and the rest were read through
search-engine retrieval, noted in the ledger.
Postmortem
Google Cloud2025-06
Incident report: multiple GCP products experiencing service issues
The authorization and quota gatekeeper for every GCP API call crashed globally on a
policy row with blank fields, through a code path that shipped without error handling or
a feature flag.
Carry forwardThe checker's policy data is production input; validate it at ingestion, and decide fail-open per check class before the incident.
status.cloud.google.com/incidents/ow5i3PPK96RduMcb1SsW
Postmortem
ACMA / Optus2024-05
ACMA statement and Federal Court filing on the 2022 Optus breach
A 2018 coding error disabled the API's access controls; the 2021 fix covered the main
domain and missed a dormant one, which carried the breach in 2022.
Carry forwardEnforcement points need an inventory; a control fixed in one copy and not another is a control you no longer have.
acma.gov.au/acma-statement-2022-optus-data-breach
Postmortem
NYDFS / First American2023-11
Consent order: First American Title Insurance
885M documents reachable by direct link for 4.5 years; the company's own pen test
found the missing check five months before a journalist forced the fix.
Carry forwardA "missing authorization check" finding is an unexploited incident and needs incident routing, not a backlog ticket.
dfs.ny.gov/…/ea20231127_first_american
Postmortem
Meta2018-09 / 2018-10
Security Update, and the October follow-up
Three individually reviewed features composed into a path that minted access tokens
for the wrong user; 30M tokens confirmed stolen of ~90M reset.
Carry forwardToken minting is an authorization decision; review feature compositions that touch it as their own attack surface.
about.fb.com/news/2018/09/security-update
Postmortem
The Register2025-06-16
Google Cloud caused outage by ignoring its usual code quality protections
Secondary account quoting the incident report's key admissions: no error handling, no
feature flag, and remediation that includes making the check fail open.
Carry forwardEven the check's author revised fail-closed after seeing its global blast radius; your default deserves the same scrutiny.
theregister.com/2025/06/16/google_cloud_outage_incident_report
Source
Ory Keto2021-04 → open
Issue #517: Provide consistency guarantees using snapshot tokens
The zookie mechanism, proposed for Keto in April 2021 with candidate designs, remains
an open feature request five and a half years later.
Carry forwardThe paper's consistency machinery is the part reimplementations postpone; if you adopt a clone, ask specifically what happened to the zookies.
github.com/ory/keto/issues/517
Source
Cedar (AWS)2023-08
rfcs#14: batch is_authorized, closed unmerged, labelled rejected
The rejection argument: a batch API hard-codes which request parts vary, and the real
cost sat in entity loading, addressed instead by preprocessing and opaque handles.
Carry forwardBefore adding a batch endpoint, find where the per-call cost actually is; batching the wrong layer freezes your API for nothing.
github.com/cedar-policy/rfcs/pull/14
Source
Envoychecked 2026-09
ext_authz filter: failure_mode_allow
The most widely deployed enforcement point rejects with 403 when the authorization
service errors or returns 5xx, unless explicitly configured to allow.
Carry forwardKnow your proxy's default before the checker's first bad day; fail-closed at the edge means the checker's availability is your product's.
github.com/envoyproxy/envoy/…/ext_authz.proto
Source
AuthZedchecked 2026-09
SpiceDB repository
The most direct open Zanzibar descendant: schema-defined relations, per-request
consistency, ZedTokens. README claims 5 ms p95 at millions of queries per second.
Carry forwardPer-request consistency is the pragmatic middle: pay for freshness only on the checks where staleness is an exploit.
github.com/authzed/spicedb
ADR
Kubernetes2023-06
KEP-3221: Structured authorization configuration
The apiserver's authorization chain became an ordered, file-configured list where
each webhook declares its own failure policy: Deny, or NoOpinion and continue.
Carry forwardFail-open versus fail-closed is per-authorizer configuration, not doctrine; the chain shape lets different sensitivities coexist.
github.com/kubernetes/enhancements/…/3221…/README.md
ADR
OpenFGA2022-07
RFC: ListObjects API
The design record for permission-filtered lists: bounded results, a deadline, no
pagination because paginated graph traversal defeats parallel evaluation, and an
explicitly rejected generic variant on query-cost grounds.
Carry forwardList filtering is a different operation from a point check, with its own cost model; price it separately in your API and your capacity plan.
github.com/openfga/rfcs/blob/main/20220714-listObjects-api.md
Case study
AuthZedretrieved 2026-09
Zed File #Z-4902: Spanner Spikes
A vendor incident narrative: client-side ACL filtering emitted hundreds of identical
point checks per page, p95 hit a second, and the durable fix was BulkCheck plus
SpiceDB v1.28 optimisations. Vendor-told, and reads like it.
Carry forwardAlert on identical-check fan-out per caller; it is the signature of a list screen using a point-check API.
authzed.com/blog/zed-file-z-4902-spanner-spikes
Blog
Figma2024-03
How we built a custom permissions DSL at Figma
The strongest published argument for the in-app camp: OPA, Zanzibar-style services
and Oso all evaluated and declined; policies reference product objects while the engine
owns loading, replicas and caching.
Carry forwardSeparating rules from data loading is the load-bearing idea; it is available inside your app without adopting anyone's service.
figma.com/blog/how-we-rolled-out-our-own-permissions-dsl-at-figma
Blog
Airbnb2021-05
Himeji: a scalable centralized system for authorization
The most numerically transparent adoption account: tuple model, write-time fan-out,
per-AZ sharded cache with a ~98% hit target, 850k entities/s and p99 of 12 ms one year in.
Carry forwardIn a read-heavy product, pay the fan-out on writes; the read path then degrades like a cache, which you know how to operate.
medium.com/airbnb-engineering/himeji…
Blog
Carta2021-06 / 2021-09
AuthZ: Carta's permissions system; and: user authorization in under 10 ms
Two posts: the starting condition (five conflicting legacy permission systems) and
the destination (a RelationTuple graph service answering in under 10 ms).
Carry forwardThe migration driver is usually consolidation of contradictory systems, not greenfield elegance; audit how many permission systems you already run.
medium.com/building-carta/user-authorization-in-less-than-10-milliseconds…
Blog
Slack2021-05
Role management at Slack
The RBAC end of the spectrum, done carefully: permissions as actions, roles as sets,
delegated at org and workspace scope for Enterprise Grid.
Carry forwardRole systems and relationship systems answer the same check; choose by how much your permissions follow containment structure.
slack.engineering/role-management-at-slack
Blog
Gojek2026-06
We built a Zanzibar-style IAM system from scratch
A 2026 adoption account on SpiceDB, Go and PostgreSQL, written from the far side of
the in-app approach's decay into unmaintainable conditionals.
Carry forwardThe in-app camp without a rules/data split trends toward the 400-line check function; the split is mandatory in either camp.
medium.com/gojekengineering/we-built-a-zanzibar-style-iam-system…
Blog
Oso2021-09
Why authorization is hard
The problem taxonomy from the library camp's vendor: enforcement placement, the
"which actions can this user take" inversion, and decisions needing data from more than
one service.
Carry forwardThe yes/no check is the easy 20%; list filtering and cross-service data are where the architecture is actually decided.
osohq.com/post/why-authorization-is-hard
Blog
AuthZedretrieved 2026-09
New enemies: enforcing causal ordering in permissions checking
The clearest worked example of the new-enemy problem outside the paper, and candid
that closing it costs consistency machinery most deployments skip.
Carry forwardIf you run eventually consistent, the staleness window is a security parameter; measure it and put it in the threat model.
authzed.com/blog/new-enemies
Paper
Google / USENIX ATC2019-07
Zanzibar: Google's consistent, global authorization system
The reference document for the field: tuples, zookies, Leopard, and the measured
envelope (trillions of ACLs, millions of checks/s, p95 under 10 ms, five nines over
three years).
Carry forwardThe paper's core is not the graph model; it is that consistency, latency and availability were engineered as one budget.
usenix.org/system/files/atc19-pang.pdf
Paper
AWS2024-04
Cedar: a new language for expressive, fast, safe, and analyzable authorization
The policy-language camp's strongest artifact: semantics modelled in Lean with proved
properties, implemented in Rust, benchmarked by its authors against OpenFGA and Rego.
Carry forwardIf auditors must analyse policies statically, language design beats graph reach; that is the axis Cedar optimises that tuples do not.
arxiv.org/abs/2403.04651
Talk
Netflix / QCon Plus2021-11
Authorization at Netflix scale (Travis Nelson)
Centralizing the check in the critical path of a multi-million-RPS service, made
survivable by a lightweight gRPC client with custom caching filters and isolated failure
domains. Timestamped claims could not be verified this session; cited to the talk page.
Carry forwardAt extreme read volume, the checker's client library is the real system; the service behind it is a backing store for the client's cache.
infoq.com/presentations/authorization-scalability
Talk
USENIX ATC '192019-07
Zanzibar conference presentation (Ruoming Pang et al.)
The recorded presentation of [1]; the page carries the abstract's scale figures. The
video host was unreachable from this research session, so no timestamped claims are
cited from the recording itself.
Carry forwardWatch alongside the paper for the operational Q&A the text omits.
usenix.org/conference/atc19/presentation/pang
Vendor
CISA / ACSC / NSA2023-07
AA23-208A: Preventing web application access control abuse
Three national agencies issuing design guidance because one bug class, the absent
object-level check, kept producing national-scale breaches.
Carry forward"Checks on every request that touches sensitive data" is now written government guidance; secure-by-default framework behaviour is the recommended mechanism.
cisa.gov/news-events/cybersecurity-advisories/aa23-208a
Vendor
OWASP2023
API1:2023 Broken object level authorization
Top of the API security list for two consecutive editions; the canonical statement
that every endpoint receiving an object ID must check the caller against that object.
Carry forwardBOLA holding the #1 spot across editions is the empirical ranking of failure classes; weight your review effort accordingly.
owasp.org/API-Security/editions/2023/en/0xa1…
Blog
Krebs on Security2021-06
First American Financial pays farcical $500K fine
The reporter who disclosed the EaglePro exposure, on the SEC settlement that preceded
the NYDFS order; useful as the independent narrative of the discovery.
Carry forwardThe external-researcher path found in hours what internal routing sat on for months; make the report-to-fix path shorter than the journalist's.
krebsonsecurity.com/2021/06/first-american-financial…