$ cat gdpr-logging-eu-regions.md

GDPR-friendly logging: κράτα τα δεδομένα σου στην ΕΕ.

· 5 λεπτά · observability

Η εφαρμογή σου τρέχει στο eu-central-1. Το error tracker σου είναι στο Oregon. Η IP που πυροδότησε το error είναι πλέον προσωπικό δεδομένο που κάθεται σε server στο Oregon. Μόλις εισήγαγες ένα sub-processor πρόβλημα που δεν ήξερες ότι είχες.

Το logging κάποτε ήταν θέμα του developer. Πια είναι και νομικό. Τα logs σχεδόν πάντα περιέχουν προσωπικά δεδομένα — IPs, user IDs, μερικές φορές emails ή ολόκληρα request bodies — και υπό GDPR, το πού ζουν αυτά τα δεδομένα μετράει. Για ελληνικές και ευρωπαϊκές ομάδες, ο πήχης είναι απλός: επεξεργάσου και αποθήκευσε προσωπικά δεδομένα στην ΕΕ, εκτός κι αν υπάρχει τεκμηριωμένος λόγος για το αντίθετο.

Η παγίδα: το default region στα περισσότερα δημοφιλή observability εργαλεία είναι ΗΠΑ, και το dropdown για να αλλάξεις είναι θαμμένο.

Το default region κάθε εργαλείου που θα ακουμπήσεις

Εργαλείο              Default region   Διαθέσιμο EU;
─────────────────────────────────────────────────────────────────
Datadog               US               Ναι — datadoghq.eu (Frankfurt)
Sentry                US (SaaS)        Ναι — EU instance του sentry.io
New Relic             US               Ναι — eu.newrelic.com
LogRocket             US               Περιορισμένο — EU σε Enterprise
Grafana Cloud         US               Ναι — πολλά EU stacks
Honeycomb             US               EU λανσαρισμένο το 2023
PostHog Cloud         US               Ναι — eu.posthog.com
AWS CloudWatch        Per-region       Ναι — pin σε eu-* regions
GCP Cloud Logging     Per-region       Ναι — pin σε europe-* regions

Τρία πράγματα που πρέπει να εμπεδώσεις:

  1. Το default δεν είναι η σωστή επιλογή για σένα. Κάθε SaaS της λίστας θα σε γράψει στο US instance εκτός κι αν ψάξεις για το EU.
  2. Συνήθως δεν μπορείς να μεταφερθείς αργότερα. Datadog, Sentry, New Relic — όλα τα έχουν ως ξεχωριστά accounts. Δεν μεταφέρεις historical data, ξεκινάς από την αρχή.
  3. «EU instance» δεν σημαίνει πάντα «μόνο ΕΕ». Διάβασε τη λίστα sub-processors. Κάποια vendors επεξεργάζονται metadata, billing ή support tickets στις ΗΠΑ ακόμη κι όταν το telemetry μένει ΕΕ.

Το ελάχιστο βιώσιμο setup

Για ένα τυπικό ελληνικό SaaS startup, αυτό είναι το setup που δεν ξενερώνει τον DPO σου:

Για το καθένα, καταγράψε ποιοι sub-processors εμπλέκονται και πού βρίσκονται. Αυτό είναι ένα μονοσέλιδο artifact που ο DPO σου θα λατρέψει και οι auditors θα ζητήσουν.

Καθάρισε προσωπικά δεδομένα πριν φύγουν από την εφαρμογή

Ακόμη και με EU storage, δεν θα έπρεπε να ανεβάζεις raw IPs, ολόκληρα request bodies ή emails στο observability stack σου εκτός κι αν τα χρειάζεσαι. Το log enrichment middleware δεν κοστίζει τίποτα και ξεπληρώνει την πρώτη φορά που κάποιος ρωτά τι δεδομένα έχεις για έναν διαγραμμένο user.

// Express παράδειγμα — βγάλε ή κάνε hash sensitive πεδία πριν το logging
const redact = (req) => ({
  method: req.method,
  path: req.path,
  user_id: req.user?.id,
  ip_hash: hash(req.ip + process.env.IP_SALT),  // pseudonymise
  ua: req.get('user-agent'),
  // προσοχή: χωρίς email, χωρίς πλήρη IP, χωρίς body
});

logger.info(redact(req), 'request');

Τα salted hashes σου δίνουν τη δυνατότητα να κάνεις correlation events («πόσα requests από τον ίδιο client;») χωρίς να κρατάς την αρχική IP. Όταν το salt ροτάρει μηνιαία, παίρνεις και αυτόματη λήθη.

Η διατήρηση είναι κομμάτι του compliance, όχι cost optimization

Το GDPR δεν ορίζει συγκεκριμένο όριο διατήρησης, αλλά το Άρθρο 5(1)(ε) απαιτεί τα δεδομένα να κρατιούνται «όχι περισσότερο απ’ όσο είναι απαραίτητο». Για τα περισσότερα application logs, αυτό είναι 30–90 μέρες σε hot storage, 6–12 μήνες σε cold. Ό,τι ξεπερνάει αυτό χρειάζεται τεκμηριωμένο λόγο — security forensics, regulatory audit, fraud investigation.

# CloudWatch log group με λογικό retention
resource "aws_cloudwatch_log_group" "app" {
  name              = "/app/api"
  retention_in_days = 90
  kms_key_id        = aws_kms_key.logs.arn
}

Βάλε το retention στο log group, όχι στο pipeline συλλογής. Αν κάποιος σβήσει αργότερα τη ρύθμιση του pipeline, τα δεδομένα συνεχίζουν να λήγουν.

Το audit trail που θα ευχηθείς να είχες

Αν ποτέ βρεθείς αντιμέτωπος με ερώτημα από την Αρχή Προστασίας Δεδομένων ή με DSAR (data subject access request) από πελάτη, η ερώτηση που θα σου γίνει είναι: πού ακριβώς είναι αποθηκευμένα τα προσωπικά δεδομένα αυτού του ατόμου;

Το «στα logs μας» δεν είναι απάντηση. Το «στο CloudWatch στο eu-central-1, retention 90 μέρες, encrypted με KMS key alias/app-logs, με πρόσβαση οι μηχανικοί στα groups X και Y, χωρίς replication» είναι.

Φτιάξε αυτό το έγγραφο από την πρώτη μέρα. Είναι δύο σελίδες. Είναι η φθηνότερη ασφάλεια που θα αγοράσεις ποτέ.

Ο 30-δευτερόλεπτος έλεγχος. Άνοιξε κάθε observability εργαλείο που χρησιμοποιείς. Βρες τη ρύθμιση region/data-residency. Screenshot. Αν λέει «United States» ή «Global» — αυτή είναι η αυριανή σου δουλειά.

Το ξεμπλέξιμο ενός observability stack για GDPR είναι βαρετή και σημαντική δουλειά. Την κάνουμε για ελληνικές και ευρωπαϊκές ομάδες. Επικοινώνησε.