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
- Datumska ispravnost (član 5(1)(d)): Verzije i konfiguracijske promene su zabeležene
- Integritet podataka (član 32): Audit log je nepromenjiv
- Dostupnost (član 32): Dokumentacija je dostupna inspekcijama
Zaključak
Self-hosted sistemi zahtevaju strogu kontrolu verzija, dokumentaciju i audit logove za GDPR usklađenost.