STRAN.SI

GDPR retention politika za obrazce

Za vedno, X dni, anonimizacija ali takojšen izbris – kateri model za kateri primer. PHP implementacija + audit log.

← Vsi članki
GDPR 9 min branja

Za vedno, X dni, anonimizacija ali takojšen izbris – kateri model za kateri primer.

Problem: "shranjujemo za vedno" ni GDPR-skladno

GDPR (Splošna uredba o varstvu podatkov) zahteva, da osebne podatke obdelujemo le toliko časa, kolikor je potrebno za namen, za katerega so bili zbrani. "Shranjujemo za vedno" je v večini primerov kršitev. Po koncu obdobja moramo podatke izbrisati ali anonimizirati.

Štirje retention modeli

Model 1: Za vedno

Edino legitimno za zakonsko obvezne hrambe: računi (10 let), pogodbe (5–10 let), HR podatki zaposlenih (5 let po prekinitvi). Pri kontaktnih obrazcih in povpraševanjih NI primeren.

Model 2: X dni / mesecev

Najpogostejši za poslovne obrazce:

  • Kontaktni obrazec: 6–12 mesecev (toliko, kot traja sales cycle)
  • Newsletter signup: dokler ni unsubscribe
  • Ankete: 24 mesecev (analiza trendov)
  • Intake (zdravstvo, svetovanje): po pravu (običajno 10 let za zdravstvo)

Po preteku obdobja avtomatski izbris (cron job).

Model 3: Anonimizacija

Imena, e-mail, telefon zbrišemo. Ohranimo strukturne podatke (kategorija povpraševanja, datum, regija). Tako lahko delamo statistiko brez identifikacije posameznika.

Model 4: Takojšen izbris

Za zelo občutljive obrazce (whistleblower, anonimna pritožba): po obdelavi (npr. 30 dni) takojšen izbris. Brez backup-ov, brez anonimizacije.

Implementacija v PHP

Tabela `submissions`

CREATE TABLE submissions (
    id INT AUTO_INCREMENT PRIMARY KEY,
    form_id INT,
    data JSON,
    name VARCHAR(255),
    email VARCHAR(255),
    phone VARCHAR(50),
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    retention_until DATE NULL,
    is_anonymized TINYINT DEFAULT 0
);

Cron za retention

// Vsak dan ob 03:00
$pdo->query("
    UPDATE submissions
    SET name = 'anonimizirano',
        email = NULL,
        phone = NULL,
        data = JSON_REMOVE(data, '$.contact_info'),
        is_anonymized = 1
    WHERE retention_until < CURDATE()
      AND is_anonymized = 0
");

Audit log

Vsako dejanje (pregled podatka, urejanje, izbris) je zapisano:

CREATE TABLE audit_log (
    id INT AUTO_INCREMENT PRIMARY KEY,
    user_id INT,
    action ENUM('view', 'edit', 'delete', 'export'),
    submission_id INT,
    ip VARCHAR(45),
    user_agent VARCHAR(500),
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

Audit log je obvezen pri občutljivih podatkih. Pri rednem kontaktnem obrazcu ni nujen, je pa best practice.

Politika privolitve (consent)

Vsaka oddaja obrazca z osebnimi podatki mora imeti eksplicitno privolitev:

  • Ločen checkbox (ne pre-marked)
  • Jasna razlaga, za kaj se uporablja
  • Povezava na politiko zasebnosti
  • Zapis časa privolitve (timestamp)
  • Zapis verzije politike, ki je veljala v času privolitve

Pravica posameznika

Vsak uporabnik ima pravico do:

  • Dostopa – kateri podatki o njem obstajajo
  • Popravka – sprememba napačnih podatkov
  • Izbrisa ("pravica do pozabe")
  • Omejitve obdelave – pauziranje obdelave
  • Prenosljivosti – izvoz lastnih podatkov v strojno berljivi obliki (JSON, CSV)
  • Ugovora – proti določeni obdelavi

V admin-u za to potrebujemo gumbe: "Izvozi vse podatke o tej osebi", "Izbriši vse podatke o tej osebi". Pri Izpolni.si smo to implementirali kot "GDPR Tools".

Praktični nasveti

  • Ne shranjujte več, kot rabite. Ne sprašujte za rojstni datum, če ga ne uporabljate.
  • IP naslov je osebni podatek (po GDPR). Zapis IP-ja v `povpraševanja.jsonl` je legitimen le za varnost obrazca, ne za marketing.
  • Backup-e tudi po GDPR-ju. Če podatek izbrišemo iz live baze, ga moramo izbrisati tudi iz backup-ov v razumnem roku (običajno 30–90 dni).
  • Privolitev preverjajte, ko podatek prvič uporabite. Če uporabnik privoli leta 2024, ima pravico privolitev preklicati v 2026 – takrat ne smete več obdelovati.

Imate vprašanje glede članka ali konkretnega primera?

Pošljite kratek opis svojega primera. Odgovorimo z realno usmeritvijo – tudi če ne potrebujete naših storitev.

Pokliči Povpraševanje