Evidence: https://saferpage.de/nachweise/roan.ch/export
Hash: 9d03700e84dc9ab7539aa21c · Previous: c65591085d45b7f58a50b890Consent Database / Ledger
roan.ch: Einwilligungen nachweisbar speichern
roan.ch: Consent-Ledger-Blueprint mit 14 Datenfeldern, 7 Ereignissen, 7 Log-Zeilen und 6 Kategorien für auditierbare Einwilligungsnachweise.
Der Ledger-Blueprint ist eine technische Betreiber-Vorlage. Rechtsgrundlage, Speicherfrist, Zugriffsschutz und Integration in CMP/Backend müssen fachlich freigegeben werden.
Consent Log
Downloadbare Transaktionszeilen mit Hashkette
Evidence: https://saferpage.de/nachweise/roan.ch/export
Hash: 2380c38c624f4d3cbea19047 · Previous: 9d03700e84dc9ab7539aa21cEvidence: https://saferpage.de/nachweise/roan.ch/export
Hash: 8fe6f8c1e0d8d27a0f5d4b06 · Previous: 2380c38c624f4d3cbea19047Evidence: https://saferpage.de/nachweise/roan.ch/export
Hash: fb2aafb5c039f7934553e87c · Previous: 8fe6f8c1e0d8d27a0f5d4b06Evidence: https://saferpage.de/nachweise/roan.ch/export
Hash: 01fb89e90ecb34376b271a81 · Previous: fb2aafb5c039f7934553e87cEvidence: https://saferpage.de/nachweise/roan.ch/export
Hash: e39d97370bd22babfb2b4357 · Previous: 01fb89e90ecb34376b271a81Evidence: https://saferpage.de/nachweise/roan.ch/export
Hash: 90fde9707f30fda7daba6c55 · Previous: e39d97370bd22babfb2b4357Export immer nach Domain, Zeitraum und Rechtsraum filtern; keine domainübergreifenden Rohlogs ohne Zweckfreigabe.
Subject-, IP- und User-Agent-Bezug nur gehasht und mit Zugriffsschutz exportieren.
Jede Zeile enthält previous_hash und row_hash, damit nachträgliche Änderungen auffallen.
DSAR-Export trennt Nachweiszweck, technische Logs und Lösch-/Sperrentscheidungen.
Nachweisfrist und Löschfristen je Zweck dokumentieren; abgelaufene Rohdaten aggregieren oder löschen.
Ereignisse
Welche Consent-Aktionen protokolliert werden
Belegt, welche Version Nutzer gesehen haben.
Felder: domain, banner_version, policy_version, region, created_atZentrale Nachweiszeile für aktive Einwilligung.
Felder: consent_id, categories, services, action, created_atAblehnen muss genauso auditierbar sein wie Akzeptieren.
Felder: consent_id, categories, action, created_atWiderruf überschreibt Downstream-Zustände und muss nachvollziehbar bleiben.
Felder: previous_consent_id, withdrawn_at, categories, source2 Datenschutz-Domain(s) im GPC-Kontext.
Felder: gpc_signal, region, action, created_at5 datenschutzrelevante Browserkontakt(e) aus dem Scan.
Felder: destination, categories, sync_status, created_atVerbindet Betreiberentscheidung mit technischer Scan-Evidenz.
Felder: scan_id, checked_at, result_url, evidence_hashDatenmodell
Minimale Felder für auditierbare Nachweise
Eindeutiger Nachweisdatensatz
Nicht als Klartext-Personenkennung verwenden.Wiedererkennung ohne Klartext-ID
Salt/Rotation und Zugriffsschutz dokumentieren.Betroffene Website
Mandanten-/Domain-Trennung erzwingen.DE/EU/CH/AT oder CMP-Region
Regelbasiertes Verhalten nachvollziehbar machen.Version der Consent-Oberfläche
Bei Text-/Layoutänderung erhöhen.Datenschutz-/Cookie-Hinweis-Version
Mit veröffentlichtem Hinweis und Datum verbinden.Status je Kategorie
Nur notwendige Kategorien speichern.Optionaler Status je Dienst
Dienste aus Anbieterregister synchronisieren.accept, reject, save, withdraw, gpc
Ablehnung und Widerruf gleichwertig protokollieren.Missbrauchs-/Nachweisbezug
Klartext-IP vermeiden; Speicherfrist begrenzen.Technischer Kontext
Nicht für Tracking oder Profiling verwenden.Verweis auf Scan, Screenshot oder Export
Keine sensiblen Rohdaten in öffentliche Exporte schreiben.Zeitpunkt der Entscheidung
Zeitzone und Serverzeit stabil halten.Review-/Ablauffrist
Regelmäßige Erneuerung und Löschung planen.Speicherung
Kontrollen für Datenschutz und Betrieb
Klartext-IP, User-Agent und Personenkennung vermeiden; Hash/Salt und kurze Fristen verwenden.
Banner-, Policy-, Kategorie- und Anbieterregister-Version bei jeder Entscheidung speichern.
Widerruf an Tag Manager, CMP, Analytics, Ads und CRM weitergeben und Synchronisierung protokollieren.
Nachweisfrist, Zweckende, erneute Einwilligung und DSAR-Löschung als Löschtrigger definieren.
Ledger nur für Datenschutz/Compliance/IT freigeben; Exportzugriffe protokollieren.
Snippets
Backend und Banner verbinden
CREATE TABLE consent_ledger_roan_ch (
consent_id text PRIMARY KEY,
subject_key_hash text NOT NULL,
domain text NOT NULL,
region text NOT NULL,
banner_version text NOT NULL,
policy_version text NOT NULL,
action text NOT NULL CHECK (action IN ('accept','reject','save','withdraw','gpc')),
categories_json jsonb NOT NULL,
services_json jsonb NOT NULL DEFAULT '{}'::jsonb,
gpc_signal boolean NOT NULL DEFAULT false,
ip_hash text,
user_agent_hash text,
evidence_ref text,
created_at timestamptz NOT NULL DEFAULT now(),
expires_at timestamptz
);
CREATE INDEX consent_ledger_roan_ch_subject_idx ON consent_ledger_roan_ch (subject_key_hash, created_at DESC);
window.addEventListener('saferpage-consent-update', function (event) {
fetch('/privacy/consent-ledger', {
method: 'POST',
headers: {'Content-Type': 'application/json'},
credentials: 'same-origin',
body: JSON.stringify({
domain: 'roan.ch',
banner_version: 'v1',
policy_version: 'privacy-notice-current',
action: 'save',
categories: event.detail,
evidence_ref: window.location.href
})
});
});