Learning Platform
Глоссарий Troubleshooting
Урок 06.02 · 25 мин
Средний
PIIDetectionClassification

Обнаружение и классификация PII

Введение

Прежде чем защищать персональные данные, необходимо понять, где они находятся. В организации с десятками баз данных и сотнями таблиц персональные данные могут оказаться в неожиданных местах: в логах, в аналитических витринах, в бэкапах, в Jupyter-ноутбуках исследователей. Обнаружение PII (персонально идентифицирующая информация) — первый практический шаг к compliance.

Типы PII: прямые и косвенные идентификаторы

PII (персонально идентифицирующая информация) — это данные, позволяющие прямо или косвенно идентифицировать физическое лицо. Классификация PII включает три категории:

Прямые идентификаторы (Direct Identifiers)

Данные, однозначно указывающие на конкретного человека:

  • ФИО, паспортные данные
  • ИНН, СНИЛС
  • Email, номер телефона
  • Номер банковской карты
  • Биометрические данные

Косвенные идентификаторы (Quasi-Identifiers)

Данные, которые сами по себе не идентифицируют человека, но в комбинации позволяют это сделать:

  • Дата рождения + пол + почтовый индекс (исследования показывают: 87% населения США можно идентифицировать по этой тройке)
  • IP-адрес, геолокация
  • Должность + отдел + дата приёма

Чувствительные данные (Sensitive Data)

Данные, требующие особой защиты из-за потенциального вреда при раскрытии:

  • Данные о здоровье, диагнозы
  • Зарплата, финансовые данные
  • Политические взгляды, религиозные убеждения
  • Генетические и биометрические данные
Таксономия PII: BioGenesis Lab
Все данныеRoot
Прямые идентификаторыDirect PII
ФИО пациентаHigh
Email / ТелефонHigh
Номер медкартыHigh
ИНН / СНИЛСHigh
Косвенные идентификаторыQuasi-ID
Дата рожденияMedium
Почтовый индексMedium
Пол / Возрастная группаLow
Чувствительные данныеSensitive
ДиагнозыCritical
Геномные данныеCritical
Результаты анализовHigh
Не-PIINon-PII
ID прибораNone
Дата создания записиNone
Проверка знанийKnowledge check
В базе данных BioGenesis есть столбец research_participant_age с значениями 34, 67, 45. Это PII? Если да, какая категория?
ОтветAnswer
Возраст — это косвенный идентификатор (quasi-identifier). Сам по себе он не идентифицирует человека, но в комбинации с другими данными (пол, диагноз, клиника) может позволить идентификацию. Особенно в малых когортах клинических исследований, где участников может быть всего 20-50 человек.

Методы обнаружения 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 включает три этапа:

  1. Сканирование метаданных — извлечение имён столбцов из information_schema
  2. Pattern matching — сопоставление имён столбцов с PII-паттернами
  3. Валидация значений — проверка формата данных в обнаруженных столбцах
Проверка знанийKnowledge check
Столбец называется 'patient_id' и содержит значения UUID (например, 'a1b2c3d4-...'). Это PII?
ОтветAnswer
Да, это PII типа 'прямой идентификатор'. Хотя UUID сам по себе не раскрывает личность, он является уникальным идентификатором, связывающим запись с конкретным пациентом. Если злоумышленник получит доступ к таблице маппинга patient_id -> patient_name, все связанные данные становятся идентифицированными. Для исследовательских датасетов patient_id заменяется на отдельный research_id без маппинга к оригиналу.

Практика: PII Column Classifier

В БиоГенезис необходимо автоматизировать классификацию столбцов в базе данных для определения уровня PII. Напишите функцию, которая анализирует имена столбцов и примеры значений, классифицируя каждый столбец как прямой идентификатор, косвенный идентификатор, чувствительные данные или не-PII.

Итоги

  • PII делится на три категории: прямые идентификаторы, косвенные идентификаторы, чувствительные данные
  • Три метода обнаружения: column name matching, value pattern recognition, NER
  • Автоматизированное PII-сканирование — первый шаг к compliance
  • В BioGenesis PII обнаружены в таблицах клинических данных, доступных исследователям без маскирования
  • Комбинация методов даёт наилучший результат: имена столбцов + формат значений
Debezium PII masking — SMT для CDC-потоков

В следующем уроке мы рассмотрим Consent Management (управление согласиями) — как отслеживать, хранить и проверять согласия субъектов данных на обработку.

Проверьте понимание

Результат: 0 из 0
Прикладной
Вопрос 1 из 5. В базе данных BioGenesis обнаружен столбец 'participant_age' со значениями 34, 67, 45 в таблице клинического исследования с 30 участниками. Какая категория PII и почему?

Закончили урок?

Отметьте его как пройденный, чтобы отслеживать свой прогресс

Войдите чтобы оценить урок

Прогресс модуля
0 из 6