PII-сканирование выявило: ФИО в 23 таблицах, паспортные данные в 8, СНИЛС в 5, ИНН в 18, телефоны в 12. Доступ к этим таблицам имели 47 ролей, включая 15 аналитиков, которым PII не нужны для работы.
Impact
Нарушение 152-ФЗ (штраф до 18M ₽ с 2024). Утечка = уголовное дело. Репутационные потери невосполнимы.
Effort
1 нед. сканирование + 2 нед. маскировка + 1 нед. RBAC + ongoing процесс
🔍 КАК НАХОДИМ
1.Автоматический PII-сканер: regex по 10 паттернам (\d{3}-\d{3}-\d{3} \d{2} для СНИЛС, \d{4} \d{6} для паспорта и т.д.) по ВСЕМ таблицам
2.Для каждого найденного поля: проверить тип данных, sampling 1000 строк, подтвердить PII
3.Анализ RBAC: какие роли имеют SELECT на таблицы с PII (pg_roles + information_schema)
4.Анализ приложений: какие сервисы реально читают эти данные — логирование SELECT за 30 дней
5.Классификация: для каждого PII-поля — нужно ли оно в этой таблице вообще, или это транзитная копия
✓ КАК ИСПРАВЛЯЕМ
1.PII-карта: реестр всех PII-полей с классификацией (обязательное/избыточное)
2.Column-level masking: SHA-256 хеширование для аналитических целей, tokenization для обратимых
3.View-based security: аналитики видят замаскированные view, а не raw таблицы
4.Пересмотр RBAC: revoke SELECT на raw таблицы, grant на маскированные view
5.pgaudit: включить логирование всех SELECT к таблицам с PII
6.Процесс: при создании новой таблицы — обязательная PII-классификация перед деплоем