TP49 widerlegt und geschlossen — kein Fix, Doku korrigiert

Christoph hat die Praemisse am 2026-10-06 selbst widerlegt: testus@emsenhuber.com
wird von CF Access abgelehnt. Die E-Mail-Bindung der Policy gilt, login_method
hebelt sie nicht aus. Es gab nie eine offene Tuer.

Der Fehler war ein Fehlschluss, kein Raten: Doku-Semantik zu login_method
("welche Methode wurde benutzt") wurde so gelesen, als ersetze der Include die
danebenstehende email-Zeile. include ist ein OR — die Zeilen sind Alternativen,
nicht Bedingungen. Aus "GitHub ist eine Alternative zur E-Mail" wurde "GitHub
allein genuegt", und das stand als Tatsache in der Akte (Fund 2026-07-10).

Belegt: kein IdP traegt eine Domain-Bindung (github/google/onetimepin alle nur
client_id + redirect_url, live per GET .../identity_providers). Die Einschraenkung
kann also nur aus der Policy kommen — und sie greift nachweislich.

Grenze der Aussage: der GitHub-Pfad selbst wurde nicht gemessen, nur geschlossen.

Korrigiert: teilprojekte.md TP49 (Herkunft des Fehlers mitgenannt), cf-tunnel-
mapping.md Paragraf 10 (Ursprungsfund widerlegt, nicht geloescht), Startauftrag
als "NICHT AUSFUEHREN" markiert. Kein Schreibzugriff auf die Terpenfinder-Policy;
blauebluethen-Projektgrenze gewahrt.

Erhalten bleiben nur die Gotchas: 32-Hex-App-IDs, cloudflare-MCP ist read-only
(Write-Probe no-op-PUT -> 1010), Reusable Policy nur per App-PUT detachbar.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-10-06 07:37:46 +02:00
parent 81cd7bfb7e
commit 4b307315f0
3 changed files with 108 additions and 90 deletions

View File

@@ -303,6 +303,25 @@ Tokens: nur im Container-Env + jederzeit via `GET /accounts/…/cfd_tunnel/<id>/
**🔴 NEUER FUND (wichtiger als vw!) — Wildcard `*.emsenhuber.net` (`16aaec78`) zu offen:** Policy `christoph` hat `include: email:christoph OR login_method:github OR login_method:google`. **`login_method:<idp>` als include matcht JEDEN, der sich via GitHub/Google einloggt** — nicht nur christoph. D.h. **jeder GitHub-/Google-User erreicht nach Login alle internen Dienste** (hass, grafana, portainer, pve, gitea, …). Fix = die zwei `login_method`-Includes raus (nur `email:christoph` + ggf. weitere erlaubte Mails + `non_identity bf4` + `claude-mcp`). **NICHT einseitig geändert** (ändert Login-Verhalten überall) → User-Entscheidung. War im Memory schon als „Policy christoph verschlanken" geflaggt.
> ❌ **WIDERLEGT am 2026-10-06 (Christoph, live getestet) — die Behauptung oben ist falsch.**
> `testus@emsenhuber.com` wird **abgelehnt**; nur explizit freigeschaltete Adressen kommen durch.
> **Die E-Mail-Bindung der Policy gilt — `login_method` hebelt sie nicht aus.**
>
> **Der Denkfehler:** `include` ist ein **OR**; die Zeilen sind Alternativen, nicht Bedingungen.
> Aus „GitHub ist eine Alternative zur E-Mail" wurde „GitHub allein genügt" — belegt war das nie.
> Dazu passt, dass **kein** IdP eine Domain-Bindung trägt (live geprüft:
> `GET /accounts/{id}/access/identity_providers` — github/google/onetimepin alle nur
> `client_id` + `redirect_url`); die Einschränkung kann also nur aus der Policy kommen, und sie greift.
>
> **Es gab hier keine offene Tür.** Der Eintrag stand vom 2026-07-10 bis 2026-10-06 als
> „wichtiger Fund" in der Akte, gestützt allein auf einen Lese-Schluss — der Test dauerte zwei
> Minuten. Details + Gotchas: `docs/teilprojekte.md` → `### TP49` (geschlossen, kein Fix).
> ⚠️ **Nicht separat gemessen:** der GitHub-Pfad selbst (Google→GitHub ist geschlossen, nicht
> getestet) — deshalb „ungetestet", nicht „bewiesen sauber".
>
> ✅ **Unberührt davon bleibt:** TP41 hat den Wildcard ohnehin auf Access-Groups
> (`zt-humans`/`zt-home`/`zt-automation`) umgestellt — dort steht heute kein `login_method` mehr.
**⏸️ `hass` 400 / `ha-mcp` — zwei getrennte Layer:**
- **Access-Layer (remote):** HA-Companion-App kann kein interaktives Access-Login → Fix = iPhone in **WARP** enrollen (`Warp Login App` `6c32fe23` `allow:christoph` existiert → christoph darf enrollen). Client-seitig, braucht User am Gerät. Vom Heim-Netz (bf4-IP) ohnehin ohne Login erreichbar.
- **Origin-Layer:** `hass.emsenhuber.net` gibt **vom Heim-Netz** (Access passt via bf4-IP) trotzdem **400** (CF `server:cloudflare`, aber Origin-verursacht) = **HA lehnt den Request ab** — HA-`http:`-Config (`use_x_forwarded_for` + `trusted_proxies` inkl. cloudflared-Range, ggf. Host-Allowlist). **Separates HA-Thema, NICHT Tunnel/Access** — offen.