M24: implement privacy governance

This commit is contained in:
NuklearRabbit
2026-08-10 15:56:03 +02:00
parent f0f1be83ae
commit 0935901f11
29 changed files with 920 additions and 11 deletions
+50
View File
@@ -0,0 +1,50 @@
# Privacy and data governance
## Scope and ownership
MobilityOps stores operational users, customers, bookings, vehicle inspections,
maintenance, data-quality issues, workflow state and audit events. The deployed demo
contains synthetic data only. Before introducing real data, the deploying organisation
must document its controller/processor roles, lawful bases, contact point and approved
retention values. Operations Managers are the only role permitted to export or anonymise.
## Retention policy
- Customer PII may be anonymised only when no reserved or active booking exists and the
newest booking is older than `PRIVACY_MINIMUM_BOOKING_RETENTION_DAYS` (default 30).
- Audit events are configured for 2,555 days by default. They are immutable operational
evidence; changing this period requires legal approval and a separate, audited purge
implementation. MobilityOps reports the policy but never silently deletes audit data.
- Database backups default to 30 days with at least seven newest recovery points. A
configured secondary mount must follow the same policy.
- Logs are bounded by Docker rotation. They must not contain request bodies, passwords,
OIDC tokens or customer fields.
## Data-subject request procedure
1. Verify the requester's identity outside MobilityOps and record the case reference.
2. In **Privacy management**, download the customer JSON. The export action is audited.
3. Review active/recent booking blockers and applicable legal retention obligations.
4. Enter a reason and the exact customer reference to anonymise. The operation is
irreversible and row-locked. It clears name, email, phone, address and birth date but
preserves the stable reference and operational bookings so financial/operational
evidence is not corrupted.
5. Verify the resulting audit event. Its before/after payload records only anonymisation
state; erased PII is deliberately not copied into the audit log.
6. Handle verified backups according to their bounded retention; never mutate individual
dump files.
## Audit export and access review
Audit CSV exports are manager-only, limited to a maximum 90-day range and a configurable
row cap. Every export is itself audited. Review manager accounts, external OIDC bindings,
failed sign-ins, privacy exports and anonymisations periodically. Deactivate access at the
canonical MobilityOps user record; this invalidates subsequent operational requests.
## Incident handling
Preserve relevant JSON logs, correlation IDs and audit exports; do not overwrite the
database or backups. Rotate affected secrets, disable OIDC or external integrations when
needed, assess notification obligations and restore only through the guarded runbook.
Record all incident decisions outside the application in the organisation's incident
system.