1
0
Fork 0
forked from lukas/nixos-config
nixos-config/docs/access-control.md
pijukka 5c78092bde docs: record OIDC policy for external services, flag mealie/trek
Captures the decision that new traefik-routes-external.nix entries
should be OIDC-gated (or have equivalent own auth) unless there's an
explicit reason not to, and flags mealie/trek from PR #8 as pending
that follow-up.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-29 14:22:10 +02:00

62 lines
2.8 KiB
Markdown

# LDAP-Gruppen und Dienstzugriff
Dex authentifiziert die Benutzer gegen LLDAP und übernimmt die direkten
Gruppenmitgliedschaften als OIDC-Claim `groups`. Die Dienste prüfen diesen
Claim jeweils selbst. Gruppenmitgliedschaften werden derzeit in LLDAP gepflegt
und nicht als Klartext in dieser Nix-Konfiguration gespeichert.
## Policy: externe Dienste brauchen OIDC-Absicherung
Festgehalten am 29.07.2026: Neue Einträge in
`traefik-routes-external.nix` (öffentlich erreichbar) sollen im
Regelfall über einen OIDC-Gruppen-Claim (Dex + LLDAP, wie oben) oder
eine gleichwertige eigene Authentifizierung des Dienstes abgesichert
sein. Ausnahmen sind explizit zu begründen — z. B. bewusst öffentlicher
Content (`data`, `board`) oder Dienste mit eigenem, unabhängigem
Login-System (GoToSocial/phanpy).
**Noch offen:** `mealie` und `trek` (PR #8, `fastpi`-Dienste von alfo,
29.07.2026 gemerged) laufen aktuell ohne Gruppen-Check extern. Soll bei
Gelegenheit nachgereicht werden — Absicherung prüfen/ergänzen, sobald
die Dienste selbst laufen (`trek` antwortete beim Rollout noch mit 502).
## Aktuelle Gruppen
| Gruppe | Zweck | Dienst |
| --- | --- | --- |
| `intern` | bestehender Tailnet-/Headscale-Zugriff | Headscale |
| `forgejo` | Anmeldung bei Forgejo | Forgejo |
| `gotosocial` | Anmeldung bei GoToSocial | GoToSocial |
| `gotosocial_admin` | GoToSocial-Administrationsrechte | GoToSocial |
`lukas` ist Mitglied von `forgejo` und `gotosocial`. `alfo` ist ebenfalls in
beiden Gruppen. `admin` ist Mitglied von `gotosocial` und
`gotosocial_admin`.
## Dienstregeln
- Forgejo verwendet für die Dex-OIDC-Quelle den zusätzlichen Scope `groups`,
den Claim `groups` und verlangt den Wert `forgejo`.
- GoToSocial erlaubt nur den Claimwert `gotosocial`; der Claimwert
`gotosocial_admin` verleiht zusätzlich Administratorrechte.
- Die Website `0ff.space` ist über oauth2-proxy und Dex für authentifizierte
LDAP-Benutzer geschützt. ActivityPub-Discovery- und Föderationspfade bleiben
öffentlich.
Forgejo zeigt bei einem fehlenden erforderlichen Claim irreführend
„Account is suspended“. Das bedeutet in diesem Fall, dass der lokale Forgejo-
Account gar nicht angelegt wurde.
## Verifizierter Teststand
- `testcal-a` gehört zu `forgejo`: Forgejo-OIDC-Login und Registrierung waren
erfolgreich; Dex meldete `groups=[forgejo]`.
- `testcal-b` gehört zu `gotosocial`: GoToSocial-OIDC-Login funktioniert,
Forgejo weist den Login erwartungsgemäß ab; Dex meldete
`groups=[gotosocial]`.
- Ein erfolgreicher Website-Login von `testcal-a` wurde über oauth2-proxy mit
HTTP 200 bestätigt.
Bei neuen Benutzern: zuerst den LLDAP-Account anlegen, die erforderliche
Dienstgruppe zuweisen und anschließend den OIDC-Login testen. Passwörter und
temporäre Zugangsdaten gehören nicht in dieses Repository.