Типы 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 |
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 |
Порядок детекции (приоритет):