INTEGRITY Документация

Обнаружение PII

AI Security for Apps (ранее Firewall for AI) может обнаруживать персональные данные (PII) во входящих LLM-промптах. Существует два подхода к обнаружению PII, и их можно использовать вместе для многоуровневой защиты:

Обнаружение PII на основе ИИ

Когда AI Security for Apps включён и запрос приходит на cf-llm (endpoint с меткой), промпт сканируется на наличие PII и заполняются два поля:

Обнаружение работает на AI-модели распознавания именованных сущностей (NER). См. cf.llm.prompt.pii_categories — справочник полей — полный список распознаваемых категорий.

Поддерживаемые категории PII

Категория Описание
BANK_ACCOUNT Номер банковского счёта
CREDIT_CARD Номер банковской карты
DATE_TIME Выражение даты или времени
DRIVER_LICENSE Номер водительского удостоверения
EMAIL_ADDRESS Адрес электронной почты
IP_ADDRESS IPv4-адрес
LOCATION Физическое местоположение или адрес
PASSPORT Номер паспорта
PERSON Полное или частичное имя человека
PHONE_NUMBER Номер телефона
TAX_ID Идентификационный номер налогоплательщика
US_SSN Номер социального страхования США (SSN)
URL URL

Формулируйте конкретнее, чтобы снизить число ложных срабатываний

cf.llm.prompt.pii_detected (поле) возвращает true при обнаружении любой категории PII — включая широкие категории, такие как PERSON, DATE_TIME и LOCATION , которые часто встречаются в обычной переписке. Блокировка только по этому полю даст высокий уровень ложных срабатываний для большинства приложений.

Вместо этого стройте правила на основе cf.llm.prompt.pii_categories и перечислите только те категории, которые важны для вашего сценария. Например, чат-боту поддержки может потребоваться блокировать номера банковских карт и SSN, но он может спокойно игнорировать имена людей и даты. Начните с самого узкого набора категорий, отслеживайте совпадения в Security Analytics и расширяйте только по мере необходимости.

Примеры правил — обнаружение на основе ИИ

Блокировка любого запроса, содержащего PII

Блокировка только определённых категорий PII

Журналирование адресов электронной почты, но блокировка номеров банковских карт и SSN

Создайте два пользовательские правила:

  1. Правило с действием Block и следующее выражение:
    (any(cf.llm.prompt.pii_categories[*] in {"CREDIT_CARD" "US_SSN"}))

  2. Правило с действием Log и следующее выражение:
    (any(cf.llm.prompt.pii_categories[*] in {"EMAIL_ADDRESS"}))

Точное обнаружение PII (regex)

Если вам нужно обнаруживать пользовательские форматы PII , специфичные для вашей организации — внутренние идентификаторы сотрудников, номера карт пациентов, собственные идентификаторы аккаунтов, — вы можете создать в WAF пользовательское правило с помощью regex-сопоставления по сырому телу (http.request.body.raw поле).

Этот подход дополняет AI-обнаружение сопоставлением заранее определённых паттернов, включая идентификаторы, специфичные для организации.

Пример: обнаружение идентификаторов сотрудников

В следующем примере организация использует идентификаторы сотрудников в формате EMP- и далее ровно шесть цифр (например, EMP-482910).

Создание пользовательского правила со следующей конфигурацией:

Ограничение конкретным эндпоинтом

Чтобы ограничить это правило только вашей LLM-конечной точкой, добавьте условие по пути:

Поле Оператор Значение Логика
URI Path равно /api/chat And
Сырое тело запроса matches regex EMP-[0-9]{6}

Выражение при использовании редактора:
(http.request.uri.path eq "/api/chat" and http.request.body.raw matches "EMP-[0-9]{6}")

Дополнительные примеры регулярных выражений

Пользовательский тип PII Пример формата Regex-шаблон
Идентификатор сотрудника EMP-482910 EMP-[0-9]{6}
Номер медицинской карты пациента PAT/2024/00391 PAT/[0-9]{4}/[0-9]{5}
Внутренний идентификатор аккаунта ACCT-XX-99999 ACCT-[A-Z]{2}-[0-9]{5}
Пользовательский префикс API-ключа sk_live_abc123... sk_live_[a-zA-Z0-9]{20,}

Замечания по правилам с регулярными выражениями

Комбинирование обоих подходов

Для многоуровневой защиты можно использовать одновременно обнаружение на основе ИИ и точное обнаружение:

(cf.llm.prompt.pii_detected or http.request.body.raw matches "EMP-[0-9]{6}")

Это правило блокирует запросы, в которых AI-модель обнаруживает любую встроенную категорию PII либо regex совпадает с вашим пользовательским форматом идентификатора.