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

Маскирование и обезличивание данных

Введение

Данные нужны не только в production. Тестирование, разработка, аналитика, обучение ML-моделей — всё это требует доступа к реалистичным данным. Но предоставить разработчику полный доступ к production-базе с ФИО и паспортными данными клиентов — нарушение и регуляторных требований, и здравого смысла. Маскирование данных (Data Masking) решает эту задачу: заменяет конфиденциальные значения реалистичными, но фиктивными данными.

Маскирование, анонимизация и псевдонимизация

Три термина, которые часто путают. Различие принципиально:

Маскирование данных (Data Masking)

Маскирование данных (Data Masking) — замена конфиденциальных значений реалистичными, но фиктивными данными. Оригинальные данные сохраняются в production, маскированная копия используется для непроизводственных целей.

Примеры:

  • [email protected] -> i***@mail.ru
  • +79001234567 -> ***4567
  • Иванов Иван Иванович -> И*******

Обезличивание (Data Anonymization)

Обезличивание данных (Data Anonymization) — необратимое удаление связи между данными и субъектом. Восстановить оригинальные данные невозможно. GDPR не распространяется на полностью обезличенные данные.

Псевдонимизация (Pseudonymization)

Псевдонимизация — замена идентификаторов на псевдонимы с сохранением маппинга. Обратимый процесс: при наличии ключа маппинга можно восстановить связь с субъектом. GDPR считает псевдонимизированные данные по-прежнему персональными.

ТехникаОбратимостьGDPR-статусПрименение
МаскированиеЗависит от методаПерсональные данныеDev/test среды, аналитика
ОбезличиваниеНеобратимоНе персональные данныеПубликация, открытые датасеты
ПсевдонимизацияОбратимо (с ключом)Персональные данныеИсследования, ML-обучение
Проверка знанийKnowledge check
BioGenesis заменяет patient_id на research_id в исследовательских датасетах, сохраняя маппинг в защищённой таблице. Это маскирование, обезличивание или псевдонимизация?
ОтветAnswer
Это псевдонимизация. Маппинг patient_id -> research_id сохраняется, значит, связь обратима. По GDPR псевдонимизированные данные остаются персональными и требуют защиты. Для полного обезличивания маппинг должен быть уничтожен, но тогда BioGenesis не сможет связать результаты исследования обратно с пациентом.

Техники маскирования

Основные методы маскирования данных:

1. Подстановка (Substitution)

Замена реальных значений на значения из справочника:

# Маскирование имён из справочника
fake_names = ["Александр Иванов", "Мария Петрова", "Дмитрий Козлов"]
masked_name = random.choice(fake_names)

2. Частичное скрытие (Partial Masking)

Сохранение части данных для идентификации формата:

def mask_email(email):
    """i***@mail.ru — первый символ + домен"""
    local, domain = email.split("@")
    return f"{local[0]}***@{domain}"

def mask_phone(phone):
    """***4567 — последние 4 цифры"""
    return f"***{phone[-4:]}"

def mask_inn(inn):
    """77****93 — первые 2 + последние 2"""
    return f"{inn[:2]}{'*' * (len(inn) - 4)}{inn[-2:]}"

3. Перемешивание (Shuffling)

Перемешивание значений между записями. Каждое значение реально, но принадлежит другой записи:

# Зарплаты перемешиваются между сотрудниками
salaries = [record["salary"] for record in dataset]
random.shuffle(salaries)
for i, record in enumerate(dataset):
    record["salary"] = salaries[i]

4. Шифрование с сохранением формата (FPE)

Format-Preserving Encryption сохраняет формат данных (длину, тип символов), но значение зашифровано:

7707083893 -> 4521937861  # ИНН -> ИНН (10 цифр)

Статическое vs динамическое маскирование

Статическое маскирование (Static Data Masking)

Создаётся маскированная копия базы данных. Используется для dev/test сред:

Production DB  -->  [Маскирование]  -->  Dev/Test DB
(реальные данные)                       (маскированные)

Преимущества: полная изоляция, нет риска утечки. Недостатки: задержка обновления, хранение копии.

Динамическое маскирование (Dynamic Data Masking)

Маскирование применяется на лету при запросе, в зависимости от роли пользователя:

-- DBA видит: [email protected]
-- Аналитик видит: i***@mail.ru
-- Тот же запрос, разные результаты
SELECT email FROM customers;

Преимущества: всегда актуальные данные, нет копий. Недостатки: сложность реализации, нагрузка на производительность.

Маскирование по ролям

Уровни маскирования по ролям: BioGenesis
ФИО пациентаДиагнозГеномные данныеДата рожденияРезультаты анализов
DBA
Allow
Allow
Allow
Allow
Allow
Лечащий врач
Allow
Allow
Deny
Allow
Allow
Исследователь
Deny
Conditional
Conditional
Conditional
Allow
ML Engineer
Deny
Deny
Conditional
Deny
Conditional
Внешний аудитор
Deny
Deny
Deny
Deny
Conditional
Проверка знанийKnowledge check
Почему ML Engineer в BioGenesis получает 'conditional' доступ к геномным данным, а не 'allow' или 'deny'?
ОтветAnswer
Conditional означает доступ с ограничениями. ML Engineer получает обезличенные геномные последовательности: данные пригодны для обучения моделей предсказания биомаркеров, но не связаны с конкретным пациентом. Полный deny лишил бы команду возможности обучать модели, а полный allow — нарушение 152-ФЗ и этических протоколов (геном — биометрические данные).

Сценарий: BioGenesis Lab

Сценарий: BioGenesis Lab (БиоГенезис Лаб)

BioGenesis делится геномными данными с партнёрской лабораторией для совместного исследования. Текущий процесс: Data Engineer вручную удаляет столбцы patient_name и birth_date из CSV-экспорта. Но:

  • Столбец diagnosis_icd10 + clinic_id + admission_date в 60% случаев позволяет идентифицировать пациента
  • Геномные данные уникальны по определению — полная анонимизация невозможна
  • Партнёрская лаборатория не подпадает под 152-ФЗ (находится в Европе)

Решение: применить k-anonymity (группирование) для квази-идентификаторов + differential privacy для геномных данных + псевдонимизацию для связи с клиническими результатами.

Практика: Data Masking Function

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

Итоги

  • Маскирование заменяет значения фиктивными, сохраняя оригинал. Обезличивание необратимо. Псевдонимизация обратима с ключом
  • Четыре метода маскирования: подстановка, частичное скрытие, перемешивание, FPE
  • Статическое маскирование создаёт копию базы; динамическое маскирует на лету по роли
  • Уровень маскирования зависит от роли: DBA видит всё, исследователь — псевдонимизированные данные
  • Полная анонимизация геномных данных невозможна — требуются differential privacy и k-anonymity

В следующем уроке мы рассмотрим фреймворки классификации данных — как проектировать и внедрять систему уровней конфиденциальности для всей организации.

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

Результат: 0 из 0
Прикладной
Вопрос 1 из 5. BioGenesis заменяет patient_id на research_id, сохраняя маппинг в защищённой таблице. По GDPR эти данные считаются:

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

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

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

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