Option to discourage/disallow anonymous HTTP(S) fetching (first-fetch nudge → block, login for token URL) #19
Labels
No labels
Compat/Breaking
demo
hardening
identity
Kind/Bug
Kind/Documentation
Kind/Enhancement
Kind/Feature
Kind/Security
Kind/Testing
needs-verification
notify
ops
packaging
perf
Priority
Critical
Priority
High
Priority
Low
Priority
Medium
process
rbac
research
Reviewed
Confirmed
Reviewed
Duplicate
Reviewed
Invalid
Reviewed
Won't Fix
scanning
stage-6e
stage-6f
stage-6g
Status
Abandoned
Status
Blocked
Status
Need More Info
transport
web
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
qwc-open/tulli#19
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Motivation
Today HTTP(S) fetches are anonymous by default (identity policy: SSH rejects unknown keys; HTTP identity is optional — anonymous fetch OK, invalid token → 401). That's fine for a small setup, but in a larger org it defeats attribution: when a fetch is anonymous, triage/notify has no principal to route to, so any follow-up (a quarantine, a CVE that needs an owner, "who pulled this bad ref?") falls back to a central person instead of the actual consumer. We want to push people onto identified fetching so the
RecipientsForRepo/ notify path resolves to the real user.Proposed behavior (to refine later)
A configurable HTTP-identity mode, roughly:
open(current) — anonymous allowed, no nudge.nudge(the nice one) — allow the first anonymous fetch from a given IP/identity, but inject a message into the git output warning that further anonymous fetches from this IP will be blocked, and telling the user to log into the proxy web UI to get a personal, token-baked clone URL and configure git globally (git config --global url."https://<token>@proxy/…".insteadOf …). Subsequent anonymous fetches from that IP → blocked (ERR / 401).enforce— anonymous fetching disallowed outright; missing/invalid token → 401 from the start.Mode should be settable globally, and plausibly per-repo later (some public mirrors may stay
open).Open questions / notes for refinement
git http-backendCGI) we can't inject an informational message into a successful fetch — only the block path (singleERRpkt-line) surfaces text. The "allow first, warn in output" step depends on the deferred Strategy B (driveupload-packdirectly) work that unlocks band-2 sideband messages. Until then,nudgecould degrade to: serve silently the first time, then block with an ERR message that contains the login/token instructions.insteadOf+ token URL) on the account page so the nudge has a concrete destination. Basic-auth password slot already carries the token today.enforce+ CI. CI/robots should use tokens (ties into robot users, #2) — enforce mode assumes everyone who matters is identified.Scope
Design/refine-later placeholder — no implementation yet. Config knob + the
enforcemode are cheap and independent of Strategy B; thenudge-with-in-band-message is the part gated on the sideband work.Moved the greeting / onboarding-page detail to its own issue: #20. This issue (#19) depends on that page existing — the nudge/enforce messaging points users there to configure git properly.