Οι εσωτερικοί κωδικοί υπαλλήλων — αριθμοί όπως EMP-0012345 ή HR-2024-1001 — αποτελούν προσωπικά δεδομένα κατά το GDPR, ακόμη κι αν δεν είναι "αριθμοί εθνικού αναγνωριστικού".
Γιατί Εσωτερικοί Κωδικοί Είναι PII
Άρθρο 4(1) GDPR:
"Προσωπικά δεδομένα" σημαίνει κάθε πληροφορία που σχετίζεται με ένα αναγνωρισμένο ή αναγνωρίσιμο φυσικό πρόσωπο.
Εάν μια εσωτερική ID εμφανίζεται ανά:
- Αρχείων μισθοδοσίας
- Δεδομένα πρόσβασης με λογαριασμό
- Τακτικά ημερολόγιων
Τότε δεν αναγνωρίσιμη επομένως PII.
Παράδειγμα: Εάν δείτε "EMP-0054321" σε ένα αρχείο και πρόσβαση λογαριασμό χρήστη (π.χ., "emp54321@company.com"), ο κωδικός είναι αναγνωρίσιμος → PII.
Το Πρόβλημα: Τα Προεπιλεγμένα Εργαλεία Δεν Ανιχνεύουν Εσωτερικές ID
Generic PII ανίχνευσης εργαλεία (Presidio, NER, RE2) δεν αναγνωρίζουν ιδιοκτησιακούς κωδικούς επειδή:
- Κάθε εταιρεία έχει διαφορετικό σχήμα (EMP-XXXX vs HR_XXXX vs EmpID-XXXX)
- Δεν υπάρχει διεθνές πρότυπο όπως SSN ή IBAN
- Ο αρχείο δεν μπορεί να μαντέψει εάν "EMP-1234" είναι εσωτερικό ID ή τυχαίος αριθμός
Συμπέρασμα: Εάν χρησιμοποιείτε Presidio χωρίς προσαρμογή, τα εσωτερικά IDs δεν θα ανιχνευθούν και θα διαρρεύσουν.
Λύση: Δημιουργήστε Πρόσαρμοση Κατηγοριών Τύπων
Αντί να στοιχειοθετήσετε όλα τα εσωτερική IDs (δύσκολο να συντηρηθεί), δημιουργήστε μια προσαρμοσμένη κατηγορία:
Βήμα 1: Ορίστε το Σχήμα κωδικού
Προσδιορίστε τα σχήματα που χρησιμοποιεί η εταιρεία σας:
{
"employee_id_patterns": [
"EMP-\\d{5,7}",
"HR_\\d{4,6}",
"EmpID-\\d{3,5}",
"STF[A-Z]{2}\\d{5}"
]
}
Βήμα 2: Δημιουργήστε Πρόσαρμοση Recognizer
Δημιουργήστε νέο Recognizer που εξαιρεί αυτά τα σχήματα:
from presidio_analyzer import Pattern, PatternRecognizer
employee_id_recognizer = PatternRecognizer(
supported_entity="EMPLOYEE_ID",
patterns=[
Pattern(
name="employee_id_pattern",
regex="EMP-\\d{5,7}",
score=0.85
),
Pattern(
name="hr_id_pattern",
regex="HR_\\d{4,6}",
score=0.85
)
]
)
analyzer.add_recognizer(employee_id_recognizer)
Βήμα 3: Ενέργεια χτίζαται στο Anonymizer
Εάν ανιχνευθεί EMPLOYEE_ID:
from presidio_anonymizer import AnonymizingEngine
anonymizer = AnonymizingEngine()
anonymized_text = anonymizer.anonymize(
text=text,
analyzer_results=results,
operators={
"EMPLOYEE_ID": {"type": "replace", "new_value": "[EMPLOYEE_ID]"}
}
)
Εναλλακτική: Πρόβλημα-Ειδικό Φίλτρο
Εάν δεν θέλετε να προσθέσετε προσαρμοσμένες κατηγορίες, χρησιμοποιήστε μια λίστα αποκλεισμού:
EMPLOYEE_ID_PATTERNS = [
r'EMP-\d{5,7}',
r'HR_\d{4,6}',
]
def mask_employee_ids(text):
for pattern in EMPLOYEE_ID_PATTERNS:
text = re.sub(pattern, '[EMPLOYEE_ID]', text)
return text
Ζητήματα Συνεχούς Σάρωσης
Εάν η εταιρεία σας ανακαλύψει ότι εσωτερικές ID διέρρευσαν:
- Σάρωση αρχείων στη συντήρηση: Jira, Confluence, email αρχεία για εσωτερικές ID
- Διαγραφή ή Masking: Αντικατάσταση αναγνωρίσιμων IDs με placeholders
- Τεκμηρίωση: Κρατήστε αρχείο τι σχήματα ανιχνευθήκαν και πόσες εγγραφές διαγράφηκαν
Πηγές: