anonym.legal
Povratak na blogGDPR i usklađenost

Self-Hosted PII: Usklađenost Revizije i Konzistentnost Okruženja

Self-hosted PII sistemi moraju održavati konzistentnost između okruženja za auditorsku reviziju i GDPR usklađenost.

April 21, 20266 min čitanja
compliance auditenvironment consistencyspaCy versionsself-hosted PIIreproducible anonymization

Self-Hosted PII: Usklađenost Revizije i Konzistentnost Okruženja

Problem Konzistentnosti

Self-hosted Presidio obično ima 3 okruženja:

Development (localhost) → Production (178.63.147.186) → Backup (91.99.201.241)

Rizik: Različite verzije Presidio, različiti presetovi, različiti rezultati.

Arhitektura Usklađenosti

Source Control (Git)
├── docker/dockerfile.presidio (v1.0.0)
├── config/presets.json (v2.5)
├── config/recognizers.yaml (custom)
└── scripts/deploy.sh
      ↓
   Docker Build
      ↓
   Dev Server (79.201.241) → Test
      ↓
   Prod Server (178.63.147.186) → Verify

Dockerfile za Usklađenost

FROM python:3.10-slim

# Determinatske verzije
RUN pip install presidio-analyzer==2.2.35 \
                presidio-anonymizer==2.2.35

COPY config/presets.json /app/config/
COPY config/recognizers.yaml /app/config/

# Verzija tag
RUN echo "PRESIDIO_VERSION=2.2.35" > /app/VERSION
RUN echo "CONFIG_VERSION=2.5" >> /app/VERSION

CMD ["uvicorn", "app:app", "--port", "8011"]

Provera Konzistentnosti

def verify_environment_consistency():
    """
    Provera da li Dev i Prod imaju istu verziju i konfiguraciju
    """
    dev_version = get_remote_version("91.99.201.241")
    prod_version = get_remote_version("178.63.147.186")
    
    dev_config = get_remote_config("91.99.201.241")
    prod_config = get_remote_config("178.63.147.186")
    
    assert dev_version == prod_version, \
        f"Verzija neslaganja: Dev {dev_version} vs Prod {prod_version}"
    
    assert dev_config == prod_config, \
        f"Konfiguracija neslaganja: Dev {dev_config} vs Prod {prod_config}"
    
    return True

Audit Log

import json
from datetime import datetime

def log_deployment(environment, version, config_hash):
    audit_entry = {
        "timestamp": datetime.now().isoformat(),
        "environment": environment,
        "presidio_version": version,
        "config_sha256": config_hash,
        "deployed_by": get_user(),
        "git_commit": get_git_commit()
    }
    
    with open("/var/log/presidio-audit.json", "a") as f:
        f.write(json.dumps(audit_entry) + "\n")

Dokumentacija Okruženja

# Production Okruženje

## Verzije
- Presidio: 2.2.35
- Python: 3.10
- Docker: 24.0.2

## Presetovi
- Entity coverage: [PERSON, EMAIL_ADDRESS, PHONE_NUMBER, MEDICAL_RECORD_NUMBER]
- Confidence threshold: 0.85
- Language: Serbian (sr)

## Deployment
- Datum: 2025-03-15
- Commit: a1b2c3d
- Verifikovan: ✅

## Revizija
- Poslednja GDPR kontrola: 2025-03-10
- Status: Usklađeno

GDPR Zahtevi

  1. Datumska ispravnost (član 5(1)(d)): Verzije i konfiguracijske promene su zabeležene
  2. Integritet podataka (član 32): Audit log je nepromenjiv
  3. Dostupnost (član 32): Dokumentacija je dostupna inspekcijama

Zaključak

Self-hosted sistemi zahtevaju strogu kontrolu verzija, dokumentaciju i audit logove za GDPR usklađenost.

Spremni da zaštitite svoje podatke?

Počnite sa anonimizacijom PII sa 285+ tipova entiteta na 48 jezika.