2.9 KiB
TP14.4 — CF-Access-Service-Token für Claude rotieren
Stand 2026-08-19 · vorbereitet, nicht ausgeführt. Kurzes Runbook für einen Einmal-Schuss: das Secret ist genau einmal sichtbar, danach nie wieder.
1. Ist-Stand (verifiziert 2026-08-19)
mcp/cloudflare/.env enthält kein CF_ACCESS_CLIENT_ID und kein CF_ACCESS_CLIENT_SECRET.
Der TP steht also zu Recht offen — es ist nichts halb erledigt, was man erst zurückbauen müsste.
Vorhanden und nutzbar: CF_API_TOKEN, CF_ACCOUNT_ID, CF_ZONE_ID (chmod 600, gitignored).
Das Token trägt laut TP14.4 bereits die nötigen Scopes Access: Service Tokens: Read + Write.
Wozu das Ganze: damit Claude Dienste hinter CF-Access erreichen kann, ohne den interaktiven
Login-Flow — das ist das „komm schwer durch Tunnel"-Symptom aus Memory ref_cf_access_claude_profile.
2. Ablauf
- Token-ID ermitteln:
GET /accounts/{account_id}/access/service_tokens→ den Eintragclaude-mcpheraussuchen,idnotieren. - Rotieren:
POST /accounts/{account_id}/access/service_tokens/{id}/rotate - 🔴 Sofort schreiben. Die Antwort enthält
client_idundclient_secret— das Secret wird nur bei der Rotation ausgegeben. Wer es nicht in diesem Moment wegschreibt, muss erneut rotieren (was den alten Wert ungültig macht, also nicht folgenlos ist). - Ablegen in
mcp/cloudflare/.env:Datei bleibtCF_ACCESS_CLIENT_ID=… CF_ACCESS_CLIENT_SECRET=…chmod 600; sie ist übermcp/**/.envbereits gitignored — nicht committen. - Konsolidieren nach globaler Konvention: Werte zusätzlich in
~/.secrets/credentials.env, Index-Zeile (Schlüssel → Herkunftspfad) in~/.secrets/README.md. Single Source of Truth bleibt der Originalort,~/.secrets/ist die Nachschlage-Kopie.
⚠️ Beim Ausgeben von Fehlern/Tracebacks maskieren — Projektregel aus
feedback_redact_router_passwords_in_tracebacks, gilt hier genauso.
3. Abnahme
Ein Aufruf gegen einen Access-geschützten Hostname mit den beiden Headern:
CF-Access-Client-Id: <client_id>
CF-Access-Client-Secret: <client_secret>
- mit Headern → der Dienst antwortet
- ohne Header →
403
Beides prüfen. Nur der Erfolgsfall allein beweist nichts (der Hostname könnte auf bypass stehen —
vw tut das bewusst, s. TP16.2).
Danach Memory ref_cf_access_claude_profile nachziehen: dort steht bisher „Service-Token-Secret fehlt
lokal" — das ist nach dieser Rotation nicht mehr wahr.
4. Fußnote mit Verfallsdatum
⏰ Der CF_API_TOKEN selbst läuft am 2027-01-09 ab (Memory ref_cf_mcp_readonly_token_writes).
Er ist account-owned, verifiziert also über einen anderen Endpoint als ein User-Token — wer das
verwechselt, hält ein funktionierendes Token für kaputt. Ohne ihn ist auch diese Rotation nicht mehr
möglich, ebensowenig der TP16.3-Schnitt.