Το 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
Τρία πράγματα που πρέπει να εμπεδώσεις:
- Το default δεν είναι η σωστή επιλογή για σένα. Κάθε SaaS της λίστας θα σε γράψει στο US instance εκτός κι αν ψάξεις για το EU.
- Συνήθως δεν μπορείς να μεταφερθείς αργότερα. Datadog, Sentry, New Relic — όλα τα έχουν ως ξεχωριστά accounts. Δεν μεταφέρεις historical data, ξεκινάς από την αρχή.
- «EU instance» δεν σημαίνει πάντα «μόνο ΕΕ». Διάβασε τη λίστα sub-processors. Κάποια vendors επεξεργάζονται metadata, billing ή support tickets στις ΗΠΑ ακόμη κι όταν το telemetry μένει ΕΕ.
Το ελάχιστο βιώσιμο setup
Για ένα τυπικό ελληνικό SaaS startup, αυτό είναι το setup που δεν ξενερώνει τον DPO σου:
- Application + database: ένα single EU region (eu-central-1, eu-south-2, eu-west-1, europe-west8 — διάλεξε ένα).
- Logs: CloudWatch / Cloud Logging / Azure Monitor στο ίδιο region. Όχι cross-region replication.
- Metrics + traces: Datadog EU, Grafana Cloud EU, ή self-hosted Prometheus + Grafana στο ίδιο region.
- Error tracking: Sentry EU instance, ή self-hosted GlitchTip.
- Product analytics: PostHog EU, ή self-hosted PostHog.
Για το καθένα, καταγράψε ποιοι 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» είναι.
Φτιάξε αυτό το έγγραφο από την πρώτη μέρα. Είναι δύο σελίδες. Είναι η φθηνότερη ασφάλεια που θα αγοράσεις ποτέ.
Το ξεμπλέξιμο ενός observability stack για GDPR είναι βαρετή και σημαντική δουλειά. Την κάνουμε για ελληνικές και ευρωπαϊκές ομάδες. Επικοινώνησε.