feat: add governed Files DSAR coverage

This commit is contained in:
2026-08-20 22:40:33 +02:00
parent 6c3cf1c55e
commit ce4eaefbfd
6 changed files with 1481 additions and 1 deletions
+38 -1
View File
@@ -208,6 +208,39 @@ Hard purge is deliberately separate from ordinary delete:
Automatic time-based purge scheduling is not implemented. Operators initiate
preview, execute, and garbage collection under their local retention process.
### Data-subject request coverage
Files registers `privacy.dsar.files` when the module is active. The provider
requires a corroborated tenant membership identifier (or a namespaced Files
user reference), searches only that tenant, and fails explicitly if its bounded
result limit would be exceeded. It reports managed assets, exact versions,
folders, user-targeted shares, Form and Campaign evidence, connector
configuration actor references, and integrity-operation evidence.
The export includes only governed metadata. It never embeds file bytes, blob
storage keys, passwords, tokens, environment-variable names, secret-provider
references, or encrypted connector values. A reviewer follows the authorized
version download route when the file itself must be inspected.
The erasure plan deliberately separates four outcomes:
- an active share aimed at the subject can be revoked idempotently;
- mutable creator/updater references can be detached after tenant, subject, and
current-value revalidation;
- legal hold, active retention, submitted Form evidence, Campaign delivery
evidence, connector configuration history, and integrity evidence are
retained with a reason; and
- unstructured file content, ownership, filenames, and paths require manual
review.
DSAR execution never invokes physical byte deletion. If the privacy decision
authorizes erasure, the operator must use the separate Files soft-delete, purge
preview, approval, execution, and blob-GC sequence. This preserves its distinct
authority, evidence blockers, audit trail, distributed fencing, and recovery
ledger semantics. Email, account, or identity selectors alone are insufficient
because Files does not import the Access directory; the Access search supplies
the corroborated membership reference for Files coverage.
### Find and download files
Files can list by owner and path, use cursor pagination, and consume incremental
@@ -1018,6 +1051,7 @@ returning different content or credentials.
| Organization | Folders, bulk rename preview/apply, move/copy, drag-and-drop, ZIP download, pattern resolution, and API restoration preserving versions/provenance | General file-history UI and user-driven append-version UI |
| Sharing | User/group/tenant/campaign grants, expiry, idempotent revocation, searchable share-management UI, and campaign linkage display | Richer policy-driven share lifecycles |
| Deletion/retention | Soft-delete and restore assets/folders/spaces; optimistic retention and legal-hold controls; preview-bound, approval-referenced hard purge; reference-checked blob GC; immediate audited connector-secret scrubbing | Automatic time-based purge scheduling and richer lifecycle administration UI |
| Privacy requests | Tenant-scoped bounded DSAR metadata search; retained/manual/revoke/detach planning; idempotent share revocation and mutable actor-reference detachment; explicit separation from byte purge | Content-specific automated redaction and policy-specific approval remain manual or belong to the owning process |
| Connector governance | Scoped profiles/credentials/policies, effective source explanation, separate credentials, linked user/group spaces | Provider-owned external secret lifecycle; API `secret_ref` remains rejected |
| HTTP connectors | Pinned, bounded, no-redirect Seafile and WebDAV/Nextcloud browse/import/manual sync | Background/folder sync, remote mutation, long-running transfer workers |
| SMB and S3 connectors | Provider descriptors, browse/import/manual sync, pinned SDK transports, redirect/retry/referral transport-contract tests, and explicit conditional S3 write-back with Core-ledger recovery | Live topology smoke evidence, provider-specific OAuth, additional provider writes, and background indexing remain separate deployment or connector-module concerns |
@@ -1053,7 +1087,10 @@ Before releasing Files:
and applied orphan cleanup; inspect their `files` operations in Ops.
11. Exercise a Form evidence grant, token replay, wrong-submission reference,
expired token, unsupported media type, and quarantined-file rejection.
12. Update the implemented/planned table whenever a boundary changes.
12. Exercise a Files DSAR search/plan, repeat an approved reversible action, and
confirm retained file content can only be erased through the separate purge
authority and recovery path.
13. Update the implemented/planned table whenever a boundary changes.
## Related documents