Datenschutz und Daten
Begrenzter Verlauf, echtes Löschen
Abschnitt betitelt „Begrenzter Verlauf, echtes Löschen“Ein Wert, der zum Zeitpunkt T gelöscht oder überschrieben wird, ist spätestens bei T + Aufbewahrungsdauer aus jeder Kopie verschwunden, die TapeDB führt: dem lokalen Log, den R2-Logsegmenten und älteren Snapshots. Das gilt auch in einem ruhigen Workspace. Du bist Verantwortlicher; TapeDB läuft in deinem eigenen Cloudflare-Account und Cloudflare ist dein Auftragsverarbeiter.
defineTapeDB({ schema, migrations, retention: { days: 30 } }); // standardmäßig 30, mindestens 2Was gespeichert wird
Abschnitt betitelt „Was gespeichert wird“| Wo | Was | Wie lange |
|---|---|---|
| Durable-Object-SQLite, eine pro Workspace | Die Zeilen deiner Modelle | Bis sie gelöscht werden |
| Operationen und Zeitpunkt jedes Writes. Wer den Write ausgeführt hat, wird nicht erfasst | Die halbe Aufbewahrungsdauer (standardmäßig 15 Tage) | |
| Belege für Wiederholungen: zufällige Client-Transaktions-ID, Sequenznummer, Zeitpunkt und vorübergehend ein Hash der Operationen | ID, Sequenznummer und Zeitpunkt, solange der Workspace besteht; Hash nach der halben Aufbewahrungsdauer entfernt. Ersetzte R2-Kopien verschwinden innerhalb der vollen Aufbewahrungsdauer | |
| Der Dateiindex: Pfad, Größe, Content-Type und Uploader | Bis die Datei gelöscht wird | |
R2-Bucket DATA |
Logsegmente, Snapshots, ein Manifest | Ersetzte Kopien verschwinden innerhalb der Aufbewahrungsdauer |
R2-Bucket FILES |
Hochgeladene Bytes | Sofort mit der Datei gelöscht |
| Socket-Zustand | Subject, Rolle, Subscriptions, Presence und Topics eines verbundenen Clients, im Speicher und ab 12 KiB im Durable Object | Solange der Socket offen ist |
| Claim-Limiter | Ein Token-Zähler pro HMAC von IP oder Subject eines Aufrufers, nie die Werte selbst | Bis der Bucket wieder voll ist, standardmäßig eine Minute |
| Broadcast | Nachrichten | Nicht gespeichert |
Belege enthalten weder Zeilenwerte noch die Identität des Schreibenden. Pro Transaktion mit Client-ID kommt ein kleiner Beleg hinzu. Verwende zufällige Transaktions-IDs statt Benutzer-IDs. Beim Löschen eines Workspaces werden auch seine Belege entfernt.
Claim-Tokens stehen nie in einer URL: HTTP-Requests tragen sie in Authorization, WebSocket-Upgrades in Sec-WebSocket-Protocol. Wenn du Request-Header in Cloudflare protokollierst, nimm diese beiden aus. Verwende eine undurchsichtige User-ID als sub des Claims, keine E-Mail-Adresse.
Außerhalb der Kontrolle von TapeDB
Abschnitt betitelt „Außerhalb der Kontrolle von TapeDB“- Point-in-Time-Recovery von Durable Objects. Cloudflare hält für jedes SQLite-Durable-Object 30 Tage wiederherstellbaren Verlauf vor. TapeDB stellt daraus nie wieder her, aber die tatsächliche Grenze ist der größere Wert aus Aufbewahrungsdauer und 30 Tagen. Deshalb beträgt die Standard-Aufbewahrungsdauer 30 Tage.
- R2-Bucket-Locks. Eine Lock-Regel auf dem Bucket
DATAoderFILEShindert TapeDB daran, zu löschen, was sie abdeckt. Setze keine auf die Buckets von TapeDB.
Anfragen beantworten
Abschnitt betitelt „Anfragen beantworten“| Anfrage | Wie |
|---|---|
| Auskunft und Übertragbarkeit | db.$export() oder tapedb export --workspace <id> streamt jede Zeile und jede Datei, die der Claim lesen darf, durch die Leseregeln. Siehe Export. |
| Berichtigung | Aktualisiere die Zeilen. Alte Werte verschwinden innerhalb der Aufbewahrungsdauer aus dem Verlauf. |
| Löschen einer Person | Lösche oder überschreibe ihre Zeilen und lösche ihre Dateien mit db.$files.delete(path), das die Bytes sofort entfernt. Alte Werte verschwinden innerhalb der Aufbewahrungsdauer aus dem Verlauf und innerhalb von 30 Tagen aus der Wiederherstellung von Cloudflare. |
| Löschen eines Workspace | tapedb erase --workspace <id> --confirm <id> oder DELETE /engine/workspaces/:id mit einem Owner-Claim löscht den R2-Verlauf, die Dateien und den Speicher des Durable Object. Danach antwortet der Workspace mit 410. |
Wo die Daten liegen
Abschnitt betitelt „Wo die Daten liegen“Standardmäßig platziert Cloudflare das Durable Object eines Workspace in der Nähe seines ersten Requests und R2-Buckets dort, wo sie angelegt wurden. tapedb init --jurisdiction eu hält die Durable Objects und beide Buckets in der EU-Jurisdiktion von Cloudflare, und tapedb deploy lehnt eine Konfiguration ab, in der beide nicht übereinstimmen. Lege das vor dem ersten Deploy fest: eine spätere Änderung adressiert neue, leere Workspaces. Cloudflare bleibt Auftragsverarbeiter, daher gelten deine Transferbewertung und der Auftragsverarbeitungsvertrag von Cloudflare weiterhin.