ad47979000
Consolidate effective access policy per public domain (Authelia bypass/two_factor, native exceptions, Tailscale-only, IP-allowlist) into a single reviewable matrix, surfacing the Authelia bypass list that previously lived only in the live config. Indexed in docs/README.md. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
70 lines
4.7 KiB
Markdown
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` | **Keine Authelia** (native) | bewusste Ausnahme, keine ForwardAuth (Webhooks/`/ws/periphery`) | DECISIONS 2026-04; **Audit-P1: public + RW-Docker-Socket → Tailscale-only geplant (Task #5)** |
|
|
| `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** ist die kritischste offene Position: public erreichbar + RW-Docker-
|
|
Socket. Plan: Tailscale-only (Task #5), interner Gitea→Komodo-Webhook bereits
|
|
als erreichbar bestaetigt (Task #4).
|
|
- **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`).
|