Org-create is open + orgs are never quota'd → total per-user cap bypass (disk-fill outage) #121
Etiketter
Inga etiketter
area/backups
area/ci
area/control-panel
area/identity
area/infra
area/observability
area/payments
area/security
area/storage
area/web
blocked
needs-info
needs-triage
ready-for-implementation
type
bug
type
chore
type
docs
type
epic
type
feature
type
task
wontfix
Ingen milstolpe
Inget projekt
Inga tilldelade
1 deltagare
Notiser
Förfallodatum
Inget förfallodatum satt.
Beroenden
Inga beroenden satta
Referens
bitborg/bitborg-infra#121
Läser in…
Hänvisa till i nytt ärende
Ingen beskrivning angiven.
Ta bort grenen "%!s()"
Borttagning av en gren är permanent. Även om den borttagna grenen kan fortsätta existera en kort tid innan den faktiskt tas bort, kan det INTE ångras i de flesta fall. Vill du fortsätta?
Severity: CRITICAL — pre-onboarding infra audit (2026-07-19).
Total per-user cap bypass via organizations
ansible/roles/forgejo/defaults/main.yml:43forgejo_default_allow_create_org: trueandapp.ini.j2:91DEFAULT_ALLOW_CREATE_ORGANIZATION = true→ anyone can create orgs./api/v1/admin/usersand never enumerates orgs (org quota is a deferred TODO ingitborg-reconciler.sh.j2). Organizations are separate quota owners → they fall to[quota.default] = -1 = unlimited.Impact
Any user (including one in the JIT window, or anyone at all if the reconciler is down — see the fail-open quota issue) can create an org and push unlimited git/LFS/packages into it, bypassing every per-tier cap and filling the shared 60 GB data volume. Because Forgejo + Postgres + Kanidm share that volume, filling it is a full-instance outage.
Ask
forgejo_default_allow_create_org: falsenow that the reconciler is live (the defaults comment notes org-create is a tier privilege the reconciler grants; flipping false is now safe). ⚠️ apply-day: confirm the reconciler grants org-create to entitled users first.Effort M.
✅ Resolved + verified live (2026-07-19) — both parts applied:
DEFAULT_ALLOW_CREATE_ORGANIZATION = false— confirmed in the running Forgejo config. Org-create is now gated toent_orgsmembers via the reconciler (which PATCHes it per-user every 5 min).org-default(size:all = 5 GiB) +org-unlimitedgroups created; thegitborgorg is exempted toorg-unlimited(verified:org-unlimitedmembers =[bitborg]); reconciler last-run status 0. New tenant orgs get the 5 GiB total cap — closing the bypass where a user pushed unlimited data into an org and filled the shared data volume.Validated via a reconciler dry-run (org enumeration against
/api/v1/admin/orgsworks) then a live run. Forgejo healthy after the app.ini restart.