1. Hosting und Datenspeicherort
Wo Kundendaten gespeichert und verarbeitet werden:
- Datenbank, Authentifizierung und Dateispeicherung bei Supabase, Region eu-central-1 (Frankfurt, Deutschland).
- Web-Hosting und Serverfunktionen bei Vercel, fixiert auf fra1 (Frankfurt). Öffentliche Seiten, die für alle Besucher gleich sind, etwa die Ratgeber, werden zusätzlich im globalen Netzwerk von Vercel zwischengespeichert. Einige Plattformtelemetriedaten werden in den Vereinigten Staaten auf Grundlage von EU-Standardvertragsklauseln übermittelt.
- DNS-Auflösung über das globale Anycast-Netzwerk von Cloudflare. Dort werden keine Anwendungsdaten gespeichert.
- Konto- und Benachrichtigungs-E-Mails über Heinlein Hosting GmbH (Mailbox.org), Berlin, Deutschland.
- Nutzen Sie eine KI-Funktion (die Urkundenlesung oder „Frag deine Herde“ im geschlossenen Test), wird das, was diese Funktion braucht, an Anthropic gesendet; Anthropic speichert es in den Vereinigten Staaten und kann es in jeder von Anthropic genutzten Region verarbeiten. Siehe Datenschutzerklärung, Abschnitt 7.
- Wenn Sie den Newsletter abonnieren, nutzt Resend Ihre E-Mail-Adresse für den Versand. Resend speichert Kontodaten in den Vereinigten Staaten, auf Grundlage der EU-Standardvertragsklauseln. Betriebsdaten gelangen nicht zu Resend.
- Wenn Sie „Weiter mit Google“ wählen, wickelt Google diese Anmeldung als eigener Verantwortlicher ab. Google ist keiner unserer Auftragsverarbeiter.
2. Verschlüsselung
Alles, was zwischen Ihrem Browser und AlpacaKeep übertragen wird, ist verschlüsselt (TLS 1.2 oder neuer). Unverschlüsselte Anfragen werden auf die sichere Adresse umgeleitet, und die Website weist Browser an, nur die sichere Adresse zu verwenden (HSTS). Gespeicherte Daten werden von unserem Datenbankanbieter Supabase mit AES-256 verschlüsselt. Hochgeladene Fotos und Dokumente liegen in derselben Frankfurter Region wie die Datenbank.
3. Berechtigungsmodell
Jede Anfrage aus einer angemeldeten Browser-Sitzung wird über die Row-Level Security (RLS) von PostgreSQL ausgeführt: Die Datenbank selbst prüft Zeile für Zeile, ob Ihre Rolle auf diesem Betrieb das erlaubt. Es gibt vier Stufen: nur Inhaber, Finanzzugriff (Inhaber und Mitbesitzer), Schreibzugriff (zusätzlich Mitarbeiter) und jedes Mitglied (zusätzlich Betrachter). Die meisten Richtlinien nutzen die Hilfsfunktion my_farm_ids(tier); der Dateispeicher und die Datenbankfunktionen nutzen has_farm_permission(farm_id, tier). Die Oberfläche der App ist nicht die Sicherheitsgrenze: Auch eine gefälschte Anfrage kann keine Daten lesen, die eine Richtlinie verweigert.
Einige serverseitige Aufgaben verwenden einen Service-Role-Schlüssel, der die RLS umgeht, weil sie ohne angemeldete Sitzung laufen oder zwei Betriebe betreffen. Jede davon führt zuerst eine eigene Prüfung durch, etwa ein gemeinsames Geheimnis, eine Zahlungssignatur, die Rolle der angemeldeten Person oder ein Ratenlimit. Es sind:
- Geplante nächtliche Aufgaben: die Bereinigung nach den Aufbewahrungsfristen, die Löschung von Konten nach ihrer Wartefrist, das Auslaufen von Tarifen mit den zugehörigen E-Mails, die Pflege des Dateispeichers und eine tägliche Zusammenfassung für den Betreiber.
- Abrechnung: der Stripe-Zahlungs-Webhook, die Verknüpfung eines Betriebs mit seinem Stripe-Kunden und die Erfassung einer Kündigung oder eines Widerrufs, einschließlich des öffentlichen Widerrufsformulars.
- Die Statusprüfung für unsere Verfügbarkeitsüberwachung.
- Das Verzeichnis gesendeter E-Mails, das jede ausgehende E-Mail durchläuft, damit Versandlimits eingehalten werden.
- Käuferanfragen: die Annahme einer Anfrage von Besuchern, die Unterhaltung des Käufers per E-Mail-Link oder Käuferkonto, die Benachrichtigungsadresse des Verkäufers und das Anzeigen der Telefonnummer eines Betriebs auf Wunsch.
- Öffentliche Seiten für nicht angemeldete Besucher: kurzlebige signierte Links für Dokumente, die ein Verkäufer auf einer Verkaufsseite veröffentlicht hat, sowie die öffentliche Herdenseite, das Website-Widget und die öffentliche, nur lesende API.
- Tierübertragungen zwischen zwei Betrieben: das Kopieren der übertragenen Dateien aus dem Speicher des Verkäufers und das Aktualisieren seiner öffentlichen Seiten.
- KI-Funktionen: das Speichern des Ergebnisses der Urkundenlesung und von „Frag deine Herde“, nachdem die Anfrage der angemeldeten Person geprüft wurde.
- Anmeldungen zum Newsletter und zum frühen Zugang.
- Die Admin-Konsole des Betreibers, die einen Code aus einer Authenticator-App verlangt (siehe Abschnitt 7).
Der Schlüssel existiert nur auf dem Server und wird nie an den Browser gesendet.
4. Aktivitätsprotokoll
Jede in der App gespeicherte Änderung schreibt einen Eintrag in die Tabelle activity_log: wer was wann getan hat, mit den geänderten Feldern oder dem Zusammenhang der Änderung. Routineeinträge werden 24 Monate aufbewahrt; alle anderen Einträge (Sicherheit, Rechtsfragen, Finanzen, Mitgliedschaft und Tierregister) werden aufbewahrt, solange der Betrieb besteht, und mit ihm gelöscht. Die meisten Datensätze, die Sie löschen (Tiere, Ereignisse, Aufgaben und Ähnliches), werden 24 Monate später endgültig entfernt, mit diesen Ausnahmen: Finanzeinträge und Tiere, die noch mit Finanz- oder Zuchtdaten verknüpft sind, bleiben bis zur Löschung des Betriebs erhalten; ein Tier mit einer Tierbewegung aus den letzten 3 Jahren bleibt erhalten, bis diese 3 Jahre zurückliegt; ein Tier mit einer Arzneimittelbehandlung aus den letzten 5 Jahren bleibt erhalten, bis diese 5 Jahre zurückliegt. Dokumente und Tierbewegungen bleiben erhalten, bis Sie sie löschen oder der Betrieb gelöscht wird.
5. Sicherung und Wiederherstellung
Das Supabase-Projekt läuft auf dem Pro-Plan, der täglich ein Backup der Datenbank erstellt und die Backups der letzten 7 Tage aufbewahrt. Diese Backups umfassen die Datenbank, nicht die hochgeladenen Dateien (Fotos und Dokumente). Point-in-Time-Recovery ist ein separat kostenpflichtiges Add-on und derzeit nicht aktiviert; eine Wiederherstellung führt daher auf das letzte tägliche Backup zurück. Ein Offsite-Backup außerhalb von Supabase besteht derzeit nicht. Wenn Backup-Garantien für Ihre Bewertung wesentlich sind, fragen Sie uns. Wir sagen Ihnen genau, was am Tag Ihrer Anfrage vorhanden ist.
6. DSGVO-Ansatz
Wir behandeln die DSGVO als grundlegende Produktanforderung, nicht als optionale Funktion. Jedes Mitglied eines Betriebs kann dessen Tiere, Ereignisse, Shows, Faserergebnisse und Bestandsregister als CSV exportieren; Inhaber und Mitbesitzer können zusätzlich die Finanzbuchungen exportieren. Jede Person kann bei uns eine vollständige Kopie ihrer Daten anfordern, eine Berichtigung beantragen oder die Löschung ihres Kontos verlangen. Die Löschung hat eine Wartefrist von 30 Tagen, in der Sie es sich anders überlegen können. Danach wird ein Betrieb, dessen Inhaber Sie sind, mit allen Daten gelöscht (arbeiten dort noch andere Personen, übertragen Sie den Betrieb zuerst an eine von ihnen); auf einem Betrieb, der jemand anderem gehört, bleiben die von Ihnen erfassten Daten erhalten, ohne Ihren Namen. Einige Daten werden aus rechtlichen Gründen oder als Nachweis aufbewahrt, wie in der Datenschutzerklärung, Abschnitt 8, aufgeführt. Die Datenschutzerklärung enthält auch die vollständigen Informationen nach DSGVO Art. 13/14 und wie wir Ihre Anfragen bearbeiten.
7. Konten und Schutz der Website
Wie Konten, die Anmeldung und die Website selbst geschützt sind:
- Passwörter brauchen mindestens 10 Zeichen, darunter eine Zahl.
- Ein neues Konto muss seine E-Mail-Adresse vor der ersten Anmeldung bestätigen, und auch eine Änderung der E-Mail-Adresse muss bestätigt werden. Das Öffnen eines Links in einer unserer E-Mails verbraucht ihn nicht von selbst, automatische Mail-Scanner können ihn also nicht aufbrauchen: Sie bestätigen mit einer Schaltfläche auf der Seite, und jede E-Mail enthält zusätzlich einen Code.
- Anmeldesitzungen liegen in Cookies, die Skripte auf der Seite nicht lesen können.
- Die öffentlichen Formulare (Käuferanfragen, das Anzeigen der Telefonnummer eines Betriebs, das Widerrufsformular) haben Ratenlimits.
- Die Admin-Konsole des Betreibers verlangt zusätzlich zum Passwort einen Code aus einer Authenticator-App, der alle 12 Stunden erneut abgefragt wird. Codes per SMS werden nicht angeboten.
- Wenn der Betreiber einen Betrieb in der Admin-Konsole öffnet, etwa für eine Supportanfrage, wird dieser Zugriff protokolliert, und das Protokoll wird mindestens 24 Monate aufbewahrt.
- Die Website sendet die üblichen Sicherheits-Header für Browser: Andere Websites können unsere Seiten nicht in einem Rahmen anzeigen (außer dem Website-Widget, das dafür gemacht ist), Browser dürfen Dateitypen nicht erraten, und andere Websites erhalten von uns keine vollständigen Seitenadressen. Eine Content Security Policy für die gesamte Website gibt es derzeit nicht. Das ist eine bewusste Entscheidung: Das Einbetten durch andere Websites, das wichtigste Risiko, das eine solche Richtlinie hier abdecken würde, ist bereits blockiert.
- Fehler werden dem Betreiber automatisch gemeldet, und diese Meldungen enthalten keine Kundendaten.
8. Responsible-Disclosure-Programm
Wenn Sie glauben, eine Sicherheitslücke gefunden zu haben, melden Sie diese bitte, bevor Sie sie öffentlich bekannt machen. Wir verpflichten uns, Ihre Meldung innerhalb von sieben Kalendertagen zu bestätigen und innerhalb von neunzig Kalendertagen eine inhaltliche Antwort (Behebung, Mitigationsplan oder ausführliche Begründung) zu geben. Forscher, die in gutem Glauben handeln (die im Scope bleiben, nicht auf Daten anderer Nutzer zugreifen und den Betrieb nicht beeinträchtigen), werden von uns nicht rechtlich verfolgt; wir werden gemeinsam mit Ihnen an der Behebung arbeiten und Sie auf Wunsch öffentlich nennen.
9. Geltungsbereich
Im Scope:
- alpacakeep.com sowie jede Sprachversion oder jeder Unterpfad, der darüber ausgeliefert wird (z. B. /it/...).
- Öffentliche Seiten und die anonym lesbaren Funktionen dahinter: Verkaufsseiten, die öffentliche Herdenseite, das Website-Widget und die öffentliche, nur lesende API (insbesondere get_public_animal).
- Die Abläufe für Registrierung, Anmeldung, Passwort-Zurücksetzen und Einladungsannahme.
- Kundendatenverarbeitung: RLS, IDOR, Umgehung des finance-access und Ähnliches.
Außerhalb des Scope:
- Infrastruktur der Auftragsverarbeiter (Supabase, Vercel, Cloudflare, Mailbox.org, Resend, Anthropic): bitte direkt beim Anbieter melden.
- Befunde, die physischen Zugang zum Gerät eines Nutzers erfordern.
- Best-Practice-Hinweise ohne klaren Sicherheitseinfluss (z. B. fehlende Security-Header auf einer statischen Seite, theoretisches CSRF bei einem GET ohne Seiteneffekte).
- Denial of Service durch reine Anfragemenge. Bitte unterlassen Sie das.
- Social Engineering von Mitarbeitern, Kunden oder Auftragnehmern.
10. So melden Sie eine Sicherheitslücke
Senden Sie eine E-Mail an security@alpacakeep.com mit:
- Einer klaren Beschreibung der Sicherheitslücke und ihrer Auswirkungen.
- Reproduktionsschritten, idealerweise einem minimalen Proof of Concept.
- Ihrem Namen und einer Möglichkeit, Sie für Rückfragen zu kontaktieren. Anonyme Meldungen werden akzeptiert, lassen sich jedoch langsamer bearbeiten.
Wir bieten derzeit kein monetäres Bug-Bounty-Programm an. Wir nennen Sie auf Wunsch gerne öffentlich in einem Security Advisory oder in den Release Notes.