Перейти к содержанию

Типы PII

PII Detector поддерживает 20+ типов персональных данных на русском и английском языках.

Input PII (обнаружение в запросах пользователя)

Контактные данные

EMAIL — Электронная почта

Свойство Значение
Метод детекции Regex + валидация RFC 5322
Библиотека валидации email_validator
Confidence (regex) 0.95
Confidence (после валидации) 0.97
Примеры user@example.com, john.doe+tag@company.co.uk
Маска j***@***.com

PHONE — Телефонный номер

Свойство Значение
Метод детекции Regex (9 паттернов) + валидация libphonenumber
Библиотека валидации phonenumbers (Google libphonenumber)
Confidence (regex) 0.85
Confidence (после валидации) 0.90
Поддерживаемые форматы Россия (+7, 8), международные (+1, +44, ...), US (XXX) XXX-XXXX
Примеры +7 (903) 123-45-67, 89031234567, +1 (555) 123-4567
Маска +7 (***) ***-**-67

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

  • +7 (XXX) XXX-XX-XX — канонический.
  • +7-XXX-XXX-XX-XX — через дефис.
  • +7XXXXXXXXXX — компактный.
  • 8 (XXX) XXX-XX-XX — внутренний (prefix 8).
  • 8XXXXXXXXXX — компактный внутренний.

IP_ADDRESS — IP-адрес

Свойство Значение
Метод детекции Regex + валидация октетов (0–255, без ведущих нулей)
Confidence 0.90
Примеры 192.168.1.100, 10.0.0.1
Маска ***.***.***.100

Финансовые данные

CREDIT_CARD — Номер кредитной карты

Свойство Значение
Метод детекции Regex (4 паттерна) + Luhn algorithm
Confidence (regex) 0.90
Confidence (после Luhn) 0.95
Поддерживаемые сети Visa (4xxx), MasterCard (51xx–55xx), Amex (34xx/37xx), Discover (6011/65xx)
Форматы 4111111111111111, 4111-1111-1111-1111, 4111 1111 1111 1111
Маска ****-****-****-1111 (последние 4 цифры сохраняются)

Алгоритм Luhn (валидация):

Номер: 4111 1111 1111 1111
1. Удалить пробелы/дефисы → 4111111111111111
2. Справа налево, удвоить каждую вторую цифру
3. Если результат > 9, вычесть 9
4. Сумма всех цифр должна делиться на 10
→ Valid (сумма = 0 mod 10)

CVC — CVV/CVC код банковской карты

Свойство Значение
Метод детекции Regex + контекст обязателен
Паттерн \b\d{3}\b — 3 подряд идущие цифры
Контекст Обязателен. Keyword-окно ±25 символов: cvc, cvv, cvp, cvc2, cvv2, cvp2, «код безопасности», «код карты», «код проверки» (без учёта регистра). Альтернатива — число в пределах 25 символов после уже найденного номера карты
Confidence (без контекста) не эмитируется
Confidence (с контекстом) 0.85
Примеры 123, 456 (синтетика)
Маска *** (полная маскировка) или [CVC] (тег-плейсхолдер)
Статус Включён по умолчанию

Детектируется только при наличии контекста — голые три цифры в результат не попадают (защита от ложных срабатываний).


IBAN — International Bank Account Number

Свойство Значение
Метод детекции Regex
Confidence 0.92
Формат 2 буквы (страна) + 2 контрольные цифры + 10–30 алфанумерических
Примеры DE89370400440532013000, GB29 NWBK 6016 1331 9268 19

SWIFT_BIC — SWIFT/BIC-код банка

Свойство Значение
Метод детекции Regex
Confidence 0.88
Формат 8 или 11 символов: 4 (банк) + 2 (страна) + 2 (локация) + 3 (филиал, опционально)
Примеры DEUTDEFF, SABRRUMM

Документы

SSN — Social Security Number (США)

Свойство Значение
Метод детекции Regex
Confidence 0.90
Формат XXX-XX-XXXX или XXX XX XXXX
Примеры 123-45-6789

PASSPORT — Паспорт РФ

Свойство Значение
Метод детекции Regex + контекст обязателен (слова «паспорт», «серия», «passport» в радиусе 50 символов)
Confidence (без контекста) 0.70
Confidence (с контекстом) 0.92
Формат Серия (2+2 цифры) + номер (6 цифр): XX XX XXXXXX или XXXX XXXXXX
Примеры 45 12 123456, 4512 123456
Маска ** ** ******

DRIVER_LICENSE — Водительское удостоверение (РФ)

Свойство Значение
Метод детекции Regex + контекст обязателен
Формат РФ: XX XX XXXXXX (2+2 цифры + 6 цифр) или XX АА XXXXXX (2 цифры + 2 кириллические буквы серии + 6 цифр). Паттерн \b(\d{2}\s?\d{2}\s?\d{6}\|\d{2}\s?[А-Я]{2}\s?\d{6})\b
Контекст Обязателен. Keyword в пределах 50 символов до числа: «водительское», «ВУ», «в/у», «права», «driver license» (без учёта регистра)
Confidence (без контекста) не эмитируется
Confidence (с контекстом) 0.88
Примеры 10 99 123456, 1099123456, 10 АМ 123456 (синтетика)
Маска 10***56 (частичная) или [DRIVER_LICENSE] (тег-плейсхолдер)
Статус Включён по умолчанию (узкий RU-паттерн с обязательным контекстом — риск ложных срабатываний устранён)

TAX_ID — Tax ID (EIN, США)

Свойство Значение
Метод детекции Regex
Формат US EIN: XX-XXXXXXX. Паттерн \b\d{2}[-\s]?\d{7}\b
Контекст Не требуется
Confidence 0.80
Примеры 12-3456789, 98 7654321 (синтетика)
Маска 12***89 (частичная) или [TAX_ID] (тег-плейсхолдер)
Статус Отключён по умолчанию (US-специфичный; формат пересекается с 10-значным ИНН юрлица). Для US-ориентированных развёртываний включается через профиль: pii_types: ["TAX_ID", ...]

INN — Индивидуальный номер налогоплательщика (Россия)

Свойство Значение
Метод детекции Regex + контекст + checksum-валидация ФНС
Confidence (bare, без контекста) 0.75
Confidence (с контекстом «ИНН», «inn») 0.92
Confidence (после checksum) 0.95
Форматы 10 цифр (физлицо) или 12 цифр (юрлицо)
Примеры 7707083893 (10 цифр), 500100732259 (12 цифр)
Маска **********

Алгоритм checksum ФНС:

10-значный ИНН:
  weights = [2, 4, 10, 3, 5, 9, 4, 6, 8]
  check = (Σ weights[i] × digit[i], i=0..8) mod 11 mod 10
  Валиден, если check == digit[9]

12-значный ИНН:
  weights_11 = [7, 2, 4, 10, 3, 5, 9, 4, 6, 8]
  check_11 = (Σ weights_11[i] × digit[i], i=0..9) mod 11 mod 10
  weights_12 = [3, 7, 2, 4, 10, 3, 5, 9, 4, 6, 8]
  check_12 = (Σ weights_12[i] × digit[i], i=0..10) mod 11 mod 10
  Валиден, если check_11 == digit[10] AND check_12 == digit[11]

SNILS — Страховой номер индивидуального лицевого счёта (Россия)

Свойство Значение
Метод детекции Regex + контекст + checksum-валидация ПФР
Confidence (форматированный) 0.80
Confidence (с контекстом) 0.95
Confidence (после checksum) 0.95
Форматы XXX-XXX-XXX XX (форматированный), XXXXXXXXXXX (11 цифр, с контекстом)
Примеры 112-233-445 95, 11223344595
Маска ***-***-*** **

Алгоритм checksum ПФР:

СНИЛС: 112-233-445 95 → цифры: [1,1,2,2,3,3,4,4,5] + контроль [9,5]
  total = Σ digit[i] × (9 - i), i=0..8
  total = 1×9 + 1×8 + 2×7 + 2×6 + 3×5 + 3×4 + 4×3 + 4×2 + 5×1 = 95
  expected = total mod 101 mod 100 = 95
  Валиден, если expected == 95 (контрольное число)

Бизнес-идентификаторы (РФ)

OGRN — ОГРН (основной государственный регистрационный номер)

Свойство Значение
Метод детекции Regex + checksum-валидация (контекст опционален)
Формат 13 цифр (\b\d{13}\b), первая цифра ≠ 0
Контекст Опционален: слова «ОГРН»/«ogrn» (не «ОГРНИП») в радиусе 40 символов до числа — повышают confidence
Confidence (checksum пройден, без контекста) 0.90
Confidence (с контекстом) 0.97
Примеры 1000000000011 (синтетика)
Маска 10***11 (частичная) или [OGRN] (тег-плейсхолдер)
Статус Включён по умолчанию

Алгоритм checksum:

ОГРН (13 цифр):
  Валиден, если int(ОГРН[0:12]) mod 11 mod 10 == ОГРН[12]
  Дополнительно: первая цифра ≠ 0

OGRNIP — ОГРНИП (ОГРН индивидуального предпринимателя)

Свойство Значение
Метод детекции Regex + checksum-валидация (контекст опционален)
Формат 15 цифр (\b\d{15}\b), первая цифра ≠ 0
Контекст Опционален: слова «ОГРНИП»/«ogrnip» в радиусе 40 символов до числа
Confidence (без контекста) 0.90
Confidence (с контекстом) 0.97
Примеры 100000000000011 (синтетика)
Маска 10***11 (частичная) или [OGRNIP] (тег-плейсхолдер)
Статус Включён по умолчанию

Алгоритм checksum:

ОГРНИП (15 цифр):
  Валиден, если int(ОГРНИП[0:14]) mod 13 mod 10 == ОГРНИП[14]
  Дополнительно: первая цифра ≠ 0

Отличие от ОГРН: длина (15 vs 13 цифр), модуль checksum (13 vs 11); keyword-детектор исключает коллизию (огрн(?!ип) — для ОГРН, огрнип — для ОГРНИП).


KPP — КПП (код причины постановки на учёт)

Свойство Значение
Метод детекции Regex + контекст обязателен
Формат 9 символов \b\d{4}[0-9A-Z]{2}\d{3}\b: 4 цифры (код налогового органа) + 2 символа [0-9A-Z] (код причины постановки) + 3 цифры (порядковый номер)
Контекст Обязателен: слово «КПП»/«kpp» в радиусе 40 символов до или 20 символов после числа
Confidence (без контекста) не эмитируется
Confidence (с контекстом) 0.92
Примеры 770201001, 77020A001 (синтетика)
Маска 77***01 (частичная) или [KPP] (тег-плейсхолдер)
Статус Включён по умолчанию. Checksum-валидации нет (только структурный паттерн)

Персональные данные (NER)

PERSON_NAME — ФИО / Имя

Свойство Значение
Метод детекции NER
Confidence (EN) 0.70
Confidence (RU) 0.70
Confidence (RU, расширенный) 0.82 (выше за счёт лучшей обработки падежей)
Примеры Иванов Иван Иванович, John Doe, Петрову Алексею (дательный падеж)
Фильтрация FP Стоп-лист: местоимения (Он, Она, Они), служебные слова (Данные, Номер, Запрос)

ORGANIZATION — Организация

Свойство Значение
Метод детекции NER
Confidence (EN) 0.68
Confidence (RU) 0.78
Статус Отключён по умолчанию (высокий FPR — обычные слова распознаются как организации)
Примеры ООО "Ромашка", Google, Сбербанк

DATE_OF_BIRTH — Дата рождения

Свойство Значение
Метод детекции Regex + контекст (слова «родился», «дата рождения», «д.р.», «dob» в радиусе 80 символов)
Confidence (NER) 0.60
Confidence (regex + контекст) 0.88
Форматы DD.MM.YYYY (01.01.1990), текстовый (15 марта 1985 года)

Токены и секреты

JWT_TOKEN — JSON Web Token

Свойство Значение
Метод детекции Regex (структурный паттерн)
Confidence 0.99
Паттерн eyJ[A-Za-z0-9_-]+\.eyJ[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+
Примеры eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIn0.dozjg...

API_KEY — API-ключи различных сервисов

Свойство Значение
Метод детекции Regex (структурные паттерны по провайдерам)
Confidence 0.95–0.99

Конкретные паттерны:

Провайдер Префикс Паттерн Confidence
OpenAI sk- sk-[A-Za-z0-9]{48} 0.99
Anthropic sk-ant- sk-ant-[A-Za-z0-9\-]{95,} 0.99
Google AIza AIza[0-9A-Za-z_-]{35} 0.99
Generic (с контекстом) Контекст api_key=, api_secret= + [A-Za-z0-9_-]{20,} 0.95

AWS_KEY — Ключи доступа AWS

Свойство Значение
Метод детекции Regex; запускается до API_KEY (выше приоритет). Access Key — без контекста, Secret Key — с контекстом
Паттерны Access Key: \bAKIA[0-9A-Z]{16}\b; Secret Key: контекст aws_secret… + 40-символьный ключ
Confidence 0.99
Примеры AKIAIOSFODNN7EXAMPLE (синтетика)
Маска первые 3 + *** + последние 3 символа

GITHUB_TOKEN — Токены GitHub

Свойство Значение
Метод детекции Regex (5 структурных паттернов)
Confidence 0.99
Тип Префикс Назначение
Personal access token ghp_ Доступ к API GitHub
OAuth access token gho_ OAuth-приложения
User-to-server token ghu_ GitHub Apps (user)
Server-to-server token ghs_ GitHub Apps (server)
Refresh token ghr_ Обновление токенов

PASSWORD — Пароли и приватные ключи (с контекстом)

Свойство Значение
Метод детекции Regex + контекст обязателен
Confidence 0.95
Контекстные слова password=, passwd=, pwd=, пароль=, user_password=
Примеры password=MySecr3t!, пароль: qwerty123

В UI этот тип отображается как «Пароль / приватный ключ» и передаётся в API одним кодом password. Под этим кодом детектируются два класса объектов: пароли с контекстом (password=/пароль=) и приватные ключи в PEM-формате (-----BEGIN … PRIVATE KEY-----).

Output PII (обнаружение в ответах LLM)

Большинство Input PII типов также обнаруживаются в ответах — но не все. Сканирование ответов использует только regex-детекцию (без NER), поэтому два типа, которые обнаруживаются исключительно через NER — PERSON_NAME и ORGANIZATION — в ответах модели не маскируются, даже если добавлены в настройки профиля. Это принятое ограничение текущей версии, а не временный дефект. В запросах пользователя (входящий трафик) эти два типа продолжают обнаруживаться в полном объёме — ограничение касается только ответов модели. В интерфейсе оба типа недоступны для выбора в блоке настроек ответов (см. Управление профилями).

Все остальные Input PII типы (regex + checksum-валидация — контактные данные, финансовые данные, документы, бизнес-идентификаторы, токены и секреты) на ответах обнаруживаются так же, как и на запросах. Дополнительно к ним — 6 типов, специфичных для утечек из LLM:

DATABASE_URI — Строки подключения к базам данных

Свойство Значение
Confidence 0.99
Поддерживаемые СУБД PostgreSQL, MySQL, MongoDB (+SRV), Redis, AMQP, MSSQL, Elasticsearch, SQLite, ADO.NET
Примеры postgresql://admin:secret@prod-db:5432/main, mongodb+srv://user:pass@cluster.mongodb.net/db, Server=db;Database=main;User=sa;Password=secret

PRIVATE_KEY — Приватные ключи (PEM-формат)

Свойство Значение
Confidence 0.99
Поддерживаемые типы RSA, EC, DSA, OpenSSH
Паттерн -----BEGIN [RSA\|EC\|DSA\|OPENSSH ]PRIVATE KEY----- ... -----END ... PRIVATE KEY-----

ENV_VAR_SECRET — Секреты в переменных окружения

Свойство Значение
Confidence 0.97
Паттерны SECRET_KEY=value, export PASSWORD=value, os.environ["API_KEY"], os.getenv("JWT_SECRET", "value")
Контекстные имена SECRET, PASSWORD, PASSWD, PWD, API_KEY, JWT_SECRET, DATABASE_URL, PRIVATE_KEY и др.

INTERNAL_IP — Внутренние IP-адреса

Свойство Значение
Confidence 0.90
RFC 1918 диапазоны 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16, 127.0.0.1
Внутренние домены *.internal, *.local, *.corp, *.intranet, *.lan

SERVER_PATH — Серверные пути файловой системы

Свойство Значение
Confidence 0.85
Linux /etc/passwd, /etc/shadow, /root/.ssh/, /var/log/, /opt/, /srv/, /proc/
Windows C:\Windows\System32, C:\Users\*\AppData, C:\inetpub\wwwroot

SYSTEM_PROMPT_LEAK — Утечка системного промпта

Свойство Значение
Confidence 0.50–0.95 (зависит от метода)
Метод 1 Эвристические паттерны (8 шт.): «my instructions are...», «I was told to...», «my role is...», «You are... assistant» — confidence 0.40–0.75
Метод 2 N-gram overlap: 4-граммное сравнение ответа с известным system_prompt. При overlap ≥ 25% — confidence 0.50–0.95 пропорционально overlap
Требование В настройках профиля: system_prompt_detection: true и (для метода 2) system_prompt_text: "Ваш системный промпт"

Конфигурация детекции

Параметр Значение по умолч. Описание
default_threshold 0.8 Минимальный confidence для включения сущности в результат
max_text_length 100 000 символов Максимальная длина текста для обработки
processing_timeout 5 секунд Таймаут детекции
enable_natasha_ner true Включить расширенный NER для русского (повышенная точность)
disabled_entity_types ORGANIZATION, TAX_ID Типы, отключённые по умолчанию (высокий FPR / нерелевантность для RU). Активируются в профиле через pii_types

Порядок детекции (приоритет):

1. Regex-паттерны → захватывают spans (позиции в тексте)
2. NER (EN) → дедупликация с regex (не перекрывает уже найденные spans)
3. NER (RU) → дедупликация с regex + NER (EN)
4. Валидация → повышает confidence для Email, Phone, Credit Card, INN, SNILS