Cloudflare Access¶
Cloudflare Access ist ein Zero-Trust-Authentifizierungsdienst, der die easySale-Dokumentation vor unberechtigtem Zugriff schützt.
Übersicht¶
Was ist Cloudflare Access?
Cloudflare Access fungiert als Login-Gateway vor der Dokumentation. Benutzer müssen sich authentifizieren, bevor sie Zugriff erhalten.
Funktionsweise:
1. Benutzer öffnet docs.easysale.de
↓
2. Cloudflare Access Login-Bildschirm erscheint
↓
3. Benutzer gibt E-Mail-Adresse ein
↓
4. One-Time-PIN (OTP) wird per E-Mail gesendet
↓
5. Nach Code-Eingabe: Session aktiv (24h)
↓
6. Zugriff auf Dokumentation gewährt ✅
Vorteile:
- ✅ Kein eigenes Login-System erforderlich
- ✅ Keine Passwörter - nur E-Mail + OTP
- ✅ Granulare Zugriffskontrolle
- ✅ Audit-Logs für Compliance
- ✅ Kostenlos bis 50 Benutzer/Monat
Ersteinrichtung¶
Voraussetzungen¶
- Cloudflare Account mit aktiviertem Zero Trust
- Cloudflare Pages Projekt ist erstellt
- Custom Domain ist konfiguriert
Schritt 1: Zero Trust aktivieren¶
- Öffnen Sie one.dash.cloudflare.com
- Falls noch nicht aktiviert: "Get started" klicken
- Free Plan auswählen
- Team-Domain wählen (z.B.
tech-schuppen.cloudflareaccess.com) - Diese Domain wird für den Login verwendet
- Ist nicht öffentlich sichtbar
Schritt 2: Access Application erstellen¶
- Zero Trust Dashboard → Access → Applications
- "Add an application" klicken
- "Self-hosted" auswählen
Schritt 3: Application konfigurieren¶
Basic Configuration:
| Feld | Wert |
|---|---|
| Application name | easySale Documentation |
| Session duration | 24 hours |
| Application domain | docs.easysale.de |
Optional: - Application logo: Upload eines Logos (wird beim Login angezeigt) - App Launcher visibility: Visible (zeigt App im User-Portal)
Schritt 4: Access Policy erstellen¶
Policy Name: Tech-Schuppen Team & Authorized Clients
Action: ✅ Allow
Configure rules:
Rule 1 - Tech-Schuppen Team¶
Rule 2 - Spezifische Kunden (optional)¶
Rule Connection: OR (Standard)
→ Jede Regel erlaubt separat Zugang
Schritt 5: Speichern & Aktivieren¶
- "Save application" klicken
- Access ist sofort aktiv ✅
Zugriff testen¶
Test-Prozedur¶
- Öffnen Sie
https://docs.easysale.dein einem Inkognito-Fenster - Sie werden zur Cloudflare Access Login-Seite weitergeleitet
- Geben Sie eine erlaubte E-Mail-Adresse ein
- Prüfen Sie Ihr E-Mail-Postfach für den OTP-Code
- Nach Code-Eingabe: Zugriff auf die Dokumentation ✅
Erwartetes Verhalten¶
Erlaubte E-Mail (@tech-schuppen.de): - ✅ OTP-Code wird gesendet - ✅ Zugriff wird gewährt - ✅ Session bleibt 24 Stunden aktiv
Nicht erlaubte E-Mail: - ❌ Kein OTP-Code wird gesendet - ❌ Zugriff wird verweigert - ❌ Fehlermeldung: "Access Denied"
Benutzer verwalten¶
Neuen Benutzer hinzufügen¶
Option 1: Domain-basiert (empfohlen für Team)¶
Option 2: Spezifische E-Mail-Adresse¶
- Access → Applications →
easySale Documentation→ Edit - Policies → Policy bearbeiten
- Add include → Rule type:
Emails - E-Mail-Adresse eingeben (z.B.
kunde@beispiel.de) - Save policy
Benutzer entfernen¶
- Access → Applications →
easySale Documentation→ Edit - Policies → Policy bearbeiten
- E-Mail-Adresse aus der Liste entfernen
- Save policy
Session-Timeout
Bereits angemeldete Benutzer bleiben bis zum Session-Ende (24h) eingeloggt. Um sofortigen Entzug zu erzwingen, muss die Session manuell beendet werden.
Aktive Sessions anzeigen¶
- Zero Trust Dashboard → Logs → Access
- Hier sehen Sie:
- Wer hat sich eingeloggt
- Wann erfolgte der Zugriff
- Von welcher IP-Adresse
Access Policies anpassen¶
Session-Dauer ändern¶
- Access → Applications →
easySale Documentation→ Edit - Session duration anpassen (z.B.
8 hours,7 days) - Save application
Empfohlene Werte:
Erweiterte Access Rules¶
IP-basierte Einschränkung¶
→ Nur von bestimmten IP-Bereichen erlaubtCountry-basierte Einschränkung¶
→ Nur aus DACH-Region erlaubtMehrere Bedingungen kombinieren¶
→ Nur Team-Mitglieder aus ÖsterreichTroubleshooting¶
Problem: OTP-E-Mail kommt nicht an¶
Mögliche Ursachen:
- Spam-Ordner prüfen
-
E-Mail von
no-reply@cloudflareaccess.comsuchen -
E-Mail-Adresse nicht in Policy
- Verifizieren Sie, dass die Domain/E-Mail erlaubt ist
-
Access → Applications → Policy überprüfen
-
E-Mail-Server blockiert Cloudflare
- Whitelist hinzufügen:
cloudflareaccess.com
Problem: "Access Denied" trotz korrekter E-Mail¶
Lösungen:
-
Policy überprüfen
-
Tippfehler in E-Mail-Adresse
-
Exakte Schreibweise prüfen (Groß-/Kleinschreibung egal)
-
Cache leeren
- Inkognito-Fenster verwenden
- Browser-Cache löschen
Problem: Session läuft zu früh ab¶
Ursache:
Browser-Cookies werden gelöscht oder "Do Not Track" ist aktiviert.
Lösung:
1. Cloudflare Access Domain in Cookie-Whitelist aufnehmen
2. Browser-Einstellungen: Cookies für cloudflareaccess.com erlauben
Problem: Zu viele Login-Versuche¶
Fehlermeldung:
Rate limit exceeded
Lösung: - Warten Sie 15 Minuten - Cloudflare blockiert temporär bei zu vielen Anfragen - Kontaktieren Sie Support für höhere Limits
Client-spezifische Dokumentation¶
Automatisiertes Setup für neue Kunden¶
Für neue Client-Projekte kann die komplette Cloudflare-Konfiguration automatisiert werden:
Setup-Skript¶
cd onboarding/client_onboarding/steps/setup
CLIENT_DIR=/path/to/easysale-client-foo \
CLIENT_NAME="Foo GmbH" \
CLIENT_EMAILS="kunde@foo.de,support@foo.de" \
CLOUDFLARE_API_TOKEN="xxx" \
CLOUDFLARE_ACCOUNT_ID="yyy" \
./06_setup_cloudflare_access.sh
Was das Skript automatisch erledigt¶
- Cloudflare Pages Projekt
- Projektname:
easysale-{slug}-docs - Standard-Domain:
easysale-{slug}-docs.pages.dev -
Custom-Domain:
{slug}-docs.easysale.de -
Custom Domain Konfiguration
- Fügt Custom Domain automatisch zum Pages-Projekt hinzu
-
Gibt CNAME-Eintrag für Strato aus (muss manuell gesetzt werden)
-
Cloudflare Access Application
- Application Name:
{Client Name} Documentation - Domain Protection: Aktiviert auf Custom Domain
-
Session Duration: 24 Stunden
-
Access Policies
- ✅ @tech-schuppen.de (automatisch)
-
✅ Alle in
CLIENT_EMAILSangegebenen Adressen -
GitHub Variables
CLOUDFLARE_PAGES_PROJECT→ für Deployment-Workflow
Credentials bereitstellen¶
Option 1: Umgebungsvariablen
Option 2: GitHub Org Secrets (bevorzugt)
Wenn CLOUDFLARE_API_TOKEN und CLOUDFLARE_ACCOUNT_ID als Org Secrets gesetzt sind, werden sie automatisch geladen.
Beispiel: Kunde "Gemüsebau Steiner"¶
CLIENT_DIR=../easysale-client-gemuesebau-steiner \
CLIENT_NAME="Gemüsebau Steiner" \
CLIENT_EMAILS="info@gemuesebau-steiner.at,buchhaltung@gemuesebau-steiner.at" \
./06_setup_cloudflare_access.sh
Ergebnis:
- Pages-Projekt: easysale-gemuesebau-steiner-docs
- Fallback-Domain: easysale-gemuesebau-steiner-docs.pages.dev
- Custom-Domain: gemuesebau-steiner-docs.easysale.de ✨
- Zugriff für:
- @tech-schuppen.de
- info@gemuesebau-steiner.at
- buchhaltung@gemuesebau-steiner.at
DNS bei Strato setzen:
Domain: easysale.de
Typ: CNAME
Name: gemuesebau-steiner-docs
Wert: easysale-gemuesebau-steiner-docs.pages.dev
TTL: 3600
Nach dem Setup¶
-
DNS-Eintrag bei Strato setzen:
-
DNS-Propagation abwarten (~5-15 Minuten)
-
Deployment auslösen:
-
Access testen:
Zusammenfassung¶
Project name: easysale-gemuesebau-steiner-docs
Fallback-Domain: easysale-gemuesebau-steiner-docs.pages.dev
Custom-Domain: gemuesebau-steiner-docs.easysale.de
Access Policy:
- @tech-schuppen.de
- info@gemuesebau-steiner.at
- buchhaltung@gemuesebau-steiner.at
DNS bei Strato:
Manuelles Setup für Client-Projekte¶
Falls Sie die Konfiguration manuell vornehmen müssen:
Beispiel: Gemüsebau Steiner
Project name: easysale-gemuesebau-steiner-docs
Domain: easysale-gemuesebau-steiner-docs.pages.dev
Access Policy:
- @tech-schuppen.de
- info@gemuesebau-steiner.at
- buchhaltung@gemuesebau-steiner.at
Vorteile: - Jeder Client sieht nur seine eigene Dokumentation - Unterschiedliche Zugriffsrechte pro Client - Individuelle Session-Dauern konfigurierbar
Audit & Compliance¶
Zugriffsprotokolle¶
Abruf:
1. Zero Trust Dashboard → Logs → Access
2. Filter nach Application: easySale Documentation
Verfügbare Informationen: - Benutzer-E-Mail - Zeitstempel - IP-Adresse - User-Agent (Browser) - Land - Erfolg/Fehlschlag
Aufbewahrung: - Free Plan: 24 Stunden - Paid Plans: 30+ Tage
DSGVO-Konformität¶
Datenverarbeitung: - E-Mail-Adressen werden zur Authentifizierung gespeichert - IP-Adressen für Security-Logs (24h) - Cloudflare ist GDPR-konform zertifiziert
Datenschutzerklärung:
Zum Schutz unserer Dokumentation verwenden wir Cloudflare Access.
Dabei werden E-Mail-Adressen zur Authentifizierung und IP-Adressen
für Sicherheitsprotokolle vorübergehend verarbeitet.
Weitere Informationen: https://www.cloudflare.com/privacypolicy/
Kosten¶
Free Plan¶
✅ Bis zu 50 Benutzer/Monat
✅ Unbegrenzte Applications
✅ E-Mail OTP Authentication
✅ 24h Log-Retention
Ausreichend für: - Interne Team-Dokumentation - Kleine bis mittlere Kundenbasis - Standard-Sicherheitsanforderungen
Paid Plans¶
Ab $7/Monat pro User (Enterprise Features): - Mehr als 50 Benutzer - Extended Log-Retention (30+ Tage) - SAML/OIDC Integration - Multi-Factor Authentication (Hardware-Keys) - SLA & Support
Best Practices¶
Security¶
- Regelmäßige Policy-Reviews
- Vierteljährlich Benutzer-Liste prüfen
-
Ausgeschiedene Mitarbeiter entfernen
-
Session-Dauer angemessen wählen
- Nicht länger als notwendig
-
Sensible Docs: max. 8 hours
-
IP-Whitelisting für Admin-Zugriff
- Cloudflare Dashboard nur von Firmen-IP
- Zero Trust → Settings → Authentication
Monitoring¶
-
E-Mail-Alerts einrichten
-
Wöchentliche Log-Reviews
- Ungewöhnliche Zugriffsmuster erkennen
- Geografisch unerwartete Zugriffe prüfen
Onboarding neuer Benutzer¶
Prozess:
- Benutzer zu Access Policy hinzufügen
- E-Mail an Benutzer senden:
- Bei Problemen: Logs überprüfen