Обнаружение и классификация PII
Введение
Прежде чем защищать персональные данные, необходимо понять, где они находятся. В организации с десятками баз данных и сотнями таблиц персональные данные могут оказаться в неожиданных местах: в логах, в аналитических витринах, в бэкапах, в Jupyter-ноутбуках исследователей. Обнаружение PII (персонально идентифицирующая информация) — первый практический шаг к compliance.
Типы PII: прямые и косвенные идентификаторы
PII (персонально идентифицирующая информация) — это данные, позволяющие прямо или косвенно идентифицировать физическое лицо. Классификация PII включает три категории:
Прямые идентификаторы (Direct Identifiers)
Данные, однозначно указывающие на конкретного человека:
- ФИО, паспортные данные
- ИНН, СНИЛС
- Email, номер телефона
- Номер банковской карты
- Биометрические данные
Косвенные идентификаторы (Quasi-Identifiers)
Данные, которые сами по себе не идентифицируют человека, но в комбинации позволяют это сделать:
- Дата рождения + пол + почтовый индекс (исследования показывают: 87% населения США можно идентифицировать по этой тройке)
- IP-адрес, геолокация
- Должность + отдел + дата приёма
Чувствительные данные (Sensitive Data)
Данные, требующие особой защиты из-за потенциального вреда при раскрытии:
- Данные о здоровье, диагнозы
- Зарплата, финансовые данные
- Политические взгляды, религиозные убеждения
- Генетические и биометрические данные
Проверка знанийВ базе данных BioGenesis есть столбец research_participant_age с значениями 34, 67, 45. Это PII? Если да, какая категория?
Методы обнаружения PII
Три основных подхода к обнаружению PII в базах данных:
1. Анализ имён столбцов (Column Name Matching)
Самый быстрый, но наименее точный метод. Основан на паттернах именования:
PII_COLUMN_PATTERNS = {
"direct_identifier": [
r"(?i)(first|last|full|sur)?_?name",
r"(?i)email",
r"(?i)phone|mobile|tel",
r"(?i)passport|inn|snils",
r"(?i)ssn|social_security",
],
"quasi_identifier": [
r"(?i)birth_?date|dob|date_of_birth",
r"(?i)zip|postal|zip_code",
r"(?i)gender|sex",
r"(?i)age",
],
"sensitive": [
r"(?i)salary|income|compensation",
r"(?i)diagnosis|medical|health",
r"(?i)religion|political",
],
}
Ограничение: не поймает PII в столбцах с нестандартными именами (например, col_7 или user_attr_3).
2. Анализ значений (Value Pattern Recognition)
Дополняет column-name matching проверкой формата данных:
VALUE_PATTERNS = {
"email": r"^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$",
"phone_ru": r"^\+7\d{10}$",
"inn_10": r"^\d{10}$", # ИНН юрлица
"inn_12": r"^\d{12}$", # ИНН физлица
"snils": r"^\d{3}-\d{3}-\d{3}\s?\d{2}$",
}
3. Named Entity Recognition (NER)
Наиболее точный метод, использующий ML-модели для обнаружения имён, адресов и других PII в неструктурированном тексте. Эффективен для полей типа comments или description.
Сценарий: BioGenesis Lab
Сценарий: BioGenesis Lab (БиоГенезис Лаб)
В BioGenesis 25 исследователей работают в JupyterHub с доступом ко всем датасетам. Аудит показал, что таблица
clinical_observationsсодержит столбцыpatient_name,birth_date,diagnosis_code,attending_physician— все прямые или чувствительные PII. При этом исследователям для анализа нужны толькоage_group,diagnosis_codeиlab_results.Задача: провести автоматизированное PII-сканирование PostgreSQL-базы (200+ таблиц) и определить, какие столбцы требуют маскирования перед передачей в исследовательскую среду.
Реализация PII-сканера для BioGenesis включает три этапа:
- Сканирование метаданных — извлечение имён столбцов из information_schema
- Pattern matching — сопоставление имён столбцов с PII-паттернами
- Валидация значений — проверка формата данных в обнаруженных столбцах
Проверка знанийСтолбец называется 'patient_id' и содержит значения UUID (например, 'a1b2c3d4-...'). Это PII?
Практика: PII Column Classifier
В БиоГенезис необходимо автоматизировать классификацию столбцов в базе данных для определения уровня PII. Напишите функцию, которая анализирует имена столбцов и примеры значений, классифицируя каждый столбец как прямой идентификатор, косвенный идентификатор, чувствительные данные или не-PII.
Итоги
- PII делится на три категории: прямые идентификаторы, косвенные идентификаторы, чувствительные данные
- Три метода обнаружения: column name matching, value pattern recognition, NER
- Автоматизированное PII-сканирование — первый шаг к compliance
- В BioGenesis PII обнаружены в таблицах клинических данных, доступных исследователям без маскирования
- Комбинация методов даёт наилучший результат: имена столбцов + формат значений
В следующем уроке мы рассмотрим Consent Management (управление согласиями) — как отслеживать, хранить и проверять согласия субъектов данных на обработку.
Проверьте понимание
Закончили урок?
Отметьте его как пройденный, чтобы отслеживать свой прогресс
Войдите чтобы оценить урок