Files
homelab-infra/docs/AUTH_MATRIX.md
T
Micha 813d3bd303 Mirror Komodo IP-allowlist labels and document de-publicization
Codex applied the ipallowlist middleware (Tailnet 100.64.0.0/10 + LAN 192.168.178.0/24) to the Komodo router live in the inline-managed self-stack; public now returns 403. Mirror the labels in ops/komodo/docker-compose.yml for parity (not auto-deployed), record the decision in docs/DECISIONS.md, and update docs/AUTH_MATRIX.md.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-23 12:11:45 +02:00

70 lines
4.7 KiB
Markdown

# Auth-Matrix
Typ: Inventar/Referenz · Stand: 2026-06-23 · Status: aktiv
Konsolidierte Review-Sicht auf die **effektive Zugriffskontrolle je oeffentlicher
UI/Domain**. Bisher lag das verstreut: Authelia-ACL nur in der Live-Config, die
Bypass-/Ausnahmefaelle in `HOMELAB_ARCHITECTURE_MASTER_V2.md` (Prosa + Service-
und Ausnahmen-Tabellen) und die Begruendungen in `DECISIONS.md`. Diese Datei
buendelt das an **einem** Ort und **verlinkt** auf die Quellen statt zu kopieren.
## Quelle der Wahrheit
- **Authelia-ACL** (bypass / two_factor / Catch-all): `security/authelia/configuration.yml`
(`access_control`). Repo-zu-Host-Drift prueft `services/authelia-diff.sh`.
- **Dienste ohne ForwardAuth** (bewusste Ausnahmen): Ausnahmen-Tabelle in
`HOMELAB_ARCHITECTURE_MASTER_V2.md` + die jeweiligen `DECISIONS.md`-Eintraege.
- **Nicht-Authelia-Schutzschichten** (Tailscale-Bind, Traefik-IP-Allowlist): die
jeweilige `docker-compose.yml` per Label bzw. Host-Bind.
> Diese Matrix ist die kommentierte Lese-/Review-Sicht. Bei Widerspruch gewinnen
> die oben genannten Quellen; dann diese Datei nachziehen.
## Policy-Klassen
- **Bypass** — Authelia laesst durch, **kein 2FA**; Schutz liegt allein in der
App-eigenen Anmeldung. Bewusst fuer Public-Apps mit eigenen Clients.
- **two_factor** — Authelia-ForwardAuth mit 2FA (Operator-TOTP), `authelia@file`.
- **Keine Authelia (native)** — bewusste Ausnahme ohne ForwardAuth, App-Auth bleibt.
- **Tailscale-only / LAN-only** — gar nicht oeffentlich, kein Traefik bzw. an
Tailscale-/LAN-IP gebunden.
- **IP-Allowlist** — oeffentlich geroutet, aber per Traefik-Middleware auf
vertrauenswuerdige Quell-Netze begrenzt (sonst 403).
## Matrix
| UI / Domain | Effektive Policy | Mechanismus | Quelle / Begruendung |
|---|---|---|---|
| `auth.kaleschke.info` | Bypass (Authelia selbst) | — | muss immer erreichbar sein |
| `immich`, `paperless`, `mealie`, `vault`, `ntfy`, `git` `.kaleschke.info` | **Bypass** → native App-Auth, kein 2FA | Authelia laesst durch | `configuration.yml`; Public-Apps mit eigener Auth/Clients |
| `vault.kaleschke.info/admin` | **IP-Allowlist** (Tailnet `100.64.0.0/10` + LAN `192.168.178.0/24`), sonst 403 | Traefik `ipallowlist` (Label) | DECISIONS 2026-06-23 (Audit-P1) |
| `files.kaleschke.info`, `scrutiny.kaleschke.info` | **two_factor** (explizit) | `authelia@file` | `configuration.yml`; scrutiny zusaetzlich privileged |
| uebrige `*.kaleschke.info` mit Middleware (monitoring/grafana, glances, glance, speedtest, bentopdf, mail-archiver, paperless-gpt, hermes, super-productivity, borg-ui, code-server) | **two_factor** (Catch-all) | `authelia@file` Catch-all | `configuration.yml`; Haertung 2026-06-06 |
| `komodo.kaleschke.info` | **IP-Allowlist** (Tailnet + LAN), sonst 403; native (keine Authelia) | Traefik `ipallowlist` (Label) + native Komodo-Auth | DECISIONS 2026-06-23; Webhooks/Periphery laufen intern, nicht ueber Traefik |
| `nextcloud` | Keine Authelia (native) | WebDAV/CardDAV/Client-Flows | DECISIONS 2026-04 / Ausnahmen-Tabelle |
| `n8n.kaleschke.info` | Keine pauschale Authelia (native) | Webhook-Endpunkte `/webhook/*` | Ausnahmen-Tabelle; ⚠ Middleware-Abweichung lt. policy-check |
| `plex.kaleschke.info` | Keine Authelia (native Plex) | File-Provider-Route; WAN-Port 32400 + Remote Access aus | DECISIONS 2026-05-28 |
| `home.kaleschke.info` (homeassistant) | Keine Authelia (native HA) | Traefik + `smarthome_net`; LAN-Port 8123 | Ausnahmen-Tabelle; ⚠ Middleware-Abweichung lt. policy-check |
| AdGuard-Admin | **Tailscale-only**, nicht oeffentlich | Host-Bind `100.80.98.33:8082`, kein Traefik | DECISIONS 2026-05-26 |
| `influxdb3-core` :8181 | **LAN-only** Writer (HA) | Host-Port, kein Traefik, nicht in `frontend_net` | dokumentierte Ausnahme |
## Review-Gaps (Audit 2026-06-23)
- **Komodo**: beschlossen IP-Allowlist (Tailnet + LAN) statt public (DECISIONS
2026-06-23). Self-Stack ist inline in Komodo verwaltet → Labels via Komodo-UI
setzen (Task #6), dann verifizieren (#7).
- **Bypass-Liste bewusst ohne 2FA**: Bei App-CVE oder Account-Kompromiss greift
davor kein Authelia. Akzeptiert fuer Public-Apps mit eigenen Clients; Review-
Trigger = neue sensible App in der Liste oder veraendertes Risikoprofil.
- **Middleware-Abweichungen** (policy-check `TRAEFIK002`): `n8n` und
`homeassistant` sind erwartbar (native Ausnahmen). `grafana` steht **nicht** in
der Ausnahmen-Tabelle und ist als Catch-all-`two_factor` gefuehrt — die
abweichende Middleware ist live zu bestaetigen (offen).
## Pflege
Diese Matrix bei jeder Aenderung an Authelia-ACL, vorgeschalteter Middleware,
Tailscale-Bind oder IP-Allowlist mitziehen. Zugehoerige Drift-Erkennung:
`services/authelia-diff.sh` (ACL), `ops/policy-checks/check_repo.ps1` (Middleware-
Standard `TRAEFIK002`).